From 43b5e506e4f24fc07904a7adc7362f3f7c982f46 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 29 Jul 2024 10:13:56 +0200 Subject: [PATCH 001/230] Prepare to use Orchard ZSA --- Cargo.lock | 344 +++++++++++++++++++++++++++++++++++------ zebra-chain/Cargo.toml | 18 ++- 2 files changed, 309 insertions(+), 53 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ea09e646716..0e3ac5e59dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -337,6 +337,12 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" version = "0.11.0" @@ -1035,6 +1041,18 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -1180,6 +1198,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", + "const-oid", "crypto-common", "subtle", ] @@ -1220,6 +1239,20 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + [[package]] name = "ed25519" version = "2.2.3" @@ -1273,6 +1306,25 @@ dependencies = [ "void", ] +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "encode_unicode" version = "0.3.6" @@ -1298,6 +1350,14 @@ dependencies = [ "regex", ] +[[package]] +name = "equihash" +version = "0.2.0" +dependencies = [ + "blake2b_simd", + "byteorder", +] + [[package]] name = "equihash" version = "0.2.0" @@ -1334,6 +1394,13 @@ dependencies = [ "once_cell", ] +[[package]] +name = "f4jumble" +version = "0.1.0" +dependencies = [ + "blake2b_simd", +] + [[package]] name = "f4jumble" version = "0.1.0" @@ -1548,6 +1615,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1664,11 +1732,10 @@ dependencies = [ [[package]] name = "half" -version = "2.4.1" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" dependencies = [ - "cfg-if 1.0.0", "crunchy", ] @@ -1682,7 +1749,24 @@ dependencies = [ "bitvec", "ff", "group", - "halo2_proofs", + "halo2_proofs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "pasta_curves", + "rand 0.8.5", + "subtle", + "uint", +] + +[[package]] +name = "halo2_gadgets" +version = "0.3.0" +source = "git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11#7f5c0babd61f8ca46c9165a1adfac298d3fd3a11" +dependencies = [ + "arrayvec", + "bitvec", + "ff", + "group", + "halo2_proofs 0.3.0 (git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11)", "lazy_static", "pasta_curves", "rand 0.8.5", @@ -1712,6 +1796,21 @@ dependencies = [ "tracing", ] +[[package]] +name = "halo2_proofs" +version = "0.3.0" +source = "git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11#7f5c0babd61f8ca46c9165a1adfac298d3fd3a11" +dependencies = [ + "blake2b_simd", + "ff", + "group", + "halo2_legacy_pdqsort", + "maybe-rayon", + "pasta_curves", + "rand_core 0.6.4", + "tracing", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -2086,6 +2185,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb1872810fb725b06b8c153dde9e86f3ec26747b9b60096da7a869883b549cbe" dependencies = [ "either", + "proptest", + "rand 0.8.5", + "rand_core 0.6.4", ] [[package]] @@ -2340,6 +2442,20 @@ dependencies = [ "subtle", ] +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if 1.0.0", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + [[package]] name = "known-folders" version = "1.1.0" @@ -2757,6 +2873,36 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "orchard" +version = "0.8.0" +dependencies = [ + "aes", + "bitvec", + "blake2b_simd", + "ff", + "fpe", + "group", + "half", + "halo2_gadgets 0.3.0 (git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11)", + "halo2_proofs 0.3.0 (git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11)", + "hex", + "incrementalmerkletree", + "k256", + "lazy_static", + "memuse", + "nonempty", + "pasta_curves", + "rand 0.8.5", + "reddsa", + "serde", + "subtle", + "tracing", + "zcash_note_encryption 0.4.0 (git+https://github.com/QED-it/zcash_note_encryption?branch=zsa1)", + "zcash_spec", + "zip32", +] + [[package]] name = "orchard" version = "0.8.0" @@ -2769,8 +2915,8 @@ dependencies = [ "ff", "fpe", "group", - "halo2_gadgets", - "halo2_proofs", + "halo2_gadgets 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "halo2_proofs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex", "incrementalmerkletree", "lazy_static", @@ -2782,7 +2928,7 @@ dependencies = [ "serde", "subtle", "tracing", - "zcash_note_encryption", + "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "zcash_spec", "zip32", ] @@ -3591,6 +3737,16 @@ dependencies = [ "winreg", ] +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + [[package]] name = "rgb" version = "0.8.37" @@ -3809,7 +3965,7 @@ dependencies = [ "redjubjub", "subtle", "tracing", - "zcash_note_encryption", + "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "zcash_spec", "zip32", ] @@ -3830,6 +3986,20 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "secp256k1" version = "0.26.0" @@ -4149,6 +4319,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ + "digest", "rand_core 0.6.4", ] @@ -5612,6 +5783,17 @@ version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" +[[package]] +name = "zcash_address" +version = "0.3.2" +dependencies = [ + "bech32", + "bs58", + "f4jumble 0.1.0", + "zcash_encoding 0.2.0", + "zcash_protocol 0.1.1", +] + [[package]] name = "zcash_address" version = "0.3.2" @@ -5620,9 +5802,9 @@ checksum = "827c17a1f7e3a69f0d44e991ff610c7a842228afdc9dc2325ffdd1a67fee01e9" dependencies = [ "bech32", "bs58", - "f4jumble", - "zcash_encoding", - "zcash_protocol", + "f4jumble 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -5655,15 +5837,23 @@ dependencies = [ "tonic-build 0.10.2", "tracing", "which", - "zcash_address", - "zcash_encoding", + "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "zcash_keys", - "zcash_note_encryption", - "zcash_primitives", - "zcash_protocol", + "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_primitives 0.15.1", + "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "zip32", ] +[[package]] +name = "zcash_encoding" +version = "0.2.0" +dependencies = [ + "byteorder", + "nonempty", +] + [[package]] name = "zcash_encoding" version = "0.2.0" @@ -5704,10 +5894,10 @@ dependencies = [ "secrecy", "subtle", "tracing", - "zcash_address", - "zcash_encoding", - "zcash_primitives", - "zcash_protocol", + "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_primitives 0.15.1", + "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "zip32", ] @@ -5724,18 +5914,28 @@ dependencies = [ "subtle", ] +[[package]] +name = "zcash_note_encryption" +version = "0.4.0" +source = "git+https://github.com/QED-it/zcash_note_encryption?branch=zsa1#b8bd2a186fc04ec4f55b2db44df7374f03ab5725" +dependencies = [ + "chacha20", + "chacha20poly1305", + "cipher", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "zcash_primitives" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ccee58d0f9e8da312a999a4c0cd3d001ff3b37af6fb1318c89e6a3076f4da" +version = "0.15.0" dependencies = [ "aes", "bip0039", "blake2b_simd", "byteorder", "document-features", - "equihash", + "equihash 0.2.0", "ff", "fpe", "group", @@ -5745,7 +5945,7 @@ dependencies = [ "jubjub", "memuse", "nonempty", - "orchard", + "orchard 0.8.0", "rand 0.8.5", "rand_core 0.6.4", "redjubjub", @@ -5755,10 +5955,46 @@ dependencies = [ "sha2", "subtle", "tracing", - "zcash_address", - "zcash_encoding", - "zcash_note_encryption", - "zcash_protocol", + "zcash_address 0.3.2", + "zcash_encoding 0.2.0", + "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_protocol 0.1.1", + "zcash_spec", + "zip32", +] + +[[package]] +name = "zcash_primitives" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ccee58d0f9e8da312a999a4c0cd3d001ff3b37af6fb1318c89e6a3076f4da" +dependencies = [ + "aes", + "bip0039", + "blake2b_simd", + "byteorder", + "document-features", + "equihash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ff", + "fpe", + "group", + "hex", + "incrementalmerkletree", + "jubjub", + "memuse", + "nonempty", + "orchard 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.8.5", + "rand_core 0.6.4", + "redjubjub", + "sapling-crypto", + "sha2", + "subtle", + "tracing", + "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "zcash_spec", "zip32", ] @@ -5783,7 +6019,17 @@ dependencies = [ "sapling-crypto", "tracing", "xdg", - "zcash_primitives", + "zcash_primitives 0.15.1", +] + +[[package]] +name = "zcash_protocol" +version = "0.1.1" +dependencies = [ + "document-features", + "incrementalmerkletree", + "memuse", + "proptest", ] [[package]] @@ -5831,10 +6077,10 @@ dependencies = [ "color-eyre", "criterion", "ed25519-zebra", - "equihash", + "equihash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures", "group", - "halo2_proofs", + "halo2_proofs 0.3.0 (git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11)", "hex", "humantime", "incrementalmerkletree", @@ -5842,7 +6088,7 @@ dependencies = [ "jubjub", "lazy_static", "num-integer", - "orchard", + "orchard 0.8.0", "primitive-types", "proptest", "proptest-derive", @@ -5868,13 +6114,13 @@ dependencies = [ "tracing", "uint", "x25519-dalek", - "zcash_address", + "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "zcash_client_backend", - "zcash_encoding", + "zcash_encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "zcash_history", - "zcash_note_encryption", - "zcash_primitives", - "zcash_protocol", + "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_primitives 0.15.0", + "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "zebra-test", ] @@ -5889,7 +6135,7 @@ dependencies = [ "color-eyre", "futures", "futures-util", - "halo2_proofs", + "halo2_proofs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex", "howudoin", "jubjub", @@ -5897,7 +6143,7 @@ dependencies = [ "metrics", "num-integer", "once_cell", - "orchard", + "orchard 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "proptest", "proptest-derive", "rand 0.8.5", @@ -5939,7 +6185,7 @@ dependencies = [ "tonic-build 0.11.0", "tonic-reflection", "tower", - "zcash_primitives", + "zcash_primitives 0.15.1", "zebra-chain", "zebra-node-services", "zebra-state", @@ -6021,8 +6267,8 @@ dependencies = [ "tokio", "tower", "tracing", - "zcash_address", - "zcash_primitives", + "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_primitives 0.15.1", "zebra-chain", "zebra-consensus", "zebra-network", @@ -6055,11 +6301,11 @@ dependencies = [ "tokio", "tower", "tracing", - "zcash_address", + "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "zcash_client_backend", "zcash_keys", - "zcash_note_encryption", - "zcash_primitives", + "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_primitives 0.15.1", "zebra-chain", "zebra-grpc", "zebra-node-services", @@ -6089,7 +6335,7 @@ dependencies = [ "dirs", "elasticsearch", "futures", - "halo2_proofs", + "halo2_proofs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex", "hex-literal", "howudoin", @@ -6175,8 +6421,8 @@ dependencies = [ "tracing-error", "tracing-subscriber", "zcash_client_backend", - "zcash_primitives", - "zcash_protocol", + "zcash_primitives 0.15.1", + "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "zebra-chain", "zebra-node-services", "zebra-rpc", diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 9b4160b5c69..bb97fc415f9 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -92,13 +92,18 @@ uint = "0.9.5" x25519-dalek = { version = "2.0.1", features = ["serde"] } # ECC deps -halo2 = { package = "halo2_proofs", version = "0.3.0" } -orchard = "0.8.0" +#halo2 = { package = "halo2_proofs", version = "0.3.0" } +halo2 = { package = "halo2_proofs", git = "https://github.com/QED-it/halo2", rev = "7f5c0babd61f8ca46c9165a1adfac298d3fd3a11", version = "0.3.0" } +#orchard = { version = "0.8.0", default-features = false, git = "https://github.com/QED-it/orchard", branch = "zsa1" } +orchard = { version = "0.8.0", default-features = false, path = "../../orchard", features = ["multicore"] } zcash_encoding = "0.2.0" zcash_history = "0.4.0" zcash_note_encryption = "0.4.0" -zcash_primitives = { version = "0.15.0", features = ["transparent-inputs"] } -sapling = { package = "sapling-crypto", version = "0.1" } +#zcash_primitives = { version = "0.15.0", features = ["transparent-inputs"] } +#zcash_primitives = { version = "0.15", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd1", features = ["transparent-inputs"] } +zcash_primitives = { version = "0.15", path = "../../librustzcash/zcash_primitives", features = ["transparent-inputs"] } +#sapling = { package = "sapling-crypto", version = "0.1" } +sapling = { package = "sapling-crypto", version = "0.1.3" } zcash_protocol = { version = "0.1.1" } zcash_address = { version = "0.3.2" } @@ -176,3 +181,8 @@ required-features = ["bench"] [[bench]] name = "redpallas" harness = false + +[patch.crates-io] +#zcash_primitives = { version = "0.15", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd1" } +zcash_note_encryption = { version = "0.4", git = "https://github.com/QED-it/zcash_note_encryption", branch = "fix-sapling-constants" } +sapling = { package = "sapling-crypto", version = "0.1.3", git = "https://github.com/QED-it/sapling-crypto", branch = "orchard-backward-compatibility" } From 95dce56ab33ceabd6960c78acd005d2c34f366f6 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 11 Aug 2024 22:25:01 +0200 Subject: [PATCH 002/230] Switch Zebra to QED-it ZSA-compatible crates but maintain the original Orchard support only, without supporting and enabling ZSA features. --- Cargo.lock | 812 ++++++++---------- Cargo.toml | 12 + zebra-chain/Cargo.toml | 18 +- zebra-chain/src/orchard/note/ciphertexts.rs | 2 + zebra-consensus/src/primitives/halo2.rs | 17 +- zebra-consensus/src/primitives/halo2/tests.rs | 24 +- 6 files changed, 405 insertions(+), 480 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0e3ac5e59dc..4ddf06cb4b1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,7 +12,7 @@ dependencies = [ "arc-swap", "backtrace", "canonical-path", - "clap 4.5.7", + "clap 4.5.13", "color-eyre", "fs-err", "once_cell", @@ -137,9 +137,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -152,33 +152,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -198,9 +198,9 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -210,9 +210,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-compression" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" +checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" dependencies = [ "flate2", "futures-core", @@ -240,18 +240,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -290,7 +290,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "itoa", "matchit", "memchr", @@ -428,7 +428,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.68", + "syn 2.0.72", "which", ] @@ -560,9 +560,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "serde", @@ -582,9 +582,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" [[package]] name = "byteorder" @@ -594,9 +594,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "bzip2-sys" @@ -664,13 +664,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.100" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c891175c3fb232128f48de6590095e59198bbeb8620c310be349bfc3afd12c7b" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -728,7 +727,7 @@ dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -797,9 +796,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.7" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" +checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" dependencies = [ "clap_builder", "clap_derive", @@ -807,9 +806,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.7" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" +checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" dependencies = [ "anstream", "anstyle", @@ -819,21 +818,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.5" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "color-eyre" @@ -865,9 +864,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "console" @@ -974,7 +973,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.7", + "clap 4.5.13", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1088,7 +1087,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -1103,12 +1102,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "darling_core 0.20.9", - "darling_macro 0.20.9", + "darling_core 0.20.10", + "darling_macro 0.20.10", ] [[package]] @@ -1127,16 +1126,16 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -1152,13 +1151,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "darling_core 0.20.9", + "darling_core 0.20.10", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -1226,9 +1225,9 @@ dependencies = [ [[package]] name = "document-features" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" dependencies = [ "litrs", ] @@ -1282,9 +1281,9 @@ dependencies = [ [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "elasticsearch" @@ -1353,6 +1352,8 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab579d7cf78477773b03e80bc2f89702ef02d7112c711d54ca93dcdce68533d5" dependencies = [ "blake2b_simd", "byteorder", @@ -1361,8 +1362,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab579d7cf78477773b03e80bc2f89702ef02d7112c711d54ca93dcdce68533d5" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" dependencies = [ "blake2b_simd", "byteorder", @@ -1397,15 +1397,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -dependencies = [ - "blake2b_simd", -] - -[[package]] -name = "f4jumble" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a83e8d7fd0c526af4aad893b7c9fe41e2699ed8a776a6c74aecdeafe05afc75" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" dependencies = [ "blake2b_simd", ] @@ -1453,9 +1445,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "miniz_oxide", @@ -1574,7 +1566,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -1650,9 +1642,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "git2" -version = "0.18.3" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" +checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" dependencies = [ "bitflags 2.6.0", "libc", @@ -1704,7 +1696,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.3.0", "slab", "tokio", "tokio-util 0.7.11", @@ -1723,7 +1715,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.3.0", "slab", "tokio", "tokio-util 0.7.11", @@ -1739,24 +1731,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "halo2_gadgets" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126a150072b0c38c7b573fe3eaf0af944a7fed09e154071bf2436d3f016f7230" -dependencies = [ - "arrayvec", - "bitvec", - "ff", - "group", - "halo2_proofs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static", - "pasta_curves", - "rand 0.8.5", - "subtle", - "uint", -] - [[package]] name = "halo2_gadgets" version = "0.3.0" @@ -1766,7 +1740,7 @@ dependencies = [ "bitvec", "ff", "group", - "halo2_proofs 0.3.0 (git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11)", + "halo2_proofs", "lazy_static", "pasta_curves", "rand 0.8.5", @@ -1780,22 +1754,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47716fe1ae67969c5e0b2ef826f32db8c3be72be325e1aa3c1951d06b5575ec5" -[[package]] -name = "halo2_proofs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b867a8d9bbb85fca76fff60652b5cd19b853a1c4d0665cb89bee68b18d2caf0" -dependencies = [ - "blake2b_simd", - "ff", - "group", - "halo2_legacy_pdqsort", - "maybe-rayon", - "pasta_curves", - "rand_core 0.6.4", - "tracing", -] - [[package]] name = "halo2_proofs" version = "0.3.0" @@ -1973,9 +1931,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -1990,7 +1948,7 @@ dependencies = [ "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -2030,9 +1988,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -2054,16 +2012,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", "futures-util", "h2 0.4.5", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "httpdate", "itoa", @@ -2081,7 +2039,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.29", + "hyper 0.14.30", "rustls", "tokio", "tokio-rustls", @@ -2093,7 +2051,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.29", + "hyper 0.14.30", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -2101,16 +2059,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", - "hyper 1.3.1", + "http-body 1.0.1", + "hyper 1.4.1", "pin-project-lite", "socket2", "tokio", @@ -2185,9 +2143,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb1872810fb725b06b8c153dde9e86f3ec26747b9b60096da7a869883b549cbe" dependencies = [ "either", - "proptest", - "rand 0.8.5", - "rand_core 0.6.4", ] [[package]] @@ -2209,9 +2164,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -2233,9 +2188,9 @@ dependencies = [ [[package]] name = "inferno" -version = "0.11.19" +version = "0.11.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321f0f839cd44a4686e9504b0a62b4d69a50b62072144c71c68f5873c167b8d9" +checksum = "232929e1d75fe899576a3d5c7416ad0d88dbfbb3c3d6aa00873a7408a50ddb88" dependencies = [ "ahash", "is-terminal", @@ -2301,9 +2256,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -2340,9 +2295,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -2401,7 +2356,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ "futures", - "hyper 0.14.29", + "hyper 0.14.30", "jsonrpc-core", "jsonrpc-server-utils", "log", @@ -2488,9 +2443,9 @@ checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libgit2-sys" -version = "0.16.2+1.7.2" +version = "0.17.0+1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8" +checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" dependencies = [ "cc", "libc", @@ -2500,12 +2455,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if 1.0.0", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2581,15 +2536,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lz4-sys" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" +checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" dependencies = [ "cc", "libc", @@ -2653,9 +2608,9 @@ checksum = "5d58e362dc7206e9456ddbcdbd53c71ba441020e62104703075a69151e38d85f" dependencies = [ "base64 0.22.1", "http-body-util", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", - "indexmap 2.2.6", + "indexmap 2.3.0", "ipnet", "metrics", "metrics-util", @@ -2703,13 +2658,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2772,9 +2728,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", @@ -2857,9 +2813,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "opaque-debug" @@ -2876,6 +2832,7 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchard" version = "0.8.0" +source = "git+https://github.com/QED-it/orchard?branch=zsa1#6e6112c80eb751a93c0fd1d881e9ca69887e1154" dependencies = [ "aes", "bitvec", @@ -2884,8 +2841,8 @@ dependencies = [ "fpe", "group", "half", - "halo2_gadgets 0.3.0 (git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11)", - "halo2_proofs 0.3.0 (git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11)", + "halo2_gadgets", + "halo2_proofs", "hex", "incrementalmerkletree", "k256", @@ -2898,37 +2855,7 @@ dependencies = [ "serde", "subtle", "tracing", - "zcash_note_encryption 0.4.0 (git+https://github.com/QED-it/zcash_note_encryption?branch=zsa1)", - "zcash_spec", - "zip32", -] - -[[package]] -name = "orchard" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0462569fc8b0d1b158e4d640571867a4e4319225ebee2ab6647e60c70af19ae3" -dependencies = [ - "aes", - "bitvec", - "blake2b_simd", - "ff", - "fpe", - "group", - "halo2_gadgets 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "halo2_proofs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hex", - "incrementalmerkletree", - "lazy_static", - "memuse", - "nonempty", - "pasta_curves", - "rand 0.8.5", - "reddsa", - "serde", - "subtle", - "tracing", - "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_note_encryption", "zcash_spec", "zip32", ] @@ -3050,9 +2977,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.5.2", + "redox_syscall 0.5.3", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3099,9 +3026,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" dependencies = [ "memchr", "thiserror", @@ -3110,9 +3037,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" dependencies = [ "pest", "pest_generator", @@ -3120,22 +3047,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] name = "pest_meta" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" dependencies = [ "once_cell", "pest", @@ -3149,7 +3076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.6", + "indexmap 2.3.0", ] [[package]] @@ -3169,7 +3096,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -3241,9 +3168,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "powerfmt" @@ -3253,9 +3180,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "prettyplease" @@ -3264,7 +3194,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -3387,7 +3317,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.68", + "syn 2.0.72", "tempfile", ] @@ -3401,7 +3331,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -3563,9 +3493,9 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.0.2" +version = "11.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e29830cbb1290e404f24c73af91c5d8d631ce7e128691e9477556b540cd01ecd" +checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d" dependencies = [ "bitflags 2.6.0", ] @@ -3632,9 +3562,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags 2.6.0", ] @@ -3652,9 +3582,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -3709,7 +3639,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "hyper-rustls", "ipnet", "js-sys", @@ -3749,9 +3679,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.37" +version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +checksum = "e12bc8d2f72df26a5d3178022df33720fbede0d31d82c7291662eff89836994d" dependencies = [ "bytemuck", ] @@ -3941,8 +3871,7 @@ dependencies = [ [[package]] name = "sapling-crypto" version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f4270033afcb0c74c5c7d59c73cfd1040367f67f224fe7ed9a919ae618f1b7" +source = "git+https://github.com/QED-it/sapling-crypto?branch=zsa1#e19f4d916360842becf2842bfd9b27228e66fa81" dependencies = [ "aes", "bellman", @@ -3965,7 +3894,7 @@ dependencies = [ "redjubjub", "subtle", "tracing", - "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_note_encryption", "zcash_spec", "zip32", ] @@ -4141,9 +4070,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] @@ -4159,32 +4088,33 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] name = "serde_json" -version = "1.0.118" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -4213,19 +4143,19 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.3.0", "serde", "serde_derive", "serde_json", - "serde_with_macros 3.8.1", + "serde_with_macros 3.9.0", "time", ] @@ -4243,14 +4173,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" dependencies = [ - "darling 0.20.9", + "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -4259,7 +4189,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "itoa", "ryu", "serde", @@ -4325,9 +4255,9 @@ dependencies = [ [[package]] name = "similar" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" [[package]] name = "sketches-ddsketch" @@ -4480,9 +4410,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.68" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -4536,12 +4466,13 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" dependencies = [ "cfg-if 1.0.0", "fastrand", + "once_cell", "rustix", "windows-sys 0.52.0", ] @@ -4566,22 +4497,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -4653,9 +4584,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -4668,22 +4599,21 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", "tracing", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -4698,13 +4628,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -4780,21 +4710,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -4805,22 +4735,22 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.18", ] [[package]] @@ -4837,7 +4767,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "hyper-timeout", "percent-encoding", "pin-project", @@ -4864,7 +4794,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "hyper-timeout", "percent-encoding", "pin-project", @@ -4887,7 +4817,7 @@ dependencies = [ "proc-macro2", "prost-build", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -4900,7 +4830,7 @@ dependencies = [ "proc-macro2", "prost-build", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -5030,7 +4960,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -5143,7 +5073,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -5302,9 +5232,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "serde", ] @@ -5329,9 +5259,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "vergen" -version = "8.3.1" +version = "8.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27d6bdd219887a9eadd19e1c34f32e47fa332301184935c6d9bca26f3cca525" +checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" dependencies = [ "anyhow", "cargo_metadata", @@ -5345,9 +5275,9 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "void" @@ -5466,7 +5396,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -5500,7 +5430,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5557,11 +5487,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5577,7 +5507,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -5586,7 +5516,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -5604,7 +5534,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -5624,18 +5563,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -5646,9 +5585,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -5658,9 +5597,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -5670,15 +5609,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -5688,9 +5627,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -5700,9 +5639,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -5712,9 +5651,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -5724,9 +5663,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -5739,9 +5678,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -5786,32 +5725,19 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" version = "0.3.2" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" dependencies = [ "bech32", "bs58", - "f4jumble 0.1.0", - "zcash_encoding 0.2.0", - "zcash_protocol 0.1.1", -] - -[[package]] -name = "zcash_address" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "827c17a1f7e3a69f0d44e991ff610c7a842228afdc9dc2325ffdd1a67fee01e9" -dependencies = [ - "bech32", - "bs58", - "f4jumble 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "f4jumble", + "zcash_encoding", + "zcash_protocol", ] [[package]] name = "zcash_client_backend" version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0364e69c446fcf96a1f73f342c6c3fa697ea65ae7eeeae7d76ca847b9c442e40" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" dependencies = [ "base64 0.21.7", "bech32", @@ -5837,28 +5763,20 @@ dependencies = [ "tonic-build 0.10.2", "tracing", "which", - "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_keys", - "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_primitives 0.15.1", - "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_address", + "zcash_encoding", + "zcash_keys 0.2.0 (git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2)", + "zcash_note_encryption", + "zcash_primitives", + "zcash_protocol", "zip32", + "zip321", ] [[package]] name = "zcash_encoding" version = "0.2.0" -dependencies = [ - "byteorder", - "nonempty", -] - -[[package]] -name = "zcash_encoding" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03391b81727875efa6ac0661a20883022b6fba92365dc121c48fa9b00c5aac0" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" dependencies = [ "byteorder", "nonempty", @@ -5867,8 +5785,7 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fde17bf53792f9c756b313730da14880257d7661b5bfc69d0571c3a7c11a76d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" dependencies = [ "blake2b_simd", "byteorder", @@ -5894,30 +5811,42 @@ dependencies = [ "secrecy", "subtle", "tracing", - "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_primitives 0.15.1", - "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_address", + "zcash_encoding", + "zcash_primitives", + "zcash_protocol", "zip32", ] [[package]] -name = "zcash_note_encryption" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b4580cd6cee12e44421dac43169be8d23791650816bdb34e6ddfa70ac89c1c5" +name = "zcash_keys" +version = "0.2.0" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" dependencies = [ - "chacha20", - "chacha20poly1305", - "cipher", + "bech32", + "blake2b_simd", + "bls12_381", + "bs58", + "document-features", + "group", + "memuse", + "nonempty", "rand_core 0.6.4", + "sapling-crypto", + "secrecy", "subtle", + "tracing", + "zcash_address", + "zcash_encoding", + "zcash_primitives", + "zcash_protocol", + "zip32", ] [[package]] name = "zcash_note_encryption" version = "0.4.0" -source = "git+https://github.com/QED-it/zcash_note_encryption?branch=zsa1#b8bd2a186fc04ec4f55b2db44df7374f03ab5725" +source = "git+https://github.com/QED-it/zcash_note_encryption?branch=zsa1#58384553aab76b2ee6d6eb328cf2187fa824ec9a" dependencies = [ "chacha20", "chacha20poly1305", @@ -5929,13 +5858,14 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.15.0" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" dependencies = [ "aes", "bip0039", "blake2b_simd", "byteorder", "document-features", - "equihash 0.2.0", + "equihash 0.2.0 (git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2)", "ff", "fpe", "group", @@ -5945,7 +5875,7 @@ dependencies = [ "jubjub", "memuse", "nonempty", - "orchard 0.8.0", + "orchard", "rand 0.8.5", "rand_core 0.6.4", "redjubjub", @@ -5955,46 +5885,10 @@ dependencies = [ "sha2", "subtle", "tracing", - "zcash_address 0.3.2", - "zcash_encoding 0.2.0", - "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_protocol 0.1.1", - "zcash_spec", - "zip32", -] - -[[package]] -name = "zcash_primitives" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ccee58d0f9e8da312a999a4c0cd3d001ff3b37af6fb1318c89e6a3076f4da" -dependencies = [ - "aes", - "bip0039", - "blake2b_simd", - "byteorder", - "document-features", - "equihash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ff", - "fpe", - "group", - "hex", - "incrementalmerkletree", - "jubjub", - "memuse", - "nonempty", - "orchard 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.8.5", - "rand_core 0.6.4", - "redjubjub", - "sapling-crypto", - "sha2", - "subtle", - "tracing", - "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_address", + "zcash_encoding", + "zcash_note_encryption", + "zcash_protocol", "zcash_spec", "zip32", ] @@ -6019,24 +5913,13 @@ dependencies = [ "sapling-crypto", "tracing", "xdg", - "zcash_primitives 0.15.1", + "zcash_primitives", ] [[package]] name = "zcash_protocol" version = "0.1.1" -dependencies = [ - "document-features", - "incrementalmerkletree", - "memuse", - "proptest", -] - -[[package]] -name = "zcash_protocol" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f8189d4a304e8aa3aef3b75e89f3874bb0dc84b1cd623316a84e79e06cddabc" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" dependencies = [ "document-features", "memuse", @@ -6080,7 +5963,7 @@ dependencies = [ "equihash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures", "group", - "halo2_proofs 0.3.0 (git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11)", + "halo2_proofs", "hex", "humantime", "incrementalmerkletree", @@ -6088,7 +5971,7 @@ dependencies = [ "jubjub", "lazy_static", "num-integer", - "orchard 0.8.0", + "orchard", "primitive-types", "proptest", "proptest-derive", @@ -6104,7 +5987,7 @@ dependencies = [ "serde", "serde-big-array", "serde_json", - "serde_with 3.8.1", + "serde_with 3.9.0", "sha2", "spandoc", "static_assertions", @@ -6114,13 +5997,13 @@ dependencies = [ "tracing", "uint", "x25519-dalek", - "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_address", "zcash_client_backend", - "zcash_encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_encoding", "zcash_history", - "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_primitives 0.15.0", - "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_note_encryption", + "zcash_primitives", + "zcash_protocol", "zebra-test", ] @@ -6135,7 +6018,7 @@ dependencies = [ "color-eyre", "futures", "futures-util", - "halo2_proofs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "halo2_proofs", "hex", "howudoin", "jubjub", @@ -6143,7 +6026,7 @@ dependencies = [ "metrics", "num-integer", "once_cell", - "orchard 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "orchard", "proptest", "proptest-derive", "rand 0.8.5", @@ -6185,7 +6068,7 @@ dependencies = [ "tonic-build 0.11.0", "tonic-reflection", "tower", - "zcash_primitives 0.15.1", + "zcash_primitives", "zebra-chain", "zebra-node-services", "zebra-state", @@ -6205,7 +6088,7 @@ dependencies = [ "hex", "howudoin", "humantime-serde", - "indexmap 2.2.6", + "indexmap 2.3.0", "itertools 0.13.0", "lazy_static", "metrics", @@ -6224,7 +6107,7 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util 0.7.11", - "toml 0.8.14", + "toml 0.8.19", "tower", "tracing", "tracing-error", @@ -6253,8 +6136,8 @@ dependencies = [ "chrono", "futures", "hex", - "hyper 0.14.29", - "indexmap 2.2.6", + "hyper 0.14.30", + "indexmap 2.3.0", "insta", "jsonrpc-core", "jsonrpc-derive", @@ -6267,8 +6150,8 @@ dependencies = [ "tokio", "tower", "tracing", - "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_primitives 0.15.1", + "zcash_address", + "zcash_primitives", "zebra-chain", "zebra-consensus", "zebra-network", @@ -6288,7 +6171,7 @@ dependencies = [ "ff", "futures", "group", - "indexmap 2.2.6", + "indexmap 2.3.0", "insta", "itertools 0.13.0", "jubjub", @@ -6301,11 +6184,11 @@ dependencies = [ "tokio", "tower", "tracing", - "zcash_address 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_address", "zcash_client_backend", - "zcash_keys", - "zcash_note_encryption 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zcash_primitives 0.15.1", + "zcash_keys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_note_encryption", + "zcash_primitives", "zebra-chain", "zebra-grpc", "zebra-node-services", @@ -6335,13 +6218,13 @@ dependencies = [ "dirs", "elasticsearch", "futures", - "halo2_proofs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "halo2_proofs", "hex", "hex-literal", "howudoin", "human_bytes", "humantime-serde", - "indexmap 2.2.6", + "indexmap 2.3.0", "insta", "itertools 0.13.0", "jubjub", @@ -6378,7 +6261,7 @@ dependencies = [ "futures", "hex", "humantime", - "indexmap 2.2.6", + "indexmap 2.3.0", "insta", "itertools 0.13.0", "lazy_static", @@ -6414,15 +6297,15 @@ dependencies = [ "serde_json", "serde_yaml", "structopt", - "syn 2.0.68", + "syn 2.0.72", "thiserror", "tinyvec", "tokio", "tracing-error", "tracing-subscriber", "zcash_client_backend", - "zcash_primitives 0.15.1", - "zcash_protocol 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_primitives", + "zcash_protocol", "zebra-chain", "zebra-node-services", "zebra-rpc", @@ -6436,7 +6319,7 @@ dependencies = [ "abscissa_core", "atty", "chrono", - "clap 4.5.7", + "clap 4.5.13", "color-eyre", "console-subscriber", "dirs", @@ -6445,8 +6328,8 @@ dependencies = [ "hex-literal", "howudoin", "humantime-serde", - "hyper 0.14.29", - "indexmap 2.2.6", + "hyper 0.14.30", + "indexmap 2.3.0", "indicatif", "inferno", "insta", @@ -6474,7 +6357,7 @@ dependencies = [ "tinyvec", "tokio", "tokio-stream", - "toml 0.8.14", + "toml 0.8.19", "tonic 0.11.0", "tonic-build 0.11.0", "tower", @@ -6501,22 +6384,23 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -6536,7 +6420,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.72", ] [[package]] @@ -6549,3 +6433,15 @@ dependencies = [ "memuse", "subtle", ] + +[[package]] +name = "zip321" +version = "0.0.0" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +dependencies = [ + "base64 0.21.7", + "nom", + "percent-encoding", + "zcash_address", + "zcash_protocol", +] diff --git a/Cargo.toml b/Cargo.toml index 591c0d898e1..e6baf5c7db5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,3 +89,15 @@ panic = "abort" # - add "-flto=thin" to all C/C++ code builds # - see https://doc.rust-lang.org/rustc/linker-plugin-lto.html#cc-code-as-a-dependency-in-rust lto = "thin" + +[patch.crates-io] +halo2_proofs = { version = "0.3.0", git = "https://github.com/QED-it/halo2", rev = "7f5c0babd61f8ca46c9165a1adfac298d3fd3a11" } +zcash_note_encryption = { version = "0.4.0", git = "https://github.com/QED-it/zcash_note_encryption", branch = "zsa1" } +sapling-crypto = { version = "0.1.3", git = "https://github.com/QED-it/sapling-crypto", branch = "zsa1" } +orchard = { version = "0.8.0", git = "https://github.com/QED-it/orchard", branch = "zsa1" } +zcash_primitives = { version = "0.15.0", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd2" } +zcash_protocol = { version = "0.1.1", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd2" } +zcash_address = { version = "0.3.2", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd2" } +zcash_encoding = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd2" } +zcash_history = { version = "0.4.0", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd2" } +zcash_client_backend = { version = "0.12.1", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd2" } diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index bb97fc415f9..9b4160b5c69 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -92,18 +92,13 @@ uint = "0.9.5" x25519-dalek = { version = "2.0.1", features = ["serde"] } # ECC deps -#halo2 = { package = "halo2_proofs", version = "0.3.0" } -halo2 = { package = "halo2_proofs", git = "https://github.com/QED-it/halo2", rev = "7f5c0babd61f8ca46c9165a1adfac298d3fd3a11", version = "0.3.0" } -#orchard = { version = "0.8.0", default-features = false, git = "https://github.com/QED-it/orchard", branch = "zsa1" } -orchard = { version = "0.8.0", default-features = false, path = "../../orchard", features = ["multicore"] } +halo2 = { package = "halo2_proofs", version = "0.3.0" } +orchard = "0.8.0" zcash_encoding = "0.2.0" zcash_history = "0.4.0" zcash_note_encryption = "0.4.0" -#zcash_primitives = { version = "0.15.0", features = ["transparent-inputs"] } -#zcash_primitives = { version = "0.15", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd1", features = ["transparent-inputs"] } -zcash_primitives = { version = "0.15", path = "../../librustzcash/zcash_primitives", features = ["transparent-inputs"] } -#sapling = { package = "sapling-crypto", version = "0.1" } -sapling = { package = "sapling-crypto", version = "0.1.3" } +zcash_primitives = { version = "0.15.0", features = ["transparent-inputs"] } +sapling = { package = "sapling-crypto", version = "0.1" } zcash_protocol = { version = "0.1.1" } zcash_address = { version = "0.3.2" } @@ -181,8 +176,3 @@ required-features = ["bench"] [[bench]] name = "redpallas" harness = false - -[patch.crates-io] -#zcash_primitives = { version = "0.15", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd1" } -zcash_note_encryption = { version = "0.4", git = "https://github.com/QED-it/zcash_note_encryption", branch = "fix-sapling-constants" } -sapling = { package = "sapling-crypto", version = "0.1.3", git = "https://github.com/QED-it/sapling-crypto", branch = "orchard-backward-compatibility" } diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index 8f857cf1444..b27ffbc53a1 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -1,5 +1,7 @@ //! Encrypted parts of Orchard notes. +// FIXME: make it a generic and add support for OrchardZSA (encrypted tote size ofr it is not 580!) + use std::{fmt, io}; use serde_big_array::BigArray; diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index ffc58a5feb8..447d9bbd449 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -10,7 +10,7 @@ use std::{ use futures::{future::BoxFuture, FutureExt}; use once_cell::sync::Lazy; -use orchard::circuit::VerifyingKey; +use orchard::{circuit::VerifyingKey, orchard_flavor::OrchardVanilla}; use rand::{thread_rng, CryptoRng, RngCore}; use thiserror::Error; @@ -75,7 +75,8 @@ pub type ItemVerifyingKey = VerifyingKey; lazy_static::lazy_static! { /// The halo2 proof verifying key. - pub static ref VERIFYING_KEY: ItemVerifyingKey = ItemVerifyingKey::build(); + // FIXME: support OrchardZSA? + pub static ref VERIFYING_KEY: ItemVerifyingKey = ItemVerifyingKey::build::(); } // === TEMPORARY BATCH HALO2 SUBSTITUTE === @@ -143,6 +144,15 @@ impl From<&zebra_chain::orchard::ShieldedData> for Item { .flags .contains(zebra_chain::orchard::Flags::ENABLE_OUTPUTS); + // FIXME: simplify the flags creation - make `Flags::from_parts` method pub? + // FIXME: support OrchardZSA? + let flags = match (enable_spend, enable_output) { + (false, false) => orchard::builder::BundleType::DISABLED.flags(), + (false, true) => orchard::bundle::Flags::SPENDS_DISABLED_WITHOUT_ZSA, + (true, false) => orchard::bundle::Flags::OUTPUTS_DISABLED, + (true, true) => orchard::bundle::Flags::ENABLED_WITHOUT_ZSA, + }; + let instances = shielded_data .actions() .map(|action| { @@ -155,8 +165,7 @@ impl From<&zebra_chain::orchard::ShieldedData> for Item { )) .expect("should be a valid redpallas spendauth verification key"), note::ExtractedNoteCommitment::from_bytes(&action.cm_x.into()).unwrap(), - enable_spend, - enable_output, + flags, ) }) .collect(); diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index e654adcc546..9b5c367e640 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -11,6 +11,8 @@ use orchard::{ bundle::Flags, circuit::ProvingKey, keys::{FullViewingKey, Scope, SpendingKey}, + note::AssetBase, + orchard_flavor::OrchardVanilla, value::NoteValue, Anchor, Bundle, }; @@ -23,9 +25,10 @@ use zebra_chain::{ use crate::primitives::halo2::*; +// FIXME: add support for OrchardZSA (see OrchardVanilla and AssetBase::native() usage below) #[allow(dead_code, clippy::print_stdout)] fn generate_test_vectors() { - let proving_key = ProvingKey::build(); + let proving_key = ProvingKey::build::(); let rng = OsRng; @@ -50,11 +53,17 @@ fn generate_test_vectors() { for _ in 0..num_recipients { builder - .add_output(None, recipient, NoteValue::from_raw(note_value), None) + .add_output( + None, + recipient, + NoteValue::from_raw(note_value), + AssetBase::native(), + None, + ) .unwrap(); } - let bundle: Bundle<_, i64> = builder.build(rng).unwrap().unwrap().0; + let bundle: Bundle<_, i64, OrchardVanilla> = builder.build(rng).unwrap().unwrap().0; let bundle = bundle .create_proof(&proving_key, rng) @@ -79,7 +88,14 @@ fn generate_test_vectors() { rk: <[u8; 32]>::from(a.rk()).into(), cm_x: pallas::Base::from_repr(a.cmx().into()).unwrap(), ephemeral_key: a.encrypted_note().epk_bytes.try_into().unwrap(), - enc_ciphertext: a.encrypted_note().enc_ciphertext.into(), + // FIXME: support OrchardZSA too, 580 works for OrchardVanilla only! + // FIXME: consider more "type safe" way to do the following conversion + // (now it goes through &[u8]) + enc_ciphertext: <[u8; 580]>::try_from( + a.encrypted_note().enc_ciphertext.as_ref(), + ) + .unwrap() + .into(), out_ciphertext: a.encrypted_note().out_ciphertext.into(), }; zebra_chain::orchard::shielded_data::AuthorizedAction { From 50190a3c3f74566ee0602c9454a476491d15b4b3 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 18 Aug 2024 22:34:58 +0200 Subject: [PATCH 003/230] Introduce Nu7 --- zebra-chain/Cargo.toml | 3 ++- zebra-chain/src/block/commitment.rs | 4 ++-- zebra-chain/src/history_tree.rs | 4 ++-- zebra-chain/src/parameters/network.rs | 2 ++ zebra-chain/src/parameters/network/testnet.rs | 9 +++++++- .../src/parameters/network/tests/vectors.rs | 5 ++-- zebra-chain/src/parameters/network_upgrade.rs | 23 ++++++++++++++++--- zebra-chain/src/primitives/zcash_history.rs | 3 ++- zebra-chain/src/transaction/arbitrary.rs | 2 +- 9 files changed, 42 insertions(+), 13 deletions(-) diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index badeb6b699f..10c5ed926cd 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -179,4 +179,5 @@ harness = false [lints.rust] # TODO: Remove this once it's no longer needed for NU6. -unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("nu6"))'] } +# FIXME: TODO: What about NU7? +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("nu6", "nu7"))'] } diff --git a/zebra-chain/src/block/commitment.rs b/zebra-chain/src/block/commitment.rs index 2cb09e75b22..ec4ef7d2616 100644 --- a/zebra-chain/src/block/commitment.rs +++ b/zebra-chain/src/block/commitment.rs @@ -125,7 +125,7 @@ impl Commitment { // NetworkUpgrade::current() returns the latest network upgrade that's activated at the provided height, so // on Regtest for heights above height 0, it could return NU6, and it's possible for the current network upgrade // to be NU6 (or Canopy, or any network upgrade above Heartwood) at the Heartwood activation height. - (Canopy | Nu5 | Nu6, activation_height) + (Canopy | Nu5 | Nu6 | Nu7, activation_height) if height == activation_height && Some(height) == Heartwood.activation_height(network) => { @@ -136,7 +136,7 @@ impl Commitment { } } (Heartwood | Canopy, _) => Ok(ChainHistoryRoot(ChainHistoryMmrRootHash(bytes))), - (Nu5 | Nu6, _) => Ok(ChainHistoryBlockTxAuthCommitment( + (Nu5 | Nu6 | Nu7, _) => Ok(ChainHistoryBlockTxAuthCommitment( ChainHistoryBlockTxAuthCommitmentHash(bytes), )), } diff --git a/zebra-chain/src/history_tree.rs b/zebra-chain/src/history_tree.rs index 91fa3a17628..613bf0616d7 100644 --- a/zebra-chain/src/history_tree.rs +++ b/zebra-chain/src/history_tree.rs @@ -102,7 +102,7 @@ impl NonEmptyHistoryTree { )?; InnerHistoryTree::PreOrchard(tree) } - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => { + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => { let tree = Tree::::new_from_cache( network, network_upgrade, @@ -156,7 +156,7 @@ impl NonEmptyHistoryTree { )?; (InnerHistoryTree::PreOrchard(tree), entry) } - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => { + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => { let (tree, entry) = Tree::::new_from_block( network, block, diff --git a/zebra-chain/src/parameters/network.rs b/zebra-chain/src/parameters/network.rs index 8cec6c16c1e..6b793b4f634 100644 --- a/zebra-chain/src/parameters/network.rs +++ b/zebra-chain/src/parameters/network.rs @@ -136,10 +136,12 @@ impl Network { pub fn new_regtest( nu5_activation_height: Option, nu6_activation_height: Option, + nu7_activation_height: Option, ) -> Self { Self::new_configured_testnet(testnet::Parameters::new_regtest( nu5_activation_height, nu6_activation_height, + nu7_activation_height, )) } diff --git a/zebra-chain/src/parameters/network/testnet.rs b/zebra-chain/src/parameters/network/testnet.rs index 80cb8419c77..53ae14711c1 100644 --- a/zebra-chain/src/parameters/network/testnet.rs +++ b/zebra-chain/src/parameters/network/testnet.rs @@ -194,6 +194,9 @@ pub struct ConfiguredActivationHeights { /// Activation height for `NU6` network upgrade. #[serde(rename = "NU6")] pub nu6: Option, + /// Activation height for `NU7` network upgrade. + #[serde(rename = "NU7")] + pub nu7: Option, } /// Builder for the [`Parameters`] struct. @@ -314,6 +317,7 @@ impl ParametersBuilder { canopy, nu5, nu6, + nu7, }: ConfiguredActivationHeights, ) -> Self { use NetworkUpgrade::*; @@ -332,6 +336,7 @@ impl ParametersBuilder { .chain(canopy.into_iter().map(|h| (h, Canopy))) .chain(nu5.into_iter().map(|h| (h, Nu5))) .chain(nu6.into_iter().map(|h| (h, Nu6))) + .chain(nu7.into_iter().map(|h| (h, Nu7))) .map(|(h, nu)| (h.try_into().expect("activation height must be valid"), nu)) .collect(); @@ -519,6 +524,7 @@ impl Parameters { pub fn new_regtest( nu5_activation_height: Option, nu6_activation_height: Option, + nu7_activation_height: Option, ) -> Self { #[cfg(any(test, feature = "proptest-impl"))] let nu5_activation_height = nu5_activation_height.or(Some(100)); @@ -538,6 +544,7 @@ impl Parameters { canopy: Some(1), nu5: nu5_activation_height, nu6: nu6_activation_height, + nu7: nu7_activation_height, ..Default::default() }) .finish() @@ -568,7 +575,7 @@ impl Parameters { post_nu6_funding_streams, target_difficulty_limit, disable_pow, - } = Self::new_regtest(None, None); + } = Self::new_regtest(None, None, None); self.network_name == network_name && self.genesis_hash == genesis_hash diff --git a/zebra-chain/src/parameters/network/tests/vectors.rs b/zebra-chain/src/parameters/network/tests/vectors.rs index c839a26c116..4683a908d2b 100644 --- a/zebra-chain/src/parameters/network/tests/vectors.rs +++ b/zebra-chain/src/parameters/network/tests/vectors.rs @@ -109,6 +109,7 @@ fn activates_network_upgrades_correctly() { let expected_activation_height = 1; let network = testnet::Parameters::build() .with_activation_heights(ConfiguredActivationHeights { + // FIXME: nu7? nu6: Some(expected_activation_height), ..Default::default() }) @@ -147,7 +148,7 @@ fn activates_network_upgrades_correctly() { (Network::Mainnet, MAINNET_ACTIVATION_HEIGHTS), (Network::new_default_testnet(), TESTNET_ACTIVATION_HEIGHTS), ( - Network::new_regtest(None, None), + Network::new_regtest(None, None, None), expected_default_regtest_activation_heights, ), ] { @@ -198,7 +199,7 @@ fn check_configured_network_name() { "Mainnet should be displayed as 'Mainnet'" ); assert_eq!( - Network::new_regtest(None, None).to_string(), + Network::new_regtest(None, None, None).to_string(), "Regtest", "Regtest should be displayed as 'Regtest'" ); diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 121a5bdcf13..74669a9b0fe 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -15,7 +15,7 @@ use hex::{FromHex, ToHex}; use proptest_derive::Arbitrary; /// A list of network upgrades in the order that they must be activated. -pub const NETWORK_UPGRADES_IN_ORDER: [NetworkUpgrade; 9] = [ +pub const NETWORK_UPGRADES_IN_ORDER: [NetworkUpgrade; 10] = [ Genesis, BeforeOverwinter, Overwinter, @@ -25,6 +25,7 @@ pub const NETWORK_UPGRADES_IN_ORDER: [NetworkUpgrade; 9] = [ Canopy, Nu5, Nu6, + Nu7, ]; /// A Zcash network upgrade. @@ -60,6 +61,8 @@ pub enum NetworkUpgrade { Nu5, /// The Zcash protocol after the NU6 upgrade. Nu6, + /// The Zcash protocol after the NU7 upgrade. + Nu7, } impl fmt::Display for NetworkUpgrade { @@ -90,6 +93,8 @@ pub(super) const MAINNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] (block::Height(1_687_104), Nu5), // TODO: Add NU6 // (block::Height(2_726_400), Nu6), + // FIXME: TODO: Add NU7 with a correct value + // (block::Height(2_726_401), Nu7), ]; /// Fake mainnet network upgrade activation heights, used in tests. @@ -104,6 +109,7 @@ const FAKE_MAINNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] = &[ (block::Height(30), Canopy), (block::Height(35), Nu5), (block::Height(40), Nu6), + (block::Height(45), Nu7), ]; /// Testnet network upgrade activation heights. @@ -127,6 +133,8 @@ pub(super) const TESTNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] (block::Height(1_842_420), Nu5), // TODO: Add NU6 // (block::Height(2_942_000), Nu6), + // FIXME: TODO: Add NU7 with a correct value + // (block::Height(2_942_001), Nu7), ]; /// Fake testnet network upgrade activation heights, used in tests. @@ -141,6 +149,7 @@ const FAKE_TESTNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] = &[ (block::Height(30), Canopy), (block::Height(35), Nu5), (block::Height(40), Nu6), + (block::Height(45), Nu7), ]; /// The Consensus Branch Id, used to bind transactions and blocks to a @@ -217,6 +226,8 @@ pub(crate) const CONSENSUS_BRANCH_IDS: &[(NetworkUpgrade, ConsensusBranchId)] = (Canopy, ConsensusBranchId(0xe9ff75a6)), (Nu5, ConsensusBranchId(0xc2d6d0b4)), (Nu6, ConsensusBranchId(0xc8e71055)), + // FIXME: use a proper value below + (Nu7, ConsensusBranchId(0xc8e71056)), ]; /// The target block spacing before Blossom. @@ -333,7 +344,8 @@ impl NetworkUpgrade { Heartwood => Some(Canopy), Canopy => Some(Nu5), Nu5 => Some(Nu6), - Nu6 => None, + Nu6 => Some(Nu7), + Nu7 => None, } } @@ -410,7 +422,9 @@ impl NetworkUpgrade { pub fn target_spacing(&self) -> Duration { let spacing_seconds = match self { Genesis | BeforeOverwinter | Overwinter | Sapling => PRE_BLOSSOM_POW_TARGET_SPACING, - Blossom | Heartwood | Canopy | Nu5 | Nu6 => POST_BLOSSOM_POW_TARGET_SPACING.into(), + Blossom | Heartwood | Canopy | Nu5 | Nu6 | Nu7 => { + POST_BLOSSOM_POW_TARGET_SPACING.into() + } }; Duration::seconds(spacing_seconds) @@ -533,6 +547,9 @@ impl From for NetworkUpgrade { zcash_protocol::consensus::NetworkUpgrade::Nu5 => Self::Nu5, #[cfg(zcash_unstable = "nu6")] zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, + // FIXME: do we need the following cfg check? + #[cfg(zcash_unstable = "nu7")] + zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu7, } } } diff --git a/zebra-chain/src/primitives/zcash_history.rs b/zebra-chain/src/primitives/zcash_history.rs index e8ca97d63f8..4b52c85d8e8 100644 --- a/zebra-chain/src/primitives/zcash_history.rs +++ b/zebra-chain/src/primitives/zcash_history.rs @@ -276,7 +276,8 @@ impl Version for zcash_history::V1 { NetworkUpgrade::Heartwood | NetworkUpgrade::Canopy | NetworkUpgrade::Nu5 - | NetworkUpgrade::Nu6 => zcash_history::NodeData { + | NetworkUpgrade::Nu6 + | NetworkUpgrade::Nu7 => zcash_history::NodeData { consensus_branch_id: branch_id.into(), subtree_commitment: block_hash, start_time: time, diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index cf4aa7a9552..0541bd7acd3 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -778,7 +778,7 @@ impl Arbitrary for Transaction { NetworkUpgrade::Blossom | NetworkUpgrade::Heartwood | NetworkUpgrade::Canopy => { Self::v4_strategy(ledger_state) } - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => prop_oneof![ + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => prop_oneof![ Self::v4_strategy(ledger_state.clone()), Self::v5_strategy(ledger_state) ] From 2d3845dc7230e4e81c5c2ffa42093dfbbf919acb Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 19 Aug 2024 07:51:31 +0200 Subject: [PATCH 004/230] Introduce Nu7 fo other crates of Zebra --- zebra-consensus/src/transaction.rs | 5 +++-- zebra-consensus/src/transaction/tests/prop.rs | 3 ++- zebra-network/src/config.rs | 17 +++++++++++------ zebra-network/src/protocol/external/types.rs | 3 +++ .../types/get_block_template/proposal.rs | 2 +- zebrad/tests/common/configs/v1.9.0.toml | 2 ++ 6 files changed, 22 insertions(+), 10 deletions(-) diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index 1c303003615..192f1413332 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -678,7 +678,8 @@ where | NetworkUpgrade::Heartwood | NetworkUpgrade::Canopy | NetworkUpgrade::Nu5 - | NetworkUpgrade::Nu6 => Ok(()), + | NetworkUpgrade::Nu6 + | NetworkUpgrade::Nu7 => Ok(()), // Does not support V4 transactions NetworkUpgrade::Genesis @@ -766,7 +767,7 @@ where // // Note: Here we verify the transaction version number of the above rule, the group // id is checked in zebra-chain crate, in the transaction serialize. - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => Ok(()), + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => Ok(()), // Does not support V5 transactions NetworkUpgrade::Genesis diff --git a/zebra-consensus/src/transaction/tests/prop.rs b/zebra-consensus/src/transaction/tests/prop.rs index f45b4731de0..3f57bbb74bf 100644 --- a/zebra-consensus/src/transaction/tests/prop.rs +++ b/zebra-consensus/src/transaction/tests/prop.rs @@ -344,7 +344,8 @@ fn sanitize_transaction_version( BeforeOverwinter => 2, Overwinter => 3, Sapling | Blossom | Heartwood | Canopy => 4, - Nu5 | Nu6 => 5, + // FIXME: Use 6 for Nu7 + Nu5 | Nu6 | Nu7 => 5, } }; diff --git a/zebra-network/src/config.rs b/zebra-network/src/config.rs index 00f4f8b4460..236608b11cc 100644 --- a/zebra-network/src/config.rs +++ b/zebra-network/src/config.rs @@ -722,12 +722,17 @@ impl<'de> Deserialize<'de> for Config { (NetworkKind::Mainnet, _) => Network::Mainnet, (NetworkKind::Testnet, None) => Network::new_default_testnet(), (NetworkKind::Regtest, testnet_parameters) => { - let (nu5_activation_height, nu6_activation_height) = testnet_parameters - .and_then(|params| params.activation_heights) - .map(|ConfiguredActivationHeights { nu5, nu6, .. }| (nu5, nu6)) - .unwrap_or_default(); - - Network::new_regtest(nu5_activation_height, nu6_activation_height) + let (nu5_activation_height, nu6_activation_height, nu7_activation_height) = + testnet_parameters + .and_then(|params| params.activation_heights) + .map(|ConfiguredActivationHeights { nu5, nu6, nu7, .. }| (nu5, nu6, nu7)) + .unwrap_or_default(); + + Network::new_regtest( + nu5_activation_height, + nu6_activation_height, + nu7_activation_height, + ) } ( NetworkKind::Testnet, diff --git a/zebra-network/src/protocol/external/types.rs b/zebra-network/src/protocol/external/types.rs index 7ac76d7670f..1c8c2fd3b2f 100644 --- a/zebra-network/src/protocol/external/types.rs +++ b/zebra-network/src/protocol/external/types.rs @@ -95,6 +95,9 @@ impl Version { (Mainnet, Nu5) => 170_100, (Testnet(params), Nu6) if params.is_default_testnet() => 170_050, (Mainnet, Nu6) => 170_100, + // FIXME: use proper values for Nu7 + (Testnet(params), Nu7) if params.is_default_testnet() => 170_051, + (Mainnet, Nu7) => 170_101, // It should be fine to reject peers with earlier network protocol versions on custom testnets for now. (Testnet(_params), _) => CURRENT_NETWORK_PROTOCOL_VERSION.0, diff --git a/zebra-rpc/src/methods/get_block_template_rpcs/types/get_block_template/proposal.rs b/zebra-rpc/src/methods/get_block_template_rpcs/types/get_block_template/proposal.rs index fc0805b533d..373ba2d7c20 100644 --- a/zebra-rpc/src/methods/get_block_template_rpcs/types/get_block_template/proposal.rs +++ b/zebra-rpc/src/methods/get_block_template_rpcs/types/get_block_template/proposal.rs @@ -217,7 +217,7 @@ pub fn proposal_block_from_template( | NetworkUpgrade::Blossom | NetworkUpgrade::Heartwood => panic!("pre-Canopy block templates not supported"), NetworkUpgrade::Canopy => chain_history_root.bytes_in_serialized_order().into(), - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => { + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => { block_commitments_hash.bytes_in_serialized_order().into() } }; diff --git a/zebrad/tests/common/configs/v1.9.0.toml b/zebrad/tests/common/configs/v1.9.0.toml index 11bcf62107a..93291298f98 100644 --- a/zebrad/tests/common/configs/v1.9.0.toml +++ b/zebrad/tests/common/configs/v1.9.0.toml @@ -73,6 +73,8 @@ Heartwood = 903_800 Canopy = 1_028_500 NU5 = 1_842_420 NU6 = 2_000_000 +# FIXME: Use a proper value for NU7. +NU7 = 2_000_001 [network.testnet_parameters.pre_nu6_funding_streams.height_range] start = 0 From a3a61f5d9401c7ec4d7734b4665fb0887afbb1f8 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 28 Aug 2024 15:20:23 +0200 Subject: [PATCH 005/230] Add initial Transaction V6 support in zebra-chain crate. This commit introduces basic support for Transaction version 6 (Tx V6). This initial implementation treats Tx V6 as a simple copy of Tx V5, without yet integrating ZSA-specific features or the new transaction structure. - Added a new V6 variant to the Transaction enum in the zebra-chain crate. - Updated relevant code to handle the new V6 variant. Note: Tests and additional adjustments are still pending, and will be addressed in subsequent commits. --- zebra-chain/src/transaction.rs | 167 +++++++++++++++++++++++++++++---- 1 file changed, 148 insertions(+), 19 deletions(-) diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 3df3edc8d53..ada329140f1 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -142,6 +142,28 @@ pub enum Transaction { /// The orchard data for this transaction, if any. orchard_shielded_data: Option, }, + // FIXME: implement V6 properly (now it's just a coipy of V5) + /// A `version = 6` transaction , which supports Orchard ZSA, Orchard Vanille, Sapling and + /// transparent, but not Sprout. + V6 { + /// The Network Upgrade for this transaction. + /// + /// Derived from the ConsensusBranchId field. + network_upgrade: NetworkUpgrade, + /// The earliest time or block height that this transaction can be added to the + /// chain. + lock_time: LockTime, + /// The latest block height that this transaction can be added to the chain. + expiry_height: block::Height, + /// The transparent inputs to the transaction. + inputs: Vec, + /// The transparent outputs from the transaction. + outputs: Vec, + /// The sapling shielded data for this transaction, if any. + sapling_shielded_data: Option>, + /// The orchard data for this transaction, if any. + orchard_shielded_data: Option, + }, } impl fmt::Display for Transaction { @@ -180,7 +202,7 @@ impl Transaction { /// Compute the hash (mined transaction ID) of this transaction. /// - /// The hash uniquely identifies mined v5 transactions, + /// The hash uniquely identifies mined v5/v6 transactions, /// and all v1-v4 transactions, whether mined or unmined. pub fn hash(&self) -> Hash { Hash::from(self) @@ -247,7 +269,7 @@ impl Transaction { | Transaction::V2 { .. } | Transaction::V3 { .. } | Transaction::V4 { .. } => None, - Transaction::V5 { .. } => Some(AuthDigest::from(self)), + Transaction::V5 { .. } | Transaction::V6 { .. } => Some(AuthDigest::from(self)), } } @@ -320,7 +342,10 @@ impl Transaction { pub fn is_overwintered(&self) -> bool { match self { Transaction::V1 { .. } | Transaction::V2 { .. } => false, - Transaction::V3 { .. } | Transaction::V4 { .. } | Transaction::V5 { .. } => true, + Transaction::V3 { .. } + | Transaction::V4 { .. } + | Transaction::V5 { .. } + | Transaction::V6 { .. } => true, } } @@ -332,6 +357,7 @@ impl Transaction { Transaction::V3 { .. } => 3, Transaction::V4 { .. } => 4, Transaction::V5 { .. } => 5, + Transaction::V6 { .. } => 6, } } @@ -342,7 +368,8 @@ impl Transaction { | Transaction::V2 { lock_time, .. } | Transaction::V3 { lock_time, .. } | Transaction::V4 { lock_time, .. } - | Transaction::V5 { lock_time, .. } => *lock_time, + | Transaction::V5 { lock_time, .. } + | Transaction::V6 { lock_time, .. } => *lock_time, }; // `zcashd` checks that the block height is greater than the lock height. @@ -389,7 +416,8 @@ impl Transaction { | Transaction::V2 { lock_time, .. } | Transaction::V3 { lock_time, .. } | Transaction::V4 { lock_time, .. } - | Transaction::V5 { lock_time, .. } => *lock_time, + | Transaction::V5 { lock_time, .. } + | Transaction::V6 { lock_time, .. } => *lock_time, }; let mut lock_time_bytes = Vec::new(); lock_time @@ -419,7 +447,8 @@ impl Transaction { Transaction::V1 { .. } | Transaction::V2 { .. } => None, Transaction::V3 { expiry_height, .. } | Transaction::V4 { expiry_height, .. } - | Transaction::V5 { expiry_height, .. } => match expiry_height { + | Transaction::V5 { expiry_height, .. } + | Transaction::V6 { expiry_height, .. } => match expiry_height { // Consensus rule: // > No limit: To set no limit on transactions (so that they do not expire), nExpiryHeight should be set to 0. // https://zips.z.cash/zip-0203#specification @@ -451,6 +480,10 @@ impl Transaction { | Transaction::V5 { ref mut expiry_height, .. + } + | Transaction::V6 { + ref mut expiry_height, + .. } => expiry_height, } } @@ -467,6 +500,9 @@ impl Transaction { | Transaction::V4 { .. } => None, Transaction::V5 { network_upgrade, .. + } + | Transaction::V6 { + network_upgrade, .. } => Some(*network_upgrade), } } @@ -481,6 +517,7 @@ impl Transaction { Transaction::V3 { ref inputs, .. } => inputs, Transaction::V4 { ref inputs, .. } => inputs, Transaction::V5 { ref inputs, .. } => inputs, + Transaction::V6 { ref inputs, .. } => inputs, } } @@ -493,6 +530,7 @@ impl Transaction { Transaction::V3 { ref mut inputs, .. } => inputs, Transaction::V4 { ref mut inputs, .. } => inputs, Transaction::V5 { ref mut inputs, .. } => inputs, + Transaction::V6 { ref mut inputs, .. } => inputs, } } @@ -511,6 +549,7 @@ impl Transaction { Transaction::V3 { ref outputs, .. } => outputs, Transaction::V4 { ref outputs, .. } => outputs, Transaction::V5 { ref outputs, .. } => outputs, + Transaction::V6 { ref outputs, .. } => outputs, } } @@ -533,6 +572,9 @@ impl Transaction { Transaction::V5 { ref mut outputs, .. } => outputs, + Transaction::V6 { + ref mut outputs, .. + } => outputs, } } @@ -580,7 +622,8 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } => Box::new(std::iter::empty()), + | Transaction::V5 { .. } + | Transaction::V6 { .. } => Box::new(std::iter::empty()), } } @@ -615,7 +658,8 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } => 0, + | Transaction::V5 { .. } + | Transaction::V6 { .. } => 0, } } @@ -654,7 +698,8 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } => Box::new(std::iter::empty()), + | Transaction::V5 { .. } + | Transaction::V6 { .. } => Box::new(std::iter::empty()), } } @@ -690,7 +735,8 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } => None, + | Transaction::V5 { .. } + | Transaction::V6 { .. } => None, } } @@ -698,7 +744,7 @@ impl Transaction { pub fn has_sprout_joinsplit_data(&self) -> bool { match self { // No JoinSplits - Transaction::V1 { .. } | Transaction::V5 { .. } => false, + Transaction::V1 { .. } | Transaction::V5 { .. } | Transaction::V6 { .. } => false, // JoinSplits-on-BCTV14 Transaction::V2 { joinsplit_data, .. } | Transaction::V3 { joinsplit_data, .. } => { @@ -745,7 +791,8 @@ impl Transaction { .. } | Transaction::V1 { .. } - | Transaction::V5 { .. } => Box::new(std::iter::empty()), + | Transaction::V5 { .. } + | Transaction::V6 { .. } => Box::new(std::iter::empty()), } } @@ -767,6 +814,11 @@ impl Transaction { .. } => Box::new(sapling_shielded_data.anchors()), + Transaction::V6 { + sapling_shielded_data: Some(sapling_shielded_data), + .. + } => Box::new(sapling_shielded_data.anchors()), + // No Spends Transaction::V1 { .. } | Transaction::V2 { .. } @@ -778,6 +830,10 @@ impl Transaction { | Transaction::V5 { sapling_shielded_data: None, .. + } + | Transaction::V6 { + sapling_shielded_data: None, + .. } => Box::new(std::iter::empty()), } } @@ -786,8 +842,8 @@ impl Transaction { /// returning `Spend` regardless of the underlying /// transaction version. /// - /// Shared anchors in V5 transactions are copied into each sapling spend. - /// This allows the same code to validate spends from V4 and V5 transactions. + /// Shared anchors in V5/V6 transactions are copied into each sapling spend. + /// This allows the same code to validate spends from V4 and V5/V6 transactions. /// /// # Correctness /// @@ -804,6 +860,10 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.spends_per_anchor()), + Transaction::V6 { + sapling_shielded_data: Some(sapling_shielded_data), + .. + } => Box::new(sapling_shielded_data.spends_per_anchor()), // No Spends Transaction::V1 { .. } @@ -816,6 +876,10 @@ impl Transaction { | Transaction::V5 { sapling_shielded_data: None, .. + } + | Transaction::V6 { + sapling_shielded_data: None, + .. } => Box::new(std::iter::empty()), } } @@ -832,6 +896,10 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.outputs()), + Transaction::V6 { + sapling_shielded_data: Some(sapling_shielded_data), + .. + } => Box::new(sapling_shielded_data.outputs()), // No Outputs Transaction::V1 { .. } @@ -844,6 +912,10 @@ impl Transaction { | Transaction::V5 { sapling_shielded_data: None, .. + } + | Transaction::V6 { + sapling_shielded_data: None, + .. } => Box::new(std::iter::empty()), } } @@ -862,6 +934,10 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.nullifiers()), + Transaction::V6 { + sapling_shielded_data: Some(sapling_shielded_data), + .. + } => Box::new(sapling_shielded_data.nullifiers()), // No Spends Transaction::V1 { .. } @@ -874,6 +950,10 @@ impl Transaction { | Transaction::V5 { sapling_shielded_data: None, .. + } + | Transaction::V6 { + sapling_shielded_data: None, + .. } => Box::new(std::iter::empty()), } } @@ -892,6 +972,10 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.note_commitments()), + Transaction::V6 { + sapling_shielded_data: Some(sapling_shielded_data), + .. + } => Box::new(sapling_shielded_data.note_commitments()), // No Spends Transaction::V1 { .. } @@ -904,6 +988,10 @@ impl Transaction { | Transaction::V5 { sapling_shielded_data: None, .. + } + | Transaction::V6 { + sapling_shielded_data: None, + .. } => Box::new(std::iter::empty()), } } @@ -920,6 +1008,10 @@ impl Transaction { sapling_shielded_data, .. } => sapling_shielded_data.is_some(), + Transaction::V6 { + sapling_shielded_data, + .. + } => sapling_shielded_data.is_some(), } } @@ -935,6 +1027,12 @@ impl Transaction { .. } => orchard_shielded_data.as_ref(), + // FIXME: Support V6/OrchardZSA propetly. + Transaction::V6 { + orchard_shielded_data, + .. + } => orchard_shielded_data.as_ref(), + // No Orchard shielded data Transaction::V1 { .. } | Transaction::V2 { .. } @@ -953,6 +1051,12 @@ impl Transaction { .. } => Some(orchard_shielded_data), + // FIXME: Support V6/OrchardZSA propetly. + Transaction::V6 { + orchard_shielded_data: Some(orchard_shielded_data), + .. + } => Some(orchard_shielded_data), + Transaction::V1 { .. } | Transaction::V2 { .. } | Transaction::V3 { .. } @@ -960,6 +1064,10 @@ impl Transaction { | Transaction::V5 { orchard_shielded_data: None, .. + } + | Transaction::V6 { + orchard_shielded_data: None, + .. } => None, } } @@ -1086,7 +1194,8 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } => Box::new(std::iter::empty()), + | Transaction::V5 { .. } + | Transaction::V6 { .. } => Box::new(std::iter::empty()), } } @@ -1135,7 +1244,8 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } => Box::new(std::iter::empty()), + | Transaction::V5 { .. } + | Transaction::V6 { .. } => Box::new(std::iter::empty()), } } @@ -1182,7 +1292,8 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } => Box::new(std::iter::empty()), + | Transaction::V5 { .. } + | Transaction::V6 { .. } => Box::new(std::iter::empty()), } } @@ -1231,7 +1342,8 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } => Box::new(std::iter::empty()), + | Transaction::V5 { .. } + | Transaction::V6 { .. } => Box::new(std::iter::empty()), } } @@ -1272,7 +1384,8 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } => Box::new(iter::empty()), + | Transaction::V5 { .. } + | Transaction::V6 { .. } => Box::new(iter::empty()), }; joinsplit_value_balances.map(ValueBalance::from_sprout_amount) @@ -1314,6 +1427,10 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => sapling_shielded_data.value_balance, + Transaction::V6 { + sapling_shielded_data: Some(sapling_shielded_data), + .. + } => sapling_shielded_data.value_balance, Transaction::V1 { .. } | Transaction::V2 { .. } @@ -1325,6 +1442,10 @@ impl Transaction { | Transaction::V5 { sapling_shielded_data: None, .. + } + | Transaction::V6 { + sapling_shielded_data: None, + .. } => Amount::zero(), }; @@ -1346,6 +1467,10 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => Some(&mut sapling_shielded_data.value_balance), + Transaction::V6 { + sapling_shielded_data: Some(sapling_shielded_data), + .. + } => Some(&mut sapling_shielded_data.value_balance), Transaction::V1 { .. } | Transaction::V2 { .. } | Transaction::V3 { .. } @@ -1356,6 +1481,10 @@ impl Transaction { | Transaction::V5 { sapling_shielded_data: None, .. + } + | Transaction::V6 { + sapling_shielded_data: None, + .. } => None, } } From 83d981b0a1276eda743740740b0adb14d3c9f768 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 28 Aug 2024 21:49:08 +0200 Subject: [PATCH 006/230] Add initial Transaction V6 support in other crates and tests (just copy V5 behaviour for now) --- zebra-chain/src/parameters/transaction.rs | 7 ++ .../src/primitives/zcash_primitives.rs | 5 +- zebra-chain/src/transaction/arbitrary.rs | 16 +++ zebra-chain/src/transaction/serialize.rs | 107 +++++++++++++++++- zebra-chain/src/transaction/tests/vectors.rs | 4 + zebra-chain/src/transaction/txid.rs | 10 +- zebra-chain/src/transaction/unmined.rs | 2 +- zebra-consensus/src/transaction.rs | 8 +- zebra-state/src/service/check/utxo.rs | 1 + .../src/service/non_finalized_state/chain.rs | 28 +++++ 10 files changed, 181 insertions(+), 7 deletions(-) diff --git a/zebra-chain/src/parameters/transaction.rs b/zebra-chain/src/parameters/transaction.rs index bab59e794db..77b88abca44 100644 --- a/zebra-chain/src/parameters/transaction.rs +++ b/zebra-chain/src/parameters/transaction.rs @@ -11,3 +11,10 @@ pub const SAPLING_VERSION_GROUP_ID: u32 = 0x892F_2085; /// Orchard transactions must use transaction version 5 and this version /// group ID. Sapling transactions can use v4 or v5 transactions. pub const TX_V5_VERSION_GROUP_ID: u32 = 0x26A7_270A; + +/// The version group ID for version 6 transactions. +/// +/// Orchard transactions must use transaction version 5 and this version +/// group ID. +// FIXME: use a proper value! +pub const TX_V6_VERSION_GROUP_ID: u32 = 0x26A7_270B; diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 227742110ed..6fcaf7c38fe 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -148,13 +148,16 @@ impl TryFrom<&Transaction> for zp_tx::Transaction { /// /// # Panics /// - /// If the transaction is not V5. (Currently there is no need for this + /// If the transaction is not V5/V6. (Currently there is no need for this /// conversion for other versions.) #[allow(clippy::unwrap_in_result)] fn try_from(trans: &Transaction) -> Result { let network_upgrade = match trans { Transaction::V5 { network_upgrade, .. + } + | Transaction::V6 { + network_upgrade, .. } => network_upgrade, Transaction::V1 { .. } | Transaction::V2 { .. } diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index cf4aa7a9552..73aac10a23d 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -918,6 +918,22 @@ pub fn transaction_to_fake_v5( orchard_shielded_data: None, }, v5 @ V5 { .. } => v5.clone(), + V6 { + inputs, + outputs, + lock_time, + sapling_shielded_data, + orchard_shielded_data, + .. + } => V5 { + network_upgrade: block_nu, + inputs: inputs.clone(), + outputs: outputs.clone(), + lock_time: *lock_time, + expiry_height: height, + sapling_shielded_data: sapling_shielded_data.clone(), + orchard_shielded_data: orchard_shielded_data.clone(), + }, } } diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index ba65dd054b3..f37698d6118 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -11,7 +11,10 @@ use reddsa::{orchard::Binding, orchard::SpendAuth, Signature}; use crate::{ amount, block::MAX_BLOCK_BYTES, - parameters::{OVERWINTER_VERSION_GROUP_ID, SAPLING_VERSION_GROUP_ID, TX_V5_VERSION_GROUP_ID}, + parameters::{ + OVERWINTER_VERSION_GROUP_ID, SAPLING_VERSION_GROUP_ID, TX_V5_VERSION_GROUP_ID, + TX_V6_VERSION_GROUP_ID, + }, primitives::{Halo2Proof, ZkSnarkProof}, serialization::{ zcash_deserialize_external_count, zcash_serialize_empty_list, @@ -673,6 +676,54 @@ impl ZcashSerialize for Transaction { // `proofsOrchard`, `vSpendAuthSigsOrchard`, and `bindingSigOrchard`. orchard_shielded_data.zcash_serialize(&mut writer)?; } + + // FIXME: implement a proper serialization for V6 + Transaction::V6 { + network_upgrade, + lock_time, + expiry_height, + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data, + } => { + // Transaction V6 spec: + // FIXME: specify a proper ref + // https://zips.z.cash/protocol/protocol.pdf#txnencoding + + // Denoted as `nVersionGroupId` in the spec. + writer.write_u32::(TX_V6_VERSION_GROUP_ID)?; + + // Denoted as `nConsensusBranchId` in the spec. + writer.write_u32::(u32::from( + network_upgrade + .branch_id() + .expect("valid transactions must have a network upgrade with a branch id"), + ))?; + + // Denoted as `lock_time` in the spec. + lock_time.zcash_serialize(&mut writer)?; + + // Denoted as `nExpiryHeight` in the spec. + writer.write_u32::(expiry_height.0)?; + + // Denoted as `tx_in_count` and `tx_in` in the spec. + inputs.zcash_serialize(&mut writer)?; + + // Denoted as `tx_out_count` and `tx_out` in the spec. + outputs.zcash_serialize(&mut writer)?; + + // A bundle of fields denoted in the spec as `nSpendsSapling`, `vSpendsSapling`, + // `nOutputsSapling`,`vOutputsSapling`, `valueBalanceSapling`, `anchorSapling`, + // `vSpendProofsSapling`, `vSpendAuthSigsSapling`, `vOutputProofsSapling` and + // `bindingSigSapling`. + sapling_shielded_data.zcash_serialize(&mut writer)?; + + // A bundle of fields denoted in the spec as `nActionsOrchard`, `vActionsOrchard`, + // `flagsOrchard`,`valueBalanceOrchard`, `anchorOrchard`, `sizeProofsOrchard`, + // `proofsOrchard`, `vSpendAuthSigsOrchard`, and `bindingSigOrchard`. + orchard_shielded_data.zcash_serialize(&mut writer)?; + } } Ok(()) } @@ -929,6 +980,60 @@ impl ZcashDeserialize for Transaction { orchard_shielded_data, }) } + // FIXME: implement a proper deserialization for V6 + (6, true) => { + // Transaction V6 spec: + // FIXME: specify a proper ref + // https://zips.z.cash/protocol/protocol.pdf#txnencoding + + // Denoted as `nVersionGroupId` in the spec. + let id = limited_reader.read_u32::()?; + if id != TX_V6_VERSION_GROUP_ID { + return Err(SerializationError::Parse("expected TX_V6_VERSION_GROUP_ID")); + } + // Denoted as `nConsensusBranchId` in the spec. + // Convert it to a NetworkUpgrade + let network_upgrade = + NetworkUpgrade::from_branch_id(limited_reader.read_u32::()?) + .ok_or_else(|| { + SerializationError::Parse( + "expected a valid network upgrade from the consensus branch id", + ) + })?; + + // Denoted as `lock_time` in the spec. + let lock_time = LockTime::zcash_deserialize(&mut limited_reader)?; + + // Denoted as `nExpiryHeight` in the spec. + let expiry_height = block::Height(limited_reader.read_u32::()?); + + // Denoted as `tx_in_count` and `tx_in` in the spec. + let inputs = Vec::zcash_deserialize(&mut limited_reader)?; + + // Denoted as `tx_out_count` and `tx_out` in the spec. + let outputs = Vec::zcash_deserialize(&mut limited_reader)?; + + // A bundle of fields denoted in the spec as `nSpendsSapling`, `vSpendsSapling`, + // `nOutputsSapling`,`vOutputsSapling`, `valueBalanceSapling`, `anchorSapling`, + // `vSpendProofsSapling`, `vSpendAuthSigsSapling`, `vOutputProofsSapling` and + // `bindingSigSapling`. + let sapling_shielded_data = (&mut limited_reader).zcash_deserialize_into()?; + + // A bundle of fields denoted in the spec as `nActionsOrchard`, `vActionsOrchard`, + // `flagsOrchard`,`valueBalanceOrchard`, `anchorOrchard`, `sizeProofsOrchard`, + // `proofsOrchard`, `vSpendAuthSigsOrchard`, and `bindingSigOrchard`. + let orchard_shielded_data = (&mut limited_reader).zcash_deserialize_into()?; + + Ok(Transaction::V6 { + network_upgrade, + lock_time, + expiry_height, + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data, + }) + } (_, _) => Err(SerializationError::Parse("bad tx header")), } } diff --git a/zebra-chain/src/transaction/tests/vectors.rs b/zebra-chain/src/transaction/tests/vectors.rs index 66d5009ed05..f20bfaef455 100644 --- a/zebra-chain/src/transaction/tests/vectors.rs +++ b/zebra-chain/src/transaction/tests/vectors.rs @@ -991,6 +991,10 @@ fn binding_signatures_for_network(network: Network) { Transaction::V5 { sapling_shielded_data, .. + } + | Transaction::V6 { + sapling_shielded_data, + .. } => { if let Some(sapling_shielded_data) = sapling_shielded_data { let shielded_sighash = diff --git a/zebra-chain/src/transaction/txid.rs b/zebra-chain/src/transaction/txid.rs index f67f6dee58d..eb05fd6edb3 100644 --- a/zebra-chain/src/transaction/txid.rs +++ b/zebra-chain/src/transaction/txid.rs @@ -28,7 +28,7 @@ impl<'a> TxIdBuilder<'a> { | Transaction::V2 { .. } | Transaction::V3 { .. } | Transaction::V4 { .. } => self.txid_v1_to_v4(), - Transaction::V5 { .. } => self.txid_v5(), + Transaction::V5 { .. } | Transaction::V6 { .. } => self.txid_v5_v6(), } } @@ -43,10 +43,14 @@ impl<'a> TxIdBuilder<'a> { Ok(Hash(hash_writer.finish())) } - /// Compute the Transaction ID for a V5 transaction in the given network upgrade. + // FIXME: it looks like the updated zcash_primitives in librustzcash + // auto-detects the transaction version by the first byte, so the same function + // can be used here for both V5 and V6. + // FIXME: fix spec refs below for V6 + /// Compute the Transaction ID for a V5/V6 transaction in the given network upgrade. /// In this case it's the hash of a tree of hashes of specific parts of the /// transaction, as specified in ZIP-244 and ZIP-225. - fn txid_v5(self) -> Result { + fn txid_v5_v6(self) -> Result { // The v5 txid (from ZIP-244) is computed using librustzcash. Convert the zebra // transaction to a librustzcash transaction. let alt_tx: zcash_primitives::transaction::Transaction = self.trans.try_into()?; diff --git a/zebra-chain/src/transaction/unmined.rs b/zebra-chain/src/transaction/unmined.rs index da716573e8b..554e8c3f0e1 100644 --- a/zebra-chain/src/transaction/unmined.rs +++ b/zebra-chain/src/transaction/unmined.rs @@ -140,7 +140,7 @@ impl From<&Transaction> for UnminedTxId { fn from(transaction: &Transaction) -> Self { match transaction { V1 { .. } | V2 { .. } | V3 { .. } | V4 { .. } => Legacy(transaction.into()), - V5 { .. } => Witnessed(transaction.into()), + V5 { .. } | V6 { .. } => Witnessed(transaction.into()), } } } diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index 1c303003615..5c21ccd494c 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -405,7 +405,13 @@ where sapling_shielded_data, orchard_shielded_data, .. - } => Self::verify_v5_transaction( + } + // FIXME: implement proper V6 verification + | Transaction::V6 { + sapling_shielded_data, + orchard_shielded_data, + .. + }=> Self::verify_v5_transaction( &req, &network, script_verifier, diff --git a/zebra-state/src/service/check/utxo.rs b/zebra-state/src/service/check/utxo.rs index 324efa3c035..b856a616dd5 100644 --- a/zebra-state/src/service/check/utxo.rs +++ b/zebra-state/src/service/check/utxo.rs @@ -63,6 +63,7 @@ pub fn transparent_spend( finalized_state, )?; + // FIXME: what about v6? // The state service returns UTXOs from pending blocks, // which can be rejected by later contextual checks. // This is a particular issue for v5 transactions, diff --git a/zebra-state/src/service/non_finalized_state/chain.rs b/zebra-state/src/service/non_finalized_state/chain.rs index e25b1fd171b..233a1dbea63 100644 --- a/zebra-state/src/service/non_finalized_state/chain.rs +++ b/zebra-state/src/service/non_finalized_state/chain.rs @@ -1510,6 +1510,20 @@ impl Chain { sapling_shielded_data, orchard_shielded_data, ), + V6 { + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data, + .. + } => ( + inputs, + outputs, + &None, + &None, + sapling_shielded_data, + orchard_shielded_data, + ), V1 { .. } | V2 { .. } | V3 { .. } => unreachable!( "older transaction versions only exist in finalized blocks, because of the mandatory canopy checkpoint", ), @@ -1671,6 +1685,20 @@ impl UpdateWith for Chain { sapling_shielded_data, orchard_shielded_data, ), + V6 { + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data, + .. + } => ( + inputs, + outputs, + &None, + &None, + sapling_shielded_data, + orchard_shielded_data, + ), V1 { .. } | V2 { .. } | V3 { .. } => unreachable!( "older transaction versions only exist in finalized blocks, because of the mandatory canopy checkpoint", ), From c8fa7794502191f6980a3f70b85e10d62a1453b5 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 28 Aug 2024 23:07:00 +0200 Subject: [PATCH 007/230] Fix compilation errors in tests --- zebra-state/src/tests.rs | 1 + zebrad/src/components/mempool/storage/tests/prop.rs | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/zebra-state/src/tests.rs b/zebra-state/src/tests.rs index 488ab4227bd..6b955480572 100644 --- a/zebra-state/src/tests.rs +++ b/zebra-state/src/tests.rs @@ -34,6 +34,7 @@ impl FakeChainHelper for Arc { Transaction::V3 { inputs, .. } => &mut inputs[0], Transaction::V4 { inputs, .. } => &mut inputs[0], Transaction::V5 { inputs, .. } => &mut inputs[0], + Transaction::V6 { inputs, .. } => &mut inputs[0], }; match input { diff --git a/zebrad/src/components/mempool/storage/tests/prop.rs b/zebrad/src/components/mempool/storage/tests/prop.rs index eca65935acb..98abdb2b8e8 100644 --- a/zebrad/src/components/mempool/storage/tests/prop.rs +++ b/zebrad/src/components/mempool/storage/tests/prop.rs @@ -446,6 +446,7 @@ enum SpendConflictTestInput { conflict: SpendConflictForTransactionV5, }, + // FIXME: add and use V6? } impl SpendConflictTestInput { @@ -567,7 +568,7 @@ impl SpendConflictTestInput { } // No JoinSplits - Transaction::V1 { .. } | Transaction::V5 { .. } => {} + Transaction::V1 { .. } | Transaction::V5 { .. } | Transaction::V6 { .. } => {} } } } @@ -634,6 +635,10 @@ impl SpendConflictTestInput { Transaction::V5 { sapling_shielded_data, .. + } + | Transaction::V6 { + sapling_shielded_data, + .. } => { Self::remove_sapling_transfers_with_conflicts(sapling_shielded_data, &conflicts) } @@ -707,6 +712,10 @@ impl SpendConflictTestInput { Transaction::V5 { orchard_shielded_data, .. + } + | Transaction::V6 { + orchard_shielded_data, + .. } => Self::remove_orchard_actions_with_conflicts(orchard_shielded_data, &conflicts), // No Spends From 53c65b675b1ce50905f145412b8e18fcc56a98d3 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 2 Sep 2024 10:39:29 +0200 Subject: [PATCH 008/230] Trigger CI From c238847af2f5ad57f537889e87860042af2100bb Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 08:54:05 +0200 Subject: [PATCH 009/230] Add basic CI checks workflow --- .github/workflows/ci-basic.yml | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/ci-basic.yml diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml new file mode 100644 index 00000000000..92dedd60cb0 --- /dev/null +++ b/.github/workflows/ci-basic.yml @@ -0,0 +1,36 @@ +name: Basic checks + +on: [push, pull_request] + +jobs: + test: + name: Test on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + + steps: + - uses: actions/checkout@v4 + - name: Run tests + run: cargo test --verbose + - name: Verify working directory is clean + run: git diff --exit-code + + doc-links: + name: Intra-doc links + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: cargo fetch + # Requires #![deny(rustdoc::broken_intra_doc_links)] in crates. + - name: Check intra-doc links + run: cargo doc --all-features --document-private-items + + fmt: + name: Rustfmt + timeout-minutes: 30 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: cargo fmt -- --check From 2c13ae9ab1ffbc6865867ed7f42a2f5d262a3539 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 10:28:32 +0200 Subject: [PATCH 010/230] Fix ci-basic.yml --- .github/workflows/ci-basic.yml | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 92dedd60cb0..7b50109c04a 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -12,25 +12,13 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Install dependencies on Ubuntu + run: sudo apt-get update && sudo apt-get install -y protoc - name: Run tests run: cargo test --verbose - name: Verify working directory is clean run: git diff --exit-code - - doc-links: - name: Intra-doc links - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - run: cargo fetch - # Requires #![deny(rustdoc::broken_intra_doc_links)] in crates. - - name: Check intra-doc links + - name: Run doc check run: cargo doc --all-features --document-private-items - - fmt: - name: Rustfmt - timeout-minutes: 30 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - run: cargo fmt -- --check + - name: Run format check + run: cargo fmt -- --check From 5a839c6f2b56f3ca73f16a101b7a34551a4816da Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 10:31:29 +0200 Subject: [PATCH 011/230] Fix ci-basic.yml (2) --- .github/workflows/ci-basic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 7b50109c04a..522329e2440 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Install dependencies on Ubuntu - run: sudo apt-get update && sudo apt-get install -y protoc + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler - name: Run tests run: cargo test --verbose - name: Verify working directory is clean From 367a14bff6885625577eac433b6b4ccdc5c6600b Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 10:52:49 +0200 Subject: [PATCH 012/230] Add installing of build-essential to ci-basic.yml --- .github/workflows/ci-basic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 522329e2440..be3d44917eb 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Install dependencies on Ubuntu - run: sudo apt-get update && sudo apt-get install -y protobuf-compiler + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential - name: Run tests run: cargo test --verbose - name: Verify working directory is clean From f425747e759a17c8a102bd30985bddb406d60906 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 20:57:11 +0200 Subject: [PATCH 013/230] Try to use librocksdb-dev in ci-basic.yml --- .github/workflows/ci-basic.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index be3d44917eb..547b64446c3 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -1,6 +1,7 @@ name: Basic checks -on: [push, pull_request] +#on: [push, pull_request] +on: [push] jobs: test: @@ -13,9 +14,9 @@ jobs: steps: - uses: actions/checkout@v4 - name: Install dependencies on Ubuntu - run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential librocksdb-dev - name: Run tests - run: cargo test --verbose + run: ROCKSDB_LIB_DIR=/usr/lib SNAPPY_LIB_DIR=/usr/lib/x86_64-linux-gnu cargo test --verbose - name: Verify working directory is clean run: git diff --exit-code - name: Run doc check From 831c847d32201ceb7dc0cf6efde9a317a7274d59 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 21:05:06 +0200 Subject: [PATCH 014/230] Run ci-basic.yml on ubuntu-24.04 --- .github/workflows/ci-basic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 547b64446c3..840d406b609 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -9,7 +9,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-24.04] steps: - uses: actions/checkout@v4 From ecaf98d9a04213b2bc0b6e2fc553880a4849bf5a Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 22:32:19 +0200 Subject: [PATCH 015/230] Enable nu6 cfg flag in ci-basic.yml --- .github/workflows/ci-basic.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 840d406b609..4a9bdafa1b5 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -11,12 +11,20 @@ jobs: matrix: os: [ubuntu-24.04] + env: + # Use system-installed RocksDB library instead of building from scratch + ROCKSDB_LIB_DIR: /usr/lib + # Use system-installed Snappy library for compression in RocksDB + SNAPPY_LIB_DIR: /usr/lib/x86_64-linux-gnu + # Enable the `nu6` feature in `zcash_protocol` + RUSTFLAGS: '--cfg zcash_unstable="nu6"' + steps: - uses: actions/checkout@v4 - name: Install dependencies on Ubuntu run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential librocksdb-dev - name: Run tests - run: ROCKSDB_LIB_DIR=/usr/lib SNAPPY_LIB_DIR=/usr/lib/x86_64-linux-gnu cargo test --verbose + run: cargo test --verbose - name: Verify working directory is clean run: git diff --exit-code - name: Run doc check From 7d1115990ab39f28035f568ad4d69eadbd764147 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 4 Sep 2024 10:51:26 +0200 Subject: [PATCH 016/230] Adjust the code with librustzcash/zcash_protocol nu6 related changes --- zebra-chain/Cargo.toml | 4 +++ zebra-chain/src/parameters/network_upgrade.rs | 7 ++++- .../src/primitives/zcash_primitives.rs | 27 ++++++++++++++++++- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index bf9479976ee..44954d31af7 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -176,3 +176,7 @@ required-features = ["bench"] [[bench]] name = "redpallas" harness = false + +# FIXME: remove this and all zcash_unstable usage in the code after updating librustzcash +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("nu6"))'] } diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 551c4a88801..ab66fbc7895 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -530,7 +530,12 @@ impl From for NetworkUpgrade { zcash_protocol::consensus::NetworkUpgrade::Heartwood => Self::Heartwood, zcash_protocol::consensus::NetworkUpgrade::Canopy => Self::Canopy, zcash_protocol::consensus::NetworkUpgrade::Nu5 => Self::Nu5, - // FIXME: uncomment this! zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, + // FIXME: remove cfg + #[cfg(zcash_unstable = "nu6")] + zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, + // FIXME: remove cfg and process Nu7 properly (uses Self::Nu6 for now) + #[cfg(zcash_unstable = "nu6")] + zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu6, } } } diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 7ab2f32d751..be90f18ed23 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -137,6 +137,16 @@ impl zp_tx::components::orchard::MapAuth + for IdentityMap +{ + fn map_issue_authorization(&self, s: orchard::issuance::Signed) -> orchard::issuance::Signed { + s + } +} + #[derive(Debug)] struct PrecomputedAuth<'a> { _phantom: std::marker::PhantomData<&'a ()>, @@ -146,6 +156,14 @@ impl<'a> zp_tx::Authorization for PrecomputedAuth<'a> { type TransparentAuth = TransparentAuth<'a>; type SaplingAuth = sapling_crypto::bundle::Authorized; type OrchardAuth = orchard::bundle::Authorized; + + // FIXME: is this correct? + #[cfg(zcash_unstable = "nu6")] + type OrchardZsaAuth = orchard::bundle::Authorized; + + // FIXME: is this correct? + #[cfg(zcash_unstable = "nu6")] + type IssueAuth = orchard::issuance::Signed; } // End of (mostly) copied code @@ -275,7 +293,14 @@ impl<'a> PrecomputedTxData<'a> { }; let tx_data: zp_tx::TransactionData = alt_tx .into_data() - .map_authorization(f_transparent, IdentityMap, IdentityMap); + // FIXME: do we need to pass another arg values or orchard_zsa and issue instead of IdentityMap? + .map_authorization( + f_transparent, + IdentityMap, + IdentityMap, + IdentityMap, + IdentityMap, + ); PrecomputedTxData { tx_data, From 6a0196e9b791f6873b42bb086bc4bfe18ebeb299 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 4 Sep 2024 11:40:25 +0200 Subject: [PATCH 017/230] Add RUSTDOCFLAGS to ci-basic.yml --- .github/workflows/ci-basic.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 4a9bdafa1b5..c2cde8686bf 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -18,11 +18,13 @@ jobs: SNAPPY_LIB_DIR: /usr/lib/x86_64-linux-gnu # Enable the `nu6` feature in `zcash_protocol` RUSTFLAGS: '--cfg zcash_unstable="nu6"' + RUSTDOCFLAGS: '--cfg zcash_unstable="nu6"' steps: - uses: actions/checkout@v4 - name: Install dependencies on Ubuntu - run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential librocksdb-dev + #run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential librocksdb-dev + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler librocksdb-dev - name: Run tests run: cargo test --verbose - name: Verify working directory is clean From 23e318c0b0e46a8ff4f7f2498fc20ddd57d4034d Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 16 Sep 2024 10:00:59 +0200 Subject: [PATCH 018/230] Add support for Orchard ZSA and updated generic structures for Tx V6 (without unit tests fixing for now). - Refactored `ShieldedData` and `Action` structures to be generics parameterized by Orchard flavor (`OrchardVanilla` or `OrchardZSA`), enabling support for both Orchard protocols in Tx V6. - Introduced a `burn` field in `ShieldedData` to support ZSA, with unit type for Tx V5 and a vector of burn items for Tx V6. - Modified `Transaction` enum methods (orchard_...) to handle generics properly, ensuring compatibility with both Orchard flavors. - Implemented serialization and deserialization for Tx V6 while avoiding code redundancy with Tx V5 wherever possible. --- Cargo.lock | 1 + zebra-chain/Cargo.toml | 11 +- zebra-chain/src/lib.rs | 3 + zebra-chain/src/orchard.rs | 5 + zebra-chain/src/orchard/action.rs | 11 +- zebra-chain/src/orchard/note/ciphertexts.rs | 30 ++-- zebra-chain/src/orchard/shielded_data.rs | 158 +++++++++++++---- zebra-chain/src/transaction.rs | 186 +++++++++++--------- zebra-chain/src/transaction/serialize.rs | 48 +++-- 9 files changed, 303 insertions(+), 150 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9d66f5989a5..6d45b80fb3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6000,6 +6000,7 @@ dependencies = [ "itertools 0.13.0", "jubjub", "lazy_static", + "nonempty", "num-integer", "orchard", "primitive-types", diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 44954d31af7..8efebf87be4 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -15,7 +15,8 @@ keywords = ["zebra", "zcash"] categories = ["asynchronous", "cryptography::cryptocurrencies", "encoding"] [features] -default = [] +#default = [] +default = ["tx-v6"] # Production features that activate extra functionality @@ -60,6 +61,11 @@ proptest-impl = [ bench = ["zebra-test"] +# Support for transaction version 6 +tx-v6 = [ + "nonempty" +] + [dependencies] # Cryptography @@ -102,6 +108,9 @@ sapling-crypto.workspace = true zcash_protocol.workspace = true zcash_address.workspace = true +# Used for orchard serialization +nonempty = { version = "0.7", optional = true } + # Time chrono = { version = "0.4.38", default-features = false, features = ["clock", "std", "serde"] } humantime = "2.1.0" diff --git a/zebra-chain/src/lib.rs b/zebra-chain/src/lib.rs index 4faaeab70cc..06b6a0e1e23 100644 --- a/zebra-chain/src/lib.rs +++ b/zebra-chain/src/lib.rs @@ -40,6 +40,9 @@ pub mod transparent; pub mod value_balance; pub mod work; +#[cfg(feature = "tx-v6")] +pub mod orchard_zsa; + #[cfg(any(test, feature = "proptest-impl"))] pub use block::LedgerState; diff --git a/zebra-chain/src/orchard.rs b/zebra-chain/src/orchard.rs index be96644c8c9..55de746336d 100644 --- a/zebra-chain/src/orchard.rs +++ b/zebra-chain/src/orchard.rs @@ -6,6 +6,7 @@ mod action; mod address; mod commitment; mod note; +mod orchard_flavor_ext; mod sinsemilla; #[cfg(any(test, feature = "proptest-impl"))] @@ -23,3 +24,7 @@ pub use commitment::{CommitmentRandomness, NoteCommitment, ValueCommitment}; pub use keys::Diversifier; pub use note::{EncryptedNote, Note, Nullifier, WrappedNoteKey}; pub use shielded_data::{AuthorizedAction, Flags, ShieldedData}; + +pub(crate) use crate::orchard_zsa::issuance::IssueData; +pub(crate) use orchard_flavor_ext::{OrchardFlavorExt, OrchardVanilla, OrchardZSA}; +pub(crate) use shielded_data::ActionCommon; diff --git a/zebra-chain/src/orchard/action.rs b/zebra-chain/src/orchard/action.rs index ae7690def7a..c8161246efb 100644 --- a/zebra-chain/src/orchard/action.rs +++ b/zebra-chain/src/orchard/action.rs @@ -11,6 +11,7 @@ use super::{ commitment::{self, ValueCommitment}, keys, note::{self, Nullifier}, + OrchardFlavorExt, }; /// An Action description, as described in the [Zcash specification §7.3][actiondesc]. @@ -21,7 +22,7 @@ use super::{ /// /// [actiondesc]: https://zips.z.cash/protocol/nu5.pdf#actiondesc #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] -pub struct Action { +pub struct Action { /// A value commitment to net value of the input note minus the output note pub cv: commitment::ValueCommitment, /// The nullifier of the input note being spent. @@ -35,14 +36,14 @@ pub struct Action { /// encrypted private key in `out_ciphertext`. pub ephemeral_key: keys::EphemeralPublicKey, /// A ciphertext component for the encrypted output note. - pub enc_ciphertext: note::EncryptedNote, + pub enc_ciphertext: V::EncryptedNote, /// A ciphertext component that allows the holder of a full viewing key to /// recover the recipient diversified transmission key and the ephemeral /// private key (and therefore the entire note plaintext). pub out_ciphertext: note::WrappedNoteKey, } -impl ZcashSerialize for Action { +impl ZcashSerialize for Action { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { self.cv.zcash_serialize(&mut writer)?; writer.write_all(&<[u8; 32]>::from(self.nullifier)[..])?; @@ -55,7 +56,7 @@ impl ZcashSerialize for Action { } } -impl ZcashDeserialize for Action { +impl ZcashDeserialize for Action { fn zcash_deserialize(mut reader: R) -> Result { // # Consensus // @@ -93,7 +94,7 @@ impl ZcashDeserialize for Action { // https://zips.z.cash/protocol/protocol.pdf#concretesym but fixed to // 580 bytes in https://zips.z.cash/protocol/protocol.pdf#outputencodingandconsensus // See [`note::EncryptedNote::zcash_deserialize`]. - enc_ciphertext: note::EncryptedNote::zcash_deserialize(&mut reader)?, + enc_ciphertext: V::EncryptedNote::zcash_deserialize(&mut reader)?, // Type is `Sym.C`, i.e. `𝔹^Y^{\[N\]}`, i.e. arbitrary-sized byte arrays // https://zips.z.cash/protocol/protocol.pdf#concretesym but fixed to // 80 bytes in https://zips.z.cash/protocol/protocol.pdf#outputencodingandconsensus diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index b27ffbc53a1..f245e47ca7c 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -1,7 +1,5 @@ //! Encrypted parts of Orchard notes. -// FIXME: make it a generic and add support for OrchardZSA (encrypted tote size ofr it is not 580!) - use std::{fmt, io}; use serde_big_array::BigArray; @@ -12,20 +10,20 @@ use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize} /// /// Corresponds to the Orchard 'encCiphertext's #[derive(Deserialize, Serialize)] -pub struct EncryptedNote(#[serde(with = "BigArray")] pub(crate) [u8; 580]); +pub struct EncryptedNote(#[serde(with = "BigArray")] pub(crate) [u8; N]); // These impls all only exist because of array length restrictions. // TODO: use const generics https://github.com/ZcashFoundation/zebra/issues/2042 -impl Copy for EncryptedNote {} +impl Copy for EncryptedNote {} -impl Clone for EncryptedNote { +impl Clone for EncryptedNote { fn clone(&self) -> Self { *self } } -impl fmt::Debug for EncryptedNote { +impl fmt::Debug for EncryptedNote { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_tuple("EncryptedNote") .field(&hex::encode(&self.0[..])) @@ -33,36 +31,36 @@ impl fmt::Debug for EncryptedNote { } } -impl Eq for EncryptedNote {} +impl Eq for EncryptedNote {} -impl From<[u8; 580]> for EncryptedNote { - fn from(bytes: [u8; 580]) -> Self { +impl From<[u8; N]> for EncryptedNote { + fn from(bytes: [u8; N]) -> Self { EncryptedNote(bytes) } } -impl From for [u8; 580] { - fn from(enc_ciphertext: EncryptedNote) -> Self { +impl From> for [u8; N] { + fn from(enc_ciphertext: EncryptedNote) -> Self { enc_ciphertext.0 } } -impl PartialEq for EncryptedNote { +impl PartialEq for EncryptedNote { fn eq(&self, other: &Self) -> bool { self.0[..] == other.0[..] } } -impl ZcashSerialize for EncryptedNote { +impl ZcashSerialize for EncryptedNote { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { writer.write_all(&self.0[..])?; Ok(()) } } -impl ZcashDeserialize for EncryptedNote { +impl ZcashDeserialize for EncryptedNote { fn zcash_deserialize(mut reader: R) -> Result { - let mut bytes = [0; 580]; + let mut bytes = [0; N]; reader.read_exact(&mut bytes[..])?; Ok(Self(bytes)) } @@ -133,7 +131,7 @@ use proptest::prelude::*; proptest! { #[test] - fn encrypted_ciphertext_roundtrip(ec in any::()) { + fn encrypted_ciphertext_roundtrip(ec in any::>()) { let _init_guard = zebra_test::init(); let mut data = Vec::new(); diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index 5347919cd01..df09023fe5a 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -20,9 +20,17 @@ use crate::{ }, }; +use super::OrchardFlavorExt; + +#[cfg(not(feature = "tx-v6"))] +use super::OrchardVanilla; + +#[cfg(feature = "tx-v6")] +use super::OrchardZSA; + /// A bundle of [`Action`] descriptions and signature data. #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] -pub struct ShieldedData { +pub struct ShieldedData { /// The orchard flags for this transaction. /// Denoted as `flagsOrchard` in the spec. pub flags: Flags, @@ -37,13 +45,18 @@ pub struct ShieldedData { pub proof: Halo2Proof, /// The Orchard Actions, in the order they appear in the transaction. /// Denoted as `vActionsOrchard` and `vSpendAuthSigsOrchard` in the spec. - pub actions: AtLeastOne, + pub actions: AtLeastOne>, /// A signature on the transaction `sighash`. /// Denoted as `bindingSigOrchard` in the spec. pub binding_sig: Signature, + + #[cfg(feature = "tx-v6")] + /// Assets intended for burning + /// Denoted as `vAssetBurn` in the spec (ZIP 230). + pub burn: V::BurnType, } -impl fmt::Display for ShieldedData { +impl fmt::Display for ShieldedData { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let mut fmter = f.debug_struct("orchard::ShieldedData"); @@ -59,13 +72,18 @@ impl fmt::Display for ShieldedData { } } -impl ShieldedData { +impl ShieldedData { /// Iterate over the [`Action`]s for the [`AuthorizedAction`]s in this /// transaction, in the order they appear in it. - pub fn actions(&self) -> impl Iterator { + pub fn actions(&self) -> impl Iterator> { self.actions.actions() } + // FIXME: add a doc comment + pub fn action_commons(&self) -> impl Iterator + '_ { + self.actions.actions().map(|action| action.into()) + } + /// Collect the [`Nullifier`]s for this transaction. pub fn nullifiers(&self) -> impl Iterator { self.actions().map(|action| &action.nullifier) @@ -119,9 +137,9 @@ impl ShieldedData { } } -impl AtLeastOne { +impl AtLeastOne> { /// Iterate over the [`Action`]s of each [`AuthorizedAction`]. - pub fn actions(&self) -> impl Iterator { + pub fn actions(&self) -> impl Iterator> { self.iter() .map(|authorized_action| &authorized_action.action) } @@ -131,23 +149,64 @@ impl AtLeastOne { /// /// Every authorized Orchard `Action` must have a corresponding `SpendAuth` signature. #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] -pub struct AuthorizedAction { +pub struct AuthorizedAction { /// The action description of this Action. - pub action: Action, + pub action: Action, /// The spend signature. pub spend_auth_sig: Signature, } -impl AuthorizedAction { +impl AuthorizedAction { + /// The size of a single Action + /// + /// Actions are 5 * 32 + ENCRYPTED_NOTE_SIZE + 80 bytes so the total size of each Action is 820 bytes. + /// [7.5 Action Description Encoding and Consensus][ps] + /// + /// [ps]: + pub const ACTION_SIZE: u64 = 5 * 32 + (V::ENCRYPTED_NOTE_SIZE as u64) + 80; + + /// The size of a single `Signature`. + /// + /// Each Signature is 64 bytes. + /// [7.1 Transaction Encoding and Consensus][ps] + /// + /// [ps]: + pub const SPEND_AUTH_SIG_SIZE: u64 = 64; + + /// The size of a single AuthorizedAction + /// + /// Each serialized `Action` has a corresponding `Signature`. + pub const AUTHORIZED_ACTION_SIZE: u64 = Self::ACTION_SIZE + Self::SPEND_AUTH_SIG_SIZE; + + /// The maximum number of actions in the transaction. + // Since a serialized Vec uses at least one byte for its length, + // and the signature is required, + // a valid max allocation can never exceed this size + pub const ACTION_MAX_ALLOCATION: u64 = (MAX_BLOCK_BYTES - 1) / Self::AUTHORIZED_ACTION_SIZE; + + // To be but we ensure ACTION_MAX_ALLOCATION is less than 2^16 on compile time + // (this is a workaround, as static_assertions::const_assert! doesn't work for generics, + // see TrustedPreallocate for Action) + const _ACTION_MAX_ALLOCATION_OK: u64 = (1 << 16) - Self::ACTION_MAX_ALLOCATION; + /* FIXME: remove this + const ACTION_MAX_ALLOCATION_OK: () = assert!( + Self::ACTION_MAX_ALLOCATION < 1, //(1 << 16), + "must be less than 2^16" + ); + */ + /// Split out the action and the signature for V5 transaction /// serialization. - pub fn into_parts(self) -> (Action, Signature) { + pub fn into_parts(self) -> (Action, Signature) { (self.action, self.spend_auth_sig) } // Combine the action and the spend auth sig from V5 transaction /// deserialization. - pub fn from_parts(action: Action, spend_auth_sig: Signature) -> AuthorizedAction { + pub fn from_parts( + action: Action, + spend_auth_sig: Signature, + ) -> AuthorizedAction { AuthorizedAction { action, spend_auth_sig, @@ -155,38 +214,48 @@ impl AuthorizedAction { } } -/// The size of a single Action -/// -/// Actions are 5 * 32 + 580 + 80 bytes so the total size of each Action is 820 bytes. -/// [7.5 Action Description Encoding and Consensus][ps] -/// -/// [ps]: -pub const ACTION_SIZE: u64 = 5 * 32 + 580 + 80; +// TODO: FIXME: Consider moving it to transaction.rs as it's not used here. Or move its usage here from transaction.rs. +/// A struct that contains values of several fields of an `Action` struct. +/// Those fields are used in other parts of the code that call the `orchard_actions()` method of the `Transaction`. +/// The goal of using `ActionCommon` is that it's not a generic, unlike `Action`, so it can be returned from Transaction methods +/// (the fields of `ActionCommon` do not depend on the generic parameter `Version` of `Action`). +pub struct ActionCommon { + /// A reference to the value commitment to the net value of the input note minus the output note. + pub cv: super::commitment::ValueCommitment, + /// A reference to the nullifier of the input note being spent. + pub nullifier: super::note::Nullifier, + /// A reference to the randomized validating key for `spendAuthSig`. + pub rk: reddsa::VerificationKeyBytes, + /// A reference to the x-coordinate of the note commitment for the output note. + pub cm_x: pallas::Base, +} -/// The size of a single `Signature`. -/// -/// Each Signature is 64 bytes. -/// [7.1 Transaction Encoding and Consensus][ps] -/// -/// [ps]: -pub const SPEND_AUTH_SIG_SIZE: u64 = 64; +impl From<&Action> for ActionCommon { + fn from(action: &Action) -> Self { + Self { + cv: action.cv, + nullifier: action.nullifier, + rk: action.rk, + cm_x: action.cm_x, + } + } +} -/// The size of a single AuthorizedAction -/// -/// Each serialized `Action` has a corresponding `Signature`. -pub const AUTHORIZED_ACTION_SIZE: u64 = ACTION_SIZE + SPEND_AUTH_SIG_SIZE; +/* +struct AssertBlockSizeLimit; + +impl AssertBlockSizeLimit { + const OK: () = assert!(N < (1 << 16), "must be less than 2^16"); +} +*/ /// The maximum number of orchard actions in a valid Zcash on-chain transaction V5. /// /// If a transaction contains more actions than can fit in maximally large block, it might be /// valid on the network and in the mempool, but it can never be mined into a block. So /// rejecting these large edge-case transactions can never break consensus. -impl TrustedPreallocate for Action { +impl TrustedPreallocate for Action { fn max_allocation() -> u64 { - // Since a serialized Vec uses at least one byte for its length, - // and the signature is required, - // a valid max allocation can never exceed this size - const MAX: u64 = (MAX_BLOCK_BYTES - 1) / AUTHORIZED_ACTION_SIZE; // # Consensus // // > [NU5 onward] nSpendsSapling, nOutputsSapling, and nActionsOrchard MUST all be less than 2^16. @@ -196,15 +265,28 @@ impl TrustedPreallocate for Action { // This acts as nActionsOrchard and is therefore subject to the rule. // The maximum value is actually smaller due to the block size limit, // but we ensure the 2^16 limit with a static assertion. - static_assertions::const_assert!(MAX < (1 << 16)); - MAX + // + // TODO: FIXME: find a better way to use static check (see https://github.com/nvzqz/static-assertions/issues/40, + // https://users.rust-lang.org/t/how-do-i-static-assert-a-property-of-a-generic-u32-parameter/76307)? + // The following expression doesn't work for generics, so a workaround with _ACTION_MAX_ALLOCATION_OK in + // AuthorizedAction impl is used instead: + // static_assertions::const_assert!(AuthorizedAction::::ACTION_MAX_ALLOCATION < (1 << 16)); + AuthorizedAction::::ACTION_MAX_ALLOCATION } } impl TrustedPreallocate for Signature { fn max_allocation() -> u64 { // Each signature must have a corresponding action. - Action::max_allocation() + #[cfg(not(feature = "tx-v6"))] + let result = Action::::max_allocation(); + + // TODO: FIXME: Check this: V6 is used as it provides the max size of the action. + // So it's used even for V5 - is this correct? + #[cfg(feature = "tx-v6")] + let result = Action::::max_allocation(); + + result } } diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index ada329140f1..9dbc8a8e39b 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -53,6 +53,56 @@ use crate::{ value_balance::{ValueBalance, ValueBalanceError}, }; +// FIXME: doc this +macro_rules! shielded_data_iter { + ($self:expr, $mapper:expr) => { + match $self { + // Maybe Orchard shielded data + Transaction::V5 { + orchard_shielded_data, + .. + } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), + + // FIXME: process V6 properly? + Transaction::V6 { + orchard_shielded_data, + .. + } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), + + // No Orchard shielded data + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => Box::new(std::iter::empty()), + } + }; +} + +// FIXME: doc this +macro_rules! shielded_data_field { + ($self:expr, $field:ident) => { + match $self { + // Maybe Orchard shielded data + Transaction::V5 { + orchard_shielded_data, + .. + } => orchard_shielded_data.as_ref().map(|data| data.$field), + + // FIXME: process V6 properly? + Transaction::V6 { + orchard_shielded_data, + .. + } => orchard_shielded_data.as_ref().map(|data| data.$field), + + // No Orchard shielded data + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => None, + } + }; +} + /// A Zcash transaction. /// /// A transaction is an encoded data structure that facilitates the transfer of @@ -140,7 +190,7 @@ pub enum Transaction { /// The sapling shielded data for this transaction, if any. sapling_shielded_data: Option>, /// The orchard data for this transaction, if any. - orchard_shielded_data: Option, + orchard_shielded_data: Option>, }, // FIXME: implement V6 properly (now it's just a coipy of V5) /// A `version = 6` transaction , which supports Orchard ZSA, Orchard Vanille, Sapling and @@ -161,8 +211,10 @@ pub enum Transaction { outputs: Vec, /// The sapling shielded data for this transaction, if any. sapling_shielded_data: Option>, - /// The orchard data for this transaction, if any. - orchard_shielded_data: Option, + /// The ZSA orchard shielded data for this transaction, if any. + orchard_shielded_data: Option>, + /// The ZSA issuance data for this transaction, if any. + orchard_zsa_issue_data: Option, }, } @@ -1017,96 +1069,52 @@ impl Transaction { // orchard - /// Access the [`orchard::ShieldedData`] in this transaction, - /// regardless of version. - pub fn orchard_shielded_data(&self) -> Option<&orchard::ShieldedData> { - match self { - // Maybe Orchard shielded data - Transaction::V5 { - orchard_shielded_data, - .. - } => orchard_shielded_data.as_ref(), - - // FIXME: Support V6/OrchardZSA propetly. - Transaction::V6 { - orchard_shielded_data, - .. - } => orchard_shielded_data.as_ref(), - - // No Orchard shielded data - Transaction::V1 { .. } - | Transaction::V2 { .. } - | Transaction::V3 { .. } - | Transaction::V4 { .. } => None, - } - } - - /// Modify the [`orchard::ShieldedData`] in this transaction, - /// regardless of version. - #[cfg(any(test, feature = "proptest-impl"))] - pub fn orchard_shielded_data_mut(&mut self) -> Option<&mut orchard::ShieldedData> { - match self { - Transaction::V5 { - orchard_shielded_data: Some(orchard_shielded_data), - .. - } => Some(orchard_shielded_data), - - // FIXME: Support V6/OrchardZSA propetly. - Transaction::V6 { - orchard_shielded_data: Some(orchard_shielded_data), - .. - } => Some(orchard_shielded_data), - - Transaction::V1 { .. } - | Transaction::V2 { .. } - | Transaction::V3 { .. } - | Transaction::V4 { .. } - | Transaction::V5 { - orchard_shielded_data: None, - .. - } - | Transaction::V6 { - orchard_shielded_data: None, - .. - } => None, - } - } - /// Iterate over the [`orchard::Action`]s in this transaction, if there are any, /// regardless of version. - pub fn orchard_actions(&self) -> impl Iterator { - self.orchard_shielded_data() - .into_iter() - .flat_map(orchard::ShieldedData::actions) + pub fn orchard_actions(&self) -> Box + '_> { + shielded_data_iter!(self, orchard::ShieldedData::action_commons) } /// Access the [`orchard::Nullifier`]s in this transaction, if there are any, /// regardless of version. - pub fn orchard_nullifiers(&self) -> impl Iterator { - self.orchard_shielded_data() - .into_iter() - .flat_map(orchard::ShieldedData::nullifiers) + pub fn orchard_nullifiers(&self) -> Box + '_> { + shielded_data_iter!(self, orchard::ShieldedData::nullifiers) } /// Access the note commitments in this transaction, if there are any, /// regardless of version. - pub fn orchard_note_commitments(&self) -> impl Iterator { - self.orchard_shielded_data() - .into_iter() - .flat_map(orchard::ShieldedData::note_commitments) + pub fn orchard_note_commitments(&self) -> Box + '_> { + shielded_data_iter!(self, orchard::ShieldedData::note_commitments) } /// Access the [`orchard::Flags`] in this transaction, if there is any, /// regardless of version. pub fn orchard_flags(&self) -> Option { - self.orchard_shielded_data() - .map(|orchard_shielded_data| orchard_shielded_data.flags) + shielded_data_field!(self, flags) } /// Return if the transaction has any Orchard shielded data, /// regardless of version. pub fn has_orchard_shielded_data(&self) -> bool { - self.orchard_shielded_data().is_some() + match self { + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => false, + Transaction::V5 { + orchard_shielded_data, + .. + } => orchard_shielded_data.is_some(), + Transaction::V6 { + orchard_shielded_data, + .. + } => orchard_shielded_data.is_some(), + } + } + + // FIXME: add doc + pub fn orchard_shared_anchor(&self) -> Option { + shielded_data_field!(self, shared_anchor) } // value balances @@ -1501,10 +1509,8 @@ impl Transaction { /// /// pub fn orchard_value_balance(&self) -> ValueBalance { - let orchard_value_balance = self - .orchard_shielded_data() - .map(|shielded_data| shielded_data.value_balance) - .unwrap_or_else(Amount::zero); + let orchard_value_balance = + shielded_data_field!(self, value_balance).unwrap_or_else(Amount::zero); ValueBalance::from_orchard_amount(orchard_value_balance) } @@ -1515,8 +1521,30 @@ impl Transaction { /// See `orchard_value_balance` for details. #[cfg(any(test, feature = "proptest-impl"))] pub fn orchard_value_balance_mut(&mut self) -> Option<&mut Amount> { - self.orchard_shielded_data_mut() - .map(|shielded_data| &mut shielded_data.value_balance) + match self { + Transaction::V5 { + orchard_shielded_data: Some(orchard_shielded_data), + .. + } => Some(&mut orchard_shielded_data.value_balance), + + Transaction::V6 { + orchard_shielded_data: Some(orchard_shielded_data), + .. + } => Some(&mut orchard_shielded_data.value_balance), + + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } + | Transaction::V5 { + orchard_shielded_data: None, + .. + } + | Transaction::V6 { + orchard_shielded_data: None, + .. + } => None, + } } /// Returns the value balances for this transaction using the provided transparent outputs. diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index f37698d6118..00464e1d320 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -11,6 +11,7 @@ use reddsa::{orchard::Binding, orchard::SpendAuth, Signature}; use crate::{ amount, block::MAX_BLOCK_BYTES, + orchard::OrchardFlavorExt, parameters::{ OVERWINTER_VERSION_GROUP_ID, SAPLING_VERSION_GROUP_ID, TX_V5_VERSION_GROUP_ID, TX_V6_VERSION_GROUP_ID, @@ -326,7 +327,7 @@ impl ZcashDeserialize for Option> { } } -impl ZcashSerialize for Option { +impl ZcashSerialize for Option> { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { match self { None => { @@ -342,14 +343,15 @@ impl ZcashSerialize for Option { orchard_shielded_data.zcash_serialize(&mut writer)?; } } + Ok(()) } } -impl ZcashSerialize for orchard::ShieldedData { +impl ZcashSerialize for orchard::ShieldedData { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { // Split the AuthorizedAction - let (actions, sigs): (Vec, Vec>) = self + let (actions, sigs): (Vec>, Vec>) = self .actions .iter() .cloned() @@ -377,16 +379,20 @@ impl ZcashSerialize for orchard::ShieldedData { // Denoted as `bindingSigOrchard` in the spec. self.binding_sig.zcash_serialize(&mut writer)?; + #[cfg(feature = "tx-v6")] + // Denoted as `vAssetBurn` in the spec (ZIP 230). + self.burn.zcash_serialize(&mut writer)?; + Ok(()) } } // we can't split ShieldedData out of Option deserialization, // because the counts are read along with the arrays. -impl ZcashDeserialize for Option { +impl ZcashDeserialize for Option> { fn zcash_deserialize(mut reader: R) -> Result { // Denoted as `nActionsOrchard` and `vActionsOrchard` in the spec. - let actions: Vec = (&mut reader).zcash_deserialize_into()?; + let actions: Vec> = (&mut reader).zcash_deserialize_into()?; // "The fields flagsOrchard, valueBalanceOrchard, anchorOrchard, sizeProofsOrchard, // proofsOrchard , and bindingSigOrchard are present if and only if nActionsOrchard > 0." @@ -432,7 +438,7 @@ impl ZcashDeserialize for Option { let binding_sig: Signature = (&mut reader).zcash_deserialize_into()?; // Create the AuthorizedAction from deserialized parts - let authorized_actions: Vec = actions + let authorized_actions: Vec> = actions .into_iter() .zip(sigs) .map(|(action, spend_auth_sig)| { @@ -440,11 +446,17 @@ impl ZcashDeserialize for Option { }) .collect(); - let actions: AtLeastOne = authorized_actions.try_into()?; + let actions: AtLeastOne> = authorized_actions.try_into()?; - Ok(Some(orchard::ShieldedData { + // TODO: FIXME: add a proper comment + #[cfg(feature = "tx-v6")] + let burn = (&mut reader).zcash_deserialize_into()?; + + Ok(Some(orchard::ShieldedData:: { flags, value_balance, + #[cfg(feature = "tx-v6")] + burn, shared_anchor, proof, actions, @@ -677,7 +689,6 @@ impl ZcashSerialize for Transaction { orchard_shielded_data.zcash_serialize(&mut writer)?; } - // FIXME: implement a proper serialization for V6 Transaction::V6 { network_upgrade, lock_time, @@ -686,9 +697,11 @@ impl ZcashSerialize for Transaction { outputs, sapling_shielded_data, orchard_shielded_data, + orchard_zsa_issue_data, } => { + // FIXME: fix spec or use another link as the current version of the PDF + // doesn't contain V6 description. // Transaction V6 spec: - // FIXME: specify a proper ref // https://zips.z.cash/protocol/protocol.pdf#txnencoding // Denoted as `nVersionGroupId` in the spec. @@ -723,6 +736,9 @@ impl ZcashSerialize for Transaction { // `flagsOrchard`,`valueBalanceOrchard`, `anchorOrchard`, `sizeProofsOrchard`, // `proofsOrchard`, `vSpendAuthSigsOrchard`, and `bindingSigOrchard`. orchard_shielded_data.zcash_serialize(&mut writer)?; + + // TODO: FIXME: add ref to spec + orchard_zsa_issue_data.zcash_serialize(&mut writer)?; } } Ok(()) @@ -982,8 +998,9 @@ impl ZcashDeserialize for Transaction { } // FIXME: implement a proper deserialization for V6 (6, true) => { + // FIXME: fix spec or use another link as the current version of the PDF + // doesn't contain V6 description. // Transaction V6 spec: - // FIXME: specify a proper ref // https://zips.z.cash/protocol/protocol.pdf#txnencoding // Denoted as `nVersionGroupId` in the spec. @@ -1024,6 +1041,9 @@ impl ZcashDeserialize for Transaction { // `proofsOrchard`, `vSpendAuthSigsOrchard`, and `bindingSigOrchard`. let orchard_shielded_data = (&mut limited_reader).zcash_deserialize_into()?; + // TODO: FIXME: add ref to spec + let orchard_zsa_issue_data = (&mut limited_reader).zcash_deserialize_into()?; + Ok(Transaction::V6 { network_upgrade, lock_time, @@ -1032,6 +1052,7 @@ impl ZcashDeserialize for Transaction { outputs, sapling_shielded_data, orchard_shielded_data, + orchard_zsa_issue_data, }) } (_, _) => Err(SerializationError::Parse("bad tx header")), @@ -1081,6 +1102,11 @@ pub const MIN_TRANSPARENT_TX_V4_SIZE: u64 = MIN_TRANSPARENT_TX_SIZE + 4; /// v5 transactions also have an expiry height and a consensus branch ID. pub const MIN_TRANSPARENT_TX_V5_SIZE: u64 = MIN_TRANSPARENT_TX_SIZE + 4 + 4; +/// The minimum transaction size for v6 transactions. +/// +/// FIXME: specify a proper value and description. +pub const MIN_TRANSPARENT_TX_V6_SIZE: u64 = MIN_TRANSPARENT_TX_V5_SIZE; + /// No valid Zcash message contains more transactions than can fit in a single block /// /// `tx` messages contain a single transaction, and `block` messages are limited to the maximum From e98bb67fc2c36d430ed300c7182446c0b93d46a0 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 18 Sep 2024 11:38:19 +0200 Subject: [PATCH 019/230] Fix compilation errors for unit tests --- zebra-chain/src/orchard.rs | 2 +- zebra-chain/src/orchard/arbitrary.rs | 11 +-- zebra-chain/src/orchard/note/arbitrary.rs | 6 +- zebra-chain/src/orchard/note/ciphertexts.rs | 2 +- zebra-chain/src/orchard/shielded_data.rs | 2 +- zebra-chain/src/orchard/tests/preallocate.rs | 21 +++--- zebra-chain/src/transaction.rs | 70 ++++++++----------- zebra-chain/src/transaction/arbitrary.rs | 20 ++++-- zebra-chain/src/transaction/serialize.rs | 4 +- zebra-consensus/src/primitives/halo2.rs | 10 +-- zebra-consensus/src/primitives/halo2/tests.rs | 36 +++++----- zebra-consensus/src/transaction.rs | 18 ++--- zebra-consensus/src/transaction/check.rs | 4 +- zebra-consensus/src/transaction/tests.rs | 6 +- zebra-state/src/service/check/anchors.rs | 16 ++--- .../finalized_state/zebra_db/arbitrary.rs | 4 +- .../src/service/non_finalized_state/chain.rs | 16 +++-- .../components/mempool/storage/tests/prop.rs | 20 ++++-- 18 files changed, 136 insertions(+), 132 deletions(-) diff --git a/zebra-chain/src/orchard.rs b/zebra-chain/src/orchard.rs index 55de746336d..1eff5f2a3c6 100644 --- a/zebra-chain/src/orchard.rs +++ b/zebra-chain/src/orchard.rs @@ -23,8 +23,8 @@ pub use address::Address; pub use commitment::{CommitmentRandomness, NoteCommitment, ValueCommitment}; pub use keys::Diversifier; pub use note::{EncryptedNote, Note, Nullifier, WrappedNoteKey}; +pub use orchard_flavor_ext::{OrchardFlavorExt, OrchardVanilla, OrchardZSA}; pub use shielded_data::{AuthorizedAction, Flags, ShieldedData}; pub(crate) use crate::orchard_zsa::issuance::IssueData; -pub(crate) use orchard_flavor_ext::{OrchardFlavorExt, OrchardVanilla, OrchardZSA}; pub(crate) use shielded_data::ActionCommon; diff --git a/zebra-chain/src/orchard/arbitrary.rs b/zebra-chain/src/orchard/arbitrary.rs index 7a6544606f8..54572085f11 100644 --- a/zebra-chain/src/orchard/arbitrary.rs +++ b/zebra-chain/src/orchard/arbitrary.rs @@ -10,17 +10,18 @@ use reddsa::{orchard::SpendAuth, Signature, SigningKey, VerificationKey, Verific use proptest::{array, collection::vec, prelude::*}; use super::{ - keys::*, note, tree, Action, AuthorizedAction, Flags, NoteCommitment, ValueCommitment, + keys::*, note, tree, Action, AuthorizedAction, Flags, NoteCommitment, OrchardFlavorExt, + OrchardVanilla, ValueCommitment, }; -impl Arbitrary for Action { +impl Arbitrary for Action { type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { ( any::(), any::(), - any::(), + any::>(), any::(), ) .prop_map(|(nullifier, rk, enc_ciphertext, out_ciphertext)| Self { @@ -54,11 +55,11 @@ impl Arbitrary for note::Nullifier { type Strategy = BoxedStrategy; } -impl Arbitrary for AuthorizedAction { +impl Arbitrary for AuthorizedAction { type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - (any::(), any::()) + (any::>(), any::()) .prop_map(|(action, spend_auth_sig)| Self { action, spend_auth_sig: spend_auth_sig.0, diff --git a/zebra-chain/src/orchard/note/arbitrary.rs b/zebra-chain/src/orchard/note/arbitrary.rs index e9365de80c1..7968877d9bd 100644 --- a/zebra-chain/src/orchard/note/arbitrary.rs +++ b/zebra-chain/src/orchard/note/arbitrary.rs @@ -2,13 +2,13 @@ use proptest::{collection::vec, prelude::*}; use super::*; -impl Arbitrary for EncryptedNote { +impl Arbitrary for EncryptedNote { type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - (vec(any::(), 580)) + (vec(any::(), N)) .prop_map(|v| { - let mut bytes = [0; 580]; + let mut bytes = [0; N]; bytes.copy_from_slice(v.as_slice()); Self(bytes) }) diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index f245e47ca7c..3cd1300847c 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -131,7 +131,7 @@ use proptest::prelude::*; proptest! { #[test] - fn encrypted_ciphertext_roundtrip(ec in any::>()) { + fn encrypted_ciphertext_roundtrip(ec in any::>()) { let _init_guard = zebra_test::init(); let mut data = Vec::new(); diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index df09023fe5a..baf98da8c42 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -79,7 +79,7 @@ impl ShieldedData { self.actions.actions() } - // FIXME: add a doc comment + /// FIXME: add a doc comment pub fn action_commons(&self) -> impl Iterator + '_ { self.actions.actions().map(|action| action.into()) } diff --git a/zebra-chain/src/orchard/tests/preallocate.rs b/zebra-chain/src/orchard/tests/preallocate.rs index 79f6a16e7d9..6b1fadfce29 100644 --- a/zebra-chain/src/orchard/tests/preallocate.rs +++ b/zebra-chain/src/orchard/tests/preallocate.rs @@ -4,10 +4,7 @@ use reddsa::{orchard::SpendAuth, Signature}; use crate::{ block::MAX_BLOCK_BYTES, - orchard::{ - shielded_data::{ACTION_SIZE, AUTHORIZED_ACTION_SIZE}, - Action, AuthorizedAction, - }, + orchard::{Action, AuthorizedAction, OrchardVanilla}, serialization::{arbitrary::max_allocation_is_big_enough, TrustedPreallocate, ZcashSerialize}, }; @@ -17,16 +14,16 @@ proptest! { /// Confirm that each `AuthorizedAction` takes exactly AUTHORIZED_ACTION_SIZE /// bytes when serialized. #[test] - fn authorized_action_size_is_small_enough(authorized_action in ::arbitrary_with(())) { + fn authorized_action_size_is_small_enough(authorized_action in >::arbitrary_with(())) { let (action, spend_auth_sig) = authorized_action.into_parts(); let mut serialized_len = action.zcash_serialize_to_vec().expect("Serialization to vec must succeed").len(); serialized_len += spend_auth_sig.zcash_serialize_to_vec().expect("Serialization to vec must succeed").len(); - prop_assert!(serialized_len as u64 == AUTHORIZED_ACTION_SIZE) + prop_assert!(serialized_len as u64 == AuthorizedAction::::AUTHORIZED_ACTION_SIZE) } /// Verify trusted preallocation for `AuthorizedAction` and its split fields #[test] - fn authorized_action_max_allocation_is_big_enough(authorized_action in ::arbitrary_with(())) { + fn authorized_action_max_allocation_is_big_enough(authorized_action in >::arbitrary_with(())) { let (action, spend_auth_sig) = authorized_action.into_parts(); let ( @@ -37,12 +34,14 @@ proptest! { ) = max_allocation_is_big_enough(action); // Calculate the actual size of all required Action fields - prop_assert!((smallest_disallowed_serialized_len as u64)/ACTION_SIZE*AUTHORIZED_ACTION_SIZE >= MAX_BLOCK_BYTES); - prop_assert!((largest_allowed_serialized_len as u64)/ACTION_SIZE*AUTHORIZED_ACTION_SIZE <= MAX_BLOCK_BYTES); + prop_assert!((smallest_disallowed_serialized_len as u64)/AuthorizedAction::::ACTION_SIZE* + AuthorizedAction::::AUTHORIZED_ACTION_SIZE >= MAX_BLOCK_BYTES); + prop_assert!((largest_allowed_serialized_len as u64)/AuthorizedAction::::ACTION_SIZE* + AuthorizedAction::::AUTHORIZED_ACTION_SIZE <= MAX_BLOCK_BYTES); // Check the serialization limits for `Action` - prop_assert!(((smallest_disallowed_vec_len - 1) as u64) == Action::max_allocation()); - prop_assert!((largest_allowed_vec_len as u64) == Action::max_allocation()); + prop_assert!(((smallest_disallowed_vec_len - 1) as u64) == Action::::max_allocation()); + prop_assert!((largest_allowed_vec_len as u64) == Action::::max_allocation()); prop_assert!((largest_allowed_serialized_len as u64) <= MAX_BLOCK_BYTES); let ( diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 9dbc8a8e39b..49e8fdbe33c 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -54,51 +54,49 @@ use crate::{ }; // FIXME: doc this -macro_rules! shielded_data_iter { +// Move down +macro_rules! orchard_shielded_data_iter { ($self:expr, $mapper:expr) => { match $self { - // Maybe Orchard shielded data + // No Orchard shielded data + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => Box::new(std::iter::empty()), + Transaction::V5 { orchard_shielded_data, .. } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), - // FIXME: process V6 properly? Transaction::V6 { orchard_shielded_data, .. } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), - - // No Orchard shielded data - Transaction::V1 { .. } - | Transaction::V2 { .. } - | Transaction::V3 { .. } - | Transaction::V4 { .. } => Box::new(std::iter::empty()), } }; } // FIXME: doc this -macro_rules! shielded_data_field { +// Move down +macro_rules! orchard_shielded_data_field { ($self:expr, $field:ident) => { match $self { - // Maybe Orchard shielded data + // No Orchard shielded data + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => None, + Transaction::V5 { orchard_shielded_data, .. } => orchard_shielded_data.as_ref().map(|data| data.$field), - // FIXME: process V6 properly? Transaction::V6 { orchard_shielded_data, .. } => orchard_shielded_data.as_ref().map(|data| data.$field), - - // No Orchard shielded data - Transaction::V1 { .. } - | Transaction::V2 { .. } - | Transaction::V3 { .. } - | Transaction::V4 { .. } => None, } }; } @@ -1072,49 +1070,37 @@ impl Transaction { /// Iterate over the [`orchard::Action`]s in this transaction, if there are any, /// regardless of version. pub fn orchard_actions(&self) -> Box + '_> { - shielded_data_iter!(self, orchard::ShieldedData::action_commons) + orchard_shielded_data_iter!(self, orchard::ShieldedData::action_commons) } /// Access the [`orchard::Nullifier`]s in this transaction, if there are any, /// regardless of version. pub fn orchard_nullifiers(&self) -> Box + '_> { - shielded_data_iter!(self, orchard::ShieldedData::nullifiers) + orchard_shielded_data_iter!(self, orchard::ShieldedData::nullifiers) } /// Access the note commitments in this transaction, if there are any, /// regardless of version. pub fn orchard_note_commitments(&self) -> Box + '_> { - shielded_data_iter!(self, orchard::ShieldedData::note_commitments) + orchard_shielded_data_iter!(self, orchard::ShieldedData::note_commitments) } /// Access the [`orchard::Flags`] in this transaction, if there is any, /// regardless of version. pub fn orchard_flags(&self) -> Option { - shielded_data_field!(self, flags) + // FIXME: remove this line with_shielded_data!(self, |data: impl orchard::ShieldedDataCommon| data.flags) + orchard_shielded_data_field!(self, flags) + } + + // FIXME: add doc + pub fn orchard_shared_anchor(&self) -> Option { + orchard_shielded_data_field!(self, shared_anchor) } /// Return if the transaction has any Orchard shielded data, /// regardless of version. pub fn has_orchard_shielded_data(&self) -> bool { - match self { - Transaction::V1 { .. } - | Transaction::V2 { .. } - | Transaction::V3 { .. } - | Transaction::V4 { .. } => false, - Transaction::V5 { - orchard_shielded_data, - .. - } => orchard_shielded_data.is_some(), - Transaction::V6 { - orchard_shielded_data, - .. - } => orchard_shielded_data.is_some(), - } - } - - // FIXME: add doc - pub fn orchard_shared_anchor(&self) -> Option { - shielded_data_field!(self, shared_anchor) + self.orchard_flags().is_some() } // value balances @@ -1510,7 +1496,7 @@ impl Transaction { /// pub fn orchard_value_balance(&self) -> ValueBalance { let orchard_value_balance = - shielded_data_field!(self, value_balance).unwrap_or_else(Amount::zero); + orchard_shielded_data_field!(self, value_balance).unwrap_or_else(Amount::zero); ValueBalance::from_orchard_amount(orchard_value_balance) } diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 73aac10a23d..753c68d2fe0 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -141,7 +141,7 @@ impl Transaction { transparent::Input::vec_strategy(&ledger_state, MAX_ARBITRARY_ITEMS), vec(any::(), 0..MAX_ARBITRARY_ITEMS), option::of(any::>()), - option::of(any::()), + option::of(any::>()), ) .prop_map( move |( @@ -697,7 +697,7 @@ impl Arbitrary for sapling::TransferData { type Strategy = BoxedStrategy; } -impl Arbitrary for orchard::ShieldedData { +impl Arbitrary for orchard::ShieldedData { type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { @@ -707,7 +707,7 @@ impl Arbitrary for orchard::ShieldedData { any::(), any::(), vec( - any::(), + any::>(), 1..MAX_ARBITRARY_ITEMS, ), any::(), @@ -722,6 +722,7 @@ impl Arbitrary for orchard::ShieldedData { .try_into() .expect("arbitrary vector size range produces at least one action"), binding_sig: binding_sig.0, + burn: Default::default(), }, ) .boxed() @@ -923,7 +924,7 @@ pub fn transaction_to_fake_v5( outputs, lock_time, sapling_shielded_data, - orchard_shielded_data, + orchard_shielded_data: _, .. } => V5 { network_upgrade: block_nu, @@ -932,7 +933,10 @@ pub fn transaction_to_fake_v5( lock_time: *lock_time, expiry_height: height, sapling_shielded_data: sapling_shielded_data.clone(), - orchard_shielded_data: orchard_shielded_data.clone(), + // FIXME: is it possible to convert V6 shielded data to V5? + // FIXME: add another function for V6, like transaction_to_fake_v6? + //orchard_shielded_data: orchard_shielded_data.clone(), + orchard_shielded_data: None, }, } } @@ -1036,6 +1040,7 @@ pub fn transactions_from_blocks<'a>( }) } +// FIXME: make it a generic to support V6? /// Modify a V5 transaction to insert fake Orchard shielded data. /// /// Creates a fake instance of [`orchard::ShieldedData`] with one fake action. Note that both the @@ -1050,7 +1055,7 @@ pub fn transactions_from_blocks<'a>( /// Panics if the transaction to be modified is not V5. pub fn insert_fake_orchard_shielded_data( transaction: &mut Transaction, -) -> &mut orchard::ShieldedData { +) -> &mut orchard::ShieldedData { // Create a dummy action let mut runner = TestRunner::default(); let dummy_action = orchard::Action::arbitrary() @@ -1065,13 +1070,14 @@ pub fn insert_fake_orchard_shielded_data( }; // Place the dummy action inside the Orchard shielded data - let dummy_shielded_data = orchard::ShieldedData { + let dummy_shielded_data = orchard::ShieldedData:: { flags: orchard::Flags::empty(), value_balance: Amount::try_from(0).expect("invalid transaction amount"), shared_anchor: orchard::tree::Root::default(), proof: Halo2Proof(vec![]), actions: at_least_one![dummy_authorized_action], binding_sig: Signature::from([0u8; 64]), + burn: Default::default(), }; // Replace the shielded data in the transaction diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index 00464e1d320..e851bb158cf 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -1104,8 +1104,8 @@ pub const MIN_TRANSPARENT_TX_V5_SIZE: u64 = MIN_TRANSPARENT_TX_SIZE + 4 + 4; /// The minimum transaction size for v6 transactions. /// -/// FIXME: specify a proper value and description. -pub const MIN_TRANSPARENT_TX_V6_SIZE: u64 = MIN_TRANSPARENT_TX_V5_SIZE; +/// FIXME: uncomment this and specify a proper value and description. +//pub const MIN_TRANSPARENT_TX_V6_SIZE: u64 = MIN_TRANSPARENT_TX_V5_SIZE; /// No valid Zcash message contains more transactions than can fit in a single block /// diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index 447d9bbd449..ab88f6cbde4 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -10,7 +10,7 @@ use std::{ use futures::{future::BoxFuture, FutureExt}; use once_cell::sync::Lazy; -use orchard::{circuit::VerifyingKey, orchard_flavor::OrchardVanilla}; +use orchard::circuit::VerifyingKey; use rand::{thread_rng, CryptoRng, RngCore}; use thiserror::Error; @@ -19,6 +19,8 @@ use tower::{util::ServiceFn, Service}; use tower_batch_control::{Batch, BatchControl}; use tower_fallback::Fallback; +use zebra_chain::orchard::{OrchardFlavorExt, OrchardVanilla}; + use crate::BoxError; use super::{spawn_fifo, spawn_fifo_and_convert}; @@ -76,7 +78,7 @@ pub type ItemVerifyingKey = VerifyingKey; lazy_static::lazy_static! { /// The halo2 proof verifying key. // FIXME: support OrchardZSA? - pub static ref VERIFYING_KEY: ItemVerifyingKey = ItemVerifyingKey::build::(); + pub static ref VERIFYING_KEY: ItemVerifyingKey = ItemVerifyingKey::build::<::Flavor>(); } // === TEMPORARY BATCH HALO2 SUBSTITUTE === @@ -131,8 +133,8 @@ impl BatchVerifier { // === END TEMPORARY BATCH HALO2 SUBSTITUTE === -impl From<&zebra_chain::orchard::ShieldedData> for Item { - fn from(shielded_data: &zebra_chain::orchard::ShieldedData) -> Item { +impl From<&zebra_chain::orchard::ShieldedData> for Item { + fn from(shielded_data: &zebra_chain::orchard::ShieldedData) -> Item { use orchard::{circuit, note, primitives::redpallas, tree, value}; let anchor = tree::Anchor::from_bytes(shielded_data.shared_anchor.into()).unwrap(); diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 9b5c367e640..12f2635b3b2 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -12,14 +12,13 @@ use orchard::{ circuit::ProvingKey, keys::{FullViewingKey, Scope, SpendingKey}, note::AssetBase, - orchard_flavor::OrchardVanilla, value::NoteValue, Anchor, Bundle, }; use rand::rngs::OsRng; use zebra_chain::{ - orchard::ShieldedData, + orchard::{OrchardFlavorExt, OrchardVanilla, ShieldedData}, serialization::{ZcashDeserializeInto, ZcashSerialize}, }; @@ -28,7 +27,7 @@ use crate::primitives::halo2::*; // FIXME: add support for OrchardZSA (see OrchardVanilla and AssetBase::native() usage below) #[allow(dead_code, clippy::print_stdout)] fn generate_test_vectors() { - let proving_key = ProvingKey::build::(); + let proving_key = ProvingKey::build::<::Flavor>(); let rng = OsRng; @@ -41,7 +40,7 @@ fn generate_test_vectors() { let anchor_bytes = [0; 32]; let note_value = 10; - let shielded_data: Vec = (1..=4) + let shielded_data: Vec> = (1..=4) .map(|num_recipients| { let mut builder = Builder::new( BundleType::Transactional { @@ -63,7 +62,8 @@ fn generate_test_vectors() { .unwrap(); } - let bundle: Bundle<_, i64, OrchardVanilla> = builder.build(rng).unwrap().unwrap().0; + let bundle: Bundle<_, i64, ::Flavor> = + builder.build(rng).unwrap().unwrap().0; let bundle = bundle .create_proof(&proving_key, rng) @@ -71,7 +71,7 @@ fn generate_test_vectors() { .apply_signatures(rng, [0; 32], &[]) .unwrap(); - zebra_chain::orchard::ShieldedData { + zebra_chain::orchard::ShieldedData:: { flags, value_balance: note_value.try_into().unwrap(), shared_anchor: anchor_bytes.try_into().unwrap(), @@ -82,7 +82,7 @@ fn generate_test_vectors() { .actions() .iter() .map(|a| { - let action = zebra_chain::orchard::Action { + let action = zebra_chain::orchard::Action:: { cv: a.cv_net().to_bytes().try_into().unwrap(), nullifier: a.nullifier().to_bytes().try_into().unwrap(), rk: <[u8; 32]>::from(a.rk()).into(), @@ -91,7 +91,7 @@ fn generate_test_vectors() { // FIXME: support OrchardZSA too, 580 works for OrchardVanilla only! // FIXME: consider more "type safe" way to do the following conversion // (now it goes through &[u8]) - enc_ciphertext: <[u8; 580]>::try_from( + enc_ciphertext: <[u8; OrchardVanilla::ENCRYPTED_NOTE_SIZE]>::try_from( a.encrypted_note().enc_ciphertext.as_ref(), ) .unwrap() @@ -107,6 +107,8 @@ fn generate_test_vectors() { .try_into() .unwrap(), binding_sig: <[u8; 64]>::from(bundle.authorization().binding_signature()).into(), + // FIXME: use a proper value when implementing V6 + burn: Default::default(), } }) .collect(); @@ -121,7 +123,7 @@ fn generate_test_vectors() { async fn verify_orchard_halo2_proofs( verifier: &mut V, - shielded_data: Vec, + shielded_data: Vec>, ) -> Result<(), V::Error> where V: tower::Service, @@ -154,9 +156,10 @@ async fn verify_generated_halo2_proofs() { .clone() .iter() .map(|bytes| { - let maybe_shielded_data: Option = bytes - .zcash_deserialize_into() - .expect("a valid orchard::ShieldedData instance"); + let maybe_shielded_data: Option> = + bytes + .zcash_deserialize_into() + .expect("a valid orchard::ShieldedData instance"); maybe_shielded_data.unwrap() }) .collect(); @@ -183,7 +186,7 @@ async fn verify_generated_halo2_proofs() { async fn verify_invalid_orchard_halo2_proofs( verifier: &mut V, - shielded_data: Vec, + shielded_data: Vec>, ) -> Result<(), V::Error> where V: tower::Service, @@ -221,9 +224,10 @@ async fn correctly_err_on_invalid_halo2_proofs() { .clone() .iter() .map(|bytes| { - let maybe_shielded_data: Option = bytes - .zcash_deserialize_into() - .expect("a valid orchard::ShieldedData instance"); + let maybe_shielded_data: Option> = + bytes + .zcash_deserialize_into() + .expect("a valid orchard::ShieldedData instance"); maybe_shielded_data.unwrap() }) .collect(); diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index 5c21ccd494c..0be7fea38f3 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -406,12 +406,7 @@ where orchard_shielded_data, .. } - // FIXME: implement proper V6 verification - | Transaction::V6 { - sapling_shielded_data, - orchard_shielded_data, - .. - }=> Self::verify_v5_transaction( + => Self::verify_v5_transaction( &req, &network, script_verifier, @@ -419,6 +414,13 @@ where sapling_shielded_data, orchard_shielded_data, )?, + // FIXME: implement proper V6 verification + | Transaction::V6 { + .. + } => { + tracing::debug!(?tx, "V6 transaction verification is not supported for now"); + return Err(TransactionError::WrongVersion); + } }; if let Some(unmined_tx) = req.mempool_transaction() { @@ -722,7 +724,7 @@ where script_verifier: script::Verifier, cached_ffi_transaction: Arc, sapling_shielded_data: &Option>, - orchard_shielded_data: &Option, + orchard_shielded_data: &Option>, ) -> Result { let transaction = request.transaction(); let upgrade = request.upgrade(network); @@ -1019,7 +1021,7 @@ where /// Verifies a transaction's Orchard shielded data. fn verify_orchard_shielded_data( - orchard_shielded_data: &Option, + orchard_shielded_data: &Option>, shielded_sighash: &SigHash, ) -> Result { let mut async_checks = AsyncChecks::new(); diff --git a/zebra-consensus/src/transaction/check.rs b/zebra-consensus/src/transaction/check.rs index 66e3d0be595..133c7e80470 100644 --- a/zebra-consensus/src/transaction/check.rs +++ b/zebra-consensus/src/transaction/check.rs @@ -172,8 +172,8 @@ pub fn coinbase_tx_no_prevout_joinsplit_spend(tx: &Transaction) -> Result<(), Tr return Err(TransactionError::CoinbaseHasSpend); } - if let Some(orchard_shielded_data) = tx.orchard_shielded_data() { - if orchard_shielded_data.flags.contains(Flags::ENABLE_SPENDS) { + if let Some(orchard_flags) = tx.orchard_flags() { + if orchard_flags.contains(Flags::ENABLE_SPENDS) { return Err(TransactionError::CoinbaseHasEnableSpendsOrchard); } } diff --git a/zebra-consensus/src/transaction/tests.rs b/zebra-consensus/src/transaction/tests.rs index 0a4c21bb039..5494537edb8 100644 --- a/zebra-consensus/src/transaction/tests.rs +++ b/zebra-consensus/src/transaction/tests.rs @@ -12,7 +12,7 @@ use tower::{service_fn, ServiceExt}; use zebra_chain::{ amount::{Amount, NonNegative}, block::{self, Block, Height}, - orchard::AuthorizedAction, + orchard::{AuthorizedAction, OrchardVanilla}, parameters::{Network, NetworkUpgrade}, primitives::{ed25519, x25519, Groth16Proof}, sapling, @@ -2830,9 +2830,9 @@ fn coinbase_outputs_are_decryptable_for_historical_blocks_for_network( /// Given an Orchard action as a base, fill fields related to note encryption /// from the given test vector and returned the modified action. fn fill_action_with_note_encryption_test_vector( - action: &zebra_chain::orchard::Action, + action: &zebra_chain::orchard::Action, v: &zebra_test::vectors::TestVector, -) -> zebra_chain::orchard::Action { +) -> zebra_chain::orchard::Action { let mut action = action.clone(); action.cv = v.cv_net.try_into().expect("test vector must be valid"); action.cm_x = pallas::Base::from_repr(v.cmx).unwrap(); diff --git a/zebra-state/src/service/check/anchors.rs b/zebra-state/src/service/check/anchors.rs index 5f6ee293e34..b4a53c8f176 100644 --- a/zebra-state/src/service/check/anchors.rs +++ b/zebra-state/src/service/check/anchors.rs @@ -88,25 +88,21 @@ fn sapling_orchard_anchors_refer_to_final_treestates( // > earlier block’s final Orchard treestate. // // - if let Some(orchard_shielded_data) = transaction.orchard_shielded_data() { + if let Some(shared_anchor) = transaction.orchard_shared_anchor() { tracing::debug!( - ?orchard_shielded_data.shared_anchor, + ?shared_anchor, ?tx_index_in_block, ?height, "observed orchard anchor", ); if !parent_chain - .map(|chain| { - chain - .orchard_anchors - .contains(&orchard_shielded_data.shared_anchor) - }) + .map(|chain| chain.orchard_anchors.contains(&shared_anchor)) .unwrap_or(false) - && !finalized_state.contains_orchard_anchor(&orchard_shielded_data.shared_anchor) + && !finalized_state.contains_orchard_anchor(&shared_anchor) { return Err(ValidateContextError::UnknownOrchardAnchor { - anchor: orchard_shielded_data.shared_anchor, + anchor: shared_anchor, height, tx_index_in_block, transaction_hash, @@ -114,7 +110,7 @@ fn sapling_orchard_anchors_refer_to_final_treestates( } tracing::debug!( - ?orchard_shielded_data.shared_anchor, + ?shared_anchor, ?tx_index_in_block, ?height, "validated orchard anchor", diff --git a/zebra-state/src/service/finalized_state/zebra_db/arbitrary.rs b/zebra-state/src/service/finalized_state/zebra_db/arbitrary.rs index bbe0e026d8c..39bf082d43d 100644 --- a/zebra-state/src/service/finalized_state/zebra_db/arbitrary.rs +++ b/zebra-state/src/service/finalized_state/zebra_db/arbitrary.rs @@ -66,8 +66,8 @@ impl ZebraDb { } // Orchard - if let Some(orchard_shielded_data) = transaction.orchard_shielded_data() { - batch.zs_insert(&orchard_anchors, orchard_shielded_data.shared_anchor, ()); + if let Some(shared_anchor) = transaction.orchard_shared_anchor() { + batch.zs_insert(&orchard_anchors, shared_anchor, ()); } } diff --git a/zebra-state/src/service/non_finalized_state/chain.rs b/zebra-state/src/service/non_finalized_state/chain.rs index dce9c783ec8..4539eb6aaa0 100644 --- a/zebra-state/src/service/non_finalized_state/chain.rs +++ b/zebra-state/src/service/non_finalized_state/chain.rs @@ -1525,7 +1525,7 @@ impl Chain { inputs, outputs, sapling_shielded_data, - orchard_shielded_data, + orchard_shielded_data: _, .. } => ( inputs, @@ -1533,7 +1533,8 @@ impl Chain { &None, &None, sapling_shielded_data, - orchard_shielded_data, + // FIXME: support V6 shielded data? + &None, //orchard_shielded_data, ), V1 { .. } | V2 { .. } | V3 { .. } => unreachable!( "older transaction versions only exist in finalized blocks, because of the mandatory canopy checkpoint", @@ -1700,7 +1701,7 @@ impl UpdateWith for Chain { inputs, outputs, sapling_shielded_data, - orchard_shielded_data, + orchard_shielded_data: _, .. } => ( inputs, @@ -1708,7 +1709,8 @@ impl UpdateWith for Chain { &None, &None, sapling_shielded_data, - orchard_shielded_data, + // FIXME: support V6 shielded data? + &None, //orchard_shielded_data, ), V1 { .. } | V2 { .. } | V3 { .. } => unreachable!( "older transaction versions only exist in finalized blocks, because of the mandatory canopy checkpoint", @@ -2045,11 +2047,11 @@ where } } -impl UpdateWith> for Chain { +impl UpdateWith>> for Chain { #[instrument(skip(self, orchard_shielded_data))] fn update_chain_tip_with( &mut self, - orchard_shielded_data: &Option, + orchard_shielded_data: &Option>, ) -> Result<(), ValidateContextError> { if let Some(orchard_shielded_data) = orchard_shielded_data { // We do note commitment tree updates in parallel rayon threads. @@ -2070,7 +2072,7 @@ impl UpdateWith> for Chain { #[instrument(skip(self, orchard_shielded_data))] fn revert_chain_with( &mut self, - orchard_shielded_data: &Option, + orchard_shielded_data: &Option>, _position: RevertPosition, ) { if let Some(orchard_shielded_data) = orchard_shielded_data { diff --git a/zebrad/src/components/mempool/storage/tests/prop.rs b/zebrad/src/components/mempool/storage/tests/prop.rs index 98abdb2b8e8..2dde9d1d470 100644 --- a/zebrad/src/components/mempool/storage/tests/prop.rs +++ b/zebrad/src/components/mempool/storage/tests/prop.rs @@ -712,12 +712,14 @@ impl SpendConflictTestInput { Transaction::V5 { orchard_shielded_data, .. - } - | Transaction::V6 { - orchard_shielded_data, - .. } => Self::remove_orchard_actions_with_conflicts(orchard_shielded_data, &conflicts), + // FIXME: implement for V6 + Transaction::V6 { + orchard_shielded_data: _, + .. + } => {} + // No Spends Transaction::V1 { .. } | Transaction::V2 { .. } @@ -732,7 +734,7 @@ impl SpendConflictTestInput { /// /// This may clear the entire shielded data. fn remove_orchard_actions_with_conflicts( - maybe_shielded_data: &mut Option, + maybe_shielded_data: &mut Option>, conflicts: &HashSet, ) { if let Some(shielded_data) = maybe_shielded_data.take() { @@ -789,10 +791,11 @@ struct SaplingSpendConflict { fallback_shielded_data: DisplayToDebug>, } +// FIXME: make it a generic to support V6 /// A conflict caused by revealing the same Orchard nullifier. #[derive(Arbitrary, Clone, Debug)] struct OrchardSpendConflict { - new_shielded_data: DisplayToDebug, + new_shielded_data: DisplayToDebug>, } impl SpendConflictForTransactionV4 { @@ -938,7 +941,10 @@ impl OrchardSpendConflict { /// the new action is inserted in the transaction. /// /// The transaction will then conflict with any other transaction with the same new nullifier. - pub fn apply_to(self, orchard_shielded_data: &mut Option) { + pub fn apply_to( + self, + orchard_shielded_data: &mut Option>, + ) { if let Some(shielded_data) = orchard_shielded_data.as_mut() { shielded_data.actions.first_mut().action.nullifier = self.new_shielded_data.actions.first().action.nullifier; From dd741e943c26f444c73d014015c7a1840b288654 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 18 Sep 2024 11:48:29 +0200 Subject: [PATCH 020/230] Add missed files --- zebra-chain/src/orchard/orchard_flavor_ext.rs | 84 ++++++ zebra-chain/src/orchard_zsa.rs | 7 + zebra-chain/src/orchard_zsa/burn.rs | 80 ++++++ zebra-chain/src/orchard_zsa/issuance.rs | 260 ++++++++++++++++++ zebra-chain/src/orchard_zsa/serialize.rs | 23 ++ 5 files changed, 454 insertions(+) create mode 100644 zebra-chain/src/orchard/orchard_flavor_ext.rs create mode 100644 zebra-chain/src/orchard_zsa.rs create mode 100644 zebra-chain/src/orchard_zsa/burn.rs create mode 100644 zebra-chain/src/orchard_zsa/issuance.rs create mode 100644 zebra-chain/src/orchard_zsa/serialize.rs diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs new file mode 100644 index 00000000000..f8ce25d0ed5 --- /dev/null +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -0,0 +1,84 @@ +//! This module defines traits and structures for supporting the Orchard Shielded Protocol +//! for `V5` and `V6` versions of the transaction. +use std::{fmt::Debug, io}; + +use serde::{de::DeserializeOwned, Serialize}; + +#[cfg(any(test, feature = "proptest-impl"))] +use proptest_derive::Arbitrary; + +use orchard::{note_encryption::OrchardDomainCommon, orchard_flavor}; + +use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize}; + +use super::note; + +#[cfg(feature = "tx-v6")] +use crate::orchard_zsa::burn::BurnItem; + +/// A trait representing compile-time settings of Orchard Shielded Protocol used in +/// the transactions `V5` and `V6`. +pub trait OrchardFlavorExt: Clone + Debug { + /// A type representing an encrypted note for this protocol version. + /// A type representing an encrypted note for this protocol version. + type EncryptedNote: Clone + + Debug + + PartialEq + + Eq + + DeserializeOwned + + Serialize + + ZcashDeserialize + + ZcashSerialize; + + /// FIXME: add doc + type Flavor: orchard_flavor::OrchardFlavor; + + /// The size of the encrypted note for this protocol version. + const ENCRYPTED_NOTE_SIZE: usize = Self::Flavor::ENC_CIPHERTEXT_SIZE; + + /// A type representing a burn field for this protocol version. + type BurnType: Clone + Debug + Default + ZcashDeserialize + ZcashSerialize; +} + +/// A structure representing a tag for Orchard protocol variant used for the transaction version `V5`. +#[derive(Clone, Debug, PartialEq, Eq, Serialize)] +#[cfg_attr(any(test, feature = "proptest-impl"), derive(Arbitrary))] +pub struct OrchardVanilla; + +/// A structure representing a tag for Orchard protocol variant used for the transaction version `V6` +/// (which ZSA features support). +#[cfg(feature = "tx-v6")] +#[derive(Clone, Debug, PartialEq, Eq, Serialize)] +#[cfg_attr(any(test, feature = "proptest-impl"), derive(Arbitrary))] +pub struct OrchardZSA; + +/// A special marker type indicating the absence of a burn field in Orchard ShieldedData for `V5` transactions. +/// Useful for unifying ShieldedData serialization and deserialization implementations across various +/// Orchard protocol variants (i.e. various transaction versions). +#[derive(Default, Clone, Debug, PartialEq, Eq, Serialize)] +pub struct NoBurn; + +impl ZcashSerialize for NoBurn { + fn zcash_serialize(&self, mut _writer: W) -> Result<(), io::Error> { + Ok(()) + } +} + +impl ZcashDeserialize for NoBurn { + fn zcash_deserialize(mut _reader: R) -> Result { + Ok(Self) + } +} + +impl OrchardFlavorExt for OrchardVanilla { + type Flavor = orchard_flavor::OrchardVanilla; + type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; + type BurnType = NoBurn; +} + +#[cfg(feature = "tx-v6")] +impl OrchardFlavorExt for OrchardZSA { + type Flavor = orchard_flavor::OrchardZSA; + type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; + type BurnType = Vec; +} diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs new file mode 100644 index 00000000000..9806850daf9 --- /dev/null +++ b/zebra-chain/src/orchard_zsa.rs @@ -0,0 +1,7 @@ +//! Orchard ZSA related functionality. + +pub mod burn; +pub mod issuance; +pub mod serialize; + +pub use burn::BurnItem; diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs new file mode 100644 index 00000000000..04c878feb49 --- /dev/null +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -0,0 +1,80 @@ +//! Orchard ZSA burn related functionality. + +use std::io; + +use crate::{ + amount::Amount, + block::MAX_BLOCK_BYTES, + serialization::{SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashSerialize}, +}; + +use orchard::note::AssetBase; + +use super::serialize::ASSET_BASE_SIZE; + +// Sizes of the serialized values for types in bytes (used for TrustedPreallocate impls) +const AMOUNT_SIZE: u64 = 8; +// FIXME: is this a correct way to calculate (simple sum of sizes of components)? +const BURN_ITEM_SIZE: u64 = ASSET_BASE_SIZE + AMOUNT_SIZE; + +/// Represents an Orchard ZSA burn item. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct BurnItem(AssetBase, Amount); + +impl ZcashSerialize for BurnItem { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + let BurnItem(asset_base, amount) = self; + + asset_base.zcash_serialize(&mut writer)?; + amount.zcash_serialize(&mut writer)?; + + Ok(()) + } +} + +impl ZcashDeserialize for BurnItem { + fn zcash_deserialize(mut reader: R) -> Result { + Ok(Self( + AssetBase::zcash_deserialize(&mut reader)?, + Amount::zcash_deserialize(&mut reader)?, + )) + } +} + +impl TrustedPreallocate for BurnItem { + fn max_allocation() -> u64 { + // FIXME: is this a correct calculation way? + // The longest Vec we receive from an honest peer must fit inside a valid block. + // Since encoding the length of the vec takes at least one byte, we use MAX_BLOCK_BYTES - 1 + (MAX_BLOCK_BYTES - 1) / BURN_ITEM_SIZE + } +} + +#[cfg(any(test, feature = "proptest-impl"))] +impl serde::Serialize for BurnItem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + // FIXME: return custom error with a meaningful description? + (self.0.to_bytes(), &self.1).serialize(serializer) + } +} + +#[cfg(any(test, feature = "proptest-impl"))] +impl<'de> serde::Deserialize<'de> for BurnItem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + // FIXME: consider another implementation (explicit specifying of [u8; 32] may not look perfect) + let (asset_base_bytes, amount) = <([u8; 32], Amount)>::deserialize(deserializer)?; + // FIXME: return custom error with a meaningful description? + Ok(BurnItem( + // FIXME: duplicates the body of AssetBase::zcash_deserialize? + Option::from(AssetBase::from_bytes(&asset_base_bytes)) + .ok_or_else(|| serde::de::Error::custom("Invalid orchard_zsa AssetBase"))?, + amount, + )) + } +} diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs new file mode 100644 index 00000000000..3e55edcf14d --- /dev/null +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -0,0 +1,260 @@ +//! Orchard ZSA issuance related functionality. + +use std::{fmt::Debug, io}; + +use crate::{ + block::MAX_BLOCK_BYTES, + serialization::{ + zcash_serialize_empty_list, ReadZcashExt, SerializationError, TrustedPreallocate, + ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, + }, +}; + +use nonempty::NonEmpty; + +// FIXME: needed for "as_bool" only - consider to implement as_bool locally +use bitvec::macros::internal::funty::Fundamental; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use orchard::{ + issuance::{IssueAction, IssueBundle, Signed}, + keys::IssuanceValidatingKey, + note::{RandomSeed, Rho}, + primitives::redpallas::{SigType, Signature, SpendAuth}, + value::NoteValue, + Address, Note, +}; + +use super::serialize::ASSET_BASE_SIZE; + +/// Wrapper for `IssueBundle` used in the context of Transaction V6. This allows the implementation of +/// a Serde serializer for unit tests within this crate. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct IssueData(IssueBundle); + +// Sizes of the serialized values for types in bytes (used for TrustedPreallocate impls) +// FIXME: are those values correct (43, 32 etc.)? +//const ISSUANCE_VALIDATING_KEY_SIZE: u64 = 32; +const ADDRESS_SIZE: u64 = 43; +const NULLIFIER_SIZE: u64 = 32; +const NOTE_VALUE_SIZE: u64 = 4; +const RANDOM_SEED_SIZE: u64 = 32; +// FIXME: is this a correct way to calculate (simple sum of sizes of components)? +const NOTE_SIZE: u64 = + ADDRESS_SIZE + NOTE_VALUE_SIZE + ASSET_BASE_SIZE + NULLIFIER_SIZE + RANDOM_SEED_SIZE; + +// FIXME: duplicates ZcashSerialize for reddsa::Signature in transaction/serialize.rs +// (as Signature from oechard_zsa is formally a different type) +impl ZcashSerialize for Signature { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + writer.write_all(&<[u8; 64]>::from(self))?; + Ok(()) + } +} + +// FIXME: duplicates ZcashDeserialize for reddsa::Signature in transaction/serialize.rs +// (as Signature from oechard_zsa is formally a different type) +impl ZcashDeserialize for Signature { + fn zcash_deserialize(mut reader: R) -> Result { + Ok(reader.read_64_bytes()?.into()) + } +} + +impl ZcashDeserialize for Signed { + fn zcash_deserialize(mut reader: R) -> Result { + let signature = Signature::::zcash_deserialize(&mut reader)?; + Ok(Signed::from_data((&signature).into())) + } +} + +impl ZcashSerialize for IssuanceValidatingKey { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + writer.write_all(&self.to_bytes()) + } +} + +impl ZcashDeserialize for IssuanceValidatingKey { + fn zcash_deserialize(mut reader: R) -> Result { + IssuanceValidatingKey::from_bytes(&reader.read_32_bytes()?) + .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa IssuanceValidatingKey!")) + } +} + +impl ZcashSerialize for Address { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + writer.write_all(&self.to_raw_address_bytes()) + } +} + +impl ZcashDeserialize for Address { + fn zcash_deserialize(mut reader: R) -> Result { + let mut bytes = [0u8; ADDRESS_SIZE as usize]; + reader.read_exact(&mut bytes)?; + Option::from(Address::from_raw_address_bytes(&bytes)) + .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa Address!")) + } +} + +impl ZcashSerialize for Rho { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + writer.write_all(&self.to_bytes()) + } +} + +impl ZcashDeserialize for Rho { + fn zcash_deserialize(mut reader: R) -> Result { + Option::from(Rho::from_bytes(&reader.read_32_bytes()?)) + .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa Rho!")) + } +} + +impl ZcashSerialize for RandomSeed { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + writer.write_all(self.as_bytes()) + } +} + +// RandomSeed::zcash_deserialize can't be implemented and used as it requires Nullifier parameter. +// That's why we need to have this function. +fn zcash_deserialize_random_seed( + mut reader: R, + rho: &Rho, +) -> Result { + Option::from(RandomSeed::from_bytes(reader.read_32_bytes()?, rho)) + .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa RandomSeed!")) +} + +impl ZcashSerialize for NoteValue { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + // FIXME: use Amount serializer/deserializer? + writer.write_u64::(self.inner())?; + Ok(()) + } +} + +impl ZcashDeserialize for NoteValue { + fn zcash_deserialize(mut reader: R) -> Result { + Ok(NoteValue::from_raw(reader.read_u64::()?)) + } +} + +impl ZcashSerialize for Note { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + self.recipient().zcash_serialize(&mut writer)?; + self.value().zcash_serialize(&mut writer)?; + self.asset().zcash_serialize(&mut writer)?; + self.rho().zcash_serialize(&mut writer)?; + self.rseed().zcash_serialize(&mut writer)?; + + Ok(()) + } +} + +impl ZcashDeserialize for Note { + fn zcash_deserialize(mut reader: R) -> Result { + let recipient = (&mut reader).zcash_deserialize_into()?; + let value = (&mut reader).zcash_deserialize_into()?; + let asset = (&mut reader).zcash_deserialize_into()?; + let rho = (&mut reader).zcash_deserialize_into()?; + let rseed = zcash_deserialize_random_seed(&mut reader, &rho)?; + + Option::from(Note::from_parts(recipient, value, asset, rho, rseed)) + .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa Note components!")) + } +} + +impl TrustedPreallocate for Note { + fn max_allocation() -> u64 { + // FIXME: is this a correct calculation way? + // The longest Vec we receive from an honest peer must fit inside a valid block. + // Since encoding the length of the vec takes at least one byte, we use MAX_BLOCK_BYTES - 1 + (MAX_BLOCK_BYTES - 1) / NOTE_SIZE + } +} + +impl ZcashSerialize for IssueAction { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + writer.write_u8(self.is_finalized().as_u8())?; + self.notes().zcash_serialize(&mut writer)?; + self.asset_desc().zcash_serialize(&mut writer)?; + Ok(()) + } +} + +impl ZcashDeserialize for IssueAction { + fn zcash_deserialize(mut reader: R) -> Result { + let finalize = reader.read_u8()?.as_bool(); + let notes = (&mut reader).zcash_deserialize_into()?; + let asset_descr = (&mut reader).zcash_deserialize_into()?; + Ok(IssueAction::from_parts(asset_descr, notes, finalize)) + } +} + +impl TrustedPreallocate for IssueAction { + fn max_allocation() -> u64 { + // FIXME: impl correct calculation + 10 + } +} + +impl ZcashSerialize for IssueBundle { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + // FIXME: try to avoid transforming to Vec (consider implementation of ZcashSerialize for IntoIter generic, + // or use AtLeastOne). + // This is how does it work in librustzcash: + // Vector::write_nonempty(&mut writer, bundle.actions(), |w, action| write_action(action, w))?; + let actions: Vec<_> = self.actions().clone().into(); + + actions.zcash_serialize(&mut writer)?; + self.ik().zcash_serialize(&mut writer)?; + writer.write_all(&<[u8; 64]>::from(self.authorization().signature()))?; + Ok(()) + } +} + +impl ZcashSerialize for Option { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + match self { + None => { + // Denoted as `&Option` in the spec (ZIP 230). + zcash_serialize_empty_list(writer)?; + } + Some(issue_data) => { + issue_data.0.zcash_serialize(&mut writer)?; + } + } + Ok(()) + } +} + +// FIXME: We can't split IssueData out of Option deserialization, +// because the counts are read along with the arrays. +impl ZcashDeserialize for Option { + fn zcash_deserialize(mut reader: R) -> Result { + let actions: Vec<_> = (&mut reader).zcash_deserialize_into()?; + + if actions.is_empty() { + Ok(None) + } else { + let ik = (&mut reader).zcash_deserialize_into()?; + let authorization = (&mut reader).zcash_deserialize_into()?; + + Ok(Some(IssueData(IssueBundle::from_parts( + ik, + NonEmpty::from_vec(actions).ok_or_else(|| { + SerializationError::Parse("Invalid orchard_zsa IssueData - no actions!") + })?, + authorization, + )))) + } + } +} + +#[cfg(any(test, feature = "proptest-impl"))] +impl serde::Serialize for IssueData { + fn serialize(&self, serializer: S) -> Result { + // TODO: FIXME: implement Serde serialization here + "(IssueData)".serialize(serializer) + } +} diff --git a/zebra-chain/src/orchard_zsa/serialize.rs b/zebra-chain/src/orchard_zsa/serialize.rs new file mode 100644 index 00000000000..6afc51e1887 --- /dev/null +++ b/zebra-chain/src/orchard_zsa/serialize.rs @@ -0,0 +1,23 @@ +//! Serialization implementation for selected types from the 'orchard_zsa' crate used in this module. + +use std::io; + +use crate::serialization::{ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize}; + +use orchard::note::AssetBase; + +// The size of the serialized AssetBase in bytes (used for TrustedPreallocate impls) +pub(crate) const ASSET_BASE_SIZE: u64 = 32; + +impl ZcashSerialize for AssetBase { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + writer.write_all(&self.to_bytes()) + } +} + +impl ZcashDeserialize for AssetBase { + fn zcash_deserialize(mut reader: R) -> Result { + Option::from(AssetBase::from_bytes(&reader.read_32_bytes()?)) + .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa AssetBase!")) + } +} From c218fc5e6abb4795830484c0c820059b8b5381bd Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 18 Sep 2024 11:58:44 +0200 Subject: [PATCH 021/230] Fix ciphertexts.rs tests compilation error --- zebra-chain/src/orchard/note/ciphertexts.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index 3cd1300847c..369260a197f 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -125,6 +125,9 @@ impl ZcashDeserialize for WrappedNoteKey { } } +#[cfg(test)] +use crate::orchard::orchard_flavor_ext::OrchardFlavorExt; + #[cfg(test)] use proptest::prelude::*; #[cfg(test)] From 4807dd67000b5bae351e1db1687d25b8365f0496 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 18 Sep 2024 11:58:44 +0200 Subject: [PATCH 022/230] Simplify the previous fix for ciphertexts.rs test --- zebra-chain/src/orchard/note/ciphertexts.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index 3cd1300847c..68f92dc667d 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -125,6 +125,9 @@ impl ZcashDeserialize for WrappedNoteKey { } } +#[cfg(test)] +use crate::orchard::OrchardFlavorExt; + #[cfg(test)] use proptest::prelude::*; #[cfg(test)] From 0f9c164f988ef1a23586b241a92124d43b701348 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 18 Sep 2024 12:20:15 +0200 Subject: [PATCH 023/230] Fix tests compilation errors for nullifiers --- .../src/service/check/tests/nullifier.rs | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/zebra-state/src/service/check/tests/nullifier.rs b/zebra-state/src/service/check/tests/nullifier.rs index 0392f1c8e79..8a8b17e4fd0 100644 --- a/zebra-state/src/service/check/tests/nullifier.rs +++ b/zebra-state/src/service/check/tests/nullifier.rs @@ -700,8 +700,8 @@ proptest! { /// (And that the test infrastructure generally works.) #[test] fn accept_distinct_arbitrary_orchard_nullifiers_in_one_block( - authorized_action in TypeNameToDebug::::arbitrary(), - orchard_shielded_data in TypeNameToDebug::::arbitrary(), + authorized_action in TypeNameToDebug::>::arbitrary(), + orchard_shielded_data in TypeNameToDebug::>::arbitrary(), use_finalized_state in any::(), ) { let _init_guard = zebra_test::init(); @@ -759,9 +759,9 @@ proptest! { /// if they come from different AuthorizedActions in the same orchard::ShieldedData/Transaction. #[test] fn reject_duplicate_orchard_nullifiers_in_transaction( - authorized_action1 in TypeNameToDebug::::arbitrary(), - mut authorized_action2 in TypeNameToDebug::::arbitrary(), - orchard_shielded_data in TypeNameToDebug::::arbitrary(), + authorized_action1 in TypeNameToDebug::>::arbitrary(), + mut authorized_action2 in TypeNameToDebug::>::arbitrary(), + orchard_shielded_data in TypeNameToDebug::>::arbitrary(), ) { let _init_guard = zebra_test::init(); @@ -812,10 +812,10 @@ proptest! { /// if they come from different transactions in the same block. #[test] fn reject_duplicate_orchard_nullifiers_in_block( - authorized_action1 in TypeNameToDebug::::arbitrary(), - mut authorized_action2 in TypeNameToDebug::::arbitrary(), - orchard_shielded_data1 in TypeNameToDebug::::arbitrary(), - orchard_shielded_data2 in TypeNameToDebug::::arbitrary(), + authorized_action1 in TypeNameToDebug::>::arbitrary(), + mut authorized_action2 in TypeNameToDebug::>::arbitrary(), + orchard_shielded_data1 in TypeNameToDebug::>::arbitrary(), + orchard_shielded_data2 in TypeNameToDebug::>::arbitrary(), ) { let _init_guard = zebra_test::init(); @@ -872,10 +872,10 @@ proptest! { /// if they come from different blocks in the same chain. #[test] fn reject_duplicate_orchard_nullifiers_in_chain( - authorized_action1 in TypeNameToDebug::::arbitrary(), - mut authorized_action2 in TypeNameToDebug::::arbitrary(), - orchard_shielded_data1 in TypeNameToDebug::::arbitrary(), - orchard_shielded_data2 in TypeNameToDebug::::arbitrary(), + authorized_action1 in TypeNameToDebug::>::arbitrary(), + mut authorized_action2 in TypeNameToDebug::>::arbitrary(), + orchard_shielded_data1 in TypeNameToDebug::>::arbitrary(), + orchard_shielded_data2 in TypeNameToDebug::>::arbitrary(), duplicate_in_finalized_state in any::(), ) { let _init_guard = zebra_test::init(); @@ -1126,8 +1126,8 @@ fn transaction_v4_with_sapling_shielded_data( /// /// If there are no `AuthorizedAction`s in `authorized_actions`. fn transaction_v5_with_orchard_shielded_data( - orchard_shielded_data: impl Into>, - authorized_actions: impl IntoIterator, + orchard_shielded_data: impl Into>>, + authorized_actions: impl IntoIterator>, ) -> Transaction { let mut orchard_shielded_data = orchard_shielded_data.into(); let authorized_actions: Vec<_> = authorized_actions.into_iter().collect(); From 4d8cdefe20d1fbb8b73795318fb732415964c72b Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 24 Sep 2024 07:30:06 +0200 Subject: [PATCH 024/230] Add several FIXME comments --- zebra-chain/src/orchard/action.rs | 1 + zebra-rpc/qa/rpc-tests/test_framework/mininode.py | 3 ++- zebra-test/src/vectors/orchard_note_encryption.rs | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/zebra-chain/src/orchard/action.rs b/zebra-chain/src/orchard/action.rs index c8161246efb..4f256408f11 100644 --- a/zebra-chain/src/orchard/action.rs +++ b/zebra-chain/src/orchard/action.rs @@ -94,6 +94,7 @@ impl ZcashDeserialize for Action { // https://zips.z.cash/protocol/protocol.pdf#concretesym but fixed to // 580 bytes in https://zips.z.cash/protocol/protocol.pdf#outputencodingandconsensus // See [`note::EncryptedNote::zcash_deserialize`]. + // FIXME: don't mention about 580 here as this should work for OrchardZSA too? enc_ciphertext: V::EncryptedNote::zcash_deserialize(&mut reader)?, // Type is `Sym.C`, i.e. `𝔹^Y^{\[N\]}`, i.e. arbitrary-sized byte arrays // https://zips.z.cash/protocol/protocol.pdf#concretesym but fixed to diff --git a/zebra-rpc/qa/rpc-tests/test_framework/mininode.py b/zebra-rpc/qa/rpc-tests/test_framework/mininode.py index d56fb8bf79c..2fbe6faca89 100755 --- a/zebra-rpc/qa/rpc-tests/test_framework/mininode.py +++ b/zebra-rpc/qa/rpc-tests/test_framework/mininode.py @@ -425,6 +425,7 @@ def __repr__(self): return "RedPallasSignature(%s)" % bytes_to_hex_str(self.data) +# FIXME: add support of OrchardZSA class OrchardAction(object): def __init__(self): self.cv = None @@ -441,7 +442,7 @@ def deserialize(self, f): self.rk = deser_uint256(f) self.cmx = deser_uint256(f) self.ephemeralKey = deser_uint256(f) - self.encCiphertext = f.read(580) + self.encCiphertext = f.read(580) # FIXME: works for OrchardVanilla only self.outCiphertext = f.read(80) def serialize(self): diff --git a/zebra-test/src/vectors/orchard_note_encryption.rs b/zebra-test/src/vectors/orchard_note_encryption.rs index ff52b661b53..84b576df5c3 100644 --- a/zebra-test/src/vectors/orchard_note_encryption.rs +++ b/zebra-test/src/vectors/orchard_note_encryption.rs @@ -1,6 +1,7 @@ //! Contains test vectors for Orchard note encryptions. use lazy_static::lazy_static; +// FIXME: add tests for OrchardZSA #[allow(missing_docs)] pub struct TestVector { pub incoming_viewing_key: [u8; 64], @@ -18,7 +19,7 @@ pub struct TestVector { pub shared_secret: [u8; 32], pub k_enc: [u8; 32], pub p_enc: [u8; 564], - pub c_enc: [u8; 580], + pub c_enc: [u8; 580], // FIXME: works for OrchardVanilla only! pub ock: [u8; 32], pub op: [u8; 64], pub c_out: [u8; 80], From 1adadb14dab94c5a31cee16bde69868a7efb7ad9 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 24 Sep 2024 16:01:24 +0200 Subject: [PATCH 025/230] Remove (comment out) zcash_unstable=nu6 Rust flag and sync Cargo.lock with the upstream halo2/librustcash/orchard/sapling versions --- .github/workflows/ci-basic.yml | 5 ++-- Cargo.lock | 30 +++++++++---------- Cargo.toml | 2 +- zebra-chain/Cargo.toml | 4 +-- zebra-chain/src/parameters/network_upgrade.rs | 8 ++--- .../src/primitives/zcash_primitives.rs | 9 ++++-- zebra-chain/src/transaction.rs | 2 +- 7 files changed, 32 insertions(+), 28 deletions(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index c2cde8686bf..226f1528046 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -16,9 +16,10 @@ jobs: ROCKSDB_LIB_DIR: /usr/lib # Use system-installed Snappy library for compression in RocksDB SNAPPY_LIB_DIR: /usr/lib/x86_64-linux-gnu + # FIXME: remove the following commented lines # Enable the `nu6` feature in `zcash_protocol` - RUSTFLAGS: '--cfg zcash_unstable="nu6"' - RUSTDOCFLAGS: '--cfg zcash_unstable="nu6"' + #RUSTFLAGS: '--cfg zcash_unstable="nu6"' + #RUSTDOCFLAGS: '--cfg zcash_unstable="nu6"' steps: - uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index 0465c10f426..d1e183bc90b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#8149034c53c9a33b5ca417689c42ec4d47d0eff5" dependencies = [ "blake2b_simd", "byteorder", @@ -1407,7 +1407,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#8149034c53c9a33b5ca417689c42ec4d47d0eff5" dependencies = [ "blake2b_simd", ] @@ -1744,7 +1744,7 @@ dependencies = [ [[package]] name = "halo2_gadgets" version = "0.3.0" -source = "git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11#7f5c0babd61f8ca46c9165a1adfac298d3fd3a11" +source = "git+https://github.com/QED-it/halo2?branch=zsa1#1195c9af90205829ba20662bdfaf20dcc878807d" dependencies = [ "arrayvec", "bitvec", @@ -1767,7 +1767,7 @@ checksum = "47716fe1ae67969c5e0b2ef826f32db8c3be72be325e1aa3c1951d06b5575ec5" [[package]] name = "halo2_proofs" version = "0.3.0" -source = "git+https://github.com/QED-it/halo2?rev=7f5c0babd61f8ca46c9165a1adfac298d3fd3a11#7f5c0babd61f8ca46c9165a1adfac298d3fd3a11" +source = "git+https://github.com/QED-it/halo2?branch=zsa1#1195c9af90205829ba20662bdfaf20dcc878807d" dependencies = [ "blake2b_simd", "ff", @@ -2865,7 +2865,7 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchard" version = "0.8.0" -source = "git+https://github.com/QED-it/orchard?branch=zsa1#6e6112c80eb751a93c0fd1d881e9ca69887e1154" +source = "git+https://github.com/QED-it/orchard?branch=zsa1#3ba9e5b8d208bb44222cb2fe8bcd603c71abf444" dependencies = [ "aes", "bitvec", @@ -3957,7 +3957,7 @@ dependencies = [ [[package]] name = "sapling-crypto" version = "0.1.3" -source = "git+https://github.com/QED-it/sapling-crypto?branch=zsa1#e19f4d916360842becf2842bfd9b27228e66fa81" +source = "git+https://github.com/QED-it/sapling-crypto?branch=zsa1#99ad0a5f0bdef332bdc91d577086abd3aca59553" dependencies = [ "aes", "bellman", @@ -5779,7 +5779,7 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" version = "0.3.2" -source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#8149034c53c9a33b5ca417689c42ec4d47d0eff5" dependencies = [ "bech32", "bs58", @@ -5791,7 +5791,7 @@ dependencies = [ [[package]] name = "zcash_client_backend" version = "0.12.1" -source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#8149034c53c9a33b5ca417689c42ec4d47d0eff5" dependencies = [ "base64 0.21.7", "bech32", @@ -5830,7 +5830,7 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#8149034c53c9a33b5ca417689c42ec4d47d0eff5" dependencies = [ "byteorder", "nonempty", @@ -5839,7 +5839,7 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#8149034c53c9a33b5ca417689c42ec4d47d0eff5" dependencies = [ "blake2b_simd", "byteorder", @@ -5875,7 +5875,7 @@ dependencies = [ [[package]] name = "zcash_keys" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#8149034c53c9a33b5ca417689c42ec4d47d0eff5" dependencies = [ "bech32", "blake2b_simd", @@ -5900,7 +5900,7 @@ dependencies = [ [[package]] name = "zcash_note_encryption" version = "0.4.0" -source = "git+https://github.com/QED-it/zcash_note_encryption?branch=zsa1#58384553aab76b2ee6d6eb328cf2187fa824ec9a" +source = "git+https://github.com/QED-it/zcash_note_encryption?branch=zsa1#76745f00551d4442dee11ad64a8400b75132d18f" dependencies = [ "chacha20", "chacha20poly1305", @@ -5912,7 +5912,7 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.15.0" -source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#8149034c53c9a33b5ca417689c42ec4d47d0eff5" dependencies = [ "aes", "bip0039", @@ -5973,7 +5973,7 @@ dependencies = [ [[package]] name = "zcash_protocol" version = "0.1.1" -source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#8149034c53c9a33b5ca417689c42ec4d47d0eff5" dependencies = [ "document-features", "memuse", @@ -6512,7 +6512,7 @@ dependencies = [ [[package]] name = "zip321" version = "0.0.0" -source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#04ebee7fb22303c1e1dc6428def3dd3cecc4715d" +source = "git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2#8149034c53c9a33b5ca417689c42ec4d47d0eff5" dependencies = [ "base64 0.21.7", "nom", diff --git a/Cargo.toml b/Cargo.toml index e8b55f1ba8f..8e67fb8e048 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ panic = "abort" lto = "thin" [patch.crates-io] -halo2_proofs = { version = "0.3.0", git = "https://github.com/QED-it/halo2", rev = "7f5c0babd61f8ca46c9165a1adfac298d3fd3a11" } +halo2_proofs = { version = "0.3.0", git = "https://github.com/QED-it/halo2", branch = "zsa1" } zcash_note_encryption = { version = "0.4.0", git = "https://github.com/QED-it/zcash_note_encryption", branch = "zsa1" } sapling-crypto = { version = "0.1.3", git = "https://github.com/QED-it/sapling-crypto", branch = "zsa1" } orchard = { version = "0.8.0", git = "https://github.com/QED-it/orchard", branch = "zsa1" } diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 641ea6a25a2..e98b38ff56d 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -189,5 +189,5 @@ name = "redpallas" harness = false # FIXME: remove this and all zcash_unstable usage in the code after updating librustzcash -[lints.rust] -unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("nu6"))'] } +#[lints.rust] +#unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("nu6"))'] } diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index ab66fbc7895..79cf18a6291 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -530,11 +530,11 @@ impl From for NetworkUpgrade { zcash_protocol::consensus::NetworkUpgrade::Heartwood => Self::Heartwood, zcash_protocol::consensus::NetworkUpgrade::Canopy => Self::Canopy, zcash_protocol::consensus::NetworkUpgrade::Nu5 => Self::Nu5, - // FIXME: remove cfg - #[cfg(zcash_unstable = "nu6")] + // FIXME: remove this cfg + //#[cfg(zcash_unstable = "nu6")] zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, - // FIXME: remove cfg and process Nu7 properly (uses Self::Nu6 for now) - #[cfg(zcash_unstable = "nu6")] + // FIXME: remove this cfg and process Nu7 properly (uses Self::Nu6 for now) + //#[cfg(zcash_unstable = "nu6")] zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu6, } } diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 4cf445854d2..f69f4081446 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -138,7 +138,8 @@ impl zp_tx::components::orchard::MapAuth for IdentityMap { @@ -158,11 +159,13 @@ impl<'a> zp_tx::Authorization for PrecomputedAuth<'a> { type OrchardAuth = orchard::bundle::Authorized; // FIXME: is this correct? - #[cfg(zcash_unstable = "nu6")] + // FIXME: remove this cfg + //#[cfg(zcash_unstable = "nu6")] type OrchardZsaAuth = orchard::bundle::Authorized; // FIXME: is this correct? - #[cfg(zcash_unstable = "nu6")] + // FIXME: remove this cfg + //#[cfg(zcash_unstable = "nu6")] type IssueAuth = orchard::issuance::Signed; } diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 49e8fdbe33c..db5613eab24 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -1092,7 +1092,7 @@ impl Transaction { orchard_shielded_data_field!(self, flags) } - // FIXME: add doc + /// FIXME: add doc pub fn orchard_shared_anchor(&self) -> Option { orchard_shielded_data_field!(self, shared_anchor) } From e2e160cc60bbc08486ed1f3291b3fdc0b589de80 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 30 Sep 2024 10:49:34 +0200 Subject: [PATCH 026/230] Attempt to make the code compilable when tx-v6 feature is disabled --- zebra-chain/Cargo.toml | 4 ++-- zebra-chain/src/orchard.rs | 9 ++++++-- zebra-chain/src/transaction.rs | 42 ++++++++++++++++++++++++++-------- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index e98b38ff56d..f2997f2f950 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -15,8 +15,8 @@ keywords = ["zebra", "zcash"] categories = ["asynchronous", "cryptography::cryptocurrencies", "encoding"] [features] -#default = [] -default = ["tx-v6"] +default = [] +#default = ["tx-v6"] # Production features that activate extra functionality diff --git a/zebra-chain/src/orchard.rs b/zebra-chain/src/orchard.rs index 1eff5f2a3c6..3141b6a1154 100644 --- a/zebra-chain/src/orchard.rs +++ b/zebra-chain/src/orchard.rs @@ -23,8 +23,13 @@ pub use address::Address; pub use commitment::{CommitmentRandomness, NoteCommitment, ValueCommitment}; pub use keys::Diversifier; pub use note::{EncryptedNote, Note, Nullifier, WrappedNoteKey}; -pub use orchard_flavor_ext::{OrchardFlavorExt, OrchardVanilla, OrchardZSA}; +pub use orchard_flavor_ext::{OrchardFlavorExt, OrchardVanilla}; pub use shielded_data::{AuthorizedAction, Flags, ShieldedData}; -pub(crate) use crate::orchard_zsa::issuance::IssueData; pub(crate) use shielded_data::ActionCommon; + +#[cfg(feature = "tx-v6")] +pub use orchard_flavor_ext::OrchardZSA; + +#[cfg(feature = "tx-v6")] +pub(crate) use crate::orchard_zsa::issuance::IssueData; diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index db5613eab24..4ed61e2dfd1 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -69,6 +69,7 @@ macro_rules! orchard_shielded_data_iter { .. } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), + #[cfg(feature = "tx-v6")] Transaction::V6 { orchard_shielded_data, .. @@ -93,6 +94,7 @@ macro_rules! orchard_shielded_data_field { .. } => orchard_shielded_data.as_ref().map(|data| data.$field), + #[cfg(feature = "tx-v6")] Transaction::V6 { orchard_shielded_data, .. @@ -101,6 +103,21 @@ macro_rules! orchard_shielded_data_field { }; } +// FIXME: +// Define the macro for including the V6 pattern +//#[cfg(feature = "tx-v6")] +macro_rules! with_v6 { + () => { + | Transaction::V6 { expiry_height, .. } + }; +} + +// FIXME: +//#[cfg(not(feature = "tx-v6"))] +//macro_rules! with_v6 { +// () => {}; +//} + /// A Zcash transaction. /// /// A transaction is an encoded data structure that facilitates the transfer of @@ -193,6 +210,7 @@ pub enum Transaction { // FIXME: implement V6 properly (now it's just a coipy of V5) /// A `version = 6` transaction , which supports Orchard ZSA, Orchard Vanille, Sapling and /// transparent, but not Sprout. + #[cfg(feature = "tx-v6")] V6 { /// The Network Upgrade for this transaction. /// @@ -210,8 +228,10 @@ pub enum Transaction { /// The sapling shielded data for this transaction, if any. sapling_shielded_data: Option>, /// The ZSA orchard shielded data for this transaction, if any. + #[cfg(feature = "tx-v6")] orchard_shielded_data: Option>, /// The ZSA issuance data for this transaction, if any. + #[cfg(feature = "tx-v6")] orchard_zsa_issue_data: Option, }, } @@ -319,7 +339,9 @@ impl Transaction { | Transaction::V2 { .. } | Transaction::V3 { .. } | Transaction::V4 { .. } => None, - Transaction::V5 { .. } | Transaction::V6 { .. } => Some(AuthDigest::from(self)), + Transaction::V5 { .. } => Some(AuthDigest::from(self)), + #[cfg(feature = "tx-v6")] + Transaction::V6 { .. } => Some(AuthDigest::from(self)), } } @@ -392,10 +414,9 @@ impl Transaction { pub fn is_overwintered(&self) -> bool { match self { Transaction::V1 { .. } | Transaction::V2 { .. } => false, - Transaction::V3 { .. } - | Transaction::V4 { .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => true, + Transaction::V3 { .. } | Transaction::V4 { .. } | Transaction::V5 { .. } => true, + #[cfg(feature = "tx-v6")] + Transaction::V6 { .. } => true, } } @@ -407,6 +428,7 @@ impl Transaction { Transaction::V3 { .. } => 3, Transaction::V4 { .. } => 4, Transaction::V5 { .. } => 5, + #[cfg(feature = "tx-v6")] Transaction::V6 { .. } => 6, } } @@ -418,8 +440,9 @@ impl Transaction { | Transaction::V2 { lock_time, .. } | Transaction::V3 { lock_time, .. } | Transaction::V4 { lock_time, .. } - | Transaction::V5 { lock_time, .. } - | Transaction::V6 { lock_time, .. } => *lock_time, + | Transaction::V5 { lock_time, .. } => *lock_time, + #[cfg(feature = "tx-v6")] + Transaction::V6 { lock_time, .. } => *lock_time, }; // `zcashd` checks that the block height is greater than the lock height. @@ -466,8 +489,9 @@ impl Transaction { | Transaction::V2 { lock_time, .. } | Transaction::V3 { lock_time, .. } | Transaction::V4 { lock_time, .. } - | Transaction::V5 { lock_time, .. } - | Transaction::V6 { lock_time, .. } => *lock_time, + | Transaction::V5 { lock_time, .. } => *lock_time, + #[cfg(feature = "tx-v6")] + Transaction::V6 { lock_time, .. } => *lock_time, }; let mut lock_time_bytes = Vec::new(); lock_time From 763cded7ed0b2c2aeeceabe0a7e9f680d5a4ece5 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 2 Oct 2024 10:37:23 +0200 Subject: [PATCH 027/230] Use tx-v6 feature across all crates --- zebra-chain/Cargo.toml | 2 +- zebra-chain/src/parameters/transaction.rs | 1 + .../src/primitives/zcash_primitives.rs | 7 +- zebra-chain/src/transaction.rs | 195 +++++------------- zebra-chain/src/transaction/arbitrary.rs | 3 + zebra-chain/src/transaction/serialize.rs | 10 +- zebra-chain/src/transaction/tests/vectors.rs | 6 +- zebra-chain/src/transaction/txid.rs | 4 +- zebra-chain/src/transaction/unmined.rs | 4 +- zebra-consensus/Cargo.toml | 7 + zebra-consensus/src/primitives/halo2/tests.rs | 1 + zebra-consensus/src/transaction.rs | 3 +- zebra-state/Cargo.toml | 7 + .../src/service/non_finalized_state/chain.rs | 2 + zebra-state/src/tests.rs | 1 + zebrad/Cargo.toml | 10 +- .../components/mempool/storage/tests/prop.rs | 13 +- 17 files changed, 112 insertions(+), 164 deletions(-) diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index f2997f2f950..5e539fddba5 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -63,7 +63,7 @@ bench = ["zebra-test"] # Support for transaction version 6 tx-v6 = [ - "nonempty" + "nonempty" ] [dependencies] diff --git a/zebra-chain/src/parameters/transaction.rs b/zebra-chain/src/parameters/transaction.rs index 77b88abca44..d7391bdf184 100644 --- a/zebra-chain/src/parameters/transaction.rs +++ b/zebra-chain/src/parameters/transaction.rs @@ -17,4 +17,5 @@ pub const TX_V5_VERSION_GROUP_ID: u32 = 0x26A7_270A; /// Orchard transactions must use transaction version 5 and this version /// group ID. // FIXME: use a proper value! +#[cfg(feature = "tx-v6")] pub const TX_V6_VERSION_GROUP_ID: u32 = 0x26A7_270B; diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index f69f4081446..0d10f8546af 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -10,7 +10,7 @@ use crate::{ amount::{Amount, NonNegative}, parameters::{ConsensusBranchId, Network}, serialization::ZcashSerialize, - transaction::{AuthDigest, HashType, SigHash, Transaction}, + transaction::{tx_v5_and_v6, AuthDigest, HashType, SigHash, Transaction}, transparent::{self, Script}, }; @@ -183,10 +183,7 @@ impl TryFrom<&Transaction> for zp_tx::Transaction { #[allow(clippy::unwrap_in_result)] fn try_from(trans: &Transaction) -> Result { let network_upgrade = match trans { - Transaction::V5 { - network_upgrade, .. - } - | Transaction::V6 { + tx_v5_and_v6! { network_upgrade, .. } => network_upgrade, Transaction::V1 { .. } diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 4ed61e2dfd1..e60f13b57a1 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -105,18 +105,21 @@ macro_rules! orchard_shielded_data_field { // FIXME: // Define the macro for including the V6 pattern -//#[cfg(feature = "tx-v6")] -macro_rules! with_v6 { - () => { - | Transaction::V6 { expiry_height, .. } +#[cfg(feature = "tx-v6")] +macro_rules! tx_v5_and_v6 { + { $($fields:tt)* } => { + Transaction::V5 { $($fields)* } | Transaction::V6 { $($fields)* } }; } -// FIXME: -//#[cfg(not(feature = "tx-v6"))] -//macro_rules! with_v6 { -// () => {}; -//} +#[cfg(not(feature = "tx-v6"))] +macro_rules! tx_v5_and_v6 { + { $($fields:tt)* } => { + Transaction::V5 { $($fields)* } + }; +} + +pub(crate) use tx_v5_and_v6; /// A Zcash transaction. /// @@ -339,9 +342,7 @@ impl Transaction { | Transaction::V2 { .. } | Transaction::V3 { .. } | Transaction::V4 { .. } => None, - Transaction::V5 { .. } => Some(AuthDigest::from(self)), - #[cfg(feature = "tx-v6")] - Transaction::V6 { .. } => Some(AuthDigest::from(self)), + tx_v5_and_v6! { .. } => Some(AuthDigest::from(self)), } } @@ -414,9 +415,7 @@ impl Transaction { pub fn is_overwintered(&self) -> bool { match self { Transaction::V1 { .. } | Transaction::V2 { .. } => false, - Transaction::V3 { .. } | Transaction::V4 { .. } | Transaction::V5 { .. } => true, - #[cfg(feature = "tx-v6")] - Transaction::V6 { .. } => true, + Transaction::V3 { .. } | Transaction::V4 { .. } | tx_v5_and_v6! { .. } => true, } } @@ -440,9 +439,7 @@ impl Transaction { | Transaction::V2 { lock_time, .. } | Transaction::V3 { lock_time, .. } | Transaction::V4 { lock_time, .. } - | Transaction::V5 { lock_time, .. } => *lock_time, - #[cfg(feature = "tx-v6")] - Transaction::V6 { lock_time, .. } => *lock_time, + | tx_v5_and_v6! { lock_time, .. } => *lock_time, }; // `zcashd` checks that the block height is greater than the lock height. @@ -489,9 +486,7 @@ impl Transaction { | Transaction::V2 { lock_time, .. } | Transaction::V3 { lock_time, .. } | Transaction::V4 { lock_time, .. } - | Transaction::V5 { lock_time, .. } => *lock_time, - #[cfg(feature = "tx-v6")] - Transaction::V6 { lock_time, .. } => *lock_time, + | tx_v5_and_v6! { lock_time, .. } => *lock_time, }; let mut lock_time_bytes = Vec::new(); lock_time @@ -521,8 +516,7 @@ impl Transaction { Transaction::V1 { .. } | Transaction::V2 { .. } => None, Transaction::V3 { expiry_height, .. } | Transaction::V4 { expiry_height, .. } - | Transaction::V5 { expiry_height, .. } - | Transaction::V6 { expiry_height, .. } => match expiry_height { + | tx_v5_and_v6! { expiry_height, .. } => match expiry_height { // Consensus rule: // > No limit: To set no limit on transactions (so that they do not expire), nExpiryHeight should be set to 0. // https://zips.z.cash/zip-0203#specification @@ -551,11 +545,7 @@ impl Transaction { ref mut expiry_height, .. } - | Transaction::V5 { - ref mut expiry_height, - .. - } - | Transaction::V6 { + | tx_v5_and_v6! { ref mut expiry_height, .. } => expiry_height, @@ -572,10 +562,7 @@ impl Transaction { | Transaction::V2 { .. } | Transaction::V3 { .. } | Transaction::V4 { .. } => None, - Transaction::V5 { - network_upgrade, .. - } - | Transaction::V6 { + tx_v5_and_v6! { network_upgrade, .. } => Some(*network_upgrade), } @@ -590,8 +577,7 @@ impl Transaction { Transaction::V2 { ref inputs, .. } => inputs, Transaction::V3 { ref inputs, .. } => inputs, Transaction::V4 { ref inputs, .. } => inputs, - Transaction::V5 { ref inputs, .. } => inputs, - Transaction::V6 { ref inputs, .. } => inputs, + tx_v5_and_v6! { ref inputs, .. } => inputs, } } @@ -603,8 +589,7 @@ impl Transaction { Transaction::V2 { ref mut inputs, .. } => inputs, Transaction::V3 { ref mut inputs, .. } => inputs, Transaction::V4 { ref mut inputs, .. } => inputs, - Transaction::V5 { ref mut inputs, .. } => inputs, - Transaction::V6 { ref mut inputs, .. } => inputs, + tx_v5_and_v6! { ref mut inputs, .. } => inputs, } } @@ -622,8 +607,7 @@ impl Transaction { Transaction::V2 { ref outputs, .. } => outputs, Transaction::V3 { ref outputs, .. } => outputs, Transaction::V4 { ref outputs, .. } => outputs, - Transaction::V5 { ref outputs, .. } => outputs, - Transaction::V6 { ref outputs, .. } => outputs, + tx_v5_and_v6! { ref outputs, .. } => outputs, } } @@ -643,10 +627,7 @@ impl Transaction { Transaction::V4 { ref mut outputs, .. } => outputs, - Transaction::V5 { - ref mut outputs, .. - } => outputs, - Transaction::V6 { + tx_v5_and_v6! { ref mut outputs, .. } => outputs, } @@ -696,8 +677,7 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => Box::new(std::iter::empty()), + | tx_v5_and_v6! { .. } => Box::new(std::iter::empty()), } } @@ -732,8 +712,7 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => 0, + | tx_v5_and_v6! { .. } => 0, } } @@ -772,8 +751,7 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => Box::new(std::iter::empty()), + | tx_v5_and_v6! { .. } => Box::new(std::iter::empty()), } } @@ -809,8 +787,7 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => None, + | tx_v5_and_v6! { .. } => None, } } @@ -818,7 +795,7 @@ impl Transaction { pub fn has_sprout_joinsplit_data(&self) -> bool { match self { // No JoinSplits - Transaction::V1 { .. } | Transaction::V5 { .. } | Transaction::V6 { .. } => false, + Transaction::V1 { .. } | tx_v5_and_v6! { .. } => false, // JoinSplits-on-BCTV14 Transaction::V2 { joinsplit_data, .. } | Transaction::V3 { joinsplit_data, .. } => { @@ -865,8 +842,7 @@ impl Transaction { .. } | Transaction::V1 { .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => Box::new(std::iter::empty()), + | tx_v5_and_v6! { .. } => Box::new(std::iter::empty()), } } @@ -883,12 +859,7 @@ impl Transaction { .. } => Box::new(sapling_shielded_data.anchors()), - Transaction::V5 { - sapling_shielded_data: Some(sapling_shielded_data), - .. - } => Box::new(sapling_shielded_data.anchors()), - - Transaction::V6 { + tx_v5_and_v6! { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.anchors()), @@ -901,11 +872,7 @@ impl Transaction { sapling_shielded_data: None, .. } - | Transaction::V5 { - sapling_shielded_data: None, - .. - } - | Transaction::V6 { + | tx_v5_and_v6! { sapling_shielded_data: None, .. } => Box::new(std::iter::empty()), @@ -930,11 +897,7 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.spends_per_anchor()), - Transaction::V5 { - sapling_shielded_data: Some(sapling_shielded_data), - .. - } => Box::new(sapling_shielded_data.spends_per_anchor()), - Transaction::V6 { + tx_v5_and_v6! { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.spends_per_anchor()), @@ -947,11 +910,7 @@ impl Transaction { sapling_shielded_data: None, .. } - | Transaction::V5 { - sapling_shielded_data: None, - .. - } - | Transaction::V6 { + | tx_v5_and_v6! { sapling_shielded_data: None, .. } => Box::new(std::iter::empty()), @@ -966,11 +925,7 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.outputs()), - Transaction::V5 { - sapling_shielded_data: Some(sapling_shielded_data), - .. - } => Box::new(sapling_shielded_data.outputs()), - Transaction::V6 { + tx_v5_and_v6! { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.outputs()), @@ -983,11 +938,7 @@ impl Transaction { sapling_shielded_data: None, .. } - | Transaction::V5 { - sapling_shielded_data: None, - .. - } - | Transaction::V6 { + | tx_v5_and_v6! { sapling_shielded_data: None, .. } => Box::new(std::iter::empty()), @@ -1004,11 +955,7 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.nullifiers()), - Transaction::V5 { - sapling_shielded_data: Some(sapling_shielded_data), - .. - } => Box::new(sapling_shielded_data.nullifiers()), - Transaction::V6 { + tx_v5_and_v6! { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.nullifiers()), @@ -1021,11 +968,7 @@ impl Transaction { sapling_shielded_data: None, .. } - | Transaction::V5 { - sapling_shielded_data: None, - .. - } - | Transaction::V6 { + | tx_v5_and_v6! { sapling_shielded_data: None, .. } => Box::new(std::iter::empty()), @@ -1042,11 +985,7 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.note_commitments()), - Transaction::V5 { - sapling_shielded_data: Some(sapling_shielded_data), - .. - } => Box::new(sapling_shielded_data.note_commitments()), - Transaction::V6 { + tx_v5_and_v6! { sapling_shielded_data: Some(sapling_shielded_data), .. } => Box::new(sapling_shielded_data.note_commitments()), @@ -1059,11 +998,7 @@ impl Transaction { sapling_shielded_data: None, .. } - | Transaction::V5 { - sapling_shielded_data: None, - .. - } - | Transaction::V6 { + | tx_v5_and_v6! { sapling_shielded_data: None, .. } => Box::new(std::iter::empty()), @@ -1078,11 +1013,7 @@ impl Transaction { sapling_shielded_data, .. } => sapling_shielded_data.is_some(), - Transaction::V5 { - sapling_shielded_data, - .. - } => sapling_shielded_data.is_some(), - Transaction::V6 { + tx_v5_and_v6! { sapling_shielded_data, .. } => sapling_shielded_data.is_some(), @@ -1212,8 +1143,7 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => Box::new(std::iter::empty()), + | tx_v5_and_v6! { .. } => Box::new(std::iter::empty()), } } @@ -1262,8 +1192,7 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => Box::new(std::iter::empty()), + | tx_v5_and_v6! { .. } => Box::new(std::iter::empty()), } } @@ -1310,8 +1239,7 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => Box::new(std::iter::empty()), + | tx_v5_and_v6! { .. } => Box::new(std::iter::empty()), } } @@ -1360,8 +1288,7 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => Box::new(std::iter::empty()), + | tx_v5_and_v6! { .. } => Box::new(std::iter::empty()), } } @@ -1402,8 +1329,7 @@ impl Transaction { joinsplit_data: None, .. } - | Transaction::V5 { .. } - | Transaction::V6 { .. } => Box::new(iter::empty()), + | tx_v5_and_v6! { .. } => Box::new(iter::empty()), }; joinsplit_value_balances.map(ValueBalance::from_sprout_amount) @@ -1441,11 +1367,7 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => sapling_shielded_data.value_balance, - Transaction::V5 { - sapling_shielded_data: Some(sapling_shielded_data), - .. - } => sapling_shielded_data.value_balance, - Transaction::V6 { + tx_v5_and_v6! { sapling_shielded_data: Some(sapling_shielded_data), .. } => sapling_shielded_data.value_balance, @@ -1457,11 +1379,7 @@ impl Transaction { sapling_shielded_data: None, .. } - | Transaction::V5 { - sapling_shielded_data: None, - .. - } - | Transaction::V6 { + | tx_v5_and_v6! { sapling_shielded_data: None, .. } => Amount::zero(), @@ -1481,11 +1399,7 @@ impl Transaction { sapling_shielded_data: Some(sapling_shielded_data), .. } => Some(&mut sapling_shielded_data.value_balance), - Transaction::V5 { - sapling_shielded_data: Some(sapling_shielded_data), - .. - } => Some(&mut sapling_shielded_data.value_balance), - Transaction::V6 { + tx_v5_and_v6! { sapling_shielded_data: Some(sapling_shielded_data), .. } => Some(&mut sapling_shielded_data.value_balance), @@ -1496,11 +1410,7 @@ impl Transaction { sapling_shielded_data: None, .. } - | Transaction::V5 { - sapling_shielded_data: None, - .. - } - | Transaction::V6 { + | tx_v5_and_v6! { sapling_shielded_data: None, .. } => None, @@ -1537,6 +1447,7 @@ impl Transaction { .. } => Some(&mut orchard_shielded_data.value_balance), + #[cfg(feature = "tx-v6")] Transaction::V6 { orchard_shielded_data: Some(orchard_shielded_data), .. @@ -1549,8 +1460,10 @@ impl Transaction { | Transaction::V5 { orchard_shielded_data: None, .. - } - | Transaction::V6 { + } => None, + + #[cfg(feature = "tx-v6")] + Transaction::V6 { orchard_shielded_data: None, .. } => None, diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 753c68d2fe0..ffd169f651f 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -722,6 +722,7 @@ impl Arbitrary for orchard::ShieldedData { .try_into() .expect("arbitrary vector size range produces at least one action"), binding_sig: binding_sig.0, + #[cfg(feature = "tx-v6")] burn: Default::default(), }, ) @@ -919,6 +920,7 @@ pub fn transaction_to_fake_v5( orchard_shielded_data: None, }, v5 @ V5 { .. } => v5.clone(), + #[cfg(feature = "tx-v6")] V6 { inputs, outputs, @@ -1077,6 +1079,7 @@ pub fn insert_fake_orchard_shielded_data( proof: Halo2Proof(vec![]), actions: at_least_one![dummy_authorized_action], binding_sig: Signature::from([0u8; 64]), + #[cfg(feature = "tx-v6")] burn: Default::default(), }; diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index e851bb158cf..f5fd254773d 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -12,10 +12,7 @@ use crate::{ amount, block::MAX_BLOCK_BYTES, orchard::OrchardFlavorExt, - parameters::{ - OVERWINTER_VERSION_GROUP_ID, SAPLING_VERSION_GROUP_ID, TX_V5_VERSION_GROUP_ID, - TX_V6_VERSION_GROUP_ID, - }, + parameters::{OVERWINTER_VERSION_GROUP_ID, SAPLING_VERSION_GROUP_ID, TX_V5_VERSION_GROUP_ID}, primitives::{Halo2Proof, ZkSnarkProof}, serialization::{ zcash_deserialize_external_count, zcash_serialize_empty_list, @@ -24,6 +21,9 @@ use crate::{ }, }; +#[cfg(feature = "tx-v6")] +use crate::parameters::TX_V6_VERSION_GROUP_ID; + use super::*; use crate::sapling; @@ -689,6 +689,7 @@ impl ZcashSerialize for Transaction { orchard_shielded_data.zcash_serialize(&mut writer)?; } + #[cfg(feature = "tx-v6")] Transaction::V6 { network_upgrade, lock_time, @@ -997,6 +998,7 @@ impl ZcashDeserialize for Transaction { }) } // FIXME: implement a proper deserialization for V6 + #[cfg(feature = "tx-v6")] (6, true) => { // FIXME: fix spec or use another link as the current version of the PDF // doesn't contain V6 description. diff --git a/zebra-chain/src/transaction/tests/vectors.rs b/zebra-chain/src/transaction/tests/vectors.rs index f20bfaef455..9e0af8adf63 100644 --- a/zebra-chain/src/transaction/tests/vectors.rs +++ b/zebra-chain/src/transaction/tests/vectors.rs @@ -988,11 +988,7 @@ fn binding_signatures_for_network(network: Network) { .expect("must pass verification"); } } - Transaction::V5 { - sapling_shielded_data, - .. - } - | Transaction::V6 { + tx_v5_and_v6! { sapling_shielded_data, .. } => { diff --git a/zebra-chain/src/transaction/txid.rs b/zebra-chain/src/transaction/txid.rs index eb05fd6edb3..08172459ade 100644 --- a/zebra-chain/src/transaction/txid.rs +++ b/zebra-chain/src/transaction/txid.rs @@ -2,7 +2,7 @@ //! from the transaction. use std::io; -use super::{Hash, Transaction}; +use super::{tx_v5_and_v6, Hash, Transaction}; use crate::serialization::{sha256d, ZcashSerialize}; /// A Transaction ID builder. It computes the transaction ID by hashing @@ -28,7 +28,7 @@ impl<'a> TxIdBuilder<'a> { | Transaction::V2 { .. } | Transaction::V3 { .. } | Transaction::V4 { .. } => self.txid_v1_to_v4(), - Transaction::V5 { .. } | Transaction::V6 { .. } => self.txid_v5_v6(), + tx_v5_and_v6! { .. } => self.txid_v5_v6(), } } diff --git a/zebra-chain/src/transaction/unmined.rs b/zebra-chain/src/transaction/unmined.rs index 554e8c3f0e1..ce327ae9f76 100644 --- a/zebra-chain/src/transaction/unmined.rs +++ b/zebra-chain/src/transaction/unmined.rs @@ -21,7 +21,7 @@ use crate::{ amount::{Amount, NonNegative}, serialization::ZcashSerialize, transaction::{ - AuthDigest, Hash, + tx_v5_and_v6, AuthDigest, Hash, Transaction::{self, *}, WtxId, }, @@ -140,7 +140,7 @@ impl From<&Transaction> for UnminedTxId { fn from(transaction: &Transaction) -> Self { match transaction { V1 { .. } | V2 { .. } | V3 { .. } | V4 { .. } => Legacy(transaction.into()), - V5 { .. } | V6 { .. } => Witnessed(transaction.into()), + tx_v5_and_v6! { .. } => Witnessed(transaction.into()), } } } diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index f49041d0ba1..66ebb405492 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -16,6 +16,7 @@ categories = ["asynchronous", "cryptography::cryptocurrencies"] [features] default = [] +#default = ["tx-v6"] # Production features that activate extra dependencies, or extra features in dependencies @@ -34,6 +35,12 @@ getblocktemplate-rpcs = [ # Test-only features proptest-impl = ["proptest", "proptest-derive", "zebra-chain/proptest-impl", "zebra-state/proptest-impl"] +# Support for transaction version 6 +tx-v6 = [ + "zebra-state/tx-v6", + "zebra-chain/tx-v6" +] + [dependencies] blake2b_simd = "1.0.2" bellman = "0.14.0" diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 12f2635b3b2..8af73f182e1 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -108,6 +108,7 @@ fn generate_test_vectors() { .unwrap(), binding_sig: <[u8; 64]>::from(bundle.authorization().binding_signature()).into(), // FIXME: use a proper value when implementing V6 + #[cfg(feature = "tx-v6")] burn: Default::default(), } }) diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index 0be7fea38f3..e91f576f2a5 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -415,7 +415,8 @@ where orchard_shielded_data, )?, // FIXME: implement proper V6 verification - | Transaction::V6 { + #[cfg(feature = "tx-v6")] + Transaction::V6 { .. } => { tracing::debug!(?tx, "V6 transaction verification is not supported for now"); diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index db14f448c4b..1cabe066258 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -15,6 +15,8 @@ keywords = ["zebra", "zcash"] categories = ["asynchronous", "caching", "cryptography::cryptocurrencies"] [features] +default = [] +#default = ["tx-v6"] # Production features that activate extra dependencies, or extra features in dependencies @@ -45,6 +47,11 @@ elasticsearch = [ "zebra-chain/elasticsearch", ] +# Support for transaction version 6 +tx-v6 = [ + "zebra-chain/tx-v6" +] + [dependencies] bincode = "1.3.3" chrono = { version = "0.4.38", default-features = false, features = ["clock", "std"] } diff --git a/zebra-state/src/service/non_finalized_state/chain.rs b/zebra-state/src/service/non_finalized_state/chain.rs index 4539eb6aaa0..190f8b1a930 100644 --- a/zebra-state/src/service/non_finalized_state/chain.rs +++ b/zebra-state/src/service/non_finalized_state/chain.rs @@ -1521,6 +1521,7 @@ impl Chain { sapling_shielded_data, orchard_shielded_data, ), + #[cfg(feature ="tx-v6")] V6 { inputs, outputs, @@ -1697,6 +1698,7 @@ impl UpdateWith for Chain { sapling_shielded_data, orchard_shielded_data, ), + #[cfg(feature = "tx-v6")] V6 { inputs, outputs, diff --git a/zebra-state/src/tests.rs b/zebra-state/src/tests.rs index 6b955480572..d01a871f142 100644 --- a/zebra-state/src/tests.rs +++ b/zebra-state/src/tests.rs @@ -34,6 +34,7 @@ impl FakeChainHelper for Arc { Transaction::V3 { inputs, .. } => &mut inputs[0], Transaction::V4 { inputs, .. } => &mut inputs[0], Transaction::V5 { inputs, .. } => &mut inputs[0], + #[cfg(feature = "tx-v6")] Transaction::V6 { inputs, .. } => &mut inputs[0], }; diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 6b4f2cfec8d..2df700dfc57 100644 --- a/zebrad/Cargo.toml +++ b/zebrad/Cargo.toml @@ -52,7 +52,8 @@ features = [ [features] # In release builds, don't compile debug logging code, to improve performance. -default = ["release_max_level_info", "progress-bar", "getblocktemplate-rpcs"] +#default = ["release_max_level_info", "progress-bar", "getblocktemplate-rpcs"] +default = ["release_max_level_info", "progress-bar", "getblocktemplate-rpcs", "tx-v6"] # Default features for official ZF binary release builds default-release-binaries = ["default", "sentry"] @@ -156,6 +157,13 @@ test_sync_to_mandatory_checkpoint_testnet = [] test_sync_past_mandatory_checkpoint_mainnet = [] test_sync_past_mandatory_checkpoint_testnet = [] +# Support for transaction version 6 +tx-v6 = [ + "zebra-consensus/tx-v6", + "zebra-state/tx-v6", + "zebra-chain/tx-v6" +] + [dependencies] zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.39" } zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.39" } diff --git a/zebrad/src/components/mempool/storage/tests/prop.rs b/zebrad/src/components/mempool/storage/tests/prop.rs index 2dde9d1d470..d3ef954063d 100644 --- a/zebrad/src/components/mempool/storage/tests/prop.rs +++ b/zebrad/src/components/mempool/storage/tests/prop.rs @@ -568,7 +568,11 @@ impl SpendConflictTestInput { } // No JoinSplits - Transaction::V1 { .. } | Transaction::V5 { .. } | Transaction::V6 { .. } => {} + Transaction::V1 { .. } | Transaction::V5 { .. } => {} + + // No JoinSplits + #[cfg(feature = "tx-v6")] + Transaction::V6 { .. } => {} } } } @@ -635,8 +639,12 @@ impl SpendConflictTestInput { Transaction::V5 { sapling_shielded_data, .. + } => { + Self::remove_sapling_transfers_with_conflicts(sapling_shielded_data, &conflicts) } - | Transaction::V6 { + + #[cfg(feature = "tx-v6")] + Transaction::V6 { sapling_shielded_data, .. } => { @@ -715,6 +723,7 @@ impl SpendConflictTestInput { } => Self::remove_orchard_actions_with_conflicts(orchard_shielded_data, &conflicts), // FIXME: implement for V6 + #[cfg(feature = "tx-v6")] Transaction::V6 { orchard_shielded_data: _, .. From c979861c296f073d9a4d9fa814b9bd9a76ea1d41 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 2 Oct 2024 12:52:16 +0200 Subject: [PATCH 028/230] Patch path for zcash_keys in Cargo.toml to avoid crate duplication in the crate tree --- Cargo.lock | 30 ++---------------------------- Cargo.toml | 1 + 2 files changed, 3 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d1e183bc90b..ae2e712bd81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5819,7 +5819,7 @@ dependencies = [ "which", "zcash_address", "zcash_encoding", - "zcash_keys 0.2.0 (git+https://github.com/QED-it/librustzcash?branch=txv6-separate-bundles-rebased-dd2)", + "zcash_keys", "zcash_note_encryption", "zcash_primitives", "zcash_protocol", @@ -5846,32 +5846,6 @@ dependencies = [ "primitive-types", ] -[[package]] -name = "zcash_keys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "663489ffb4e51bc4436ff8796832612a9ff3c6516f1c620b5a840cb5dcd7b866" -dependencies = [ - "bech32", - "blake2b_simd", - "bls12_381", - "bs58", - "document-features", - "group", - "memuse", - "nonempty", - "rand_core 0.6.4", - "sapling-crypto", - "secrecy", - "subtle", - "tracing", - "zcash_address", - "zcash_encoding", - "zcash_primitives", - "zcash_protocol", - "zip32", -] - [[package]] name = "zcash_keys" version = "0.2.0" @@ -6257,7 +6231,7 @@ dependencies = [ "tracing-subscriber", "zcash_address", "zcash_client_backend", - "zcash_keys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zcash_keys", "zcash_note_encryption", "zcash_primitives", "zebra-chain", diff --git a/Cargo.toml b/Cargo.toml index 8e67fb8e048..ea9d38d197f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -114,3 +114,4 @@ zcash_address = { version = "0.3.2", git = "https://github.com/QED-it/librustzca zcash_encoding = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd2" } zcash_history = { version = "0.4.0", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd2" } zcash_client_backend = { version = "0.12.1", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd2" } +zcash_keys = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "txv6-separate-bundles-rebased-dd2" } From 342202623a979ba21ad71792d25db115803e320c Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 8 Oct 2024 14:28:16 +0200 Subject: [PATCH 029/230] Add Burn and Issuance ZSA structs to Orchard proptests --- Cargo.lock | 1 + zebra-chain/Cargo.toml | 6 +- zebra-chain/src/orchard/arbitrary.rs | 18 ++- zebra-chain/src/orchard/orchard_flavor_ext.rs | 17 +- zebra-chain/src/orchard_zsa.rs | 4 + zebra-chain/src/orchard_zsa/burn.rs | 11 +- zebra-chain/src/orchard_zsa/issuance.rs | 6 + zebra-chain/src/transaction/arbitrary.rs | 146 ++++++++++++++---- zebra-consensus/Cargo.toml | 4 +- 9 files changed, 172 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ae2e712bd81..562242cdc4f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2883,6 +2883,7 @@ dependencies = [ "memuse", "nonempty", "pasta_curves", + "proptest", "rand 0.8.5", "reddsa", "serde", diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 5e539fddba5..abd1b542e25 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -15,8 +15,8 @@ keywords = ["zebra", "zcash"] categories = ["asynchronous", "cryptography::cryptocurrencies", "encoding"] [features] -default = [] -#default = ["tx-v6"] +#default = [] +default = ["tx-v6"] # Production features that activate extra functionality @@ -179,6 +179,8 @@ tokio = { version = "1.39.2", features = ["full", "tracing", "test-util"] } zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.39" } +orchard = { workspace = true, features = ["test-dependencies"] } + [[bench]] name = "block" harness = false diff --git a/zebra-chain/src/orchard/arbitrary.rs b/zebra-chain/src/orchard/arbitrary.rs index 54572085f11..89618e451ad 100644 --- a/zebra-chain/src/orchard/arbitrary.rs +++ b/zebra-chain/src/orchard/arbitrary.rs @@ -11,17 +11,21 @@ use proptest::{array, collection::vec, prelude::*}; use super::{ keys::*, note, tree, Action, AuthorizedAction, Flags, NoteCommitment, OrchardFlavorExt, - OrchardVanilla, ValueCommitment, + ValueCommitment, }; -impl Arbitrary for Action { +impl Arbitrary for Action +// FIXME: define the constraint in OrchardFlavorExt? +where + ::Strategy: 'static, +{ type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { ( any::(), any::(), - any::>(), + any::(), any::(), ) .prop_map(|(nullifier, rk, enc_ciphertext, out_ciphertext)| Self { @@ -55,11 +59,15 @@ impl Arbitrary for note::Nullifier { type Strategy = BoxedStrategy; } -impl Arbitrary for AuthorizedAction { +impl Arbitrary for AuthorizedAction +// FIXME: define the constraint in OrchardFlavorExt? +where + ::Strategy: 'static, +{ type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - (any::>(), any::()) + (any::>(), any::()) .prop_map(|(action, spend_auth_sig)| Self { action, spend_auth_sig: spend_auth_sig.0, diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index f8ce25d0ed5..de99cd6f375 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -16,10 +16,21 @@ use super::note; #[cfg(feature = "tx-v6")] use crate::orchard_zsa::burn::BurnItem; +#[cfg(not(any(test, feature = "proptest-impl")))] +pub trait EncryptedNoteTest {} + +#[cfg(not(any(test, feature = "proptest-impl")))] +impl EncryptedNoteTest for T {} + +#[cfg(any(test, feature = "proptest-impl"))] +pub trait EncryptedNoteTest: proptest::prelude::Arbitrary {} + +#[cfg(any(test, feature = "proptest-impl"))] +impl EncryptedNoteTest for T {} + /// A trait representing compile-time settings of Orchard Shielded Protocol used in /// the transactions `V5` and `V6`. pub trait OrchardFlavorExt: Clone + Debug { - /// A type representing an encrypted note for this protocol version. /// A type representing an encrypted note for this protocol version. type EncryptedNote: Clone + Debug @@ -28,7 +39,8 @@ pub trait OrchardFlavorExt: Clone + Debug { + DeserializeOwned + Serialize + ZcashDeserialize - + ZcashSerialize; + + ZcashSerialize + + EncryptedNoteTest; /// FIXME: add doc type Flavor: orchard_flavor::OrchardFlavor; @@ -37,6 +49,7 @@ pub trait OrchardFlavorExt: Clone + Debug { const ENCRYPTED_NOTE_SIZE: usize = Self::Flavor::ENC_CIPHERTEXT_SIZE; /// A type representing a burn field for this protocol version. + // FIXME: add cfg tx-v6 here? type BurnType: Clone + Debug + Default + ZcashDeserialize + ZcashSerialize; } diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index 9806850daf9..651a146e796 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -1,5 +1,9 @@ //! Orchard ZSA related functionality. +// FIXME: remove pub(crate) later if possible +#[cfg(any(test, feature = "proptest-impl"))] +pub(crate) mod arbitrary; + pub mod burn; pub mod issuance; pub mod serialize; diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index 04c878feb49..85b235258e8 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -8,7 +8,7 @@ use crate::{ serialization::{SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashSerialize}, }; -use orchard::note::AssetBase; +use orchard::{note::AssetBase, value::NoteValue}; use super::serialize::ASSET_BASE_SIZE; @@ -21,6 +21,15 @@ const BURN_ITEM_SIZE: u64 = ASSET_BASE_SIZE + AMOUNT_SIZE; #[derive(Clone, Debug, PartialEq, Eq)] pub struct BurnItem(AssetBase, Amount); +// Convert from burn item type used in `orchard` crate +impl TryFrom<(AssetBase, NoteValue)> for BurnItem { + type Error = crate::amount::Error; + + fn try_from(item: (AssetBase, NoteValue)) -> Result { + Ok(Self(item.0, item.1.inner().try_into()?)) + } +} + impl ZcashSerialize for BurnItem { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { let BurnItem(asset_base, amount) = self; diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index 3e55edcf14d..be4451d7e82 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -33,6 +33,12 @@ use super::serialize::ASSET_BASE_SIZE; #[derive(Clone, Debug, PartialEq, Eq)] pub struct IssueData(IssueBundle); +impl From> for IssueData { + fn from(inner: IssueBundle) -> Self { + Self(inner) + } +} + // Sizes of the serialized values for types in bytes (used for TrustedPreallocate impls) // FIXME: are those values correct (43, 32 etc.)? //const ISSUANCE_VALIDATING_KEY_SIZE: u64 = 32; diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index ffd169f651f..25c669a16a3 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -11,6 +11,7 @@ use crate::{ at_least_one, block::{self, arbitrary::MAX_PARTIAL_CHAIN_BLOCKS}, orchard, + orchard_zsa::arbitrary::ArbitraryBurn, parameters::{Network, NetworkUpgrade}, primitives::{Bctv14Proof, Groth16Proof, Halo2Proof, ZkSnarkProof}, sapling::{self, AnchorVariant, PerSpendAnchor, SharedAnchor}, @@ -132,8 +133,23 @@ impl Transaction { .boxed() } - /// Generate a proptest strategy for V5 Transactions - pub fn v5_strategy(ledger_state: LedgerState) -> BoxedStrategy { + fn v5_v6_strategy( + ledger_state: LedgerState, + construct_transaction: F, + ) -> BoxedStrategy + where + F: Fn( + NetworkUpgrade, + LockTime, + block::Height, + Vec, + Vec, + Option>, + Option>, + ) -> Transaction + + 'static, + V: Clone + 'static, + { ( NetworkUpgrade::branch_id_strategy(), any::(), @@ -141,7 +157,7 @@ impl Transaction { transparent::Input::vec_strategy(&ledger_state, MAX_ARBITRARY_ITEMS), vec(any::(), 0..MAX_ARBITRARY_ITEMS), option::of(any::>()), - option::of(any::>()), + any::>>(), ) .prop_map( move |( @@ -153,34 +169,89 @@ impl Transaction { sapling_shielded_data, orchard_shielded_data, )| { - Transaction::V5 { - network_upgrade: if ledger_state.transaction_has_valid_network_upgrade() { - ledger_state.network_upgrade() - } else { - network_upgrade - }, + let network_upgrade = if ledger_state.transaction_has_valid_network_upgrade() { + ledger_state.network_upgrade() + } else { + network_upgrade + }; + + let sapling_shielded_data = if ledger_state.height.is_min() { + None + } else { + sapling_shielded_data + }; + + let orchard_shielded_data = if ledger_state.height.is_min() { + None + } else { + orchard_shielded_data + }; + + construct_transaction( + network_upgrade, lock_time, expiry_height, inputs, outputs, - sapling_shielded_data: if ledger_state.height.is_min() { - // The genesis block should not contain any shielded data. - None - } else { - sapling_shielded_data - }, - orchard_shielded_data: if ledger_state.height.is_min() { - // The genesis block should not contain any shielded data. - None - } else { - orchard_shielded_data - }, - } + sapling_shielded_data, + orchard_shielded_data, + ) }, ) .boxed() } + /// Generate a proptest strategy for V5 Transactions + pub fn v5_strategy(ledger_state: LedgerState) -> BoxedStrategy { + Self::v5_v6_strategy( + ledger_state, + |network_upgrade, + lock_time, + expiry_height, + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data| { + Transaction::V5 { + network_upgrade, + lock_time, + expiry_height, + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data, + } + }, + ) + } + + /// Generate a proptest strategy for V6 Transactions + #[cfg(feature = "tx-v6")] + pub fn v6_strategy(ledger_state: LedgerState) -> BoxedStrategy { + Self::v5_v6_strategy( + ledger_state, + |network_upgrade, + lock_time, + expiry_height, + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data| { + Transaction::V6 { + network_upgrade, + lock_time, + expiry_height, + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data, + // FIXME: generate a real arbitrary orchard_zsa_issue_data + orchard_zsa_issue_data: Default::default(), + } + }, + ) + } + /// Proptest Strategy for creating a Vector of transactions where the first /// transaction is always the only coinbase transaction pub fn vec_strategy( @@ -697,7 +768,11 @@ impl Arbitrary for sapling::TransferData { type Strategy = BoxedStrategy; } -impl Arbitrary for orchard::ShieldedData { +impl Arbitrary for orchard::ShieldedData +// FIXME: define the constraint in OrchardFlavorExt? +where + ::Strategy: 'static, +{ type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { @@ -707,13 +782,22 @@ impl Arbitrary for orchard::ShieldedData { any::(), any::(), vec( - any::>(), + any::>(), 1..MAX_ARBITRARY_ITEMS, ), any::(), + #[cfg(feature = "tx-v6")] + V::arbitrary_burn(), ) - .prop_map( - |(flags, value_balance, shared_anchor, proof, actions, binding_sig)| Self { + .prop_map(|props| { + #[cfg(not(feature = "tx-v6"))] + let (flags, value_balance, shared_anchor, proof, actions, binding_sig) = props; + + #[cfg(feature = "tx-v6")] + let (flags, value_balance, shared_anchor, proof, actions, binding_sig, burn) = + props; + + Self { flags, value_balance, shared_anchor, @@ -723,9 +807,9 @@ impl Arbitrary for orchard::ShieldedData { .expect("arbitrary vector size range produces at least one action"), binding_sig: binding_sig.0, #[cfg(feature = "tx-v6")] - burn: Default::default(), - }, - ) + burn, + } + }) .boxed() } @@ -767,6 +851,8 @@ impl Arbitrary for Transaction { Some(3) => return Self::v3_strategy(ledger_state), Some(4) => return Self::v4_strategy(ledger_state), Some(5) => return Self::v5_strategy(ledger_state), + #[cfg(feature = "tx-v6")] + Some(6) => return Self::v6_strategy(ledger_state), Some(_) => unreachable!("invalid transaction version in override"), None => {} } @@ -780,11 +866,13 @@ impl Arbitrary for Transaction { NetworkUpgrade::Blossom | NetworkUpgrade::Heartwood | NetworkUpgrade::Canopy => { Self::v4_strategy(ledger_state) } + // FIXME: should v6_strategy be included here? NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => prop_oneof![ Self::v4_strategy(ledger_state.clone()), Self::v5_strategy(ledger_state) ] .boxed(), + // FIXME: process NetworkUpgrade::Nu7 properly, with v6 strategy } } diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index 66ebb405492..c2cc663105f 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -15,8 +15,8 @@ keywords = ["zebra", "zcash"] categories = ["asynchronous", "cryptography::cryptocurrencies"] [features] -default = [] -#default = ["tx-v6"] +#default = [] +default = ["tx-v6"] # Production features that activate extra dependencies, or extra features in dependencies From 4eb472be2ab9be0911197046f0905ebccbaf0652 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 8 Oct 2024 14:46:48 +0200 Subject: [PATCH 030/230] Add missed new file orchard_zsa/arbitrary.rs --- zebra-chain/src/orchard_zsa/arbitrary.rs | 64 ++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 zebra-chain/src/orchard_zsa/arbitrary.rs diff --git a/zebra-chain/src/orchard_zsa/arbitrary.rs b/zebra-chain/src/orchard_zsa/arbitrary.rs new file mode 100644 index 00000000000..011395568aa --- /dev/null +++ b/zebra-chain/src/orchard_zsa/arbitrary.rs @@ -0,0 +1,64 @@ +//! Randomised data generation for Orchard ZSA types. + +use proptest::prelude::*; + +use orchard::{bundle::testing::BundleArb, issuance::testing::arb_signed_issue_bundle}; + +// FIXME: consider using another value, i.e. define MAX_BURN_ITEMS constant for that +use crate::{ + orchard::{OrchardFlavorExt, OrchardVanilla, OrchardZSA}, + transaction::arbitrary::MAX_ARBITRARY_ITEMS, +}; + +use super::{burn::BurnItem, issuance::IssueData}; + +pub(crate) trait ArbitraryBurn: OrchardFlavorExt { + fn arbitrary_burn() -> BoxedStrategy; + // FIXME: remove the following lines + // where + // Self: Sized +} + +impl ArbitraryBurn for OrchardVanilla { + fn arbitrary_burn() -> BoxedStrategy { + Just(Default::default()).boxed() + } +} + +impl ArbitraryBurn for OrchardZSA { + fn arbitrary_burn() -> BoxedStrategy { + prop::collection::vec(any::(), 0..MAX_ARBITRARY_ITEMS).boxed() + } +} + +impl Arbitrary for BurnItem { + type Parameters = (); + + fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { + // FIXME: move arb_asset_to_burn out of BundleArb in orchard + // as it does not depend on flavor (we pinned it here OrchardVanilla + // just for certainty, as there's no difference, which flavor to use) + // FIXME: consider to use BurnItem(asset_base, value.try_into().expect("Invalid value for Amount")) + // instead of filtering non-convertable values + // FIXME: should we filter/protect from including native assets into burn here? + BundleArb::::arb_asset_to_burn() + .prop_filter_map("Conversion to Amount failed", |(asset_base, value)| { + BurnItem::try_from((asset_base, value)).ok() + }) + .boxed() + } + + type Strategy = BoxedStrategy; +} + +impl Arbitrary for IssueData { + type Parameters = (); + + fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { + arb_signed_issue_bundle(MAX_ARBITRARY_ITEMS) + .prop_map(|bundle| bundle.into()) + .boxed() + } + + type Strategy = BoxedStrategy; +} From 6372de86e34f445b94132940bcc66c02df774a34 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 9 Oct 2024 12:34:47 +0200 Subject: [PATCH 031/230] Refactor burn types and proptest implementations for Orchard types 1. Introduced new type `Burn` that wraps `Vec`, implemented serialization/deserialization for it - put it into `orchard_zsa/burn.rs`, also moved `NoBurn` there from `orchard_flavor_ext.rs` for better code structuring. 2. Renamed the `EncryptedNoteTest` trait to `TestArbitrary` in `orchard_flavor_ext.rs` and used it to constrain `BurnType` as well. 3. Renamed `serialize.rs` to `common.rs` in the `orchard_zsa` folder. 4. Refactored transaction generation strategies for V5 and V6 in `transaction/arbitrary.rs` and `orchard_zsa/arbitrary.rs` to incorporate the new burn handling and proper issuance handling. --- zebra-chain/src/orchard/orchard_flavor_ext.rs | 50 +++----- zebra-chain/src/orchard_zsa.rs | 3 +- zebra-chain/src/orchard_zsa/arbitrary.rs | 52 ++++---- zebra-chain/src/orchard_zsa/burn.rs | 49 +++++++- .../orchard_zsa/{serialize.rs => common.rs} | 2 +- zebra-chain/src/orchard_zsa/issuance.rs | 2 +- zebra-chain/src/transaction/arbitrary.rs | 118 ++++++++++-------- 7 files changed, 160 insertions(+), 116 deletions(-) rename zebra-chain/src/orchard_zsa/{serialize.rs => common.rs} (94%) diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index de99cd6f375..119646ae7b9 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -1,6 +1,6 @@ //! This module defines traits and structures for supporting the Orchard Shielded Protocol //! for `V5` and `V6` versions of the transaction. -use std::{fmt::Debug, io}; +use std::fmt::Debug; use serde::{de::DeserializeOwned, Serialize}; @@ -9,24 +9,24 @@ use proptest_derive::Arbitrary; use orchard::{note_encryption::OrchardDomainCommon, orchard_flavor}; -use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize}; - -use super::note; +use crate::serialization::{ZcashDeserialize, ZcashSerialize}; #[cfg(feature = "tx-v6")] -use crate::orchard_zsa::burn::BurnItem; +use crate::orchard_zsa::burn::{Burn, NoBurn}; + +use super::note; #[cfg(not(any(test, feature = "proptest-impl")))] -pub trait EncryptedNoteTest {} +pub trait TestArbitrary {} #[cfg(not(any(test, feature = "proptest-impl")))] -impl EncryptedNoteTest for T {} +impl TestArbitrary for T {} #[cfg(any(test, feature = "proptest-impl"))] -pub trait EncryptedNoteTest: proptest::prelude::Arbitrary {} +pub trait TestArbitrary: proptest::prelude::Arbitrary {} #[cfg(any(test, feature = "proptest-impl"))] -impl EncryptedNoteTest for T {} +impl TestArbitrary for T {} /// A trait representing compile-time settings of Orchard Shielded Protocol used in /// the transactions `V5` and `V6`. @@ -40,17 +40,17 @@ pub trait OrchardFlavorExt: Clone + Debug { + Serialize + ZcashDeserialize + ZcashSerialize - + EncryptedNoteTest; + + TestArbitrary; - /// FIXME: add doc + /// Specifies the Orchard protocol flavor from `orchard` crate used by this implementation. type Flavor: orchard_flavor::OrchardFlavor; /// The size of the encrypted note for this protocol version. const ENCRYPTED_NOTE_SIZE: usize = Self::Flavor::ENC_CIPHERTEXT_SIZE; /// A type representing a burn field for this protocol version. - // FIXME: add cfg tx-v6 here? - type BurnType: Clone + Debug + Default + ZcashDeserialize + ZcashSerialize; + #[cfg(feature = "tx-v6")] + type BurnType: Clone + Debug + Default + ZcashDeserialize + ZcashSerialize + TestArbitrary; } /// A structure representing a tag for Orchard protocol variant used for the transaction version `V5`. @@ -65,27 +65,11 @@ pub struct OrchardVanilla; #[cfg_attr(any(test, feature = "proptest-impl"), derive(Arbitrary))] pub struct OrchardZSA; -/// A special marker type indicating the absence of a burn field in Orchard ShieldedData for `V5` transactions. -/// Useful for unifying ShieldedData serialization and deserialization implementations across various -/// Orchard protocol variants (i.e. various transaction versions). -#[derive(Default, Clone, Debug, PartialEq, Eq, Serialize)] -pub struct NoBurn; - -impl ZcashSerialize for NoBurn { - fn zcash_serialize(&self, mut _writer: W) -> Result<(), io::Error> { - Ok(()) - } -} - -impl ZcashDeserialize for NoBurn { - fn zcash_deserialize(mut _reader: R) -> Result { - Ok(Self) - } -} - impl OrchardFlavorExt for OrchardVanilla { type Flavor = orchard_flavor::OrchardVanilla; type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; + + #[cfg(feature = "tx-v6")] type BurnType = NoBurn; } @@ -93,5 +77,7 @@ impl OrchardFlavorExt for OrchardVanilla { impl OrchardFlavorExt for OrchardZSA { type Flavor = orchard_flavor::OrchardZSA; type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; - type BurnType = Vec; + + #[cfg(feature = "tx-v6")] + type BurnType = Burn; } diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index 651a146e796..d1dae03d792 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -4,8 +4,9 @@ #[cfg(any(test, feature = "proptest-impl"))] pub(crate) mod arbitrary; +mod common; + pub mod burn; pub mod issuance; -pub mod serialize; pub use burn::BurnItem; diff --git a/zebra-chain/src/orchard_zsa/arbitrary.rs b/zebra-chain/src/orchard_zsa/arbitrary.rs index 011395568aa..0dc89ce7080 100644 --- a/zebra-chain/src/orchard_zsa/arbitrary.rs +++ b/zebra-chain/src/orchard_zsa/arbitrary.rs @@ -5,31 +5,12 @@ use proptest::prelude::*; use orchard::{bundle::testing::BundleArb, issuance::testing::arb_signed_issue_bundle}; // FIXME: consider using another value, i.e. define MAX_BURN_ITEMS constant for that -use crate::{ - orchard::{OrchardFlavorExt, OrchardVanilla, OrchardZSA}, - transaction::arbitrary::MAX_ARBITRARY_ITEMS, -}; - -use super::{burn::BurnItem, issuance::IssueData}; - -pub(crate) trait ArbitraryBurn: OrchardFlavorExt { - fn arbitrary_burn() -> BoxedStrategy; - // FIXME: remove the following lines - // where - // Self: Sized -} - -impl ArbitraryBurn for OrchardVanilla { - fn arbitrary_burn() -> BoxedStrategy { - Just(Default::default()).boxed() - } -} +use crate::transaction::arbitrary::MAX_ARBITRARY_ITEMS; -impl ArbitraryBurn for OrchardZSA { - fn arbitrary_burn() -> BoxedStrategy { - prop::collection::vec(any::(), 0..MAX_ARBITRARY_ITEMS).boxed() - } -} +use super::{ + burn::{Burn, BurnItem, NoBurn}, + issuance::IssueData, +}; impl Arbitrary for BurnItem { type Parameters = (); @@ -51,6 +32,29 @@ impl Arbitrary for BurnItem { type Strategy = BoxedStrategy; } +impl Arbitrary for NoBurn { + type Parameters = (); + + fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { + // FIXME: consider using this instead, for clarity: any::<()>().prop_map(|_| NoBurn).boxed() + Just(Self).boxed() + } + + type Strategy = BoxedStrategy; +} + +impl Arbitrary for Burn { + type Parameters = (); + + fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { + prop::collection::vec(any::(), 0..MAX_ARBITRARY_ITEMS) + .prop_map(|inner| inner.into()) + .boxed() + } + + type Strategy = BoxedStrategy; +} + impl Arbitrary for IssueData { type Parameters = (); diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index 85b235258e8..812728b9380 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -10,14 +10,15 @@ use crate::{ use orchard::{note::AssetBase, value::NoteValue}; -use super::serialize::ASSET_BASE_SIZE; +use super::common::ASSET_BASE_SIZE; // Sizes of the serialized values for types in bytes (used for TrustedPreallocate impls) const AMOUNT_SIZE: u64 = 8; + // FIXME: is this a correct way to calculate (simple sum of sizes of components)? const BURN_ITEM_SIZE: u64 = ASSET_BASE_SIZE + AMOUNT_SIZE; -/// Represents an Orchard ZSA burn item. +/// Orchard ZSA burn item. #[derive(Clone, Debug, PartialEq, Eq)] pub struct BurnItem(AssetBase, Amount); @@ -59,18 +60,16 @@ impl TrustedPreallocate for BurnItem { } } -#[cfg(any(test, feature = "proptest-impl"))] impl serde::Serialize for BurnItem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - // FIXME: return custom error with a meaningful description? + // FIXME: return a custom error with a meaningful description? (self.0.to_bytes(), &self.1).serialize(serializer) } } -#[cfg(any(test, feature = "proptest-impl"))] impl<'de> serde::Deserialize<'de> for BurnItem { fn deserialize(deserializer: D) -> Result where @@ -87,3 +86,43 @@ impl<'de> serde::Deserialize<'de> for BurnItem { )) } } + +/// A special marker type indicating the absence of a burn field in Orchard ShieldedData for `V5` transactions. +/// Useful for unifying ShieldedData serialization and deserialization implementations across various +/// Orchard protocol variants (i.e. various transaction versions). +#[derive(Default, Clone, Debug, PartialEq, Eq, Serialize)] +pub struct NoBurn; + +impl ZcashSerialize for NoBurn { + fn zcash_serialize(&self, mut _writer: W) -> Result<(), io::Error> { + Ok(()) + } +} + +impl ZcashDeserialize for NoBurn { + fn zcash_deserialize(mut _reader: R) -> Result { + Ok(Self) + } +} + +/// Orchard ZSA burn items (assets intended for burning) +#[derive(Default, Clone, Debug, PartialEq, Eq, Serialize)] +pub struct Burn(Vec); + +impl From> for Burn { + fn from(inner: Vec) -> Self { + Self(inner) + } +} + +impl ZcashSerialize for Burn { + fn zcash_serialize(&self, writer: W) -> Result<(), io::Error> { + self.0.zcash_serialize(writer) + } +} + +impl ZcashDeserialize for Burn { + fn zcash_deserialize(reader: R) -> Result { + Ok(Burn(Vec::::zcash_deserialize(reader)?)) + } +} diff --git a/zebra-chain/src/orchard_zsa/serialize.rs b/zebra-chain/src/orchard_zsa/common.rs similarity index 94% rename from zebra-chain/src/orchard_zsa/serialize.rs rename to zebra-chain/src/orchard_zsa/common.rs index 6afc51e1887..deb3969ced7 100644 --- a/zebra-chain/src/orchard_zsa/serialize.rs +++ b/zebra-chain/src/orchard_zsa/common.rs @@ -7,7 +7,7 @@ use crate::serialization::{ReadZcashExt, SerializationError, ZcashDeserialize, Z use orchard::note::AssetBase; // The size of the serialized AssetBase in bytes (used for TrustedPreallocate impls) -pub(crate) const ASSET_BASE_SIZE: u64 = 32; +pub(super) const ASSET_BASE_SIZE: u64 = 32; impl ZcashSerialize for AssetBase { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index be4451d7e82..edd85cf88d7 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -26,7 +26,7 @@ use orchard::{ Address, Note, }; -use super::serialize::ASSET_BASE_SIZE; +use super::common::ASSET_BASE_SIZE; /// Wrapper for `IssueBundle` used in the context of Transaction V6. This allows the implementation of /// a Serde serializer for unit tests within this crate. diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 25c669a16a3..eb8c7c56ed6 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -11,7 +11,6 @@ use crate::{ at_least_one, block::{self, arbitrary::MAX_PARTIAL_CHAIN_BLOCKS}, orchard, - orchard_zsa::arbitrary::ArbitraryBurn, parameters::{Network, NetworkUpgrade}, primitives::{Bctv14Proof, Groth16Proof, Halo2Proof, ZkSnarkProof}, sapling::{self, AnchorVariant, PerSpendAnchor, SharedAnchor}, @@ -21,6 +20,9 @@ use crate::{ LedgerState, }; +#[cfg(feature = "tx-v6")] +use crate::orchard_zsa::issuance::IssueData; + use itertools::Itertools; use super::{ @@ -133,23 +135,21 @@ impl Transaction { .boxed() } - fn v5_v6_strategy( + /// Helper function to generate the common transaction fields. + /// This function is generic over the Orchard shielded data type. + fn v5_v6_strategy_common( ledger_state: LedgerState, - construct_transaction: F, - ) -> BoxedStrategy - where - F: Fn( - NetworkUpgrade, - LockTime, - block::Height, - Vec, - Vec, - Option>, - Option>, - ) -> Transaction - + 'static, - V: Clone + 'static, - { + ) -> impl Strategy< + Value = ( + NetworkUpgrade, + LockTime, + block::Height, + Vec, + Vec, + Option>, + Option>, + ), + > + 'static { ( NetworkUpgrade::branch_id_strategy(), any::(), @@ -157,7 +157,7 @@ impl Transaction { transparent::Input::vec_strategy(&ledger_state, MAX_ARBITRARY_ITEMS), vec(any::(), 0..MAX_ARBITRARY_ITEMS), option::of(any::>()), - any::>>(), + option::of(any::>()), ) .prop_map( move |( @@ -169,6 +169,7 @@ impl Transaction { sapling_shielded_data, orchard_shielded_data, )| { + // Apply conditional logic based on ledger_state let network_upgrade = if ledger_state.transaction_has_valid_network_upgrade() { ledger_state.network_upgrade() } else { @@ -176,18 +177,20 @@ impl Transaction { }; let sapling_shielded_data = if ledger_state.height.is_min() { + // The genesis block should not contain any shielded data. None } else { sapling_shielded_data }; let orchard_shielded_data = if ledger_state.height.is_min() { + // The genesis block should not contain any shielded data. None } else { orchard_shielded_data }; - construct_transaction( + ( network_upgrade, lock_time, expiry_height, @@ -198,21 +201,13 @@ impl Transaction { ) }, ) - .boxed() } /// Generate a proptest strategy for V5 Transactions pub fn v5_strategy(ledger_state: LedgerState) -> BoxedStrategy { - Self::v5_v6_strategy( - ledger_state, - |network_upgrade, - lock_time, - expiry_height, - inputs, - outputs, - sapling_shielded_data, - orchard_shielded_data| { - Transaction::V5 { + Self::v5_v6_strategy_common::(ledger_state) + .prop_map( + move |( network_upgrade, lock_time, expiry_height, @@ -220,24 +215,43 @@ impl Transaction { outputs, sapling_shielded_data, orchard_shielded_data, - } - }, - ) + )| Transaction::V5 { + network_upgrade, + lock_time, + expiry_height, + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data, + }, + ) + .boxed() } /// Generate a proptest strategy for V6 Transactions #[cfg(feature = "tx-v6")] pub fn v6_strategy(ledger_state: LedgerState) -> BoxedStrategy { - Self::v5_v6_strategy( - ledger_state, - |network_upgrade, - lock_time, - expiry_height, - inputs, - outputs, - sapling_shielded_data, - orchard_shielded_data| { - Transaction::V6 { + Self::v5_v6_strategy_common::(ledger_state) + .prop_flat_map(|common_fields| { + // FIXME: Can IssueData present in V6 transaction without orchard::ShieldedData? + // If no, we possibly need to use something like prop_filter_map to filter wrong + // combnations (orchard_shielded_data: None, orchard_zsa_issue_data: Some) + option::of(any::()) + .prop_map(move |issue_data| (common_fields.clone(), issue_data)) + }) + .prop_map( + |( + ( + network_upgrade, + lock_time, + expiry_height, + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data, + ), + orchard_zsa_issue_data, + )| Transaction::V6 { network_upgrade, lock_time, expiry_height, @@ -245,11 +259,10 @@ impl Transaction { outputs, sapling_shielded_data, orchard_shielded_data, - // FIXME: generate a real arbitrary orchard_zsa_issue_data - orchard_zsa_issue_data: Default::default(), - } - }, - ) + orchard_zsa_issue_data, + }, + ) + .boxed() } /// Proptest Strategy for creating a Vector of transactions where the first @@ -768,10 +781,11 @@ impl Arbitrary for sapling::TransferData { type Strategy = BoxedStrategy; } -impl Arbitrary for orchard::ShieldedData +impl Arbitrary for orchard::ShieldedData +// FIXME: remove the following lines // FIXME: define the constraint in OrchardFlavorExt? -where - ::Strategy: 'static, +//where +// ::Strategy: 'static, { type Parameters = (); @@ -787,7 +801,7 @@ where ), any::(), #[cfg(feature = "tx-v6")] - V::arbitrary_burn(), + any::(), ) .prop_map(|props| { #[cfg(not(feature = "tx-v6"))] From d8964e714e6527ba6632b0b6451eab934baa8040 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 11:05:59 +0200 Subject: [PATCH 032/230] Fix of new_regtest call (as it additionally needs Nu7 arg now) --- zebrad/tests/common/regtest.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebrad/tests/common/regtest.rs b/zebrad/tests/common/regtest.rs index bf1cba697de..f7b571e5a09 100644 --- a/zebrad/tests/common/regtest.rs +++ b/zebrad/tests/common/regtest.rs @@ -43,7 +43,7 @@ pub(crate) async fn submit_blocks_test() -> Result<()> { let _init_guard = zebra_test::init(); info!("starting regtest submit_blocks test"); - let network = Network::new_regtest(None, None); + let network = Network::new_regtest(None, None, None); let mut config = os_assigned_rpc_port_config(false, &network)?; config.mempool.debug_enable_at_height = Some(0); From e8abddd11e856fe0d972b1bbf2c93949e2040e34 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 13:15:21 +0200 Subject: [PATCH 033/230] Fix of new_regtest call (as it additionally needs Nu7 arg now) (2) --- zebra-consensus/src/checkpoint/list/tests.rs | 2 +- zebrad/tests/acceptance.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/zebra-consensus/src/checkpoint/list/tests.rs b/zebra-consensus/src/checkpoint/list/tests.rs index 5a2fe803f3d..698eaf36082 100644 --- a/zebra-consensus/src/checkpoint/list/tests.rs +++ b/zebra-consensus/src/checkpoint/list/tests.rs @@ -237,7 +237,7 @@ fn checkpoint_list_load_hard_coded() -> Result<(), BoxError> { let _ = Mainnet.checkpoint_list(); let _ = Network::new_default_testnet().checkpoint_list(); - let _ = Network::new_regtest(None, None).checkpoint_list(); + let _ = Network::new_regtest(None, None, None).checkpoint_list(); Ok(()) } diff --git a/zebrad/tests/acceptance.rs b/zebrad/tests/acceptance.rs index cd3572ce3f2..c71cede4c3b 100644 --- a/zebrad/tests/acceptance.rs +++ b/zebrad/tests/acceptance.rs @@ -2907,7 +2907,7 @@ async fn fully_synced_rpc_z_getsubtreesbyindex_snapshot_test() -> Result<()> { async fn validate_regtest_genesis_block() { let _init_guard = zebra_test::init(); - let network = Network::new_regtest(None, None); + let network = Network::new_regtest(None, None, None); let state = zebra_state::init_test(&network); let ( block_verifier_router, @@ -2982,7 +2982,7 @@ async fn trusted_chain_sync_handles_forks_correctly() -> Result<()> { use zebra_state::{ReadResponse, Response}; let _init_guard = zebra_test::init(); - let mut config = os_assigned_rpc_port_config(false, &Network::new_regtest(None, None))?; + let mut config = os_assigned_rpc_port_config(false, &Network::new_regtest(None, None, None))?; config.state.ephemeral = false; let network = config.network.network.clone(); From 23d9e7754ae959f5f6d8174ad0f3d7bce927545d Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 14:46:17 +0200 Subject: [PATCH 034/230] Set Nu7 as a network update for testnet in zebra-chain network tests --- zebra-chain/src/parameters/network/tests/vectors.rs | 3 +-- zebra-chain/src/parameters/network_upgrade.rs | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/zebra-chain/src/parameters/network/tests/vectors.rs b/zebra-chain/src/parameters/network/tests/vectors.rs index ca341184b8c..6c1426e4e0e 100644 --- a/zebra-chain/src/parameters/network/tests/vectors.rs +++ b/zebra-chain/src/parameters/network/tests/vectors.rs @@ -109,8 +109,7 @@ fn activates_network_upgrades_correctly() { let expected_activation_height = 1; let network = testnet::Parameters::build() .with_activation_heights(ConfiguredActivationHeights { - // FIXME: nu7? - nu6: Some(expected_activation_height), + nu7: Some(expected_activation_height), ..Default::default() }) .to_network(); diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 845bbec981e..4ca8c6a8777 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -133,8 +133,8 @@ pub(super) const TESTNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] (block::Height(1_028_500), Canopy), (block::Height(1_842_420), Nu5), (block::Height(2_976_000), Nu6), - // FIXME: TODO: Add NU7 with a correct value - // (block::Height(2_942_001), Nu7), + // FIXME: TODO: Set a correct value for NU7 + (block::Height(2_942_001), Nu7), ]; /// Fake testnet network upgrade activation heights, used in tests. From d2313fbdac09803a829a3bae2531d8065a8dc1b8 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 15:05:57 +0200 Subject: [PATCH 035/230] Fix Orchard ZSA issuance serialization (use to_vec for notes and asset_desc to convert slice to vec, as slices require implementation of the serialization from scratch --- zebra-chain/src/orchard_zsa/issuance.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index 3e55edcf14d..9d31276072c 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -5,8 +5,8 @@ use std::{fmt::Debug, io}; use crate::{ block::MAX_BLOCK_BYTES, serialization::{ - zcash_serialize_empty_list, ReadZcashExt, SerializationError, TrustedPreallocate, - ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, + zcash_serialize_bytes, zcash_serialize_empty_list, ReadZcashExt, SerializationError, + TrustedPreallocate, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, }, }; @@ -176,8 +176,8 @@ impl TrustedPreallocate for Note { impl ZcashSerialize for IssueAction { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { writer.write_u8(self.is_finalized().as_u8())?; - self.notes().zcash_serialize(&mut writer)?; - self.asset_desc().zcash_serialize(&mut writer)?; + self.notes().to_vec().zcash_serialize(&mut writer)?; + zcash_serialize_bytes(&self.asset_desc().to_vec(), &mut writer)?; Ok(()) } } From e0adb4ca39ea389589a729c1fc294b6658b7fd79 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 15:14:51 +0200 Subject: [PATCH 036/230] Fix serde names for NU7 --- zebra-chain/src/parameters/network_upgrade.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 4ca8c6a8777..325f2558b17 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -63,6 +63,7 @@ pub enum NetworkUpgrade { #[serde(rename = "NU6")] Nu6, /// The Zcash protocol after the NU7 upgrade. + #[serde(rename = "NU7")] Nu7, } From 0daf0ce05a5a9bdef648860862b35b0c001350e8 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 15:19:20 +0200 Subject: [PATCH 037/230] Update test snapshot in zebra-rpc to use NU7 --- .../tests/snapshots/get_blockchain_info@testnet_10.snap | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap index 3bea6c01509..9d7ea3f5176 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap @@ -1,5 +1,6 @@ --- source: zebra-rpc/src/methods/tests/snapshot.rs +assertion_line: 562 expression: info --- { @@ -69,6 +70,11 @@ expression: info "name": "NU6", "activationheight": 2976000, "status": "pending" + }, + "c8e71056": { + "name": "NU7", + "activationheight": 2942001, + "status": "pending" } }, "consensus": { From 6a9334aa2a24f08f084f38db3c61f877a074f319 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 18 Oct 2024 09:55:02 +0200 Subject: [PATCH 038/230] Enable test-dependencies feaure flag for orchard if proptest-impl is enabled for zebra-chain --- zebra-chain/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index cede4329aed..8e1f043629e 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -57,6 +57,7 @@ proptest-impl = [ "rand_chacha", "tokio/tracing", "zebra-test", + "orchard/test-dependencies" ] bench = ["zebra-test"] From 2fabac727ea30c921c3635a1d23b610c24e87f9d Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 29 Jul 2024 10:13:56 +0200 Subject: [PATCH 039/230] Prepare to use Orchard ZSA --- zebra-chain/Cargo.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 3f932ea298a..cb30fb1873d 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -68,7 +68,7 @@ bitflags = "2.5.0" bitflags-serde-legacy = "0.1.1" blake2b_simd = "1.0.2" blake2s_simd = "1.0.2" -bridgetree = "0.6.0" +bridgetree = "0.4.0" bs58 = { version = "0.5.1", features = ["check"] } byteorder = "1.5.0" @@ -178,3 +178,7 @@ required-features = ["bench"] [[bench]] name = "redpallas" harness = false + +# FIXME: remove this and all zcash_unstable usage in the code after updating librustzcash +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("nu6"))'] } From 836516d84d099322d7add5c38a2afa6f7c1ef88b Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 08:54:05 +0200 Subject: [PATCH 040/230] Add basic CI checks workflow --- .github/workflows/ci-basic.yml | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/ci-basic.yml diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml new file mode 100644 index 00000000000..92dedd60cb0 --- /dev/null +++ b/.github/workflows/ci-basic.yml @@ -0,0 +1,36 @@ +name: Basic checks + +on: [push, pull_request] + +jobs: + test: + name: Test on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + + steps: + - uses: actions/checkout@v4 + - name: Run tests + run: cargo test --verbose + - name: Verify working directory is clean + run: git diff --exit-code + + doc-links: + name: Intra-doc links + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: cargo fetch + # Requires #![deny(rustdoc::broken_intra_doc_links)] in crates. + - name: Check intra-doc links + run: cargo doc --all-features --document-private-items + + fmt: + name: Rustfmt + timeout-minutes: 30 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: cargo fmt -- --check From e29a64cde48f50037e4305ea176a42a2d95e7e14 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 10:28:32 +0200 Subject: [PATCH 041/230] Fix ci-basic.yml --- .github/workflows/ci-basic.yml | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 92dedd60cb0..7b50109c04a 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -12,25 +12,13 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Install dependencies on Ubuntu + run: sudo apt-get update && sudo apt-get install -y protoc - name: Run tests run: cargo test --verbose - name: Verify working directory is clean run: git diff --exit-code - - doc-links: - name: Intra-doc links - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - run: cargo fetch - # Requires #![deny(rustdoc::broken_intra_doc_links)] in crates. - - name: Check intra-doc links + - name: Run doc check run: cargo doc --all-features --document-private-items - - fmt: - name: Rustfmt - timeout-minutes: 30 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - run: cargo fmt -- --check + - name: Run format check + run: cargo fmt -- --check From 790072d9115c146ef3229e3ab5bc328001b7cb58 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 10:31:29 +0200 Subject: [PATCH 042/230] Fix ci-basic.yml (2) --- .github/workflows/ci-basic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 7b50109c04a..522329e2440 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Install dependencies on Ubuntu - run: sudo apt-get update && sudo apt-get install -y protoc + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler - name: Run tests run: cargo test --verbose - name: Verify working directory is clean From 769588293ac04c8520e3604026f8873fd73247d6 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 10:52:49 +0200 Subject: [PATCH 043/230] Add installing of build-essential to ci-basic.yml --- .github/workflows/ci-basic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 522329e2440..be3d44917eb 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Install dependencies on Ubuntu - run: sudo apt-get update && sudo apt-get install -y protobuf-compiler + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential - name: Run tests run: cargo test --verbose - name: Verify working directory is clean From 9a8d37eb0b452840eee56f7c906f8ab5118555da Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 20:57:11 +0200 Subject: [PATCH 044/230] Try to use librocksdb-dev in ci-basic.yml --- .github/workflows/ci-basic.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index be3d44917eb..547b64446c3 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -1,6 +1,7 @@ name: Basic checks -on: [push, pull_request] +#on: [push, pull_request] +on: [push] jobs: test: @@ -13,9 +14,9 @@ jobs: steps: - uses: actions/checkout@v4 - name: Install dependencies on Ubuntu - run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential librocksdb-dev - name: Run tests - run: cargo test --verbose + run: ROCKSDB_LIB_DIR=/usr/lib SNAPPY_LIB_DIR=/usr/lib/x86_64-linux-gnu cargo test --verbose - name: Verify working directory is clean run: git diff --exit-code - name: Run doc check From 925e81a79d1c4883da54df0078082c09685007c9 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 21:05:06 +0200 Subject: [PATCH 045/230] Run ci-basic.yml on ubuntu-24.04 --- .github/workflows/ci-basic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 547b64446c3..840d406b609 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -9,7 +9,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-24.04] steps: - uses: actions/checkout@v4 From 61f9f95899156712a688c574e3f03a59656fffad Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 3 Sep 2024 22:32:19 +0200 Subject: [PATCH 046/230] Enable nu6 cfg flag in ci-basic.yml --- .github/workflows/ci-basic.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 840d406b609..4a9bdafa1b5 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -11,12 +11,20 @@ jobs: matrix: os: [ubuntu-24.04] + env: + # Use system-installed RocksDB library instead of building from scratch + ROCKSDB_LIB_DIR: /usr/lib + # Use system-installed Snappy library for compression in RocksDB + SNAPPY_LIB_DIR: /usr/lib/x86_64-linux-gnu + # Enable the `nu6` feature in `zcash_protocol` + RUSTFLAGS: '--cfg zcash_unstable="nu6"' + steps: - uses: actions/checkout@v4 - name: Install dependencies on Ubuntu run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential librocksdb-dev - name: Run tests - run: ROCKSDB_LIB_DIR=/usr/lib SNAPPY_LIB_DIR=/usr/lib/x86_64-linux-gnu cargo test --verbose + run: cargo test --verbose - name: Verify working directory is clean run: git diff --exit-code - name: Run doc check From 2e9c089b10b6b35170a6cbfe6a6e16852c6b42f0 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 4 Sep 2024 10:51:26 +0200 Subject: [PATCH 047/230] Adjust the code with librustzcash/zcash_protocol nu6 related changes --- zebra-chain/src/parameters/network_upgrade.rs | 5 ++++ .../src/primitives/zcash_primitives.rs | 27 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 957b96de944..40007293ab9 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -531,7 +531,12 @@ impl From for NetworkUpgrade { zcash_protocol::consensus::NetworkUpgrade::Heartwood => Self::Heartwood, zcash_protocol::consensus::NetworkUpgrade::Canopy => Self::Canopy, zcash_protocol::consensus::NetworkUpgrade::Nu5 => Self::Nu5, + // FIXME: remove cfg + #[cfg(zcash_unstable = "nu6")] zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, + // FIXME: remove cfg and process Nu7 properly (uses Self::Nu6 for now) + #[cfg(zcash_unstable = "nu6")] + zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu6, } } } diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 7ab2f32d751..be90f18ed23 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -137,6 +137,16 @@ impl zp_tx::components::orchard::MapAuth + for IdentityMap +{ + fn map_issue_authorization(&self, s: orchard::issuance::Signed) -> orchard::issuance::Signed { + s + } +} + #[derive(Debug)] struct PrecomputedAuth<'a> { _phantom: std::marker::PhantomData<&'a ()>, @@ -146,6 +156,14 @@ impl<'a> zp_tx::Authorization for PrecomputedAuth<'a> { type TransparentAuth = TransparentAuth<'a>; type SaplingAuth = sapling_crypto::bundle::Authorized; type OrchardAuth = orchard::bundle::Authorized; + + // FIXME: is this correct? + #[cfg(zcash_unstable = "nu6")] + type OrchardZsaAuth = orchard::bundle::Authorized; + + // FIXME: is this correct? + #[cfg(zcash_unstable = "nu6")] + type IssueAuth = orchard::issuance::Signed; } // End of (mostly) copied code @@ -275,7 +293,14 @@ impl<'a> PrecomputedTxData<'a> { }; let tx_data: zp_tx::TransactionData = alt_tx .into_data() - .map_authorization(f_transparent, IdentityMap, IdentityMap); + // FIXME: do we need to pass another arg values or orchard_zsa and issue instead of IdentityMap? + .map_authorization( + f_transparent, + IdentityMap, + IdentityMap, + IdentityMap, + IdentityMap, + ); PrecomputedTxData { tx_data, From 0dce1a4441c4e2c73a5693e70488e856de58c45a Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 4 Sep 2024 11:40:25 +0200 Subject: [PATCH 048/230] Add RUSTDOCFLAGS to ci-basic.yml --- .github/workflows/ci-basic.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 4a9bdafa1b5..c2cde8686bf 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -18,11 +18,13 @@ jobs: SNAPPY_LIB_DIR: /usr/lib/x86_64-linux-gnu # Enable the `nu6` feature in `zcash_protocol` RUSTFLAGS: '--cfg zcash_unstable="nu6"' + RUSTDOCFLAGS: '--cfg zcash_unstable="nu6"' steps: - uses: actions/checkout@v4 - name: Install dependencies on Ubuntu - run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential librocksdb-dev + #run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential librocksdb-dev + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler librocksdb-dev - name: Run tests run: cargo test --verbose - name: Verify working directory is clean From e294837071ef3bf3d282a513da18b0fdf9491540 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 29 Oct 2024 14:52:10 +0100 Subject: [PATCH 049/230] Set Rust cfg zcash_unstable to nu6 in .cargo/config.toml --- .cargo/config.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.cargo/config.toml b/.cargo/config.toml index 1368e393fe4..ab7095e21bd 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -3,6 +3,9 @@ # Flags that apply to all Zebra crates and configurations [target.'cfg(all())'] rustflags = [ + # FIXME: Consider removing this line later (it's needed for the ZSA version of librustzcash crates) + "--cfg", "zcash_unstable=\"nu6\"", + # Zebra standard lints for Rust 1.65+ # High-risk code From 9f55f355ca27b2db7947a51886a27a2453fbc27c Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 29 Oct 2024 14:55:15 +0100 Subject: [PATCH 050/230] Disable GCP/Firebase/Docker/deploy related workflows (add .disabled suffix to their .yml files) --- ...ternal.yml => cd-deploy-nodes-gcp.patch-external.yml.disabled} | 0 ...nodes-gcp.patch.yml => cd-deploy-nodes-gcp.patch.yml.disabled} | 0 .../{cd-deploy-nodes-gcp.yml => cd-deploy-nodes-gcp.yml.disabled} | 0 ...-gcp-resources.yml => chore-delete-gcp-resources.yml.disabled} | 0 .github/workflows/{ci-basic.yml => ci-basic.yml.disabled} | 0 ...-build-crates.patch.yml => ci-build-crates.patch.yml.disabled} | 0 .../{ci-build-crates.yml => ci-build-crates.yml.disabled} | 0 .../{ci-coverage.patch.yml => ci-coverage.patch.yml.disabled} | 0 .github/workflows/{ci-coverage.yml => ci-coverage.yml.disabled} | 0 .../workflows/{ci-lint.patch.yml => ci-lint.patch.yml.disabled} | 0 .github/workflows/{ci-lint.yml => ci-lint.yml.disabled} | 0 ...ts.patch-external.yml => ci-tests.patch-external.yml.disabled} | 0 .../workflows/{ci-tests.patch.yml => ci-tests.patch.yml.disabled} | 0 .github/workflows/{ci-tests.yml => ci-tests.yml.disabled} | 0 ...nit-tests-os.patch.yml => ci-unit-tests-os.patch.yml.disabled} | 0 .../{ci-unit-tests-os.yml => ci-unit-tests-os.yml.disabled} | 0 ...ernal.yml => docs-deploy-firebase.patch-external.yml.disabled} | 0 ...firebase.patch.yml => docs-deploy-firebase.patch.yml.disabled} | 0 ...docs-deploy-firebase.yml => docs-deploy-firebase.yml.disabled} | 0 ...ub-description.yml => docs-dockerhub-description.yml.disabled} | 0 ...manual-zcashd-deploy.yml => manual-zcashd-deploy.yml.disabled} | 0 .../{release-binaries.yml => release-binaries.yml.disabled} | 0 ...e-crates-io.patch.yml => release-crates-io.patch.yml.disabled} | 0 .../{release-crates-io.yml => release-crates-io.yml.disabled} | 0 .../{release-drafter.yml => release-drafter.yml.disabled} | 0 ...build-docker-image.yml => sub-build-docker-image.yml.disabled} | 0 ...on-tests-gcp.yml => sub-ci-integration-tests-gcp.yml.disabled} | 0 ...nit-tests-docker.yml => sub-ci-unit-tests-docker.yml.disabled} | 0 ...ests-gcp.yml => sub-deploy-integration-tests-gcp.yml.disabled} | 0 ...b-find-cached-disks.yml => sub-find-cached-disks.yml.disabled} | 0 ...b-test-zebra-config.yml => sub-test-zebra-config.yml.disabled} | 0 31 files changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{cd-deploy-nodes-gcp.patch-external.yml => cd-deploy-nodes-gcp.patch-external.yml.disabled} (100%) rename .github/workflows/{cd-deploy-nodes-gcp.patch.yml => cd-deploy-nodes-gcp.patch.yml.disabled} (100%) rename .github/workflows/{cd-deploy-nodes-gcp.yml => cd-deploy-nodes-gcp.yml.disabled} (100%) rename .github/workflows/{chore-delete-gcp-resources.yml => chore-delete-gcp-resources.yml.disabled} (100%) rename .github/workflows/{ci-basic.yml => ci-basic.yml.disabled} (100%) rename .github/workflows/{ci-build-crates.patch.yml => ci-build-crates.patch.yml.disabled} (100%) rename .github/workflows/{ci-build-crates.yml => ci-build-crates.yml.disabled} (100%) rename .github/workflows/{ci-coverage.patch.yml => ci-coverage.patch.yml.disabled} (100%) rename .github/workflows/{ci-coverage.yml => ci-coverage.yml.disabled} (100%) rename .github/workflows/{ci-lint.patch.yml => ci-lint.patch.yml.disabled} (100%) rename .github/workflows/{ci-lint.yml => ci-lint.yml.disabled} (100%) rename .github/workflows/{ci-tests.patch-external.yml => ci-tests.patch-external.yml.disabled} (100%) rename .github/workflows/{ci-tests.patch.yml => ci-tests.patch.yml.disabled} (100%) rename .github/workflows/{ci-tests.yml => ci-tests.yml.disabled} (100%) rename .github/workflows/{ci-unit-tests-os.patch.yml => ci-unit-tests-os.patch.yml.disabled} (100%) rename .github/workflows/{ci-unit-tests-os.yml => ci-unit-tests-os.yml.disabled} (100%) rename .github/workflows/{docs-deploy-firebase.patch-external.yml => docs-deploy-firebase.patch-external.yml.disabled} (100%) rename .github/workflows/{docs-deploy-firebase.patch.yml => docs-deploy-firebase.patch.yml.disabled} (100%) rename .github/workflows/{docs-deploy-firebase.yml => docs-deploy-firebase.yml.disabled} (100%) rename .github/workflows/{docs-dockerhub-description.yml => docs-dockerhub-description.yml.disabled} (100%) rename .github/workflows/{manual-zcashd-deploy.yml => manual-zcashd-deploy.yml.disabled} (100%) rename .github/workflows/{release-binaries.yml => release-binaries.yml.disabled} (100%) rename .github/workflows/{release-crates-io.patch.yml => release-crates-io.patch.yml.disabled} (100%) rename .github/workflows/{release-crates-io.yml => release-crates-io.yml.disabled} (100%) rename .github/workflows/{release-drafter.yml => release-drafter.yml.disabled} (100%) rename .github/workflows/{sub-build-docker-image.yml => sub-build-docker-image.yml.disabled} (100%) rename .github/workflows/{sub-ci-integration-tests-gcp.yml => sub-ci-integration-tests-gcp.yml.disabled} (100%) rename .github/workflows/{sub-ci-unit-tests-docker.yml => sub-ci-unit-tests-docker.yml.disabled} (100%) rename .github/workflows/{sub-deploy-integration-tests-gcp.yml => sub-deploy-integration-tests-gcp.yml.disabled} (100%) rename .github/workflows/{sub-find-cached-disks.yml => sub-find-cached-disks.yml.disabled} (100%) rename .github/workflows/{sub-test-zebra-config.yml => sub-test-zebra-config.yml.disabled} (100%) diff --git a/.github/workflows/cd-deploy-nodes-gcp.patch-external.yml b/.github/workflows/cd-deploy-nodes-gcp.patch-external.yml.disabled similarity index 100% rename from .github/workflows/cd-deploy-nodes-gcp.patch-external.yml rename to .github/workflows/cd-deploy-nodes-gcp.patch-external.yml.disabled diff --git a/.github/workflows/cd-deploy-nodes-gcp.patch.yml b/.github/workflows/cd-deploy-nodes-gcp.patch.yml.disabled similarity index 100% rename from .github/workflows/cd-deploy-nodes-gcp.patch.yml rename to .github/workflows/cd-deploy-nodes-gcp.patch.yml.disabled diff --git a/.github/workflows/cd-deploy-nodes-gcp.yml b/.github/workflows/cd-deploy-nodes-gcp.yml.disabled similarity index 100% rename from .github/workflows/cd-deploy-nodes-gcp.yml rename to .github/workflows/cd-deploy-nodes-gcp.yml.disabled diff --git a/.github/workflows/chore-delete-gcp-resources.yml b/.github/workflows/chore-delete-gcp-resources.yml.disabled similarity index 100% rename from .github/workflows/chore-delete-gcp-resources.yml rename to .github/workflows/chore-delete-gcp-resources.yml.disabled diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml.disabled similarity index 100% rename from .github/workflows/ci-basic.yml rename to .github/workflows/ci-basic.yml.disabled diff --git a/.github/workflows/ci-build-crates.patch.yml b/.github/workflows/ci-build-crates.patch.yml.disabled similarity index 100% rename from .github/workflows/ci-build-crates.patch.yml rename to .github/workflows/ci-build-crates.patch.yml.disabled diff --git a/.github/workflows/ci-build-crates.yml b/.github/workflows/ci-build-crates.yml.disabled similarity index 100% rename from .github/workflows/ci-build-crates.yml rename to .github/workflows/ci-build-crates.yml.disabled diff --git a/.github/workflows/ci-coverage.patch.yml b/.github/workflows/ci-coverage.patch.yml.disabled similarity index 100% rename from .github/workflows/ci-coverage.patch.yml rename to .github/workflows/ci-coverage.patch.yml.disabled diff --git a/.github/workflows/ci-coverage.yml b/.github/workflows/ci-coverage.yml.disabled similarity index 100% rename from .github/workflows/ci-coverage.yml rename to .github/workflows/ci-coverage.yml.disabled diff --git a/.github/workflows/ci-lint.patch.yml b/.github/workflows/ci-lint.patch.yml.disabled similarity index 100% rename from .github/workflows/ci-lint.patch.yml rename to .github/workflows/ci-lint.patch.yml.disabled diff --git a/.github/workflows/ci-lint.yml b/.github/workflows/ci-lint.yml.disabled similarity index 100% rename from .github/workflows/ci-lint.yml rename to .github/workflows/ci-lint.yml.disabled diff --git a/.github/workflows/ci-tests.patch-external.yml b/.github/workflows/ci-tests.patch-external.yml.disabled similarity index 100% rename from .github/workflows/ci-tests.patch-external.yml rename to .github/workflows/ci-tests.patch-external.yml.disabled diff --git a/.github/workflows/ci-tests.patch.yml b/.github/workflows/ci-tests.patch.yml.disabled similarity index 100% rename from .github/workflows/ci-tests.patch.yml rename to .github/workflows/ci-tests.patch.yml.disabled diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml.disabled similarity index 100% rename from .github/workflows/ci-tests.yml rename to .github/workflows/ci-tests.yml.disabled diff --git a/.github/workflows/ci-unit-tests-os.patch.yml b/.github/workflows/ci-unit-tests-os.patch.yml.disabled similarity index 100% rename from .github/workflows/ci-unit-tests-os.patch.yml rename to .github/workflows/ci-unit-tests-os.patch.yml.disabled diff --git a/.github/workflows/ci-unit-tests-os.yml b/.github/workflows/ci-unit-tests-os.yml.disabled similarity index 100% rename from .github/workflows/ci-unit-tests-os.yml rename to .github/workflows/ci-unit-tests-os.yml.disabled diff --git a/.github/workflows/docs-deploy-firebase.patch-external.yml b/.github/workflows/docs-deploy-firebase.patch-external.yml.disabled similarity index 100% rename from .github/workflows/docs-deploy-firebase.patch-external.yml rename to .github/workflows/docs-deploy-firebase.patch-external.yml.disabled diff --git a/.github/workflows/docs-deploy-firebase.patch.yml b/.github/workflows/docs-deploy-firebase.patch.yml.disabled similarity index 100% rename from .github/workflows/docs-deploy-firebase.patch.yml rename to .github/workflows/docs-deploy-firebase.patch.yml.disabled diff --git a/.github/workflows/docs-deploy-firebase.yml b/.github/workflows/docs-deploy-firebase.yml.disabled similarity index 100% rename from .github/workflows/docs-deploy-firebase.yml rename to .github/workflows/docs-deploy-firebase.yml.disabled diff --git a/.github/workflows/docs-dockerhub-description.yml b/.github/workflows/docs-dockerhub-description.yml.disabled similarity index 100% rename from .github/workflows/docs-dockerhub-description.yml rename to .github/workflows/docs-dockerhub-description.yml.disabled diff --git a/.github/workflows/manual-zcashd-deploy.yml b/.github/workflows/manual-zcashd-deploy.yml.disabled similarity index 100% rename from .github/workflows/manual-zcashd-deploy.yml rename to .github/workflows/manual-zcashd-deploy.yml.disabled diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml.disabled similarity index 100% rename from .github/workflows/release-binaries.yml rename to .github/workflows/release-binaries.yml.disabled diff --git a/.github/workflows/release-crates-io.patch.yml b/.github/workflows/release-crates-io.patch.yml.disabled similarity index 100% rename from .github/workflows/release-crates-io.patch.yml rename to .github/workflows/release-crates-io.patch.yml.disabled diff --git a/.github/workflows/release-crates-io.yml b/.github/workflows/release-crates-io.yml.disabled similarity index 100% rename from .github/workflows/release-crates-io.yml rename to .github/workflows/release-crates-io.yml.disabled diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml.disabled similarity index 100% rename from .github/workflows/release-drafter.yml rename to .github/workflows/release-drafter.yml.disabled diff --git a/.github/workflows/sub-build-docker-image.yml b/.github/workflows/sub-build-docker-image.yml.disabled similarity index 100% rename from .github/workflows/sub-build-docker-image.yml rename to .github/workflows/sub-build-docker-image.yml.disabled diff --git a/.github/workflows/sub-ci-integration-tests-gcp.yml b/.github/workflows/sub-ci-integration-tests-gcp.yml.disabled similarity index 100% rename from .github/workflows/sub-ci-integration-tests-gcp.yml rename to .github/workflows/sub-ci-integration-tests-gcp.yml.disabled diff --git a/.github/workflows/sub-ci-unit-tests-docker.yml b/.github/workflows/sub-ci-unit-tests-docker.yml.disabled similarity index 100% rename from .github/workflows/sub-ci-unit-tests-docker.yml rename to .github/workflows/sub-ci-unit-tests-docker.yml.disabled diff --git a/.github/workflows/sub-deploy-integration-tests-gcp.yml b/.github/workflows/sub-deploy-integration-tests-gcp.yml.disabled similarity index 100% rename from .github/workflows/sub-deploy-integration-tests-gcp.yml rename to .github/workflows/sub-deploy-integration-tests-gcp.yml.disabled diff --git a/.github/workflows/sub-find-cached-disks.yml b/.github/workflows/sub-find-cached-disks.yml.disabled similarity index 100% rename from .github/workflows/sub-find-cached-disks.yml rename to .github/workflows/sub-find-cached-disks.yml.disabled diff --git a/.github/workflows/sub-test-zebra-config.yml b/.github/workflows/sub-test-zebra-config.yml.disabled similarity index 100% rename from .github/workflows/sub-test-zebra-config.yml rename to .github/workflows/sub-test-zebra-config.yml.disabled From 6b43dd19508e87a897f40f3ec4bcd7340366a7ab Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 29 Oct 2024 15:02:32 +0100 Subject: [PATCH 051/230] Trigger CI From c6f8913c0a410578645cd29be9204152cdb21097 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 29 Oct 2024 15:07:21 +0100 Subject: [PATCH 052/230] Restore the names of ci-*.yml files )i.e. non GCP/Firebase/Docker/deploy related workflows (add .disabled suffix to their .yml files) --- .github/workflows/{ci-basic.yml.disabled => ci-basic.yml} | 0 ...-build-crates.patch.yml.disabled => ci-build-crates.patch.yml} | 0 .../{ci-build-crates.yml.disabled => ci-build-crates.yml} | 0 .../{ci-coverage.patch.yml.disabled => ci-coverage.patch.yml} | 0 .github/workflows/{ci-coverage.yml.disabled => ci-coverage.yml} | 0 .../workflows/{ci-lint.patch.yml.disabled => ci-lint.patch.yml} | 0 .github/workflows/{ci-lint.yml.disabled => ci-lint.yml} | 0 ...ts.patch-external.yml.disabled => ci-tests.patch-external.yml} | 0 .../workflows/{ci-tests.patch.yml.disabled => ci-tests.patch.yml} | 0 .github/workflows/{ci-tests.yml.disabled => ci-tests.yml} | 0 ...nit-tests-os.patch.yml.disabled => ci-unit-tests-os.patch.yml} | 0 .../{ci-unit-tests-os.yml.disabled => ci-unit-tests-os.yml} | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{ci-basic.yml.disabled => ci-basic.yml} (100%) rename .github/workflows/{ci-build-crates.patch.yml.disabled => ci-build-crates.patch.yml} (100%) rename .github/workflows/{ci-build-crates.yml.disabled => ci-build-crates.yml} (100%) rename .github/workflows/{ci-coverage.patch.yml.disabled => ci-coverage.patch.yml} (100%) rename .github/workflows/{ci-coverage.yml.disabled => ci-coverage.yml} (100%) rename .github/workflows/{ci-lint.patch.yml.disabled => ci-lint.patch.yml} (100%) rename .github/workflows/{ci-lint.yml.disabled => ci-lint.yml} (100%) rename .github/workflows/{ci-tests.patch-external.yml.disabled => ci-tests.patch-external.yml} (100%) rename .github/workflows/{ci-tests.patch.yml.disabled => ci-tests.patch.yml} (100%) rename .github/workflows/{ci-tests.yml.disabled => ci-tests.yml} (100%) rename .github/workflows/{ci-unit-tests-os.patch.yml.disabled => ci-unit-tests-os.patch.yml} (100%) rename .github/workflows/{ci-unit-tests-os.yml.disabled => ci-unit-tests-os.yml} (100%) diff --git a/.github/workflows/ci-basic.yml.disabled b/.github/workflows/ci-basic.yml similarity index 100% rename from .github/workflows/ci-basic.yml.disabled rename to .github/workflows/ci-basic.yml diff --git a/.github/workflows/ci-build-crates.patch.yml.disabled b/.github/workflows/ci-build-crates.patch.yml similarity index 100% rename from .github/workflows/ci-build-crates.patch.yml.disabled rename to .github/workflows/ci-build-crates.patch.yml diff --git a/.github/workflows/ci-build-crates.yml.disabled b/.github/workflows/ci-build-crates.yml similarity index 100% rename from .github/workflows/ci-build-crates.yml.disabled rename to .github/workflows/ci-build-crates.yml diff --git a/.github/workflows/ci-coverage.patch.yml.disabled b/.github/workflows/ci-coverage.patch.yml similarity index 100% rename from .github/workflows/ci-coverage.patch.yml.disabled rename to .github/workflows/ci-coverage.patch.yml diff --git a/.github/workflows/ci-coverage.yml.disabled b/.github/workflows/ci-coverage.yml similarity index 100% rename from .github/workflows/ci-coverage.yml.disabled rename to .github/workflows/ci-coverage.yml diff --git a/.github/workflows/ci-lint.patch.yml.disabled b/.github/workflows/ci-lint.patch.yml similarity index 100% rename from .github/workflows/ci-lint.patch.yml.disabled rename to .github/workflows/ci-lint.patch.yml diff --git a/.github/workflows/ci-lint.yml.disabled b/.github/workflows/ci-lint.yml similarity index 100% rename from .github/workflows/ci-lint.yml.disabled rename to .github/workflows/ci-lint.yml diff --git a/.github/workflows/ci-tests.patch-external.yml.disabled b/.github/workflows/ci-tests.patch-external.yml similarity index 100% rename from .github/workflows/ci-tests.patch-external.yml.disabled rename to .github/workflows/ci-tests.patch-external.yml diff --git a/.github/workflows/ci-tests.patch.yml.disabled b/.github/workflows/ci-tests.patch.yml similarity index 100% rename from .github/workflows/ci-tests.patch.yml.disabled rename to .github/workflows/ci-tests.patch.yml diff --git a/.github/workflows/ci-tests.yml.disabled b/.github/workflows/ci-tests.yml similarity index 100% rename from .github/workflows/ci-tests.yml.disabled rename to .github/workflows/ci-tests.yml diff --git a/.github/workflows/ci-unit-tests-os.patch.yml.disabled b/.github/workflows/ci-unit-tests-os.patch.yml similarity index 100% rename from .github/workflows/ci-unit-tests-os.patch.yml.disabled rename to .github/workflows/ci-unit-tests-os.patch.yml diff --git a/.github/workflows/ci-unit-tests-os.yml.disabled b/.github/workflows/ci-unit-tests-os.yml similarity index 100% rename from .github/workflows/ci-unit-tests-os.yml.disabled rename to .github/workflows/ci-unit-tests-os.yml From 1c061e9a95419b44dc85f3740b2fe010a5f195e7 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 29 Oct 2024 16:07:05 +0100 Subject: [PATCH 053/230] Update Cargo.lock --- Cargo.lock | 216 ++++++++++++++++++++++++++++------------------------- 1 file changed, 113 insertions(+), 103 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1df18e16559..b399cef361e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -240,7 +240,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -251,7 +251,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -430,7 +430,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.79", + "syn 2.0.85", "which", ] @@ -596,9 +596,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2-sys" @@ -833,7 +833,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -1097,7 +1097,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -1145,7 +1145,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -1167,7 +1167,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -1482,6 +1482,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1522,9 +1528,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1537,9 +1543,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1547,15 +1553,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1564,38 +1570,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1744,7 +1750,7 @@ dependencies = [ [[package]] name = "halo2_gadgets" version = "0.3.0" -source = "git+https://github.com/QED-it/halo2?branch=zsa1#1195c9af90205829ba20662bdfaf20dcc878807d" +source = "git+https://github.com/QED-it/halo2?branch=zsa1#90bc56539022c7b47d3da6201958ae2d5a694207" dependencies = [ "arrayvec", "bitvec", @@ -1800,6 +1806,9 @@ name = "hashbrown" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +dependencies = [ + "foldhash", +] [[package]] name = "hdrhistogram" @@ -2028,9 +2037,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", @@ -2067,7 +2076,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" dependencies = [ - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", "pin-project-lite", "tokio", @@ -2085,7 +2094,7 @@ dependencies = [ "futures-util", "http 1.1.0", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.5.0", "pin-project-lite", "socket2", "tokio", @@ -2618,9 +2627,9 @@ dependencies = [ [[package]] name = "metrics" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884adb57038347dfbaf2d5065887b6cf4312330dc8e94bc30a1a839bd79d3261" +checksum = "8ae428771d17306715c5091d446327d1cfdedc82185c65ba8423ab404e45bf10" dependencies = [ "ahash", "portable-atomic", @@ -2628,13 +2637,13 @@ dependencies = [ [[package]] name = "metrics-exporter-prometheus" -version = "0.15.3" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f0c8427b39666bf970460908b213ec09b3b350f20c0c2eabcbba51704a08e6" +checksum = "85b6f8152da6d7892ff1b7a1c0fa3f435e92b5918ad67035c3bb432111d9a29b" dependencies = [ "base64 0.22.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", "indexmap 2.6.0", "ipnet", @@ -2648,15 +2657,14 @@ dependencies = [ [[package]] name = "metrics-util" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4259040465c955f9f2f1a4a8a16dc46726169bca0f88e8fb2dbeced487c3e828" +checksum = "15b482df36c13dd1869d73d14d28cd4855fbd6cfc32294bee109908a9f4a4ed7" dependencies = [ "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.14.5", + "hashbrown 0.15.0", "metrics", - "num_cpus", "quanta", "sketches-ddsketch", ] @@ -2845,9 +2853,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oorandom" @@ -3093,7 +3101,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -3119,22 +3127,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -3232,7 +3240,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -3325,7 +3333,7 @@ checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -3365,7 +3373,7 @@ dependencies = [ "prost 0.12.6", "prost-types 0.12.6", "regex", - "syn 2.0.79", + "syn 2.0.85", "tempfile", ] @@ -3386,7 +3394,7 @@ dependencies = [ "prost 0.13.3", "prost-types 0.13.1", "regex", - "syn 2.0.79", + "syn 2.0.85", "tempfile", ] @@ -3400,7 +3408,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -3413,7 +3421,7 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -4170,9 +4178,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -4188,20 +4196,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "indexmap 2.6.0", "itoa", @@ -4243,9 +4251,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64 0.22.1", "chrono", @@ -4255,7 +4263,7 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "serde_with_macros 3.9.0", + "serde_with_macros 3.11.0", "time", ] @@ -4273,14 +4281,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -4363,9 +4371,9 @@ checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" [[package]] name = "sketches-ddsketch" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85636c14b73d81f541e525f585c0a2109e6744e1565b5c1668e31c70c10ed65c" +checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" [[package]] name = "slab" @@ -4512,9 +4520,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" dependencies = [ "proc-macro2", "quote", @@ -4620,7 +4628,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -4707,9 +4715,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -4732,7 +4740,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -4866,7 +4874,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-timeout", "hyper-util", "percent-encoding", @@ -4891,7 +4899,7 @@ dependencies = [ "proc-macro2", "prost-build 0.12.6", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -4905,7 +4913,7 @@ dependencies = [ "prost-build 0.13.1", "prost-types 0.13.1", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -4944,7 +4952,7 @@ dependencies = [ [[package]] name = "tower-batch-control" -version = "0.2.41-beta.16" +version = "0.2.41-beta.17" dependencies = [ "color-eyre", "ed25519-zebra", @@ -4967,7 +4975,7 @@ dependencies = [ [[package]] name = "tower-fallback" -version = "0.2.41-beta.16" +version = "0.2.41-beta.17" dependencies = [ "futures-core", "pin-project", @@ -5035,7 +5043,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -5148,7 +5156,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -5477,7 +5485,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", "wasm-bindgen-shared", ] @@ -5511,7 +5519,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6027,7 +6035,7 @@ dependencies = [ [[package]] name = "zebra-chain" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "bitflags 2.6.0", "bitflags-serde-legacy", @@ -6069,7 +6077,7 @@ dependencies = [ "serde", "serde-big-array", "serde_json", - "serde_with 3.9.0", + "serde_with 3.11.0", "sha2", "spandoc", "static_assertions", @@ -6092,7 +6100,7 @@ dependencies = [ [[package]] name = "zebra-consensus" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "bellman", "blake2b_simd", @@ -6138,7 +6146,7 @@ dependencies = [ [[package]] name = "zebra-grpc" -version = "0.1.0-alpha.7" +version = "0.1.0-alpha.8" dependencies = [ "color-eyre", "futures-util", @@ -6160,7 +6168,7 @@ dependencies = [ [[package]] name = "zebra-network" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "bitflags 2.6.0", "byteorder", @@ -6201,7 +6209,7 @@ dependencies = [ [[package]] name = "zebra-node-services" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "color-eyre", "jsonrpc-core", @@ -6214,9 +6222,11 @@ dependencies = [ [[package]] name = "zebra-rpc" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ + "base64 0.22.1", "chrono", + "color-eyre", "futures", "hex", "indexmap 2.6.0", @@ -6251,7 +6261,7 @@ dependencies = [ [[package]] name = "zebra-scan" -version = "0.1.0-alpha.9" +version = "0.1.0-alpha.10" dependencies = [ "bls12_381", "chrono", @@ -6297,7 +6307,7 @@ dependencies = [ [[package]] name = "zebra-script" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "hex", "lazy_static", @@ -6309,7 +6319,7 @@ dependencies = [ [[package]] name = "zebra-state" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "bincode", "chrono", @@ -6354,7 +6364,7 @@ dependencies = [ [[package]] name = "zebra-test" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "color-eyre", "futures", @@ -6382,7 +6392,7 @@ dependencies = [ [[package]] name = "zebra-utils" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "color-eyre", "hex", @@ -6397,7 +6407,7 @@ dependencies = [ "serde_json", "serde_yml", "structopt", - "syn 2.0.79", + "syn 2.0.85", "thiserror", "tinyvec", "tokio", @@ -6413,7 +6423,7 @@ dependencies = [ [[package]] name = "zebrad" -version = "2.0.0-rc.0" +version = "2.0.0" dependencies = [ "abscissa_core", "atty", @@ -6429,7 +6439,7 @@ dependencies = [ "howudoin", "http-body-util", "humantime-serde", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", "indexmap 2.6.0", "indicatif", @@ -6501,7 +6511,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -6521,7 +6531,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] From 8c76592fa08d41f4cd4eb21e7a8c23251b22402e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 29 Oct 2024 16:21:32 +0100 Subject: [PATCH 054/230] Use zsa1 branch for librustzcash crates --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 16 ++++++---------- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b399cef361e..6690a968028 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend#7191c6aacad337ca2aad86b46d992688ab1593af" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" dependencies = [ "blake2b_simd", "byteorder", @@ -1407,7 +1407,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend#7191c6aacad337ca2aad86b46d992688ab1593af" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" dependencies = [ "blake2b_simd", ] @@ -5814,7 +5814,7 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" version = "0.3.2" -source = "git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend#7191c6aacad337ca2aad86b46d992688ab1593af" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" dependencies = [ "bech32", "bs58", @@ -5826,7 +5826,7 @@ dependencies = [ [[package]] name = "zcash_client_backend" version = "0.12.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend#7191c6aacad337ca2aad86b46d992688ab1593af" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" dependencies = [ "base64 0.21.7", "bech32", @@ -5854,7 +5854,7 @@ dependencies = [ "which", "zcash_address", "zcash_encoding", - "zcash_keys 0.2.0 (git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend)", + "zcash_keys 0.2.0 (git+https://github.com/QED-it/librustzcash?branch=zsa1)", "zcash_note_encryption", "zcash_primitives", "zcash_protocol", @@ -5865,7 +5865,7 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend#7191c6aacad337ca2aad86b46d992688ab1593af" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" dependencies = [ "byteorder", "nonempty", @@ -5874,7 +5874,7 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend#7191c6aacad337ca2aad86b46d992688ab1593af" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" dependencies = [ "blake2b_simd", "byteorder", @@ -5910,7 +5910,7 @@ dependencies = [ [[package]] name = "zcash_keys" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend#7191c6aacad337ca2aad86b46d992688ab1593af" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" dependencies = [ "bech32", "blake2b_simd", @@ -5947,14 +5947,14 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.15.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend#7191c6aacad337ca2aad86b46d992688ab1593af" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" dependencies = [ "aes", "bip0039", "blake2b_simd", "byteorder", "document-features", - "equihash 0.2.0 (git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend)", + "equihash 0.2.0 (git+https://github.com/QED-it/librustzcash?branch=zsa1)", "ff", "fpe", "group", @@ -6008,7 +6008,7 @@ dependencies = [ [[package]] name = "zcash_protocol" version = "0.1.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend#7191c6aacad337ca2aad86b46d992688ab1593af" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" dependencies = [ "document-features", "memuse", @@ -6548,7 +6548,7 @@ dependencies = [ [[package]] name = "zip321" version = "0.0.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zebra-compat-enable-backend#7191c6aacad337ca2aad86b46d992688ab1593af" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" dependencies = [ "base64 0.21.7", "nom", diff --git a/Cargo.toml b/Cargo.toml index c2792f9ff9c..dda73229b91 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,18 +104,14 @@ panic = "abort" lto = "thin" [patch.crates-io] -#halo2_proofs = { version = "0.3.0", git = "https://github.com/QED-it/halo2", rev = "1195c9af90205829ba20662bdfaf20dcc878807d" } -#halo2_gadgets = { version = "0.3.0", git = "https://github.com/QED-it/halo2", rev = "1195c9af90205829ba20662bdfaf20dcc878807d" } halo2_proofs = { version = "0.3.0", git = "https://github.com/QED-it/halo2", branch = "zsa1" } halo2_gadgets = { version = "0.3.0", git = "https://github.com/QED-it/halo2", branch = "zsa1" } zcash_note_encryption = { version = "0.4.0", git = "https://github.com/QED-it/zcash_note_encryption", branch = "zsa1" } sapling-crypto = { version = "0.1.3", git = "https://github.com/QED-it/sapling-crypto", branch = "zsa1" } orchard = { version = "0.8.0", git = "https://github.com/QED-it/orchard", branch = "zsa1" } -zcash_primitives = { version = "0.15.0", git = "https://github.com/QED-it/librustzcash", branch = "zebra-compat-enable-backend" } -zcash_protocol = { version = "0.1.1", git = "https://github.com/QED-it/librustzcash", branch = "zebra-compat-enable-backend" } -zcash_address = { version = "0.3.2", git = "https://github.com/QED-it/librustzcash", branch = "zebra-compat-enable-backend" } -zcash_encoding = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "zebra-compat-enable-backend" } -zcash_history = { version = "0.4.0", git = "https://github.com/QED-it/librustzcash", branch = "zebra-compat-enable-backend" } -zcash_client_backend = { version = "0.12.1", git = "https://github.com/QED-it/librustzcash", branch = "zebra-compat-enable-backend" } -#incrementalmerkletree = { git = "https://github.com/zcash/incrementalmerkletree", rev = "ffe4234788fd22662b937ba7c6ea01535fcc1293" } -#shardtree = { git = "https://github.com/zcash/incrementalmerkletree", rev = "ffe4234788fd22662b937ba7c6ea01535fcc1293" } +zcash_primitives = { version = "0.15.0", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } +zcash_protocol = { version = "0.1.1", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } +zcash_address = { version = "0.3.2", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } +zcash_encoding = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } +zcash_history = { version = "0.4.0", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } +zcash_client_backend = { version = "0.12.1", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } From ab9a2b54606c762b1a127659245579bee8110339 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 30 Oct 2024 10:14:48 +0100 Subject: [PATCH 055/230] Add support for processing ZSA orchard_shielded_data in zebra_state --- .../src/service/non_finalized_state/chain.rs | 59 ++++++++++++++----- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/zebra-state/src/service/non_finalized_state/chain.rs b/zebra-state/src/service/non_finalized_state/chain.rs index 190f8b1a930..d0ce3eee904 100644 --- a/zebra-state/src/service/non_finalized_state/chain.rs +++ b/zebra-state/src/service/non_finalized_state/chain.rs @@ -1492,21 +1492,23 @@ impl Chain { .zip(transaction_hashes.iter().cloned()) .enumerate() { - let ( - inputs, - outputs, - joinsplit_data, - sapling_shielded_data_per_spend_anchor, - sapling_shielded_data_shared_anchor, - orchard_shielded_data, - ) = match transaction.deref() { + let transaction_data = match transaction.deref() { V4 { inputs, outputs, joinsplit_data, sapling_shielded_data, .. - } => (inputs, outputs, joinsplit_data, sapling_shielded_data, &None, &None), + } => ( + inputs, + outputs, + joinsplit_data, + sapling_shielded_data, + &None, + &None, + #[cfg(feature ="tx-v6")] + &None + ), V5 { inputs, outputs, @@ -1520,13 +1522,15 @@ impl Chain { &None, sapling_shielded_data, orchard_shielded_data, + #[cfg(feature ="tx-v6")] + &None, ), #[cfg(feature ="tx-v6")] V6 { inputs, outputs, sapling_shielded_data, - orchard_shielded_data: _, + orchard_shielded_data, .. } => ( inputs, @@ -1534,14 +1538,35 @@ impl Chain { &None, &None, sapling_shielded_data, - // FIXME: support V6 shielded data? - &None, //orchard_shielded_data, + &None, + orchard_shielded_data, ), V1 { .. } | V2 { .. } | V3 { .. } => unreachable!( "older transaction versions only exist in finalized blocks, because of the mandatory canopy checkpoint", ), }; + #[cfg(not(feature = "tx-v6"))] + let ( + inputs, + outputs, + joinsplit_data, + sapling_shielded_data_per_spend_anchor, + sapling_shielded_data_shared_anchor, + orchard_shielded_data_vanilla, + ) = transaction_data; + + #[cfg(feature = "tx-v6")] + let ( + inputs, + outputs, + joinsplit_data, + sapling_shielded_data_per_spend_anchor, + sapling_shielded_data_shared_anchor, + orchard_shielded_data_vanilla, + orchard_shielded_data_zsa, + ) = transaction_data; + // add key `transaction.hash` and value `(height, tx_index)` to `tx_loc_by_hash` let transaction_location = TransactionLocation::from_usize(height, transaction_index); let prior_pair = self @@ -1561,7 +1586,9 @@ impl Chain { self.update_chain_tip_with(joinsplit_data)?; self.update_chain_tip_with(sapling_shielded_data_per_spend_anchor)?; self.update_chain_tip_with(sapling_shielded_data_shared_anchor)?; - self.update_chain_tip_with(orchard_shielded_data)?; + self.update_chain_tip_with(orchard_shielded_data_vanilla)?; + #[cfg(feature = "tx-v6")] + self.update_chain_tip_with(orchard_shielded_data_zsa)?; } // update the chain value pool balances @@ -2049,11 +2076,11 @@ where } } -impl UpdateWith>> for Chain { +impl UpdateWith>> for Chain { #[instrument(skip(self, orchard_shielded_data))] fn update_chain_tip_with( &mut self, - orchard_shielded_data: &Option>, + orchard_shielded_data: &Option>, ) -> Result<(), ValidateContextError> { if let Some(orchard_shielded_data) = orchard_shielded_data { // We do note commitment tree updates in parallel rayon threads. @@ -2074,7 +2101,7 @@ impl UpdateWith>> for Chai #[instrument(skip(self, orchard_shielded_data))] fn revert_chain_with( &mut self, - orchard_shielded_data: &Option>, + orchard_shielded_data: &Option>, _position: RevertPosition, ) { if let Some(orchard_shielded_data) = orchard_shielded_data { From 2587b043ebb3eb3e203772aef4c1a94936bd0fc5 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 3 Nov 2024 18:59:03 +0100 Subject: [PATCH 056/230] Introduce match_orchard_shielded_data macro in transaction.rs and refactor orchard_shielded_data_iter and orchard_shielded_data_field macros to use it --- zebra-chain/src/transaction.rs | 117 +++++++++++++++------------------ 1 file changed, 54 insertions(+), 63 deletions(-) diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index e60f13b57a1..cd6c635a11f 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -53,58 +53,67 @@ use crate::{ value_balance::{ValueBalance, ValueBalanceError}, }; -// FIXME: doc this -// Move down -macro_rules! orchard_shielded_data_iter { - ($self:expr, $mapper:expr) => { +/// Applies expression to different versions of `Transaction` to handle Orchard shielded data. +macro_rules! match_orchard_shielded_data { + // Separate field sets and expressions for V5 and V6 + ($self:expr, $pre_v5_expr:expr, { $( $v5_field:ident ),+ }, $v5_expr:expr, { $( $v6_field:ident ),+ }, $v6_expr:expr) => { match $self { - // No Orchard shielded data Transaction::V1 { .. } | Transaction::V2 { .. } | Transaction::V3 { .. } - | Transaction::V4 { .. } => Box::new(std::iter::empty()), + | Transaction::V4 { .. } => $pre_v5_expr, - Transaction::V5 { - orchard_shielded_data, - .. - } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), + Transaction::V5 { $( $v5_field ),+, .. } => $v5_expr, #[cfg(feature = "tx-v6")] - Transaction::V6 { - orchard_shielded_data, - .. - } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), + Transaction::V6 { $( $v6_field ),+, .. } => $v6_expr, } }; + + // Single field set and expression used for both V5 and V6 + ($self:expr, $pre_v5_expr:expr, { $( $v5_v6_field:ident ),+ }, $v5_v6_expr:expr) => { + match_orchard_shielded_data!( + $self, + $pre_v5_expr, + { $( $v5_v6_field ),+ }, + $v5_v6_expr, + { $( $v5_v6_field ),+ }, + $v5_v6_expr + ) + }; +} + +/// Creates an iterator over Orchard shielded data. +/// +/// - `$self`: The `Transaction` instance. +/// - `$mapper`: Function to apply to each data item. +macro_rules! orchard_shielded_data_iter { + ($self:expr, $mapper:expr) => { + match_orchard_shielded_data!( + $self, + Box::new(std::iter::empty()), + { orchard_shielded_data }, + Box::new(orchard_shielded_data.into_iter().flat_map($mapper)) + ) + }; } -// FIXME: doc this -// Move down +/// Retrieves a specific field from Orchard shielded data. +/// +/// - `$self`: The `Transaction` instance. +/// - `$field`: The field to access macro_rules! orchard_shielded_data_field { ($self:expr, $field:ident) => { - match $self { - // No Orchard shielded data - Transaction::V1 { .. } - | Transaction::V2 { .. } - | Transaction::V3 { .. } - | Transaction::V4 { .. } => None, - - Transaction::V5 { - orchard_shielded_data, - .. - } => orchard_shielded_data.as_ref().map(|data| data.$field), - - #[cfg(feature = "tx-v6")] - Transaction::V6 { - orchard_shielded_data, - .. - } => orchard_shielded_data.as_ref().map(|data| data.$field), - } + match_orchard_shielded_data!( + $self, + None, + { orchard_shielded_data }, + orchard_shielded_data.as_ref().map(|d| d.$field) + ) }; } -// FIXME: -// Define the macro for including the V6 pattern +/// Generates match patterns for `Transaction::V5` and `Transaction::V6` #[cfg(feature = "tx-v6")] macro_rules! tx_v5_and_v6 { { $($fields:tt)* } => { @@ -112,6 +121,7 @@ macro_rules! tx_v5_and_v6 { }; } +/// Generates a match pattern for `Transaction::V5` only #[cfg(not(feature = "tx-v6"))] macro_rules! tx_v5_and_v6 { { $($fields:tt)* } => { @@ -1441,33 +1451,14 @@ impl Transaction { /// See `orchard_value_balance` for details. #[cfg(any(test, feature = "proptest-impl"))] pub fn orchard_value_balance_mut(&mut self) -> Option<&mut Amount> { - match self { - Transaction::V5 { - orchard_shielded_data: Some(orchard_shielded_data), - .. - } => Some(&mut orchard_shielded_data.value_balance), - - #[cfg(feature = "tx-v6")] - Transaction::V6 { - orchard_shielded_data: Some(orchard_shielded_data), - .. - } => Some(&mut orchard_shielded_data.value_balance), - - Transaction::V1 { .. } - | Transaction::V2 { .. } - | Transaction::V3 { .. } - | Transaction::V4 { .. } - | Transaction::V5 { - orchard_shielded_data: None, - .. - } => None, - - #[cfg(feature = "tx-v6")] - Transaction::V6 { - orchard_shielded_data: None, - .. - } => None, - } + match_orchard_shielded_data!( + self, + None, + { orchard_shielded_data }, + orchard_shielded_data + .as_mut() + .map(|shielded_data| &mut shielded_data.value_balance) + ) } /// Returns the value balances for this transaction using the provided transparent outputs. From 7447d452e17376b5499a9ff1213e42dd5639dc21 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 3 Nov 2024 19:20:39 +0100 Subject: [PATCH 057/230] Expose Burn, NoBurn, and IssueData from orchard_zsa module directly --- zebra-chain/src/orchard.rs | 3 --- zebra-chain/src/orchard/orchard_flavor_ext.rs | 2 +- zebra-chain/src/orchard_zsa.rs | 7 ++++--- zebra-chain/src/transaction.rs | 4 ++-- zebra-chain/src/transaction/arbitrary.rs | 2 +- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/zebra-chain/src/orchard.rs b/zebra-chain/src/orchard.rs index 3141b6a1154..a44aa4ae2ec 100644 --- a/zebra-chain/src/orchard.rs +++ b/zebra-chain/src/orchard.rs @@ -30,6 +30,3 @@ pub(crate) use shielded_data::ActionCommon; #[cfg(feature = "tx-v6")] pub use orchard_flavor_ext::OrchardZSA; - -#[cfg(feature = "tx-v6")] -pub(crate) use crate::orchard_zsa::issuance::IssueData; diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index 119646ae7b9..6ad05abd889 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -12,7 +12,7 @@ use orchard::{note_encryption::OrchardDomainCommon, orchard_flavor}; use crate::serialization::{ZcashDeserialize, ZcashSerialize}; #[cfg(feature = "tx-v6")] -use crate::orchard_zsa::burn::{Burn, NoBurn}; +use crate::orchard_zsa::{Burn, NoBurn}; use super::note; diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index d1dae03d792..be3e29ec0e4 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -6,7 +6,8 @@ pub(crate) mod arbitrary; mod common; -pub mod burn; -pub mod issuance; +mod burn; +mod issuance; -pub use burn::BurnItem; +pub(crate) use burn::{Burn, NoBurn}; +pub(crate) use issuance::IssueData; diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index cd6c635a11f..09c15090814 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -40,7 +40,7 @@ pub use unmined::{ use crate::{ amount::{Amount, Error as AmountError, NegativeAllowed, NonNegative}, - block, orchard, + block, orchard, orchard_zsa, parameters::{ConsensusBranchId, NetworkUpgrade}, primitives::{ed25519, Bctv14Proof, Groth16Proof}, sapling, @@ -245,7 +245,7 @@ pub enum Transaction { orchard_shielded_data: Option>, /// The ZSA issuance data for this transaction, if any. #[cfg(feature = "tx-v6")] - orchard_zsa_issue_data: Option, + orchard_zsa_issue_data: Option, }, } diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index eb8c7c56ed6..cc06655c2ed 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -21,7 +21,7 @@ use crate::{ }; #[cfg(feature = "tx-v6")] -use crate::orchard_zsa::issuance::IssueData; +use crate::orchard_zsa::IssueData; use itertools::Itertools; From 714e6314f6efc011b23fb3be82280ff85cf40ca2 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 3 Nov 2024 19:29:59 +0100 Subject: [PATCH 058/230] Add IssueData::note_commitments and use it in Transaction::orchard_note_commitments to merge Orchard ZSA issuance note commitments for V6 transactions --- zebra-chain/src/block.rs | 2 +- zebra-chain/src/block/arbitrary.rs | 2 +- zebra-chain/src/orchard_zsa/issuance.rs | 38 ++++++++++++++----- zebra-chain/src/parallel/tree.rs | 2 +- zebra-chain/src/transaction.rs | 28 +++++++++++++- .../disk_format/upgrade/add_subtrees.rs | 1 - 6 files changed, 58 insertions(+), 15 deletions(-) diff --git a/zebra-chain/src/block.rs b/zebra-chain/src/block.rs index 5bbc774d35c..998fd11b860 100644 --- a/zebra-chain/src/block.rs +++ b/zebra-chain/src/block.rs @@ -175,7 +175,7 @@ impl Block { } /// Access the [orchard note commitments](pallas::Base) from all transactions in this block. - pub fn orchard_note_commitments(&self) -> impl Iterator { + pub fn orchard_note_commitments(&self) -> impl Iterator + '_ { self.transactions .iter() .flat_map(|transaction| transaction.orchard_note_commitments()) diff --git a/zebra-chain/src/block/arbitrary.rs b/zebra-chain/src/block/arbitrary.rs index 5a39afa2ee4..cf8ce64c9b8 100644 --- a/zebra-chain/src/block/arbitrary.rs +++ b/zebra-chain/src/block/arbitrary.rs @@ -452,7 +452,7 @@ impl Block { sapling_tree.append(*sapling_note_commitment).unwrap(); } for orchard_note_commitment in transaction.orchard_note_commitments() { - orchard_tree.append(*orchard_note_commitment).unwrap(); + orchard_tree.append(orchard_note_commitment).unwrap(); } } new_transactions.push(Arc::new(transaction)); diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index 8a1dde30ca5..9f7b4e9faaf 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -2,14 +2,6 @@ use std::{fmt::Debug, io}; -use crate::{ - block::MAX_BLOCK_BYTES, - serialization::{ - zcash_serialize_bytes, zcash_serialize_empty_list, ReadZcashExt, SerializationError, - TrustedPreallocate, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, - }, -}; - use nonempty::NonEmpty; // FIXME: needed for "as_bool" only - consider to implement as_bool locally @@ -17,15 +9,28 @@ use bitvec::macros::internal::funty::Fundamental; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use halo2::pasta::pallas; + +// For pallas::Base::from_repr only +use group::ff::PrimeField; + use orchard::{ issuance::{IssueAction, IssueBundle, Signed}, keys::IssuanceValidatingKey, - note::{RandomSeed, Rho}, + note::{ExtractedNoteCommitment, RandomSeed, Rho}, primitives::redpallas::{SigType, Signature, SpendAuth}, value::NoteValue, Address, Note, }; +use crate::{ + block::MAX_BLOCK_BYTES, + serialization::{ + zcash_serialize_bytes, zcash_serialize_empty_list, ReadZcashExt, SerializationError, + TrustedPreallocate, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, + }, +}; + use super::common::ASSET_BASE_SIZE; /// Wrapper for `IssueBundle` used in the context of Transaction V6. This allows the implementation of @@ -39,6 +44,21 @@ impl From> for IssueData { } } +impl IssueData { + pub(crate) fn note_commitments(&self) -> impl Iterator + '_ { + self.0.actions().iter().flat_map(|action| { + action.notes().iter().map(|note| { + // FIXME: Make `ExtractedNoteCommitment::inner` public in `orchard` (this would + // eliminate the need for the workaround of converting `pallas::Base` from bytes + // here), or introduce a new public method in `orchard::issuance::IssueBundle` to + // retrieve note commitments directly from `orchard`. + pallas::Base::from_repr(ExtractedNoteCommitment::from(note.commitment()).to_bytes()) + .unwrap() + }) + }) + } +} + // Sizes of the serialized values for types in bytes (used for TrustedPreallocate impls) // FIXME: are those values correct (43, 32 etc.)? //const ISSUANCE_VALIDATING_KEY_SIZE: u64 = 32; diff --git a/zebra-chain/src/parallel/tree.rs b/zebra-chain/src/parallel/tree.rs index 4f35dd44617..4f18d2359b3 100644 --- a/zebra-chain/src/parallel/tree.rs +++ b/zebra-chain/src/parallel/tree.rs @@ -73,7 +73,7 @@ impl NoteCommitmentTrees { let sprout_note_commitments: Vec<_> = block.sprout_note_commitments().cloned().collect(); let sapling_note_commitments: Vec<_> = block.sapling_note_commitments().cloned().collect(); - let orchard_note_commitments: Vec<_> = block.orchard_note_commitments().cloned().collect(); + let orchard_note_commitments: Vec<_> = block.orchard_note_commitments().collect(); let mut sprout_result = None; let mut sapling_result = None; diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 09c15090814..ea160c59e88 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -1046,8 +1046,32 @@ impl Transaction { /// Access the note commitments in this transaction, if there are any, /// regardless of version. - pub fn orchard_note_commitments(&self) -> Box + '_> { - orchard_shielded_data_iter!(self, orchard::ShieldedData::note_commitments) + pub fn orchard_note_commitments(&self) -> Box + '_> { + match_orchard_shielded_data!( + self, + Box::new(std::iter::empty()), + { orchard_shielded_data }, + Box::new( + orchard_shielded_data + .iter() + .flat_map(orchard::ShieldedData::note_commitments) + .cloned() + ), + { orchard_shielded_data, orchard_zsa_issue_data }, + { + Box::new( + orchard_shielded_data + .iter() + .flat_map(orchard::ShieldedData::note_commitments) + .cloned() + .chain( + orchard_zsa_issue_data + .iter() + .flat_map(orchard_zsa::IssueData::note_commitments) + ) + ) + } + ) } /// Access the [`orchard::Flags`] in this transaction, if there is any, diff --git a/zebra-state/src/service/finalized_state/disk_format/upgrade/add_subtrees.rs b/zebra-state/src/service/finalized_state/disk_format/upgrade/add_subtrees.rs index d84392ebf84..636301d041f 100644 --- a/zebra-state/src/service/finalized_state/disk_format/upgrade/add_subtrees.rs +++ b/zebra-state/src/service/finalized_state/disk_format/upgrade/add_subtrees.rs @@ -800,7 +800,6 @@ fn calculate_orchard_subtree( let orchard_note_commitments = block .orchard_note_commitments() .take(prev_remaining_notes) - .cloned() .collect(); // This takes less than 1 second per tree, so we don't need to make it cancellable. From c9c79e63d541f2a7a175d4c9b0f3120f42ed6b76 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 4 Nov 2024 12:50:49 +0100 Subject: [PATCH 059/230] Revert "Introduce match_orchard_shielded_data macro in transaction.rs and refactor orchard_shielded_data_iter and orchard_shielded_data_field macros to use it" This reverts commit 2587b043ebb3eb3e203772aef4c1a94936bd0fc5. --- zebra-chain/src/transaction.rs | 117 ++++++++++++++++++--------------- 1 file changed, 63 insertions(+), 54 deletions(-) diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index ea160c59e88..1155c148516 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -53,67 +53,58 @@ use crate::{ value_balance::{ValueBalance, ValueBalanceError}, }; -/// Applies expression to different versions of `Transaction` to handle Orchard shielded data. -macro_rules! match_orchard_shielded_data { - // Separate field sets and expressions for V5 and V6 - ($self:expr, $pre_v5_expr:expr, { $( $v5_field:ident ),+ }, $v5_expr:expr, { $( $v6_field:ident ),+ }, $v6_expr:expr) => { +// FIXME: doc this +// Move down +macro_rules! orchard_shielded_data_iter { + ($self:expr, $mapper:expr) => { match $self { + // No Orchard shielded data Transaction::V1 { .. } | Transaction::V2 { .. } | Transaction::V3 { .. } - | Transaction::V4 { .. } => $pre_v5_expr, + | Transaction::V4 { .. } => Box::new(std::iter::empty()), - Transaction::V5 { $( $v5_field ),+, .. } => $v5_expr, + Transaction::V5 { + orchard_shielded_data, + .. + } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), #[cfg(feature = "tx-v6")] - Transaction::V6 { $( $v6_field ),+, .. } => $v6_expr, + Transaction::V6 { + orchard_shielded_data, + .. + } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), } }; - - // Single field set and expression used for both V5 and V6 - ($self:expr, $pre_v5_expr:expr, { $( $v5_v6_field:ident ),+ }, $v5_v6_expr:expr) => { - match_orchard_shielded_data!( - $self, - $pre_v5_expr, - { $( $v5_v6_field ),+ }, - $v5_v6_expr, - { $( $v5_v6_field ),+ }, - $v5_v6_expr - ) - }; } -/// Creates an iterator over Orchard shielded data. -/// -/// - `$self`: The `Transaction` instance. -/// - `$mapper`: Function to apply to each data item. -macro_rules! orchard_shielded_data_iter { - ($self:expr, $mapper:expr) => { - match_orchard_shielded_data!( - $self, - Box::new(std::iter::empty()), - { orchard_shielded_data }, - Box::new(orchard_shielded_data.into_iter().flat_map($mapper)) - ) - }; -} - -/// Retrieves a specific field from Orchard shielded data. -/// -/// - `$self`: The `Transaction` instance. -/// - `$field`: The field to access +// FIXME: doc this +// Move down macro_rules! orchard_shielded_data_field { ($self:expr, $field:ident) => { - match_orchard_shielded_data!( - $self, - None, - { orchard_shielded_data }, - orchard_shielded_data.as_ref().map(|d| d.$field) - ) + match $self { + // No Orchard shielded data + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => None, + + Transaction::V5 { + orchard_shielded_data, + .. + } => orchard_shielded_data.as_ref().map(|data| data.$field), + + #[cfg(feature = "tx-v6")] + Transaction::V6 { + orchard_shielded_data, + .. + } => orchard_shielded_data.as_ref().map(|data| data.$field), + } }; } -/// Generates match patterns for `Transaction::V5` and `Transaction::V6` +// FIXME: +// Define the macro for including the V6 pattern #[cfg(feature = "tx-v6")] macro_rules! tx_v5_and_v6 { { $($fields:tt)* } => { @@ -121,7 +112,6 @@ macro_rules! tx_v5_and_v6 { }; } -/// Generates a match pattern for `Transaction::V5` only #[cfg(not(feature = "tx-v6"))] macro_rules! tx_v5_and_v6 { { $($fields:tt)* } => { @@ -1475,14 +1465,33 @@ impl Transaction { /// See `orchard_value_balance` for details. #[cfg(any(test, feature = "proptest-impl"))] pub fn orchard_value_balance_mut(&mut self) -> Option<&mut Amount> { - match_orchard_shielded_data!( - self, - None, - { orchard_shielded_data }, - orchard_shielded_data - .as_mut() - .map(|shielded_data| &mut shielded_data.value_balance) - ) + match self { + Transaction::V5 { + orchard_shielded_data: Some(orchard_shielded_data), + .. + } => Some(&mut orchard_shielded_data.value_balance), + + #[cfg(feature = "tx-v6")] + Transaction::V6 { + orchard_shielded_data: Some(orchard_shielded_data), + .. + } => Some(&mut orchard_shielded_data.value_balance), + + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } + | Transaction::V5 { + orchard_shielded_data: None, + .. + } => None, + + #[cfg(feature = "tx-v6")] + Transaction::V6 { + orchard_shielded_data: None, + .. + } => None, + } } /// Returns the value balances for this transaction using the provided transparent outputs. From 9ad18a458241870ae53b8b4e8227bd8adca3a58b Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 4 Nov 2024 13:56:23 +0100 Subject: [PATCH 060/230] Modify Transaction::orchard_note_commitments method to not use match_orchard_shielded_data macro from the reverted commit --- zebra-chain/src/transaction.rs | 47 +++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 1155c148516..737253d6eab 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -1037,31 +1037,38 @@ impl Transaction { /// Access the note commitments in this transaction, if there are any, /// regardless of version. pub fn orchard_note_commitments(&self) -> Box + '_> { - match_orchard_shielded_data!( - self, - Box::new(std::iter::empty()), - { orchard_shielded_data }, - Box::new( + match self { + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => Box::new(std::iter::empty()), + + Transaction::V5 { + orchard_shielded_data, + .. + } => Box::new( + orchard_shielded_data + .iter() + .flat_map(orchard::ShieldedData::note_commitments) + .cloned(), + ), + #[cfg(feature = "tx-v6")] + Transaction::V6 { + orchard_shielded_data, + orchard_zsa_issue_data, + .. + } => Box::new( orchard_shielded_data .iter() .flat_map(orchard::ShieldedData::note_commitments) .cloned() + .chain( + orchard_zsa_issue_data + .iter() + .flat_map(orchard_zsa::IssueData::note_commitments), + ), ), - { orchard_shielded_data, orchard_zsa_issue_data }, - { - Box::new( - orchard_shielded_data - .iter() - .flat_map(orchard::ShieldedData::note_commitments) - .cloned() - .chain( - orchard_zsa_issue_data - .iter() - .flat_map(orchard_zsa::IssueData::note_commitments) - ) - ) - } - ) + } } /// Access the [`orchard::Flags`] in this transaction, if there is any, From 3cce4894d078252d1ec7d1a600d3e1297bc5b1a8 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 11 Nov 2024 21:23:31 +0100 Subject: [PATCH 061/230] Refactor orchard_zsa modules to use IssueBundle serialization functions from librustzcash/zcash_primitives instead of reimplementing them --- zebra-chain/src/orchard_zsa.rs | 2 - zebra-chain/src/orchard_zsa/burn.rs | 20 ++- zebra-chain/src/orchard_zsa/common.rs | 23 --- zebra-chain/src/orchard_zsa/issuance.rs | 208 ++---------------------- 4 files changed, 28 insertions(+), 225 deletions(-) delete mode 100644 zebra-chain/src/orchard_zsa/common.rs diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index be3e29ec0e4..1fc878dbc34 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -4,8 +4,6 @@ #[cfg(any(test, feature = "proptest-impl"))] pub(crate) mod arbitrary; -mod common; - mod burn; mod issuance; diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index 812728b9380..0e0c007709b 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -5,12 +5,28 @@ use std::io; use crate::{ amount::Amount, block::MAX_BLOCK_BYTES, - serialization::{SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashSerialize}, + serialization::{ + ReadZcashExt, SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashSerialize, + }, }; use orchard::{note::AssetBase, value::NoteValue}; -use super::common::ASSET_BASE_SIZE; +// The size of the serialized AssetBase in bytes (used for TrustedPreallocate impls) +pub(super) const ASSET_BASE_SIZE: u64 = 32; + +impl ZcashSerialize for AssetBase { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + writer.write_all(&self.to_bytes()) + } +} + +impl ZcashDeserialize for AssetBase { + fn zcash_deserialize(mut reader: R) -> Result { + Option::from(AssetBase::from_bytes(&reader.read_32_bytes()?)) + .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa AssetBase!")) + } +} // Sizes of the serialized values for types in bytes (used for TrustedPreallocate impls) const AMOUNT_SIZE: u64 = 8; diff --git a/zebra-chain/src/orchard_zsa/common.rs b/zebra-chain/src/orchard_zsa/common.rs deleted file mode 100644 index deb3969ced7..00000000000 --- a/zebra-chain/src/orchard_zsa/common.rs +++ /dev/null @@ -1,23 +0,0 @@ -//! Serialization implementation for selected types from the 'orchard_zsa' crate used in this module. - -use std::io; - -use crate::serialization::{ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize}; - -use orchard::note::AssetBase; - -// The size of the serialized AssetBase in bytes (used for TrustedPreallocate impls) -pub(super) const ASSET_BASE_SIZE: u64 = 32; - -impl ZcashSerialize for AssetBase { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - writer.write_all(&self.to_bytes()) - } -} - -impl ZcashDeserialize for AssetBase { - fn zcash_deserialize(mut reader: R) -> Result { - Option::from(AssetBase::from_bytes(&reader.read_32_bytes()?)) - .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa AssetBase!")) - } -} diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index 9f7b4e9faaf..d45f10253cd 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -2,36 +2,25 @@ use std::{fmt::Debug, io}; -use nonempty::NonEmpty; - -// FIXME: needed for "as_bool" only - consider to implement as_bool locally -use bitvec::macros::internal::funty::Fundamental; - -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; - use halo2::pasta::pallas; // For pallas::Base::from_repr only use group::ff::PrimeField; +use zcash_primitives::transaction::components::issuance::{read_v6_bundle, write_v6_bundle}; + use orchard::{ issuance::{IssueAction, IssueBundle, Signed}, - keys::IssuanceValidatingKey, - note::{ExtractedNoteCommitment, RandomSeed, Rho}, - primitives::redpallas::{SigType, Signature, SpendAuth}, - value::NoteValue, - Address, Note, + note::ExtractedNoteCommitment, + Note, }; use crate::{ block::MAX_BLOCK_BYTES, - serialization::{ - zcash_serialize_bytes, zcash_serialize_empty_list, ReadZcashExt, SerializationError, - TrustedPreallocate, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, - }, + serialization::{SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashSerialize}, }; -use super::common::ASSET_BASE_SIZE; +use super::burn::ASSET_BASE_SIZE; /// Wrapper for `IssueBundle` used in the context of Transaction V6. This allows the implementation of /// a Serde serializer for unit tests within this crate. @@ -70,126 +59,6 @@ const RANDOM_SEED_SIZE: u64 = 32; const NOTE_SIZE: u64 = ADDRESS_SIZE + NOTE_VALUE_SIZE + ASSET_BASE_SIZE + NULLIFIER_SIZE + RANDOM_SEED_SIZE; -// FIXME: duplicates ZcashSerialize for reddsa::Signature in transaction/serialize.rs -// (as Signature from oechard_zsa is formally a different type) -impl ZcashSerialize for Signature { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - writer.write_all(&<[u8; 64]>::from(self))?; - Ok(()) - } -} - -// FIXME: duplicates ZcashDeserialize for reddsa::Signature in transaction/serialize.rs -// (as Signature from oechard_zsa is formally a different type) -impl ZcashDeserialize for Signature { - fn zcash_deserialize(mut reader: R) -> Result { - Ok(reader.read_64_bytes()?.into()) - } -} - -impl ZcashDeserialize for Signed { - fn zcash_deserialize(mut reader: R) -> Result { - let signature = Signature::::zcash_deserialize(&mut reader)?; - Ok(Signed::from_data((&signature).into())) - } -} - -impl ZcashSerialize for IssuanceValidatingKey { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - writer.write_all(&self.to_bytes()) - } -} - -impl ZcashDeserialize for IssuanceValidatingKey { - fn zcash_deserialize(mut reader: R) -> Result { - IssuanceValidatingKey::from_bytes(&reader.read_32_bytes()?) - .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa IssuanceValidatingKey!")) - } -} - -impl ZcashSerialize for Address { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - writer.write_all(&self.to_raw_address_bytes()) - } -} - -impl ZcashDeserialize for Address { - fn zcash_deserialize(mut reader: R) -> Result { - let mut bytes = [0u8; ADDRESS_SIZE as usize]; - reader.read_exact(&mut bytes)?; - Option::from(Address::from_raw_address_bytes(&bytes)) - .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa Address!")) - } -} - -impl ZcashSerialize for Rho { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - writer.write_all(&self.to_bytes()) - } -} - -impl ZcashDeserialize for Rho { - fn zcash_deserialize(mut reader: R) -> Result { - Option::from(Rho::from_bytes(&reader.read_32_bytes()?)) - .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa Rho!")) - } -} - -impl ZcashSerialize for RandomSeed { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - writer.write_all(self.as_bytes()) - } -} - -// RandomSeed::zcash_deserialize can't be implemented and used as it requires Nullifier parameter. -// That's why we need to have this function. -fn zcash_deserialize_random_seed( - mut reader: R, - rho: &Rho, -) -> Result { - Option::from(RandomSeed::from_bytes(reader.read_32_bytes()?, rho)) - .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa RandomSeed!")) -} - -impl ZcashSerialize for NoteValue { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - // FIXME: use Amount serializer/deserializer? - writer.write_u64::(self.inner())?; - Ok(()) - } -} - -impl ZcashDeserialize for NoteValue { - fn zcash_deserialize(mut reader: R) -> Result { - Ok(NoteValue::from_raw(reader.read_u64::()?)) - } -} - -impl ZcashSerialize for Note { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - self.recipient().zcash_serialize(&mut writer)?; - self.value().zcash_serialize(&mut writer)?; - self.asset().zcash_serialize(&mut writer)?; - self.rho().zcash_serialize(&mut writer)?; - self.rseed().zcash_serialize(&mut writer)?; - - Ok(()) - } -} - -impl ZcashDeserialize for Note { - fn zcash_deserialize(mut reader: R) -> Result { - let recipient = (&mut reader).zcash_deserialize_into()?; - let value = (&mut reader).zcash_deserialize_into()?; - let asset = (&mut reader).zcash_deserialize_into()?; - let rho = (&mut reader).zcash_deserialize_into()?; - let rseed = zcash_deserialize_random_seed(&mut reader, &rho)?; - - Option::from(Note::from_parts(recipient, value, asset, rho, rseed)) - .ok_or_else(|| SerializationError::Parse("Invalid orchard_zsa Note components!")) - } -} - impl TrustedPreallocate for Note { fn max_allocation() -> u64 { // FIXME: is this a correct calculation way? @@ -199,24 +68,6 @@ impl TrustedPreallocate for Note { } } -impl ZcashSerialize for IssueAction { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - writer.write_u8(self.is_finalized().as_u8())?; - self.notes().to_vec().zcash_serialize(&mut writer)?; - zcash_serialize_bytes(&self.asset_desc().to_vec(), &mut writer)?; - Ok(()) - } -} - -impl ZcashDeserialize for IssueAction { - fn zcash_deserialize(mut reader: R) -> Result { - let finalize = reader.read_u8()?.as_bool(); - let notes = (&mut reader).zcash_deserialize_into()?; - let asset_descr = (&mut reader).zcash_deserialize_into()?; - Ok(IssueAction::from_parts(asset_descr, notes, finalize)) - } -} - impl TrustedPreallocate for IssueAction { fn max_allocation() -> u64 { // FIXME: impl correct calculation @@ -224,56 +75,17 @@ impl TrustedPreallocate for IssueAction { } } -impl ZcashSerialize for IssueBundle { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - // FIXME: try to avoid transforming to Vec (consider implementation of ZcashSerialize for IntoIter generic, - // or use AtLeastOne). - // This is how does it work in librustzcash: - // Vector::write_nonempty(&mut writer, bundle.actions(), |w, action| write_action(action, w))?; - let actions: Vec<_> = self.actions().clone().into(); - - actions.zcash_serialize(&mut writer)?; - self.ik().zcash_serialize(&mut writer)?; - writer.write_all(&<[u8; 64]>::from(self.authorization().signature()))?; - Ok(()) - } -} - impl ZcashSerialize for Option { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - match self { - None => { - // Denoted as `&Option` in the spec (ZIP 230). - zcash_serialize_empty_list(writer)?; - } - Some(issue_data) => { - issue_data.0.zcash_serialize(&mut writer)?; - } - } - Ok(()) + fn zcash_serialize(&self, writer: W) -> Result<(), io::Error> { + write_v6_bundle(self.as_ref().map(|issue_data| &issue_data.0), writer) } } // FIXME: We can't split IssueData out of Option deserialization, // because the counts are read along with the arrays. impl ZcashDeserialize for Option { - fn zcash_deserialize(mut reader: R) -> Result { - let actions: Vec<_> = (&mut reader).zcash_deserialize_into()?; - - if actions.is_empty() { - Ok(None) - } else { - let ik = (&mut reader).zcash_deserialize_into()?; - let authorization = (&mut reader).zcash_deserialize_into()?; - - Ok(Some(IssueData(IssueBundle::from_parts( - ik, - NonEmpty::from_vec(actions).ok_or_else(|| { - SerializationError::Parse("Invalid orchard_zsa IssueData - no actions!") - })?, - authorization, - )))) - } + fn zcash_deserialize(reader: R) -> Result { + Ok(read_v6_bundle(reader)?.map(IssueData)) } } From ce6c5c36ff6d799a449d8f4ac27e4482a8182ee7 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 11 Nov 2024 21:27:27 +0100 Subject: [PATCH 062/230] Fix the orchard::ShieldedData serialization/deserialization functions to use the correct order of the asset burn field in V6 transaction as it's defined in ZIP 230 --- zebra-chain/src/transaction/serialize.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index 42743881bd5..b3ed12ebd7d 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -376,13 +376,13 @@ impl ZcashSerialize for orchard::ShieldedData { // Denoted as `vSpendAuthSigsOrchard` in the spec. zcash_serialize_external_count(&sigs, &mut writer)?; - // Denoted as `bindingSigOrchard` in the spec. - self.binding_sig.zcash_serialize(&mut writer)?; - #[cfg(feature = "tx-v6")] // Denoted as `vAssetBurn` in the spec (ZIP 230). self.burn.zcash_serialize(&mut writer)?; + // Denoted as `bindingSigOrchard` in the spec. + self.binding_sig.zcash_serialize(&mut writer)?; + Ok(()) } } @@ -434,6 +434,10 @@ impl ZcashDeserialize for Option> let sigs: Vec> = zcash_deserialize_external_count(actions.len(), &mut reader)?; + // TODO: FIXME: add a proper comment + #[cfg(feature = "tx-v6")] + let burn = (&mut reader).zcash_deserialize_into()?; + // Denoted as `bindingSigOrchard` in the spec. let binding_sig: Signature = (&mut reader).zcash_deserialize_into()?; @@ -448,10 +452,6 @@ impl ZcashDeserialize for Option> let actions: AtLeastOne> = authorized_actions.try_into()?; - // TODO: FIXME: add a proper comment - #[cfg(feature = "tx-v6")] - let burn = (&mut reader).zcash_deserialize_into()?; - Ok(Some(orchard::ShieldedData:: { flags, value_balance, From 22349e59c4905fb14d4974f8b4d57396b4925f34 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 11 Nov 2024 21:28:36 +0100 Subject: [PATCH 063/230] Add ENABLE_ZSA flag to Flags for the orchard ShieldedData --- zebra-chain/src/orchard/shielded_data.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index baf98da8c42..844c1ff3994 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -313,6 +313,9 @@ bitflags! { const ENABLE_SPENDS = 0b00000001; /// Enable creating new non-zero valued Orchard notes. const ENABLE_OUTPUTS = 0b00000010; + /// Enable ZSA transaction (otherwise all notes within actions must use native asset). + // FIXME: Should we use this flag explicitly anywhere in Zebra? + const ENABLE_ZSA = 0b00000100; } } From 46f81bcf4713902a38b5e497bf88fc7637a6ece3 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 11 Nov 2024 21:30:12 +0100 Subject: [PATCH 064/230] Fix TX_V6_VERSION_GROUP_ID constant value to adjust it with the value used in librustzcash --- zebra-chain/src/parameters/transaction.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/parameters/transaction.rs b/zebra-chain/src/parameters/transaction.rs index d7391bdf184..bfb3c8ca7c7 100644 --- a/zebra-chain/src/parameters/transaction.rs +++ b/zebra-chain/src/parameters/transaction.rs @@ -18,4 +18,4 @@ pub const TX_V5_VERSION_GROUP_ID: u32 = 0x26A7_270A; /// group ID. // FIXME: use a proper value! #[cfg(feature = "tx-v6")] -pub const TX_V6_VERSION_GROUP_ID: u32 = 0x26A7_270B; +pub const TX_V6_VERSION_GROUP_ID: u32 = 0x124A_69F8; From 408c15531ee57192e64aed79039b212bda8a419a Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 11 Nov 2024 21:32:03 +0100 Subject: [PATCH 065/230] Add a value for Nu7 to CONSENSUS_BRANCH_IDS (a placeholder values for now - the same as used in librustzcash to make it possible to run tests) --- zebra-chain/src/parameters/network_upgrade.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index aad1d19e2a5..1eade62208c 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -227,7 +227,7 @@ pub(crate) const CONSENSUS_BRANCH_IDS: &[(NetworkUpgrade, ConsensusBranchId)] = (Nu5, ConsensusBranchId(0xc2d6d0b4)), (Nu6, ConsensusBranchId(0xc8e71055)), // FIXME: use a proper value below - (Nu7, ConsensusBranchId(0xc8e71056)), + (Nu7, ConsensusBranchId(0x77777777)), ]; /// The target block spacing before Blossom. From c6a3dd48d21cfb9cb7c8a681308ccb60e0d1f11e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 11 Nov 2024 21:34:43 +0100 Subject: [PATCH 066/230] Add a test vector with an issuance block to orchard_zsa module, also add issuance_block test function there (now it simply deserialized issuance block from the test vector to check if deserialization functions work properly) --- zebra-chain/src/orchard_zsa.rs | 3 + zebra-chain/src/orchard_zsa/tests.rs | 2 + zebra-chain/src/orchard_zsa/tests/issuance.rs | 9 + zebra-chain/src/orchard_zsa/tests/vectors.rs | 3 + .../src/orchard_zsa/tests/vectors/blocks.rs | 703 ++++++++++++++++++ 5 files changed, 720 insertions(+) create mode 100644 zebra-chain/src/orchard_zsa/tests.rs create mode 100644 zebra-chain/src/orchard_zsa/tests/issuance.rs create mode 100644 zebra-chain/src/orchard_zsa/tests/vectors.rs create mode 100644 zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index 1fc878dbc34..91445ebf949 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -4,6 +4,9 @@ #[cfg(any(test, feature = "proptest-impl"))] pub(crate) mod arbitrary; +#[cfg(test)] +mod tests; + mod burn; mod issuance; diff --git a/zebra-chain/src/orchard_zsa/tests.rs b/zebra-chain/src/orchard_zsa/tests.rs new file mode 100644 index 00000000000..a9301a7461e --- /dev/null +++ b/zebra-chain/src/orchard_zsa/tests.rs @@ -0,0 +1,2 @@ +mod issuance; +mod vectors; diff --git a/zebra-chain/src/orchard_zsa/tests/issuance.rs b/zebra-chain/src/orchard_zsa/tests/issuance.rs new file mode 100644 index 00000000000..902af757adf --- /dev/null +++ b/zebra-chain/src/orchard_zsa/tests/issuance.rs @@ -0,0 +1,9 @@ +use crate::{block::Block, serialization::ZcashDeserialize}; + +use super::vectors::BLOCKS; + +#[test] +fn issuance_block() { + let issuance_block = + Block::zcash_deserialize(BLOCKS[0].as_ref()).expect("issuance block should deserialize"); +} diff --git a/zebra-chain/src/orchard_zsa/tests/vectors.rs b/zebra-chain/src/orchard_zsa/tests/vectors.rs new file mode 100644 index 00000000000..d5664e50b19 --- /dev/null +++ b/zebra-chain/src/orchard_zsa/tests/vectors.rs @@ -0,0 +1,3 @@ +mod blocks; + +pub(crate) use blocks::BLOCKS; diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs new file mode 100644 index 00000000000..222f1e3c201 --- /dev/null +++ b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs @@ -0,0 +1,703 @@ +pub(crate) const BLOCKS: [&[u8]; 1] = [&[ + 0x04, 0x00, 0x00, 0x00, 0x27, 0xe3, 0x01, 0x34, 0xd6, 0x20, 0xe9, 0xfe, 0x61, 0xf7, 0x19, 0x93, + 0xb2, 0xc2, 0x72, 0x75, 0x6a, 0xce, 0xec, 0xdc, 0xbf, 0xd3, 0xe5, 0x43, 0xf7, 0x30, 0xbc, 0x65, + 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, 0x76, 0xf9, 0x0e, + 0xd8, 0x11, 0x9f, 0x02, 0x77, 0x8a, 0xa0, 0x8d, 0x1a, 0x56, 0x79, 0x47, 0x66, 0x88, 0xbf, 0x6e, + 0x8e, 0x5a, 0x4f, 0x57, 0x00, 0x23, 0xde, 0x3e, 0xf1, 0x3a, 0x05, 0xe5, 0x9d, 0x2e, 0x94, 0x76, + 0x6a, 0x3c, 0x7a, 0x94, 0x88, 0x5d, 0x72, 0x57, 0x04, 0x56, 0x3c, 0x74, 0xd1, 0x7a, 0xbd, 0xf7, + 0x53, 0x53, 0xdb, 0x1a, 0xf2, 0xfa, 0x49, 0x4d, 0x3f, 0xa6, 0x0c, 0x20, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, 0xff, 0xff, 0xff, 0x02, 0x51, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, + 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, + 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, + 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x64, 0x40, 0xa8, 0x86, 0x5d, 0x61, 0x39, 0xb3, 0x39, 0x62, 0x94, 0xee, 0x42, + 0xc5, 0xa6, 0x0b, 0x63, 0x57, 0xca, 0x65, 0x8b, 0xa6, 0x76, 0xf2, 0xd6, 0xda, 0x8e, 0x00, 0xcf, + 0x60, 0xe8, 0x33, 0xa4, 0x55, 0xec, 0x7c, 0x99, 0x0f, 0xda, 0xd2, 0x46, 0xc0, 0x5b, 0x4a, 0x8f, + 0xe5, 0x2c, 0x6a, 0xb7, 0x00, 0xca, 0x49, 0xb4, 0xda, 0x80, 0xd3, 0x3d, 0x4d, 0x83, 0x7a, 0xd1, + 0x3a, 0x21, 0x3f, 0xfe, 0x71, 0xf5, 0x04, 0xd3, 0xaf, 0xeb, 0x10, 0x9d, 0xc2, 0x0d, 0xbd, 0x3a, + 0x9b, 0x2d, 0xf7, 0x7c, 0xd3, 0x2c, 0x7e, 0x7b, 0xeb, 0xb7, 0xaf, 0x60, 0xe4, 0xd3, 0x41, 0x96, + 0xe7, 0x2c, 0x0a, 0xf8, 0x99, 0x89, 0xbd, 0x70, 0x79, 0x54, 0x3b, 0xc7, 0x66, 0x29, 0x91, 0x31, + 0x97, 0xa6, 0x53, 0xfe, 0x24, 0x70, 0xf9, 0xf2, 0x41, 0x81, 0xac, 0x79, 0x60, 0x43, 0x79, 0xed, + 0x42, 0xba, 0x25, 0xdd, 0xf0, 0x05, 0xe8, 0xff, 0x14, 0x9e, 0xe8, 0x34, 0x91, 0x5d, 0xc6, 0x9d, + 0x6a, 0x2f, 0xc5, 0x70, 0x55, 0x65, 0x01, 0xf3, 0x74, 0x6f, 0xe7, 0x37, 0x4a, 0x8f, 0x5d, 0x4d, + 0xb6, 0x4e, 0x3b, 0xab, 0xc5, 0xc9, 0xa2, 0x86, 0x28, 0x0e, 0xa6, 0x2d, 0xc0, 0xc4, 0x12, 0x74, + 0xe9, 0x39, 0x34, 0xa6, 0xd8, 0xbc, 0x24, 0xdf, 0x5a, 0x2b, 0x2d, 0xd3, 0xae, 0x62, 0x2f, 0x37, + 0x38, 0xcb, 0x41, 0x26, 0xa5, 0xae, 0xed, 0x94, 0x84, 0x51, 0xc2, 0xe7, 0xff, 0xbe, 0x27, 0x7b, + 0x37, 0x94, 0xc0, 0xb5, 0x17, 0x08, 0x0a, 0x00, 0xd4, 0x69, 0x74, 0x8f, 0x4e, 0x2c, 0xeb, 0x06, + 0x2f, 0x1d, 0x61, 0xdc, 0x70, 0xab, 0x97, 0xc9, 0xbd, 0x02, 0x68, 0xf0, 0xe1, 0x5e, 0xcb, 0x76, + 0x25, 0x2c, 0x2c, 0xd2, 0xf1, 0x8a, 0x03, 0xb3, 0x2f, 0x0b, 0x40, 0xa2, 0x56, 0xc4, 0x3a, 0xd0, + 0xf7, 0xc4, 0xef, 0x98, 0x52, 0x87, 0x54, 0x5b, 0x8e, 0xf8, 0xb3, 0x6e, 0x3d, 0x9e, 0xd6, 0x05, + 0xb9, 0x49, 0x54, 0x1b, 0xe0, 0xbc, 0xe7, 0x52, 0x71, 0x6c, 0x70, 0xdb, 0x0c, 0xf2, 0x06, 0x9e, + 0x80, 0x90, 0xde, 0x83, 0x0e, 0x8c, 0xee, 0xa3, 0x36, 0x99, 0xf0, 0xa8, 0x29, 0x58, 0x9e, 0xa8, + 0x4c, 0x90, 0x0d, 0x66, 0x06, 0xf9, 0x95, 0x21, 0x65, 0xa4, 0x90, 0x58, 0x9f, 0x61, 0x66, 0x25, + 0x8b, 0x7b, 0x13, 0xa1, 0x6b, 0x9c, 0xf4, 0x80, 0xfb, 0x34, 0xd1, 0x0f, 0x52, 0x2d, 0xbd, 0x2a, + 0xcd, 0x16, 0x7b, 0x7d, 0xd0, 0x6c, 0x4d, 0x2d, 0xbb, 0x51, 0x90, 0x7d, 0x4d, 0x38, 0xbe, 0x06, + 0x95, 0x18, 0xd4, 0x31, 0x6d, 0xa4, 0x67, 0xca, 0xe5, 0x35, 0x51, 0xaa, 0xb4, 0x33, 0x46, 0x67, + 0xc0, 0xa5, 0xb7, 0x07, 0x63, 0x64, 0xe8, 0x42, 0x8e, 0x81, 0xf4, 0xc4, 0xcb, 0xde, 0x44, 0xe8, + 0xf1, 0x80, 0xca, 0x7a, 0x70, 0x33, 0x64, 0xaa, 0x4d, 0x50, 0xaf, 0xf3, 0x24, 0x27, 0xc4, 0x23, + 0xfb, 0xf8, 0x47, 0x61, 0x83, 0x5c, 0x31, 0xeb, 0x69, 0x73, 0x64, 0x4c, 0xe3, 0x8e, 0x24, 0x40, + 0xd9, 0xe0, 0x46, 0x17, 0xbc, 0x0b, 0xa0, 0xcd, 0x8d, 0x14, 0x96, 0x57, 0x21, 0x71, 0x97, 0x9c, + 0xa7, 0x5b, 0x28, 0xb7, 0x5b, 0x71, 0xd2, 0x7b, 0x77, 0x83, 0x09, 0x3a, 0xc4, 0x9c, 0x37, 0x38, + 0xfb, 0xdf, 0xe1, 0xf9, 0xc7, 0x29, 0xe0, 0x50, 0xbb, 0xfd, 0x7b, 0xa1, 0x53, 0xe5, 0x3b, 0x85, + 0x61, 0x21, 0x66, 0xf0, 0xa2, 0xb7, 0x65, 0x77, 0xd4, 0x5f, 0x0f, 0xf8, 0x5f, 0x4c, 0x6a, 0x90, + 0x03, 0xc1, 0x2f, 0x8c, 0x95, 0xa4, 0x36, 0x88, 0x51, 0x43, 0xd9, 0xa8, 0x78, 0x7f, 0x36, 0xb2, + 0x27, 0x2f, 0x2c, 0xd0, 0x21, 0xdc, 0x6a, 0x3f, 0x34, 0xdf, 0xac, 0x94, 0xf2, 0x8f, 0x13, 0x2e, + 0x3d, 0x2a, 0x4a, 0xf0, 0xdc, 0xa4, 0x1c, 0xc8, 0x59, 0x7e, 0xa0, 0x88, 0x7c, 0x02, 0x06, 0xf1, + 0xbe, 0x5a, 0xae, 0xc4, 0xf7, 0x72, 0x46, 0x97, 0xd9, 0x4b, 0x47, 0x9f, 0x9b, 0x93, 0x93, 0x71, + 0x8d, 0x80, 0xf7, 0xaf, 0xc7, 0xf9, 0xc9, 0x84, 0xd5, 0x9e, 0x87, 0x0f, 0x64, 0x33, 0x1f, 0xd6, + 0xf5, 0x90, 0x2d, 0x3a, 0xc3, 0x59, 0xf5, 0x25, 0xe6, 0xa5, 0xda, 0xf4, 0x21, 0x24, 0x9d, 0xdb, + 0x69, 0x86, 0x93, 0xec, 0x7d, 0x9b, 0xfd, 0x71, 0x19, 0xab, 0x05, 0xb6, 0xfd, 0x5c, 0x6b, 0x17, + 0x7e, 0xe5, 0xc4, 0x10, 0x38, 0xd7, 0x9b, 0x84, 0x94, 0x0d, 0xf1, 0xf5, 0xe6, 0x79, 0x84, 0x3c, + 0x04, 0x84, 0x2c, 0x6a, 0x62, 0xcf, 0xd6, 0x2f, 0xd0, 0x1b, 0xcc, 0xc2, 0xc8, 0x2a, 0x67, 0x34, + 0x52, 0xae, 0x88, 0x48, 0x47, 0x5f, 0x61, 0x4d, 0xba, 0x6c, 0x53, 0xf1, 0x8b, 0x12, 0x54, 0xcc, + 0xf0, 0x77, 0x89, 0x72, 0x98, 0x97, 0xed, 0x2e, 0xfa, 0xef, 0x0b, 0x54, 0x69, 0x02, 0x69, 0x15, + 0xa6, 0x5f, 0x11, 0xed, 0x04, 0x58, 0x02, 0x46, 0xc4, 0xdc, 0x9c, 0xb6, 0xe1, 0xc8, 0xd8, 0xdc, + 0xa3, 0x99, 0xea, 0x17, 0x96, 0x74, 0x7b, 0x5f, 0xeb, 0x00, 0x02, 0x91, 0x04, 0x9e, 0xf4, 0xff, + 0x6d, 0x0b, 0x29, 0x82, 0x37, 0x1a, 0x4c, 0xa0, 0x71, 0x71, 0x20, 0xaf, 0xe4, 0x3b, 0x6e, 0x26, + 0xb1, 0x89, 0x56, 0xb3, 0xb6, 0x44, 0x2d, 0x2b, 0xb4, 0x6f, 0x22, 0xe4, 0x5d, 0xd8, 0x7d, 0x25, + 0x60, 0xe7, 0xf4, 0xab, 0x87, 0x0b, 0x97, 0x0a, 0xd4, 0x82, 0x48, 0x93, 0x0f, 0x1d, 0xcc, 0xc7, + 0x69, 0xee, 0xc7, 0xcf, 0x5d, 0x9b, 0xbe, 0x9f, 0x23, 0x4b, 0x06, 0x49, 0x88, 0xf5, 0xbd, 0xb5, + 0xc3, 0xed, 0x46, 0x2a, 0x17, 0xc8, 0x5c, 0x4e, 0xa4, 0x56, 0xf3, 0x62, 0x28, 0xe7, 0xd1, 0x66, + 0x15, 0x1c, 0xeb, 0x62, 0xc1, 0x64, 0xee, 0xb6, 0x98, 0x7a, 0x9e, 0x40, 0xaa, 0xa2, 0x7d, 0xca, + 0xb6, 0xf3, 0x82, 0x6d, 0x65, 0xfb, 0x82, 0x57, 0xd2, 0x64, 0xc8, 0xb8, 0x15, 0x1b, 0x68, 0x94, + 0x90, 0x7a, 0xd5, 0xd7, 0xe6, 0x42, 0x99, 0x6f, 0x46, 0xc8, 0x3d, 0x9e, 0x5d, 0x85, 0x00, 0x7b, + 0xed, 0x53, 0xde, 0x27, 0xa4, 0x66, 0x3f, 0xa3, 0xc2, 0xf8, 0x89, 0x69, 0x8a, 0xac, 0xcc, 0x15, + 0x5e, 0xdd, 0x63, 0xda, 0xe3, 0x5a, 0x1f, 0xe9, 0x81, 0x60, 0x20, 0x60, 0xc1, 0xf9, 0xbb, 0x71, + 0x87, 0x77, 0x79, 0xe0, 0x90, 0x3d, 0xef, 0x49, 0xa9, 0xf7, 0x66, 0x70, 0x6f, 0x80, 0x88, 0xbe, + 0x89, 0x73, 0x99, 0x3e, 0xb1, 0xf9, 0xd6, 0xe7, 0xb1, 0x9f, 0x3e, 0xfe, 0x39, 0xed, 0x36, 0x18, + 0xee, 0xc3, 0x41, 0xbb, 0x69, 0x9a, 0x8b, 0xb1, 0x13, 0x2d, 0xd5, 0xab, 0xb7, 0xb6, 0x3b, 0xed, + 0xdf, 0x5b, 0x08, 0xde, 0x7d, 0xe5, 0x5d, 0xfa, 0x32, 0x91, 0x78, 0x03, 0x87, 0x77, 0x85, 0xc2, + 0x92, 0x66, 0x51, 0x83, 0xdb, 0xa8, 0x3f, 0xce, 0x17, 0xaa, 0xf5, 0xbb, 0x1e, 0x5c, 0x5f, 0x2e, + 0xb6, 0x6c, 0x6d, 0x1a, 0x98, 0x84, 0xe4, 0x69, 0x44, 0x9a, 0xf5, 0x6e, 0xd8, 0xd4, 0xc9, 0xd3, + 0x42, 0x18, 0xca, 0x80, 0x1c, 0x71, 0x8c, 0x62, 0x79, 0x59, 0xd9, 0x3b, 0xf3, 0xba, 0x90, 0x6b, + 0x36, 0x2a, 0x7c, 0xf8, 0xd3, 0xf4, 0xaa, 0xd9, 0x17, 0x59, 0xb1, 0xe6, 0x5a, 0x50, 0xcb, 0x0b, + 0x6b, 0x19, 0x0c, 0xe0, 0x5e, 0x67, 0x09, 0x42, 0x53, 0x71, 0x8b, 0xc2, 0x4e, 0x46, 0xc3, 0xff, + 0xf1, 0x45, 0x2b, 0x81, 0x52, 0x3b, 0xb4, 0x59, 0x20, 0xdc, 0x24, 0xea, 0xa5, 0xe7, 0xfc, 0x19, + 0xc2, 0xeb, 0x8c, 0x91, 0x99, 0x0a, 0x87, 0x43, 0xa7, 0x4c, 0x3e, 0x5a, 0xd7, 0x71, 0x5e, 0x3f, + 0x7c, 0xd0, 0x2f, 0x1a, 0xc0, 0xac, 0x73, 0xcf, 0xfc, 0x0a, 0x85, 0xe8, 0xd6, 0xb1, 0xa2, 0xe0, + 0x2e, 0x7a, 0xa8, 0x68, 0x68, 0x0a, 0x7d, 0x73, 0xd0, 0xc7, 0x6a, 0x3e, 0x7b, 0x6b, 0x6a, 0x28, + 0x59, 0x7a, 0x29, 0x85, 0x84, 0x04, 0xbb, 0x7c, 0x5b, 0x8f, 0x68, 0x6f, 0xb7, 0x3e, 0xbf, 0xca, + 0x97, 0x62, 0x7a, 0x73, 0xf3, 0xe3, 0x23, 0x39, 0xa6, 0xb1, 0x71, 0xd0, 0x4e, 0xb5, 0x7a, 0x29, + 0x51, 0xc9, 0x40, 0x45, 0x2f, 0x25, 0x58, 0x0c, 0x71, 0x61, 0x9c, 0x73, 0x99, 0xc8, 0xab, 0xee, + 0x67, 0x0d, 0x97, 0xd3, 0xdc, 0xa0, 0x90, 0x3b, 0xc2, 0x91, 0x07, 0x1f, 0xf0, 0xe9, 0x97, 0xa9, + 0xb5, 0x46, 0xdc, 0x63, 0xfc, 0xa3, 0x24, 0x1f, 0xeb, 0xa8, 0x85, 0x66, 0x9a, 0xaf, 0x0f, 0x37, + 0xe0, 0x8e, 0x01, 0x32, 0x35, 0xdb, 0xbe, 0xa3, 0xbe, 0xf6, 0x2f, 0x1a, 0xd8, 0x1e, 0xc6, 0x40, + 0xb9, 0x69, 0xea, 0x02, 0x95, 0x14, 0x9b, 0xe9, 0x7d, 0x0c, 0xb7, 0x55, 0xf8, 0x87, 0xd9, 0x76, + 0x3e, 0x15, 0xae, 0x83, 0xba, 0xe7, 0x60, 0xc4, 0x0d, 0x32, 0x8a, 0x46, 0x9a, 0x56, 0xdc, 0xc1, + 0x62, 0x9e, 0x76, 0xf6, 0x34, 0xfb, 0xb9, 0xca, 0x32, 0xaa, 0xdd, 0x2b, 0x4e, 0xd2, 0xbc, 0x1a, + 0xe4, 0x5d, 0x8c, 0x79, 0xb1, 0x84, 0xd3, 0xfc, 0xd5, 0x40, 0xa9, 0x00, 0x97, 0x18, 0x39, 0xf7, + 0x78, 0xa7, 0xfd, 0x60, 0xb4, 0xfa, 0x3f, 0x8b, 0x74, 0x23, 0xb6, 0x90, 0x07, 0x32, 0xea, 0xde, + 0x4d, 0xe9, 0xbf, 0xe3, 0x78, 0x0a, 0xe0, 0x86, 0x21, 0x02, 0x2d, 0x45, 0xe0, 0x74, 0x20, 0xb7, + 0x63, 0x17, 0x2f, 0x09, 0xd3, 0xbe, 0x24, 0x6e, 0xef, 0x62, 0x06, 0x35, 0x1d, 0x0d, 0xe0, 0xb8, + 0xc4, 0xff, 0xc5, 0x3e, 0x4a, 0xf3, 0x04, 0x2b, 0x4f, 0xea, 0xf6, 0xfd, 0x8d, 0x28, 0x5e, 0xdc, + 0xe8, 0x1d, 0x39, 0x20, 0x43, 0x89, 0x5c, 0x37, 0x50, 0x38, 0x92, 0x00, 0x69, 0x46, 0xc8, 0x55, + 0x16, 0x70, 0x90, 0x73, 0x9e, 0xd8, 0x08, 0xdb, 0x3a, 0xcf, 0x5c, 0xc8, 0xdb, 0x2b, 0xae, 0x8e, + 0x7c, 0x51, 0xa9, 0x0c, 0x54, 0xc8, 0x15, 0x21, 0x26, 0x29, 0x92, 0x25, 0x19, 0xa8, 0x31, 0x7c, + 0x7d, 0x41, 0x32, 0x69, 0xe4, 0xfd, 0xf0, 0x0f, 0x12, 0x2e, 0x35, 0x0d, 0x22, 0x04, 0xf5, 0x7e, + 0x5c, 0xa7, 0x2e, 0xe1, 0xda, 0x11, 0xd2, 0xbf, 0x98, 0xe1, 0x33, 0xf7, 0x3c, 0xb2, 0x4a, 0x1c, + 0x01, 0x3e, 0xf7, 0xcc, 0x14, 0x2a, 0x51, 0xe6, 0x4f, 0x43, 0xba, 0xd4, 0xad, 0xb7, 0x8c, 0x5c, + 0x4a, 0x44, 0x03, 0x7f, 0x80, 0x0f, 0xe5, 0x58, 0x35, 0x44, 0x11, 0x13, 0x63, 0xd6, 0x62, 0x48, + 0x15, 0xa9, 0xb9, 0xdf, 0xf9, 0xc1, 0x70, 0x80, 0xdf, 0x76, 0xda, 0x93, 0x50, 0xc3, 0x17, 0x5b, + 0xb7, 0xdd, 0xfa, 0x14, 0x5a, 0xfa, 0x2f, 0xd6, 0x4b, 0x54, 0xd8, 0x41, 0xab, 0x82, 0xc9, 0x12, + 0xd8, 0x65, 0x71, 0x99, 0xff, 0x07, 0x3b, 0x46, 0x84, 0xeb, 0x89, 0x04, 0x10, 0x6d, 0x5c, 0x1e, + 0xe4, 0xcb, 0x13, 0xcd, 0x37, 0x3b, 0xde, 0x78, 0xfc, 0x48, 0xbd, 0xb2, 0x85, 0x89, 0x45, 0x72, + 0x96, 0x2a, 0x7d, 0x69, 0x1a, 0x59, 0x6d, 0x03, 0x30, 0xb9, 0xce, 0x98, 0xb3, 0xc2, 0x23, 0xb4, + 0x86, 0x2a, 0x1e, 0x76, 0x49, 0xc0, 0x7b, 0xd6, 0x3c, 0x54, 0x76, 0x22, 0x1c, 0x8e, 0x86, 0x56, + 0xeb, 0xa3, 0x00, 0x73, 0x3c, 0xeb, 0x64, 0xa1, 0xd7, 0x4a, 0xeb, 0x4d, 0x98, 0x49, 0xcf, 0x93, + 0x72, 0xec, 0x35, 0x33, 0x8b, 0x97, 0xf4, 0xd0, 0xb7, 0x80, 0xf8, 0xc4, 0x85, 0x27, 0x1f, 0x5e, + 0x3c, 0xe9, 0x83, 0x3d, 0xbc, 0x99, 0x96, 0x3d, 0x63, 0xaa, 0x99, 0x7c, 0x83, 0x07, 0x55, 0x78, + 0x94, 0x7f, 0xa4, 0x48, 0x77, 0x38, 0xa3, 0xb8, 0xb7, 0x02, 0xee, 0x82, 0xac, 0x27, 0x1e, 0xb4, + 0x2a, 0xa9, 0x27, 0x98, 0xcf, 0x58, 0x80, 0xa6, 0x58, 0x15, 0xce, 0x17, 0x87, 0xb4, 0xff, 0xaf, + 0x22, 0xa8, 0xf3, 0x83, 0xf6, 0xd9, 0x04, 0xb3, 0xbb, 0xf1, 0x1a, 0xa7, 0x00, 0x5c, 0x64, 0xfb, + 0x99, 0x6f, 0x54, 0xda, 0x29, 0x1e, 0x4f, 0xae, 0x22, 0x24, 0xce, 0xc8, 0x77, 0xc8, 0x7e, 0xe6, + 0xfd, 0xce, 0x07, 0x7d, 0x0d, 0x93, 0xde, 0x13, 0xd3, 0x08, 0xdb, 0xc1, 0xd5, 0xbb, 0x5a, 0x69, + 0x34, 0xa5, 0x90, 0x44, 0x5b, 0xd2, 0x50, 0x4c, 0x03, 0xb4, 0x35, 0x33, 0x4d, 0x63, 0xdb, 0xfb, + 0xe7, 0xed, 0x07, 0x91, 0x1f, 0x7e, 0xa5, 0x68, 0xa0, 0xe7, 0x80, 0x65, 0xf8, 0x79, 0xc7, 0xca, + 0x80, 0x27, 0x41, 0x59, 0xa3, 0x38, 0xc3, 0xae, 0xa5, 0x8c, 0x1d, 0x00, 0xb5, 0xbc, 0x6d, 0x16, + 0xdf, 0x8e, 0x36, 0xa6, 0x24, 0x8e, 0x1d, 0xca, 0x0c, 0x13, 0xed, 0x3d, 0xe1, 0x68, 0xc9, 0x0b, + 0x8b, 0xd4, 0x17, 0xf2, 0xb3, 0xec, 0x78, 0xa0, 0x7d, 0x35, 0x71, 0xe4, 0x24, 0xd1, 0xe5, 0xc1, + 0x13, 0x2c, 0x7e, 0xab, 0x86, 0x19, 0xfe, 0xbe, 0x22, 0xcf, 0xb7, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xae, 0x29, 0x35, 0xf1, 0xdf, 0xd8, 0xa2, 0x4a, 0xed, 0x7c, 0x70, 0xdf, + 0x7d, 0xe3, 0xa6, 0x68, 0xeb, 0x7a, 0x49, 0xb1, 0x31, 0x98, 0x80, 0xdd, 0xe2, 0xbb, 0xd9, 0x03, + 0x1a, 0xe5, 0xd8, 0x2f, 0xfd, 0xe0, 0x1c, 0x85, 0xa0, 0x45, 0xcc, 0x0e, 0xf3, 0x67, 0x88, 0xe9, + 0x1e, 0xdf, 0x18, 0xe6, 0x3a, 0x44, 0x94, 0x53, 0x74, 0x09, 0x4e, 0x08, 0x3c, 0x33, 0xd3, 0x07, + 0xd1, 0x72, 0xaf, 0x7f, 0x82, 0xec, 0x14, 0x05, 0x87, 0x12, 0x50, 0xc0, 0xc4, 0x4f, 0x7c, 0x67, + 0xdf, 0xd2, 0xe2, 0xc7, 0x38, 0x0d, 0x7c, 0x30, 0xf6, 0x80, 0x39, 0xe2, 0x7d, 0x77, 0xb4, 0x42, + 0xcb, 0x01, 0x63, 0xca, 0x95, 0x32, 0xa4, 0x18, 0x2c, 0x2b, 0xef, 0xa0, 0x26, 0x88, 0xc6, 0x01, + 0x97, 0x10, 0xba, 0xba, 0x3d, 0x80, 0xf2, 0xb8, 0x94, 0xfd, 0x91, 0x75, 0xf2, 0x2c, 0x7f, 0xf6, + 0xdf, 0x41, 0x2c, 0x8c, 0x41, 0xde, 0xb3, 0x94, 0xb9, 0x89, 0xc2, 0x27, 0xf5, 0xc2, 0x03, 0x32, + 0xb7, 0xa0, 0x30, 0x36, 0x98, 0x23, 0xc6, 0xac, 0x19, 0xee, 0xa1, 0xe6, 0xe2, 0x68, 0xee, 0xaa, + 0x70, 0x0c, 0x81, 0xe8, 0x87, 0x31, 0xbf, 0x74, 0xaa, 0xd7, 0x37, 0xab, 0xf9, 0x15, 0x8c, 0x3e, + 0xfc, 0x59, 0x16, 0x20, 0x4e, 0xe3, 0xd4, 0x5e, 0x57, 0x28, 0xcf, 0x42, 0x7f, 0x1a, 0x86, 0x9d, + 0x1c, 0x5d, 0x4a, 0xf1, 0x7a, 0x17, 0x9e, 0xd1, 0x6f, 0xfd, 0xcd, 0xb4, 0xe9, 0x05, 0xdb, 0x8e, + 0x10, 0x99, 0x25, 0x41, 0x2c, 0xa6, 0xf6, 0x65, 0xd3, 0x4f, 0x3c, 0x3d, 0xc9, 0x2c, 0xf5, 0x40, + 0xea, 0x6d, 0x7a, 0x07, 0xdf, 0x9c, 0x3b, 0x3f, 0xe7, 0x45, 0xd8, 0xcf, 0x95, 0x33, 0x57, 0x39, + 0x37, 0x61, 0x36, 0x7c, 0xf7, 0xee, 0xb5, 0xc0, 0x75, 0x0b, 0xe3, 0x08, 0x02, 0xfe, 0x8f, 0x52, + 0x14, 0xa4, 0x1f, 0x99, 0xbe, 0x8d, 0xb8, 0x1f, 0x35, 0xf1, 0x96, 0x61, 0x31, 0x19, 0x20, 0xd8, + 0x1c, 0xdb, 0x99, 0x9f, 0x34, 0x68, 0xf0, 0x16, 0x05, 0x5d, 0x33, 0xbc, 0x8e, 0xa9, 0x50, 0xda, + 0x3f, 0x07, 0xc0, 0xf1, 0x02, 0x61, 0x88, 0xe2, 0x8b, 0x50, 0xc9, 0xad, 0x30, 0xab, 0x00, 0x05, + 0xea, 0x60, 0x4c, 0xcf, 0x86, 0xb0, 0x32, 0x40, 0x1a, 0x6b, 0x84, 0xf9, 0xee, 0xee, 0x1c, 0x82, + 0xf6, 0xbc, 0xd3, 0x88, 0x7c, 0xb9, 0x87, 0x88, 0x8c, 0x1e, 0xc2, 0x55, 0x37, 0xc6, 0x60, 0xdc, + 0xf8, 0x1d, 0xbc, 0x80, 0x06, 0x33, 0x33, 0x61, 0x99, 0xce, 0x7c, 0x41, 0xea, 0xf2, 0xc8, 0x92, + 0x0c, 0xd3, 0xd6, 0xf4, 0x1b, 0xa7, 0x8d, 0x97, 0xb9, 0x84, 0x51, 0x65, 0x6e, 0xcb, 0x7a, 0x73, + 0x97, 0x0a, 0xfd, 0xaa, 0x36, 0xb9, 0xb1, 0x5e, 0x8d, 0xe1, 0xcf, 0x85, 0x2c, 0x5c, 0x41, 0xee, + 0x6c, 0xbc, 0x0e, 0x76, 0x80, 0x5a, 0xa9, 0x3c, 0x3f, 0xa9, 0x33, 0xc4, 0x3d, 0x12, 0x5d, 0x0b, + 0x00, 0x68, 0x7d, 0x15, 0x30, 0x37, 0xe2, 0x4d, 0x4f, 0x49, 0x30, 0x0c, 0x93, 0x2c, 0x18, 0xdd, + 0x1f, 0x92, 0xab, 0xef, 0x0a, 0x2c, 0x12, 0x4c, 0x4e, 0x99, 0xee, 0xcb, 0x95, 0x68, 0xf1, 0xf8, + 0x88, 0x8c, 0xe1, 0x16, 0x2d, 0x08, 0x6a, 0x5a, 0xb1, 0x87, 0xb4, 0x9f, 0x6b, 0x16, 0xb6, 0x69, + 0xb0, 0x40, 0xbc, 0x9c, 0x54, 0x61, 0xa2, 0x65, 0x97, 0x29, 0xa0, 0xfa, 0x12, 0x7b, 0xc5, 0xdb, + 0xcf, 0x6a, 0x54, 0xfc, 0xc8, 0x93, 0xd0, 0xdf, 0x06, 0x7a, 0xd7, 0x44, 0x0c, 0x80, 0x35, 0xe1, + 0xcf, 0x18, 0xc5, 0xb4, 0x19, 0xf3, 0x9c, 0x97, 0x3b, 0x1a, 0x91, 0xbd, 0x54, 0x0c, 0x37, 0x6b, + 0x14, 0x1d, 0xfe, 0x5c, 0xea, 0xb4, 0x3c, 0x71, 0x16, 0x21, 0x1e, 0xa0, 0x14, 0x13, 0x8d, 0xaf, + 0xbd, 0x24, 0xb2, 0x9a, 0xf4, 0x82, 0xab, 0x03, 0xb7, 0x77, 0x00, 0x6f, 0x99, 0x6f, 0xa4, 0x89, + 0xe7, 0x6f, 0xf9, 0xc2, 0x30, 0x3c, 0x1f, 0xe4, 0x69, 0x27, 0x53, 0x40, 0x16, 0xf1, 0x9e, 0xae, + 0xe7, 0xd1, 0xaf, 0x02, 0xf7, 0xb1, 0x13, 0x1a, 0x3e, 0x16, 0x1b, 0x2d, 0x18, 0xfd, 0xbf, 0xb8, + 0x61, 0xeb, 0xf7, 0x8d, 0xe8, 0x5b, 0xa0, 0xee, 0x0e, 0x56, 0xe6, 0xe1, 0x5c, 0x4a, 0x09, 0x51, + 0x41, 0xfa, 0x0c, 0xa8, 0xfc, 0x1a, 0x8d, 0x00, 0x14, 0x4d, 0x82, 0x85, 0x9e, 0x62, 0x7b, 0x70, + 0x06, 0x0b, 0x6a, 0xd7, 0xb1, 0x82, 0x46, 0x49, 0xcf, 0x3b, 0x76, 0x57, 0xd0, 0x27, 0x44, 0xac, + 0xb8, 0xb3, 0x74, 0x6b, 0x3a, 0x1c, 0x2b, 0xdb, 0x5c, 0x9a, 0x57, 0x1c, 0x79, 0xee, 0x80, 0x1d, + 0x6a, 0x8d, 0xbb, 0xfd, 0xc1, 0x70, 0x4e, 0x9b, 0xa0, 0xd3, 0x29, 0x3e, 0xe1, 0x61, 0xe5, 0xe9, + 0x69, 0x59, 0xf6, 0x3f, 0x55, 0x5e, 0x0f, 0x8a, 0x4a, 0x99, 0x95, 0xa4, 0x97, 0x71, 0xd0, 0x72, + 0x36, 0xb4, 0x20, 0x0a, 0xce, 0x69, 0xab, 0xdc, 0xf9, 0xa4, 0x66, 0xd3, 0x0e, 0x81, 0xca, 0x93, + 0xa9, 0xb9, 0xd1, 0x92, 0x41, 0xa3, 0x09, 0x57, 0xcb, 0x05, 0x28, 0xaf, 0xea, 0x86, 0xe1, 0xf1, + 0x9c, 0x7d, 0x38, 0x58, 0x97, 0x6d, 0x50, 0xa6, 0xef, 0xf6, 0xbf, 0x8b, 0x29, 0x8d, 0xbb, 0x86, + 0x48, 0x52, 0x58, 0x8f, 0x88, 0x55, 0x8a, 0x05, 0x40, 0xa0, 0x7c, 0x72, 0xb6, 0xdd, 0xa9, 0x48, + 0x77, 0xdc, 0xee, 0xbc, 0xd3, 0x6f, 0x95, 0x9f, 0x51, 0xa8, 0x5d, 0x7a, 0x61, 0x06, 0x6a, 0x78, + 0x1c, 0xb9, 0xcf, 0xa9, 0xf7, 0x88, 0x81, 0x97, 0x53, 0x5f, 0x62, 0x58, 0xb2, 0x8d, 0x71, 0xce, + 0xf4, 0x05, 0x16, 0x8b, 0x4a, 0xa3, 0xdd, 0x35, 0xfa, 0xdd, 0xd9, 0x95, 0xde, 0xb5, 0x26, 0x0d, + 0xf8, 0x73, 0x26, 0xb6, 0x5c, 0x09, 0x2b, 0x49, 0xac, 0x66, 0x91, 0x33, 0x5f, 0x44, 0xbe, 0x13, + 0xd1, 0x64, 0x44, 0xe4, 0x86, 0x4a, 0xdd, 0xde, 0x2e, 0x2c, 0xe1, 0x89, 0x32, 0x66, 0x14, 0x2e, + 0x75, 0x74, 0xe6, 0x47, 0xf9, 0x74, 0x11, 0xe3, 0x00, 0x3f, 0x13, 0x07, 0xbc, 0x09, 0x88, 0x4b, + 0x51, 0xf6, 0x91, 0xb7, 0x45, 0xaf, 0xaf, 0x69, 0x7b, 0x4f, 0x77, 0x7d, 0x2e, 0xc7, 0x5c, 0x2c, + 0x4f, 0xae, 0x5a, 0x80, 0x6a, 0xef, 0xba, 0x3e, 0x2c, 0x93, 0x63, 0x3a, 0xe4, 0xce, 0x75, 0xe1, + 0xce, 0x38, 0xf7, 0x84, 0xe1, 0xfa, 0x6f, 0x3e, 0x20, 0x17, 0x3a, 0xe7, 0x99, 0x24, 0xc1, 0x2f, + 0x98, 0x32, 0xe4, 0xca, 0x89, 0x80, 0x9c, 0x68, 0x50, 0xb1, 0x56, 0x7e, 0x5f, 0x51, 0x2c, 0x79, + 0x05, 0x16, 0x10, 0xf0, 0x7e, 0x8b, 0x09, 0xaa, 0xb1, 0xf5, 0xcf, 0xb9, 0x18, 0x14, 0x5e, 0xfd, + 0xc0, 0x08, 0xbd, 0x65, 0x1f, 0x7c, 0x1b, 0x2e, 0x0b, 0x7e, 0xc8, 0xbb, 0x32, 0x71, 0x83, 0x2c, + 0x67, 0x82, 0x32, 0xfb, 0xcb, 0x22, 0xe0, 0xff, 0x9b, 0xc1, 0x0a, 0x54, 0xe7, 0xdb, 0x86, 0x23, + 0x00, 0x04, 0x08, 0x06, 0xd1, 0x5a, 0x8f, 0xc9, 0xe3, 0x3a, 0x9b, 0x51, 0xeb, 0xfd, 0xb2, 0xf3, + 0x27, 0x45, 0xa1, 0xeb, 0xdc, 0xd0, 0xf9, 0xa7, 0x70, 0x23, 0xec, 0xc4, 0x29, 0xf1, 0xce, 0x52, + 0x89, 0xa2, 0xcb, 0xa0, 0x45, 0x6d, 0xa5, 0xa7, 0x73, 0xf4, 0xd7, 0x4c, 0x48, 0xd9, 0x15, 0xb9, + 0xe9, 0x87, 0x84, 0x30, 0xfe, 0x0d, 0xf6, 0x45, 0x88, 0xa4, 0x29, 0x26, 0x5d, 0xde, 0xc9, 0x0f, + 0xea, 0x4c, 0xb3, 0xe1, 0x48, 0x9f, 0x03, 0x99, 0x8f, 0xb6, 0x78, 0xa1, 0xaa, 0x7a, 0xa3, 0x99, + 0xb9, 0x0c, 0xcf, 0x22, 0xc5, 0x6e, 0x51, 0x82, 0xcb, 0x14, 0xbd, 0x5e, 0x03, 0xc1, 0xe1, 0xc2, + 0xec, 0x68, 0x09, 0xb0, 0x20, 0x06, 0xa9, 0x1c, 0x64, 0xdc, 0x8d, 0xac, 0x8c, 0xbb, 0x1c, 0xb7, + 0x6b, 0x80, 0x58, 0x92, 0x85, 0xe4, 0x2c, 0x98, 0xfa, 0x44, 0xd9, 0xe0, 0xfd, 0x67, 0xb4, 0xa1, + 0xfc, 0x02, 0xfd, 0x82, 0x0c, 0xac, 0xa3, 0x6f, 0x20, 0x54, 0x5e, 0x22, 0xfe, 0xb1, 0x2d, 0xad, + 0x46, 0x72, 0x5d, 0x78, 0xea, 0xb3, 0xd4, 0x65, 0xa5, 0xd2, 0x85, 0xa2, 0xe9, 0xb2, 0xbc, 0xf6, + 0xdf, 0x32, 0xa3, 0x2a, 0x91, 0x26, 0x1b, 0x18, 0x05, 0x23, 0x19, 0xb5, 0x1e, 0x3c, 0x6a, 0x29, + 0x7d, 0xc3, 0x6e, 0x52, 0xc7, 0xf2, 0x50, 0x29, 0x67, 0xfb, 0xeb, 0x0a, 0xd0, 0xdb, 0xf7, 0x0c, + 0x8a, 0x25, 0x70, 0xb8, 0xf7, 0x15, 0x88, 0xfb, 0x28, 0x91, 0xef, 0xf0, 0xa2, 0x3c, 0x28, 0xdd, + 0x2f, 0x4f, 0xd0, 0xf6, 0x26, 0xa4, 0xdb, 0x65, 0x3b, 0x39, 0x61, 0x43, 0xc6, 0xf8, 0x68, 0xd6, + 0x55, 0xe2, 0xd5, 0x85, 0x03, 0x9c, 0x89, 0x1a, 0x11, 0xff, 0xf1, 0x37, 0x76, 0x8d, 0x05, 0xf7, + 0x5c, 0x27, 0xb8, 0xd3, 0x79, 0xad, 0x02, 0xca, 0xb0, 0x52, 0xec, 0x67, 0x89, 0xfb, 0xb1, 0x28, + 0x72, 0xae, 0x32, 0x2f, 0xde, 0x58, 0x2c, 0x8e, 0x6d, 0x87, 0xb3, 0x3f, 0xb8, 0x44, 0x7e, 0x81, + 0x76, 0x29, 0x4b, 0xe9, 0xdf, 0x99, 0xc7, 0x43, 0xde, 0xb2, 0xe3, 0xf9, 0xf9, 0x1c, 0x8a, 0x3b, + 0x58, 0x88, 0xf6, 0x0e, 0x1e, 0x7f, 0x9f, 0x49, 0xb0, 0x49, 0xba, 0xdb, 0x6d, 0x59, 0xdf, 0x42, + 0x8e, 0xa4, 0x13, 0x80, 0xb5, 0x01, 0x90, 0xd9, 0x6f, 0xf7, 0x2e, 0xba, 0x28, 0x7c, 0xa5, 0x5f, + 0x32, 0x43, 0x99, 0x64, 0xa9, 0xa5, 0x9b, 0xa8, 0xc0, 0x99, 0x03, 0x08, 0x02, 0x10, 0xde, 0xa1, + 0x75, 0xc9, 0x72, 0xa7, 0x66, 0x7a, 0x66, 0xca, 0xb9, 0x36, 0xd0, 0x98, 0xaf, 0xdf, 0x2d, 0xc3, + 0xac, 0x5c, 0xda, 0x1c, 0x66, 0xea, 0xb7, 0x3e, 0x89, 0x32, 0x54, 0xb3, 0x57, 0xa5, 0x4f, 0x9a, + 0xda, 0x6b, 0x11, 0x21, 0x79, 0x15, 0x7e, 0xb1, 0x92, 0x64, 0x07, 0xe8, 0x8f, 0x40, 0x19, 0xbf, + 0x7b, 0x34, 0x1d, 0xd5, 0xbb, 0x0e, 0xbc, 0xd3, 0xd9, 0x88, 0x59, 0xe1, 0xd2, 0xe2, 0x8a, 0x25, + 0xd8, 0x6c, 0x34, 0x8c, 0xab, 0xca, 0x24, 0x51, 0xbf, 0xcd, 0x7d, 0x1a, 0x88, 0x0e, 0x41, 0x0f, + 0xcf, 0x10, 0x62, 0x40, 0xf1, 0xef, 0x38, 0xf9, 0x14, 0x52, 0x9a, 0x6f, 0xd3, 0xf9, 0x6b, 0x98, + 0x4f, 0x19, 0x6c, 0x07, 0xec, 0xcf, 0x36, 0x53, 0x77, 0x58, 0x23, 0x56, 0x08, 0x65, 0xdb, 0x24, + 0x1c, 0xd2, 0xdb, 0x62, 0x5f, 0xdc, 0x1c, 0x01, 0x49, 0xf6, 0x8c, 0x21, 0x6f, 0x71, 0x22, 0x5f, + 0x02, 0xb5, 0x00, 0x49, 0x28, 0x11, 0xc1, 0x3c, 0xba, 0x69, 0xdc, 0x7f, 0xcb, 0xc7, 0xa8, 0x8d, + 0xf5, 0xee, 0xe4, 0x4b, 0x53, 0x8d, 0x01, 0xa3, 0xd1, 0x82, 0x88, 0x28, 0x03, 0x42, 0xed, 0x20, + 0x4b, 0xca, 0xb0, 0x3a, 0x4e, 0x05, 0xee, 0x42, 0xc1, 0xd8, 0xd6, 0x2c, 0x64, 0xd6, 0x83, 0x03, + 0xc1, 0x21, 0x75, 0xd4, 0xce, 0x5d, 0x83, 0x9b, 0x74, 0x88, 0x51, 0x14, 0x9c, 0x5e, 0x73, 0xe5, + 0xaf, 0x1e, 0x12, 0xae, 0xb9, 0xc3, 0x2d, 0xd7, 0x09, 0xf8, 0x4b, 0x2e, 0x14, 0xcf, 0x94, 0x17, + 0xf6, 0xc8, 0x28, 0xbf, 0x6b, 0xd9, 0x33, 0x4c, 0x4c, 0xab, 0x2e, 0xa4, 0x3a, 0xe7, 0x6b, 0x3d, + 0xe0, 0xc4, 0x35, 0xc1, 0xb3, 0x7f, 0x9e, 0xcc, 0x65, 0xeb, 0xed, 0xd8, 0x15, 0x27, 0x11, 0x66, + 0x20, 0x68, 0xaa, 0xf3, 0xa0, 0xf3, 0xa8, 0x6f, 0x51, 0x63, 0x42, 0xcf, 0xba, 0x10, 0x4f, 0x04, + 0xdf, 0x64, 0x87, 0x88, 0xda, 0x49, 0x3e, 0xbf, 0xa2, 0x21, 0xd6, 0x31, 0xac, 0x9f, 0xf2, 0xf8, + 0xd1, 0x5c, 0xf8, 0x89, 0x72, 0x0c, 0x9e, 0x24, 0x30, 0xc1, 0x9f, 0xd9, 0x36, 0xae, 0xcc, 0xcc, + 0xbb, 0x09, 0xf2, 0xc3, 0x5c, 0xf9, 0x33, 0x87, 0x58, 0xb5, 0x47, 0x69, 0x26, 0x23, 0x57, 0x98, + 0xa4, 0x62, 0xa9, 0x0d, 0x70, 0xa7, 0x2d, 0xce, 0x6f, 0x55, 0x05, 0x8f, 0x8b, 0x51, 0x5b, 0x18, + 0xcd, 0x65, 0x9b, 0x47, 0xb6, 0xee, 0xd4, 0xfd, 0x72, 0x28, 0xa0, 0x94, 0xa2, 0xd7, 0xd2, 0xef, + 0x5a, 0xae, 0xc1, 0xf3, 0x6b, 0x5c, 0xa4, 0x54, 0xdb, 0x48, 0xec, 0xfd, 0xe1, 0xe9, 0x5e, 0x8c, + 0x62, 0x4c, 0xf7, 0x7a, 0x50, 0x62, 0xeb, 0xdf, 0x54, 0x6a, 0x49, 0x6f, 0xdb, 0x5a, 0x02, 0x96, + 0xf9, 0x1d, 0x57, 0x8e, 0xa1, 0x61, 0xaa, 0xc7, 0xc7, 0xa8, 0x1b, 0xf5, 0x33, 0x3d, 0x65, 0x12, + 0x45, 0x54, 0xfc, 0x9d, 0x40, 0x17, 0x7c, 0xff, 0xf4, 0x2e, 0x0b, 0xbd, 0x56, 0x80, 0x5c, 0x83, + 0x7f, 0xe6, 0x20, 0x3f, 0x6e, 0x91, 0xa2, 0x2c, 0x58, 0x33, 0x69, 0xbc, 0x15, 0x10, 0xdc, 0x2d, + 0xa3, 0xd6, 0x06, 0xa9, 0xce, 0xa7, 0xec, 0xa8, 0x28, 0x14, 0xbe, 0xbe, 0x80, 0x82, 0x8f, 0x1d, + 0x4c, 0x24, 0x40, 0x26, 0x68, 0xdd, 0xa9, 0xaa, 0x4c, 0xd6, 0x87, 0x7e, 0x46, 0x7a, 0xaa, 0x43, + 0x56, 0x2e, 0xd9, 0x24, 0xda, 0x6f, 0xdd, 0x21, 0x10, 0x39, 0x48, 0xd5, 0x08, 0xec, 0x5d, 0x1f, + 0xe4, 0xdb, 0x64, 0xa1, 0x99, 0x8b, 0x11, 0x60, 0x2f, 0x4b, 0x44, 0x84, 0xd2, 0x69, 0x52, 0xfd, + 0xee, 0xe9, 0x5b, 0xb0, 0xa8, 0xc5, 0x07, 0x77, 0x15, 0xfe, 0x58, 0xf5, 0x62, 0xfb, 0x60, 0x4c, + 0x43, 0xe0, 0x17, 0x54, 0x42, 0x9f, 0x07, 0x7c, 0x2d, 0xc0, 0xa2, 0x6a, 0x3e, 0x13, 0x0b, 0x78, + 0x5c, 0x62, 0x98, 0x7f, 0x55, 0xe2, 0xc7, 0xb2, 0x58, 0xe1, 0x9d, 0x53, 0xb5, 0xd9, 0xaf, 0x0c, + 0x11, 0x70, 0x85, 0xca, 0x21, 0x87, 0x1a, 0x39, 0x5e, 0x67, 0xd4, 0x51, 0x75, 0x2e, 0xa8, 0xea, + 0x0d, 0x30, 0xc0, 0x93, 0x60, 0x18, 0x7f, 0xdf, 0x4a, 0x41, 0xa0, 0x80, 0x1c, 0xed, 0x5c, 0xaa, + 0x84, 0x4f, 0x2d, 0xec, 0x8c, 0xad, 0x24, 0xa1, 0x4b, 0xa9, 0x52, 0x27, 0x8e, 0x70, 0xf6, 0xff, + 0xc0, 0xb4, 0x13, 0x39, 0x75, 0xd4, 0xfc, 0x9a, 0xbf, 0xff, 0x53, 0x3f, 0x44, 0x19, 0xd9, 0xa5, + 0x28, 0x18, 0x5c, 0x38, 0xfb, 0x4c, 0x3e, 0x5b, 0x40, 0xf2, 0xf4, 0xc2, 0x2c, 0x95, 0xdb, 0xd2, + 0xe5, 0x5f, 0x87, 0x56, 0x63, 0x28, 0xda, 0x07, 0xa9, 0x90, 0x83, 0x94, 0xdb, 0x56, 0x2c, 0xa3, + 0xd0, 0xc4, 0x52, 0x6d, 0x1f, 0xfa, 0x35, 0x4f, 0xba, 0xcf, 0x12, 0xf4, 0xf0, 0x46, 0xb5, 0x1e, + 0x67, 0xba, 0x10, 0xc9, 0xc3, 0x0a, 0x30, 0xed, 0xcd, 0xc4, 0x3a, 0x87, 0x08, 0x2c, 0xd9, 0x21, + 0x5f, 0x68, 0x0f, 0xf8, 0x2f, 0x6f, 0x2a, 0x27, 0x47, 0x79, 0x16, 0x52, 0x7a, 0xfd, 0x9d, 0x65, + 0xec, 0x53, 0x90, 0xaf, 0xf0, 0x45, 0x24, 0x08, 0x5a, 0x9f, 0xfd, 0xec, 0xd9, 0x9a, 0x4c, 0x0a, + 0xd4, 0x09, 0x58, 0xdd, 0x29, 0xe4, 0x1a, 0x8e, 0xe9, 0xa3, 0x60, 0x85, 0xd8, 0xd5, 0x9c, 0xb7, + 0x33, 0x2c, 0x3a, 0xfe, 0xd7, 0x09, 0x5a, 0x7a, 0x19, 0x3b, 0x67, 0xc2, 0xc9, 0xf1, 0x41, 0xa4, + 0xc6, 0x7f, 0x1e, 0x7d, 0x6a, 0x75, 0x24, 0xce, 0xef, 0x30, 0xdc, 0x74, 0x8f, 0x2d, 0x8c, 0xf0, + 0x5d, 0x2d, 0x4b, 0x0d, 0x0d, 0x1a, 0xda, 0x8b, 0xdb, 0xc9, 0xac, 0xeb, 0x51, 0x5e, 0xaa, 0xde, + 0x05, 0x3c, 0x8c, 0x87, 0x09, 0x08, 0x2d, 0xd2, 0xca, 0xe6, 0x66, 0x97, 0x70, 0x38, 0x0e, 0x28, + 0x53, 0x4b, 0x59, 0x85, 0x6a, 0x59, 0xe2, 0xd2, 0x6f, 0x87, 0x4f, 0x4b, 0xf5, 0xe1, 0x4d, 0xc9, + 0x23, 0xdd, 0xfe, 0x77, 0x44, 0x92, 0x3f, 0xf6, 0x78, 0x93, 0x18, 0x38, 0x02, 0x24, 0x22, 0x89, + 0xb7, 0x59, 0x84, 0x7d, 0xe4, 0xf7, 0x67, 0xaa, 0xb8, 0xd4, 0x03, 0x92, 0x97, 0xfd, 0xaa, 0xb0, + 0x5d, 0xee, 0x1a, 0x48, 0xb1, 0xfb, 0x1c, 0x9d, 0xaf, 0x64, 0xc3, 0xd6, 0x3e, 0xb7, 0x62, 0xf5, + 0xdb, 0xea, 0x61, 0x1d, 0xde, 0xc6, 0xee, 0x6e, 0x90, 0xfd, 0x0b, 0x74, 0xd2, 0xc2, 0xf7, 0x35, + 0x98, 0x78, 0x74, 0x3e, 0xb4, 0xac, 0x29, 0x4f, 0xcd, 0x95, 0x6f, 0x0a, 0x6b, 0x20, 0xee, 0xd6, + 0xd8, 0x6b, 0x34, 0x51, 0xc0, 0x6f, 0x52, 0x9c, 0x4d, 0xac, 0x9a, 0x11, 0xb8, 0xb8, 0x29, 0x37, + 0x8a, 0x1b, 0x8f, 0x0c, 0x3a, 0x7a, 0x24, 0xfa, 0xc9, 0x5b, 0xef, 0x94, 0x9d, 0x36, 0xf9, 0x1a, + 0x5b, 0x97, 0xab, 0x0d, 0x3e, 0xc4, 0x7c, 0x9a, 0x83, 0xb7, 0x36, 0x1b, 0x2c, 0x93, 0xd2, 0x66, + 0x6e, 0x6f, 0x32, 0x11, 0x2f, 0x21, 0x19, 0x96, 0x3d, 0x7c, 0x5f, 0x2e, 0x6c, 0x05, 0x34, 0x95, + 0x7c, 0x1b, 0x9b, 0x33, 0xa4, 0xb2, 0x6d, 0x5f, 0xda, 0x45, 0x69, 0x0e, 0x5c, 0x1e, 0x5e, 0xa9, + 0x1a, 0x31, 0xc8, 0x23, 0x78, 0x98, 0x34, 0x4b, 0xe9, 0x37, 0xd5, 0x87, 0x46, 0xec, 0x9b, 0x20, + 0x50, 0x35, 0xb9, 0x95, 0xe5, 0x06, 0x50, 0xa6, 0xe1, 0xdd, 0x19, 0xf5, 0xc6, 0x96, 0xec, 0xb3, + 0x08, 0x1c, 0x25, 0xad, 0x3b, 0xfc, 0x11, 0x6c, 0x9a, 0x7d, 0xd8, 0x31, 0x03, 0x24, 0xb5, 0xcb, + 0x90, 0xed, 0xfc, 0x98, 0xb1, 0x46, 0xec, 0xd0, 0xa9, 0x3c, 0x1f, 0x66, 0xb5, 0xba, 0x5e, 0xf2, + 0x5a, 0xd5, 0xf3, 0xdf, 0x54, 0xe7, 0x11, 0x89, 0xdc, 0xf0, 0xea, 0x09, 0x5d, 0x7a, 0x7a, 0xf6, + 0x5f, 0x5d, 0x69, 0xc0, 0xbc, 0xf3, 0x73, 0x73, 0x9a, 0xd5, 0x78, 0x40, 0xe3, 0x54, 0x31, 0x45, + 0xd1, 0xc0, 0x2f, 0x93, 0xbc, 0x1e, 0x2f, 0x39, 0x4e, 0xb4, 0xf0, 0x3e, 0x57, 0x7a, 0x64, 0x8d, + 0x98, 0x66, 0x5d, 0x83, 0x5a, 0x6f, 0x8b, 0x5f, 0xf2, 0x7e, 0xd1, 0xc9, 0xcc, 0xbb, 0xf7, 0xaa, + 0x95, 0x2e, 0x7a, 0x7d, 0x8d, 0xec, 0x37, 0x7a, 0xb5, 0xbc, 0x8d, 0x62, 0xd2, 0x32, 0x1e, 0xd7, + 0x8b, 0x15, 0x06, 0x75, 0xde, 0x81, 0xab, 0xb0, 0xd4, 0x59, 0xa2, 0x25, 0x34, 0xca, 0x6d, 0xce, + 0x3f, 0xa3, 0xae, 0xe6, 0x09, 0xb3, 0x33, 0xe1, 0x25, 0x56, 0x77, 0x30, 0x8b, 0xf7, 0x30, 0x0f, + 0x74, 0x72, 0x36, 0x8c, 0x4b, 0x5d, 0x94, 0xbc, 0x4f, 0x5e, 0x1d, 0x8a, 0x75, 0xec, 0xd4, 0x21, + 0x21, 0xa9, 0x54, 0x9c, 0xc8, 0x37, 0x28, 0x06, 0xae, 0x5c, 0x72, 0x3b, 0xa0, 0x80, 0x0d, 0x17, + 0xbb, 0x22, 0xe8, 0xf7, 0xa9, 0x31, 0x7d, 0x2c, 0x13, 0x74, 0xbc, 0xa0, 0x09, 0xba, 0x5b, 0x05, + 0xa4, 0xf9, 0xab, 0xb5, 0xd5, 0xd7, 0x11, 0x3f, 0xa3, 0xb4, 0x89, 0x79, 0x1c, 0x4a, 0xd8, 0xfb, + 0xc6, 0x54, 0x41, 0xaf, 0x32, 0xc9, 0x71, 0xaa, 0x5a, 0xb1, 0xb5, 0xe0, 0xa0, 0x73, 0x45, 0x18, + 0x73, 0x17, 0xd2, 0xcb, 0xb8, 0x70, 0x30, 0xbb, 0xce, 0x25, 0xad, 0x9e, 0x8d, 0xf3, 0x0d, 0xec, + 0x26, 0x3f, 0x2c, 0x16, 0x49, 0x45, 0x68, 0xbe, 0x04, 0x3e, 0x67, 0x1a, 0xa6, 0x7e, 0xe9, 0x44, + 0x63, 0x43, 0x91, 0x92, 0x25, 0x84, 0x04, 0xe6, 0xa8, 0xb7, 0xf2, 0x70, 0x86, 0xba, 0x2e, 0x34, + 0x4c, 0x0f, 0x45, 0xac, 0x39, 0x8d, 0x0c, 0x59, 0x60, 0x08, 0xb2, 0x07, 0x79, 0xfd, 0xd0, 0x60, + 0xad, 0x0d, 0x53, 0xa6, 0x9b, 0x02, 0x22, 0xf2, 0xbc, 0xb4, 0xbd, 0x9e, 0x8a, 0xe8, 0x3b, 0xa7, + 0x76, 0x21, 0x8e, 0x59, 0x5f, 0x08, 0xb6, 0xf9, 0x4f, 0x18, 0x09, 0x8b, 0x8a, 0x94, 0x59, 0x93, + 0xa3, 0x23, 0xf1, 0xdb, 0x62, 0x88, 0x30, 0xe5, 0xea, 0xf1, 0x79, 0x3a, 0xf4, 0x3a, 0x57, 0xee, + 0xab, 0xa0, 0x82, 0x39, 0x44, 0xd9, 0x13, 0xb9, 0x32, 0xb4, 0x97, 0xb9, 0xa9, 0xb3, 0x23, 0x81, + 0x61, 0xed, 0x96, 0x51, 0xd9, 0xc5, 0x1c, 0x1b, 0xe7, 0x2a, 0x18, 0x83, 0xdb, 0xf5, 0xf2, 0x93, + 0x98, 0xd8, 0x79, 0xc3, 0x38, 0x6d, 0x86, 0x83, 0x9a, 0x80, 0x0d, 0x21, 0x5e, 0xbd, 0x7c, 0x7a, + 0x32, 0xd0, 0x75, 0xea, 0xe4, 0x95, 0x01, 0xcc, 0xa3, 0x2c, 0x74, 0x97, 0x1a, 0x25, 0xc7, 0x1a, + 0x38, 0xe6, 0x92, 0x8b, 0x89, 0xff, 0x56, 0xcd, 0x8d, 0x9f, 0xa0, 0x18, 0x9b, 0x00, 0xc4, 0x58, + 0x38, 0x49, 0x6a, 0x87, 0x59, 0xcc, 0x3b, 0xde, 0xb1, 0x6a, 0x86, 0x12, 0x74, 0x03, 0xd7, 0x04, + 0xc4, 0x63, 0xab, 0x1f, 0x5f, 0xf8, 0x4b, 0xba, 0x1d, 0x27, 0x06, 0xba, 0x68, 0xee, 0xe2, 0xd3, + 0x59, 0xb1, 0xc1, 0x7b, 0x97, 0x4e, 0x36, 0x9e, 0x13, 0x62, 0x9a, 0xad, 0x75, 0xe5, 0x44, 0xaa, + 0x9c, 0x5e, 0xdd, 0x05, 0x24, 0x6f, 0x44, 0x54, 0xc2, 0x5a, 0xfd, 0x4e, 0x97, 0x49, 0xfc, 0xf8, + 0xe9, 0x87, 0x42, 0x7d, 0xc5, 0xd6, 0x36, 0x21, 0x20, 0x6c, 0x2c, 0x32, 0xf9, 0xca, 0x49, 0x2f, + 0x7c, 0x3c, 0x24, 0x39, 0xd6, 0x91, 0xd3, 0x69, 0xf1, 0x8b, 0x91, 0x54, 0xfd, 0xa0, 0x7a, 0x01, + 0x52, 0x4a, 0xee, 0xf7, 0xea, 0xac, 0x19, 0xe8, 0x26, 0x8c, 0x5b, 0x23, 0xd3, 0xa3, 0xa6, 0x44, + 0xdf, 0x9c, 0x90, 0xd8, 0x09, 0x68, 0xda, 0x44, 0x50, 0x2c, 0x55, 0x44, 0xd5, 0xc2, 0x7d, 0xab, + 0xb0, 0x44, 0x81, 0xe5, 0xd9, 0x89, 0x0b, 0x08, 0x7e, 0xe0, 0x15, 0x0f, 0xef, 0x80, 0xd9, 0x46, + 0xef, 0x0d, 0x58, 0x9b, 0xa2, 0x5f, 0x74, 0xb4, 0x5c, 0x66, 0x84, 0x5b, 0x5d, 0x5e, 0x08, 0xd1, + 0xfc, 0x8e, 0x7b, 0xb4, 0x51, 0x59, 0x17, 0xb3, 0x32, 0xdb, 0x86, 0x6a, 0x7a, 0x11, 0x74, 0x78, + 0xda, 0x6b, 0x50, 0x10, 0x16, 0x04, 0x48, 0x1f, 0xc8, 0x24, 0x9f, 0x77, 0xb7, 0x39, 0x0f, 0xd4, + 0xde, 0x34, 0x50, 0x3a, 0xb7, 0x2d, 0x0e, 0x6e, 0x9e, 0x15, 0x9a, 0x8e, 0x90, 0x1e, 0x93, 0xbf, + 0x6b, 0xb8, 0xeb, 0x10, 0x52, 0xe4, 0x0d, 0x7f, 0x05, 0x0e, 0x5d, 0x87, 0x25, 0x8f, 0xbc, 0x7f, + 0x25, 0xfa, 0xce, 0x37, 0x03, 0xac, 0x15, 0xfa, 0x46, 0x3d, 0xd5, 0x48, 0xfb, 0xf2, 0x63, 0x7b, + 0xda, 0x6f, 0x37, 0xdb, 0xbe, 0xc0, 0xad, 0xac, 0xb3, 0x36, 0xe4, 0xe6, 0x15, 0xd7, 0xd4, 0xc8, + 0x4e, 0xe0, 0x74, 0x3d, 0xe7, 0x31, 0x05, 0xf3, 0x42, 0x79, 0x12, 0x91, 0x56, 0x8e, 0xf7, 0xd1, + 0x60, 0xd4, 0x7d, 0x28, 0x53, 0x5b, 0xe9, 0x16, 0x25, 0x17, 0x32, 0x6c, 0x3a, 0x80, 0xc8, 0x23, + 0xe3, 0x54, 0xef, 0xc4, 0xfe, 0xd7, 0x21, 0xa1, 0xc1, 0x01, 0xfc, 0xad, 0x4e, 0x3d, 0x14, 0xb5, + 0xd4, 0x08, 0x9d, 0xdd, 0x98, 0x6c, 0xd6, 0x26, 0x4d, 0xad, 0x83, 0x50, 0x45, 0x82, 0x0e, 0x8d, + 0x1e, 0x4c, 0x7a, 0xea, 0x65, 0xb2, 0x1c, 0x75, 0x2d, 0xe3, 0x57, 0xd2, 0x26, 0x56, 0x8c, 0x46, + 0xb7, 0x83, 0x61, 0x4b, 0x1d, 0xe0, 0x42, 0xa1, 0x3f, 0x9d, 0xe5, 0x37, 0xdd, 0xfa, 0x21, 0xd8, + 0x45, 0x2a, 0xa5, 0xc8, 0x4f, 0x8a, 0x38, 0x0c, 0xc0, 0x7f, 0x43, 0xac, 0xfa, 0xaf, 0x8b, 0x84, + 0xdf, 0x70, 0xc3, 0xf7, 0x1b, 0xff, 0x1c, 0x82, 0x66, 0xdb, 0x04, 0x27, 0xa8, 0x60, 0x38, 0xd9, + 0x6a, 0x76, 0xbc, 0xd2, 0xac, 0xa7, 0x2c, 0xa7, 0x25, 0xde, 0xe2, 0xff, 0xc0, 0x30, 0xbb, 0x45, + 0x3c, 0x11, 0xea, 0x3b, 0x33, 0xfb, 0x40, 0x71, 0xbe, 0xfe, 0xa6, 0x0b, 0xb9, 0xac, 0xff, 0xa9, + 0xe4, 0xc6, 0x5d, 0x9a, 0x9b, 0xea, 0x10, 0x53, 0x95, 0xa3, 0x4f, 0x9b, 0xc7, 0x8c, 0x4c, 0x5e, + 0x92, 0x95, 0xc1, 0x52, 0xd2, 0xe1, 0x45, 0x4a, 0x53, 0x14, 0xc1, 0xed, 0x1f, 0xba, 0x8a, 0x47, + 0xc3, 0x64, 0x1e, 0x7b, 0xf6, 0x61, 0x39, 0xb8, 0x1c, 0x83, 0x59, 0x2d, 0x1e, 0xf6, 0xb4, 0x81, + 0x32, 0xee, 0xe0, 0x97, 0xd2, 0x25, 0xdb, 0xa6, 0x44, 0xf0, 0xe9, 0x73, 0xa1, 0xb5, 0xfc, 0x1b, + 0x04, 0xe5, 0x5d, 0x35, 0x3c, 0xe3, 0x1b, 0x4a, 0x30, 0x02, 0x29, 0x00, 0xe9, 0xda, 0xc5, 0x74, + 0x6f, 0x7e, 0xb4, 0xa1, 0x4f, 0xbb, 0xfe, 0x8b, 0x36, 0x74, 0x2a, 0x4e, 0xee, 0xc6, 0x85, 0x38, + 0x05, 0x74, 0xfe, 0x5c, 0xf2, 0xca, 0x39, 0xdd, 0xab, 0xca, 0xa4, 0x30, 0xf9, 0xee, 0xf1, 0x3b, + 0xdd, 0x2c, 0xe0, 0x64, 0x73, 0x88, 0x9e, 0x80, 0x0f, 0xbf, 0xf8, 0x5e, 0x1a, 0x8b, 0x05, 0xea, + 0x9a, 0x9a, 0xae, 0x82, 0xeb, 0x6d, 0x04, 0xbf, 0xa8, 0x25, 0xdf, 0x54, 0x17, 0x92, 0x3d, 0x52, + 0x4e, 0x3c, 0x93, 0xc6, 0x5a, 0xd8, 0x50, 0xf8, 0x57, 0x42, 0xf2, 0x02, 0x9e, 0xbb, 0xf6, 0x44, + 0xd7, 0x0d, 0x59, 0xdf, 0x77, 0x3b, 0x23, 0x54, 0x7b, 0xa7, 0x67, 0x75, 0xf3, 0xe5, 0x75, 0x3e, + 0x9d, 0xdc, 0xe0, 0xdc, 0x75, 0xb8, 0x93, 0xf0, 0xd2, 0x5b, 0x03, 0x9c, 0x56, 0x4d, 0x22, 0xd9, + 0xfd, 0x42, 0xb2, 0xcf, 0xc9, 0xb4, 0x3f, 0xe5, 0x32, 0x01, 0x75, 0x54, 0xa4, 0xdf, 0xa3, 0x43, + 0xcd, 0x77, 0x25, 0x87, 0xb9, 0x74, 0x07, 0x71, 0xe8, 0xa6, 0x82, 0x82, 0x14, 0x16, 0x94, 0x45, + 0x6a, 0xb1, 0x42, 0xfe, 0x7b, 0xbf, 0x08, 0xa2, 0x1d, 0x42, 0xc2, 0x79, 0x6e, 0xec, 0x50, 0x71, + 0x57, 0xa5, 0x81, 0xbf, 0xe4, 0x52, 0x68, 0xf1, 0xd4, 0xc9, 0xdb, 0x34, 0x2d, 0x9e, 0xda, 0x2f, + 0x29, 0xda, 0x43, 0x6a, 0xc6, 0x13, 0x09, 0x9e, 0xf1, 0xfb, 0xe1, 0x6b, 0x9b, 0x48, 0x5d, 0x8e, + 0xcb, 0xc0, 0xb3, 0x0f, 0x48, 0x67, 0x8e, 0x53, 0xd7, 0x51, 0x8e, 0xf4, 0x44, 0x1d, 0xcf, 0xc4, + 0x03, 0x0d, 0x64, 0x68, 0xb9, 0x62, 0x2b, 0x0b, 0x31, 0xf1, 0xc8, 0x22, 0xce, 0xbe, 0xc5, 0xa6, + 0x06, 0x4f, 0x43, 0x9a, 0x1b, 0xa5, 0xfc, 0xa6, 0xac, 0xe4, 0x94, 0x5e, 0x4b, 0x80, 0x65, 0xfe, + 0xb4, 0xeb, 0xd4, 0x4d, 0x0e, 0x66, 0x01, 0x1d, 0x2b, 0x31, 0x7d, 0xfc, 0x3a, 0xb2, 0x63, 0x45, + 0x5b, 0x3a, 0x64, 0xd1, 0xc8, 0x25, 0x1a, 0xa6, 0x6c, 0x96, 0xa5, 0x9c, 0x20, 0xfc, 0xf8, 0x8a, + 0x0d, 0x5b, 0x83, 0x19, 0xd4, 0xde, 0x01, 0xc3, 0x22, 0x06, 0x6c, 0x0b, 0x0a, 0x17, 0x9c, 0x77, + 0x1f, 0xc0, 0x53, 0x07, 0xc7, 0x6f, 0xe3, 0xdf, 0x61, 0x6e, 0x21, 0x0e, 0x8f, 0x26, 0x3b, 0x89, + 0x3b, 0x7b, 0x11, 0x7a, 0xf2, 0x88, 0x29, 0x98, 0xff, 0xec, 0x4b, 0x95, 0xee, 0x8b, 0xc7, 0xde, + 0x60, 0x0a, 0x49, 0x0e, 0x4f, 0xa3, 0x91, 0xa9, 0xfc, 0x97, 0x4a, 0x34, 0xe8, 0x00, 0x8f, 0x38, + 0xa6, 0x91, 0xe5, 0xde, 0xfe, 0x2d, 0x20, 0xde, 0xd8, 0x9b, 0x6a, 0x97, 0x14, 0x3a, 0xaf, 0x2f, + 0x47, 0x8a, 0x66, 0x22, 0x03, 0x68, 0x4b, 0x9b, 0xe4, 0xbd, 0x98, 0x2e, 0x5f, 0x21, 0x63, 0x5a, + 0x9a, 0x70, 0x27, 0x41, 0x46, 0x51, 0x27, 0xbb, 0xa1, 0xb6, 0xd5, 0x2d, 0xdf, 0x09, 0x64, 0xd5, + 0xdb, 0x0c, 0x2f, 0x4c, 0x00, 0x55, 0x45, 0xd1, 0x12, 0xd7, 0xdb, 0x81, 0x09, 0x40, 0x59, 0xba, + 0x93, 0xe8, 0xfc, 0x0c, 0x1a, 0x9e, 0x00, 0xd9, 0xf7, 0xc5, 0x68, 0x23, 0x16, 0x10, 0x51, 0xba, + 0xb0, 0x0c, 0x67, 0x56, 0x6d, 0xd4, 0x81, 0x88, 0xa1, 0x6f, 0xcc, 0x9c, 0x54, 0x3b, 0x5a, 0xc0, + 0x27, 0x90, 0xaa, 0xf1, 0x10, 0xf7, 0x28, 0x56, 0xec, 0x49, 0x05, 0x41, 0x88, 0x24, 0x9a, 0x8b, + 0x62, 0x5f, 0xe1, 0x9c, 0xa6, 0xd7, 0x23, 0x08, 0x80, 0xf5, 0x85, 0x4d, 0xce, 0xa4, 0xf5, 0x11, + 0xc0, 0x4b, 0xd3, 0x64, 0xe4, 0x2e, 0x08, 0x3b, 0xea, 0x33, 0x46, 0xaf, 0x92, 0xec, 0x61, 0xc8, + 0x14, 0xee, 0x6f, 0x90, 0x5a, 0xe8, 0x3e, 0xcb, 0xe1, 0x41, 0xd8, 0x5f, 0xab, 0xac, 0x5b, 0xe7, + 0x61, 0x09, 0x92, 0x62, 0xc8, 0x42, 0x12, 0x3f, 0x9d, 0x17, 0x11, 0x17, 0x1d, 0x89, 0x1c, 0x59, + 0x55, 0x42, 0xec, 0x37, 0x7b, 0xdc, 0x30, 0xe7, 0x01, 0x8f, 0x76, 0x6c, 0xda, 0xb0, 0x45, 0x50, + 0x02, 0x8d, 0x27, 0xea, 0x55, 0x04, 0x11, 0xf6, 0xf3, 0x3f, 0xca, 0xed, 0xef, 0x8c, 0xf6, 0xb6, + 0xd5, 0x83, 0x46, 0xa1, 0x56, 0xd9, 0xc5, 0xa5, 0x65, 0x45, 0x9c, 0x50, 0x3e, 0x9e, 0xc6, 0xd0, + 0x83, 0x8d, 0x13, 0xd0, 0x6a, 0x21, 0x30, 0x44, 0x70, 0x6a, 0x95, 0xf2, 0x48, 0x18, 0x84, 0xe5, + 0x60, 0xa4, 0xb3, 0xe5, 0x74, 0xe0, 0x8a, 0x47, 0x58, 0x82, 0x89, 0xb7, 0x16, 0xc0, 0x1a, 0x0f, + 0x0f, 0x35, 0x56, 0xa3, 0x0c, 0xdb, 0x12, 0xc0, 0x02, 0x8f, 0x1a, 0x72, 0xd1, 0x73, 0xbf, 0xf0, + 0x67, 0x94, 0xaa, 0xc8, 0x73, 0x5b, 0x95, 0x61, 0x5a, 0xca, 0x41, 0xf5, 0xe9, 0xc6, 0x38, 0x21, + 0x67, 0x1b, 0xe7, 0xc5, 0x7b, 0x0d, 0x06, 0x60, 0x6d, 0x31, 0x40, 0x6e, 0xa5, 0xd6, 0xfa, 0xe1, + 0xd1, 0x85, 0x8e, 0x52, 0x2d, 0xf5, 0x06, 0x90, 0xf8, 0x55, 0xf9, 0x1e, 0x8e, 0x7f, 0xd5, 0xc7, + 0x32, 0x0a, 0x93, 0xb8, 0xe0, 0xe3, 0x1c, 0xe1, 0xa0, 0xfe, 0xa6, 0x11, 0x4b, 0x08, 0x14, 0x47, + 0x10, 0x56, 0xc5, 0x62, 0x38, 0x22, 0x12, 0xfc, 0x2b, 0x9a, 0x9e, 0xf2, 0x19, 0xe7, 0xa4, 0xa2, + 0x0f, 0xb8, 0x32, 0xeb, 0x42, 0x77, 0x3c, 0xb2, 0x41, 0xbf, 0x3c, 0x05, 0x19, 0xf3, 0x6a, 0x50, + 0x74, 0x41, 0x0e, 0x02, 0xab, 0x1a, 0xc7, 0x69, 0x04, 0x76, 0xb4, 0xb2, 0x45, 0x6f, 0x05, 0x92, + 0x77, 0x83, 0x9b, 0xc2, 0x4b, 0xeb, 0x30, 0xf1, 0x8e, 0xf0, 0x2c, 0xa8, 0x52, 0xdf, 0xcf, 0x0f, + 0xd4, 0x63, 0xb7, 0x55, 0x9e, 0x8d, 0xd9, 0xc0, 0xef, 0x02, 0xaa, 0x74, 0x76, 0x43, 0x4b, 0x60, + 0x53, 0x04, 0xce, 0x21, 0xa5, 0xa0, 0x1c, 0x48, 0xca, 0x64, 0xe3, 0xc7, 0x18, 0xc2, 0x67, 0x95, + 0xba, 0x85, 0xe9, 0x87, 0xee, 0xd8, 0x03, 0x07, 0xc4, 0xe7, 0x6a, 0xf8, 0x83, 0xb4, 0xbc, 0xb6, + 0x82, 0x9e, 0xc9, 0x1e, 0xe3, 0xa9, 0x36, 0x22, 0x77, 0xc4, 0x98, 0x3c, 0x50, 0xfb, 0x6e, 0xd9, + 0x42, 0x2a, 0x48, 0xb6, 0xe8, 0x33, 0x7c, 0xc4, 0x30, 0xd7, 0xc0, 0x59, 0x6d, 0x5c, 0x74, 0x93, + 0x8b, 0x70, 0x28, 0x25, 0xcc, 0x52, 0x3d, 0xb1, 0xa8, 0xa6, 0x60, 0x39, 0x3a, 0x2d, 0xf6, 0x53, + 0x0e, 0x34, 0x28, 0xe1, 0x2b, 0x89, 0x08, 0x27, 0x3a, 0x28, 0x51, 0xef, 0x20, 0xf9, 0x9c, 0x36, + 0xb1, 0x2c, 0xeb, 0x6a, 0xeb, 0x60, 0x08, 0x0b, 0x25, 0xac, 0x34, 0x4d, 0x21, 0xea, 0x2d, 0x27, + 0x98, 0x62, 0x14, 0x68, 0x41, 0x94, 0x66, 0x20, 0x0d, 0x52, 0x32, 0x0d, 0x71, 0x68, 0x1a, 0x44, + 0x13, 0x47, 0xda, 0x22, 0xd6, 0xf5, 0x3a, 0x3a, 0x05, 0x9f, 0xfc, 0x62, 0xbc, 0x76, 0xd9, 0x37, + 0x7f, 0x73, 0x2b, 0x8d, 0x83, 0xa5, 0x81, 0xf3, 0x98, 0x95, 0x56, 0x99, 0x19, 0x73, 0xd7, 0x24, + 0xf7, 0x62, 0x79, 0xf5, 0x7b, 0x2e, 0x05, 0x41, 0x65, 0x72, 0xfb, 0x6a, 0xd1, 0xd2, 0xe9, 0x9c, + 0x08, 0x53, 0x8d, 0x08, 0x84, 0x27, 0xe7, 0x6a, 0xda, 0x99, 0xf2, 0xbf, 0x13, 0xb4, 0x1f, 0xa8, + 0x5f, 0x21, 0x40, 0xc0, 0x64, 0xb4, 0x0a, 0x6a, 0x2f, 0x88, 0x09, 0xff, 0x82, 0x19, 0x9b, 0xec, + 0x4f, 0xa0, 0xdf, 0x73, 0xb2, 0x41, 0x00, 0x09, 0xa6, 0xff, 0x38, 0x58, 0x68, 0x44, 0xe0, 0x67, + 0xda, 0xd7, 0x57, 0xd9, 0x9c, 0xf6, 0x0a, 0xd6, 0x9f, 0x6a, 0x3b, 0x98, 0x59, 0xdd, 0xdf, 0xe2, + 0x10, 0x56, 0xd5, 0xf3, 0x51, 0x20, 0x7e, 0xc5, 0x78, 0x0d, 0x18, 0xcf, 0x8f, 0x0c, 0x01, 0xf2, + 0xaa, 0xa2, 0x05, 0x9c, 0x65, 0x8e, 0x10, 0x86, 0x0a, 0x2c, 0x6c, 0x45, 0x7b, 0x6d, 0x03, 0xdf, + 0x57, 0xd3, 0x36, 0x21, 0xee, 0xd1, 0xd1, 0x81, 0x5e, 0x27, 0x86, 0xbc, 0x76, 0x70, 0x85, 0xe0, + 0x95, 0x46, 0xc7, 0xc8, 0x8b, 0x95, 0x28, 0x39, 0xc8, 0x55, 0xf9, 0x61, 0x7c, 0xd5, 0x37, 0x48, + 0xad, 0x68, 0x1c, 0x4e, 0x84, 0x38, 0x48, 0x34, 0xad, 0x24, 0xab, 0xfa, 0x1d, 0x6f, 0xda, 0x2e, + 0x41, 0xc4, 0xcc, 0x5c, 0x3b, 0xaf, 0x32, 0xb7, 0x13, 0x3d, 0x0a, 0x44, 0x83, 0x01, 0x78, 0x07, + 0xfe, 0x6f, 0xae, 0xfe, 0x11, 0xa4, 0x29, 0x54, 0x7d, 0x83, 0x8a, 0xd4, 0xed, 0xba, 0x93, 0x13, + 0x60, 0x3a, 0xd4, 0xa9, 0xa4, 0x63, 0x3e, 0x06, 0x81, 0xa0, 0x31, 0x8b, 0xc2, 0x25, 0x70, 0xaa, + 0xc8, 0x41, 0xcd, 0xce, 0x55, 0x9b, 0x6a, 0x6f, 0x75, 0x01, 0xcb, 0xd4, 0xde, 0x6b, 0xcc, 0x38, + 0xe5, 0x14, 0x18, 0xe4, 0x53, 0xac, 0x26, 0x08, 0x1e, 0x07, 0x78, 0x3c, 0xd4, 0x17, 0xdd, 0x40, + 0x50, 0x3c, 0x94, 0x46, 0x6b, 0xc4, 0xf3, 0x7b, 0xdd, 0x2d, 0xe3, 0xe9, 0x0e, 0x23, 0x44, 0x39, + 0xbc, 0x97, 0xa4, 0xa0, 0xda, 0x84, 0x20, 0xec, 0x94, 0xce, 0x0e, 0x04, 0xd4, 0xb0, 0x61, 0xb4, + 0x4f, 0xa7, 0x08, 0x71, 0xd6, 0x8e, 0x48, 0x6f, 0x88, 0xd4, 0x19, 0x60, 0x0a, 0x91, 0x77, 0x99, + 0xbb, 0xce, 0x30, 0xb8, 0x36, 0x1b, 0x0c, 0x13, 0x0e, 0x2d, 0x79, 0xc6, 0xe6, 0x79, 0xa4, 0xd7, + 0x4d, 0xea, 0x8e, 0xa2, 0xc1, 0x40, 0xbd, 0x2b, 0xde, 0x04, 0x78, 0xa6, 0x59, 0x8a, 0x10, 0xac, + 0xc3, 0xf6, 0x53, 0x71, 0xfe, 0x79, 0x0f, 0x79, 0x37, 0xd5, 0xbf, 0xdd, 0xab, 0xad, 0xac, 0x9e, + 0x12, 0xac, 0xbd, 0xd5, 0x06, 0x26, 0x35, 0xab, 0xb1, 0x0d, 0x26, 0x5e, 0x87, 0x3a, 0xa0, 0x07, + 0xb0, 0xb5, 0x72, 0xc8, 0xad, 0x43, 0x2b, 0x87, 0xb1, 0x91, 0xf4, 0x1c, 0x42, 0xd8, 0x51, 0xa6, + 0x6e, 0xf6, 0xa7, 0xff, 0x53, 0xd8, 0xa5, 0x11, 0xce, 0x2c, 0x01, 0xf4, 0x1d, 0x22, 0x23, 0x4d, + 0xcb, 0x27, 0x61, 0x06, 0xdb, 0x9d, 0x3c, 0x99, 0x0c, 0x5e, 0x1f, 0xca, 0x13, 0xde, 0x97, 0xdf, + 0xbd, 0x28, 0x72, 0xdc, 0x2d, 0x69, 0x9c, 0x3b, 0x6a, 0xa2, 0x0c, 0x5c, 0xf6, 0xfa, 0x2f, 0xc5, + 0xe6, 0xd6, 0x6c, 0xcd, 0x1a, 0xfe, 0x39, 0xed, 0x31, 0x72, 0x26, 0xbb, 0xa5, 0xfd, 0x2a, 0x97, + 0x0a, 0xdb, 0xa5, 0x54, 0xb1, 0x44, 0x00, 0x3f, 0x9b, 0x79, 0xa2, 0xda, 0xc3, 0xc1, 0x4d, 0xdf, + 0x70, 0x43, 0xc9, 0x0b, 0xdb, 0x4a, 0x24, 0xf7, 0xba, 0x4b, 0xac, 0x46, 0x78, 0x42, 0x3b, 0x66, + 0xe3, 0x2d, 0x3a, 0x42, 0x9a, 0x84, 0x3c, 0x5b, 0x36, 0x6f, 0x66, 0x14, 0x58, 0xec, 0x60, 0x4b, + 0x67, 0xfb, 0x6a, 0x34, 0x2c, 0x6a, 0x15, 0xb7, 0xc6, 0x7b, 0x0a, 0xe3, 0x5b, 0x9a, 0xcd, 0x84, + 0x2e, 0xab, 0x18, 0x8f, 0x08, 0x07, 0xe2, 0x25, 0xb6, 0x3d, 0x21, 0x0f, 0x59, 0xb7, 0x92, 0xaa, + 0x4f, 0x79, 0xcd, 0x60, 0x7e, 0x0a, 0x0a, 0x85, 0xff, 0x4d, 0x0d, 0x01, 0x0f, 0xe2, 0xcf, 0x97, + 0xee, 0x13, 0x75, 0xfc, 0x91, 0x80, 0x0a, 0x96, 0x86, 0x6c, 0x88, 0x09, 0xeb, 0x5c, 0x71, 0x6b, + 0x24, 0x51, 0xec, 0xd3, 0xa4, 0x83, 0x14, 0x47, 0x8b, 0xa0, 0x21, 0x95, 0x38, 0xf3, 0x0f, 0x56, + 0x81, 0xb5, 0x93, 0xfe, 0xe1, 0x63, 0x8f, 0x88, 0x6b, 0x85, 0x38, 0xce, 0x3c, 0x5c, 0xea, 0x46, + 0x73, 0xb8, 0x00, 0xd9, 0x5d, 0xa8, 0x3f, 0x76, 0xfd, 0xdc, 0x9e, 0x78, 0x90, 0x83, 0xd2, 0x29, + 0xb2, 0xbd, 0x86, 0x85, 0x58, 0x65, 0x33, 0xb7, 0x01, 0xab, 0x68, 0x84, 0xc5, 0xab, 0x7a, 0x77, + 0x8e, 0x4b, 0xf2, 0x27, 0x3d, 0x44, 0x3e, 0xa4, 0x4e, 0x19, 0x20, 0xde, 0xaa, 0xe2, 0x28, 0xf2, + 0x85, 0x86, 0xa6, 0x92, 0x2a, 0xce, 0x88, 0xae, 0x9f, 0xfe, 0xff, 0xac, 0x1a, 0xbf, 0x78, 0x69, + 0xe4, 0x98, 0xb5, 0xa1, 0x54, 0x97, 0x05, 0x25, 0x70, 0x3e, 0x67, 0x00, 0x96, 0xc5, 0xe0, 0x39, + 0x9c, 0x95, 0x92, 0x7d, 0xd7, 0x23, 0x83, 0xb9, 0xe2, 0xf3, 0xbb, 0x65, 0x98, 0xcc, 0xda, 0x47, + 0xf2, 0xd3, 0x59, 0x43, 0x34, 0x92, 0x32, 0x03, 0x70, 0x5f, 0x5f, 0xcd, 0x8c, 0xba, 0xc6, 0x97, + 0x48, 0x20, 0x18, 0x8e, 0xe2, 0xfc, 0x96, 0xc9, 0x6a, 0x4a, 0xcf, 0x4c, 0xf8, 0x68, 0x55, 0x3c, + 0x80, 0x8f, 0x69, 0x41, 0xe2, 0xf1, 0x08, 0x90, 0xe4, 0xa0, 0xf4, 0x63, 0x04, 0x4f, 0x64, 0x16, + 0xfc, 0xd5, 0x32, 0xf0, 0x87, 0x57, 0x60, 0x28, 0x85, 0xfc, 0x1f, 0x8c, 0x42, 0xec, 0xc1, 0x41, + 0x93, 0x32, 0x0b, 0x4b, 0x8e, 0xbc, 0x18, 0xc7, 0x15, 0xd4, 0xe1, 0x99, 0x3f, 0x69, 0x74, 0x05, + 0x44, 0xd1, 0xd7, 0x83, 0xc0, 0x01, 0x00, 0x34, 0x0e, 0x44, 0x56, 0xf5, 0xe2, 0x6c, 0xfe, 0x26, + 0xfb, 0x10, 0x2a, 0xfc, 0xea, 0xb6, 0x1f, 0xef, 0x62, 0xbe, 0x39, 0x0d, 0xa2, 0xfc, 0xea, 0x72, + 0x2d, 0xa6, 0x1e, 0x5c, 0x25, 0x0f, 0xcc, 0xe6, 0xad, 0xc5, 0xe6, 0x53, 0xc9, 0x1c, 0x46, 0x4a, + 0x89, 0xaf, 0x58, 0xf9, 0xa3, 0x09, 0x0b, 0x6e, 0xdf, 0x29, 0xcd, 0xfc, 0x4c, 0xb8, 0x9b, 0x3e, + 0x0e, 0x5b, 0xdb, 0x4e, 0x4b, 0x82, 0x36, 0x7b, 0x01, 0xe9, 0x83, 0x75, 0x5a, 0xfc, 0xe5, 0x90, + 0xc3, 0xe9, 0xc2, 0x6f, 0x15, 0x8f, 0x01, 0xc5, 0x8a, 0x0a, 0xea, 0x73, 0x02, 0xc0, 0xa4, 0x7a, + 0x18, 0x32, 0x30, 0xb9, 0x05, 0xb7, 0x03, 0x02, 0xef, 0xac, 0x2f, 0xdc, 0x5c, 0x40, 0x2a, 0x56, + 0x0b, 0xe5, 0xe3, 0x70, 0x85, 0x88, 0x1d, 0xd9, 0x7d, 0xa0, 0x40, 0x8d, 0x37, 0x85, 0xdf, 0xd0, + 0xca, 0xd6, 0x1f, 0xe7, 0x67, 0xfa, 0xc5, 0xb8, 0x92, 0xdd, 0x4f, 0x26, 0x4d, 0x77, 0xbe, 0x51, + 0xa8, 0x0b, 0x1d, 0x2c, 0xb4, 0x52, 0x33, 0x8d, 0x95, 0xaf, 0xf1, 0xbd, 0x6e, 0x91, 0xde, 0xac, + 0xf6, 0xba, 0x0a, 0x5c, 0x9b, 0x67, 0x20, 0x21, 0xd1, 0x33, 0xf7, 0x0f, 0xf4, 0xb1, 0x2a, 0x6b, + 0x5b, 0x30, 0x31, 0x01, 0x1d, 0xb3, 0x10, 0xec, 0xef, 0x05, 0x24, 0x72, 0xd6, 0xb5, 0x14, 0x48, + 0xef, 0xc7, 0x93, 0xf8, 0xf4, 0x76, 0x9a, 0x24, 0x01, 0xe3, 0x26, 0xca, 0x30, 0xa0, 0xc5, 0x1c, + 0x7e, 0xc2, 0x19, 0x7a, 0x87, 0xf9, 0x1d, 0xd3, 0xa4, 0xae, 0x81, 0xb3, 0x06, 0x2f, 0xbd, 0xc3, + 0xd5, 0xb6, 0xd7, 0xa7, 0x82, 0x8d, 0xab, 0x0e, 0x34, 0x9e, 0xe2, 0x37, 0x2b, 0x0b, 0x49, 0x94, + 0x1f, 0x25, 0x33, 0x27, 0xdf, 0x15, 0x3e, 0x2c, 0x90, 0x60, 0x19, 0x28, 0xcc, 0xd1, 0x0f, 0xc8, + 0x67, 0x5e, 0x5c, 0x63, 0x42, 0x14, 0x7c, 0xfb, 0x22, 0x21, 0x43, 0x7f, 0x31, 0x3a, 0xa5, 0xe4, + 0x87, 0x75, 0xfe, 0x08, 0x45, 0xa7, 0x32, 0xd9, 0x5f, 0x54, 0x93, 0x64, 0xce, 0xaf, 0xca, 0x4a, + 0x1e, 0xd9, 0xde, 0x5a, 0x64, 0x9f, 0x77, 0x93, 0x49, 0x54, 0x7a, 0xa9, 0x96, 0xc0, 0x0e, 0xf4, + 0x0c, 0xc2, 0x43, 0x33, 0x42, 0x92, 0x3f, 0x11, 0x96, 0x8b, 0x50, 0x11, 0xa6, 0x9c, 0xe7, 0x38, + 0x40, 0xaa, 0x19, 0x56, 0x6e, 0x6e, 0x6a, 0xe6, 0x9f, 0xa4, 0xbe, 0x10, 0xc5, 0xf8, 0x72, 0xe0, + 0xaf, 0xec, 0x51, 0xa0, 0xd9, 0x28, 0x08, 0xe9, 0x16, 0x1c, 0x50, 0x97, 0xe7, 0x18, 0x38, 0xd0, + 0x05, 0x35, 0x49, 0x72, 0xfa, 0xe4, 0x7b, 0x6e, 0x52, 0x92, 0x41, 0x1d, 0xcd, 0x08, 0x79, 0xd7, + 0x75, 0xd8, 0x9e, 0x02, 0x70, 0xaf, 0x09, 0x6c, 0xac, 0x1c, 0x33, 0xa1, 0x7e, 0x56, 0xcd, 0xad, + 0x4e, 0x4d, 0xc8, 0xae, 0xa4, 0xac, 0xbf, 0x29, 0x52, 0xa0, 0x1e, 0x29, 0x76, 0x08, 0xc1, 0x2d, + 0x7f, 0xcf, 0x2a, 0x63, 0xde, 0xd0, 0x38, 0xa0, 0xf8, 0xf5, 0xc0, 0x0e, 0x1b, 0xce, 0x32, 0xe4, + 0x67, 0xa6, 0x9d, 0xf1, 0xb5, 0x02, 0x91, 0xb0, 0x4c, 0xbf, 0xf9, 0x38, 0x33, 0x47, 0xf8, 0x82, + 0x8f, 0x17, 0xc0, 0xd8, 0xa6, 0xe4, 0x0c, 0x85, 0xa7, 0xc2, 0x81, 0xf3, 0x99, 0x6e, 0x8c, 0x4b, + 0x40, 0x9e, 0x7c, 0x31, 0x13, 0x03, 0x36, 0x33, 0x0c, 0x95, 0xcd, 0xe3, 0x35, 0x4c, 0x73, 0x83, + 0x3d, 0x80, 0xaa, 0xa7, 0xbb, 0x15, 0x1b, 0x7e, 0xbd, 0x23, 0x31, 0xe7, 0x50, 0x51, 0xe0, 0x51, + 0xaf, 0xf1, 0x74, 0x2d, 0x4f, 0xa7, 0x6b, 0x81, 0x5a, 0x07, 0xd6, 0x0f, 0xb4, 0xdf, 0x95, 0x5d, + 0xf8, 0x7c, 0x47, 0xea, 0x0c, 0x90, 0x3d, 0x73, 0x2d, 0x05, 0x07, 0x50, 0xc9, 0x92, 0x6c, 0xdf, + 0xd3, 0xbc, 0xcc, 0xb0, 0x60, 0xfe, 0xf4, 0x6b, 0xc9, 0x9c, 0x1d, 0x99, 0x1f, 0x45, 0x66, 0xe9, + 0x66, 0xb3, 0xd8, 0x3f, 0x87, 0x32, 0x09, 0x0d, 0x8e, 0xe4, 0xb6, 0x68, 0xd8, 0x5c, 0x13, 0x58, + 0x16, 0x27, 0xa3, 0x9a, 0x51, 0x3a, 0x8a, 0xac, 0x03, 0x7e, 0x65, 0x32, 0x0e, 0xff, 0xb6, 0x2b, + 0x8f, 0xe1, 0x65, 0x03, 0x1d, 0x84, 0x31, 0x7b, 0x08, 0x29, 0x55, 0xa7, 0x1f, 0x1b, 0x95, 0x1d, + 0x5e, 0x68, 0x8f, 0x6f, 0xc7, 0x52, 0x55, 0x09, 0x8a, 0x8e, 0xff, 0xd3, 0x5b, 0x41, 0x60, 0xb8, + 0x3a, 0x05, 0x5b, 0xb9, 0xe0, 0xbe, 0x0f, 0xd8, 0xf7, 0x01, 0xb5, 0xeb, 0xc9, 0xed, 0x8e, 0xe4, + 0x85, 0x69, 0x18, 0xdd, 0xa1, 0x27, 0xf0, 0x9a, 0x13, 0x51, 0xe7, 0x22, 0xdf, 0x04, 0xcd, 0xc3, + 0xd9, 0xa8, 0x73, 0xdb, 0xe8, 0xb7, 0x39, 0x66, 0x9b, 0x36, 0x15, 0xad, 0x14, 0xad, 0x9d, 0xf0, + 0x64, 0x69, 0xa3, 0x6a, 0xbb, 0x59, 0xfb, 0xce, 0x00, 0xac, 0x23, 0xb4, 0x7f, 0x3a, 0xa2, 0xf9, + 0x55, 0x4b, 0x7b, 0x0f, 0x9d, 0x5a, 0x2b, 0xc7, 0x5e, 0xb7, 0xfb, 0x21, 0x10, 0xf4, 0x0d, 0x2e, + 0x62, 0xca, 0x7b, 0x30, 0x0f, 0xdf, 0xa7, 0xf3, 0xd2, 0xf4, 0x6c, 0xd8, 0x14, 0x76, 0x02, 0x3b, + 0x43, 0x59, 0xd7, 0xa9, 0x19, 0x81, 0x1d, 0x65, 0xe8, 0xc3, 0x9b, 0x69, 0xf2, 0xd4, 0x73, 0xf3, + 0xf8, 0x84, 0xaa, 0xf9, 0x1e, 0xa9, 0x1e, 0xcd, 0x84, 0xc4, 0x45, 0xa6, 0x34, 0xf2, 0x8a, 0x93, + 0x3b, 0xb6, 0x2b, 0xc8, 0x49, 0x48, 0x1c, 0xd9, 0x70, 0x8e, 0xf2, 0x07, 0x2b, 0xf5, 0x22, 0x63, + 0x3f, 0x0c, 0x2b, 0xb7, 0xd6, 0x8a, 0x6f, 0x64, 0x41, 0x33, 0x7a, 0xd7, 0x02, 0x13, 0x50, 0xec, + 0x36, 0xa9, 0x6a, 0x31, 0x26, 0xe3, 0x00, 0xa7, 0x67, 0xbb, 0xac, 0x22, 0xee, 0xbc, 0x33, 0xb0, + 0x4f, 0xdf, 0x2b, 0x36, 0xdf, 0x8f, 0x1a, 0x6a, 0xc5, 0x21, 0x78, 0xd0, 0x8c, 0x5c, 0x71, 0xe5, + 0xde, 0xa3, 0x85, 0x39, 0x5b, 0x62, 0x3f, 0xea, 0xae, 0x03, 0x14, 0x67, 0x4e, 0xc7, 0x9b, 0x4a, + 0x5d, 0x26, 0xca, 0x1f, 0xdf, 0xa0, 0x8f, 0x18, 0x2b, 0xf4, 0x2d, 0x4a, 0xd3, 0x9c, 0x07, 0x7c, + 0xb7, 0xa6, 0x1e, 0xcb, 0xb6, 0x48, 0x02, 0x79, 0x6a, 0xf3, 0x67, 0xf4, 0xe2, 0xe7, 0x5f, 0x0e, + 0x3a, 0x27, 0xb5, 0xff, 0xc4, 0xef, 0x5b, 0xf6, 0x02, 0x64, 0x73, 0x94, 0x8c, 0x50, 0x29, 0x86, + 0xcc, 0x02, 0x6e, 0xc4, 0x70, 0xa8, 0x36, 0xc9, 0x3f, 0x32, 0xc3, 0x1d, 0x21, 0x54, 0x64, 0x9d, + 0xdc, 0x71, 0x30, 0xd3, 0x97, 0x4c, 0x4c, 0xd2, 0xfa, 0xb9, 0x80, 0x11, 0x12, 0x47, 0xa3, 0x5d, + 0x85, 0x61, 0xbe, 0x6c, 0x8c, 0xdc, 0x12, 0x59, 0x1d, 0xbb, 0x81, 0xe6, 0x5e, 0x99, 0xf9, 0x78, + 0xce, 0xe1, 0x8b, 0x4f, 0x6a, 0x01, 0xce, 0xb4, 0xc1, 0xb0, 0xf8, 0x50, 0x4c, 0x4d, 0x48, 0x1e, + 0xea, 0x94, 0x6f, 0xab, 0x26, 0xf8, 0x0c, 0x74, 0xd2, 0xd3, 0x75, 0x6a, 0x83, 0x96, 0xfd, 0xb4, + 0x5e, 0xfb, 0x06, 0x63, 0xf7, 0x1c, 0xa9, 0x15, 0xc9, 0x72, 0xc2, 0xf7, 0x36, 0x03, 0x66, 0xca, + 0x66, 0x3b, 0x8e, 0x39, 0x59, 0x51, 0x27, 0x87, 0xe7, 0xbb, 0x98, 0xc2, 0xb0, 0xe6, 0x1c, 0xb9, + 0x05, 0xb6, 0xde, 0x55, 0xbb, 0xb8, 0xff, 0x42, 0x79, 0xf1, 0xa3, 0x09, 0xa6, 0xe2, 0xc9, 0xa5, + 0x58, 0x42, 0x9a, 0xdb, 0x08, 0xd3, 0x29, 0x17, 0xc2, 0x91, 0x10, 0xdf, 0x3a, 0xb3, 0x41, 0x3a, + 0x27, 0x73, 0xf7, 0xc7, 0xd9, 0xa4, 0x58, 0xef, 0xd2, 0xcd, 0x2e, 0xe1, 0x42, 0xd4, 0x05, 0x7e, + 0x96, 0x8b, 0x26, 0x99, 0x7c, 0xfc, 0x34, 0x33, 0x18, 0x3b, 0x29, 0x71, 0x3f, 0x39, 0x7a, 0x4c, + 0xf0, 0x01, 0x20, 0xe0, 0x44, 0x5a, 0x88, 0xb6, 0xcc, 0xb6, 0xcd, 0x96, 0x8a, 0x1f, 0x9e, 0xcb, + 0x3c, 0x7f, 0x7e, 0x1a, 0x2c, 0xbf, 0x2a, 0xda, 0xd1, 0x91, 0x53, 0x20, 0x00, 0x10, 0xb4, 0x83, + 0x78, 0x8f, 0xeb, 0xc1, 0x0f, 0xe2, 0x10, 0x14, 0x5d, 0x27, 0x3a, 0x3d, 0x5e, 0x3e, 0x3d, 0xe5, + 0x7c, 0x84, 0xaa, 0x7c, 0x6a, 0xa8, 0x3d, 0x86, 0x0a, 0x79, 0xcc, 0xa1, 0x09, 0x2e, 0x96, 0x41, + 0x41, 0xc5, 0xce, 0x3e, 0x9d, 0x93, 0x20, 0xb0, 0x7a, 0x53, 0xfd, 0x10, 0xba, 0x2f, 0xe4, 0x0f, + 0xfd, 0xbf, 0x55, 0x23, 0x2b, 0x3a, 0x2d, 0xaa, 0x7e, 0xf1, 0xbc, 0x6d, 0x93, 0x57, 0xc7, 0x1b, + 0xd4, 0x28, 0x03, 0x8f, 0xae, 0x3c, 0x90, 0xb2, 0xb1, 0xff, 0x2c, 0x40, 0xa2, 0xd4, 0x0a, 0x55, + 0xde, 0xeb, 0xf7, 0x85, 0xad, 0x6e, 0x13, 0x6e, 0x55, 0x53, 0x06, 0xf1, 0x37, 0x2e, 0x50, 0x78, + 0xe0, 0x6f, 0x27, 0xc1, 0xbe, 0xc5, 0x81, 0xb3, 0x52, 0xd5, 0xc0, 0xe9, 0x98, 0xf5, 0x74, 0x5b, + 0x17, 0xdd, 0x84, 0xbc, 0xed, 0x06, 0x2c, 0xa3, 0xa4, 0x48, 0xc9, 0xf1, 0xa1, 0x9d, 0xf2, 0x48, + 0x23, 0x59, 0x09, 0xd5, 0x88, 0xf1, 0x79, 0xa2, 0x03, 0xe6, 0x8d, 0xe6, 0x3a, 0xb9, 0xd3, 0xeb, + 0xcb, 0xa6, 0x13, 0xd0, 0xef, 0xe3, 0x11, 0x71, 0x0e, 0x1b, 0xf3, 0xd3, 0xa9, 0xc3, 0xfb, 0xc6, + 0xbd, 0xf8, 0xd8, 0x99, 0x41, 0x81, 0x6f, 0xe8, 0x09, 0x7d, 0x0a, 0xcd, 0x91, 0xc0, 0xa2, 0x38, + 0x42, 0x5c, 0x53, 0x19, 0x02, 0x5e, 0x21, 0xab, 0xa1, 0xf1, 0xe8, 0x0d, 0xf0, 0x6d, 0x65, 0xab, + 0x4d, 0x39, 0xa4, 0x05, 0xda, 0x30, 0xc4, 0x4c, 0x94, 0x3a, 0xd8, 0x49, 0x00, 0x39, 0x85, 0xe4, + 0x91, 0x55, 0xf9, 0x40, 0x08, 0x22, 0x04, 0x1a, 0xa5, 0xe2, 0x48, 0x3d, 0x10, 0x76, 0xb4, 0x25, + 0x7f, 0x12, 0xb2, 0xfb, 0xda, 0xa5, 0xa9, 0x18, 0x28, 0x91, 0x1d, 0x86, 0x0f, 0xda, 0x10, 0x53, + 0xa9, 0x99, 0xc1, 0xc8, 0x02, 0x41, 0x3a, 0x42, 0xdc, 0x55, 0x21, 0xca, 0x6e, 0x8a, 0x75, 0x5b, + 0xe1, 0x26, 0xdf, 0x16, 0x48, 0x14, 0xc7, 0x01, 0xad, 0x2f, 0x75, 0x49, 0x64, 0x44, 0xff, 0x5a, + 0xc6, 0x70, 0x89, 0x10, 0x79, 0xac, 0x0e, 0x2f, 0xaf, 0x6d, 0x57, 0xf5, 0x59, 0x6c, 0x79, 0x1b, + 0x9d, 0x4c, 0x39, 0xb3, 0xa5, 0xbf, 0xb6, 0xe0, 0x78, 0x76, 0x81, 0x4f, 0xde, 0xea, 0xa0, 0xdd, + 0x63, 0x25, 0x7c, 0x4f, 0x1d, 0x53, 0x2d, 0x2d, 0x4d, 0x61, 0x72, 0x86, 0x07, 0x6e, 0xd3, 0x23, + 0xe3, 0x79, 0xc4, 0x27, 0xc5, 0xfe, 0x5d, 0x05, 0xb1, 0xe3, 0x45, 0x1b, 0x6c, 0xd7, 0x1e, 0x8f, + 0x62, 0xc2, 0x85, 0x0d, 0x2c, 0xbe, 0x25, 0xc5, 0x38, 0xe9, 0xa2, 0x80, 0x34, 0x4f, 0x4e, 0x30, + 0xff, 0xaf, 0x16, 0x4c, 0x8b, 0xd0, 0xb1, 0x0e, 0x3f, 0x4e, 0xf9, 0x0d, 0x4e, 0x1d, 0x95, 0x49, + 0x66, 0xcf, 0xa0, 0x8f, 0xa3, 0xf6, 0x35, 0xfa, 0x88, 0xa1, 0xf9, 0xfc, 0x34, 0x71, 0xd6, 0xfe, + 0xbc, 0x21, 0x6f, 0xbe, 0xc4, 0xca, 0xd7, 0x85, 0xa3, 0x65, 0x10, 0x5c, 0x46, 0xc9, 0xbd, 0xce, + 0xbf, 0xcc, 0x4c, 0x3c, 0x7e, 0x2a, 0x28, 0x09, 0x6a, 0x73, 0x16, 0x35, 0xf7, 0xe3, 0x4e, 0x8a, + 0xbb, 0x7a, 0x54, 0x2c, 0xe1, 0x18, 0x1c, 0x90, 0x14, 0xe7, 0x5a, 0xe8, 0xd9, 0xc9, 0x29, 0x20, + 0x12, 0x5e, 0x0a, 0xcf, 0xdc, 0xcd, 0x16, 0x86, 0xde, 0x72, 0x0e, 0x41, 0x52, 0x91, 0x74, 0x4c, + 0x68, 0x50, 0xc1, 0x91, 0xcc, 0x92, 0xca, 0x42, 0x8a, 0x6a, 0x1a, 0xfd, 0x37, 0x70, 0x61, 0xab, + 0x18, 0x21, 0x07, 0x0e, 0xc5, 0x62, 0x02, 0xc8, 0xf8, 0xe5, 0xa3, 0x94, 0x38, 0xff, 0x40, 0xbf, + 0xee, 0x77, 0xa1, 0x5f, 0x19, 0x91, 0x26, 0x72, 0xc0, 0x32, 0x1b, 0x8a, 0xab, 0xc3, 0x2a, 0x00, + 0x50, 0xee, 0xd9, 0xc9, 0xa4, 0x07, 0x04, 0x7c, 0xa1, 0xd7, 0xbb, 0xba, 0x46, 0x64, 0xbc, 0x07, + 0x00, 0x30, 0x02, 0x1d, 0xe4, 0x64, 0xc9, 0x0d, 0x2a, 0xfc, 0x3a, 0xdb, 0xeb, 0x73, 0x54, 0x2a, + 0x97, 0x48, 0xa3, 0x06, 0xe7, 0x36, 0x1c, 0xae, 0xbb, 0xe2, 0x3a, 0xa7, 0x4f, 0xa4, 0x39, 0x67, + 0xc3, 0xab, 0x1f, 0x13, 0x30, 0xa2, 0x5c, 0x49, 0x52, 0x04, 0xf5, 0x46, 0x74, 0x50, 0xae, 0xa8, + 0xd3, 0xae, 0x33, 0x84, 0x9f, 0x8c, 0x27, 0xfc, 0x42, 0xa4, 0x44, 0x4f, 0x2d, 0xa2, 0xb9, 0x84, + 0x43, 0x46, 0x87, 0x6b, 0x4e, 0xb3, 0xa4, 0x47, 0x5c, 0xd1, 0xc2, 0xac, 0x0f, 0x34, 0x99, 0x00, + 0xfc, 0xc9, 0xab, 0x85, 0x0e, 0x49, 0x9f, 0xf4, 0x95, 0x7f, 0xc3, 0x8f, 0x35, 0xd0, 0x3c, 0xbe, + 0x7c, 0xbc, 0x2d, 0xe4, 0xd7, 0x03, 0x62, 0x86, 0xd8, 0x4d, 0x3d, 0x65, 0xc0, 0xa3, 0x7d, 0xc1, + 0x83, 0x70, 0xd0, 0x3a, 0x1b, 0xd6, 0x32, 0x46, 0xf4, 0xb6, 0x95, 0x09, 0xf7, 0xca, 0x71, 0xa8, + 0x05, 0x7b, 0xbb, 0xcb, 0x8e, 0x8f, 0x11, 0x79, 0x1a, 0xd1, 0xdd, 0x41, 0x3f, 0x95, 0x2b, 0xdf, + 0x31, 0x11, 0xa2, 0xe4, 0x56, 0x04, 0x11, 0x40, 0x68, 0x6b, 0xa7, 0x22, 0xa3, 0xb7, 0x7a, 0x95, + 0x2d, 0xa7, 0xd3, 0x61, 0x68, 0xb5, 0x26, 0x82, 0x8f, 0xb6, 0x21, 0xb3, 0xae, 0x12, 0x1c, 0xa6, + 0x22, 0x2f, 0xd2, 0x5e, 0x28, 0x14, 0x01, 0x94, 0xb9, 0x56, 0x88, 0x9f, 0x56, 0xd0, 0xee, 0x02, + 0xd3, 0x58, 0x6c, 0x9d, 0xc0, 0x0a, 0xf8, 0x0b, 0xdf, 0xea, 0xf0, 0xf9, 0xe5, 0xbb, 0x64, 0x46, + 0x29, 0x67, 0xa8, 0xaa, 0xb0, 0xb4, 0x24, 0xb2, 0x85, 0x20, 0x14, 0x42, 0x73, 0xe0, 0x53, 0xed, + 0xa0, 0x0f, 0x23, 0x7f, 0xd0, 0x9e, 0x98, 0xd2, 0x69, 0x64, 0x9b, 0xb1, 0x9c, 0xcd, 0x06, 0x8f, + 0x64, 0x52, 0x45, 0x24, 0x13, 0x35, 0x34, 0xbf, 0x52, 0xff, 0x4a, 0x1f, 0x96, 0x6a, 0xc5, 0x38, + 0xb3, 0x50, 0xf6, 0xe3, 0xb0, 0x7b, 0x3f, 0x3e, 0x67, 0xa7, 0x5b, 0x4e, 0x91, 0x27, 0xb5, 0x46, + 0x71, 0x0c, 0x50, 0xb1, 0xfb, 0xb5, 0x90, 0x9a, 0x8d, 0xa5, 0x7b, 0x36, 0x11, 0x97, 0x56, 0xd8, + 0x31, 0x2c, 0x54, 0xe0, 0x12, 0x68, 0x1e, 0x86, 0x8c, 0x10, 0x36, 0xce, 0x12, 0x3b, 0xad, 0x8b, + 0xf1, 0x45, 0x97, 0xb8, 0x76, 0x19, 0x38, 0x99, 0x72, 0x87, 0x78, 0x1d, 0x6e, 0xe6, 0x75, 0x70, + 0x05, 0x3b, 0x1e, 0xfb, 0xe8, 0xba, 0x94, 0x67, 0x6e, 0x3e, 0x32, 0x86, 0xa3, 0x77, 0x07, 0xfc, + 0xa1, 0x05, 0x03, 0x97, 0x72, 0x7b, 0x9b, 0x8e, 0xd0, 0x63, 0x5a, 0xc4, 0x58, 0x1b, 0x5d, 0x95, + 0xe9, 0x49, 0x80, 0x7a, 0xfc, 0xcb, 0x08, 0xa4, 0x4d, 0xf6, 0x5d, 0x73, 0x77, 0xe1, 0x19, 0x1d, + 0xaf, 0x67, 0xa8, 0x6e, 0x37, 0xa9, 0x19, 0xe7, 0xa0, 0x17, 0x86, 0x62, 0x13, 0xde, 0x48, 0x81, + 0x72, 0x3b, 0xc2, 0xba, 0xdb, 0x4c, 0x9b, 0x0b, 0xab, 0x10, 0x2c, 0xf9, 0xc1, 0x0e, 0xc4, 0x2f, + 0x16, 0x35, 0x26, 0x91, 0xf2, 0xf8, 0x33, 0xc4, 0x01, 0x46, 0x3e, 0xb3, 0x21, 0x66, 0x62, 0xf7, + 0x5e, 0xae, 0x53, 0x7e, 0xdf, 0x62, 0xad, 0x96, 0x58, 0xc5, 0x52, 0x46, 0xb4, 0x13, 0x6a, 0x9f, + 0x69, 0x32, 0x55, 0xc8, 0xd4, 0xcd, 0x12, 0xa4, 0x6a, 0x7d, 0x31, 0x6a, 0x6e, 0x13, 0x56, 0xfc, + 0x8d, 0x2c, 0xe8, 0xf4, 0x54, 0x83, 0xaa, 0x2a, 0x00, 0xfd, 0xdd, 0xee, 0x95, 0x27, 0xbe, 0xcf, + 0x58, 0xb1, 0xa5, 0xdf, 0x1e, 0x2b, 0x18, 0x98, 0x3c, 0x6e, 0x1f, 0x5e, 0x93, 0xdf, 0x90, 0x2c, + 0x7d, 0xae, 0x89, 0xa7, 0x56, 0x59, 0x27, 0x5c, 0x15, 0x22, 0xf9, 0xf4, 0xdc, 0x71, 0x00, 0xfe, + 0x69, 0x9c, 0x34, 0x56, 0x07, 0x10, 0x1c, 0x47, 0x47, 0x6c, 0xa0, 0x43, 0x74, 0x68, 0x89, 0x8c, + 0x31, 0xd2, 0x69, 0x11, 0x94, 0x7f, 0x45, 0x01, 0x5a, 0x0e, 0x50, 0x75, 0xf6, 0x70, 0xa5, 0x5f, + 0xc1, 0x78, 0x45, 0xd8, 0x1d, 0x2b, 0xb6, 0xbc, 0x0f, 0xb8, 0xab, 0x13, 0x40, 0xf6, 0xb5, 0x43, + 0x82, 0x7d, 0xe5, 0x53, 0x63, 0x6a, 0xf7, 0xed, 0xf4, 0xf0, 0x56, 0x75, 0xdd, 0xc0, 0x8e, 0xa0, + 0x68, 0x66, 0xf1, 0xce, 0x08, 0x73, 0xbb, 0xd4, 0xff, 0x3e, 0x10, 0xbb, 0xca, 0x51, 0x48, 0x44, + 0xe7, 0x76, 0x37, 0x98, 0x0e, 0x80, 0xa5, 0x00, 0x46, 0xb3, 0x22, 0x02, 0x62, 0xe7, 0xef, 0x24, + 0x3a, 0xeb, 0x9c, 0x53, 0x30, 0x4f, 0x39, 0x38, 0x0b, 0xc0, 0x4c, 0x7b, 0xbf, 0xbf, 0xb4, 0xc8, + 0xf6, 0x5e, 0x69, 0x26, 0xfb, 0xdb, 0x0d, 0x80, 0x94, 0xd3, 0x4e, 0xa0, 0x51, 0x5b, 0xb2, 0x8d, + 0x5c, 0x31, 0xc9, 0x0f, 0x8c, 0xf5, 0xa9, 0x7f, 0x1b, 0xe8, 0x78, 0x51, 0x41, 0xdb, 0xf6, 0x40, + 0x62, 0x5d, 0x9b, 0x49, 0xbe, 0x09, 0x03, 0xc4, 0x43, 0xcc, 0xb1, 0xc5, 0xf8, 0x14, 0x9f, 0x05, + 0xa0, 0x4c, 0x93, 0x49, 0x3c, 0x7a, 0x05, 0xee, 0x35, 0x91, 0x38, 0xc7, 0xb0, 0x8a, 0xea, 0x1b, + 0x01, 0xcc, 0xc7, 0xb5, 0x0e, 0x02, 0xa8, 0xe2, 0xa3, 0x01, 0x81, 0x6c, 0x0a, 0x6a, 0xc3, 0x0d, + 0x0d, 0x4d, 0x58, 0x41, 0xcb, 0xfc, 0x36, 0x1e, 0x15, 0xf4, 0x89, 0xca, 0x1c, 0xbc, 0xd4, 0xd8, + 0x70, 0x36, 0x1d, 0x6d, 0x30, 0x7b, 0x28, 0x8d, 0x94, 0x4d, 0x8e, 0x02, 0xf3, 0x06, 0x44, 0x39, + 0xf4, 0xfe, 0xde, 0x2a, 0x45, 0xf2, 0xb5, 0xcb, 0x44, 0xe2, 0xd7, 0x41, 0x4f, 0xfb, 0x0a, 0x86, + 0xbf, 0x47, 0x21, 0x70, 0x17, 0x4d, 0x33, 0x5e, 0xd7, 0x00, 0x13, 0x47, 0xa3, 0x56, 0x90, 0x04, + 0x43, 0x5c, 0xf8, 0x61, 0x2b, 0xf8, 0x83, 0xe5, 0x5b, 0x48, 0x82, 0x0c, 0xbb, 0x92, 0xf5, 0xdc, + 0x03, 0xd3, 0x9b, 0xc6, 0x12, 0xb7, 0x34, 0x65, 0x28, 0xac, 0x45, 0x11, 0x61, 0x73, 0x58, 0x87, + 0xb2, 0xc7, 0x2c, 0xd8, 0x79, 0x28, 0xa5, 0x1f, 0xd3, 0x0b, 0xb6, 0x7a, 0x30, 0xa1, 0x9c, 0x25, + 0x23, 0x7b, 0x74, 0x17, 0xc4, 0xc6, 0x7c, 0xa9, 0x66, 0xeb, 0xe1, 0x2d, 0x74, 0x82, 0xc7, 0xe8, + 0xb3, 0xa6, 0xcd, 0x92, 0x15, 0x87, 0x0c, 0x2a, 0x0b, 0x04, 0x64, 0xf9, 0x3f, 0x81, 0x95, 0x5c, + 0xb2, 0x1c, 0x6d, 0xf7, 0xa4, 0x0b, 0xb9, 0xcd, 0xfe, 0x05, 0x9c, 0x4a, 0x66, 0xc3, 0xef, 0x0e, + 0x6b, 0xb9, 0xb2, 0x56, 0x1b, 0x82, 0x2f, 0xc1, 0x46, 0xbe, 0x31, 0xcb, 0x50, 0xdf, 0xa6, 0xe5, + 0xa8, 0x97, 0x2e, 0x13, 0xe2, 0xe3, 0x1d, 0x84, 0xa7, 0x4b, 0x45, 0x35, 0xb9, 0x6c, 0xa8, 0x1f, + 0x56, 0x3f, 0x30, 0xa8, 0x6c, 0x32, 0xb8, 0xae, 0xd0, 0x95, 0xd0, 0x5b, 0x8d, 0xec, 0x37, 0xb7, + 0xa7, 0x9f, 0xe6, 0x4f, 0xdc, 0xd1, 0x4a, 0xf9, 0xf0, 0x04, 0x6e, 0x93, 0x57, 0xbb, 0xbe, 0xf9, + 0xd2, 0x37, 0x2e, 0x14, 0x14, 0x54, 0xbe, 0xad, 0x9f, 0xad, 0xdd, 0x1c, 0x8e, 0x07, 0x6f, 0xb7, + 0x28, 0xc7, 0xe7, 0x5a, 0x5d, 0x70, 0x52, 0x96, 0x14, 0x5f, 0x44, 0xcc, 0xa0, 0xac, 0x0b, 0x2c, + 0xac, 0xe6, 0xe8, 0xba, 0x7a, 0x50, 0x29, 0x86, 0x88, 0xe7, 0x0d, 0x5c, 0xef, 0xa4, 0x87, 0x1b, + 0x71, 0xfd, 0xe9, 0x68, 0xb1, 0xae, 0xf6, 0xcd, 0xd7, 0xdf, 0x2a, 0xbf, 0x46, 0x45, 0xf0, 0x45, + 0xae, 0x1a, 0xef, 0x89, 0x31, 0x17, 0x1d, 0x37, 0xba, 0xed, 0x0a, 0x0c, 0xf5, 0x9f, 0x40, 0x4f, + 0x33, 0x80, 0x3a, 0xb4, 0x88, 0xa4, 0x30, 0x25, 0xe8, 0x4f, 0x03, 0xb4, 0x37, 0x12, 0x9d, 0x52, + 0x3e, 0xd5, 0xb8, 0x24, 0xdc, 0xd1, 0x35, 0xe6, 0xda, 0xa1, 0xd2, 0x02, 0x04, 0x58, 0x07, 0xdd, + 0xd0, 0x6a, 0x7b, 0xd6, 0x47, 0x0c, 0xaa, 0xcc, 0xe9, 0xf6, 0x11, 0xd3, 0xbd, 0xf7, 0x09, 0xab, + 0xd2, 0xf3, 0xd1, 0xda, 0x9c, 0xf0, 0x2f, 0x20, 0x14, 0x14, 0x78, 0xf5, 0x31, 0x7b, 0x19, 0x64, + 0x13, 0x1e, 0xbb, 0x18, 0x60, 0x1d, 0xcd, 0xa2, 0x52, 0x2e, 0x64, 0x79, 0xd2, 0xca, 0x81, 0xe5, + 0x6d, 0x4c, 0xe5, 0x52, 0xb5, 0x96, 0x0f, 0xc8, 0x80, 0x1a, 0x27, 0x69, 0x22, 0xef, 0x67, 0xde, + 0x7b, 0xf9, 0xaf, 0xfe, 0x34, 0x88, 0x1e, 0x2a, 0xb8, 0xbe, 0x10, 0xb7, 0x6e, 0xec, 0x73, 0x80, + 0x9d, 0xca, 0x48, 0xbd, 0xd3, 0xf7, 0x3d, 0xbb, 0xa8, 0x7c, 0x73, 0xbb, 0x1f, 0x2d, 0x1b, 0xd9, + 0x85, 0xf6, 0x16, 0x7e, 0xdd, 0x48, 0x87, 0x23, 0x95, 0xe3, 0x79, 0x07, 0xb9, 0xd9, 0x9f, 0xca, + 0x59, 0x2b, 0x7b, 0x82, 0x3e, 0x45, 0x00, 0x1f, 0xff, 0x01, 0x98, 0x56, 0x06, 0x0b, 0xc4, 0xe9, + 0x65, 0xf7, 0xac, 0x2a, 0x5d, 0x48, 0x9e, 0x6b, 0x02, 0x6a, 0x2d, 0xdf, 0x50, 0x87, 0x4b, 0x21, + 0x16, 0x74, 0x24, 0x99, 0xac, 0x2e, 0x11, 0x00, 0x44, 0xbb, 0x2e, 0x45, 0x65, 0xf7, 0x11, 0xd5, + 0xdb, 0xfc, 0x66, 0xed, 0xd9, 0x14, 0x54, 0x52, 0xc7, 0x44, 0xbb, 0x9b, 0x9b, 0x5d, 0x60, 0x69, + 0xbc, 0x43, 0xc3, 0x59, 0xdc, 0x99, 0xf5, 0x18, 0xdd, 0x92, 0x03, 0x24, 0xa8, 0xda, 0x5b, 0x91, + 0xc0, 0xf5, 0x51, 0x24, 0x8a, 0x75, 0x1b, 0x50, 0x86, 0x2d, 0x3a, 0xf7, 0x37, 0x36, 0x13, 0x1c, + 0x8c, 0x29, 0xae, 0xa1, 0x38, 0x5a, 0x89, 0x01, 0x01, 0x04, 0x57, 0x45, 0x54, 0x48, 0x01, 0x51, + 0x23, 0x84, 0x58, 0xb0, 0xd0, 0xdd, 0x6d, 0x49, 0x3e, 0xc9, 0x64, 0xa7, 0x46, 0x21, 0x17, 0x23, + 0x7e, 0xa2, 0x14, 0xab, 0x8b, 0xb5, 0x4b, 0x5a, 0x7d, 0x9e, 0x00, 0x5f, 0x56, 0x06, 0x86, 0x5f, + 0x5c, 0x7c, 0x04, 0xad, 0xb7, 0x14, 0x97, 0x25, 0xe0, 0x2a, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc9, 0xcd, 0x43, 0x2e, 0xde, 0xa8, 0x73, 0x19, 0xb8, 0xbd, 0xf5, 0xb4, 0x00, 0xd1, + 0x7c, 0xb0, 0xd4, 0x74, 0x3f, 0x21, 0x74, 0xc1, 0x50, 0x37, 0xc7, 0xfd, 0x9e, 0x5c, 0xdc, 0xe9, + 0x45, 0x86, 0x4c, 0x29, 0xe3, 0x15, 0x3f, 0x0c, 0x0f, 0x8d, 0xf0, 0x15, 0xdd, 0xa9, 0x02, 0x16, + 0x6c, 0xda, 0x01, 0x5a, 0xf9, 0x06, 0x33, 0x78, 0xfa, 0xdc, 0xc3, 0xcc, 0x19, 0xad, 0x25, 0xff, + 0x82, 0x25, 0x47, 0xea, 0x17, 0x04, 0x55, 0x5d, 0x56, 0x53, 0x69, 0x74, 0xd6, 0x2e, 0x91, 0xfc, + 0x3d, 0x6d, 0xcb, 0x39, 0x76, 0xf1, 0x08, 0x26, 0xba, 0xd9, 0x72, 0x21, 0xf4, 0x2d, 0x60, 0x2c, + 0x4f, 0x8e, 0x00, 0x3c, 0x99, 0x76, 0x4d, 0x0d, 0xda, 0x13, 0x9b, 0x31, 0x65, 0xda, 0x5d, 0xc4, + 0xbf, 0x97, 0x00, 0xc6, 0xa5, 0x63, 0xfc, 0xd0, 0x54, 0x3f, 0x54, 0x9e, 0x7b, 0x19, 0xd4, 0xcc, + 0x4c, 0xaf, 0x77, 0x33, 0xbb, 0x23, 0xe1, 0x95, 0x16, 0x4d, 0xde, 0xb6, 0xbf, 0xd4, 0x57, 0x8a, + 0x5d, 0x48, 0x12, 0x41, 0x31, 0xd3, 0x18, 0xc0, 0xdc, 0x23, 0xe2, 0xe6, 0xd5, 0x99, 0x50, 0xbe, + 0xa6, 0xe5, 0x9f, 0xe4, 0x90, 0xba, 0x1e, 0x9e, 0x26, 0xbd, 0x63, 0xcc, 0xb6, 0x4b, 0x36, 0x4d, + 0x91, 0x8c, 0x15, 0x65, 0x4b, 0x72, 0xa6, 0xda, 0xb9, 0x56, 0x7e, 0xf2, 0x57, 0xf2, 0x50, 0x2f, + 0xc2, 0xca, 0x84, +]]; From c3a8583903235196df21f3c03ff17ed1d20265cb Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 11 Nov 2024 21:59:31 +0100 Subject: [PATCH 067/230] Add a method to return the inner value (IssueBundle) of IssueData wrapper --- zebra-chain/src/orchard_zsa/issuance.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index d45f10253cd..4a3cb968926 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -27,6 +27,13 @@ use super::burn::ASSET_BASE_SIZE; #[derive(Clone, Debug, PartialEq, Eq)] pub struct IssueData(IssueBundle); +impl IssueData { + /// Returns a reference to the inner `IssueBundle`. + pub fn inner(&self) -> &IssueBundle { + &self.0 + } +} + impl From> for IssueData { fn from(inner: IssueBundle) -> Self { Self(inner) From 4855c25724fd15d8809304a933000766c90835dc Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 11 Nov 2024 22:02:36 +0100 Subject: [PATCH 068/230] Add more checks after deserializing issuance block in issuance_block test --- zebra-chain/src/orchard_zsa/tests/issuance.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/zebra-chain/src/orchard_zsa/tests/issuance.rs b/zebra-chain/src/orchard_zsa/tests/issuance.rs index 902af757adf..9dc90d881c7 100644 --- a/zebra-chain/src/orchard_zsa/tests/issuance.rs +++ b/zebra-chain/src/orchard_zsa/tests/issuance.rs @@ -1,4 +1,4 @@ -use crate::{block::Block, serialization::ZcashDeserialize}; +use crate::{block::Block, serialization::ZcashDeserialize, transaction::Transaction}; use super::vectors::BLOCKS; @@ -6,4 +6,20 @@ use super::vectors::BLOCKS; fn issuance_block() { let issuance_block = Block::zcash_deserialize(BLOCKS[0].as_ref()).expect("issuance block should deserialize"); + + for transaction in issuance_block.transactions { + if let Transaction::V6 { + orchard_zsa_issue_data, + .. + } = transaction.as_ref() + { + let issue_bundle = orchard_zsa_issue_data + .as_ref() + .expect("V6 transaction in the issuance test block has orchard_zsa_issue_data") + .inner(); + + assert_eq!(issue_bundle.actions().len(), 1); + assert_eq!(issue_bundle.actions()[0].notes().len(), 1); + } + } } From 87e4a637fac115f3f6315f5f3ee3d6a1b05ebaf8 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 17 Nov 2024 19:24:04 +0100 Subject: [PATCH 069/230] Rename orchard_zsa::tests::issuance_block to deserialize_blocks and add checks of deserialization of transfer and burn blocks --- zebra-chain/src/orchard_zsa/tests.rs | 2 +- .../tests/{issuance.rs => blocks.rs} | 8 +- .../src/orchard_zsa/tests/vectors/blocks.rs | 3554 +++++++++++++---- 3 files changed, 2858 insertions(+), 706 deletions(-) rename zebra-chain/src/orchard_zsa/tests/{issuance.rs => blocks.rs} (68%) diff --git a/zebra-chain/src/orchard_zsa/tests.rs b/zebra-chain/src/orchard_zsa/tests.rs index a9301a7461e..1c895a420d9 100644 --- a/zebra-chain/src/orchard_zsa/tests.rs +++ b/zebra-chain/src/orchard_zsa/tests.rs @@ -1,2 +1,2 @@ -mod issuance; +mod blocks; mod vectors; diff --git a/zebra-chain/src/orchard_zsa/tests/issuance.rs b/zebra-chain/src/orchard_zsa/tests/blocks.rs similarity index 68% rename from zebra-chain/src/orchard_zsa/tests/issuance.rs rename to zebra-chain/src/orchard_zsa/tests/blocks.rs index 9dc90d881c7..2828acb311c 100644 --- a/zebra-chain/src/orchard_zsa/tests/issuance.rs +++ b/zebra-chain/src/orchard_zsa/tests/blocks.rs @@ -3,9 +3,13 @@ use crate::{block::Block, serialization::ZcashDeserialize, transaction::Transact use super::vectors::BLOCKS; #[test] -fn issuance_block() { +fn deserialize_blocks() { let issuance_block = - Block::zcash_deserialize(BLOCKS[0].as_ref()).expect("issuance block should deserialize"); + Block::zcash_deserialize(BLOCKS[1].as_ref()).expect("issuance block should deserialize"); + let transfer_block = + Block::zcash_deserialize(BLOCKS[2].as_ref()).expect("transfer block should deserialize"); + let burn_block = + Block::zcash_deserialize(BLOCKS[3].as_ref()).expect("burn block should deserialize"); for transaction in issuance_block.transactions { if let Transaction::V6 { diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs index 222f1e3c201..db0eca9fb0b 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs @@ -1,703 +1,2851 @@ -pub(crate) const BLOCKS: [&[u8]; 1] = [&[ - 0x04, 0x00, 0x00, 0x00, 0x27, 0xe3, 0x01, 0x34, 0xd6, 0x20, 0xe9, 0xfe, 0x61, 0xf7, 0x19, 0x93, - 0xb2, 0xc2, 0x72, 0x75, 0x6a, 0xce, 0xec, 0xdc, 0xbf, 0xd3, 0xe5, 0x43, 0xf7, 0x30, 0xbc, 0x65, - 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, 0x76, 0xf9, 0x0e, - 0xd8, 0x11, 0x9f, 0x02, 0x77, 0x8a, 0xa0, 0x8d, 0x1a, 0x56, 0x79, 0x47, 0x66, 0x88, 0xbf, 0x6e, - 0x8e, 0x5a, 0x4f, 0x57, 0x00, 0x23, 0xde, 0x3e, 0xf1, 0x3a, 0x05, 0xe5, 0x9d, 0x2e, 0x94, 0x76, - 0x6a, 0x3c, 0x7a, 0x94, 0x88, 0x5d, 0x72, 0x57, 0x04, 0x56, 0x3c, 0x74, 0xd1, 0x7a, 0xbd, 0xf7, - 0x53, 0x53, 0xdb, 0x1a, 0xf2, 0xfa, 0x49, 0x4d, 0x3f, 0xa6, 0x0c, 0x20, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, - 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, 0xff, 0xff, 0xff, 0x02, 0x51, 0x00, - 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, - 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, - 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, - 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x64, 0x40, 0xa8, 0x86, 0x5d, 0x61, 0x39, 0xb3, 0x39, 0x62, 0x94, 0xee, 0x42, - 0xc5, 0xa6, 0x0b, 0x63, 0x57, 0xca, 0x65, 0x8b, 0xa6, 0x76, 0xf2, 0xd6, 0xda, 0x8e, 0x00, 0xcf, - 0x60, 0xe8, 0x33, 0xa4, 0x55, 0xec, 0x7c, 0x99, 0x0f, 0xda, 0xd2, 0x46, 0xc0, 0x5b, 0x4a, 0x8f, - 0xe5, 0x2c, 0x6a, 0xb7, 0x00, 0xca, 0x49, 0xb4, 0xda, 0x80, 0xd3, 0x3d, 0x4d, 0x83, 0x7a, 0xd1, - 0x3a, 0x21, 0x3f, 0xfe, 0x71, 0xf5, 0x04, 0xd3, 0xaf, 0xeb, 0x10, 0x9d, 0xc2, 0x0d, 0xbd, 0x3a, - 0x9b, 0x2d, 0xf7, 0x7c, 0xd3, 0x2c, 0x7e, 0x7b, 0xeb, 0xb7, 0xaf, 0x60, 0xe4, 0xd3, 0x41, 0x96, - 0xe7, 0x2c, 0x0a, 0xf8, 0x99, 0x89, 0xbd, 0x70, 0x79, 0x54, 0x3b, 0xc7, 0x66, 0x29, 0x91, 0x31, - 0x97, 0xa6, 0x53, 0xfe, 0x24, 0x70, 0xf9, 0xf2, 0x41, 0x81, 0xac, 0x79, 0x60, 0x43, 0x79, 0xed, - 0x42, 0xba, 0x25, 0xdd, 0xf0, 0x05, 0xe8, 0xff, 0x14, 0x9e, 0xe8, 0x34, 0x91, 0x5d, 0xc6, 0x9d, - 0x6a, 0x2f, 0xc5, 0x70, 0x55, 0x65, 0x01, 0xf3, 0x74, 0x6f, 0xe7, 0x37, 0x4a, 0x8f, 0x5d, 0x4d, - 0xb6, 0x4e, 0x3b, 0xab, 0xc5, 0xc9, 0xa2, 0x86, 0x28, 0x0e, 0xa6, 0x2d, 0xc0, 0xc4, 0x12, 0x74, - 0xe9, 0x39, 0x34, 0xa6, 0xd8, 0xbc, 0x24, 0xdf, 0x5a, 0x2b, 0x2d, 0xd3, 0xae, 0x62, 0x2f, 0x37, - 0x38, 0xcb, 0x41, 0x26, 0xa5, 0xae, 0xed, 0x94, 0x84, 0x51, 0xc2, 0xe7, 0xff, 0xbe, 0x27, 0x7b, - 0x37, 0x94, 0xc0, 0xb5, 0x17, 0x08, 0x0a, 0x00, 0xd4, 0x69, 0x74, 0x8f, 0x4e, 0x2c, 0xeb, 0x06, - 0x2f, 0x1d, 0x61, 0xdc, 0x70, 0xab, 0x97, 0xc9, 0xbd, 0x02, 0x68, 0xf0, 0xe1, 0x5e, 0xcb, 0x76, - 0x25, 0x2c, 0x2c, 0xd2, 0xf1, 0x8a, 0x03, 0xb3, 0x2f, 0x0b, 0x40, 0xa2, 0x56, 0xc4, 0x3a, 0xd0, - 0xf7, 0xc4, 0xef, 0x98, 0x52, 0x87, 0x54, 0x5b, 0x8e, 0xf8, 0xb3, 0x6e, 0x3d, 0x9e, 0xd6, 0x05, - 0xb9, 0x49, 0x54, 0x1b, 0xe0, 0xbc, 0xe7, 0x52, 0x71, 0x6c, 0x70, 0xdb, 0x0c, 0xf2, 0x06, 0x9e, - 0x80, 0x90, 0xde, 0x83, 0x0e, 0x8c, 0xee, 0xa3, 0x36, 0x99, 0xf0, 0xa8, 0x29, 0x58, 0x9e, 0xa8, - 0x4c, 0x90, 0x0d, 0x66, 0x06, 0xf9, 0x95, 0x21, 0x65, 0xa4, 0x90, 0x58, 0x9f, 0x61, 0x66, 0x25, - 0x8b, 0x7b, 0x13, 0xa1, 0x6b, 0x9c, 0xf4, 0x80, 0xfb, 0x34, 0xd1, 0x0f, 0x52, 0x2d, 0xbd, 0x2a, - 0xcd, 0x16, 0x7b, 0x7d, 0xd0, 0x6c, 0x4d, 0x2d, 0xbb, 0x51, 0x90, 0x7d, 0x4d, 0x38, 0xbe, 0x06, - 0x95, 0x18, 0xd4, 0x31, 0x6d, 0xa4, 0x67, 0xca, 0xe5, 0x35, 0x51, 0xaa, 0xb4, 0x33, 0x46, 0x67, - 0xc0, 0xa5, 0xb7, 0x07, 0x63, 0x64, 0xe8, 0x42, 0x8e, 0x81, 0xf4, 0xc4, 0xcb, 0xde, 0x44, 0xe8, - 0xf1, 0x80, 0xca, 0x7a, 0x70, 0x33, 0x64, 0xaa, 0x4d, 0x50, 0xaf, 0xf3, 0x24, 0x27, 0xc4, 0x23, - 0xfb, 0xf8, 0x47, 0x61, 0x83, 0x5c, 0x31, 0xeb, 0x69, 0x73, 0x64, 0x4c, 0xe3, 0x8e, 0x24, 0x40, - 0xd9, 0xe0, 0x46, 0x17, 0xbc, 0x0b, 0xa0, 0xcd, 0x8d, 0x14, 0x96, 0x57, 0x21, 0x71, 0x97, 0x9c, - 0xa7, 0x5b, 0x28, 0xb7, 0x5b, 0x71, 0xd2, 0x7b, 0x77, 0x83, 0x09, 0x3a, 0xc4, 0x9c, 0x37, 0x38, - 0xfb, 0xdf, 0xe1, 0xf9, 0xc7, 0x29, 0xe0, 0x50, 0xbb, 0xfd, 0x7b, 0xa1, 0x53, 0xe5, 0x3b, 0x85, - 0x61, 0x21, 0x66, 0xf0, 0xa2, 0xb7, 0x65, 0x77, 0xd4, 0x5f, 0x0f, 0xf8, 0x5f, 0x4c, 0x6a, 0x90, - 0x03, 0xc1, 0x2f, 0x8c, 0x95, 0xa4, 0x36, 0x88, 0x51, 0x43, 0xd9, 0xa8, 0x78, 0x7f, 0x36, 0xb2, - 0x27, 0x2f, 0x2c, 0xd0, 0x21, 0xdc, 0x6a, 0x3f, 0x34, 0xdf, 0xac, 0x94, 0xf2, 0x8f, 0x13, 0x2e, - 0x3d, 0x2a, 0x4a, 0xf0, 0xdc, 0xa4, 0x1c, 0xc8, 0x59, 0x7e, 0xa0, 0x88, 0x7c, 0x02, 0x06, 0xf1, - 0xbe, 0x5a, 0xae, 0xc4, 0xf7, 0x72, 0x46, 0x97, 0xd9, 0x4b, 0x47, 0x9f, 0x9b, 0x93, 0x93, 0x71, - 0x8d, 0x80, 0xf7, 0xaf, 0xc7, 0xf9, 0xc9, 0x84, 0xd5, 0x9e, 0x87, 0x0f, 0x64, 0x33, 0x1f, 0xd6, - 0xf5, 0x90, 0x2d, 0x3a, 0xc3, 0x59, 0xf5, 0x25, 0xe6, 0xa5, 0xda, 0xf4, 0x21, 0x24, 0x9d, 0xdb, - 0x69, 0x86, 0x93, 0xec, 0x7d, 0x9b, 0xfd, 0x71, 0x19, 0xab, 0x05, 0xb6, 0xfd, 0x5c, 0x6b, 0x17, - 0x7e, 0xe5, 0xc4, 0x10, 0x38, 0xd7, 0x9b, 0x84, 0x94, 0x0d, 0xf1, 0xf5, 0xe6, 0x79, 0x84, 0x3c, - 0x04, 0x84, 0x2c, 0x6a, 0x62, 0xcf, 0xd6, 0x2f, 0xd0, 0x1b, 0xcc, 0xc2, 0xc8, 0x2a, 0x67, 0x34, - 0x52, 0xae, 0x88, 0x48, 0x47, 0x5f, 0x61, 0x4d, 0xba, 0x6c, 0x53, 0xf1, 0x8b, 0x12, 0x54, 0xcc, - 0xf0, 0x77, 0x89, 0x72, 0x98, 0x97, 0xed, 0x2e, 0xfa, 0xef, 0x0b, 0x54, 0x69, 0x02, 0x69, 0x15, - 0xa6, 0x5f, 0x11, 0xed, 0x04, 0x58, 0x02, 0x46, 0xc4, 0xdc, 0x9c, 0xb6, 0xe1, 0xc8, 0xd8, 0xdc, - 0xa3, 0x99, 0xea, 0x17, 0x96, 0x74, 0x7b, 0x5f, 0xeb, 0x00, 0x02, 0x91, 0x04, 0x9e, 0xf4, 0xff, - 0x6d, 0x0b, 0x29, 0x82, 0x37, 0x1a, 0x4c, 0xa0, 0x71, 0x71, 0x20, 0xaf, 0xe4, 0x3b, 0x6e, 0x26, - 0xb1, 0x89, 0x56, 0xb3, 0xb6, 0x44, 0x2d, 0x2b, 0xb4, 0x6f, 0x22, 0xe4, 0x5d, 0xd8, 0x7d, 0x25, - 0x60, 0xe7, 0xf4, 0xab, 0x87, 0x0b, 0x97, 0x0a, 0xd4, 0x82, 0x48, 0x93, 0x0f, 0x1d, 0xcc, 0xc7, - 0x69, 0xee, 0xc7, 0xcf, 0x5d, 0x9b, 0xbe, 0x9f, 0x23, 0x4b, 0x06, 0x49, 0x88, 0xf5, 0xbd, 0xb5, - 0xc3, 0xed, 0x46, 0x2a, 0x17, 0xc8, 0x5c, 0x4e, 0xa4, 0x56, 0xf3, 0x62, 0x28, 0xe7, 0xd1, 0x66, - 0x15, 0x1c, 0xeb, 0x62, 0xc1, 0x64, 0xee, 0xb6, 0x98, 0x7a, 0x9e, 0x40, 0xaa, 0xa2, 0x7d, 0xca, - 0xb6, 0xf3, 0x82, 0x6d, 0x65, 0xfb, 0x82, 0x57, 0xd2, 0x64, 0xc8, 0xb8, 0x15, 0x1b, 0x68, 0x94, - 0x90, 0x7a, 0xd5, 0xd7, 0xe6, 0x42, 0x99, 0x6f, 0x46, 0xc8, 0x3d, 0x9e, 0x5d, 0x85, 0x00, 0x7b, - 0xed, 0x53, 0xde, 0x27, 0xa4, 0x66, 0x3f, 0xa3, 0xc2, 0xf8, 0x89, 0x69, 0x8a, 0xac, 0xcc, 0x15, - 0x5e, 0xdd, 0x63, 0xda, 0xe3, 0x5a, 0x1f, 0xe9, 0x81, 0x60, 0x20, 0x60, 0xc1, 0xf9, 0xbb, 0x71, - 0x87, 0x77, 0x79, 0xe0, 0x90, 0x3d, 0xef, 0x49, 0xa9, 0xf7, 0x66, 0x70, 0x6f, 0x80, 0x88, 0xbe, - 0x89, 0x73, 0x99, 0x3e, 0xb1, 0xf9, 0xd6, 0xe7, 0xb1, 0x9f, 0x3e, 0xfe, 0x39, 0xed, 0x36, 0x18, - 0xee, 0xc3, 0x41, 0xbb, 0x69, 0x9a, 0x8b, 0xb1, 0x13, 0x2d, 0xd5, 0xab, 0xb7, 0xb6, 0x3b, 0xed, - 0xdf, 0x5b, 0x08, 0xde, 0x7d, 0xe5, 0x5d, 0xfa, 0x32, 0x91, 0x78, 0x03, 0x87, 0x77, 0x85, 0xc2, - 0x92, 0x66, 0x51, 0x83, 0xdb, 0xa8, 0x3f, 0xce, 0x17, 0xaa, 0xf5, 0xbb, 0x1e, 0x5c, 0x5f, 0x2e, - 0xb6, 0x6c, 0x6d, 0x1a, 0x98, 0x84, 0xe4, 0x69, 0x44, 0x9a, 0xf5, 0x6e, 0xd8, 0xd4, 0xc9, 0xd3, - 0x42, 0x18, 0xca, 0x80, 0x1c, 0x71, 0x8c, 0x62, 0x79, 0x59, 0xd9, 0x3b, 0xf3, 0xba, 0x90, 0x6b, - 0x36, 0x2a, 0x7c, 0xf8, 0xd3, 0xf4, 0xaa, 0xd9, 0x17, 0x59, 0xb1, 0xe6, 0x5a, 0x50, 0xcb, 0x0b, - 0x6b, 0x19, 0x0c, 0xe0, 0x5e, 0x67, 0x09, 0x42, 0x53, 0x71, 0x8b, 0xc2, 0x4e, 0x46, 0xc3, 0xff, - 0xf1, 0x45, 0x2b, 0x81, 0x52, 0x3b, 0xb4, 0x59, 0x20, 0xdc, 0x24, 0xea, 0xa5, 0xe7, 0xfc, 0x19, - 0xc2, 0xeb, 0x8c, 0x91, 0x99, 0x0a, 0x87, 0x43, 0xa7, 0x4c, 0x3e, 0x5a, 0xd7, 0x71, 0x5e, 0x3f, - 0x7c, 0xd0, 0x2f, 0x1a, 0xc0, 0xac, 0x73, 0xcf, 0xfc, 0x0a, 0x85, 0xe8, 0xd6, 0xb1, 0xa2, 0xe0, - 0x2e, 0x7a, 0xa8, 0x68, 0x68, 0x0a, 0x7d, 0x73, 0xd0, 0xc7, 0x6a, 0x3e, 0x7b, 0x6b, 0x6a, 0x28, - 0x59, 0x7a, 0x29, 0x85, 0x84, 0x04, 0xbb, 0x7c, 0x5b, 0x8f, 0x68, 0x6f, 0xb7, 0x3e, 0xbf, 0xca, - 0x97, 0x62, 0x7a, 0x73, 0xf3, 0xe3, 0x23, 0x39, 0xa6, 0xb1, 0x71, 0xd0, 0x4e, 0xb5, 0x7a, 0x29, - 0x51, 0xc9, 0x40, 0x45, 0x2f, 0x25, 0x58, 0x0c, 0x71, 0x61, 0x9c, 0x73, 0x99, 0xc8, 0xab, 0xee, - 0x67, 0x0d, 0x97, 0xd3, 0xdc, 0xa0, 0x90, 0x3b, 0xc2, 0x91, 0x07, 0x1f, 0xf0, 0xe9, 0x97, 0xa9, - 0xb5, 0x46, 0xdc, 0x63, 0xfc, 0xa3, 0x24, 0x1f, 0xeb, 0xa8, 0x85, 0x66, 0x9a, 0xaf, 0x0f, 0x37, - 0xe0, 0x8e, 0x01, 0x32, 0x35, 0xdb, 0xbe, 0xa3, 0xbe, 0xf6, 0x2f, 0x1a, 0xd8, 0x1e, 0xc6, 0x40, - 0xb9, 0x69, 0xea, 0x02, 0x95, 0x14, 0x9b, 0xe9, 0x7d, 0x0c, 0xb7, 0x55, 0xf8, 0x87, 0xd9, 0x76, - 0x3e, 0x15, 0xae, 0x83, 0xba, 0xe7, 0x60, 0xc4, 0x0d, 0x32, 0x8a, 0x46, 0x9a, 0x56, 0xdc, 0xc1, - 0x62, 0x9e, 0x76, 0xf6, 0x34, 0xfb, 0xb9, 0xca, 0x32, 0xaa, 0xdd, 0x2b, 0x4e, 0xd2, 0xbc, 0x1a, - 0xe4, 0x5d, 0x8c, 0x79, 0xb1, 0x84, 0xd3, 0xfc, 0xd5, 0x40, 0xa9, 0x00, 0x97, 0x18, 0x39, 0xf7, - 0x78, 0xa7, 0xfd, 0x60, 0xb4, 0xfa, 0x3f, 0x8b, 0x74, 0x23, 0xb6, 0x90, 0x07, 0x32, 0xea, 0xde, - 0x4d, 0xe9, 0xbf, 0xe3, 0x78, 0x0a, 0xe0, 0x86, 0x21, 0x02, 0x2d, 0x45, 0xe0, 0x74, 0x20, 0xb7, - 0x63, 0x17, 0x2f, 0x09, 0xd3, 0xbe, 0x24, 0x6e, 0xef, 0x62, 0x06, 0x35, 0x1d, 0x0d, 0xe0, 0xb8, - 0xc4, 0xff, 0xc5, 0x3e, 0x4a, 0xf3, 0x04, 0x2b, 0x4f, 0xea, 0xf6, 0xfd, 0x8d, 0x28, 0x5e, 0xdc, - 0xe8, 0x1d, 0x39, 0x20, 0x43, 0x89, 0x5c, 0x37, 0x50, 0x38, 0x92, 0x00, 0x69, 0x46, 0xc8, 0x55, - 0x16, 0x70, 0x90, 0x73, 0x9e, 0xd8, 0x08, 0xdb, 0x3a, 0xcf, 0x5c, 0xc8, 0xdb, 0x2b, 0xae, 0x8e, - 0x7c, 0x51, 0xa9, 0x0c, 0x54, 0xc8, 0x15, 0x21, 0x26, 0x29, 0x92, 0x25, 0x19, 0xa8, 0x31, 0x7c, - 0x7d, 0x41, 0x32, 0x69, 0xe4, 0xfd, 0xf0, 0x0f, 0x12, 0x2e, 0x35, 0x0d, 0x22, 0x04, 0xf5, 0x7e, - 0x5c, 0xa7, 0x2e, 0xe1, 0xda, 0x11, 0xd2, 0xbf, 0x98, 0xe1, 0x33, 0xf7, 0x3c, 0xb2, 0x4a, 0x1c, - 0x01, 0x3e, 0xf7, 0xcc, 0x14, 0x2a, 0x51, 0xe6, 0x4f, 0x43, 0xba, 0xd4, 0xad, 0xb7, 0x8c, 0x5c, - 0x4a, 0x44, 0x03, 0x7f, 0x80, 0x0f, 0xe5, 0x58, 0x35, 0x44, 0x11, 0x13, 0x63, 0xd6, 0x62, 0x48, - 0x15, 0xa9, 0xb9, 0xdf, 0xf9, 0xc1, 0x70, 0x80, 0xdf, 0x76, 0xda, 0x93, 0x50, 0xc3, 0x17, 0x5b, - 0xb7, 0xdd, 0xfa, 0x14, 0x5a, 0xfa, 0x2f, 0xd6, 0x4b, 0x54, 0xd8, 0x41, 0xab, 0x82, 0xc9, 0x12, - 0xd8, 0x65, 0x71, 0x99, 0xff, 0x07, 0x3b, 0x46, 0x84, 0xeb, 0x89, 0x04, 0x10, 0x6d, 0x5c, 0x1e, - 0xe4, 0xcb, 0x13, 0xcd, 0x37, 0x3b, 0xde, 0x78, 0xfc, 0x48, 0xbd, 0xb2, 0x85, 0x89, 0x45, 0x72, - 0x96, 0x2a, 0x7d, 0x69, 0x1a, 0x59, 0x6d, 0x03, 0x30, 0xb9, 0xce, 0x98, 0xb3, 0xc2, 0x23, 0xb4, - 0x86, 0x2a, 0x1e, 0x76, 0x49, 0xc0, 0x7b, 0xd6, 0x3c, 0x54, 0x76, 0x22, 0x1c, 0x8e, 0x86, 0x56, - 0xeb, 0xa3, 0x00, 0x73, 0x3c, 0xeb, 0x64, 0xa1, 0xd7, 0x4a, 0xeb, 0x4d, 0x98, 0x49, 0xcf, 0x93, - 0x72, 0xec, 0x35, 0x33, 0x8b, 0x97, 0xf4, 0xd0, 0xb7, 0x80, 0xf8, 0xc4, 0x85, 0x27, 0x1f, 0x5e, - 0x3c, 0xe9, 0x83, 0x3d, 0xbc, 0x99, 0x96, 0x3d, 0x63, 0xaa, 0x99, 0x7c, 0x83, 0x07, 0x55, 0x78, - 0x94, 0x7f, 0xa4, 0x48, 0x77, 0x38, 0xa3, 0xb8, 0xb7, 0x02, 0xee, 0x82, 0xac, 0x27, 0x1e, 0xb4, - 0x2a, 0xa9, 0x27, 0x98, 0xcf, 0x58, 0x80, 0xa6, 0x58, 0x15, 0xce, 0x17, 0x87, 0xb4, 0xff, 0xaf, - 0x22, 0xa8, 0xf3, 0x83, 0xf6, 0xd9, 0x04, 0xb3, 0xbb, 0xf1, 0x1a, 0xa7, 0x00, 0x5c, 0x64, 0xfb, - 0x99, 0x6f, 0x54, 0xda, 0x29, 0x1e, 0x4f, 0xae, 0x22, 0x24, 0xce, 0xc8, 0x77, 0xc8, 0x7e, 0xe6, - 0xfd, 0xce, 0x07, 0x7d, 0x0d, 0x93, 0xde, 0x13, 0xd3, 0x08, 0xdb, 0xc1, 0xd5, 0xbb, 0x5a, 0x69, - 0x34, 0xa5, 0x90, 0x44, 0x5b, 0xd2, 0x50, 0x4c, 0x03, 0xb4, 0x35, 0x33, 0x4d, 0x63, 0xdb, 0xfb, - 0xe7, 0xed, 0x07, 0x91, 0x1f, 0x7e, 0xa5, 0x68, 0xa0, 0xe7, 0x80, 0x65, 0xf8, 0x79, 0xc7, 0xca, - 0x80, 0x27, 0x41, 0x59, 0xa3, 0x38, 0xc3, 0xae, 0xa5, 0x8c, 0x1d, 0x00, 0xb5, 0xbc, 0x6d, 0x16, - 0xdf, 0x8e, 0x36, 0xa6, 0x24, 0x8e, 0x1d, 0xca, 0x0c, 0x13, 0xed, 0x3d, 0xe1, 0x68, 0xc9, 0x0b, - 0x8b, 0xd4, 0x17, 0xf2, 0xb3, 0xec, 0x78, 0xa0, 0x7d, 0x35, 0x71, 0xe4, 0x24, 0xd1, 0xe5, 0xc1, - 0x13, 0x2c, 0x7e, 0xab, 0x86, 0x19, 0xfe, 0xbe, 0x22, 0xcf, 0xb7, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xae, 0x29, 0x35, 0xf1, 0xdf, 0xd8, 0xa2, 0x4a, 0xed, 0x7c, 0x70, 0xdf, - 0x7d, 0xe3, 0xa6, 0x68, 0xeb, 0x7a, 0x49, 0xb1, 0x31, 0x98, 0x80, 0xdd, 0xe2, 0xbb, 0xd9, 0x03, - 0x1a, 0xe5, 0xd8, 0x2f, 0xfd, 0xe0, 0x1c, 0x85, 0xa0, 0x45, 0xcc, 0x0e, 0xf3, 0x67, 0x88, 0xe9, - 0x1e, 0xdf, 0x18, 0xe6, 0x3a, 0x44, 0x94, 0x53, 0x74, 0x09, 0x4e, 0x08, 0x3c, 0x33, 0xd3, 0x07, - 0xd1, 0x72, 0xaf, 0x7f, 0x82, 0xec, 0x14, 0x05, 0x87, 0x12, 0x50, 0xc0, 0xc4, 0x4f, 0x7c, 0x67, - 0xdf, 0xd2, 0xe2, 0xc7, 0x38, 0x0d, 0x7c, 0x30, 0xf6, 0x80, 0x39, 0xe2, 0x7d, 0x77, 0xb4, 0x42, - 0xcb, 0x01, 0x63, 0xca, 0x95, 0x32, 0xa4, 0x18, 0x2c, 0x2b, 0xef, 0xa0, 0x26, 0x88, 0xc6, 0x01, - 0x97, 0x10, 0xba, 0xba, 0x3d, 0x80, 0xf2, 0xb8, 0x94, 0xfd, 0x91, 0x75, 0xf2, 0x2c, 0x7f, 0xf6, - 0xdf, 0x41, 0x2c, 0x8c, 0x41, 0xde, 0xb3, 0x94, 0xb9, 0x89, 0xc2, 0x27, 0xf5, 0xc2, 0x03, 0x32, - 0xb7, 0xa0, 0x30, 0x36, 0x98, 0x23, 0xc6, 0xac, 0x19, 0xee, 0xa1, 0xe6, 0xe2, 0x68, 0xee, 0xaa, - 0x70, 0x0c, 0x81, 0xe8, 0x87, 0x31, 0xbf, 0x74, 0xaa, 0xd7, 0x37, 0xab, 0xf9, 0x15, 0x8c, 0x3e, - 0xfc, 0x59, 0x16, 0x20, 0x4e, 0xe3, 0xd4, 0x5e, 0x57, 0x28, 0xcf, 0x42, 0x7f, 0x1a, 0x86, 0x9d, - 0x1c, 0x5d, 0x4a, 0xf1, 0x7a, 0x17, 0x9e, 0xd1, 0x6f, 0xfd, 0xcd, 0xb4, 0xe9, 0x05, 0xdb, 0x8e, - 0x10, 0x99, 0x25, 0x41, 0x2c, 0xa6, 0xf6, 0x65, 0xd3, 0x4f, 0x3c, 0x3d, 0xc9, 0x2c, 0xf5, 0x40, - 0xea, 0x6d, 0x7a, 0x07, 0xdf, 0x9c, 0x3b, 0x3f, 0xe7, 0x45, 0xd8, 0xcf, 0x95, 0x33, 0x57, 0x39, - 0x37, 0x61, 0x36, 0x7c, 0xf7, 0xee, 0xb5, 0xc0, 0x75, 0x0b, 0xe3, 0x08, 0x02, 0xfe, 0x8f, 0x52, - 0x14, 0xa4, 0x1f, 0x99, 0xbe, 0x8d, 0xb8, 0x1f, 0x35, 0xf1, 0x96, 0x61, 0x31, 0x19, 0x20, 0xd8, - 0x1c, 0xdb, 0x99, 0x9f, 0x34, 0x68, 0xf0, 0x16, 0x05, 0x5d, 0x33, 0xbc, 0x8e, 0xa9, 0x50, 0xda, - 0x3f, 0x07, 0xc0, 0xf1, 0x02, 0x61, 0x88, 0xe2, 0x8b, 0x50, 0xc9, 0xad, 0x30, 0xab, 0x00, 0x05, - 0xea, 0x60, 0x4c, 0xcf, 0x86, 0xb0, 0x32, 0x40, 0x1a, 0x6b, 0x84, 0xf9, 0xee, 0xee, 0x1c, 0x82, - 0xf6, 0xbc, 0xd3, 0x88, 0x7c, 0xb9, 0x87, 0x88, 0x8c, 0x1e, 0xc2, 0x55, 0x37, 0xc6, 0x60, 0xdc, - 0xf8, 0x1d, 0xbc, 0x80, 0x06, 0x33, 0x33, 0x61, 0x99, 0xce, 0x7c, 0x41, 0xea, 0xf2, 0xc8, 0x92, - 0x0c, 0xd3, 0xd6, 0xf4, 0x1b, 0xa7, 0x8d, 0x97, 0xb9, 0x84, 0x51, 0x65, 0x6e, 0xcb, 0x7a, 0x73, - 0x97, 0x0a, 0xfd, 0xaa, 0x36, 0xb9, 0xb1, 0x5e, 0x8d, 0xe1, 0xcf, 0x85, 0x2c, 0x5c, 0x41, 0xee, - 0x6c, 0xbc, 0x0e, 0x76, 0x80, 0x5a, 0xa9, 0x3c, 0x3f, 0xa9, 0x33, 0xc4, 0x3d, 0x12, 0x5d, 0x0b, - 0x00, 0x68, 0x7d, 0x15, 0x30, 0x37, 0xe2, 0x4d, 0x4f, 0x49, 0x30, 0x0c, 0x93, 0x2c, 0x18, 0xdd, - 0x1f, 0x92, 0xab, 0xef, 0x0a, 0x2c, 0x12, 0x4c, 0x4e, 0x99, 0xee, 0xcb, 0x95, 0x68, 0xf1, 0xf8, - 0x88, 0x8c, 0xe1, 0x16, 0x2d, 0x08, 0x6a, 0x5a, 0xb1, 0x87, 0xb4, 0x9f, 0x6b, 0x16, 0xb6, 0x69, - 0xb0, 0x40, 0xbc, 0x9c, 0x54, 0x61, 0xa2, 0x65, 0x97, 0x29, 0xa0, 0xfa, 0x12, 0x7b, 0xc5, 0xdb, - 0xcf, 0x6a, 0x54, 0xfc, 0xc8, 0x93, 0xd0, 0xdf, 0x06, 0x7a, 0xd7, 0x44, 0x0c, 0x80, 0x35, 0xe1, - 0xcf, 0x18, 0xc5, 0xb4, 0x19, 0xf3, 0x9c, 0x97, 0x3b, 0x1a, 0x91, 0xbd, 0x54, 0x0c, 0x37, 0x6b, - 0x14, 0x1d, 0xfe, 0x5c, 0xea, 0xb4, 0x3c, 0x71, 0x16, 0x21, 0x1e, 0xa0, 0x14, 0x13, 0x8d, 0xaf, - 0xbd, 0x24, 0xb2, 0x9a, 0xf4, 0x82, 0xab, 0x03, 0xb7, 0x77, 0x00, 0x6f, 0x99, 0x6f, 0xa4, 0x89, - 0xe7, 0x6f, 0xf9, 0xc2, 0x30, 0x3c, 0x1f, 0xe4, 0x69, 0x27, 0x53, 0x40, 0x16, 0xf1, 0x9e, 0xae, - 0xe7, 0xd1, 0xaf, 0x02, 0xf7, 0xb1, 0x13, 0x1a, 0x3e, 0x16, 0x1b, 0x2d, 0x18, 0xfd, 0xbf, 0xb8, - 0x61, 0xeb, 0xf7, 0x8d, 0xe8, 0x5b, 0xa0, 0xee, 0x0e, 0x56, 0xe6, 0xe1, 0x5c, 0x4a, 0x09, 0x51, - 0x41, 0xfa, 0x0c, 0xa8, 0xfc, 0x1a, 0x8d, 0x00, 0x14, 0x4d, 0x82, 0x85, 0x9e, 0x62, 0x7b, 0x70, - 0x06, 0x0b, 0x6a, 0xd7, 0xb1, 0x82, 0x46, 0x49, 0xcf, 0x3b, 0x76, 0x57, 0xd0, 0x27, 0x44, 0xac, - 0xb8, 0xb3, 0x74, 0x6b, 0x3a, 0x1c, 0x2b, 0xdb, 0x5c, 0x9a, 0x57, 0x1c, 0x79, 0xee, 0x80, 0x1d, - 0x6a, 0x8d, 0xbb, 0xfd, 0xc1, 0x70, 0x4e, 0x9b, 0xa0, 0xd3, 0x29, 0x3e, 0xe1, 0x61, 0xe5, 0xe9, - 0x69, 0x59, 0xf6, 0x3f, 0x55, 0x5e, 0x0f, 0x8a, 0x4a, 0x99, 0x95, 0xa4, 0x97, 0x71, 0xd0, 0x72, - 0x36, 0xb4, 0x20, 0x0a, 0xce, 0x69, 0xab, 0xdc, 0xf9, 0xa4, 0x66, 0xd3, 0x0e, 0x81, 0xca, 0x93, - 0xa9, 0xb9, 0xd1, 0x92, 0x41, 0xa3, 0x09, 0x57, 0xcb, 0x05, 0x28, 0xaf, 0xea, 0x86, 0xe1, 0xf1, - 0x9c, 0x7d, 0x38, 0x58, 0x97, 0x6d, 0x50, 0xa6, 0xef, 0xf6, 0xbf, 0x8b, 0x29, 0x8d, 0xbb, 0x86, - 0x48, 0x52, 0x58, 0x8f, 0x88, 0x55, 0x8a, 0x05, 0x40, 0xa0, 0x7c, 0x72, 0xb6, 0xdd, 0xa9, 0x48, - 0x77, 0xdc, 0xee, 0xbc, 0xd3, 0x6f, 0x95, 0x9f, 0x51, 0xa8, 0x5d, 0x7a, 0x61, 0x06, 0x6a, 0x78, - 0x1c, 0xb9, 0xcf, 0xa9, 0xf7, 0x88, 0x81, 0x97, 0x53, 0x5f, 0x62, 0x58, 0xb2, 0x8d, 0x71, 0xce, - 0xf4, 0x05, 0x16, 0x8b, 0x4a, 0xa3, 0xdd, 0x35, 0xfa, 0xdd, 0xd9, 0x95, 0xde, 0xb5, 0x26, 0x0d, - 0xf8, 0x73, 0x26, 0xb6, 0x5c, 0x09, 0x2b, 0x49, 0xac, 0x66, 0x91, 0x33, 0x5f, 0x44, 0xbe, 0x13, - 0xd1, 0x64, 0x44, 0xe4, 0x86, 0x4a, 0xdd, 0xde, 0x2e, 0x2c, 0xe1, 0x89, 0x32, 0x66, 0x14, 0x2e, - 0x75, 0x74, 0xe6, 0x47, 0xf9, 0x74, 0x11, 0xe3, 0x00, 0x3f, 0x13, 0x07, 0xbc, 0x09, 0x88, 0x4b, - 0x51, 0xf6, 0x91, 0xb7, 0x45, 0xaf, 0xaf, 0x69, 0x7b, 0x4f, 0x77, 0x7d, 0x2e, 0xc7, 0x5c, 0x2c, - 0x4f, 0xae, 0x5a, 0x80, 0x6a, 0xef, 0xba, 0x3e, 0x2c, 0x93, 0x63, 0x3a, 0xe4, 0xce, 0x75, 0xe1, - 0xce, 0x38, 0xf7, 0x84, 0xe1, 0xfa, 0x6f, 0x3e, 0x20, 0x17, 0x3a, 0xe7, 0x99, 0x24, 0xc1, 0x2f, - 0x98, 0x32, 0xe4, 0xca, 0x89, 0x80, 0x9c, 0x68, 0x50, 0xb1, 0x56, 0x7e, 0x5f, 0x51, 0x2c, 0x79, - 0x05, 0x16, 0x10, 0xf0, 0x7e, 0x8b, 0x09, 0xaa, 0xb1, 0xf5, 0xcf, 0xb9, 0x18, 0x14, 0x5e, 0xfd, - 0xc0, 0x08, 0xbd, 0x65, 0x1f, 0x7c, 0x1b, 0x2e, 0x0b, 0x7e, 0xc8, 0xbb, 0x32, 0x71, 0x83, 0x2c, - 0x67, 0x82, 0x32, 0xfb, 0xcb, 0x22, 0xe0, 0xff, 0x9b, 0xc1, 0x0a, 0x54, 0xe7, 0xdb, 0x86, 0x23, - 0x00, 0x04, 0x08, 0x06, 0xd1, 0x5a, 0x8f, 0xc9, 0xe3, 0x3a, 0x9b, 0x51, 0xeb, 0xfd, 0xb2, 0xf3, - 0x27, 0x45, 0xa1, 0xeb, 0xdc, 0xd0, 0xf9, 0xa7, 0x70, 0x23, 0xec, 0xc4, 0x29, 0xf1, 0xce, 0x52, - 0x89, 0xa2, 0xcb, 0xa0, 0x45, 0x6d, 0xa5, 0xa7, 0x73, 0xf4, 0xd7, 0x4c, 0x48, 0xd9, 0x15, 0xb9, - 0xe9, 0x87, 0x84, 0x30, 0xfe, 0x0d, 0xf6, 0x45, 0x88, 0xa4, 0x29, 0x26, 0x5d, 0xde, 0xc9, 0x0f, - 0xea, 0x4c, 0xb3, 0xe1, 0x48, 0x9f, 0x03, 0x99, 0x8f, 0xb6, 0x78, 0xa1, 0xaa, 0x7a, 0xa3, 0x99, - 0xb9, 0x0c, 0xcf, 0x22, 0xc5, 0x6e, 0x51, 0x82, 0xcb, 0x14, 0xbd, 0x5e, 0x03, 0xc1, 0xe1, 0xc2, - 0xec, 0x68, 0x09, 0xb0, 0x20, 0x06, 0xa9, 0x1c, 0x64, 0xdc, 0x8d, 0xac, 0x8c, 0xbb, 0x1c, 0xb7, - 0x6b, 0x80, 0x58, 0x92, 0x85, 0xe4, 0x2c, 0x98, 0xfa, 0x44, 0xd9, 0xe0, 0xfd, 0x67, 0xb4, 0xa1, - 0xfc, 0x02, 0xfd, 0x82, 0x0c, 0xac, 0xa3, 0x6f, 0x20, 0x54, 0x5e, 0x22, 0xfe, 0xb1, 0x2d, 0xad, - 0x46, 0x72, 0x5d, 0x78, 0xea, 0xb3, 0xd4, 0x65, 0xa5, 0xd2, 0x85, 0xa2, 0xe9, 0xb2, 0xbc, 0xf6, - 0xdf, 0x32, 0xa3, 0x2a, 0x91, 0x26, 0x1b, 0x18, 0x05, 0x23, 0x19, 0xb5, 0x1e, 0x3c, 0x6a, 0x29, - 0x7d, 0xc3, 0x6e, 0x52, 0xc7, 0xf2, 0x50, 0x29, 0x67, 0xfb, 0xeb, 0x0a, 0xd0, 0xdb, 0xf7, 0x0c, - 0x8a, 0x25, 0x70, 0xb8, 0xf7, 0x15, 0x88, 0xfb, 0x28, 0x91, 0xef, 0xf0, 0xa2, 0x3c, 0x28, 0xdd, - 0x2f, 0x4f, 0xd0, 0xf6, 0x26, 0xa4, 0xdb, 0x65, 0x3b, 0x39, 0x61, 0x43, 0xc6, 0xf8, 0x68, 0xd6, - 0x55, 0xe2, 0xd5, 0x85, 0x03, 0x9c, 0x89, 0x1a, 0x11, 0xff, 0xf1, 0x37, 0x76, 0x8d, 0x05, 0xf7, - 0x5c, 0x27, 0xb8, 0xd3, 0x79, 0xad, 0x02, 0xca, 0xb0, 0x52, 0xec, 0x67, 0x89, 0xfb, 0xb1, 0x28, - 0x72, 0xae, 0x32, 0x2f, 0xde, 0x58, 0x2c, 0x8e, 0x6d, 0x87, 0xb3, 0x3f, 0xb8, 0x44, 0x7e, 0x81, - 0x76, 0x29, 0x4b, 0xe9, 0xdf, 0x99, 0xc7, 0x43, 0xde, 0xb2, 0xe3, 0xf9, 0xf9, 0x1c, 0x8a, 0x3b, - 0x58, 0x88, 0xf6, 0x0e, 0x1e, 0x7f, 0x9f, 0x49, 0xb0, 0x49, 0xba, 0xdb, 0x6d, 0x59, 0xdf, 0x42, - 0x8e, 0xa4, 0x13, 0x80, 0xb5, 0x01, 0x90, 0xd9, 0x6f, 0xf7, 0x2e, 0xba, 0x28, 0x7c, 0xa5, 0x5f, - 0x32, 0x43, 0x99, 0x64, 0xa9, 0xa5, 0x9b, 0xa8, 0xc0, 0x99, 0x03, 0x08, 0x02, 0x10, 0xde, 0xa1, - 0x75, 0xc9, 0x72, 0xa7, 0x66, 0x7a, 0x66, 0xca, 0xb9, 0x36, 0xd0, 0x98, 0xaf, 0xdf, 0x2d, 0xc3, - 0xac, 0x5c, 0xda, 0x1c, 0x66, 0xea, 0xb7, 0x3e, 0x89, 0x32, 0x54, 0xb3, 0x57, 0xa5, 0x4f, 0x9a, - 0xda, 0x6b, 0x11, 0x21, 0x79, 0x15, 0x7e, 0xb1, 0x92, 0x64, 0x07, 0xe8, 0x8f, 0x40, 0x19, 0xbf, - 0x7b, 0x34, 0x1d, 0xd5, 0xbb, 0x0e, 0xbc, 0xd3, 0xd9, 0x88, 0x59, 0xe1, 0xd2, 0xe2, 0x8a, 0x25, - 0xd8, 0x6c, 0x34, 0x8c, 0xab, 0xca, 0x24, 0x51, 0xbf, 0xcd, 0x7d, 0x1a, 0x88, 0x0e, 0x41, 0x0f, - 0xcf, 0x10, 0x62, 0x40, 0xf1, 0xef, 0x38, 0xf9, 0x14, 0x52, 0x9a, 0x6f, 0xd3, 0xf9, 0x6b, 0x98, - 0x4f, 0x19, 0x6c, 0x07, 0xec, 0xcf, 0x36, 0x53, 0x77, 0x58, 0x23, 0x56, 0x08, 0x65, 0xdb, 0x24, - 0x1c, 0xd2, 0xdb, 0x62, 0x5f, 0xdc, 0x1c, 0x01, 0x49, 0xf6, 0x8c, 0x21, 0x6f, 0x71, 0x22, 0x5f, - 0x02, 0xb5, 0x00, 0x49, 0x28, 0x11, 0xc1, 0x3c, 0xba, 0x69, 0xdc, 0x7f, 0xcb, 0xc7, 0xa8, 0x8d, - 0xf5, 0xee, 0xe4, 0x4b, 0x53, 0x8d, 0x01, 0xa3, 0xd1, 0x82, 0x88, 0x28, 0x03, 0x42, 0xed, 0x20, - 0x4b, 0xca, 0xb0, 0x3a, 0x4e, 0x05, 0xee, 0x42, 0xc1, 0xd8, 0xd6, 0x2c, 0x64, 0xd6, 0x83, 0x03, - 0xc1, 0x21, 0x75, 0xd4, 0xce, 0x5d, 0x83, 0x9b, 0x74, 0x88, 0x51, 0x14, 0x9c, 0x5e, 0x73, 0xe5, - 0xaf, 0x1e, 0x12, 0xae, 0xb9, 0xc3, 0x2d, 0xd7, 0x09, 0xf8, 0x4b, 0x2e, 0x14, 0xcf, 0x94, 0x17, - 0xf6, 0xc8, 0x28, 0xbf, 0x6b, 0xd9, 0x33, 0x4c, 0x4c, 0xab, 0x2e, 0xa4, 0x3a, 0xe7, 0x6b, 0x3d, - 0xe0, 0xc4, 0x35, 0xc1, 0xb3, 0x7f, 0x9e, 0xcc, 0x65, 0xeb, 0xed, 0xd8, 0x15, 0x27, 0x11, 0x66, - 0x20, 0x68, 0xaa, 0xf3, 0xa0, 0xf3, 0xa8, 0x6f, 0x51, 0x63, 0x42, 0xcf, 0xba, 0x10, 0x4f, 0x04, - 0xdf, 0x64, 0x87, 0x88, 0xda, 0x49, 0x3e, 0xbf, 0xa2, 0x21, 0xd6, 0x31, 0xac, 0x9f, 0xf2, 0xf8, - 0xd1, 0x5c, 0xf8, 0x89, 0x72, 0x0c, 0x9e, 0x24, 0x30, 0xc1, 0x9f, 0xd9, 0x36, 0xae, 0xcc, 0xcc, - 0xbb, 0x09, 0xf2, 0xc3, 0x5c, 0xf9, 0x33, 0x87, 0x58, 0xb5, 0x47, 0x69, 0x26, 0x23, 0x57, 0x98, - 0xa4, 0x62, 0xa9, 0x0d, 0x70, 0xa7, 0x2d, 0xce, 0x6f, 0x55, 0x05, 0x8f, 0x8b, 0x51, 0x5b, 0x18, - 0xcd, 0x65, 0x9b, 0x47, 0xb6, 0xee, 0xd4, 0xfd, 0x72, 0x28, 0xa0, 0x94, 0xa2, 0xd7, 0xd2, 0xef, - 0x5a, 0xae, 0xc1, 0xf3, 0x6b, 0x5c, 0xa4, 0x54, 0xdb, 0x48, 0xec, 0xfd, 0xe1, 0xe9, 0x5e, 0x8c, - 0x62, 0x4c, 0xf7, 0x7a, 0x50, 0x62, 0xeb, 0xdf, 0x54, 0x6a, 0x49, 0x6f, 0xdb, 0x5a, 0x02, 0x96, - 0xf9, 0x1d, 0x57, 0x8e, 0xa1, 0x61, 0xaa, 0xc7, 0xc7, 0xa8, 0x1b, 0xf5, 0x33, 0x3d, 0x65, 0x12, - 0x45, 0x54, 0xfc, 0x9d, 0x40, 0x17, 0x7c, 0xff, 0xf4, 0x2e, 0x0b, 0xbd, 0x56, 0x80, 0x5c, 0x83, - 0x7f, 0xe6, 0x20, 0x3f, 0x6e, 0x91, 0xa2, 0x2c, 0x58, 0x33, 0x69, 0xbc, 0x15, 0x10, 0xdc, 0x2d, - 0xa3, 0xd6, 0x06, 0xa9, 0xce, 0xa7, 0xec, 0xa8, 0x28, 0x14, 0xbe, 0xbe, 0x80, 0x82, 0x8f, 0x1d, - 0x4c, 0x24, 0x40, 0x26, 0x68, 0xdd, 0xa9, 0xaa, 0x4c, 0xd6, 0x87, 0x7e, 0x46, 0x7a, 0xaa, 0x43, - 0x56, 0x2e, 0xd9, 0x24, 0xda, 0x6f, 0xdd, 0x21, 0x10, 0x39, 0x48, 0xd5, 0x08, 0xec, 0x5d, 0x1f, - 0xe4, 0xdb, 0x64, 0xa1, 0x99, 0x8b, 0x11, 0x60, 0x2f, 0x4b, 0x44, 0x84, 0xd2, 0x69, 0x52, 0xfd, - 0xee, 0xe9, 0x5b, 0xb0, 0xa8, 0xc5, 0x07, 0x77, 0x15, 0xfe, 0x58, 0xf5, 0x62, 0xfb, 0x60, 0x4c, - 0x43, 0xe0, 0x17, 0x54, 0x42, 0x9f, 0x07, 0x7c, 0x2d, 0xc0, 0xa2, 0x6a, 0x3e, 0x13, 0x0b, 0x78, - 0x5c, 0x62, 0x98, 0x7f, 0x55, 0xe2, 0xc7, 0xb2, 0x58, 0xe1, 0x9d, 0x53, 0xb5, 0xd9, 0xaf, 0x0c, - 0x11, 0x70, 0x85, 0xca, 0x21, 0x87, 0x1a, 0x39, 0x5e, 0x67, 0xd4, 0x51, 0x75, 0x2e, 0xa8, 0xea, - 0x0d, 0x30, 0xc0, 0x93, 0x60, 0x18, 0x7f, 0xdf, 0x4a, 0x41, 0xa0, 0x80, 0x1c, 0xed, 0x5c, 0xaa, - 0x84, 0x4f, 0x2d, 0xec, 0x8c, 0xad, 0x24, 0xa1, 0x4b, 0xa9, 0x52, 0x27, 0x8e, 0x70, 0xf6, 0xff, - 0xc0, 0xb4, 0x13, 0x39, 0x75, 0xd4, 0xfc, 0x9a, 0xbf, 0xff, 0x53, 0x3f, 0x44, 0x19, 0xd9, 0xa5, - 0x28, 0x18, 0x5c, 0x38, 0xfb, 0x4c, 0x3e, 0x5b, 0x40, 0xf2, 0xf4, 0xc2, 0x2c, 0x95, 0xdb, 0xd2, - 0xe5, 0x5f, 0x87, 0x56, 0x63, 0x28, 0xda, 0x07, 0xa9, 0x90, 0x83, 0x94, 0xdb, 0x56, 0x2c, 0xa3, - 0xd0, 0xc4, 0x52, 0x6d, 0x1f, 0xfa, 0x35, 0x4f, 0xba, 0xcf, 0x12, 0xf4, 0xf0, 0x46, 0xb5, 0x1e, - 0x67, 0xba, 0x10, 0xc9, 0xc3, 0x0a, 0x30, 0xed, 0xcd, 0xc4, 0x3a, 0x87, 0x08, 0x2c, 0xd9, 0x21, - 0x5f, 0x68, 0x0f, 0xf8, 0x2f, 0x6f, 0x2a, 0x27, 0x47, 0x79, 0x16, 0x52, 0x7a, 0xfd, 0x9d, 0x65, - 0xec, 0x53, 0x90, 0xaf, 0xf0, 0x45, 0x24, 0x08, 0x5a, 0x9f, 0xfd, 0xec, 0xd9, 0x9a, 0x4c, 0x0a, - 0xd4, 0x09, 0x58, 0xdd, 0x29, 0xe4, 0x1a, 0x8e, 0xe9, 0xa3, 0x60, 0x85, 0xd8, 0xd5, 0x9c, 0xb7, - 0x33, 0x2c, 0x3a, 0xfe, 0xd7, 0x09, 0x5a, 0x7a, 0x19, 0x3b, 0x67, 0xc2, 0xc9, 0xf1, 0x41, 0xa4, - 0xc6, 0x7f, 0x1e, 0x7d, 0x6a, 0x75, 0x24, 0xce, 0xef, 0x30, 0xdc, 0x74, 0x8f, 0x2d, 0x8c, 0xf0, - 0x5d, 0x2d, 0x4b, 0x0d, 0x0d, 0x1a, 0xda, 0x8b, 0xdb, 0xc9, 0xac, 0xeb, 0x51, 0x5e, 0xaa, 0xde, - 0x05, 0x3c, 0x8c, 0x87, 0x09, 0x08, 0x2d, 0xd2, 0xca, 0xe6, 0x66, 0x97, 0x70, 0x38, 0x0e, 0x28, - 0x53, 0x4b, 0x59, 0x85, 0x6a, 0x59, 0xe2, 0xd2, 0x6f, 0x87, 0x4f, 0x4b, 0xf5, 0xe1, 0x4d, 0xc9, - 0x23, 0xdd, 0xfe, 0x77, 0x44, 0x92, 0x3f, 0xf6, 0x78, 0x93, 0x18, 0x38, 0x02, 0x24, 0x22, 0x89, - 0xb7, 0x59, 0x84, 0x7d, 0xe4, 0xf7, 0x67, 0xaa, 0xb8, 0xd4, 0x03, 0x92, 0x97, 0xfd, 0xaa, 0xb0, - 0x5d, 0xee, 0x1a, 0x48, 0xb1, 0xfb, 0x1c, 0x9d, 0xaf, 0x64, 0xc3, 0xd6, 0x3e, 0xb7, 0x62, 0xf5, - 0xdb, 0xea, 0x61, 0x1d, 0xde, 0xc6, 0xee, 0x6e, 0x90, 0xfd, 0x0b, 0x74, 0xd2, 0xc2, 0xf7, 0x35, - 0x98, 0x78, 0x74, 0x3e, 0xb4, 0xac, 0x29, 0x4f, 0xcd, 0x95, 0x6f, 0x0a, 0x6b, 0x20, 0xee, 0xd6, - 0xd8, 0x6b, 0x34, 0x51, 0xc0, 0x6f, 0x52, 0x9c, 0x4d, 0xac, 0x9a, 0x11, 0xb8, 0xb8, 0x29, 0x37, - 0x8a, 0x1b, 0x8f, 0x0c, 0x3a, 0x7a, 0x24, 0xfa, 0xc9, 0x5b, 0xef, 0x94, 0x9d, 0x36, 0xf9, 0x1a, - 0x5b, 0x97, 0xab, 0x0d, 0x3e, 0xc4, 0x7c, 0x9a, 0x83, 0xb7, 0x36, 0x1b, 0x2c, 0x93, 0xd2, 0x66, - 0x6e, 0x6f, 0x32, 0x11, 0x2f, 0x21, 0x19, 0x96, 0x3d, 0x7c, 0x5f, 0x2e, 0x6c, 0x05, 0x34, 0x95, - 0x7c, 0x1b, 0x9b, 0x33, 0xa4, 0xb2, 0x6d, 0x5f, 0xda, 0x45, 0x69, 0x0e, 0x5c, 0x1e, 0x5e, 0xa9, - 0x1a, 0x31, 0xc8, 0x23, 0x78, 0x98, 0x34, 0x4b, 0xe9, 0x37, 0xd5, 0x87, 0x46, 0xec, 0x9b, 0x20, - 0x50, 0x35, 0xb9, 0x95, 0xe5, 0x06, 0x50, 0xa6, 0xe1, 0xdd, 0x19, 0xf5, 0xc6, 0x96, 0xec, 0xb3, - 0x08, 0x1c, 0x25, 0xad, 0x3b, 0xfc, 0x11, 0x6c, 0x9a, 0x7d, 0xd8, 0x31, 0x03, 0x24, 0xb5, 0xcb, - 0x90, 0xed, 0xfc, 0x98, 0xb1, 0x46, 0xec, 0xd0, 0xa9, 0x3c, 0x1f, 0x66, 0xb5, 0xba, 0x5e, 0xf2, - 0x5a, 0xd5, 0xf3, 0xdf, 0x54, 0xe7, 0x11, 0x89, 0xdc, 0xf0, 0xea, 0x09, 0x5d, 0x7a, 0x7a, 0xf6, - 0x5f, 0x5d, 0x69, 0xc0, 0xbc, 0xf3, 0x73, 0x73, 0x9a, 0xd5, 0x78, 0x40, 0xe3, 0x54, 0x31, 0x45, - 0xd1, 0xc0, 0x2f, 0x93, 0xbc, 0x1e, 0x2f, 0x39, 0x4e, 0xb4, 0xf0, 0x3e, 0x57, 0x7a, 0x64, 0x8d, - 0x98, 0x66, 0x5d, 0x83, 0x5a, 0x6f, 0x8b, 0x5f, 0xf2, 0x7e, 0xd1, 0xc9, 0xcc, 0xbb, 0xf7, 0xaa, - 0x95, 0x2e, 0x7a, 0x7d, 0x8d, 0xec, 0x37, 0x7a, 0xb5, 0xbc, 0x8d, 0x62, 0xd2, 0x32, 0x1e, 0xd7, - 0x8b, 0x15, 0x06, 0x75, 0xde, 0x81, 0xab, 0xb0, 0xd4, 0x59, 0xa2, 0x25, 0x34, 0xca, 0x6d, 0xce, - 0x3f, 0xa3, 0xae, 0xe6, 0x09, 0xb3, 0x33, 0xe1, 0x25, 0x56, 0x77, 0x30, 0x8b, 0xf7, 0x30, 0x0f, - 0x74, 0x72, 0x36, 0x8c, 0x4b, 0x5d, 0x94, 0xbc, 0x4f, 0x5e, 0x1d, 0x8a, 0x75, 0xec, 0xd4, 0x21, - 0x21, 0xa9, 0x54, 0x9c, 0xc8, 0x37, 0x28, 0x06, 0xae, 0x5c, 0x72, 0x3b, 0xa0, 0x80, 0x0d, 0x17, - 0xbb, 0x22, 0xe8, 0xf7, 0xa9, 0x31, 0x7d, 0x2c, 0x13, 0x74, 0xbc, 0xa0, 0x09, 0xba, 0x5b, 0x05, - 0xa4, 0xf9, 0xab, 0xb5, 0xd5, 0xd7, 0x11, 0x3f, 0xa3, 0xb4, 0x89, 0x79, 0x1c, 0x4a, 0xd8, 0xfb, - 0xc6, 0x54, 0x41, 0xaf, 0x32, 0xc9, 0x71, 0xaa, 0x5a, 0xb1, 0xb5, 0xe0, 0xa0, 0x73, 0x45, 0x18, - 0x73, 0x17, 0xd2, 0xcb, 0xb8, 0x70, 0x30, 0xbb, 0xce, 0x25, 0xad, 0x9e, 0x8d, 0xf3, 0x0d, 0xec, - 0x26, 0x3f, 0x2c, 0x16, 0x49, 0x45, 0x68, 0xbe, 0x04, 0x3e, 0x67, 0x1a, 0xa6, 0x7e, 0xe9, 0x44, - 0x63, 0x43, 0x91, 0x92, 0x25, 0x84, 0x04, 0xe6, 0xa8, 0xb7, 0xf2, 0x70, 0x86, 0xba, 0x2e, 0x34, - 0x4c, 0x0f, 0x45, 0xac, 0x39, 0x8d, 0x0c, 0x59, 0x60, 0x08, 0xb2, 0x07, 0x79, 0xfd, 0xd0, 0x60, - 0xad, 0x0d, 0x53, 0xa6, 0x9b, 0x02, 0x22, 0xf2, 0xbc, 0xb4, 0xbd, 0x9e, 0x8a, 0xe8, 0x3b, 0xa7, - 0x76, 0x21, 0x8e, 0x59, 0x5f, 0x08, 0xb6, 0xf9, 0x4f, 0x18, 0x09, 0x8b, 0x8a, 0x94, 0x59, 0x93, - 0xa3, 0x23, 0xf1, 0xdb, 0x62, 0x88, 0x30, 0xe5, 0xea, 0xf1, 0x79, 0x3a, 0xf4, 0x3a, 0x57, 0xee, - 0xab, 0xa0, 0x82, 0x39, 0x44, 0xd9, 0x13, 0xb9, 0x32, 0xb4, 0x97, 0xb9, 0xa9, 0xb3, 0x23, 0x81, - 0x61, 0xed, 0x96, 0x51, 0xd9, 0xc5, 0x1c, 0x1b, 0xe7, 0x2a, 0x18, 0x83, 0xdb, 0xf5, 0xf2, 0x93, - 0x98, 0xd8, 0x79, 0xc3, 0x38, 0x6d, 0x86, 0x83, 0x9a, 0x80, 0x0d, 0x21, 0x5e, 0xbd, 0x7c, 0x7a, - 0x32, 0xd0, 0x75, 0xea, 0xe4, 0x95, 0x01, 0xcc, 0xa3, 0x2c, 0x74, 0x97, 0x1a, 0x25, 0xc7, 0x1a, - 0x38, 0xe6, 0x92, 0x8b, 0x89, 0xff, 0x56, 0xcd, 0x8d, 0x9f, 0xa0, 0x18, 0x9b, 0x00, 0xc4, 0x58, - 0x38, 0x49, 0x6a, 0x87, 0x59, 0xcc, 0x3b, 0xde, 0xb1, 0x6a, 0x86, 0x12, 0x74, 0x03, 0xd7, 0x04, - 0xc4, 0x63, 0xab, 0x1f, 0x5f, 0xf8, 0x4b, 0xba, 0x1d, 0x27, 0x06, 0xba, 0x68, 0xee, 0xe2, 0xd3, - 0x59, 0xb1, 0xc1, 0x7b, 0x97, 0x4e, 0x36, 0x9e, 0x13, 0x62, 0x9a, 0xad, 0x75, 0xe5, 0x44, 0xaa, - 0x9c, 0x5e, 0xdd, 0x05, 0x24, 0x6f, 0x44, 0x54, 0xc2, 0x5a, 0xfd, 0x4e, 0x97, 0x49, 0xfc, 0xf8, - 0xe9, 0x87, 0x42, 0x7d, 0xc5, 0xd6, 0x36, 0x21, 0x20, 0x6c, 0x2c, 0x32, 0xf9, 0xca, 0x49, 0x2f, - 0x7c, 0x3c, 0x24, 0x39, 0xd6, 0x91, 0xd3, 0x69, 0xf1, 0x8b, 0x91, 0x54, 0xfd, 0xa0, 0x7a, 0x01, - 0x52, 0x4a, 0xee, 0xf7, 0xea, 0xac, 0x19, 0xe8, 0x26, 0x8c, 0x5b, 0x23, 0xd3, 0xa3, 0xa6, 0x44, - 0xdf, 0x9c, 0x90, 0xd8, 0x09, 0x68, 0xda, 0x44, 0x50, 0x2c, 0x55, 0x44, 0xd5, 0xc2, 0x7d, 0xab, - 0xb0, 0x44, 0x81, 0xe5, 0xd9, 0x89, 0x0b, 0x08, 0x7e, 0xe0, 0x15, 0x0f, 0xef, 0x80, 0xd9, 0x46, - 0xef, 0x0d, 0x58, 0x9b, 0xa2, 0x5f, 0x74, 0xb4, 0x5c, 0x66, 0x84, 0x5b, 0x5d, 0x5e, 0x08, 0xd1, - 0xfc, 0x8e, 0x7b, 0xb4, 0x51, 0x59, 0x17, 0xb3, 0x32, 0xdb, 0x86, 0x6a, 0x7a, 0x11, 0x74, 0x78, - 0xda, 0x6b, 0x50, 0x10, 0x16, 0x04, 0x48, 0x1f, 0xc8, 0x24, 0x9f, 0x77, 0xb7, 0x39, 0x0f, 0xd4, - 0xde, 0x34, 0x50, 0x3a, 0xb7, 0x2d, 0x0e, 0x6e, 0x9e, 0x15, 0x9a, 0x8e, 0x90, 0x1e, 0x93, 0xbf, - 0x6b, 0xb8, 0xeb, 0x10, 0x52, 0xe4, 0x0d, 0x7f, 0x05, 0x0e, 0x5d, 0x87, 0x25, 0x8f, 0xbc, 0x7f, - 0x25, 0xfa, 0xce, 0x37, 0x03, 0xac, 0x15, 0xfa, 0x46, 0x3d, 0xd5, 0x48, 0xfb, 0xf2, 0x63, 0x7b, - 0xda, 0x6f, 0x37, 0xdb, 0xbe, 0xc0, 0xad, 0xac, 0xb3, 0x36, 0xe4, 0xe6, 0x15, 0xd7, 0xd4, 0xc8, - 0x4e, 0xe0, 0x74, 0x3d, 0xe7, 0x31, 0x05, 0xf3, 0x42, 0x79, 0x12, 0x91, 0x56, 0x8e, 0xf7, 0xd1, - 0x60, 0xd4, 0x7d, 0x28, 0x53, 0x5b, 0xe9, 0x16, 0x25, 0x17, 0x32, 0x6c, 0x3a, 0x80, 0xc8, 0x23, - 0xe3, 0x54, 0xef, 0xc4, 0xfe, 0xd7, 0x21, 0xa1, 0xc1, 0x01, 0xfc, 0xad, 0x4e, 0x3d, 0x14, 0xb5, - 0xd4, 0x08, 0x9d, 0xdd, 0x98, 0x6c, 0xd6, 0x26, 0x4d, 0xad, 0x83, 0x50, 0x45, 0x82, 0x0e, 0x8d, - 0x1e, 0x4c, 0x7a, 0xea, 0x65, 0xb2, 0x1c, 0x75, 0x2d, 0xe3, 0x57, 0xd2, 0x26, 0x56, 0x8c, 0x46, - 0xb7, 0x83, 0x61, 0x4b, 0x1d, 0xe0, 0x42, 0xa1, 0x3f, 0x9d, 0xe5, 0x37, 0xdd, 0xfa, 0x21, 0xd8, - 0x45, 0x2a, 0xa5, 0xc8, 0x4f, 0x8a, 0x38, 0x0c, 0xc0, 0x7f, 0x43, 0xac, 0xfa, 0xaf, 0x8b, 0x84, - 0xdf, 0x70, 0xc3, 0xf7, 0x1b, 0xff, 0x1c, 0x82, 0x66, 0xdb, 0x04, 0x27, 0xa8, 0x60, 0x38, 0xd9, - 0x6a, 0x76, 0xbc, 0xd2, 0xac, 0xa7, 0x2c, 0xa7, 0x25, 0xde, 0xe2, 0xff, 0xc0, 0x30, 0xbb, 0x45, - 0x3c, 0x11, 0xea, 0x3b, 0x33, 0xfb, 0x40, 0x71, 0xbe, 0xfe, 0xa6, 0x0b, 0xb9, 0xac, 0xff, 0xa9, - 0xe4, 0xc6, 0x5d, 0x9a, 0x9b, 0xea, 0x10, 0x53, 0x95, 0xa3, 0x4f, 0x9b, 0xc7, 0x8c, 0x4c, 0x5e, - 0x92, 0x95, 0xc1, 0x52, 0xd2, 0xe1, 0x45, 0x4a, 0x53, 0x14, 0xc1, 0xed, 0x1f, 0xba, 0x8a, 0x47, - 0xc3, 0x64, 0x1e, 0x7b, 0xf6, 0x61, 0x39, 0xb8, 0x1c, 0x83, 0x59, 0x2d, 0x1e, 0xf6, 0xb4, 0x81, - 0x32, 0xee, 0xe0, 0x97, 0xd2, 0x25, 0xdb, 0xa6, 0x44, 0xf0, 0xe9, 0x73, 0xa1, 0xb5, 0xfc, 0x1b, - 0x04, 0xe5, 0x5d, 0x35, 0x3c, 0xe3, 0x1b, 0x4a, 0x30, 0x02, 0x29, 0x00, 0xe9, 0xda, 0xc5, 0x74, - 0x6f, 0x7e, 0xb4, 0xa1, 0x4f, 0xbb, 0xfe, 0x8b, 0x36, 0x74, 0x2a, 0x4e, 0xee, 0xc6, 0x85, 0x38, - 0x05, 0x74, 0xfe, 0x5c, 0xf2, 0xca, 0x39, 0xdd, 0xab, 0xca, 0xa4, 0x30, 0xf9, 0xee, 0xf1, 0x3b, - 0xdd, 0x2c, 0xe0, 0x64, 0x73, 0x88, 0x9e, 0x80, 0x0f, 0xbf, 0xf8, 0x5e, 0x1a, 0x8b, 0x05, 0xea, - 0x9a, 0x9a, 0xae, 0x82, 0xeb, 0x6d, 0x04, 0xbf, 0xa8, 0x25, 0xdf, 0x54, 0x17, 0x92, 0x3d, 0x52, - 0x4e, 0x3c, 0x93, 0xc6, 0x5a, 0xd8, 0x50, 0xf8, 0x57, 0x42, 0xf2, 0x02, 0x9e, 0xbb, 0xf6, 0x44, - 0xd7, 0x0d, 0x59, 0xdf, 0x77, 0x3b, 0x23, 0x54, 0x7b, 0xa7, 0x67, 0x75, 0xf3, 0xe5, 0x75, 0x3e, - 0x9d, 0xdc, 0xe0, 0xdc, 0x75, 0xb8, 0x93, 0xf0, 0xd2, 0x5b, 0x03, 0x9c, 0x56, 0x4d, 0x22, 0xd9, - 0xfd, 0x42, 0xb2, 0xcf, 0xc9, 0xb4, 0x3f, 0xe5, 0x32, 0x01, 0x75, 0x54, 0xa4, 0xdf, 0xa3, 0x43, - 0xcd, 0x77, 0x25, 0x87, 0xb9, 0x74, 0x07, 0x71, 0xe8, 0xa6, 0x82, 0x82, 0x14, 0x16, 0x94, 0x45, - 0x6a, 0xb1, 0x42, 0xfe, 0x7b, 0xbf, 0x08, 0xa2, 0x1d, 0x42, 0xc2, 0x79, 0x6e, 0xec, 0x50, 0x71, - 0x57, 0xa5, 0x81, 0xbf, 0xe4, 0x52, 0x68, 0xf1, 0xd4, 0xc9, 0xdb, 0x34, 0x2d, 0x9e, 0xda, 0x2f, - 0x29, 0xda, 0x43, 0x6a, 0xc6, 0x13, 0x09, 0x9e, 0xf1, 0xfb, 0xe1, 0x6b, 0x9b, 0x48, 0x5d, 0x8e, - 0xcb, 0xc0, 0xb3, 0x0f, 0x48, 0x67, 0x8e, 0x53, 0xd7, 0x51, 0x8e, 0xf4, 0x44, 0x1d, 0xcf, 0xc4, - 0x03, 0x0d, 0x64, 0x68, 0xb9, 0x62, 0x2b, 0x0b, 0x31, 0xf1, 0xc8, 0x22, 0xce, 0xbe, 0xc5, 0xa6, - 0x06, 0x4f, 0x43, 0x9a, 0x1b, 0xa5, 0xfc, 0xa6, 0xac, 0xe4, 0x94, 0x5e, 0x4b, 0x80, 0x65, 0xfe, - 0xb4, 0xeb, 0xd4, 0x4d, 0x0e, 0x66, 0x01, 0x1d, 0x2b, 0x31, 0x7d, 0xfc, 0x3a, 0xb2, 0x63, 0x45, - 0x5b, 0x3a, 0x64, 0xd1, 0xc8, 0x25, 0x1a, 0xa6, 0x6c, 0x96, 0xa5, 0x9c, 0x20, 0xfc, 0xf8, 0x8a, - 0x0d, 0x5b, 0x83, 0x19, 0xd4, 0xde, 0x01, 0xc3, 0x22, 0x06, 0x6c, 0x0b, 0x0a, 0x17, 0x9c, 0x77, - 0x1f, 0xc0, 0x53, 0x07, 0xc7, 0x6f, 0xe3, 0xdf, 0x61, 0x6e, 0x21, 0x0e, 0x8f, 0x26, 0x3b, 0x89, - 0x3b, 0x7b, 0x11, 0x7a, 0xf2, 0x88, 0x29, 0x98, 0xff, 0xec, 0x4b, 0x95, 0xee, 0x8b, 0xc7, 0xde, - 0x60, 0x0a, 0x49, 0x0e, 0x4f, 0xa3, 0x91, 0xa9, 0xfc, 0x97, 0x4a, 0x34, 0xe8, 0x00, 0x8f, 0x38, - 0xa6, 0x91, 0xe5, 0xde, 0xfe, 0x2d, 0x20, 0xde, 0xd8, 0x9b, 0x6a, 0x97, 0x14, 0x3a, 0xaf, 0x2f, - 0x47, 0x8a, 0x66, 0x22, 0x03, 0x68, 0x4b, 0x9b, 0xe4, 0xbd, 0x98, 0x2e, 0x5f, 0x21, 0x63, 0x5a, - 0x9a, 0x70, 0x27, 0x41, 0x46, 0x51, 0x27, 0xbb, 0xa1, 0xb6, 0xd5, 0x2d, 0xdf, 0x09, 0x64, 0xd5, - 0xdb, 0x0c, 0x2f, 0x4c, 0x00, 0x55, 0x45, 0xd1, 0x12, 0xd7, 0xdb, 0x81, 0x09, 0x40, 0x59, 0xba, - 0x93, 0xe8, 0xfc, 0x0c, 0x1a, 0x9e, 0x00, 0xd9, 0xf7, 0xc5, 0x68, 0x23, 0x16, 0x10, 0x51, 0xba, - 0xb0, 0x0c, 0x67, 0x56, 0x6d, 0xd4, 0x81, 0x88, 0xa1, 0x6f, 0xcc, 0x9c, 0x54, 0x3b, 0x5a, 0xc0, - 0x27, 0x90, 0xaa, 0xf1, 0x10, 0xf7, 0x28, 0x56, 0xec, 0x49, 0x05, 0x41, 0x88, 0x24, 0x9a, 0x8b, - 0x62, 0x5f, 0xe1, 0x9c, 0xa6, 0xd7, 0x23, 0x08, 0x80, 0xf5, 0x85, 0x4d, 0xce, 0xa4, 0xf5, 0x11, - 0xc0, 0x4b, 0xd3, 0x64, 0xe4, 0x2e, 0x08, 0x3b, 0xea, 0x33, 0x46, 0xaf, 0x92, 0xec, 0x61, 0xc8, - 0x14, 0xee, 0x6f, 0x90, 0x5a, 0xe8, 0x3e, 0xcb, 0xe1, 0x41, 0xd8, 0x5f, 0xab, 0xac, 0x5b, 0xe7, - 0x61, 0x09, 0x92, 0x62, 0xc8, 0x42, 0x12, 0x3f, 0x9d, 0x17, 0x11, 0x17, 0x1d, 0x89, 0x1c, 0x59, - 0x55, 0x42, 0xec, 0x37, 0x7b, 0xdc, 0x30, 0xe7, 0x01, 0x8f, 0x76, 0x6c, 0xda, 0xb0, 0x45, 0x50, - 0x02, 0x8d, 0x27, 0xea, 0x55, 0x04, 0x11, 0xf6, 0xf3, 0x3f, 0xca, 0xed, 0xef, 0x8c, 0xf6, 0xb6, - 0xd5, 0x83, 0x46, 0xa1, 0x56, 0xd9, 0xc5, 0xa5, 0x65, 0x45, 0x9c, 0x50, 0x3e, 0x9e, 0xc6, 0xd0, - 0x83, 0x8d, 0x13, 0xd0, 0x6a, 0x21, 0x30, 0x44, 0x70, 0x6a, 0x95, 0xf2, 0x48, 0x18, 0x84, 0xe5, - 0x60, 0xa4, 0xb3, 0xe5, 0x74, 0xe0, 0x8a, 0x47, 0x58, 0x82, 0x89, 0xb7, 0x16, 0xc0, 0x1a, 0x0f, - 0x0f, 0x35, 0x56, 0xa3, 0x0c, 0xdb, 0x12, 0xc0, 0x02, 0x8f, 0x1a, 0x72, 0xd1, 0x73, 0xbf, 0xf0, - 0x67, 0x94, 0xaa, 0xc8, 0x73, 0x5b, 0x95, 0x61, 0x5a, 0xca, 0x41, 0xf5, 0xe9, 0xc6, 0x38, 0x21, - 0x67, 0x1b, 0xe7, 0xc5, 0x7b, 0x0d, 0x06, 0x60, 0x6d, 0x31, 0x40, 0x6e, 0xa5, 0xd6, 0xfa, 0xe1, - 0xd1, 0x85, 0x8e, 0x52, 0x2d, 0xf5, 0x06, 0x90, 0xf8, 0x55, 0xf9, 0x1e, 0x8e, 0x7f, 0xd5, 0xc7, - 0x32, 0x0a, 0x93, 0xb8, 0xe0, 0xe3, 0x1c, 0xe1, 0xa0, 0xfe, 0xa6, 0x11, 0x4b, 0x08, 0x14, 0x47, - 0x10, 0x56, 0xc5, 0x62, 0x38, 0x22, 0x12, 0xfc, 0x2b, 0x9a, 0x9e, 0xf2, 0x19, 0xe7, 0xa4, 0xa2, - 0x0f, 0xb8, 0x32, 0xeb, 0x42, 0x77, 0x3c, 0xb2, 0x41, 0xbf, 0x3c, 0x05, 0x19, 0xf3, 0x6a, 0x50, - 0x74, 0x41, 0x0e, 0x02, 0xab, 0x1a, 0xc7, 0x69, 0x04, 0x76, 0xb4, 0xb2, 0x45, 0x6f, 0x05, 0x92, - 0x77, 0x83, 0x9b, 0xc2, 0x4b, 0xeb, 0x30, 0xf1, 0x8e, 0xf0, 0x2c, 0xa8, 0x52, 0xdf, 0xcf, 0x0f, - 0xd4, 0x63, 0xb7, 0x55, 0x9e, 0x8d, 0xd9, 0xc0, 0xef, 0x02, 0xaa, 0x74, 0x76, 0x43, 0x4b, 0x60, - 0x53, 0x04, 0xce, 0x21, 0xa5, 0xa0, 0x1c, 0x48, 0xca, 0x64, 0xe3, 0xc7, 0x18, 0xc2, 0x67, 0x95, - 0xba, 0x85, 0xe9, 0x87, 0xee, 0xd8, 0x03, 0x07, 0xc4, 0xe7, 0x6a, 0xf8, 0x83, 0xb4, 0xbc, 0xb6, - 0x82, 0x9e, 0xc9, 0x1e, 0xe3, 0xa9, 0x36, 0x22, 0x77, 0xc4, 0x98, 0x3c, 0x50, 0xfb, 0x6e, 0xd9, - 0x42, 0x2a, 0x48, 0xb6, 0xe8, 0x33, 0x7c, 0xc4, 0x30, 0xd7, 0xc0, 0x59, 0x6d, 0x5c, 0x74, 0x93, - 0x8b, 0x70, 0x28, 0x25, 0xcc, 0x52, 0x3d, 0xb1, 0xa8, 0xa6, 0x60, 0x39, 0x3a, 0x2d, 0xf6, 0x53, - 0x0e, 0x34, 0x28, 0xe1, 0x2b, 0x89, 0x08, 0x27, 0x3a, 0x28, 0x51, 0xef, 0x20, 0xf9, 0x9c, 0x36, - 0xb1, 0x2c, 0xeb, 0x6a, 0xeb, 0x60, 0x08, 0x0b, 0x25, 0xac, 0x34, 0x4d, 0x21, 0xea, 0x2d, 0x27, - 0x98, 0x62, 0x14, 0x68, 0x41, 0x94, 0x66, 0x20, 0x0d, 0x52, 0x32, 0x0d, 0x71, 0x68, 0x1a, 0x44, - 0x13, 0x47, 0xda, 0x22, 0xd6, 0xf5, 0x3a, 0x3a, 0x05, 0x9f, 0xfc, 0x62, 0xbc, 0x76, 0xd9, 0x37, - 0x7f, 0x73, 0x2b, 0x8d, 0x83, 0xa5, 0x81, 0xf3, 0x98, 0x95, 0x56, 0x99, 0x19, 0x73, 0xd7, 0x24, - 0xf7, 0x62, 0x79, 0xf5, 0x7b, 0x2e, 0x05, 0x41, 0x65, 0x72, 0xfb, 0x6a, 0xd1, 0xd2, 0xe9, 0x9c, - 0x08, 0x53, 0x8d, 0x08, 0x84, 0x27, 0xe7, 0x6a, 0xda, 0x99, 0xf2, 0xbf, 0x13, 0xb4, 0x1f, 0xa8, - 0x5f, 0x21, 0x40, 0xc0, 0x64, 0xb4, 0x0a, 0x6a, 0x2f, 0x88, 0x09, 0xff, 0x82, 0x19, 0x9b, 0xec, - 0x4f, 0xa0, 0xdf, 0x73, 0xb2, 0x41, 0x00, 0x09, 0xa6, 0xff, 0x38, 0x58, 0x68, 0x44, 0xe0, 0x67, - 0xda, 0xd7, 0x57, 0xd9, 0x9c, 0xf6, 0x0a, 0xd6, 0x9f, 0x6a, 0x3b, 0x98, 0x59, 0xdd, 0xdf, 0xe2, - 0x10, 0x56, 0xd5, 0xf3, 0x51, 0x20, 0x7e, 0xc5, 0x78, 0x0d, 0x18, 0xcf, 0x8f, 0x0c, 0x01, 0xf2, - 0xaa, 0xa2, 0x05, 0x9c, 0x65, 0x8e, 0x10, 0x86, 0x0a, 0x2c, 0x6c, 0x45, 0x7b, 0x6d, 0x03, 0xdf, - 0x57, 0xd3, 0x36, 0x21, 0xee, 0xd1, 0xd1, 0x81, 0x5e, 0x27, 0x86, 0xbc, 0x76, 0x70, 0x85, 0xe0, - 0x95, 0x46, 0xc7, 0xc8, 0x8b, 0x95, 0x28, 0x39, 0xc8, 0x55, 0xf9, 0x61, 0x7c, 0xd5, 0x37, 0x48, - 0xad, 0x68, 0x1c, 0x4e, 0x84, 0x38, 0x48, 0x34, 0xad, 0x24, 0xab, 0xfa, 0x1d, 0x6f, 0xda, 0x2e, - 0x41, 0xc4, 0xcc, 0x5c, 0x3b, 0xaf, 0x32, 0xb7, 0x13, 0x3d, 0x0a, 0x44, 0x83, 0x01, 0x78, 0x07, - 0xfe, 0x6f, 0xae, 0xfe, 0x11, 0xa4, 0x29, 0x54, 0x7d, 0x83, 0x8a, 0xd4, 0xed, 0xba, 0x93, 0x13, - 0x60, 0x3a, 0xd4, 0xa9, 0xa4, 0x63, 0x3e, 0x06, 0x81, 0xa0, 0x31, 0x8b, 0xc2, 0x25, 0x70, 0xaa, - 0xc8, 0x41, 0xcd, 0xce, 0x55, 0x9b, 0x6a, 0x6f, 0x75, 0x01, 0xcb, 0xd4, 0xde, 0x6b, 0xcc, 0x38, - 0xe5, 0x14, 0x18, 0xe4, 0x53, 0xac, 0x26, 0x08, 0x1e, 0x07, 0x78, 0x3c, 0xd4, 0x17, 0xdd, 0x40, - 0x50, 0x3c, 0x94, 0x46, 0x6b, 0xc4, 0xf3, 0x7b, 0xdd, 0x2d, 0xe3, 0xe9, 0x0e, 0x23, 0x44, 0x39, - 0xbc, 0x97, 0xa4, 0xa0, 0xda, 0x84, 0x20, 0xec, 0x94, 0xce, 0x0e, 0x04, 0xd4, 0xb0, 0x61, 0xb4, - 0x4f, 0xa7, 0x08, 0x71, 0xd6, 0x8e, 0x48, 0x6f, 0x88, 0xd4, 0x19, 0x60, 0x0a, 0x91, 0x77, 0x99, - 0xbb, 0xce, 0x30, 0xb8, 0x36, 0x1b, 0x0c, 0x13, 0x0e, 0x2d, 0x79, 0xc6, 0xe6, 0x79, 0xa4, 0xd7, - 0x4d, 0xea, 0x8e, 0xa2, 0xc1, 0x40, 0xbd, 0x2b, 0xde, 0x04, 0x78, 0xa6, 0x59, 0x8a, 0x10, 0xac, - 0xc3, 0xf6, 0x53, 0x71, 0xfe, 0x79, 0x0f, 0x79, 0x37, 0xd5, 0xbf, 0xdd, 0xab, 0xad, 0xac, 0x9e, - 0x12, 0xac, 0xbd, 0xd5, 0x06, 0x26, 0x35, 0xab, 0xb1, 0x0d, 0x26, 0x5e, 0x87, 0x3a, 0xa0, 0x07, - 0xb0, 0xb5, 0x72, 0xc8, 0xad, 0x43, 0x2b, 0x87, 0xb1, 0x91, 0xf4, 0x1c, 0x42, 0xd8, 0x51, 0xa6, - 0x6e, 0xf6, 0xa7, 0xff, 0x53, 0xd8, 0xa5, 0x11, 0xce, 0x2c, 0x01, 0xf4, 0x1d, 0x22, 0x23, 0x4d, - 0xcb, 0x27, 0x61, 0x06, 0xdb, 0x9d, 0x3c, 0x99, 0x0c, 0x5e, 0x1f, 0xca, 0x13, 0xde, 0x97, 0xdf, - 0xbd, 0x28, 0x72, 0xdc, 0x2d, 0x69, 0x9c, 0x3b, 0x6a, 0xa2, 0x0c, 0x5c, 0xf6, 0xfa, 0x2f, 0xc5, - 0xe6, 0xd6, 0x6c, 0xcd, 0x1a, 0xfe, 0x39, 0xed, 0x31, 0x72, 0x26, 0xbb, 0xa5, 0xfd, 0x2a, 0x97, - 0x0a, 0xdb, 0xa5, 0x54, 0xb1, 0x44, 0x00, 0x3f, 0x9b, 0x79, 0xa2, 0xda, 0xc3, 0xc1, 0x4d, 0xdf, - 0x70, 0x43, 0xc9, 0x0b, 0xdb, 0x4a, 0x24, 0xf7, 0xba, 0x4b, 0xac, 0x46, 0x78, 0x42, 0x3b, 0x66, - 0xe3, 0x2d, 0x3a, 0x42, 0x9a, 0x84, 0x3c, 0x5b, 0x36, 0x6f, 0x66, 0x14, 0x58, 0xec, 0x60, 0x4b, - 0x67, 0xfb, 0x6a, 0x34, 0x2c, 0x6a, 0x15, 0xb7, 0xc6, 0x7b, 0x0a, 0xe3, 0x5b, 0x9a, 0xcd, 0x84, - 0x2e, 0xab, 0x18, 0x8f, 0x08, 0x07, 0xe2, 0x25, 0xb6, 0x3d, 0x21, 0x0f, 0x59, 0xb7, 0x92, 0xaa, - 0x4f, 0x79, 0xcd, 0x60, 0x7e, 0x0a, 0x0a, 0x85, 0xff, 0x4d, 0x0d, 0x01, 0x0f, 0xe2, 0xcf, 0x97, - 0xee, 0x13, 0x75, 0xfc, 0x91, 0x80, 0x0a, 0x96, 0x86, 0x6c, 0x88, 0x09, 0xeb, 0x5c, 0x71, 0x6b, - 0x24, 0x51, 0xec, 0xd3, 0xa4, 0x83, 0x14, 0x47, 0x8b, 0xa0, 0x21, 0x95, 0x38, 0xf3, 0x0f, 0x56, - 0x81, 0xb5, 0x93, 0xfe, 0xe1, 0x63, 0x8f, 0x88, 0x6b, 0x85, 0x38, 0xce, 0x3c, 0x5c, 0xea, 0x46, - 0x73, 0xb8, 0x00, 0xd9, 0x5d, 0xa8, 0x3f, 0x76, 0xfd, 0xdc, 0x9e, 0x78, 0x90, 0x83, 0xd2, 0x29, - 0xb2, 0xbd, 0x86, 0x85, 0x58, 0x65, 0x33, 0xb7, 0x01, 0xab, 0x68, 0x84, 0xc5, 0xab, 0x7a, 0x77, - 0x8e, 0x4b, 0xf2, 0x27, 0x3d, 0x44, 0x3e, 0xa4, 0x4e, 0x19, 0x20, 0xde, 0xaa, 0xe2, 0x28, 0xf2, - 0x85, 0x86, 0xa6, 0x92, 0x2a, 0xce, 0x88, 0xae, 0x9f, 0xfe, 0xff, 0xac, 0x1a, 0xbf, 0x78, 0x69, - 0xe4, 0x98, 0xb5, 0xa1, 0x54, 0x97, 0x05, 0x25, 0x70, 0x3e, 0x67, 0x00, 0x96, 0xc5, 0xe0, 0x39, - 0x9c, 0x95, 0x92, 0x7d, 0xd7, 0x23, 0x83, 0xb9, 0xe2, 0xf3, 0xbb, 0x65, 0x98, 0xcc, 0xda, 0x47, - 0xf2, 0xd3, 0x59, 0x43, 0x34, 0x92, 0x32, 0x03, 0x70, 0x5f, 0x5f, 0xcd, 0x8c, 0xba, 0xc6, 0x97, - 0x48, 0x20, 0x18, 0x8e, 0xe2, 0xfc, 0x96, 0xc9, 0x6a, 0x4a, 0xcf, 0x4c, 0xf8, 0x68, 0x55, 0x3c, - 0x80, 0x8f, 0x69, 0x41, 0xe2, 0xf1, 0x08, 0x90, 0xe4, 0xa0, 0xf4, 0x63, 0x04, 0x4f, 0x64, 0x16, - 0xfc, 0xd5, 0x32, 0xf0, 0x87, 0x57, 0x60, 0x28, 0x85, 0xfc, 0x1f, 0x8c, 0x42, 0xec, 0xc1, 0x41, - 0x93, 0x32, 0x0b, 0x4b, 0x8e, 0xbc, 0x18, 0xc7, 0x15, 0xd4, 0xe1, 0x99, 0x3f, 0x69, 0x74, 0x05, - 0x44, 0xd1, 0xd7, 0x83, 0xc0, 0x01, 0x00, 0x34, 0x0e, 0x44, 0x56, 0xf5, 0xe2, 0x6c, 0xfe, 0x26, - 0xfb, 0x10, 0x2a, 0xfc, 0xea, 0xb6, 0x1f, 0xef, 0x62, 0xbe, 0x39, 0x0d, 0xa2, 0xfc, 0xea, 0x72, - 0x2d, 0xa6, 0x1e, 0x5c, 0x25, 0x0f, 0xcc, 0xe6, 0xad, 0xc5, 0xe6, 0x53, 0xc9, 0x1c, 0x46, 0x4a, - 0x89, 0xaf, 0x58, 0xf9, 0xa3, 0x09, 0x0b, 0x6e, 0xdf, 0x29, 0xcd, 0xfc, 0x4c, 0xb8, 0x9b, 0x3e, - 0x0e, 0x5b, 0xdb, 0x4e, 0x4b, 0x82, 0x36, 0x7b, 0x01, 0xe9, 0x83, 0x75, 0x5a, 0xfc, 0xe5, 0x90, - 0xc3, 0xe9, 0xc2, 0x6f, 0x15, 0x8f, 0x01, 0xc5, 0x8a, 0x0a, 0xea, 0x73, 0x02, 0xc0, 0xa4, 0x7a, - 0x18, 0x32, 0x30, 0xb9, 0x05, 0xb7, 0x03, 0x02, 0xef, 0xac, 0x2f, 0xdc, 0x5c, 0x40, 0x2a, 0x56, - 0x0b, 0xe5, 0xe3, 0x70, 0x85, 0x88, 0x1d, 0xd9, 0x7d, 0xa0, 0x40, 0x8d, 0x37, 0x85, 0xdf, 0xd0, - 0xca, 0xd6, 0x1f, 0xe7, 0x67, 0xfa, 0xc5, 0xb8, 0x92, 0xdd, 0x4f, 0x26, 0x4d, 0x77, 0xbe, 0x51, - 0xa8, 0x0b, 0x1d, 0x2c, 0xb4, 0x52, 0x33, 0x8d, 0x95, 0xaf, 0xf1, 0xbd, 0x6e, 0x91, 0xde, 0xac, - 0xf6, 0xba, 0x0a, 0x5c, 0x9b, 0x67, 0x20, 0x21, 0xd1, 0x33, 0xf7, 0x0f, 0xf4, 0xb1, 0x2a, 0x6b, - 0x5b, 0x30, 0x31, 0x01, 0x1d, 0xb3, 0x10, 0xec, 0xef, 0x05, 0x24, 0x72, 0xd6, 0xb5, 0x14, 0x48, - 0xef, 0xc7, 0x93, 0xf8, 0xf4, 0x76, 0x9a, 0x24, 0x01, 0xe3, 0x26, 0xca, 0x30, 0xa0, 0xc5, 0x1c, - 0x7e, 0xc2, 0x19, 0x7a, 0x87, 0xf9, 0x1d, 0xd3, 0xa4, 0xae, 0x81, 0xb3, 0x06, 0x2f, 0xbd, 0xc3, - 0xd5, 0xb6, 0xd7, 0xa7, 0x82, 0x8d, 0xab, 0x0e, 0x34, 0x9e, 0xe2, 0x37, 0x2b, 0x0b, 0x49, 0x94, - 0x1f, 0x25, 0x33, 0x27, 0xdf, 0x15, 0x3e, 0x2c, 0x90, 0x60, 0x19, 0x28, 0xcc, 0xd1, 0x0f, 0xc8, - 0x67, 0x5e, 0x5c, 0x63, 0x42, 0x14, 0x7c, 0xfb, 0x22, 0x21, 0x43, 0x7f, 0x31, 0x3a, 0xa5, 0xe4, - 0x87, 0x75, 0xfe, 0x08, 0x45, 0xa7, 0x32, 0xd9, 0x5f, 0x54, 0x93, 0x64, 0xce, 0xaf, 0xca, 0x4a, - 0x1e, 0xd9, 0xde, 0x5a, 0x64, 0x9f, 0x77, 0x93, 0x49, 0x54, 0x7a, 0xa9, 0x96, 0xc0, 0x0e, 0xf4, - 0x0c, 0xc2, 0x43, 0x33, 0x42, 0x92, 0x3f, 0x11, 0x96, 0x8b, 0x50, 0x11, 0xa6, 0x9c, 0xe7, 0x38, - 0x40, 0xaa, 0x19, 0x56, 0x6e, 0x6e, 0x6a, 0xe6, 0x9f, 0xa4, 0xbe, 0x10, 0xc5, 0xf8, 0x72, 0xe0, - 0xaf, 0xec, 0x51, 0xa0, 0xd9, 0x28, 0x08, 0xe9, 0x16, 0x1c, 0x50, 0x97, 0xe7, 0x18, 0x38, 0xd0, - 0x05, 0x35, 0x49, 0x72, 0xfa, 0xe4, 0x7b, 0x6e, 0x52, 0x92, 0x41, 0x1d, 0xcd, 0x08, 0x79, 0xd7, - 0x75, 0xd8, 0x9e, 0x02, 0x70, 0xaf, 0x09, 0x6c, 0xac, 0x1c, 0x33, 0xa1, 0x7e, 0x56, 0xcd, 0xad, - 0x4e, 0x4d, 0xc8, 0xae, 0xa4, 0xac, 0xbf, 0x29, 0x52, 0xa0, 0x1e, 0x29, 0x76, 0x08, 0xc1, 0x2d, - 0x7f, 0xcf, 0x2a, 0x63, 0xde, 0xd0, 0x38, 0xa0, 0xf8, 0xf5, 0xc0, 0x0e, 0x1b, 0xce, 0x32, 0xe4, - 0x67, 0xa6, 0x9d, 0xf1, 0xb5, 0x02, 0x91, 0xb0, 0x4c, 0xbf, 0xf9, 0x38, 0x33, 0x47, 0xf8, 0x82, - 0x8f, 0x17, 0xc0, 0xd8, 0xa6, 0xe4, 0x0c, 0x85, 0xa7, 0xc2, 0x81, 0xf3, 0x99, 0x6e, 0x8c, 0x4b, - 0x40, 0x9e, 0x7c, 0x31, 0x13, 0x03, 0x36, 0x33, 0x0c, 0x95, 0xcd, 0xe3, 0x35, 0x4c, 0x73, 0x83, - 0x3d, 0x80, 0xaa, 0xa7, 0xbb, 0x15, 0x1b, 0x7e, 0xbd, 0x23, 0x31, 0xe7, 0x50, 0x51, 0xe0, 0x51, - 0xaf, 0xf1, 0x74, 0x2d, 0x4f, 0xa7, 0x6b, 0x81, 0x5a, 0x07, 0xd6, 0x0f, 0xb4, 0xdf, 0x95, 0x5d, - 0xf8, 0x7c, 0x47, 0xea, 0x0c, 0x90, 0x3d, 0x73, 0x2d, 0x05, 0x07, 0x50, 0xc9, 0x92, 0x6c, 0xdf, - 0xd3, 0xbc, 0xcc, 0xb0, 0x60, 0xfe, 0xf4, 0x6b, 0xc9, 0x9c, 0x1d, 0x99, 0x1f, 0x45, 0x66, 0xe9, - 0x66, 0xb3, 0xd8, 0x3f, 0x87, 0x32, 0x09, 0x0d, 0x8e, 0xe4, 0xb6, 0x68, 0xd8, 0x5c, 0x13, 0x58, - 0x16, 0x27, 0xa3, 0x9a, 0x51, 0x3a, 0x8a, 0xac, 0x03, 0x7e, 0x65, 0x32, 0x0e, 0xff, 0xb6, 0x2b, - 0x8f, 0xe1, 0x65, 0x03, 0x1d, 0x84, 0x31, 0x7b, 0x08, 0x29, 0x55, 0xa7, 0x1f, 0x1b, 0x95, 0x1d, - 0x5e, 0x68, 0x8f, 0x6f, 0xc7, 0x52, 0x55, 0x09, 0x8a, 0x8e, 0xff, 0xd3, 0x5b, 0x41, 0x60, 0xb8, - 0x3a, 0x05, 0x5b, 0xb9, 0xe0, 0xbe, 0x0f, 0xd8, 0xf7, 0x01, 0xb5, 0xeb, 0xc9, 0xed, 0x8e, 0xe4, - 0x85, 0x69, 0x18, 0xdd, 0xa1, 0x27, 0xf0, 0x9a, 0x13, 0x51, 0xe7, 0x22, 0xdf, 0x04, 0xcd, 0xc3, - 0xd9, 0xa8, 0x73, 0xdb, 0xe8, 0xb7, 0x39, 0x66, 0x9b, 0x36, 0x15, 0xad, 0x14, 0xad, 0x9d, 0xf0, - 0x64, 0x69, 0xa3, 0x6a, 0xbb, 0x59, 0xfb, 0xce, 0x00, 0xac, 0x23, 0xb4, 0x7f, 0x3a, 0xa2, 0xf9, - 0x55, 0x4b, 0x7b, 0x0f, 0x9d, 0x5a, 0x2b, 0xc7, 0x5e, 0xb7, 0xfb, 0x21, 0x10, 0xf4, 0x0d, 0x2e, - 0x62, 0xca, 0x7b, 0x30, 0x0f, 0xdf, 0xa7, 0xf3, 0xd2, 0xf4, 0x6c, 0xd8, 0x14, 0x76, 0x02, 0x3b, - 0x43, 0x59, 0xd7, 0xa9, 0x19, 0x81, 0x1d, 0x65, 0xe8, 0xc3, 0x9b, 0x69, 0xf2, 0xd4, 0x73, 0xf3, - 0xf8, 0x84, 0xaa, 0xf9, 0x1e, 0xa9, 0x1e, 0xcd, 0x84, 0xc4, 0x45, 0xa6, 0x34, 0xf2, 0x8a, 0x93, - 0x3b, 0xb6, 0x2b, 0xc8, 0x49, 0x48, 0x1c, 0xd9, 0x70, 0x8e, 0xf2, 0x07, 0x2b, 0xf5, 0x22, 0x63, - 0x3f, 0x0c, 0x2b, 0xb7, 0xd6, 0x8a, 0x6f, 0x64, 0x41, 0x33, 0x7a, 0xd7, 0x02, 0x13, 0x50, 0xec, - 0x36, 0xa9, 0x6a, 0x31, 0x26, 0xe3, 0x00, 0xa7, 0x67, 0xbb, 0xac, 0x22, 0xee, 0xbc, 0x33, 0xb0, - 0x4f, 0xdf, 0x2b, 0x36, 0xdf, 0x8f, 0x1a, 0x6a, 0xc5, 0x21, 0x78, 0xd0, 0x8c, 0x5c, 0x71, 0xe5, - 0xde, 0xa3, 0x85, 0x39, 0x5b, 0x62, 0x3f, 0xea, 0xae, 0x03, 0x14, 0x67, 0x4e, 0xc7, 0x9b, 0x4a, - 0x5d, 0x26, 0xca, 0x1f, 0xdf, 0xa0, 0x8f, 0x18, 0x2b, 0xf4, 0x2d, 0x4a, 0xd3, 0x9c, 0x07, 0x7c, - 0xb7, 0xa6, 0x1e, 0xcb, 0xb6, 0x48, 0x02, 0x79, 0x6a, 0xf3, 0x67, 0xf4, 0xe2, 0xe7, 0x5f, 0x0e, - 0x3a, 0x27, 0xb5, 0xff, 0xc4, 0xef, 0x5b, 0xf6, 0x02, 0x64, 0x73, 0x94, 0x8c, 0x50, 0x29, 0x86, - 0xcc, 0x02, 0x6e, 0xc4, 0x70, 0xa8, 0x36, 0xc9, 0x3f, 0x32, 0xc3, 0x1d, 0x21, 0x54, 0x64, 0x9d, - 0xdc, 0x71, 0x30, 0xd3, 0x97, 0x4c, 0x4c, 0xd2, 0xfa, 0xb9, 0x80, 0x11, 0x12, 0x47, 0xa3, 0x5d, - 0x85, 0x61, 0xbe, 0x6c, 0x8c, 0xdc, 0x12, 0x59, 0x1d, 0xbb, 0x81, 0xe6, 0x5e, 0x99, 0xf9, 0x78, - 0xce, 0xe1, 0x8b, 0x4f, 0x6a, 0x01, 0xce, 0xb4, 0xc1, 0xb0, 0xf8, 0x50, 0x4c, 0x4d, 0x48, 0x1e, - 0xea, 0x94, 0x6f, 0xab, 0x26, 0xf8, 0x0c, 0x74, 0xd2, 0xd3, 0x75, 0x6a, 0x83, 0x96, 0xfd, 0xb4, - 0x5e, 0xfb, 0x06, 0x63, 0xf7, 0x1c, 0xa9, 0x15, 0xc9, 0x72, 0xc2, 0xf7, 0x36, 0x03, 0x66, 0xca, - 0x66, 0x3b, 0x8e, 0x39, 0x59, 0x51, 0x27, 0x87, 0xe7, 0xbb, 0x98, 0xc2, 0xb0, 0xe6, 0x1c, 0xb9, - 0x05, 0xb6, 0xde, 0x55, 0xbb, 0xb8, 0xff, 0x42, 0x79, 0xf1, 0xa3, 0x09, 0xa6, 0xe2, 0xc9, 0xa5, - 0x58, 0x42, 0x9a, 0xdb, 0x08, 0xd3, 0x29, 0x17, 0xc2, 0x91, 0x10, 0xdf, 0x3a, 0xb3, 0x41, 0x3a, - 0x27, 0x73, 0xf7, 0xc7, 0xd9, 0xa4, 0x58, 0xef, 0xd2, 0xcd, 0x2e, 0xe1, 0x42, 0xd4, 0x05, 0x7e, - 0x96, 0x8b, 0x26, 0x99, 0x7c, 0xfc, 0x34, 0x33, 0x18, 0x3b, 0x29, 0x71, 0x3f, 0x39, 0x7a, 0x4c, - 0xf0, 0x01, 0x20, 0xe0, 0x44, 0x5a, 0x88, 0xb6, 0xcc, 0xb6, 0xcd, 0x96, 0x8a, 0x1f, 0x9e, 0xcb, - 0x3c, 0x7f, 0x7e, 0x1a, 0x2c, 0xbf, 0x2a, 0xda, 0xd1, 0x91, 0x53, 0x20, 0x00, 0x10, 0xb4, 0x83, - 0x78, 0x8f, 0xeb, 0xc1, 0x0f, 0xe2, 0x10, 0x14, 0x5d, 0x27, 0x3a, 0x3d, 0x5e, 0x3e, 0x3d, 0xe5, - 0x7c, 0x84, 0xaa, 0x7c, 0x6a, 0xa8, 0x3d, 0x86, 0x0a, 0x79, 0xcc, 0xa1, 0x09, 0x2e, 0x96, 0x41, - 0x41, 0xc5, 0xce, 0x3e, 0x9d, 0x93, 0x20, 0xb0, 0x7a, 0x53, 0xfd, 0x10, 0xba, 0x2f, 0xe4, 0x0f, - 0xfd, 0xbf, 0x55, 0x23, 0x2b, 0x3a, 0x2d, 0xaa, 0x7e, 0xf1, 0xbc, 0x6d, 0x93, 0x57, 0xc7, 0x1b, - 0xd4, 0x28, 0x03, 0x8f, 0xae, 0x3c, 0x90, 0xb2, 0xb1, 0xff, 0x2c, 0x40, 0xa2, 0xd4, 0x0a, 0x55, - 0xde, 0xeb, 0xf7, 0x85, 0xad, 0x6e, 0x13, 0x6e, 0x55, 0x53, 0x06, 0xf1, 0x37, 0x2e, 0x50, 0x78, - 0xe0, 0x6f, 0x27, 0xc1, 0xbe, 0xc5, 0x81, 0xb3, 0x52, 0xd5, 0xc0, 0xe9, 0x98, 0xf5, 0x74, 0x5b, - 0x17, 0xdd, 0x84, 0xbc, 0xed, 0x06, 0x2c, 0xa3, 0xa4, 0x48, 0xc9, 0xf1, 0xa1, 0x9d, 0xf2, 0x48, - 0x23, 0x59, 0x09, 0xd5, 0x88, 0xf1, 0x79, 0xa2, 0x03, 0xe6, 0x8d, 0xe6, 0x3a, 0xb9, 0xd3, 0xeb, - 0xcb, 0xa6, 0x13, 0xd0, 0xef, 0xe3, 0x11, 0x71, 0x0e, 0x1b, 0xf3, 0xd3, 0xa9, 0xc3, 0xfb, 0xc6, - 0xbd, 0xf8, 0xd8, 0x99, 0x41, 0x81, 0x6f, 0xe8, 0x09, 0x7d, 0x0a, 0xcd, 0x91, 0xc0, 0xa2, 0x38, - 0x42, 0x5c, 0x53, 0x19, 0x02, 0x5e, 0x21, 0xab, 0xa1, 0xf1, 0xe8, 0x0d, 0xf0, 0x6d, 0x65, 0xab, - 0x4d, 0x39, 0xa4, 0x05, 0xda, 0x30, 0xc4, 0x4c, 0x94, 0x3a, 0xd8, 0x49, 0x00, 0x39, 0x85, 0xe4, - 0x91, 0x55, 0xf9, 0x40, 0x08, 0x22, 0x04, 0x1a, 0xa5, 0xe2, 0x48, 0x3d, 0x10, 0x76, 0xb4, 0x25, - 0x7f, 0x12, 0xb2, 0xfb, 0xda, 0xa5, 0xa9, 0x18, 0x28, 0x91, 0x1d, 0x86, 0x0f, 0xda, 0x10, 0x53, - 0xa9, 0x99, 0xc1, 0xc8, 0x02, 0x41, 0x3a, 0x42, 0xdc, 0x55, 0x21, 0xca, 0x6e, 0x8a, 0x75, 0x5b, - 0xe1, 0x26, 0xdf, 0x16, 0x48, 0x14, 0xc7, 0x01, 0xad, 0x2f, 0x75, 0x49, 0x64, 0x44, 0xff, 0x5a, - 0xc6, 0x70, 0x89, 0x10, 0x79, 0xac, 0x0e, 0x2f, 0xaf, 0x6d, 0x57, 0xf5, 0x59, 0x6c, 0x79, 0x1b, - 0x9d, 0x4c, 0x39, 0xb3, 0xa5, 0xbf, 0xb6, 0xe0, 0x78, 0x76, 0x81, 0x4f, 0xde, 0xea, 0xa0, 0xdd, - 0x63, 0x25, 0x7c, 0x4f, 0x1d, 0x53, 0x2d, 0x2d, 0x4d, 0x61, 0x72, 0x86, 0x07, 0x6e, 0xd3, 0x23, - 0xe3, 0x79, 0xc4, 0x27, 0xc5, 0xfe, 0x5d, 0x05, 0xb1, 0xe3, 0x45, 0x1b, 0x6c, 0xd7, 0x1e, 0x8f, - 0x62, 0xc2, 0x85, 0x0d, 0x2c, 0xbe, 0x25, 0xc5, 0x38, 0xe9, 0xa2, 0x80, 0x34, 0x4f, 0x4e, 0x30, - 0xff, 0xaf, 0x16, 0x4c, 0x8b, 0xd0, 0xb1, 0x0e, 0x3f, 0x4e, 0xf9, 0x0d, 0x4e, 0x1d, 0x95, 0x49, - 0x66, 0xcf, 0xa0, 0x8f, 0xa3, 0xf6, 0x35, 0xfa, 0x88, 0xa1, 0xf9, 0xfc, 0x34, 0x71, 0xd6, 0xfe, - 0xbc, 0x21, 0x6f, 0xbe, 0xc4, 0xca, 0xd7, 0x85, 0xa3, 0x65, 0x10, 0x5c, 0x46, 0xc9, 0xbd, 0xce, - 0xbf, 0xcc, 0x4c, 0x3c, 0x7e, 0x2a, 0x28, 0x09, 0x6a, 0x73, 0x16, 0x35, 0xf7, 0xe3, 0x4e, 0x8a, - 0xbb, 0x7a, 0x54, 0x2c, 0xe1, 0x18, 0x1c, 0x90, 0x14, 0xe7, 0x5a, 0xe8, 0xd9, 0xc9, 0x29, 0x20, - 0x12, 0x5e, 0x0a, 0xcf, 0xdc, 0xcd, 0x16, 0x86, 0xde, 0x72, 0x0e, 0x41, 0x52, 0x91, 0x74, 0x4c, - 0x68, 0x50, 0xc1, 0x91, 0xcc, 0x92, 0xca, 0x42, 0x8a, 0x6a, 0x1a, 0xfd, 0x37, 0x70, 0x61, 0xab, - 0x18, 0x21, 0x07, 0x0e, 0xc5, 0x62, 0x02, 0xc8, 0xf8, 0xe5, 0xa3, 0x94, 0x38, 0xff, 0x40, 0xbf, - 0xee, 0x77, 0xa1, 0x5f, 0x19, 0x91, 0x26, 0x72, 0xc0, 0x32, 0x1b, 0x8a, 0xab, 0xc3, 0x2a, 0x00, - 0x50, 0xee, 0xd9, 0xc9, 0xa4, 0x07, 0x04, 0x7c, 0xa1, 0xd7, 0xbb, 0xba, 0x46, 0x64, 0xbc, 0x07, - 0x00, 0x30, 0x02, 0x1d, 0xe4, 0x64, 0xc9, 0x0d, 0x2a, 0xfc, 0x3a, 0xdb, 0xeb, 0x73, 0x54, 0x2a, - 0x97, 0x48, 0xa3, 0x06, 0xe7, 0x36, 0x1c, 0xae, 0xbb, 0xe2, 0x3a, 0xa7, 0x4f, 0xa4, 0x39, 0x67, - 0xc3, 0xab, 0x1f, 0x13, 0x30, 0xa2, 0x5c, 0x49, 0x52, 0x04, 0xf5, 0x46, 0x74, 0x50, 0xae, 0xa8, - 0xd3, 0xae, 0x33, 0x84, 0x9f, 0x8c, 0x27, 0xfc, 0x42, 0xa4, 0x44, 0x4f, 0x2d, 0xa2, 0xb9, 0x84, - 0x43, 0x46, 0x87, 0x6b, 0x4e, 0xb3, 0xa4, 0x47, 0x5c, 0xd1, 0xc2, 0xac, 0x0f, 0x34, 0x99, 0x00, - 0xfc, 0xc9, 0xab, 0x85, 0x0e, 0x49, 0x9f, 0xf4, 0x95, 0x7f, 0xc3, 0x8f, 0x35, 0xd0, 0x3c, 0xbe, - 0x7c, 0xbc, 0x2d, 0xe4, 0xd7, 0x03, 0x62, 0x86, 0xd8, 0x4d, 0x3d, 0x65, 0xc0, 0xa3, 0x7d, 0xc1, - 0x83, 0x70, 0xd0, 0x3a, 0x1b, 0xd6, 0x32, 0x46, 0xf4, 0xb6, 0x95, 0x09, 0xf7, 0xca, 0x71, 0xa8, - 0x05, 0x7b, 0xbb, 0xcb, 0x8e, 0x8f, 0x11, 0x79, 0x1a, 0xd1, 0xdd, 0x41, 0x3f, 0x95, 0x2b, 0xdf, - 0x31, 0x11, 0xa2, 0xe4, 0x56, 0x04, 0x11, 0x40, 0x68, 0x6b, 0xa7, 0x22, 0xa3, 0xb7, 0x7a, 0x95, - 0x2d, 0xa7, 0xd3, 0x61, 0x68, 0xb5, 0x26, 0x82, 0x8f, 0xb6, 0x21, 0xb3, 0xae, 0x12, 0x1c, 0xa6, - 0x22, 0x2f, 0xd2, 0x5e, 0x28, 0x14, 0x01, 0x94, 0xb9, 0x56, 0x88, 0x9f, 0x56, 0xd0, 0xee, 0x02, - 0xd3, 0x58, 0x6c, 0x9d, 0xc0, 0x0a, 0xf8, 0x0b, 0xdf, 0xea, 0xf0, 0xf9, 0xe5, 0xbb, 0x64, 0x46, - 0x29, 0x67, 0xa8, 0xaa, 0xb0, 0xb4, 0x24, 0xb2, 0x85, 0x20, 0x14, 0x42, 0x73, 0xe0, 0x53, 0xed, - 0xa0, 0x0f, 0x23, 0x7f, 0xd0, 0x9e, 0x98, 0xd2, 0x69, 0x64, 0x9b, 0xb1, 0x9c, 0xcd, 0x06, 0x8f, - 0x64, 0x52, 0x45, 0x24, 0x13, 0x35, 0x34, 0xbf, 0x52, 0xff, 0x4a, 0x1f, 0x96, 0x6a, 0xc5, 0x38, - 0xb3, 0x50, 0xf6, 0xe3, 0xb0, 0x7b, 0x3f, 0x3e, 0x67, 0xa7, 0x5b, 0x4e, 0x91, 0x27, 0xb5, 0x46, - 0x71, 0x0c, 0x50, 0xb1, 0xfb, 0xb5, 0x90, 0x9a, 0x8d, 0xa5, 0x7b, 0x36, 0x11, 0x97, 0x56, 0xd8, - 0x31, 0x2c, 0x54, 0xe0, 0x12, 0x68, 0x1e, 0x86, 0x8c, 0x10, 0x36, 0xce, 0x12, 0x3b, 0xad, 0x8b, - 0xf1, 0x45, 0x97, 0xb8, 0x76, 0x19, 0x38, 0x99, 0x72, 0x87, 0x78, 0x1d, 0x6e, 0xe6, 0x75, 0x70, - 0x05, 0x3b, 0x1e, 0xfb, 0xe8, 0xba, 0x94, 0x67, 0x6e, 0x3e, 0x32, 0x86, 0xa3, 0x77, 0x07, 0xfc, - 0xa1, 0x05, 0x03, 0x97, 0x72, 0x7b, 0x9b, 0x8e, 0xd0, 0x63, 0x5a, 0xc4, 0x58, 0x1b, 0x5d, 0x95, - 0xe9, 0x49, 0x80, 0x7a, 0xfc, 0xcb, 0x08, 0xa4, 0x4d, 0xf6, 0x5d, 0x73, 0x77, 0xe1, 0x19, 0x1d, - 0xaf, 0x67, 0xa8, 0x6e, 0x37, 0xa9, 0x19, 0xe7, 0xa0, 0x17, 0x86, 0x62, 0x13, 0xde, 0x48, 0x81, - 0x72, 0x3b, 0xc2, 0xba, 0xdb, 0x4c, 0x9b, 0x0b, 0xab, 0x10, 0x2c, 0xf9, 0xc1, 0x0e, 0xc4, 0x2f, - 0x16, 0x35, 0x26, 0x91, 0xf2, 0xf8, 0x33, 0xc4, 0x01, 0x46, 0x3e, 0xb3, 0x21, 0x66, 0x62, 0xf7, - 0x5e, 0xae, 0x53, 0x7e, 0xdf, 0x62, 0xad, 0x96, 0x58, 0xc5, 0x52, 0x46, 0xb4, 0x13, 0x6a, 0x9f, - 0x69, 0x32, 0x55, 0xc8, 0xd4, 0xcd, 0x12, 0xa4, 0x6a, 0x7d, 0x31, 0x6a, 0x6e, 0x13, 0x56, 0xfc, - 0x8d, 0x2c, 0xe8, 0xf4, 0x54, 0x83, 0xaa, 0x2a, 0x00, 0xfd, 0xdd, 0xee, 0x95, 0x27, 0xbe, 0xcf, - 0x58, 0xb1, 0xa5, 0xdf, 0x1e, 0x2b, 0x18, 0x98, 0x3c, 0x6e, 0x1f, 0x5e, 0x93, 0xdf, 0x90, 0x2c, - 0x7d, 0xae, 0x89, 0xa7, 0x56, 0x59, 0x27, 0x5c, 0x15, 0x22, 0xf9, 0xf4, 0xdc, 0x71, 0x00, 0xfe, - 0x69, 0x9c, 0x34, 0x56, 0x07, 0x10, 0x1c, 0x47, 0x47, 0x6c, 0xa0, 0x43, 0x74, 0x68, 0x89, 0x8c, - 0x31, 0xd2, 0x69, 0x11, 0x94, 0x7f, 0x45, 0x01, 0x5a, 0x0e, 0x50, 0x75, 0xf6, 0x70, 0xa5, 0x5f, - 0xc1, 0x78, 0x45, 0xd8, 0x1d, 0x2b, 0xb6, 0xbc, 0x0f, 0xb8, 0xab, 0x13, 0x40, 0xf6, 0xb5, 0x43, - 0x82, 0x7d, 0xe5, 0x53, 0x63, 0x6a, 0xf7, 0xed, 0xf4, 0xf0, 0x56, 0x75, 0xdd, 0xc0, 0x8e, 0xa0, - 0x68, 0x66, 0xf1, 0xce, 0x08, 0x73, 0xbb, 0xd4, 0xff, 0x3e, 0x10, 0xbb, 0xca, 0x51, 0x48, 0x44, - 0xe7, 0x76, 0x37, 0x98, 0x0e, 0x80, 0xa5, 0x00, 0x46, 0xb3, 0x22, 0x02, 0x62, 0xe7, 0xef, 0x24, - 0x3a, 0xeb, 0x9c, 0x53, 0x30, 0x4f, 0x39, 0x38, 0x0b, 0xc0, 0x4c, 0x7b, 0xbf, 0xbf, 0xb4, 0xc8, - 0xf6, 0x5e, 0x69, 0x26, 0xfb, 0xdb, 0x0d, 0x80, 0x94, 0xd3, 0x4e, 0xa0, 0x51, 0x5b, 0xb2, 0x8d, - 0x5c, 0x31, 0xc9, 0x0f, 0x8c, 0xf5, 0xa9, 0x7f, 0x1b, 0xe8, 0x78, 0x51, 0x41, 0xdb, 0xf6, 0x40, - 0x62, 0x5d, 0x9b, 0x49, 0xbe, 0x09, 0x03, 0xc4, 0x43, 0xcc, 0xb1, 0xc5, 0xf8, 0x14, 0x9f, 0x05, - 0xa0, 0x4c, 0x93, 0x49, 0x3c, 0x7a, 0x05, 0xee, 0x35, 0x91, 0x38, 0xc7, 0xb0, 0x8a, 0xea, 0x1b, - 0x01, 0xcc, 0xc7, 0xb5, 0x0e, 0x02, 0xa8, 0xe2, 0xa3, 0x01, 0x81, 0x6c, 0x0a, 0x6a, 0xc3, 0x0d, - 0x0d, 0x4d, 0x58, 0x41, 0xcb, 0xfc, 0x36, 0x1e, 0x15, 0xf4, 0x89, 0xca, 0x1c, 0xbc, 0xd4, 0xd8, - 0x70, 0x36, 0x1d, 0x6d, 0x30, 0x7b, 0x28, 0x8d, 0x94, 0x4d, 0x8e, 0x02, 0xf3, 0x06, 0x44, 0x39, - 0xf4, 0xfe, 0xde, 0x2a, 0x45, 0xf2, 0xb5, 0xcb, 0x44, 0xe2, 0xd7, 0x41, 0x4f, 0xfb, 0x0a, 0x86, - 0xbf, 0x47, 0x21, 0x70, 0x17, 0x4d, 0x33, 0x5e, 0xd7, 0x00, 0x13, 0x47, 0xa3, 0x56, 0x90, 0x04, - 0x43, 0x5c, 0xf8, 0x61, 0x2b, 0xf8, 0x83, 0xe5, 0x5b, 0x48, 0x82, 0x0c, 0xbb, 0x92, 0xf5, 0xdc, - 0x03, 0xd3, 0x9b, 0xc6, 0x12, 0xb7, 0x34, 0x65, 0x28, 0xac, 0x45, 0x11, 0x61, 0x73, 0x58, 0x87, - 0xb2, 0xc7, 0x2c, 0xd8, 0x79, 0x28, 0xa5, 0x1f, 0xd3, 0x0b, 0xb6, 0x7a, 0x30, 0xa1, 0x9c, 0x25, - 0x23, 0x7b, 0x74, 0x17, 0xc4, 0xc6, 0x7c, 0xa9, 0x66, 0xeb, 0xe1, 0x2d, 0x74, 0x82, 0xc7, 0xe8, - 0xb3, 0xa6, 0xcd, 0x92, 0x15, 0x87, 0x0c, 0x2a, 0x0b, 0x04, 0x64, 0xf9, 0x3f, 0x81, 0x95, 0x5c, - 0xb2, 0x1c, 0x6d, 0xf7, 0xa4, 0x0b, 0xb9, 0xcd, 0xfe, 0x05, 0x9c, 0x4a, 0x66, 0xc3, 0xef, 0x0e, - 0x6b, 0xb9, 0xb2, 0x56, 0x1b, 0x82, 0x2f, 0xc1, 0x46, 0xbe, 0x31, 0xcb, 0x50, 0xdf, 0xa6, 0xe5, - 0xa8, 0x97, 0x2e, 0x13, 0xe2, 0xe3, 0x1d, 0x84, 0xa7, 0x4b, 0x45, 0x35, 0xb9, 0x6c, 0xa8, 0x1f, - 0x56, 0x3f, 0x30, 0xa8, 0x6c, 0x32, 0xb8, 0xae, 0xd0, 0x95, 0xd0, 0x5b, 0x8d, 0xec, 0x37, 0xb7, - 0xa7, 0x9f, 0xe6, 0x4f, 0xdc, 0xd1, 0x4a, 0xf9, 0xf0, 0x04, 0x6e, 0x93, 0x57, 0xbb, 0xbe, 0xf9, - 0xd2, 0x37, 0x2e, 0x14, 0x14, 0x54, 0xbe, 0xad, 0x9f, 0xad, 0xdd, 0x1c, 0x8e, 0x07, 0x6f, 0xb7, - 0x28, 0xc7, 0xe7, 0x5a, 0x5d, 0x70, 0x52, 0x96, 0x14, 0x5f, 0x44, 0xcc, 0xa0, 0xac, 0x0b, 0x2c, - 0xac, 0xe6, 0xe8, 0xba, 0x7a, 0x50, 0x29, 0x86, 0x88, 0xe7, 0x0d, 0x5c, 0xef, 0xa4, 0x87, 0x1b, - 0x71, 0xfd, 0xe9, 0x68, 0xb1, 0xae, 0xf6, 0xcd, 0xd7, 0xdf, 0x2a, 0xbf, 0x46, 0x45, 0xf0, 0x45, - 0xae, 0x1a, 0xef, 0x89, 0x31, 0x17, 0x1d, 0x37, 0xba, 0xed, 0x0a, 0x0c, 0xf5, 0x9f, 0x40, 0x4f, - 0x33, 0x80, 0x3a, 0xb4, 0x88, 0xa4, 0x30, 0x25, 0xe8, 0x4f, 0x03, 0xb4, 0x37, 0x12, 0x9d, 0x52, - 0x3e, 0xd5, 0xb8, 0x24, 0xdc, 0xd1, 0x35, 0xe6, 0xda, 0xa1, 0xd2, 0x02, 0x04, 0x58, 0x07, 0xdd, - 0xd0, 0x6a, 0x7b, 0xd6, 0x47, 0x0c, 0xaa, 0xcc, 0xe9, 0xf6, 0x11, 0xd3, 0xbd, 0xf7, 0x09, 0xab, - 0xd2, 0xf3, 0xd1, 0xda, 0x9c, 0xf0, 0x2f, 0x20, 0x14, 0x14, 0x78, 0xf5, 0x31, 0x7b, 0x19, 0x64, - 0x13, 0x1e, 0xbb, 0x18, 0x60, 0x1d, 0xcd, 0xa2, 0x52, 0x2e, 0x64, 0x79, 0xd2, 0xca, 0x81, 0xe5, - 0x6d, 0x4c, 0xe5, 0x52, 0xb5, 0x96, 0x0f, 0xc8, 0x80, 0x1a, 0x27, 0x69, 0x22, 0xef, 0x67, 0xde, - 0x7b, 0xf9, 0xaf, 0xfe, 0x34, 0x88, 0x1e, 0x2a, 0xb8, 0xbe, 0x10, 0xb7, 0x6e, 0xec, 0x73, 0x80, - 0x9d, 0xca, 0x48, 0xbd, 0xd3, 0xf7, 0x3d, 0xbb, 0xa8, 0x7c, 0x73, 0xbb, 0x1f, 0x2d, 0x1b, 0xd9, - 0x85, 0xf6, 0x16, 0x7e, 0xdd, 0x48, 0x87, 0x23, 0x95, 0xe3, 0x79, 0x07, 0xb9, 0xd9, 0x9f, 0xca, - 0x59, 0x2b, 0x7b, 0x82, 0x3e, 0x45, 0x00, 0x1f, 0xff, 0x01, 0x98, 0x56, 0x06, 0x0b, 0xc4, 0xe9, - 0x65, 0xf7, 0xac, 0x2a, 0x5d, 0x48, 0x9e, 0x6b, 0x02, 0x6a, 0x2d, 0xdf, 0x50, 0x87, 0x4b, 0x21, - 0x16, 0x74, 0x24, 0x99, 0xac, 0x2e, 0x11, 0x00, 0x44, 0xbb, 0x2e, 0x45, 0x65, 0xf7, 0x11, 0xd5, - 0xdb, 0xfc, 0x66, 0xed, 0xd9, 0x14, 0x54, 0x52, 0xc7, 0x44, 0xbb, 0x9b, 0x9b, 0x5d, 0x60, 0x69, - 0xbc, 0x43, 0xc3, 0x59, 0xdc, 0x99, 0xf5, 0x18, 0xdd, 0x92, 0x03, 0x24, 0xa8, 0xda, 0x5b, 0x91, - 0xc0, 0xf5, 0x51, 0x24, 0x8a, 0x75, 0x1b, 0x50, 0x86, 0x2d, 0x3a, 0xf7, 0x37, 0x36, 0x13, 0x1c, - 0x8c, 0x29, 0xae, 0xa1, 0x38, 0x5a, 0x89, 0x01, 0x01, 0x04, 0x57, 0x45, 0x54, 0x48, 0x01, 0x51, - 0x23, 0x84, 0x58, 0xb0, 0xd0, 0xdd, 0x6d, 0x49, 0x3e, 0xc9, 0x64, 0xa7, 0x46, 0x21, 0x17, 0x23, - 0x7e, 0xa2, 0x14, 0xab, 0x8b, 0xb5, 0x4b, 0x5a, 0x7d, 0x9e, 0x00, 0x5f, 0x56, 0x06, 0x86, 0x5f, - 0x5c, 0x7c, 0x04, 0xad, 0xb7, 0x14, 0x97, 0x25, 0xe0, 0x2a, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc9, 0xcd, 0x43, 0x2e, 0xde, 0xa8, 0x73, 0x19, 0xb8, 0xbd, 0xf5, 0xb4, 0x00, 0xd1, - 0x7c, 0xb0, 0xd4, 0x74, 0x3f, 0x21, 0x74, 0xc1, 0x50, 0x37, 0xc7, 0xfd, 0x9e, 0x5c, 0xdc, 0xe9, - 0x45, 0x86, 0x4c, 0x29, 0xe3, 0x15, 0x3f, 0x0c, 0x0f, 0x8d, 0xf0, 0x15, 0xdd, 0xa9, 0x02, 0x16, - 0x6c, 0xda, 0x01, 0x5a, 0xf9, 0x06, 0x33, 0x78, 0xfa, 0xdc, 0xc3, 0xcc, 0x19, 0xad, 0x25, 0xff, - 0x82, 0x25, 0x47, 0xea, 0x17, 0x04, 0x55, 0x5d, 0x56, 0x53, 0x69, 0x74, 0xd6, 0x2e, 0x91, 0xfc, - 0x3d, 0x6d, 0xcb, 0x39, 0x76, 0xf1, 0x08, 0x26, 0xba, 0xd9, 0x72, 0x21, 0xf4, 0x2d, 0x60, 0x2c, - 0x4f, 0x8e, 0x00, 0x3c, 0x99, 0x76, 0x4d, 0x0d, 0xda, 0x13, 0x9b, 0x31, 0x65, 0xda, 0x5d, 0xc4, - 0xbf, 0x97, 0x00, 0xc6, 0xa5, 0x63, 0xfc, 0xd0, 0x54, 0x3f, 0x54, 0x9e, 0x7b, 0x19, 0xd4, 0xcc, - 0x4c, 0xaf, 0x77, 0x33, 0xbb, 0x23, 0xe1, 0x95, 0x16, 0x4d, 0xde, 0xb6, 0xbf, 0xd4, 0x57, 0x8a, - 0x5d, 0x48, 0x12, 0x41, 0x31, 0xd3, 0x18, 0xc0, 0xdc, 0x23, 0xe2, 0xe6, 0xd5, 0x99, 0x50, 0xbe, - 0xa6, 0xe5, 0x9f, 0xe4, 0x90, 0xba, 0x1e, 0x9e, 0x26, 0xbd, 0x63, 0xcc, 0xb6, 0x4b, 0x36, 0x4d, - 0x91, 0x8c, 0x15, 0x65, 0x4b, 0x72, 0xa6, 0xda, 0xb9, 0x56, 0x7e, 0xf2, 0x57, 0xf2, 0x50, 0x2f, - 0xc2, 0xca, 0x84, -]]; +pub(crate) const BLOCKS: [&[u8]; 4] = [ + // Genesis block + &[], + // Issuance block + &[ + 0x04, 0x00, 0x00, 0x00, 0x27, 0xe3, 0x01, 0x34, 0xd6, 0x20, 0xe9, 0xfe, 0x61, 0xf7, 0x19, + 0x93, 0xb2, 0xc2, 0x72, 0x75, 0x6a, 0xce, 0xec, 0xdc, 0xbf, 0xd3, 0xe5, 0x43, 0xf7, 0x30, + 0xbc, 0x65, 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, + 0x76, 0xf9, 0x0e, 0xd8, 0x11, 0x9f, 0x02, 0x77, 0x8a, 0xa0, 0x8d, 0x1a, 0x56, 0x79, 0x47, + 0x66, 0x88, 0xbf, 0x6e, 0x8e, 0x5a, 0x4f, 0x57, 0x00, 0x23, 0xde, 0x3e, 0xf1, 0x3a, 0x05, + 0xe5, 0x9d, 0x2e, 0x94, 0x76, 0x6a, 0x3c, 0x7a, 0x94, 0x88, 0x5d, 0x72, 0x57, 0x04, 0x56, + 0x3c, 0x74, 0xd1, 0x7a, 0xbd, 0xf7, 0x53, 0x53, 0xdb, 0x1a, 0xf2, 0xfa, 0x49, 0x4d, 0x3f, + 0xa6, 0x0c, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, + 0xff, 0xff, 0xff, 0x02, 0x51, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, + 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x64, + 0x40, 0xa8, 0x86, 0x5d, 0x61, 0x39, 0xb3, 0x39, 0x62, 0x94, 0xee, 0x42, 0xc5, 0xa6, 0x0b, + 0x63, 0x57, 0xca, 0x65, 0x8b, 0xa6, 0x76, 0xf2, 0xd6, 0xda, 0x8e, 0x00, 0xcf, 0x60, 0xe8, + 0x33, 0xa4, 0x55, 0xec, 0x7c, 0x99, 0x0f, 0xda, 0xd2, 0x46, 0xc0, 0x5b, 0x4a, 0x8f, 0xe5, + 0x2c, 0x6a, 0xb7, 0x00, 0xca, 0x49, 0xb4, 0xda, 0x80, 0xd3, 0x3d, 0x4d, 0x83, 0x7a, 0xd1, + 0x3a, 0x21, 0x3f, 0xfe, 0x71, 0xf5, 0x04, 0xd3, 0xaf, 0xeb, 0x10, 0x9d, 0xc2, 0x0d, 0xbd, + 0x3a, 0x9b, 0x2d, 0xf7, 0x7c, 0xd3, 0x2c, 0x7e, 0x7b, 0xeb, 0xb7, 0xaf, 0x60, 0xe4, 0xd3, + 0x41, 0x96, 0xe7, 0x2c, 0x0a, 0xf8, 0x99, 0x89, 0xbd, 0x70, 0x79, 0x54, 0x3b, 0xc7, 0x66, + 0x29, 0x91, 0x31, 0x97, 0xa6, 0x53, 0xfe, 0x24, 0x70, 0xf9, 0xf2, 0x41, 0x81, 0xac, 0x79, + 0x60, 0x43, 0x79, 0xed, 0x42, 0xba, 0x25, 0xdd, 0xf0, 0x05, 0xe8, 0xff, 0x14, 0x9e, 0xe8, + 0x34, 0x91, 0x5d, 0xc6, 0x9d, 0x6a, 0x2f, 0xc5, 0x70, 0x55, 0x65, 0x01, 0xf3, 0x74, 0x6f, + 0xe7, 0x37, 0x4a, 0x8f, 0x5d, 0x4d, 0xb6, 0x4e, 0x3b, 0xab, 0xc5, 0xc9, 0xa2, 0x86, 0x28, + 0x0e, 0xa6, 0x2d, 0xc0, 0xc4, 0x12, 0x74, 0xe9, 0x39, 0x34, 0xa6, 0xd8, 0xbc, 0x24, 0xdf, + 0x5a, 0x2b, 0x2d, 0xd3, 0xae, 0x62, 0x2f, 0x37, 0x38, 0xcb, 0x41, 0x26, 0xa5, 0xae, 0xed, + 0x94, 0x84, 0x51, 0xc2, 0xe7, 0xff, 0xbe, 0x27, 0x7b, 0x37, 0x94, 0xc0, 0xb5, 0x17, 0x08, + 0x0a, 0x00, 0xd4, 0x69, 0x74, 0x8f, 0x4e, 0x2c, 0xeb, 0x06, 0x2f, 0x1d, 0x61, 0xdc, 0x70, + 0xab, 0x97, 0xc9, 0xbd, 0x02, 0x68, 0xf0, 0xe1, 0x5e, 0xcb, 0x76, 0x25, 0x2c, 0x2c, 0xd2, + 0xf1, 0x8a, 0x03, 0xb3, 0x2f, 0x0b, 0x40, 0xa2, 0x56, 0xc4, 0x3a, 0xd0, 0xf7, 0xc4, 0xef, + 0x98, 0x52, 0x87, 0x54, 0x5b, 0x8e, 0xf8, 0xb3, 0x6e, 0x3d, 0x9e, 0xd6, 0x05, 0xb9, 0x49, + 0x54, 0x1b, 0xe0, 0xbc, 0xe7, 0x52, 0x71, 0x6c, 0x70, 0xdb, 0x0c, 0xf2, 0x06, 0x9e, 0x80, + 0x90, 0xde, 0x83, 0x0e, 0x8c, 0xee, 0xa3, 0x36, 0x99, 0xf0, 0xa8, 0x29, 0x58, 0x9e, 0xa8, + 0x4c, 0x90, 0x0d, 0x66, 0x06, 0xf9, 0x95, 0x21, 0x65, 0xa4, 0x90, 0x58, 0x9f, 0x61, 0x66, + 0x25, 0x8b, 0x7b, 0x13, 0xa1, 0x6b, 0x9c, 0xf4, 0x80, 0xfb, 0x34, 0xd1, 0x0f, 0x52, 0x2d, + 0xbd, 0x2a, 0xcd, 0x16, 0x7b, 0x7d, 0xd0, 0x6c, 0x4d, 0x2d, 0xbb, 0x51, 0x90, 0x7d, 0x4d, + 0x38, 0xbe, 0x06, 0x95, 0x18, 0xd4, 0x31, 0x6d, 0xa4, 0x67, 0xca, 0xe5, 0x35, 0x51, 0xaa, + 0xb4, 0x33, 0x46, 0x67, 0xc0, 0xa5, 0xb7, 0x07, 0x63, 0x64, 0xe8, 0x42, 0x8e, 0x81, 0xf4, + 0xc4, 0xcb, 0xde, 0x44, 0xe8, 0xf1, 0x80, 0xca, 0x7a, 0x70, 0x33, 0x64, 0xaa, 0x4d, 0x50, + 0xaf, 0xf3, 0x24, 0x27, 0xc4, 0x23, 0xfb, 0xf8, 0x47, 0x61, 0x83, 0x5c, 0x31, 0xeb, 0x69, + 0x73, 0x64, 0x4c, 0xe3, 0x8e, 0x24, 0x40, 0xd9, 0xe0, 0x46, 0x17, 0xbc, 0x0b, 0xa0, 0xcd, + 0x8d, 0x14, 0x96, 0x57, 0x21, 0x71, 0x97, 0x9c, 0xa7, 0x5b, 0x28, 0xb7, 0x5b, 0x71, 0xd2, + 0x7b, 0x77, 0x83, 0x09, 0x3a, 0xc4, 0x9c, 0x37, 0x38, 0xfb, 0xdf, 0xe1, 0xf9, 0xc7, 0x29, + 0xe0, 0x50, 0xbb, 0xfd, 0x7b, 0xa1, 0x53, 0xe5, 0x3b, 0x85, 0x61, 0x21, 0x66, 0xf0, 0xa2, + 0xb7, 0x65, 0x77, 0xd4, 0x5f, 0x0f, 0xf8, 0x5f, 0x4c, 0x6a, 0x90, 0x03, 0xc1, 0x2f, 0x8c, + 0x95, 0xa4, 0x36, 0x88, 0x51, 0x43, 0xd9, 0xa8, 0x78, 0x7f, 0x36, 0xb2, 0x27, 0x2f, 0x2c, + 0xd0, 0x21, 0xdc, 0x6a, 0x3f, 0x34, 0xdf, 0xac, 0x94, 0xf2, 0x8f, 0x13, 0x2e, 0x3d, 0x2a, + 0x4a, 0xf0, 0xdc, 0xa4, 0x1c, 0xc8, 0x59, 0x7e, 0xa0, 0x88, 0x7c, 0x02, 0x06, 0xf1, 0xbe, + 0x5a, 0xae, 0xc4, 0xf7, 0x72, 0x46, 0x97, 0xd9, 0x4b, 0x47, 0x9f, 0x9b, 0x93, 0x93, 0x71, + 0x8d, 0x80, 0xf7, 0xaf, 0xc7, 0xf9, 0xc9, 0x84, 0xd5, 0x9e, 0x87, 0x0f, 0x64, 0x33, 0x1f, + 0xd6, 0xf5, 0x90, 0x2d, 0x3a, 0xc3, 0x59, 0xf5, 0x25, 0xe6, 0xa5, 0xda, 0xf4, 0x21, 0x24, + 0x9d, 0xdb, 0x69, 0x86, 0x93, 0xec, 0x7d, 0x9b, 0xfd, 0x71, 0x19, 0xab, 0x05, 0xb6, 0xfd, + 0x5c, 0x6b, 0x17, 0x7e, 0xe5, 0xc4, 0x10, 0x38, 0xd7, 0x9b, 0x84, 0x94, 0x0d, 0xf1, 0xf5, + 0xe6, 0x79, 0x84, 0x3c, 0x04, 0x84, 0x2c, 0x6a, 0x62, 0xcf, 0xd6, 0x2f, 0xd0, 0x1b, 0xcc, + 0xc2, 0xc8, 0x2a, 0x67, 0x34, 0x52, 0xae, 0x88, 0x48, 0x47, 0x5f, 0x61, 0x4d, 0xba, 0x6c, + 0x53, 0xf1, 0x8b, 0x12, 0x54, 0xcc, 0xf0, 0x77, 0x89, 0x72, 0x98, 0x97, 0xed, 0x2e, 0xfa, + 0xef, 0x0b, 0x54, 0x69, 0x02, 0x69, 0x15, 0xa6, 0x5f, 0x11, 0xed, 0x04, 0x58, 0x02, 0x46, + 0xc4, 0xdc, 0x9c, 0xb6, 0xe1, 0xc8, 0xd8, 0xdc, 0xa3, 0x99, 0xea, 0x17, 0x96, 0x74, 0x7b, + 0x5f, 0xeb, 0x00, 0x02, 0x91, 0x04, 0x9e, 0xf4, 0xff, 0x6d, 0x0b, 0x29, 0x82, 0x37, 0x1a, + 0x4c, 0xa0, 0x71, 0x71, 0x20, 0xaf, 0xe4, 0x3b, 0x6e, 0x26, 0xb1, 0x89, 0x56, 0xb3, 0xb6, + 0x44, 0x2d, 0x2b, 0xb4, 0x6f, 0x22, 0xe4, 0x5d, 0xd8, 0x7d, 0x25, 0x60, 0xe7, 0xf4, 0xab, + 0x87, 0x0b, 0x97, 0x0a, 0xd4, 0x82, 0x48, 0x93, 0x0f, 0x1d, 0xcc, 0xc7, 0x69, 0xee, 0xc7, + 0xcf, 0x5d, 0x9b, 0xbe, 0x9f, 0x23, 0x4b, 0x06, 0x49, 0x88, 0xf5, 0xbd, 0xb5, 0xc3, 0xed, + 0x46, 0x2a, 0x17, 0xc8, 0x5c, 0x4e, 0xa4, 0x56, 0xf3, 0x62, 0x28, 0xe7, 0xd1, 0x66, 0x15, + 0x1c, 0xeb, 0x62, 0xc1, 0x64, 0xee, 0xb6, 0x98, 0x7a, 0x9e, 0x40, 0xaa, 0xa2, 0x7d, 0xca, + 0xb6, 0xf3, 0x82, 0x6d, 0x65, 0xfb, 0x82, 0x57, 0xd2, 0x64, 0xc8, 0xb8, 0x15, 0x1b, 0x68, + 0x94, 0x90, 0x7a, 0xd5, 0xd7, 0xe6, 0x42, 0x99, 0x6f, 0x46, 0xc8, 0x3d, 0x9e, 0x5d, 0x85, + 0x00, 0x7b, 0xed, 0x53, 0xde, 0x27, 0xa4, 0x66, 0x3f, 0xa3, 0xc2, 0xf8, 0x89, 0x69, 0x8a, + 0xac, 0xcc, 0x15, 0x5e, 0xdd, 0x63, 0xda, 0xe3, 0x5a, 0x1f, 0xe9, 0x81, 0x60, 0x20, 0x60, + 0xc1, 0xf9, 0xbb, 0x71, 0x87, 0x77, 0x79, 0xe0, 0x90, 0x3d, 0xef, 0x49, 0xa9, 0xf7, 0x66, + 0x70, 0x6f, 0x80, 0x88, 0xbe, 0x89, 0x73, 0x99, 0x3e, 0xb1, 0xf9, 0xd6, 0xe7, 0xb1, 0x9f, + 0x3e, 0xfe, 0x39, 0xed, 0x36, 0x18, 0xee, 0xc3, 0x41, 0xbb, 0x69, 0x9a, 0x8b, 0xb1, 0x13, + 0x2d, 0xd5, 0xab, 0xb7, 0xb6, 0x3b, 0xed, 0xdf, 0x5b, 0x08, 0xde, 0x7d, 0xe5, 0x5d, 0xfa, + 0x32, 0x91, 0x78, 0x03, 0x87, 0x77, 0x85, 0xc2, 0x92, 0x66, 0x51, 0x83, 0xdb, 0xa8, 0x3f, + 0xce, 0x17, 0xaa, 0xf5, 0xbb, 0x1e, 0x5c, 0x5f, 0x2e, 0xb6, 0x6c, 0x6d, 0x1a, 0x98, 0x84, + 0xe4, 0x69, 0x44, 0x9a, 0xf5, 0x6e, 0xd8, 0xd4, 0xc9, 0xd3, 0x42, 0x18, 0xca, 0x80, 0x1c, + 0x71, 0x8c, 0x62, 0x79, 0x59, 0xd9, 0x3b, 0xf3, 0xba, 0x90, 0x6b, 0x36, 0x2a, 0x7c, 0xf8, + 0xd3, 0xf4, 0xaa, 0xd9, 0x17, 0x59, 0xb1, 0xe6, 0x5a, 0x50, 0xcb, 0x0b, 0x6b, 0x19, 0x0c, + 0xe0, 0x5e, 0x67, 0x09, 0x42, 0x53, 0x71, 0x8b, 0xc2, 0x4e, 0x46, 0xc3, 0xff, 0xf1, 0x45, + 0x2b, 0x81, 0x52, 0x3b, 0xb4, 0x59, 0x20, 0xdc, 0x24, 0xea, 0xa5, 0xe7, 0xfc, 0x19, 0xc2, + 0xeb, 0x8c, 0x91, 0x99, 0x0a, 0x87, 0x43, 0xa7, 0x4c, 0x3e, 0x5a, 0xd7, 0x71, 0x5e, 0x3f, + 0x7c, 0xd0, 0x2f, 0x1a, 0xc0, 0xac, 0x73, 0xcf, 0xfc, 0x0a, 0x85, 0xe8, 0xd6, 0xb1, 0xa2, + 0xe0, 0x2e, 0x7a, 0xa8, 0x68, 0x68, 0x0a, 0x7d, 0x73, 0xd0, 0xc7, 0x6a, 0x3e, 0x7b, 0x6b, + 0x6a, 0x28, 0x59, 0x7a, 0x29, 0x85, 0x84, 0x04, 0xbb, 0x7c, 0x5b, 0x8f, 0x68, 0x6f, 0xb7, + 0x3e, 0xbf, 0xca, 0x97, 0x62, 0x7a, 0x73, 0xf3, 0xe3, 0x23, 0x39, 0xa6, 0xb1, 0x71, 0xd0, + 0x4e, 0xb5, 0x7a, 0x29, 0x51, 0xc9, 0x40, 0x45, 0x2f, 0x25, 0x58, 0x0c, 0x71, 0x61, 0x9c, + 0x73, 0x99, 0xc8, 0xab, 0xee, 0x67, 0x0d, 0x97, 0xd3, 0xdc, 0xa0, 0x90, 0x3b, 0xc2, 0x91, + 0x07, 0x1f, 0xf0, 0xe9, 0x97, 0xa9, 0xb5, 0x46, 0xdc, 0x63, 0xfc, 0xa3, 0x24, 0x1f, 0xeb, + 0xa8, 0x85, 0x66, 0x9a, 0xaf, 0x0f, 0x37, 0xe0, 0x8e, 0x01, 0x32, 0x35, 0xdb, 0xbe, 0xa3, + 0xbe, 0xf6, 0x2f, 0x1a, 0xd8, 0x1e, 0xc6, 0x40, 0xb9, 0x69, 0xea, 0x02, 0x95, 0x14, 0x9b, + 0xe9, 0x7d, 0x0c, 0xb7, 0x55, 0xf8, 0x87, 0xd9, 0x76, 0x3e, 0x15, 0xae, 0x83, 0xba, 0xe7, + 0x60, 0xc4, 0x0d, 0x32, 0x8a, 0x46, 0x9a, 0x56, 0xdc, 0xc1, 0x62, 0x9e, 0x76, 0xf6, 0x34, + 0xfb, 0xb9, 0xca, 0x32, 0xaa, 0xdd, 0x2b, 0x4e, 0xd2, 0xbc, 0x1a, 0xe4, 0x5d, 0x8c, 0x79, + 0xb1, 0x84, 0xd3, 0xfc, 0xd5, 0x40, 0xa9, 0x00, 0x97, 0x18, 0x39, 0xf7, 0x78, 0xa7, 0xfd, + 0x60, 0xb4, 0xfa, 0x3f, 0x8b, 0x74, 0x23, 0xb6, 0x90, 0x07, 0x32, 0xea, 0xde, 0x4d, 0xe9, + 0xbf, 0xe3, 0x78, 0x0a, 0xe0, 0x86, 0x21, 0x02, 0x2d, 0x45, 0xe0, 0x74, 0x20, 0xb7, 0x63, + 0x17, 0x2f, 0x09, 0xd3, 0xbe, 0x24, 0x6e, 0xef, 0x62, 0x06, 0x35, 0x1d, 0x0d, 0xe0, 0xb8, + 0xc4, 0xff, 0xc5, 0x3e, 0x4a, 0xf3, 0x04, 0x2b, 0x4f, 0xea, 0xf6, 0xfd, 0x8d, 0x28, 0x5e, + 0xdc, 0xe8, 0x1d, 0x39, 0x20, 0x43, 0x89, 0x5c, 0x37, 0x50, 0x38, 0x92, 0x00, 0x69, 0x46, + 0xc8, 0x55, 0x16, 0x70, 0x90, 0x73, 0x9e, 0xd8, 0x08, 0xdb, 0x3a, 0xcf, 0x5c, 0xc8, 0xdb, + 0x2b, 0xae, 0x8e, 0x7c, 0x51, 0xa9, 0x0c, 0x54, 0xc8, 0x15, 0x21, 0x26, 0x29, 0x92, 0x25, + 0x19, 0xa8, 0x31, 0x7c, 0x7d, 0x41, 0x32, 0x69, 0xe4, 0xfd, 0xf0, 0x0f, 0x12, 0x2e, 0x35, + 0x0d, 0x22, 0x04, 0xf5, 0x7e, 0x5c, 0xa7, 0x2e, 0xe1, 0xda, 0x11, 0xd2, 0xbf, 0x98, 0xe1, + 0x33, 0xf7, 0x3c, 0xb2, 0x4a, 0x1c, 0x01, 0x3e, 0xf7, 0xcc, 0x14, 0x2a, 0x51, 0xe6, 0x4f, + 0x43, 0xba, 0xd4, 0xad, 0xb7, 0x8c, 0x5c, 0x4a, 0x44, 0x03, 0x7f, 0x80, 0x0f, 0xe5, 0x58, + 0x35, 0x44, 0x11, 0x13, 0x63, 0xd6, 0x62, 0x48, 0x15, 0xa9, 0xb9, 0xdf, 0xf9, 0xc1, 0x70, + 0x80, 0xdf, 0x76, 0xda, 0x93, 0x50, 0xc3, 0x17, 0x5b, 0xb7, 0xdd, 0xfa, 0x14, 0x5a, 0xfa, + 0x2f, 0xd6, 0x4b, 0x54, 0xd8, 0x41, 0xab, 0x82, 0xc9, 0x12, 0xd8, 0x65, 0x71, 0x99, 0xff, + 0x07, 0x3b, 0x46, 0x84, 0xeb, 0x89, 0x04, 0x10, 0x6d, 0x5c, 0x1e, 0xe4, 0xcb, 0x13, 0xcd, + 0x37, 0x3b, 0xde, 0x78, 0xfc, 0x48, 0xbd, 0xb2, 0x85, 0x89, 0x45, 0x72, 0x96, 0x2a, 0x7d, + 0x69, 0x1a, 0x59, 0x6d, 0x03, 0x30, 0xb9, 0xce, 0x98, 0xb3, 0xc2, 0x23, 0xb4, 0x86, 0x2a, + 0x1e, 0x76, 0x49, 0xc0, 0x7b, 0xd6, 0x3c, 0x54, 0x76, 0x22, 0x1c, 0x8e, 0x86, 0x56, 0xeb, + 0xa3, 0x00, 0x73, 0x3c, 0xeb, 0x64, 0xa1, 0xd7, 0x4a, 0xeb, 0x4d, 0x98, 0x49, 0xcf, 0x93, + 0x72, 0xec, 0x35, 0x33, 0x8b, 0x97, 0xf4, 0xd0, 0xb7, 0x80, 0xf8, 0xc4, 0x85, 0x27, 0x1f, + 0x5e, 0x3c, 0xe9, 0x83, 0x3d, 0xbc, 0x99, 0x96, 0x3d, 0x63, 0xaa, 0x99, 0x7c, 0x83, 0x07, + 0x55, 0x78, 0x94, 0x7f, 0xa4, 0x48, 0x77, 0x38, 0xa3, 0xb8, 0xb7, 0x02, 0xee, 0x82, 0xac, + 0x27, 0x1e, 0xb4, 0x2a, 0xa9, 0x27, 0x98, 0xcf, 0x58, 0x80, 0xa6, 0x58, 0x15, 0xce, 0x17, + 0x87, 0xb4, 0xff, 0xaf, 0x22, 0xa8, 0xf3, 0x83, 0xf6, 0xd9, 0x04, 0xb3, 0xbb, 0xf1, 0x1a, + 0xa7, 0x00, 0x5c, 0x64, 0xfb, 0x99, 0x6f, 0x54, 0xda, 0x29, 0x1e, 0x4f, 0xae, 0x22, 0x24, + 0xce, 0xc8, 0x77, 0xc8, 0x7e, 0xe6, 0xfd, 0xce, 0x07, 0x7d, 0x0d, 0x93, 0xde, 0x13, 0xd3, + 0x08, 0xdb, 0xc1, 0xd5, 0xbb, 0x5a, 0x69, 0x34, 0xa5, 0x90, 0x44, 0x5b, 0xd2, 0x50, 0x4c, + 0x03, 0xb4, 0x35, 0x33, 0x4d, 0x63, 0xdb, 0xfb, 0xe7, 0xed, 0x07, 0x91, 0x1f, 0x7e, 0xa5, + 0x68, 0xa0, 0xe7, 0x80, 0x65, 0xf8, 0x79, 0xc7, 0xca, 0x80, 0x27, 0x41, 0x59, 0xa3, 0x38, + 0xc3, 0xae, 0xa5, 0x8c, 0x1d, 0x00, 0xb5, 0xbc, 0x6d, 0x16, 0xdf, 0x8e, 0x36, 0xa6, 0x24, + 0x8e, 0x1d, 0xca, 0x0c, 0x13, 0xed, 0x3d, 0xe1, 0x68, 0xc9, 0x0b, 0x8b, 0xd4, 0x17, 0xf2, + 0xb3, 0xec, 0x78, 0xa0, 0x7d, 0x35, 0x71, 0xe4, 0x24, 0xd1, 0xe5, 0xc1, 0x13, 0x2c, 0x7e, + 0xab, 0x86, 0x19, 0xfe, 0xbe, 0x22, 0xcf, 0xb7, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xae, 0x29, 0x35, 0xf1, 0xdf, 0xd8, 0xa2, 0x4a, 0xed, 0x7c, 0x70, 0xdf, 0x7d, + 0xe3, 0xa6, 0x68, 0xeb, 0x7a, 0x49, 0xb1, 0x31, 0x98, 0x80, 0xdd, 0xe2, 0xbb, 0xd9, 0x03, + 0x1a, 0xe5, 0xd8, 0x2f, 0xfd, 0xe0, 0x1c, 0x85, 0xa0, 0x45, 0xcc, 0x0e, 0xf3, 0x67, 0x88, + 0xe9, 0x1e, 0xdf, 0x18, 0xe6, 0x3a, 0x44, 0x94, 0x53, 0x74, 0x09, 0x4e, 0x08, 0x3c, 0x33, + 0xd3, 0x07, 0xd1, 0x72, 0xaf, 0x7f, 0x82, 0xec, 0x14, 0x05, 0x87, 0x12, 0x50, 0xc0, 0xc4, + 0x4f, 0x7c, 0x67, 0xdf, 0xd2, 0xe2, 0xc7, 0x38, 0x0d, 0x7c, 0x30, 0xf6, 0x80, 0x39, 0xe2, + 0x7d, 0x77, 0xb4, 0x42, 0xcb, 0x01, 0x63, 0xca, 0x95, 0x32, 0xa4, 0x18, 0x2c, 0x2b, 0xef, + 0xa0, 0x26, 0x88, 0xc6, 0x01, 0x97, 0x10, 0xba, 0xba, 0x3d, 0x80, 0xf2, 0xb8, 0x94, 0xfd, + 0x91, 0x75, 0xf2, 0x2c, 0x7f, 0xf6, 0xdf, 0x41, 0x2c, 0x8c, 0x41, 0xde, 0xb3, 0x94, 0xb9, + 0x89, 0xc2, 0x27, 0xf5, 0xc2, 0x03, 0x32, 0xb7, 0xa0, 0x30, 0x36, 0x98, 0x23, 0xc6, 0xac, + 0x19, 0xee, 0xa1, 0xe6, 0xe2, 0x68, 0xee, 0xaa, 0x70, 0x0c, 0x81, 0xe8, 0x87, 0x31, 0xbf, + 0x74, 0xaa, 0xd7, 0x37, 0xab, 0xf9, 0x15, 0x8c, 0x3e, 0xfc, 0x59, 0x16, 0x20, 0x4e, 0xe3, + 0xd4, 0x5e, 0x57, 0x28, 0xcf, 0x42, 0x7f, 0x1a, 0x86, 0x9d, 0x1c, 0x5d, 0x4a, 0xf1, 0x7a, + 0x17, 0x9e, 0xd1, 0x6f, 0xfd, 0xcd, 0xb4, 0xe9, 0x05, 0xdb, 0x8e, 0x10, 0x99, 0x25, 0x41, + 0x2c, 0xa6, 0xf6, 0x65, 0xd3, 0x4f, 0x3c, 0x3d, 0xc9, 0x2c, 0xf5, 0x40, 0xea, 0x6d, 0x7a, + 0x07, 0xdf, 0x9c, 0x3b, 0x3f, 0xe7, 0x45, 0xd8, 0xcf, 0x95, 0x33, 0x57, 0x39, 0x37, 0x61, + 0x36, 0x7c, 0xf7, 0xee, 0xb5, 0xc0, 0x75, 0x0b, 0xe3, 0x08, 0x02, 0xfe, 0x8f, 0x52, 0x14, + 0xa4, 0x1f, 0x99, 0xbe, 0x8d, 0xb8, 0x1f, 0x35, 0xf1, 0x96, 0x61, 0x31, 0x19, 0x20, 0xd8, + 0x1c, 0xdb, 0x99, 0x9f, 0x34, 0x68, 0xf0, 0x16, 0x05, 0x5d, 0x33, 0xbc, 0x8e, 0xa9, 0x50, + 0xda, 0x3f, 0x07, 0xc0, 0xf1, 0x02, 0x61, 0x88, 0xe2, 0x8b, 0x50, 0xc9, 0xad, 0x30, 0xab, + 0x00, 0x05, 0xea, 0x60, 0x4c, 0xcf, 0x86, 0xb0, 0x32, 0x40, 0x1a, 0x6b, 0x84, 0xf9, 0xee, + 0xee, 0x1c, 0x82, 0xf6, 0xbc, 0xd3, 0x88, 0x7c, 0xb9, 0x87, 0x88, 0x8c, 0x1e, 0xc2, 0x55, + 0x37, 0xc6, 0x60, 0xdc, 0xf8, 0x1d, 0xbc, 0x80, 0x06, 0x33, 0x33, 0x61, 0x99, 0xce, 0x7c, + 0x41, 0xea, 0xf2, 0xc8, 0x92, 0x0c, 0xd3, 0xd6, 0xf4, 0x1b, 0xa7, 0x8d, 0x97, 0xb9, 0x84, + 0x51, 0x65, 0x6e, 0xcb, 0x7a, 0x73, 0x97, 0x0a, 0xfd, 0xaa, 0x36, 0xb9, 0xb1, 0x5e, 0x8d, + 0xe1, 0xcf, 0x85, 0x2c, 0x5c, 0x41, 0xee, 0x6c, 0xbc, 0x0e, 0x76, 0x80, 0x5a, 0xa9, 0x3c, + 0x3f, 0xa9, 0x33, 0xc4, 0x3d, 0x12, 0x5d, 0x0b, 0x00, 0x68, 0x7d, 0x15, 0x30, 0x37, 0xe2, + 0x4d, 0x4f, 0x49, 0x30, 0x0c, 0x93, 0x2c, 0x18, 0xdd, 0x1f, 0x92, 0xab, 0xef, 0x0a, 0x2c, + 0x12, 0x4c, 0x4e, 0x99, 0xee, 0xcb, 0x95, 0x68, 0xf1, 0xf8, 0x88, 0x8c, 0xe1, 0x16, 0x2d, + 0x08, 0x6a, 0x5a, 0xb1, 0x87, 0xb4, 0x9f, 0x6b, 0x16, 0xb6, 0x69, 0xb0, 0x40, 0xbc, 0x9c, + 0x54, 0x61, 0xa2, 0x65, 0x97, 0x29, 0xa0, 0xfa, 0x12, 0x7b, 0xc5, 0xdb, 0xcf, 0x6a, 0x54, + 0xfc, 0xc8, 0x93, 0xd0, 0xdf, 0x06, 0x7a, 0xd7, 0x44, 0x0c, 0x80, 0x35, 0xe1, 0xcf, 0x18, + 0xc5, 0xb4, 0x19, 0xf3, 0x9c, 0x97, 0x3b, 0x1a, 0x91, 0xbd, 0x54, 0x0c, 0x37, 0x6b, 0x14, + 0x1d, 0xfe, 0x5c, 0xea, 0xb4, 0x3c, 0x71, 0x16, 0x21, 0x1e, 0xa0, 0x14, 0x13, 0x8d, 0xaf, + 0xbd, 0x24, 0xb2, 0x9a, 0xf4, 0x82, 0xab, 0x03, 0xb7, 0x77, 0x00, 0x6f, 0x99, 0x6f, 0xa4, + 0x89, 0xe7, 0x6f, 0xf9, 0xc2, 0x30, 0x3c, 0x1f, 0xe4, 0x69, 0x27, 0x53, 0x40, 0x16, 0xf1, + 0x9e, 0xae, 0xe7, 0xd1, 0xaf, 0x02, 0xf7, 0xb1, 0x13, 0x1a, 0x3e, 0x16, 0x1b, 0x2d, 0x18, + 0xfd, 0xbf, 0xb8, 0x61, 0xeb, 0xf7, 0x8d, 0xe8, 0x5b, 0xa0, 0xee, 0x0e, 0x56, 0xe6, 0xe1, + 0x5c, 0x4a, 0x09, 0x51, 0x41, 0xfa, 0x0c, 0xa8, 0xfc, 0x1a, 0x8d, 0x00, 0x14, 0x4d, 0x82, + 0x85, 0x9e, 0x62, 0x7b, 0x70, 0x06, 0x0b, 0x6a, 0xd7, 0xb1, 0x82, 0x46, 0x49, 0xcf, 0x3b, + 0x76, 0x57, 0xd0, 0x27, 0x44, 0xac, 0xb8, 0xb3, 0x74, 0x6b, 0x3a, 0x1c, 0x2b, 0xdb, 0x5c, + 0x9a, 0x57, 0x1c, 0x79, 0xee, 0x80, 0x1d, 0x6a, 0x8d, 0xbb, 0xfd, 0xc1, 0x70, 0x4e, 0x9b, + 0xa0, 0xd3, 0x29, 0x3e, 0xe1, 0x61, 0xe5, 0xe9, 0x69, 0x59, 0xf6, 0x3f, 0x55, 0x5e, 0x0f, + 0x8a, 0x4a, 0x99, 0x95, 0xa4, 0x97, 0x71, 0xd0, 0x72, 0x36, 0xb4, 0x20, 0x0a, 0xce, 0x69, + 0xab, 0xdc, 0xf9, 0xa4, 0x66, 0xd3, 0x0e, 0x81, 0xca, 0x93, 0xa9, 0xb9, 0xd1, 0x92, 0x41, + 0xa3, 0x09, 0x57, 0xcb, 0x05, 0x28, 0xaf, 0xea, 0x86, 0xe1, 0xf1, 0x9c, 0x7d, 0x38, 0x58, + 0x97, 0x6d, 0x50, 0xa6, 0xef, 0xf6, 0xbf, 0x8b, 0x29, 0x8d, 0xbb, 0x86, 0x48, 0x52, 0x58, + 0x8f, 0x88, 0x55, 0x8a, 0x05, 0x40, 0xa0, 0x7c, 0x72, 0xb6, 0xdd, 0xa9, 0x48, 0x77, 0xdc, + 0xee, 0xbc, 0xd3, 0x6f, 0x95, 0x9f, 0x51, 0xa8, 0x5d, 0x7a, 0x61, 0x06, 0x6a, 0x78, 0x1c, + 0xb9, 0xcf, 0xa9, 0xf7, 0x88, 0x81, 0x97, 0x53, 0x5f, 0x62, 0x58, 0xb2, 0x8d, 0x71, 0xce, + 0xf4, 0x05, 0x16, 0x8b, 0x4a, 0xa3, 0xdd, 0x35, 0xfa, 0xdd, 0xd9, 0x95, 0xde, 0xb5, 0x26, + 0x0d, 0xf8, 0x73, 0x26, 0xb6, 0x5c, 0x09, 0x2b, 0x49, 0xac, 0x66, 0x91, 0x33, 0x5f, 0x44, + 0xbe, 0x13, 0xd1, 0x64, 0x44, 0xe4, 0x86, 0x4a, 0xdd, 0xde, 0x2e, 0x2c, 0xe1, 0x89, 0x32, + 0x66, 0x14, 0x2e, 0x75, 0x74, 0xe6, 0x47, 0xf9, 0x74, 0x11, 0xe3, 0x00, 0x3f, 0x13, 0x07, + 0xbc, 0x09, 0x88, 0x4b, 0x51, 0xf6, 0x91, 0xb7, 0x45, 0xaf, 0xaf, 0x69, 0x7b, 0x4f, 0x77, + 0x7d, 0x2e, 0xc7, 0x5c, 0x2c, 0x4f, 0xae, 0x5a, 0x80, 0x6a, 0xef, 0xba, 0x3e, 0x2c, 0x93, + 0x63, 0x3a, 0xe4, 0xce, 0x75, 0xe1, 0xce, 0x38, 0xf7, 0x84, 0xe1, 0xfa, 0x6f, 0x3e, 0x20, + 0x17, 0x3a, 0xe7, 0x99, 0x24, 0xc1, 0x2f, 0x98, 0x32, 0xe4, 0xca, 0x89, 0x80, 0x9c, 0x68, + 0x50, 0xb1, 0x56, 0x7e, 0x5f, 0x51, 0x2c, 0x79, 0x05, 0x16, 0x10, 0xf0, 0x7e, 0x8b, 0x09, + 0xaa, 0xb1, 0xf5, 0xcf, 0xb9, 0x18, 0x14, 0x5e, 0xfd, 0xc0, 0x08, 0xbd, 0x65, 0x1f, 0x7c, + 0x1b, 0x2e, 0x0b, 0x7e, 0xc8, 0xbb, 0x32, 0x71, 0x83, 0x2c, 0x67, 0x82, 0x32, 0xfb, 0xcb, + 0x22, 0xe0, 0xff, 0x9b, 0xc1, 0x0a, 0x54, 0xe7, 0xdb, 0x86, 0x23, 0x00, 0x04, 0x08, 0x06, + 0xd1, 0x5a, 0x8f, 0xc9, 0xe3, 0x3a, 0x9b, 0x51, 0xeb, 0xfd, 0xb2, 0xf3, 0x27, 0x45, 0xa1, + 0xeb, 0xdc, 0xd0, 0xf9, 0xa7, 0x70, 0x23, 0xec, 0xc4, 0x29, 0xf1, 0xce, 0x52, 0x89, 0xa2, + 0xcb, 0xa0, 0x45, 0x6d, 0xa5, 0xa7, 0x73, 0xf4, 0xd7, 0x4c, 0x48, 0xd9, 0x15, 0xb9, 0xe9, + 0x87, 0x84, 0x30, 0xfe, 0x0d, 0xf6, 0x45, 0x88, 0xa4, 0x29, 0x26, 0x5d, 0xde, 0xc9, 0x0f, + 0xea, 0x4c, 0xb3, 0xe1, 0x48, 0x9f, 0x03, 0x99, 0x8f, 0xb6, 0x78, 0xa1, 0xaa, 0x7a, 0xa3, + 0x99, 0xb9, 0x0c, 0xcf, 0x22, 0xc5, 0x6e, 0x51, 0x82, 0xcb, 0x14, 0xbd, 0x5e, 0x03, 0xc1, + 0xe1, 0xc2, 0xec, 0x68, 0x09, 0xb0, 0x20, 0x06, 0xa9, 0x1c, 0x64, 0xdc, 0x8d, 0xac, 0x8c, + 0xbb, 0x1c, 0xb7, 0x6b, 0x80, 0x58, 0x92, 0x85, 0xe4, 0x2c, 0x98, 0xfa, 0x44, 0xd9, 0xe0, + 0xfd, 0x67, 0xb4, 0xa1, 0xfc, 0x02, 0xfd, 0x82, 0x0c, 0xac, 0xa3, 0x6f, 0x20, 0x54, 0x5e, + 0x22, 0xfe, 0xb1, 0x2d, 0xad, 0x46, 0x72, 0x5d, 0x78, 0xea, 0xb3, 0xd4, 0x65, 0xa5, 0xd2, + 0x85, 0xa2, 0xe9, 0xb2, 0xbc, 0xf6, 0xdf, 0x32, 0xa3, 0x2a, 0x91, 0x26, 0x1b, 0x18, 0x05, + 0x23, 0x19, 0xb5, 0x1e, 0x3c, 0x6a, 0x29, 0x7d, 0xc3, 0x6e, 0x52, 0xc7, 0xf2, 0x50, 0x29, + 0x67, 0xfb, 0xeb, 0x0a, 0xd0, 0xdb, 0xf7, 0x0c, 0x8a, 0x25, 0x70, 0xb8, 0xf7, 0x15, 0x88, + 0xfb, 0x28, 0x91, 0xef, 0xf0, 0xa2, 0x3c, 0x28, 0xdd, 0x2f, 0x4f, 0xd0, 0xf6, 0x26, 0xa4, + 0xdb, 0x65, 0x3b, 0x39, 0x61, 0x43, 0xc6, 0xf8, 0x68, 0xd6, 0x55, 0xe2, 0xd5, 0x85, 0x03, + 0x9c, 0x89, 0x1a, 0x11, 0xff, 0xf1, 0x37, 0x76, 0x8d, 0x05, 0xf7, 0x5c, 0x27, 0xb8, 0xd3, + 0x79, 0xad, 0x02, 0xca, 0xb0, 0x52, 0xec, 0x67, 0x89, 0xfb, 0xb1, 0x28, 0x72, 0xae, 0x32, + 0x2f, 0xde, 0x58, 0x2c, 0x8e, 0x6d, 0x87, 0xb3, 0x3f, 0xb8, 0x44, 0x7e, 0x81, 0x76, 0x29, + 0x4b, 0xe9, 0xdf, 0x99, 0xc7, 0x43, 0xde, 0xb2, 0xe3, 0xf9, 0xf9, 0x1c, 0x8a, 0x3b, 0x58, + 0x88, 0xf6, 0x0e, 0x1e, 0x7f, 0x9f, 0x49, 0xb0, 0x49, 0xba, 0xdb, 0x6d, 0x59, 0xdf, 0x42, + 0x8e, 0xa4, 0x13, 0x80, 0xb5, 0x01, 0x90, 0xd9, 0x6f, 0xf7, 0x2e, 0xba, 0x28, 0x7c, 0xa5, + 0x5f, 0x32, 0x43, 0x99, 0x64, 0xa9, 0xa5, 0x9b, 0xa8, 0xc0, 0x99, 0x03, 0x08, 0x02, 0x10, + 0xde, 0xa1, 0x75, 0xc9, 0x72, 0xa7, 0x66, 0x7a, 0x66, 0xca, 0xb9, 0x36, 0xd0, 0x98, 0xaf, + 0xdf, 0x2d, 0xc3, 0xac, 0x5c, 0xda, 0x1c, 0x66, 0xea, 0xb7, 0x3e, 0x89, 0x32, 0x54, 0xb3, + 0x57, 0xa5, 0x4f, 0x9a, 0xda, 0x6b, 0x11, 0x21, 0x79, 0x15, 0x7e, 0xb1, 0x92, 0x64, 0x07, + 0xe8, 0x8f, 0x40, 0x19, 0xbf, 0x7b, 0x34, 0x1d, 0xd5, 0xbb, 0x0e, 0xbc, 0xd3, 0xd9, 0x88, + 0x59, 0xe1, 0xd2, 0xe2, 0x8a, 0x25, 0xd8, 0x6c, 0x34, 0x8c, 0xab, 0xca, 0x24, 0x51, 0xbf, + 0xcd, 0x7d, 0x1a, 0x88, 0x0e, 0x41, 0x0f, 0xcf, 0x10, 0x62, 0x40, 0xf1, 0xef, 0x38, 0xf9, + 0x14, 0x52, 0x9a, 0x6f, 0xd3, 0xf9, 0x6b, 0x98, 0x4f, 0x19, 0x6c, 0x07, 0xec, 0xcf, 0x36, + 0x53, 0x77, 0x58, 0x23, 0x56, 0x08, 0x65, 0xdb, 0x24, 0x1c, 0xd2, 0xdb, 0x62, 0x5f, 0xdc, + 0x1c, 0x01, 0x49, 0xf6, 0x8c, 0x21, 0x6f, 0x71, 0x22, 0x5f, 0x02, 0xb5, 0x00, 0x49, 0x28, + 0x11, 0xc1, 0x3c, 0xba, 0x69, 0xdc, 0x7f, 0xcb, 0xc7, 0xa8, 0x8d, 0xf5, 0xee, 0xe4, 0x4b, + 0x53, 0x8d, 0x01, 0xa3, 0xd1, 0x82, 0x88, 0x28, 0x03, 0x42, 0xed, 0x20, 0x4b, 0xca, 0xb0, + 0x3a, 0x4e, 0x05, 0xee, 0x42, 0xc1, 0xd8, 0xd6, 0x2c, 0x64, 0xd6, 0x83, 0x03, 0xc1, 0x21, + 0x75, 0xd4, 0xce, 0x5d, 0x83, 0x9b, 0x74, 0x88, 0x51, 0x14, 0x9c, 0x5e, 0x73, 0xe5, 0xaf, + 0x1e, 0x12, 0xae, 0xb9, 0xc3, 0x2d, 0xd7, 0x09, 0xf8, 0x4b, 0x2e, 0x14, 0xcf, 0x94, 0x17, + 0xf6, 0xc8, 0x28, 0xbf, 0x6b, 0xd9, 0x33, 0x4c, 0x4c, 0xab, 0x2e, 0xa4, 0x3a, 0xe7, 0x6b, + 0x3d, 0xe0, 0xc4, 0x35, 0xc1, 0xb3, 0x7f, 0x9e, 0xcc, 0x65, 0xeb, 0xed, 0xd8, 0x15, 0x27, + 0x11, 0x66, 0x20, 0x68, 0xaa, 0xf3, 0xa0, 0xf3, 0xa8, 0x6f, 0x51, 0x63, 0x42, 0xcf, 0xba, + 0x10, 0x4f, 0x04, 0xdf, 0x64, 0x87, 0x88, 0xda, 0x49, 0x3e, 0xbf, 0xa2, 0x21, 0xd6, 0x31, + 0xac, 0x9f, 0xf2, 0xf8, 0xd1, 0x5c, 0xf8, 0x89, 0x72, 0x0c, 0x9e, 0x24, 0x30, 0xc1, 0x9f, + 0xd9, 0x36, 0xae, 0xcc, 0xcc, 0xbb, 0x09, 0xf2, 0xc3, 0x5c, 0xf9, 0x33, 0x87, 0x58, 0xb5, + 0x47, 0x69, 0x26, 0x23, 0x57, 0x98, 0xa4, 0x62, 0xa9, 0x0d, 0x70, 0xa7, 0x2d, 0xce, 0x6f, + 0x55, 0x05, 0x8f, 0x8b, 0x51, 0x5b, 0x18, 0xcd, 0x65, 0x9b, 0x47, 0xb6, 0xee, 0xd4, 0xfd, + 0x72, 0x28, 0xa0, 0x94, 0xa2, 0xd7, 0xd2, 0xef, 0x5a, 0xae, 0xc1, 0xf3, 0x6b, 0x5c, 0xa4, + 0x54, 0xdb, 0x48, 0xec, 0xfd, 0xe1, 0xe9, 0x5e, 0x8c, 0x62, 0x4c, 0xf7, 0x7a, 0x50, 0x62, + 0xeb, 0xdf, 0x54, 0x6a, 0x49, 0x6f, 0xdb, 0x5a, 0x02, 0x96, 0xf9, 0x1d, 0x57, 0x8e, 0xa1, + 0x61, 0xaa, 0xc7, 0xc7, 0xa8, 0x1b, 0xf5, 0x33, 0x3d, 0x65, 0x12, 0x45, 0x54, 0xfc, 0x9d, + 0x40, 0x17, 0x7c, 0xff, 0xf4, 0x2e, 0x0b, 0xbd, 0x56, 0x80, 0x5c, 0x83, 0x7f, 0xe6, 0x20, + 0x3f, 0x6e, 0x91, 0xa2, 0x2c, 0x58, 0x33, 0x69, 0xbc, 0x15, 0x10, 0xdc, 0x2d, 0xa3, 0xd6, + 0x06, 0xa9, 0xce, 0xa7, 0xec, 0xa8, 0x28, 0x14, 0xbe, 0xbe, 0x80, 0x82, 0x8f, 0x1d, 0x4c, + 0x24, 0x40, 0x26, 0x68, 0xdd, 0xa9, 0xaa, 0x4c, 0xd6, 0x87, 0x7e, 0x46, 0x7a, 0xaa, 0x43, + 0x56, 0x2e, 0xd9, 0x24, 0xda, 0x6f, 0xdd, 0x21, 0x10, 0x39, 0x48, 0xd5, 0x08, 0xec, 0x5d, + 0x1f, 0xe4, 0xdb, 0x64, 0xa1, 0x99, 0x8b, 0x11, 0x60, 0x2f, 0x4b, 0x44, 0x84, 0xd2, 0x69, + 0x52, 0xfd, 0xee, 0xe9, 0x5b, 0xb0, 0xa8, 0xc5, 0x07, 0x77, 0x15, 0xfe, 0x58, 0xf5, 0x62, + 0xfb, 0x60, 0x4c, 0x43, 0xe0, 0x17, 0x54, 0x42, 0x9f, 0x07, 0x7c, 0x2d, 0xc0, 0xa2, 0x6a, + 0x3e, 0x13, 0x0b, 0x78, 0x5c, 0x62, 0x98, 0x7f, 0x55, 0xe2, 0xc7, 0xb2, 0x58, 0xe1, 0x9d, + 0x53, 0xb5, 0xd9, 0xaf, 0x0c, 0x11, 0x70, 0x85, 0xca, 0x21, 0x87, 0x1a, 0x39, 0x5e, 0x67, + 0xd4, 0x51, 0x75, 0x2e, 0xa8, 0xea, 0x0d, 0x30, 0xc0, 0x93, 0x60, 0x18, 0x7f, 0xdf, 0x4a, + 0x41, 0xa0, 0x80, 0x1c, 0xed, 0x5c, 0xaa, 0x84, 0x4f, 0x2d, 0xec, 0x8c, 0xad, 0x24, 0xa1, + 0x4b, 0xa9, 0x52, 0x27, 0x8e, 0x70, 0xf6, 0xff, 0xc0, 0xb4, 0x13, 0x39, 0x75, 0xd4, 0xfc, + 0x9a, 0xbf, 0xff, 0x53, 0x3f, 0x44, 0x19, 0xd9, 0xa5, 0x28, 0x18, 0x5c, 0x38, 0xfb, 0x4c, + 0x3e, 0x5b, 0x40, 0xf2, 0xf4, 0xc2, 0x2c, 0x95, 0xdb, 0xd2, 0xe5, 0x5f, 0x87, 0x56, 0x63, + 0x28, 0xda, 0x07, 0xa9, 0x90, 0x83, 0x94, 0xdb, 0x56, 0x2c, 0xa3, 0xd0, 0xc4, 0x52, 0x6d, + 0x1f, 0xfa, 0x35, 0x4f, 0xba, 0xcf, 0x12, 0xf4, 0xf0, 0x46, 0xb5, 0x1e, 0x67, 0xba, 0x10, + 0xc9, 0xc3, 0x0a, 0x30, 0xed, 0xcd, 0xc4, 0x3a, 0x87, 0x08, 0x2c, 0xd9, 0x21, 0x5f, 0x68, + 0x0f, 0xf8, 0x2f, 0x6f, 0x2a, 0x27, 0x47, 0x79, 0x16, 0x52, 0x7a, 0xfd, 0x9d, 0x65, 0xec, + 0x53, 0x90, 0xaf, 0xf0, 0x45, 0x24, 0x08, 0x5a, 0x9f, 0xfd, 0xec, 0xd9, 0x9a, 0x4c, 0x0a, + 0xd4, 0x09, 0x58, 0xdd, 0x29, 0xe4, 0x1a, 0x8e, 0xe9, 0xa3, 0x60, 0x85, 0xd8, 0xd5, 0x9c, + 0xb7, 0x33, 0x2c, 0x3a, 0xfe, 0xd7, 0x09, 0x5a, 0x7a, 0x19, 0x3b, 0x67, 0xc2, 0xc9, 0xf1, + 0x41, 0xa4, 0xc6, 0x7f, 0x1e, 0x7d, 0x6a, 0x75, 0x24, 0xce, 0xef, 0x30, 0xdc, 0x74, 0x8f, + 0x2d, 0x8c, 0xf0, 0x5d, 0x2d, 0x4b, 0x0d, 0x0d, 0x1a, 0xda, 0x8b, 0xdb, 0xc9, 0xac, 0xeb, + 0x51, 0x5e, 0xaa, 0xde, 0x05, 0x3c, 0x8c, 0x87, 0x09, 0x08, 0x2d, 0xd2, 0xca, 0xe6, 0x66, + 0x97, 0x70, 0x38, 0x0e, 0x28, 0x53, 0x4b, 0x59, 0x85, 0x6a, 0x59, 0xe2, 0xd2, 0x6f, 0x87, + 0x4f, 0x4b, 0xf5, 0xe1, 0x4d, 0xc9, 0x23, 0xdd, 0xfe, 0x77, 0x44, 0x92, 0x3f, 0xf6, 0x78, + 0x93, 0x18, 0x38, 0x02, 0x24, 0x22, 0x89, 0xb7, 0x59, 0x84, 0x7d, 0xe4, 0xf7, 0x67, 0xaa, + 0xb8, 0xd4, 0x03, 0x92, 0x97, 0xfd, 0xaa, 0xb0, 0x5d, 0xee, 0x1a, 0x48, 0xb1, 0xfb, 0x1c, + 0x9d, 0xaf, 0x64, 0xc3, 0xd6, 0x3e, 0xb7, 0x62, 0xf5, 0xdb, 0xea, 0x61, 0x1d, 0xde, 0xc6, + 0xee, 0x6e, 0x90, 0xfd, 0x0b, 0x74, 0xd2, 0xc2, 0xf7, 0x35, 0x98, 0x78, 0x74, 0x3e, 0xb4, + 0xac, 0x29, 0x4f, 0xcd, 0x95, 0x6f, 0x0a, 0x6b, 0x20, 0xee, 0xd6, 0xd8, 0x6b, 0x34, 0x51, + 0xc0, 0x6f, 0x52, 0x9c, 0x4d, 0xac, 0x9a, 0x11, 0xb8, 0xb8, 0x29, 0x37, 0x8a, 0x1b, 0x8f, + 0x0c, 0x3a, 0x7a, 0x24, 0xfa, 0xc9, 0x5b, 0xef, 0x94, 0x9d, 0x36, 0xf9, 0x1a, 0x5b, 0x97, + 0xab, 0x0d, 0x3e, 0xc4, 0x7c, 0x9a, 0x83, 0xb7, 0x36, 0x1b, 0x2c, 0x93, 0xd2, 0x66, 0x6e, + 0x6f, 0x32, 0x11, 0x2f, 0x21, 0x19, 0x96, 0x3d, 0x7c, 0x5f, 0x2e, 0x6c, 0x05, 0x34, 0x95, + 0x7c, 0x1b, 0x9b, 0x33, 0xa4, 0xb2, 0x6d, 0x5f, 0xda, 0x45, 0x69, 0x0e, 0x5c, 0x1e, 0x5e, + 0xa9, 0x1a, 0x31, 0xc8, 0x23, 0x78, 0x98, 0x34, 0x4b, 0xe9, 0x37, 0xd5, 0x87, 0x46, 0xec, + 0x9b, 0x20, 0x50, 0x35, 0xb9, 0x95, 0xe5, 0x06, 0x50, 0xa6, 0xe1, 0xdd, 0x19, 0xf5, 0xc6, + 0x96, 0xec, 0xb3, 0x08, 0x1c, 0x25, 0xad, 0x3b, 0xfc, 0x11, 0x6c, 0x9a, 0x7d, 0xd8, 0x31, + 0x03, 0x24, 0xb5, 0xcb, 0x90, 0xed, 0xfc, 0x98, 0xb1, 0x46, 0xec, 0xd0, 0xa9, 0x3c, 0x1f, + 0x66, 0xb5, 0xba, 0x5e, 0xf2, 0x5a, 0xd5, 0xf3, 0xdf, 0x54, 0xe7, 0x11, 0x89, 0xdc, 0xf0, + 0xea, 0x09, 0x5d, 0x7a, 0x7a, 0xf6, 0x5f, 0x5d, 0x69, 0xc0, 0xbc, 0xf3, 0x73, 0x73, 0x9a, + 0xd5, 0x78, 0x40, 0xe3, 0x54, 0x31, 0x45, 0xd1, 0xc0, 0x2f, 0x93, 0xbc, 0x1e, 0x2f, 0x39, + 0x4e, 0xb4, 0xf0, 0x3e, 0x57, 0x7a, 0x64, 0x8d, 0x98, 0x66, 0x5d, 0x83, 0x5a, 0x6f, 0x8b, + 0x5f, 0xf2, 0x7e, 0xd1, 0xc9, 0xcc, 0xbb, 0xf7, 0xaa, 0x95, 0x2e, 0x7a, 0x7d, 0x8d, 0xec, + 0x37, 0x7a, 0xb5, 0xbc, 0x8d, 0x62, 0xd2, 0x32, 0x1e, 0xd7, 0x8b, 0x15, 0x06, 0x75, 0xde, + 0x81, 0xab, 0xb0, 0xd4, 0x59, 0xa2, 0x25, 0x34, 0xca, 0x6d, 0xce, 0x3f, 0xa3, 0xae, 0xe6, + 0x09, 0xb3, 0x33, 0xe1, 0x25, 0x56, 0x77, 0x30, 0x8b, 0xf7, 0x30, 0x0f, 0x74, 0x72, 0x36, + 0x8c, 0x4b, 0x5d, 0x94, 0xbc, 0x4f, 0x5e, 0x1d, 0x8a, 0x75, 0xec, 0xd4, 0x21, 0x21, 0xa9, + 0x54, 0x9c, 0xc8, 0x37, 0x28, 0x06, 0xae, 0x5c, 0x72, 0x3b, 0xa0, 0x80, 0x0d, 0x17, 0xbb, + 0x22, 0xe8, 0xf7, 0xa9, 0x31, 0x7d, 0x2c, 0x13, 0x74, 0xbc, 0xa0, 0x09, 0xba, 0x5b, 0x05, + 0xa4, 0xf9, 0xab, 0xb5, 0xd5, 0xd7, 0x11, 0x3f, 0xa3, 0xb4, 0x89, 0x79, 0x1c, 0x4a, 0xd8, + 0xfb, 0xc6, 0x54, 0x41, 0xaf, 0x32, 0xc9, 0x71, 0xaa, 0x5a, 0xb1, 0xb5, 0xe0, 0xa0, 0x73, + 0x45, 0x18, 0x73, 0x17, 0xd2, 0xcb, 0xb8, 0x70, 0x30, 0xbb, 0xce, 0x25, 0xad, 0x9e, 0x8d, + 0xf3, 0x0d, 0xec, 0x26, 0x3f, 0x2c, 0x16, 0x49, 0x45, 0x68, 0xbe, 0x04, 0x3e, 0x67, 0x1a, + 0xa6, 0x7e, 0xe9, 0x44, 0x63, 0x43, 0x91, 0x92, 0x25, 0x84, 0x04, 0xe6, 0xa8, 0xb7, 0xf2, + 0x70, 0x86, 0xba, 0x2e, 0x34, 0x4c, 0x0f, 0x45, 0xac, 0x39, 0x8d, 0x0c, 0x59, 0x60, 0x08, + 0xb2, 0x07, 0x79, 0xfd, 0xd0, 0x60, 0xad, 0x0d, 0x53, 0xa6, 0x9b, 0x02, 0x22, 0xf2, 0xbc, + 0xb4, 0xbd, 0x9e, 0x8a, 0xe8, 0x3b, 0xa7, 0x76, 0x21, 0x8e, 0x59, 0x5f, 0x08, 0xb6, 0xf9, + 0x4f, 0x18, 0x09, 0x8b, 0x8a, 0x94, 0x59, 0x93, 0xa3, 0x23, 0xf1, 0xdb, 0x62, 0x88, 0x30, + 0xe5, 0xea, 0xf1, 0x79, 0x3a, 0xf4, 0x3a, 0x57, 0xee, 0xab, 0xa0, 0x82, 0x39, 0x44, 0xd9, + 0x13, 0xb9, 0x32, 0xb4, 0x97, 0xb9, 0xa9, 0xb3, 0x23, 0x81, 0x61, 0xed, 0x96, 0x51, 0xd9, + 0xc5, 0x1c, 0x1b, 0xe7, 0x2a, 0x18, 0x83, 0xdb, 0xf5, 0xf2, 0x93, 0x98, 0xd8, 0x79, 0xc3, + 0x38, 0x6d, 0x86, 0x83, 0x9a, 0x80, 0x0d, 0x21, 0x5e, 0xbd, 0x7c, 0x7a, 0x32, 0xd0, 0x75, + 0xea, 0xe4, 0x95, 0x01, 0xcc, 0xa3, 0x2c, 0x74, 0x97, 0x1a, 0x25, 0xc7, 0x1a, 0x38, 0xe6, + 0x92, 0x8b, 0x89, 0xff, 0x56, 0xcd, 0x8d, 0x9f, 0xa0, 0x18, 0x9b, 0x00, 0xc4, 0x58, 0x38, + 0x49, 0x6a, 0x87, 0x59, 0xcc, 0x3b, 0xde, 0xb1, 0x6a, 0x86, 0x12, 0x74, 0x03, 0xd7, 0x04, + 0xc4, 0x63, 0xab, 0x1f, 0x5f, 0xf8, 0x4b, 0xba, 0x1d, 0x27, 0x06, 0xba, 0x68, 0xee, 0xe2, + 0xd3, 0x59, 0xb1, 0xc1, 0x7b, 0x97, 0x4e, 0x36, 0x9e, 0x13, 0x62, 0x9a, 0xad, 0x75, 0xe5, + 0x44, 0xaa, 0x9c, 0x5e, 0xdd, 0x05, 0x24, 0x6f, 0x44, 0x54, 0xc2, 0x5a, 0xfd, 0x4e, 0x97, + 0x49, 0xfc, 0xf8, 0xe9, 0x87, 0x42, 0x7d, 0xc5, 0xd6, 0x36, 0x21, 0x20, 0x6c, 0x2c, 0x32, + 0xf9, 0xca, 0x49, 0x2f, 0x7c, 0x3c, 0x24, 0x39, 0xd6, 0x91, 0xd3, 0x69, 0xf1, 0x8b, 0x91, + 0x54, 0xfd, 0xa0, 0x7a, 0x01, 0x52, 0x4a, 0xee, 0xf7, 0xea, 0xac, 0x19, 0xe8, 0x26, 0x8c, + 0x5b, 0x23, 0xd3, 0xa3, 0xa6, 0x44, 0xdf, 0x9c, 0x90, 0xd8, 0x09, 0x68, 0xda, 0x44, 0x50, + 0x2c, 0x55, 0x44, 0xd5, 0xc2, 0x7d, 0xab, 0xb0, 0x44, 0x81, 0xe5, 0xd9, 0x89, 0x0b, 0x08, + 0x7e, 0xe0, 0x15, 0x0f, 0xef, 0x80, 0xd9, 0x46, 0xef, 0x0d, 0x58, 0x9b, 0xa2, 0x5f, 0x74, + 0xb4, 0x5c, 0x66, 0x84, 0x5b, 0x5d, 0x5e, 0x08, 0xd1, 0xfc, 0x8e, 0x7b, 0xb4, 0x51, 0x59, + 0x17, 0xb3, 0x32, 0xdb, 0x86, 0x6a, 0x7a, 0x11, 0x74, 0x78, 0xda, 0x6b, 0x50, 0x10, 0x16, + 0x04, 0x48, 0x1f, 0xc8, 0x24, 0x9f, 0x77, 0xb7, 0x39, 0x0f, 0xd4, 0xde, 0x34, 0x50, 0x3a, + 0xb7, 0x2d, 0x0e, 0x6e, 0x9e, 0x15, 0x9a, 0x8e, 0x90, 0x1e, 0x93, 0xbf, 0x6b, 0xb8, 0xeb, + 0x10, 0x52, 0xe4, 0x0d, 0x7f, 0x05, 0x0e, 0x5d, 0x87, 0x25, 0x8f, 0xbc, 0x7f, 0x25, 0xfa, + 0xce, 0x37, 0x03, 0xac, 0x15, 0xfa, 0x46, 0x3d, 0xd5, 0x48, 0xfb, 0xf2, 0x63, 0x7b, 0xda, + 0x6f, 0x37, 0xdb, 0xbe, 0xc0, 0xad, 0xac, 0xb3, 0x36, 0xe4, 0xe6, 0x15, 0xd7, 0xd4, 0xc8, + 0x4e, 0xe0, 0x74, 0x3d, 0xe7, 0x31, 0x05, 0xf3, 0x42, 0x79, 0x12, 0x91, 0x56, 0x8e, 0xf7, + 0xd1, 0x60, 0xd4, 0x7d, 0x28, 0x53, 0x5b, 0xe9, 0x16, 0x25, 0x17, 0x32, 0x6c, 0x3a, 0x80, + 0xc8, 0x23, 0xe3, 0x54, 0xef, 0xc4, 0xfe, 0xd7, 0x21, 0xa1, 0xc1, 0x01, 0xfc, 0xad, 0x4e, + 0x3d, 0x14, 0xb5, 0xd4, 0x08, 0x9d, 0xdd, 0x98, 0x6c, 0xd6, 0x26, 0x4d, 0xad, 0x83, 0x50, + 0x45, 0x82, 0x0e, 0x8d, 0x1e, 0x4c, 0x7a, 0xea, 0x65, 0xb2, 0x1c, 0x75, 0x2d, 0xe3, 0x57, + 0xd2, 0x26, 0x56, 0x8c, 0x46, 0xb7, 0x83, 0x61, 0x4b, 0x1d, 0xe0, 0x42, 0xa1, 0x3f, 0x9d, + 0xe5, 0x37, 0xdd, 0xfa, 0x21, 0xd8, 0x45, 0x2a, 0xa5, 0xc8, 0x4f, 0x8a, 0x38, 0x0c, 0xc0, + 0x7f, 0x43, 0xac, 0xfa, 0xaf, 0x8b, 0x84, 0xdf, 0x70, 0xc3, 0xf7, 0x1b, 0xff, 0x1c, 0x82, + 0x66, 0xdb, 0x04, 0x27, 0xa8, 0x60, 0x38, 0xd9, 0x6a, 0x76, 0xbc, 0xd2, 0xac, 0xa7, 0x2c, + 0xa7, 0x25, 0xde, 0xe2, 0xff, 0xc0, 0x30, 0xbb, 0x45, 0x3c, 0x11, 0xea, 0x3b, 0x33, 0xfb, + 0x40, 0x71, 0xbe, 0xfe, 0xa6, 0x0b, 0xb9, 0xac, 0xff, 0xa9, 0xe4, 0xc6, 0x5d, 0x9a, 0x9b, + 0xea, 0x10, 0x53, 0x95, 0xa3, 0x4f, 0x9b, 0xc7, 0x8c, 0x4c, 0x5e, 0x92, 0x95, 0xc1, 0x52, + 0xd2, 0xe1, 0x45, 0x4a, 0x53, 0x14, 0xc1, 0xed, 0x1f, 0xba, 0x8a, 0x47, 0xc3, 0x64, 0x1e, + 0x7b, 0xf6, 0x61, 0x39, 0xb8, 0x1c, 0x83, 0x59, 0x2d, 0x1e, 0xf6, 0xb4, 0x81, 0x32, 0xee, + 0xe0, 0x97, 0xd2, 0x25, 0xdb, 0xa6, 0x44, 0xf0, 0xe9, 0x73, 0xa1, 0xb5, 0xfc, 0x1b, 0x04, + 0xe5, 0x5d, 0x35, 0x3c, 0xe3, 0x1b, 0x4a, 0x30, 0x02, 0x29, 0x00, 0xe9, 0xda, 0xc5, 0x74, + 0x6f, 0x7e, 0xb4, 0xa1, 0x4f, 0xbb, 0xfe, 0x8b, 0x36, 0x74, 0x2a, 0x4e, 0xee, 0xc6, 0x85, + 0x38, 0x05, 0x74, 0xfe, 0x5c, 0xf2, 0xca, 0x39, 0xdd, 0xab, 0xca, 0xa4, 0x30, 0xf9, 0xee, + 0xf1, 0x3b, 0xdd, 0x2c, 0xe0, 0x64, 0x73, 0x88, 0x9e, 0x80, 0x0f, 0xbf, 0xf8, 0x5e, 0x1a, + 0x8b, 0x05, 0xea, 0x9a, 0x9a, 0xae, 0x82, 0xeb, 0x6d, 0x04, 0xbf, 0xa8, 0x25, 0xdf, 0x54, + 0x17, 0x92, 0x3d, 0x52, 0x4e, 0x3c, 0x93, 0xc6, 0x5a, 0xd8, 0x50, 0xf8, 0x57, 0x42, 0xf2, + 0x02, 0x9e, 0xbb, 0xf6, 0x44, 0xd7, 0x0d, 0x59, 0xdf, 0x77, 0x3b, 0x23, 0x54, 0x7b, 0xa7, + 0x67, 0x75, 0xf3, 0xe5, 0x75, 0x3e, 0x9d, 0xdc, 0xe0, 0xdc, 0x75, 0xb8, 0x93, 0xf0, 0xd2, + 0x5b, 0x03, 0x9c, 0x56, 0x4d, 0x22, 0xd9, 0xfd, 0x42, 0xb2, 0xcf, 0xc9, 0xb4, 0x3f, 0xe5, + 0x32, 0x01, 0x75, 0x54, 0xa4, 0xdf, 0xa3, 0x43, 0xcd, 0x77, 0x25, 0x87, 0xb9, 0x74, 0x07, + 0x71, 0xe8, 0xa6, 0x82, 0x82, 0x14, 0x16, 0x94, 0x45, 0x6a, 0xb1, 0x42, 0xfe, 0x7b, 0xbf, + 0x08, 0xa2, 0x1d, 0x42, 0xc2, 0x79, 0x6e, 0xec, 0x50, 0x71, 0x57, 0xa5, 0x81, 0xbf, 0xe4, + 0x52, 0x68, 0xf1, 0xd4, 0xc9, 0xdb, 0x34, 0x2d, 0x9e, 0xda, 0x2f, 0x29, 0xda, 0x43, 0x6a, + 0xc6, 0x13, 0x09, 0x9e, 0xf1, 0xfb, 0xe1, 0x6b, 0x9b, 0x48, 0x5d, 0x8e, 0xcb, 0xc0, 0xb3, + 0x0f, 0x48, 0x67, 0x8e, 0x53, 0xd7, 0x51, 0x8e, 0xf4, 0x44, 0x1d, 0xcf, 0xc4, 0x03, 0x0d, + 0x64, 0x68, 0xb9, 0x62, 0x2b, 0x0b, 0x31, 0xf1, 0xc8, 0x22, 0xce, 0xbe, 0xc5, 0xa6, 0x06, + 0x4f, 0x43, 0x9a, 0x1b, 0xa5, 0xfc, 0xa6, 0xac, 0xe4, 0x94, 0x5e, 0x4b, 0x80, 0x65, 0xfe, + 0xb4, 0xeb, 0xd4, 0x4d, 0x0e, 0x66, 0x01, 0x1d, 0x2b, 0x31, 0x7d, 0xfc, 0x3a, 0xb2, 0x63, + 0x45, 0x5b, 0x3a, 0x64, 0xd1, 0xc8, 0x25, 0x1a, 0xa6, 0x6c, 0x96, 0xa5, 0x9c, 0x20, 0xfc, + 0xf8, 0x8a, 0x0d, 0x5b, 0x83, 0x19, 0xd4, 0xde, 0x01, 0xc3, 0x22, 0x06, 0x6c, 0x0b, 0x0a, + 0x17, 0x9c, 0x77, 0x1f, 0xc0, 0x53, 0x07, 0xc7, 0x6f, 0xe3, 0xdf, 0x61, 0x6e, 0x21, 0x0e, + 0x8f, 0x26, 0x3b, 0x89, 0x3b, 0x7b, 0x11, 0x7a, 0xf2, 0x88, 0x29, 0x98, 0xff, 0xec, 0x4b, + 0x95, 0xee, 0x8b, 0xc7, 0xde, 0x60, 0x0a, 0x49, 0x0e, 0x4f, 0xa3, 0x91, 0xa9, 0xfc, 0x97, + 0x4a, 0x34, 0xe8, 0x00, 0x8f, 0x38, 0xa6, 0x91, 0xe5, 0xde, 0xfe, 0x2d, 0x20, 0xde, 0xd8, + 0x9b, 0x6a, 0x97, 0x14, 0x3a, 0xaf, 0x2f, 0x47, 0x8a, 0x66, 0x22, 0x03, 0x68, 0x4b, 0x9b, + 0xe4, 0xbd, 0x98, 0x2e, 0x5f, 0x21, 0x63, 0x5a, 0x9a, 0x70, 0x27, 0x41, 0x46, 0x51, 0x27, + 0xbb, 0xa1, 0xb6, 0xd5, 0x2d, 0xdf, 0x09, 0x64, 0xd5, 0xdb, 0x0c, 0x2f, 0x4c, 0x00, 0x55, + 0x45, 0xd1, 0x12, 0xd7, 0xdb, 0x81, 0x09, 0x40, 0x59, 0xba, 0x93, 0xe8, 0xfc, 0x0c, 0x1a, + 0x9e, 0x00, 0xd9, 0xf7, 0xc5, 0x68, 0x23, 0x16, 0x10, 0x51, 0xba, 0xb0, 0x0c, 0x67, 0x56, + 0x6d, 0xd4, 0x81, 0x88, 0xa1, 0x6f, 0xcc, 0x9c, 0x54, 0x3b, 0x5a, 0xc0, 0x27, 0x90, 0xaa, + 0xf1, 0x10, 0xf7, 0x28, 0x56, 0xec, 0x49, 0x05, 0x41, 0x88, 0x24, 0x9a, 0x8b, 0x62, 0x5f, + 0xe1, 0x9c, 0xa6, 0xd7, 0x23, 0x08, 0x80, 0xf5, 0x85, 0x4d, 0xce, 0xa4, 0xf5, 0x11, 0xc0, + 0x4b, 0xd3, 0x64, 0xe4, 0x2e, 0x08, 0x3b, 0xea, 0x33, 0x46, 0xaf, 0x92, 0xec, 0x61, 0xc8, + 0x14, 0xee, 0x6f, 0x90, 0x5a, 0xe8, 0x3e, 0xcb, 0xe1, 0x41, 0xd8, 0x5f, 0xab, 0xac, 0x5b, + 0xe7, 0x61, 0x09, 0x92, 0x62, 0xc8, 0x42, 0x12, 0x3f, 0x9d, 0x17, 0x11, 0x17, 0x1d, 0x89, + 0x1c, 0x59, 0x55, 0x42, 0xec, 0x37, 0x7b, 0xdc, 0x30, 0xe7, 0x01, 0x8f, 0x76, 0x6c, 0xda, + 0xb0, 0x45, 0x50, 0x02, 0x8d, 0x27, 0xea, 0x55, 0x04, 0x11, 0xf6, 0xf3, 0x3f, 0xca, 0xed, + 0xef, 0x8c, 0xf6, 0xb6, 0xd5, 0x83, 0x46, 0xa1, 0x56, 0xd9, 0xc5, 0xa5, 0x65, 0x45, 0x9c, + 0x50, 0x3e, 0x9e, 0xc6, 0xd0, 0x83, 0x8d, 0x13, 0xd0, 0x6a, 0x21, 0x30, 0x44, 0x70, 0x6a, + 0x95, 0xf2, 0x48, 0x18, 0x84, 0xe5, 0x60, 0xa4, 0xb3, 0xe5, 0x74, 0xe0, 0x8a, 0x47, 0x58, + 0x82, 0x89, 0xb7, 0x16, 0xc0, 0x1a, 0x0f, 0x0f, 0x35, 0x56, 0xa3, 0x0c, 0xdb, 0x12, 0xc0, + 0x02, 0x8f, 0x1a, 0x72, 0xd1, 0x73, 0xbf, 0xf0, 0x67, 0x94, 0xaa, 0xc8, 0x73, 0x5b, 0x95, + 0x61, 0x5a, 0xca, 0x41, 0xf5, 0xe9, 0xc6, 0x38, 0x21, 0x67, 0x1b, 0xe7, 0xc5, 0x7b, 0x0d, + 0x06, 0x60, 0x6d, 0x31, 0x40, 0x6e, 0xa5, 0xd6, 0xfa, 0xe1, 0xd1, 0x85, 0x8e, 0x52, 0x2d, + 0xf5, 0x06, 0x90, 0xf8, 0x55, 0xf9, 0x1e, 0x8e, 0x7f, 0xd5, 0xc7, 0x32, 0x0a, 0x93, 0xb8, + 0xe0, 0xe3, 0x1c, 0xe1, 0xa0, 0xfe, 0xa6, 0x11, 0x4b, 0x08, 0x14, 0x47, 0x10, 0x56, 0xc5, + 0x62, 0x38, 0x22, 0x12, 0xfc, 0x2b, 0x9a, 0x9e, 0xf2, 0x19, 0xe7, 0xa4, 0xa2, 0x0f, 0xb8, + 0x32, 0xeb, 0x42, 0x77, 0x3c, 0xb2, 0x41, 0xbf, 0x3c, 0x05, 0x19, 0xf3, 0x6a, 0x50, 0x74, + 0x41, 0x0e, 0x02, 0xab, 0x1a, 0xc7, 0x69, 0x04, 0x76, 0xb4, 0xb2, 0x45, 0x6f, 0x05, 0x92, + 0x77, 0x83, 0x9b, 0xc2, 0x4b, 0xeb, 0x30, 0xf1, 0x8e, 0xf0, 0x2c, 0xa8, 0x52, 0xdf, 0xcf, + 0x0f, 0xd4, 0x63, 0xb7, 0x55, 0x9e, 0x8d, 0xd9, 0xc0, 0xef, 0x02, 0xaa, 0x74, 0x76, 0x43, + 0x4b, 0x60, 0x53, 0x04, 0xce, 0x21, 0xa5, 0xa0, 0x1c, 0x48, 0xca, 0x64, 0xe3, 0xc7, 0x18, + 0xc2, 0x67, 0x95, 0xba, 0x85, 0xe9, 0x87, 0xee, 0xd8, 0x03, 0x07, 0xc4, 0xe7, 0x6a, 0xf8, + 0x83, 0xb4, 0xbc, 0xb6, 0x82, 0x9e, 0xc9, 0x1e, 0xe3, 0xa9, 0x36, 0x22, 0x77, 0xc4, 0x98, + 0x3c, 0x50, 0xfb, 0x6e, 0xd9, 0x42, 0x2a, 0x48, 0xb6, 0xe8, 0x33, 0x7c, 0xc4, 0x30, 0xd7, + 0xc0, 0x59, 0x6d, 0x5c, 0x74, 0x93, 0x8b, 0x70, 0x28, 0x25, 0xcc, 0x52, 0x3d, 0xb1, 0xa8, + 0xa6, 0x60, 0x39, 0x3a, 0x2d, 0xf6, 0x53, 0x0e, 0x34, 0x28, 0xe1, 0x2b, 0x89, 0x08, 0x27, + 0x3a, 0x28, 0x51, 0xef, 0x20, 0xf9, 0x9c, 0x36, 0xb1, 0x2c, 0xeb, 0x6a, 0xeb, 0x60, 0x08, + 0x0b, 0x25, 0xac, 0x34, 0x4d, 0x21, 0xea, 0x2d, 0x27, 0x98, 0x62, 0x14, 0x68, 0x41, 0x94, + 0x66, 0x20, 0x0d, 0x52, 0x32, 0x0d, 0x71, 0x68, 0x1a, 0x44, 0x13, 0x47, 0xda, 0x22, 0xd6, + 0xf5, 0x3a, 0x3a, 0x05, 0x9f, 0xfc, 0x62, 0xbc, 0x76, 0xd9, 0x37, 0x7f, 0x73, 0x2b, 0x8d, + 0x83, 0xa5, 0x81, 0xf3, 0x98, 0x95, 0x56, 0x99, 0x19, 0x73, 0xd7, 0x24, 0xf7, 0x62, 0x79, + 0xf5, 0x7b, 0x2e, 0x05, 0x41, 0x65, 0x72, 0xfb, 0x6a, 0xd1, 0xd2, 0xe9, 0x9c, 0x08, 0x53, + 0x8d, 0x08, 0x84, 0x27, 0xe7, 0x6a, 0xda, 0x99, 0xf2, 0xbf, 0x13, 0xb4, 0x1f, 0xa8, 0x5f, + 0x21, 0x40, 0xc0, 0x64, 0xb4, 0x0a, 0x6a, 0x2f, 0x88, 0x09, 0xff, 0x82, 0x19, 0x9b, 0xec, + 0x4f, 0xa0, 0xdf, 0x73, 0xb2, 0x41, 0x00, 0x09, 0xa6, 0xff, 0x38, 0x58, 0x68, 0x44, 0xe0, + 0x67, 0xda, 0xd7, 0x57, 0xd9, 0x9c, 0xf6, 0x0a, 0xd6, 0x9f, 0x6a, 0x3b, 0x98, 0x59, 0xdd, + 0xdf, 0xe2, 0x10, 0x56, 0xd5, 0xf3, 0x51, 0x20, 0x7e, 0xc5, 0x78, 0x0d, 0x18, 0xcf, 0x8f, + 0x0c, 0x01, 0xf2, 0xaa, 0xa2, 0x05, 0x9c, 0x65, 0x8e, 0x10, 0x86, 0x0a, 0x2c, 0x6c, 0x45, + 0x7b, 0x6d, 0x03, 0xdf, 0x57, 0xd3, 0x36, 0x21, 0xee, 0xd1, 0xd1, 0x81, 0x5e, 0x27, 0x86, + 0xbc, 0x76, 0x70, 0x85, 0xe0, 0x95, 0x46, 0xc7, 0xc8, 0x8b, 0x95, 0x28, 0x39, 0xc8, 0x55, + 0xf9, 0x61, 0x7c, 0xd5, 0x37, 0x48, 0xad, 0x68, 0x1c, 0x4e, 0x84, 0x38, 0x48, 0x34, 0xad, + 0x24, 0xab, 0xfa, 0x1d, 0x6f, 0xda, 0x2e, 0x41, 0xc4, 0xcc, 0x5c, 0x3b, 0xaf, 0x32, 0xb7, + 0x13, 0x3d, 0x0a, 0x44, 0x83, 0x01, 0x78, 0x07, 0xfe, 0x6f, 0xae, 0xfe, 0x11, 0xa4, 0x29, + 0x54, 0x7d, 0x83, 0x8a, 0xd4, 0xed, 0xba, 0x93, 0x13, 0x60, 0x3a, 0xd4, 0xa9, 0xa4, 0x63, + 0x3e, 0x06, 0x81, 0xa0, 0x31, 0x8b, 0xc2, 0x25, 0x70, 0xaa, 0xc8, 0x41, 0xcd, 0xce, 0x55, + 0x9b, 0x6a, 0x6f, 0x75, 0x01, 0xcb, 0xd4, 0xde, 0x6b, 0xcc, 0x38, 0xe5, 0x14, 0x18, 0xe4, + 0x53, 0xac, 0x26, 0x08, 0x1e, 0x07, 0x78, 0x3c, 0xd4, 0x17, 0xdd, 0x40, 0x50, 0x3c, 0x94, + 0x46, 0x6b, 0xc4, 0xf3, 0x7b, 0xdd, 0x2d, 0xe3, 0xe9, 0x0e, 0x23, 0x44, 0x39, 0xbc, 0x97, + 0xa4, 0xa0, 0xda, 0x84, 0x20, 0xec, 0x94, 0xce, 0x0e, 0x04, 0xd4, 0xb0, 0x61, 0xb4, 0x4f, + 0xa7, 0x08, 0x71, 0xd6, 0x8e, 0x48, 0x6f, 0x88, 0xd4, 0x19, 0x60, 0x0a, 0x91, 0x77, 0x99, + 0xbb, 0xce, 0x30, 0xb8, 0x36, 0x1b, 0x0c, 0x13, 0x0e, 0x2d, 0x79, 0xc6, 0xe6, 0x79, 0xa4, + 0xd7, 0x4d, 0xea, 0x8e, 0xa2, 0xc1, 0x40, 0xbd, 0x2b, 0xde, 0x04, 0x78, 0xa6, 0x59, 0x8a, + 0x10, 0xac, 0xc3, 0xf6, 0x53, 0x71, 0xfe, 0x79, 0x0f, 0x79, 0x37, 0xd5, 0xbf, 0xdd, 0xab, + 0xad, 0xac, 0x9e, 0x12, 0xac, 0xbd, 0xd5, 0x06, 0x26, 0x35, 0xab, 0xb1, 0x0d, 0x26, 0x5e, + 0x87, 0x3a, 0xa0, 0x07, 0xb0, 0xb5, 0x72, 0xc8, 0xad, 0x43, 0x2b, 0x87, 0xb1, 0x91, 0xf4, + 0x1c, 0x42, 0xd8, 0x51, 0xa6, 0x6e, 0xf6, 0xa7, 0xff, 0x53, 0xd8, 0xa5, 0x11, 0xce, 0x2c, + 0x01, 0xf4, 0x1d, 0x22, 0x23, 0x4d, 0xcb, 0x27, 0x61, 0x06, 0xdb, 0x9d, 0x3c, 0x99, 0x0c, + 0x5e, 0x1f, 0xca, 0x13, 0xde, 0x97, 0xdf, 0xbd, 0x28, 0x72, 0xdc, 0x2d, 0x69, 0x9c, 0x3b, + 0x6a, 0xa2, 0x0c, 0x5c, 0xf6, 0xfa, 0x2f, 0xc5, 0xe6, 0xd6, 0x6c, 0xcd, 0x1a, 0xfe, 0x39, + 0xed, 0x31, 0x72, 0x26, 0xbb, 0xa5, 0xfd, 0x2a, 0x97, 0x0a, 0xdb, 0xa5, 0x54, 0xb1, 0x44, + 0x00, 0x3f, 0x9b, 0x79, 0xa2, 0xda, 0xc3, 0xc1, 0x4d, 0xdf, 0x70, 0x43, 0xc9, 0x0b, 0xdb, + 0x4a, 0x24, 0xf7, 0xba, 0x4b, 0xac, 0x46, 0x78, 0x42, 0x3b, 0x66, 0xe3, 0x2d, 0x3a, 0x42, + 0x9a, 0x84, 0x3c, 0x5b, 0x36, 0x6f, 0x66, 0x14, 0x58, 0xec, 0x60, 0x4b, 0x67, 0xfb, 0x6a, + 0x34, 0x2c, 0x6a, 0x15, 0xb7, 0xc6, 0x7b, 0x0a, 0xe3, 0x5b, 0x9a, 0xcd, 0x84, 0x2e, 0xab, + 0x18, 0x8f, 0x08, 0x07, 0xe2, 0x25, 0xb6, 0x3d, 0x21, 0x0f, 0x59, 0xb7, 0x92, 0xaa, 0x4f, + 0x79, 0xcd, 0x60, 0x7e, 0x0a, 0x0a, 0x85, 0xff, 0x4d, 0x0d, 0x01, 0x0f, 0xe2, 0xcf, 0x97, + 0xee, 0x13, 0x75, 0xfc, 0x91, 0x80, 0x0a, 0x96, 0x86, 0x6c, 0x88, 0x09, 0xeb, 0x5c, 0x71, + 0x6b, 0x24, 0x51, 0xec, 0xd3, 0xa4, 0x83, 0x14, 0x47, 0x8b, 0xa0, 0x21, 0x95, 0x38, 0xf3, + 0x0f, 0x56, 0x81, 0xb5, 0x93, 0xfe, 0xe1, 0x63, 0x8f, 0x88, 0x6b, 0x85, 0x38, 0xce, 0x3c, + 0x5c, 0xea, 0x46, 0x73, 0xb8, 0x00, 0xd9, 0x5d, 0xa8, 0x3f, 0x76, 0xfd, 0xdc, 0x9e, 0x78, + 0x90, 0x83, 0xd2, 0x29, 0xb2, 0xbd, 0x86, 0x85, 0x58, 0x65, 0x33, 0xb7, 0x01, 0xab, 0x68, + 0x84, 0xc5, 0xab, 0x7a, 0x77, 0x8e, 0x4b, 0xf2, 0x27, 0x3d, 0x44, 0x3e, 0xa4, 0x4e, 0x19, + 0x20, 0xde, 0xaa, 0xe2, 0x28, 0xf2, 0x85, 0x86, 0xa6, 0x92, 0x2a, 0xce, 0x88, 0xae, 0x9f, + 0xfe, 0xff, 0xac, 0x1a, 0xbf, 0x78, 0x69, 0xe4, 0x98, 0xb5, 0xa1, 0x54, 0x97, 0x05, 0x25, + 0x70, 0x3e, 0x67, 0x00, 0x96, 0xc5, 0xe0, 0x39, 0x9c, 0x95, 0x92, 0x7d, 0xd7, 0x23, 0x83, + 0xb9, 0xe2, 0xf3, 0xbb, 0x65, 0x98, 0xcc, 0xda, 0x47, 0xf2, 0xd3, 0x59, 0x43, 0x34, 0x92, + 0x32, 0x03, 0x70, 0x5f, 0x5f, 0xcd, 0x8c, 0xba, 0xc6, 0x97, 0x48, 0x20, 0x18, 0x8e, 0xe2, + 0xfc, 0x96, 0xc9, 0x6a, 0x4a, 0xcf, 0x4c, 0xf8, 0x68, 0x55, 0x3c, 0x80, 0x8f, 0x69, 0x41, + 0xe2, 0xf1, 0x08, 0x90, 0xe4, 0xa0, 0xf4, 0x63, 0x04, 0x4f, 0x64, 0x16, 0xfc, 0xd5, 0x32, + 0xf0, 0x87, 0x57, 0x60, 0x28, 0x85, 0xfc, 0x1f, 0x8c, 0x42, 0xec, 0xc1, 0x41, 0x93, 0x32, + 0x0b, 0x4b, 0x8e, 0xbc, 0x18, 0xc7, 0x15, 0xd4, 0xe1, 0x99, 0x3f, 0x69, 0x74, 0x05, 0x44, + 0xd1, 0xd7, 0x83, 0xc0, 0x01, 0x00, 0x34, 0x0e, 0x44, 0x56, 0xf5, 0xe2, 0x6c, 0xfe, 0x26, + 0xfb, 0x10, 0x2a, 0xfc, 0xea, 0xb6, 0x1f, 0xef, 0x62, 0xbe, 0x39, 0x0d, 0xa2, 0xfc, 0xea, + 0x72, 0x2d, 0xa6, 0x1e, 0x5c, 0x25, 0x0f, 0xcc, 0xe6, 0xad, 0xc5, 0xe6, 0x53, 0xc9, 0x1c, + 0x46, 0x4a, 0x89, 0xaf, 0x58, 0xf9, 0xa3, 0x09, 0x0b, 0x6e, 0xdf, 0x29, 0xcd, 0xfc, 0x4c, + 0xb8, 0x9b, 0x3e, 0x0e, 0x5b, 0xdb, 0x4e, 0x4b, 0x82, 0x36, 0x7b, 0x01, 0xe9, 0x83, 0x75, + 0x5a, 0xfc, 0xe5, 0x90, 0xc3, 0xe9, 0xc2, 0x6f, 0x15, 0x8f, 0x01, 0xc5, 0x8a, 0x0a, 0xea, + 0x73, 0x02, 0xc0, 0xa4, 0x7a, 0x18, 0x32, 0x30, 0xb9, 0x05, 0xb7, 0x03, 0x02, 0xef, 0xac, + 0x2f, 0xdc, 0x5c, 0x40, 0x2a, 0x56, 0x0b, 0xe5, 0xe3, 0x70, 0x85, 0x88, 0x1d, 0xd9, 0x7d, + 0xa0, 0x40, 0x8d, 0x37, 0x85, 0xdf, 0xd0, 0xca, 0xd6, 0x1f, 0xe7, 0x67, 0xfa, 0xc5, 0xb8, + 0x92, 0xdd, 0x4f, 0x26, 0x4d, 0x77, 0xbe, 0x51, 0xa8, 0x0b, 0x1d, 0x2c, 0xb4, 0x52, 0x33, + 0x8d, 0x95, 0xaf, 0xf1, 0xbd, 0x6e, 0x91, 0xde, 0xac, 0xf6, 0xba, 0x0a, 0x5c, 0x9b, 0x67, + 0x20, 0x21, 0xd1, 0x33, 0xf7, 0x0f, 0xf4, 0xb1, 0x2a, 0x6b, 0x5b, 0x30, 0x31, 0x01, 0x1d, + 0xb3, 0x10, 0xec, 0xef, 0x05, 0x24, 0x72, 0xd6, 0xb5, 0x14, 0x48, 0xef, 0xc7, 0x93, 0xf8, + 0xf4, 0x76, 0x9a, 0x24, 0x01, 0xe3, 0x26, 0xca, 0x30, 0xa0, 0xc5, 0x1c, 0x7e, 0xc2, 0x19, + 0x7a, 0x87, 0xf9, 0x1d, 0xd3, 0xa4, 0xae, 0x81, 0xb3, 0x06, 0x2f, 0xbd, 0xc3, 0xd5, 0xb6, + 0xd7, 0xa7, 0x82, 0x8d, 0xab, 0x0e, 0x34, 0x9e, 0xe2, 0x37, 0x2b, 0x0b, 0x49, 0x94, 0x1f, + 0x25, 0x33, 0x27, 0xdf, 0x15, 0x3e, 0x2c, 0x90, 0x60, 0x19, 0x28, 0xcc, 0xd1, 0x0f, 0xc8, + 0x67, 0x5e, 0x5c, 0x63, 0x42, 0x14, 0x7c, 0xfb, 0x22, 0x21, 0x43, 0x7f, 0x31, 0x3a, 0xa5, + 0xe4, 0x87, 0x75, 0xfe, 0x08, 0x45, 0xa7, 0x32, 0xd9, 0x5f, 0x54, 0x93, 0x64, 0xce, 0xaf, + 0xca, 0x4a, 0x1e, 0xd9, 0xde, 0x5a, 0x64, 0x9f, 0x77, 0x93, 0x49, 0x54, 0x7a, 0xa9, 0x96, + 0xc0, 0x0e, 0xf4, 0x0c, 0xc2, 0x43, 0x33, 0x42, 0x92, 0x3f, 0x11, 0x96, 0x8b, 0x50, 0x11, + 0xa6, 0x9c, 0xe7, 0x38, 0x40, 0xaa, 0x19, 0x56, 0x6e, 0x6e, 0x6a, 0xe6, 0x9f, 0xa4, 0xbe, + 0x10, 0xc5, 0xf8, 0x72, 0xe0, 0xaf, 0xec, 0x51, 0xa0, 0xd9, 0x28, 0x08, 0xe9, 0x16, 0x1c, + 0x50, 0x97, 0xe7, 0x18, 0x38, 0xd0, 0x05, 0x35, 0x49, 0x72, 0xfa, 0xe4, 0x7b, 0x6e, 0x52, + 0x92, 0x41, 0x1d, 0xcd, 0x08, 0x79, 0xd7, 0x75, 0xd8, 0x9e, 0x02, 0x70, 0xaf, 0x09, 0x6c, + 0xac, 0x1c, 0x33, 0xa1, 0x7e, 0x56, 0xcd, 0xad, 0x4e, 0x4d, 0xc8, 0xae, 0xa4, 0xac, 0xbf, + 0x29, 0x52, 0xa0, 0x1e, 0x29, 0x76, 0x08, 0xc1, 0x2d, 0x7f, 0xcf, 0x2a, 0x63, 0xde, 0xd0, + 0x38, 0xa0, 0xf8, 0xf5, 0xc0, 0x0e, 0x1b, 0xce, 0x32, 0xe4, 0x67, 0xa6, 0x9d, 0xf1, 0xb5, + 0x02, 0x91, 0xb0, 0x4c, 0xbf, 0xf9, 0x38, 0x33, 0x47, 0xf8, 0x82, 0x8f, 0x17, 0xc0, 0xd8, + 0xa6, 0xe4, 0x0c, 0x85, 0xa7, 0xc2, 0x81, 0xf3, 0x99, 0x6e, 0x8c, 0x4b, 0x40, 0x9e, 0x7c, + 0x31, 0x13, 0x03, 0x36, 0x33, 0x0c, 0x95, 0xcd, 0xe3, 0x35, 0x4c, 0x73, 0x83, 0x3d, 0x80, + 0xaa, 0xa7, 0xbb, 0x15, 0x1b, 0x7e, 0xbd, 0x23, 0x31, 0xe7, 0x50, 0x51, 0xe0, 0x51, 0xaf, + 0xf1, 0x74, 0x2d, 0x4f, 0xa7, 0x6b, 0x81, 0x5a, 0x07, 0xd6, 0x0f, 0xb4, 0xdf, 0x95, 0x5d, + 0xf8, 0x7c, 0x47, 0xea, 0x0c, 0x90, 0x3d, 0x73, 0x2d, 0x05, 0x07, 0x50, 0xc9, 0x92, 0x6c, + 0xdf, 0xd3, 0xbc, 0xcc, 0xb0, 0x60, 0xfe, 0xf4, 0x6b, 0xc9, 0x9c, 0x1d, 0x99, 0x1f, 0x45, + 0x66, 0xe9, 0x66, 0xb3, 0xd8, 0x3f, 0x87, 0x32, 0x09, 0x0d, 0x8e, 0xe4, 0xb6, 0x68, 0xd8, + 0x5c, 0x13, 0x58, 0x16, 0x27, 0xa3, 0x9a, 0x51, 0x3a, 0x8a, 0xac, 0x03, 0x7e, 0x65, 0x32, + 0x0e, 0xff, 0xb6, 0x2b, 0x8f, 0xe1, 0x65, 0x03, 0x1d, 0x84, 0x31, 0x7b, 0x08, 0x29, 0x55, + 0xa7, 0x1f, 0x1b, 0x95, 0x1d, 0x5e, 0x68, 0x8f, 0x6f, 0xc7, 0x52, 0x55, 0x09, 0x8a, 0x8e, + 0xff, 0xd3, 0x5b, 0x41, 0x60, 0xb8, 0x3a, 0x05, 0x5b, 0xb9, 0xe0, 0xbe, 0x0f, 0xd8, 0xf7, + 0x01, 0xb5, 0xeb, 0xc9, 0xed, 0x8e, 0xe4, 0x85, 0x69, 0x18, 0xdd, 0xa1, 0x27, 0xf0, 0x9a, + 0x13, 0x51, 0xe7, 0x22, 0xdf, 0x04, 0xcd, 0xc3, 0xd9, 0xa8, 0x73, 0xdb, 0xe8, 0xb7, 0x39, + 0x66, 0x9b, 0x36, 0x15, 0xad, 0x14, 0xad, 0x9d, 0xf0, 0x64, 0x69, 0xa3, 0x6a, 0xbb, 0x59, + 0xfb, 0xce, 0x00, 0xac, 0x23, 0xb4, 0x7f, 0x3a, 0xa2, 0xf9, 0x55, 0x4b, 0x7b, 0x0f, 0x9d, + 0x5a, 0x2b, 0xc7, 0x5e, 0xb7, 0xfb, 0x21, 0x10, 0xf4, 0x0d, 0x2e, 0x62, 0xca, 0x7b, 0x30, + 0x0f, 0xdf, 0xa7, 0xf3, 0xd2, 0xf4, 0x6c, 0xd8, 0x14, 0x76, 0x02, 0x3b, 0x43, 0x59, 0xd7, + 0xa9, 0x19, 0x81, 0x1d, 0x65, 0xe8, 0xc3, 0x9b, 0x69, 0xf2, 0xd4, 0x73, 0xf3, 0xf8, 0x84, + 0xaa, 0xf9, 0x1e, 0xa9, 0x1e, 0xcd, 0x84, 0xc4, 0x45, 0xa6, 0x34, 0xf2, 0x8a, 0x93, 0x3b, + 0xb6, 0x2b, 0xc8, 0x49, 0x48, 0x1c, 0xd9, 0x70, 0x8e, 0xf2, 0x07, 0x2b, 0xf5, 0x22, 0x63, + 0x3f, 0x0c, 0x2b, 0xb7, 0xd6, 0x8a, 0x6f, 0x64, 0x41, 0x33, 0x7a, 0xd7, 0x02, 0x13, 0x50, + 0xec, 0x36, 0xa9, 0x6a, 0x31, 0x26, 0xe3, 0x00, 0xa7, 0x67, 0xbb, 0xac, 0x22, 0xee, 0xbc, + 0x33, 0xb0, 0x4f, 0xdf, 0x2b, 0x36, 0xdf, 0x8f, 0x1a, 0x6a, 0xc5, 0x21, 0x78, 0xd0, 0x8c, + 0x5c, 0x71, 0xe5, 0xde, 0xa3, 0x85, 0x39, 0x5b, 0x62, 0x3f, 0xea, 0xae, 0x03, 0x14, 0x67, + 0x4e, 0xc7, 0x9b, 0x4a, 0x5d, 0x26, 0xca, 0x1f, 0xdf, 0xa0, 0x8f, 0x18, 0x2b, 0xf4, 0x2d, + 0x4a, 0xd3, 0x9c, 0x07, 0x7c, 0xb7, 0xa6, 0x1e, 0xcb, 0xb6, 0x48, 0x02, 0x79, 0x6a, 0xf3, + 0x67, 0xf4, 0xe2, 0xe7, 0x5f, 0x0e, 0x3a, 0x27, 0xb5, 0xff, 0xc4, 0xef, 0x5b, 0xf6, 0x02, + 0x64, 0x73, 0x94, 0x8c, 0x50, 0x29, 0x86, 0xcc, 0x02, 0x6e, 0xc4, 0x70, 0xa8, 0x36, 0xc9, + 0x3f, 0x32, 0xc3, 0x1d, 0x21, 0x54, 0x64, 0x9d, 0xdc, 0x71, 0x30, 0xd3, 0x97, 0x4c, 0x4c, + 0xd2, 0xfa, 0xb9, 0x80, 0x11, 0x12, 0x47, 0xa3, 0x5d, 0x85, 0x61, 0xbe, 0x6c, 0x8c, 0xdc, + 0x12, 0x59, 0x1d, 0xbb, 0x81, 0xe6, 0x5e, 0x99, 0xf9, 0x78, 0xce, 0xe1, 0x8b, 0x4f, 0x6a, + 0x01, 0xce, 0xb4, 0xc1, 0xb0, 0xf8, 0x50, 0x4c, 0x4d, 0x48, 0x1e, 0xea, 0x94, 0x6f, 0xab, + 0x26, 0xf8, 0x0c, 0x74, 0xd2, 0xd3, 0x75, 0x6a, 0x83, 0x96, 0xfd, 0xb4, 0x5e, 0xfb, 0x06, + 0x63, 0xf7, 0x1c, 0xa9, 0x15, 0xc9, 0x72, 0xc2, 0xf7, 0x36, 0x03, 0x66, 0xca, 0x66, 0x3b, + 0x8e, 0x39, 0x59, 0x51, 0x27, 0x87, 0xe7, 0xbb, 0x98, 0xc2, 0xb0, 0xe6, 0x1c, 0xb9, 0x05, + 0xb6, 0xde, 0x55, 0xbb, 0xb8, 0xff, 0x42, 0x79, 0xf1, 0xa3, 0x09, 0xa6, 0xe2, 0xc9, 0xa5, + 0x58, 0x42, 0x9a, 0xdb, 0x08, 0xd3, 0x29, 0x17, 0xc2, 0x91, 0x10, 0xdf, 0x3a, 0xb3, 0x41, + 0x3a, 0x27, 0x73, 0xf7, 0xc7, 0xd9, 0xa4, 0x58, 0xef, 0xd2, 0xcd, 0x2e, 0xe1, 0x42, 0xd4, + 0x05, 0x7e, 0x96, 0x8b, 0x26, 0x99, 0x7c, 0xfc, 0x34, 0x33, 0x18, 0x3b, 0x29, 0x71, 0x3f, + 0x39, 0x7a, 0x4c, 0xf0, 0x01, 0x20, 0xe0, 0x44, 0x5a, 0x88, 0xb6, 0xcc, 0xb6, 0xcd, 0x96, + 0x8a, 0x1f, 0x9e, 0xcb, 0x3c, 0x7f, 0x7e, 0x1a, 0x2c, 0xbf, 0x2a, 0xda, 0xd1, 0x91, 0x53, + 0x20, 0x00, 0x10, 0xb4, 0x83, 0x78, 0x8f, 0xeb, 0xc1, 0x0f, 0xe2, 0x10, 0x14, 0x5d, 0x27, + 0x3a, 0x3d, 0x5e, 0x3e, 0x3d, 0xe5, 0x7c, 0x84, 0xaa, 0x7c, 0x6a, 0xa8, 0x3d, 0x86, 0x0a, + 0x79, 0xcc, 0xa1, 0x09, 0x2e, 0x96, 0x41, 0x41, 0xc5, 0xce, 0x3e, 0x9d, 0x93, 0x20, 0xb0, + 0x7a, 0x53, 0xfd, 0x10, 0xba, 0x2f, 0xe4, 0x0f, 0xfd, 0xbf, 0x55, 0x23, 0x2b, 0x3a, 0x2d, + 0xaa, 0x7e, 0xf1, 0xbc, 0x6d, 0x93, 0x57, 0xc7, 0x1b, 0xd4, 0x28, 0x03, 0x8f, 0xae, 0x3c, + 0x90, 0xb2, 0xb1, 0xff, 0x2c, 0x40, 0xa2, 0xd4, 0x0a, 0x55, 0xde, 0xeb, 0xf7, 0x85, 0xad, + 0x6e, 0x13, 0x6e, 0x55, 0x53, 0x06, 0xf1, 0x37, 0x2e, 0x50, 0x78, 0xe0, 0x6f, 0x27, 0xc1, + 0xbe, 0xc5, 0x81, 0xb3, 0x52, 0xd5, 0xc0, 0xe9, 0x98, 0xf5, 0x74, 0x5b, 0x17, 0xdd, 0x84, + 0xbc, 0xed, 0x06, 0x2c, 0xa3, 0xa4, 0x48, 0xc9, 0xf1, 0xa1, 0x9d, 0xf2, 0x48, 0x23, 0x59, + 0x09, 0xd5, 0x88, 0xf1, 0x79, 0xa2, 0x03, 0xe6, 0x8d, 0xe6, 0x3a, 0xb9, 0xd3, 0xeb, 0xcb, + 0xa6, 0x13, 0xd0, 0xef, 0xe3, 0x11, 0x71, 0x0e, 0x1b, 0xf3, 0xd3, 0xa9, 0xc3, 0xfb, 0xc6, + 0xbd, 0xf8, 0xd8, 0x99, 0x41, 0x81, 0x6f, 0xe8, 0x09, 0x7d, 0x0a, 0xcd, 0x91, 0xc0, 0xa2, + 0x38, 0x42, 0x5c, 0x53, 0x19, 0x02, 0x5e, 0x21, 0xab, 0xa1, 0xf1, 0xe8, 0x0d, 0xf0, 0x6d, + 0x65, 0xab, 0x4d, 0x39, 0xa4, 0x05, 0xda, 0x30, 0xc4, 0x4c, 0x94, 0x3a, 0xd8, 0x49, 0x00, + 0x39, 0x85, 0xe4, 0x91, 0x55, 0xf9, 0x40, 0x08, 0x22, 0x04, 0x1a, 0xa5, 0xe2, 0x48, 0x3d, + 0x10, 0x76, 0xb4, 0x25, 0x7f, 0x12, 0xb2, 0xfb, 0xda, 0xa5, 0xa9, 0x18, 0x28, 0x91, 0x1d, + 0x86, 0x0f, 0xda, 0x10, 0x53, 0xa9, 0x99, 0xc1, 0xc8, 0x02, 0x41, 0x3a, 0x42, 0xdc, 0x55, + 0x21, 0xca, 0x6e, 0x8a, 0x75, 0x5b, 0xe1, 0x26, 0xdf, 0x16, 0x48, 0x14, 0xc7, 0x01, 0xad, + 0x2f, 0x75, 0x49, 0x64, 0x44, 0xff, 0x5a, 0xc6, 0x70, 0x89, 0x10, 0x79, 0xac, 0x0e, 0x2f, + 0xaf, 0x6d, 0x57, 0xf5, 0x59, 0x6c, 0x79, 0x1b, 0x9d, 0x4c, 0x39, 0xb3, 0xa5, 0xbf, 0xb6, + 0xe0, 0x78, 0x76, 0x81, 0x4f, 0xde, 0xea, 0xa0, 0xdd, 0x63, 0x25, 0x7c, 0x4f, 0x1d, 0x53, + 0x2d, 0x2d, 0x4d, 0x61, 0x72, 0x86, 0x07, 0x6e, 0xd3, 0x23, 0xe3, 0x79, 0xc4, 0x27, 0xc5, + 0xfe, 0x5d, 0x05, 0xb1, 0xe3, 0x45, 0x1b, 0x6c, 0xd7, 0x1e, 0x8f, 0x62, 0xc2, 0x85, 0x0d, + 0x2c, 0xbe, 0x25, 0xc5, 0x38, 0xe9, 0xa2, 0x80, 0x34, 0x4f, 0x4e, 0x30, 0xff, 0xaf, 0x16, + 0x4c, 0x8b, 0xd0, 0xb1, 0x0e, 0x3f, 0x4e, 0xf9, 0x0d, 0x4e, 0x1d, 0x95, 0x49, 0x66, 0xcf, + 0xa0, 0x8f, 0xa3, 0xf6, 0x35, 0xfa, 0x88, 0xa1, 0xf9, 0xfc, 0x34, 0x71, 0xd6, 0xfe, 0xbc, + 0x21, 0x6f, 0xbe, 0xc4, 0xca, 0xd7, 0x85, 0xa3, 0x65, 0x10, 0x5c, 0x46, 0xc9, 0xbd, 0xce, + 0xbf, 0xcc, 0x4c, 0x3c, 0x7e, 0x2a, 0x28, 0x09, 0x6a, 0x73, 0x16, 0x35, 0xf7, 0xe3, 0x4e, + 0x8a, 0xbb, 0x7a, 0x54, 0x2c, 0xe1, 0x18, 0x1c, 0x90, 0x14, 0xe7, 0x5a, 0xe8, 0xd9, 0xc9, + 0x29, 0x20, 0x12, 0x5e, 0x0a, 0xcf, 0xdc, 0xcd, 0x16, 0x86, 0xde, 0x72, 0x0e, 0x41, 0x52, + 0x91, 0x74, 0x4c, 0x68, 0x50, 0xc1, 0x91, 0xcc, 0x92, 0xca, 0x42, 0x8a, 0x6a, 0x1a, 0xfd, + 0x37, 0x70, 0x61, 0xab, 0x18, 0x21, 0x07, 0x0e, 0xc5, 0x62, 0x02, 0xc8, 0xf8, 0xe5, 0xa3, + 0x94, 0x38, 0xff, 0x40, 0xbf, 0xee, 0x77, 0xa1, 0x5f, 0x19, 0x91, 0x26, 0x72, 0xc0, 0x32, + 0x1b, 0x8a, 0xab, 0xc3, 0x2a, 0x00, 0x50, 0xee, 0xd9, 0xc9, 0xa4, 0x07, 0x04, 0x7c, 0xa1, + 0xd7, 0xbb, 0xba, 0x46, 0x64, 0xbc, 0x07, 0x00, 0x30, 0x02, 0x1d, 0xe4, 0x64, 0xc9, 0x0d, + 0x2a, 0xfc, 0x3a, 0xdb, 0xeb, 0x73, 0x54, 0x2a, 0x97, 0x48, 0xa3, 0x06, 0xe7, 0x36, 0x1c, + 0xae, 0xbb, 0xe2, 0x3a, 0xa7, 0x4f, 0xa4, 0x39, 0x67, 0xc3, 0xab, 0x1f, 0x13, 0x30, 0xa2, + 0x5c, 0x49, 0x52, 0x04, 0xf5, 0x46, 0x74, 0x50, 0xae, 0xa8, 0xd3, 0xae, 0x33, 0x84, 0x9f, + 0x8c, 0x27, 0xfc, 0x42, 0xa4, 0x44, 0x4f, 0x2d, 0xa2, 0xb9, 0x84, 0x43, 0x46, 0x87, 0x6b, + 0x4e, 0xb3, 0xa4, 0x47, 0x5c, 0xd1, 0xc2, 0xac, 0x0f, 0x34, 0x99, 0x00, 0xfc, 0xc9, 0xab, + 0x85, 0x0e, 0x49, 0x9f, 0xf4, 0x95, 0x7f, 0xc3, 0x8f, 0x35, 0xd0, 0x3c, 0xbe, 0x7c, 0xbc, + 0x2d, 0xe4, 0xd7, 0x03, 0x62, 0x86, 0xd8, 0x4d, 0x3d, 0x65, 0xc0, 0xa3, 0x7d, 0xc1, 0x83, + 0x70, 0xd0, 0x3a, 0x1b, 0xd6, 0x32, 0x46, 0xf4, 0xb6, 0x95, 0x09, 0xf7, 0xca, 0x71, 0xa8, + 0x05, 0x7b, 0xbb, 0xcb, 0x8e, 0x8f, 0x11, 0x79, 0x1a, 0xd1, 0xdd, 0x41, 0x3f, 0x95, 0x2b, + 0xdf, 0x31, 0x11, 0xa2, 0xe4, 0x56, 0x04, 0x11, 0x40, 0x68, 0x6b, 0xa7, 0x22, 0xa3, 0xb7, + 0x7a, 0x95, 0x2d, 0xa7, 0xd3, 0x61, 0x68, 0xb5, 0x26, 0x82, 0x8f, 0xb6, 0x21, 0xb3, 0xae, + 0x12, 0x1c, 0xa6, 0x22, 0x2f, 0xd2, 0x5e, 0x28, 0x14, 0x01, 0x94, 0xb9, 0x56, 0x88, 0x9f, + 0x56, 0xd0, 0xee, 0x02, 0xd3, 0x58, 0x6c, 0x9d, 0xc0, 0x0a, 0xf8, 0x0b, 0xdf, 0xea, 0xf0, + 0xf9, 0xe5, 0xbb, 0x64, 0x46, 0x29, 0x67, 0xa8, 0xaa, 0xb0, 0xb4, 0x24, 0xb2, 0x85, 0x20, + 0x14, 0x42, 0x73, 0xe0, 0x53, 0xed, 0xa0, 0x0f, 0x23, 0x7f, 0xd0, 0x9e, 0x98, 0xd2, 0x69, + 0x64, 0x9b, 0xb1, 0x9c, 0xcd, 0x06, 0x8f, 0x64, 0x52, 0x45, 0x24, 0x13, 0x35, 0x34, 0xbf, + 0x52, 0xff, 0x4a, 0x1f, 0x96, 0x6a, 0xc5, 0x38, 0xb3, 0x50, 0xf6, 0xe3, 0xb0, 0x7b, 0x3f, + 0x3e, 0x67, 0xa7, 0x5b, 0x4e, 0x91, 0x27, 0xb5, 0x46, 0x71, 0x0c, 0x50, 0xb1, 0xfb, 0xb5, + 0x90, 0x9a, 0x8d, 0xa5, 0x7b, 0x36, 0x11, 0x97, 0x56, 0xd8, 0x31, 0x2c, 0x54, 0xe0, 0x12, + 0x68, 0x1e, 0x86, 0x8c, 0x10, 0x36, 0xce, 0x12, 0x3b, 0xad, 0x8b, 0xf1, 0x45, 0x97, 0xb8, + 0x76, 0x19, 0x38, 0x99, 0x72, 0x87, 0x78, 0x1d, 0x6e, 0xe6, 0x75, 0x70, 0x05, 0x3b, 0x1e, + 0xfb, 0xe8, 0xba, 0x94, 0x67, 0x6e, 0x3e, 0x32, 0x86, 0xa3, 0x77, 0x07, 0xfc, 0xa1, 0x05, + 0x03, 0x97, 0x72, 0x7b, 0x9b, 0x8e, 0xd0, 0x63, 0x5a, 0xc4, 0x58, 0x1b, 0x5d, 0x95, 0xe9, + 0x49, 0x80, 0x7a, 0xfc, 0xcb, 0x08, 0xa4, 0x4d, 0xf6, 0x5d, 0x73, 0x77, 0xe1, 0x19, 0x1d, + 0xaf, 0x67, 0xa8, 0x6e, 0x37, 0xa9, 0x19, 0xe7, 0xa0, 0x17, 0x86, 0x62, 0x13, 0xde, 0x48, + 0x81, 0x72, 0x3b, 0xc2, 0xba, 0xdb, 0x4c, 0x9b, 0x0b, 0xab, 0x10, 0x2c, 0xf9, 0xc1, 0x0e, + 0xc4, 0x2f, 0x16, 0x35, 0x26, 0x91, 0xf2, 0xf8, 0x33, 0xc4, 0x01, 0x46, 0x3e, 0xb3, 0x21, + 0x66, 0x62, 0xf7, 0x5e, 0xae, 0x53, 0x7e, 0xdf, 0x62, 0xad, 0x96, 0x58, 0xc5, 0x52, 0x46, + 0xb4, 0x13, 0x6a, 0x9f, 0x69, 0x32, 0x55, 0xc8, 0xd4, 0xcd, 0x12, 0xa4, 0x6a, 0x7d, 0x31, + 0x6a, 0x6e, 0x13, 0x56, 0xfc, 0x8d, 0x2c, 0xe8, 0xf4, 0x54, 0x83, 0xaa, 0x2a, 0x00, 0xfd, + 0xdd, 0xee, 0x95, 0x27, 0xbe, 0xcf, 0x58, 0xb1, 0xa5, 0xdf, 0x1e, 0x2b, 0x18, 0x98, 0x3c, + 0x6e, 0x1f, 0x5e, 0x93, 0xdf, 0x90, 0x2c, 0x7d, 0xae, 0x89, 0xa7, 0x56, 0x59, 0x27, 0x5c, + 0x15, 0x22, 0xf9, 0xf4, 0xdc, 0x71, 0x00, 0xfe, 0x69, 0x9c, 0x34, 0x56, 0x07, 0x10, 0x1c, + 0x47, 0x47, 0x6c, 0xa0, 0x43, 0x74, 0x68, 0x89, 0x8c, 0x31, 0xd2, 0x69, 0x11, 0x94, 0x7f, + 0x45, 0x01, 0x5a, 0x0e, 0x50, 0x75, 0xf6, 0x70, 0xa5, 0x5f, 0xc1, 0x78, 0x45, 0xd8, 0x1d, + 0x2b, 0xb6, 0xbc, 0x0f, 0xb8, 0xab, 0x13, 0x40, 0xf6, 0xb5, 0x43, 0x82, 0x7d, 0xe5, 0x53, + 0x63, 0x6a, 0xf7, 0xed, 0xf4, 0xf0, 0x56, 0x75, 0xdd, 0xc0, 0x8e, 0xa0, 0x68, 0x66, 0xf1, + 0xce, 0x08, 0x73, 0xbb, 0xd4, 0xff, 0x3e, 0x10, 0xbb, 0xca, 0x51, 0x48, 0x44, 0xe7, 0x76, + 0x37, 0x98, 0x0e, 0x80, 0xa5, 0x00, 0x46, 0xb3, 0x22, 0x02, 0x62, 0xe7, 0xef, 0x24, 0x3a, + 0xeb, 0x9c, 0x53, 0x30, 0x4f, 0x39, 0x38, 0x0b, 0xc0, 0x4c, 0x7b, 0xbf, 0xbf, 0xb4, 0xc8, + 0xf6, 0x5e, 0x69, 0x26, 0xfb, 0xdb, 0x0d, 0x80, 0x94, 0xd3, 0x4e, 0xa0, 0x51, 0x5b, 0xb2, + 0x8d, 0x5c, 0x31, 0xc9, 0x0f, 0x8c, 0xf5, 0xa9, 0x7f, 0x1b, 0xe8, 0x78, 0x51, 0x41, 0xdb, + 0xf6, 0x40, 0x62, 0x5d, 0x9b, 0x49, 0xbe, 0x09, 0x03, 0xc4, 0x43, 0xcc, 0xb1, 0xc5, 0xf8, + 0x14, 0x9f, 0x05, 0xa0, 0x4c, 0x93, 0x49, 0x3c, 0x7a, 0x05, 0xee, 0x35, 0x91, 0x38, 0xc7, + 0xb0, 0x8a, 0xea, 0x1b, 0x01, 0xcc, 0xc7, 0xb5, 0x0e, 0x02, 0xa8, 0xe2, 0xa3, 0x01, 0x81, + 0x6c, 0x0a, 0x6a, 0xc3, 0x0d, 0x0d, 0x4d, 0x58, 0x41, 0xcb, 0xfc, 0x36, 0x1e, 0x15, 0xf4, + 0x89, 0xca, 0x1c, 0xbc, 0xd4, 0xd8, 0x70, 0x36, 0x1d, 0x6d, 0x30, 0x7b, 0x28, 0x8d, 0x94, + 0x4d, 0x8e, 0x02, 0xf3, 0x06, 0x44, 0x39, 0xf4, 0xfe, 0xde, 0x2a, 0x45, 0xf2, 0xb5, 0xcb, + 0x44, 0xe2, 0xd7, 0x41, 0x4f, 0xfb, 0x0a, 0x86, 0xbf, 0x47, 0x21, 0x70, 0x17, 0x4d, 0x33, + 0x5e, 0xd7, 0x00, 0x13, 0x47, 0xa3, 0x56, 0x90, 0x04, 0x43, 0x5c, 0xf8, 0x61, 0x2b, 0xf8, + 0x83, 0xe5, 0x5b, 0x48, 0x82, 0x0c, 0xbb, 0x92, 0xf5, 0xdc, 0x03, 0xd3, 0x9b, 0xc6, 0x12, + 0xb7, 0x34, 0x65, 0x28, 0xac, 0x45, 0x11, 0x61, 0x73, 0x58, 0x87, 0xb2, 0xc7, 0x2c, 0xd8, + 0x79, 0x28, 0xa5, 0x1f, 0xd3, 0x0b, 0xb6, 0x7a, 0x30, 0xa1, 0x9c, 0x25, 0x23, 0x7b, 0x74, + 0x17, 0xc4, 0xc6, 0x7c, 0xa9, 0x66, 0xeb, 0xe1, 0x2d, 0x74, 0x82, 0xc7, 0xe8, 0xb3, 0xa6, + 0xcd, 0x92, 0x15, 0x87, 0x0c, 0x2a, 0x0b, 0x04, 0x64, 0xf9, 0x3f, 0x81, 0x95, 0x5c, 0xb2, + 0x1c, 0x6d, 0xf7, 0xa4, 0x0b, 0xb9, 0xcd, 0xfe, 0x05, 0x9c, 0x4a, 0x66, 0xc3, 0xef, 0x0e, + 0x6b, 0xb9, 0xb2, 0x56, 0x1b, 0x82, 0x2f, 0xc1, 0x46, 0xbe, 0x31, 0xcb, 0x50, 0xdf, 0xa6, + 0xe5, 0xa8, 0x97, 0x2e, 0x13, 0xe2, 0xe3, 0x1d, 0x84, 0xa7, 0x4b, 0x45, 0x35, 0xb9, 0x6c, + 0xa8, 0x1f, 0x56, 0x3f, 0x30, 0xa8, 0x6c, 0x32, 0xb8, 0xae, 0xd0, 0x95, 0xd0, 0x5b, 0x8d, + 0xec, 0x37, 0xb7, 0xa7, 0x9f, 0xe6, 0x4f, 0xdc, 0xd1, 0x4a, 0xf9, 0xf0, 0x04, 0x6e, 0x93, + 0x57, 0xbb, 0xbe, 0xf9, 0xd2, 0x37, 0x2e, 0x14, 0x14, 0x54, 0xbe, 0xad, 0x9f, 0xad, 0xdd, + 0x1c, 0x8e, 0x07, 0x6f, 0xb7, 0x28, 0xc7, 0xe7, 0x5a, 0x5d, 0x70, 0x52, 0x96, 0x14, 0x5f, + 0x44, 0xcc, 0xa0, 0xac, 0x0b, 0x2c, 0xac, 0xe6, 0xe8, 0xba, 0x7a, 0x50, 0x29, 0x86, 0x88, + 0xe7, 0x0d, 0x5c, 0xef, 0xa4, 0x87, 0x1b, 0x71, 0xfd, 0xe9, 0x68, 0xb1, 0xae, 0xf6, 0xcd, + 0xd7, 0xdf, 0x2a, 0xbf, 0x46, 0x45, 0xf0, 0x45, 0xae, 0x1a, 0xef, 0x89, 0x31, 0x17, 0x1d, + 0x37, 0xba, 0xed, 0x0a, 0x0c, 0xf5, 0x9f, 0x40, 0x4f, 0x33, 0x80, 0x3a, 0xb4, 0x88, 0xa4, + 0x30, 0x25, 0xe8, 0x4f, 0x03, 0xb4, 0x37, 0x12, 0x9d, 0x52, 0x3e, 0xd5, 0xb8, 0x24, 0xdc, + 0xd1, 0x35, 0xe6, 0xda, 0xa1, 0xd2, 0x02, 0x04, 0x58, 0x07, 0xdd, 0xd0, 0x6a, 0x7b, 0xd6, + 0x47, 0x0c, 0xaa, 0xcc, 0xe9, 0xf6, 0x11, 0xd3, 0xbd, 0xf7, 0x09, 0xab, 0xd2, 0xf3, 0xd1, + 0xda, 0x9c, 0xf0, 0x2f, 0x20, 0x14, 0x14, 0x78, 0xf5, 0x31, 0x7b, 0x19, 0x64, 0x13, 0x1e, + 0xbb, 0x18, 0x60, 0x1d, 0xcd, 0xa2, 0x52, 0x2e, 0x64, 0x79, 0xd2, 0xca, 0x81, 0xe5, 0x6d, + 0x4c, 0xe5, 0x52, 0xb5, 0x96, 0x0f, 0xc8, 0x80, 0x1a, 0x27, 0x69, 0x22, 0xef, 0x67, 0xde, + 0x7b, 0xf9, 0xaf, 0xfe, 0x34, 0x88, 0x1e, 0x2a, 0xb8, 0xbe, 0x10, 0xb7, 0x6e, 0xec, 0x73, + 0x80, 0x9d, 0xca, 0x48, 0xbd, 0xd3, 0xf7, 0x3d, 0xbb, 0xa8, 0x7c, 0x73, 0xbb, 0x1f, 0x2d, + 0x1b, 0xd9, 0x85, 0xf6, 0x16, 0x7e, 0xdd, 0x48, 0x87, 0x23, 0x95, 0xe3, 0x79, 0x07, 0xb9, + 0xd9, 0x9f, 0xca, 0x59, 0x2b, 0x7b, 0x82, 0x3e, 0x45, 0x00, 0x1f, 0xff, 0x01, 0x98, 0x56, + 0x06, 0x0b, 0xc4, 0xe9, 0x65, 0xf7, 0xac, 0x2a, 0x5d, 0x48, 0x9e, 0x6b, 0x02, 0x6a, 0x2d, + 0xdf, 0x50, 0x87, 0x4b, 0x21, 0x16, 0x74, 0x24, 0x99, 0xac, 0x2e, 0x11, 0x00, 0x44, 0xbb, + 0x2e, 0x45, 0x65, 0xf7, 0x11, 0xd5, 0xdb, 0xfc, 0x66, 0xed, 0xd9, 0x14, 0x54, 0x52, 0xc7, + 0x44, 0xbb, 0x9b, 0x9b, 0x5d, 0x60, 0x69, 0xbc, 0x43, 0xc3, 0x59, 0xdc, 0x99, 0xf5, 0x18, + 0xdd, 0x92, 0x03, 0x24, 0xa8, 0xda, 0x5b, 0x91, 0xc0, 0xf5, 0x51, 0x24, 0x8a, 0x75, 0x1b, + 0x50, 0x86, 0x2d, 0x3a, 0xf7, 0x37, 0x36, 0x13, 0x1c, 0x8c, 0x29, 0xae, 0xa1, 0x38, 0x5a, + 0x89, 0x01, 0x01, 0x04, 0x57, 0x45, 0x54, 0x48, 0x01, 0x51, 0x23, 0x84, 0x58, 0xb0, 0xd0, + 0xdd, 0x6d, 0x49, 0x3e, 0xc9, 0x64, 0xa7, 0x46, 0x21, 0x17, 0x23, 0x7e, 0xa2, 0x14, 0xab, + 0x8b, 0xb5, 0x4b, 0x5a, 0x7d, 0x9e, 0x00, 0x5f, 0x56, 0x06, 0x86, 0x5f, 0x5c, 0x7c, 0x04, + 0xad, 0xb7, 0x14, 0x97, 0x25, 0xe0, 0x2a, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc9, 0xcd, 0x43, 0x2e, 0xde, 0xa8, 0x73, 0x19, 0xb8, 0xbd, 0xf5, 0xb4, 0x00, 0xd1, 0x7c, + 0xb0, 0xd4, 0x74, 0x3f, 0x21, 0x74, 0xc1, 0x50, 0x37, 0xc7, 0xfd, 0x9e, 0x5c, 0xdc, 0xe9, + 0x45, 0x86, 0x4c, 0x29, 0xe3, 0x15, 0x3f, 0x0c, 0x0f, 0x8d, 0xf0, 0x15, 0xdd, 0xa9, 0x02, + 0x16, 0x6c, 0xda, 0x01, 0x5a, 0xf9, 0x06, 0x33, 0x78, 0xfa, 0xdc, 0xc3, 0xcc, 0x19, 0xad, + 0x25, 0xff, 0x82, 0x25, 0x47, 0xea, 0x17, 0x04, 0x55, 0x5d, 0x56, 0x53, 0x69, 0x74, 0xd6, + 0x2e, 0x91, 0xfc, 0x3d, 0x6d, 0xcb, 0x39, 0x76, 0xf1, 0x08, 0x26, 0xba, 0xd9, 0x72, 0x21, + 0xf4, 0x2d, 0x60, 0x2c, 0x4f, 0x8e, 0x00, 0x3c, 0x99, 0x76, 0x4d, 0x0d, 0xda, 0x13, 0x9b, + 0x31, 0x65, 0xda, 0x5d, 0xc4, 0xbf, 0x97, 0x00, 0xc6, 0xa5, 0x63, 0xfc, 0xd0, 0x54, 0x3f, + 0x54, 0x9e, 0x7b, 0x19, 0xd4, 0xcc, 0x4c, 0xaf, 0x77, 0x33, 0xbb, 0x23, 0xe1, 0x95, 0x16, + 0x4d, 0xde, 0xb6, 0xbf, 0xd4, 0x57, 0x8a, 0x5d, 0x48, 0x12, 0x41, 0x31, 0xd3, 0x18, 0xc0, + 0xdc, 0x23, 0xe2, 0xe6, 0xd5, 0x99, 0x50, 0xbe, 0xa6, 0xe5, 0x9f, 0xe4, 0x90, 0xba, 0x1e, + 0x9e, 0x26, 0xbd, 0x63, 0xcc, 0xb6, 0x4b, 0x36, 0x4d, 0x91, 0x8c, 0x15, 0x65, 0x4b, 0x72, + 0xa6, 0xda, 0xb9, 0x56, 0x7e, 0xf2, 0x57, 0xf2, 0x50, 0x2f, 0xc2, 0xca, 0x84, + ], + // Transfer block + &[ + 0x04, 0x00, 0x00, 0x00, 0x27, 0xe3, 0x01, 0x34, 0xd6, 0x20, 0xe9, 0xfe, 0x61, 0xf7, 0x19, + 0x93, 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, 0x76, + 0xf9, 0x0e, 0xd8, 0x11, 0x9f, 0x02, 0xe2, 0xec, 0x78, 0x12, 0x64, 0x23, 0x8b, 0xa6, 0xf5, + 0xab, 0xc9, 0xc0, 0x66, 0xf5, 0x1f, 0xe1, 0xb9, 0xf7, 0xb3, 0xd1, 0xa4, 0x40, 0xce, 0xa0, + 0xf0, 0x60, 0x79, 0xb4, 0x43, 0x15, 0x9d, 0xe7, 0x13, 0x64, 0x84, 0x07, 0x94, 0x1f, 0xda, + 0x44, 0xf6, 0xf5, 0xa1, 0x3e, 0xaf, 0xf5, 0xb2, 0xe1, 0x35, 0x1b, 0x63, 0xb4, 0x81, 0x96, + 0x3f, 0x2a, 0xf5, 0x7e, 0x56, 0x38, 0xa3, 0x99, 0x92, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xa6, 0x0c, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, + 0xff, 0xff, 0xff, 0x02, 0x51, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, + 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, + 0x6a, 0xc2, 0x2a, 0x5e, 0xe1, 0xc1, 0x53, 0x80, 0x98, 0x98, 0x9d, 0x4e, 0xe3, 0x6a, 0x88, + 0xb9, 0x25, 0xea, 0xdd, 0xc9, 0x0b, 0x5c, 0x14, 0xbb, 0xc9, 0xf1, 0x0a, 0xa0, 0x22, 0x46, + 0x2f, 0xd7, 0xfb, 0xb2, 0xf4, 0xca, 0x12, 0x4b, 0xc6, 0xfe, 0x41, 0xc0, 0x35, 0x88, 0x21, + 0x86, 0x0b, 0x89, 0x43, 0x19, 0x29, 0x8e, 0x4f, 0xa3, 0xd4, 0x00, 0x9e, 0x16, 0x9e, 0x7a, + 0x54, 0x49, 0x20, 0x55, 0xd0, 0xbd, 0xc9, 0x0c, 0xb9, 0xc3, 0xae, 0x0d, 0x2d, 0x10, 0x47, + 0x08, 0xcd, 0x4e, 0xb9, 0x02, 0x45, 0x0b, 0x5b, 0xc5, 0xbd, 0xcd, 0x65, 0xdb, 0x40, 0x22, + 0xc4, 0x8f, 0x12, 0x70, 0x98, 0x75, 0x30, 0xcb, 0x0c, 0xa4, 0x9a, 0x68, 0x0f, 0xe5, 0x06, + 0x35, 0xfd, 0x8c, 0x75, 0x37, 0x81, 0xb3, 0xfc, 0x96, 0xa6, 0xe4, 0x5d, 0x4c, 0xba, 0x55, + 0xe4, 0x9e, 0x43, 0x13, 0x37, 0x74, 0x1a, 0x35, 0x48, 0x2b, 0x9d, 0xfe, 0x06, 0xb0, 0xa8, + 0x6c, 0x89, 0x50, 0x7e, 0x17, 0xf0, 0x75, 0xad, 0xf1, 0x35, 0xad, 0xed, 0xc1, 0x63, 0xb9, + 0x96, 0xbd, 0xbc, 0xcd, 0x38, 0x1f, 0x58, 0xb9, 0xb3, 0x67, 0x02, 0x93, 0x03, 0x0f, 0x68, + 0x2d, 0x61, 0xcc, 0xf8, 0x1d, 0xd5, 0xb4, 0x37, 0x8a, 0xa5, 0x9f, 0x55, 0x10, 0x25, 0xfd, + 0x0c, 0x41, 0x40, 0x60, 0xab, 0xe6, 0x04, 0x57, 0x76, 0x8c, 0x08, 0xbf, 0x0d, 0x4c, 0x85, + 0x61, 0x1b, 0x33, 0x31, 0xaf, 0x5a, 0x33, 0xe1, 0x39, 0x8d, 0x37, 0xd9, 0x4a, 0x72, 0x2e, + 0x81, 0xe7, 0x44, 0x4c, 0xdd, 0xbb, 0x34, 0x4e, 0xdc, 0x4e, 0x75, 0xca, 0x13, 0x07, 0x50, + 0x13, 0x10, 0x6c, 0x46, 0x31, 0x80, 0x39, 0x23, 0xf2, 0x56, 0x9e, 0xc6, 0x2f, 0x1a, 0xff, + 0xea, 0x1a, 0xe6, 0x72, 0x53, 0x08, 0xfa, 0x07, 0x8d, 0x94, 0x6e, 0x31, 0x57, 0xa0, 0x32, + 0xb2, 0x96, 0x6f, 0xb8, 0xb0, 0x3c, 0x49, 0x56, 0xd2, 0xa0, 0xe0, 0x3f, 0x3c, 0x07, 0x89, + 0x61, 0xb4, 0x3d, 0x2f, 0x78, 0xed, 0xfb, 0xfe, 0x0f, 0x89, 0x5f, 0x7c, 0x35, 0x8e, 0x70, + 0x42, 0x40, 0x2d, 0xaa, 0xfe, 0xe5, 0xb4, 0xee, 0x02, 0x47, 0x5a, 0x66, 0xe9, 0x83, 0xf3, + 0x9d, 0xb0, 0x91, 0xa7, 0x94, 0x62, 0xac, 0x68, 0x7d, 0xc0, 0x53, 0xcc, 0xbe, 0x98, 0xbd, + 0x20, 0xe3, 0xd9, 0xd6, 0xf4, 0x02, 0x68, 0x81, 0x96, 0x8a, 0x81, 0x6f, 0x4c, 0x2f, 0x2d, + 0x10, 0x42, 0xdb, 0xf7, 0xdc, 0x8a, 0x56, 0xbc, 0x15, 0x60, 0x0a, 0x30, 0x3c, 0x7c, 0x4f, + 0xdc, 0x09, 0x78, 0x9c, 0x99, 0x2f, 0x6d, 0xe9, 0x0f, 0x41, 0xf7, 0xf5, 0x13, 0x06, 0x05, + 0xf3, 0x00, 0xa9, 0x36, 0xc5, 0x6b, 0x71, 0x4f, 0xc0, 0x60, 0xd2, 0x15, 0xe2, 0x52, 0x17, + 0x38, 0x29, 0x1a, 0x4a, 0x0c, 0x96, 0x95, 0xe4, 0xf6, 0x62, 0xcb, 0x51, 0xcd, 0x81, 0xfe, + 0x70, 0x20, 0x48, 0x1b, 0xac, 0x5f, 0x90, 0xc8, 0x01, 0x9f, 0x82, 0x33, 0x30, 0x13, 0xd4, + 0x3a, 0x8d, 0x78, 0xf5, 0xf0, 0xb3, 0xa5, 0x77, 0xa3, 0xc1, 0xb4, 0xc2, 0xc7, 0x50, 0x30, + 0x7b, 0x6f, 0xbe, 0xf8, 0xa3, 0x20, 0x80, 0x38, 0x37, 0xed, 0x32, 0x7e, 0x9a, 0xe7, 0xeb, + 0xd6, 0xb8, 0xc8, 0xd2, 0x82, 0x43, 0xd9, 0x88, 0xdf, 0xf4, 0x05, 0x66, 0xbf, 0x45, 0x83, + 0x26, 0x85, 0xf7, 0x30, 0x7f, 0x4a, 0x29, 0x16, 0x21, 0x23, 0xb6, 0x7f, 0x51, 0x9e, 0x1b, + 0xc6, 0x59, 0x8b, 0x63, 0x6a, 0x41, 0xf2, 0xb7, 0x6d, 0xa9, 0x4a, 0xc9, 0xcf, 0x17, 0x74, + 0x91, 0xf8, 0xbd, 0x09, 0x98, 0x0a, 0x4f, 0x09, 0xb8, 0x95, 0x6c, 0xa7, 0x18, 0x50, 0x49, + 0x53, 0xd9, 0xc6, 0x86, 0xc9, 0xba, 0xf5, 0x09, 0xc7, 0xc8, 0x74, 0x50, 0x75, 0xa8, 0xe0, + 0x49, 0x38, 0x72, 0x1d, 0xaa, 0xb0, 0xf9, 0xf2, 0x3d, 0x42, 0x2b, 0x0a, 0x04, 0xd7, 0x19, + 0x5c, 0xbb, 0xb2, 0x70, 0xeb, 0x0f, 0x1d, 0xcd, 0x8f, 0xf3, 0xbf, 0x6d, 0xf8, 0xdc, 0x32, + 0x0d, 0xca, 0x6a, 0xe6, 0xa0, 0x81, 0xe6, 0xa9, 0x2b, 0x8d, 0x8d, 0xea, 0xea, 0x34, 0xb7, + 0x02, 0x78, 0x75, 0xc2, 0xfa, 0xc2, 0x35, 0x27, 0xdc, 0x28, 0xcc, 0xf9, 0xee, 0x53, 0x55, + 0x6c, 0xf8, 0xee, 0x38, 0xe8, 0x43, 0x32, 0x24, 0xcc, 0x1c, 0x7a, 0x97, 0xcf, 0x1d, 0x42, + 0x60, 0xcc, 0x04, 0x25, 0x8d, 0x45, 0x3e, 0x57, 0x61, 0x8f, 0x94, 0xb7, 0x0c, 0xf1, 0xab, + 0x28, 0x96, 0x3c, 0x0c, 0x19, 0x11, 0xef, 0x7a, 0xad, 0x20, 0xa1, 0x01, 0xaa, 0x58, 0xfc, + 0x48, 0xae, 0x53, 0xd6, 0xc3, 0xab, 0x3b, 0x31, 0xa0, 0x14, 0xa3, 0x35, 0xb0, 0x91, 0xe5, + 0x28, 0x2e, 0x0c, 0x3f, 0x18, 0x2b, 0x11, 0x30, 0xa9, 0x85, 0xa8, 0xe1, 0xbe, 0x51, 0xd1, + 0x0f, 0x27, 0x79, 0xf0, 0x99, 0x43, 0xd6, 0xb1, 0x5f, 0x98, 0x78, 0x81, 0xcd, 0xa4, 0xf1, + 0x4d, 0x8c, 0x1b, 0xd7, 0xcc, 0x0e, 0xfd, 0x00, 0x7b, 0xf2, 0xff, 0x61, 0xca, 0x20, 0xed, + 0x8d, 0xf8, 0xb9, 0x19, 0x2b, 0x3c, 0xab, 0x2f, 0xd1, 0x8d, 0x2b, 0x50, 0x88, 0x10, 0x16, + 0x86, 0xdd, 0x00, 0xd9, 0xee, 0x8a, 0x3c, 0x1f, 0x82, 0x0a, 0xae, 0xeb, 0xb8, 0xe5, 0xb8, + 0x83, 0x0b, 0x7a, 0xbe, 0x02, 0x62, 0xf2, 0xfa, 0xa4, 0x28, 0xa5, 0xd3, 0x53, 0xa6, 0x82, + 0xca, 0x17, 0xeb, 0x78, 0x3a, 0x30, 0x84, 0xc5, 0x66, 0x38, 0xcd, 0xb0, 0xb7, 0x33, 0x27, + 0x33, 0x35, 0x24, 0xeb, 0x48, 0xb0, 0x4c, 0x1e, 0xd3, 0xe4, 0x88, 0x38, 0x00, 0x56, 0xe1, + 0x23, 0x82, 0x20, 0x63, 0xdb, 0xe6, 0xd6, 0x04, 0x45, 0x7b, 0x21, 0xcf, 0xbf, 0xa5, 0x5a, + 0xc2, 0x4e, 0x60, 0x21, 0x4f, 0xec, 0xe1, 0xdd, 0xf5, 0xdb, 0x4e, 0x29, 0xc8, 0x38, 0x1d, + 0x12, 0x33, 0xe5, 0x75, 0x63, 0x3e, 0x09, 0xdd, 0x74, 0x21, 0x1a, 0x6f, 0xfc, 0x5c, 0xbf, + 0x81, 0xba, 0x77, 0xf7, 0x5c, 0x5e, 0xe0, 0xeb, 0xea, 0x3c, 0xf4, 0x45, 0x27, 0x86, 0xd7, + 0x40, 0x56, 0xee, 0xe6, 0xa6, 0xb0, 0x36, 0x1b, 0x99, 0x4a, 0x26, 0x40, 0x06, 0xe6, 0x0b, + 0x8d, 0x3f, 0xe4, 0xa4, 0x88, 0x74, 0x5d, 0x6e, 0xb2, 0x7c, 0xec, 0x87, 0x20, 0x29, 0x4a, + 0xa2, 0x71, 0x60, 0x77, 0x8f, 0x95, 0x7e, 0x7a, 0x44, 0xf9, 0x17, 0x36, 0xa6, 0x39, 0xcc, + 0x3e, 0xcc, 0x49, 0x4d, 0xe8, 0x5c, 0x12, 0x04, 0x36, 0x2b, 0x08, 0x5d, 0x42, 0x32, 0xa8, + 0xde, 0xf8, 0xdb, 0x98, 0xe8, 0xa0, 0x98, 0xf2, 0x5d, 0xec, 0x9a, 0xa3, 0x3e, 0xf9, 0xab, + 0xc7, 0x7c, 0x8f, 0xac, 0xa6, 0x41, 0x83, 0x59, 0x51, 0x8a, 0x05, 0x65, 0x28, 0x48, 0xfe, + 0x2c, 0x2c, 0x73, 0xfd, 0xb1, 0xe8, 0x6e, 0x8c, 0x7d, 0x0a, 0xf7, 0xdc, 0x7b, 0x64, 0x23, + 0x4b, 0x17, 0xc4, 0x3e, 0xbf, 0xc0, 0xb6, 0xdb, 0x34, 0x73, 0x75, 0x07, 0xa9, 0x4f, 0x91, + 0xdf, 0xc2, 0x69, 0x50, 0x99, 0xe9, 0xf7, 0xc2, 0xa9, 0x30, 0x10, 0x75, 0xf1, 0x49, 0x7f, + 0x26, 0x09, 0x8d, 0x6b, 0x6b, 0xfa, 0xf8, 0x9c, 0x6e, 0x5a, 0x08, 0xed, 0x89, 0x57, 0x12, + 0x38, 0x18, 0xf6, 0x14, 0x51, 0x8a, 0x6c, 0x4e, 0x04, 0x60, 0xd3, 0x01, 0x78, 0x33, 0x16, + 0x00, 0x78, 0x81, 0x0f, 0x4d, 0x5b, 0x54, 0x31, 0x08, 0x2c, 0x6a, 0x6d, 0x76, 0x3e, 0xeb, + 0x58, 0x04, 0x94, 0x86, 0xf0, 0x2f, 0x16, 0xfd, 0xa8, 0x34, 0x1d, 0x71, 0x33, 0x1c, 0x32, + 0x61, 0xf5, 0xf7, 0x8e, 0xf3, 0x9a, 0xdc, 0x65, 0x0f, 0x84, 0xe9, 0xed, 0xf2, 0x12, 0xf6, + 0xe0, 0x6c, 0x42, 0xd1, 0xe6, 0x80, 0x61, 0x60, 0x4d, 0x97, 0xb3, 0x11, 0x3f, 0x57, 0xe3, + 0xbe, 0x90, 0x25, 0xaf, 0xec, 0x25, 0x11, 0x6b, 0xdb, 0x40, 0x3d, 0x51, 0xe5, 0x75, 0x16, + 0xbe, 0xcb, 0xb0, 0xd9, 0xee, 0xd6, 0x38, 0x5a, 0xc6, 0xe5, 0x9b, 0x2d, 0x84, 0x5b, 0x12, + 0xc9, 0x5c, 0x89, 0x99, 0x2a, 0x9e, 0xda, 0xb7, 0xd3, 0xfd, 0xf3, 0x5d, 0x30, 0xae, 0xf5, + 0xd8, 0xeb, 0xc6, 0x90, 0x02, 0x51, 0xc9, 0xbc, 0xaf, 0x36, 0x2d, 0xa4, 0xf4, 0x76, 0xcd, + 0x34, 0x89, 0x6c, 0x44, 0x6e, 0x41, 0xb2, 0x7b, 0x85, 0xf1, 0x72, 0xa1, 0xf3, 0xe0, 0x07, + 0xf3, 0x56, 0x58, 0xc6, 0x86, 0x13, 0x50, 0x70, 0xd5, 0x4e, 0x23, 0xb5, 0x15, 0x4f, 0x3e, + 0x5a, 0x80, 0x22, 0x4e, 0x2e, 0x05, 0x01, 0x1a, 0x72, 0x95, 0x50, 0xfe, 0x90, 0xcf, 0xe5, + 0xa1, 0x2a, 0x28, 0x63, 0x49, 0x4c, 0xd2, 0x88, 0x9b, 0x5a, 0x5f, 0x29, 0xf2, 0xa0, 0x14, + 0x78, 0xac, 0x02, 0x0a, 0x3e, 0xd6, 0xbf, 0x7a, 0x74, 0x5d, 0x21, 0x4e, 0xb6, 0x14, 0xd7, + 0x33, 0x64, 0x6e, 0x8c, 0x6d, 0x54, 0x87, 0xc6, 0x00, 0x44, 0xa4, 0x3c, 0x0a, 0x13, 0xcc, + 0xfd, 0x33, 0x6c, 0xb3, 0x6a, 0xb2, 0xb6, 0x49, 0x40, 0xcc, 0x6e, 0xfc, 0x59, 0xcc, 0xb7, + 0x7a, 0xbc, 0xd5, 0xe0, 0xb7, 0x31, 0x5e, 0x88, 0xe9, 0x16, 0xbe, 0x17, 0x12, 0xe0, 0x96, + 0x4d, 0xf7, 0x6e, 0x01, 0x2e, 0x68, 0xfc, 0xda, 0x6c, 0x2b, 0x0d, 0x54, 0x84, 0x9a, 0x6c, + 0xe1, 0xc4, 0xba, 0xc9, 0x4a, 0xca, 0xae, 0x0f, 0xcb, 0x6e, 0xf9, 0x19, 0x6c, 0x6f, 0x84, + 0xf1, 0xda, 0x0e, 0xd6, 0x2b, 0x40, 0xbd, 0x5e, 0xc6, 0x02, 0xe8, 0x97, 0x15, 0xa0, 0x76, + 0x07, 0x47, 0xa5, 0x32, 0xd4, 0x64, 0x16, 0xb2, 0x68, 0x49, 0xe9, 0x06, 0xd4, 0x36, 0xeb, + 0x23, 0x2a, 0x7b, 0x4f, 0x87, 0x3e, 0x63, 0x57, 0xed, 0x03, 0xba, 0xb9, 0x74, 0x86, 0xf1, + 0xaa, 0xdd, 0x70, 0xd1, 0xb9, 0xc5, 0x51, 0x8e, 0x2c, 0x98, 0xf2, 0x5b, 0xf6, 0x3a, 0x79, + 0x95, 0x37, 0xe1, 0x91, 0xca, 0x01, 0x78, 0x24, 0xe2, 0x3e, 0x94, 0xe1, 0xf5, 0x24, 0x13, + 0xa1, 0xb5, 0x06, 0xe9, 0x15, 0xa4, 0xac, 0x91, 0x67, 0x8a, 0xd8, 0x1a, 0x53, 0xd6, 0x3f, + 0x58, 0x3c, 0xc4, 0xfd, 0x05, 0x2b, 0xce, 0x3c, 0x86, 0x88, 0x22, 0x06, 0x34, 0x96, 0x59, + 0x39, 0x38, 0x5f, 0x2f, 0x8d, 0xc8, 0xd6, 0x86, 0xbc, 0xa3, 0x41, 0x84, 0x50, 0x49, 0xa3, + 0x46, 0xad, 0xb0, 0xc2, 0x00, 0xa7, 0xb7, 0x14, 0xca, 0xe3, 0x39, 0x4e, 0x84, 0x49, 0xa1, + 0x78, 0x8f, 0x95, 0x73, 0x48, 0xfa, 0x2c, 0xe3, 0x77, 0x92, 0x84, 0x0e, 0x8b, 0x5f, 0x49, + 0xfe, 0x21, 0x3b, 0x90, 0xee, 0x21, 0x2c, 0x73, 0x18, 0xbf, 0xa1, 0x06, 0xe1, 0xc1, 0xd8, + 0xac, 0x5f, 0xe4, 0xe5, 0x83, 0x13, 0x8a, 0xd4, 0xff, 0x58, 0x38, 0x1c, 0x5d, 0x5d, 0xa9, + 0x3c, 0xca, 0xb5, 0xcd, 0xda, 0xff, 0x6d, 0x14, 0x0d, 0x99, 0xa6, 0xae, 0xfa, 0x5b, 0x0f, + 0xd0, 0x20, 0x97, 0x30, 0xbc, 0x34, 0x63, 0xfd, 0x77, 0x09, 0x7b, 0x2b, 0xcd, 0x5e, 0x01, + 0xe9, 0x98, 0x07, 0xb8, 0xb5, 0xc2, 0xc3, 0x77, 0xc7, 0x16, 0xe0, 0xc3, 0xaa, 0x5b, 0x52, + 0x99, 0x0e, 0x15, 0x6c, 0x10, 0xfc, 0x3c, 0x71, 0xab, 0x6c, 0xcc, 0xad, 0x0e, 0x7d, 0xed, + 0xe2, 0xdf, 0xcd, 0xd1, 0x8b, 0xb4, 0x8f, 0x77, 0x8f, 0x40, 0x02, 0x3e, 0x38, 0x39, 0x91, + 0xb9, 0x80, 0xab, 0x30, 0x0d, 0xba, 0x52, 0x97, 0x38, 0x81, 0xb5, 0x4b, 0x47, 0x66, 0xf5, + 0x58, 0x4d, 0x75, 0x57, 0x90, 0xa1, 0xf5, 0xcd, 0x8c, 0x1b, 0x8d, 0xbd, 0xfb, 0xf4, 0xed, + 0xd2, 0xdf, 0xb6, 0x36, 0xc3, 0x6e, 0xbd, 0x97, 0x78, 0x3f, 0x4f, 0xb8, 0x31, 0x00, 0x60, + 0x39, 0x75, 0xee, 0xef, 0xdd, 0x61, 0x2c, 0xcb, 0x3c, 0x55, 0x00, 0x67, 0xbb, 0x9e, 0x57, + 0x5f, 0x73, 0x45, 0xc3, 0xff, 0xa4, 0x04, 0x0b, 0x21, 0x9b, 0xd8, 0x57, 0xa2, 0x88, 0x2a, + 0xf2, 0x71, 0x94, 0xe3, 0x85, 0x0f, 0x7c, 0x2e, 0x96, 0x14, 0x24, 0x4a, 0xb4, 0xc7, 0xfb, + 0x18, 0x51, 0x6f, 0xcb, 0x84, 0xd7, 0xf1, 0x35, 0x62, 0xae, 0x7c, 0x5c, 0x8c, 0x62, 0x12, + 0x36, 0xed, 0x38, 0xb1, 0x33, 0x02, 0x66, 0x61, 0xce, 0xb3, 0xc2, 0x92, 0x15, 0xcb, 0x80, + 0x19, 0xbf, 0x76, 0x89, 0x45, 0x20, 0x89, 0x27, 0xb9, 0xea, 0x91, 0x8b, 0xcf, 0x72, 0xdc, + 0xd5, 0xf9, 0x95, 0x4b, 0xf2, 0x96, 0xf8, 0xf6, 0x97, 0x7c, 0xa3, 0xc2, 0xb5, 0x3e, 0x0a, + 0x88, 0xbf, 0x87, 0x24, 0xf4, 0xc3, 0x3f, 0x8a, 0x99, 0x63, 0xc4, 0x94, 0xd2, 0x29, 0x21, + 0x06, 0x17, 0xed, 0x3e, 0xbf, 0x63, 0x3d, 0xf8, 0xe9, 0x9b, 0x4a, 0x43, 0xf4, 0xc0, 0x4c, + 0xe3, 0x50, 0x5f, 0x67, 0x2e, 0x51, 0xd7, 0x56, 0x09, 0xd0, 0xf6, 0x8f, 0x27, 0xd5, 0xda, + 0x03, 0x2f, 0xad, 0x49, 0xfc, 0xc8, 0x11, 0x92, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5f, 0xd6, 0x1c, 0x7a, 0x83, 0xfd, 0x08, 0x31, 0xa4, 0xc2, 0xd7, 0xed, 0xd3, + 0x13, 0x02, 0x5e, 0xb3, 0x4b, 0xf1, 0x70, 0xb1, 0xf4, 0x20, 0x7a, 0xbf, 0xeb, 0xbf, 0x17, + 0x4f, 0x13, 0x89, 0x2d, 0xfd, 0xe0, 0x1c, 0xf8, 0xfe, 0x41, 0x80, 0xed, 0x2c, 0xe8, 0x8c, + 0xa8, 0x5d, 0xfb, 0xeb, 0x24, 0xc7, 0x0b, 0xb0, 0x44, 0x4c, 0x42, 0xa4, 0x9f, 0x6e, 0x04, + 0xae, 0x5f, 0x0c, 0x0f, 0x48, 0x7b, 0x33, 0xc1, 0x35, 0xe7, 0xe1, 0x89, 0x07, 0x42, 0x6f, + 0x41, 0x0b, 0x2d, 0xdd, 0xe5, 0x44, 0xa0, 0xf2, 0xe3, 0xd4, 0x73, 0xf4, 0x91, 0x39, 0x7d, + 0x5b, 0x3f, 0x2a, 0xc7, 0xd3, 0x32, 0x3c, 0x26, 0x5e, 0x83, 0x31, 0xec, 0x7e, 0xe8, 0x0b, + 0xfa, 0x3a, 0x48, 0x7c, 0x2a, 0xb2, 0xb6, 0xda, 0x18, 0x21, 0xe4, 0x6b, 0xe6, 0xc9, 0xe2, + 0x92, 0x03, 0x9c, 0x94, 0x27, 0x46, 0xbd, 0xd8, 0x74, 0xb7, 0x87, 0xbb, 0x18, 0xae, 0x29, + 0x01, 0x74, 0x81, 0x42, 0x5f, 0x5a, 0x61, 0x91, 0xb9, 0x04, 0x42, 0x46, 0x9b, 0x2d, 0x74, + 0x1b, 0x06, 0x18, 0xc5, 0x7b, 0xf1, 0x95, 0xf8, 0xd6, 0x23, 0x62, 0xfc, 0x71, 0x5d, 0xa9, + 0xeb, 0xcf, 0x55, 0x3e, 0x19, 0x1a, 0x8e, 0x36, 0x5f, 0x94, 0x6d, 0x1d, 0xf3, 0x4a, 0xd0, + 0x79, 0x43, 0x9a, 0x4a, 0xff, 0x9f, 0xbf, 0xf3, 0xeb, 0x40, 0xd9, 0xd5, 0xb5, 0xfd, 0xa9, + 0xe1, 0xaf, 0xd2, 0x15, 0x2e, 0x8a, 0x2f, 0x7a, 0xaf, 0xbb, 0xc4, 0xc1, 0xfb, 0x21, 0x6a, + 0x08, 0x55, 0x70, 0x78, 0x59, 0x40, 0xb9, 0x11, 0x2a, 0xfc, 0x2e, 0x47, 0x25, 0xe6, 0x78, + 0xf1, 0x18, 0x0e, 0x82, 0xec, 0xcb, 0xd4, 0xc7, 0xff, 0xca, 0xd2, 0x8d, 0xd2, 0xc2, 0x38, + 0x19, 0xb3, 0xe7, 0x46, 0x18, 0x95, 0xf2, 0x8a, 0x4d, 0x96, 0x83, 0x50, 0xf3, 0x2f, 0x4e, + 0x44, 0x7b, 0xfc, 0x66, 0xbc, 0x32, 0x1a, 0x68, 0x45, 0xd6, 0x5d, 0xcc, 0x20, 0x21, 0x2f, + 0x56, 0x14, 0xf5, 0xd0, 0x90, 0x0c, 0x98, 0x87, 0x69, 0xa9, 0x5c, 0x37, 0x97, 0xbb, 0x78, + 0x62, 0x15, 0xf7, 0xaa, 0xda, 0x71, 0x97, 0x28, 0x65, 0x4f, 0x40, 0xf7, 0x15, 0x22, 0xb9, + 0xa5, 0x08, 0xd2, 0x1d, 0xca, 0x0d, 0xcc, 0xfc, 0x8f, 0xf8, 0x89, 0xf8, 0xee, 0x7c, 0xfe, + 0x70, 0x93, 0xb3, 0xd4, 0x0f, 0x5f, 0xf9, 0x36, 0xc5, 0x29, 0x56, 0x12, 0x5a, 0xd9, 0x7e, + 0x02, 0x1e, 0x9b, 0x23, 0x77, 0x5e, 0x4d, 0xbf, 0x7e, 0x85, 0x00, 0x7a, 0x75, 0x3d, 0x58, + 0x97, 0x5f, 0x41, 0xe3, 0xdd, 0x72, 0xd6, 0x4c, 0x75, 0x3e, 0x4a, 0xa4, 0x7e, 0xb4, 0xcc, + 0x3c, 0x75, 0x40, 0x41, 0x9f, 0x55, 0x79, 0x60, 0xe0, 0x4b, 0xaf, 0x9b, 0x5a, 0x4c, 0x8d, + 0x38, 0xa7, 0x0b, 0xcd, 0x93, 0x30, 0x6a, 0x23, 0xce, 0xb1, 0x3a, 0x74, 0x43, 0xb4, 0xd6, + 0xc0, 0x20, 0x2a, 0x90, 0x6d, 0xfb, 0x91, 0xf2, 0xd8, 0xe8, 0x4d, 0x0d, 0xcb, 0x48, 0x49, + 0xc3, 0x45, 0xf5, 0x68, 0xbc, 0x86, 0x47, 0x26, 0x61, 0x71, 0x55, 0x59, 0xc7, 0x02, 0x43, + 0x1b, 0x65, 0x13, 0x99, 0x45, 0x3e, 0x03, 0x31, 0xe8, 0x00, 0x00, 0x7e, 0x39, 0x4a, 0x81, + 0x89, 0xda, 0x5d, 0xea, 0xe9, 0xb7, 0x10, 0xcc, 0xcc, 0x76, 0xd7, 0x02, 0xcb, 0xd8, 0x07, + 0xa0, 0x80, 0x94, 0xbe, 0xf7, 0xed, 0xca, 0x3c, 0xe6, 0x5f, 0xf3, 0x7e, 0x5c, 0xc1, 0xfe, + 0x26, 0x92, 0x42, 0x50, 0x8d, 0x9b, 0x20, 0xa5, 0x8c, 0xba, 0x93, 0xee, 0x57, 0xdf, 0xf4, + 0x03, 0x08, 0x5a, 0x63, 0x97, 0x46, 0x47, 0xb7, 0x4d, 0x58, 0x78, 0xf1, 0x56, 0xa2, 0x10, + 0xc0, 0xdf, 0x7f, 0x29, 0xeb, 0x70, 0x6f, 0x1a, 0xf0, 0x84, 0xca, 0xca, 0xde, 0x4a, 0x0f, + 0x0c, 0x1e, 0x05, 0x05, 0xb3, 0xb2, 0x2c, 0x67, 0x29, 0x51, 0x2b, 0x7e, 0xc9, 0xf0, 0x87, + 0x2b, 0x9b, 0xff, 0x75, 0xdb, 0xa3, 0x8d, 0x55, 0x95, 0x50, 0x82, 0x90, 0xdf, 0x86, 0xb9, + 0xa7, 0xf2, 0x69, 0xfb, 0x48, 0x17, 0xe5, 0xb3, 0x19, 0x65, 0xd1, 0x90, 0x72, 0xe8, 0xca, + 0xb5, 0xbd, 0xaa, 0x1b, 0x00, 0xf7, 0x3f, 0x75, 0x80, 0xe4, 0x6f, 0xb3, 0x0c, 0xb9, 0x6e, + 0x53, 0x26, 0xb4, 0xa7, 0x6b, 0x4b, 0xa8, 0x39, 0xa4, 0xd6, 0x1d, 0x9d, 0xdf, 0xe8, 0x70, + 0x5f, 0x97, 0xaa, 0xcd, 0x45, 0xfe, 0xcb, 0x58, 0xfd, 0x10, 0x6d, 0x89, 0xc7, 0x64, 0x88, + 0x0d, 0xad, 0x12, 0x30, 0x50, 0x4e, 0xac, 0xdf, 0x3a, 0x53, 0x90, 0x86, 0xaa, 0xe2, 0x1d, + 0xcf, 0xfa, 0xaf, 0xb9, 0x57, 0xa2, 0xb4, 0xce, 0x46, 0x03, 0x02, 0x9a, 0x0f, 0x56, 0x48, + 0x99, 0x94, 0x6c, 0x55, 0x5b, 0x39, 0xe7, 0xee, 0x8a, 0xa9, 0x49, 0x8c, 0x69, 0xa3, 0x89, + 0xef, 0xf9, 0xa5, 0x47, 0x0e, 0x2a, 0xf6, 0xe4, 0xc8, 0x76, 0x61, 0x64, 0xc2, 0xb1, 0x40, + 0x6f, 0x83, 0xda, 0xca, 0xe9, 0x82, 0x45, 0x42, 0xfd, 0xe4, 0x51, 0x27, 0x08, 0xb3, 0xb2, + 0xa3, 0x98, 0xd0, 0xfc, 0xad, 0xfa, 0xa5, 0xd8, 0x0c, 0x03, 0xfa, 0x69, 0xe5, 0xe8, 0x60, + 0x3a, 0x0f, 0xcf, 0x4b, 0x26, 0xc1, 0x4d, 0x60, 0x8a, 0xfe, 0x9f, 0x17, 0x30, 0xc6, 0x50, + 0x76, 0xa9, 0x50, 0x94, 0x9a, 0x71, 0xf7, 0x94, 0x38, 0xb3, 0x2b, 0xc9, 0xab, 0x0e, 0x22, + 0x5b, 0x04, 0xed, 0x1b, 0x14, 0x16, 0x34, 0x8c, 0x86, 0x2c, 0xb8, 0xcc, 0xc7, 0xfa, 0x84, + 0x9c, 0xec, 0x4a, 0x62, 0x9d, 0x24, 0x0b, 0x86, 0x07, 0xd3, 0xb3, 0xdb, 0xfe, 0x00, 0x9d, + 0x7c, 0x8d, 0x60, 0x03, 0x6e, 0x37, 0xe4, 0x27, 0x76, 0xb6, 0x66, 0x3f, 0xbe, 0x16, 0xb9, + 0x37, 0x9c, 0x22, 0x84, 0xa8, 0x29, 0xf5, 0xa5, 0xe4, 0x07, 0xf9, 0x01, 0x59, 0xb0, 0xa5, + 0x1b, 0x91, 0xb5, 0xd0, 0x22, 0x11, 0x4b, 0x6f, 0x1f, 0xb8, 0x2e, 0x50, 0xb3, 0xb2, 0x78, + 0xfb, 0x86, 0x16, 0x38, 0xb6, 0x1e, 0x75, 0x29, 0x4b, 0x39, 0x27, 0x49, 0xe8, 0xc2, 0x89, + 0xeb, 0x04, 0x8d, 0xfb, 0xcc, 0xb7, 0x35, 0xd9, 0xb3, 0x80, 0x46, 0xbc, 0xf6, 0xda, 0x54, + 0x3e, 0x73, 0x2c, 0x8e, 0x97, 0x03, 0xd5, 0x5f, 0xfc, 0x6a, 0x4a, 0x27, 0x0f, 0xee, 0x27, + 0x5c, 0x51, 0x9b, 0xa4, 0xf5, 0xc8, 0x6d, 0x89, 0x2b, 0xc0, 0x9f, 0x51, 0xb2, 0x54, 0x8d, + 0x57, 0x5d, 0x31, 0x30, 0x92, 0xb8, 0x74, 0xd4, 0xb4, 0x81, 0xb3, 0x74, 0xc1, 0x82, 0xe8, + 0xfd, 0xa9, 0x73, 0x5e, 0x97, 0x2b, 0xc7, 0x0f, 0x98, 0x0e, 0x41, 0xe5, 0xee, 0xbf, 0xcc, + 0x54, 0x8f, 0x5c, 0x01, 0x01, 0x41, 0x6f, 0xae, 0x13, 0x30, 0x8b, 0xac, 0x9d, 0x1a, 0x92, + 0x2e, 0xb3, 0x0d, 0x97, 0xac, 0x74, 0x30, 0xed, 0xf9, 0xa8, 0x18, 0xf4, 0x86, 0xe1, 0xcc, + 0xb2, 0x91, 0x77, 0xe7, 0x8e, 0x61, 0xe3, 0x25, 0x59, 0x45, 0x58, 0x09, 0xf2, 0x11, 0x53, + 0xea, 0xe4, 0xbf, 0x81, 0xb0, 0x77, 0xcb, 0xbe, 0x01, 0x58, 0xfe, 0x9b, 0x01, 0xc9, 0xe3, + 0x6b, 0xaa, 0xc4, 0xf6, 0x82, 0x47, 0x03, 0xa9, 0xe9, 0xe9, 0x0b, 0xdc, 0xdc, 0x7a, 0xbd, + 0xdd, 0xb6, 0xbb, 0x32, 0x91, 0xdf, 0xe4, 0x06, 0xce, 0x04, 0x02, 0x5a, 0x99, 0xb6, 0x1b, + 0x19, 0xe3, 0xa8, 0x3d, 0xd4, 0xc0, 0x77, 0x27, 0xe6, 0x83, 0xac, 0x55, 0xcd, 0x0b, 0x75, + 0x76, 0x53, 0xda, 0xbf, 0xe0, 0x8a, 0xa1, 0x33, 0x11, 0xc5, 0xbc, 0x47, 0xf2, 0x09, 0xdd, + 0x07, 0x6a, 0x69, 0xe1, 0x83, 0x95, 0x0e, 0xe4, 0xad, 0xf3, 0x18, 0xa7, 0xe1, 0x9b, 0xba, + 0x32, 0x7c, 0xb9, 0xec, 0xa7, 0x01, 0x4c, 0xc7, 0x04, 0xc8, 0x03, 0x52, 0xb8, 0xea, 0x73, + 0x2d, 0xf2, 0x18, 0x8f, 0x1a, 0x0b, 0x1f, 0x8c, 0xa4, 0x63, 0x4f, 0x92, 0x6d, 0xcf, 0x18, + 0x62, 0x3a, 0x64, 0x9c, 0x80, 0xb6, 0xaf, 0xe9, 0x27, 0x36, 0x9f, 0xd4, 0x8f, 0x74, 0xdc, + 0x74, 0x85, 0x30, 0x4d, 0xbc, 0x01, 0xdd, 0xa4, 0x0d, 0x99, 0x20, 0x79, 0x45, 0x92, 0xe2, + 0x0d, 0xef, 0x16, 0x52, 0x60, 0x68, 0x86, 0x71, 0x32, 0x96, 0x14, 0xcc, 0x8a, 0x43, 0x0d, + 0x9c, 0xd6, 0x48, 0x7f, 0x71, 0xbc, 0x38, 0xe4, 0xac, 0xda, 0x23, 0x90, 0xa9, 0x40, 0x5d, + 0x77, 0x79, 0x9d, 0x39, 0x40, 0x51, 0x22, 0xa5, 0xa5, 0x8f, 0xd6, 0x37, 0xc4, 0x97, 0xa7, + 0x7a, 0x1a, 0xb2, 0xf6, 0xd8, 0x9f, 0x6a, 0x0f, 0x91, 0x3f, 0x26, 0x0b, 0xc6, 0xd9, 0xcd, + 0xd2, 0x7a, 0x8c, 0xdc, 0xd9, 0x8b, 0xd1, 0x9e, 0x62, 0x82, 0x0a, 0xa7, 0x05, 0xd1, 0x08, + 0xc9, 0x32, 0x71, 0xe2, 0x49, 0xcf, 0xf0, 0x2e, 0x1a, 0x49, 0x7f, 0x1e, 0x11, 0x20, 0xd9, + 0xb8, 0x75, 0xda, 0x29, 0xa5, 0x02, 0x8d, 0x62, 0x4f, 0x44, 0x6f, 0xdd, 0x66, 0x9e, 0x15, + 0xbf, 0x8c, 0xda, 0xac, 0xd7, 0x06, 0xf3, 0x52, 0xe2, 0x43, 0x01, 0xe4, 0x9b, 0xf2, 0x0a, + 0x7f, 0x47, 0xc9, 0x51, 0xa7, 0xfb, 0xcc, 0xb3, 0x28, 0x9f, 0xce, 0xaf, 0x7e, 0x46, 0x15, + 0xd5, 0x53, 0x75, 0xee, 0x63, 0x87, 0xbf, 0x95, 0xde, 0x52, 0x50, 0xe8, 0xf2, 0xee, 0x74, + 0xea, 0x06, 0x84, 0xd4, 0xa1, 0xf5, 0xf1, 0x37, 0xc8, 0x73, 0x9a, 0xfa, 0xad, 0x6f, 0x00, + 0x5c, 0x07, 0x01, 0x24, 0xe7, 0x8b, 0x83, 0x35, 0x0e, 0x61, 0x5f, 0xa8, 0x5b, 0xaf, 0x15, + 0x8a, 0xc9, 0xe0, 0x8b, 0x3b, 0xce, 0x47, 0x33, 0x2c, 0x14, 0x78, 0xc4, 0x96, 0x7c, 0x9d, + 0xfb, 0xe6, 0x23, 0xbe, 0xbf, 0x84, 0x7f, 0x9c, 0x18, 0xb0, 0x25, 0xd0, 0xe4, 0x98, 0x9d, + 0x01, 0x04, 0x67, 0x14, 0x0d, 0xa6, 0x76, 0x08, 0xec, 0xc7, 0x89, 0x27, 0x26, 0x96, 0x79, + 0x79, 0x95, 0xee, 0x90, 0x00, 0xac, 0xc5, 0x4d, 0xc2, 0x4f, 0x8e, 0x11, 0xb4, 0x0a, 0xaa, + 0x90, 0x04, 0x9f, 0x56, 0x6c, 0x9e, 0x80, 0xe0, 0xaf, 0xf8, 0x68, 0xd8, 0x39, 0x63, 0x6c, + 0x1b, 0x2b, 0x56, 0x79, 0xb0, 0x00, 0x01, 0x22, 0xaf, 0xa4, 0x9b, 0x9f, 0x69, 0x04, 0x96, + 0x3d, 0xfb, 0xae, 0x74, 0x95, 0xac, 0x6c, 0x14, 0x9e, 0x9b, 0x0f, 0x3b, 0xa2, 0x11, 0x8a, + 0x8b, 0xee, 0x90, 0x98, 0x6e, 0xa9, 0x5c, 0x26, 0x34, 0x90, 0xe5, 0xfb, 0x28, 0xcd, 0x8a, + 0x3e, 0x64, 0x44, 0x77, 0xd0, 0x80, 0x04, 0x20, 0xc7, 0x62, 0xf6, 0x51, 0x9e, 0x24, 0x4d, + 0x0e, 0xc7, 0xa7, 0xf1, 0xdb, 0x53, 0x09, 0xaf, 0xca, 0x30, 0x3a, 0xdc, 0xad, 0x15, 0x1e, + 0xd7, 0xf4, 0x3c, 0x6a, 0x44, 0x2b, 0x24, 0xb5, 0x51, 0xd5, 0x93, 0x66, 0x89, 0xad, 0x3d, + 0x51, 0x73, 0x60, 0x75, 0xa2, 0x26, 0x04, 0x4e, 0x44, 0x1c, 0xb3, 0x80, 0x8c, 0x1b, 0x3d, + 0xd7, 0x7a, 0xc3, 0x7b, 0x93, 0x95, 0xa9, 0x97, 0x3d, 0x18, 0xe6, 0x5c, 0x09, 0x07, 0x70, + 0xbf, 0x4e, 0xcb, 0x6d, 0x19, 0xec, 0xb5, 0x8f, 0x84, 0x8a, 0x41, 0x3f, 0x40, 0x43, 0x59, + 0xa4, 0x68, 0x0d, 0x9b, 0xa7, 0x02, 0x07, 0x2b, 0x92, 0x56, 0xc1, 0x61, 0x1e, 0x93, 0xaa, + 0xc9, 0x97, 0x9a, 0x85, 0x07, 0x34, 0xd8, 0xbd, 0x9d, 0x9f, 0xb1, 0x0e, 0x5d, 0x75, 0xe9, + 0x35, 0xb5, 0x75, 0x09, 0xdc, 0x8c, 0xda, 0x2a, 0x81, 0x4b, 0x4e, 0xaf, 0x51, 0xb6, 0x35, + 0x31, 0x18, 0xdd, 0x7b, 0x14, 0x80, 0x18, 0xfd, 0x6e, 0x2c, 0x29, 0x4a, 0x0f, 0x7e, 0x64, + 0x76, 0x5e, 0xcd, 0x41, 0x5e, 0x0c, 0x4a, 0xfa, 0x5a, 0xe6, 0x97, 0xa4, 0x4c, 0xeb, 0xd5, + 0x57, 0x6d, 0xb5, 0xb3, 0xd6, 0x23, 0x7f, 0x14, 0x36, 0x11, 0x27, 0xe1, 0xe3, 0x89, 0xdb, + 0x0d, 0x4f, 0x4f, 0xfb, 0xad, 0x7f, 0x78, 0x90, 0x76, 0x3f, 0x60, 0xbd, 0xb6, 0x56, 0x1c, + 0xe1, 0x14, 0xa1, 0x2a, 0x75, 0x52, 0xc6, 0x38, 0x9d, 0x61, 0xf4, 0xea, 0xc5, 0xf3, 0x15, + 0x1f, 0x77, 0x22, 0xa8, 0xe2, 0x46, 0xce, 0xb9, 0xff, 0xbc, 0xe1, 0x0a, 0xb0, 0x97, 0xb7, + 0xf9, 0x3b, 0x44, 0x85, 0x25, 0xaf, 0x69, 0x5e, 0xf2, 0x96, 0x56, 0x41, 0xf0, 0x22, 0xb2, + 0xd5, 0xe3, 0x92, 0x15, 0x01, 0x59, 0xf9, 0x1e, 0xe2, 0x64, 0x0e, 0xa7, 0x9f, 0xd9, 0x5f, + 0x4a, 0x82, 0x2b, 0xac, 0xaa, 0x36, 0x2c, 0x80, 0x2f, 0x68, 0x5d, 0x1c, 0xaf, 0x3e, 0x83, + 0xca, 0x00, 0x42, 0x83, 0xdd, 0xce, 0x1f, 0x63, 0x06, 0x83, 0x48, 0x99, 0xb8, 0x4b, 0x4c, + 0xbf, 0xe0, 0x02, 0x0c, 0x17, 0x10, 0xd7, 0x14, 0x6f, 0xac, 0xf5, 0x15, 0xcf, 0x2a, 0xb2, + 0xbb, 0xdd, 0x9a, 0x5b, 0x12, 0xed, 0x89, 0xdb, 0xc7, 0x9c, 0xe3, 0x62, 0x64, 0x73, 0x50, + 0x09, 0x42, 0x51, 0x76, 0x67, 0x0d, 0x3b, 0x64, 0x6c, 0x47, 0xf9, 0x7f, 0xae, 0x23, 0x40, + 0xb8, 0xce, 0x37, 0xc9, 0x8f, 0xf3, 0x52, 0x4a, 0x92, 0xae, 0x25, 0x99, 0xe4, 0xb4, 0xc0, + 0xe3, 0x87, 0x43, 0x1f, 0xa4, 0x1b, 0x01, 0xb1, 0xdc, 0xcc, 0xb7, 0x42, 0x2b, 0xab, 0x5f, + 0x09, 0x95, 0xf0, 0x7f, 0x0c, 0x4a, 0xc3, 0xf3, 0x2d, 0x80, 0x2e, 0xf0, 0xdb, 0x06, 0x06, + 0xbe, 0x1d, 0x48, 0x04, 0x57, 0x03, 0x33, 0x1b, 0x33, 0x21, 0xbe, 0xa1, 0x6d, 0xc2, 0x0a, + 0x74, 0x9c, 0x82, 0x3f, 0x3e, 0x59, 0x31, 0x8b, 0x2b, 0xf8, 0xbd, 0x41, 0xce, 0x8d, 0xba, + 0xa3, 0xe8, 0x73, 0xce, 0xd2, 0x83, 0x61, 0x47, 0x96, 0x46, 0x0f, 0x1c, 0xc4, 0x53, 0x84, + 0x42, 0x9d, 0x56, 0xd4, 0xd6, 0x55, 0x29, 0x1c, 0x7d, 0x42, 0x6a, 0x9e, 0xd7, 0x27, 0x83, + 0xaa, 0xf2, 0x61, 0x22, 0x03, 0xf5, 0x8c, 0x77, 0x02, 0xab, 0xf8, 0xc9, 0x06, 0x25, 0xad, + 0xbd, 0x01, 0xaa, 0x2c, 0xb8, 0xb3, 0xc3, 0x39, 0x1d, 0x61, 0x54, 0x93, 0x9e, 0x33, 0x14, + 0x52, 0xc7, 0x25, 0x3e, 0x80, 0x6d, 0xdf, 0x82, 0xde, 0x26, 0x8c, 0xfa, 0x7c, 0xd6, 0x19, + 0x30, 0xa0, 0x37, 0xba, 0x7a, 0x2f, 0x02, 0x8c, 0x5d, 0x19, 0xec, 0xf9, 0x2b, 0x99, 0xe0, + 0xbd, 0x65, 0x13, 0x52, 0xc6, 0x90, 0x26, 0x95, 0xb1, 0xe7, 0x59, 0x3c, 0xbc, 0x0b, 0x06, + 0x72, 0x79, 0x3b, 0x35, 0x1d, 0xca, 0x90, 0x12, 0x24, 0xf0, 0x49, 0x43, 0x8f, 0xa6, 0xea, + 0x38, 0xc1, 0x9f, 0x04, 0x46, 0xe2, 0x3a, 0x89, 0xe3, 0x20, 0xa5, 0x06, 0x4c, 0x9b, 0x0b, + 0x37, 0xc0, 0x0f, 0x41, 0x2d, 0x23, 0x20, 0xaf, 0xea, 0x62, 0x6e, 0x11, 0xff, 0x17, 0x7f, + 0x6d, 0xd8, 0xbe, 0x8f, 0xe3, 0xfb, 0x26, 0x0b, 0x64, 0x2a, 0xc0, 0x50, 0xb2, 0x99, 0x10, + 0x44, 0x64, 0xbe, 0x65, 0xeb, 0x4b, 0x13, 0xee, 0xea, 0xfc, 0x38, 0x35, 0xa2, 0x82, 0xe6, + 0x0c, 0xfc, 0x19, 0x99, 0x18, 0x7c, 0x80, 0xa3, 0x8a, 0xcd, 0x6a, 0xa0, 0xff, 0x2b, 0x7c, + 0x57, 0x7b, 0x0b, 0x28, 0xd4, 0x8a, 0xb1, 0xff, 0x09, 0x12, 0x3d, 0x13, 0x8c, 0x96, 0x4a, + 0xb4, 0x18, 0xde, 0xb2, 0x59, 0x99, 0x2d, 0xda, 0x7d, 0x9d, 0xc1, 0x99, 0x58, 0x83, 0xaa, + 0xea, 0x94, 0xe8, 0xb4, 0x24, 0xf1, 0x2d, 0x30, 0x51, 0xde, 0x35, 0x25, 0x1a, 0x2c, 0x24, + 0x9c, 0xb5, 0x62, 0x06, 0x92, 0xc2, 0x24, 0x33, 0x89, 0x77, 0xfa, 0x0a, 0x44, 0xd2, 0x8f, + 0x11, 0xa2, 0x35, 0x55, 0x1a, 0xdc, 0x9b, 0x2a, 0x52, 0xf1, 0x0b, 0x8e, 0x0f, 0xf4, 0x4b, + 0xdc, 0xf6, 0x23, 0x5f, 0xbf, 0x01, 0x41, 0x95, 0x4f, 0x95, 0x48, 0x22, 0x41, 0x4f, 0x77, + 0x5b, 0xca, 0x89, 0xbf, 0xc9, 0x3f, 0x8b, 0x9a, 0x03, 0xf8, 0x8a, 0x69, 0x10, 0x39, 0x06, + 0xac, 0x72, 0x27, 0x23, 0x7b, 0xbd, 0x6f, 0x78, 0xae, 0x62, 0xd1, 0x15, 0x20, 0x1b, 0x83, + 0xae, 0x9f, 0x5a, 0xb2, 0x51, 0xb7, 0x52, 0xe2, 0x7f, 0x31, 0xf3, 0x04, 0x27, 0xab, 0x39, + 0x14, 0x25, 0x17, 0xd6, 0x35, 0x83, 0x2b, 0x69, 0xda, 0x7a, 0x6c, 0xc8, 0xae, 0xb8, 0x5f, + 0xd8, 0x1d, 0x85, 0x5a, 0x2d, 0xe3, 0x29, 0x4c, 0x84, 0xc9, 0x99, 0x6c, 0x91, 0x84, 0x98, + 0xea, 0xf4, 0x6a, 0x2c, 0x2e, 0xaa, 0x92, 0x14, 0xc0, 0xe6, 0x79, 0x6b, 0x40, 0x8a, 0x24, + 0x47, 0x15, 0x93, 0xcf, 0xf9, 0x62, 0x29, 0xdd, 0xd6, 0xb6, 0x59, 0xd0, 0xd7, 0x02, 0x2b, + 0xdb, 0x7e, 0xd9, 0x71, 0x3a, 0x2a, 0x06, 0x9b, 0xc4, 0x70, 0x24, 0xe4, 0xed, 0x89, 0xf1, + 0xa1, 0x75, 0x21, 0xaf, 0x89, 0x9a, 0x49, 0xbc, 0xf8, 0xb5, 0xf9, 0xd5, 0x70, 0xdd, 0xec, + 0xc2, 0x92, 0xd6, 0xc2, 0x04, 0x8d, 0xdf, 0x03, 0x30, 0x79, 0x84, 0x6d, 0x70, 0xd5, 0x2e, + 0xe7, 0xf4, 0x35, 0x72, 0x5b, 0x59, 0xcc, 0x78, 0x67, 0x42, 0x3c, 0xde, 0xa7, 0x2f, 0x2a, + 0xb1, 0x24, 0xdf, 0x54, 0xcc, 0x6b, 0x6c, 0x07, 0x64, 0x39, 0x56, 0x95, 0x37, 0x85, 0x28, + 0x5b, 0x84, 0x79, 0x5d, 0x40, 0x82, 0x74, 0xc9, 0xba, 0xd2, 0x29, 0x10, 0x8e, 0x4b, 0x72, + 0x2c, 0xd7, 0x30, 0xce, 0xbf, 0x34, 0x02, 0x05, 0xd3, 0xed, 0xf3, 0x10, 0x58, 0x48, 0xde, + 0x20, 0x7f, 0x3c, 0xaa, 0xd0, 0xfa, 0x6b, 0x6b, 0xae, 0xdc, 0xa9, 0x63, 0x1a, 0xf1, 0x13, + 0xb0, 0xf9, 0xb7, 0xdf, 0xd4, 0xb4, 0x37, 0x94, 0xb5, 0x21, 0x28, 0x4f, 0xba, 0x23, 0x5d, + 0x01, 0xe9, 0x0e, 0x7e, 0x71, 0x59, 0x29, 0xba, 0x07, 0xe8, 0x51, 0xaa, 0x13, 0xdf, 0xb7, + 0x96, 0xac, 0x50, 0xc5, 0x9a, 0x48, 0x27, 0xa5, 0xb8, 0xdb, 0xbb, 0x9c, 0x1c, 0x51, 0xd0, + 0x3d, 0xde, 0x63, 0x50, 0xe9, 0x4c, 0x6a, 0x4b, 0x26, 0x2d, 0xb6, 0xaf, 0xcd, 0x8d, 0xfe, + 0x99, 0x3a, 0x0e, 0x31, 0x75, 0xeb, 0x62, 0x53, 0x8f, 0x8c, 0xb6, 0xe7, 0x1a, 0x45, 0x6d, + 0x85, 0x1e, 0x1f, 0x48, 0xc8, 0x50, 0x20, 0x5f, 0x59, 0x3e, 0x68, 0xcf, 0xc5, 0xa0, 0xf7, + 0x6c, 0xa8, 0xdb, 0x7a, 0x8d, 0xbc, 0x8f, 0x7d, 0x28, 0x92, 0x5a, 0xaf, 0x3b, 0xa7, 0xf8, + 0x2e, 0x07, 0xa9, 0x56, 0x3f, 0xab, 0x0a, 0xd3, 0x57, 0x02, 0xa0, 0xc4, 0x18, 0x6f, 0x5d, + 0x58, 0x98, 0x94, 0x6d, 0x3d, 0x21, 0xaf, 0x9c, 0x01, 0x18, 0x69, 0xb1, 0x06, 0xa7, 0xeb, + 0xb5, 0x42, 0x10, 0x68, 0x1f, 0xca, 0x1f, 0x23, 0x68, 0x32, 0xab, 0x9d, 0xad, 0xb3, 0x1b, + 0x97, 0x73, 0x15, 0x10, 0x83, 0x93, 0x33, 0x09, 0x14, 0x13, 0xaf, 0xb2, 0x11, 0xc8, 0xc1, + 0x15, 0xe8, 0xce, 0x14, 0xfb, 0x7c, 0x14, 0xb2, 0x19, 0xd4, 0x12, 0x4d, 0xee, 0x2d, 0x72, + 0xf3, 0x76, 0x2c, 0x68, 0xae, 0x2e, 0xde, 0x4d, 0x5f, 0xb8, 0x9f, 0xe9, 0x08, 0xef, 0x7d, + 0x4c, 0x71, 0x48, 0x1a, 0x74, 0x15, 0x49, 0xf6, 0x36, 0xfe, 0x20, 0xd7, 0x4b, 0xff, 0x8a, + 0x2a, 0x0a, 0x19, 0x2d, 0x92, 0xa3, 0x5b, 0x11, 0x31, 0x2b, 0x97, 0x02, 0x4c, 0xc3, 0x85, + 0xe6, 0x77, 0xde, 0x92, 0x92, 0x80, 0xa6, 0x76, 0xd0, 0x35, 0xbe, 0x89, 0x16, 0xbc, 0x53, + 0xdf, 0xa3, 0x24, 0x75, 0x83, 0x3d, 0x9e, 0x2e, 0xcd, 0xa1, 0x2c, 0x1a, 0x73, 0x89, 0x8f, + 0x6a, 0xe5, 0x15, 0xf5, 0x74, 0xbc, 0x66, 0x73, 0x7a, 0x39, 0x7d, 0x72, 0xb6, 0xc9, 0x32, + 0xa7, 0x1c, 0x30, 0x25, 0xf0, 0xcc, 0xb1, 0xd8, 0x66, 0xba, 0xb3, 0xc6, 0x2f, 0xa6, 0x62, + 0x3e, 0x14, 0xd1, 0x71, 0x58, 0x83, 0x74, 0x30, 0x0d, 0x70, 0x44, 0x03, 0x3e, 0xfd, 0x62, + 0x6a, 0x06, 0x83, 0x59, 0x39, 0xfe, 0x5e, 0x35, 0x11, 0xdf, 0x9d, 0x2f, 0x57, 0x70, 0xbb, + 0x1b, 0x8b, 0x63, 0x55, 0xe6, 0xa2, 0x73, 0xb9, 0xd1, 0x83, 0x9d, 0xfb, 0xb8, 0xb6, 0x79, + 0x1a, 0xbd, 0x4a, 0x23, 0x86, 0xfb, 0x0b, 0xfc, 0xb9, 0x28, 0x49, 0xfe, 0x90, 0x67, 0x04, + 0x6f, 0x77, 0x35, 0xdc, 0x88, 0xcc, 0xd7, 0x55, 0xa9, 0x8c, 0x78, 0x4e, 0x5f, 0x6d, 0x6a, + 0x83, 0xa9, 0x22, 0x02, 0xe1, 0x29, 0x27, 0x76, 0x57, 0x29, 0x42, 0xc4, 0xcf, 0x4c, 0x3b, + 0x4c, 0x69, 0x75, 0x70, 0x1a, 0x91, 0x56, 0x9b, 0x3a, 0x43, 0x7a, 0xf2, 0x2b, 0x88, 0x4b, + 0x50, 0xc9, 0x9f, 0xd3, 0x37, 0xe7, 0xf4, 0x1b, 0x3c, 0xce, 0x32, 0xb5, 0xc9, 0x85, 0xf9, + 0x11, 0x3a, 0x40, 0x5d, 0xde, 0xd6, 0xd0, 0x7e, 0xf4, 0xf8, 0xfa, 0x4b, 0xe9, 0x34, 0xb1, + 0x8b, 0x18, 0x4b, 0xf0, 0xb5, 0x15, 0xcc, 0xa2, 0x5e, 0x36, 0x6d, 0xa8, 0x7c, 0x60, 0xe1, + 0x5d, 0x13, 0x4e, 0x3e, 0xe6, 0x4d, 0xd7, 0x3d, 0x74, 0xe8, 0xf1, 0xed, 0x36, 0x6d, 0x5c, + 0x5a, 0x92, 0xd3, 0xf3, 0x71, 0xa7, 0xdf, 0xf1, 0x86, 0x84, 0x97, 0x39, 0x52, 0x3e, 0xed, + 0xa4, 0x7b, 0xba, 0xc5, 0x5c, 0x60, 0xb9, 0xaa, 0x0e, 0x5b, 0xf2, 0x7d, 0x26, 0x07, 0x88, + 0x43, 0xa1, 0x40, 0x9d, 0x50, 0x83, 0x94, 0xe1, 0xc9, 0xc8, 0x37, 0xcf, 0x14, 0x35, 0xb2, + 0x53, 0x20, 0x94, 0x27, 0x38, 0x02, 0x09, 0x00, 0xf6, 0x19, 0xf4, 0x3e, 0xbe, 0x1b, 0x0f, + 0x37, 0x63, 0x3b, 0x1a, 0x99, 0x0a, 0xad, 0x26, 0x16, 0x0b, 0x73, 0xaf, 0x76, 0xef, 0xa5, + 0x23, 0x34, 0xa0, 0xee, 0x07, 0xd3, 0x0e, 0xcf, 0x3f, 0xac, 0x27, 0xc7, 0x03, 0xac, 0x25, + 0xc2, 0xe8, 0xf8, 0x4d, 0xac, 0x38, 0x18, 0x0e, 0xf2, 0xfe, 0xff, 0x0e, 0xcb, 0xf3, 0x78, + 0xc5, 0xf7, 0x1b, 0xdf, 0x99, 0x52, 0x82, 0x6f, 0xf2, 0x06, 0xfc, 0xfb, 0x71, 0xfd, 0x00, + 0xfa, 0x08, 0x94, 0x17, 0x59, 0xb6, 0x2c, 0xf4, 0xed, 0x35, 0x95, 0xd2, 0x95, 0xe6, 0x3a, + 0x21, 0xdb, 0x33, 0x98, 0x10, 0xcf, 0xad, 0x06, 0xa7, 0x7a, 0x20, 0xe1, 0xc1, 0x15, 0x20, + 0x02, 0x27, 0x4a, 0x2f, 0xe3, 0xb8, 0xbb, 0xd6, 0x13, 0x1d, 0x82, 0x23, 0x61, 0xf8, 0x88, + 0x79, 0x86, 0xec, 0x57, 0x8d, 0x77, 0x2b, 0x0f, 0x05, 0x7a, 0x88, 0xb5, 0x32, 0xec, 0x33, + 0xf1, 0xe8, 0x84, 0xf4, 0x1e, 0xf3, 0x27, 0xff, 0x37, 0x5a, 0xed, 0x6e, 0xad, 0x89, 0xfc, + 0x5c, 0x58, 0xcd, 0xea, 0xd5, 0x77, 0x0f, 0x0a, 0x12, 0xff, 0x45, 0xaf, 0x4a, 0xce, 0x38, + 0xaa, 0x7d, 0xf3, 0xdb, 0xda, 0x1e, 0xec, 0xfa, 0x8a, 0xa1, 0x61, 0xa3, 0x15, 0x50, 0xac, + 0xa1, 0x62, 0x54, 0x50, 0x04, 0xf1, 0x46, 0xc6, 0x9b, 0x44, 0x3c, 0xcd, 0xfb, 0x33, 0x8f, + 0xf7, 0xe7, 0xf1, 0x97, 0x86, 0x4c, 0xf3, 0xe9, 0x49, 0x5b, 0xe5, 0xad, 0x00, 0x9c, 0x9b, + 0x2c, 0x2a, 0xcf, 0x41, 0x66, 0xb0, 0x49, 0x92, 0x2d, 0x20, 0xfa, 0xdc, 0x08, 0x4a, 0xc8, + 0x1a, 0x83, 0x37, 0xee, 0x9f, 0x39, 0xe6, 0x48, 0x5f, 0x12, 0x7e, 0x62, 0x8b, 0xe9, 0x4b, + 0xf8, 0xde, 0x6e, 0xa4, 0xe7, 0x9f, 0x1a, 0x0d, 0x5c, 0x36, 0xd7, 0xda, 0x6b, 0x95, 0x07, + 0xa3, 0xda, 0x1c, 0x64, 0x84, 0x9d, 0x9f, 0x9e, 0xc2, 0x25, 0x40, 0xe8, 0x44, 0xfb, 0x35, + 0xc1, 0x8f, 0x8e, 0x06, 0xa7, 0x55, 0x42, 0x9c, 0xad, 0x32, 0x95, 0x8e, 0xdc, 0xd3, 0x83, + 0x3c, 0x39, 0x8a, 0x16, 0x40, 0xe7, 0xe2, 0x84, 0x3f, 0xa5, 0x28, 0x79, 0x34, 0xd6, 0xf5, + 0xc0, 0x8c, 0xe9, 0xcf, 0x8a, 0xbd, 0x39, 0x2c, 0x50, 0x57, 0x09, 0xa6, 0x46, 0xba, 0x0d, + 0x22, 0x44, 0x8a, 0x03, 0x4d, 0x0f, 0xcf, 0x92, 0xf9, 0xd6, 0x86, 0xbb, 0x4d, 0xec, 0x89, + 0xd1, 0x05, 0x69, 0x4c, 0xeb, 0xeb, 0xcd, 0xea, 0x7b, 0xbf, 0xc2, 0x1a, 0x02, 0xb9, 0x66, + 0xf8, 0x96, 0xd4, 0x6d, 0x5d, 0x09, 0xe0, 0xb5, 0x80, 0x9f, 0xd6, 0xd3, 0x11, 0x24, 0x3a, + 0x53, 0x09, 0x70, 0x06, 0x7f, 0x6e, 0xba, 0xa8, 0x8d, 0x96, 0x61, 0xe4, 0x75, 0x9d, 0x8f, + 0xa6, 0x52, 0x59, 0x9b, 0xc5, 0x00, 0x8f, 0x2f, 0x21, 0xc0, 0xb4, 0x16, 0x56, 0xe4, 0x4e, + 0x11, 0x45, 0x01, 0xae, 0x26, 0x7d, 0x08, 0x19, 0x4e, 0xa7, 0x22, 0x96, 0x4c, 0xbb, 0xc2, + 0x12, 0xf6, 0xc4, 0x0b, 0x39, 0x7f, 0xb7, 0xa5, 0x61, 0x35, 0x77, 0x0b, 0x4e, 0x11, 0xfb, + 0xe3, 0x5c, 0xc0, 0xfb, 0xdd, 0x19, 0x37, 0x59, 0xcb, 0x98, 0xd6, 0x08, 0x52, 0xf4, 0x87, + 0xab, 0xd7, 0x99, 0x2b, 0x87, 0x8c, 0xde, 0x74, 0x6f, 0x34, 0xd0, 0x31, 0xc6, 0xc1, 0x72, + 0x3a, 0xe2, 0x49, 0xcf, 0x61, 0xb7, 0x06, 0x67, 0x80, 0xc7, 0x87, 0x84, 0xb9, 0x86, 0x8c, + 0x99, 0x94, 0xbe, 0x54, 0xa0, 0xa9, 0x7c, 0x89, 0x7a, 0xef, 0xa9, 0x0f, 0xf9, 0x30, 0x02, + 0xb6, 0xe3, 0xf1, 0x55, 0x7b, 0xe9, 0x49, 0xa6, 0xe2, 0xa3, 0x66, 0xc6, 0xb7, 0xfd, 0xa4, + 0x58, 0x32, 0x5c, 0x30, 0x9e, 0xd4, 0x19, 0x17, 0xd2, 0x7c, 0xc5, 0x93, 0x21, 0x70, 0x8b, + 0x1b, 0xb4, 0x4f, 0x9f, 0x82, 0x88, 0x0b, 0x60, 0x3f, 0x21, 0x75, 0xab, 0x48, 0x82, 0x10, + 0x7f, 0x49, 0x6d, 0x22, 0x3a, 0xcd, 0x56, 0x75, 0x07, 0xd2, 0xdc, 0xac, 0x6b, 0x77, 0x8b, + 0x62, 0xe1, 0x3a, 0x76, 0xac, 0x9c, 0x41, 0x6c, 0x24, 0x59, 0x13, 0x63, 0x5c, 0x4d, 0xd9, + 0xfe, 0x0e, 0x5c, 0xa9, 0x69, 0x0f, 0x52, 0xd8, 0xbb, 0x13, 0x9b, 0x80, 0xdc, 0xb6, 0x7b, + 0x75, 0x1e, 0xb3, 0x7a, 0x1e, 0xed, 0x26, 0xb9, 0x27, 0xfd, 0x4d, 0x55, 0xb1, 0x29, 0xfe, + 0xa7, 0x21, 0x21, 0x8c, 0x5f, 0x96, 0xc6, 0xee, 0xc0, 0xb6, 0xe9, 0x45, 0x70, 0xe2, 0x53, + 0x70, 0xef, 0xd5, 0xbb, 0x2f, 0x28, 0x02, 0xb4, 0xfd, 0x1f, 0x62, 0xe1, 0x67, 0xa9, 0x1b, + 0x89, 0x1d, 0x0e, 0xc9, 0xb0, 0xd7, 0x97, 0xa6, 0xc9, 0xe1, 0xdc, 0xcb, 0x3e, 0x68, 0x91, + 0x07, 0x27, 0xe8, 0xda, 0x49, 0x1a, 0x3d, 0x71, 0x08, 0xbf, 0xc3, 0x61, 0xf8, 0xdd, 0x23, + 0x4b, 0x13, 0xe3, 0xa0, 0x7c, 0xc7, 0xb7, 0x56, 0x4d, 0x17, 0x66, 0x6b, 0xf9, 0x9d, 0x08, + 0x2c, 0x91, 0x6f, 0x3e, 0xff, 0xa4, 0xe7, 0xf9, 0x8a, 0xe5, 0x1f, 0xc7, 0x75, 0x69, 0x85, + 0x12, 0xce, 0xad, 0xd8, 0x6c, 0xa5, 0x76, 0x56, 0x76, 0x71, 0x56, 0xed, 0xf8, 0x0f, 0xa4, + 0x24, 0xdd, 0x69, 0xd0, 0x3c, 0x1d, 0xee, 0xba, 0xa2, 0x35, 0x95, 0x37, 0x13, 0x65, 0x64, + 0xfa, 0x42, 0x58, 0xe2, 0x6a, 0x67, 0x5c, 0x32, 0x3c, 0x68, 0x3c, 0x81, 0x12, 0xdf, 0x34, + 0x06, 0x52, 0xe4, 0x2e, 0x76, 0x6c, 0x56, 0xc3, 0xf4, 0xfc, 0xf8, 0xd0, 0x1a, 0x5d, 0x2e, + 0xed, 0x60, 0x62, 0x01, 0xd7, 0x1e, 0xc7, 0x6f, 0x14, 0x20, 0x20, 0x3e, 0x03, 0xc0, 0x10, + 0x13, 0xed, 0xbb, 0x5c, 0x37, 0xc7, 0x26, 0x71, 0x8d, 0x95, 0x89, 0x00, 0xff, 0xde, 0x69, + 0xf8, 0x06, 0x5b, 0xef, 0xa5, 0x7f, 0xf3, 0x87, 0x4f, 0x08, 0x33, 0x40, 0xdc, 0x76, 0x9a, + 0x4c, 0xb6, 0x72, 0x14, 0xcb, 0xc8, 0x7c, 0xdc, 0x91, 0x83, 0x15, 0x57, 0xcc, 0xe5, 0x69, + 0x84, 0x2b, 0x00, 0x0b, 0xbd, 0x6a, 0xae, 0x39, 0xd4, 0x9f, 0xbb, 0x59, 0x1f, 0x3f, 0xc1, + 0x8b, 0xb2, 0x1c, 0x18, 0x95, 0xfb, 0x93, 0x07, 0x89, 0xa1, 0x32, 0x60, 0xaa, 0x76, 0x6b, + 0x65, 0x79, 0x70, 0x13, 0x52, 0x1e, 0xa1, 0x51, 0x60, 0x2c, 0x2a, 0x83, 0x78, 0x36, 0x64, + 0xd3, 0x8f, 0x0d, 0xe7, 0xdc, 0x9e, 0x1e, 0x2d, 0x1d, 0x7c, 0x49, 0x21, 0x33, 0x8d, 0xe5, + 0x10, 0xea, 0xf7, 0x10, 0x5f, 0x04, 0x54, 0x01, 0xe0, 0x48, 0x73, 0xe7, 0xa1, 0xdb, 0x4d, + 0x39, 0xb1, 0x00, 0x01, 0xf9, 0xa9, 0x20, 0xa7, 0xef, 0xfd, 0x11, 0xa4, 0x89, 0x5b, 0xab, + 0x48, 0xb2, 0xce, 0xba, 0xf9, 0x4e, 0xdc, 0x4c, 0x70, 0x16, 0xc0, 0xd8, 0x72, 0x31, 0x33, + 0x35, 0xa8, 0x9b, 0x5c, 0xe9, 0x5d, 0x04, 0x61, 0x1c, 0x56, 0xad, 0x0f, 0xcc, 0x80, 0x1c, + 0x12, 0x0f, 0xee, 0xb0, 0x60, 0x03, 0xb5, 0x7a, 0x02, 0x24, 0xa2, 0x12, 0xf6, 0xc5, 0x0f, + 0x63, 0x11, 0x70, 0xe2, 0xdf, 0xa7, 0xd8, 0x2d, 0x52, 0x52, 0x67, 0x08, 0x94, 0xe6, 0x4c, + 0x53, 0x89, 0xea, 0xbf, 0x77, 0x0d, 0xda, 0xe9, 0x40, 0x21, 0xf5, 0xbf, 0x91, 0x13, 0xcb, + 0x81, 0xe0, 0x43, 0xa5, 0x7d, 0xb7, 0xf2, 0x96, 0xe5, 0xa9, 0x47, 0x58, 0x55, 0x9f, 0xc5, + 0x2e, 0x66, 0xf0, 0x79, 0x39, 0xdb, 0x07, 0xd2, 0x8e, 0x23, 0x16, 0xc2, 0x16, 0x09, 0x50, + 0x36, 0x7f, 0xdc, 0x85, 0x27, 0x2d, 0xb1, 0xe2, 0x90, 0x59, 0x64, 0x7e, 0x7a, 0xe9, 0x8d, + 0x4c, 0xd6, 0x1e, 0x06, 0x0b, 0x9d, 0x4e, 0x3a, 0x90, 0xc5, 0xcd, 0x00, 0xb2, 0xd0, 0xea, + 0xa0, 0xc4, 0x14, 0xb3, 0x4c, 0xd8, 0xa8, 0x24, 0xe3, 0x5c, 0xa3, 0xf4, 0x81, 0xba, 0xf2, + 0x74, 0xf6, 0xf7, 0xf6, 0xde, 0xae, 0x79, 0x5a, 0xa9, 0x6b, 0x34, 0x2d, 0xdf, 0x8d, 0xcc, + 0x89, 0xf9, 0xd7, 0x6d, 0x18, 0xc5, 0xf6, 0x81, 0xa1, 0x21, 0xfa, 0xe3, 0x21, 0x80, 0x17, + 0xb3, 0x20, 0x2e, 0x17, 0x9a, 0x0b, 0xd3, 0xcf, 0x35, 0xa3, 0x64, 0x10, 0xd5, 0xda, 0x8a, + 0xcb, 0xbb, 0x4c, 0x55, 0x3a, 0x5c, 0x10, 0xa4, 0xbc, 0x35, 0xce, 0xb3, 0x9f, 0x46, 0xeb, + 0xbf, 0x59, 0x1a, 0x0c, 0xad, 0xfd, 0x11, 0xcf, 0x3f, 0xf5, 0xa9, 0x24, 0xe9, 0x0f, 0xf7, + 0xc2, 0xf2, 0xfa, 0xad, 0x4a, 0xf9, 0x54, 0x8b, 0x0a, 0x4e, 0x99, 0x73, 0x5d, 0x8e, 0x77, + 0xef, 0x56, 0x9e, 0xcf, 0x46, 0x79, 0xe8, 0xb7, 0x40, 0xa6, 0x20, 0x24, 0x2c, 0xe5, 0xe0, + 0x77, 0x7c, 0xfd, 0x6a, 0x07, 0x24, 0x90, 0xcb, 0x8b, 0xc3, 0x13, 0x41, 0x89, 0xdb, 0x24, + 0x6d, 0x31, 0x6b, 0xd5, 0x17, 0xa9, 0xee, 0xe8, 0x80, 0xeb, 0x70, 0x7e, 0xb2, 0x73, 0xbf, + 0xa5, 0x4d, 0xe3, 0x22, 0x17, 0xd9, 0x15, 0x5b, 0xb2, 0xbd, 0xe9, 0x29, 0x3a, 0x0d, 0x50, + 0x6b, 0xf3, 0xba, 0x30, 0xd0, 0x34, 0x1c, 0x69, 0xd2, 0x02, 0x56, 0x02, 0x35, 0x1d, 0xa0, + 0x84, 0xf9, 0xee, 0xe0, 0x24, 0x50, 0xc4, 0x73, 0x40, 0x2e, 0x70, 0x13, 0x89, 0xc7, 0x1d, + 0x5f, 0x00, 0x82, 0x1b, 0x91, 0x2e, 0x40, 0x4c, 0x33, 0x9e, 0x38, 0xb2, 0xbd, 0xf3, 0x64, + 0x30, 0x51, 0xc2, 0x19, 0x45, 0xf0, 0x38, 0xc3, 0x99, 0x2c, 0x8f, 0x4f, 0xbc, 0xba, 0xf8, + 0x71, 0x13, 0xe2, 0x62, 0xdd, 0x02, 0x95, 0x3d, 0x23, 0x51, 0x12, 0xad, 0x22, 0x53, 0x72, + 0x1c, 0xf8, 0x6a, 0xf4, 0x49, 0xcd, 0x58, 0xf7, 0x91, 0xef, 0xec, 0x37, 0x4a, 0x23, 0xd8, + 0x41, 0xbd, 0xcf, 0x1f, 0xd1, 0x0a, 0x8d, 0x66, 0xd4, 0x49, 0x84, 0x38, 0xbb, 0xa8, 0x3f, + 0xdb, 0x28, 0x28, 0x7a, 0xeb, 0x77, 0xa2, 0xbb, 0x17, 0x9b, 0x8d, 0x4e, 0x1f, 0xde, 0xf9, + 0x43, 0x2d, 0x69, 0x92, 0x3e, 0x29, 0x4c, 0xfa, 0xe9, 0x6f, 0x20, 0x49, 0x51, 0xa0, 0x3b, + 0x41, 0x77, 0xe6, 0x0d, 0x48, 0x58, 0x94, 0x04, 0xd9, 0x1c, 0x78, 0x26, 0x8b, 0x31, 0x3f, + 0xf7, 0xb7, 0x43, 0x26, 0x47, 0x81, 0x2d, 0x12, 0x6a, 0xb2, 0xbb, 0x6c, 0xdc, 0xfe, 0xd8, + 0xa8, 0x0e, 0x1f, 0x36, 0x17, 0x1e, 0x98, 0xcb, 0x3f, 0xf3, 0x28, 0x80, 0x3e, 0xa7, 0x39, + 0x02, 0x41, 0xdf, 0x69, 0xd4, 0x8c, 0xf1, 0xd3, 0x57, 0x08, 0x64, 0xcc, 0xda, 0xac, 0x9e, + 0x19, 0xd6, 0xde, 0x81, 0xdc, 0x3e, 0xd3, 0x0d, 0xe8, 0x00, 0xa3, 0xd4, 0x13, 0x02, 0x66, + 0x9d, 0x1c, 0xe2, 0x54, 0x43, 0xa5, 0x4f, 0x64, 0x2a, 0xdd, 0x16, 0x06, 0xfe, 0x07, 0x54, + 0xae, 0xb4, 0x1b, 0x5e, 0x7c, 0x22, 0x76, 0x46, 0x51, 0x40, 0xbd, 0x77, 0x52, 0x11, 0x7c, + 0x08, 0x9e, 0x5b, 0xd8, 0x6b, 0x71, 0x7c, 0x30, 0x68, 0x92, 0x1b, 0x25, 0x24, 0x38, 0x95, + 0xa2, 0x16, 0xae, 0xa3, 0xa5, 0xa0, 0xd9, 0x93, 0xe1, 0x85, 0x3b, 0x0b, 0x77, 0x7d, 0x6b, + 0xb7, 0x20, 0x49, 0x1d, 0x67, 0x11, 0x8d, 0x4c, 0x21, 0xad, 0x82, 0x65, 0xbe, 0xe7, 0xef, + 0x38, 0x80, 0x45, 0x1a, 0x7b, 0xb0, 0x35, 0x86, 0x99, 0x9c, 0x52, 0x9a, 0x32, 0x27, 0x1b, + 0x65, 0xf1, 0x33, 0xe6, 0xd2, 0x20, 0x6a, 0xa9, 0xb5, 0x36, 0x6a, 0x6a, 0xeb, 0x5f, 0xc1, + 0x15, 0xab, 0x32, 0x86, 0x18, 0x60, 0x46, 0xe3, 0xfd, 0x2b, 0xbd, 0xbf, 0x13, 0x86, 0x32, + 0xf6, 0xf2, 0xf6, 0x4b, 0x33, 0x07, 0x54, 0x11, 0xaf, 0xf0, 0x00, 0xc2, 0x79, 0xcc, 0x51, + 0xb2, 0x28, 0x36, 0x31, 0x27, 0x12, 0x31, 0x77, 0xee, 0x21, 0xc3, 0xdb, 0xc6, 0x62, 0xb5, + 0x0a, 0xb4, 0x68, 0xa8, 0x40, 0xe4, 0x15, 0x22, 0x45, 0x84, 0x21, 0xd9, 0x81, 0xca, 0x5b, + 0x7c, 0xad, 0xda, 0x7f, 0x85, 0x0f, 0x0a, 0xe5, 0x01, 0x8c, 0x07, 0x96, 0x26, 0x62, 0x6e, + 0x58, 0x7f, 0x6a, 0x45, 0x30, 0x0f, 0x76, 0xbc, 0xf8, 0x9b, 0x07, 0x29, 0x04, 0x32, 0xd2, + 0xe5, 0x4d, 0x10, 0x8f, 0x50, 0x8e, 0x74, 0x0e, 0x3f, 0x57, 0x8d, 0x99, 0x00, 0xc2, 0x08, + 0x2d, 0x66, 0xf8, 0x14, 0x21, 0x32, 0x28, 0x4d, 0x1b, 0x1c, 0xd8, 0x4a, 0xdd, 0xe8, 0x3a, + 0x29, 0xd7, 0x64, 0x41, 0x5a, 0x57, 0xf0, 0x22, 0xd2, 0x9d, 0x2e, 0x4c, 0xcf, 0x8f, 0xaa, + 0x69, 0x76, 0x59, 0x49, 0x50, 0xd5, 0x94, 0x5f, 0x6b, 0xb4, 0xbd, 0x64, 0xb2, 0x07, 0x3e, + 0x1a, 0x62, 0x46, 0x60, 0xb4, 0xf4, 0x23, 0x7d, 0x56, 0xf5, 0xb9, 0x7b, 0x05, 0x16, 0xff, + 0xdf, 0x8a, 0x5f, 0xfa, 0x36, 0x79, 0xc0, 0xe7, 0x21, 0x85, 0x6e, 0x03, 0x92, 0x26, 0x61, + 0xed, 0x22, 0xec, 0x81, 0xc5, 0xb7, 0xbe, 0xc4, 0x8a, 0x1b, 0x22, 0x90, 0xc6, 0xee, 0x27, + 0xf2, 0x50, 0x32, 0x87, 0x0f, 0xae, 0x8f, 0x6c, 0x04, 0x85, 0x55, 0x44, 0x94, 0x5e, 0x1c, + 0x59, 0x29, 0x55, 0x09, 0xfd, 0x63, 0x98, 0x39, 0x21, 0xe7, 0x31, 0x4f, 0xbe, 0x6f, 0xdd, + 0xcf, 0x12, 0x32, 0x0d, 0x8c, 0xfd, 0x78, 0xbb, 0x4c, 0x31, 0xb7, 0x45, 0x59, 0xda, 0x15, + 0x93, 0xb3, 0x0c, 0xa5, 0xb8, 0x58, 0x97, 0xa3, 0x87, 0x40, 0xa2, 0xbb, 0x61, 0xfa, 0x54, + 0x4c, 0x3a, 0xdf, 0x13, 0x02, 0x0f, 0xb6, 0x99, 0x7f, 0x6e, 0x3d, 0x10, 0xb7, 0x13, 0x27, + 0x4a, 0xdd, 0x3d, 0x9b, 0x2a, 0x7d, 0x9a, 0x31, 0x57, 0x62, 0x76, 0xc9, 0x9a, 0xa0, 0xbe, + 0x9e, 0xbf, 0xda, 0x9d, 0x9a, 0x12, 0x5b, 0x60, 0xd5, 0x5f, 0x7d, 0x4f, 0x97, 0xae, 0x64, + 0x73, 0xa7, 0x51, 0xcb, 0x6e, 0xf9, 0xaf, 0x4b, 0x9b, 0x0b, 0xd9, 0xef, 0xb5, 0xae, 0xe3, + 0xf1, 0x22, 0x14, 0xc5, 0xbe, 0xcf, 0xa7, 0x3e, 0x9c, 0xa2, 0x38, 0x13, 0xd7, 0xba, 0xa7, + 0xa7, 0x8b, 0xeb, 0x00, 0x8c, 0x81, 0xbf, 0x29, 0x69, 0x74, 0x7f, 0x9a, 0x43, 0xee, 0xc6, + 0x02, 0x66, 0x3c, 0x60, 0x31, 0xc0, 0xe3, 0x29, 0xa3, 0x12, 0x61, 0xa2, 0x16, 0x76, 0x1f, + 0x50, 0x80, 0x29, 0x7d, 0xa5, 0x4b, 0x56, 0x24, 0x0e, 0x17, 0x52, 0xe4, 0x82, 0x06, 0xdc, + 0x31, 0xb1, 0x95, 0x8f, 0xe6, 0xce, 0x97, 0x0e, 0x1d, 0x17, 0xc9, 0x04, 0x39, 0x24, 0x54, + 0x97, 0xaa, 0x1a, 0x29, 0x6e, 0x41, 0x9c, 0x56, 0x91, 0x39, 0x13, 0xf2, 0x1b, 0xb3, 0xb5, + 0x2e, 0x7d, 0x27, 0x51, 0xda, 0x42, 0x2c, 0xe3, 0x58, 0x86, 0xa7, 0xdb, 0xbf, 0x14, 0xc4, + 0x2c, 0x8c, 0x84, 0xcf, 0xd8, 0x07, 0x0f, 0xac, 0x15, 0xec, 0x66, 0x1b, 0x1e, 0x5a, 0xe9, + 0x15, 0xb8, 0x71, 0x63, 0x81, 0x4d, 0xf5, 0x9e, 0x94, 0x5a, 0xb3, 0x12, 0x0d, 0x46, 0x8a, + 0x2b, 0x49, 0x85, 0xc1, 0xcb, 0xac, 0xa0, 0x3e, 0x80, 0x83, 0x98, 0xde, 0x2e, 0x5a, 0x41, + 0x8e, 0x3d, 0xf0, 0xda, 0xdd, 0x09, 0x8a, 0xea, 0x21, 0xcc, 0x3e, 0x9e, 0x3d, 0x0d, 0x4d, + 0x01, 0xef, 0x36, 0xaf, 0xe0, 0x4e, 0x1a, 0xef, 0x97, 0xb7, 0xa0, 0xaf, 0x14, 0xd3, 0x4e, + 0xe0, 0x92, 0x22, 0xc4, 0x3e, 0xa4, 0xd4, 0x5b, 0xd1, 0x22, 0xe8, 0x71, 0xd8, 0xf8, 0xfe, + 0xfc, 0xde, 0xe0, 0xb6, 0x2c, 0x07, 0xb5, 0xef, 0xa2, 0xf9, 0x52, 0x21, 0xc8, 0x13, 0x11, + 0x8b, 0x19, 0x04, 0xca, 0x07, 0xce, 0x41, 0xb8, 0xc5, 0xf3, 0x95, 0xa7, 0xaa, 0x1a, 0x0d, + 0xf4, 0x45, 0x1b, 0xf4, 0x8e, 0xce, 0x11, 0x8a, 0x31, 0xf2, 0xaa, 0xeb, 0x20, 0xb7, 0x32, + 0x3f, 0x16, 0x7e, 0x3a, 0xce, 0xb5, 0xb5, 0xfd, 0x3e, 0xba, 0x84, 0x55, 0xbd, 0x27, 0xbe, + 0xa1, 0x17, 0xfa, 0xa2, 0x53, 0x1b, 0x12, 0x63, 0x18, 0x85, 0x5e, 0x84, 0x00, 0xbe, 0x96, + 0xfb, 0x7e, 0x38, 0x70, 0xfa, 0x73, 0xef, 0xb4, 0xe2, 0x0b, 0x9a, 0x9c, 0x2f, 0x18, 0xec, + 0x3a, 0x0f, 0xde, 0xf0, 0x54, 0x92, 0xba, 0xc1, 0x18, 0x4b, 0x28, 0x7d, 0xe0, 0x31, 0x72, + 0x90, 0xa5, 0x1b, 0x80, 0x56, 0xc7, 0x5b, 0xac, 0x11, 0xe0, 0x02, 0x01, 0x90, 0x15, 0xfc, + 0x17, 0xcb, 0xed, 0x31, 0x14, 0xc3, 0xb4, 0xf5, 0x40, 0x8c, 0xf7, 0x3f, 0x0e, 0x4e, 0x36, + 0x6f, 0x30, 0xef, 0x00, 0xcd, 0x49, 0x25, 0x32, 0x14, 0xfb, 0x8c, 0xdb, 0xc4, 0x73, 0x00, + 0x34, 0x9d, 0xd8, 0xa8, 0x8d, 0xaf, 0x32, 0x05, 0x40, 0xbc, 0xcd, 0x93, 0x7c, 0xf2, 0x0d, + 0x0a, 0xea, 0x1e, 0x04, 0xb7, 0x72, 0xf4, 0x77, 0x66, 0x89, 0x22, 0x5e, 0x40, 0x31, 0x4d, + 0xf8, 0xdc, 0x74, 0x50, 0xcb, 0xec, 0x1c, 0xf7, 0xd3, 0xf0, 0x1a, 0xfb, 0x18, 0xc3, 0x17, + 0x86, 0x1c, 0x11, 0xa4, 0xa1, 0xce, 0xba, 0x9e, 0x61, 0x0c, 0x42, 0xd0, 0x5b, 0x0d, 0x8a, + 0x7c, 0xee, 0x71, 0xbd, 0x63, 0x95, 0xaf, 0x38, 0x3e, 0xfa, 0xc9, 0xc3, 0x87, 0x2f, 0x3f, + 0x3e, 0xe4, 0x22, 0x32, 0xe7, 0x48, 0x30, 0xb3, 0xe6, 0x99, 0x41, 0x0b, 0x62, 0x19, 0x38, + 0xa8, 0x1e, 0x97, 0xc5, 0x4c, 0x41, 0xef, 0xab, 0x92, 0x5a, 0x7f, 0xa4, 0x58, 0xac, 0x7b, + 0x8c, 0xa4, 0xe2, 0xe3, 0x91, 0x0f, 0x45, 0x13, 0x70, 0x2f, 0x07, 0x91, 0x3d, 0xee, 0x61, + 0x5d, 0xc9, 0xaf, 0x71, 0x01, 0x1f, 0x5a, 0x8b, 0xf2, 0xa9, 0xeb, 0x44, 0x7a, 0x22, 0x79, + 0xe6, 0x2b, 0x77, 0xb9, 0x2e, 0x91, 0x8e, 0x00, 0x9f, 0xe7, 0x1e, 0x6d, 0xea, 0xe7, 0x73, + 0x24, 0x12, 0x70, 0xcf, 0xb8, 0xba, 0xc3, 0x8d, 0x53, 0xa7, 0x24, 0x8b, 0x8a, 0xa2, 0xea, + 0x65, 0x8e, 0xe4, 0x31, 0xdf, 0x27, 0xee, 0x7d, 0x3a, 0x3f, 0xcf, 0x0e, 0x5d, 0x6e, 0x6d, + 0x65, 0x2c, 0x28, 0xcc, 0x9d, 0x04, 0x17, 0xac, 0xcb, 0x81, 0x04, 0x44, 0xfd, 0xb2, 0xb2, + 0xc6, 0x8d, 0xa3, 0x3b, 0x56, 0x24, 0xbf, 0xd5, 0x2f, 0xb0, 0x91, 0x1b, 0x1f, 0x79, 0x57, + 0x9d, 0x8d, 0x9b, 0x5d, 0x0f, 0x4c, 0x6c, 0x22, 0xf6, 0x0c, 0x6c, 0x5a, 0xf6, 0x56, 0xbf, + 0xa6, 0x6b, 0x29, 0x78, 0x7e, 0x87, 0x89, 0xfc, 0xf3, 0xc3, 0x9b, 0x43, 0x96, 0x2c, 0x9f, + 0x43, 0x1f, 0x6d, 0xae, 0xe9, 0x99, 0xfe, 0x0d, 0x6e, 0xb7, 0x3f, 0xe8, 0x74, 0x33, 0x2b, + 0x56, 0x60, 0xee, 0xee, 0xab, 0x2c, 0x34, 0xed, 0x46, 0x5a, 0x99, 0xd9, 0x3c, 0x28, 0xf2, + 0x0d, 0x43, 0x20, 0xf3, 0xd7, 0xa6, 0x54, 0xc2, 0x1c, 0x8d, 0x21, 0xcd, 0x70, 0x54, 0x3e, + 0xa8, 0x32, 0x3e, 0xf5, 0x70, 0x10, 0x47, 0x37, 0x84, 0x67, 0x62, 0x2c, 0xd2, 0xc6, 0x5a, + 0x60, 0x58, 0x32, 0x8d, 0x66, 0x14, 0x32, 0xd0, 0xa5, 0x13, 0x3a, 0xfd, 0xe0, 0x07, 0x83, + 0x5a, 0xce, 0xd0, 0x61, 0xaf, 0x89, 0x42, 0xe0, 0x89, 0x5d, 0xd2, 0x77, 0x61, 0x44, 0xac, + 0xbe, 0x34, 0x44, 0x6f, 0x3a, 0x7b, 0x06, 0xd1, 0x96, 0x35, 0xcf, 0xbf, 0xbd, 0x06, 0x7b, + 0xa7, 0x95, 0x58, 0xb7, 0x19, 0x3d, 0x80, 0xc2, 0xf7, 0x0f, 0xef, 0x43, 0xda, 0x60, 0x62, + 0x5f, 0xe4, 0xb0, 0x07, 0xba, 0x16, 0x23, 0xb7, 0x59, 0x8a, 0x90, 0xc7, 0xf9, 0xa1, 0x8d, + 0xa4, 0x33, 0x80, 0x03, 0xc0, 0xf3, 0x3a, 0x84, 0xca, 0xcd, 0xcc, 0x75, 0x7a, 0xb8, 0xf9, + 0xfc, 0xb9, 0x88, 0x5c, 0x67, 0xd3, 0xb1, 0xd7, 0x33, 0x56, 0xe7, 0x1f, 0x87, 0x1c, 0x7e, + 0x07, 0x64, 0x73, 0xc3, 0x78, 0x90, 0xc0, 0x30, 0x15, 0xdf, 0x76, 0x74, 0xc0, 0xe9, 0x80, + 0x81, 0x61, 0x4f, 0xea, 0xdb, 0x88, 0x77, 0x10, 0x20, 0x97, 0x22, 0xea, 0xa6, 0x94, 0x51, + 0x88, 0xe8, 0xf4, 0x73, 0x58, 0x22, 0x7d, 0x63, 0x8c, 0x24, 0xdf, 0xfd, 0x9f, 0x40, 0xa3, + 0xf7, 0xfe, 0xbb, 0x64, 0xcd, 0x62, 0x60, 0x9d, 0x32, 0x7a, 0x88, 0xad, 0x1b, 0x05, 0xa3, + 0xd2, 0x14, 0x10, 0x06, 0x6e, 0x4c, 0x87, 0x9c, 0x33, 0x7d, 0xd7, 0x0d, 0xa8, 0x46, 0xb8, + 0x79, 0x9f, 0x77, 0xef, 0xa9, 0xbc, 0x38, 0x98, 0xc7, 0x91, 0xe8, 0xf2, 0xe8, 0x63, 0x14, + 0x7e, 0xe5, 0x19, 0x20, 0x2e, 0x5a, 0x9a, 0xa6, 0x6a, 0xbb, 0xa1, 0x61, 0x59, 0x5b, 0x5c, + 0x02, 0x56, 0x96, 0x2f, 0xd3, 0xcc, 0x1a, 0x94, 0xf4, 0xd8, 0x11, 0x80, 0x0f, 0xa8, 0x12, + 0xb7, 0x37, 0x80, 0x0e, 0x7f, 0xef, 0xca, 0x28, 0xd1, 0x55, 0x3d, 0x10, 0x96, 0xe7, 0x25, + 0x27, 0xf5, 0x9f, 0x63, 0x81, 0xa9, 0xea, 0xff, 0x01, 0x7f, 0x21, 0x6f, 0x5b, 0x34, 0x27, + 0xe9, 0x63, 0x70, 0x0a, 0x8e, 0x5d, 0xee, 0xe2, 0xbb, 0x5c, 0xb1, 0x25, 0x59, 0xf8, 0xb1, + 0xc5, 0x83, 0xf2, 0x55, 0xf6, 0xad, 0x0c, 0xfc, 0x38, 0x86, 0xca, 0xfd, 0x64, 0x34, 0x9d, + 0x36, 0x75, 0xf4, 0xcd, 0x26, 0x29, 0x73, 0x73, 0x67, 0xc6, 0xcf, 0xc7, 0x8a, 0xd0, 0x9d, + 0xb6, 0x6f, 0x69, 0x79, 0x17, 0x07, 0xb1, 0xe3, 0xd9, 0x94, 0x33, 0x47, 0xf7, 0xc7, 0x00, + 0x09, 0x44, 0x01, 0xe6, 0x57, 0xf0, 0x35, 0x03, 0x67, 0xa0, 0x59, 0x60, 0xff, 0x2a, 0x92, + 0x1f, 0xd5, 0x33, 0xf5, 0xcb, 0xc9, 0xbd, 0xbe, 0x96, 0x76, 0xa8, 0x0f, 0x18, 0x77, 0xdd, + 0x80, 0x3a, 0xf4, 0x7a, 0xb7, 0xf9, 0x5e, 0x63, 0xb7, 0x30, 0x97, 0xe3, 0x37, 0x9f, 0xb0, + 0xa1, 0xa6, 0x76, 0x38, 0x37, 0xae, 0xca, 0x13, 0x5d, 0xb7, 0xb2, 0x9d, 0xfe, 0xad, 0x96, + 0xc5, 0x72, 0x04, 0xfa, 0x0c, 0x4e, 0x65, 0x77, 0x19, 0x48, 0x01, 0x1f, 0xc2, 0x18, 0x80, + 0xd6, 0xea, 0xfb, 0x99, 0xc0, 0x7b, 0xc4, 0xce, 0x13, 0x13, 0x27, 0x98, 0x22, 0x11, 0xe6, + 0xc8, 0x8b, 0x69, 0x9d, 0xa2, 0xac, 0x23, 0xe2, 0x2a, 0x8a, 0x2f, 0x83, 0x73, 0x0c, 0x7b, + 0x85, 0x4d, 0xdf, 0xe3, 0x4b, 0x53, 0xdf, 0x2e, 0x86, 0xab, 0x5b, 0xde, 0xf5, 0x99, 0x59, + 0xbf, 0xe9, 0x66, 0x29, 0xc8, 0xf4, 0xb2, 0x03, 0x31, 0x2d, 0x55, 0xfb, 0xdc, 0x3d, 0x86, + 0x37, 0xf2, 0x58, 0x71, 0xb2, 0x59, 0xf0, 0x62, 0xf2, 0x62, 0xbe, 0x70, 0x9f, 0xa6, 0x3e, + 0xa5, 0x77, 0xe8, 0xf1, 0xdd, 0x97, 0x7e, 0x49, 0x8b, 0x3d, 0xb1, 0xf2, 0x54, 0x16, 0x39, + 0x0d, 0x59, 0x3f, 0x6b, 0x39, 0x94, 0x5d, 0x96, 0x4c, 0xdf, 0x60, 0xf5, 0x5b, 0xf8, 0x50, + 0xd5, 0xbe, 0xa3, 0x1c, 0x4c, 0x54, 0x3b, 0xeb, 0xfc, 0x3f, 0x49, 0x3c, 0xa8, 0x08, 0x01, + 0x80, 0xeb, 0x6a, 0x84, 0x10, 0xbd, 0x3e, 0xf1, 0x27, 0xd2, 0x50, 0xa1, 0x94, 0x91, 0xd2, + 0x3d, 0x49, 0x09, 0xcb, 0xf1, 0xf2, 0xa3, 0xda, 0xe2, 0xb2, 0x75, 0x3a, 0x08, 0x22, 0xc4, + 0x0a, 0xe7, 0x66, 0xa7, 0xbf, 0xb5, 0x2c, 0x1a, 0x87, 0x18, 0x3e, 0xa3, 0xc5, 0x12, 0xe2, + 0xbd, 0xc8, 0x99, 0x19, 0x17, 0x23, 0x64, 0x6e, 0x5a, 0x64, 0x18, 0x34, 0x39, 0xb6, 0xe1, + 0x96, 0xb5, 0xcf, 0xd1, 0xf7, 0x9d, 0xec, 0x72, 0x13, 0x95, 0x7f, 0x50, 0xb9, 0x0b, 0xed, + 0x65, 0xba, 0xff, 0x28, 0x85, 0xc9, 0xab, 0xbc, 0xda, 0x63, 0xdc, 0x8a, 0x5a, 0xe6, 0x77, + 0xbc, 0x2c, 0x22, 0x7d, 0xd2, 0x00, 0xba, 0x18, 0xf8, 0x1c, 0x3b, 0xfb, 0xc3, 0xe4, 0x6f, + 0xb3, 0xdd, 0x77, 0x59, 0x95, 0x05, 0x57, 0x27, 0xd3, 0x1f, 0x33, 0x72, 0x49, 0xc4, 0xcf, + 0xbd, 0x05, 0x52, 0x65, 0xf3, 0xee, 0x3c, 0x27, 0x7e, 0xdd, 0x19, 0xf9, 0x1a, 0x5c, 0xc7, + 0xe8, 0x76, 0xf2, 0x70, 0x4e, 0x45, 0x11, 0x2c, 0x9e, 0x1e, 0x60, 0x4c, 0x23, 0xc4, 0x61, + 0x54, 0x86, 0x2a, 0xf4, 0xdc, 0xb2, 0x56, 0x68, 0x02, 0x59, 0x7b, 0xd8, 0x3d, 0x94, 0x37, + 0x2d, 0xdd, 0x20, 0x89, 0xaa, 0x90, 0x89, 0x9d, 0x6c, 0x81, 0x06, 0x41, 0x39, 0xd7, 0x7c, + 0x32, 0x99, 0xca, 0xb7, 0xd5, 0xa4, 0x19, 0xa3, 0xc3, 0x5e, 0xdd, 0x07, 0xe5, 0xde, 0x54, + 0xe3, 0x38, 0xb6, 0x76, 0x61, 0xc5, 0xd3, 0x64, 0xb7, 0x91, 0xe6, 0x8e, 0x8d, 0x6c, 0x7d, + 0xa6, 0x0f, 0xa8, 0x55, 0x8d, 0xd7, 0x58, 0xdd, 0x21, 0xac, 0xb8, 0xf0, 0x5e, 0x5f, 0x49, + 0x0b, 0xf0, 0xa1, 0x24, 0x13, 0xf2, 0xd9, 0x25, 0x25, 0x02, 0x09, 0xb7, 0xd2, 0x1a, 0x85, + 0xcc, 0x3e, 0x82, 0xf2, 0xf9, 0x5f, 0xee, 0xe7, 0x95, 0xa0, 0x34, 0xb8, 0x73, 0x86, 0xac, + 0x5e, 0xef, 0x55, 0x16, 0xb8, 0x1a, 0x49, 0x4a, 0xd6, 0x9e, 0x9b, 0x0c, 0x4b, 0xed, 0x6b, + 0x35, 0x12, 0x72, 0x53, 0x22, 0x2f, 0x91, 0xe4, 0x1f, 0x4c, 0x16, 0x2a, 0x7e, 0xb1, 0x0f, + 0x11, 0xe1, 0xcb, 0xd1, 0x11, 0xb4, 0x7a, 0x2b, 0xff, 0x1d, 0xc4, 0x57, 0x1e, 0xd7, 0x32, + 0x0c, 0x00, 0x32, 0x3f, 0x7c, 0xfb, 0x39, 0x7e, 0x30, 0x34, 0xc6, 0xe0, 0x64, 0x99, 0x2f, + 0x9e, 0x04, 0x30, 0x15, 0xb5, 0xef, 0x3c, 0x51, 0xa3, 0x0d, 0x44, 0x25, 0xe6, 0x7e, 0x97, + 0x70, 0x67, 0x06, 0xa1, 0xb6, 0x9e, 0xe3, 0xa4, 0xd2, 0x2b, 0x81, 0xb4, 0x24, 0x39, 0x1a, + 0x4a, 0x0c, 0xc8, 0x85, 0xaf, 0x15, 0x25, 0x64, 0x1d, 0x0b, 0xf4, 0x0d, 0x96, 0xb6, 0x50, + 0xd1, 0xe5, 0x01, 0x7e, 0x73, 0x59, 0xd3, 0x69, 0xc8, 0x8e, 0x48, 0x9b, 0xe2, 0xc6, 0x10, + 0x06, 0x6e, 0x25, 0xf9, 0x7b, 0x36, 0x4a, 0x56, 0xa2, 0x0a, 0xed, 0xd7, 0xe1, 0x1a, 0x58, + 0x30, 0x43, 0x4c, 0x3e, 0x38, 0x22, 0xdc, 0x66, 0xb1, 0xf6, 0x28, 0x84, 0xb2, 0xd6, 0x68, + 0x52, 0x9b, 0xee, 0xf3, 0x8d, 0xef, 0xdf, 0xe8, 0xd4, 0x99, 0xe0, 0x03, 0x51, 0x67, 0xa3, + 0x38, 0xf0, 0xff, 0x63, 0x3c, 0x4e, 0xf3, 0x8e, 0xb7, 0xcf, 0xb4, 0xbb, 0x37, 0x0a, 0xea, + 0xe5, 0x30, 0x58, 0x9a, 0xb0, 0xcb, 0x64, 0x2d, 0x7f, 0x04, 0xbf, 0xd3, 0xb8, 0xf2, 0x15, + 0xd1, 0x9e, 0x20, 0x6d, 0x7d, 0xd5, 0xfe, 0xc7, 0x87, 0xcc, 0xfe, 0xf1, 0x81, 0x74, 0x88, + 0x34, 0x6f, 0xba, 0x4d, 0xeb, 0x49, 0x72, 0xb2, 0x15, 0x37, 0x25, 0xab, 0xaa, 0xcd, 0x50, + 0x1a, 0xe1, 0x1e, 0xae, 0x18, 0x89, 0x56, 0x65, 0xba, 0x6b, 0x7a, 0x55, 0x07, 0x13, 0xfa, + 0xd3, 0x11, 0x51, 0x55, 0x3f, 0x30, 0x5b, 0x2a, 0x9e, 0x5a, 0x0c, 0x13, 0x21, 0x8d, 0x54, + 0x22, 0xe5, 0x6c, 0xbd, 0x96, 0x06, 0x22, 0xa5, 0x5e, 0x7a, 0xb2, 0x1f, 0x43, 0x4b, 0x4f, + 0xc5, 0x10, 0x0a, 0x7d, 0x08, 0xef, 0xed, 0xd8, 0xb5, 0x00, 0xc4, 0x03, 0x87, 0x11, 0xae, + 0x01, 0x63, 0x0c, 0x76, 0x11, 0x03, 0x25, 0x26, 0x18, 0x19, 0x39, 0x19, 0x52, 0x32, 0xaa, + 0x06, 0xe1, 0x88, 0xad, 0x09, 0x36, 0x15, 0xd8, 0xbf, 0xa9, 0xdb, 0x76, 0x71, 0x44, 0x23, + 0x0e, 0x20, 0xa2, 0x39, 0x01, 0x06, 0xd0, 0xd1, 0xa1, 0x71, 0x26, 0xf8, 0x90, 0x8e, 0x22, + 0xef, 0xb7, 0x02, 0x59, 0x60, 0x26, 0x17, 0xf8, 0xee, 0x0b, 0xe1, 0x2f, 0xbd, 0x29, 0x84, + 0xa5, 0xf5, 0x2f, 0xaf, 0x2f, 0x34, 0x00, 0x92, 0x53, 0x99, 0xd1, 0xb8, 0x20, 0x08, 0xec, + 0xda, 0xae, 0x1c, 0x3e, 0xa7, 0x36, 0xe1, 0xd2, 0x28, 0xee, 0x6e, 0x94, 0x5a, 0x80, 0x02, + 0xac, 0x71, 0xcb, 0x6a, 0xab, 0x34, 0x15, 0xb0, 0x59, 0x41, 0xe8, 0xe8, 0x84, 0x43, 0x0f, + 0xca, 0xa8, 0xdf, 0xd3, 0x7c, 0x3d, 0xcc, 0x81, 0xb8, 0x94, 0x5f, 0x86, 0xcd, 0x52, 0x4a, + 0xe2, 0x36, 0x1b, 0xa1, 0x98, 0xdf, 0x3c, 0x75, 0x5b, 0x12, 0x37, 0x84, 0xc0, 0xf3, 0xbf, + 0xf2, 0x31, 0x9a, 0x64, 0xff, 0xfc, 0xf3, 0x2c, 0x1a, 0x4c, 0x11, 0x6a, 0x43, 0x48, 0xb5, + 0x4b, 0x3d, 0xac, 0x6c, 0xa3, 0x8e, 0xdb, 0x1d, 0xa4, 0x2c, 0x42, 0x06, 0x31, 0xa7, 0x51, + 0xcb, 0xe2, 0x88, 0xaa, 0x9d, 0xd7, 0xc2, 0x08, 0x73, 0xbc, 0x58, 0x0e, 0x79, 0x4a, 0x75, + 0x9b, 0x9c, 0xe4, 0xbf, 0x36, 0x85, 0x49, 0x03, 0xf6, 0x91, 0x43, 0x21, 0xb0, 0xc2, 0xc3, + 0x11, 0x2c, 0x68, 0x30, 0x4b, 0x10, 0xdf, 0x17, 0xf4, 0xb8, 0x1d, 0x17, 0x25, 0x5f, 0x17, + 0x2d, 0x96, 0x69, 0x8d, 0x7f, 0x98, 0xcc, 0xdc, 0x3a, 0xc8, 0x52, 0x0d, 0x8d, 0x6e, 0x06, + 0xce, 0x05, 0xca, 0xb3, 0xa7, 0xe2, 0x23, 0x1e, 0x46, 0xe5, 0xc9, 0xa0, 0x3e, 0x9e, 0xd3, + 0xa2, 0x95, 0x0d, 0x4a, 0x5b, 0xf8, 0x99, 0x54, 0xf0, 0xd6, 0x4e, 0x3a, 0x78, 0x4b, 0xf6, + 0x64, 0x58, 0x4d, 0x93, 0x6e, 0xed, 0x4c, 0xa4, 0xe3, 0x11, 0xf3, 0x85, 0x22, 0xd6, 0x05, + 0x95, 0x5d, 0x9b, 0x70, 0xfe, 0x61, 0x5c, 0xb9, 0x39, 0x0a, 0xd9, 0x33, 0x0f, 0x46, 0x0b, + 0x42, 0x8d, 0x39, 0x2b, 0xc4, 0x5e, 0x95, 0x68, 0x4f, 0x68, 0x00, 0x24, 0x31, 0xc9, 0x0a, + 0xe9, 0x38, 0x86, 0x21, 0x13, 0x10, 0xe7, 0x75, 0x48, 0x07, 0xb2, 0xa1, 0x26, 0x6a, 0xbd, + 0x45, 0x63, 0x09, 0xa4, 0x2e, 0xda, 0x9d, 0x76, 0xed, 0xbe, 0xd2, 0x7e, 0xee, 0x01, 0x89, + 0x1e, 0x12, 0x41, 0x4e, 0x54, 0xd2, 0xc8, 0x6a, 0xc1, 0xf4, 0xd4, 0xe1, 0x48, 0x3d, 0x85, + 0xc4, 0x64, 0xae, 0xa4, 0xeb, 0x83, 0x54, 0x9c, 0x6a, 0x6c, 0x4a, 0xb9, 0xf4, 0x42, 0x03, + 0x9b, 0xfe, 0x42, 0x5d, 0x14, 0x07, 0xdb, 0xae, 0xf4, 0x15, 0x11, 0x85, 0x17, 0xd9, 0x70, + 0x09, 0xa7, 0x19, 0x62, 0xef, 0x65, 0x5f, 0xec, 0x22, 0xfa, 0xcd, 0x3e, 0x55, 0x6f, 0x83, + 0xf8, 0x2e, 0x31, 0xbf, 0xcf, 0xd4, 0xa6, 0x35, 0x7f, 0xde, 0xdc, 0x09, 0xab, 0x2d, 0x13, + 0xd8, 0xfc, 0x94, 0x85, 0x3b, 0x04, 0x75, 0x5e, 0xcb, 0x7f, 0x06, 0xa9, 0xfd, 0xdf, 0xca, + 0xd1, 0x96, 0x32, 0xc4, 0x94, 0xe7, 0x46, 0x3f, 0x8c, 0xe4, 0xfd, 0x9f, 0xe0, 0xca, 0xaf, + 0x9e, 0xa2, 0xa9, 0x99, 0x22, 0xe1, 0x13, 0x6f, 0x30, 0x65, 0xdd, 0x8e, 0x0a, 0xc9, 0xef, + 0x25, 0x39, 0x58, 0x8a, 0x76, 0x0b, 0x9c, 0xcb, 0xea, 0x64, 0x7d, 0xda, 0x28, 0x0f, 0xac, + 0x68, 0x24, 0x60, 0x6b, 0x8b, 0x12, 0x78, 0xcc, 0x19, 0xe3, 0x87, 0x48, 0x50, 0x02, 0xb0, + 0x52, 0xdd, 0xb4, 0x47, 0xa0, 0xf8, 0x0d, 0xe0, 0x35, 0x3b, 0x17, 0xc4, 0xf1, 0x68, 0xe5, + 0x5d, 0x47, 0x68, 0xbc, 0x34, 0x7c, 0x4e, 0x98, 0xf0, 0x64, 0x28, 0xbb, 0x10, 0x3b, 0x3f, + 0xbf, 0x3d, 0x07, 0x23, 0xdc, 0x59, 0xa5, 0xdc, 0x91, 0xc1, 0x0b, 0x1a, 0xb8, 0x56, 0x93, + 0x58, 0x68, 0x14, 0xc4, 0x30, 0x27, 0x16, 0x4a, 0x3a, 0x64, 0x5e, 0xad, 0x75, 0xd5, 0x94, + 0x79, 0xe4, 0xf5, 0x88, 0x62, 0x9c, 0x3e, 0xac, 0xea, 0xb3, 0x0b, 0x2b, 0x1f, 0x07, 0x57, + 0xe9, 0xeb, 0x2e, 0x4c, 0x51, 0x83, 0x5c, 0xcf, 0x35, 0x68, 0x32, 0x61, 0x34, 0xf7, 0xe3, + 0x0f, 0xfb, 0x7b, 0x4e, 0x32, 0x79, 0x51, 0x95, 0x78, 0xdc, 0x00, 0x23, 0xa6, 0xfe, 0xb8, + 0x49, 0x01, 0x40, 0xd0, 0xd3, 0x66, 0x6d, 0xd9, 0xf0, 0x08, 0xa1, 0xa7, 0xa9, 0x79, 0x72, + 0x84, 0x57, 0x2e, 0xf9, 0x0d, 0x20, 0x26, 0xe5, 0x78, 0x60, 0xc1, 0x0f, 0xe0, 0x28, 0x8f, + 0xa7, 0x0d, 0xb7, 0x85, 0x53, 0x2a, 0x3f, 0x85, 0x1d, 0xdb, 0x3b, 0x50, 0x3a, 0x29, 0x38, + 0x9e, 0xd2, 0x80, 0x14, 0xee, 0xa1, 0x5a, 0x83, 0xe8, 0x0c, 0x6f, 0x63, 0xe2, 0x4a, 0x5a, + 0x84, 0x36, 0x84, 0x87, 0x19, 0x8f, 0x6c, 0xaf, 0x88, 0xd6, 0xc4, 0x67, 0x2e, 0xbf, 0x18, + 0x7f, 0x32, 0xe0, 0x53, 0x2b, 0x8c, 0x60, 0xdf, 0xee, 0xd7, 0x87, 0xb6, 0xe6, 0x62, 0xaa, + 0x43, 0x73, 0x92, 0x8c, 0xce, 0x98, 0x0a, 0x65, 0x5d, 0xd4, 0x1c, 0x31, 0x3c, 0x37, 0xdc, + 0x99, 0x1a, 0x4a, 0xa4, 0xc9, 0x86, 0xd1, 0xe8, 0x57, 0xcc, 0x07, 0x79, 0xa7, 0xe8, 0x21, + 0x09, 0x29, 0x17, 0x50, 0xe1, 0x51, 0x81, 0x04, 0xc0, 0x30, 0xcc, 0x90, 0x43, 0x0a, 0xf4, + 0x24, 0xbf, 0x22, 0x66, 0x5f, 0xd8, 0xe2, 0x20, 0x22, 0x69, 0x7d, 0x8e, 0xeb, 0x0b, 0xe2, + 0xea, 0x9b, 0x93, 0x94, 0xb7, 0xd2, 0x63, 0x2e, 0xe2, 0xa7, 0x25, 0x3e, 0x61, 0x02, 0x98, + 0xde, 0x66, 0x9c, 0xf1, 0xf3, 0x9c, 0xcb, 0xd9, 0x2c, 0x98, 0x03, 0x70, 0x74, 0x6c, 0xa0, + 0x97, 0xd5, 0x35, 0xcb, 0x9f, 0xf5, 0x57, 0x98, 0xbb, 0xc1, 0xdc, 0x34, 0x74, 0xff, 0xd8, + 0xea, 0x58, 0xa2, 0x43, 0x45, 0xd2, 0xa4, 0xe3, 0x78, 0x0f, 0x28, 0xf0, 0xee, 0x85, 0xf1, + 0xc9, 0x55, 0x52, 0x86, 0x6e, 0x29, 0xe1, 0x50, 0xbf, 0x7c, 0xb1, 0xff, 0x1a, 0x95, 0xa5, + 0xc5, 0xad, 0xf9, 0xd8, 0xba, 0x6e, 0xab, 0x43, 0x3f, 0xae, 0xa2, 0x97, 0xa1, 0x51, 0x0c, + 0x82, 0xae, 0x07, 0xc9, 0xda, 0xfe, 0xc9, 0x6a, 0x2d, 0xfa, 0x83, 0xaa, 0x53, 0xcd, 0x31, + 0x2f, 0x6d, 0x70, 0x40, 0x19, 0x37, 0xd4, 0xff, 0xc3, 0x32, 0xd6, 0x4b, 0x46, 0x23, 0x79, + 0xd9, 0x90, 0x0d, 0x70, 0x42, 0x03, 0x9b, 0x93, 0xe6, 0xc1, 0xdf, 0x02, 0x08, 0xf8, 0x72, + 0x45, 0xe9, 0x91, 0xc6, 0x7e, 0x29, 0x30, 0x56, 0xfe, 0x2e, 0x21, 0x1f, 0x34, 0xc3, 0x41, + 0x2f, 0x79, 0x47, 0xe0, 0x02, 0x9c, 0x53, 0xb3, 0x13, 0xf8, 0x5d, 0xb0, 0xd0, 0xe0, 0x0f, + 0x75, 0x8a, 0x26, 0xdf, 0x1f, 0xad, 0x22, 0xe9, 0xbd, 0x11, 0x81, 0x98, 0xb3, 0x58, 0x99, + 0x99, 0xd3, 0x19, 0x5f, 0x01, 0xa4, 0x5c, 0x6f, 0xa0, 0x9c, 0xb1, 0x5d, 0xfe, 0xfe, 0xbf, + 0x9e, 0x48, 0x44, 0xd0, 0x71, 0x24, 0x86, 0xe4, 0xaa, 0xd5, 0x59, 0x5a, 0xaa, 0x0f, 0xa5, + 0x11, 0xb4, 0xf4, 0x00, 0x43, 0x44, 0x59, 0xf1, 0x95, 0x62, 0x0e, 0x8f, 0x07, 0x51, 0xd3, + 0x66, 0x1a, 0x20, 0xb1, 0xab, 0x36, 0x3e, 0x10, 0x12, 0xae, 0xe0, 0xa2, 0x05, 0xe7, 0x7c, + 0xd5, 0x34, 0xcd, 0x86, 0x43, 0xb0, 0x29, 0xc3, 0xfc, 0xcb, 0x9b, 0x39, 0xf5, 0x1e, 0x2f, + 0x13, 0x1b, 0xfa, 0x4f, 0x68, 0xe3, 0x41, 0x99, 0x05, 0xfd, 0xa1, 0x10, 0x5a, 0x65, 0x13, + 0xc3, 0xc7, 0xc1, 0xc8, 0x83, 0xfa, 0x5e, 0x5b, 0xa6, 0x76, 0x03, 0xc3, 0x21, 0x23, 0x56, + 0xb4, 0x9a, 0x89, 0xdb, 0xa5, 0xa4, 0xb1, 0x9e, 0xe7, 0x85, 0xe6, 0x20, 0x11, 0x71, 0x59, + 0x81, 0x19, 0x9f, 0xef, 0xac, 0xd2, 0x6f, 0x5e, 0x26, 0x3f, 0x7d, 0x33, 0x08, 0xa3, 0x28, + 0x3f, 0x75, 0x6a, 0x25, 0xe7, 0xb3, 0x78, 0xe9, 0x46, 0x46, 0x4f, 0xb0, 0xab, 0x48, 0x03, + 0x8a, 0xca, 0xa7, 0x42, 0x57, 0x6b, 0xa5, 0x0f, 0x4e, 0x6f, 0xf1, 0x1b, 0x0d, 0x6b, 0xa9, + 0x8e, 0x21, 0xb7, 0x96, 0x22, 0xba, 0xc6, 0xac, 0xa4, 0xb8, 0x58, 0x07, 0xf1, 0x0c, 0x1a, + 0x5b, 0x0e, 0x42, 0x49, 0x10, 0xeb, 0x91, 0x2b, 0x2a, 0xdd, 0xef, 0x08, 0x32, 0x7e, 0x5d, + 0xaf, 0x32, 0x1b, 0x29, 0xa6, 0x17, 0x92, 0x46, 0x1a, 0x7b, 0x32, 0xcc, 0x5f, 0x9f, 0xd7, + 0xf4, 0x52, 0x68, 0x35, 0x47, 0x7a, 0xeb, 0xc1, 0x20, 0xf9, 0xe4, 0x6f, 0xa0, 0xc5, 0x0f, + 0x61, 0x82, 0xc0, 0xa0, 0xb5, 0xa3, 0x12, 0x5c, 0xa8, 0xbd, 0xa2, 0x9a, 0xb8, 0x0b, 0xd5, + 0xda, 0x4e, 0xe5, 0xaf, 0x94, 0x24, 0x53, 0x34, 0xc9, 0xed, 0x57, 0xa7, 0xb0, 0x3b, 0x5e, + 0xd2, 0x58, 0x89, 0xe8, 0xb0, 0x62, 0xf4, 0x2d, 0xec, 0xd3, 0x63, 0x73, 0x46, 0xf8, 0x15, + 0xc9, 0xc4, 0xab, 0xa9, 0x33, 0x57, 0x1d, 0x11, 0x4b, 0xc5, 0xde, 0xd0, 0x9f, 0x17, 0xdc, + 0x5d, 0x77, 0xe8, 0x58, 0x23, 0xd9, 0x0d, 0x43, 0xbf, 0x36, 0x8f, 0x04, 0x8f, 0xb9, 0xa2, + 0x8b, 0xf3, 0x2b, 0xb2, 0x8c, 0x54, 0x43, 0xf4, 0xba, 0xb4, 0x11, 0x68, 0x90, 0x6d, 0xd0, + 0x8e, 0xe2, 0x7d, 0xa9, 0x75, 0xaf, 0x71, 0xcf, 0xb1, 0xdb, 0x85, 0xc7, 0xda, 0x61, 0x1a, + 0x4e, 0xaa, 0xd0, 0xa5, 0xd0, 0x42, 0x5e, 0x7a, 0x96, 0x24, 0x05, 0x1e, 0x00, 0x90, 0x04, + 0x42, 0x5b, 0x45, 0xbc, 0xe5, 0x61, 0xe6, 0xf1, 0x44, 0x79, 0x91, 0x21, 0x0d, 0x9d, 0xa9, + 0x0e, 0x99, 0x39, 0xf6, 0x29, 0x0d, 0xe2, 0x91, 0x78, 0x38, 0x49, 0x87, 0x89, 0x97, 0x25, + 0x17, 0x53, 0x25, 0x25, 0x2e, 0x6c, 0xf5, 0x5c, 0xec, 0x19, 0xe3, 0x0e, 0x7b, 0x30, 0xb7, + 0x7d, 0xbd, 0xb6, 0x77, 0x93, 0xc9, 0x3b, 0xd9, 0x97, 0xc3, 0x46, 0x51, 0x61, 0x3c, 0x50, + 0x4f, 0x3f, 0x00, + ], + // Burn block + &[ + 0x04, 0x00, 0x00, 0x00, 0x27, 0xe3, 0x01, 0x34, 0xd6, 0x20, 0xe9, 0xfe, 0x61, 0xf7, 0x19, + 0x93, 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, 0x76, + 0xf9, 0x0e, 0xd8, 0x11, 0x9f, 0x02, 0x18, 0x0b, 0xf8, 0x73, 0x87, 0x12, 0x3e, 0x5b, 0xf1, + 0xff, 0x12, 0x2a, 0xd2, 0x7e, 0x1d, 0x26, 0x5c, 0xd4, 0xde, 0x75, 0x6f, 0xe5, 0xf6, 0xca, + 0x98, 0xaf, 0x7d, 0x82, 0x2d, 0xd7, 0xe4, 0x8c, 0x8b, 0x3d, 0x63, 0xe9, 0x2b, 0x4e, 0x01, + 0x7f, 0x6f, 0xae, 0x46, 0xfc, 0x20, 0x6e, 0x93, 0x75, 0x4b, 0xbd, 0xa0, 0xba, 0x7c, 0x5b, + 0x18, 0xc2, 0xfb, 0x1d, 0x3a, 0x9f, 0x81, 0x2f, 0xc3, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xa6, 0x0c, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, + 0xff, 0xff, 0xff, 0x02, 0x51, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, + 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, + 0xca, 0xe4, 0xbf, 0xa4, 0xba, 0xfc, 0x37, 0x22, 0xd8, 0xf9, 0x3c, 0x6c, 0xfb, 0xcc, 0xba, + 0xd7, 0x94, 0x44, 0x58, 0x85, 0x10, 0xba, 0x7a, 0x9d, 0x8e, 0xa3, 0x90, 0x6e, 0x7f, 0xdc, + 0xa8, 0x7a, 0x06, 0x13, 0x03, 0x39, 0x58, 0x9a, 0x79, 0x4c, 0x5a, 0x25, 0x5a, 0x2c, 0xd2, + 0xf8, 0x68, 0x30, 0x8b, 0xcc, 0x89, 0x88, 0x3a, 0x44, 0x0b, 0x4d, 0xa1, 0xbc, 0xd1, 0xbd, + 0x74, 0xdb, 0x3d, 0xbf, 0x6d, 0x78, 0xf8, 0x78, 0x34, 0x11, 0x9b, 0xde, 0x3d, 0x5e, 0x4c, + 0x3f, 0x2f, 0x8f, 0x4e, 0xda, 0xda, 0x54, 0xe2, 0x9f, 0x1c, 0x35, 0x44, 0x41, 0x84, 0x83, + 0x8e, 0xab, 0xd5, 0xa0, 0x9f, 0xf0, 0xc5, 0xd9, 0xdd, 0x94, 0x3e, 0xe1, 0xcb, 0x9d, 0x09, + 0x3c, 0x98, 0x56, 0x33, 0x3f, 0x49, 0x3a, 0x4b, 0xfc, 0x72, 0xda, 0xf2, 0xa6, 0xe6, 0xbb, + 0x44, 0x25, 0x13, 0x4b, 0x56, 0x89, 0x0e, 0x70, 0x76, 0x51, 0xef, 0x2d, 0x8f, 0xa2, 0x49, + 0x16, 0xc5, 0xfd, 0xd2, 0x70, 0xdd, 0x87, 0xc2, 0x1c, 0x7b, 0xd6, 0xd9, 0xa3, 0xd4, 0xe1, + 0x60, 0xbe, 0x2f, 0xad, 0xf0, 0x54, 0xb4, 0xd7, 0x0d, 0x3b, 0xcf, 0x02, 0x31, 0x1e, 0x0d, + 0xcb, 0x8a, 0x95, 0xe7, 0x91, 0xaf, 0xa3, 0xfa, 0x85, 0xbf, 0x90, 0x79, 0x4b, 0x27, 0x62, + 0x01, 0x76, 0x23, 0x40, 0x39, 0x5b, 0x12, 0x97, 0x95, 0x56, 0xe9, 0xd7, 0x1f, 0x4e, 0x1a, + 0xaf, 0x76, 0x00, 0xff, 0x87, 0x8a, 0xdb, 0x86, 0xf6, 0xc7, 0x17, 0x40, 0x44, 0x6a, 0xaf, + 0x38, 0xa0, 0xc1, 0xf3, 0xe3, 0x3f, 0xfa, 0xfa, 0x47, 0x00, 0xeb, 0x10, 0x14, 0xb0, 0xaf, + 0x94, 0x39, 0x03, 0xa8, 0x30, 0x17, 0xa7, 0xe1, 0x74, 0x7b, 0x95, 0xb8, 0x29, 0xfb, 0xfd, + 0x65, 0xee, 0xba, 0xe5, 0x9e, 0xfa, 0x63, 0xa2, 0x61, 0x5e, 0xae, 0xd2, 0xca, 0xb8, 0xcb, + 0xe6, 0x69, 0x62, 0x90, 0xdb, 0x6f, 0xd9, 0x59, 0x91, 0xf2, 0x03, 0x07, 0x6a, 0x27, 0xa6, + 0x92, 0x65, 0x25, 0xd4, 0x78, 0x39, 0xdc, 0xc5, 0x54, 0xf4, 0x2c, 0x41, 0x3b, 0x9a, 0xc0, + 0x8b, 0x9b, 0x7b, 0xa2, 0x3b, 0xfb, 0x6b, 0xc6, 0xe8, 0x3f, 0x31, 0x9c, 0xa3, 0xb0, 0x79, + 0xf1, 0xb4, 0xf0, 0xf9, 0xb8, 0xe8, 0xfa, 0x32, 0xcd, 0x58, 0x9a, 0xc9, 0xaf, 0xe3, 0xa0, + 0x28, 0x2b, 0x9b, 0x93, 0x1b, 0x09, 0x67, 0xc2, 0x66, 0xc9, 0xad, 0xce, 0x66, 0x3f, 0x59, + 0xed, 0x95, 0xaa, 0xa6, 0x5c, 0x5e, 0x90, 0x67, 0xb0, 0xc9, 0x81, 0x8d, 0x96, 0xcd, 0x89, + 0xd1, 0x62, 0x95, 0xf4, 0x47, 0x2b, 0xa1, 0x50, 0x48, 0x95, 0x62, 0xfc, 0x02, 0x5f, 0xa6, + 0xca, 0x5c, 0x6a, 0x2c, 0xef, 0xdd, 0x26, 0x21, 0x9b, 0xb3, 0xc5, 0x0d, 0x0e, 0xf5, 0x76, + 0xb3, 0x1a, 0x6d, 0x87, 0x63, 0x37, 0xbb, 0x4d, 0x27, 0xa4, 0xa9, 0x72, 0x70, 0x22, 0xce, + 0xa8, 0x15, 0x9d, 0xdb, 0x3b, 0x01, 0x56, 0xe0, 0x15, 0x46, 0x03, 0xb6, 0xb5, 0xda, 0xae, + 0x01, 0x12, 0xe3, 0x44, 0x3d, 0x82, 0x0f, 0xa2, 0x56, 0xc0, 0x7d, 0xe9, 0x00, 0xb5, 0x8a, + 0xf3, 0x52, 0xb5, 0x34, 0xbb, 0x5b, 0x4d, 0x9b, 0x6f, 0xbc, 0x93, 0xa9, 0x07, 0x63, 0x8d, + 0x48, 0xe4, 0x7d, 0xa2, 0xa0, 0x6a, 0x0f, 0x84, 0xb9, 0x8c, 0xd7, 0xe3, 0xa5, 0x2c, 0x8e, + 0xbd, 0xec, 0xb2, 0xec, 0xe6, 0x4e, 0xf6, 0xae, 0x07, 0xba, 0xcf, 0xcd, 0xc5, 0xce, 0xbd, + 0xf6, 0xc1, 0x8f, 0xa0, 0x50, 0x83, 0xec, 0x60, 0x0d, 0xa2, 0xb7, 0x65, 0x7d, 0xdd, 0xcd, + 0x8e, 0x6e, 0xda, 0xfc, 0xee, 0x5d, 0xe1, 0x98, 0x27, 0x70, 0xf1, 0x8c, 0x5c, 0xa1, 0x18, + 0x1c, 0x7b, 0x53, 0x1e, 0xa0, 0x9c, 0xd2, 0xb9, 0x25, 0xfb, 0x16, 0xa7, 0x12, 0xd4, 0xe9, + 0xed, 0x53, 0x8d, 0x1c, 0xbd, 0xcc, 0x12, 0x8f, 0x72, 0xec, 0xc0, 0x93, 0xba, 0xcb, 0xaf, + 0xaf, 0x3b, 0xef, 0x5f, 0x1e, 0xb1, 0xd7, 0x0d, 0x5d, 0xc8, 0xe1, 0xfb, 0x25, 0x9a, 0xfa, + 0x0c, 0xb0, 0x18, 0x3d, 0x7b, 0x53, 0x1e, 0x60, 0x36, 0xdf, 0xb8, 0x32, 0x14, 0x81, 0x6d, + 0xda, 0xc0, 0xbb, 0xc6, 0xe8, 0xf5, 0xa0, 0x36, 0xcf, 0x21, 0xf4, 0xa8, 0xd8, 0x48, 0x56, + 0x72, 0x78, 0x00, 0xe2, 0xda, 0xc1, 0xa4, 0xde, 0x38, 0x50, 0x94, 0x35, 0x79, 0x95, 0xd7, + 0x97, 0x8e, 0xfe, 0x22, 0x9f, 0xca, 0x58, 0x14, 0xee, 0x42, 0x29, 0x50, 0x9f, 0x76, 0xb6, + 0x80, 0x81, 0x0b, 0x93, 0x00, 0x5c, 0xd9, 0xc8, 0xfc, 0x50, 0x74, 0x3e, 0x23, 0xa0, 0x83, + 0xef, 0x98, 0x33, 0x4c, 0x2c, 0x9c, 0x81, 0x4f, 0x21, 0xf3, 0xaf, 0xce, 0xbf, 0xfc, 0xf7, + 0xfa, 0x0c, 0x7a, 0xdd, 0x4c, 0xb2, 0x6a, 0xe0, 0x19, 0xde, 0x6e, 0xe2, 0x84, 0xee, 0xeb, + 0xb6, 0x4c, 0xcc, 0xf0, 0x7b, 0x3b, 0x69, 0x6b, 0x98, 0xef, 0x4a, 0xb0, 0x95, 0xa7, 0x8f, + 0xc1, 0x58, 0xd0, 0xe1, 0x34, 0x63, 0xed, 0x22, 0x6d, 0xe5, 0x84, 0x7b, 0x59, 0x6a, 0xb7, + 0xdb, 0xe5, 0x1b, 0x3b, 0xb3, 0xa6, 0xb2, 0x4f, 0x85, 0xd1, 0x24, 0xbb, 0xb6, 0x2c, 0x15, + 0x69, 0x0a, 0x32, 0xde, 0xe3, 0x2d, 0x08, 0x9c, 0x6c, 0x89, 0x80, 0x4e, 0xab, 0xef, 0x6f, + 0x3c, 0x8f, 0x67, 0x7f, 0xfb, 0xf9, 0x13, 0xe3, 0xa0, 0x94, 0x66, 0xc9, 0x94, 0x41, 0x31, + 0xbc, 0xa9, 0x9a, 0x8f, 0x0d, 0x46, 0x90, 0xc3, 0x3d, 0xa8, 0xba, 0x1a, 0x52, 0xa4, 0x1f, + 0x95, 0xb0, 0x60, 0xd3, 0x82, 0x92, 0xe1, 0xde, 0x1f, 0x38, 0xf8, 0x1a, 0xb4, 0xe3, 0xa1, + 0xac, 0x9f, 0x58, 0x86, 0x37, 0xf4, 0x9f, 0xe6, 0xbb, 0x66, 0x47, 0x5b, 0x6d, 0x70, 0x1d, + 0x15, 0x2f, 0x7d, 0x55, 0x45, 0x61, 0x20, 0xce, 0x55, 0xe4, 0x89, 0xc8, 0x95, 0x4e, 0x15, + 0x4e, 0xcf, 0x05, 0xbd, 0xac, 0x28, 0xf1, 0x4d, 0x64, 0x00, 0x36, 0xb6, 0xbe, 0xdf, 0x14, + 0x91, 0x32, 0xf5, 0x10, 0x0a, 0x40, 0xeb, 0x66, 0xa2, 0x58, 0xf4, 0xeb, 0xc9, 0xd6, 0x2d, + 0x7f, 0xb3, 0xd7, 0x40, 0xf4, 0x74, 0xe0, 0x4a, 0xe4, 0x00, 0xd2, 0xee, 0x72, 0xbc, 0xd2, + 0x2f, 0xcd, 0xa3, 0x3d, 0x10, 0xcd, 0x31, 0x4b, 0x2b, 0xb9, 0x12, 0xed, 0xdc, 0x04, 0xb7, + 0x5c, 0x38, 0xd7, 0x71, 0xd4, 0x34, 0x65, 0x39, 0xdd, 0xfe, 0x1b, 0x73, 0x05, 0xb5, 0x27, + 0xc7, 0x53, 0x64, 0xb6, 0x7b, 0x16, 0x97, 0xba, 0xbf, 0x13, 0x4e, 0x5c, 0xc8, 0xf4, 0xcf, + 0x5a, 0x5c, 0x12, 0x96, 0xb5, 0xd5, 0x7e, 0x73, 0x7f, 0x4a, 0x64, 0x55, 0xa0, 0x7d, 0x00, + 0xd7, 0x47, 0x8c, 0x9f, 0x97, 0xcd, 0x55, 0x7f, 0x52, 0x55, 0x30, 0x2f, 0x9a, 0x34, 0x09, + 0x59, 0xa4, 0x04, 0x27, 0xb1, 0x90, 0xbe, 0xdd, 0xba, 0x2b, 0xbf, 0xfd, 0xd1, 0xf3, 0x2a, + 0xba, 0xb5, 0x34, 0xbd, 0xb4, 0x4f, 0x66, 0x15, 0x27, 0x88, 0xb3, 0x8e, 0x91, 0xde, 0x9c, + 0xd5, 0x2c, 0x2c, 0xa9, 0x36, 0xc7, 0xa1, 0x08, 0x28, 0xc3, 0x18, 0xdc, 0xce, 0xa1, 0xf1, + 0xff, 0x0d, 0x89, 0xaf, 0x8f, 0xa6, 0x0d, 0xd4, 0x0b, 0x1b, 0x62, 0x5a, 0x3b, 0xc1, 0x1c, + 0x4b, 0x52, 0x37, 0x81, 0x0c, 0xc5, 0x08, 0xb4, 0x72, 0xf6, 0x96, 0xf5, 0x8c, 0xa2, 0x4d, + 0x6b, 0x63, 0xe5, 0x28, 0x26, 0xdd, 0x61, 0xc7, 0x85, 0xfa, 0x94, 0x85, 0xde, 0x58, 0xdd, + 0x69, 0xae, 0x6d, 0x05, 0x21, 0x19, 0xa1, 0x5c, 0xb4, 0x8b, 0x22, 0xd3, 0x13, 0xc0, 0x70, + 0x50, 0x23, 0x19, 0xd9, 0x38, 0x99, 0x25, 0x7a, 0x03, 0xa1, 0x56, 0x6c, 0x57, 0x67, 0x16, + 0x07, 0xe7, 0x7d, 0xed, 0xf3, 0x45, 0xfb, 0x23, 0x9d, 0x9f, 0x78, 0xc4, 0x36, 0x14, 0x2f, + 0x45, 0x58, 0x52, 0x29, 0xd7, 0x40, 0x36, 0xac, 0x36, 0x14, 0x11, 0x72, 0x8c, 0xe8, 0x08, + 0x6f, 0x5b, 0x7e, 0x3e, 0x76, 0x40, 0x57, 0xcd, 0xa1, 0x36, 0x30, 0x7b, 0x06, 0x16, 0xe5, + 0xba, 0xf7, 0xdb, 0xec, 0xff, 0x12, 0xe3, 0x91, 0x62, 0xc3, 0x75, 0x26, 0x68, 0x73, 0x38, + 0xc7, 0xcf, 0x26, 0xe1, 0xc9, 0x2b, 0xc3, 0xa6, 0x6b, 0x12, 0x6d, 0x98, 0x3d, 0xe0, 0x80, + 0x37, 0x7b, 0x68, 0xc8, 0x9a, 0xfd, 0x3e, 0x85, 0x64, 0x77, 0x5f, 0xe5, 0x53, 0xa3, 0xfd, + 0xe1, 0xe8, 0x48, 0x42, 0x6f, 0xaa, 0xdb, 0x8f, 0x8a, 0x69, 0x55, 0x47, 0xfa, 0x75, 0xcf, + 0xd7, 0x15, 0x3e, 0x57, 0xfa, 0x74, 0x2e, 0xcb, 0x1c, 0x7d, 0x37, 0xf9, 0xb1, 0xc9, 0xd8, + 0x71, 0x21, 0x78, 0x8e, 0xc3, 0xe3, 0x79, 0x97, 0x9d, 0x8b, 0x22, 0x4a, 0x0f, 0x63, 0x02, + 0xbe, 0x5f, 0x31, 0x8e, 0xd6, 0x03, 0xe7, 0xd8, 0x94, 0x6a, 0x0c, 0x92, 0x93, 0x57, 0xdc, + 0x60, 0xc7, 0xac, 0xc5, 0x0a, 0x7f, 0x74, 0x63, 0x98, 0x06, 0x29, 0x0a, 0x82, 0x03, 0xa0, + 0x20, 0x10, 0x64, 0x1e, 0x98, 0xea, 0x1a, 0x1b, 0x18, 0x5f, 0xbf, 0x56, 0xd7, 0x48, 0xa3, + 0x4e, 0x61, 0x0c, 0xa9, 0x87, 0xef, 0x35, 0xa1, 0x42, 0x55, 0xcf, 0x73, 0x07, 0xb7, 0x14, + 0xb0, 0xdf, 0x26, 0x6d, 0xf2, 0x10, 0x4d, 0xa5, 0xcd, 0x1d, 0xe5, 0x1c, 0x1f, 0xb9, 0x64, + 0x17, 0x99, 0x9e, 0xf6, 0xb7, 0x56, 0x29, 0xd1, 0xe8, 0x9a, 0x5e, 0x3c, 0x40, 0xc2, 0xe5, + 0xfc, 0x9d, 0x34, 0x10, 0x88, 0x14, 0x9c, 0xc6, 0xf6, 0x91, 0xe7, 0x18, 0xfe, 0x24, 0x3f, + 0xa7, 0x50, 0x3b, 0x11, 0xd7, 0xf0, 0xba, 0x7f, 0xcf, 0x8d, 0xb6, 0x92, 0x6e, 0x5a, 0x22, + 0x65, 0xf4, 0x34, 0xd7, 0x2c, 0x77, 0x03, 0xf5, 0xc9, 0x9b, 0xc2, 0x3b, 0xc9, 0xe5, 0xce, + 0x58, 0xa4, 0x7f, 0xf1, 0xdb, 0xcb, 0x89, 0x5d, 0xac, 0x93, 0x8a, 0xb4, 0x55, 0x57, 0x4d, + 0x0f, 0x39, 0x59, 0x46, 0xa7, 0x15, 0x3d, 0x61, 0xe3, 0x56, 0x47, 0x26, 0xe8, 0xb9, 0xe5, + 0x6e, 0xf3, 0xa7, 0x24, 0xd5, 0x45, 0xf7, 0x73, 0x55, 0x41, 0xe0, 0x8d, 0x5b, 0xc3, 0xb5, + 0x4d, 0xe9, 0xc7, 0x9a, 0xa9, 0x93, 0x13, 0x7c, 0xda, 0xc8, 0xfc, 0x27, 0x86, 0xb8, 0x35, + 0xf8, 0x07, 0xfa, 0x0f, 0x4c, 0x37, 0xe9, 0x24, 0x6d, 0xee, 0x42, 0x25, 0x20, 0x58, 0xb1, + 0xd0, 0x91, 0x49, 0x9c, 0xf7, 0x66, 0x44, 0x51, 0x2d, 0x60, 0x7d, 0x42, 0xd0, 0xdf, 0xda, + 0x06, 0xdf, 0x41, 0x1a, 0xce, 0xd3, 0xd4, 0x8f, 0x21, 0x34, 0x83, 0xa7, 0x19, 0x12, 0x5a, + 0x96, 0x5e, 0x5e, 0x3c, 0x5e, 0xf0, 0xee, 0x67, 0xbb, 0x44, 0x8e, 0x29, 0x0b, 0xac, 0xb3, + 0xe6, 0x9a, 0x1e, 0xdc, 0xb4, 0xee, 0xb4, 0x3f, 0x7e, 0x38, 0x51, 0x63, 0x74, 0xb3, 0x51, + 0x72, 0x0a, 0x6f, 0x34, 0xd8, 0x3c, 0x34, 0x09, 0x58, 0x5d, 0x88, 0xa9, 0x10, 0xf0, 0x21, + 0x4a, 0xd0, 0x7f, 0x0a, 0xb7, 0x2c, 0xfa, 0xbb, 0x1b, 0xcf, 0x21, 0x82, 0xdd, 0xa2, 0x96, + 0x33, 0xdc, 0xdd, 0x47, 0xf4, 0x43, 0x82, 0xea, 0xa1, 0xf5, 0xd9, 0x02, 0xb1, 0x15, 0x1c, + 0x44, 0x31, 0x11, 0xf2, 0xfd, 0x8e, 0xba, 0x04, 0x72, 0xa9, 0xb0, 0xbd, 0x06, 0xed, 0x2a, + 0x3a, 0x43, 0x14, 0xc7, 0x70, 0xa9, 0x3d, 0x28, 0xee, 0x3f, 0x16, 0x13, 0x10, 0x2b, 0x3e, + 0x8d, 0x07, 0x59, 0x48, 0x91, 0xe8, 0x5b, 0x2a, 0x86, 0x47, 0xea, 0x47, 0xd9, 0xb5, 0xb8, + 0x4d, 0xed, 0xf0, 0x0e, 0x1f, 0x95, 0xf9, 0x4f, 0x5a, 0xb1, 0x35, 0xda, 0x2c, 0xbd, 0xd4, + 0x08, 0x31, 0x5f, 0xe0, 0x22, 0x84, 0x70, 0xf6, 0x93, 0x08, 0x47, 0x21, 0xe2, 0xf8, 0x37, + 0xc4, 0x26, 0x67, 0xae, 0x1b, 0xa3, 0x16, 0xb8, 0x88, 0x38, 0x0a, 0x59, 0xcf, 0x92, 0xb7, + 0x63, 0xc9, 0x61, 0xa5, 0x2f, 0xdf, 0x51, 0x5c, 0x58, 0xcc, 0x4e, 0xb3, 0xab, 0xa7, 0xe9, + 0x5a, 0x16, 0xb4, 0xe8, 0x47, 0x2e, 0xd8, 0x8b, 0xf1, 0x25, 0x72, 0x26, 0x4c, 0x65, 0x33, + 0x2f, 0xa1, 0x13, 0x4f, 0x38, 0xe9, 0x56, 0x80, 0xb9, 0xf5, 0xdf, 0x96, 0x9b, 0xaa, 0xfe, + 0x01, 0x87, 0xe8, 0x0e, 0x98, 0xa0, 0xb6, 0x90, 0x45, 0x80, 0x2b, 0x9a, 0x6c, 0xc0, 0x94, + 0xbb, 0x6f, 0xea, 0x14, 0xbd, 0x9d, 0xab, 0x9d, 0xe3, 0x9a, 0x08, 0x80, 0xa2, 0x19, 0x21, + 0x35, 0x33, 0xb9, 0x3c, 0x5f, 0xb4, 0x6b, 0xf0, 0xef, 0xec, 0xe8, 0x8d, 0x4a, 0xcf, 0xdc, + 0x84, 0x4d, 0xb5, 0xe8, 0xaa, 0xac, 0xf5, 0xd0, 0x4f, 0x46, 0xb7, 0xf8, 0x8f, 0x46, 0x3d, + 0x92, 0x97, 0x57, 0xc9, 0xd4, 0xdf, 0x96, 0x9c, 0x9d, 0x8c, 0x3e, 0x4e, 0x78, 0xe4, 0xcf, + 0xd6, 0xcd, 0xf7, 0x05, 0x75, 0x21, 0x6c, 0x1b, 0xf9, 0x5f, 0x70, 0x0e, 0xed, 0x8b, 0x56, + 0x6b, 0x78, 0xf5, 0x43, 0x0e, 0x8e, 0x7f, 0x90, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x89, 0xb9, 0x7e, 0x92, 0x7c, 0xb6, 0xce, 0xd7, 0xde, 0xa4, 0x52, 0x2e, 0x4d, + 0x92, 0x78, 0x5d, 0xad, 0x6d, 0x63, 0x95, 0x4f, 0xb2, 0xec, 0xba, 0xca, 0x16, 0x80, 0x1c, + 0xe9, 0x2a, 0xff, 0x0c, 0xfd, 0xe0, 0x1c, 0x28, 0x95, 0x9d, 0xe4, 0xbe, 0xa6, 0xea, 0x9c, + 0x3f, 0xd1, 0x95, 0x44, 0x48, 0x2f, 0xb9, 0x2e, 0x1f, 0x8c, 0xd8, 0xb2, 0xc9, 0xbe, 0xda, + 0x00, 0xc6, 0xc1, 0x77, 0xf6, 0xae, 0xa7, 0x67, 0x39, 0x8b, 0x03, 0x00, 0x15, 0x80, 0x70, + 0xa4, 0x55, 0x24, 0xf2, 0xc7, 0xa2, 0xe9, 0xf0, 0x75, 0x18, 0x1a, 0x89, 0xc2, 0x60, 0xe2, + 0x9c, 0x66, 0xa9, 0xbe, 0xdd, 0x6d, 0xf9, 0xdb, 0x3a, 0x6e, 0x87, 0x60, 0x31, 0xb2, 0xea, + 0xb8, 0x4c, 0x63, 0xfd, 0x63, 0x01, 0xa8, 0x11, 0x43, 0xc6, 0xa7, 0xee, 0x8b, 0x48, 0xe2, + 0x82, 0x1a, 0x8b, 0x94, 0xee, 0x6d, 0xe8, 0x28, 0xf0, 0xd6, 0x41, 0x6a, 0x85, 0x29, 0x32, + 0xb5, 0x0b, 0x35, 0x18, 0xe3, 0x40, 0xba, 0xbd, 0x28, 0x1d, 0x48, 0x67, 0x9d, 0x66, 0x1a, + 0x17, 0xd9, 0x33, 0xcd, 0xa6, 0x87, 0xd2, 0xda, 0xd4, 0x99, 0x9f, 0x7e, 0x81, 0x2b, 0x8c, + 0xe5, 0x23, 0x1b, 0x4f, 0x0f, 0x20, 0x53, 0xfa, 0x6c, 0x04, 0x1c, 0xd9, 0xad, 0x6e, 0x66, + 0x3a, 0x6b, 0x2f, 0x53, 0x1d, 0x23, 0x14, 0xca, 0x45, 0xb8, 0xa6, 0x14, 0x24, 0x5f, 0xc7, + 0x2b, 0x87, 0x36, 0x3a, 0x80, 0x10, 0x2b, 0x1f, 0x3d, 0x4f, 0xfe, 0x0a, 0x08, 0xff, 0x46, + 0xee, 0x13, 0x51, 0x08, 0x7b, 0x26, 0x1f, 0xeb, 0xf7, 0xb7, 0x07, 0xd5, 0xa9, 0x39, 0x5b, + 0x62, 0xb3, 0xff, 0x82, 0xfa, 0x50, 0x60, 0x71, 0xd0, 0x02, 0xf2, 0xb7, 0xf6, 0x83, 0xe8, + 0xbf, 0xb0, 0xd9, 0x87, 0x82, 0x25, 0x86, 0xd4, 0x72, 0x58, 0xdc, 0x5f, 0x43, 0x52, 0xb2, + 0xa5, 0x78, 0x10, 0x40, 0x88, 0x16, 0x3a, 0xc0, 0xb8, 0x1b, 0x85, 0x27, 0x62, 0xcc, 0xe8, + 0xf7, 0x1f, 0x1e, 0x6c, 0x99, 0xaa, 0x10, 0x6b, 0x1c, 0xe6, 0xc0, 0xf3, 0x95, 0x9d, 0xf8, + 0x2b, 0x44, 0x1c, 0x73, 0xc0, 0x25, 0xea, 0x15, 0x05, 0x85, 0xcc, 0xbd, 0x5e, 0xe9, 0x7a, + 0xea, 0x43, 0xfb, 0x8d, 0x16, 0x88, 0x54, 0xf1, 0xb2, 0x4b, 0xd7, 0x89, 0x26, 0x74, 0xc2, + 0xca, 0xe3, 0x8c, 0x26, 0x00, 0x55, 0x65, 0xc9, 0xb4, 0x38, 0x50, 0xa5, 0x09, 0x17, 0x6e, + 0x68, 0xde, 0x0b, 0xeb, 0xa1, 0x60, 0x57, 0x5c, 0xff, 0x9f, 0x75, 0xc0, 0xda, 0x26, 0x0d, + 0x9c, 0x0c, 0x11, 0x73, 0x7e, 0x20, 0xbf, 0xf4, 0x1d, 0x4e, 0x55, 0x80, 0xac, 0x99, 0x1b, + 0xf9, 0x75, 0xe2, 0xa8, 0xc3, 0x06, 0xfc, 0xc2, 0x70, 0x1e, 0xcb, 0x66, 0x3e, 0x70, 0x8a, + 0x08, 0x23, 0xe1, 0xa7, 0x40, 0x15, 0x0a, 0xcd, 0x49, 0xce, 0xb9, 0x77, 0xd1, 0x3e, 0xee, + 0x98, 0x07, 0xc4, 0x9b, 0xdd, 0xc8, 0x05, 0x9a, 0xe1, 0xbf, 0xdd, 0x1a, 0xe6, 0x01, 0x35, + 0x29, 0x55, 0x16, 0xb7, 0x10, 0x75, 0x6d, 0x02, 0x4d, 0xe7, 0x27, 0xec, 0xa4, 0x9a, 0xe6, + 0xb3, 0x0e, 0x8b, 0xda, 0xe1, 0xec, 0x6c, 0x76, 0x64, 0x82, 0x59, 0x63, 0x22, 0x41, 0x11, + 0x04, 0xf5, 0x77, 0xb1, 0x18, 0xdc, 0x80, 0x6c, 0xa8, 0xc3, 0x8c, 0x21, 0x2b, 0xd8, 0xc2, + 0xa9, 0x33, 0xad, 0x9a, 0x1b, 0x17, 0xb8, 0x9a, 0xae, 0xf4, 0x54, 0x60, 0xf9, 0x93, 0xd4, + 0x26, 0xff, 0x26, 0xfb, 0xa8, 0xbf, 0x2d, 0xd5, 0x42, 0x12, 0xa2, 0x23, 0xab, 0x3d, 0x0c, + 0x1f, 0xd2, 0x8f, 0xc7, 0x16, 0x65, 0x97, 0x9b, 0x3c, 0xb9, 0x92, 0x37, 0x7b, 0x9e, 0x0f, + 0xe4, 0x2c, 0x22, 0x7b, 0x9a, 0xdd, 0x69, 0xfe, 0x2b, 0x27, 0xbe, 0x7e, 0xe7, 0x5e, 0xae, + 0xb4, 0xf9, 0xe5, 0x70, 0xae, 0x2d, 0x2d, 0x52, 0x90, 0x70, 0x62, 0xf1, 0x81, 0x8f, 0xe0, + 0xbb, 0xf7, 0x6d, 0x1a, 0xee, 0x1d, 0x36, 0x49, 0x39, 0x82, 0x62, 0x7a, 0x62, 0xb0, 0x6e, + 0x38, 0x77, 0x44, 0x25, 0x92, 0xa1, 0x8b, 0x86, 0x34, 0x69, 0x9a, 0x2c, 0x03, 0x54, 0x85, + 0x68, 0xbf, 0x9e, 0xc6, 0x32, 0x9a, 0x03, 0x79, 0x7c, 0x89, 0x36, 0x61, 0xa3, 0x62, 0xb9, + 0x96, 0xc3, 0xa2, 0x0b, 0xa8, 0x6d, 0xe5, 0x8c, 0x8a, 0x22, 0x2f, 0x30, 0x15, 0x7c, 0xb7, + 0x32, 0xf3, 0x03, 0x04, 0xe9, 0xd2, 0x3d, 0x09, 0x90, 0xa6, 0x96, 0x59, 0x98, 0xb0, 0x73, + 0x9e, 0x1d, 0x91, 0xd6, 0xf2, 0x16, 0xd4, 0xb1, 0xec, 0xe9, 0xb0, 0x6c, 0x3b, 0x0e, 0x95, + 0x21, 0x5b, 0xd9, 0x2b, 0xb1, 0x19, 0xdd, 0x72, 0x4c, 0xcc, 0x74, 0xf1, 0x28, 0xd8, 0xf7, + 0x3f, 0x3e, 0xa2, 0x21, 0xfb, 0x16, 0x22, 0xf6, 0xca, 0x7c, 0x0b, 0xa6, 0xa6, 0x0d, 0x12, + 0x83, 0xfb, 0x96, 0xa8, 0xaa, 0xf6, 0x6c, 0x27, 0x77, 0xbd, 0x01, 0xdf, 0x3e, 0x66, 0x56, + 0x0f, 0x61, 0x07, 0xab, 0xd0, 0x31, 0xac, 0x1d, 0x76, 0x97, 0x6b, 0x77, 0x80, 0x13, 0x4e, + 0x6e, 0xa0, 0x74, 0x8f, 0x4f, 0xf7, 0x49, 0x32, 0xde, 0xbf, 0x56, 0x09, 0xbf, 0x51, 0x47, + 0x05, 0x73, 0x5f, 0xf7, 0xe4, 0xd8, 0xcd, 0x60, 0x1a, 0x05, 0x2e, 0x0d, 0x26, 0x7c, 0xb5, + 0x55, 0x3a, 0xca, 0xbb, 0x0e, 0x34, 0xf7, 0x59, 0xb7, 0xed, 0xcc, 0x2a, 0x8d, 0x75, 0xf3, + 0x4b, 0x5a, 0x3b, 0xe5, 0xcc, 0x6d, 0xcb, 0x55, 0x24, 0x85, 0x9a, 0xee, 0xe2, 0xeb, 0x81, + 0x6c, 0xe9, 0x72, 0xd8, 0xe6, 0xaf, 0x9a, 0xd2, 0x1b, 0x9b, 0x80, 0x40, 0x0e, 0x57, 0xe8, + 0x9e, 0x87, 0xe0, 0x78, 0x82, 0x43, 0xcc, 0x46, 0x96, 0x78, 0x2b, 0xbf, 0x89, 0xd2, 0x08, + 0x72, 0x79, 0x3a, 0x38, 0x05, 0x4d, 0xce, 0x00, 0xe9, 0x3f, 0xcd, 0x03, 0x2e, 0x51, 0xa1, + 0x13, 0x56, 0xae, 0xd7, 0x27, 0x48, 0x94, 0x74, 0x52, 0x5f, 0xed, 0xff, 0xb3, 0x2a, 0x8b, + 0xb9, 0x93, 0xb8, 0x4a, 0xb0, 0xcf, 0x6c, 0x17, 0x02, 0x9f, 0x93, 0xed, 0xec, 0x6f, 0x4b, + 0x28, 0xfb, 0xc1, 0x9b, 0x58, 0x0f, 0x8e, 0x01, 0x99, 0x27, 0x40, 0x0d, 0x9c, 0x07, 0x41, + 0x02, 0xab, 0x8d, 0xc8, 0xe5, 0xab, 0x0e, 0xde, 0x3d, 0xaf, 0x3d, 0xa6, 0xc3, 0x3c, 0x83, + 0x3e, 0x63, 0xcf, 0xf7, 0xa0, 0x88, 0xea, 0x80, 0x05, 0x49, 0x58, 0x3d, 0xa9, 0xec, 0x4a, + 0x94, 0x11, 0xb8, 0x00, 0xd0, 0xb1, 0xc0, 0x45, 0x81, 0x7a, 0x76, 0xc4, 0x32, 0x0f, 0x80, + 0xa3, 0xe4, 0xd4, 0x4c, 0x18, 0x77, 0xee, 0x3b, 0xba, 0x0a, 0x88, 0x87, 0x7e, 0x11, 0xbe, + 0x10, 0x69, 0x88, 0xad, 0x39, 0x16, 0x76, 0x33, 0x8f, 0xbf, 0xe6, 0x40, 0xa4, 0xd3, 0xfb, + 0x09, 0xe9, 0x8f, 0x30, 0xba, 0x80, 0xfb, 0xe3, 0x81, 0x79, 0x5a, 0x1b, 0x8b, 0x4b, 0xf2, + 0x11, 0xdd, 0x31, 0xf5, 0x74, 0x41, 0x0a, 0xa8, 0x72, 0x5f, 0xed, 0x98, 0xd8, 0x31, 0x86, + 0x8b, 0x19, 0x05, 0xa0, 0xe3, 0xb7, 0xbd, 0x54, 0xce, 0xc6, 0xb1, 0xf4, 0x47, 0xa3, 0x83, + 0x6a, 0xaa, 0xeb, 0xa3, 0x52, 0x47, 0xae, 0xd8, 0x84, 0x42, 0x2b, 0x63, 0x92, 0x2a, 0xa5, + 0x63, 0x38, 0xcc, 0xe7, 0x17, 0x10, 0x71, 0xe1, 0x81, 0x04, 0xbc, 0x71, 0x19, 0xf9, 0x94, + 0x53, 0xcc, 0x84, 0xdd, 0x6a, 0x79, 0xc3, 0x47, 0x4b, 0xee, 0xce, 0xb9, 0x60, 0x41, 0xc7, + 0x2e, 0xe8, 0x87, 0x62, 0xd0, 0xd8, 0x9a, 0x1b, 0x55, 0x4a, 0x12, 0xf8, 0x82, 0xfd, 0x1c, + 0x17, 0x86, 0x8b, 0x7c, 0xd2, 0x0e, 0xb2, 0xed, 0x8c, 0x7f, 0x56, 0x89, 0x70, 0xea, 0x2c, + 0x33, 0x7e, 0x01, 0x84, 0xa6, 0x86, 0x0d, 0xa4, 0xb0, 0xbd, 0xa7, 0x73, 0x43, 0xcd, 0xbe, + 0x9e, 0xcc, 0xbf, 0x94, 0x9f, 0xa4, 0xa5, 0xdf, 0x95, 0xd6, 0x01, 0xa3, 0xcd, 0x2c, 0xe6, + 0xb8, 0xb3, 0x5e, 0x33, 0x2b, 0x2f, 0xea, 0xc5, 0x1b, 0x6d, 0x1c, 0x54, 0x32, 0xb7, 0x26, + 0x08, 0xc5, 0x7e, 0xf9, 0x6d, 0x33, 0xcc, 0x51, 0x2c, 0x57, 0x06, 0xa4, 0xf5, 0x8c, 0x47, + 0x5b, 0x2c, 0x36, 0xb4, 0xf2, 0x40, 0xcb, 0x1a, 0x3b, 0x9d, 0xa5, 0x0f, 0x3e, 0xe2, 0x73, + 0xe5, 0xf0, 0x1e, 0x50, 0xef, 0x54, 0x41, 0x68, 0x6c, 0x7c, 0xe6, 0x7d, 0x57, 0xad, 0x38, + 0x0f, 0xa0, 0xcf, 0x95, 0x93, 0xbd, 0x6c, 0x20, 0xc8, 0xa4, 0x36, 0xf3, 0xe0, 0x2a, 0xa0, + 0xc4, 0x4b, 0xec, 0x3b, 0x68, 0x2f, 0xb8, 0xa9, 0x66, 0x39, 0x94, 0x2c, 0xcf, 0x3f, 0xd4, + 0x47, 0xb5, 0x5c, 0xf4, 0xc6, 0xd4, 0x19, 0x3f, 0x3a, 0x05, 0x2a, 0x69, 0x0a, 0xa6, 0x3b, + 0xca, 0xb0, 0x10, 0xc0, 0x19, 0xdb, 0x9b, 0x53, 0x6a, 0x47, 0xbb, 0x3a, 0x36, 0x88, 0x6a, + 0xd9, 0xae, 0x4c, 0x4d, 0x12, 0x2d, 0x8d, 0x43, 0x23, 0x7f, 0x99, 0x0a, 0x99, 0xeb, 0x0b, + 0xef, 0x37, 0x78, 0x80, 0xf4, 0x40, 0xcf, 0x18, 0x15, 0x82, 0xaa, 0x92, 0x27, 0x82, 0x4c, + 0x5a, 0x37, 0x49, 0x66, 0xf5, 0x9a, 0xe5, 0x1b, 0xef, 0x26, 0x8e, 0x9c, 0x39, 0x79, 0xd8, + 0x87, 0xdc, 0xd3, 0x84, 0xf8, 0xbc, 0x8f, 0xfa, 0x28, 0x62, 0xa5, 0xa2, 0xe6, 0x51, 0x90, + 0x66, 0xf0, 0xe6, 0xa9, 0x93, 0xef, 0xcb, 0x25, 0xf0, 0xa6, 0x4b, 0x40, 0xdc, 0xeb, 0x0b, + 0x45, 0xa3, 0xc7, 0x0a, 0x4e, 0xd5, 0x26, 0x30, 0xf4, 0xd3, 0xea, 0x88, 0x1e, 0x22, 0x91, + 0xad, 0x86, 0xf2, 0x93, 0xa2, 0xd8, 0x08, 0xa9, 0x4e, 0x6f, 0xa3, 0x2e, 0xf8, 0xde, 0x1e, + 0x11, 0x84, 0xe8, 0x31, 0x82, 0x7a, 0xb7, 0x2e, 0xf8, 0x2f, 0x29, 0xa7, 0xeb, 0x73, 0x47, + 0x57, 0xf8, 0x34, 0x37, 0xc2, 0x3b, 0x28, 0x72, 0x41, 0xb9, 0xdd, 0x2a, 0x7e, 0x56, 0xb5, + 0x43, 0x26, 0xa6, 0xfa, 0xfd, 0x80, 0x53, 0x39, 0x4f, 0x82, 0x2a, 0x8a, 0xe7, 0xe4, 0x2c, + 0x40, 0xfa, 0x59, 0x60, 0x5a, 0x29, 0x25, 0x60, 0x13, 0xff, 0xaf, 0x70, 0x69, 0x97, 0xd5, + 0x55, 0x80, 0x12, 0x2a, 0xc1, 0x17, 0x06, 0x8f, 0xdf, 0xc8, 0x4c, 0xa5, 0x56, 0x98, 0x57, + 0x48, 0x56, 0x87, 0x90, 0xa0, 0x03, 0xf4, 0x2d, 0x4d, 0x09, 0x32, 0x74, 0xed, 0xfc, 0x9e, + 0x53, 0xd2, 0x4b, 0xc5, 0xdf, 0xdd, 0xe2, 0xb9, 0x71, 0x2d, 0xf0, 0x40, 0x2e, 0xaa, 0xe7, + 0x8b, 0xf2, 0xd3, 0x6c, 0xd3, 0x34, 0xaf, 0x58, 0x71, 0x98, 0x7a, 0x6b, 0x56, 0x15, 0xfd, + 0x06, 0x1a, 0xf5, 0x4a, 0x8c, 0xea, 0xa5, 0x9a, 0x06, 0x80, 0x0d, 0x03, 0x62, 0x3f, 0x02, + 0x03, 0xcb, 0x9c, 0x73, 0x6b, 0x95, 0xfd, 0x10, 0x11, 0xf2, 0xc9, 0xfa, 0x97, 0x9e, 0x67, + 0x8b, 0x15, 0xe2, 0x7c, 0xfc, 0x00, 0x96, 0xcf, 0x76, 0x5e, 0x97, 0x38, 0x41, 0x42, 0x9a, + 0xe4, 0xf4, 0xfd, 0xaf, 0xbf, 0x90, 0xbb, 0x80, 0xe5, 0x9b, 0x87, 0x0e, 0x2a, 0xcc, 0xfc, + 0x16, 0x05, 0x5c, 0xf0, 0xca, 0x67, 0xf1, 0x70, 0xef, 0x17, 0x68, 0xb0, 0x73, 0x0b, 0x35, + 0x30, 0xda, 0xeb, 0x2c, 0x0f, 0x8c, 0x0f, 0x1e, 0x86, 0x95, 0x7b, 0x45, 0x7a, 0x0d, 0xb2, + 0xf4, 0xb2, 0x6a, 0x1c, 0x4a, 0x9d, 0x59, 0x44, 0x9c, 0x4b, 0x4a, 0x9c, 0xd8, 0x87, 0xa6, + 0xac, 0xad, 0x5a, 0x96, 0x5d, 0x8c, 0xaa, 0xc7, 0x1a, 0x1f, 0x68, 0x44, 0x4d, 0x32, 0xc4, + 0x3a, 0x44, 0x85, 0x60, 0x4e, 0x89, 0x5d, 0xb6, 0xc2, 0x3a, 0xdf, 0xa5, 0x8d, 0xa0, 0xb5, + 0x0c, 0x25, 0xa9, 0x1c, 0x6d, 0xa9, 0x95, 0x35, 0xae, 0x03, 0x3e, 0x79, 0xbd, 0x20, 0x6e, + 0x30, 0x93, 0x6e, 0x9e, 0x0e, 0x21, 0x7a, 0x4c, 0x2f, 0xac, 0xf1, 0x2d, 0xb9, 0xf8, 0xab, + 0x2b, 0x6c, 0x17, 0x07, 0x55, 0xe0, 0x53, 0x49, 0xc2, 0xad, 0xcc, 0x45, 0xae, 0xb2, 0x5a, + 0x38, 0x68, 0xae, 0x79, 0x27, 0x82, 0x22, 0x68, 0xeb, 0x75, 0x02, 0x1e, 0x7d, 0xd3, 0x15, + 0x0e, 0xd9, 0x66, 0x32, 0x60, 0xe5, 0x51, 0x47, 0xd8, 0xd8, 0xe7, 0x70, 0x77, 0xc5, 0xbd, + 0xe7, 0x6e, 0x6f, 0x8b, 0x98, 0x8e, 0x19, 0x4d, 0x1c, 0x0c, 0xf2, 0x47, 0x71, 0xa1, 0x64, + 0x8b, 0xf4, 0xc6, 0x80, 0x0f, 0xab, 0x1e, 0x5d, 0x10, 0x62, 0xfd, 0x17, 0x18, 0x3f, 0x92, + 0x20, 0x05, 0x8f, 0xca, 0x87, 0xfc, 0xf7, 0xf4, 0xa9, 0xdd, 0xa6, 0x4d, 0x02, 0xc4, 0x5d, + 0xce, 0xf9, 0x93, 0xaf, 0x4d, 0x42, 0xa0, 0x64, 0x42, 0x29, 0x5b, 0xcf, 0x93, 0xfb, 0x8e, + 0x0a, 0xa3, 0xf0, 0xb3, 0x64, 0xbd, 0xc9, 0xdf, 0xbc, 0xbf, 0x87, 0xef, 0x73, 0x53, 0xcd, + 0xed, 0x2f, 0xb7, 0xee, 0xe8, 0x3d, 0xcc, 0x0d, 0xd5, 0x12, 0xdb, 0xf4, 0x6f, 0x8b, 0xe7, + 0x08, 0x4a, 0x7b, 0x1b, 0x54, 0x14, 0x5a, 0x0c, 0x63, 0x16, 0xb2, 0xa1, 0x1f, 0x7b, 0x76, + 0x18, 0x13, 0xfa, 0x31, 0x83, 0xb7, 0xc9, 0x99, 0x24, 0x65, 0xdc, 0x0a, 0x6f, 0xb6, 0xf8, + 0x3f, 0xe2, 0xb9, 0xf6, 0x54, 0x28, 0x49, 0x28, 0xa3, 0x1c, 0x01, 0xa7, 0x0d, 0x55, 0x45, + 0xd2, 0x02, 0x80, 0x03, 0xe5, 0xc9, 0xe2, 0xd3, 0x7d, 0xe7, 0xf3, 0x37, 0xfe, 0x28, 0x09, + 0x12, 0x26, 0x07, 0x4c, 0x80, 0xe4, 0x39, 0x04, 0x73, 0x39, 0x00, 0x06, 0xa5, 0xa3, 0x22, + 0x6d, 0xd8, 0x86, 0x99, 0x14, 0x5d, 0x50, 0xb4, 0x20, 0x17, 0xd6, 0x06, 0x36, 0x16, 0x2b, + 0xbc, 0xc6, 0xc8, 0x73, 0x87, 0x17, 0xd6, 0xc9, 0x41, 0x25, 0xcd, 0x3e, 0x50, 0x29, 0x91, + 0x32, 0x8f, 0xba, 0x37, 0x65, 0x45, 0x5e, 0x6c, 0x1c, 0x41, 0xab, 0x94, 0xbc, 0x21, 0xd5, + 0x16, 0x04, 0xa1, 0xd9, 0xe4, 0x87, 0x86, 0x9a, 0x97, 0x13, 0x98, 0x84, 0x48, 0x1f, 0x39, + 0xec, 0x7d, 0x81, 0x0c, 0x35, 0xf0, 0xac, 0x12, 0xde, 0x4b, 0x8f, 0x47, 0x5b, 0x82, 0xd0, + 0xbb, 0x10, 0x36, 0xaf, 0x94, 0x62, 0xf6, 0x93, 0xf6, 0x3a, 0x99, 0x91, 0xdb, 0x28, 0x45, + 0x19, 0xe6, 0x64, 0xba, 0x4a, 0x9f, 0xe3, 0x85, 0x68, 0x5f, 0x29, 0xad, 0x1e, 0x64, 0xbd, + 0xae, 0x36, 0xcb, 0xc6, 0xd5, 0x7b, 0xb7, 0x55, 0xa5, 0x9a, 0xf4, 0x26, 0x7b, 0x90, 0xf4, + 0x4d, 0x0a, 0x39, 0xf3, 0x5c, 0x79, 0x00, 0xd8, 0x7a, 0x07, 0x6e, 0x02, 0x5e, 0x6a, 0x69, + 0x75, 0x00, 0x6e, 0x7c, 0xfe, 0x24, 0x66, 0x38, 0xa6, 0xa2, 0x8d, 0x9a, 0x23, 0x36, 0x1e, + 0x9e, 0x9f, 0x45, 0x7b, 0x17, 0xfe, 0xb8, 0x77, 0x99, 0x42, 0x7d, 0x5d, 0x0b, 0xd8, 0x74, + 0x70, 0xfb, 0x29, 0x15, 0x46, 0x4e, 0xae, 0x8d, 0x67, 0xc5, 0xde, 0x2d, 0x1b, 0x40, 0x61, + 0x07, 0x1f, 0xa4, 0x04, 0xbb, 0x49, 0x15, 0xc3, 0x07, 0x83, 0x24, 0x11, 0x68, 0x37, 0x10, + 0x74, 0x9a, 0xb8, 0x68, 0xbf, 0xd3, 0x78, 0x89, 0xe9, 0x3a, 0x29, 0x70, 0x93, 0x1d, 0x60, + 0x19, 0x70, 0x2e, 0x53, 0xe4, 0x4d, 0x7c, 0x6d, 0x08, 0x99, 0x60, 0x1a, 0xdb, 0x96, 0x56, + 0x0d, 0xbf, 0x9d, 0xf8, 0xde, 0xca, 0x54, 0x22, 0xc9, 0x28, 0xff, 0xd0, 0xf9, 0xe4, 0x3f, + 0x2a, 0x4d, 0xfa, 0x03, 0x06, 0x2a, 0xcd, 0x29, 0x58, 0xe2, 0x08, 0xb9, 0x8c, 0x9e, 0x2c, + 0x6e, 0x58, 0x9c, 0x5a, 0x2a, 0x0f, 0x7e, 0xd3, 0xe4, 0xad, 0x3f, 0x61, 0xad, 0x80, 0x9d, + 0xe7, 0x3b, 0xe7, 0x51, 0x1f, 0x23, 0x84, 0xae, 0xa0, 0x86, 0xbc, 0x6a, 0x0a, 0x9e, 0x41, + 0x7d, 0x99, 0x5d, 0x67, 0x4b, 0x93, 0xd5, 0xd1, 0x29, 0xf6, 0x1c, 0xf5, 0x7f, 0x3f, 0xe3, + 0x70, 0x52, 0x66, 0x11, 0xb2, 0xf3, 0x60, 0x14, 0x03, 0x40, 0x1a, 0x3f, 0x7a, 0x79, 0x22, + 0x7b, 0xdb, 0xba, 0xfa, 0x4a, 0xc7, 0x10, 0x8a, 0xc2, 0x8f, 0x41, 0x77, 0x2e, 0x82, 0xd7, + 0xa0, 0x3d, 0xdb, 0xf5, 0xed, 0x67, 0xa4, 0x03, 0x96, 0x00, 0x95, 0xb6, 0x8d, 0x7f, 0x5b, + 0xbf, 0x1a, 0xfa, 0x95, 0xd5, 0x3c, 0xab, 0xfd, 0xdd, 0x8e, 0x1f, 0xb4, 0x32, 0x9c, 0x08, + 0x43, 0x27, 0xd4, 0xdc, 0xa0, 0x55, 0x2e, 0x21, 0x6f, 0x49, 0xc6, 0x5e, 0x60, 0x42, 0x95, + 0x1f, 0x1a, 0xbd, 0x09, 0x9e, 0xab, 0xb9, 0xc7, 0x38, 0x38, 0x6e, 0x5f, 0xfa, 0x5c, 0x15, + 0xd3, 0x87, 0x3e, 0x0a, 0x69, 0x97, 0xaa, 0x3f, 0x46, 0xe8, 0xe8, 0xf5, 0x97, 0x10, 0x94, + 0x6c, 0x5d, 0xf4, 0x4e, 0x73, 0x06, 0x35, 0x85, 0xbd, 0x17, 0x1a, 0x79, 0x52, 0xee, 0xf8, + 0x43, 0x3a, 0x75, 0x04, 0x0a, 0x04, 0xde, 0x4b, 0x4e, 0xcf, 0x75, 0x1d, 0x2d, 0xe3, 0x12, + 0xb5, 0x8b, 0x48, 0x1c, 0xfd, 0xdd, 0x5b, 0x1b, 0x5d, 0x27, 0x18, 0x1f, 0x7e, 0xc5, 0x14, + 0x94, 0xa0, 0x2a, 0xca, 0xb6, 0x8c, 0x44, 0x09, 0x4f, 0x4a, 0x97, 0x68, 0x7b, 0x9a, 0x3c, + 0x3e, 0xc6, 0xfb, 0x6c, 0x2b, 0xc7, 0x88, 0x05, 0x44, 0x14, 0xc3, 0x51, 0x4e, 0xf8, 0x4b, + 0x0b, 0x6e, 0x6a, 0xcc, 0x50, 0x7b, 0xfa, 0xc3, 0xd4, 0x82, 0x7b, 0xc4, 0xa8, 0xf4, 0x82, + 0x64, 0xf2, 0xb0, 0xce, 0x14, 0xdb, 0x51, 0xc7, 0xd1, 0x08, 0x32, 0x26, 0x16, 0xd1, 0x2b, + 0xcb, 0xba, 0x8f, 0x41, 0x6d, 0xbb, 0x28, 0xfd, 0xdc, 0x9d, 0x9e, 0xfc, 0x05, 0xc0, 0x4b, + 0xb0, 0x6c, 0x2e, 0x6d, 0x60, 0x45, 0xc9, 0x4d, 0x8b, 0x48, 0x62, 0x08, 0x27, 0x37, 0xea, + 0xb2, 0x06, 0x3c, 0x61, 0x8b, 0x3c, 0x15, 0x26, 0x4c, 0x5b, 0x59, 0xc3, 0x7e, 0x68, 0xfa, + 0xaf, 0x7d, 0x70, 0x4a, 0x55, 0x89, 0x9c, 0xea, 0x68, 0xdb, 0xa8, 0x63, 0xe7, 0x6b, 0x43, + 0x0e, 0xcb, 0x47, 0x0e, 0x76, 0x36, 0x49, 0xb2, 0x61, 0x34, 0x5d, 0x2e, 0x31, 0x9c, 0x0f, + 0x18, 0x5a, 0xbf, 0x7c, 0x29, 0x33, 0x59, 0xa6, 0xc4, 0x55, 0x22, 0xfd, 0xe2, 0x19, 0x09, + 0x3f, 0x5d, 0x15, 0x16, 0xf7, 0xfe, 0x52, 0x4e, 0x59, 0xe0, 0xae, 0x96, 0xfb, 0x1b, 0x00, + 0xfe, 0xc0, 0xbc, 0x4a, 0xdf, 0xd4, 0x24, 0x6b, 0xf1, 0x7e, 0x23, 0x64, 0x5b, 0x23, 0x14, + 0x40, 0x22, 0x52, 0x2f, 0x2f, 0xdb, 0x8a, 0x08, 0x7a, 0xa0, 0x45, 0x8b, 0x93, 0xef, 0xeb, + 0xc7, 0x64, 0xc6, 0x35, 0xe3, 0xfa, 0x7c, 0x74, 0xbd, 0xd3, 0x81, 0xde, 0xdd, 0x33, 0x3b, + 0x9d, 0x94, 0x5e, 0x55, 0xf5, 0xc0, 0x3b, 0x69, 0x2f, 0xd5, 0xd9, 0x5b, 0x88, 0x42, 0xa2, + 0x1d, 0xe7, 0xde, 0x8b, 0xc0, 0x72, 0xde, 0x71, 0x8f, 0xa4, 0xdc, 0x6a, 0x28, 0x4a, 0xb7, + 0x33, 0xe9, 0x06, 0x3a, 0x9b, 0x88, 0x9f, 0x1a, 0x3b, 0x90, 0x0d, 0xb8, 0x36, 0x1d, 0x4b, + 0x23, 0x5c, 0xa5, 0x28, 0xdf, 0x64, 0x82, 0xa8, 0xfc, 0x6d, 0xdf, 0x4c, 0x9f, 0xbb, 0x8e, + 0x3c, 0x39, 0xba, 0xe6, 0x60, 0xf5, 0x55, 0xa7, 0x66, 0x55, 0x3f, 0x1f, 0xfc, 0x99, 0x03, + 0x16, 0x2e, 0xcb, 0x66, 0x74, 0x8d, 0xb2, 0x6b, 0xce, 0x32, 0xb6, 0xf6, 0x24, 0xcd, 0x7a, + 0xbf, 0x4c, 0xd8, 0x3c, 0x20, 0x23, 0x46, 0x71, 0x07, 0x99, 0x57, 0x29, 0x04, 0x98, 0x18, + 0x1c, 0x46, 0x67, 0xcb, 0xeb, 0xcf, 0xc0, 0x46, 0x46, 0xa3, 0xfd, 0xb3, 0x70, 0x89, 0x90, + 0x38, 0xf8, 0x5a, 0x9e, 0x46, 0xae, 0x10, 0x6b, 0x17, 0x67, 0x18, 0x75, 0x20, 0xff, 0x19, + 0x62, 0x60, 0xaa, 0x5d, 0xd1, 0x34, 0xb4, 0xca, 0xf2, 0xc3, 0x16, 0xdf, 0x2b, 0x4d, 0x46, + 0xfc, 0x87, 0x14, 0x4a, 0xc3, 0x2d, 0x4c, 0x26, 0x34, 0x02, 0x0c, 0xbf, 0x9e, 0x82, 0x08, + 0x2c, 0x0c, 0xc6, 0xb6, 0xe2, 0xbd, 0xa4, 0x88, 0x1d, 0xf1, 0xba, 0x8a, 0xef, 0x3a, 0xf2, + 0x3e, 0xb0, 0x8d, 0xe8, 0x08, 0x62, 0x9b, 0xa5, 0xe4, 0xb6, 0xd4, 0xbf, 0xf6, 0xc2, 0x7c, + 0xfe, 0xce, 0x14, 0x18, 0xd6, 0x6f, 0x7d, 0x2c, 0xb9, 0x9a, 0xb0, 0x72, 0xf0, 0x55, 0x3d, + 0xaf, 0x18, 0xb8, 0x9d, 0x0d, 0x0b, 0x09, 0x41, 0x22, 0x9e, 0xf4, 0xf0, 0x78, 0xfe, 0xd3, + 0xaa, 0x47, 0xf6, 0xe4, 0xad, 0x2e, 0xf1, 0xaf, 0xa4, 0x5c, 0xff, 0xd4, 0x7b, 0x68, 0x75, + 0x12, 0xba, 0x74, 0xc5, 0x61, 0xd4, 0x48, 0x77, 0x37, 0x6d, 0x12, 0xbc, 0x3d, 0x46, 0x44, + 0xe7, 0x66, 0xc0, 0x0c, 0x98, 0xec, 0x78, 0x33, 0xb9, 0x38, 0x14, 0xed, 0x9c, 0xfe, 0x61, + 0xc7, 0xcc, 0x16, 0x79, 0x3b, 0xea, 0x09, 0xea, 0x08, 0xfe, 0x74, 0x78, 0x72, 0x1d, 0x17, + 0xe4, 0x6f, 0x06, 0x4f, 0xec, 0xa2, 0x95, 0xd6, 0x3f, 0x2c, 0x06, 0x66, 0x42, 0x4b, 0x64, + 0xba, 0x19, 0x41, 0x3a, 0x9a, 0x6e, 0x5b, 0xea, 0x31, 0x02, 0xd1, 0x97, 0x21, 0xeb, 0x61, + 0xff, 0x4d, 0x8b, 0xdd, 0x33, 0x7f, 0x22, 0xb0, 0xe9, 0xd7, 0x77, 0x24, 0x1f, 0xb8, 0xd3, + 0x39, 0x51, 0xec, 0x69, 0xde, 0x45, 0x58, 0xdd, 0x6d, 0x1e, 0x7d, 0xba, 0x98, 0xe9, 0xe2, + 0xc5, 0xe5, 0xf5, 0xa7, 0x2a, 0x9a, 0x8a, 0xe7, 0x16, 0x1c, 0xde, 0x19, 0x39, 0x34, 0x65, + 0x7e, 0xd5, 0x29, 0x59, 0x85, 0x21, 0x54, 0x86, 0x0d, 0xfb, 0xf5, 0xe7, 0xf1, 0x03, 0xb9, + 0x42, 0x41, 0x0c, 0x8e, 0x06, 0xd2, 0x14, 0x70, 0x09, 0x5d, 0xa7, 0x71, 0xeb, 0x94, 0x97, + 0x04, 0x1a, 0xa4, 0xcd, 0x95, 0x87, 0xc8, 0x06, 0xbe, 0x7d, 0xaa, 0x77, 0x0a, 0x4e, 0xb1, + 0x31, 0x1b, 0x55, 0x3f, 0xf0, 0x42, 0x3b, 0x99, 0x5f, 0x4b, 0x2f, 0x6e, 0xae, 0xc9, 0x43, + 0x1b, 0x55, 0x22, 0x07, 0x38, 0x3e, 0xc5, 0xf7, 0x41, 0x03, 0x7d, 0xba, 0x82, 0xac, 0x2d, + 0x78, 0xad, 0xb8, 0x39, 0xef, 0x3d, 0x97, 0x62, 0xcd, 0x15, 0xa0, 0x99, 0x46, 0x5d, 0xf3, + 0xe0, 0xae, 0x65, 0x77, 0x11, 0xd0, 0x89, 0x78, 0x5c, 0x56, 0x2c, 0x60, 0xbd, 0xa9, 0x42, + 0x4b, 0xb0, 0x90, 0x23, 0x8e, 0xc6, 0xeb, 0x39, 0x37, 0x74, 0x2b, 0x34, 0x2a, 0x4d, 0x9f, + 0xf4, 0x0a, 0x5b, 0xa5, 0x3c, 0xaa, 0x33, 0x86, 0x0a, 0xe1, 0x3f, 0x7a, 0x34, 0xae, 0x45, + 0x57, 0x17, 0x8c, 0x64, 0xa2, 0xd4, 0xa1, 0x50, 0xe6, 0x14, 0x8d, 0xcc, 0x3f, 0x7d, 0xbf, + 0x87, 0xc3, 0x11, 0x8b, 0x6d, 0x09, 0xd2, 0x93, 0x30, 0xff, 0x48, 0xaf, 0x7b, 0x7c, 0x45, + 0x3f, 0x28, 0xbd, 0xaf, 0x8f, 0x24, 0xb9, 0x34, 0xe5, 0x09, 0xeb, 0xa7, 0xef, 0x58, 0x0f, + 0x86, 0x0f, 0xc1, 0xaf, 0x4c, 0x70, 0x96, 0xeb, 0x17, 0x50, 0x1a, 0x33, 0x72, 0xbb, 0x18, + 0xa0, 0x66, 0x99, 0x17, 0x80, 0x08, 0xec, 0x95, 0xb8, 0x5e, 0xae, 0xbe, 0xd3, 0xc0, 0xa3, + 0xa5, 0xc5, 0x15, 0x69, 0xc3, 0xf2, 0x8d, 0x4c, 0x36, 0xe7, 0x8e, 0x7b, 0x2a, 0xbc, 0x0e, + 0xec, 0xd0, 0x6a, 0xdc, 0x0a, 0xff, 0x5f, 0xd2, 0x42, 0xb9, 0xda, 0x41, 0x9e, 0xcb, 0xaa, + 0xef, 0x02, 0xbe, 0xa0, 0x1e, 0xb7, 0xed, 0x83, 0xac, 0xd4, 0xf3, 0x19, 0x6e, 0xb1, 0x1d, + 0x7b, 0x0b, 0x48, 0x51, 0xbd, 0xda, 0x5b, 0x04, 0x14, 0xd4, 0x37, 0x01, 0x7b, 0x32, 0xa6, + 0xe4, 0xd9, 0x11, 0x46, 0x6d, 0xec, 0xd9, 0xf0, 0x2e, 0x3b, 0xb6, 0xf0, 0x98, 0xc0, 0x14, + 0xd2, 0x12, 0xae, 0x07, 0x85, 0x0f, 0x87, 0x89, 0x93, 0x32, 0xa1, 0x25, 0x10, 0x40, 0xc8, + 0xf6, 0xee, 0xb9, 0x3a, 0xfa, 0x69, 0xfa, 0x3f, 0xe3, 0xc3, 0xea, 0x9a, 0xca, 0xe5, 0x7d, + 0x11, 0x3d, 0x80, 0x21, 0x90, 0xc5, 0xbd, 0xbe, 0x3e, 0x22, 0xf6, 0x20, 0x42, 0x1e, 0xda, + 0xfc, 0x78, 0xec, 0xac, 0x84, 0x75, 0xce, 0x86, 0x3c, 0xd0, 0xb0, 0xd7, 0xa7, 0x43, 0xc7, + 0xdd, 0x6d, 0x8d, 0xda, 0xdf, 0x1e, 0xfa, 0x41, 0x72, 0x5d, 0x42, 0xb4, 0xcb, 0xca, 0xf1, + 0xd6, 0xe3, 0x36, 0xb2, 0xee, 0x7e, 0x55, 0x31, 0x1c, 0x13, 0x83, 0xf4, 0x57, 0x99, 0x5f, + 0x57, 0xf6, 0x15, 0xba, 0x0b, 0xdb, 0x2d, 0x0e, 0xdc, 0x78, 0x21, 0xe9, 0x45, 0x39, 0xe3, + 0x83, 0x4d, 0xb2, 0xfc, 0x67, 0xe8, 0x36, 0x13, 0xd5, 0xd3, 0x9c, 0x37, 0xa6, 0x1d, 0x79, + 0x61, 0x80, 0x02, 0xa7, 0x3c, 0x29, 0x45, 0x2c, 0x53, 0x20, 0xa6, 0x98, 0x7b, 0xf1, 0x3a, + 0xef, 0x34, 0x24, 0x39, 0xe0, 0xb5, 0x8e, 0x65, 0xc9, 0x2c, 0xb5, 0xfd, 0xa1, 0xd3, 0xad, + 0x34, 0xb4, 0x29, 0xcd, 0x0c, 0xfa, 0x34, 0xb2, 0x55, 0xba, 0x2b, 0x26, 0x95, 0x8a, 0x47, + 0xe9, 0xa0, 0xb8, 0xaf, 0x53, 0xaa, 0xc9, 0x10, 0x86, 0x6c, 0x7f, 0xde, 0x02, 0xe5, 0xeb, + 0x77, 0x0d, 0xff, 0x30, 0x31, 0xae, 0x21, 0xda, 0x0e, 0x72, 0x51, 0x34, 0x34, 0x15, 0x64, + 0xa7, 0x8f, 0xde, 0x48, 0xa3, 0x7e, 0x4b, 0xd2, 0xcf, 0xfa, 0x7c, 0xc1, 0x50, 0x9a, 0xa2, + 0x3e, 0x1d, 0xd5, 0xb0, 0xf5, 0x6f, 0xc3, 0xd0, 0xbe, 0xd0, 0x26, 0xc8, 0xc1, 0x2f, 0xd7, + 0x09, 0xc8, 0xbf, 0xaf, 0x74, 0xa4, 0x53, 0xd1, 0xf4, 0x02, 0x44, 0xe6, 0xaa, 0x6f, 0x9d, + 0x00, 0x2c, 0x31, 0x6b, 0xa4, 0xb5, 0x0c, 0xdc, 0xc3, 0x41, 0xd7, 0x4d, 0x90, 0x5f, 0x77, + 0x42, 0x02, 0x3c, 0x0c, 0x3f, 0x3a, 0xf3, 0xac, 0x57, 0x85, 0x54, 0x4e, 0xac, 0xdf, 0x6a, + 0x79, 0x7f, 0x3e, 0x29, 0xb5, 0x1d, 0x1a, 0x22, 0x8b, 0x9a, 0x09, 0xd7, 0x72, 0xbb, 0x0f, + 0xa3, 0xdd, 0xa6, 0xf0, 0x00, 0xbf, 0x2e, 0x0f, 0x63, 0x5f, 0xe1, 0xf7, 0x85, 0x02, 0x61, + 0x03, 0x47, 0xa9, 0xe2, 0xfe, 0xaa, 0x9d, 0x34, 0xca, 0x34, 0xb5, 0x3b, 0xb9, 0xb7, 0xa9, + 0x5a, 0xea, 0xb0, 0x17, 0x97, 0x44, 0x34, 0xd6, 0x68, 0xac, 0xdb, 0x58, 0xdd, 0x38, 0xfe, + 0x58, 0x23, 0x95, 0xc6, 0xea, 0xf6, 0xf9, 0x00, 0x58, 0xe3, 0x37, 0x22, 0x3d, 0x4b, 0xfc, + 0x2b, 0x9e, 0xf8, 0x4b, 0x39, 0x4a, 0xf1, 0xb0, 0x0b, 0x2e, 0x91, 0x77, 0xb2, 0xc5, 0x16, + 0xe8, 0x6c, 0xaa, 0x42, 0x19, 0xba, 0x22, 0x1c, 0x3b, 0xd9, 0x2f, 0x29, 0x03, 0xde, 0x50, + 0x83, 0xc2, 0xb6, 0x22, 0x66, 0x4b, 0x95, 0x86, 0xfb, 0x3f, 0x1f, 0x3e, 0xe1, 0x58, 0xf5, + 0x51, 0x87, 0xeb, 0x3b, 0x32, 0xad, 0xd8, 0x43, 0xe7, 0x80, 0xcc, 0x89, 0xac, 0x04, 0x3f, + 0x12, 0x47, 0x27, 0x58, 0xb3, 0x54, 0x11, 0x36, 0xc1, 0x06, 0xcd, 0xa2, 0x2b, 0x87, 0x25, + 0xa6, 0xc8, 0x94, 0x1d, 0x74, 0x4f, 0xb9, 0x32, 0x45, 0x02, 0xdb, 0x16, 0xfd, 0xcd, 0x69, + 0x78, 0x84, 0x89, 0xa8, 0x39, 0xfe, 0x07, 0xe4, 0x6c, 0x8e, 0x13, 0xf4, 0x41, 0x4b, 0x2e, + 0xdf, 0x57, 0xed, 0x3b, 0x42, 0xfb, 0xf0, 0x02, 0x6b, 0x7b, 0x04, 0xb3, 0xb3, 0x56, 0x4f, + 0xe8, 0xe1, 0xaa, 0x27, 0xdc, 0x13, 0x0d, 0xa7, 0x21, 0xa3, 0xdb, 0x54, 0x08, 0x2a, 0xd9, + 0xae, 0x3a, 0xbe, 0xf2, 0x60, 0x0b, 0x39, 0x11, 0x54, 0xe8, 0xb8, 0x85, 0x61, 0x72, 0x1e, + 0x7a, 0x9b, 0x39, 0x12, 0x9d, 0x57, 0xfd, 0xde, 0x0c, 0x73, 0xb3, 0xfd, 0x8c, 0xec, 0x66, + 0x37, 0xdf, 0x97, 0x10, 0xf2, 0xc6, 0x07, 0x97, 0x18, 0x2c, 0xd0, 0xf5, 0x5b, 0xa7, 0x28, + 0xd4, 0xae, 0xfe, 0x53, 0x7b, 0x7b, 0x83, 0xd4, 0x7e, 0x99, 0x55, 0xe6, 0x40, 0xff, 0x3e, + 0x4e, 0xc6, 0xce, 0xf3, 0x50, 0x1c, 0x91, 0x2d, 0xd8, 0x30, 0xcd, 0x6e, 0xcc, 0x51, 0x72, + 0x1c, 0xe9, 0x91, 0x44, 0x3c, 0xf2, 0x77, 0x37, 0x79, 0x04, 0x7f, 0xc6, 0xb5, 0x80, 0xf8, + 0x91, 0x53, 0x64, 0x65, 0x6a, 0x9f, 0x75, 0x16, 0x4c, 0x08, 0x37, 0x32, 0x83, 0xfb, 0x4b, + 0x48, 0xba, 0xed, 0x1a, 0x73, 0xe7, 0x58, 0x92, 0xdf, 0xa7, 0xc2, 0x68, 0xe9, 0x65, 0x42, + 0xfa, 0xf8, 0x40, 0x8a, 0xda, 0x20, 0x9e, 0x14, 0x09, 0x0e, 0xea, 0x6f, 0x9e, 0x78, 0x9d, + 0x91, 0xe4, 0x3d, 0x09, 0x7f, 0x16, 0xde, 0xec, 0x4e, 0x58, 0x2b, 0x07, 0xdd, 0xbc, 0x68, + 0x6e, 0xb4, 0x4c, 0x68, 0x7b, 0x4c, 0x8c, 0xc9, 0x62, 0x4a, 0x65, 0x33, 0x1c, 0xcc, 0x6b, + 0x9b, 0x1b, 0xaf, 0xa1, 0x4a, 0x22, 0x40, 0x57, 0x9e, 0xc5, 0x69, 0x08, 0xba, 0x24, 0x20, + 0x03, 0x43, 0x22, 0x1b, 0x63, 0xb1, 0x81, 0xd5, 0x9c, 0x33, 0x20, 0x54, 0xda, 0x14, 0x31, + 0x2f, 0x22, 0xe4, 0x63, 0xbc, 0x5b, 0xb6, 0x0e, 0x7c, 0x2c, 0x04, 0xf9, 0xbe, 0x99, 0xa7, + 0x7a, 0x63, 0x02, 0x73, 0x8e, 0x9a, 0xb7, 0x7b, 0xc2, 0xa4, 0xf4, 0x0e, 0x34, 0x51, 0xe0, + 0x04, 0x5c, 0xc7, 0xd0, 0xba, 0x01, 0xef, 0xdf, 0x12, 0x3f, 0xd4, 0x8c, 0xc8, 0x2c, 0xd5, + 0xcc, 0xe9, 0xdd, 0x69, 0x2d, 0x2f, 0xf5, 0xf6, 0x5a, 0x79, 0xc7, 0x0c, 0x50, 0x04, 0x31, + 0x2b, 0xcf, 0x03, 0xc1, 0x93, 0xbe, 0xf3, 0x32, 0x30, 0x49, 0x25, 0xe2, 0xbe, 0x42, 0x62, + 0x2f, 0x61, 0x91, 0x1a, 0xb6, 0x2f, 0x89, 0xce, 0x8c, 0x96, 0x49, 0x56, 0x7c, 0x05, 0xf4, + 0xf7, 0x06, 0x56, 0x0d, 0x35, 0x7b, 0x81, 0x9a, 0xc7, 0xaa, 0x47, 0x36, 0x9f, 0x3a, 0xf3, + 0xbb, 0x3a, 0x4e, 0x4b, 0xe0, 0x8e, 0x82, 0x52, 0x31, 0xb8, 0xac, 0x13, 0x33, 0x75, 0x99, + 0xe7, 0xb6, 0x01, 0x24, 0x07, 0x01, 0x06, 0x77, 0x39, 0x69, 0xfb, 0x5e, 0x0e, 0x18, 0x1d, + 0xf8, 0x66, 0x5b, 0xe0, 0xde, 0xbc, 0x04, 0x7e, 0x7c, 0x99, 0x1b, 0xf5, 0x7d, 0xb2, 0x0b, + 0xa9, 0x89, 0x3d, 0x46, 0x16, 0xc4, 0x0a, 0x8a, 0x24, 0x99, 0xaf, 0xe1, 0x90, 0x1e, 0x61, + 0x6b, 0x34, 0xe2, 0xa2, 0x8d, 0xb7, 0xb4, 0xfa, 0x71, 0x95, 0x3f, 0xb2, 0xa2, 0x37, 0x04, + 0xb9, 0xa6, 0xce, 0xa0, 0xa6, 0x03, 0xbb, 0xdc, 0x7e, 0x8a, 0x11, 0x58, 0x02, 0x6f, 0x11, + 0xd8, 0x2b, 0x15, 0x82, 0xdd, 0x15, 0x7a, 0x56, 0x88, 0x36, 0xc3, 0xd4, 0xb3, 0x1f, 0x3a, + 0x67, 0x21, 0x46, 0x00, 0x17, 0xd1, 0x83, 0xad, 0x3d, 0xe5, 0x8d, 0x92, 0x26, 0xfa, 0x8c, + 0x50, 0xa3, 0x54, 0x93, 0x4b, 0x3a, 0x47, 0x50, 0xe9, 0x93, 0xb0, 0xd3, 0x13, 0x82, 0xd2, + 0x61, 0x09, 0xab, 0x96, 0xdd, 0xda, 0xab, 0x8d, 0x90, 0xbd, 0x72, 0x5e, 0xab, 0x7f, 0x28, + 0x8c, 0x58, 0x97, 0x56, 0xaf, 0x2c, 0xb9, 0x8d, 0x40, 0x0c, 0x09, 0x4d, 0x19, 0x15, 0xd6, + 0x0b, 0x56, 0x30, 0x49, 0x1c, 0x04, 0xec, 0x34, 0xa4, 0x11, 0xcc, 0x70, 0x2d, 0x39, 0xda, + 0x58, 0x0f, 0x25, 0x6b, 0x28, 0x19, 0xca, 0xb9, 0x29, 0x3c, 0x92, 0x95, 0x1b, 0x12, 0x23, + 0xcd, 0xdd, 0x16, 0x03, 0xac, 0xce, 0x3d, 0x29, 0x46, 0x0f, 0xba, 0x60, 0x92, 0x51, 0x68, + 0xa2, 0x4d, 0xf2, 0x27, 0x05, 0xa2, 0xde, 0xde, 0x7c, 0x79, 0xf4, 0x51, 0x7f, 0xc5, 0x5e, + 0x72, 0xc2, 0x84, 0x61, 0xb0, 0xda, 0xbe, 0x3c, 0x20, 0xc4, 0xa4, 0x7c, 0x9e, 0x2b, 0x03, + 0x1e, 0x59, 0x49, 0xdf, 0xb4, 0x3c, 0x47, 0x8e, 0x50, 0x63, 0x96, 0x38, 0x82, 0x90, 0x49, + 0xc2, 0xcd, 0x77, 0xdf, 0xfd, 0x05, 0x31, 0x9b, 0xce, 0x68, 0x97, 0x00, 0x4e, 0x62, 0xbf, + 0x05, 0x61, 0x3f, 0x27, 0x46, 0x08, 0xcd, 0x2f, 0xa8, 0x9f, 0xb6, 0x52, 0x1e, 0xa7, 0xbe, + 0x97, 0x0d, 0x2e, 0x83, 0x4e, 0x12, 0xf7, 0xaa, 0x2c, 0xdb, 0x7a, 0x75, 0x10, 0x93, 0x07, + 0xde, 0xdd, 0xab, 0x0f, 0x2a, 0x8c, 0xf6, 0xf2, 0xcc, 0x12, 0xc0, 0xf7, 0x17, 0x0c, 0x7c, + 0x51, 0x57, 0x32, 0xe0, 0x4e, 0xe1, 0xa3, 0xb1, 0x6d, 0xf8, 0x6b, 0xa6, 0x74, 0x0b, 0x18, + 0x02, 0xed, 0x37, 0x00, 0x1c, 0x67, 0x93, 0x44, 0x49, 0x60, 0x6d, 0x36, 0xfc, 0xdb, 0xab, + 0x9e, 0x7c, 0x0e, 0x9f, 0x88, 0xf9, 0xf4, 0x3f, 0xc0, 0xf4, 0xdb, 0x80, 0xbd, 0xab, 0xa3, + 0x64, 0x97, 0x5b, 0xdd, 0xbf, 0xab, 0xca, 0xdd, 0xc5, 0xa7, 0x13, 0xcf, 0x9a, 0x39, 0xd1, + 0x55, 0x13, 0xec, 0xd0, 0x03, 0x83, 0xb5, 0xf0, 0x8a, 0xe6, 0x40, 0x9d, 0x92, 0x9a, 0x0d, + 0x41, 0x5c, 0xf3, 0x7b, 0x29, 0x9c, 0xa4, 0xea, 0x86, 0xce, 0xcf, 0x0e, 0x43, 0x13, 0xd6, + 0x27, 0x58, 0xee, 0x10, 0x10, 0x57, 0xd9, 0x3f, 0xcc, 0xfa, 0xfc, 0x34, 0xbb, 0x2b, 0xb9, + 0x3b, 0x93, 0xa3, 0xed, 0x90, 0x06, 0xdb, 0x95, 0x21, 0x8e, 0x69, 0x3c, 0xf3, 0xaa, 0xcf, + 0x7b, 0x5f, 0x02, 0x5a, 0x89, 0xbc, 0x9f, 0xbd, 0x9c, 0x65, 0x11, 0x67, 0x0b, 0x04, 0x88, + 0x69, 0xf1, 0x43, 0x4f, 0xa1, 0x5f, 0xdc, 0x75, 0xbc, 0xf7, 0xe0, 0xf2, 0x14, 0xfc, 0xe7, + 0x8f, 0x8e, 0x97, 0x80, 0x2a, 0x24, 0xb9, 0xbb, 0xb8, 0x34, 0x00, 0x60, 0xfe, 0xfa, 0x84, + 0xe8, 0xa4, 0x9e, 0xa0, 0x3c, 0xba, 0x75, 0xb4, 0x17, 0xb2, 0xc3, 0xcd, 0xed, 0x28, 0x15, + 0x00, 0x68, 0x13, 0x6d, 0xf1, 0x83, 0x3c, 0x72, 0x47, 0xdf, 0x93, 0x84, 0x82, 0xc8, 0x84, + 0x34, 0x1b, 0xab, 0x45, 0xf7, 0x4d, 0x25, 0x4e, 0xb4, 0xe0, 0x97, 0xe7, 0x5a, 0xc4, 0x39, + 0xd3, 0x15, 0x6e, 0xb1, 0xd7, 0x43, 0xad, 0x27, 0x15, 0x00, 0xbf, 0x54, 0x46, 0x5b, 0x84, + 0x92, 0xa8, 0xfc, 0xa2, 0x10, 0x52, 0x5a, 0xcb, 0x82, 0x41, 0xe8, 0xe2, 0xe6, 0xd8, 0x36, + 0xae, 0x43, 0x49, 0xbc, 0xf3, 0x18, 0x57, 0xa4, 0xba, 0xd3, 0x1b, 0x05, 0xa3, 0x1e, 0x78, + 0x43, 0x9c, 0xec, 0x18, 0x2d, 0x92, 0x9a, 0x87, 0x33, 0xfc, 0x25, 0x2e, 0xd1, 0x0b, 0xa6, + 0xc6, 0x86, 0x6d, 0xc0, 0x27, 0x32, 0x80, 0x79, 0xb8, 0x5e, 0x2c, 0x4f, 0x2d, 0x74, 0x16, + 0x70, 0x36, 0x8e, 0xa0, 0x8b, 0xf0, 0x67, 0x6c, 0x4a, 0x6e, 0xeb, 0xc6, 0xb7, 0x56, 0xc6, + 0x55, 0x91, 0x1f, 0xf4, 0x5a, 0x2a, 0x53, 0xb0, 0x65, 0x35, 0xc0, 0xe4, 0x47, 0xb8, 0x1f, + 0x77, 0xab, 0x87, 0xaf, 0x4f, 0xee, 0xa5, 0xec, 0x41, 0xc1, 0xa1, 0xfe, 0x4f, 0xeb, 0xb2, + 0x4b, 0x96, 0xc6, 0x12, 0x94, 0x93, 0x0a, 0x00, 0x17, 0xf1, 0xbc, 0xe1, 0x78, 0x67, 0x66, + 0xb2, 0x03, 0x3d, 0xa7, 0xff, 0xe1, 0x1d, 0x39, 0xac, 0xb9, 0xa6, 0x6c, 0x2a, 0x76, 0x37, + 0xfd, 0xcd, 0x48, 0x42, 0x39, 0x72, 0x56, 0xe6, 0x67, 0x1e, 0x20, 0xf9, 0xdd, 0x2e, 0xa9, + 0xf0, 0xac, 0xc2, 0x38, 0x88, 0xea, 0xd3, 0x63, 0x66, 0x02, 0xe3, 0x9f, 0xe5, 0xae, 0x95, + 0x98, 0x7d, 0x4f, 0xb9, 0xd4, 0x7c, 0x77, 0xc1, 0xf4, 0x55, 0xc3, 0xe0, 0x89, 0xbf, 0x0c, + 0xf4, 0x02, 0xef, 0xd5, 0xb9, 0x17, 0x6e, 0x13, 0xa8, 0xee, 0x99, 0xa5, 0x27, 0xcd, 0xc6, + 0xbd, 0x6a, 0x14, 0x7f, 0x40, 0xaf, 0xbf, 0x1e, 0x65, 0x28, 0xb7, 0xab, 0x82, 0x4a, 0x91, + 0xf3, 0x26, 0xc3, 0x1d, 0x23, 0x28, 0x7b, 0x27, 0x6f, 0xc6, 0x5c, 0x1b, 0x68, 0xc1, 0xc5, + 0x39, 0x7c, 0x49, 0x93, 0x7d, 0x28, 0x13, 0xe1, 0xf9, 0x46, 0x5d, 0x44, 0xb4, 0x4e, 0x47, + 0x92, 0x11, 0x26, 0xe7, 0xc1, 0x50, 0x70, 0x18, 0xe7, 0x35, 0x76, 0x6a, 0x63, 0x75, 0xb2, + 0xe7, 0xd0, 0x2e, 0xeb, 0xa7, 0xab, 0x05, 0xc0, 0x76, 0xf0, 0xb3, 0x04, 0xde, 0xf5, 0xb4, + 0x86, 0x93, 0x90, 0x0c, 0x6c, 0x63, 0x03, 0xfa, 0x99, 0x6e, 0x1f, 0x0c, 0xbc, 0x47, 0x1f, + 0x9a, 0x9b, 0x11, 0xe1, 0x73, 0x1f, 0x89, 0x20, 0x4a, 0x1d, 0x76, 0x43, 0x3c, 0x8d, 0x4c, + 0x64, 0x93, 0xfd, 0x3d, 0x09, 0x2f, 0xcf, 0x85, 0x11, 0xef, 0x9f, 0x5a, 0x30, 0x2d, 0x77, + 0x5c, 0xef, 0xd1, 0xb0, 0xb9, 0x20, 0xb3, 0xf7, 0x03, 0x29, 0xb1, 0x6b, 0x48, 0x59, 0x68, + 0x0a, 0x96, 0xae, 0x17, 0x87, 0x14, 0xe3, 0x56, 0x3e, 0x8e, 0xcd, 0xa7, 0x81, 0x70, 0xc0, + 0x31, 0xc9, 0xf7, 0x58, 0x99, 0xa2, 0x0a, 0xd3, 0xa3, 0x8d, 0xec, 0xcf, 0xe3, 0x63, 0xf8, + 0xc6, 0x50, 0xb3, 0xf2, 0x06, 0xc4, 0x12, 0x3c, 0x20, 0xf7, 0xeb, 0xc3, 0xbf, 0xc8, 0xca, + 0x70, 0x3a, 0x13, 0x5a, 0x66, 0xf4, 0x21, 0x67, 0xc3, 0x65, 0x5d, 0xaa, 0x7a, 0xa1, 0x66, + 0xac, 0x07, 0x3a, 0x4c, 0x75, 0x8b, 0x32, 0x54, 0x69, 0xf2, 0x5e, 0x8a, 0xaf, 0x04, 0x95, + 0x38, 0xc7, 0x4e, 0x5f, 0x1a, 0xc0, 0xf6, 0x93, 0xe4, 0x58, 0x48, 0xa8, 0x14, 0xd5, 0x6e, + 0x5d, 0x09, 0x6d, 0xe9, 0x23, 0x94, 0xf3, 0xa0, 0x6f, 0xb1, 0xff, 0x3d, 0x88, 0x47, 0x54, + 0xe6, 0x52, 0x89, 0xa0, 0x9a, 0x5f, 0x03, 0x8f, 0xd6, 0xfa, 0x47, 0x43, 0x34, 0x85, 0xad, + 0xa7, 0x61, 0x09, 0x38, 0x27, 0x89, 0x70, 0xbe, 0x14, 0x7a, 0x87, 0x0f, 0xe1, 0xcb, 0x67, + 0x01, 0x97, 0x6d, 0x4d, 0x2d, 0x78, 0xff, 0x07, 0x32, 0xfd, 0xab, 0x98, 0x12, 0x96, 0x54, + 0xda, 0xcb, 0xda, 0xfd, 0xc3, 0xb9, 0x65, 0x18, 0x86, 0x2b, 0x05, 0xe1, 0x8e, 0xb3, 0x7b, + 0xa8, 0xe2, 0x5f, 0xc3, 0x83, 0x5c, 0x41, 0xe7, 0x50, 0xd0, 0x11, 0x83, 0x5f, 0x25, 0xf9, + 0x5b, 0xe4, 0x4f, 0x22, 0xa4, 0x82, 0x48, 0x10, 0x7c, 0xbb, 0x9a, 0x9f, 0x74, 0x87, 0x07, + 0x83, 0x71, 0x55, 0x4e, 0x5a, 0x4a, 0xb5, 0x2d, 0x08, 0x41, 0x3f, 0x31, 0x2c, 0x45, 0x79, + 0x07, 0xa1, 0x5f, 0x73, 0xbe, 0xb1, 0x19, 0x64, 0x3d, 0x8f, 0x0b, 0x1a, 0xfe, 0xdf, 0xaf, + 0x70, 0x55, 0x24, 0xfe, 0x2b, 0x76, 0x1f, 0x62, 0x88, 0xb0, 0x90, 0xfa, 0xf2, 0xc6, 0x07, + 0xa4, 0xe7, 0xee, 0x3a, 0xba, 0x2a, 0xd0, 0xa9, 0x4e, 0xca, 0xcd, 0x24, 0x43, 0x12, 0x0c, + 0x01, 0xb0, 0x75, 0x13, 0x28, 0xf5, 0xcc, 0x57, 0xb8, 0x17, 0xbf, 0xc7, 0xff, 0x26, 0x9a, + 0x88, 0x0f, 0xfb, 0x59, 0x72, 0x1a, 0x19, 0x60, 0x6e, 0x79, 0x13, 0x12, 0xc4, 0x27, 0xdf, + 0xaa, 0xae, 0x47, 0x11, 0xf1, 0x74, 0xd2, 0x97, 0xe5, 0x9b, 0x3c, 0xa4, 0x86, 0xdd, 0x53, + 0xec, 0xfd, 0x91, 0x1b, 0x3a, 0xd7, 0x7c, 0xd8, 0x93, 0xcc, 0xa0, 0xf9, 0x81, 0x8a, 0xcc, + 0x91, 0x74, 0xb6, 0x5e, 0x49, 0x83, 0x81, 0xb6, 0x45, 0xeb, 0x85, 0xe5, 0x54, 0xe6, 0xe1, + 0x4c, 0x03, 0x2e, 0xa5, 0xf2, 0x19, 0xa9, 0xb6, 0x97, 0xcf, 0xd3, 0x77, 0xca, 0x89, 0x10, + 0xc5, 0x71, 0x61, 0x32, 0x57, 0xc7, 0x48, 0x3c, 0xfb, 0x06, 0x66, 0xf3, 0x5c, 0x82, 0x43, + 0xf5, 0x4c, 0xc3, 0x9c, 0xb7, 0xa4, 0x32, 0x16, 0x4f, 0xe2, 0xf2, 0x33, 0xb1, 0xe0, 0xd8, + 0x6b, 0xce, 0x27, 0xfd, 0xce, 0x77, 0xd5, 0x10, 0xc2, 0xc5, 0x3c, 0x43, 0x40, 0xbe, 0xa5, + 0x1c, 0x66, 0x45, 0xa6, 0x9a, 0xd1, 0xac, 0x34, 0xcc, 0x08, 0xa6, 0xc7, 0x9a, 0xb1, 0xbe, + 0xbc, 0xe1, 0x59, 0xef, 0xaf, 0x2c, 0xa7, 0x84, 0x88, 0x47, 0x39, 0xfd, 0x3c, 0x76, 0x6e, + 0x95, 0xdb, 0x17, 0x99, 0x75, 0x0f, 0x5f, 0xad, 0x9b, 0xe2, 0x68, 0x3f, 0x0c, 0x66, 0xbe, + 0xbd, 0x2e, 0xb3, 0xbb, 0xfd, 0xca, 0xeb, 0xb2, 0x7c, 0xe5, 0x11, 0x3f, 0x5b, 0xb6, 0x60, + 0x99, 0x32, 0x3c, 0x2f, 0xe5, 0x77, 0xe6, 0xee, 0x73, 0x04, 0x2d, 0xf6, 0x9b, 0x26, 0x62, + 0x6c, 0x13, 0x9d, 0x3f, 0x1d, 0x7b, 0x91, 0x68, 0x0d, 0xb1, 0xc6, 0x0c, 0x2d, 0x32, 0x77, + 0xa7, 0x0c, 0xee, 0x9a, 0x7e, 0x15, 0x6f, 0x0f, 0x5a, 0x0e, 0x48, 0x74, 0x27, 0x34, 0xfe, + 0x39, 0xb6, 0x46, 0x0d, 0x93, 0x79, 0x23, 0x4a, 0x03, 0x78, 0x02, 0x89, 0xf3, 0xb8, 0xa8, + 0xf2, 0xef, 0x8e, 0x03, 0x73, 0x76, 0x5d, 0x37, 0xdf, 0x94, 0x50, 0x9b, 0x43, 0xf2, 0x4c, + 0x66, 0x79, 0x29, 0xeb, 0x58, 0xed, 0x90, 0xca, 0xc5, 0xf9, 0x5a, 0x69, 0xb7, 0x4d, 0x69, + 0x38, 0x22, 0x46, 0x46, 0x32, 0x31, 0xc8, 0x3d, 0xb1, 0x8e, 0x57, 0xbd, 0xba, 0x72, 0x8f, + 0x1a, 0xc9, 0x01, 0xe5, 0x17, 0x3d, 0x36, 0x74, 0xfa, 0x74, 0xa6, 0x78, 0x72, 0x95, 0xc1, + 0xe6, 0x7c, 0x0b, 0x93, 0xc0, 0x1b, 0x7a, 0xad, 0xd7, 0x3d, 0x04, 0xda, 0xde, 0xc4, 0x12, + 0x77, 0xac, 0xfc, 0xfd, 0x1f, 0x10, 0x16, 0x57, 0xcc, 0x53, 0xa7, 0xcd, 0x7b, 0x70, 0x67, + 0x16, 0x0f, 0x70, 0x26, 0x0e, 0x51, 0x2d, 0x40, 0x23, 0xf1, 0x95, 0x8c, 0xb8, 0xaa, 0x6f, + 0xec, 0x26, 0xd5, 0x06, 0x83, 0x02, 0x27, 0xb7, 0x3a, 0x20, 0x27, 0xd1, 0x32, 0xe3, 0xc1, + 0xfa, 0xf8, 0x29, 0x31, 0x06, 0x64, 0xfa, 0xc9, 0x02, 0xf4, 0x1c, 0x6a, 0x8f, 0x59, 0x0c, + 0xc0, 0x1c, 0x47, 0x0f, 0x46, 0x42, 0xdf, 0x79, 0x87, 0x4a, 0x06, 0x29, 0x08, 0xad, 0xce, + 0x43, 0xb1, 0x65, 0xb5, 0x0d, 0xe3, 0x20, 0x66, 0x53, 0x6e, 0x06, 0x81, 0xb7, 0x45, 0x12, + 0xd6, 0x27, 0x7a, 0x7d, 0x63, 0xd6, 0xf6, 0x8c, 0x86, 0xf6, 0xbe, 0x76, 0x0b, 0x01, 0xb3, + 0x68, 0x2a, 0x98, 0x50, 0xdb, 0xd9, 0xa8, 0xbb, 0xe4, 0x9c, 0xf8, 0x60, 0xe4, 0x7a, 0x07, + 0x16, 0xb8, 0x6d, 0xca, 0x61, 0x0c, 0x8b, 0x81, 0x51, 0xc7, 0x57, 0x24, 0xd3, 0x78, 0x04, + 0x23, 0x00, 0x96, 0x30, 0x20, 0xf8, 0x6c, 0x97, 0x57, 0xbf, 0x59, 0xc8, 0x16, 0xad, 0x66, + 0xea, 0xfa, 0xde, 0xc6, 0x0c, 0xe5, 0x82, 0xa3, 0xf1, 0x23, 0x23, 0x77, 0x77, 0xb0, 0x9c, + 0x7f, 0x39, 0xa9, 0x54, 0x55, 0x76, 0x56, 0xc8, 0x0f, 0x13, 0x36, 0x5f, 0xb6, 0x67, 0x16, + 0x4a, 0x1f, 0x6d, 0x9d, 0xc2, 0xd7, 0x43, 0x4e, 0xe7, 0xd7, 0x8a, 0x49, 0xd8, 0xee, 0x2d, + 0xac, 0x67, 0xd6, 0x1f, 0xe2, 0x42, 0xaa, 0x4a, 0x24, 0x64, 0x52, 0x24, 0xbf, 0x10, 0xe8, + 0x2f, 0x0e, 0xcb, 0x03, 0x19, 0x6c, 0x68, 0xb0, 0x57, 0xf2, 0x01, 0xbc, 0x3d, 0x66, 0x30, + 0x26, 0xd2, 0x7e, 0xcb, 0xcb, 0x21, 0xd1, 0x81, 0xb9, 0xb7, 0x92, 0xab, 0xe6, 0x4e, 0x47, + 0x33, 0x44, 0x2f, 0xed, 0x9e, 0x10, 0xd4, 0x7b, 0x55, 0xf6, 0xac, 0xa6, 0x23, 0xa7, 0xdb, + 0x0a, 0x28, 0x31, 0xbf, 0x73, 0xba, 0xe8, 0x0b, 0x86, 0x66, 0x3b, 0x85, 0x64, 0xd0, 0xd6, + 0x46, 0xd6, 0xe5, 0x4a, 0x77, 0xbc, 0xf1, 0xdd, 0xd2, 0x99, 0xad, 0x5f, 0x76, 0xf0, 0x57, + 0xf3, 0xa1, 0x93, 0xdb, 0x5e, 0x51, 0x14, 0x1e, 0x28, 0x26, 0x17, 0x5d, 0x37, 0xd9, 0xb2, + 0xef, 0x03, 0x72, 0x4c, 0xf3, 0x15, 0x3a, 0xf8, 0x9d, 0xf5, 0x09, 0xac, 0xb3, 0x31, 0x30, + 0x25, 0x15, 0x60, 0xeb, 0x5f, 0xcc, 0x7b, 0x48, 0x41, 0x4f, 0x65, 0x0e, 0x09, 0xd5, 0x23, + 0x7e, 0x2e, 0x68, 0x4f, 0x46, 0x76, 0x6f, 0x76, 0x1a, 0x76, 0x72, 0xbb, 0xa9, 0x31, 0x39, + 0x62, 0x54, 0x90, 0x1f, 0x3b, 0x62, 0xa5, 0xfb, 0x78, 0x05, 0xf3, 0x8f, 0x60, 0x0c, 0xc9, + 0x37, 0x3e, 0xad, 0xc1, 0x80, 0xaa, 0x78, 0x40, 0x8e, 0x68, 0xbb, 0x1d, 0x3d, 0x6e, 0x20, + 0xdc, 0x60, 0x45, 0x6f, 0x71, 0xa6, 0x8d, 0x79, 0x05, 0x96, 0xe6, 0x99, 0x4e, 0x82, 0x74, + 0x23, 0x78, 0xb4, 0xd9, 0xd2, 0x98, 0x4c, 0x9b, 0x75, 0x8f, 0x35, 0x64, 0x12, 0xda, 0x4d, + 0xb0, 0x94, 0x42, 0xb3, 0x8f, 0x1a, 0x03, 0xce, 0xd0, 0x3f, 0x69, 0xf4, 0xbb, 0x03, 0x3e, + 0xac, 0x32, 0x1f, 0x0c, 0x65, 0x2c, 0x81, 0x7b, 0xc0, 0x5b, 0xf2, 0xe7, 0xc8, 0xfa, 0xf2, + 0x96, 0x1c, 0x74, 0xc4, 0xbb, 0x5b, 0x88, 0xd9, 0x29, 0x26, 0xdf, 0xbe, 0xcb, 0x2e, 0x11, + 0xa2, 0xeb, 0x17, 0x67, 0x3f, 0x91, 0x90, 0x08, 0x73, 0x87, 0x1f, 0x49, 0xff, 0x92, 0xed, + 0xfd, 0x19, 0x4f, 0x28, 0xe6, 0x1c, 0xca, 0xb4, 0xbf, 0x8c, 0xee, 0x9d, 0xa6, 0xf0, 0xd8, + 0x48, 0xdd, 0xac, 0xec, 0xc2, 0x08, 0x3c, 0x8f, 0x56, 0x2c, 0x15, 0xf5, 0xee, 0xce, 0x67, + 0x13, 0x11, 0xcf, 0xf2, 0xf7, 0x0c, 0xd0, 0xa7, 0x7e, 0x93, 0x4d, 0xa0, 0x6f, 0xdc, 0x5c, + 0xb6, 0x10, 0x13, 0x11, 0xa3, 0x0e, 0x82, 0xf5, 0x35, 0x41, 0xc4, 0xdb, 0x56, 0x80, 0x6f, + 0x5b, 0xfa, 0xdd, 0x8c, 0x04, 0xa9, 0x07, 0x19, 0xc2, 0x2d, 0x24, 0xde, 0x14, 0x7d, 0xe3, + 0x3e, 0x5d, 0x9f, 0x9f, 0x2a, 0x4c, 0x9b, 0xe8, 0xdc, 0x93, 0x00, 0x13, 0x90, 0x3d, 0x41, + 0xd5, 0x3c, 0x5d, 0x6f, 0x9a, 0xda, 0xc6, 0x6e, 0xb7, 0xee, 0x9d, 0x92, 0x30, 0xfe, 0xe1, + 0xbb, 0xe9, 0x93, 0x7d, 0x9c, 0x03, 0xd6, 0x13, 0x2b, 0x37, 0x97, 0xd6, 0x35, 0x3f, 0x09, + 0x57, 0xe1, 0xe6, 0xb2, 0x9b, 0x95, 0x8d, 0x2b, 0x84, 0xc5, 0x34, 0x91, 0xb0, 0x13, 0xed, + 0x53, 0x1a, 0x84, 0x3e, 0x00, 0x30, 0x92, 0x38, 0x07, 0xfe, 0x3d, 0x18, 0x80, 0x16, 0x09, + 0x04, 0xe1, 0x16, 0x8f, 0x77, 0xf8, 0x7c, 0x0a, 0xe3, 0x95, 0x49, 0xbf, 0xb1, 0xf4, 0x60, + 0x60, 0x9b, 0xa4, 0x46, 0x4c, 0x3e, 0xf2, 0xcd, 0x19, 0x2c, 0x9c, 0xe9, 0xf5, 0xbb, 0xca, + 0x14, 0x3d, 0xa5, 0x9f, 0x18, 0xce, 0x11, 0x7a, 0x10, 0xd0, 0xd8, 0xcb, 0x88, 0x12, 0x7c, + 0x61, 0xf8, 0x3e, 0x79, 0x81, 0xb6, 0xd9, 0xc0, 0x37, 0x26, 0xc7, 0xde, 0x71, 0xa2, 0x8f, + 0x2f, 0x07, 0xa7, 0x31, 0x8b, 0x69, 0xd5, 0x45, 0x77, 0xc8, 0x58, 0xc2, 0x08, 0x98, 0x6c, + 0x6b, 0x99, 0x1f, 0xeb, 0x87, 0x34, 0xd7, 0xdb, 0x4f, 0x2f, 0x19, 0x6a, 0x48, 0xcd, 0x9c, + 0x09, 0xb5, 0x27, 0x38, 0xab, 0x0c, 0x83, 0xdd, 0xea, 0x2e, 0xd7, 0xdd, 0x4d, 0x36, 0x01, + 0xc4, 0x64, 0xef, 0xd5, 0x52, 0x5e, 0x7a, 0xb7, 0x98, 0x6c, 0xc9, 0xbb, 0xb7, 0x4d, 0xc9, + 0x61, 0x0c, 0xa8, 0xe1, 0x52, 0xec, 0xc8, 0x0f, 0x69, 0x14, 0xb0, 0x9e, 0x19, 0x2d, 0xa7, + 0x6b, 0x8a, 0x80, 0x1d, 0xb0, 0x3f, 0x1e, 0x5c, 0xde, 0x8a, 0xb7, 0x8b, 0x24, 0xa0, 0x07, + 0xf4, 0x96, 0x74, 0x25, 0xfa, 0x27, 0x14, 0x2f, 0x9a, 0x20, 0x78, 0x41, 0xd7, 0x8c, 0x54, + 0xfb, 0xdd, 0x5f, 0xd9, 0x31, 0x51, 0x8d, 0x70, 0xba, 0xe4, 0x6c, 0x84, 0x49, 0x89, 0xa0, + 0xfc, 0x99, 0x2a, 0xb5, 0x37, 0x7b, 0x3b, 0x01, 0x3a, 0x21, 0xa0, 0x21, 0x40, 0xbf, 0x0c, + 0x96, 0xb9, 0xac, 0xdb, 0x8a, 0x68, 0x6b, 0x83, 0xad, 0x03, 0xf8, 0xde, 0xe8, 0x60, 0xcf, + 0xdf, 0xd7, 0x25, 0x8c, 0xe9, 0xf3, 0xe8, 0xac, 0x7b, 0x7f, 0xaf, 0xdc, 0x3f, 0x11, 0x5a, + 0xf9, 0x9f, 0xeb, 0x5a, 0x4c, 0x27, 0x17, 0x97, 0x51, 0x2b, 0x3a, 0x16, 0x4a, 0x57, 0x3a, + 0x44, 0xe9, 0x9f, 0x12, 0x52, 0x01, 0xa4, 0x77, 0x39, 0x77, 0x1b, 0xb7, 0x8e, 0xfd, 0xff, + 0x3b, 0xcb, 0xa4, 0x8d, 0xe2, 0xe0, 0xc0, 0xea, 0x9f, 0x86, 0x2b, 0xe2, 0x37, 0xfd, 0x7d, + 0x72, 0x19, 0xf3, 0xbb, 0xa3, 0x48, 0xc9, 0x8a, 0xd5, 0x4b, 0xfe, 0x4c, 0xb5, 0xd3, 0xc9, + 0x04, 0x62, 0x24, 0xf4, 0x05, 0x23, 0xc6, 0x9d, 0x68, 0x42, 0x10, 0x50, 0x71, 0xcd, 0xc0, + 0xec, 0x3b, 0xb6, 0xbc, 0xb5, 0xac, 0x80, 0xa4, 0xc1, 0x7e, 0x15, 0x65, 0xa6, 0x6e, 0x6d, + 0xdf, 0x70, 0x0f, 0xf1, 0x33, 0x17, 0x91, 0x24, 0x98, 0x27, 0xaa, 0xf0, 0xe4, 0x55, 0xab, + 0xb6, 0x63, 0xed, 0x7d, 0x69, 0x80, 0x9b, 0xdd, 0x0a, 0x5c, 0xfa, 0x4a, 0x9c, 0x12, 0x8b, + 0x5f, 0xb1, 0x87, 0x44, 0x5a, 0xc0, 0x21, 0x0f, 0x70, 0x65, 0xa1, 0x43, 0x36, 0x97, 0xd9, + 0xb7, 0x0d, 0x73, 0xa7, 0x41, 0x6d, 0x1b, 0x0a, 0x81, 0x5d, 0x6b, 0x69, 0x2a, 0x28, 0x17, + 0x19, 0x44, 0x8e, 0x9b, 0xd8, 0xc2, 0x00, 0x55, 0x20, 0x2e, 0xfc, 0x84, 0xb5, 0xba, 0x8a, + 0x2f, 0x79, 0x3e, 0xd0, 0x34, 0xf5, 0xf3, 0x3f, 0x5b, 0x12, 0x11, 0x62, 0x79, 0x23, 0x22, + 0xa4, 0x42, 0x75, 0x6d, 0xde, 0x84, 0x88, 0x32, 0x2a, 0xce, 0x0d, 0xe6, 0x40, 0xb6, 0x5e, + 0x2d, 0x9c, 0x97, 0x08, 0xf9, 0xfc, 0x3e, 0x3b, 0x02, 0x0e, 0x95, 0x49, 0xf0, 0x73, 0x1c, + 0x73, 0xeb, 0xaf, 0x0a, 0x2e, 0xaf, 0x32, 0x14, 0x58, 0xd3, 0xb3, 0x37, 0x08, 0x4a, 0xef, + 0x53, 0x31, 0x6e, 0x65, 0xa6, 0xe4, 0x40, 0x9d, 0x0a, 0x45, 0x36, 0xdf, 0xb5, 0xdc, 0xbc, + 0x43, 0x33, 0x66, 0x64, 0x11, 0x4d, 0x94, 0x61, 0xa3, 0x6b, 0x36, 0x3f, 0xc2, 0x3b, 0x01, + 0xe8, 0x35, 0xde, 0xa6, 0x50, 0x68, 0x8d, 0xdb, 0x75, 0x54, 0xd9, 0xc3, 0x74, 0xb9, 0x56, + 0x96, 0xd3, 0x73, 0x27, 0x5e, 0xf4, 0xb5, 0xe5, 0x9f, 0xfb, 0x3c, 0xf9, 0xdd, 0x0c, 0xa8, + 0x7a, 0x27, 0xfb, 0x46, 0x1f, 0x46, 0x6f, 0x47, 0xec, 0x88, 0xe5, 0x85, 0x48, 0xbf, 0xd5, + 0x57, 0xa0, 0xe3, 0xad, 0x7e, 0x4a, 0xb5, 0xdc, 0x13, 0x55, 0x7e, 0xd1, 0xf1, 0x83, 0x54, + 0x42, 0x47, 0xee, 0xad, 0x0f, 0xa8, 0x91, 0x8c, 0x1d, 0xcc, 0xc6, 0x9e, 0xf6, 0x93, 0x9f, + 0x8f, 0xde, 0x89, 0x3b, 0x26, 0x5c, 0x24, 0x81, 0xb6, 0xdd, 0x9f, 0x67, 0xb2, 0x05, 0xf4, + 0xf0, 0x1d, 0x84, 0x06, 0xb4, 0x3f, 0x88, 0xf9, 0xe6, 0x1e, 0xe4, 0xc6, 0x10, 0x8e, 0x9f, + 0x99, 0x92, 0x6a, 0xaa, 0x25, 0x0b, 0x19, 0xd3, 0xa4, 0xa2, 0x48, 0xe6, 0x0b, 0x8e, 0x52, + 0x3b, 0x6d, 0x6d, 0xcd, 0x69, 0xa5, 0x04, 0x09, 0xfd, 0xd0, 0xe2, 0xb4, 0x74, 0x63, 0x22, + 0xeb, 0x3c, 0x81, 0x56, 0x4f, 0xd5, 0xd1, 0xb5, 0x63, 0x1a, 0xa4, 0xeb, 0x0f, 0xe8, 0xbc, + 0x48, 0x9f, 0x0a, 0x66, 0x56, 0xdb, 0x32, 0xe9, 0x5b, 0x23, 0xc4, 0x55, 0x46, 0x37, 0xee, + 0x71, 0x93, 0xd4, 0x52, 0x83, 0xdc, 0xc2, 0x79, 0x61, 0xa8, 0xf5, 0xb1, 0x3c, 0x10, 0xd5, + 0xff, 0x62, 0x99, 0x43, 0x6d, 0xe2, 0x86, 0xad, 0x5e, 0x7e, 0xc0, 0x06, 0x03, 0x6b, 0xf5, + 0x5a, 0x1f, 0x6b, 0x44, 0x4d, 0x95, 0xd9, 0x24, 0x92, 0x19, 0x5d, 0x79, 0x73, 0x8d, 0x84, + 0x13, 0x09, 0xaa, 0x72, 0x7c, 0x38, 0x7d, 0x7c, 0xd2, 0xd7, 0xe2, 0x49, 0xc3, 0x09, 0x0f, + 0xf3, 0xc7, 0x46, 0xa7, 0x01, 0x50, 0x61, 0x28, 0xfc, 0x22, 0xda, 0x15, 0xa2, 0xd3, 0xe6, + 0xa9, 0xc7, 0xad, 0x0a, 0x6b, 0xb8, 0x4d, 0x7d, 0x5b, 0x28, 0x3f, 0xdb, 0xa1, 0xb8, 0x07, + 0x3f, 0x54, 0xd1, 0x4a, 0x1c, 0x29, 0xcf, 0xc6, 0xea, 0x0b, 0x20, 0x78, 0x14, 0xe8, 0xbf, + 0x40, 0x09, 0x93, 0x20, 0x39, 0x0e, 0xe1, 0x45, 0x92, 0xc9, 0xcb, 0xe9, 0xdd, 0x50, 0xbb, + 0x6f, 0xc1, 0x3c, 0xa6, 0xb8, 0xf4, 0x83, 0x4f, 0xa9, 0xfc, 0xd3, 0x8c, 0x99, 0x07, 0x1f, + 0xd4, 0xc5, 0x52, 0xd3, 0x80, 0x3e, 0xcb, 0x59, 0x6b, 0xf4, 0xec, 0xc1, 0x46, 0x24, 0xed, + 0x97, 0x0e, 0x16, 0x39, 0x1c, 0x2e, 0xfd, 0x64, 0x72, 0xa5, 0xc5, 0xb3, 0x2f, 0xda, 0xc4, + 0x62, 0x66, 0xb4, 0x3a, 0xb6, 0xc0, 0x72, 0x73, 0xd2, 0xe2, 0x18, 0x52, 0x8b, 0x22, 0x1b, + 0x21, 0x69, 0x3b, 0x30, 0x54, 0xfb, 0xbb, 0xc5, 0x5c, 0x5e, 0x97, 0x5f, 0x25, 0xb8, 0xd5, + 0x2f, 0x4e, 0x78, 0x4a, 0xf8, 0x2f, 0xe2, 0x20, 0xa6, 0xfe, 0x77, 0xc8, 0x25, 0x08, 0xb4, + 0x6d, 0xea, 0x66, 0xa2, 0xcc, 0x81, 0x82, 0x8b, 0x0d, 0xcd, 0x7f, 0x86, 0x91, 0x91, 0xc1, + 0xbb, 0x53, 0x35, 0xb0, 0xff, 0xfb, 0x8b, 0xb3, 0xf2, 0xbd, 0x16, 0xdb, 0xbf, 0x11, 0xc0, + 0x48, 0x84, 0xe8, 0xf7, 0xfb, 0xb4, 0x7f, 0xc2, 0xaa, 0x17, 0x06, 0xa4, 0x70, 0xdd, 0xc6, + 0x77, 0xb3, 0xd7, 0x56, 0x21, 0xf3, 0xd9, 0x2a, 0x62, 0x81, 0x24, 0x11, 0x71, 0xff, 0xff, + 0x25, 0x3f, 0xc9, 0x25, 0x52, 0x63, 0x89, 0xbb, 0x17, 0x66, 0x66, 0x24, 0x29, 0x01, 0xd6, + 0x11, 0x8c, 0x10, 0xc6, 0xba, 0xf8, 0xa8, 0xe3, 0xcd, 0x44, 0x5d, 0xfd, 0xa1, 0xc0, 0xd8, + 0x6a, 0x60, 0xc0, 0x2a, 0xd8, 0xd9, 0xad, 0xf0, 0x46, 0x9e, 0x42, 0xe6, 0x8c, 0x5e, 0x04, + 0x27, 0x8a, 0xd7, 0xf5, 0xb7, 0x70, 0x80, 0x37, 0xc0, 0x6d, 0x6c, 0xd0, 0x0f, 0x8a, 0xc4, + 0xf8, 0x76, 0xfc, 0x02, 0x97, 0xf2, 0xac, 0x3f, 0x07, 0x41, 0xd5, 0xea, 0x38, 0xe9, 0xad, + 0x0e, 0x14, 0x85, 0xfc, 0xd3, 0x6b, 0x10, 0x65, 0xd4, 0x12, 0x35, 0x6d, 0xa5, 0x47, 0x60, + 0xe9, 0x2d, 0x02, 0x33, 0xa9, 0x7b, 0x81, 0x2e, 0x87, 0x8c, 0x23, 0x98, 0x67, 0x2c, 0x59, + 0x0d, 0x68, 0x9d, 0x03, 0x13, 0xd7, 0x4d, 0x34, 0xcf, 0xb9, 0xb3, 0x34, 0xa5, 0xb8, 0xce, + 0xf3, 0xce, 0x4c, 0x46, 0xb5, 0x74, 0x2a, 0x29, 0xa6, 0x78, 0x10, 0x29, 0xec, 0xe7, 0x62, + 0xcd, 0xf0, 0xb8, 0x7b, 0x30, 0xa0, 0xb4, 0x07, 0x5a, 0x37, 0x19, 0x91, 0x5a, 0x1e, 0xc4, + 0x9f, 0x44, 0xf0, 0x5c, 0x25, 0xde, 0x2a, 0xce, 0xe6, 0x1a, 0x4b, 0x89, 0xa3, 0x42, 0xa1, + 0x9a, 0x0b, 0x85, 0xf8, 0x4a, 0x59, 0x0e, 0x1e, 0x50, 0xa3, 0x77, 0xe8, 0x06, 0xce, 0x76, + 0xb0, 0x6d, 0x17, 0x3a, 0xe3, 0x1a, 0xf9, 0xb8, 0x8c, 0xcd, 0x44, 0x52, 0x5e, 0x6c, 0x58, + 0x7f, 0xad, 0x7b, 0x3a, 0x2c, 0xce, 0x5d, 0x9e, 0xed, 0x31, 0xf8, 0x7b, 0x0f, 0x2b, 0x1e, + 0xf0, 0x8e, 0xa4, 0x33, 0xa6, 0xc5, 0x83, 0xba, 0xdc, 0xd9, 0x44, 0x4e, 0x4a, 0x94, 0x63, + 0xb2, 0x33, 0x9e, 0xcd, 0x59, 0x8e, 0x13, 0xd0, 0xb6, 0x22, 0x5e, 0xa3, 0x4e, 0x9c, 0x09, + 0x2e, 0x6f, 0xc8, 0x66, 0x8b, 0xd4, 0x82, 0x63, 0x8f, 0x9b, 0xe8, 0x28, 0x98, 0x4d, 0xea, + 0xc4, 0xeb, 0x8e, 0xc5, 0x08, 0x2a, 0x9f, 0x0f, 0x15, 0x17, 0x6b, 0x6f, 0xe0, 0x84, 0x08, + 0x77, 0xe9, 0x51, 0xa8, 0xa4, 0x66, 0x71, 0x0d, 0x55, 0xcf, 0x21, 0xdb, 0xc8, 0xd0, 0x2d, + 0x43, 0xac, 0x6a, 0xca, 0x71, 0x7c, 0x74, 0xef, 0x21, 0x68, 0x5f, 0xc6, 0xdb, 0xf2, 0x8f, + 0x82, 0xa8, 0xce, 0x56, 0xe9, 0x11, 0x5d, 0xae, 0xb2, 0x7f, 0x69, 0xea, 0x9a, 0x9c, 0x25, + 0x1d, 0xcb, 0x23, 0xdb, 0x14, 0x07, 0x52, 0x88, 0xe3, 0xb0, 0xf2, 0x8c, 0xa2, 0x17, 0x35, + 0xa2, 0x12, 0x3c, 0x83, 0xd2, 0xa4, 0x06, 0x9d, 0x46, 0xbf, 0x02, 0x35, 0x0c, 0xf5, 0x20, + 0x8e, 0xf0, 0x15, 0x2e, 0xa2, 0xf8, 0x9b, 0xa0, 0x7d, 0x78, 0x06, 0xb2, 0x9b, 0x68, 0xf1, + 0xbe, 0xe3, 0x92, 0x6a, 0x82, 0xa0, 0x42, 0xbd, 0x60, 0xe3, 0xae, 0x02, 0x04, 0x9f, 0x30, + 0x8c, 0xa9, 0x80, 0x4c, 0x27, 0x17, 0x9a, 0x70, 0x47, 0xc5, 0xb6, 0x3c, 0xf3, 0xf0, 0xf7, + 0x15, 0xbf, 0x0a, 0x65, 0x48, 0x67, 0x80, 0xcc, 0x86, 0x31, 0x1e, 0x55, 0xeb, 0xc8, 0x63, + 0x88, 0x12, 0x93, 0xaf, 0x05, 0xb6, 0x2e, 0x2f, 0x4f, 0xa6, 0x07, 0x5f, 0xed, 0x69, 0x0b, + 0x3f, 0x65, 0x23, 0x46, 0xdc, 0x5e, 0x3a, 0xef, 0x82, 0x29, 0x45, 0x79, 0xcb, 0x64, 0xad, + 0x71, 0xe1, 0xfe, 0xe4, 0xd4, 0x3d, 0x01, 0xa4, 0xea, 0xa2, 0x61, 0x70, 0x68, 0xc6, 0x50, + 0x77, 0x92, 0xc7, 0x84, 0xbc, 0x99, 0xe8, 0x30, 0x1b, 0x7c, 0xbf, 0x77, 0xa4, 0x4f, 0x9a, + 0xb4, 0x07, 0xff, 0x08, 0xe0, 0x84, 0x19, 0xba, 0xe7, 0xa5, 0xdc, 0x38, 0xd1, 0x89, 0xea, + 0x84, 0x24, 0x85, 0x89, 0x38, 0xfc, 0xf4, 0x33, 0xdd, 0xfa, 0x2f, 0xbf, 0x9b, 0xa9, 0x4c, + 0xfd, 0xb8, 0xa1, 0xb2, 0x17, 0x4f, 0xed, 0xc0, 0x1e, 0xdf, 0x7e, 0x84, 0x94, 0xfc, 0x98, + 0x2e, 0x49, 0x7d, 0x5d, 0xcf, 0x28, 0x13, 0x80, 0xe6, 0x67, 0xaf, 0xca, 0x0e, 0x78, 0x80, + 0xd4, 0x6b, 0x2a, 0x41, 0xe2, 0x92, 0xd3, 0xa3, 0xbc, 0x0e, 0x91, 0x51, 0xe8, 0xe2, 0x5f, + 0x0d, 0x04, 0x5e, 0xf7, 0xdc, 0x00, 0xc1, 0x26, 0xf2, 0x94, 0x7b, 0xe5, 0xd2, 0xd7, 0x9e, + 0x11, 0x05, 0x4b, 0x92, 0x13, 0x80, 0x17, 0x18, 0x45, 0x78, 0x35, 0xc1, 0x86, 0xfe, 0xd2, + 0xe0, 0x3f, 0xe4, 0xe5, 0xfa, 0x96, 0x95, 0x01, 0x1f, 0xb3, 0x12, 0x57, 0xd2, 0x89, 0xa8, + 0x9c, 0x3a, 0x0f, 0x0e, 0xd5, 0xbd, 0x71, 0xb5, 0x0d, 0xae, 0x04, 0xfb, 0x9e, 0xaa, 0xf2, + 0x21, 0x22, 0x68, 0x95, 0xee, 0xca, 0x10, 0xf2, 0x53, 0x51, 0x64, 0x31, 0x8d, 0x12, 0x60, + 0x06, 0x43, 0x02, 0x3f, 0x41, 0x0b, 0x4c, 0x7f, 0x37, 0x5c, 0xfe, 0x86, 0x29, 0xe1, 0x05, + 0xea, 0x7b, 0x04, 0x04, 0xe3, 0x19, 0x42, 0xf5, 0xd0, 0x20, 0x8c, 0xb1, 0x9e, 0xf7, 0x21, + 0x64, 0xd2, 0x87, 0x7e, 0xd4, 0xee, 0x3b, 0x16, 0x11, 0xce, 0xa4, 0xee, 0xc1, 0x29, 0x61, + 0xf9, 0x34, 0xaa, 0x41, 0x17, 0xbb, 0xce, 0x04, 0xc3, 0xea, 0x38, 0xfa, 0xf6, 0x7e, 0xbb, + 0xe6, 0x68, 0xef, 0x0e, 0xaf, 0x6b, 0x8f, 0x90, 0x9a, 0x0b, 0x22, 0xed, 0x81, 0x68, 0x17, + 0x7a, 0xc2, 0xde, 0x31, 0x2a, 0xf0, 0x6f, 0xac, 0x7b, 0xc4, 0x62, 0x60, 0x62, 0x38, 0x03, + 0x42, 0x52, 0x88, 0x44, 0x18, 0xd3, 0xcf, 0x3d, 0xd8, 0x0f, 0x03, 0x3e, 0x01, 0xc9, 0xcd, + 0x43, 0x2e, 0xde, 0xa8, 0x73, 0x19, 0xb8, 0xbd, 0xf5, 0xb4, 0x00, 0xd1, 0x7c, 0xb0, 0xd4, + 0x74, 0x3f, 0x21, 0x74, 0xc1, 0x50, 0x37, 0xc7, 0xfd, 0x9e, 0x5c, 0xdc, 0xe9, 0x45, 0x86, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x6e, 0xfc, 0xcf, 0xd6, 0x50, 0x59, + 0x56, 0xba, 0x5c, 0x84, 0x50, 0x05, 0xa2, 0x3f, 0xbd, 0x48, 0xe9, 0x9d, 0xce, 0xde, 0x81, + 0xb8, 0x40, 0xa0, 0xd0, 0x5b, 0x7e, 0x8e, 0x35, 0xfd, 0x0a, 0xf3, 0x08, 0xe3, 0x37, 0xfa, + 0xd8, 0xb9, 0x08, 0x94, 0x79, 0xdd, 0x35, 0x73, 0x05, 0x8e, 0x64, 0x48, 0x82, 0xe9, 0xb0, + 0x49, 0x1d, 0x06, 0x89, 0x26, 0xc4, 0x8c, 0x06, 0x52, 0xad, 0xd9, 0x32, 0x00, 0x06, 0x00, + 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x56, 0x90, 0xe6, 0xfe, 0xfc, 0x61, 0x4c, + 0xd6, 0x40, 0xc0, 0xfc, 0x9c, 0x69, 0x91, 0x0d, 0x55, 0xd2, 0x0f, 0x25, 0xad, 0xfe, 0x3e, + 0x4c, 0x9c, 0x06, 0x96, 0x9a, 0xe3, 0x2a, 0x51, 0xbe, 0x9a, 0x7a, 0x06, 0x13, 0x03, 0x39, + 0x58, 0x9a, 0x79, 0x4c, 0x5a, 0x25, 0x5a, 0x2c, 0xd2, 0xf8, 0x68, 0x30, 0x8b, 0xcc, 0x89, + 0x88, 0x3a, 0x44, 0x0b, 0x4d, 0xa1, 0xbc, 0xd1, 0xbd, 0x74, 0xdb, 0x3d, 0xef, 0x27, 0xa6, + 0x4e, 0xe8, 0x32, 0x34, 0xd7, 0x81, 0x3f, 0x46, 0x09, 0x1f, 0xff, 0x84, 0x9d, 0x9d, 0x62, + 0x1c, 0x11, 0x61, 0x5d, 0xd0, 0x73, 0x16, 0xe3, 0x9e, 0x00, 0xf0, 0x42, 0x42, 0x8a, 0xab, + 0xd6, 0x1b, 0x3b, 0x2e, 0x01, 0x15, 0x0f, 0xf5, 0xe9, 0xdb, 0x99, 0x6d, 0x5c, 0x8a, 0x3a, + 0xc1, 0x68, 0x54, 0xbf, 0xee, 0xea, 0xd1, 0x00, 0x8b, 0xe5, 0x3b, 0x7d, 0x15, 0x4a, 0x5e, + 0x36, 0x80, 0x58, 0x13, 0x14, 0xce, 0xd6, 0x26, 0x36, 0x7d, 0x7d, 0xc0, 0x34, 0x53, 0x5f, + 0x54, 0x62, 0x0f, 0xa5, 0x9d, 0xb4, 0x7d, 0x5e, 0xa3, 0xc4, 0xe8, 0x44, 0x66, 0xf7, 0x37, + 0x38, 0xef, 0x91, 0x3c, 0x6a, 0x36, 0x4a, 0xd8, 0x3d, 0x09, 0x45, 0x00, 0x62, 0xa8, 0x9c, + 0x25, 0x2a, 0x02, 0xa7, 0x13, 0xf9, 0xa3, 0x70, 0xb0, 0xeb, 0xdd, 0xf2, 0x0b, 0x82, 0xf1, + 0x43, 0x75, 0xc3, 0x18, 0xa0, 0xaf, 0x1d, 0x9c, 0x75, 0xe4, 0x90, 0xdf, 0x51, 0x6b, 0x3e, + 0x1f, 0x26, 0xf9, 0x68, 0x63, 0x9c, 0xc5, 0xef, 0xae, 0x44, 0xed, 0x31, 0x3f, 0xca, 0xaf, + 0x54, 0x28, 0xe3, 0x7e, 0x85, 0xea, 0x43, 0x75, 0x39, 0x82, 0xf3, 0x13, 0xd5, 0xa2, 0x9f, + 0x79, 0xee, 0xd4, 0x8f, 0xec, 0x3a, 0x56, 0x3f, 0x0e, 0x27, 0xb5, 0x17, 0x17, 0x43, 0x93, + 0x45, 0x82, 0x31, 0x0f, 0x7a, 0x56, 0xfb, 0xb7, 0x78, 0xef, 0x6e, 0x43, 0x63, 0x3a, 0x54, + 0xcc, 0xb6, 0x5b, 0x5c, 0x19, 0x11, 0xe2, 0x5d, 0xd5, 0xbe, 0xb0, 0xa2, 0x18, 0x77, 0x8e, + 0x97, 0x15, 0x12, 0x3a, 0x8c, 0x01, 0xc3, 0x98, 0x9b, 0xc3, 0x66, 0x2c, 0xc3, 0xa8, 0x94, + 0xc6, 0x2d, 0x0b, 0x77, 0x88, 0xc4, 0xa1, 0xdc, 0xd6, 0x96, 0x35, 0xea, 0xb9, 0xd8, 0x55, + 0xfc, 0x73, 0xf0, 0xd8, 0x2a, 0x38, 0x50, 0x16, 0x40, 0xa5, 0xe4, 0x91, 0xc3, 0x33, 0xc8, + 0xcc, 0xf1, 0xd1, 0x42, 0xf7, 0x9a, 0x35, 0x24, 0x21, 0xb2, 0x23, 0x0f, 0xd7, 0xb9, 0xca, + 0xfd, 0x96, 0x75, 0x9b, 0xf0, 0x07, 0x19, 0xcb, 0xa4, 0xe8, 0x78, 0x35, 0xe6, 0x3d, 0xdd, + 0x89, 0x76, 0x34, 0xa2, 0xf6, 0xa6, 0xac, 0x96, 0x25, 0xea, 0x2d, 0x05, 0x3f, 0xba, 0x50, + 0xb8, 0x5f, 0x12, 0xc9, 0xc6, 0x2b, 0xfc, 0xd0, 0x97, 0x33, 0xdc, 0x31, 0xce, 0xa4, 0xd0, + 0xf3, 0xd6, 0x44, 0x9b, 0xc4, 0xc4, 0x29, 0x96, 0xc6, 0x44, 0x94, 0x4c, 0xbc, 0xbc, 0xca, + 0xaf, 0xd1, 0x6d, 0x9f, 0xbb, 0x2a, 0xbf, 0xfc, 0xb5, 0x8e, 0xe9, 0xab, 0xd1, 0xbd, 0x4d, + 0xa7, 0x29, 0x32, 0x5b, 0xc4, 0x85, 0x0d, 0x10, 0xe7, 0xf2, 0x58, 0xd5, 0xba, 0xa3, 0x1b, + 0xaf, 0x9d, 0xff, 0xfd, 0xb0, 0x82, 0x19, 0xad, 0x30, 0xb7, 0x25, 0x23, 0x10, 0x77, 0x76, + 0xc4, 0x32, 0x95, 0x2c, 0xa7, 0xdd, 0x09, 0x35, 0xb6, 0x5a, 0xc8, 0x2d, 0x19, 0x8d, 0x55, + 0x4b, 0xa2, 0xc5, 0x7b, 0x82, 0x3e, 0x13, 0x3d, 0x5d, 0x5b, 0xa5, 0x19, 0x37, 0x47, 0xd8, + 0xdc, 0x09, 0x0e, 0x46, 0x19, 0xfc, 0x29, 0xd8, 0x70, 0x70, 0x26, 0xcb, 0x51, 0x83, 0x75, + 0x2b, 0x2c, 0xf2, 0xe7, 0xf7, 0xf9, 0xea, 0xb7, 0xfd, 0xa7, 0xe2, 0x8c, 0x68, 0x35, 0x8c, + 0xc7, 0x58, 0x4b, 0x22, 0xd2, 0x65, 0xf4, 0xd9, 0x03, 0x8b, 0xdb, 0xb6, 0xa8, 0xca, 0x7d, + 0x7c, 0xc0, 0x7f, 0x27, 0xf4, 0xd2, 0xaf, 0xfb, 0x95, 0x60, 0x37, 0x5c, 0x94, 0x6d, 0x6c, + 0x1f, 0xd7, 0x54, 0x6a, 0x05, 0xb2, 0x45, 0x0d, 0xc7, 0xe0, 0x17, 0x37, 0x9a, 0xd3, 0x0c, + 0x16, 0x2d, 0x9c, 0x1e, 0xee, 0x5a, 0x74, 0xea, 0x3c, 0x92, 0x6c, 0x10, 0x84, 0x96, 0xd2, + 0x67, 0x96, 0x99, 0xee, 0xb1, 0x41, 0x9e, 0x97, 0x11, 0x16, 0xce, 0xf3, 0xdd, 0x6a, 0xd8, + 0x7e, 0xfc, 0xae, 0xdc, 0xb0, 0x8a, 0xc0, 0xa0, 0xbb, 0x09, 0x9a, 0x48, 0xcc, 0x5c, 0xd1, + 0x49, 0x69, 0x8a, 0x1c, 0x97, 0xcc, 0x46, 0xdf, 0x8f, 0x29, 0x01, 0x69, 0x98, 0xce, 0x0e, + 0x43, 0x56, 0x1e, 0x71, 0xa6, 0x09, 0x07, 0x84, 0x0b, 0x79, 0x86, 0xa7, 0x14, 0x2b, 0x6a, + 0xc0, 0x6b, 0xf8, 0x3d, 0xd6, 0x55, 0x45, 0xb9, 0xbd, 0x62, 0x33, 0x7e, 0xab, 0xd5, 0x5f, + 0x7c, 0x66, 0x45, 0xd9, 0xf5, 0xcf, 0x14, 0x5d, 0x0a, 0x81, 0x24, 0xe4, 0x91, 0xa6, 0x91, + 0xfa, 0x19, 0x32, 0xcc, 0xce, 0x71, 0x9d, 0xda, 0xa3, 0xc2, 0xfb, 0x54, 0xf7, 0x36, 0x45, + 0x0f, 0xf9, 0x90, 0x19, 0x88, 0xa7, 0x40, 0xa8, 0xc5, 0x5c, 0x21, 0xfe, 0xa0, 0x06, 0x6b, + 0x10, 0x93, 0x24, 0x45, 0x86, 0x31, 0xe0, 0xfd, 0x51, 0x64, 0xb7, 0xed, 0xbc, 0x38, 0xa0, + 0x8b, 0xdf, 0x2e, 0xb0, 0xf7, 0x20, 0xb3, 0x5d, 0xaa, 0x55, 0x43, 0x7f, 0x5a, 0x29, 0xb9, + 0xdc, 0xd6, 0x5f, 0xc8, 0xea, 0x49, 0x30, 0xe3, 0x59, 0x8a, 0x76, 0xf7, 0x08, 0x3e, 0x39, + 0xc3, 0x88, 0xae, 0x43, 0x62, 0x44, 0xe4, 0x65, 0xc1, 0xfe, 0xf0, 0xa4, 0x33, 0xec, 0x6c, + 0xd5, 0xe6, 0xf3, 0xc3, 0x7c, 0xa4, 0x47, 0x1f, 0xe6, 0xca, 0x6e, 0xf4, 0x83, 0x65, 0x61, + 0xf4, 0xfb, 0x2c, 0x60, 0xff, 0x27, 0xa9, 0xc7, 0x5d, 0x43, 0x1a, 0x2e, 0xbd, 0x28, 0x1e, + 0x22, 0xa5, 0x6b, 0xef, 0x99, 0x3d, 0x3e, 0x50, 0xbd, 0xe1, 0x8b, 0x99, 0xf0, 0x42, 0xbe, + 0xdd, 0x60, 0x35, 0x8a, 0x3e, 0xc6, 0xd8, 0x6c, 0x74, 0x72, 0x4b, 0xf3, 0x34, 0x50, 0x23, + 0x4f, 0x58, 0x3c, 0x26, 0xb2, 0x59, 0x0b, 0xd3, 0x3d, 0x26, 0x3a, 0xe3, 0x04, 0x17, 0xc7, + 0x4b, 0x92, 0x7c, 0xe5, 0xac, 0xae, 0x02, 0x37, 0xb8, 0x39, 0x54, 0x4a, 0x5f, 0xb7, 0x6d, + 0x5f, 0xd9, 0xd3, 0x58, 0xed, 0xa3, 0xeb, 0xea, 0x26, 0x69, 0xfd, 0xec, 0xd2, 0xd4, 0xe0, + 0xea, 0x19, 0xe1, 0x85, 0xaf, 0xbd, 0xad, 0x51, 0x4a, 0x84, 0x78, 0xde, 0xc6, 0x4d, 0x0e, + 0x5c, 0x9e, 0x88, 0xbe, 0xf1, 0x19, 0x1a, 0xd9, 0x92, 0xc1, 0xea, 0x75, 0x0b, 0x84, 0x90, + 0x4d, 0x39, 0x03, 0x69, 0x10, 0x0b, 0xb0, 0x37, 0xd6, 0xec, 0x9f, 0xe6, 0xed, 0x3a, 0xd6, + 0x9d, 0xee, 0x76, 0xa0, 0x3e, 0xbf, 0xb9, 0x91, 0x81, 0x2f, 0xac, 0xc1, 0xdd, 0x04, 0x3b, + 0xe0, 0x63, 0x60, 0xca, 0xa9, 0xf8, 0x52, 0xf0, 0x28, 0x10, 0xd3, 0x79, 0x74, 0x20, 0xe5, + 0x8a, 0x1b, 0x5c, 0xa3, 0x38, 0x51, 0xfe, 0x64, 0xf5, 0x98, 0x80, 0x88, 0x41, 0xe2, 0xfd, + 0xec, 0x9a, 0xe8, 0x05, 0x29, 0xf9, 0x1b, 0xc5, 0xf3, 0x15, 0x2d, 0x58, 0x9a, 0xc4, 0x75, + 0xfd, 0x99, 0x23, 0x24, 0xcf, 0xb1, 0x00, 0x62, 0x47, 0xaa, 0x14, 0xa3, 0x7e, 0x1e, 0x38, + 0x9a, 0xa8, 0x18, 0xf7, 0x62, 0xb9, 0x9e, 0x3f, 0x10, 0x2f, 0x45, 0xf4, 0x36, 0x0e, 0x91, + 0x23, 0x1c, 0x04, 0xcf, 0x4d, 0xf9, 0xd4, 0x21, 0x7b, 0x86, 0x0a, 0xf7, 0x65, 0x67, 0xd5, + 0x11, 0xb2, 0x58, 0x90, 0x12, 0xd9, 0x12, 0x22, 0xe8, 0x13, 0xdf, 0x04, 0xd8, 0x4d, 0xad, + 0xa2, 0x0d, 0x7c, 0x8d, 0x71, 0xe5, 0xeb, 0x52, 0xd0, 0x26, 0xe2, 0xad, 0xaa, 0xd5, 0xcd, + 0x89, 0x28, 0xac, 0xc4, 0x2c, 0x20, 0x2d, 0xcf, 0x01, 0x27, 0x69, 0xd3, 0x81, 0xe2, 0x7e, + 0x4b, 0x25, 0x03, 0x03, 0x80, 0x67, 0xd4, 0x8d, 0x13, 0x7f, 0x59, 0x38, 0x80, 0x43, 0x0c, + 0x82, 0x70, 0x5c, 0xbd, 0xda, 0x97, 0x7f, 0x50, 0xb3, 0x8a, 0x44, 0xa5, 0xed, 0x73, 0x23, + 0x1f, 0xae, 0x55, 0x32, 0xb8, 0xa7, 0x39, 0x89, 0x6b, 0x93, 0x7a, 0x01, 0xca, 0xde, 0x59, + 0x9c, 0x52, 0xce, 0xb8, 0x38, 0x26, 0x21, 0xc8, 0x48, 0x95, 0x7f, 0xf9, 0xd8, 0x96, 0x71, + 0x72, 0xf3, 0xc1, 0x53, 0xed, 0xfb, 0xe7, 0x0b, 0xcf, 0xf1, 0x74, 0xd6, 0xe6, 0xaf, 0xe5, + 0xb7, 0x0d, 0xd2, 0x72, 0xc6, 0xe4, 0x00, 0x17, 0x72, 0xc2, 0xd7, 0xa6, 0x7b, 0x52, 0x14, + 0x0c, 0x66, 0xa2, 0x80, 0x66, 0x3d, 0x0e, 0x4e, 0xa9, 0x53, 0x0c, 0x20, 0x00, 0x41, 0xc5, + 0x3c, 0xc6, 0x75, 0x00, 0xfa, 0x64, 0x59, 0x2a, 0x02, 0xbd, 0x49, 0xc8, 0x1a, 0xaa, 0xec, + 0xb1, 0xfe, 0x67, 0xbb, 0x6f, 0xa9, 0xc1, 0x50, 0xbd, 0x63, 0xf4, 0xef, 0x4b, 0x33, 0x1f, + 0xb4, 0xad, 0xe2, 0x85, 0xa6, 0x2e, 0xd9, 0x61, 0xaf, 0x52, 0x44, 0xfe, 0x2e, 0xaa, 0x8f, + 0x69, 0x54, 0xff, 0x09, 0x32, 0xb2, 0xe7, 0x64, 0x49, 0x9f, 0x76, 0xae, 0x3a, 0x71, 0xef, + 0xc6, 0x42, 0x76, 0xda, 0x34, 0x7e, 0xe9, 0x5c, 0x01, 0xc4, 0x08, 0x28, 0xf6, 0xd9, 0x4b, + 0xcd, 0x88, 0x4d, 0xbd, 0x47, 0x2a, 0x8f, 0x51, 0x42, 0x65, 0x98, 0x95, 0x04, 0xa4, 0x3e, + 0xf3, 0x7d, 0xa7, 0xed, 0xac, 0xd8, 0x16, 0x70, 0xa4, 0x25, 0xbf, 0x1f, 0x58, 0x64, 0xdd, + 0x25, 0x55, 0x0b, 0xa4, 0xe3, 0x74, 0xb8, 0x79, 0xa9, 0xa2, 0xc5, 0x41, 0x36, 0x41, 0xd7, + 0xb7, 0x33, 0xab, 0x4a, 0xe0, 0x94, 0x10, 0xc6, 0x7e, 0x6b, 0xeb, 0x74, 0x0f, 0xcf, 0x97, + 0xa3, 0xc0, 0xc5, 0x55, 0x6f, 0xa8, 0x92, 0xba, 0x83, 0x77, 0x91, 0xdf, 0xed, 0xe8, 0x39, + 0xf2, 0x1e, 0x57, 0x08, 0xa5, 0x05, 0x94, 0x44, 0xca, 0x07, 0x37, 0x33, 0x27, 0x7e, 0xd1, + 0xbd, 0x9e, 0x1d, 0x40, 0x3e, 0x01, 0x03, 0x68, 0xfd, 0xf6, 0x44, 0xe4, 0x31, 0x9c, 0xe0, + 0xe1, 0xf4, 0x7f, 0x18, 0xaa, 0xa9, 0x3d, 0x27, 0xe8, 0xc5, 0x23, 0x79, 0x0a, 0x59, 0xd4, + 0xfe, 0xb0, 0xa7, 0x7a, 0xdc, 0xa9, 0xb0, 0xa9, 0xd5, 0xb5, 0x3d, 0xb0, 0x1c, 0x59, 0x2e, + 0x4d, 0xfd, 0x62, 0xad, 0x32, 0x4a, 0xbe, 0x3d, 0x23, 0x9e, 0x8d, 0x4f, 0xc9, 0x5f, 0xa1, + 0x07, 0x5e, 0x79, 0x0e, 0xf9, 0x2f, 0xb3, 0xdf, 0xb9, 0x4d, 0x01, 0x5e, 0x40, 0x5a, 0xd8, + 0x00, 0x78, 0xa0, 0x0a, 0xef, 0x1c, 0xa5, 0x1c, 0x0c, 0xac, 0xe7, 0x1c, 0x82, 0x37, 0xb1, + 0x67, 0x96, 0xfb, 0xe5, 0x39, 0x4c, 0x7e, 0x18, 0x7a, 0x51, 0x21, 0x0b, 0x1f, 0xa5, 0xc9, + 0x06, 0xb6, 0x39, 0x79, 0x59, 0x65, 0xb4, 0x5f, 0xca, 0x9b, 0x67, 0x7d, 0x22, 0xc6, 0x48, + 0xab, 0x92, 0xd1, 0xf2, 0x6e, 0xa1, 0xff, 0xc2, 0x5d, 0x8d, 0xdb, 0x10, 0xf8, 0xf1, 0x42, + 0x88, 0x98, 0x41, 0x8b, 0x59, 0x52, 0x91, 0x23, 0x77, 0xa2, 0xf4, 0x9c, 0xf4, 0xe1, 0xb2, + 0x55, 0xe7, 0x27, 0xaa, 0x9f, 0x6c, 0x99, 0x53, 0xf0, 0x68, 0xde, 0xa5, 0x92, 0x60, 0xec, + 0x1b, 0x62, 0xb8, 0xe7, 0x7e, 0x6f, 0x61, 0xe6, 0x1c, 0x24, 0x6b, 0x63, 0xec, 0x7d, 0xab, + 0x81, 0xd7, 0xb2, 0x8b, 0x8d, 0xc8, 0x9e, 0x37, 0x3e, 0x27, 0xb9, 0x19, 0x7e, 0x96, 0xcf, + 0xdd, 0x67, 0x32, 0x42, 0x89, 0x49, 0xbc, 0x2a, 0xc0, 0x0c, 0x04, 0xf3, 0x20, 0x8b, 0x33, + 0x82, 0x0d, 0xa6, 0x65, 0x43, 0x56, 0x12, 0x6c, 0xb8, 0xe9, 0x33, 0x92, 0x1e, 0xf5, 0x2b, + 0x65, 0x61, 0xa1, 0xef, 0x5e, 0xe3, 0x43, 0x10, 0x42, 0x35, 0xec, 0x50, 0xbd, 0xd2, 0xd3, + 0x15, 0xbd, 0x86, 0x63, 0x2a, 0x88, 0xcf, 0x58, 0x47, 0xe0, 0xe5, 0x80, 0x28, 0xe1, 0xbc, + 0xf6, 0x01, 0xd3, 0xd8, 0x31, 0x03, 0xaa, 0xcc, 0x93, 0xf5, 0x60, 0x1a, 0xf6, 0xbf, 0xf0, + 0x18, 0x1b, 0x8f, 0xaa, 0x72, 0x0d, 0x68, 0xce, 0x19, 0xa2, 0x36, 0xe9, 0xf9, 0xd2, 0x88, + 0xd3, 0xe3, 0x36, 0x7f, 0x95, 0x9b, 0x2a, 0xa0, 0x14, 0x53, 0xd0, 0xa7, 0xa1, 0xc3, 0xf0, + 0x6d, 0x7a, 0xba, 0x70, 0xc6, 0x63, 0xf2, 0xb8, 0x72, 0x97, 0x35, 0x11, 0x40, 0x9b, 0x3a, + 0x50, 0x97, 0x22, 0xc9, 0x8b, 0xe6, 0x10, 0x4b, 0x6a, 0x36, 0x60, 0xb1, 0xc9, 0x6a, 0xdc, + 0x6f, 0x52, 0x69, 0x98, 0x5f, 0x33, 0xb8, 0x91, 0x77, 0x96, 0x04, 0xc9, 0x2e, 0x19, 0xb1, + 0x27, 0x07, 0xe8, 0x8f, 0x56, 0x69, 0x21, 0xe3, 0x90, 0xfd, 0x8c, 0x48, 0x31, 0x93, 0x59, + 0x04, 0xc4, 0xf8, 0x46, 0xad, 0x48, 0x6e, 0x71, 0x00, 0xba, 0xfa, 0x35, 0x70, 0x49, 0x31, + 0x64, 0x86, 0x5d, 0xf0, 0x1e, 0x20, 0x3c, 0xa6, 0x83, 0x43, 0xc2, 0x26, 0x72, 0xef, 0x08, + 0x7f, 0x32, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xb9, 0x7e, 0x92, + 0x7c, 0xb6, 0xce, 0xd7, 0xde, 0xa4, 0x52, 0x2e, 0x4d, 0x92, 0x78, 0x5d, 0xad, 0x6d, 0x63, + 0x95, 0x4f, 0xb2, 0xec, 0xba, 0xca, 0x16, 0x80, 0x1c, 0xe9, 0x2a, 0xff, 0x0c, 0xfd, 0xe0, + 0x1c, 0x43, 0x91, 0xbb, 0x35, 0xd5, 0x13, 0xec, 0x97, 0x7a, 0x9a, 0x1c, 0xbb, 0x8c, 0xfe, + 0xd9, 0xac, 0x9e, 0x2b, 0x75, 0xfd, 0x12, 0xfb, 0x29, 0x96, 0x71, 0xc8, 0x59, 0x47, 0x5e, + 0xc3, 0x5c, 0x13, 0xe2, 0x3b, 0x40, 0xfa, 0x97, 0xf3, 0x21, 0x98, 0xe9, 0xe0, 0xa4, 0xf8, + 0xb1, 0x82, 0x8c, 0xb4, 0x7c, 0xd4, 0xa0, 0x27, 0xdd, 0xb2, 0x94, 0xc9, 0x56, 0x2e, 0x6e, + 0x22, 0xd3, 0xda, 0xa0, 0xa0, 0x43, 0x75, 0xd7, 0x01, 0xd1, 0x4d, 0x91, 0x12, 0xf6, 0x5f, + 0x87, 0x27, 0x83, 0xf1, 0x1a, 0xb8, 0x44, 0x91, 0x06, 0xb3, 0x6c, 0x2f, 0x24, 0xe0, 0x1a, + 0x17, 0xbf, 0x3d, 0x6c, 0xd4, 0x8a, 0x8d, 0xc4, 0x18, 0xf5, 0xdd, 0xc4, 0x89, 0xe0, 0x4e, + 0xfb, 0x93, 0x5b, 0x70, 0xf6, 0x93, 0xf5, 0xeb, 0xf8, 0x52, 0x3d, 0xdb, 0x8a, 0x79, 0x44, + 0x3f, 0xec, 0x99, 0xa6, 0xb0, 0xa6, 0x86, 0xdc, 0x3e, 0xbc, 0x04, 0x77, 0x44, 0xce, 0xd6, + 0xfe, 0x00, 0x43, 0xa0, 0xa3, 0x7a, 0xf2, 0x20, 0x16, 0x6f, 0x21, 0x89, 0x17, 0x1f, 0x88, + 0x4e, 0xac, 0xad, 0x69, 0x7b, 0x69, 0x7e, 0xfd, 0xdb, 0xfc, 0x89, 0x35, 0xd1, 0xb3, 0xa3, + 0x01, 0x75, 0x5b, 0xe9, 0xc5, 0x60, 0x61, 0xf9, 0x4b, 0xca, 0x38, 0xd0, 0x34, 0xd4, 0x13, + 0xc6, 0xab, 0xce, 0xc8, 0x96, 0xab, 0xe6, 0x90, 0x73, 0x50, 0x34, 0x64, 0x98, 0x7f, 0xd0, + 0xf0, 0x85, 0x7c, 0x2b, 0xe9, 0x4e, 0x65, 0xbc, 0x34, 0xd0, 0xb1, 0xdd, 0xe1, 0x8c, 0xce, + 0xff, 0x31, 0x12, 0x33, 0x3d, 0x0d, 0xf2, 0x4c, 0xff, 0xe1, 0x27, 0xab, 0xd9, 0x6c, 0x2e, + 0x2e, 0xf6, 0x7c, 0x05, 0xf1, 0x3b, 0xfd, 0x19, 0xe3, 0x49, 0x3b, 0xa6, 0xd6, 0xc2, 0x38, + 0x6c, 0x6a, 0x28, 0x8d, 0x85, 0x5e, 0x19, 0xda, 0xb9, 0x32, 0x2e, 0xa4, 0xe6, 0xdb, 0xa6, + 0x4c, 0x36, 0xcd, 0xb6, 0x82, 0x35, 0xad, 0x85, 0xc3, 0x21, 0x89, 0x61, 0x14, 0xa1, 0xc5, + 0xb1, 0xa9, 0x69, 0xbf, 0x21, 0x1b, 0x2b, 0x87, 0x28, 0xfb, 0x15, 0xcf, 0x97, 0xe6, 0x10, + 0x2b, 0xf7, 0x9f, 0x03, 0x5d, 0x9b, 0xbc, 0x3d, 0x2e, 0x8b, 0x3b, 0x98, 0x2a, 0x82, 0xe7, + 0xa2, 0xb5, 0x72, 0x46, 0xb9, 0xcc, 0xa1, 0x24, 0xe6, 0xe6, 0x70, 0xf8, 0x31, 0x46, 0x6a, + 0x70, 0x34, 0xe6, 0x34, 0x7d, 0x3f, 0x6f, 0xa0, 0xdb, 0x81, 0xda, 0x1a, 0x40, 0x17, 0xeb, + 0x9b, 0x3d, 0x1f, 0x23, 0x1d, 0x61, 0x1d, 0x1b, 0x14, 0x29, 0x66, 0xf1, 0xff, 0xe9, 0x48, + 0x09, 0x48, 0x5d, 0x1d, 0x02, 0xe5, 0x6e, 0x33, 0x3b, 0x4b, 0xe3, 0x86, 0xd8, 0x2f, 0x34, + 0xc2, 0xe2, 0x34, 0x3a, 0xb2, 0xe8, 0x25, 0x64, 0xd8, 0x4e, 0x51, 0x42, 0x8d, 0x48, 0x56, + 0x3c, 0xd6, 0x8d, 0x37, 0xaf, 0x41, 0x4e, 0xf5, 0x10, 0x32, 0x82, 0x16, 0xb1, 0x24, 0xa6, + 0x45, 0x58, 0xbf, 0x35, 0xd1, 0x39, 0x24, 0xe2, 0xc1, 0xe3, 0x7f, 0xfb, 0xee, 0x36, 0x04, + 0x6b, 0x62, 0x99, 0x7d, 0x85, 0x88, 0x4d, 0x71, 0xca, 0xda, 0x5e, 0x08, 0x3d, 0x27, 0xfc, + 0x32, 0x98, 0xd6, 0xd9, 0x83, 0x1a, 0x65, 0xdb, 0xa8, 0x9e, 0xfd, 0x3b, 0xe9, 0x05, 0x49, + 0x5c, 0xb0, 0xb8, 0x93, 0xfe, 0xc4, 0x55, 0xf7, 0x7e, 0xa7, 0x2f, 0xc0, 0x06, 0x80, 0xee, + 0xe6, 0x68, 0x4d, 0x88, 0xc8, 0x1d, 0xa7, 0x2c, 0xf2, 0x94, 0xc8, 0xbd, 0x0a, 0xd0, 0xa0, + 0x1e, 0x53, 0x42, 0xca, 0x38, 0x52, 0xf3, 0xe1, 0x75, 0x05, 0xbe, 0x02, 0x41, 0xd4, 0x86, + 0x19, 0xf7, 0xfa, 0x3a, 0x45, 0x73, 0x31, 0xd1, 0xe4, 0xb6, 0xf5, 0xb2, 0x4f, 0x16, 0x0d, + 0x36, 0x5a, 0x09, 0xe3, 0x80, 0xe7, 0xea, 0x39, 0x87, 0xb3, 0x4c, 0x20, 0x73, 0x8d, 0x00, + 0xbe, 0x47, 0x82, 0x8e, 0xf9, 0xfc, 0x61, 0x1f, 0xe2, 0xc5, 0xad, 0xdb, 0xd6, 0x90, 0xa8, + 0x92, 0x82, 0x6a, 0x0e, 0x8e, 0x5d, 0x1e, 0xae, 0x44, 0xa1, 0x84, 0xd3, 0xc1, 0x17, 0x53, + 0xc3, 0x7f, 0x63, 0x72, 0x8b, 0x46, 0x30, 0x92, 0x1d, 0x16, 0x6f, 0xfa, 0x75, 0xc5, 0x1b, + 0xc7, 0x5a, 0xc6, 0xca, 0xd9, 0x44, 0xd4, 0x06, 0x49, 0xb7, 0x1a, 0x88, 0xb3, 0x06, 0x0a, + 0xaa, 0xd4, 0x45, 0x65, 0x30, 0x47, 0x2a, 0x6d, 0xf4, 0xa7, 0x95, 0x97, 0x52, 0xb2, 0x25, + 0x0e, 0x02, 0xc7, 0xb2, 0x4a, 0x84, 0xff, 0x7c, 0x0e, 0x1f, 0x59, 0xbf, 0x96, 0xfb, 0xaa, + 0x1a, 0x87, 0xbe, 0xfa, 0xf7, 0x8c, 0xfe, 0xb8, 0x1c, 0xb7, 0xe1, 0x07, 0x6c, 0xc4, 0x01, + 0x0d, 0x96, 0xf7, 0xaa, 0x52, 0x17, 0x20, 0x2a, 0xcd, 0x1e, 0x3d, 0x64, 0xa8, 0x2b, 0x27, + 0x46, 0x4b, 0xe2, 0x11, 0xd7, 0x4b, 0xf4, 0xd4, 0x26, 0x24, 0xb1, 0x6a, 0xdd, 0xf5, 0x0c, + 0x6a, 0x9b, 0x2b, 0x73, 0x6e, 0x8f, 0x1a, 0x49, 0x91, 0x7c, 0xf2, 0x70, 0x5d, 0x4e, 0xad, + 0x1c, 0x72, 0x1a, 0x2f, 0x30, 0xda, 0xfe, 0x1e, 0x33, 0xf5, 0xaf, 0xa2, 0x25, 0x95, 0xe9, + 0xca, 0x1e, 0x39, 0xcd, 0x8d, 0xc0, 0x94, 0xcf, 0x89, 0x10, 0xf5, 0xee, 0xe7, 0xf8, 0x35, + 0x82, 0xc4, 0x84, 0xd8, 0xab, 0xc9, 0x28, 0x65, 0x82, 0x3f, 0xba, 0x62, 0xde, 0xce, 0xb7, + 0xbd, 0x3b, 0x55, 0x19, 0x27, 0xfe, 0x91, 0xb8, 0xf8, 0x12, 0xb5, 0xc2, 0xe2, 0xe2, 0x5d, + 0x51, 0x8d, 0x82, 0x56, 0xbf, 0x9b, 0x0e, 0xee, 0x3d, 0xef, 0x67, 0xb4, 0x5f, 0xfc, 0x2e, + 0x9b, 0xbb, 0x65, 0xa4, 0xa4, 0xc9, 0x6b, 0x74, 0xef, 0x40, 0x45, 0xd9, 0xb1, 0x73, 0xd7, + 0x2d, 0xfc, 0x60, 0xee, 0xca, 0x3e, 0x4a, 0x06, 0xc4, 0x01, 0x71, 0x9b, 0xac, 0x73, 0xc8, + 0xb7, 0x72, 0x58, 0xb4, 0x28, 0x0f, 0x09, 0x9e, 0xee, 0x8d, 0x9a, 0x30, 0x0e, 0xdf, 0xd9, + 0x21, 0x11, 0x76, 0xa6, 0x90, 0x0c, 0x1c, 0xb1, 0xc9, 0x28, 0x77, 0x9b, 0x81, 0x9d, 0x96, + 0x18, 0x29, 0xb7, 0xbd, 0x1d, 0x0e, 0xec, 0x07, 0x84, 0xc9, 0xe1, 0xc0, 0xc9, 0x6f, 0x81, + 0x29, 0x0b, 0x46, 0xf9, 0x5e, 0xfa, 0x7b, 0xb5, 0x58, 0xe6, 0x9e, 0x57, 0xdc, 0xcf, 0x0e, + 0x3e, 0xbf, 0x8c, 0xa3, 0x0c, 0xe4, 0xa7, 0x3a, 0xb9, 0xad, 0x08, 0x82, 0x5f, 0x9a, 0xd7, + 0xcf, 0xfc, 0x35, 0xcd, 0x56, 0x31, 0xee, 0xd7, 0x7c, 0xc0, 0x6e, 0x0f, 0x10, 0x6c, 0x8a, + 0xa7, 0xd8, 0x23, 0x1b, 0xe6, 0x7b, 0x8c, 0xf1, 0x42, 0x27, 0xbd, 0x0d, 0x96, 0x45, 0x0f, + 0x8c, 0x3f, 0xb4, 0xc1, 0x98, 0xf0, 0x11, 0x64, 0x16, 0x9c, 0xef, 0x6c, 0xda, 0x01, 0x7d, + 0x4f, 0x2f, 0x49, 0xa7, 0xb9, 0xae, 0x4e, 0x8c, 0x35, 0xc7, 0x98, 0xb0, 0x4f, 0xfa, 0xdc, + 0x05, 0xa8, 0x06, 0x9b, 0xea, 0xa6, 0x8e, 0x24, 0x92, 0x9b, 0xeb, 0x90, 0xba, 0x3a, 0x4e, + 0x84, 0xc3, 0x9d, 0x46, 0x10, 0x19, 0x31, 0x4d, 0x73, 0xa7, 0xdd, 0x32, 0x37, 0x00, 0x6b, + 0x2c, 0x25, 0x72, 0xfe, 0x78, 0xb5, 0x26, 0xa6, 0xf2, 0xa7, 0xe7, 0xd7, 0x64, 0xa0, 0xec, + 0x45, 0x65, 0x4c, 0x82, 0x1f, 0x7e, 0xb8, 0x79, 0xf9, 0xb9, 0xd7, 0xcd, 0x37, 0x34, 0x43, + 0x93, 0x21, 0xaf, 0x95, 0x5d, 0x4b, 0xa5, 0xb8, 0x3e, 0x3e, 0x2c, 0xa0, 0x0b, 0x86, 0x4c, + 0x19, 0x18, 0x38, 0x0a, 0x39, 0xb1, 0xb5, 0x3b, 0x37, 0x3b, 0x29, 0x6f, 0xdc, 0x08, 0xae, + 0xe5, 0xbd, 0x93, 0x4d, 0x29, 0x90, 0x77, 0x52, 0x13, 0x10, 0xdf, 0xf4, 0x1a, 0x59, 0xda, + 0xf2, 0x78, 0x0e, 0xa8, 0x10, 0x33, 0x0e, 0x40, 0xb1, 0xc5, 0xae, 0xa1, 0xbc, 0x39, 0x82, + 0x71, 0xa2, 0x27, 0xa2, 0xb8, 0x8f, 0x6c, 0xd9, 0x6c, 0x96, 0x24, 0x1d, 0x0c, 0x32, 0x18, + 0x4e, 0xe3, 0xca, 0xba, 0xba, 0xfa, 0xce, 0xe7, 0x1c, 0x27, 0xad, 0x78, 0x4d, 0x23, 0xde, + 0xa8, 0x6c, 0xfe, 0x4b, 0xc9, 0x29, 0x23, 0xc4, 0xe3, 0x88, 0x51, 0xdc, 0x93, 0x1e, 0x5a, + 0x06, 0xf7, 0x3a, 0xba, 0x2b, 0xd2, 0x47, 0x41, 0x0e, 0xc9, 0xd5, 0x13, 0xbe, 0x52, 0xe7, + 0x31, 0xe8, 0xd7, 0xc7, 0xd6, 0x27, 0x0e, 0xe4, 0x8d, 0x30, 0x61, 0x40, 0xb7, 0xe1, 0x5f, + 0x28, 0x1b, 0xbb, 0x2a, 0xf0, 0xb0, 0x0f, 0x61, 0xd7, 0x6f, 0xc1, 0x1e, 0xd5, 0x37, 0x65, + 0x78, 0xae, 0x39, 0xc1, 0x85, 0x3a, 0x84, 0x7f, 0xc0, 0xce, 0x96, 0x19, 0xce, 0x36, 0x5f, + 0x3f, 0x41, 0x93, 0xe9, 0xaf, 0x5b, 0x5c, 0x08, 0xec, 0xec, 0xf1, 0xa9, 0x9a, 0xb3, 0x23, + 0xa4, 0xe7, 0xaa, 0xb4, 0x7a, 0x10, 0x2b, 0x76, 0x12, 0x7b, 0x51, 0xf7, 0x01, 0xbc, 0x08, + 0xd1, 0x07, 0x45, 0x67, 0x78, 0xe7, 0x36, 0x24, 0xfc, 0xfc, 0x04, 0xac, 0x37, 0xf9, 0xba, + 0xf3, 0x7f, 0x5c, 0x98, 0xbd, 0x1d, 0x2f, 0x85, 0x8f, 0x93, 0x7c, 0xcf, 0x57, 0x15, 0x91, + 0x9a, 0x62, 0xb0, 0x91, 0xf9, 0x8e, 0x75, 0x43, 0x50, 0xfb, 0x45, 0x07, 0x9d, 0xb9, 0x7a, + 0x47, 0x10, 0xc7, 0xfe, 0x43, 0xb5, 0xe2, 0x43, 0x1e, 0x25, 0x1a, 0x5a, 0x2b, 0x1a, 0xab, + 0xac, 0xad, 0x85, 0xd4, 0x00, 0x94, 0x9e, 0x0e, 0x24, 0xa1, 0x74, 0xd7, 0xe8, 0xc4, 0x10, + 0xab, 0xb6, 0xa4, 0x73, 0x81, 0x48, 0xf1, 0xfe, 0xa2, 0x3b, 0x4a, 0x68, 0x6b, 0x19, 0x0e, + 0xe2, 0xde, 0x79, 0x38, 0xac, 0x53, 0x14, 0x09, 0x16, 0x0e, 0x58, 0x2d, 0x2f, 0xd3, 0xbd, + 0x90, 0x6a, 0x7c, 0xb1, 0xd6, 0x50, 0x36, 0x8f, 0x6a, 0x80, 0x2e, 0x40, 0x0a, 0xab, 0x6e, + 0x4a, 0xc6, 0xe5, 0xd7, 0xe7, 0x1e, 0x8a, 0xf0, 0x51, 0xe9, 0xe6, 0xdc, 0x8b, 0xd0, 0xad, + 0xf7, 0xe1, 0x69, 0x95, 0x14, 0xc4, 0xa1, 0x04, 0x0c, 0xd1, 0x91, 0x8a, 0x3c, 0x0d, 0x28, + 0xff, 0x97, 0x65, 0xec, 0xd2, 0x90, 0x8b, 0xbe, 0xe2, 0x6c, 0xfe, 0xa8, 0x9b, 0x0f, 0x9e, + 0xe2, 0xba, 0x5a, 0xcd, 0x05, 0x75, 0x0f, 0xc8, 0x6a, 0x86, 0x78, 0xfe, 0x0f, 0x43, 0x8f, + 0x0e, 0xf4, 0xa8, 0x12, 0xe7, 0x30, 0x63, 0xe0, 0x87, 0xa3, 0xa9, 0x29, 0x6e, 0x9d, 0xab, + 0xaf, 0x40, 0xe3, 0x5d, 0x39, 0xa0, 0x9a, 0x83, 0xc8, 0x53, 0xb1, 0xc2, 0xe3, 0xdf, 0xa4, + 0x78, 0x9b, 0xfa, 0x43, 0xf7, 0xc8, 0xf7, 0xd5, 0xad, 0xf7, 0xda, 0x29, 0x7c, 0x4b, 0xf3, + 0xf0, 0xfb, 0x5d, 0x2a, 0x64, 0xab, 0x04, 0xd1, 0xfb, 0x0a, 0xa5, 0x75, 0xbd, 0xb7, 0xdd, + 0xf5, 0x50, 0xb0, 0xab, 0x4d, 0xe0, 0x97, 0xf1, 0x9f, 0x02, 0xdb, 0x52, 0xba, 0x23, 0xb5, + 0x71, 0xd7, 0xf1, 0x2f, 0xf6, 0xd2, 0xfd, 0xe8, 0x00, 0x8b, 0x17, 0x9f, 0x59, 0x46, 0x0f, + 0xa2, 0xc7, 0x77, 0xf9, 0xcc, 0x83, 0x0d, 0x3d, 0x6f, 0x27, 0x81, 0x19, 0xe4, 0x04, 0xfc, + 0xa8, 0x4a, 0xfd, 0x2e, 0xb1, 0xb6, 0x03, 0x6d, 0x4b, 0x33, 0xb7, 0x52, 0x15, 0xc7, 0x9a, + 0xe1, 0x02, 0x41, 0xb0, 0x55, 0x6b, 0xb2, 0x6b, 0xed, 0xde, 0xc7, 0xbb, 0xcb, 0x49, 0x98, + 0x4b, 0xe8, 0x0b, 0x95, 0x27, 0x44, 0xc1, 0xc4, 0x1d, 0xa2, 0x71, 0xa7, 0xba, 0xf3, 0xef, + 0x84, 0x0d, 0xb9, 0x9a, 0xbf, 0xb8, 0x4b, 0xe3, 0xe4, 0xf3, 0x3c, 0x49, 0xc6, 0x79, 0x41, + 0xf0, 0x34, 0x78, 0x8b, 0xb2, 0x58, 0x2c, 0x52, 0xc4, 0x7e, 0xad, 0x89, 0xc6, 0x99, 0x71, + 0xf7, 0xe7, 0xac, 0xac, 0x53, 0xf7, 0x08, 0x0c, 0xc4, 0x45, 0x67, 0x15, 0x2b, 0xf2, 0x79, + 0x89, 0x2f, 0x52, 0x57, 0xac, 0xff, 0x97, 0x9f, 0x43, 0xca, 0x0a, 0x99, 0xd2, 0x28, 0x91, + 0xac, 0x28, 0xbe, 0x7f, 0x75, 0x01, 0x18, 0xa1, 0xdc, 0xc9, 0x8d, 0x1c, 0x87, 0xd8, 0x52, + 0x73, 0x36, 0x08, 0x5d, 0xca, 0xd5, 0xe2, 0x58, 0x3e, 0xbd, 0xa4, 0xb1, 0x0b, 0xb0, 0xec, + 0xae, 0x86, 0x81, 0x09, 0x7a, 0x0b, 0x83, 0xba, 0x8f, 0x3c, 0x41, 0x3e, 0x1c, 0xde, 0x0b, + 0xcc, 0x7d, 0x79, 0x2d, 0xcb, 0xa8, 0x97, 0xbe, 0x5e, 0x7a, 0x31, 0xa4, 0xa6, 0x56, 0x84, + 0x3c, 0xe0, 0x8d, 0x6e, 0x0e, 0x6e, 0x14, 0x88, 0xd6, 0xea, 0x30, 0xab, 0x48, 0x84, 0xc4, + 0xfa, 0x05, 0x35, 0x32, 0x1a, 0xbc, 0xcb, 0xa9, 0x09, 0x66, 0xfe, 0x61, 0x31, 0xd4, 0x22, + 0xb0, 0xdd, 0x31, 0x06, 0x84, 0x36, 0xaf, 0x74, 0x83, 0xa8, 0x65, 0x46, 0xde, 0xc2, 0xdd, + 0xd0, 0x26, 0xeb, 0x71, 0x95, 0x70, 0x6f, 0xc5, 0xcc, 0x0e, 0xc5, 0x3e, 0xd4, 0x0c, 0xad, + 0xbf, 0xe3, 0xf6, 0xe7, 0xc4, 0xee, 0xc7, 0x13, 0x27, 0xce, 0xdb, 0x7a, 0xab, 0x18, 0x77, + 0x02, 0x00, 0x14, 0x87, 0xe0, 0x94, 0x5b, 0xc1, 0xe8, 0xdc, 0xec, 0xf8, 0x20, 0x75, 0xad, + 0x87, 0x1a, 0x0b, 0xfa, 0x2f, 0x06, 0x55, 0xc2, 0xc2, 0xf7, 0xb9, 0x6c, 0x28, 0x49, 0x29, + 0xfd, 0x4c, 0xbf, 0x92, 0x77, 0x6a, 0x55, 0x99, 0x93, 0x18, 0x45, 0xdd, 0x24, 0xe3, 0xbe, + 0x6a, 0xaa, 0xc2, 0x3c, 0xdb, 0x93, 0xc0, 0x23, 0x56, 0xed, 0xfd, 0xb2, 0xe6, 0x4f, 0x0c, + 0x1d, 0xb9, 0xee, 0x97, 0xd0, 0x1b, 0xe1, 0xa1, 0x4b, 0x93, 0x3c, 0xd9, 0x56, 0x4d, 0xd6, + 0xb7, 0x20, 0x92, 0x7b, 0x15, 0x3a, 0x30, 0xf2, 0x69, 0x43, 0x86, 0x4c, 0x8d, 0x11, 0xab, + 0xc7, 0x8a, 0xe4, 0x66, 0x3d, 0xe3, 0x88, 0xe0, 0x4d, 0x53, 0x11, 0xdf, 0x73, 0x63, 0xc0, + 0xa9, 0x84, 0xf0, 0x03, 0xca, 0x97, 0x1d, 0x3f, 0xd0, 0x61, 0x29, 0x43, 0x07, 0x57, 0xbb, + 0x69, 0x21, 0x40, 0x82, 0x71, 0x58, 0xd9, 0x41, 0x8a, 0x56, 0xb3, 0x41, 0xd3, 0x9a, 0xf7, + 0x9a, 0x6c, 0x41, 0x9b, 0xc7, 0x84, 0x3a, 0xf1, 0xf9, 0x10, 0xb4, 0x61, 0x9d, 0xd2, 0x30, + 0xcc, 0x48, 0xde, 0x23, 0x22, 0xed, 0x85, 0x65, 0x0c, 0x08, 0x78, 0x24, 0x85, 0x07, 0x43, + 0x9c, 0xda, 0x2b, 0x34, 0xbd, 0x3f, 0xe3, 0x25, 0x22, 0x91, 0xf1, 0x20, 0x35, 0xb0, 0x65, + 0x10, 0xda, 0xae, 0x28, 0x4d, 0x10, 0xea, 0x90, 0x0b, 0x60, 0x64, 0xf4, 0xf6, 0x7f, 0x08, + 0xd8, 0x14, 0x81, 0x19, 0x88, 0xc5, 0x50, 0x6a, 0x08, 0x5b, 0x60, 0x05, 0x9d, 0x11, 0x9c, + 0x1d, 0x5f, 0x55, 0x84, 0x79, 0xcf, 0x9f, 0x39, 0x6b, 0xde, 0x72, 0x58, 0x20, 0x9d, 0x4f, + 0x59, 0x63, 0x2d, 0xe4, 0x8b, 0x53, 0x69, 0x4a, 0xab, 0x1f, 0x6d, 0xc5, 0x7c, 0xb9, 0x07, + 0x00, 0x93, 0xa0, 0xf3, 0x3f, 0x88, 0x35, 0xc2, 0xbe, 0x26, 0x53, 0x3d, 0xf4, 0x56, 0x41, + 0x9d, 0x1f, 0xde, 0xde, 0x51, 0xcf, 0xc7, 0x86, 0x66, 0x61, 0x41, 0x90, 0x1d, 0x71, 0x37, + 0x07, 0x6d, 0x30, 0xfd, 0x29, 0xc2, 0x1c, 0x0f, 0xc8, 0x6a, 0x04, 0x26, 0x4a, 0x3a, 0x68, + 0x7a, 0x13, 0x76, 0xcf, 0x11, 0x94, 0x30, 0xdd, 0xcf, 0x7a, 0x62, 0xd6, 0x3d, 0x38, 0x29, + 0x62, 0xb5, 0x7b, 0x16, 0x1d, 0x91, 0xce, 0x24, 0xa9, 0x0e, 0x54, 0x91, 0x70, 0x6e, 0x03, + 0x33, 0x5f, 0x07, 0x0d, 0x1d, 0x48, 0xa6, 0x21, 0x6f, 0xf4, 0x4c, 0x6f, 0xed, 0x05, 0xfe, + 0x51, 0x3e, 0x87, 0x1b, 0xfe, 0x96, 0x08, 0xff, 0x73, 0x2b, 0xa5, 0x22, 0x4d, 0x90, 0x3b, + 0x2f, 0xa0, 0xca, 0xdb, 0x20, 0x43, 0x0c, 0xeb, 0x94, 0x8b, 0x3e, 0x6f, 0x56, 0x18, 0xe1, + 0xa4, 0xde, 0xe0, 0x94, 0xea, 0x22, 0xe7, 0x0c, 0x25, 0xed, 0x1b, 0x70, 0xb3, 0x50, 0x90, + 0x54, 0xc3, 0xe5, 0x0e, 0x8e, 0xbb, 0xd1, 0xed, 0xa5, 0xc6, 0xd9, 0x80, 0x20, 0x5c, 0x27, + 0xfa, 0x16, 0xe9, 0x94, 0xe9, 0xaf, 0xf5, 0xba, 0xc3, 0x98, 0x3a, 0x05, 0x9c, 0x9f, 0x30, + 0x9a, 0x13, 0x5a, 0x58, 0xd9, 0xda, 0x57, 0x55, 0x8c, 0xcd, 0x7c, 0xac, 0xa6, 0x6e, 0x47, + 0x25, 0xaa, 0xb9, 0xb0, 0xeb, 0x7e, 0xd1, 0xdf, 0x03, 0x7a, 0x5e, 0x3f, 0x32, 0xf3, 0x95, + 0xd5, 0x51, 0x36, 0xab, 0x0e, 0x25, 0xfc, 0x10, 0x55, 0xc1, 0x58, 0xe2, 0x2f, 0xa3, 0x9f, + 0x2e, 0xbf, 0x9a, 0x70, 0x37, 0x00, 0x31, 0xc2, 0x31, 0xce, 0x21, 0x96, 0xf7, 0xb2, 0x02, + 0x40, 0x2d, 0x61, 0x38, 0xf4, 0xba, 0xdf, 0xee, 0x17, 0xfd, 0xf6, 0x97, 0x4b, 0x94, 0x4b, + 0x46, 0xf2, 0x77, 0x5a, 0xc6, 0xe2, 0x08, 0xf7, 0x03, 0x13, 0xa5, 0xe7, 0x86, 0xe6, 0xcd, + 0x8c, 0x00, 0xe9, 0xf4, 0x4c, 0x16, 0x79, 0x73, 0x41, 0xcd, 0x40, 0x0b, 0x38, 0x25, 0xe3, + 0x33, 0xc2, 0xda, 0x64, 0x29, 0x07, 0xd4, 0x41, 0xd3, 0x15, 0xb8, 0x16, 0x97, 0x13, 0x13, + 0xf0, 0xdf, 0x9d, 0x25, 0x2f, 0x7e, 0xb2, 0xd2, 0xe0, 0x90, 0xb7, 0x18, 0xa3, 0x6d, 0x23, + 0xe4, 0x25, 0xd0, 0x1f, 0x2c, 0x5f, 0x00, 0xd2, 0x2a, 0xf0, 0x97, 0x46, 0xbb, 0x92, 0xba, + 0xcd, 0x86, 0x05, 0x6e, 0xd7, 0x3e, 0x19, 0xa0, 0xce, 0x42, 0x12, 0x25, 0x2f, 0x58, 0xde, + 0x94, 0x0c, 0x04, 0x16, 0x84, 0x14, 0x27, 0xb4, 0x40, 0xb9, 0x78, 0xf1, 0x5e, 0x04, 0xa1, + 0x61, 0x3c, 0xf1, 0xbe, 0xe3, 0x6b, 0x49, 0x3e, 0x66, 0x84, 0x5f, 0xba, 0x10, 0xfe, 0x29, + 0x55, 0xd5, 0x80, 0x36, 0x8f, 0x8a, 0x44, 0x32, 0xa7, 0x98, 0x48, 0x61, 0x3f, 0x72, 0x7e, + 0xac, 0xd2, 0x1e, 0xc1, 0x90, 0xdf, 0x21, 0x95, 0x2a, 0x29, 0xaf, 0x8b, 0xde, 0x96, 0x60, + 0x6d, 0x64, 0xca, 0x99, 0x4c, 0x80, 0x22, 0x4c, 0x7d, 0x4b, 0xe7, 0xe0, 0xe7, 0xff, 0xcf, + 0x51, 0x60, 0xa7, 0x3f, 0xfd, 0xd9, 0xbf, 0xe8, 0x70, 0xb9, 0xed, 0x06, 0xd4, 0xec, 0x8a, + 0xc6, 0x28, 0xd5, 0x7d, 0x5a, 0xe4, 0x04, 0x7e, 0xc0, 0x83, 0xaf, 0xaa, 0x62, 0x69, 0xe9, + 0x80, 0xbb, 0x59, 0xb2, 0xe9, 0x62, 0x4d, 0x87, 0x49, 0xc8, 0xe8, 0xfb, 0xb3, 0x28, 0xe5, + 0x10, 0x9c, 0xb5, 0xdc, 0xe5, 0xec, 0x62, 0x75, 0x2f, 0x40, 0xe5, 0xd5, 0x23, 0x41, 0x0a, + 0x5e, 0x73, 0xa9, 0x48, 0xe5, 0x6d, 0xce, 0x40, 0xf4, 0x69, 0xde, 0xf9, 0xde, 0x85, 0x49, + 0x3e, 0xff, 0x4a, 0x0f, 0xad, 0x7a, 0x04, 0x3a, 0xdc, 0xfc, 0x17, 0xbc, 0xa9, 0x53, 0x2c, + 0x53, 0x66, 0xc1, 0x85, 0x65, 0xe7, 0xde, 0x1a, 0x21, 0xcf, 0xac, 0x2e, 0x6b, 0xac, 0x74, + 0x1d, 0x55, 0x1a, 0xe5, 0x1f, 0x11, 0x79, 0x00, 0x60, 0x93, 0xaf, 0xc8, 0x1c, 0x18, 0x3c, + 0xc0, 0x0b, 0x97, 0x12, 0x34, 0xf7, 0xfa, 0xd9, 0x8a, 0x49, 0xd6, 0xf4, 0xee, 0x75, 0x8d, + 0x5c, 0x66, 0xa2, 0xe1, 0x07, 0x1b, 0xda, 0x70, 0xa8, 0xd6, 0x3e, 0x9f, 0xa7, 0xa2, 0x14, + 0xa1, 0xd5, 0x45, 0xaa, 0x0c, 0xb2, 0x5f, 0x64, 0xd6, 0x04, 0x0c, 0xc8, 0xa5, 0x89, 0xf6, + 0xed, 0xbc, 0x10, 0xb5, 0xaf, 0xf7, 0x39, 0xdd, 0xe8, 0xf4, 0xab, 0x67, 0xcf, 0xd7, 0x69, + 0x32, 0xea, 0x96, 0xc7, 0x38, 0x43, 0x8c, 0xec, 0xf2, 0x8a, 0x84, 0x88, 0xa9, 0xd8, 0x67, + 0x05, 0x51, 0x4e, 0xdf, 0x80, 0x74, 0x38, 0xcf, 0x24, 0x37, 0xa9, 0x9d, 0x11, 0xdd, 0x04, + 0xd4, 0xf0, 0x2c, 0x7a, 0x31, 0x78, 0x1b, 0xe9, 0x92, 0x90, 0x35, 0x25, 0x75, 0xa7, 0x8c, + 0x6a, 0x26, 0x45, 0xfd, 0xaf, 0x8a, 0x1f, 0xc1, 0x1f, 0x61, 0x32, 0x31, 0xf0, 0x4c, 0xfc, + 0x1f, 0x8c, 0xc5, 0xee, 0x81, 0xaf, 0xc3, 0x86, 0x9b, 0x82, 0xa6, 0x1d, 0x8f, 0xa8, 0xc1, + 0x0c, 0x2d, 0xdd, 0x21, 0x86, 0x68, 0xe6, 0x66, 0xcf, 0x65, 0x00, 0x73, 0x11, 0xf0, 0xe1, + 0xab, 0xcc, 0x20, 0xab, 0x6f, 0x68, 0x41, 0xfa, 0x00, 0xed, 0xf6, 0xaa, 0x9f, 0xcb, 0x96, + 0x24, 0x52, 0xeb, 0x65, 0x27, 0xcb, 0x53, 0xf8, 0x06, 0xff, 0x30, 0x9e, 0x59, 0xe0, 0x38, + 0x46, 0x38, 0x7c, 0x22, 0xda, 0x05, 0x25, 0x2e, 0xda, 0xfc, 0x21, 0x87, 0x6f, 0x83, 0x35, + 0x2d, 0x90, 0x93, 0x1c, 0xaf, 0xf3, 0x16, 0x92, 0xa5, 0x6e, 0x0d, 0xdb, 0xdc, 0xf6, 0x4e, + 0x22, 0x34, 0xa2, 0xa7, 0xc5, 0xda, 0x31, 0xac, 0x49, 0x75, 0x52, 0x59, 0x4e, 0xdd, 0x11, + 0xd9, 0x8e, 0x33, 0x76, 0x13, 0xad, 0xfb, 0x19, 0x18, 0x0e, 0xb7, 0x31, 0x2a, 0xe2, 0x31, + 0xc3, 0x6a, 0x4f, 0x2e, 0x10, 0x92, 0x28, 0xa5, 0xd3, 0x11, 0x6e, 0x65, 0xe7, 0x20, 0x49, + 0x51, 0x61, 0xbd, 0x42, 0x3e, 0xc6, 0x90, 0xad, 0xa4, 0x5e, 0xf1, 0x76, 0x22, 0xc3, 0x58, + 0xac, 0xaa, 0x22, 0x7a, 0x0c, 0x32, 0x44, 0x9d, 0x75, 0xfd, 0x7b, 0xa5, 0xfa, 0xd9, 0xc7, + 0x19, 0xf7, 0x93, 0x2e, 0x41, 0x45, 0x63, 0x43, 0x58, 0x75, 0x73, 0xc2, 0x7d, 0xfd, 0xd3, + 0x3b, 0x2d, 0x0e, 0x4a, 0xce, 0x88, 0x18, 0x17, 0xd2, 0x6c, 0xa0, 0xb8, 0xbb, 0xf8, 0x34, + 0x02, 0x8f, 0x79, 0xe8, 0xa8, 0xfe, 0x7c, 0x81, 0x17, 0x08, 0xe0, 0xbe, 0x6b, 0x4b, 0xd1, + 0x2b, 0x5c, 0x15, 0xd4, 0x11, 0x76, 0x43, 0xc3, 0xa6, 0x06, 0x2a, 0x10, 0x8b, 0x01, 0xc2, + 0x2e, 0x0b, 0xe4, 0xe8, 0xe3, 0x0d, 0xbd, 0x7e, 0xc6, 0x76, 0x91, 0x05, 0xf8, 0xfb, 0x3c, + 0x5d, 0x03, 0xb0, 0x54, 0x93, 0xb7, 0xc8, 0xad, 0x94, 0xa9, 0x1c, 0x0a, 0xec, 0x68, 0x7b, + 0xca, 0xba, 0xda, 0x88, 0xb7, 0x6a, 0xc3, 0x89, 0x0d, 0x44, 0x93, 0xfe, 0x6e, 0xb2, 0xe5, + 0x15, 0xa0, 0x6a, 0x5f, 0x60, 0x6c, 0x97, 0x20, 0x01, 0x19, 0xa1, 0x78, 0x51, 0x1c, 0xa2, + 0x65, 0x7e, 0x7c, 0x7a, 0xfe, 0x62, 0x7d, 0x2d, 0x8c, 0x87, 0x02, 0x6b, 0x1b, 0xbb, 0x4f, + 0x3e, 0x62, 0x90, 0x4d, 0x77, 0x6f, 0x50, 0xb8, 0x38, 0x78, 0x67, 0xfc, 0x72, 0x35, 0x05, + 0x2b, 0x06, 0x44, 0xa3, 0xe8, 0x3a, 0x07, 0xbe, 0xf1, 0xb4, 0x3a, 0x1b, 0x87, 0x18, 0x44, + 0x84, 0xb5, 0x68, 0x80, 0xf6, 0xde, 0x13, 0xf4, 0xba, 0x77, 0xb0, 0x5b, 0xfd, 0xb2, 0x22, + 0xb4, 0x48, 0x28, 0xf3, 0xcd, 0x7f, 0x52, 0xec, 0x47, 0xdb, 0x13, 0xe4, 0x70, 0x1f, 0x02, + 0x4d, 0x10, 0x2a, 0x9f, 0x6c, 0xa3, 0x8e, 0x5b, 0x46, 0x1d, 0xdf, 0x7b, 0x5d, 0x4b, 0x71, + 0x32, 0x1d, 0xd1, 0x99, 0x33, 0xdd, 0x70, 0xb2, 0x77, 0x71, 0x00, 0x1e, 0x76, 0xd1, 0x8f, + 0x9f, 0xa4, 0xf4, 0xfd, 0x38, 0x9d, 0x64, 0xa9, 0x54, 0xd2, 0x30, 0x03, 0x31, 0x47, 0xaf, + 0x17, 0xc9, 0x7f, 0x31, 0x58, 0xd8, 0x3f, 0x0a, 0x56, 0x9e, 0xa4, 0xe1, 0x58, 0x82, 0xc7, + 0x6f, 0x67, 0x10, 0x77, 0xf8, 0x59, 0x93, 0x45, 0x09, 0x58, 0xfc, 0x94, 0xe1, 0xd7, 0xca, + 0x3e, 0xd9, 0x46, 0x7b, 0x6b, 0x96, 0x9e, 0x67, 0x37, 0x5c, 0xfb, 0xc0, 0x0d, 0x07, 0xfe, + 0x03, 0x92, 0xce, 0x87, 0x19, 0x34, 0x6b, 0x50, 0xec, 0xa1, 0x1d, 0x5c, 0x73, 0xdf, 0x28, + 0x04, 0x47, 0xdc, 0xfb, 0x67, 0xa7, 0x49, 0xf9, 0xbc, 0x72, 0x34, 0x55, 0x0e, 0xa4, 0x11, + 0x9f, 0x86, 0x57, 0x8e, 0xcc, 0x1e, 0xcd, 0xcd, 0xa1, 0xa6, 0x87, 0x20, 0xf7, 0xfd, 0xef, + 0x18, 0x1d, 0xb4, 0x54, 0x88, 0xb0, 0xe9, 0xfb, 0xda, 0xa7, 0x61, 0xb4, 0x32, 0x36, 0xda, + 0x53, 0xda, 0xa4, 0xeb, 0xde, 0xca, 0x1f, 0x3c, 0xbc, 0x9f, 0x3e, 0x61, 0x07, 0x2d, 0x30, + 0x99, 0x41, 0xc2, 0x67, 0x1e, 0x80, 0x57, 0xbb, 0x89, 0x23, 0x47, 0xf6, 0x8b, 0x40, 0x2d, + 0x01, 0x4e, 0x03, 0x48, 0xf1, 0xd3, 0x4d, 0xa0, 0xbc, 0x91, 0xf0, 0x43, 0x51, 0xe6, 0x5b, + 0x99, 0x1f, 0xd8, 0x72, 0x2c, 0xf9, 0x5d, 0xa1, 0xbc, 0x63, 0x8d, 0x2c, 0x13, 0xb8, 0x9f, + 0x47, 0x09, 0x3c, 0xf0, 0xae, 0xad, 0xbf, 0xc1, 0x88, 0x7e, 0x32, 0xd3, 0x74, 0x7f, 0x5c, + 0xe7, 0xb9, 0x3e, 0xaf, 0x08, 0x62, 0xd0, 0xed, 0x60, 0x9c, 0xdd, 0x49, 0x5b, 0x22, 0xde, + 0x53, 0x05, 0xd1, 0x33, 0x97, 0x98, 0x73, 0x43, 0x2e, 0x34, 0xf1, 0xcf, 0xa0, 0x98, 0x5a, + 0x14, 0xeb, 0xa0, 0xad, 0xb7, 0xb3, 0x36, 0xb9, 0x1a, 0xa7, 0x98, 0x0e, 0x13, 0xa8, 0x22, + 0xc0, 0xfe, 0xc0, 0x20, 0xd0, 0x11, 0x8d, 0x58, 0x2d, 0xff, 0x15, 0x21, 0x61, 0x6a, 0xc5, + 0xd0, 0x9d, 0x31, 0x89, 0x0a, 0xd0, 0x44, 0xf2, 0x5f, 0x3f, 0x6d, 0x9e, 0xc5, 0xc8, 0x3c, + 0x36, 0x51, 0x5c, 0x46, 0x1c, 0xf3, 0x7e, 0x2b, 0xdc, 0xbe, 0xee, 0x70, 0xe5, 0x66, 0xaf, + 0x1a, 0xbd, 0xe4, 0x3b, 0x44, 0x1c, 0x8c, 0xc1, 0xd0, 0x68, 0x53, 0xf4, 0xb8, 0x81, 0x93, + 0xe3, 0x52, 0xff, 0xaf, 0x2c, 0xc7, 0xab, 0x1c, 0xba, 0x22, 0x36, 0xba, 0x02, 0x95, 0x91, + 0x90, 0x3e, 0xa6, 0x1f, 0x86, 0xce, 0xe1, 0x43, 0x90, 0x0d, 0xe0, 0xa8, 0xf3, 0xe2, 0x82, + 0x48, 0x51, 0x96, 0x71, 0x09, 0xe8, 0x79, 0x61, 0x6e, 0x1d, 0xd6, 0x19, 0x19, 0x70, 0xdf, + 0x0a, 0x97, 0x43, 0xcf, 0x27, 0xe0, 0x57, 0x43, 0xb2, 0x89, 0xbe, 0xa6, 0x59, 0xd7, 0x3c, + 0x50, 0xa5, 0xb0, 0x44, 0xf7, 0xfc, 0x53, 0xd3, 0xa9, 0x57, 0xc1, 0x95, 0x44, 0x0d, 0x0d, + 0x19, 0xb2, 0x01, 0xe4, 0xad, 0x06, 0xbb, 0xc7, 0xfa, 0x04, 0xad, 0xd4, 0x52, 0xdf, 0x0c, + 0xb5, 0xf7, 0x89, 0x50, 0xa9, 0xe9, 0x57, 0x69, 0x1d, 0xd2, 0x17, 0xf9, 0xbf, 0x3e, 0xd1, + 0x08, 0x8e, 0xae, 0x03, 0x2a, 0x4d, 0xf3, 0xee, 0xa1, 0xa1, 0x8f, 0x65, 0x62, 0x42, 0x28, + 0xa3, 0x9c, 0xd9, 0x37, 0x96, 0x8b, 0x2c, 0x30, 0x98, 0xcf, 0xc8, 0x34, 0xdd, 0x03, 0xcd, + 0x48, 0x4b, 0x39, 0x16, 0xe4, 0xfb, 0x9a, 0x01, 0xc3, 0x0e, 0x77, 0xbc, 0x7a, 0x84, 0x5b, + 0xff, 0x25, 0x45, 0x63, 0x28, 0x28, 0x9b, 0x7b, 0x3a, 0x5a, 0x81, 0x0f, 0x56, 0x8d, 0xe7, + 0xe8, 0x00, 0xc6, 0x0e, 0x09, 0x29, 0xfb, 0x96, 0x1f, 0xee, 0xae, 0x3b, 0xaf, 0x58, 0xee, + 0x5e, 0x75, 0x4f, 0xdb, 0x7d, 0x8a, 0x9b, 0x65, 0xbb, 0xc4, 0xb6, 0xd6, 0xd2, 0x49, 0xb4, + 0x9c, 0x74, 0x64, 0x36, 0x07, 0x49, 0x0b, 0x0d, 0xb2, 0xe4, 0x26, 0xe3, 0xf2, 0x3a, 0x30, + 0xbd, 0x7f, 0xe8, 0x11, 0x51, 0x1b, 0x78, 0xa4, 0xac, 0xc7, 0x81, 0xf8, 0x8d, 0xb2, 0x17, + 0x23, 0xef, 0xe2, 0x0e, 0x7d, 0x0c, 0x4c, 0x22, 0x19, 0x0c, 0xd4, 0x5a, 0x57, 0x4e, 0xb7, + 0xa7, 0xf9, 0x50, 0xfc, 0x94, 0x74, 0xdc, 0xae, 0x77, 0xdb, 0xb1, 0x89, 0x1c, 0x75, 0xbf, + 0x4e, 0xc8, 0x49, 0x55, 0x65, 0xe3, 0x80, 0xee, 0xa9, 0xc9, 0x00, 0x3b, 0xca, 0xac, 0x28, + 0x54, 0x17, 0xe8, 0x77, 0xb0, 0xb5, 0x77, 0x04, 0x34, 0xd8, 0x41, 0xe0, 0x5a, 0x71, 0x87, + 0x8e, 0x05, 0xc6, 0xcc, 0xe3, 0xda, 0x2b, 0x75, 0x4e, 0xce, 0xa4, 0x70, 0x0c, 0x4a, 0x4e, + 0x18, 0x67, 0xf8, 0x59, 0x4e, 0x89, 0x38, 0xc4, 0x4a, 0x67, 0x7a, 0xc0, 0x1e, 0xb5, 0x0b, + 0xf2, 0x27, 0x18, 0x87, 0x2f, 0x08, 0xa4, 0x3d, 0x56, 0xbd, 0xec, 0xd9, 0x2f, 0x48, 0x39, + 0x3f, 0x4b, 0xf8, 0x69, 0xb6, 0x1f, 0x81, 0xf0, 0x63, 0x6d, 0x69, 0x90, 0xa9, 0x27, 0x60, + 0x29, 0x07, 0x52, 0x0e, 0x12, 0xd5, 0xa7, 0xce, 0x2c, 0x3d, 0x6c, 0x8d, 0x31, 0x7f, 0x7b, + 0xca, 0x0e, 0x9a, 0xb8, 0x0a, 0x6a, 0xec, 0xe8, 0xcd, 0x62, 0x6e, 0x2a, 0x91, 0xf9, 0xee, + 0xad, 0xad, 0xd8, 0xd7, 0x09, 0xb2, 0xce, 0xe1, 0x03, 0x9a, 0x8c, 0xb9, 0x11, 0x5d, 0x37, + 0xee, 0x41, 0x63, 0x0c, 0x37, 0x00, 0x6c, 0x2e, 0xb2, 0x3c, 0x4c, 0x22, 0x9c, 0x28, 0x9c, + 0x50, 0xf7, 0x2f, 0x94, 0x8c, 0xea, 0xb0, 0xb7, 0x7c, 0x85, 0x81, 0xf2, 0x6f, 0x34, 0x82, + 0xa6, 0x12, 0x31, 0xc7, 0x72, 0x1d, 0xa5, 0x6c, 0x2c, 0x6c, 0xa0, 0x00, 0x81, 0xc0, 0x8a, + 0xc6, 0xa2, 0x08, 0x36, 0x70, 0x77, 0xa9, 0x26, 0xe8, 0xe7, 0x6b, 0xaf, 0x79, 0x4a, 0x8a, + 0xa2, 0x92, 0xa5, 0x79, 0x99, 0x70, 0xd2, 0x28, 0x2c, 0x2e, 0xc6, 0x15, 0x4a, 0x73, 0xdf, + 0x04, 0xc3, 0xaf, 0xa2, 0xc4, 0xa9, 0xbf, 0xfb, 0x80, 0xb5, 0x38, 0xb5, 0xec, 0x15, 0x9e, + 0x94, 0x0e, 0x9b, 0xdd, 0x22, 0x5a, 0x99, 0x53, 0x58, 0x29, 0x8a, 0x37, 0x74, 0xea, 0x73, + 0x85, 0xe1, 0xe5, 0x63, 0x3a, 0x60, 0x16, 0x71, 0xb3, 0x8c, 0x1e, 0xda, 0x3e, 0x20, 0xfa, + 0x1b, 0x53, 0xeb, 0x8c, 0xa8, 0x82, 0xd4, 0xb9, 0x12, 0x32, 0xa6, 0x14, 0xd0, 0xa2, 0x64, + 0xc2, 0xab, 0x25, 0xb8, 0xc4, 0xd0, 0x79, 0xa2, 0x77, 0xc6, 0x28, 0xd9, 0x90, 0xc1, 0xbb, + 0xf3, 0x51, 0xf5, 0xdd, 0x1d, 0x6c, 0x27, 0x2c, 0xc7, 0xab, 0x75, 0xcb, 0xc8, 0x0a, 0xc7, + 0x20, 0x45, 0x87, 0xdc, 0xdc, 0xed, 0x9c, 0xfc, 0x18, 0xc4, 0x20, 0xc4, 0x75, 0x9d, 0xbf, + 0x2c, 0x0b, 0x44, 0xd9, 0x6c, 0x20, 0x6a, 0x5e, 0xb4, 0xdd, 0x73, 0x5a, 0x0e, 0xf8, 0x17, + 0x2f, 0x7a, 0x2c, 0x0e, 0xe5, 0x9c, 0x97, 0x33, 0x29, 0x23, 0x91, 0x90, 0x64, 0x76, 0x5c, + 0xb2, 0x69, 0x40, 0x1a, 0x8c, 0x93, 0x0d, 0x06, 0xe5, 0x60, 0x49, 0x9e, 0xb5, 0xda, 0xd4, + 0x07, 0x46, 0x21, 0xcf, 0x57, 0xae, 0xc8, 0xde, 0xa6, 0x11, 0xd8, 0x37, 0xca, 0x66, 0x4e, + 0x5c, 0x04, 0x24, 0x42, 0x9b, 0xfb, 0x53, 0x65, 0x26, 0x9f, 0xd1, 0x1b, 0x25, 0xa8, 0x0c, + 0x74, 0x62, 0xd1, 0xee, 0x02, 0xe3, 0xf9, 0xd3, 0xc3, 0x11, 0x31, 0x73, 0x07, 0xbc, 0x3a, + 0xcf, 0x54, 0xce, 0xc2, 0x23, 0xe7, 0x7e, 0x65, 0xf7, 0xc8, 0xc4, 0x13, 0x52, 0x5f, 0xd7, + 0x76, 0x0d, 0x76, 0x09, 0x00, 0x41, 0x26, 0x5e, 0xbf, 0xb5, 0x28, 0x70, 0x33, 0x8d, 0xf0, + 0xb3, 0xf1, 0xa8, 0xfe, 0x04, 0xa2, 0xc9, 0x7a, 0x07, 0x39, 0x71, 0x1d, 0xa2, 0xbd, 0xc3, + 0x9e, 0xc7, 0x42, 0x0b, 0xff, 0x9e, 0x4f, 0x18, 0x34, 0x6c, 0x3f, 0x6d, 0x8e, 0x69, 0x87, + 0xb5, 0xec, 0x25, 0x7d, 0x0f, 0x33, 0xa6, 0xf9, 0x8d, 0xa4, 0x3e, 0x1e, 0x8a, 0x45, 0x5e, + 0xbc, 0x23, 0x94, 0x7a, 0x34, 0xfa, 0x0c, 0x84, 0x0c, 0x4c, 0x0d, 0x12, 0x54, 0x7c, 0xbb, + 0x18, 0xe8, 0xd2, 0xb2, 0x6c, 0x51, 0x2f, 0x6e, 0x7c, 0xeb, 0x23, 0xd3, 0x76, 0x30, 0x83, + 0x42, 0x2d, 0xd9, 0x74, 0x90, 0x49, 0xe9, 0xd1, 0x72, 0xb8, 0xf4, 0x9f, 0x3e, 0x19, 0x41, + 0xe6, 0xea, 0x6d, 0x98, 0xbc, 0x7e, 0x5f, 0x26, 0x43, 0xaf, 0xad, 0xe3, 0x0d, 0x56, 0x47, + 0x5c, 0x3f, 0x3b, 0x4e, 0xd6, 0xa9, 0xb9, 0x5e, 0xf6, 0xc2, 0x94, 0xa9, 0x17, 0x76, 0x15, + 0x5e, 0x80, 0x19, 0xbd, 0x2e, 0xa6, 0x53, 0x02, 0x2f, 0xf9, 0xa5, 0xc8, 0x89, 0xbb, 0xc1, + 0x0b, 0x15, 0xa5, 0x21, 0x14, 0xbc, 0xb7, 0x31, 0xf2, 0x5c, 0xbb, 0x71, 0x2b, 0xb3, 0xea, + 0x3a, 0x35, 0x0b, 0x57, 0xc6, 0x04, 0xc8, 0x07, 0x08, 0x48, 0x70, 0x2e, 0x8b, 0x6c, 0x30, + 0x67, 0x49, 0x89, 0xa4, 0xb5, 0x69, 0xfd, 0x25, 0x5a, 0x1f, 0xe0, 0x39, 0xe7, 0xc4, 0xc1, + 0x5b, 0xd8, 0xac, 0x04, 0xd4, 0x2f, 0x23, 0x2c, 0xcb, 0xd1, 0x46, 0xd5, 0x37, 0x79, 0x37, + 0xb2, 0x63, 0x3e, 0xa7, 0x61, 0x1c, 0xfa, 0x34, 0x50, 0x23, 0xa0, 0x53, 0x39, 0x60, 0x97, + 0x8a, 0xa4, 0x76, 0x86, 0x19, 0x16, 0xb6, 0x56, 0x50, 0x3c, 0x38, 0x9a, 0x79, 0xc4, 0xdf, + 0x57, 0x27, 0xbb, 0x6f, 0x6a, 0x65, 0xa4, 0x33, 0x6b, 0xc7, 0x36, 0xd5, 0x1c, 0xd4, 0x3b, + 0x29, 0x48, 0x37, 0x41, 0xd7, 0x66, 0xaa, 0x15, 0x08, 0x95, 0x61, 0xb0, 0x78, 0xfc, 0x98, + 0xc1, 0xa6, 0xbc, 0xd2, 0x7d, 0x37, 0xf9, 0xb0, 0x08, 0xfe, 0x36, 0xfe, 0x29, 0x60, 0x1b, + 0xe7, 0x4d, 0x6a, 0x02, 0xb6, 0x7c, 0xf4, 0x2c, 0xa9, 0x10, 0x20, 0xc7, 0xd3, 0x21, 0x3f, + 0xe6, 0x4b, 0x01, 0x65, 0xde, 0x20, 0xc7, 0xe4, 0x40, 0x40, 0x4e, 0x75, 0xa1, 0x22, 0x9d, + 0x48, 0x21, 0xe5, 0x9a, 0xed, 0xfd, 0xf9, 0x95, 0x3f, 0x6a, 0xc8, 0x2a, 0x32, 0x60, 0x9b, + 0x97, 0xdb, 0xf0, 0x78, 0x93, 0x96, 0x83, 0x86, 0x84, 0xae, 0x6f, 0x82, 0x58, 0x73, 0x66, + 0xa7, 0xd5, 0xb7, 0x5c, 0x25, 0x5d, 0xaa, 0x64, 0x32, 0x06, 0x47, 0x88, 0x00, 0x03, 0x00, + 0xfd, 0xda, 0xa8, 0xf4, 0xc4, 0xef, 0x99, 0xa4, 0x88, 0x67, 0xa4, 0x65, 0x67, 0x64, 0x26, + 0xa8, 0x62, 0xa1, 0xae, 0x98, 0x5b, 0x71, 0x20, 0x33, 0xb4, 0x18, 0xc0, 0x6d, 0xf3, 0xc3, + 0x0b, 0xf3, 0xf8, 0x5d, 0xd0, 0x2a, 0x68, 0x24, 0xfe, 0x17, 0x48, 0x78, 0xa0, 0x30, 0x9b, + 0x4c, 0xa0, 0xb8, 0x42, 0x29, 0xac, 0x60, 0xc2, 0xea, 0xb6, 0xa5, 0xff, 0x74, 0x01, 0x24, + 0x48, 0xf3, 0x1b, 0xe5, 0x62, 0x0d, 0x5a, 0x8b, 0x69, 0x66, 0x17, 0x52, 0xa7, 0xff, 0xe6, + 0x5f, 0x4b, 0xd3, 0x83, 0x4d, 0x1a, 0x2d, 0x50, 0xa2, 0x13, 0x9a, 0xd0, 0xe4, 0x92, 0xd5, + 0x47, 0xbc, 0x88, 0xb8, 0x30, 0x06, 0x4c, 0xde, 0x13, 0x39, 0x3a, 0xa7, 0x7b, 0x9e, 0x00, + 0x8d, 0xbb, 0x00, 0x4e, 0xf9, 0x5d, 0x5e, 0x84, 0x26, 0x74, 0x2e, 0x59, 0x00, 0x8b, 0x06, + 0x40, 0x12, 0x64, 0x99, 0xc4, 0x9e, 0x1f, 0xac, 0x35, 0x6b, 0xa6, 0x30, 0x44, 0x03, 0x8c, + 0x15, 0xc7, 0x67, 0x7c, 0xa5, 0x02, 0x5d, 0xe8, 0x86, 0xc4, 0x72, 0xe0, 0x2f, 0x05, 0x8c, + 0xbe, 0xda, 0x37, 0x9c, 0x60, 0x20, 0xdc, 0x56, 0x3f, 0xe9, 0xec, 0x9d, 0x63, 0x55, 0xbc, + 0x54, 0xe0, 0x58, 0xbc, 0xae, 0xb2, 0x18, 0x1a, 0xea, 0xc4, 0x23, 0xb6, 0xbb, 0x55, 0x94, + 0xb2, 0x0f, 0xad, 0x8c, 0x98, 0x79, 0x7f, 0xe5, 0xd9, 0xfc, 0x39, 0x91, 0xa3, 0x64, 0x43, + 0x98, 0x8f, 0xb3, 0x03, 0xe1, 0x9b, 0x74, 0x74, 0xaa, 0x32, 0x74, 0x46, 0xd0, 0xd3, 0x62, + 0x56, 0xfa, 0x8a, 0x21, 0x9f, 0xeb, 0x55, 0x3c, 0x07, 0xdf, 0x86, 0x7e, 0x34, 0x6b, 0xb9, + 0xfc, 0xf4, 0x38, 0x53, 0x31, 0xfa, 0xd0, 0x2c, 0x50, 0x6a, 0x2c, 0x74, 0x78, 0x01, 0x41, + 0xeb, 0x93, 0x4b, 0xf3, 0xec, 0xeb, 0xa4, 0x68, 0x67, 0x06, 0x63, 0x3d, 0x35, 0x73, 0x21, + 0x58, 0x76, 0x49, 0xd4, 0x8b, 0xdb, 0x29, 0xe5, 0x32, 0x5b, 0x09, 0xd7, 0x87, 0xc8, 0x12, + 0x03, 0x34, 0xcc, 0x6e, 0xce, 0xfd, 0xfc, 0x45, 0xe3, 0x26, 0xcb, 0x41, 0x75, 0xf0, 0x62, + 0xc1, 0x2b, 0x55, 0xca, 0xf6, 0x40, 0x70, 0x49, 0x0a, 0xb0, 0x53, 0x66, 0xa8, 0x59, 0x16, + 0x99, 0x7d, 0xa0, 0xda, 0x77, 0x24, 0x3a, 0xeb, 0xc6, 0x49, 0x0f, 0xde, 0x46, 0xdb, 0x81, + 0x53, 0x17, 0x1a, 0x0f, 0xed, 0x4e, 0xf8, 0x15, 0x29, 0x90, 0xba, 0x63, 0x8b, 0x2a, 0x41, + 0x1d, 0xf5, 0x7f, 0x4a, 0x26, 0xe9, 0x25, 0xcd, 0xd8, 0x1b, 0x39, 0x5c, 0xa7, 0xc7, 0xd1, + 0xe0, 0x8c, 0x57, 0xd1, 0x23, 0x2f, 0xec, 0x3f, 0x9c, 0x78, 0x0a, 0xc0, 0x53, 0xf2, 0x93, + 0xbb, 0x11, 0x05, 0x29, 0xbd, 0x90, 0x3b, 0x82, 0x63, 0xe4, 0x33, 0x9a, 0x85, 0xbc, 0x9c, + 0xee, 0xb2, 0x7d, 0xd6, 0x01, 0x21, 0xd5, 0x14, 0x35, 0xf2, 0x98, 0x89, 0x7a, 0xe3, 0xce, + 0x23, 0x89, 0xc0, 0xe8, 0xbd, 0x17, 0xed, 0x4b, 0xee, 0xc2, 0xba, 0xe7, 0xba, 0x5f, 0x9b, + 0x04, 0xd8, 0x8e, 0x11, 0x11, 0xab, 0x30, 0xa1, 0x98, 0x2a, 0xb2, 0x64, 0xae, 0xa0, 0xfa, + 0x20, 0x62, 0xa2, 0x75, 0xf8, 0xca, 0xb0, 0x94, 0xc0, 0x3a, 0xe5, 0x77, 0xe4, 0xb8, 0x1e, + 0x47, 0x7d, 0xc8, 0xfb, 0x39, 0x9c, 0x65, 0x0e, 0x43, 0x2e, 0x04, 0x3c, 0x11, 0x68, 0x26, + 0x26, 0x11, 0xe6, 0xa0, 0xde, 0x74, 0x09, 0x04, 0xfc, 0xa2, 0xd6, 0x60, 0x63, 0x2b, 0x57, + 0x16, 0xcf, 0xe4, 0x92, 0xc9, 0x72, 0xf8, 0x43, 0x07, 0x79, 0xe2, 0xdc, 0x01, 0x1e, 0xc3, + 0xea, 0x17, 0x1d, 0x21, 0xd7, 0x15, 0x87, 0xc6, 0x1a, 0x31, 0xd9, 0x23, 0x2a, 0x29, 0xd5, + 0x3a, 0x33, 0x1c, 0x6e, 0xbd, 0xcb, 0xf5, 0xe1, 0x9e, 0x3e, 0x7a, 0x17, 0xeb, 0xf8, 0x54, + 0x31, 0xa0, 0x32, 0x9c, 0x6e, 0x1d, 0x54, 0x96, 0xa7, 0x8c, 0xf3, 0x8f, 0x94, 0x66, 0x73, + 0x55, 0x1d, 0x60, 0x63, 0x6c, 0xa4, 0xe4, 0xad, 0xb1, 0xe3, 0x93, 0xbf, 0xad, 0xd2, 0x7f, + 0xb6, 0x53, 0x03, 0x67, 0x08, 0xe0, 0xcf, 0xa5, 0xd1, 0x1e, 0x19, 0xd5, 0x62, 0x55, 0x23, + 0xad, 0x0a, 0x2a, 0x9c, 0xfe, 0x62, 0x65, 0x93, 0x4d, 0xe6, 0x8a, 0xad, 0xbc, 0xc9, 0x95, + 0x63, 0xbd, 0xdc, 0x91, 0x36, 0xf1, 0x1d, 0x41, 0x69, 0x62, 0x9a, 0x12, 0x1d, 0x17, 0x2f, + 0x09, 0xe2, 0xa7, 0xd2, 0xdf, 0xd2, 0xc4, 0xc4, 0x05, 0xde, 0x39, 0xb7, 0xf3, 0x56, 0x98, + 0x94, 0x89, 0x2e, 0xe4, 0xd8, 0x92, 0x0c, 0xa4, 0xb3, 0xaa, 0x90, 0x3b, 0x4f, 0x82, 0x1f, + 0x46, 0x42, 0x58, 0xee, 0xb3, 0x75, 0x21, 0x49, 0x3b, 0x7a, 0xf3, 0xe0, 0xc6, 0x8b, 0x3a, + 0x98, 0x0b, 0x15, 0x99, 0x31, 0x09, 0xc5, 0x75, 0x18, 0x36, 0x25, 0x69, 0x3c, 0xeb, 0x48, + 0x35, 0x09, 0xbe, 0xdb, 0xd5, 0x47, 0xfe, 0xa1, 0x9d, 0xf7, 0x38, 0xe1, 0x63, 0x0b, 0x34, + 0xca, 0x37, 0x56, 0xb6, 0x7c, 0x49, 0xb0, 0x77, 0x61, 0xf7, 0x3a, 0xc1, 0xe3, 0x6d, 0x41, + 0xed, 0xdf, 0xfb, 0x33, 0x57, 0x90, 0xd5, 0x7e, 0x0c, 0x48, 0x63, 0x1f, 0x56, 0x1e, 0x3d, + 0x7b, 0x1e, 0x49, 0xa4, 0x79, 0x51, 0xa1, 0x76, 0x45, 0x82, 0x23, 0x43, 0x1f, 0x4e, 0xa1, + 0x4d, 0xd0, 0x84, 0x8c, 0x32, 0xaf, 0x6e, 0xd5, 0x67, 0xe9, 0x8a, 0xd5, 0xf9, 0xaa, 0x45, + 0xd8, 0x0f, 0x1f, 0x25, 0xae, 0x47, 0xeb, 0x4c, 0x48, 0x08, 0x3e, 0x63, 0xee, 0x78, 0x3f, + 0xea, 0xdc, 0x3e, 0xb6, 0x5d, 0xcf, 0x2e, 0x2a, 0x9f, 0xd1, 0x43, 0xee, 0x9f, 0xbb, 0x47, + 0x84, 0x21, 0x0a, 0x72, 0xb2, 0xcb, 0x02, 0x95, 0xa7, 0xdb, 0x3b, 0x3c, 0xdf, 0x82, 0x49, + 0xe9, 0x0a, 0x70, 0x11, 0x86, 0x29, 0xaa, 0x62, 0x07, 0xa5, 0x15, 0x31, 0x2e, 0x65, 0xf9, + 0xd9, 0x04, 0xdc, 0xfc, 0x17, 0xa6, 0xd5, 0xd2, 0x89, 0x6c, 0x68, 0x90, 0xd0, 0xdb, 0x83, + 0xd3, 0xb9, 0x5b, 0x3a, 0x2e, 0xb2, 0xfc, 0xe6, 0x7e, 0x36, 0xcf, 0x35, 0xf5, 0x7f, 0xe4, + 0x70, 0x68, 0x1e, 0xb9, 0xd2, 0x1b, 0x36, 0x78, 0xd0, 0x78, 0x61, 0xed, 0x0c, 0xaa, 0xb8, + 0x7d, 0xa9, 0x44, 0x2c, 0x44, 0x37, 0xc6, 0xf7, 0x85, 0x58, 0x4d, 0x9a, 0x3f, 0x63, 0x19, + 0x12, 0xf4, 0x53, 0xcb, 0x5f, 0xe9, 0x99, 0x1c, 0x2f, 0xe9, 0x96, 0x87, 0xbc, 0xb4, 0x80, + 0x8a, 0xd2, 0xa3, 0x65, 0x2d, 0xa4, 0xd5, 0x3c, 0x09, 0xc1, 0x42, 0x7a, 0xce, 0xd5, 0x56, + 0x3c, 0xd8, 0x76, 0x58, 0xca, 0xe3, 0xb6, 0x4e, 0x2c, 0x5f, 0x1a, 0x48, 0x95, 0x88, 0x71, + 0x31, 0x6a, 0xc0, 0x80, 0x1c, 0x6e, 0x59, 0xc5, 0xc0, 0x1f, 0xe3, 0xee, 0x7d, 0xb1, 0x2b, + 0xee, 0x13, 0x70, 0x6f, 0x40, 0x74, 0x7d, 0x73, 0xcb, 0x89, 0x80, 0x13, 0x67, 0x70, 0xc0, + 0x82, 0x42, 0x91, 0xe2, 0x88, 0x9f, 0xf6, 0x4a, 0x52, 0x65, 0x06, 0x28, 0x39, 0x96, 0x6d, + 0xc0, 0xde, 0x1f, 0x8a, 0x22, 0xd1, 0xae, 0x39, 0xe8, 0x29, 0xae, 0x2f, 0xe7, 0x21, 0xdf, + 0x6a, 0xd7, 0x35, 0xb7, 0xa4, 0x3d, 0x97, 0x53, 0xc2, 0x2e, 0xca, 0xa9, 0x66, 0x32, 0xe3, + 0x76, 0x67, 0xd2, 0x9e, 0x61, 0xeb, 0x94, 0xa3, 0xd7, 0x0c, 0x96, 0xdd, 0x01, 0xe9, 0x6e, + 0xdd, 0x67, 0xa6, 0x75, 0x01, 0x97, 0xf6, 0x63, 0x5d, 0x75, 0xbc, 0x33, 0xe9, 0xe8, 0xa6, + 0x17, 0x13, 0x24, 0xb0, 0x93, 0x75, 0x03, 0xc4, 0x54, 0x7d, 0x8b, 0xc3, 0xc4, 0xb8, 0x6a, + 0xd0, 0xb4, 0x83, 0x65, 0x13, 0x11, 0x9d, 0xf2, 0x3f, 0x59, 0x3f, 0x8f, 0x54, 0x4a, 0xf6, + 0x7b, 0x9e, 0x12, 0x03, 0x5f, 0x16, 0xa4, 0x70, 0x80, 0x64, 0xf4, 0xed, 0xa5, 0x68, 0x83, + 0xc5, 0x8c, 0x44, 0x5d, 0xb2, 0x4e, 0x3f, 0x92, 0xf3, 0xa1, 0xa4, 0xc7, 0x60, 0x94, 0xcc, + 0x1b, 0x5c, 0x48, 0xdc, 0x3c, 0x79, 0xf9, 0x06, 0x54, 0xa2, 0x5b, 0xc4, 0xfa, 0xa1, 0x11, + 0xcf, 0x83, 0xc1, 0x25, 0x20, 0x76, 0x1a, 0xea, 0xd3, 0x01, 0xda, 0xc7, 0xe2, 0xa1, 0x1d, + 0x63, 0xf4, 0x0f, 0x04, 0x4d, 0x53, 0x2c, 0x68, 0x3c, 0x58, 0xc2, 0xd6, 0x8a, 0xe3, 0x8b, + 0x3f, 0x39, 0xb4, 0x1e, 0x07, 0x6f, 0xa1, 0x4c, 0x1b, 0xe5, 0xae, 0xcc, 0xbd, 0xdd, 0x36, + 0x4b, 0x82, 0x7c, 0x2f, 0xb6, 0xe0, 0x66, 0x87, 0x24, 0x9c, 0x5e, 0x80, 0xe5, 0x95, 0xab, + 0xf6, 0x59, 0xcd, 0x26, 0xcf, 0x96, 0x6f, 0xcc, 0x12, 0xe3, 0xf3, 0xc3, 0x6c, 0xc4, 0xa0, + 0xcc, 0x73, 0x48, 0x2b, 0x63, 0x41, 0x4e, 0x3d, 0xbf, 0xd9, 0x23, 0xe3, 0x2a, 0x1b, 0xbc, + 0x55, 0x91, 0x90, 0xf9, 0xde, 0x83, 0xad, 0xaa, 0x90, 0x69, 0xe9, 0xcd, 0x08, 0x74, 0xb4, + 0x50, 0x81, 0x2f, 0xe5, 0x5b, 0xa2, 0xc6, 0xe5, 0x5d, 0x4a, 0xe5, 0x87, 0x1d, 0x6d, 0x61, + 0x69, 0xc4, 0x6d, 0xf5, 0x9d, 0x49, 0x36, 0x99, 0x22, 0xf4, 0x18, 0x83, 0x0f, 0x7d, 0x2e, + 0x02, 0x38, 0xbb, 0xb3, 0x34, 0xff, 0xa7, 0x0c, 0xad, 0x13, 0xa9, 0x80, 0xbb, 0x5b, 0x3e, + 0x33, 0x2d, 0xfb, 0x94, 0xf2, 0x25, 0x04, 0x68, 0xef, 0x9c, 0x55, 0x36, 0x9d, 0x2c, 0x0a, + 0x53, 0xfb, 0x08, 0x8a, 0xd6, 0x80, 0x5a, 0x58, 0x54, 0xb9, 0x73, 0xf8, 0x21, 0x3b, 0xfe, + 0x72, 0x02, 0xa2, 0x93, 0xb8, 0x09, 0x08, 0x92, 0x40, 0x0e, 0x0f, 0xda, 0xbf, 0x63, 0x1c, + 0x8b, 0xa1, 0x82, 0x4c, 0x89, 0x98, 0x34, 0x01, 0xa3, 0x04, 0xb5, 0xf6, 0xf4, 0x79, 0xc2, + 0xab, 0xd6, 0x15, 0x09, 0x1c, 0xf4, 0x16, 0x3a, 0x0c, 0xbe, 0xba, 0x73, 0x43, 0x91, 0x24, + 0xfe, 0x0b, 0x16, 0xd6, 0xe4, 0xb2, 0xd4, 0xab, 0xb8, 0xa2, 0xfd, 0xba, 0x61, 0xca, 0xef, + 0xef, 0x33, 0x01, 0x14, 0x0f, 0x08, 0xe0, 0x5e, 0xb4, 0xb0, 0x8c, 0x24, 0xf5, 0xd4, 0x3c, + 0x09, 0x16, 0x3a, 0xee, 0x9f, 0x3b, 0x58, 0xe3, 0x53, 0x1a, 0xd9, 0x60, 0x45, 0xc2, 0x90, + 0x05, 0xae, 0xd8, 0xd6, 0xf2, 0x5d, 0x51, 0x0a, 0x11, 0x37, 0x53, 0x7a, 0x35, 0xa9, 0x65, + 0xa0, 0x36, 0xfe, 0x61, 0x58, 0x06, 0xfa, 0x1b, 0x66, 0x25, 0x6b, 0x64, 0x39, 0xb8, 0x61, + 0x5f, 0x61, 0xd1, 0x02, 0xf7, 0x12, 0x2c, 0x1a, 0x16, 0x1c, 0xd6, 0xd7, 0x1c, 0xd8, 0x02, + 0x44, 0x23, 0xc2, 0x3e, 0xbf, 0x2b, 0x18, 0xb3, 0x8f, 0x94, 0x0e, 0xe0, 0xba, 0x74, 0x01, + 0xbf, 0xb6, 0x71, 0x95, 0x7f, 0x04, 0xf8, 0xa8, 0x6b, 0x39, 0x96, 0x39, 0xf7, 0x6b, 0x47, + 0x39, 0x13, 0xa4, 0x33, 0x12, 0x09, 0x0e, 0x0f, 0xa9, 0x9e, 0xb2, 0x51, 0x5c, 0x94, 0x68, + 0x55, 0x79, 0x34, 0x7d, 0x58, 0x81, 0x06, 0x1e, 0x3e, 0x8c, 0x08, 0x43, 0xaa, 0x16, 0x88, + 0xa0, 0x9d, 0xa1, 0xfc, 0x54, 0xfe, 0x40, 0xdb, 0xdf, 0x25, 0xa2, 0x05, 0x6d, 0xcd, 0xfd, + 0x47, 0xe4, 0xfc, 0x0c, 0x82, 0xe2, 0x87, 0x74, 0x74, 0x90, 0x5f, 0x3d, 0xa2, 0x17, 0x3b, + 0x2b, 0x29, 0x3c, 0x6d, 0x39, 0x87, 0x0c, 0xad, 0x13, 0x20, 0x39, 0x28, 0xdb, 0xcf, 0xde, + 0xcc, 0x03, 0x02, 0xf3, 0xf0, 0xc9, 0x94, 0xe3, 0xd4, 0xff, 0xd8, 0x0b, 0xe5, 0x6a, 0xec, + 0x9e, 0xf5, 0x03, 0x5d, 0xc4, 0x8e, 0x5e, 0x8d, 0x29, 0x2a, 0x94, 0xaf, 0xf6, 0x35, 0x8b, + 0xc5, 0xda, 0x60, 0x1e, 0x67, 0x20, 0x93, 0x38, 0xdd, 0xbc, 0x07, 0x93, 0xff, 0x35, 0x08, + 0x4b, 0x53, 0x71, 0x1d, 0x1b, 0xfd, 0x05, 0xad, 0x17, 0xdd, 0xac, 0xc1, 0xaa, 0x66, 0x9e, + 0x61, 0x78, 0xc7, 0xa1, 0x67, 0x33, 0x09, 0xbe, 0x18, 0x4e, 0xf8, 0xb8, 0x05, 0x32, 0xe2, + 0x52, 0x5a, 0x9b, 0x42, 0xea, 0x6e, 0x2e, 0x01, 0x6a, 0x5b, 0x82, 0xd1, 0xf0, 0xa2, 0xdd, + 0xa2, 0xf8, 0xe8, 0x47, 0xc8, 0x98, 0x67, 0x72, 0xe0, 0x9f, 0x48, 0xb1, 0xa8, 0xd1, 0x50, + 0x93, 0x03, 0xb1, 0x13, 0xb4, 0x69, 0x37, 0xda, 0x39, 0x88, 0x79, 0x6e, 0xfb, 0x96, 0xbc, + 0x5c, 0xc9, 0x1e, 0xa1, 0xc7, 0x28, 0x22, 0x9c, 0xe1, 0x4e, 0x6a, 0x74, 0x4b, 0x52, 0xf7, + 0x7d, 0x4f, 0xdd, 0x76, 0xc7, 0x88, 0xce, 0xa9, 0x8e, 0x6c, 0x16, 0xa1, 0x9d, 0x35, 0x73, + 0xfe, 0xcb, 0x27, 0xc6, 0xbf, 0xdf, 0x94, 0xb5, 0xb3, 0x40, 0x06, 0x11, 0x5d, 0x23, 0x36, + 0x65, 0x05, 0xeb, 0xc1, 0xec, 0xfa, 0xbd, 0x43, 0xf5, 0x71, 0xd6, 0xdc, 0x17, 0xeb, 0x1e, + 0xa4, 0x8f, 0x56, 0x4b, 0x0c, 0xb7, 0x81, 0xbb, 0xa2, 0x84, 0x7c, 0x54, 0xf0, 0xb3, 0x7e, + 0xf0, 0x3a, 0x69, 0xac, 0xe5, 0xca, 0xaf, 0x30, 0x39, 0xb3, 0xe6, 0xdd, 0x0e, 0x13, 0x0b, + 0xf3, 0x7f, 0xc4, 0x35, 0xa0, 0x59, 0xc5, 0xfb, 0xe8, 0xec, 0x0e, 0x26, 0x82, 0x2e, 0x3b, + 0xc2, 0xde, 0xeb, 0x0f, 0xaf, 0x48, 0x04, 0x2e, 0xac, 0xcc, 0x9b, 0xf6, 0x3c, 0xb7, 0xec, + 0xa5, 0x37, 0x0d, 0x4f, 0x94, 0xe1, 0x68, 0x2d, 0xa5, 0x6e, 0x4c, 0x76, 0x21, 0x97, 0x66, + 0x16, 0x3e, 0x79, 0x4e, 0x96, 0x7e, 0x2f, 0x11, 0xcb, 0x8d, 0x2b, 0x40, 0xed, 0xa7, 0x97, + 0xdb, 0x6d, 0xe6, 0x37, 0x8b, 0x25, 0x00, 0xa2, 0x22, 0x81, 0xd7, 0x76, 0x09, 0xf7, 0x17, + 0x3d, 0xb9, 0xec, 0x7b, 0x6a, 0x00, 0x9b, 0x89, 0xb6, 0xf9, 0xb4, 0x58, 0x52, 0x51, 0xd5, + 0xed, 0xa8, 0x3a, 0x5f, 0x94, 0x27, 0x96, 0x87, 0x8d, 0x41, 0xef, 0x7f, 0xdf, 0xd1, 0xd7, + 0xba, 0xb3, 0x00, 0xb1, 0xb3, 0xd8, 0xe2, 0x3a, 0x20, 0x0c, 0xf6, 0x17, 0xfa, 0x60, 0xa0, + 0xb4, 0x55, 0x75, 0x57, 0x69, 0x2e, 0x6d, 0x27, 0x94, 0x31, 0x3d, 0x35, 0x37, 0x05, 0xc0, + 0x50, 0x3a, 0x02, 0x0f, 0xdb, 0x7f, 0x7f, 0x7e, 0xea, 0x8c, 0xda, 0x09, 0x6f, 0x7b, 0xfe, + 0x80, 0x96, 0x85, 0x31, 0xb1, 0xfa, 0x19, 0xe2, 0x91, 0x2a, 0x7c, 0xfa, 0x2c, 0x9c, 0x3e, + 0xea, 0x74, 0x35, 0x9f, 0x0d, 0xe1, 0x34, 0x4f, 0x2a, 0x35, 0x40, 0x1d, 0xb9, 0xb7, 0x2d, + 0x10, 0xfe, 0xfd, 0xf9, 0xa6, 0xbd, 0xe4, 0xa1, 0xf9, 0xbc, 0x4f, 0x01, 0x3c, 0xac, 0x75, + 0xe6, 0x0e, 0xc1, 0x4e, 0xc9, 0x18, 0xcb, 0xd1, 0x69, 0xb8, 0xb4, 0xa2, 0x78, 0xed, 0xb5, + 0x95, 0x72, 0xaa, 0xb2, 0x3a, 0x60, 0xcd, 0x5c, 0xb6, 0xaf, 0x4f, 0x44, 0xae, 0x03, 0xad, + 0xdf, 0x8e, 0x64, 0xa0, 0x26, 0x32, 0xc9, 0xe6, 0x42, 0x9b, 0x10, 0x95, 0x99, 0x69, 0xe8, + 0xe6, 0xa2, 0x72, 0x7c, 0x20, 0x19, 0x4c, 0xbf, 0x4d, 0x1f, 0x82, 0xb7, 0xe1, 0x8e, 0xbf, + 0x25, 0x25, 0x92, 0xc4, 0x55, 0x96, 0xb6, 0xd2, 0xc6, 0xdb, 0x93, 0x2c, 0x6d, 0x4b, 0x8b, + 0x4a, 0x60, 0x96, 0xd9, 0xd5, 0xff, 0xb2, 0x18, 0xbe, 0x91, 0x9a, 0x97, 0x57, 0xea, 0xa0, + 0x86, 0x3b, 0x38, 0x3a, 0xed, 0x41, 0x13, 0xd1, 0x4b, 0xbc, 0x09, 0x1b, 0xb9, 0x16, 0x3b, + 0xaa, 0x67, 0xaf, 0xdf, 0x64, 0x1f, 0xef, 0xd4, 0xd4, 0x14, 0x98, 0xa9, 0x2c, 0x8e, 0xe8, + 0x90, 0x29, 0xd0, 0xe5, 0x3c, 0xa4, 0xfe, 0xa4, 0xc8, 0xdc, 0x03, 0x81, 0x64, 0x4f, 0x6c, + 0xca, 0x82, 0x96, 0xa3, 0x61, 0x1c, 0x3a, 0x0c, 0x82, 0x9e, 0x6c, 0x8b, 0xc2, 0x95, 0xc0, + 0x6a, 0x69, 0xf0, 0xef, 0x93, 0x89, 0x19, 0xfd, 0xa8, 0x36, 0x81, 0x9f, 0xbf, 0x5c, 0xd8, + 0x71, 0x60, 0x55, 0xd9, 0x23, 0xd0, 0x78, 0x80, 0x33, 0xae, 0x87, 0xfa, 0xe1, 0xa6, 0x6e, + 0x19, 0x2a, 0xcf, 0xe3, 0x68, 0x33, 0xde, 0x96, 0x0b, 0x1c, 0x53, 0x9b, 0xd1, 0x1a, 0x38, + 0x95, 0xd5, 0x45, 0xa6, 0xee, 0x64, 0xe9, 0x29, 0x88, 0xc8, 0xc2, 0x23, 0x14, 0x4e, 0xad, + 0xa2, 0xb1, 0xa5, 0xbc, 0x46, 0x86, 0xec, 0xef, 0x3b, 0x28, 0x0e, 0x41, 0x8a, 0xfb, 0xaa, + 0x60, 0x96, 0xe7, 0xe7, 0x60, 0x3b, 0xc8, 0x52, 0x4c, 0xab, 0xbf, 0xe0, 0x88, 0x20, 0x45, + 0x02, 0xdc, 0x35, 0x24, 0x15, 0x8b, 0xb9, 0xa3, 0xf8, 0xa5, 0xb2, 0x49, 0x0a, 0x43, 0xe3, + 0x08, 0xb7, 0xf8, 0x89, 0xb2, 0xd9, 0xc1, 0xd2, 0xc0, 0x61, 0x4c, 0x11, 0xe7, 0x44, 0xb1, + 0xa6, 0xc7, 0x4c, 0x8c, 0x09, 0xe4, 0x40, 0x74, 0x6e, 0xd6, 0x70, 0x3e, 0x7a, 0xa4, 0x37, + 0x6b, 0xcc, 0xab, 0x6b, 0x5d, 0x86, 0x44, 0xf6, 0xfe, 0xd2, 0x4d, 0x40, 0xf0, 0xc0, 0x89, + 0x66, 0x17, 0x2c, 0x8a, 0x43, 0x29, 0xd6, 0x91, 0x69, 0x8f, 0x87, 0x8a, 0xdf, 0xec, 0x2c, + 0xbf, 0x02, 0xc4, 0xe1, 0x26, 0x07, 0x26, 0x34, 0x5d, 0x60, 0x5b, 0x38, 0x0c, 0xaf, 0xa2, + 0xba, 0xe6, 0xd4, 0x42, 0xed, 0x62, 0xe5, 0x51, 0xce, 0xb5, 0x71, 0xb8, 0x9a, 0x20, 0x10, + 0x54, 0x2b, 0x32, 0x08, 0xca, 0x89, 0x67, 0xc9, 0xf9, 0x29, 0x5d, 0x66, 0x18, 0xf7, 0x4b, + 0x5d, 0x9b, 0x7d, 0xae, 0x0c, 0x38, 0x74, 0x0c, 0x15, 0xd4, 0x55, 0x3d, 0x53, 0x9f, 0x05, + 0x4c, 0x7f, 0x59, 0xb8, 0x09, 0x35, 0x49, 0xc4, 0x68, 0xfd, 0x52, 0xdc, 0x2d, 0x9e, 0x1f, + 0x27, 0xa8, 0x72, 0xb4, 0xfc, 0xcf, 0x7e, 0x9c, 0xca, 0xf6, 0x38, 0x2a, 0x75, 0x99, 0x39, + 0xd5, 0x84, 0x34, 0xd7, 0x52, 0x32, 0xb9, 0x19, 0x4a, 0x10, 0xd9, 0xa0, 0x07, 0xd9, 0xd5, + 0xdd, 0xf1, 0x4f, 0xcb, 0x90, 0xdf, 0x97, 0x8f, 0x46, 0x34, 0xc7, 0xa7, 0x9e, 0x0b, 0x24, + 0xef, 0x22, 0x0a, 0xf8, 0xf9, 0x9d, 0xad, 0x73, 0x32, 0x98, 0x42, 0xf4, 0x4f, 0xcc, 0x64, + 0x5d, 0xc2, 0x20, 0x00, 0x81, 0x4c, 0x8c, 0x6c, 0x15, 0xd9, 0x7e, 0x31, 0xa5, 0x5d, 0x26, + 0x74, 0x32, 0xcf, 0xef, 0x2a, 0xc3, 0xc3, 0x03, 0x1c, 0x36, 0xc2, 0xbe, 0x9d, 0x50, 0x81, + 0xed, 0xe5, 0x50, 0xc9, 0x23, 0x85, 0x2e, 0xb6, 0x00, 0x40, 0x9c, 0x84, 0x76, 0xfc, 0x97, + 0x16, 0x8e, 0x84, 0x88, 0x6d, 0x92, 0x3e, 0x0c, 0x2a, 0x90, 0x67, 0x24, 0x8f, 0x09, 0x54, + 0x9c, 0x6e, 0x75, 0x1a, 0x38, 0x79, 0xf5, 0x0c, 0xbf, 0x67, 0xdf, 0x8c, 0x1e, 0xb7, 0x26, + 0x61, 0x14, 0x3e, 0xb4, 0x5d, 0x18, 0xe5, 0x85, 0x59, 0xda, 0xf0, 0x0e, 0xf5, 0x6a, 0xb7, + 0xb9, 0x55, 0x1e, 0x1a, 0x2e, 0x6f, 0x70, 0xc7, 0xec, 0x41, 0xb6, 0x8d, 0xb0, 0xb8, 0x8b, + 0xf2, 0xf8, 0x5e, 0x7c, 0x02, 0xf4, 0xd8, 0x84, 0x33, 0x1f, 0xfe, 0x16, 0xe6, 0xda, 0x96, + 0xc1, 0x33, 0x9d, 0x6e, 0xcc, 0x60, 0xf4, 0x40, 0x03, 0xe1, 0xb9, 0x26, 0x9d, 0x68, 0x7f, + 0xd8, 0xc5, 0x78, 0x63, 0x38, 0xc7, 0xe8, 0x6d, 0xda, 0x72, 0x53, 0x5e, 0x88, 0x20, 0x01, + 0xab, 0x67, 0x82, 0xb0, 0x9c, 0xae, 0x52, 0x55, 0x42, 0xaa, 0xe4, 0x80, 0x02, 0x9e, 0xb9, + 0xc9, 0x2f, 0x64, 0x97, 0x17, 0xb7, 0x75, 0xea, 0x37, 0x3f, 0xcd, 0x78, 0xe0, 0x92, 0x0c, + 0xdc, 0x4e, 0x95, 0xf7, 0xa1, 0x9b, 0x36, 0x53, 0xad, 0x5e, 0xe9, 0xcf, 0xa1, 0x95, 0x8c, + 0x59, 0x8d, 0x62, 0x54, 0xa1, 0x1e, 0x2c, 0x3f, 0x19, 0xc9, 0x45, 0xab, 0x98, 0xd0, 0xfb, + 0xa3, 0x29, 0x31, 0xca, 0xcf, 0xab, 0xa0, 0x1b, 0xb6, 0xab, 0xb6, 0x6e, 0x5d, 0x12, 0x22, + 0xd5, 0x74, 0xe0, 0x7c, 0x2b, 0x1c, 0xf5, 0xdf, 0x00, 0xc7, 0x5a, 0x35, 0x03, 0x7c, 0x14, + 0xec, 0x69, 0x02, 0x20, 0xc7, 0x76, 0x8f, 0x37, 0xb6, 0x0c, 0x84, 0x66, 0xd4, 0x47, 0xf5, + 0xb2, 0x91, 0xb5, 0x70, 0xfe, 0x8f, 0xbb, 0x55, 0xae, 0xe4, 0x83, 0x21, 0xd7, 0xc4, 0xb7, + 0xec, 0x9e, 0x67, 0xb8, 0xd6, 0x45, 0xb3, 0xd4, 0xe8, 0xad, 0x0d, 0xa3, 0x36, 0x36, 0xaf, + 0x06, 0xc9, 0x80, 0x0f, 0x4d, 0x6c, 0x31, 0xcd, 0x58, 0xe3, 0x2c, 0x2f, 0x53, 0xd1, 0xa9, + 0x42, 0xfd, 0xcb, 0x25, 0x57, 0x3e, 0x34, 0x1e, 0x31, 0x59, 0x96, 0xcc, 0xf2, 0x7d, 0x9a, + 0xae, 0x46, 0x36, 0x9c, 0x7e, 0x03, 0x4e, 0xa8, 0x02, 0x94, 0x87, 0x6f, 0x77, 0x8c, 0xfe, + 0xd4, 0x2f, 0xb3, 0x2e, 0x9a, 0xcc, 0x24, 0x17, 0x0b, 0xa3, 0x19, 0x50, 0x7f, 0x48, 0x7d, + 0x15, 0x36, 0x17, 0xb6, 0xf4, 0xde, 0xd8, 0xc9, 0xf3, 0xce, 0x60, 0x81, 0x69, 0xb2, 0xfd, + 0xce, 0x57, 0xe3, 0x33, 0xd7, 0x1a, 0x8e, 0x16, 0xf2, 0xee, 0x7f, 0xa6, 0x41, 0x26, 0x57, + 0xb6, 0xce, 0xa0, 0x10, 0x49, 0xee, 0x63, 0x1e, 0xba, 0x6c, 0xd3, 0x31, 0xc9, 0x8a, 0xe6, + 0xc1, 0x56, 0x4b, 0x01, 0x22, 0xcc, 0x89, 0x89, 0x88, 0xb9, 0xb3, 0xa8, 0xbe, 0x19, 0xdc, + 0x84, 0x33, 0x26, 0x03, 0x2d, 0x0b, 0x7f, 0xfd, 0x3e, 0x85, 0x75, 0x5c, 0x71, 0x54, 0x51, + 0x07, 0x53, 0xe7, 0xfe, 0x99, 0x02, 0x51, 0xa5, 0xf0, 0xb2, 0xb8, 0x3e, 0x67, 0xcd, 0x20, + 0x5d, 0x29, 0xee, 0xc9, 0x2e, 0xe9, 0x7c, 0xb0, 0x48, 0x9f, 0xa9, 0x37, 0x59, 0x07, 0x7c, + 0x85, 0x8c, 0x82, 0xc8, 0xa1, 0x1e, 0x04, 0x89, 0x06, 0xcf, 0xef, 0xcd, 0xd3, 0xc4, 0xad, + 0xdd, 0xff, 0xbb, 0x38, 0x3b, 0xad, 0x4f, 0x7f, 0xc1, 0x2d, 0xa9, 0xd3, 0x2f, 0x2b, 0x58, + 0x21, 0x44, 0xeb, 0x39, 0x74, 0xd9, 0xd9, 0x84, 0x31, 0x39, 0xe6, 0x82, 0xde, 0x06, 0x82, + 0x00, 0xf7, 0xc2, 0xd7, 0x41, 0xda, 0x24, 0x2e, 0xb2, 0xca, 0xd0, 0xa7, 0x66, 0x27, 0xa2, + 0xfa, 0xd5, 0xc7, 0x98, 0xc9, 0x84, 0x24, 0x32, 0x1e, 0x86, 0x10, 0xf0, 0xc1, 0xdc, 0x83, + 0x12, 0x2a, 0x8e, 0xde, 0x5d, 0x7e, 0x2a, 0x63, 0x84, 0x80, 0x66, 0x66, 0xcb, 0x04, 0x07, + 0x79, 0xb0, 0xe8, 0x54, 0x84, 0xf2, 0x44, 0x55, 0xd5, 0x49, 0xad, 0xeb, 0x00, 0x8d, 0xca, + 0x2c, 0x38, 0xa5, 0x30, 0x54, 0xe6, 0x9a, 0xa3, 0x11, 0x39, 0x4a, 0xd3, 0xb3, 0x1e, 0xc3, + 0x34, 0xcc, 0x95, 0x6c, 0x57, 0xe1, 0x1d, 0x26, 0x8b, 0x04, 0xca, 0x4f, 0x98, 0x21, 0xac, + 0xfe, 0xd5, 0x02, 0xdd, 0x49, 0x48, 0x8d, 0xd4, 0xbe, 0x2c, 0xa7, 0x91, 0x1d, 0xd0, 0x54, + 0x64, 0x25, 0x04, 0xd2, 0x26, 0x4c, 0x4f, 0xc5, 0xdb, 0x1a, 0x15, 0x8b, 0x7c, 0x81, 0xe9, + 0xd9, 0xdb, 0x80, 0x1d, 0x1d, 0xee, 0x7d, 0xa0, 0x58, 0x70, 0xcf, 0xcb, 0xe9, 0xdc, 0x5f, + 0x9c, 0x83, 0xe0, 0xe6, 0xb5, 0x0e, 0x7b, 0x55, 0xe5, 0xe2, 0xcb, 0x23, 0x51, 0x42, 0xa4, + 0x18, 0x03, 0x24, 0xbb, 0x98, 0x63, 0xe0, 0xbf, 0x0b, 0xb8, 0x20, 0xfa, 0x93, 0x69, 0x3a, + 0xad, 0xb1, 0x17, 0x6e, 0x3a, 0x30, 0x33, 0x14, 0x67, 0x76, 0x01, 0x3b, 0xec, 0x97, 0x23, + 0x4b, 0x47, 0x23, 0x12, 0x10, 0x0c, 0x53, 0x44, 0xe3, 0xdf, 0x75, 0xbc, 0x54, 0xa7, 0xfa, + 0xf3, 0x79, 0xee, 0x18, 0x94, 0x77, 0x82, 0xc3, 0xbb, 0xfa, 0x7b, 0x2a, 0xd0, 0xd2, 0xec, + 0x46, 0xd9, 0x4a, 0xf0, 0x57, 0xe6, 0x86, 0x33, 0x2c, 0xbc, 0x74, 0x61, 0xb4, 0xc1, 0x12, + 0x28, 0xe6, 0x28, 0xf7, 0xf8, 0x18, 0xe5, 0x00, 0xbb, 0x71, 0x28, 0x71, 0x9d, 0xc0, 0x27, + 0x23, 0x81, 0x61, 0x15, 0x66, 0xd7, 0xc9, 0xc9, 0xfc, 0xb2, 0x7b, 0xd9, 0x89, 0x62, 0x4e, + 0x77, 0x7c, 0xb5, 0xc5, 0x3b, 0xe8, 0xcd, 0x09, 0xf8, 0xee, 0xfe, 0xd6, 0x1c, 0x0b, 0xe0, + 0x70, 0x10, 0xdb, 0x5f, 0xd4, 0x75, 0x25, 0xae, 0x91, 0xb6, 0x03, 0xa3, 0xc6, 0x03, 0x7b, + 0x1e, 0xe7, 0x29, 0xe0, 0xe2, 0xd2, 0x2d, 0xa7, 0xeb, 0x54, 0x18, 0xb2, 0x4a, 0x0e, 0xa0, + 0xa9, 0xba, 0x4e, 0x91, 0x95, 0x1d, 0x8a, 0xaa, 0x35, 0xa1, 0x72, 0x58, 0x99, 0xe5, 0x35, + 0xf7, 0x74, 0x2d, 0x7a, 0xcb, 0x9c, 0xa2, 0x6e, 0xf2, 0x7c, 0xfd, 0xc7, 0x27, 0xd9, 0xe4, + 0x7c, 0x03, 0xa0, 0x87, 0xbf, 0x48, 0xb5, 0xc9, 0x34, 0x8d, 0x76, 0xd1, 0x70, 0xce, 0xb3, + 0x48, 0x21, 0x92, 0xf0, 0xa8, 0x8c, 0x04, 0x66, 0x26, 0x50, 0x7f, 0xce, 0xcc, 0x79, 0x60, + 0x60, 0x1b, 0x56, 0x1b, 0xe8, 0xab, 0xed, 0xaa, 0x87, 0x72, 0xe2, 0x0f, 0x7b, 0xa0, 0xf5, + 0x24, 0x76, 0x90, 0x8b, 0xfc, 0x0b, 0xdf, 0x22, 0x08, 0x03, 0x7d, 0x10, 0x5e, 0x75, 0xc6, + 0x5b, 0x07, 0xdc, 0xba, 0x69, 0x0e, 0x01, 0xc9, 0xcd, 0x43, 0x2e, 0xde, 0xa8, 0x73, 0x19, + 0xb8, 0xbd, 0xf5, 0xb4, 0x00, 0xd1, 0x7c, 0xb0, 0xd4, 0x74, 0x3f, 0x21, 0x74, 0xc1, 0x50, + 0x37, 0xc7, 0xfd, 0x9e, 0x5c, 0xdc, 0xe9, 0x45, 0x86, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x66, 0xf0, 0x72, 0x6d, 0xf7, 0x79, 0x95, 0xfe, 0x01, 0x66, 0x40, 0x3b, 0xc7, + 0xf4, 0x51, 0x43, 0x6b, 0x76, 0xa6, 0x8b, 0x1f, 0xa3, 0x04, 0xbe, 0x50, 0x3e, 0x28, 0xbb, + 0xa2, 0x36, 0x35, 0x25, 0x55, 0x22, 0xa4, 0xe8, 0x17, 0x41, 0x25, 0xa3, 0x7a, 0x8b, 0x8b, + 0xc8, 0xcc, 0xd5, 0x38, 0x01, 0xc8, 0x0a, 0xda, 0x60, 0x83, 0x7b, 0x54, 0x76, 0x70, 0x81, + 0x55, 0xdd, 0x29, 0x77, 0xc8, 0x18, 0x00, + ], +]; From ffe49b795ac652c72a32965581d85989d2ce4445 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 17 Nov 2024 19:50:57 +0100 Subject: [PATCH 070/230] Make zebra_chain::orchard_zsa::tests::vectors::BLOCKS visible for zebra-state crate --- zebra-chain/src/orchard_zsa.rs | 6 ++++-- zebra-chain/src/orchard_zsa/tests.rs | 3 ++- zebra-chain/src/orchard_zsa/tests/vectors.rs | 3 ++- zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index 91445ebf949..313c5ab9c0e 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -4,8 +4,10 @@ #[cfg(any(test, feature = "proptest-impl"))] pub(crate) mod arbitrary; -#[cfg(test)] -mod tests; +// FIXME: feature = "proptest-impl" and pub are needed to access test vectors from another crates, +// remove it then +#[cfg(any(test, feature = "proptest-impl"))] +pub mod tests; mod burn; mod issuance; diff --git a/zebra-chain/src/orchard_zsa/tests.rs b/zebra-chain/src/orchard_zsa/tests.rs index 1c895a420d9..8c927c50432 100644 --- a/zebra-chain/src/orchard_zsa/tests.rs +++ b/zebra-chain/src/orchard_zsa/tests.rs @@ -1,2 +1,3 @@ mod blocks; -mod vectors; +// FIXME: pub is needed to access test vectors from another crates, remove it then +pub mod vectors; diff --git a/zebra-chain/src/orchard_zsa/tests/vectors.rs b/zebra-chain/src/orchard_zsa/tests/vectors.rs index d5664e50b19..0f7c4eceb48 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors.rs @@ -1,3 +1,4 @@ mod blocks; -pub(crate) use blocks::BLOCKS; +// FIXME: pub is needed to access test vectors from another crates, change it to pub(crate) then +pub use blocks::BLOCKS; diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs index db0eca9fb0b..e68775732f6 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs @@ -1,4 +1,5 @@ -pub(crate) const BLOCKS: [&[u8]; 4] = [ +// FIXME: pub is needed to access test vectors from another crates, change it to pub(crate) then +pub const BLOCKS: [&[u8]; 4] = [ // Genesis block &[], // Issuance block From 697d38a85a2346480af225b20e700ecf06a0bde7 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 17 Nov 2024 19:52:20 +0100 Subject: [PATCH 071/230] Add initial version of ZSA woirkflow tests to zebra-chain --- zebra-state/Cargo.toml | 4 +- zebra-state/tests/zsa.rs | 163 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 zebra-state/tests/zsa.rs diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index af73168ae39..45dcf9e96c6 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -15,8 +15,8 @@ keywords = ["zebra", "zcash"] categories = ["asynchronous", "caching", "cryptography::cryptocurrencies"] [features] -default = [] -#default = ["tx-v6"] +#default = [] +default = ["tx-v6"] # Production features that activate extra dependencies, or extra features in dependencies diff --git a/zebra-state/tests/zsa.rs b/zebra-state/tests/zsa.rs new file mode 100644 index 00000000000..cae0546e051 --- /dev/null +++ b/zebra-state/tests/zsa.rs @@ -0,0 +1,163 @@ +use zebra_chain::orchard_zsa::tests::vectors::BLOCKS; + +use std::sync::Arc; + +use color_eyre::eyre::Report; + +use zebra_chain::{ + block::{genesis::regtest_genesis_block, Block, Height}, + parameters::Network, + serialization::ZcashDeserialize, +}; + +use zebra_state::{Config, Request, Response}; + +use zebra_test::transcript::{ExpectedTranscriptError, Transcript}; + +fn patch_block_coinbase_height(block: &mut Block, previous_block: &Block) { + let mut transactions: Vec> = + block.transactions.iter().cloned().collect(); + if let Some(tx_arc) = transactions.first_mut() { + let mut tx = (**tx_arc).clone(); + if let Some(input) = tx.inputs_mut().first_mut() { + if let zebra_chain::transparent::Input::Coinbase { ref mut height, .. } = input { + *height = previous_block + .coinbase_height() + .expect("block has coinbase_height") + .next() + .expect("block has next coinbase_height"); //zebra_chain::block::Height(new_height) + } + } + *tx_arc = Arc::new(tx); + } + block.transactions = transactions.into(); +} + +fn patch_block(block: &mut Block, previous_block: &Block, commitment_bytes: [u8; 32]) { + let mut header = *block.header; + header.previous_block_hash = previous_block.hash(); + *header.commitment_bytes = commitment_bytes; + block.header = header.into(); + patch_block_coinbase_height(block, previous_block); +} + +fn create_transcript_data( + network: Network, +) -> Vec<(Request, Result)> { + let genesis_block = regtest_genesis_block(); + + let mut issuance_block: Block = + Block::zcash_deserialize(BLOCKS[1].as_ref()).expect("issuance block should deserialize"); + let mut transfer_block: Block = + Block::zcash_deserialize(BLOCKS[2].as_ref()).expect("transfer block should deserialize"); + let mut burn_block: Block = + Block::zcash_deserialize(BLOCKS[3].as_ref()).expect("burn block should deserialize"); + + let genesis_hash = genesis_block.hash(); + println!( + "Genesis hash: {:?}, previous: {:?}", + genesis_hash, genesis_block.header.previous_block_hash + ); + + //assert_eq!(genesis_hash, network.genesis_hash()); + + // Patch issuance block + patch_block(&mut issuance_block, &genesis_block, [0u8; 32]); + + let issuance_hash = issuance_block.hash(); + println!( + "Issuance hash: {:?}, previous: {:?}", + issuance_hash, issuance_block.header.previous_block_hash + ); + + // Patch transfer block + patch_block( + &mut transfer_block, + &issuance_block, + [ + 0xb7, 0x76, 0x07, 0x73, 0x39, 0x2d, 0x36, 0x6e, 0x31, 0xc4, 0xb4, 0xce, 0xce, 0xfa, + 0x5e, 0x1f, 0x85, 0x60, 0x21, 0x21, 0x1e, 0x2f, 0x91, 0xa9, 0x1e, 0x05, 0xb3, 0x06, + 0xea, 0x80, 0x57, 0x24, + ], + ); + + let transfer_hash = transfer_block.hash(); + println!( + "Transfer hash: {:?}, previous: {:?}", + transfer_hash, transfer_block.header.previous_block_hash + ); + + // Patch burn block + patch_block( + &mut burn_block, + &transfer_block, + [ + 0x6d, 0xec, 0x74, 0x8e, 0x07, 0xd1, 0x86, 0x67, 0xad, 0xb8, 0x39, 0x50, 0xe9, 0x48, + 0xc2, 0xca, 0x51, 0x9f, 0xad, 0x67, 0x45, 0x7a, 0xff, 0x4c, 0x3f, 0xa5, 0xad, 0x76, + 0xd2, 0x3a, 0xa8, 0x4c, + ], + ); + + let burn_hash = burn_block.hash(); + println!( + "Burn hash: {:?}, previous: {:?}", + burn_hash, burn_block.header.previous_block_hash + ); + + //println!("{:#?}", transfer_block); + + vec![ + ( + Request::CommitCheckpointVerifiedBlock(genesis_block.clone().into()), + Ok(Response::Committed(genesis_hash)), + ), + ( + Request::Block(genesis_hash.into()), + Ok(Response::Block(Some(genesis_block))), + ), + ( + //Request::CommitSemanticallyVerifiedBlock(Arc::new(issuance_block.clone()).into()), + Request::CommitCheckpointVerifiedBlock(Arc::new(issuance_block.clone()).into()), + Ok(Response::Committed(issuance_hash)), + ), + ( + Request::Block(issuance_hash.into()), + Ok(Response::Block(Some(Arc::new(issuance_block)))), + ), + ( + Request::CommitCheckpointVerifiedBlock(Arc::new(transfer_block.clone()).into()), + Ok(Response::Committed(transfer_hash)), + ), + ( + Request::Block(transfer_hash.into()), + Ok(Response::Block(Some(Arc::new(transfer_block)))), + ), + ( + Request::CommitCheckpointVerifiedBlock(Arc::new(burn_block.clone()).into()), + Ok(Response::Committed(burn_hash)), + ), + ( + Request::Block(burn_hash.into()), + Ok(Response::Block(Some(Arc::new(burn_block)))), + ), + ] +} + +#[tokio::test(flavor = "multi_thread")] +//#[tokio::test] +async fn check_zsa_workflow() -> Result<(), Report> { + let _init_guard = zebra_test::init(); + //let network = Network::new_default_testnet(); + let network = Network::new_regtest(None, None, None); + + for transcript_data in &[create_transcript_data(network.clone())] { + // We're not verifying UTXOs here. + let (service, _, _, _) = + zebra_state::init(Config::ephemeral(), &network.clone(), Height::MAX, 0); + let transcript = Transcript::from(transcript_data.iter().cloned()); + // check the on disk service against the transcript + transcript.check(service).await?; + } + + Ok(()) +} From fa948b840823c757eb54fa5d2bbf7758815492c4 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 18 Nov 2024 11:35:23 +0100 Subject: [PATCH 072/230] Improve zebra-state/tests/zsa.rs code --- zebra-state/tests/zsa.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/zebra-state/tests/zsa.rs b/zebra-state/tests/zsa.rs index cae0546e051..c01d5a8f46d 100644 --- a/zebra-state/tests/zsa.rs +++ b/zebra-state/tests/zsa.rs @@ -17,8 +17,10 @@ use zebra_test::transcript::{ExpectedTranscriptError, Transcript}; fn patch_block_coinbase_height(block: &mut Block, previous_block: &Block) { let mut transactions: Vec> = block.transactions.iter().cloned().collect(); + //let transactions: &mut Vec> = + // Arc::make_mut(&mut block.transactions); if let Some(tx_arc) = transactions.first_mut() { - let mut tx = (**tx_arc).clone(); + let tx = Arc::make_mut(&mut *tx_arc); if let Some(input) = tx.inputs_mut().first_mut() { if let zebra_chain::transparent::Input::Coinbase { ref mut height, .. } = input { *height = previous_block @@ -28,19 +30,18 @@ fn patch_block_coinbase_height(block: &mut Block, previous_block: &Block) { .expect("block has next coinbase_height"); //zebra_chain::block::Height(new_height) } } - *tx_arc = Arc::new(tx); } block.transactions = transactions.into(); } fn patch_block(block: &mut Block, previous_block: &Block, commitment_bytes: [u8; 32]) { - let mut header = *block.header; + let header = Arc::make_mut(&mut block.header); header.previous_block_hash = previous_block.hash(); *header.commitment_bytes = commitment_bytes; - block.header = header.into(); patch_block_coinbase_height(block, previous_block); } +// FIXME: remove printlns fn create_transcript_data( network: Network, ) -> Vec<(Request, Result)> { @@ -146,7 +147,7 @@ fn create_transcript_data( #[tokio::test(flavor = "multi_thread")] //#[tokio::test] async fn check_zsa_workflow() -> Result<(), Report> { - let _init_guard = zebra_test::init(); + //let _init_guard = zebra_test::init(); //let network = Network::new_default_testnet(); let network = Network::new_regtest(None, None, None); From 1df822e2ed1bbf527060b0ecf688609dddceb54e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 19 Nov 2024 15:50:24 +0100 Subject: [PATCH 073/230] Modify zebra-consensus to use ItemVerifyingKey for Orchard ZSA (there're two keys now - VERIFYING_KEY_VANILLA and VERIFYING_KEY_ZSA --- zebra-consensus/src/primitives/halo2.rs | 99 ++++++++++---- zebra-consensus/src/primitives/halo2/tests.rs | 22 +++- zebra-consensus/src/transaction.rs | 123 ++++++++++++++++-- 3 files changed, 202 insertions(+), 42 deletions(-) diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index ab88f6cbde4..5d1ab07bcf6 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -19,7 +19,7 @@ use tower::{util::ServiceFn, Service}; use tower_batch_control::{Batch, BatchControl}; use tower_fallback::Fallback; -use zebra_chain::orchard::{OrchardFlavorExt, OrchardVanilla}; +use zebra_chain::orchard::{OrchardFlavorExt, OrchardVanilla, OrchardZSA}; use crate::BoxError; @@ -75,10 +75,13 @@ pub type BatchVerifyingKey = ItemVerifyingKey; /// This is the key used to verify individual items. pub type ItemVerifyingKey = VerifyingKey; +// FIXME: Check if the Orchard code (called from the zebra-consensus) checks burn as a part of bidning signature lazy_static::lazy_static! { - /// The halo2 proof verifying key. - // FIXME: support OrchardZSA? - pub static ref VERIFYING_KEY: ItemVerifyingKey = ItemVerifyingKey::build::<::Flavor>(); + /// The halo2 proof verifying key for Orchard Vanilla + pub static ref VERIFYING_KEY_VANILLA: ItemVerifyingKey = ItemVerifyingKey::build::<::Flavor>(); + + /// The halo2 proof verifying key for Orchard ZSA + pub static ref VERIFYING_KEY_ZSA: ItemVerifyingKey = ItemVerifyingKey::build::<::Flavor>(); } // === TEMPORARY BATCH HALO2 SUBSTITUTE === @@ -133,8 +136,8 @@ impl BatchVerifier { // === END TEMPORARY BATCH HALO2 SUBSTITUTE === -impl From<&zebra_chain::orchard::ShieldedData> for Item { - fn from(shielded_data: &zebra_chain::orchard::ShieldedData) -> Item { +impl From<&zebra_chain::orchard::ShieldedData> for Item { + fn from(shielded_data: &zebra_chain::orchard::ShieldedData) -> Item { use orchard::{circuit, note, primitives::redpallas, tree, value}; let anchor = tree::Anchor::from_bytes(shielded_data.shared_anchor.into()).unwrap(); @@ -148,11 +151,13 @@ impl From<&zebra_chain::orchard::ShieldedData> for Item { // FIXME: simplify the flags creation - make `Flags::from_parts` method pub? // FIXME: support OrchardZSA? - let flags = match (enable_spend, enable_output) { - (false, false) => orchard::builder::BundleType::DISABLED.flags(), - (false, true) => orchard::bundle::Flags::SPENDS_DISABLED_WITHOUT_ZSA, - (true, false) => orchard::bundle::Flags::OUTPUTS_DISABLED, - (true, true) => orchard::bundle::Flags::ENABLED_WITHOUT_ZSA, + let flags = match (enable_spend, enable_output, V::ZSA_ENABLED) { + (false, false, _) => orchard::builder::BundleType::DISABLED.flags(), + (false, true, false) => orchard::bundle::Flags::SPENDS_DISABLED_WITHOUT_ZSA, + (false, true, true) => orchard::bundle::Flags::SPENDS_DISABLED_WITH_ZSA, + (true, false, _) => orchard::bundle::Flags::OUTPUTS_DISABLED, + (true, true, false) => orchard::bundle::Flags::ENABLED_WITHOUT_ZSA, + (true, true, true) => orchard::bundle::Flags::ENABLED_WITH_ZSA, }; let instances = shielded_data @@ -204,23 +209,22 @@ impl From for Halo2Error { } } -/// Global batch verification context for Halo2 proofs of Action statements. -/// -/// This service transparently batches contemporaneous proof verifications, -/// handling batch failures by falling back to individual verification. -/// -/// Note that making a `Service` call requires mutable access to the service, so -/// you should call `.clone()` on the global handle to create a local, mutable -/// handle. -pub static VERIFIER: Lazy< - Fallback< - Batch, - ServiceFn BoxFuture<'static, Result<(), BoxError>>>, - >, -> = Lazy::new(|| { +type VerificationContext = Fallback< + Batch, + ServiceFn BoxFuture<'static, Result<(), BoxError>>>, +>; + +pub(crate) trait OrchardVerifier: OrchardFlavorExt { + const ZSA_ENABLED: bool; + + fn get_verifying_key() -> &'static ItemVerifyingKey; + fn get_verifier() -> &'static VerificationContext; +} + +fn create_verification_context() -> VerificationContext { Fallback::new( Batch::new( - Verifier::new(&VERIFYING_KEY), + Verifier::new(V::get_verifying_key()), HALO2_MAX_BATCH_SIZE, None, super::MAX_BATCH_LATENCY, @@ -235,11 +239,50 @@ pub static VERIFIER: Lazy< // to erase the result type. // (We can't use BoxCloneService to erase the service type, because it is !Sync.) tower::service_fn( - (|item: Item| Verifier::verify_single_spawning(item, &VERIFYING_KEY).boxed()) + (|item: Item| Verifier::verify_single_spawning(item, V::get_verifying_key()).boxed()) as fn(_) -> _, ), ) -}); +} + +/// Global batch verification context for Halo2 proofs of Action statements. +/// +/// This service transparently batches contemporaneous proof verifications, +/// handling batch failures by falling back to individual verification. +/// +/// Note that making a `Service` call requires mutable access to the service, so +/// you should call `.clone()` on the global handle to create a local, mutable +/// handle. +pub static VERIFIER_VANILLA: Lazy = + Lazy::new(create_verification_context::); + +/// FIXME: copy a doc from VERIFIER_VANILLA or just refer to its doc? +pub static VERIFIER_ZSA: Lazy = + Lazy::new(create_verification_context::); + +impl OrchardVerifier for OrchardVanilla { + const ZSA_ENABLED: bool = false; + + fn get_verifying_key() -> &'static ItemVerifyingKey { + &VERIFYING_KEY_VANILLA + } + + fn get_verifier() -> &'static VerificationContext { + &VERIFIER_VANILLA + } +} + +impl OrchardVerifier for OrchardZSA { + const ZSA_ENABLED: bool = true; + + fn get_verifying_key() -> &'static ItemVerifyingKey { + &VERIFYING_KEY_ZSA + } + + fn get_verifier() -> &'static VerificationContext { + &VERIFIER_ZSA + } +} /// Halo2 proof verifier implementation /// diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 8af73f182e1..539a7fe2a0c 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -148,6 +148,7 @@ where Ok(()) } +// FIXME: add OrchardZSA support #[tokio::test(flavor = "multi_thread")] async fn verify_generated_halo2_proofs() { let _init_guard = zebra_test::init(); @@ -168,14 +169,18 @@ async fn verify_generated_halo2_proofs() { // Use separate verifier so shared batch tasks aren't killed when the test ends (#2390) let mut verifier = Fallback::new( Batch::new( - Verifier::new(&VERIFYING_KEY), + Verifier::new(&OrchardVanilla::get_verifying_key()), crate::primitives::MAX_BATCH_SIZE, None, crate::primitives::MAX_BATCH_LATENCY, ), tower::service_fn( - (|item: Item| ready(item.verify_single(&VERIFYING_KEY).map_err(Halo2Error::from))) - as fn(_) -> _, + (|item: Item| { + ready( + item.verify_single(&OrchardVanilla::get_verifying_key()) + .map_err(Halo2Error::from), + ) + }) as fn(_) -> _, ), ); @@ -216,6 +221,7 @@ where Ok(()) } +// FIXME: add OrchardZSA support #[tokio::test(flavor = "multi_thread")] async fn correctly_err_on_invalid_halo2_proofs() { let _init_guard = zebra_test::init(); @@ -236,14 +242,18 @@ async fn correctly_err_on_invalid_halo2_proofs() { // Use separate verifier so shared batch tasks aren't killed when the test ends (#2390) let mut verifier = Fallback::new( Batch::new( - Verifier::new(&VERIFYING_KEY), + Verifier::new(&OrchardVanilla::get_verifying_key()), crate::primitives::MAX_BATCH_SIZE, None, crate::primitives::MAX_BATCH_LATENCY, ), tower::service_fn( - (|item: Item| ready(item.verify_single(&VERIFYING_KEY).map_err(Halo2Error::from))) - as fn(_) -> _, + (|item: Item| { + ready( + item.verify_single(&OrchardVanilla::get_verifying_key()) + .map_err(Halo2Error::from), + ) + }) as fn(_) -> _, ), ); diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index 9083ddaf9ac..c6b1ac0473d 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -417,13 +417,20 @@ where // FIXME: implement proper V6 verification #[cfg(feature = "tx-v6")] Transaction::V6 { + sapling_shielded_data, + orchard_shielded_data, .. - } => { - tracing::debug!(?tx, "V6 transaction verification is not supported for now"); - return Err(TransactionError::WrongVersion); - } - }; + } => Self::verify_v6_transaction( + &req, + &network, + script_verifier, + cached_ffi_transaction.clone(), + sapling_shielded_data, + orchard_shielded_data, + )?, + }; + if let Some(unmined_tx) = req.mempool_transaction() { let check_anchors_and_revealed_nullifiers_query = state .clone() @@ -792,6 +799,106 @@ where } } + // FIXME: Consider avoiding code duplication with verify_v5_transaction. + // FIXME: Fix the following doc comment if needed (now it's basically a copy of the same comment for V5). + /// Verify a V6 transaction. + /// + /// Returns a set of asynchronous checks that must all succeed for the transaction to be + /// considered valid. These checks include: + /// + /// - transaction support by the considered network upgrade (see [`Request::upgrade`]) + /// - transparent transfers + /// - sapling shielded data (TODO) + /// - orchard shielded data (TODO) + /// + /// The parameters of this method are: + /// + /// - the `request` to verify (that contains the transaction and other metadata, see [`Request`] + /// for more information) + /// - the `network` to consider when verifying + /// - the `script_verifier` to use for verifying the transparent transfers + /// - the prepared `cached_ffi_transaction` used by the script verifier + /// - the sapling shielded data of the transaction, if any + /// - the orchard shielded data of the transaction, if any + #[allow(clippy::unwrap_in_result)] + fn verify_v6_transaction( + request: &Request, + network: &Network, + script_verifier: script::Verifier, + cached_ffi_transaction: Arc, + sapling_shielded_data: &Option>, + orchard_shielded_data: &Option>, + ) -> Result { + let transaction = request.transaction(); + let upgrade = request.upgrade(network); + + Self::verify_v6_transaction_network_upgrade(&transaction, upgrade)?; + + let shielded_sighash = transaction.sighash( + upgrade + .branch_id() + .expect("Overwinter-onwards must have branch ID, and we checkpoint on Canopy"), + HashType::ALL, + cached_ffi_transaction.all_previous_outputs(), + None, + ); + + Ok(Self::verify_transparent_inputs_and_outputs( + request, + network, + script_verifier, + cached_ffi_transaction, + )? + .and(Self::verify_sapling_shielded_data( + sapling_shielded_data, + &shielded_sighash, + )?) + .and(Self::verify_orchard_shielded_data( + orchard_shielded_data, + &shielded_sighash, + )?)) + // FIXME: Do we need to verify IssueBundle here in a some way? + // FIXME: Do we need to verify burns (separately or inside verify_orchard_shielded_data)? + } + + /// Verifies if a V6 `transaction` is supported by `network_upgrade`. + fn verify_v6_transaction_network_upgrade( + transaction: &Transaction, + network_upgrade: NetworkUpgrade, + ) -> Result<(), TransactionError> { + match network_upgrade { + // FIXME: Fix the following comment if needed (now it's basically a copy of the same comment for V5). + // Supports V6 transactions + // + // # Consensus + // + // > [NU5 onward] The transaction version number MUST be 4 or 5. + // > If the transaction version number is 4 then the version group ID MUST be 0x892F2085. + // > If the transaction version number is 5 then the version group ID MUST be 0x26A7270A. + // + // https://zips.z.cash/protocol/protocol.pdf#txnconsensus + // + // Note: Here we verify the transaction version number of the above rule, the group + // id is checked in zebra-chain crate, in the transaction serialize. + NetworkUpgrade::Nu7 => Ok(()), + + // Does not support V6 transactions + NetworkUpgrade::Genesis + | NetworkUpgrade::BeforeOverwinter + | NetworkUpgrade::Overwinter + | NetworkUpgrade::Sapling + | NetworkUpgrade::Blossom + | NetworkUpgrade::Heartwood + | NetworkUpgrade::Canopy + // FIXME: Just checking: is it correct that we consider Nu5 and Nu6 as unsupported for V6? + | NetworkUpgrade::Nu5 + | NetworkUpgrade::Nu6 => Err(TransactionError::UnsupportedByNetworkUpgrade( + transaction.version(), + network_upgrade, + )), + } + } + /// Verifies if a transaction's transparent inputs are valid using the provided /// `script_verifier` and `cached_ffi_transaction`. /// @@ -1022,8 +1129,8 @@ where } /// Verifies a transaction's Orchard shielded data. - fn verify_orchard_shielded_data( - orchard_shielded_data: &Option>, + fn verify_orchard_shielded_data( + orchard_shielded_data: &Option>, shielded_sighash: &SigHash, ) -> Result { let mut async_checks = AsyncChecks::new(); @@ -1041,7 +1148,7 @@ where // Actions in one transaction. So we queue it for verification // only once instead of queuing it up for every Action description. async_checks.push( - primitives::halo2::VERIFIER + V::get_verifier() .clone() .oneshot(primitives::halo2::Item::from(orchard_shielded_data)), ); From e5d5dacd83ee134ee71b3386c6fc256506f33970 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 19 Nov 2024 19:58:41 +0100 Subject: [PATCH 074/230] Temporary update get_blockchain_info@testnet_10 snapshot zebra-rpc to use 77777777 as consensus branch id for Nu7 (to ajdust it with ones used in librustzcash) --- .../methods/tests/snapshots/get_blockchain_info@testnet_10.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap index 9d7ea3f5176..20776940884 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap @@ -71,7 +71,7 @@ expression: info "activationheight": 2976000, "status": "pending" }, - "c8e71056": { + "77777777": { "name": "NU7", "activationheight": 2942001, "status": "pending" From a18a456de6e47c21af50bdb1c42d872792c771d9 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 19 Nov 2024 20:52:02 +0100 Subject: [PATCH 075/230] Fix cargo fmt issue --- zebra-consensus/src/transaction.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index c6b1ac0473d..8c5a6d69c92 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -430,7 +430,7 @@ where )?, }; - + if let Some(unmined_tx) = req.mempool_transaction() { let check_anchors_and_revealed_nullifiers_query = state .clone() From 215ec92e4ab53845502e54b43db26abdf755549a Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 19 Nov 2024 20:52:29 +0100 Subject: [PATCH 076/230] Add cargo clippy to ci-basic --- .github/workflows/ci-basic.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 226f1528046..e52c70103b6 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -34,3 +34,5 @@ jobs: run: cargo doc --all-features --document-private-items - name: Run format check run: cargo fmt -- --check + - name: Run clippy + run: cargo clippy --workspace --all-features --all-targets -- -D warnings From d9c87205c4c629bb18f33d83cb41aac0ece46125 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 19 Nov 2024 21:25:07 +0100 Subject: [PATCH 077/230] Add temporary docs for pub test constants amd modules --- zebra-chain/src/orchard_zsa.rs | 4 ++-- zebra-chain/src/orchard_zsa/tests.rs | 2 +- zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index 313c5ab9c0e..cb3dcd0aa28 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -4,8 +4,8 @@ #[cfg(any(test, feature = "proptest-impl"))] pub(crate) mod arbitrary; -// FIXME: feature = "proptest-impl" and pub are needed to access test vectors from another crates, -// remove it then +/// FIXME: feature = "proptest-impl" and pub are needed to access test vectors from another crates, +/// remove it then #[cfg(any(test, feature = "proptest-impl"))] pub mod tests; diff --git a/zebra-chain/src/orchard_zsa/tests.rs b/zebra-chain/src/orchard_zsa/tests.rs index 8c927c50432..a5d2fee1572 100644 --- a/zebra-chain/src/orchard_zsa/tests.rs +++ b/zebra-chain/src/orchard_zsa/tests.rs @@ -1,3 +1,3 @@ mod blocks; -// FIXME: pub is needed to access test vectors from another crates, remove it then +/// FIXME: pub is needed to access test vectors from another crates, remove it then pub mod vectors; diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs index e68775732f6..324f270c04d 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs @@ -1,4 +1,4 @@ -// FIXME: pub is needed to access test vectors from another crates, change it to pub(crate) then +/// FIXME: pub is needed to access test vectors from another crates, change it to pub(crate) then pub const BLOCKS: [&[u8]; 4] = [ // Genesis block &[], From 90dac031999581cab77c0d43105d808e7a2fa8a2 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 20 Nov 2024 07:04:56 +0100 Subject: [PATCH 078/230] Fix zsa consensus tests --- zebra-chain/src/orchard_zsa/tests.rs | 3 +++ zebra-consensus/src/lib.rs | 2 ++ 2 files changed, 5 insertions(+) diff --git a/zebra-chain/src/orchard_zsa/tests.rs b/zebra-chain/src/orchard_zsa/tests.rs index a5d2fee1572..2a757269874 100644 --- a/zebra-chain/src/orchard_zsa/tests.rs +++ b/zebra-chain/src/orchard_zsa/tests.rs @@ -1,3 +1,6 @@ +/// FIXME: refactor orchard_zsa/tests (possibly move vectors to zebra-tests), remove cfg(test) here etc. +#[cfg(test)] mod blocks; + /// FIXME: pub is needed to access test vectors from another crates, remove it then pub mod vectors; diff --git a/zebra-consensus/src/lib.rs b/zebra-consensus/src/lib.rs index 95381fd9e07..c61a1fe408d 100644 --- a/zebra-consensus/src/lib.rs +++ b/zebra-consensus/src/lib.rs @@ -65,3 +65,5 @@ pub use router::RouterError; /// A boxed [`std::error::Error`]. pub type BoxError = Box; + +mod zsa; From 2bb599f836b031a5e04e2627dac91e3af7e74e23 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 20 Nov 2024 07:58:35 +0100 Subject: [PATCH 079/230] Add missed ZSA test modules in zebra-consensus --- zebra-consensus/src/zsa.rs | 2 + zebra-consensus/src/zsa/tests.rs | 121 +++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 zebra-consensus/src/zsa.rs create mode 100644 zebra-consensus/src/zsa/tests.rs diff --git a/zebra-consensus/src/zsa.rs b/zebra-consensus/src/zsa.rs new file mode 100644 index 00000000000..87c2771955a --- /dev/null +++ b/zebra-consensus/src/zsa.rs @@ -0,0 +1,2 @@ +#[cfg(test)] +mod tests; diff --git a/zebra-consensus/src/zsa/tests.rs b/zebra-consensus/src/zsa/tests.rs new file mode 100644 index 00000000000..4d995c78c24 --- /dev/null +++ b/zebra-consensus/src/zsa/tests.rs @@ -0,0 +1,121 @@ +// FIXME: consider merging it with router/tests.rs + +// FIXME: fix warnings, clippy, remove printlns and commented out lines + +use std::sync::Arc; + +use color_eyre::eyre::Report; + +use zebra_chain::{ + block::{genesis::regtest_genesis_block, Block, Hash}, + orchard_zsa::tests::vectors::BLOCKS, + parameters::Network, + serialization::ZcashDeserialize, +}; +use zebra_test::transcript::{ExpectedTranscriptError, Transcript}; + +use crate::{block::Request, Config}; + +fn patch_block_coinbase_height(block: &mut Block, previous_block: &Block) { + let proper_height = previous_block + .coinbase_height() + .expect("block has coinbase_height") + .next() + .expect("block has next coinbase_height"); + + let mut transactions: Vec> = + block.transactions.iter().cloned().collect(); + //let transactions: &mut Vec> = + // Arc::make_mut(&mut block.transactions); + if let Some(tx_arc) = transactions.first_mut() { + let tx = Arc::make_mut(&mut *tx_arc); + + if let Some(input) = tx.inputs_mut().first_mut() { + if let zebra_chain::transparent::Input::Coinbase { ref mut height, .. } = input { + *height = proper_height; + } + } + } + + block.transactions = transactions.into(); +} + +fn patch_block(block: &mut Block, previous_block: &Block, commitment_bytes: [u8; 32]) { + println!( + "patch_block merkle_root before: {:?}", + block.header.merkle_root + ); + let header = Arc::make_mut(&mut block.header); + header.previous_block_hash = previous_block.hash(); + *header.commitment_bytes = commitment_bytes; + + patch_block_coinbase_height(block, previous_block); + + let transaction_hashes: Arc<[_]> = block.transactions.iter().map(|t| t.hash()).collect(); + let merkle_root = transaction_hashes.iter().cloned().collect(); + println!("patch_block merkle_root after: {:?}", merkle_root); + let header = Arc::make_mut(&mut block.header); + header.merkle_root = merkle_root; +} + +fn create_transcript_data() -> [(Request, Result); 4] { + let genesis_block: Arc = regtest_genesis_block(); + + let mut issuance_block: Block = + Block::zcash_deserialize(BLOCKS[1].as_ref()).expect("issuance block should deserialize"); + let mut transfer_block: Block = + Block::zcash_deserialize(BLOCKS[2].as_ref()).expect("transfer block should deserialize"); + let mut burn_block: Block = + Block::zcash_deserialize(BLOCKS[3].as_ref()).expect("burn block should deserialize"); + + patch_block(&mut issuance_block, &genesis_block, [0u8; 32]); + + patch_block( + &mut transfer_block, + &issuance_block, + [ + 0xb7, 0x76, 0x07, 0x73, 0x39, 0x2d, 0x36, 0x6e, 0x31, 0xc4, 0xb4, 0xce, 0xce, 0xfa, + 0x5e, 0x1f, 0x85, 0x60, 0x21, 0x21, 0x1e, 0x2f, 0x91, 0xa9, 0x1e, 0x05, 0xb3, 0x06, + 0xea, 0x80, 0x57, 0x24, + ], + ); + + patch_block( + &mut burn_block, + &transfer_block, + [ + 0x6d, 0xec, 0x74, 0x8e, 0x07, 0xd1, 0x86, 0x67, 0xad, 0xb8, 0x39, 0x50, 0xe9, 0x48, + 0xc2, 0xca, 0x51, 0x9f, 0xad, 0x67, 0x45, 0x7a, 0xff, 0x4c, 0x3f, 0xa5, 0xad, 0x76, + 0xd2, 0x3a, 0xa8, 0x4c, + ], + ); + + [ + genesis_block, + Arc::new(issuance_block), + Arc::new(transfer_block), + Arc::new(burn_block), + ] + .map(|block| (Request::Commit(block.clone()), Ok(block.hash()))) +} + +// FIMXE: uncomment when blocks test data will be fixed +//#[tokio::test(flavor = "multi_thread")] +async fn check_zsa_workflow() -> Result<(), Report> { + let _init_guard = zebra_test::init(); + + let network = Network::new_regtest(Some(1), Some(1), Some(1)); + + let state_service = zebra_state::init_test(&network); + + let ( + block_verifier_router, + _transaction_verifier, + _groth16_download_handle, + _max_checkpoint_height, + ) = crate::router::init(Config::default(), &network, state_service.clone()).await; + + Transcript::from(create_transcript_data()) + .check(block_verifier_router.clone()) + .await +} From 1faf196170e80a5410aa36a7b52ee22fd3a0b794 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 20 Nov 2024 08:00:59 +0100 Subject: [PATCH 080/230] Remove zebra-state zsa workflow tests (in favour of workflow tests in zebra-consensus) --- zebra-state/tests/zsa.rs | 164 --------------------------------------- 1 file changed, 164 deletions(-) delete mode 100644 zebra-state/tests/zsa.rs diff --git a/zebra-state/tests/zsa.rs b/zebra-state/tests/zsa.rs deleted file mode 100644 index c01d5a8f46d..00000000000 --- a/zebra-state/tests/zsa.rs +++ /dev/null @@ -1,164 +0,0 @@ -use zebra_chain::orchard_zsa::tests::vectors::BLOCKS; - -use std::sync::Arc; - -use color_eyre::eyre::Report; - -use zebra_chain::{ - block::{genesis::regtest_genesis_block, Block, Height}, - parameters::Network, - serialization::ZcashDeserialize, -}; - -use zebra_state::{Config, Request, Response}; - -use zebra_test::transcript::{ExpectedTranscriptError, Transcript}; - -fn patch_block_coinbase_height(block: &mut Block, previous_block: &Block) { - let mut transactions: Vec> = - block.transactions.iter().cloned().collect(); - //let transactions: &mut Vec> = - // Arc::make_mut(&mut block.transactions); - if let Some(tx_arc) = transactions.first_mut() { - let tx = Arc::make_mut(&mut *tx_arc); - if let Some(input) = tx.inputs_mut().first_mut() { - if let zebra_chain::transparent::Input::Coinbase { ref mut height, .. } = input { - *height = previous_block - .coinbase_height() - .expect("block has coinbase_height") - .next() - .expect("block has next coinbase_height"); //zebra_chain::block::Height(new_height) - } - } - } - block.transactions = transactions.into(); -} - -fn patch_block(block: &mut Block, previous_block: &Block, commitment_bytes: [u8; 32]) { - let header = Arc::make_mut(&mut block.header); - header.previous_block_hash = previous_block.hash(); - *header.commitment_bytes = commitment_bytes; - patch_block_coinbase_height(block, previous_block); -} - -// FIXME: remove printlns -fn create_transcript_data( - network: Network, -) -> Vec<(Request, Result)> { - let genesis_block = regtest_genesis_block(); - - let mut issuance_block: Block = - Block::zcash_deserialize(BLOCKS[1].as_ref()).expect("issuance block should deserialize"); - let mut transfer_block: Block = - Block::zcash_deserialize(BLOCKS[2].as_ref()).expect("transfer block should deserialize"); - let mut burn_block: Block = - Block::zcash_deserialize(BLOCKS[3].as_ref()).expect("burn block should deserialize"); - - let genesis_hash = genesis_block.hash(); - println!( - "Genesis hash: {:?}, previous: {:?}", - genesis_hash, genesis_block.header.previous_block_hash - ); - - //assert_eq!(genesis_hash, network.genesis_hash()); - - // Patch issuance block - patch_block(&mut issuance_block, &genesis_block, [0u8; 32]); - - let issuance_hash = issuance_block.hash(); - println!( - "Issuance hash: {:?}, previous: {:?}", - issuance_hash, issuance_block.header.previous_block_hash - ); - - // Patch transfer block - patch_block( - &mut transfer_block, - &issuance_block, - [ - 0xb7, 0x76, 0x07, 0x73, 0x39, 0x2d, 0x36, 0x6e, 0x31, 0xc4, 0xb4, 0xce, 0xce, 0xfa, - 0x5e, 0x1f, 0x85, 0x60, 0x21, 0x21, 0x1e, 0x2f, 0x91, 0xa9, 0x1e, 0x05, 0xb3, 0x06, - 0xea, 0x80, 0x57, 0x24, - ], - ); - - let transfer_hash = transfer_block.hash(); - println!( - "Transfer hash: {:?}, previous: {:?}", - transfer_hash, transfer_block.header.previous_block_hash - ); - - // Patch burn block - patch_block( - &mut burn_block, - &transfer_block, - [ - 0x6d, 0xec, 0x74, 0x8e, 0x07, 0xd1, 0x86, 0x67, 0xad, 0xb8, 0x39, 0x50, 0xe9, 0x48, - 0xc2, 0xca, 0x51, 0x9f, 0xad, 0x67, 0x45, 0x7a, 0xff, 0x4c, 0x3f, 0xa5, 0xad, 0x76, - 0xd2, 0x3a, 0xa8, 0x4c, - ], - ); - - let burn_hash = burn_block.hash(); - println!( - "Burn hash: {:?}, previous: {:?}", - burn_hash, burn_block.header.previous_block_hash - ); - - //println!("{:#?}", transfer_block); - - vec![ - ( - Request::CommitCheckpointVerifiedBlock(genesis_block.clone().into()), - Ok(Response::Committed(genesis_hash)), - ), - ( - Request::Block(genesis_hash.into()), - Ok(Response::Block(Some(genesis_block))), - ), - ( - //Request::CommitSemanticallyVerifiedBlock(Arc::new(issuance_block.clone()).into()), - Request::CommitCheckpointVerifiedBlock(Arc::new(issuance_block.clone()).into()), - Ok(Response::Committed(issuance_hash)), - ), - ( - Request::Block(issuance_hash.into()), - Ok(Response::Block(Some(Arc::new(issuance_block)))), - ), - ( - Request::CommitCheckpointVerifiedBlock(Arc::new(transfer_block.clone()).into()), - Ok(Response::Committed(transfer_hash)), - ), - ( - Request::Block(transfer_hash.into()), - Ok(Response::Block(Some(Arc::new(transfer_block)))), - ), - ( - Request::CommitCheckpointVerifiedBlock(Arc::new(burn_block.clone()).into()), - Ok(Response::Committed(burn_hash)), - ), - ( - Request::Block(burn_hash.into()), - Ok(Response::Block(Some(Arc::new(burn_block)))), - ), - ] -} - -#[tokio::test(flavor = "multi_thread")] -//#[tokio::test] -async fn check_zsa_workflow() -> Result<(), Report> { - //let _init_guard = zebra_test::init(); - //let network = Network::new_default_testnet(); - let network = Network::new_regtest(None, None, None); - - for transcript_data in &[create_transcript_data(network.clone())] { - // We're not verifying UTXOs here. - let (service, _, _, _) = - zebra_state::init(Config::ephemeral(), &network.clone(), Height::MAX, 0); - let transcript = Transcript::from(transcript_data.iter().cloned()); - // check the on disk service against the transcript - transcript.check(service).await?; - } - - Ok(()) -} From 689e7916466fa806d6291b2765d204dffce5a497 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 20 Nov 2024 08:07:36 +0100 Subject: [PATCH 081/230] Fix cargo clippy issues --- zebra-chain/src/orchard_zsa/tests/blocks.rs | 9 ++++----- zebra-consensus/src/primitives/halo2/tests.rs | 8 ++++---- zebra-consensus/src/zsa.rs | 5 +++-- zebra-consensus/src/zsa/tests.rs | 3 +-- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/tests/blocks.rs b/zebra-chain/src/orchard_zsa/tests/blocks.rs index 2828acb311c..8c10e3d8801 100644 --- a/zebra-chain/src/orchard_zsa/tests/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/blocks.rs @@ -5,11 +5,10 @@ use super::vectors::BLOCKS; #[test] fn deserialize_blocks() { let issuance_block = - Block::zcash_deserialize(BLOCKS[1].as_ref()).expect("issuance block should deserialize"); - let transfer_block = - Block::zcash_deserialize(BLOCKS[2].as_ref()).expect("transfer block should deserialize"); - let burn_block = - Block::zcash_deserialize(BLOCKS[3].as_ref()).expect("burn block should deserialize"); + Block::zcash_deserialize(BLOCKS[1]).expect("issuance block should deserialize"); + let _transfer_block = + Block::zcash_deserialize(BLOCKS[2]).expect("transfer block should deserialize"); + let _burn_block = Block::zcash_deserialize(BLOCKS[3]).expect("burn block should deserialize"); for transaction in issuance_block.transactions { if let Transaction::V6 { diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 539a7fe2a0c..45c4fb6e7a4 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -169,7 +169,7 @@ async fn verify_generated_halo2_proofs() { // Use separate verifier so shared batch tasks aren't killed when the test ends (#2390) let mut verifier = Fallback::new( Batch::new( - Verifier::new(&OrchardVanilla::get_verifying_key()), + Verifier::new(OrchardVanilla::get_verifying_key()), crate::primitives::MAX_BATCH_SIZE, None, crate::primitives::MAX_BATCH_LATENCY, @@ -177,7 +177,7 @@ async fn verify_generated_halo2_proofs() { tower::service_fn( (|item: Item| { ready( - item.verify_single(&OrchardVanilla::get_verifying_key()) + item.verify_single(OrchardVanilla::get_verifying_key()) .map_err(Halo2Error::from), ) }) as fn(_) -> _, @@ -242,7 +242,7 @@ async fn correctly_err_on_invalid_halo2_proofs() { // Use separate verifier so shared batch tasks aren't killed when the test ends (#2390) let mut verifier = Fallback::new( Batch::new( - Verifier::new(&OrchardVanilla::get_verifying_key()), + Verifier::new(OrchardVanilla::get_verifying_key()), crate::primitives::MAX_BATCH_SIZE, None, crate::primitives::MAX_BATCH_LATENCY, @@ -250,7 +250,7 @@ async fn correctly_err_on_invalid_halo2_proofs() { tower::service_fn( (|item: Item| { ready( - item.verify_single(&OrchardVanilla::get_verifying_key()) + item.verify_single(OrchardVanilla::get_verifying_key()) .map_err(Halo2Error::from), ) }) as fn(_) -> _, diff --git a/zebra-consensus/src/zsa.rs b/zebra-consensus/src/zsa.rs index 87c2771955a..0f20158de73 100644 --- a/zebra-consensus/src/zsa.rs +++ b/zebra-consensus/src/zsa.rs @@ -1,2 +1,3 @@ -#[cfg(test)] -mod tests; +// FIMXE: uncomment when blocks test data will be fixed +//#[cfg(test)] +//mod tests; diff --git a/zebra-consensus/src/zsa/tests.rs b/zebra-consensus/src/zsa/tests.rs index 4d995c78c24..d66ac8c09b9 100644 --- a/zebra-consensus/src/zsa/tests.rs +++ b/zebra-consensus/src/zsa/tests.rs @@ -99,8 +99,7 @@ fn create_transcript_data() -> [(Request, Result) .map(|block| (Request::Commit(block.clone()), Ok(block.hash()))) } -// FIMXE: uncomment when blocks test data will be fixed -//#[tokio::test(flavor = "multi_thread")] +#[tokio::test(flavor = "multi_thread")] async fn check_zsa_workflow() -> Result<(), Report> { let _init_guard = zebra_test::init(); From ab7c077cb10cea6cd345b14199ca279ebac35044 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 21 Nov 2024 09:54:35 +0100 Subject: [PATCH 082/230] Modify Orchard ShieldedData binding_verification_key function to subtract ValueCommitment of burn items if they are present --- zebra-chain/src/orchard/commitment.rs | 11 ++++++++++ zebra-chain/src/orchard/orchard_flavor_ext.rs | 14 +++++++++--- zebra-chain/src/orchard/shielded_data.rs | 6 +++++ zebra-chain/src/orchard_zsa/burn.rs | 22 +++++++++++++++++++ 4 files changed, 50 insertions(+), 3 deletions(-) diff --git a/zebra-chain/src/orchard/commitment.rs b/zebra-chain/src/orchard/commitment.rs index 4e69258c4e5..2e6ea3ed32d 100644 --- a/zebra-chain/src/orchard/commitment.rs +++ b/zebra-chain/src/orchard/commitment.rs @@ -14,6 +14,8 @@ use halo2::{ use lazy_static::lazy_static; use rand_core::{CryptoRng, RngCore}; +use orchard::note::AssetBase; + use crate::{ amount::Amount, error::RandError, @@ -249,6 +251,15 @@ impl ValueCommitment { let v = pallas::Scalar::from(value); Self::from(*V * v + *R * rcv) } + + /// Generate a new `ValueCommitment` from an existing `rcv on a `value` (ZSA version). + #[cfg(feature = "tx-v6")] + #[allow(non_snake_case)] + pub fn with_asset(rcv: pallas::Scalar, value: Amount, asset: &AssetBase) -> Self { + let v = pallas::Scalar::from(value); + let V_zsa = asset.cv_base(); + Self::from(V_zsa * v + *R * rcv) + } } lazy_static! { diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index 6ad05abd889..0ade1c75d39 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -9,7 +9,10 @@ use proptest_derive::Arbitrary; use orchard::{note_encryption::OrchardDomainCommon, orchard_flavor}; -use crate::serialization::{ZcashDeserialize, ZcashSerialize}; +use crate::{ + orchard::ValueCommitment, + serialization::{ZcashDeserialize, ZcashSerialize}, +}; #[cfg(feature = "tx-v6")] use crate::orchard_zsa::{Burn, NoBurn}; @@ -50,7 +53,13 @@ pub trait OrchardFlavorExt: Clone + Debug { /// A type representing a burn field for this protocol version. #[cfg(feature = "tx-v6")] - type BurnType: Clone + Debug + Default + ZcashDeserialize + ZcashSerialize + TestArbitrary; + type BurnType: Clone + + Debug + + Default + + ZcashDeserialize + + ZcashSerialize + + Into + + TestArbitrary; } /// A structure representing a tag for Orchard protocol variant used for the transaction version `V5`. @@ -78,6 +87,5 @@ impl OrchardFlavorExt for OrchardZSA { type Flavor = orchard_flavor::OrchardZSA; type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; - #[cfg(feature = "tx-v6")] type BurnType = Burn; } diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index 844c1ff3994..109fcfb94cc 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -119,7 +119,13 @@ impl ShieldedData { let cv_balance: ValueCommitment = ValueCommitment::new(pallas::Scalar::zero(), self.value_balance); + #[cfg(not(feature = "tx-v6"))] let key_bytes: [u8; 32] = (cv - cv_balance).into(); + + // FIXME: use asset to create ValueCommitment here for burns and above for value_balance? + #[cfg(feature = "tx-v6")] + let key_bytes: [u8; 32] = (cv - cv_balance - self.burn.clone().into()).into(); + key_bytes.into() } diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index 0e0c007709b..75301a47008 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -2,9 +2,12 @@ use std::io; +use halo2::pasta::pallas; + use crate::{ amount::Amount, block::MAX_BLOCK_BYTES, + orchard::ValueCommitment, serialization::{ ReadZcashExt, SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashSerialize, }, @@ -109,6 +112,13 @@ impl<'de> serde::Deserialize<'de> for BurnItem { #[derive(Default, Clone, Debug, PartialEq, Eq, Serialize)] pub struct NoBurn; +impl From for ValueCommitment { + fn from(_burn: NoBurn) -> ValueCommitment { + // FIXME: is there a simpler way to get zero ValueCommitment? + ValueCommitment::new(pallas::Scalar::zero(), Amount::zero()) + } +} + impl ZcashSerialize for NoBurn { fn zcash_serialize(&self, mut _writer: W) -> Result<(), io::Error> { Ok(()) @@ -131,6 +141,18 @@ impl From> for Burn { } } +// FIXME: consider conversion from reference to Burn instead, to avoid using `clone` when it's called +impl From for ValueCommitment { + fn from(burn: Burn) -> ValueCommitment { + burn.0 + .into_iter() + .map(|BurnItem(asset, amount)| { + ValueCommitment::with_asset(pallas::Scalar::zero(), amount, &asset) + }) + .sum() + } +} + impl ZcashSerialize for Burn { fn zcash_serialize(&self, writer: W) -> Result<(), io::Error> { self.0.zcash_serialize(writer) From ada6a3725093b083726f47016ddcdfd0c2394e5a Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 25 Nov 2024 10:07:58 +0100 Subject: [PATCH 083/230] Update consensus ZSA workflow tests and test vectors --- zebra-consensus/src/zsa.rs | 5 +- zebra-consensus/src/zsa/tests.rs | 97 +++++--------------------------- zebra-test/src/vectors.rs | 2 + 3 files changed, 17 insertions(+), 87 deletions(-) diff --git a/zebra-consensus/src/zsa.rs b/zebra-consensus/src/zsa.rs index 0f20158de73..87c2771955a 100644 --- a/zebra-consensus/src/zsa.rs +++ b/zebra-consensus/src/zsa.rs @@ -1,3 +1,2 @@ -// FIMXE: uncomment when blocks test data will be fixed -//#[cfg(test)] -//mod tests; +#[cfg(test)] +mod tests; diff --git a/zebra-consensus/src/zsa/tests.rs b/zebra-consensus/src/zsa/tests.rs index d66ac8c09b9..dbea27190bb 100644 --- a/zebra-consensus/src/zsa/tests.rs +++ b/zebra-consensus/src/zsa/tests.rs @@ -1,102 +1,31 @@ // FIXME: consider merging it with router/tests.rs -// FIXME: fix warnings, clippy, remove printlns and commented out lines - use std::sync::Arc; use color_eyre::eyre::Report; use zebra_chain::{ block::{genesis::regtest_genesis_block, Block, Hash}, - orchard_zsa::tests::vectors::BLOCKS, parameters::Network, serialization::ZcashDeserialize, }; -use zebra_test::transcript::{ExpectedTranscriptError, Transcript}; - -use crate::{block::Request, Config}; - -fn patch_block_coinbase_height(block: &mut Block, previous_block: &Block) { - let proper_height = previous_block - .coinbase_height() - .expect("block has coinbase_height") - .next() - .expect("block has next coinbase_height"); - - let mut transactions: Vec> = - block.transactions.iter().cloned().collect(); - //let transactions: &mut Vec> = - // Arc::make_mut(&mut block.transactions); - if let Some(tx_arc) = transactions.first_mut() { - let tx = Arc::make_mut(&mut *tx_arc); - - if let Some(input) = tx.inputs_mut().first_mut() { - if let zebra_chain::transparent::Input::Coinbase { ref mut height, .. } = input { - *height = proper_height; - } - } - } - - block.transactions = transactions.into(); -} -fn patch_block(block: &mut Block, previous_block: &Block, commitment_bytes: [u8; 32]) { - println!( - "patch_block merkle_root before: {:?}", - block.header.merkle_root - ); - let header = Arc::make_mut(&mut block.header); - header.previous_block_hash = previous_block.hash(); - *header.commitment_bytes = commitment_bytes; - - patch_block_coinbase_height(block, previous_block); - - let transaction_hashes: Arc<[_]> = block.transactions.iter().map(|t| t.hash()).collect(); - let merkle_root = transaction_hashes.iter().cloned().collect(); - println!("patch_block merkle_root after: {:?}", merkle_root); - let header = Arc::make_mut(&mut block.header); - header.merkle_root = merkle_root; -} - -fn create_transcript_data() -> [(Request, Result); 4] { - let genesis_block: Arc = regtest_genesis_block(); - - let mut issuance_block: Block = - Block::zcash_deserialize(BLOCKS[1].as_ref()).expect("issuance block should deserialize"); - let mut transfer_block: Block = - Block::zcash_deserialize(BLOCKS[2].as_ref()).expect("transfer block should deserialize"); - let mut burn_block: Block = - Block::zcash_deserialize(BLOCKS[3].as_ref()).expect("burn block should deserialize"); - - patch_block(&mut issuance_block, &genesis_block, [0u8; 32]); +use zebra_test::{ + transcript::{ExpectedTranscriptError, Transcript}, + vectors::ZSA_WORKFLOW_BLOCKS, +}; - patch_block( - &mut transfer_block, - &issuance_block, - [ - 0xb7, 0x76, 0x07, 0x73, 0x39, 0x2d, 0x36, 0x6e, 0x31, 0xc4, 0xb4, 0xce, 0xce, 0xfa, - 0x5e, 0x1f, 0x85, 0x60, 0x21, 0x21, 0x1e, 0x2f, 0x91, 0xa9, 0x1e, 0x05, 0xb3, 0x06, - 0xea, 0x80, 0x57, 0x24, - ], - ); +use crate::{block::Request, Config}; - patch_block( - &mut burn_block, - &transfer_block, - [ - 0x6d, 0xec, 0x74, 0x8e, 0x07, 0xd1, 0x86, 0x67, 0xad, 0xb8, 0x39, 0x50, 0xe9, 0x48, - 0xc2, 0xca, 0x51, 0x9f, 0xad, 0x67, 0x45, 0x7a, 0xff, 0x4c, 0x3f, 0xa5, 0xad, 0x76, - 0xd2, 0x3a, 0xa8, 0x4c, - ], - ); +fn create_transcript_data() -> impl Iterator)> +{ + let workflow_blocks = ZSA_WORKFLOW_BLOCKS.iter().map(|block_bytes| { + Arc::new(Block::zcash_deserialize(&block_bytes[..]).expect("block should deserialize")) + }); - [ - genesis_block, - Arc::new(issuance_block), - Arc::new(transfer_block), - Arc::new(burn_block), - ] - .map(|block| (Request::Commit(block.clone()), Ok(block.hash()))) + std::iter::once(regtest_genesis_block()) + .chain(workflow_blocks) + .map(|block| (Request::Commit(block.clone()), Ok(block.hash()))) } #[tokio::test(flavor = "multi_thread")] diff --git a/zebra-test/src/vectors.rs b/zebra-test/src/vectors.rs index cfcd48e811b..7937b19ba7f 100644 --- a/zebra-test/src/vectors.rs +++ b/zebra-test/src/vectors.rs @@ -6,10 +6,12 @@ use lazy_static::lazy_static; mod block; mod orchard_note_encryption; mod orchard_shielded_data; +mod zsa; pub use block::*; pub use orchard_note_encryption::*; pub use orchard_shielded_data::*; +pub use zsa::*; /// A testnet transaction test vector /// From e0ee6c686ed28243411518aa1857ea362e71c672 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 25 Nov 2024 10:19:44 +0100 Subject: [PATCH 084/230] Add ZSA workflow test vectors --- zebra-test/src/vectors/zsa.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 zebra-test/src/vectors/zsa.rs diff --git a/zebra-test/src/vectors/zsa.rs b/zebra-test/src/vectors/zsa.rs new file mode 100644 index 00000000000..f4caefb4afd --- /dev/null +++ b/zebra-test/src/vectors/zsa.rs @@ -0,0 +1,15 @@ +//! ZSA test vectors + +#![allow(missing_docs)] + +use hex::FromHex; +use lazy_static::lazy_static; + +lazy_static! { +pub static ref ZSA_WORKFLOW_BLOCKS: [Vec; 3] = + [ + "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f02c71c7ffa660028b5f3bc0b0bedf9b76a829ce8f2ef82c2c69ab6948bc9fd00a80000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000001000000000000000000000000000006000080f8694a1277777777000000001c1d1c000000000002000adfbfe7961473dc7f8ffd411b3e2eeb005a37342e6081d5121f18f5648c8480adb28949796e09a38118152905839afc125618be1fdaf921d188488b607f2544e12a249ab310f17a9349bfe463c7de09d2b822ab0efa88b6d32f77d7c38793192b944aeec0ca94918390dbe44c50e706407692e348ed9b7cedd231941a673722ef1e7e74888672b2b2d08c97a9ac114b7039feffbeb8bbe197db4a0bca8d395cd40551c1d5d788acc2ad09eddda73a5948de2d9e2d82aa638dad6f5dc61042d6850b926d944f29f17e96eca84684252c97ce4382f2642e54208929a4b37954e8e386c677f2aee3e8f4f4aee9f76a87d868fa2210445c09b927b842485918c869a23be8213ae21937a8ca83406fab193cecfd3fcf3b1c698e8057a6c87c059dc6f4ccb30af8e608a7c04088cf3ca32ab20cd780da9443606b092c8b5d85c9a76433c0993e3eee385884ce1f3890abf95462c49bed01a3a5c09df98cb7082e9770bdee196f8b968003f5cc76d82bf575f01da3ed40e44b3b15721f4a9dd5ecd14fb71a42b24ccb7d7e6a3bc10b53ebcb7e0ec6ace91dbc19801eff0c76ec0c10602bca2cfce9f3e79536a25143d351ed2894b4eb4e549960f212f0787057ab1ac8b249c3d3ff8652cb3fb17d7656d50c5e6833b056feb26855332f60e7b8d1ebba32df63d8561fd7d209a1e5adb9853bb5b5d6a41bf1ec52d348023e945bc02e8d6ae8d5b6c7a9225991cca4aa0b41861f237b3bf545220799f152767c7fdcc693a989057e119c18a96007c69c8fe5751a4258ec3f0f99c1aea8dbbaf4df9953ccf6b42cf2f4265011ca89ec7b9ef2c6e9410886291054f50db6310b225ddf32f9db26416da6ca9ef6e3198db36ebab9802517aeaf628d41358fd141dda8fab32fcded20707abc3d00191e0b2690a1e2fa044814191323155fb21e3da8798e0bafef8c2da4c73f967504f51e716cf87117f90fd028df17f3ea26aebeda7f5b3192cd5f4855044e9a41bbfb817074ca1680a458338b191a9619dd337bd0335cb1896d79c79cce10e454b58fecb1cf10da9f53129bbf3cae2bde82007ed98505f16922b6ae53a3a709c2e01ff7e529925d6069807c06bb0c73abf8d463b2a944a97d150935cc76e1ae1f8f95159a928a5afbf76d54544a771fd4bc482ca522274b94c87b4f1c7cc3399709b5572c5133bc945cca63bad59b454ee301e3582f09c5c31f326a59705a2b534d8e9a79835bf767ea563b0aa74d3301c40a303f6fc04ba0f3807c5decb6743aabfed1a092f88975820c324e2229829462e4985e299c2415eccbdbb4ff26789b74e91db286e6a4af023e8a18e826e930d9d4ac8d92cd8a1098d0705852cda367ba067e723ace9ea8b9502e20e6519dc72b1cb477c4f3091ae4d20eb7401acac77d923eaf5de00ecbb61baa3aca9044f3e66262245aa9f3dce1d02a88e8c26b34e3c27b4e4e5f91cb633c9b6e098063d052dd6883d4c2b153c739ef78c5f375c640ff747adc1110de2f9d011118f3208bee2f3af9990d56ecddab1cfde0c053020b1116afdec7a3303fffe6f6880072482f95aa3115724814aa5fad017e3b7637f3dba509f1e371c9b87a275cfceb68aa5317dbac0e1959367d124935c76631b8aeb532d99c393374f214af2d6a3a5bf4071d97b6ad39b5b2ec03f1feb520ce467808eb2cedb3ec933c20322bcd4511b838de111f9faafb5d45ffd8edbb1fe8f0928d535ab9809b4cbf588af635419b10f7ad9f4418c766d88526215b74518cb6554e833ada2dea5e57776a09541d76ba545f8a727bbe7722912cf00da4a48a462a5b7b13c88941762462142f97e8da2b358435c9cb53d24b6443ea2e1bdaaf6ce58dbd0bcc598cf170a193e14e76ca8bde66ccc786bd330c6ce61db5f202b01c7faf185877e3614c1a1b4484cae6dbef080142f8c45e3e48485746fd3505bba099ae7b37b96e22b2cfe6a0dea5b017974126259d5055a28ad510b3b7116c27287fb7e635f1918d5a9ca2529b1741c9e86c59ddf11c3f70a56fac7c9607eb9bb36612494ed1ae819c092cfff73b7c9c5d3e8680dbe73f92b749c84363c374d80632fc488d0b7d35f25ecac1c151ad8427d7a4eacf24fa6937fd5c416776654bcfae92d999b51c49d76bd53a9d5600b40915acab5d31f0ea3f7a68adccbb72cb454164beb35819af0e9e06ecb40e96c9c2aa8018883301f65cfbaa7ea894737d49b44aa5d76c4b26bbb6de7126bf785fc2a8760ce1664150be0b6828659513561b52906e6a4782732749897a41ffce670736ce0baf5730fce9bcb50a44e1e9bba166f4812ecfdbc2ddd8483405cd2bc68ac179177e1713220348da35c7b2a30c9ad9670d99a53a3c4c4a611fcefe9e39024732d6996568f2fd8eca433a41664b070000000000000000ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82ffde01c599a33ae69b9dcc093a546efd4cdc2c8daa0479ccdc63123cbd0622fa54f8c15ce9a049727b659c998b2fc935ddfae5788c51772e00dd8fafb91e7b9e7b9d4a34efad77ea3f54eaf8bb5bfd4c5d5ec6761689042ec6b1639e79d2628e712669e32f33d058707141549b0a0fc31d9fe4a633871d1ca48096cd8272f735a0838bc1a440947547ce52183863bf080eba73bb36f5130d7dc8676be2e28d00714dc36ccc580d88f6d878357e7121a811a03eb12faddcb75c9c3703ccc4afdaa85101244e619f565a5635e6b8c856fda2edfc27b5c06a711730beb1c361a6a916fd713ba64385734b8563775d66adace055205c6cf9a6c90faca0629e7b93511d0e51e3405210bc3d3c590ead6671e57af44a9418a5d3c6369d5b6d294032f1592c601c2782f5e5fb7ef820f548a7e21661944982f5b04f8722ebf42456df6748a2f9ba2b816bfdfe1432f6c4911daec2b75802d43000403272e1de73bfd625b9742b8970133c0599a17cb7fd7984d6a3da82e845e179ea888019c6d86016cbef610a7a0e3409f0a2bac1181ce62a22fe3fdad2708225ec503077caf354dc5c12f6fad975509172383e2f87405fc7c387b1de333f435426fa3b8a524cea377f3c24690918a4ea2dbf4940ded498169b9b85adcd9d37175ac43897abea5d629775f4f9792d2ece6ff69dec38e38d0c1c9e40dd2967aa103a20a148290a9b89ea82e1bb5235bfd29d260862365933e19f81eb19be2c775707433d66c15f68e5bb8a578a925f20e9d1bc34132c5a214ade50ff48489b89cb674fd3a9c787d0ab539849aa19486e3d4081d4f361517f45fa35168e0432fbb69251a6a7e8f5d33b30564338f693e636d04203502588b4e9128744f49005a77e5de0f79e06053c01e82f4bc29f0bdaf3292c300030eb758fe2a7e98f41f0db618ecb99924e25084b0e69da78bb4918b365b8c613ff5e033d4994e176b5abe710fa552b3e5e21f59a33e4e0aad74c0504c2eeffcf213301b35d9b0bd3c7d140c849012b1fa7ee177e994366b9b278afd94f6bf9a65bbd1cfcf5f3525512e5b257f6a5cd61c43ff2c695cd9571d8d0e24bff92a5ace203d9a643b7c52d794b3a6a2f0cdc6c8c1527e51b32847935dd0c12b1f1aef49cc40d4318b5b067ab9d238e7dc4a8903d8ed224c15ed66b11043fb6ca6109587b6210027df615ef57125d696d0de758be6e4b1693e260589e441ebb020177a4bc7c577a7f2c7d415e00fe93cf1436bf13f738f0cb7d0448074f1436457dfdc03217b585d133dd44928779072129072c0cf0ad9ff3fdbc686f12d219313ceb77e01846f030d631c8014987081a1e3659239e009105143ff3fd3d999fb10e1a1b8f0adce31db881d5da746138462e5a1b45d47862fff760d3b1ae1de946257f2f0edd1bb911495fe1a24ec3a7cd5285e5bb25ac1d206d2f926f9dfd574758a6eb2ee5faed26e5a8e07dbeb11ba4dcfad69d93cc718fca7658b97384a243589699547d476887de967e325ba5e3b982b079eddf83998849579a849dbd3f2f487eaf9242512899756352f3680f334e0585bd43a3439bd62404297912e545e7c18e0c2e19714752b7525bebea1d83222648bc9457ff3fed4c91b1fabc6c88b5c3805dde0267f72a0abba1715fcbacce4253881625026ec2e240e8bb98c5316d28d361a91a1a572caa057492fec8d5e8d8b51f5890515186f7c97ba4a3810f40e9916567ea7a1980fd806d295c73a8b1243b538c373f531994507ae50889cddbe473a8dac128c98eeaa965cb0cdec2dce36fae175334b1dccd48839b7d28292a7c753cf23990d111e518a4260631d5a99a28f3bfd01db75d8271d08556abef553106fdc472ae97b5f4d2d3741a5104d06560d85f48d3e3acb040c3264d37f370f2acbff61ed733f655d8815983c7e78942131b41645f1ddcb24711ef39dede1317c4d7dd9b01f77066b9f3714b5f09dbb35e8341188e4384bad7238d9ef7d73e2055bb9e6706a90348ae9e5057780666f3642d7a18085e115e5ea3447fdd013a7d976d00e39edee09b271286c1a325161d3d6eac566cb86c5af3d287b5a56dcc48faec1d8342bf3c5436ccf03c0b47cb880aa7001e2c5464a406e24dfd9d021e62558e3cc9ae3228f03ddab021d5519fb426551e0a39ad08f68229662f16b79b7653b8f827a8527f1dc556a02f9e3c7d0f3872467a60340dbb0641d91d6956a33f5c905069ac39e67b40fc8d5dc617e00e89dd926bac628eb187ca1d0c41972b73b628f18159633c6d4697893bab32cb760a193b57034804a66381e62bebd6b729294bb14a113c5750a2bbdb57d40ec9e37ce7f3a486b920bf2972779b88d4ffd3136e2c10286682a4c413ed2991ce333060be5e348dde9eaded10e4cfc84ab1b157713936149239477a0b5a437574a45f24843ec4a525a71813c05c2524b92c893cb6aa0dda8df21d550371f5ac622038baef7071007a31cc486158ca1a8ec2a0c274ea26100fcfa5a3991b6f79384ae487975207d2b0b068df60c7bd63c014d13d2b5215ba7be1802b78742cee248c07cb00f3d5472dde9f85a1a9a323125a3cca08fe5c8d89f73c3fb600a4a3c7f28f12ccdac1e911c8d62242deb1ceb63eb40ffad0ae8845cc9efe69e9f5a7d2cb9910306e16b529d8e16e235e8e54eb84859d4346bfbfbefd453f9a4c8f4cc5c6c80a616433dbbcbb512651578d1d2736f513afa0fc68b401b53086d4a32d2a73100b59f8c07c06f43d17d2021fdc15410e22b5911b3572d5f7996703e97d24699da3fe7714ce74a1daa802609cc631db787abb71504d8c016cb7f5973c0d5f91899bbb100b97d4063ca590d15f176612d2e8779f89132428c6a17ce0dcab8ca081b9d891d3d0cd0bc755a193c5d5180d28d917ea7c5121c702e7c66a58b5499ba4fae3336a2040c986afd2f44d92047b338db4b6b3b6c176d88c641a6d9b4d4749654d55785002b3201ba3eb86562adf07f94b3e39bb3304a2d022a872ae74cbf27f0194c5c73037bca2d3daf1150aee2f81991aecca23660de5072568652037ce13944ec9d75f7cf424607e36233008df0a9707913985b837c631288ac62c253c9cc1586706b9e8238bb0d3d14fcfad900dff65772b36ca252d9f81450ec29d6be025262bc1104a1643c099b3bae8914c8c78cf39d09907d725a52f3ef3a9981c2dec6cccb88017805cf2163e8909eb0822c34d2b42ed08af78dbae9484e7e4faaf2a40b0762f23b491a2ccbdb5cdb4df184b2b70cd39b0fd39b8a50e4cc527f4c6169e79e9c1cca54900a1624e198a0214d8013c017a2dad0aea1521269505213c1c873cb5531b6dcaf1c5430d741514e49e7f3c0f7bea8c9e3ecddacc99e2a8e729f8a0e9c87687f11158aaa9a7159ca567598add54fdb1a58eb08da87154c59bb9214e9d63fc280ce2fe1300b12d4b805d2d992a5e5f74b04e6b41ef9e4f364aaf3f90aad6435d7662d5639882f9edf5dc7ae1e5623fb1cfd9578fbe00cf82353ecf865d9ea24b5d5050e6f7609205b2ef209c57df854ab27f2dbf047e69666ecb731f0b11e540edc105301dd9b915fb4fb1d96f4f8b99b9c42f55f99cedb22638167927766642f0c1f6c4038d4ebc8dfacf6a3ea59532d6275fa5947cc80f44650719be2802f83f62b86776c7a8ac0b92305c69583eb7b1457e21760890e8b9f42f0043af46d07f82f8aab3168ea992bb165dc7396aef85646148b9e9fa88735bcc4f2f94d70fe02200480795aed487d24810b4875284d8e51e25493075e17b7f9f319da50e339a61412cee460382cef9feefa131bb3038360535c5593039fe5fa3795bdff94b1d41e0538536a9e6de8e4a9228d65bdc5cf6868680f452599112cbb3750f9f167ed33017d61dc6b6b374d87384d3a81e74289bd5253ebd20edd58d54bd3711fed8b2273d5c39ab91cfa21b2d3a901891eff40eefd70b8d0d55c1c33a9bbbf2e0dfa2430c736a18addf449dbaa6ed37f04b5a921f945bca6bda7cc75fe47f4c8395918236dbd810406e684aec3eca46c8079dc76defdd90c746859df26c661e746260ec99f15b3bcef2d4eba263d6563f305d522b58f2a39d9f420625b2da43f7dab24c63ac0cd79078a56156ddb4a295057c02dfd02bb52511d08547ec1c0be7a7a1ffdeb550551cf0170e89d9ccf024e862eb9df3458bede7e0bc7060860bcefe43e526edc7ed295f331d5167705f7f32da9721abf972e7eb1235344776ac19bc23e6b916d3a5e54f6863dfe0f46b17800ca77c07f80f0fbe0b2a39fdd2e0107e53148182c577a60a52ce377947c1c44f9264db8fe29b5d9943ec70997fbd1759539f1c5c279f645b68a856d58571bd99d0589f444f239f194c9e73e1606f8affd027a78fec78b8ce11a3871e416307c4357e761b6836be85570d3f155e9d19db103d148cf9dd8b51faabd6157e5e80c9b78e19501489fb6fabc2c1b7de2d9f480006f0b5858eae39893f9ec8a36ed92f2d6e64a31a7c1b13dfa8540d3176e2d451b09237feca9752c8e14b48eee5dec0cc314a00cf41303c8af57c727140be157376f5182e5bd20ef43bfb73077f388b2152c79b40c7bd7360aa0da790677535a1e1ea76528a51b5ea8ceecf9babab979606945dc154ab3269d729996e6f7ed843e8207cd7893e5f8be32fecbcae63474a8f3d3e66f5ad3be91ebd42319d4d4e81377d3531f4bbb7279ba63403c9d827875d7c244a9e7a7c83818af42fee45603039becb40982e1ec43e71c919a409cebd605b865e99936dac09953b4be63ee592eb0f1bc6c8a0fb156bde6c4e05df97253dfa07ad950253f18e0bde6eb9baaad215c785a73750c6f30b36acff3e760abd513258e60d80770b4116cc7f925f34b286649676697b49fecdc8e99c6fe3311d34fcc8c4cc1f066ce680bbf9c9fc32722c858204e9f8201dab9bd6639830830e9a24830a2dfc02f767eea40019df8d41f2e0f63562cdbe55f71b136d52a61b271a24e5992a123f08babf356fd83468d20ecb634bb0ad02be4af5fa5163445cf5ae233804ea209f5c279c726db78f1c81974fb8cabc783e54ee537c9bc3c83370bba589e1389bb1e63ecf59250dcc2752fe0e1081cffb2e7f4c62d44e54a46480a809d383e81106a1b06165f419a8f3502cc7fef7c9067599af2f049fac6ee80b15122555362f7419ab7f3379cf9f27503c503eacc8e94bde23efcd0257fca4da1ac39ad5f580174c42860c91be20a8b1b95c2ccd2a51466da013a02d728d54c168eb50c064b30da49f272f08ca19099058805f91afce70776194f24a151fe36c2619df9fab6760554cbb58781514f131f1ec127a06d98e5ce4ba82fcf1165937ed258ddc9ace565827b6b8cc009b87b083119fc093a106d5f5c679e7a145b619e34f69ac0531a9d7e17ece8e335b66f14fa874dafa045603e127954d89dfcc0994581a48f54fec32d4228831dabe01d0d9f887f4604e975326e8cda35e2151a452be21a4f7117740e70bfb98cbbdaba32795fae8150ab9be24746faf5c8a9ab253cf34f2807e30a238a3ce2aa5de2691371c49b1475e62444947f632da3da60786d0f1f52a8ddb0f69bb293540830f10cf70b3d84609d16fb1c6285a4ca9ab615ea8b0aa6274317dc9c06fba50e001d00fb9db760fe6e4e751a720bb33cfa914fd5ccd5a5e5ee325805cabfbdbfdbe82a45aa53570a50fc22573e6bbf7fb641f16d01f44b9176f965b1ae610b0bf2a73fa1125b14bded8008d3d1617951e19f225d0698241746b651e003fafa16764506610fd92caf131e8c278fece483410fc3e2c6f2cc76d4a9b66028ff3aa83d4a074cce66ef035e8f2186d2ff9ed2615b0c451c8564b812f225feecf9cbbb2de6238dc4c8770a0e17feb7cb02217da98318414257c4dbf3022d8f1e5ad79fea78168c8f1771affdf4597994697e6cece2e6bfc7219d3018e3ac49549e37b8a57e0e69ef51c8944a3ed215f36c15a2883aceab247dac03ef5a82f235fea559e6b42cccd5eafc30066a3a3173bcf2f7ad34004071bd080e69c7ad3f514c62c928e63457afd2973142069ea68111c6820af10202db0396474cb2a78e1a7121ec04900d9f4ebbadf3d306273afaeaaaaf0d882dbd511146f009b748c2e093f02baac204a3b4ebd4bee5aedc3935775b9d01cab2723ce0c06ccfd5e2a8a2c8fc467c9a06ff3964e96e104890097d00a99811114179536be5457dc37864f4b5f848d27d28a6143b90bc2ae09b218e867fbd6791404ccb662fb779119b8cd2472d1f9e360ccc37f39f2019c79f365c813fd80faf189985f1704016f096acfc6bc0b674fb117ba7eab0f4138791416638ba365c546180b8d5662bfe157f3f63430198548216d7cec0ec8724ebde55883b2c384cbb67b2d7179362f9114dbbe561c8acb3d40ccde56ea66cd7c832b299a96f3a0e0aebb57e9246068d5fbdb126e6a149f7ef2214c35f30409f1b44de792cd741df0cf48f273f6dcafd69547fde219908a75b3b594f45a382ffda619f7e1378df37a8b2a25aad273329002ef931a95a0a7b670dba6dcfc08119783f60b84aba6ba878de6158e689ab051e5ed1743f6fe28a3c061198e7a49d08a68271205e4151c49264929d9ba38dcb2559f45658ce96b2c232cdf40e63bd8828794ef664543bc2f700a65d7c86f218a9b76ad0391906f4480f5563b434403e35eca1079d8c1f906a271ffa21d669a27883108ee78a4fceaa056c0bd5aa4496ec5f37b2dab8b19abc88c61ec5891759c6fb2263f534df3d7116d6874f42d8bc3a1ff9383a68ef3955295b5478c28308c79ab25ae9ca31544427a2cde901ea588ba872f37cedac395f6661ec659f1bcde925f6a82502b32fbb07d4356efda64e82c35356f9abaf5d3f0abbcbf0b0fcc2191501aeb7b59b21e00858b19492aaab25c62afc3b0cecd3d7746eb6cb1edb0cdc569602791a17911802c9f5ccca92717ac661cfd4d4dd8bcdec75492a64bdd2150c2235e7d87759e137b213cb3ab4e275a99e4ac77fda073e2870b6486ba384c44b4f59b382847a5d0a4f87198a996e639f51246014a0d9751db9f85bcbea056a7609332bb1e7ffee3baf262a346e45697d9c97c5ef099e109251368b5a807e6b69c1247e8430d2ac2261aab0ef2a0f695c22086b86fee0adb6bdc8a14af3d02ea0effac0f6f55e8203503b48deb8c8673b92c499284b935abd06352b391c253e35870f024bcbec4332f578a74d4ab0be09e73e3cbf5e1ed7e53eceeeff4ec26941dec578ce3a33f701bb540da65f810e7f4df368804cfcb6078c99d45e4f15ee1d1ad6831c3e6e01102e6ebeed1f86940de0759b256594c9f91041716bd57ea464e77cca292090f612bd7daf20e9b534bacf13ca7d940c90fa9c18b188fbcc17e282edb1156cf5c1351a9f118dcbc5cc720c5c6dad1ccfd04f1beab7817561e86442665b841c97150d10395fd842b54d025a221d81f05c820474e492341a0c6dff31f4a38ee089082f7bfb17b9d8c8355dc76bcefcf0c7692ece39649e85ddf7e395f1baf893eb960d8e1374e84a1d32fc1924ec5808c1255b34946db13ada6163b368754820d519197aceb746d33f556f9932aa775b5547d4b42ab6433e4adfea54bbd7d173e622229660e74ec486937fba081cbb26de3ce7f6f76e070cf54315f18b03675cee1c06fc765f145b7fe4fd12f897c83e21c299fb9614533e163564b9d3090cb00f253029a3a4042e2047cead0dcd42969685de183ded532773056cebbe0242e9bdbf079eb9c8b0a64df4833ad35fc40a317e99070683255e7087a0896b20e0b483410f9e4913bf36cd028555302162a6c6152803b31b8dede9717b80947efaa233f6324941e0714473c92da512fbec873e4b745505a5e691e2f1b6dc2e98d1cacf4c1a42dff6e360909bb82027b6ad070f34ea2d1bea39653da363b2dd14633f5d0f11cc1617ab8239e9832b162b2bc18d8703a39a21ac2ce9b1f23395225f6b34671d5e7679459e7f86391c80e2e3c350220f3f3cb40e575fd8afae3bbe1104246b092e405bb740e213734a5a171aeb6d82b185973a797cf3f17d77cee462e4f3032d053044aa6d8060928f6227bee4a2ad6f7cc6bf49df364cc75fdb9c9aefda07130967032ecb5a29b38bafd4e6755e2427585746460d696c9481db581ccd583311b68da1e80fc45b330e7fc6744105cf7f329effa8d05e5f04f891e6a45c0f620a1c516f22c796523a325d03aa141674b2d257074a20a7b14308310c73ccefa815f73715282cb467a763532504523a1b1fdcf2ed3af8381fa967e02294195a9d0eb43a1f5413be08d6e9ac6e95ebddb34f6962bb64dbde6e94bf734cca4cd1d70feb5b3525d1a4f8551facc79b5f00732cb252e9df686627a56b80b13fd033cf279cfc12ae321a0fa58da9df8da8e6f9f64214e40c22334f13bf1f6da122b4673deedbff3f98958b53af0f4b40158d79e63778123cc6dfd55f43f4bce42f318b0ac418dac56dd9436e78bb527c37dfc28180fed5c439f952931b29e271d83b633effe9809a6399282048357028ab1b540cc0510ee6b19a63643714857fe51c2b1b2963b7964cb602861e81eb52348453e9bc497c447e8a8eb73c79f3997ba17f35f32121ac7b0172845bd8caed56a79285e97d17aa467312c4d10b8bce1d18e416c383b128ded04fd1724a29cd8fe9377ead625ae91efff1a562e03d382e4b4621b28f717ac6fa928dac4a086aea4e122d59f28c961ace3dea0bfc79eb62a5702870bb86a8d82e6284b39f61d2c39b7d99eb65f319cce48af91a9028a48cae8c3c08134f7285c9e7161a570947fab3497f00476f9ede57415cf5889ec18501783af4c371a24560a3046a2683741e851ec1c34fe45c777ed5cb03dfb8ae6648a1224bfbc723f1a69a9edc5ef37147baa1a84b199be1dd645dcc0fba7ca9e8365309f3669b6d1d2e8a47e21d34d1405e6530e0d200dd9997ad72de1e70e660dcf53a6bc4bccd999214ef9206af79b44915e9956f8a019919290066728eb9ae5ccf073eefa4b9f771f584c03648cccfbc1823d118326d7488e2fdb2319df94a593ab0bb34c9970d038dddf2c174631f7b73eba3e6fdae9edee2ead25e57f4c498c32a567c546f089930cabc63db6421a25915714aeef8d9ccd320237cb0e4d302fe1c964c4aaa604714105a1228fe5ad6ca7f42fb2e07c7d6b0bae5f3b320f59e9821d0f66b702e0bef73c4f3d891454e90599f033a96da7df2faf22455f49e28b10ca126096573ceb1d4154791bd607ab67ddc372cdc3da2957e67ce2c599d50b90710895a934fe744c3cb75b1836eed5ac9a549c28930a6388a7c993c7d5a5aa302ee7bf08d177548ecd98c65152d6197286f52b57a3f918218fda1241e28c86201d6e3b6ca12d8e6756223bf9b19387c321db1a0ea2fdcb7a7705f7e8c81a998368a1cdb7788be5629a43704d8e91662b3e1a5ab205f85a27a139a5dd5e40cab92e6dcadb5be50ca3343905fd10ba97df8aa658634c914db6389809d9b18f59fbe371733e5ae1fb35f0f6230a2394119aca72cb11db8a0d0c82a0313562b97528fb50b99f21e3c4097366b763b0325a2f8875b32cd4beadb07925be74aa54aa89f9b52eb1394e1863899f04d7fb451fdb81fc4360a3320dc2a24b3b2c0fd463d9906b0797c3215595d59e5350da3a8cd519d51e76904a80d73a163b384fa68002516c7d7efb1f14aee9258b3aab9c5033b8d929430ef742cc88665799fb1207f2c8d333db1ac85d4c15235103d28b3769df98a763426546b21a8eb0f67872edc8c9d448b8c70d6f7af172d13c3aac5d4ae5bfc8ca9c891e501f2c473eac63cdc16a96b0f74cffb89211a411b0e6b4a0d794b5be83a7cdde651573a142789aaa6aaf76c7f6ba4851d1eedce7feb5f7a2c1179e351a6d97620395b96850238967e8264f581ba4ad4dc85933c874e30fa3adf74901f6ece0504879356a835eb019e12e5761f5555f63c91142c59cb32515de844c0284a31d5e148b694c53e3c69378a1c2880e893fce50f5ebb5b46b7ddc8753e7104f5effea9b0c36e3720469c3f20b8d97cd39c06cecf7881d20032be0f23ed939613cb0dc5ac81ece654aaf5ec36ba427cda4a0031328afc840ffda24b1829153682cbee0da142cfac74394c073def27b4b38f5cdc1c7b699d281d1fd41ac559410cba3330d16c74c8d035ef0210c8dd151a3850db594502d1d50c2959301c384da313611e361e71e937a5d1799d1a45398ce25b1111c86177152676d64393e6ed1f11821c1fb5dca4cddce3a3b1e28975d80dca762c79210222f6771d20ac64da695035d00dae321be393b17008e5f0037f4c1733e4a9f17ce275a85fb44ba59edf9e20403843b11863e4db333233314661bfaf853d6269b187bbb6c0eb0f510d4912645056813ad34cf3bfe5277c589a0314bae0aa802cff46b510c6c76938cb84e921f7b4cf4200da1a82942a807a2075c0f7dfebf768b54b2e308dc49488c4080d6c71c0bf8d773d5de3cd112c588a8ffe11d7a17534a6c7fef432c380ccf252a10d8cd1fa13a5cea6e546349923de83cceee44f2981984fef7144be4e72ea0c149458a7aa6648c9f658622c00be9d0074d3b0d498e475c8e4bfdc9ed4ce81d3aba532aabf7e18d5097ce37505c2dfe9df59a6bb30fe45d62c8a1f2b065ca8bf74f81bc3da5ea3bc5fe855ed0f0104574554480151238458b0d0dd6d493ec964a7462117237ea214ab8bb54b5a7d9e005f5606865f5c7c04adb7149725e02ae803000000000000c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945862d09879b6ff8bdded4f70af68cd3e81dc71a4c671032da6cd9224a5c6c1a660aa1393872b9170453d05c1f40ee3bcb8f727b3e196cbb9c72e7f12ea97080f67e003c99764d0dda139b3165da5dc4bf9700c6a563fcd0543f549e7b19d4cc4caf777c3aac4386f3bb692fd45d7197df5894f1c9545709c9c2255a3b6ed950385ba5a7c9c5fe91bfc671695898f78518380e34231b3e36a49b641cb3e940beec0062", + "040000007d24b5bfe1999a3b21189a3c4d4867784bc2105a0196aba2ba6fd1c9a63e22e1be3fd8ef559f3e7d94c5da9f3ffdb276804f413014d8bf07fe14907d6a37659320e538c79c0033eb2537c88a69d77f048cf4cc4fadd09c9bbb91b4d965ac8f2e0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000002000000000000000000000000000006000080f8694a1277777777000000001c1d1c000000000002ef753da29c8538cbe9669c722c10bec5663e07d101f0a6c3f1f86440a7b00dbe374e5118632c4075f9e84b6c62791de12f1ec0e70e7d415d61c6639d786b1a0c0289051e9e5ef26a5dcbceee48051ae1ee91d70e02022fcf954f3d1190186523ec4cb0ad65db85d28e247bc1daf3fa5b111983e5d328166df852374f3efa9430f7e7d5ef94c51c82437ac68d11f78c190ff7314fdfe4fe007c0be3aeae7bc1094c0be2db5c7d2b24faddb22ac70bfa8499783f312f0bec068f8c09483f7b7edb6e63753d60feb460e2ea1f683740eded3d994f602670d174d38dd95b2a151d0b1d5f2592bd522084eba11fe9f8fb1eac057b84bde9119816ff74790db723529e8713c8daf25996fad08f2a78ceff248ccc91a83402b94311946343866a6dace2226d246cb8226f2bf7555640d4891457a7f6bb6c85962a5e482ec760b6d6483a15f6b44108c2096492765fea12c37da638a7add8d0b74b1bbeb5784c3712349881b78d229a682f024cb21c0c3961704a71ebd54be06a17f44b1fb1926844f14c3a9eceb626fcacc77ddb138846bb40f28daaf7e431d5d09d6f2be928bd09b03f6ee2302cf572c781cda2167d7d8e9b1f4667c8b3f7621c0cf85aeb45462eebe743a33bebb34a9d118cb2d4a69d2038d591e3266e77e122f9fb889ab83325e5d2ab3bea0e85e10cfdd1508d3233ede0b9de84634972e6d3cbcf9325407c43fba5c9dd30a70aece3ac6ac3d5598fd2dd29907584b85398cf21879b4e9ca3c2066e65fad046e788e56fd4a9098b5a4b0fbbe12c0f7c0b5caffbbfa69e4289c9cca89ffb3158dabeb2952a6af2bac251010a3644c01918e0198b835da28e26f694ca21d897785240d0477cadd8bd03bad34639189525c02fea6172168722cf2ae9a6b51412b4f9b24495b9b2852cf045c1acc6d97dd0d6746dd116cf8bbce3258c862e1fb18a4e91d9118c5741a38d6a7aed613910b11cb881cb6d1437669ad853512778ced215ff5b460a47cbfd30e86f9eec227fc123262d73f45d71e66f17492af0457191e797ac9fe6149f4b3cd631dce8f9844bf16588f55003371165f0e48562a11799c33c5b4e4dd390b3943fddf0162c033f0751530acaf5ac2530f320c157c498452ac5012adbde2cc19339fe82e1ee6245dcea9f587a40f3b78600de1209ef9eb6a903d267a95742c856aab1829fc8974731e49b6e8f674eefa81b23026d0bcb1d770c31a60232798a8828fecba930b51b80ae6b98645be3c5b80b195828dfab3bf8763ae660dbe4f02ed5b52abb301b18f3ebf8f1f81b8feeeed620809673472aedf9d70ac86268b7a162d0f46c0ff6bf52bf5dd289a9f34c19632198cf15730427971369cebadb6e943a6d8dfa84f83f2f6451e9d155449f6ff1b41f538eb760edccc3697ef679a586c8295afff2cd8de2ddcaabecdd1c0b41e8db2790ca35e263372e2aadc2b579fcd47d74bcfa188dabae48a78eb8e32e403a3f4bbf86b8535c568a332e0b64de3b3ba0e75a2ce01deefb1b1faa6fc59cf602d1359180616258847d458d03990f158398018e63abf87086caacdeeabf6daf6965d184bf8dac33b1c5af2223168e023a2f5021874300012761f400e35e341e3b54683442a1bbf7907060b54181d27021ea69caefe8326414462f03c44eacac9f26c8a37a8eae78c76dbe19d33f6b198e8a2f4d77a2d50bdc9785518a1e210fea6451bc05e85bd106737ad37e9c96105db1b9bb09bd7cecc45960de0bd6d803913fa43935a8c17de7bf573089ec323b1aba8f6eaf0603b91e53c540305cefe8361dfe47b787257add20569bcb7aad355d93dfe9d28443da5662fd1030a8e251fef553877edd1e1559bba63ebcec258035548d037eb34276f4b256b22631489e8f7201c86537a53502b6f9b4ae7c2a7272459a4df0d203b7399ca1bae6b5260566332b955e342132535e527fa207f8ec9b0bcf9442b7794160497121720d2fd698e3eee28fa34de2321afe580958dd133b1dd2b36afa84dbd004c4a571afa48466d3b7915c84753186b5a3e7b724a8fb8e411f8732b963fe81bbaa48b247330eec8a0897ebd64a25032e8aa4c987ff8153bb447308bb3cf5ab699504746794711928457df6e10d689d81cd6a846123375f5c46ed603f14b0ac6c9729075873179c3bae9740c273d0ec9e1ce060285211c4e60fbd2801cae6c7337570601712fb81abfc25d9a43464541e13bc42b02f01f8ec78a7e5dd3e84fa9576891397106427a6ef262e11f24a55af39caf98130c69bb042475834753518d2f67f66c04d81c574eaf7d8b83bb029f037c4999159186e170752880638619096dd852f29994be72f3a6922a97610fa11085d4288214fe131d2243929d40dd5915a6789c77a499f43489ec2a0b7ad37e7b5070000000000000000dcdeed4e7121d043c65c8049da787baf0bb29c59b75e9608dc59b97fb001c92ffde01cdc9b9d97951e4247bb513ff71eff5413fda3522232fb7d7bc48429bf301c3bbf60c1e5346e6b2412ec70d7ec4091384f5a9cd1feddbf9b02fa15e591c1f86bb9ee9b65bccc11ed903646e771b8d252e63306498d3b325c7cf46dd9e4f8e1e385bd5631b11f427848e7fa3bb78f8f97d090ff15457ddb0030fa9a8332dd2ed68ec267909771b6ee3edd3370ba34516a4a7171680d2d912e2fa4c966942b231609e3a4f5860f35991d117445464ebf6049e31d0b0eacd23a11122c2cce82c6f72a160e131c588770bc6df3888503df8add4f1285f1417543f380479052a2bf8597f56b0d5587578c3b896ed7bf0e057b9a39ca8ee3b1abc2bb967bf5fd7064150871024113211114f203ce5f150e30ff55747a6ecd17a342b77fc7c41ba70e1a216112048b26bea002606abde584d49e7cd633b7a5391290e7808978100e2d5f955cda22772bf642aa0e3b4e8f30edc8c9e6dc1d4952160377205a83730dc58516ad5d5f1b121f397aa2d43f47ff7a09b602b9c61958a3317d2316b9c8db14e40a53e88f1744655a81b850ed7c9388c5388da56e36ed67ec15e15b52cac4bf47a088df916d2c70c9bb348640cb429cbed26810d8fe2218424a6c63f1dfb5bfd3277bc64dd12ae6c088d7f55c4804f6c8bcfd6332bf4d6edbce09574a9c64d3fdb1e41c4d17a403646efc749f7ca43eaf94b014dd269c833ac3e19bc7442ab86b815a9eaa9efa44d01e69c77f73f600c5a911f6e50b5713d079c855ddcc2ba6462077f5d170cda9bf0eb8e477095aad7cd5c081864b328a9cefe21b44b53ae46d38a66f6aeded011536310c3bc0dcf64d2dd0c9015c6c2f83d36d146f9bc9f5a627dca73c5e092953815715ce9ad107d5450b84d449e0e93bf16a4e03d8b15d8b938216cd6c0bc08ccbba0658391f8d8cccfcecf77a85778b9904105bce80cd8c15e38114a80fb6e6870fbc92af588a905da1de9cd58d7c288e7cf406ef916c27b1b4b61fac457fa6390d7a7b6c14256c7a87fd510806be27244e778173f993bf86ff5cbe48b85178c8ba1d529a974a00995ccaf42b64d4e714fb5df79980d79492002f7e220dceb7a14769cff9c1dba91247cb300eb8bfcfc3a85e360266fc4b9f328ba12a6098aeebc67e4fc9aae6762defa078251a0d9653cdbec24fbe31ffa3ef322e6ba7c7114d0f642b72c7ea2688505047248fb18b8321959dec8693a1ab349c16770aaf10889e46d8d8f508f3233a69c9a820b88fce5d5ed044b9cd7420f456459d3ae87a23cc72d3d9c770f94c82224d95426e10107ceb351676c1dea9f252470ec81a9825bf0c2b4a3342ffd702cdb306a351ef3bdb56539da5022b878e08549a6ec8d8773b44c19281da0e307614f72a30e46b73f8db627c4ae9f530c0ea6ea523a6b857f96acdf37b42808ffd31fccef667f92d7ae7ee853233308d0e6a61fb0f78f1d0ee35278788dc3f7585fff3688ce16d40da875b756b2cf4aa33875e01404fe7c74614f184a5eb458acd986abc580f0cf2517110b9f1239615194055de68c7925573faef91ec11706d27b7b672b42b323c32b25a796e795baa58a7dcf5e19a46f21b27bb14e2db080ea704f7a1d15c2ff114964a65bb7429a216ff96939999a743316b073d63cf87ec39d924f6e7658f325dd6a77c9921b2b21f49a22b1d96155d1dc9a206a9d521a5b3372c397556febe9495bbad48c1d9a50f0578bf5e0fdaf8d0276c1fbcd0eda0a5b72ced1fcddd7f6dc0df854aae139d42527db885aaed6998cfe1daef4865a39fccbf57673eae767a975e43f1b198185b1e37a7d1afe476cc35602f148cfee549147584f19255d6cb3e31def73cef31e3adff8184109cffcb6aba6e268367a2f1d803604aefe48404ec5b431c13dbb14374dc9e118736b43f342a3c93f57c707f58dab5f2359f88b48eb85c37d052105bdabb93a8e1f2866330f5548252ffbfd62b448fdeb777168701bdc6136a22bcc048e3679f6098c00ca7151267a4bb1c6561685f5f6fba0d1976a6b7999257a1e4d5155020b124f65e43dc06da593c7fdd96c6fd84afe493d2ade3624fd7672fc0fa7c77d97bea5be3c865655cc77440c7d28ea2cff6eb9bcf85780f2ff0e4215c8c18f63012aa4067fc1524e81c1b9d2e08975b0305c2a1add51a9471c9181835d923cf51b854cc659616fc1932e4997b2b3b737e661945abeb0d9b1fe3c113c2b2a8b371d8630927bcc23c21faff67fc6680ea0b3468b8a0279e3e160629bfccc7f1aac37b5aba4e275cb9cb8ada5c99361c70125a45c0536a9467343dbf1a22610ee2da7ab15fb8d3c5680cc447458f81523ee75668a3f75302693169b7a20349c35b77ef8e99cd3c8b852e4d1871972415de7b9bc9859697d7eab02e559f03cd57fae9e5d3d692e617a2cfbdc34eee3c9db4efdad6f1fb19a7c4907db5173f80ec204fe16919bcca832722c58273f8fb67f69e5d8b24c285aa1a74581f0f9d1fc11b42f578a1eafe7a7dc2c6f11065697d3207585344122314bcd914733132cd0bf5a661eb329dae384c0a85f559932a49d31facb17189716a38b20e3f0c0f30ab4686e79cfe9ad03c00fb0d726991869b6c89ea25da9450c3d6cc5bba1bb17c7a3c38962361890e3f7e24ce94253f63e12dcff3e2c3d045ad05f45ad9349575c7ccd0cd82fdf1e083c56dfed867382a4cf758decef9c05bea3138ca4507b7f638edbfe8f1512911ec00d4379fa996b4d64060078b95064cc81e92aff21e4b30d0b848a8d8d5ceab8f665e686881a79bb390d75f94c593be007bcd38d10de1e750df1a9256375c15e2bed4da66082248abb6d6660ec9ef6351125c245527c3b13e22d77ab516f2457d890f9dd5a6c8d0a21a4d626a5fcfc4bc3a427b5d3581830e070fc6b4c0ac8038bfa1aa52b12b0329410b6b8d0d78407817ec0cd708eaa5215921b14e113e8ceee38318fe47f3cf5a58c1ab86a6eb7734170e55b5002ab3a48cefe62fc6c897aeae4ef82eee968be5b59bf329cca3d03ad5dd38dc287eeda31de96cfb4ee94eca046b1d9e83632f1ce043b7c65782940b60bc0f9f35cde82d5623c83c6d3540139ba820af7bdada01c22a2531b1e3171e6befc5b8289868ccceedb49fe28a32bee69055d5e167eeaeb320832e0da67d6f536b7ea5226e86420f72ee68978a460d1a5f5d0f22e7b3fb59f68489f757581bb4fa107c14829bf5b93ee95f76a84c2f08514f73aa5c062585b57b02de19dd4039afc4480d8666cef6de93ea111a934295350433ecb4d7cd9957a0cc739439bd5308449d3ab744b76f429b3997611e9edfcc49f021f65645ac5524ddbc8fe9f49d8820633ea37d9e9dd5bfef0912fdc1ba80500df637ca3701122f543e99df4f528519c6233fe9cc94e5d2591124212b6a7711cb083018647b0e7200811aa58b82b5fbb10d347fb64ddf7ecc1e526d69bf7d0bf9ac4287ac42db1e4e1d9037ed3d9624cd19c590c460c87c71e7c5055cf0b78318761a5e5b8ea36978ac18275470e04d8e3da440cc7fda0b2fb7857bc2a0bda4843a60d21c3bfaaf7e32f16de155a161e01392be4ef0ab5df2bf0b18a0aaddcc364acf987c625c20fcb90b22e3a0bd6fdd161780a58517012cbfd7086a042f1e13b3f337ed2dfb4f66635d188287bfdadc3bab7a139c3ed8d784c2773836618e440f2f5ecabb712c9116a0d8536419ce663402b427556e899d12be13a588c66565c60fa3ee42f5b21cd3a8febc2b906eb91a778baf31aceeb53acb3556007cd7752fcda896c3a4a41cee337e5e63a5bd7d3d9be234295ccc93a1cd3b4c171f3a7210306901bcaabea6776909baa057ec840813de6ca414318b10d18787403f9ae1a57d671cecb824163683d2e8f3d40cd916a9e6d63aaf5f69dac13bf6cbcf9562a915febaf7d95e8fdc956018e42276703719e4f0d7c698051290d59531e034f884fe7794175006fa69b6b09897979881187a31d33c3728eb87e0562213ae81f502108314c35d590b02b4484caf58925d3f9620e89d5e4272be9fc2bcd587d337de2b815b64ebb3dc542dda0e64ff6d6037fff10941f565cb6814ac3058945d4fdd79c3f97819906551441b1914a4b6c4346a34d7d05315eeffa813cf95b83767317386bc21f1456ccf52cc983777764c02dd9c5ebf3940c19c8d4cd2c1e6366935211884e8aee011aac2fddcb0646cfb290d3f7ac0ea8fd1ec20b57f67a28a470673c4c202eb57409ca729c4ffadcb1828daed09ec1223d758548e477e7e06f8d9015df9a40b964438b2c59261a8527d0755b468601d381e60826627dad42f680f33a83027246eaa154ae2cf04ce7cfd0eae34735da1ecd1b408f4d41a9278115695b16a248cb697366105585a863b4629f6a6899d77dca911091f73e33a812f5baa98b3460edecd6cf2bda734810a7412943426e8d8e00e24afacc681379b92978ec8e049f34b22de5488e9ab25a7bd135ddcb766dcc95ee688268ef957b83130c6869bcf0bf43d606209c5071b00e32a20cd6da4bd4cc5492f435a62561348e3769093639c533570f22b9ecda5aa7c2773753211c68672101694fa491eaec2005a9cc439f773801afe423675efc54e302fdb5e09b895316e7ac8898343bcdd91ad238211e3318ddfe0d86c5ae1c6d83d791c52d9b35496b8ed9978a1c7b5dd00bc6c9697f39247238c2042258025121816660ef0c53a49995cd9b45ba1712d45695472b69d6757e56c572c0f290ad6225d35ca5e5f564ad2c3ac7fb0aa41ac346ec3036adaab5000b9c58d8861aed031b0e627a1e665c36dfceebc558f59df5b6235ee823de9d185d171a9237a20811d9b5e4efe508fb9907d25b6849dedff9e8d71fd0b2cff2f8ea8cc1a7e98b204295f267dae98a6476d99f9eb73499fc918e2db191b9decac79eef1b046e9958c32ff1c8bca28c125b2b2340f980219d5cc979eeabf2b2dadec09e43ea4bb67b136dd30cfcda9dbb611d899e5c3656d46bca5b43affc771c9eb1697b10936d6922c17baf10888d8fc10b4a891d4bfe5ead9136c4f79215c61d4796897fb39834f0440db29202211d82d2b16e69d9398fe33e22959a4310d274c67a4dc9ae6acf72abd13a1afb5fc319c3d5ae89933158c91ffc851e5e5fc854b102a047a0d30211afda1cb548d279fc894f1002c3721e3229519b560f0a71bb648149bc763b3401b9ad57704139a85d936bd0879a820f90be6ea7d78b6fe1679d336dcc2f776a3373e473ab5ee54f5e0a8df6114fd0e2d88ed6e7035d232eae1e4d785b417a43e06bdf7bfc3509bb4ad808d39ca785673436a1009dcce6cd055f10439de64652c31dcac2b65ec47264fec73581f8598f8c318bc0f8d0eb929e7c4d6e5f012238e01e19b1fd6b54feb463912e6557b65741ff8919434e44e04e41a5caadb74f3cc0254541c06faa480499326b7146499b55a2fced4dd416d5a31779c8de5dea938385217832cbc605788ff4fa96e24fdc3875b52769db18abdc76a687974925a52081043864ee8e39574d7f27fac30650eabb1fe70d5d7bab946b234d1b8ee449f08654ac868a22839924b9e7b94175e60c5b575263089b525f40d6f76570d2740095a43696a90f486332f45f4f6ee2d1d55d4b3f2311637a9e73f921a56ea0529104573b25b2c48307adcbe3b2232cc04933dae07c34c491099c57dd7e4b393fe34db10623bb35b74ce92f8b1892d24b9fd88eb7cfc3d1791b0bc3bddebcf42592093e6ffde9f40766ad3c21a67caed25b8b250946ec46773565fdcc6305803362274e612308b8b767423afffdb27239f3b9bcb8e70bf0ee68cc8a1af4e59f6972d7c90b182d862066d1b83ec044b259b398840cc736ece77dac61d07e4b338083a97146137dce132a2a8a0255d1c5aea80b5e0095b6181dbdf1fa23317c74c0e25cb86b08c4136065729777527f49f407256d36049e4c236201174b312e80090376a2113d62058b659f63de5b8695e52fd178c573ae0e14f205cb2fd929c9f09079930738deea7a2090288911af17e157d6c9ea4bc04f6264c81e4f3b5b087fd17a7c0b7eb631c1d1476ddce8be398fb7f576f3f01f98b823b7e8eca7cb3831c0ed3c036219c94ecf5a0c2d112f788d73a432394247fc0244de10e28d4577ecc084c521f0007f3a6215a549abb3091e59c6d6cd674c8e5775acd276c980033df3c2143be0589f65da81bfab1dff81e6783f814980bed3cf47e51dda6424ff43c2a82e966c7ec5b197a73cc580919db591cc522f87a561ca46753679b8d26110d1667bbcc24706633f219617f620958cfc35c1d70e034c0555bf76d9d854f8e5a0a973b88cd6096e5f3d2a72f3196f4bd42b32d6849fd37d10df37225b0cfe05c1005ff528c59352ad6e319f77da2ddf1c94b8b7e7c7a25c7cd15121540f31ec51725e71924c3616257756be8d404b53cb3091c6c3a11940c44cc8808426305550f35f9a4c5322222e661561bdecd8ace024f4c2fffeb3bc1bfa7f69454f6699d36dc42f35d78130f04b39ef392c5969a4d8de6d5271ee7a32af3f311386857fc0c21d053bae00a066ada63a28fd84b0fae439f1060a7b633ea07813863162195125e00d9c2aa7f25c11c981794cc97718f22e3cdbd21701d6f6f5fc25885be6330ac8b8266bd64a227535648a926a002345e224cb6bb4ec6767c1f1511c2c1753def927f97f9fd620c27eae292cca484472b6fe5d68aa58d3fbc772153043073308ec7c0a37c5355c0bdd43179025aa0e8d492353849fd7accf1a0acb7507f11281ab671d69ceaabbf539eae572f0015426f5e9a57e8c4d4d92216a93027572c11172cfb505e590e4d5899aa663a5ea32d5cc163ebef26c92908e15fe3c0705d06e32504c7901bebbbe7de2bb3f5ec28dd50299d941b24242ea0e151d747e129357f4fd6c98876dd0779fe40a7cd386f198150b43d5fced11d2906915937905f104a9ab5f0d05ddf227110e72a6c80a7878e559b5d8b1fd632e851633256254a22608358228feba5055a91dcfa6f702d55b8a463f0e0dd4af11872694e1b38ce25e8f8b4ec993d38223eba5dbc585fdd5ba53b179c20a278181fe3a0d13a7feb333941b59748b2b06b2c51d6c52d0a8bdcf833628cc30787d9d16c0991bb5a523a92da788563800133ac376a6feb09a8ce1de5c1ac1ce128272cdacb42b9592611e34bb0848a05f3c69e274b33481fd2b351ce7562413c2b2eee4cde66944b64103734d44e69b9187d0c98ee204f539c59b2374eef044e731b1bb3d06465f37d16634579e24f7ba512a29204e0e3fe7d89809914e41b7ad8d17e5ac11af5246b2192c833af76bad3906f95683240ea619360d9a0ad9e7e97777e2797180447e13067cdd4efb5ee7429fc5b97e80d3f9b8396b8d2df51ac47b434ee0109b0eaa22f854d4de4ada9dcc003a4a8e147ceed375d607922b59a50312813519571e2a526774b1241513f77d2b53d3d435f141c55eddad14021ccc542ac37aea8e24b9331fcceaa35dec147c114e181e9a6800f1748c3aa1b425d532da7ed19bf10ec5304900d6f685acba0fed0d7bde86d5d5dab0fe046efe66fe78b886d24c097fa252a7a9151e7ba2cf15798d1cdc07904c8f32c1853b8e79be4d344b6d8820005ff2e11ceaa7833e1de67fa3f64637bf20963bea0a981ee810562a0b8b2dd532e01140421a975d2e7f39c3988e99e5cc8116cd9462e2f405121dea5a03616d7fcad17ba0956b84671d94c524efaa13b6b0bcc15b98b6433619bbfc9736d5432fc5237b9a018b716c2e08e4eac57d2b7c33ffd813816a0b01f7d09a5afa082e1d10a327247e0f086f3360dd6b9b736903a518390b887a6dd2f5cfa65322e5fe6dd801ce6ff44388ecfcc02ab12c562f55484cbda45465049da5aba32131491f3bfd92a1f9e85fef13e622e06445252fe64b42680ba24d09d0cf28c9f517a24ac14322d57761c1d53491940ce65df7c1ce7b6f766409f66f6ab4a9b455df1de0316ea2281d48f8f2bfa74f001509e7d2222b7931453759b1cb0ef887335e62bf97aeb1fae49095be74c11f89ae74297e22a342f60ff851f43c1e695080527747f9326097ef0a6838a1f46daab1f109c4e921beb2ea1cb6a334dedc57e55e58469aea61a185933a8a4c5fcb5366487d36541c46f12d8b830ab05c415cdafeb875eb2031e154fdde2d07437c0297ba56e4416cab08544013b2728a42ac6daac513c436f3e07dc6aeee0957297b17c242e221c41187df1fe919602d84805486c0dfe8ba108bc4c5b95c300bf121307d465a3b69f99fece83b1ddba11e3a8ebde80cedaa52c7b5acc9d0417064415bfb6d8ff6ff46444a62619c9321171883977194fddaa0fb059c29139fea48955b1ceddae3ac8051923472d23f06773f49e6624a8f2ba23b36a6c574d85b40f701d705c983ad5bce01bb2d031617bf8b2769ffc90d2ef086be32b2e84cad752afdee010c8e26ee09ea95e963b57e93188d4af84a71a5224e383a0dde184ed343fc59f77620045b9d6cffdb1a89ef0d5cb7e853810f24523a211f2a2fc19a49729d02fbc51b9674783ed4c7c0ef070c6b47413681ee65934cbc65777f92d13f01879a5851ca57501b5cd016cce8e9902f4379997d5c75b3558161552ebe9eb325a3ee76fe87bfde3d2cb44fb9009bcf14ea07900a9e120367d6a0253fba1b57f388efab647bcbad82a4ef8b5a7158c3d0ddfd134e568c937375a9df0304080a5ae883ec3661b176c272c7dd87aa40f209c9fef9d07bd102818b55f3e7a8c0e06dad914acae44f9023a04395e12b1d41b7d425634c748713a709547376cff51e864654c3b24b19d294b99c5e61abbc2f270163995512a5d042d94e1df1b49bc9f2fc814d7409f97758487ea49b276ce60ba980b9e2df67e1a186a18ea60ac743f45714b80eeb90cc06d7158f6cf09c54a858fef698ffe7032c22de1618bfd90bbe8dd7db0aba29f53abf0aca67e1471bee1c871bf3595f423213645b9dd88a4153c7dee3845194b496abcc0104997fc89eebd4fc72c5ca73cb5789cbbec9cdd9cb0cf9117718041860fb2073fb3842c45cd1a8e44a295b3166e1ab0a5a18aaf22575454d4d3750aa838944d1f5caf671d9402cf331785d83c50c29b2e49d402ce4ba32516fe1b37c463359d7cb780d3561ac8c6ecf1626d33aa1b482f343086e740be27175fbe1cc6ff2f798b9cc96e2d88baa6d80b0e443374cdc7f11cda7def2a1875595f6980d0779641c9777632f7a5aebeb48f3e9d01c187695217de185ea6c99cd47b321c53c26a83cd2f749612ca143a2a3a594c2e80c1ec90d98564f2a69e579f9713c20af6a559f541514a7514b8fd88165be486e825c3de6899e97f9e39a1654e51ed9690cefd5e225602e68480e9f2346b3f8d61268dc5f6add54484b7f4bf8fe086110f74183a0bc2515056f9a0bad6f4dbbd848d80df7a24d5d92a6b6b2b16fabc0486028a13b67a2bbe17f9812ccf6692327e78a5dfeb56feb6dda38c9ff2360062cf7128f357ab4b395b26880fdf80dd889ab809da70b1f58f5c1005a3e054f9c40691c287163f445610bdf0f14e6cb73e0eac5ab2fa5a9db4a9774c135e92200c27a34aaa2f3b9e2d568d28ae69652f1a351636492a590f79df0d4f9d589ba0651aa572a6cf9070a873ce75a200506ca74339dafbf0da6add65d5b5594b5b49bb0b63b398b44ff5f996115ce0d1b6f220b7b7b20049f5fc9f26e4fd8b7668578c4dda8365a9e79db99378091b3572473747ca3b4104e7b7bb1bc22988df73cc1e6fdb242c78804b4334550788a3e6a50a17fd8a0985f2449eb8554bc28c989cc1d9755aac8b33482d2c70525e102b4518f7aed260cbc6d6e7317a22e92b776183ccd105ac9bfbed1bbf0da4be0c0203a390cb9b488ed0aaa098ba8d5ebb9659fbf19b8cbc1b4d78edae8f5f272d2bf0303fdedd0e3de90ec360fced0ebbc85d612a9c396ba66cde481b92efc7ac9a1381dea34d170791896ea030cfce7234a0a2d2301bc79043aa7dfed6f3ea7bbe28a344a274fd9b9670b70cd74379a6fa1849a26609f1ef892c0073b7db34f09b8631af1884552a234f7f37263e04c61418b602bddc8561c0e097c5767fdeddc5deabac6308e5ae1c41565baa4d0bb33718486f3c655245f26b26a12becdc95a31819afa5729cbf3127bca5596f9d409301a32e80a3b7ec270b9387e88e9e1422b9ac903aab06f29970b50673222a3460acc1ed2a6ed45d10d3b42887d803e880f39141ce63b8d3fcaf49d87a9ec7f9720808aeaf8eab0ab37ab690f97cbc125be08fd6cd41df957059878d19b106b39e06bf30cc9d3c85f25de650f4afd295dc11025f9a72a5e46422d88c01972e22bf024fe61e0dfb824df1bf44d1f77db0118127ae48e2a145d82bcb537cc4be81e7bbe0e1d3e19b56537e7bee8931d4fc38a03d1c387079b64590d1f775566cf0a16ca2bbad3409c29ca616d8f91040a3ef52bd0b7fb2dea0b65f0841a03fcf8d25a6d7a0904a74ca61835e3e0734e4addddd167cbe9d3ccc89a0965191fd70065b0fc48f450ebd036f9c15039393ebd191a982fff506847cb3de8eed4cb8074da6076302b1e7623cbf5bb1ac4d6af09fad853100eb1aeb302717031608283897f3edb7e5b7f5768a363eb2bfe951b6a9c470d9abfad6ebabd17dadc0ec021684726a3f7daceb4acfed42084e70c8e721034f481300", + "04000000821ccb50796e05b15fde182e6e3170ad072e8c43cd976e191b214cc0b1bd9957f972fed3d6ea50bc8dc07827d9314a989ff91fdf51efc2506c098a000b9675c3e2ce3df4527cec45858a7a5313b87d0ee29b8e001768bc64da9b0416a06ec0210a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000003000000000000000000000000000006000080f8694a1277777777000000001c1d1c0000000000025ffd47baa3f5a5b90eeff3e0779f2d3563860fd5b9d7666cc06abf31b105a8140643a0cc5b44e881a3eead60361c59cc283f1fad00138eb02268408b29029232df48832e00e32157fd299f16bfd4482cc933ab2ff4cb953b162c8998e03a4d05bb13c472eb737e2e3cff834999cb5438003c74df6993c0579033e56a1fade81706ac0a77b99cb933f66906bfd2a2402c8739f844ee72d34ba50a1e1e9486a73e4c7a063267570a483bac82673d954ab903345b291266f89526184c5633a54bfaebc05f6cea64c403025806e65d8e89cbb0ca967dbefb653063a35597715c488891d19d68a5b7f0b74ca44b7552aea2308e325c71f7199ed497deb6c755c6727993f4d218e3128bbef26bd03941a19b344e8e629d81f15559abb7f6881ef7c688146640b02a0e5a9a78e8c587006eccd05bb1d5ee2ab8d1c743391970a0cfe2da89d18fbb51bf3d6b9fb9aa1818619406b89b53200b86d8b3094e46a01a67d63ff2b113b266cd38203f05bd01cce4e4f39a0072baf5f582315a98575332523e967e353cc3ef8d1df1d26dd79e5375cf9bd93f804e4d709004967bc70b3ae79bd7a9cb67cd273bf3df4e1218ec3f67dd9254b589fc73d5ce565e106eb6c6621a5c2438fe784eb5d95efff8e3b008a63bb1c329c5bba077bc756f875acc5d0eb0d02d67f2aa04738c8c625b56c82cab932b05ae2e50092322887318df508180080e1c7b80cf66894cac8de85931e7fedef575e2f7146ecc4658ae936a722548c527593bfdc59acb58ab6c4f360bc0ef75e3bd171c1c730a51749bc95bc2ab4eb7cc3792e107c31239e3711f35b3094c207d73cb0ceea7643d175cf97ae6d8d221f48fd048236449a28b497b36ed3c817c161d4ea89b7bae5170dfc9c33b3b08f0a38e964eabde9f4020eac2a7b480b9dbc7111d67b45997fb94f4244cb8bfefd0d6326a9da5203ad489ebb4e66f382a5bf82e9011e8d3a44cd8b6eaa60662d20be380bb5f474e5f8d70585cef0c5e490254ae896caa9bdc42b85c4fc0cdaace29679ade3adb96628241c509aa1adf1bdd633850f4df4b24765fc4dda5feddcaa6de3a55d58978cd71c9fdc5bfc77b33506ff8b198dbb4ba4cf3d6d4da3db5b76cfdb26379050cec5d43ecc5edb79d046e56ce8582078f6dae1f9802665db37c5285ab13076b7910c0d230f090375c46e44b0f142d540e32b8020f271de3f8ffcd2a9c8cbc1a7f5db56852ec2e9078731d724824ef0db06e8eebd7f111b7326a751086cde390eb42268a8dd44b7b9b1362a594858308abe397b2abc43a57612f98d027afbe7a5d3035c418bc32f556c8564c0901f9aa322de146697139f8801fe1f4836a800dd0eb2033d3b1c79b4f1b630b85a57a009c887eb4faaa0ae71aa5a1b9ce1dedecd5a9aeee985941c39fd28e2412193dbcd3a941c7d20e6ae310ed6082184c17dd2fca5fb27a1985843a6d92bfbea1c0ca8f7aa583e0336cb786cf38b893deef8f5d9a7ad8b096013090ce9224270c5ca0ed72961b44a2749eb99c23089258895392fc65c6181e59bdf0284a08b6bbcac67a394d3b73185f1c454ac279da8c360bd816131add0e86431a2f4bd018bf1e558bb79761851f9b6b1c198ece4e6ea28d4650ca1f5fbf1401306709d11c65829df6ff7b6a4b8bb55921ec2a3bd146728b717f31681c355cdcbd551e6f310a85ec235ba6014dd384c0118d9aec510c0ff524cc07a525b4e80cd1d2d51649cc6889b2240672cf91d9270ce131b10e839c5ba8dd5ae0bdfc943f9052aaf4e838cd0ad9074d845312f17f33a1333c5e580f48dd93b4c013ce245e807acc8e9bc89429027b3e782bd1054c1ed0b81c6f5b54184e7c0c3289dda890f9d5c21cbf13660d4a5634777d00944d6e9a91a560a7422b354fa46282871b9f29bf0dc7cba8547b19c53c16c5e9cf9986701d8d15ac5893d6f5827bb02e0eae3f589f4fcf153515406a1804d2cf8f62d765eb65e09d16c6dd3acca553ff0083ca089e62fa06898a1859d224d8f823f01ff17a2a53d2e27ba6eb1ace30b7f9a97049c581b912645ca1337d449fef95b61cee2b825716f8db4defd52709f08214e1be87c2a1fdce6c3225c10e72b0e8137dd99e2080a033af6eeb1ab4734cd25b822c7b6ab2060774df62fce9bdc9d238b679514b336dda53a630aaa419af1b4df7489bf0fa054c82bbcdded5f01eba9137164a023f495ddaaa883bc42edcc05c2361488731d9352278c9f9075197db5e29a1c87add4cadfe063c6a072f6e1fa9f8b1ddb2a5e46c7b3120627845eb9891cd09b299270c63f0147376065b406b531dbb2283bfbbd7f793de7f627685263d89308ac3896d62920ac548a7f97681b9c0b48671dbe6b6cdff66b3c80dd90b7f5aea8f2616a57f0c47f2375f070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c4e5f35dd019ce932c8d81f52f6ac4b4c7ad62d1513e1c5c445d10faaf17053387812744aea4097a7d1707dd944080558fe3569fccc6920fcc5edee87764c76b69c14f4fd2f140a5aa80078ac3bafab06214182cd9e26ab213ef6a424b4752d8b8b2b693f46bdd24a46bea270af5a4ff7fa74189ebcb1163d359d3dbfa7042509689bc397969857751feed4314241810eeccfd63998768b5a811277d852abb5a1e88196c0e6f98596ff2ecb67af89c3dd6568a4fc2e495559d85d9a043c117615fdc8135207ea0cac2c99648e6047226055013ba411abbe71fed3f3fb678bf99ac4d44d51224662036ac1be7e71d203934498d1f0489bd4e9f8463ce20e381a31cab6da793065a53353682f60fa162048ec3c278685200128c45ed315900a3111b2a3f36810bf78e75a36765a59b3e618177b61f6a90944e0e5973a573c9f048f17f1acb7a5e29889ceaa14f78ffcdbf9b83a3a8ee5233dde72047074853d78a6b7f5de7b73d0b861dfdedb8f2719ac647a67161803b611e5b80338be8f0012bbcbf1f5f05558b742a7d4271865a4e3c1fe55489ced6624aa329fedced737980ebcccee2210078dc20db162ee0da6d8f12d6293b9079bcd29416068e738f129991e084f498a98b41c4c7a8430ab26e0e06ed6115ff86611a29893b50c4190322ab26aa6a3ea878671fadb3b77b694dfb541dfd52d8e199569c800b003931def1aa79159208545edab077606d0f61947a571b6e7c0551002d739157c6f5fc1fd81a2e7172e9f480f0499f9162ff55146ea147508098c2ae0c723d8f113a9fc8db656a25264b4d4f1ff86acaa7498f351934e3fd113c2f8e45488360a40b0cd1e8be9ef9c323cad2df8c077fdb1ca88159d3339818c557e4ce14e8efa0a60f9ec0e474f05cf1478643238fe22a7ea8c74c555d37bb9555e9e733e07cbd25a3446847a3ed44d0390261cae0a92841eb6c49b20dba2869f3cdd0f33754e813f8b270d8d7c8c7a605541067e929ee330f34ee19f5de779bd0d74c4f82d97e0d794afac96f3184bf7456e8a6a1ae576889b198fe9d619425b3378e2b8cc97caae0497a3730f2adc1642f039a99b7df9d68e080e9ae10dfb93da507276b50644d8a963a0f381f5f2970725ce544f384ef4797e5cf686a0e242621501b3b5b58caeb4ce31d8dc19de210ac4744180a3698c1ccd5b68ba48edd1d242764e287d1b22262ca260c8e5d4c031a798684aaa48b739b19ea140db60fcc23cd4849deb5c3b3137331f2504ac002856a0e2a18bc613f2de3b0b615335755d9a7de9cf27d1ab273b93c87e0c03af4414f1586512fba9bba193ae17f636dbc8f2957bf28f31b2f7f53d3e4dd6f1ce49137a89a55549f23445de2650e4f1c00b22c6396c08a49e803505406be93b90080bc7e1317a4040810726d775090a6b8ff2ced7e1d150b21d3990d64cd3f943db519722fb8b4bc68656188e109fa6670235ff5f2261e4819b0a3ba1d15be9a6b39a07f579923924d4fecf753ff918356801b662ed3071753bc110adf8ace113d4bd09634b88a48095caa9ba92b2dc5bf8a59a2b7964861493ab25fc0e588f29bf7dc2b08fc95b27d8673685d313551aa6869ddf013253c6ccca39ca9bd71e3f31c77efb8b7a8a5d05afee6d24c027e0ceab5b3159632de281253ec3bbdffea8a9e761b4f1ee56047dbacbbf7d3c88240d18e4d2f625e24d2fd4922f81cd50895c276a738557723711934ea1705ef98a29d87527af74fabf3bee87f2813ded83917d8ebc2890f9dd3fe5d988aca61f771aba9df9455e22fff03e8565feafdb0619706f36b9dca969747e4061be9248ac3a23add9452f9830849e3e72c8a1b13873ed3759589e03f800f9209df6ff23edfedf91fb8eb35db90a1e31305ba079f6cfd6751c036a050c091081a7cd92f6a0b9099e3deba523218be28c11da50788de3f60ee17d78cb8d9f210365f94a9b938f37a5f4aa1c1637c596a04ac232242d6725b6b49b12208d10a47d8264c2346b598935fe0f43eb56e0361eea0a8a631562defff77b502e1cf0359bd42f1bf330664217a637476406e402ab0bcdada496cc5527f74b911a96d7b4b927a80fd918255830fcda63832500e53c4b5cdb90bc83099b65f18f4b84561aa54c7d2d969aa3464eaa220c59669baf9d7e08216d3b33c39f5573c41411f1a0a10c43eab6cb39be9baae5f828ce41e50352863a60c4575a4863482939f2d3e2db6414b0cf533468ca0f547d02030ec80c58632311a48ffe647a6ff5bf0defddee45927b9c888a8307ea592a3037261215036fd0b441aa141c7356d91031919b2f8e2f92af9134b9e42df419bd91cb582984da871da855643b4ff5bb4c5cd16a773c99688817fdd76b7faa1b0b1341de20e35209ab6a1016197fe373807f9e406214c7b9c0ae7aa8e4412c7330f88d053056363d0cb4ffe3c34b05727144ba6e418ff0c5236ff9a4bb716986c86694990d1887982d0d8c1caa1c471c793cea11b5fda1d346da4caa12e74f36a0fd8af52d743b9aabb1262ca1295342cef187f3fb13c1e565f7bb85863f86f93dddeb2613dc2aa2db4259e9c086ae837c4e8655a7e37a6e3801c6811718bf76704804fe276aaefa402ffbb5394227225f69e1adcc7556936bac642048dd86b35effc30b0723034ad8fac787a99022903d8b074cf8fdadb8ed3b8cbf75006acebf1d110534f3f533ae921c0b78ce67452adc26124ae25dd9bfaba7d4914b379360a812813d3f5743f889a442d4b6d437b1558b97e15a5db16296f36cf499417a484b4eed0ad96a626149a4d847df37d7a88f7e1773f89a26ff26e90b930fc2a8494cd6170479e0457a55b481b045dddf6e7362c99ab049d097d3251431e61242c819b4d22f70db675f50a7dea683a71b66f7f91c6ecb99c019d207a6edb7ca4f9ffeab7e29aaa723bb87f14efb2fdce5eca874cbe2e6f8a1801d1f7faad249cd9bbe72913f121b8ac6fe1446a0b182d661b0d8594f52e971955322c9c6595840aee5178518853df56c9676206ebaba2aa04f8a20960e2b5cc3be71681e85d686ee75cb2a39cb9b6eb6b0933f34a49487839995931a1c0c4f804c1f9dbc45c9996811926a0e8f9cddda2e7d6c946d70ccb58717660a1c8bbc7bdf868849de9198995148b210c81081f7515983e9e7cb807dad9da48aab614439811826d84a1f97515f915109383260e314f80fbf1f5606509db8f2103ea1788570dd8d452a8b2dd13fbf1538fa9cf2e9c9fa3d12362fa93d496d1d770c71516c794fa7a442c2fb0395afc70d900847ca74b989a9e400d3fd4c5ca81c2211c856126b72a296513fb401aeed0892efad767e23594b6c4da91e8e45779c76c6c94cd9a02d0adf3b9ded9bed2520064891d9fa14d4e26a311910148f057bfa59684b73813264a2a901d4f953040e2a277a15089841f12882b2e069f913787a37f7f9671be7747f7abce6a97e16183d03c5ca8f71f38824c0b2e197b57f5aab474201cfe23f90ca1e7a4f11e3733b1dcefd8652a7cf727c5ee648caaca370a20ef0e658334520c38d3c78870a9b3824ae09f4d0452dc5adfe57192007c4ee608e8594e7bcb5a8983004f2f0271b1a129b5c0f9a9a5435c9116c86bc33b1a2cca7b104cccd8e96a31618aa869f011056e5b876f257bf9557381e4e812ff830ed34ae2bfaab746c49e65b0811dab906967440a6850c570aa0a80f3bfe70996d14a1a9a3b356562a2bed99c40acaf107eae6809d0adfd64bbeb5045ba87073ed5714a13839906f11a0263fa078420606787ee1d0c1fd90dd8cd8f2f1c796604d54826d472df55ab8d72d20fafad1ae39c3dbf0d54c1b38d84e8ad9dccf402c27448364a7c30c169367386b9795f27e0b0b56b00facc89636a1b1391ca960f8e0fac566eadfe44aabdb359c9efa8d3d331b2b6105d5403730d9d180a6c65658565a1723d858425a078e6cd8d9a73c3e1fff7f57c2e12ba17ffa065efdefb1b78bd8f9221aaa227eb21bc4dec5d0d01011711bce5dfb699f2810f2fa15d955c9b71934b28e2bc0b1e37b075515690f870ca8324ffbb1ccce79a1fc706e78bbb465bc37034cd5d5dc6c390f1b41cbfb94256b64253f2f43657968313cb6908d8061db87209cf3da1050bb8a757dc765243e42590255037bfbec6701406049e81a5326d5f423a0f189ff94c32a333221882636fd5b98cdc9c14731eb93e9e3564b3b93ea155faf3eabafa21126a0d52c8c3b514080698bee3bba11f5ae26b5d20fc7f0ab3319bc5d6b5ff6d63a781cf1d02c570ad8d007a7c27e495437a2f6fa86f38e9343363ff315ebd95e23d57414a50dd97bb934b3ac9bc5b5cb6742c2f50d746590cdbec2cc2c025a1b6abcac53171c04ee700a6ea6096d462801d172680cdd919b21c80d7b0730642cdd53f10b420799c09b8e03e5a0ce59f1870fd90a5ea31dba28da6d43b278b39f0edd2d9fc82929e2f41d737dd9ad010c1bc06ecac08030713bbf9abd30e7f7bea89bf50f8020530dea34e2127c58e35d9268c1e7267cb00bfa9ebdbd929d5eb0f686d8927f28cd8e2d6487a99523fb8704f426d68d27fd8e843b880d5e1830d94c66537c36263e231c78baee3d32836658aa0cfa222377bed6912e61c6bf920e28421062dd1df2ca1fd3524ad599ed2ebf7ea512b7326e2b86a2724c74977cbcde823d5f1128c8061a4e6edd0e180ff55de5b77f37cf6c7b50f1be0b4d1d8b6ea176e14ef03593024fa9a801677a3ce854d53fb7dd0041f47c5c466a1ca103238ff5648bf52fccc159b34e16196d3e91ab6a92571211f3154ab9b44e25d546c0539e2c59b428d36e5c2cd272ed254500c49a6d09984e221fac248325ad848c01ade7319a3520c83cad8fade9995048fc2e377b91a0522200c1d3d38e54ce2315dba3d792c12d6759f17eef0edb7d502572f6e3f1bbddf2002e2807afe73cbcc481572ed55f11b920e0d25bfa52f10c00c175605eaeac91308d0512e298a055e05de156f0d633c3a0c73525e62d7e5c61edb032139f9aa7d55902a0fda39066fd662b782f4405041e3f54f29781b264c4194d1464335fea1e618ba2a6e5ba4b62c8a5f0d694254379ef615bbe3a66d75cc329f68aeeed52693d63a0f66f794d700f72d2edc303a6e57ae7f4c0987da01d7de8c60c263ffc64c01a92dc1f4d066e525ef07c602af211d442c45e23c1f78b9060a95f3f102b3557dd3fdf5e673b02a23f81d91639a936a656c0c877ea8ba7d235c78a91b09ee51db1e5e9919cac5febcbd39cb70c95ac9efb1c547e9a7f88399e5362dac5136b3fb3581cefb79994c01f07ce2434d891d7831fefbef2bc7983e7dbd9dcd83d8de60d0c68536e8fd5ea14f5d33b27fd3e2ba87cce7f94d9421210fc1989758efcfd4bb6ab8dac93be06477bf57c02840a3a6c7252a91bd612007b1e0568b0829ab2d41347594017d337f06db94c11c35ded31fa365b0874cbee6000b9ab06eecddaca8d0c8fc064e4ec96efdd9e2b6cc3992bc48220f8f1f6ef697063d0c46a617246641a73c6c3ab3d26bfaf8706dfd89adbee69abdd9f198419b0ea1e8510de1b92c616ee2eb2725334bbfee90c13fb8742087c0c70cde18a8576166601332aa002a347e65452e2a2237cee6705cec7a1e2425fa6044339b63bf5a047ba52a49ed6bd1e88e4d6ffce458480df30afaf3ac08037e0dbe7a6cc95c7842909db75c6d8e1731eefbe358d7773c71b1aeeb77c102780d48018f417edc1429ee3f3d18cdba62e6b0b4488684967e79520b4a1ba5a8df08f892253e1fed1915cdd201e87d75c6d1d2554a99a341e487a1654eda35019c7c38c86f5c75020f7f9619a61150d213b99b756924f5f9895e71f49d172a31028270f39dcc1ddf929992a516e4c270ac591674e6ba2c13dd06e0b506041e8942778deca31ddc84f4262ff4ad4d81e531cf16d4d041f3911441c12c77ed92459409ab65ed1949920a684e729d0904593d7a42ffbceed454a9cd23eb7e1742bbf6effde398f122a8443e86c272fdb97ef9455f33ec1161b73013800c40bda9d301d96758c6de69d103c430ee0192f74956b3d73cdf3cff36850d0192633385b19d546bc8f0b1f9e3524757f2d4245646a218b78e6a9f4e289b7882910167b2cca4ac0b90203e5ccf084ca174b16b6c0570f6d9c4e5f08815017f92a4aedd6d5cc3f40a4b9384a77405efb4b87a15caf74bc5d04197ca425592c0900484b814b3d1926954716e1df3b7017a22951344fdf52496f797562f397be1a3ef6bab299a518e7ccda7e5fdd166a6c3e94debb1930febcdc609b93dea783be0d009656909f18ed83eeac7cfdb0a5954dc8b9d604db26c6904d8ce0abbef49d005d2b718f92cb54a7adad0d106a0400ba35808525068312f938a58963d7266f1829495bce11d4c0c05073ff5a72bb508eee9fcf3bcaeba833bd03edd36a49272a1bd479d2408c272e3badb2ff2e6e036aae1ed1667b8bfd538889f705c624b93f37293759a9bc6b57833ea34b0973dfa3171bd9c81715bdcdd39a1a5a16645532b276af5eb53fa910f837f367301e75c8eaaf25dc6842212f5a43b71a6f76c92d600408f82c64dadddd2e72075a070e7e62baabb69fd006132d441c4f184c5d0f869993de13d03ae69b61956f37f191f05b24d242c23bcee76e5ae1726a296b1b15bae2365e9379db640dfeda8d9c7d12a653252a104891a78fd4aa3971af9731c00ee4e0c2f2a4e4fc6e50d67ab75024acfde2fcba159829904f9b27982f2e251f941d897bcec7ce91edf7156cb1754e27813c59d3bfae136b5fdc4ec32e7f17f5d4c4d078f68e91ead670d0cbb30054f2e90fcdf204ac0b99c8c435d932c10ba9267de7a61d791731e0d39b6927f8d8c4b395e03f239d84b717021375480b2c36e3b110777eda7b9e67fbeadb56cbd75ae21d5bbe2f95bd5a2d21ec1a5a403c619e55e46f332c9f98368823f03e4bbf12041f138dcdf2423400dd940062381e75ed02772618afbcf1bcdd949e34afa5bdd0c25b0addc12c1bff4e7faf0a1608d0a36b250d7997bb5711e1b6c74fbf391bff697982fa2b388f1c1934483517257f23bc65aa0e32b5631cb27606e552c49d8376d70c7dbd53570b8d92ea893d3c7b1bc8f62c174ac33faf08269b8d173605aa9a18d81fdbec0e392a6b0910443c504165eee0571388028e1512b8384f60cfcdaf2ea17b7e9c1be172676062a02de0409faeb6f0594e0fb6e696d6605dcf8a5be6115589e2322d7c838bb06f7908aab838bd06e720a051d07233bc7bda3bf1dd16820777d5f57d15d8ce486c9c0081681824871c37c137be3355e8587d12417caa506e3c14caf7a1e9f2d94d6c15e4fc132b2a62f4fef4d12d118ba9d39313a212980dd0f4d7a177cee3ed87f02812f6c2546004e10249c06aaa49a01657c7c7d2ef5c155310e2b69bf2e2b5ac3beea29add230e49ab31149447760e2c54745a77fc33127beb384adea5efd15e17aec6db9af767f1c1d5d7b2cb07c3b193acf0ab44c5804ae5c3e382538cbafa1ddfc31f1448eaea7b0a7504e9fc5256e4dfff39ee61145fe246856fc4fa93d22154068a45c9c12234f6e4aa3748b0a5418e4992a22eb18bb8033793715318370834424065bd4cab694acffa6f0448a61844d4328eb406b72b3c9b2b610b5eb50007bdfc74c7feade19a2459ac4b21856868aa06a2d175589dc86345b311df552ab8a56a724630d565e4ba55a1abb0946a0a8d6e2bc453d4dcebf1159c82b98816c8584ef251cacd77c3ffa104ffbaa96a90d876145fa73fc5fff5f5570a6d8d1580e1c4cce5b5f8e8a5d2b1d20b41b4009c79ebfd4a8e1636f6f93f12593f0532d565ccdf90ed011e0ab0fcb3db28f10535ef5e93f59851db610641feb3bba4190f3074e4257bdfed4f05a52c98c380a471bb3b952488283be1f14fcad4a3d219765b4b2b3421d5ef845f6c7b9ad6af6b66a75ef0c03ab4f2c5150c078068943d1e89d298524d9e9cc5b20c3bd03d89d7a6d3cf30b02e17516e0001b071b92a35d245e0c596071fb8dc53e53159eead8cf86441e0348a0a951d4a2ce30274b423bf3cef4e5969077107e166199d2c5714e25e2e0bbd8db356fcdcfb3d3b8b04066c193c83903ab0f0eb18d2faa428f3104af484d07a96e43ec593a5a9bc6d9c2176535fd5727a3acb3ab4b2e9e9a570f06455bf2b68cbe461743af5466bf7f8050f5c7710b8cd086922c098d4c9c26e53708c5523c0739705505aac79ef65781f226761215eec4cb44f8317b2fffdb15dec242532c0cc8db35c117a35278c54034cdb69bb5df20b8cc8f1eff23bb6e8b929a130e44e0b0812e937fc89b3de0a13afe080628083e386b703ff58a07fb599b66605d12342bcd8fbe69ef239f3ec30bb2fba014ab66bd3344d60786edcd434fd3a19f46353cc0c7901e051405544028bb9dbb1ba427c4b6e6b5a3ec8a593f0832d6a61692d72bc6faf044ee5664b1a7b5a3d38fd1a1b436b833287a162ae7851085a1f63bae8f2fe18b09c603ff33bf0b5ddd6cee3a4b4275348c9835ef59b44f2db1f828f77d0b7d8df70487c91205dd731d9d516d9cb6fd88080f45312c10edc4cb8729c7e71fc9fa87808bf3a3099918984a60eccb1ce433aef537927236f3e0f59fc922b0ff7d0b39fa53f7c19b5048f8fd2e9a3cbdb8e6d7d156b697bd7242355bce57cb3d94d16a5f9adc607288f3ec2641d42eb3303e0344ffe4e4cad5d58be766687da989e8448a5cc7c1ca4ddb0e6cb4f4d22104b1d32f6dc3632fa7012ed5e9d5a2111dcfb62c7666e1bedb86bd966f9caadc2ba81da0488c78352f7d3ad94f35fb75a12272754630a20e42a38a52c4934c5d3bea8631f590e31ac72b485478b7d8ba786e2bbdcff8d22a0082034283aad9f28adf92604124062230891d81f71872c135d234bcb76e82dcfaa6969b84c9171805683b4a419f41a830bd88a76618ae387e3a69254ee920a1375d8362b4e038a2e2b4a98b1c181ae9e5f24b19b07c5d46bd50d0e1e37502646eceabe404904f3813c243675a8322f853d45614c7d56fb8667badf80b87b10ca9d2363e37281fbebfaa303a7366de81d92fdb81edae1f057fd933523dd0a0b88f33140db7acf9131d23420c2b976156d2bfd785e9c8c7c7a520abf8b58d204ef04b5f5f9424c5f305ec6d97f582627a9f7b1d124dbbe6bbd4a36340292b70be4278a0bf1833f90bec6598d3a85fd10c37d2c7fccb02e440deaf2f191492c242d84f09ec1e0a034843a5fffa7c63cca1be0c6c378ce3ca56bde144d25b52412b27185ea5d4a3f4764ee54f0bc70c489f6d81e8a9c7208638f9a3a0bac5ff8b857a74cf8363d05ee1d8f3a166cd50701e0fe692879ce79a3d691424066b749abc3e738d5647bb844731b409cde36b48e420348197710106d7cc0d216cdc677b81c4300b93de75630c4b3e117cf10b678e538db372b2304f314a19d41b5534d9213d408155635a716fe42fa7a03ad90cf8866c124e99a66405883e8bb6f9a502937e18db7c266d8cdd119d12c7121c580f83c2be68d9a65744d77e15c337fe898e1b2fadd3b48b4e03d08d4cbb2bd50f567c1913084eeb5dd249c81b71a1d3a20e2c0d6a8fb7f2099c60904310e9416d9b34407ab6d32fe2bba4cfcf688c5c92b34fa937b7c5345fc8724085c893a5ee567bf6e3b2c1adae130a72f2a3a16d8920cd7e6b93ddd1352a13b1505cc0cf4b00a3ae34a00cb2f85591672068027403537fd0721374d5936ac968952ce66bdf64318c927bb6c184a880fa15e384a3112b78c3969161d05b00c431ff94c55f794c150ff7bcb35265782fbc6ef4903632144809ddbbe3d801f67d840f06a15f966775826cc19fd1f431d9b2dc8b552ba3b28eb47a6b96a038432ce40c84eec8854e48d1172af6aa5719778915b64cbf2bdfd1df50cc32b2736181d4664ed8bfae97f49c20e30bf9c4ea8e67b53fe74afb41c63b12c30eae8c890a5ca1bebc6ea3d553f500b755430896246cf8f4577b3975759e150ec920229f0909348a612900466b5d66e5e2d331d6d9aafabb50bdab70c93cb2d3f6647ff3e399e06946844e96897d74d22795ed647aef1526ccf5dace92d9f5578c19b0d4747d50ab9442ccbd04807a28a35e0df84cd1d4e9c8dc025717871bf8a9f9495ea8d6f6d1687cb1b3c2a6ccb25924ea8c6ad9dc62bd510325df9f6c52c391218b8fb35468e6a855878f17f6d83f866cffa34a2d1f3c21e17cf28514bc1b80740721f43424681e4b421367c296b90a75a116d59c3bc06aa93cf2d809158a67ce2ae3ce452706f919af9669e0f7ed795a3c0316b4ad876d292063107e29e7374826e95233a7e66a89cc7fb4a6d96487f2f2fb1d68df0c0092201b68d49a7d03461d3fd5927b89fe693bbdd3cd201155aef2f533edd651b1802f530b807760dfe1b4385c3ed4000f6a8118b0a3df4c412e79944e444fe063d340f4871ba816c772ce322db4e55348b6e5046b1e6cdb665ef7731e4dc58c93a21102ead248952e94d44bd8357a49f2641bb636285ea307eebf48939441ee1e31a03adf3198df993b59a995d271e9b851fdeac457d6355f9c207292515c0ac2b3801c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce9458607000000000000009ff3604b2c9238c3575aaba36bf28511d83a0aaf443d53981899c20be308112327ed070500b374e359a90435a60363235ca445da700abc2c3b962e89ddae24040006000080f8694a1277777777000000001c1d1c00000000000234ba607b674dd1faf18173ab52cb86ada65b24659b7ab0db262a4d46ef6307813610d535a38b024b19e566c3d73cb49c5dc6a73457c658fa61aa19c9a669d70823c009c26d2c4c5949f83ffb187b8d03a7e05970d87668b9ebb172e5b44c4f300bffbdba179aceb954a3d6da0cc8e9f59587e9a4ab1e9578466bc9eb508b791bc0497d33ffab8b845eed45ec6d6d9072da6064b0afe5eca2b8e3caa4801e04990e2ce95ee1594a1f922a2ad1e0550fa5268c2e1486785a68ad25200e0d1a1fff176fbd7f928197be17c9ea0d4b2f1987cb4c5d4e62ddd8001803e1672d2509ce5607d0ada2ebfd792a4eada56d50babab5b04f4999d97a78f2fc35e1ff001aef6c11bca252ab1f6959508604fd29f29642562b862c9d326655c735e7e9ff0e5b539d819b0ff9b7594947225abffd69d94748a59b5e4798eb4f0d9f41848da1acc1c42ba1af1a4e69227887f00de8aad96af6043998f72164b95e9157ef40f3253d38dd577c636fb694a49fbbeb14a153d3615454c5ed2913c49454efa45880b7e81c288c34793ab18eb68dddb3b5eb8c6f9ef4889d0fb8d3a2dd58164e5edb536fc705b63b194f2dcf384c026004d3aff29e11cdd17ac5c71c26d30ef20b5c157fa9c1c4b33d9bb95cc5882bd36d990fb12700baf432d820f66283742ef447d962088dddc54a21b162d0ed191f12d4b335b4227aef5583bd2a7639a275dd3c6397d11baf62a2983eb982d0d4e5bc64f8bdfb72a5b7f99c81c4af1395d153c9535ae61358ea5fd933e1ca35dfb4344a3a096236e9c777626575f9773f1ed0e64c7e67616b36b48d9f481453f8815d4e48601961cce17d7e5cb37be71839a205a208fd7d35652247b32d384453f30376c2b0dde5d64285c86ea396bf919978de33d5959c7a2bf9fb5e15da56ba2b11b805789d994dd44b5b39952d90bb9cbe0209c63123cec7ff2f2da1c1ebc0930b0e3a03b90dd6e58bf83187e7b71a9a5264fbbfeb90c57647c5d6de4752ccdf657a95007a21a6d8e4910ae99c90e98bef3ba13ae57614499747369bae218a8fcbdf074b48a5f374f74e769d02af067b82283116764abbd30fdc9923a3995d144bf1033ab26d3197ab184748b4992bfb51b0ea22cf3bb574236f2209a2e1391f153b706d5b7640e8a23778332fbdcb1e35cdee0bdfa55c35b02b793b6f2fb01893363d01388391479aee427cc977bef4cdd250e78a7f0f39e711aeb13be5f9a895792dae2657ac2789d2f0a5b0b7a9093fdafe072883f6842e377b05a046488db93fc23002a40a7315e284aa164b2e144cd5ffc6afc8584eb5d52b21b48a924e257b72a180792eb6f8f0a5220c0db0fdf5f5d0a0aecdde7f194e88369ee5d2efda82edf85e8d20b69680c677a4ed53eb33475b9beca2c560386cceb4ddfbd30292b111c37530ae6ee207b87fe5b67b5a90943e2a3c43c66eb8f9b1b006fe008f9da8791e71915349b9a9652d9c508adab7668438eafbfb46288de70ea1f96a32d36ea48e0dfc3fbafa1ea69d28f2b3b1e291a02823229ab70510e1fc102e5df0f6160c7af5ce67e8a6dbdf5e486d285f2b4ebcfcf2c10426ec94e0886edbcc0727b0703ee6ba3a1f7d4a5ceab9386123e531cab919407eba95c72314e0237e4208e22981b912ed9c2b4cac88a8592fb62d648846bf411b886a6b89b83ad03210cf072b00019dc6d0e541b6bb9a22ac9b3603ac0ede0b27cf0998333446344fa2cb44350f9dbc5d557cbdb74d335c6bb398ecd2eef9686763c1f21a34970e810a8eff7b37947fd455ada6010eb00ed5f1f92395ff7d1fa77b05beac74c53db704530f54a5947187366dedae6d48386d68c303b5eeac6e4848607890ad4c4ec6fe25251b4727e8cd22d8fc8972840fc8d5887ce647ad628b298e15f9cdd49b917887e0f8e8ebe0312fd04f3871c68f402f8dcfee60e81283a66f1725ce579861c999ede9f9e2d976a83253ea608b66ccd6ac83359bae0d060adb0f5573ca385446cf54f14fa3231830ba0243fd574aa8ab787ef0150be0cb9c38970043d6fe200fbb6d03158f33f5e3a811887ca482b83122242d228451449593c8dfb33190298e873d49c01b8d0b9ce8851e60e65308325bf3a934054fcc53e791fb117dec249e9836d466ec94188df94077762d8c12e8cfcbac6a9af9741395ee566c26f9e5ef21d7e08a0453fd22ed3228f9118bf2606e87e0e0d1e495075f348b16701162640d2b805fd4d2d3890cd6bfd5afb790ee9163e30d55f8015ee86b07d063dd0398366e4cea8379c951160896d3374b1c39093954117d7e3840715e3018b917c6ddf9c47869bb01a71793b2d414c252cf62e9d781e29137f59978d39b8ff60d45540bdd2dfc73dd0bacb811267b486783e9e9a0d0d5a2a161e082adaa070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c02f3f899fc0cfbb1beb2f0a6b1364b43fbfd5e372a1b64b90685c1b0750cf93993917608f18aca5ec561fec653860b83841a345f03b0e9ad5360c2616b8b511f973cb8eaa583b1e65825fb0cde26316a897f759b9c79d96d4bcaec217948791d524ca3ba26457a5b6f5278171729abc58fcfc844a5e2e9ff048bb334bd46692d97beb0e892e144acb380a1a2810048d5b4226ce2b4f9bd020ae4b26ef3d03419236d3862dde808d4fbc7187da8d7a63c5154c369f26a905f355469a0db4e562de2ead4d75b8693256748db27c5d041f6bd93bc97c7cf7a6f2c2966c29817bc398cf4a61ff5c81b66a7c725dc820e24ccbb2402b16e8a5a9e0d676193924ecb3a48bed2157a84205b689c5f673b45f5cf8589d2e048366b6e3ef58a6cfab7781e90d5f0f2922fa407d0882daf4644908abfbc5da2bc90c09be46ecd7667947d00094c2024142dc31a072b758c2b4c5306e458256fda993ea15295f970f480cd333f986e7f633ba84f8981266e9db3b78a3fa87052a648fa99c4dcb5d1420da4bac5c6ffe822276ffdd6de43f39987e9ffb1562c8e136ec163623c1ef0b957bfb67cd4af92e6433d2b3c757be0b74d7053fee3d1833bea1b076b4e2e878b68be8b661b0c54f6cf9e3bec410ee0a65c0371b4cee0f3cf196d88ac4ef5ca02a42e352785e77307367dbdeb20cc0aaf0be2f72ddb4b12cb9d1e7ed530eeef35a44daf8d80446626e90ff4d6705317ddea944a45e094901680b89133957343b5209a0146722d0d494c9fa805231b072740b15fdb7a1e0dba39015437cb2e61f0cca0179c0128c874cdcb3e4c377925a097d46a2ea86ebcb2aaac4e69b8d93f3f813fa110857017ec1126b0f48e1b61ef1ee9f2d3288a1ba037b28294d381855a9db1a44f6aa83f17773222761fad2add32acb500f060e76600b50779934496796f4c86114c123c55b42ce44d600055e9e249fe7d5f1a80f54d49e5b0dfd71518a7669538471b5e759dfb425c51d742df88cd4237000e0989d5e554f698d0112bd61a33a307b36b22a76aa8e2938e884191321c09c1d90a5678e903a5b76446698e5031233ad87218bf81d1f49cac719c2b27afcc4a191daca45a1c9f51425cf48008a1a569e2adae4627c233bbd024ef0f7c3973ba5bbf9fa0704e111223cce823d50b5d91fc0d805e0bc51daf91f0375b6feb67ed3a729933f275fdde5f8c1885cb9275fbfe2796b9cb4dc5d3eedd1044ffe62bb5a4f20c0969ecce5a0233c5a7740f9f18ba0a6c9a38ffe4b0e5377e6e84e659ece4b09a516f1f5e158f633a18b527ae8cb2813b6fc27f5108a7230bb2ccd25f9934b0899ce9c8cb3d5afa146791b52509aa6f78f02904882b0730d1a8630eb2c3e408aed611ab9cdede995bd2ab2940dcb74cbad21b1a8c27bcdd2b3758c61e5c0d271dda23139fdfa17fe97f19358fd6e4e6efcf71996b359eaea79979375a010436dc45f4ab138d7426f806450b624c14febce156041a32539494b096a3210d114d203df26b1cc826fa2946f53b2521ddeffc30550bb2d26dbd6900c912852b1741e76aa7f77b6c4aaafd16760429d5ce5d3cecaa3e1ff1d3399dd2e4bb0123d668b63b61bed7b097daf5a4710e82dcae3e2db6fd652bcfa527938559d83ae86982f26cffd2be75bb6f842883ac73819dc831dac60616f3c85011bc5139d67254cee29b964ab71fce45fba367356f2122a61544345df6d07f423d13bb32c328125323ff62ec30d67cfafde6eb20c8bf832b8a51e3de2726ba66fb6a0224da5f79286ab7861dac4d7fcc85c62f85fe476216c55ee4e5ebb7ecd3f642c547ec45844ec95586eac20c1834a5abb0ab3901c50deeee97ebd64d9980c53e0b8ff88e2273331b1484adc54fd459eaed17ade204477a17b54cfac56fd8d05f3ff4edc2e473295817cc00ab5c34806f1e370a9f97dc474e0d4e6955f915cd6d2069df587eb0650c72b4d2454142230623070f6d21be2bdd0173bb0a959990d9d250e47a2148b42030900e9e7014806e22ae690eafac7a2b3fbf45d6b51dfecbbd21993a12e057c82425533990c8b5c238a6d329c4c41387bd693ec77f1d6d200f17a86063111051f7090c2bfa3ed2a58ea8d22015a2cff83e127edc0383eac49c3b6caf9b5e0ab4abe911658ab63925d60842f70fe83f9ce4258bb79b6311bff08b231078eb8eff59e9dbc955af596ea7acd15fa8b8e1ba88e110ac383eeecca4340797afebeca8fa7c5839a3a306d4bb8004cdcd0372d83cf4e2214394cc2a09252971cd530af7802ac06d57fa0784500c40581efce6bcc497fae84e8bbdfaac727bac1cc0d49c0fadd64639c6c839f6b3e4735074e5f2cd2b5fe6fc9cc34152d723f1e1ef3fede91d41cf39a8207ad69044d14925961ca8b535362da356e419de13adc49ddf8708b82e6ba3b5609ae6110f28333601eed005b94b0d31699c8a687ae732b7d7bb263081cdabb462241911bba94585d0e20c9b41f4d8d5565e70bf351ea95382544864f4a960b8850fd5095213c2bb602338ab2a3f9b1fd97e8d42f68f2f943441ded01beb76f463997f1709e92c9e6df0341cc64ce46bee5ae1ccf0037b77ea00edf62f5f545d16bd063bd9097ef8eaa34d9dd1cb7b2d7f080fe56d14e4eb521da00c7c1d19c13e934601f963f80fe122c184cbc0047fd38cc0a7b4389debb41f44c7cccb596c41936e2fc672796877e1f0d013df6aa65a8d39c60e49eaaaf4bbcab70fa97a0b864aad214ba57bf5ba65abe585e52fec23b33a8fec951699fa4ef19e4af9e7c237248e1f4a71e6166133b2f1b6949d70f072170002b3d38dfaccb3843e641e85bedcde02e289d94ab76f935ced360b5b4abcd503d274923c222d757f8436e97156e067037c7c984ebb22b836bde9b5aefd12b6f079dbab91f69bd904facc456154ca3a1730b6fc7095af42e8e20d0b94ee3c797049971d28d583d5d1d7b539e8794a7710c2de9d2a9db9e6842f7a6a410b9df0f16fdf6bb58c35ca3a7d44b965f04e5e0391f7ab9789ca3f88973b59f50cf46f0d472e4cf49cd81c1b05d8640d625d601155db952b3544d54e5742be75a4bc9cf0d1084bc141b76cbb06290971fa526001e135397dfaadbb5865bb00fc424700901c4e50c7aa4db925b9b7fb0d8631b311fb820bceed1f83a6c166f78819a059017c7e7bc0b134aafbcb063ed15ff67f165441f7015d9a3514ad604c82e400703302c8e2e2bfbf738ef380e6f690392712d64c59fca62f638f2dd8edbb842a7ceafc4926febecfe42d5327af88fa21a9320d1f590803f35b2ecae7e605f0aaf99504537de024e600435f4963aae484cc3f6620243c307ad03f87bbb60696bf1b66409b143dd80362b48e74627ba790e700b4a6d10a4961fd6e4d954af5e585e44a02dc9137a9f2c5b2f09c5edd52924a0f62e0db46f2eb9c15ce3e9940f16a4c7c4be030c02182b2aef10f01de089f380e8afe59f6ace4c9f34738d041cfa61e19a64156a675832d16f4ee54526e0b7c39a8f48dbba330e8ef36b5564d263060c90009a367bfc4a9d1fa7e7903d0de3b2a68de720b8bf070f456306084485cb3858e98004be70aea72b6d0200def4f340ec415fdd2bcaf28eb60a1c2854fe016de38232c721b6d3f3325a101b77ded810b660a83f31c46a5f13a5a08aa6df7da23d0eba9fcbb45ff299761741ca950e12f2f1881946ed0c16f62139d03b430d1dedc3e7f7c68f2bd50993adeeeaad42315b36e0e592b42f1caa568156ea7aaba4072425cc227be504ae30f50335793483ae94a208efe33d61a1bd8cf95db05914e3b732a6c2ea57180dd5421a85a94ca2a97c80a41c04484c5552bd6489ca235c28d773a4d5122d93fbbcfcf8707b88f3d2604da1a47cee05bb3a9fce7528905b5a279a51b44a72a7bfcc9d1769db1813e161dee4387ebefb87805c1bc133b7cf56d549d165356bd3c24b4fd4cbb7a920cca8bd5e43b14557d48c1131a5ec93b3dd64a8d0791d9e50f4f501a5c858f2110418e110a74f7469c1b2ecb54c929d4c08927ff36c4106d696b6758823b235b2a0704d52ad4da79b09c140c266153e7e54ffe69776b2fb97ae8d605c37142c40bd45690f4207e4d3905cc0e69f548c9ec024a2ddddff639d148577de8be4a322d756efa88eaa2e92f2edf13a664924d341a8f95760db3d00329c8f882c24ced3ae07c89e35d51b7e11b0d1e53270bb0523ddde6e95ef8a0c05d2d2b6ba7c6ec169202e6102335e193e302b8c460ed998878abfb1db24e1797d1e7605e13598923a088f38ee8d824d556ebca3d36311acdc402555cc962cdd10936bb4e1ece2e39a6078516e98169fc31fabca7a0edacc689d6a5b4fe2475c0c73ce3d8510bb903260e1e381fc5fa6ea920c8bd2a8ec145eb778f9891d840ba5a3f08b0f6dd3f07e753899c30fe2b565e821fefe44cadf2117d358a2447b0d8ce48f742325b7d358a96536be71ba650ebc36783be0ecd540fb04bdd6a4cc39073df2b9a5ed9b23a4e2cd9ffdbc2967e690188dfc052f21bc49e9c81be87d12b4ea1a770e108d50de901bbb0d046c50a4228254aa095f0cef9d608b0ef50208b0eed938cc7d136207105030c72580f3d5c707b62090a29415e32af9066217272ea6cd498b5c1a81d06314c21406328037ddfa23222cc84c3afbf8cd1c3762faf04352bc37910971404fd446bc4beaa71b98135724118a1dc65ffb937d5310fe1f40c307095f0d3314199773a33bd6e2c89405f48bf12d6651d789e66f1820cdabb6107bdb309b937d8e0f513fef644f96b702e509903ce203c95a10ec4c9f4a71e75c9495038b423de361a86cea19cc2cb4f1f1874e672b2b2e97ee9462090f0639864e95331262a4a560c9948f3c74db29b1d979b7648a7a18536d7f6d8d2fd422f7070756835185866ac588a4daa8094185982d0879768320c5a05a95f1a761a9042efb4e291395bcfe4924fd4df12b131c3520fa984499532946adcfe20cd2fa56d8d44296926284e91509bf8ae72338c28b93974700af04d3ca38f55824ad9f52bd0e6b05f2c7bd8d324b4bfd657855c8cd458baea1bac09386c4444cff7594a870650c1e524230b2a26d865605eee5a016efeedc957effda3d1c145ad66982ad9188bb80c2d1546650750c7e79416c80d7ac102b47bc7798048489afde2f8461a9162997824253047f3d0b0148160aca7c533bdb6710281b42e64ab5eb5194a78d4244e601b67451ddf954d429fa006f25e09ef2a78388c6dca6228f17e3fe61510038f162626435783cba9d6809fb7b50fc1bcfb6231466454b5925c32d04c02e5bac1903df02e8b2ef25e64fb78d7daba63afe4bce774148ae824c62d778d88b6d6c7723cd5d56278b36058f492e4dcd6cb898414f521d9a21cde732aceb5a62adb996f1e18d950a982f9fee6c02750b13965ee93d80751116df1a5884ee24d05f0a74a3faee0198fa1f42bc5241dcdc623ab172dacf6108535f92e0279b9ceb96395073a5b009395aaf3ce8df09add65b351f341d2600351d24d3474f7d123fa7e51f017b0a0b90c4cdcc5db57927d8e87319914fb60ca897c7642e0e323376070cd6f05fec5e74c88c3175010761c7f1ac3c00e263611050c29a932af6cc7908eea6d1e2cefe518c6092cbf7fe7a6c5b0b821aadf6f4c504a1de79e723b5c17bd68d634d7b18b4b9955b37d765c464dcaaab31b9613567d37640e3b7ba9c2abc9b8ad3fbe2ee8b62b4ec7223792f76658bccff7069454442873c81104f5859de761160347deb9e1390544369afd02640ad5f6868e92c2d576a13808199a53fcff7863344ece1634086ca08e72b8d8dad0c11744ca5889437dc482375b6371f12853a22b37ee12ac0bf851194eca88f4e711d6c010135c46cac6c4b6d4d22ded888f4306369c5e7b716720ddcfd1550760b2674eae607713c5696f43d84af2d853505636f0aa30d128cd5ea230bff5a9322b0f38fc998eb902fa2e66a5cdf573b67faf264bd8aee6a7baaa4607ca070939347511a3e7fcc1c2aed75942bf4b02a7a3680f21e60ba2c3fb198e823ef8742241a5193df74d2fd25e4d28080588ed992440022cac1c026a3bf2c1de232751ee2c56381cc320b8511846093b8c82c3b69bee0a5703ebce82d93c99555970e5f192bf4c1438ef3d583f40e8b4042138963b862055a0a8b1df6cad65b82d57850dc251e50508dcf9d58c60b4d6d5f706b10bbb25717263300d3b432ccb759ddbd52e5dc847469dbe7db86ed6d35997f93f8cc939ea38e0eefecedb429e6ed8b028a6ba59954ad0b1345816bb14ef04d6d922770d40b19adfd065256ac351479ec65435951bb014a5fdee04be55231894b9390a28c7823bcb54409faa06f1c3da22ec89f0f9421fa9a33bc840a1362863b549360829e94a149010328b366b45d94e44b03182eb30c63fc967159c1df1386350c53d8f249a1d5cf7529434d61cf0085c59fd02171e5af8f1c82f63d8fbabf8f07622899eb8d01eca1fc6e242d202799005db7e6d26f734d6963a81ab2cf54936440914330b0a7a64f4c785c0958d72e82720124629c630ebe6c2fa7efa9e2272c234db67c5049db7b62f7e1eb3bbbdbfb842fa3df06ac020f84fac21207504412516cf601b65700c971606725d4fc31c4ef15a6635efde36696e339f2cfd775184233eba170149c0d215428706551ada80a5e9509949d22eeb0ff390d1d172b7033c153fadbd3f158b87cb300dea6364874ae86b93e5863f46d3fa2a0c507b4c382a46e0f953854689ce9b7f2a30945ac9ab4848297b833b4fedd6f839ef106a7028f1469d0950628256fec62aa432d6c0a85c3c4f5a6b792c12992a84ce000e6c1aeb6bd6c354960d9a741e0ef483a723762006e291f5950075e35b4223c471cd23733b1dddf91eeca80a4535db48fea257297e0b02eeeeb3da56c2b7acc338240f0e1eff611efae168d566dcb55b9a9d569539031fc4100eb6ca194a369c1330395dfc82e506d8669ae0b80d185a1f037fea20a2cc16da225b6e3ebe2dea684a032dd222dc5df9679f927887e0323e2be5c6b5db8b45640bc9fa099432d28c833a00b04697cd0817b118b78aa4a1ed51dcfe3fc69560b06c859284c8581b6ba223af7d55a3c623400aa0a30fbf3756e3d167100f5739ec9f7fcab49e5164b08b3628f9de44f0e7fd887a88b54305cd1c57a7b9b4ae5547dc617b4aa616b02fd638f4d030b7d9394929abe4264653c79bab88d1210197fe186b41c32c4ffe2827174edabc9cb926173a4afcfdc16e9386d2c2867d9d07d014161ba69169d51d61056d0e3d4c6f7e2fd93d244df132e72f560569889d635cd192f7c6c75fa777570aa806c5c9ec31b9432ad8070eb1474e9d685eb85116aef47ec47eb621c33a38301ae2348233d3b49ac13e64c70d4c4d594927cf3508f8ca6c040e71c95963820d7a70f22fe3120ad893234799be5de84d096b5b8961cdf8b09a52eefb994f433ee5b57ed74f1eda8d6894d2d19fd1faec1d6f34aa175e4b3a8298159f8a6e4130c3d2100d2c9ba994be1e20367f5d587d34ad6c2b00078ae1fc589c77ef3c3d2f0819eeccff1e7b686308122d9d8504b39be1bc01425d29147ad7e24db8c1c132b955ab073d37fc1a83a12d4155f747ffb33779b2f58e4c862d97bfee479631188a1c888ae437b39bf9f197fda0ce1708be825c4eb5bcf8c419b7f44d1be60c224b70e8536ba3f0eb79d6255438988b420f80a81c2f986a8abc2a7c60bf54f0027e1c190c4a8711fbc8551441c6640130372c515be3f22cb10fb9b53223096821a135a309f40922d5cbc2acd57e0d7cbec9d47837ae1465312424a77c6be3451090277f17d6225a0d634455659903b1bc51e79c1330a70d6139e9d7fac08e5928f23d2c10c6268ebbfda4cc45948a33a263f672a523125d188f64c9c01b2ef801686f5fd26321808e96e07433968d05a44864eddc2d190155cd3266c23778dd1cf843a779f77919c8e7a5560dfebc817d703f3eeaa802c613992e5ee2ba6ae90600125b1aa07f04902c524d3cf57e1461d9895461117ec413fb3537752d755737738bebbe1135afa71db91e93f33771d16ab3134f0d6d588dfe23ec6661698421c010d43df3dd7e9c422f8b1e34ad0953e9fe8d7ce81f4b0a62334f5229c6b11fbf5889642660619a2c1f0e98fc561836f62f61861712455a193e54e7c4fe6f1052296ee852b33ded957545dea80dc5f0c97cbda1d7a6a74ae0f482a59e8cb33bb42522b6652eae4ffa1184a2de0e215a662edc4731a0e6042a69f93fa68cc9088fca3e3d8473d5aaabc62ee5956144fd68eacf289eabfe35e6112e919837b82d7084db1a4cfd8e1a86c4ea3b90b890aac23156b50e21f293d0091cb71822592ff9c0493c1dbfd67640a5da51820cbdf5b86bdfcf47065c715bdf265190284a0b73ae525c70e05f0b35f67f8d8652f31cb650c02195c931546a32dc64207c2e0bc73fc8158e7188e8dcb8e258236356ebe5e35361b0bd759fc8652773690a2908ccc0ebd47a889f3ab783f4f3cf12738b7b2323680c69eb1f28688820c02c601f93ccb28717da6b6e5ac20fbaf7fb283784370fd30fed3aa8e0b485027dda030449a6abeb922c705c903a2f349dfb075b9ce0c18e90df690fad3177e02ee6ef19ce602f6cf463ca06a38203017ebfd02519b5b607a11718243b01084656792f3bec57956232f1c5f6ea03fe34bed97e55a8ab67741617263ab232293b19fac40daa9688655da4d37882b0b21980dd5201b4fcef42e0c038e8033a024c787ec218988b08396e9a621ac4374b10bd13d521b52f0afccb3efa4681e8f6ca1fd2152142c89c09aa954cf4c5e4073fdc99cb6cd151458b59552f0ac5f61888679ffc3711d4b806e756a77f31c993ec9239927414ec4fe996e7fc498cecacc56b30440add6f71b02bc34f3705681e7e19cd3722febf38b6ecc25398bb9b527c77fce532371b2463d4fd5a8d0f1dbf97b95eb59acf0281d7805f99e519aa4efb65699a2b2ed89cc8af53bc305bc1a4f750a953086fab18a36eace7e0311de9a6d400042c17846ede3f280a7ab4dda32bbf364fad1722b5bbdc0bab21aba5e4f43b243b2165258d04633957684ae38ab2b101914a21dc1bdc31423f7748d0e36ba5d3201552a2aa76507dc1d4b4d92c4f16329c00c167765ee4f340a281f1f3d73478bd1a0d31ad5bc40969f7ae3cfed770c1b9eea1d75b8b655bfb6932610eec0d5ab113b12dd78802355c2cc8e71427ddbed5ce2cf37d454fe788c09772ce1668b9d120d1cf5f9b0503b193b2378df3b292666df3df011ec6b94271a61fae493f6f92a7308f733d9a12fd7b5596db6a6285d44ea2a0ad64d329ceeff2296a403a730c2a18881d32ebfd93d502d54021471ab8f9473af265b6e42c1fb98c1767a92d5613e29d270a27af9fa8a71f666fe1766d071813b2156e912182a7aa914439c96ab469a576c17510f1617b4536f69c2ded22c1d50d7482cb7fbcde67af59ea734f3742a0e375c7e0210ae4ecff0f818f71b270d49137e46a6ab38afffc1e24cbbd1719870d3e86dc6ff5d1bd5411bb64dd569d593e4c248415f7d59339ff83a749b6a05dd86280bab71b975247de7eb838de56281ca26849ecb8e86cf7bf9a0cae3d93acb75b4af9a46f93c830ccb8c922facef21700878b23cd313fedda6ab91908b77f5142bd60e02deb87c4a2e80b25fc7c51982d1a700fc827a45cf4114305bbb485f8a04e9a4c576365222319432630051ceea8dbcbd0513366fe622b7c15b9c5b9c7697fa7ee201eae4aad0423bb61b96652b3f1e19a5670bad143d6d8b90a9472a2f0177fae07a68dce0172384663be8e4099ec3c154e81a0a2a42363569f8f4030ab4bba6ecede9447835cd97adce8f030e3abf7fe531c9b63a81a5285bf7b45c1f3599a59c5a6ecb70cd6a747b61245e673243b55bf0bf824bc01b754810a19812c082b2252e891d98896999590ce20c9cf78be0e86967f099849b7613ac45084d0c4b7490389500f296efcc38e69fccacd8a9cb3df706bc09c399886164afd22de21676d0fdb93fee1efaf2d363e2ee83295c2bfcdfd4bcce1f0197c9052a92b3ad4032d871562d7c46a0d7deb229244414be672c0dd9a0de1cdd818b8b498ecbf1c786d53e82bb1dfa187d22b4bae3179d56ca4fdd6f8f2d4c81df80726dfcf243829c33d23b77b8d039b0d169c5613ecde639a30eec12dbd364bdca747e8bbf610033c8a02b1f2763aa9a63806d07364d24228d7ba621133ec01c79059f65c54748703fc60eecc810382fbd160a8df4dcd47aa57f640f5ffd74a1f94f9a56156f7c0c6e34fdd6e43a5a0ac46b71474140fb8f16c10aab75678875f19fa82dad79a6cd284c78488aee66c5279d16acb21b8db2df30327783b64335934d7db219dc6846d9199329fa8f8e8a949863b39c03bbf8d83850920f4e87f41bc8f14c5fe3541444af632f5df9866dcae93493fae87809f16ee551bac8c4ddd0bce15ff7be0e573cd46fbac5fc7f4b764f46fd3bb09ab24bbbd9c38ee0f648386d892a90165e2acc2e5057c7aef96648ae013178932d6eab4b60d94555a7f380201c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945860300000000000000af3ce8279bc3e39954527b6314ce47076c97b16c3577c2e7ef014a9f62bb1e248ebb21fb1ca0aea57f0a3df15877c9de9751b1767d705d511fb67eec61dfd42f00" + ].map(|hex| >::from_hex(hex).expect("Block bytes are in valid hex representation")); +} From bf18f0c0a7aa466e04e91fd54fd2e7a5e97b808e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 18 Aug 2024 22:34:58 +0200 Subject: [PATCH 085/230] Introduce Nu7 --- zebra-chain/src/block/commitment.rs | 4 ++-- zebra-chain/src/history_tree.rs | 4 ++-- zebra-chain/src/parameters/network.rs | 2 ++ zebra-chain/src/parameters/network/testnet.rs | 8 ++++++- .../src/parameters/network/tests/vectors.rs | 5 ++-- zebra-chain/src/parameters/network_upgrade.rs | 23 ++++++++++++++++--- zebra-chain/src/primitives/zcash_history.rs | 3 ++- zebra-chain/src/transaction/arbitrary.rs | 2 +- 8 files changed, 39 insertions(+), 12 deletions(-) diff --git a/zebra-chain/src/block/commitment.rs b/zebra-chain/src/block/commitment.rs index 2cb09e75b22..ec4ef7d2616 100644 --- a/zebra-chain/src/block/commitment.rs +++ b/zebra-chain/src/block/commitment.rs @@ -125,7 +125,7 @@ impl Commitment { // NetworkUpgrade::current() returns the latest network upgrade that's activated at the provided height, so // on Regtest for heights above height 0, it could return NU6, and it's possible for the current network upgrade // to be NU6 (or Canopy, or any network upgrade above Heartwood) at the Heartwood activation height. - (Canopy | Nu5 | Nu6, activation_height) + (Canopy | Nu5 | Nu6 | Nu7, activation_height) if height == activation_height && Some(height) == Heartwood.activation_height(network) => { @@ -136,7 +136,7 @@ impl Commitment { } } (Heartwood | Canopy, _) => Ok(ChainHistoryRoot(ChainHistoryMmrRootHash(bytes))), - (Nu5 | Nu6, _) => Ok(ChainHistoryBlockTxAuthCommitment( + (Nu5 | Nu6 | Nu7, _) => Ok(ChainHistoryBlockTxAuthCommitment( ChainHistoryBlockTxAuthCommitmentHash(bytes), )), } diff --git a/zebra-chain/src/history_tree.rs b/zebra-chain/src/history_tree.rs index 91fa3a17628..613bf0616d7 100644 --- a/zebra-chain/src/history_tree.rs +++ b/zebra-chain/src/history_tree.rs @@ -102,7 +102,7 @@ impl NonEmptyHistoryTree { )?; InnerHistoryTree::PreOrchard(tree) } - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => { + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => { let tree = Tree::::new_from_cache( network, network_upgrade, @@ -156,7 +156,7 @@ impl NonEmptyHistoryTree { )?; (InnerHistoryTree::PreOrchard(tree), entry) } - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => { + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => { let (tree, entry) = Tree::::new_from_block( network, block, diff --git a/zebra-chain/src/parameters/network.rs b/zebra-chain/src/parameters/network.rs index e8571340b7d..d119c087dd9 100644 --- a/zebra-chain/src/parameters/network.rs +++ b/zebra-chain/src/parameters/network.rs @@ -152,10 +152,12 @@ impl Network { pub fn new_regtest( nu5_activation_height: Option, nu6_activation_height: Option, + nu7_activation_height: Option, ) -> Self { Self::new_configured_testnet(testnet::Parameters::new_regtest( nu5_activation_height, nu6_activation_height, + nu7_activation_height, )) } diff --git a/zebra-chain/src/parameters/network/testnet.rs b/zebra-chain/src/parameters/network/testnet.rs index 78f7a69a302..7c3ab24477b 100644 --- a/zebra-chain/src/parameters/network/testnet.rs +++ b/zebra-chain/src/parameters/network/testnet.rs @@ -206,6 +206,9 @@ pub struct ConfiguredActivationHeights { /// Activation height for `NU6` network upgrade. #[serde(rename = "NU6")] pub nu6: Option, + /// Activation height for `NU7` network upgrade. + #[serde(rename = "NU7")] + pub nu7: Option, } /// Builder for the [`Parameters`] struct. @@ -336,6 +339,7 @@ impl ParametersBuilder { canopy, nu5, nu6, + nu7, }: ConfiguredActivationHeights, ) -> Self { use NetworkUpgrade::*; @@ -358,6 +362,7 @@ impl ParametersBuilder { .chain(canopy.into_iter().map(|h| (h, Canopy))) .chain(nu5.into_iter().map(|h| (h, Nu5))) .chain(nu6.into_iter().map(|h| (h, Nu6))) + .chain(nu7.into_iter().map(|h| (h, Nu7))) .map(|(h, nu)| (h.try_into().expect("activation height must be valid"), nu)) .collect(); @@ -588,6 +593,7 @@ impl Parameters { pub fn new_regtest( nu5_activation_height: Option, nu6_activation_height: Option, + nu7_activation_height: Option, ) -> Self { #[cfg(any(test, feature = "proptest-impl"))] let nu5_activation_height = nu5_activation_height.or(Some(100)); @@ -647,7 +653,7 @@ impl Parameters { disable_pow, pre_blossom_halving_interval, post_blossom_halving_interval, - } = Self::new_regtest(None, None); + } = Self::new_regtest(None, None, None); self.network_name == network_name && self.genesis_hash == genesis_hash diff --git a/zebra-chain/src/parameters/network/tests/vectors.rs b/zebra-chain/src/parameters/network/tests/vectors.rs index 4282c86844f..ca341184b8c 100644 --- a/zebra-chain/src/parameters/network/tests/vectors.rs +++ b/zebra-chain/src/parameters/network/tests/vectors.rs @@ -109,6 +109,7 @@ fn activates_network_upgrades_correctly() { let expected_activation_height = 1; let network = testnet::Parameters::build() .with_activation_heights(ConfiguredActivationHeights { + // FIXME: nu7? nu6: Some(expected_activation_height), ..Default::default() }) @@ -147,7 +148,7 @@ fn activates_network_upgrades_correctly() { (Network::Mainnet, MAINNET_ACTIVATION_HEIGHTS), (Network::new_default_testnet(), TESTNET_ACTIVATION_HEIGHTS), ( - Network::new_regtest(None, None), + Network::new_regtest(None, None, None), expected_default_regtest_activation_heights, ), ] { @@ -198,7 +199,7 @@ fn check_configured_network_name() { "Mainnet should be displayed as 'Mainnet'" ); assert_eq!( - Network::new_regtest(None, None).to_string(), + Network::new_regtest(None, None, None).to_string(), "Regtest", "Regtest should be displayed as 'Regtest'" ); diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 57165d0c760..c1719451fca 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -15,7 +15,7 @@ use hex::{FromHex, ToHex}; use proptest_derive::Arbitrary; /// A list of network upgrades in the order that they must be activated. -pub const NETWORK_UPGRADES_IN_ORDER: [NetworkUpgrade; 9] = [ +pub const NETWORK_UPGRADES_IN_ORDER: [NetworkUpgrade; 10] = [ Genesis, BeforeOverwinter, Overwinter, @@ -25,6 +25,7 @@ pub const NETWORK_UPGRADES_IN_ORDER: [NetworkUpgrade; 9] = [ Canopy, Nu5, Nu6, + Nu7, ]; /// A Zcash network upgrade. @@ -61,6 +62,8 @@ pub enum NetworkUpgrade { /// The Zcash protocol after the NU6 upgrade. #[serde(rename = "NU6")] Nu6, + /// The Zcash protocol after the NU7 upgrade. + Nu7, } impl fmt::Display for NetworkUpgrade { @@ -90,6 +93,8 @@ pub(super) const MAINNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] (block::Height(1_046_400), Canopy), (block::Height(1_687_104), Nu5), (block::Height(2_726_400), Nu6), + // FIXME: TODO: Add NU7 with a correct value + // (block::Height(2_726_401), Nu7), ]; /// Fake mainnet network upgrade activation heights, used in tests. @@ -104,6 +109,7 @@ const FAKE_MAINNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] = &[ (block::Height(30), Canopy), (block::Height(35), Nu5), (block::Height(40), Nu6), + (block::Height(45), Nu7), ]; /// Testnet network upgrade activation heights. @@ -126,6 +132,8 @@ pub(super) const TESTNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] (block::Height(1_028_500), Canopy), (block::Height(1_842_420), Nu5), (block::Height(2_976_000), Nu6), + // FIXME: TODO: Set a correct value for NU7 + (block::Height(2_942_001), Nu7), ]; /// Fake testnet network upgrade activation heights, used in tests. @@ -140,6 +148,7 @@ const FAKE_TESTNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] = &[ (block::Height(30), Canopy), (block::Height(35), Nu5), (block::Height(40), Nu6), + (block::Height(45), Nu7), ]; /// The Consensus Branch Id, used to bind transactions and blocks to a @@ -216,6 +225,8 @@ pub(crate) const CONSENSUS_BRANCH_IDS: &[(NetworkUpgrade, ConsensusBranchId)] = (Canopy, ConsensusBranchId(0xe9ff75a6)), (Nu5, ConsensusBranchId(0xc2d6d0b4)), (Nu6, ConsensusBranchId(0xc8e71055)), + // FIXME: use a proper value below + (Nu7, ConsensusBranchId(0xc8e71056)), ]; /// The target block spacing before Blossom. @@ -332,7 +343,8 @@ impl NetworkUpgrade { Heartwood => Some(Canopy), Canopy => Some(Nu5), Nu5 => Some(Nu6), - Nu6 => None, + Nu6 => Some(Nu7), + Nu7 => None, } } @@ -409,7 +421,9 @@ impl NetworkUpgrade { pub fn target_spacing(&self) -> Duration { let spacing_seconds = match self { Genesis | BeforeOverwinter | Overwinter | Sapling => PRE_BLOSSOM_POW_TARGET_SPACING, - Blossom | Heartwood | Canopy | Nu5 | Nu6 => POST_BLOSSOM_POW_TARGET_SPACING.into(), + Blossom | Heartwood | Canopy | Nu5 | Nu6 | Nu7 => { + POST_BLOSSOM_POW_TARGET_SPACING.into() + } }; Duration::seconds(spacing_seconds) @@ -531,6 +545,9 @@ impl From for NetworkUpgrade { zcash_protocol::consensus::NetworkUpgrade::Canopy => Self::Canopy, zcash_protocol::consensus::NetworkUpgrade::Nu5 => Self::Nu5, zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, + // FIXME: do we need the following cfg check? + #[cfg(zcash_unstable = "nu7")] + zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu7, } } } diff --git a/zebra-chain/src/primitives/zcash_history.rs b/zebra-chain/src/primitives/zcash_history.rs index e8ca97d63f8..4b52c85d8e8 100644 --- a/zebra-chain/src/primitives/zcash_history.rs +++ b/zebra-chain/src/primitives/zcash_history.rs @@ -276,7 +276,8 @@ impl Version for zcash_history::V1 { NetworkUpgrade::Heartwood | NetworkUpgrade::Canopy | NetworkUpgrade::Nu5 - | NetworkUpgrade::Nu6 => zcash_history::NodeData { + | NetworkUpgrade::Nu6 + | NetworkUpgrade::Nu7 => zcash_history::NodeData { consensus_branch_id: branch_id.into(), subtree_commitment: block_hash, start_time: time, diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index cf4aa7a9552..0541bd7acd3 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -778,7 +778,7 @@ impl Arbitrary for Transaction { NetworkUpgrade::Blossom | NetworkUpgrade::Heartwood | NetworkUpgrade::Canopy => { Self::v4_strategy(ledger_state) } - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => prop_oneof![ + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => prop_oneof![ Self::v4_strategy(ledger_state.clone()), Self::v5_strategy(ledger_state) ] From 99ec8e6356ef041e5967db5197315f77d93f2f7e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 19 Aug 2024 07:51:31 +0200 Subject: [PATCH 086/230] Introduce Nu7 fo other crates of Zebra --- zebra-consensus/src/transaction.rs | 5 +++-- zebra-consensus/src/transaction/tests/prop.rs | 3 ++- zebra-network/src/config.rs | 17 +++++++++++------ zebra-network/src/protocol/external/types.rs | 3 +++ .../types/get_block_template/proposal.rs | 2 +- zebrad/tests/common/configs/v1.9.0.toml | 2 ++ 6 files changed, 22 insertions(+), 10 deletions(-) diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index 1c303003615..192f1413332 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -678,7 +678,8 @@ where | NetworkUpgrade::Heartwood | NetworkUpgrade::Canopy | NetworkUpgrade::Nu5 - | NetworkUpgrade::Nu6 => Ok(()), + | NetworkUpgrade::Nu6 + | NetworkUpgrade::Nu7 => Ok(()), // Does not support V4 transactions NetworkUpgrade::Genesis @@ -766,7 +767,7 @@ where // // Note: Here we verify the transaction version number of the above rule, the group // id is checked in zebra-chain crate, in the transaction serialize. - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => Ok(()), + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => Ok(()), // Does not support V5 transactions NetworkUpgrade::Genesis diff --git a/zebra-consensus/src/transaction/tests/prop.rs b/zebra-consensus/src/transaction/tests/prop.rs index f45b4731de0..3f57bbb74bf 100644 --- a/zebra-consensus/src/transaction/tests/prop.rs +++ b/zebra-consensus/src/transaction/tests/prop.rs @@ -344,7 +344,8 @@ fn sanitize_transaction_version( BeforeOverwinter => 2, Overwinter => 3, Sapling | Blossom | Heartwood | Canopy => 4, - Nu5 | Nu6 => 5, + // FIXME: Use 6 for Nu7 + Nu5 | Nu6 | Nu7 => 5, } }; diff --git a/zebra-network/src/config.rs b/zebra-network/src/config.rs index 8619507fa0d..25e82714ae5 100644 --- a/zebra-network/src/config.rs +++ b/zebra-network/src/config.rs @@ -668,12 +668,17 @@ impl<'de> Deserialize<'de> for Config { (NetworkKind::Mainnet, _) => Network::Mainnet, (NetworkKind::Testnet, None) => Network::new_default_testnet(), (NetworkKind::Regtest, testnet_parameters) => { - let (nu5_activation_height, nu6_activation_height) = testnet_parameters - .and_then(|params| params.activation_heights) - .map(|ConfiguredActivationHeights { nu5, nu6, .. }| (nu5, nu6)) - .unwrap_or_default(); - - Network::new_regtest(nu5_activation_height, nu6_activation_height) + let (nu5_activation_height, nu6_activation_height, nu7_activation_height) = + testnet_parameters + .and_then(|params| params.activation_heights) + .map(|ConfiguredActivationHeights { nu5, nu6, nu7, .. }| (nu5, nu6, nu7)) + .unwrap_or_default(); + + Network::new_regtest( + nu5_activation_height, + nu6_activation_height, + nu7_activation_height, + ) } ( NetworkKind::Testnet, diff --git a/zebra-network/src/protocol/external/types.rs b/zebra-network/src/protocol/external/types.rs index c6241ba4d78..725d8d6d8de 100644 --- a/zebra-network/src/protocol/external/types.rs +++ b/zebra-network/src/protocol/external/types.rs @@ -106,6 +106,9 @@ impl Version { (Mainnet, Nu5) => 170_100, (Testnet(params), Nu6) if params.is_default_testnet() => 170_110, (Mainnet, Nu6) => 170_120, + // FIXME: use proper values for Nu7 + (Testnet(params), Nu7) if params.is_default_testnet() => 170_111, + (Mainnet, Nu7) => 170_121, // It should be fine to reject peers with earlier network protocol versions on custom testnets for now. (Testnet(_), _) => CURRENT_NETWORK_PROTOCOL_VERSION.0, diff --git a/zebra-rpc/src/methods/get_block_template_rpcs/types/get_block_template/proposal.rs b/zebra-rpc/src/methods/get_block_template_rpcs/types/get_block_template/proposal.rs index fc0805b533d..373ba2d7c20 100644 --- a/zebra-rpc/src/methods/get_block_template_rpcs/types/get_block_template/proposal.rs +++ b/zebra-rpc/src/methods/get_block_template_rpcs/types/get_block_template/proposal.rs @@ -217,7 +217,7 @@ pub fn proposal_block_from_template( | NetworkUpgrade::Blossom | NetworkUpgrade::Heartwood => panic!("pre-Canopy block templates not supported"), NetworkUpgrade::Canopy => chain_history_root.bytes_in_serialized_order().into(), - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => { + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => { block_commitments_hash.bytes_in_serialized_order().into() } }; diff --git a/zebrad/tests/common/configs/v1.9.0.toml b/zebrad/tests/common/configs/v1.9.0.toml index 11bcf62107a..93291298f98 100644 --- a/zebrad/tests/common/configs/v1.9.0.toml +++ b/zebrad/tests/common/configs/v1.9.0.toml @@ -73,6 +73,8 @@ Heartwood = 903_800 Canopy = 1_028_500 NU5 = 1_842_420 NU6 = 2_000_000 +# FIXME: Use a proper value for NU7. +NU7 = 2_000_001 [network.testnet_parameters.pre_nu6_funding_streams.height_range] start = 0 From 7e2ca82aa0e2964b0de97986aa38162cbe573f06 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 11:05:59 +0200 Subject: [PATCH 087/230] Fix of new_regtest call (as it additionally needs Nu7 arg now) --- zebrad/tests/common/regtest.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebrad/tests/common/regtest.rs b/zebrad/tests/common/regtest.rs index bf1cba697de..f7b571e5a09 100644 --- a/zebrad/tests/common/regtest.rs +++ b/zebrad/tests/common/regtest.rs @@ -43,7 +43,7 @@ pub(crate) async fn submit_blocks_test() -> Result<()> { let _init_guard = zebra_test::init(); info!("starting regtest submit_blocks test"); - let network = Network::new_regtest(None, None); + let network = Network::new_regtest(None, None, None); let mut config = os_assigned_rpc_port_config(false, &network)?; config.mempool.debug_enable_at_height = Some(0); From 78e035ac70396ca95b88d0901d10fd4f156aea13 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 13:15:21 +0200 Subject: [PATCH 088/230] Fix of new_regtest call (as it additionally needs Nu7 arg now) (2) --- zebra-consensus/src/checkpoint/list/tests.rs | 2 +- zebrad/tests/acceptance.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/zebra-consensus/src/checkpoint/list/tests.rs b/zebra-consensus/src/checkpoint/list/tests.rs index 5a2fe803f3d..698eaf36082 100644 --- a/zebra-consensus/src/checkpoint/list/tests.rs +++ b/zebra-consensus/src/checkpoint/list/tests.rs @@ -237,7 +237,7 @@ fn checkpoint_list_load_hard_coded() -> Result<(), BoxError> { let _ = Mainnet.checkpoint_list(); let _ = Network::new_default_testnet().checkpoint_list(); - let _ = Network::new_regtest(None, None).checkpoint_list(); + let _ = Network::new_regtest(None, None, None).checkpoint_list(); Ok(()) } diff --git a/zebrad/tests/acceptance.rs b/zebrad/tests/acceptance.rs index cd3572ce3f2..c71cede4c3b 100644 --- a/zebrad/tests/acceptance.rs +++ b/zebrad/tests/acceptance.rs @@ -2907,7 +2907,7 @@ async fn fully_synced_rpc_z_getsubtreesbyindex_snapshot_test() -> Result<()> { async fn validate_regtest_genesis_block() { let _init_guard = zebra_test::init(); - let network = Network::new_regtest(None, None); + let network = Network::new_regtest(None, None, None); let state = zebra_state::init_test(&network); let ( block_verifier_router, @@ -2982,7 +2982,7 @@ async fn trusted_chain_sync_handles_forks_correctly() -> Result<()> { use zebra_state::{ReadResponse, Response}; let _init_guard = zebra_test::init(); - let mut config = os_assigned_rpc_port_config(false, &Network::new_regtest(None, None))?; + let mut config = os_assigned_rpc_port_config(false, &Network::new_regtest(None, None, None))?; config.state.ephemeral = false; let network = config.network.network.clone(); From ac491b8041f98603c32259482787dcc1ca3b0567 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 14:46:17 +0200 Subject: [PATCH 089/230] Set Nu7 as a network update for testnet in zebra-chain network tests --- zebra-chain/src/parameters/network/tests/vectors.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/zebra-chain/src/parameters/network/tests/vectors.rs b/zebra-chain/src/parameters/network/tests/vectors.rs index ca341184b8c..6c1426e4e0e 100644 --- a/zebra-chain/src/parameters/network/tests/vectors.rs +++ b/zebra-chain/src/parameters/network/tests/vectors.rs @@ -109,8 +109,7 @@ fn activates_network_upgrades_correctly() { let expected_activation_height = 1; let network = testnet::Parameters::build() .with_activation_heights(ConfiguredActivationHeights { - // FIXME: nu7? - nu6: Some(expected_activation_height), + nu7: Some(expected_activation_height), ..Default::default() }) .to_network(); From 6883488fc2fdafbc5e0bf1706bea6f163e6d8dd6 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 15:14:51 +0200 Subject: [PATCH 090/230] Fix serde names for NU7 --- zebra-chain/src/parameters/network_upgrade.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index c1719451fca..06b99879279 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -63,6 +63,7 @@ pub enum NetworkUpgrade { #[serde(rename = "NU6")] Nu6, /// The Zcash protocol after the NU7 upgrade. + #[serde(rename = "NU7")] Nu7, } From aa373f1d2eeecd54b7f156f1dbca1fa708595dfa Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 17 Oct 2024 15:19:20 +0200 Subject: [PATCH 091/230] Update test snapshot in zebra-rpc to use NU7 --- .../tests/snapshots/get_blockchain_info@testnet_10.snap | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap index 3bea6c01509..9d7ea3f5176 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap @@ -1,5 +1,6 @@ --- source: zebra-rpc/src/methods/tests/snapshot.rs +assertion_line: 562 expression: info --- { @@ -69,6 +70,11 @@ expression: info "name": "NU6", "activationheight": 2976000, "status": "pending" + }, + "c8e71056": { + "name": "NU7", + "activationheight": 2942001, + "status": "pending" } }, "consensus": { From 0fba7f3c31901a36174da4cbb3d58044c18d6413 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 10:20:11 +0100 Subject: [PATCH 092/230] Copy Nu7-related changes from zsa-integration-state --- zebra-chain/src/parameters/network/testnet.rs | 1 + zebra-chain/src/parameters/network_upgrade.rs | 10 ++++++---- zebra-network/src/constants.rs | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/zebra-chain/src/parameters/network/testnet.rs b/zebra-chain/src/parameters/network/testnet.rs index 7c3ab24477b..dc1b4c83e28 100644 --- a/zebra-chain/src/parameters/network/testnet.rs +++ b/zebra-chain/src/parameters/network/testnet.rs @@ -610,6 +610,7 @@ impl Parameters { canopy: Some(1), nu5: nu5_activation_height, nu6: nu6_activation_height, + nu7: nu7_activation_height, ..Default::default() }) .with_halving_interval(PRE_BLOSSOM_REGTEST_HALVING_INTERVAL); diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 06b99879279..1eade62208c 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -227,7 +227,7 @@ pub(crate) const CONSENSUS_BRANCH_IDS: &[(NetworkUpgrade, ConsensusBranchId)] = (Nu5, ConsensusBranchId(0xc2d6d0b4)), (Nu6, ConsensusBranchId(0xc8e71055)), // FIXME: use a proper value below - (Nu7, ConsensusBranchId(0xc8e71056)), + (Nu7, ConsensusBranchId(0x77777777)), ]; /// The target block spacing before Blossom. @@ -545,10 +545,12 @@ impl From for NetworkUpgrade { zcash_protocol::consensus::NetworkUpgrade::Heartwood => Self::Heartwood, zcash_protocol::consensus::NetworkUpgrade::Canopy => Self::Canopy, zcash_protocol::consensus::NetworkUpgrade::Nu5 => Self::Nu5, + // FIXME: remove this cfg + //#[cfg(zcash_unstable = "nu6")] zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, - // FIXME: do we need the following cfg check? - #[cfg(zcash_unstable = "nu7")] - zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu7, + // FIXME: remove this cfg and process Nu7 properly (uses Self::Nu6 for now) + //#[cfg(zcash_unstable = "nu6")] + zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu6, } } } diff --git a/zebra-network/src/constants.rs b/zebra-network/src/constants.rs index a116fd63018..a9ecf68537a 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -403,7 +403,7 @@ lazy_static! { hash_map.insert(NetworkKind::Mainnet, Version::min_specified_for_upgrade(&Mainnet, Nu5)); hash_map.insert(NetworkKind::Testnet, Version::min_specified_for_upgrade(&Network::new_default_testnet(), Nu5)); - hash_map.insert(NetworkKind::Regtest, Version::min_specified_for_upgrade(&Network::new_regtest(None, None), Nu5)); + hash_map.insert(NetworkKind::Regtest, Version::min_specified_for_upgrade(&Network::new_regtest(None, None, None), Nu5)); hash_map }; From b42d84a56ce4d41c84554671864628e16f56f24e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 11:03:41 +0100 Subject: [PATCH 093/230] Uncomment zcash_unstable = nu7 --- zebra-chain/src/parameters/network_upgrade.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 1eade62208c..36f9e297272 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -549,7 +549,7 @@ impl From for NetworkUpgrade { //#[cfg(zcash_unstable = "nu6")] zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, // FIXME: remove this cfg and process Nu7 properly (uses Self::Nu6 for now) - //#[cfg(zcash_unstable = "nu6")] + #[cfg(zcash_unstable = "nu7")] zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu6, } } From d8b48c92a733d5a9c2ed8d755f627026ea607ab5 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 12:05:08 +0100 Subject: [PATCH 094/230] Fix Nu7 constants and add cfg(zcash_unstable ...) attribute according to PR #15 review comments --- zebra-chain/src/parameters/network_upgrade.rs | 19 ++++++++++--------- zebra-network/src/protocol/external/types.rs | 4 ++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 36f9e297272..ae6cf89fd7e 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -94,8 +94,9 @@ pub(super) const MAINNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] (block::Height(1_046_400), Canopy), (block::Height(1_687_104), Nu5), (block::Height(2_726_400), Nu6), - // FIXME: TODO: Add NU7 with a correct value - // (block::Height(2_726_401), Nu7), + // FIXME: TODO: Use a proper value below. + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] + (block::Height(2_726_401), Nu7), ]; /// Fake mainnet network upgrade activation heights, used in tests. @@ -133,7 +134,8 @@ pub(super) const TESTNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] (block::Height(1_028_500), Canopy), (block::Height(1_842_420), Nu5), (block::Height(2_976_000), Nu6), - // FIXME: TODO: Set a correct value for NU7 + // FIXME: TODO: Use a proper value below. + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] (block::Height(2_942_001), Nu7), ]; @@ -226,8 +228,9 @@ pub(crate) const CONSENSUS_BRANCH_IDS: &[(NetworkUpgrade, ConsensusBranchId)] = (Canopy, ConsensusBranchId(0xe9ff75a6)), (Nu5, ConsensusBranchId(0xc2d6d0b4)), (Nu6, ConsensusBranchId(0xc8e71055)), - // FIXME: use a proper value below - (Nu7, ConsensusBranchId(0x77777777)), + // FIXME: TODO: Use a proper value below. + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] + (Nu7, ConsensusBranchId(0x77190AD8)), ]; /// The target block spacing before Blossom. @@ -545,11 +548,9 @@ impl From for NetworkUpgrade { zcash_protocol::consensus::NetworkUpgrade::Heartwood => Self::Heartwood, zcash_protocol::consensus::NetworkUpgrade::Canopy => Self::Canopy, zcash_protocol::consensus::NetworkUpgrade::Nu5 => Self::Nu5, - // FIXME: remove this cfg - //#[cfg(zcash_unstable = "nu6")] zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, - // FIXME: remove this cfg and process Nu7 properly (uses Self::Nu6 for now) - #[cfg(zcash_unstable = "nu7")] + // FIXME: TODO: Use a proper value below. + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu6, } } diff --git a/zebra-network/src/protocol/external/types.rs b/zebra-network/src/protocol/external/types.rs index 725d8d6d8de..652a2fe8776 100644 --- a/zebra-network/src/protocol/external/types.rs +++ b/zebra-network/src/protocol/external/types.rs @@ -107,8 +107,8 @@ impl Version { (Testnet(params), Nu6) if params.is_default_testnet() => 170_110, (Mainnet, Nu6) => 170_120, // FIXME: use proper values for Nu7 - (Testnet(params), Nu7) if params.is_default_testnet() => 170_111, - (Mainnet, Nu7) => 170_121, + (Testnet(params), Nu7) if params.is_default_testnet() => 170_130, + (Mainnet, Nu7) => 170_140, // It should be fine to reject peers with earlier network protocol versions on custom testnets for now. (Testnet(_), _) => CURRENT_NETWORK_PROTOCOL_VERSION.0, From 75f56e7e5615001346b0487919821c773e9db3bb Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 13:32:15 +0100 Subject: [PATCH 095/230] Update network constant values according to PR #15 review comments --- zebra-chain/src/parameters/network_upgrade.rs | 2 +- .../tests/snapshots/get_blockchain_info@testnet_10.snap | 4 ++-- zebrad/tests/common/configs/v1.9.0.toml | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index ae6cf89fd7e..4518a5bfb2a 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -230,7 +230,7 @@ pub(crate) const CONSENSUS_BRANCH_IDS: &[(NetworkUpgrade, ConsensusBranchId)] = (Nu6, ConsensusBranchId(0xc8e71055)), // FIXME: TODO: Use a proper value below. #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] - (Nu7, ConsensusBranchId(0x77190AD8)), + (Nu7, ConsensusBranchId(0x77190ad8)), ]; /// The target block spacing before Blossom. diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap index 9d7ea3f5176..3fb53c4f71c 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap @@ -71,9 +71,9 @@ expression: info "activationheight": 2976000, "status": "pending" }, - "c8e71056": { + "77190ad8": { "name": "NU7", - "activationheight": 2942001, + "activationheight": 2726401, "status": "pending" } }, diff --git a/zebrad/tests/common/configs/v1.9.0.toml b/zebrad/tests/common/configs/v1.9.0.toml index 93291298f98..98a4b14bf67 100644 --- a/zebrad/tests/common/configs/v1.9.0.toml +++ b/zebrad/tests/common/configs/v1.9.0.toml @@ -73,7 +73,6 @@ Heartwood = 903_800 Canopy = 1_028_500 NU5 = 1_842_420 NU6 = 2_000_000 -# FIXME: Use a proper value for NU7. NU7 = 2_000_001 [network.testnet_parameters.pre_nu6_funding_streams.height_range] From bba5fd53e3eaa6e70cc39ef7b62da1218b52585f Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 13:40:07 +0100 Subject: [PATCH 096/230] Update zebra-consensus/src/primitives/halo2/tests.rs Co-authored-by: Arya --- zebra-consensus/src/primitives/halo2/tests.rs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 9b5c367e640..d5768709681 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -88,14 +88,7 @@ fn generate_test_vectors() { rk: <[u8; 32]>::from(a.rk()).into(), cm_x: pallas::Base::from_repr(a.cmx().into()).unwrap(), ephemeral_key: a.encrypted_note().epk_bytes.try_into().unwrap(), - // FIXME: support OrchardZSA too, 580 works for OrchardVanilla only! - // FIXME: consider more "type safe" way to do the following conversion - // (now it goes through &[u8]) - enc_ciphertext: <[u8; 580]>::try_from( - a.encrypted_note().enc_ciphertext.as_ref(), - ) - .unwrap() - .into(), + enc_ciphertext: a.encrypted_note().enc_ciphertext.0.into(), out_ciphertext: a.encrypted_note().out_ciphertext.into(), }; zebra_chain::orchard::shielded_data::AuthorizedAction { From f2b10a52b6464a9bee3e9767d1b3890a2c817b91 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 13:43:24 +0100 Subject: [PATCH 097/230] Add zcash_unstable=nu6 Rust flag to .cargo/config.toml to use nu6 by default --- .cargo/config.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.cargo/config.toml b/.cargo/config.toml index 1368e393fe4..ab7095e21bd 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -3,6 +3,9 @@ # Flags that apply to all Zebra crates and configurations [target.'cfg(all())'] rustflags = [ + # FIXME: Consider removing this line later (it's needed for the ZSA version of librustzcash crates) + "--cfg", "zcash_unstable=\"nu6\"", + # Zebra standard lints for Rust 1.65+ # High-risk code From 611830354713128afc9d8a1ac368ab8966e15ecb Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 13:43:55 +0100 Subject: [PATCH 098/230] Update zebra-chain/src/orchard/note/ciphertexts.rs Co-authored-by: Arya --- zebra-chain/src/orchard/note/ciphertexts.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index b27ffbc53a1..5685633374d 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -1,6 +1,6 @@ //! Encrypted parts of Orchard notes. -// FIXME: make it a generic and add support for OrchardZSA (encrypted tote size ofr it is not 580!) +// FIXME: make it a generic and add support for OrchardZSA (where encrypted note size is not 580!) use std::{fmt, io}; From e97f991c95eb296604f97b5181e180c485ad59c8 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 13:55:18 +0100 Subject: [PATCH 099/230] Use zcash_unstable = nu6 TODO nu7 as nu6 cfg attribute --- zebra-chain/src/parameters/network_upgrade.rs | 6 ++---- zebra-chain/src/primitives/zcash_primitives.rs | 9 +++------ 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 3d35f0526d2..49a76d0a449 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -530,11 +530,9 @@ impl From for NetworkUpgrade { zcash_protocol::consensus::NetworkUpgrade::Heartwood => Self::Heartwood, zcash_protocol::consensus::NetworkUpgrade::Canopy => Self::Canopy, zcash_protocol::consensus::NetworkUpgrade::Nu5 => Self::Nu5, - // FIXME: remove cfg - #[cfg(zcash_unstable = "nu6")] zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, - // FIXME: remove cfg and process Nu7 properly (uses Self::Nu6 for now) - #[cfg(zcash_unstable = "nu6")] + // FIXME: TODO: Use a proper value below. + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu6, } } diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index be90f18ed23..6c7bd634861 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -137,8 +137,7 @@ impl zp_tx::components::orchard::MapAuth for IdentityMap { @@ -157,12 +156,10 @@ impl<'a> zp_tx::Authorization for PrecomputedAuth<'a> { type SaplingAuth = sapling_crypto::bundle::Authorized; type OrchardAuth = orchard::bundle::Authorized; - // FIXME: is this correct? - #[cfg(zcash_unstable = "nu6")] + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] type OrchardZsaAuth = orchard::bundle::Authorized; - // FIXME: is this correct? - #[cfg(zcash_unstable = "nu6")] + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] type IssueAuth = orchard::issuance::Signed; } From a5980e7bec664c020a45008a9d1533200c0a975d Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 14:13:33 +0100 Subject: [PATCH 100/230] Add TODO comment for bridgetree dependency downgrading --- zebra-chain/Cargo.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 0a866a9153c..7b7c19c9acf 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -68,6 +68,7 @@ bitflags = "2.5.0" bitflags-serde-legacy = "0.1.1" blake2b_simd = "1.0.2" blake2s_simd = "1.0.2" +# TODO: Revert to "0.6.0" (or appropriate version) when the ZSA orchard fork is updated. bridgetree = "0.4.0" bs58 = { version = "0.5.1", features = ["check"] } byteorder = "1.5.0" @@ -178,7 +179,3 @@ required-features = ["bench"] [[bench]] name = "redpallas" harness = false - -# FIXME: remove this and all zcash_unstable usage in the code after updating librustzcash -[lints.rust] -unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("nu6"))'] } From a0241d8352fb24f04e3657a98b1f514f9ac907b2 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 15:06:58 +0100 Subject: [PATCH 101/230] Add ENABLE_ZSA orchard flag --- zebra-chain/src/orchard/shielded_data.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index 5347919cd01..f830b3a30ff 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -231,6 +231,8 @@ bitflags! { const ENABLE_SPENDS = 0b00000001; /// Enable creating new non-zero valued Orchard notes. const ENABLE_OUTPUTS = 0b00000010; + /// Enable ZSA transactions. + const ENABLE_ZSA = 0b00000100; } } From f74671ea86df70353519685e8a39c1fa630fe85f Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 15:09:12 +0100 Subject: [PATCH 102/230] Update zebra-consensus/src/primitives/halo2.rs Co-authored-by: Arya --- zebra-consensus/src/primitives/halo2.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index 447d9bbd449..baf1900670f 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -144,14 +144,9 @@ impl From<&zebra_chain::orchard::ShieldedData> for Item { .flags .contains(zebra_chain::orchard::Flags::ENABLE_OUTPUTS); - // FIXME: simplify the flags creation - make `Flags::from_parts` method pub? // FIXME: support OrchardZSA? - let flags = match (enable_spend, enable_output) { - (false, false) => orchard::builder::BundleType::DISABLED.flags(), - (false, true) => orchard::bundle::Flags::SPENDS_DISABLED_WITHOUT_ZSA, - (true, false) => orchard::bundle::Flags::OUTPUTS_DISABLED, - (true, true) => orchard::bundle::Flags::ENABLED_WITHOUT_ZSA, - }; + let flags = orchard::bundle::Flags::from_byte(shielded_data.flags.bits()) + .expect("type should not have unexpected bits"); let instances = shielded_data .actions() From 56a445f7333bac2acbaf90a710aef72873075b00 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 15:15:17 +0100 Subject: [PATCH 103/230] Remove resolved FIXMEs --- zebra-chain/src/orchard/note/ciphertexts.rs | 2 -- zebra-chain/src/primitives/zcash_primitives.rs | 6 ++---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index 5685633374d..8f857cf1444 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -1,7 +1,5 @@ //! Encrypted parts of Orchard notes. -// FIXME: make it a generic and add support for OrchardZSA (where encrypted note size is not 580!) - use std::{fmt, io}; use serde_big_array::BigArray; diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 6c7bd634861..67cef7716a2 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -288,10 +288,8 @@ impl<'a> PrecomputedTxData<'a> { all_prev_outputs: all_previous_outputs, }, }; - let tx_data: zp_tx::TransactionData = alt_tx - .into_data() - // FIXME: do we need to pass another arg values or orchard_zsa and issue instead of IdentityMap? - .map_authorization( + let tx_data: zp_tx::TransactionData = + alt_tx.into_data().map_authorization( f_transparent, IdentityMap, IdentityMap, From 25c5486ec7d045387fd139e29488ed77d4d81699 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 15:17:08 +0100 Subject: [PATCH 104/230] Remove resolved FIXMEs (2) --- zebra-consensus/src/primitives/halo2.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index baf1900670f..c5d264674e4 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -75,7 +75,6 @@ pub type ItemVerifyingKey = VerifyingKey; lazy_static::lazy_static! { /// The halo2 proof verifying key. - // FIXME: support OrchardZSA? pub static ref VERIFYING_KEY: ItemVerifyingKey = ItemVerifyingKey::build::(); } @@ -144,7 +143,6 @@ impl From<&zebra_chain::orchard::ShieldedData> for Item { .flags .contains(zebra_chain::orchard::Flags::ENABLE_OUTPUTS); - // FIXME: support OrchardZSA? let flags = orchard::bundle::Flags::from_byte(shielded_data.flags.bits()) .expect("type should not have unexpected bits"); From 58da3357f7f5b464f31249a2588099f8996ddf72 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 10 Feb 2025 15:29:45 +0100 Subject: [PATCH 105/230] Add zcash_unstable = nu6 cfg in zebra-network/.../types.rs --- zebra-network/src/protocol/external/types.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/zebra-network/src/protocol/external/types.rs b/zebra-network/src/protocol/external/types.rs index 652a2fe8776..45c2278db51 100644 --- a/zebra-network/src/protocol/external/types.rs +++ b/zebra-network/src/protocol/external/types.rs @@ -106,8 +106,9 @@ impl Version { (Mainnet, Nu5) => 170_100, (Testnet(params), Nu6) if params.is_default_testnet() => 170_110, (Mainnet, Nu6) => 170_120, - // FIXME: use proper values for Nu7 + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] (Testnet(params), Nu7) if params.is_default_testnet() => 170_130, + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] (Mainnet, Nu7) => 170_140, // It should be fine to reject peers with earlier network protocol versions on custom testnets for now. From 9a5a5a121110280bd2d7b41319c5286f99cdabbf Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 11 Feb 2025 11:29:09 +0100 Subject: [PATCH 106/230] Fix nu7 activation heights in network_upgrade.rs (nu6 value + 1 does not work - causes a test failure) --- zebra-chain/src/parameters/network_upgrade.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 4518a5bfb2a..fe9eb672c01 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -96,7 +96,7 @@ pub(super) const MAINNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] (block::Height(2_726_400), Nu6), // FIXME: TODO: Use a proper value below. #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] - (block::Height(2_726_401), Nu7), + (block::Height(3_111_000), Nu7), ]; /// Fake mainnet network upgrade activation heights, used in tests. @@ -136,7 +136,7 @@ pub(super) const TESTNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] (block::Height(2_976_000), Nu6), // FIXME: TODO: Use a proper value below. #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] - (block::Height(2_942_001), Nu7), + (block::Height(3_222_000), Nu7), ]; /// Fake testnet network upgrade activation heights, used in tests. @@ -551,7 +551,7 @@ impl From for NetworkUpgrade { zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, // FIXME: TODO: Use a proper value below. #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] - zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu6, + zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu7, } } } From 64d9994bdd02d1d2339469b27c84cd39b6702c57 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 11 Feb 2025 11:44:23 +0100 Subject: [PATCH 107/230] Uncomment RUSTFLAGS/RUSTDOCFLAGS variable settings in ci-basic.yml as it turned out they are still required despite the adding zcash_unstable to .cargo/config.toml --- .github/workflows/ci-basic.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index 226f1528046..c2cde8686bf 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -16,10 +16,9 @@ jobs: ROCKSDB_LIB_DIR: /usr/lib # Use system-installed Snappy library for compression in RocksDB SNAPPY_LIB_DIR: /usr/lib/x86_64-linux-gnu - # FIXME: remove the following commented lines # Enable the `nu6` feature in `zcash_protocol` - #RUSTFLAGS: '--cfg zcash_unstable="nu6"' - #RUSTDOCFLAGS: '--cfg zcash_unstable="nu6"' + RUSTFLAGS: '--cfg zcash_unstable="nu6"' + RUSTDOCFLAGS: '--cfg zcash_unstable="nu6"' steps: - uses: actions/checkout@v4 From cfaac4b1c0f6e86a4e0de40e3be849e0411546ef Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 11 Feb 2025 14:24:57 +0100 Subject: [PATCH 108/230] Update librustzcash and orchard version hashes in Cargo.lock, make a minorr fix in code to sync with that --- Cargo.lock | 22 +++++++++---------- .../src/primitives/zcash_note_encryption.rs | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6690a968028..8b6f2e5b90d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" dependencies = [ "blake2b_simd", "byteorder", @@ -1407,7 +1407,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" dependencies = [ "blake2b_simd", ] @@ -2878,7 +2878,7 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchard" version = "0.8.0" -source = "git+https://github.com/QED-it/orchard?branch=zsa1#a7c02d22a1e2f4310130ae2e7b9813136071bc75" +source = "git+https://github.com/QED-it/orchard?branch=zsa1#3dbdbc52c6e2ffeca015ae6eb80ad7f1c870384d" dependencies = [ "aes", "bitvec", @@ -5814,7 +5814,7 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" version = "0.3.2" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" dependencies = [ "bech32", "bs58", @@ -5826,7 +5826,7 @@ dependencies = [ [[package]] name = "zcash_client_backend" version = "0.12.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" dependencies = [ "base64 0.21.7", "bech32", @@ -5865,7 +5865,7 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" dependencies = [ "byteorder", "nonempty", @@ -5874,7 +5874,7 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" dependencies = [ "blake2b_simd", "byteorder", @@ -5910,7 +5910,7 @@ dependencies = [ [[package]] name = "zcash_keys" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" dependencies = [ "bech32", "blake2b_simd", @@ -5947,7 +5947,7 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.15.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" dependencies = [ "aes", "bip0039", @@ -6008,7 +6008,7 @@ dependencies = [ [[package]] name = "zcash_protocol" version = "0.1.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" dependencies = [ "document-features", "memuse", @@ -6548,7 +6548,7 @@ dependencies = [ [[package]] name = "zip321" version = "0.0.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" dependencies = [ "base64 0.21.7", "nom", diff --git a/zebra-chain/src/primitives/zcash_note_encryption.rs b/zebra-chain/src/primitives/zcash_note_encryption.rs index cbc19afc5d2..20270117003 100644 --- a/zebra-chain/src/primitives/zcash_note_encryption.rs +++ b/zebra-chain/src/primitives/zcash_note_encryption.rs @@ -51,7 +51,7 @@ pub fn decrypts_successfully(transaction: &Transaction, network: &Network, heigh if let Some(bundle) = alt_tx.orchard_bundle() { for act in bundle.actions() { if zcash_note_encryption::try_output_recovery_with_ovk( - &orchard::note_encryption::OrchardDomain::for_action(act), + &orchard::domain::OrchardDomain::for_action(act), &orchard::keys::OutgoingViewingKey::from([0u8; 32]), act, act.cv_net(), From 6b7e6655034a8aab6e544b5443fd97694a85409c Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 11 Feb 2025 14:44:45 +0100 Subject: [PATCH 109/230] Fix consenus test to use the new orchard builder return type --- zebra-consensus/src/primitives/halo2/tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index d5768709681..fc4a7aeba5c 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -63,7 +63,7 @@ fn generate_test_vectors() { .unwrap(); } - let bundle: Bundle<_, i64, OrchardVanilla> = builder.build(rng).unwrap().unwrap().0; + let bundle: Bundle<_, i64, OrchardVanilla> = builder.build(rng).unwrap().0; let bundle = bundle .create_proof(&proving_key, rng) From 8ae0b92bc35c85579f715150b9ebe444b4fd0374 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 12 Feb 2025 15:25:31 +0100 Subject: [PATCH 110/230] Add cfg for CURRENT_NETWORK_PROTOCOL_VERSION constant definition, add FIXMEs for a couple of Nu6 processing cases, add processing of Nu7 --- zebra-chain/src/parameters/network/testnet.rs | 1 + zebra-consensus/src/block/check.rs | 1 + zebra-consensus/src/block/subsidy/funding_streams/tests.rs | 1 + zebra-network/src/constants.rs | 4 ++++ zebra-network/src/protocol/external/types.rs | 6 ++++-- zebra-rpc/src/methods/get_block_template_rpcs.rs | 1 + .../src/methods/tests/snapshot/get_block_template_rpcs.rs | 1 + zebrad/tests/acceptance.rs | 3 +++ 8 files changed, 16 insertions(+), 2 deletions(-) diff --git a/zebra-chain/src/parameters/network/testnet.rs b/zebra-chain/src/parameters/network/testnet.rs index dc1b4c83e28..f6153c8b304 100644 --- a/zebra-chain/src/parameters/network/testnet.rs +++ b/zebra-chain/src/parameters/network/testnet.rs @@ -787,6 +787,7 @@ impl Network { /// Returns post-Canopy funding streams for this network at the provided height pub fn funding_streams(&self, height: Height) -> &FundingStreams { + // FIXME: Would this work after Nu7 activation? if NetworkUpgrade::current(self, height) < NetworkUpgrade::Nu6 { self.pre_nu6_funding_streams() } else { diff --git a/zebra-consensus/src/block/check.rs b/zebra-consensus/src/block/check.rs index 24ef2ba2ed1..eaf193cda10 100644 --- a/zebra-consensus/src/block/check.rs +++ b/zebra-consensus/src/block/check.rs @@ -272,6 +272,7 @@ pub fn miner_fees_are_valid( // input. // // > [NU6 onward] The total output of a coinbase transaction MUST be equal to its total input. + // FIXME: Would this work after Nu7 activation? if if NetworkUpgrade::current(network, height) < NetworkUpgrade::Nu6 { total_output_value > total_input_value } else { diff --git a/zebra-consensus/src/block/subsidy/funding_streams/tests.rs b/zebra-consensus/src/block/subsidy/funding_streams/tests.rs index 91faa923c93..5cb8b3bc5f9 100644 --- a/zebra-consensus/src/block/subsidy/funding_streams/tests.rs +++ b/zebra-consensus/src/block/subsidy/funding_streams/tests.rs @@ -8,6 +8,7 @@ use crate::block::subsidy::general::block_subsidy; use super::*; /// Checks that the Mainnet funding stream values are correct. +// FIXME: Would this work after Nu7 activation? #[test] fn test_funding_stream_values() -> Result<(), Report> { let _init_guard = zebra_test::init(); diff --git a/zebra-network/src/constants.rs b/zebra-network/src/constants.rs index a9ecf68537a..a879a4562bf 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -340,7 +340,10 @@ pub const TIMESTAMP_TRUNCATION_SECONDS: u32 = 30 * 60; /// /// This version of Zebra draws the current network protocol version from /// [ZIP-253](https://zips.z.cash/zip-0253). +#[cfg(not(zcash_unstable = "nu6" /* TODO nu7 */ ))] pub const CURRENT_NETWORK_PROTOCOL_VERSION: Version = Version(170_120); +#[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] +pub const CURRENT_NETWORK_PROTOCOL_VERSION: Version = Version(170_140); /// The default RTT estimate for peer responses. /// @@ -398,6 +401,7 @@ lazy_static! { /// Testnet network upgrades. // TODO: Change `Nu5` to `Nu6` after NU6 activation. // TODO: Move the value here to a field on `testnet::Parameters` (#8367) + // TODO: FIXME: Change `Nu...` to `Nu7` after NU7 activation? pub static ref INITIAL_MIN_NETWORK_PROTOCOL_VERSION: HashMap = { let mut hash_map = HashMap::new(); diff --git a/zebra-network/src/protocol/external/types.rs b/zebra-network/src/protocol/external/types.rs index 45c2278db51..91a1874c024 100644 --- a/zebra-network/src/protocol/external/types.rs +++ b/zebra-network/src/protocol/external/types.rs @@ -209,8 +209,9 @@ mod test { let _init_guard = zebra_test::init(); let highest_network_upgrade = NetworkUpgrade::current(network, block::Height::MAX); - assert!(highest_network_upgrade == Nu6 || highest_network_upgrade == Nu5, - "expected coverage of all network upgrades: add the new network upgrade to the list in this test"); + assert!( + highest_network_upgrade == Nu7 || highest_network_upgrade == Nu6 || highest_network_upgrade == Nu5, + "expected coverage of all network upgrades: add the new network upgrade to the list in this test"); for &network_upgrade in &[ BeforeOverwinter, @@ -221,6 +222,7 @@ mod test { Canopy, Nu5, Nu6, + Nu7, ] { let height = network_upgrade.activation_height(network); if let Some(height) = height { diff --git a/zebra-rpc/src/methods/get_block_template_rpcs.rs b/zebra-rpc/src/methods/get_block_template_rpcs.rs index 2d50552cfec..30661b664f7 100644 --- a/zebra-rpc/src/methods/get_block_template_rpcs.rs +++ b/zebra-rpc/src/methods/get_block_template_rpcs.rs @@ -1234,6 +1234,7 @@ where // Separate the funding streams into deferred and non-deferred streams .partition(|(receiver, _)| matches!(receiver, FundingStreamReceiver::Deferred)); + // FIXME: Would this work after Nu7 activation? let is_nu6 = NetworkUpgrade::current(&network, height) == NetworkUpgrade::Nu6; let [lockbox_total, funding_streams_total]: [std::result::Result< diff --git a/zebra-rpc/src/methods/tests/snapshot/get_block_template_rpcs.rs b/zebra-rpc/src/methods/tests/snapshot/get_block_template_rpcs.rs index 8afb7dd312d..5479f0a9271 100644 --- a/zebra-rpc/src/methods/tests/snapshot/get_block_template_rpcs.rs +++ b/zebra-rpc/src/methods/tests/snapshot/get_block_template_rpcs.rs @@ -149,6 +149,7 @@ pub async fn test_responses( ); if network.is_a_test_network() && !network.is_default_testnet() { + // FIXME: Would this work after Nu7 activation? let fake_future_nu6_block_height = NetworkUpgrade::Nu6.activation_height(network).unwrap().0 + 100_000; let get_block_subsidy = get_block_template_rpc diff --git a/zebrad/tests/acceptance.rs b/zebrad/tests/acceptance.rs index c71cede4c3b..4c717f62eb0 100644 --- a/zebrad/tests/acceptance.rs +++ b/zebrad/tests/acceptance.rs @@ -3362,6 +3362,7 @@ async fn nu6_funding_streams_and_coinbase_balance() -> Result<()> { panic!("this getblocktemplate call without parameters should return the `TemplateMode` variant of the response") }; + // FIXME: Would this work after Nu7 activation? let proposal_block = proposal_block_from_template(&block_template, None, NetworkUpgrade::Nu6)?; let hex_proposal_block = HexData(proposal_block.zcash_serialize_to_vec()?); @@ -3459,6 +3460,7 @@ async fn nu6_funding_streams_and_coinbase_balance() -> Result<()> { ..(*block_template) }; + // FIXME: Would this work after Nu7 activation? let proposal_block = proposal_block_from_template(&block_template, None, NetworkUpgrade::Nu6)?; // Submit the invalid block with an excessive coinbase output value @@ -3502,6 +3504,7 @@ async fn nu6_funding_streams_and_coinbase_balance() -> Result<()> { ..block_template }; + // FIXME: Would this work after Nu7 activation? let proposal_block = proposal_block_from_template(&block_template, None, NetworkUpgrade::Nu6)?; // Submit the invalid block with an excessive coinbase input value From 88b705d8edeae38b6fc2c95fab4c0e7793811a0b Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 12 Feb 2025 15:47:44 +0100 Subject: [PATCH 111/230] Update get_blockchain_info@testnet_10.snap --- .../methods/tests/snapshots/get_blockchain_info@testnet_10.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap index 3fb53c4f71c..14085ee0770 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap @@ -73,7 +73,7 @@ expression: info }, "77190ad8": { "name": "NU7", - "activationheight": 2726401, + "activationheight": 3222000, "status": "pending" } }, From ef3f6da101357e8c9973f7a65617a7547cd3bf82 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 12 Feb 2025 16:06:30 +0100 Subject: [PATCH 112/230] Update get_blockchain_info@mainnet_10.snap --- .../tests/snapshots/get_blockchain_info@mainnet_10.snap | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap index 9986da0ec95..9fadb83a0fb 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap @@ -1,5 +1,6 @@ --- source: zebra-rpc/src/methods/tests/snapshot.rs +assertion_line: 562 expression: info --- { @@ -69,6 +70,11 @@ expression: info "name": "NU6", "activationheight": 2726400, "status": "pending" + }, + "77190ad8": { + "name": "NU7", + "activationheight": 3111000, + "status": "pending" } }, "consensus": { From c277d51cb900d88451da7b7fab2842c688422799 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 12 Feb 2025 15:25:31 +0100 Subject: [PATCH 113/230] Add cfg for CURRENT_NETWORK_PROTOCOL_VERSION constant definition, add FIXMEs for a couple of Nu6 processing cases, add processing of Nu7 --- zebra-chain/src/parameters/network/testnet.rs | 1 + zebra-consensus/src/block/check.rs | 1 + zebra-consensus/src/block/subsidy/funding_streams/tests.rs | 1 + zebra-network/src/constants.rs | 4 ++++ zebra-network/src/protocol/external/types.rs | 6 ++++-- zebra-rpc/src/methods/get_block_template_rpcs.rs | 1 + .../src/methods/tests/snapshot/get_block_template_rpcs.rs | 1 + zebrad/tests/acceptance.rs | 3 +++ 8 files changed, 16 insertions(+), 2 deletions(-) diff --git a/zebra-chain/src/parameters/network/testnet.rs b/zebra-chain/src/parameters/network/testnet.rs index dc1b4c83e28..f6153c8b304 100644 --- a/zebra-chain/src/parameters/network/testnet.rs +++ b/zebra-chain/src/parameters/network/testnet.rs @@ -787,6 +787,7 @@ impl Network { /// Returns post-Canopy funding streams for this network at the provided height pub fn funding_streams(&self, height: Height) -> &FundingStreams { + // FIXME: Would this work after Nu7 activation? if NetworkUpgrade::current(self, height) < NetworkUpgrade::Nu6 { self.pre_nu6_funding_streams() } else { diff --git a/zebra-consensus/src/block/check.rs b/zebra-consensus/src/block/check.rs index 24ef2ba2ed1..eaf193cda10 100644 --- a/zebra-consensus/src/block/check.rs +++ b/zebra-consensus/src/block/check.rs @@ -272,6 +272,7 @@ pub fn miner_fees_are_valid( // input. // // > [NU6 onward] The total output of a coinbase transaction MUST be equal to its total input. + // FIXME: Would this work after Nu7 activation? if if NetworkUpgrade::current(network, height) < NetworkUpgrade::Nu6 { total_output_value > total_input_value } else { diff --git a/zebra-consensus/src/block/subsidy/funding_streams/tests.rs b/zebra-consensus/src/block/subsidy/funding_streams/tests.rs index 91faa923c93..5cb8b3bc5f9 100644 --- a/zebra-consensus/src/block/subsidy/funding_streams/tests.rs +++ b/zebra-consensus/src/block/subsidy/funding_streams/tests.rs @@ -8,6 +8,7 @@ use crate::block::subsidy::general::block_subsidy; use super::*; /// Checks that the Mainnet funding stream values are correct. +// FIXME: Would this work after Nu7 activation? #[test] fn test_funding_stream_values() -> Result<(), Report> { let _init_guard = zebra_test::init(); diff --git a/zebra-network/src/constants.rs b/zebra-network/src/constants.rs index a9ecf68537a..a879a4562bf 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -340,7 +340,10 @@ pub const TIMESTAMP_TRUNCATION_SECONDS: u32 = 30 * 60; /// /// This version of Zebra draws the current network protocol version from /// [ZIP-253](https://zips.z.cash/zip-0253). +#[cfg(not(zcash_unstable = "nu6" /* TODO nu7 */ ))] pub const CURRENT_NETWORK_PROTOCOL_VERSION: Version = Version(170_120); +#[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] +pub const CURRENT_NETWORK_PROTOCOL_VERSION: Version = Version(170_140); /// The default RTT estimate for peer responses. /// @@ -398,6 +401,7 @@ lazy_static! { /// Testnet network upgrades. // TODO: Change `Nu5` to `Nu6` after NU6 activation. // TODO: Move the value here to a field on `testnet::Parameters` (#8367) + // TODO: FIXME: Change `Nu...` to `Nu7` after NU7 activation? pub static ref INITIAL_MIN_NETWORK_PROTOCOL_VERSION: HashMap = { let mut hash_map = HashMap::new(); diff --git a/zebra-network/src/protocol/external/types.rs b/zebra-network/src/protocol/external/types.rs index 45c2278db51..91a1874c024 100644 --- a/zebra-network/src/protocol/external/types.rs +++ b/zebra-network/src/protocol/external/types.rs @@ -209,8 +209,9 @@ mod test { let _init_guard = zebra_test::init(); let highest_network_upgrade = NetworkUpgrade::current(network, block::Height::MAX); - assert!(highest_network_upgrade == Nu6 || highest_network_upgrade == Nu5, - "expected coverage of all network upgrades: add the new network upgrade to the list in this test"); + assert!( + highest_network_upgrade == Nu7 || highest_network_upgrade == Nu6 || highest_network_upgrade == Nu5, + "expected coverage of all network upgrades: add the new network upgrade to the list in this test"); for &network_upgrade in &[ BeforeOverwinter, @@ -221,6 +222,7 @@ mod test { Canopy, Nu5, Nu6, + Nu7, ] { let height = network_upgrade.activation_height(network); if let Some(height) = height { diff --git a/zebra-rpc/src/methods/get_block_template_rpcs.rs b/zebra-rpc/src/methods/get_block_template_rpcs.rs index 2d50552cfec..30661b664f7 100644 --- a/zebra-rpc/src/methods/get_block_template_rpcs.rs +++ b/zebra-rpc/src/methods/get_block_template_rpcs.rs @@ -1234,6 +1234,7 @@ where // Separate the funding streams into deferred and non-deferred streams .partition(|(receiver, _)| matches!(receiver, FundingStreamReceiver::Deferred)); + // FIXME: Would this work after Nu7 activation? let is_nu6 = NetworkUpgrade::current(&network, height) == NetworkUpgrade::Nu6; let [lockbox_total, funding_streams_total]: [std::result::Result< diff --git a/zebra-rpc/src/methods/tests/snapshot/get_block_template_rpcs.rs b/zebra-rpc/src/methods/tests/snapshot/get_block_template_rpcs.rs index 8afb7dd312d..5479f0a9271 100644 --- a/zebra-rpc/src/methods/tests/snapshot/get_block_template_rpcs.rs +++ b/zebra-rpc/src/methods/tests/snapshot/get_block_template_rpcs.rs @@ -149,6 +149,7 @@ pub async fn test_responses( ); if network.is_a_test_network() && !network.is_default_testnet() { + // FIXME: Would this work after Nu7 activation? let fake_future_nu6_block_height = NetworkUpgrade::Nu6.activation_height(network).unwrap().0 + 100_000; let get_block_subsidy = get_block_template_rpc diff --git a/zebrad/tests/acceptance.rs b/zebrad/tests/acceptance.rs index c71cede4c3b..4c717f62eb0 100644 --- a/zebrad/tests/acceptance.rs +++ b/zebrad/tests/acceptance.rs @@ -3362,6 +3362,7 @@ async fn nu6_funding_streams_and_coinbase_balance() -> Result<()> { panic!("this getblocktemplate call without parameters should return the `TemplateMode` variant of the response") }; + // FIXME: Would this work after Nu7 activation? let proposal_block = proposal_block_from_template(&block_template, None, NetworkUpgrade::Nu6)?; let hex_proposal_block = HexData(proposal_block.zcash_serialize_to_vec()?); @@ -3459,6 +3460,7 @@ async fn nu6_funding_streams_and_coinbase_balance() -> Result<()> { ..(*block_template) }; + // FIXME: Would this work after Nu7 activation? let proposal_block = proposal_block_from_template(&block_template, None, NetworkUpgrade::Nu6)?; // Submit the invalid block with an excessive coinbase output value @@ -3502,6 +3504,7 @@ async fn nu6_funding_streams_and_coinbase_balance() -> Result<()> { ..block_template }; + // FIXME: Would this work after Nu7 activation? let proposal_block = proposal_block_from_template(&block_template, None, NetworkUpgrade::Nu6)?; // Submit the invalid block with an excessive coinbase input value From c48c753c7ac2e39764ec9263e6afccaaba0c4bc2 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 12 Feb 2025 15:47:44 +0100 Subject: [PATCH 114/230] Update get_blockchain_info@testnet_10.snap --- .../methods/tests/snapshots/get_blockchain_info@testnet_10.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap index 3fb53c4f71c..14085ee0770 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap @@ -73,7 +73,7 @@ expression: info }, "77190ad8": { "name": "NU7", - "activationheight": 2726401, + "activationheight": 3222000, "status": "pending" } }, From 152d8935682bdc1630024e3cb1fe047137bef897 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 12 Feb 2025 16:06:30 +0100 Subject: [PATCH 115/230] Update get_blockchain_info@mainnet_10.snap --- .../tests/snapshots/get_blockchain_info@mainnet_10.snap | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap index 9986da0ec95..9fadb83a0fb 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap @@ -1,5 +1,6 @@ --- source: zebra-rpc/src/methods/tests/snapshot.rs +assertion_line: 562 expression: info --- { @@ -69,6 +70,11 @@ expression: info "name": "NU6", "activationheight": 2726400, "status": "pending" + }, + "77190ad8": { + "name": "NU7", + "activationheight": 3111000, + "status": "pending" } }, "consensus": { From 225dac1a303adc30ddd43446cd3d96767d6aa2ca Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 11:10:13 +0100 Subject: [PATCH 116/230] Minor fix to align with orchard changes --- zebra-chain/src/orchard/orchard_flavor_ext.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index f8ce25d0ed5..ea8931130a1 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -7,7 +7,7 @@ use serde::{de::DeserializeOwned, Serialize}; #[cfg(any(test, feature = "proptest-impl"))] use proptest_derive::Arbitrary; -use orchard::{note_encryption::OrchardDomainCommon, orchard_flavor}; +use orchard::{domain::OrchardDomainCommon, orchard_flavor}; use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize}; From a1fc48eb77a01569765c68bb064a6ec35534a50d Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 13:24:37 +0100 Subject: [PATCH 117/230] Update OrchardZSA test vectors to use the correct consensus branch id value --- .../src/orchard_zsa/tests/vectors/blocks.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs index 324f270c04d..d715755509b 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs @@ -110,8 +110,8 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x64, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x55, 0x10, 0xe7, + 0xc8, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x64, 0x40, 0xa8, 0x86, 0x5d, 0x61, 0x39, 0xb3, 0x39, 0x62, 0x94, 0xee, 0x42, 0xc5, 0xa6, 0x0b, 0x63, 0x57, 0xca, 0x65, 0x8b, 0xa6, 0x76, 0xf2, 0xd6, 0xda, 0x8e, 0x00, 0xcf, 0x60, 0xe8, 0x33, 0xa4, 0x55, 0xec, 0x7c, 0x99, 0x0f, 0xda, 0xd2, 0x46, 0xc0, 0x5b, 0x4a, 0x8f, 0xe5, @@ -860,8 +860,8 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x55, 0x10, 0xe7, + 0xc8, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, 0x6a, 0xc2, 0x2a, 0x5e, 0xe1, 0xc1, 0x53, 0x80, 0x98, 0x98, 0x9d, 0x4e, 0xe3, 0x6a, 0x88, 0xb9, 0x25, 0xea, 0xdd, 0xc9, 0x0b, 0x5c, 0x14, 0xbb, 0xc9, 0xf1, 0x0a, 0xa0, 0x22, 0x46, 0x2f, 0xd7, 0xfb, 0xb2, 0xf4, 0xca, 0x12, 0x4b, 0xc6, 0xfe, 0x41, 0xc0, 0x35, 0x88, 0x21, @@ -1594,8 +1594,8 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x55, 0x10, 0xe7, + 0xc8, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0xca, 0xe4, 0xbf, 0xa4, 0xba, 0xfc, 0x37, 0x22, 0xd8, 0xf9, 0x3c, 0x6c, 0xfb, 0xcc, 0xba, 0xd7, 0x94, 0x44, 0x58, 0x85, 0x10, 0xba, 0x7a, 0x9d, 0x8e, 0xa3, 0x90, 0x6e, 0x7f, 0xdc, 0xa8, 0x7a, 0x06, 0x13, 0x03, 0x39, 0x58, 0x9a, 0x79, 0x4c, 0x5a, 0x25, 0x5a, 0x2c, 0xd2, @@ -2221,7 +2221,7 @@ pub const BLOCKS: [&[u8]; 4] = [ 0xb8, 0x40, 0xa0, 0xd0, 0x5b, 0x7e, 0x8e, 0x35, 0xfd, 0x0a, 0xf3, 0x08, 0xe3, 0x37, 0xfa, 0xd8, 0xb9, 0x08, 0x94, 0x79, 0xdd, 0x35, 0x73, 0x05, 0x8e, 0x64, 0x48, 0x82, 0xe9, 0xb0, 0x49, 0x1d, 0x06, 0x89, 0x26, 0xc4, 0x8c, 0x06, 0x52, 0xad, 0xd9, 0x32, 0x00, 0x06, 0x00, - 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x55, 0x10, 0xe7, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x56, 0x90, 0xe6, 0xfe, 0xfc, 0x61, 0x4c, 0xd6, 0x40, 0xc0, 0xfc, 0x9c, 0x69, 0x91, 0x0d, 0x55, 0xd2, 0x0f, 0x25, 0xad, 0xfe, 0x3e, 0x4c, 0x9c, 0x06, 0x96, 0x9a, 0xe3, 0x2a, 0x51, 0xbe, 0x9a, 0x7a, 0x06, 0x13, 0x03, 0x39, From 015f8b3dd2d37d7a03a65d31348007dbf5f9f27b Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 15:14:53 +0100 Subject: [PATCH 118/230] Revert "Update OrchardZSA test vectors to use the correct consensus branch id value" This reverts commit a1fc48eb77a01569765c68bb064a6ec35534a50d. --- .../src/orchard_zsa/tests/vectors/blocks.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs index d715755509b..324f270c04d 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs @@ -110,8 +110,8 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x55, 0x10, 0xe7, - 0xc8, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x64, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x64, 0x40, 0xa8, 0x86, 0x5d, 0x61, 0x39, 0xb3, 0x39, 0x62, 0x94, 0xee, 0x42, 0xc5, 0xa6, 0x0b, 0x63, 0x57, 0xca, 0x65, 0x8b, 0xa6, 0x76, 0xf2, 0xd6, 0xda, 0x8e, 0x00, 0xcf, 0x60, 0xe8, 0x33, 0xa4, 0x55, 0xec, 0x7c, 0x99, 0x0f, 0xda, 0xd2, 0x46, 0xc0, 0x5b, 0x4a, 0x8f, 0xe5, @@ -860,8 +860,8 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x55, 0x10, 0xe7, - 0xc8, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, 0x6a, 0xc2, 0x2a, 0x5e, 0xe1, 0xc1, 0x53, 0x80, 0x98, 0x98, 0x9d, 0x4e, 0xe3, 0x6a, 0x88, 0xb9, 0x25, 0xea, 0xdd, 0xc9, 0x0b, 0x5c, 0x14, 0xbb, 0xc9, 0xf1, 0x0a, 0xa0, 0x22, 0x46, 0x2f, 0xd7, 0xfb, 0xb2, 0xf4, 0xca, 0x12, 0x4b, 0xc6, 0xfe, 0x41, 0xc0, 0x35, 0x88, 0x21, @@ -1594,8 +1594,8 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x55, 0x10, 0xe7, - 0xc8, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0xca, 0xe4, 0xbf, 0xa4, 0xba, 0xfc, 0x37, 0x22, 0xd8, 0xf9, 0x3c, 0x6c, 0xfb, 0xcc, 0xba, 0xd7, 0x94, 0x44, 0x58, 0x85, 0x10, 0xba, 0x7a, 0x9d, 0x8e, 0xa3, 0x90, 0x6e, 0x7f, 0xdc, 0xa8, 0x7a, 0x06, 0x13, 0x03, 0x39, 0x58, 0x9a, 0x79, 0x4c, 0x5a, 0x25, 0x5a, 0x2c, 0xd2, @@ -2221,7 +2221,7 @@ pub const BLOCKS: [&[u8]; 4] = [ 0xb8, 0x40, 0xa0, 0xd0, 0x5b, 0x7e, 0x8e, 0x35, 0xfd, 0x0a, 0xf3, 0x08, 0xe3, 0x37, 0xfa, 0xd8, 0xb9, 0x08, 0x94, 0x79, 0xdd, 0x35, 0x73, 0x05, 0x8e, 0x64, 0x48, 0x82, 0xe9, 0xb0, 0x49, 0x1d, 0x06, 0x89, 0x26, 0xc4, 0x8c, 0x06, 0x52, 0xad, 0xd9, 0x32, 0x00, 0x06, 0x00, - 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x55, 0x10, 0xe7, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x56, 0x90, 0xe6, 0xfe, 0xfc, 0x61, 0x4c, 0xd6, 0x40, 0xc0, 0xfc, 0x9c, 0x69, 0x91, 0x0d, 0x55, 0xd2, 0x0f, 0x25, 0xad, 0xfe, 0x3e, 0x4c, 0x9c, 0x06, 0x96, 0x9a, 0xe3, 0x2a, 0x51, 0xbe, 0x9a, 0x7a, 0x06, 0x13, 0x03, 0x39, From 10f37407b7348a9ee894c6c486c3b01b66a18c93 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 15:17:34 +0100 Subject: [PATCH 119/230] Update librustzcash commit in Cargo.lock --- Cargo.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8b6f2e5b90d..c700474b30a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "blake2b_simd", "byteorder", @@ -1407,7 +1407,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "blake2b_simd", ] @@ -5814,7 +5814,7 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" version = "0.3.2" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "bech32", "bs58", @@ -5826,7 +5826,7 @@ dependencies = [ [[package]] name = "zcash_client_backend" version = "0.12.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "base64 0.21.7", "bech32", @@ -5865,7 +5865,7 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "byteorder", "nonempty", @@ -5874,7 +5874,7 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "blake2b_simd", "byteorder", @@ -5910,7 +5910,7 @@ dependencies = [ [[package]] name = "zcash_keys" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "bech32", "blake2b_simd", @@ -5947,7 +5947,7 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.15.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "aes", "bip0039", @@ -6008,7 +6008,7 @@ dependencies = [ [[package]] name = "zcash_protocol" version = "0.1.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "document-features", "memuse", @@ -6548,7 +6548,7 @@ dependencies = [ [[package]] name = "zip321" version = "0.0.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#5ea95ea2bfa55ccd8d39c1be39eb4978ec338045" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "base64 0.21.7", "nom", From 164e5de4e89401e13ce54a144005f5d95adfb282 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 15:20:58 +0100 Subject: [PATCH 120/230] Change TX_V6_VERSION_GROUP_ID value back to a temporary 0x7777_7777, to aling with the one used in librustzcash --- zebra-chain/src/parameters/transaction.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/parameters/transaction.rs b/zebra-chain/src/parameters/transaction.rs index 77b88abca44..0eb6f04ff66 100644 --- a/zebra-chain/src/parameters/transaction.rs +++ b/zebra-chain/src/parameters/transaction.rs @@ -17,4 +17,4 @@ pub const TX_V5_VERSION_GROUP_ID: u32 = 0x26A7_270A; /// Orchard transactions must use transaction version 5 and this version /// group ID. // FIXME: use a proper value! -pub const TX_V6_VERSION_GROUP_ID: u32 = 0x26A7_270B; +pub const TX_V6_VERSION_GROUP_ID: u32 = 0x7777_7777; From 998a2c7046a257b8a34d6d2ac10557e34ef135f6 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 15:54:58 +0100 Subject: [PATCH 121/230] Update zebra-chain to sync with the updated librustzcash (zcash_primitives) interface (OrchardBundle enum etc.) --- .../src/primitives/zcash_note_encryption.rs | 44 ++++++++++++++----- .../src/primitives/zcash_primitives.rs | 14 ++---- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/zebra-chain/src/primitives/zcash_note_encryption.rs b/zebra-chain/src/primitives/zcash_note_encryption.rs index 20270117003..1b6673d5e11 100644 --- a/zebra-chain/src/primitives/zcash_note_encryption.rs +++ b/zebra-chain/src/primitives/zcash_note_encryption.rs @@ -8,6 +8,33 @@ use crate::{ transaction::Transaction, }; +use orchard::{ + bundle::{Authorization, Bundle}, + domain::OrchardDomainCommon, +}; + +use zcash_primitives::transaction::OrchardBundle; + +fn orchard_bundle_decrypts_successfully( + bundle: &Bundle, +) -> bool { + for act in bundle.actions() { + if zcash_note_encryption::try_output_recovery_with_ovk( + &orchard::domain::OrchardDomain::for_action(act), + &orchard::keys::OutgoingViewingKey::from([0u8; 32]), + act, + act.cv_net(), + &act.encrypted_note().out_ciphertext, + ) + .is_none() + { + return false; + } + } + + true +} + /// Returns true if all Sapling or Orchard outputs, if any, decrypt successfully with /// an all-zeroes outgoing viewing key. /// @@ -49,18 +76,11 @@ pub fn decrypts_successfully(transaction: &Transaction, network: &Network, heigh } if let Some(bundle) = alt_tx.orchard_bundle() { - for act in bundle.actions() { - if zcash_note_encryption::try_output_recovery_with_ovk( - &orchard::domain::OrchardDomain::for_action(act), - &orchard::keys::OutgoingViewingKey::from([0u8; 32]), - act, - act.cv_net(), - &act.encrypted_note().out_ciphertext, - ) - .is_none() - { - return false; - } + if !match bundle { + OrchardBundle::OrchardVanilla(bundle) => orchard_bundle_decrypts_successfully(bundle), + OrchardBundle::OrchardZSA(bundle) => orchard_bundle_decrypts_successfully(bundle), + } { + return false; } } diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 67cef7716a2..9aba76215f2 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -156,9 +156,6 @@ impl<'a> zp_tx::Authorization for PrecomputedAuth<'a> { type SaplingAuth = sapling_crypto::bundle::Authorized; type OrchardAuth = orchard::bundle::Authorized; - #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] - type OrchardZsaAuth = orchard::bundle::Authorized; - #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] type IssueAuth = orchard::issuance::Signed; } @@ -288,14 +285,9 @@ impl<'a> PrecomputedTxData<'a> { all_prev_outputs: all_previous_outputs, }, }; - let tx_data: zp_tx::TransactionData = - alt_tx.into_data().map_authorization( - f_transparent, - IdentityMap, - IdentityMap, - IdentityMap, - IdentityMap, - ); + let tx_data: zp_tx::TransactionData = alt_tx + .into_data() + .map_authorization(f_transparent, IdentityMap, IdentityMap, IdentityMap); PrecomputedTxData { tx_data, From 90c884761e71b29c8796fdb7fdf7fb649396de2e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 15:56:16 +0100 Subject: [PATCH 122/230] Removed previousely added unused variables --- zebra-consensus/src/primitives/halo2.rs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index c5d264674e4..bddce6f7c01 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -136,13 +136,6 @@ impl From<&zebra_chain::orchard::ShieldedData> for Item { let anchor = tree::Anchor::from_bytes(shielded_data.shared_anchor.into()).unwrap(); - let enable_spend = shielded_data - .flags - .contains(zebra_chain::orchard::Flags::ENABLE_SPENDS); - let enable_output = shielded_data - .flags - .contains(zebra_chain::orchard::Flags::ENABLE_OUTPUTS); - let flags = orchard::bundle::Flags::from_byte(shielded_data.flags.bits()) .expect("type should not have unexpected bits"); From 642776f67cb5309df5536f7c7d6d4cb913dd6205 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 16:01:38 +0100 Subject: [PATCH 123/230] Add lints.rust/unexpected_cfgs into zebra-chain Cargo.toml to avoid compiler warnings about zcash_unstable cfg --- zebra-chain/Cargo.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 7b7c19c9acf..25d4e2bea4e 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -179,3 +179,6 @@ required-features = ["bench"] [[bench]] name = "redpallas" harness = false + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("nu6"))'] } From 9f80f6d1a049d824452331cc2e1613070d2a4af9 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 16:02:54 +0100 Subject: [PATCH 124/230] Pin Rust version to 1.82.0 by adding rust-toolchain.toml file, to avoid compiler warnings for new compiler versions --- rust-toolchain.toml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 rust-toolchain.toml diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 00000000000..30e035b8e74 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.82.0" +components = [ "clippy", "rustfmt" ] From 526e92d0f377395f77a1806cfed9abc2bbf3522a Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 16:04:01 +0100 Subject: [PATCH 125/230] Pin Rust version to 1.82.0 by adding rust-toolchain.toml file, to avoid compiler warnings for new compiler versions (2) --- rust-toolchain.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 30e035b8e74..8b6ca9a2b78 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,4 @@ +# FIXME: This file does not exist in the original Zebra repo - consider removing it before the final merge. [toolchain] channel = "1.82.0" components = [ "clippy", "rustfmt" ] From d8dfb7d384ae3718cd26d42dc71da29bc8279132 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 08:59:47 +0100 Subject: [PATCH 126/230] Add lints.rust/unexpected_cfgs into zebra-network Cargo.toml to avoid compiler warnings about zcash_unstable cfg --- zebra-network/Cargo.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index 77eb565c0d1..aca4b02bd6c 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -95,3 +95,6 @@ toml = "0.8.19" zebra-chain = { path = "../zebra-chain", features = ["proptest-impl"] } zebra-test = { path = "../zebra-test/" } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("nu6"))'] } From 7b590548b7a1a4700a60d5245c4176c2078227df Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 09:02:30 +0100 Subject: [PATCH 127/230] Change a way of const CURRENT_NETWORK_PROTOCOL_VERSION with cfg definition to avoid a need of the doc duplication --- zebra-network/src/constants.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/zebra-network/src/constants.rs b/zebra-network/src/constants.rs index a879a4562bf..cc44c868da0 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -340,10 +340,16 @@ pub const TIMESTAMP_TRUNCATION_SECONDS: u32 = 30 * 60; /// /// This version of Zebra draws the current network protocol version from /// [ZIP-253](https://zips.z.cash/zip-0253). -#[cfg(not(zcash_unstable = "nu6" /* TODO nu7 */ ))] -pub const CURRENT_NETWORK_PROTOCOL_VERSION: Version = Version(170_120); -#[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] -pub const CURRENT_NETWORK_PROTOCOL_VERSION: Version = Version(170_140); +pub const CURRENT_NETWORK_PROTOCOL_VERSION: Version = { + #[cfg(not(zcash_unstable = "nu6" /* TODO nu7 */))] + { + Version(170_120) + } + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */)] + { + Version(170_140) + } +}; /// The default RTT estimate for peer responses. /// From 0dd30f3f365ff0d8ac36000480632fe0a146b02d Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 10:31:46 +0100 Subject: [PATCH 128/230] Update OrchardZSA test vectors to use new TX_V6_VERSION_GROUP_ID and consensus group id --- zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs | 8 ++++---- zebra-test/src/vectors/zsa.rs | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs index 324f270c04d..f62f401209d 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs @@ -110,7 +110,7 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x64, 0x40, 0xa8, 0x86, 0x5d, 0x61, 0x39, 0xb3, 0x39, 0x62, 0x94, 0xee, 0x42, 0xc5, 0xa6, 0x0b, 0x63, 0x57, 0xca, 0x65, 0x8b, 0xa6, 0x76, 0xf2, 0xd6, 0xda, 0x8e, 0x00, 0xcf, 0x60, 0xe8, @@ -860,7 +860,7 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, 0x6a, 0xc2, 0x2a, 0x5e, 0xe1, 0xc1, 0x53, 0x80, 0x98, 0x98, 0x9d, 0x4e, 0xe3, 0x6a, 0x88, 0xb9, 0x25, 0xea, 0xdd, 0xc9, 0x0b, 0x5c, 0x14, 0xbb, 0xc9, 0xf1, 0x0a, 0xa0, 0x22, 0x46, @@ -1594,7 +1594,7 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0xca, 0xe4, 0xbf, 0xa4, 0xba, 0xfc, 0x37, 0x22, 0xd8, 0xf9, 0x3c, 0x6c, 0xfb, 0xcc, 0xba, 0xd7, 0x94, 0x44, 0x58, 0x85, 0x10, 0xba, 0x7a, 0x9d, 0x8e, 0xa3, 0x90, 0x6e, 0x7f, 0xdc, @@ -2221,7 +2221,7 @@ pub const BLOCKS: [&[u8]; 4] = [ 0xb8, 0x40, 0xa0, 0xd0, 0x5b, 0x7e, 0x8e, 0x35, 0xfd, 0x0a, 0xf3, 0x08, 0xe3, 0x37, 0xfa, 0xd8, 0xb9, 0x08, 0x94, 0x79, 0xdd, 0x35, 0x73, 0x05, 0x8e, 0x64, 0x48, 0x82, 0xe9, 0xb0, 0x49, 0x1d, 0x06, 0x89, 0x26, 0xc4, 0x8c, 0x06, 0x52, 0xad, 0xd9, 0x32, 0x00, 0x06, 0x00, - 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x56, 0x90, 0xe6, 0xfe, 0xfc, 0x61, 0x4c, 0xd6, 0x40, 0xc0, 0xfc, 0x9c, 0x69, 0x91, 0x0d, 0x55, 0xd2, 0x0f, 0x25, 0xad, 0xfe, 0x3e, 0x4c, 0x9c, 0x06, 0x96, 0x9a, 0xe3, 0x2a, 0x51, 0xbe, 0x9a, 0x7a, 0x06, 0x13, 0x03, 0x39, diff --git a/zebra-test/src/vectors/zsa.rs b/zebra-test/src/vectors/zsa.rs index f4caefb4afd..61e9183774b 100644 --- a/zebra-test/src/vectors/zsa.rs +++ b/zebra-test/src/vectors/zsa.rs @@ -8,8 +8,8 @@ use lazy_static::lazy_static; lazy_static! { pub static ref ZSA_WORKFLOW_BLOCKS: [Vec; 3] = [ - "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f02c71c7ffa660028b5f3bc0b0bedf9b76a829ce8f2ef82c2c69ab6948bc9fd00a80000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000001000000000000000000000000000006000080f8694a1277777777000000001c1d1c000000000002000adfbfe7961473dc7f8ffd411b3e2eeb005a37342e6081d5121f18f5648c8480adb28949796e09a38118152905839afc125618be1fdaf921d188488b607f2544e12a249ab310f17a9349bfe463c7de09d2b822ab0efa88b6d32f77d7c38793192b944aeec0ca94918390dbe44c50e706407692e348ed9b7cedd231941a673722ef1e7e74888672b2b2d08c97a9ac114b7039feffbeb8bbe197db4a0bca8d395cd40551c1d5d788acc2ad09eddda73a5948de2d9e2d82aa638dad6f5dc61042d6850b926d944f29f17e96eca84684252c97ce4382f2642e54208929a4b37954e8e386c677f2aee3e8f4f4aee9f76a87d868fa2210445c09b927b842485918c869a23be8213ae21937a8ca83406fab193cecfd3fcf3b1c698e8057a6c87c059dc6f4ccb30af8e608a7c04088cf3ca32ab20cd780da9443606b092c8b5d85c9a76433c0993e3eee385884ce1f3890abf95462c49bed01a3a5c09df98cb7082e9770bdee196f8b968003f5cc76d82bf575f01da3ed40e44b3b15721f4a9dd5ecd14fb71a42b24ccb7d7e6a3bc10b53ebcb7e0ec6ace91dbc19801eff0c76ec0c10602bca2cfce9f3e79536a25143d351ed2894b4eb4e549960f212f0787057ab1ac8b249c3d3ff8652cb3fb17d7656d50c5e6833b056feb26855332f60e7b8d1ebba32df63d8561fd7d209a1e5adb9853bb5b5d6a41bf1ec52d348023e945bc02e8d6ae8d5b6c7a9225991cca4aa0b41861f237b3bf545220799f152767c7fdcc693a989057e119c18a96007c69c8fe5751a4258ec3f0f99c1aea8dbbaf4df9953ccf6b42cf2f4265011ca89ec7b9ef2c6e9410886291054f50db6310b225ddf32f9db26416da6ca9ef6e3198db36ebab9802517aeaf628d41358fd141dda8fab32fcded20707abc3d00191e0b2690a1e2fa044814191323155fb21e3da8798e0bafef8c2da4c73f967504f51e716cf87117f90fd028df17f3ea26aebeda7f5b3192cd5f4855044e9a41bbfb817074ca1680a458338b191a9619dd337bd0335cb1896d79c79cce10e454b58fecb1cf10da9f53129bbf3cae2bde82007ed98505f16922b6ae53a3a709c2e01ff7e529925d6069807c06bb0c73abf8d463b2a944a97d150935cc76e1ae1f8f95159a928a5afbf76d54544a771fd4bc482ca522274b94c87b4f1c7cc3399709b5572c5133bc945cca63bad59b454ee301e3582f09c5c31f326a59705a2b534d8e9a79835bf767ea563b0aa74d3301c40a303f6fc04ba0f3807c5decb6743aabfed1a092f88975820c324e2229829462e4985e299c2415eccbdbb4ff26789b74e91db286e6a4af023e8a18e826e930d9d4ac8d92cd8a1098d0705852cda367ba067e723ace9ea8b9502e20e6519dc72b1cb477c4f3091ae4d20eb7401acac77d923eaf5de00ecbb61baa3aca9044f3e66262245aa9f3dce1d02a88e8c26b34e3c27b4e4e5f91cb633c9b6e098063d052dd6883d4c2b153c739ef78c5f375c640ff747adc1110de2f9d011118f3208bee2f3af9990d56ecddab1cfde0c053020b1116afdec7a3303fffe6f6880072482f95aa3115724814aa5fad017e3b7637f3dba509f1e371c9b87a275cfceb68aa5317dbac0e1959367d124935c76631b8aeb532d99c393374f214af2d6a3a5bf4071d97b6ad39b5b2ec03f1feb520ce467808eb2cedb3ec933c20322bcd4511b838de111f9faafb5d45ffd8edbb1fe8f0928d535ab9809b4cbf588af635419b10f7ad9f4418c766d88526215b74518cb6554e833ada2dea5e57776a09541d76ba545f8a727bbe7722912cf00da4a48a462a5b7b13c88941762462142f97e8da2b358435c9cb53d24b6443ea2e1bdaaf6ce58dbd0bcc598cf170a193e14e76ca8bde66ccc786bd330c6ce61db5f202b01c7faf185877e3614c1a1b4484cae6dbef080142f8c45e3e48485746fd3505bba099ae7b37b96e22b2cfe6a0dea5b017974126259d5055a28ad510b3b7116c27287fb7e635f1918d5a9ca2529b1741c9e86c59ddf11c3f70a56fac7c9607eb9bb36612494ed1ae819c092cfff73b7c9c5d3e8680dbe73f92b749c84363c374d80632fc488d0b7d35f25ecac1c151ad8427d7a4eacf24fa6937fd5c416776654bcfae92d999b51c49d76bd53a9d5600b40915acab5d31f0ea3f7a68adccbb72cb454164beb35819af0e9e06ecb40e96c9c2aa8018883301f65cfbaa7ea894737d49b44aa5d76c4b26bbb6de7126bf785fc2a8760ce1664150be0b6828659513561b52906e6a4782732749897a41ffce670736ce0baf5730fce9bcb50a44e1e9bba166f4812ecfdbc2ddd8483405cd2bc68ac179177e1713220348da35c7b2a30c9ad9670d99a53a3c4c4a611fcefe9e39024732d6996568f2fd8eca433a41664b070000000000000000ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82ffde01c599a33ae69b9dcc093a546efd4cdc2c8daa0479ccdc63123cbd0622fa54f8c15ce9a049727b659c998b2fc935ddfae5788c51772e00dd8fafb91e7b9e7b9d4a34efad77ea3f54eaf8bb5bfd4c5d5ec6761689042ec6b1639e79d2628e712669e32f33d058707141549b0a0fc31d9fe4a633871d1ca48096cd8272f735a0838bc1a440947547ce52183863bf080eba73bb36f5130d7dc8676be2e28d00714dc36ccc580d88f6d878357e7121a811a03eb12faddcb75c9c3703ccc4afdaa85101244e619f565a5635e6b8c856fda2edfc27b5c06a711730beb1c361a6a916fd713ba64385734b8563775d66adace055205c6cf9a6c90faca0629e7b93511d0e51e3405210bc3d3c590ead6671e57af44a9418a5d3c6369d5b6d294032f1592c601c2782f5e5fb7ef820f548a7e21661944982f5b04f8722ebf42456df6748a2f9ba2b816bfdfe1432f6c4911daec2b75802d43000403272e1de73bfd625b9742b8970133c0599a17cb7fd7984d6a3da82e845e179ea888019c6d86016cbef610a7a0e3409f0a2bac1181ce62a22fe3fdad2708225ec503077caf354dc5c12f6fad975509172383e2f87405fc7c387b1de333f435426fa3b8a524cea377f3c24690918a4ea2dbf4940ded498169b9b85adcd9d37175ac43897abea5d629775f4f9792d2ece6ff69dec38e38d0c1c9e40dd2967aa103a20a148290a9b89ea82e1bb5235bfd29d260862365933e19f81eb19be2c775707433d66c15f68e5bb8a578a925f20e9d1bc34132c5a214ade50ff48489b89cb674fd3a9c787d0ab539849aa19486e3d4081d4f361517f45fa35168e0432fbb69251a6a7e8f5d33b30564338f693e636d04203502588b4e9128744f49005a77e5de0f79e06053c01e82f4bc29f0bdaf3292c300030eb758fe2a7e98f41f0db618ecb99924e25084b0e69da78bb4918b365b8c613ff5e033d4994e176b5abe710fa552b3e5e21f59a33e4e0aad74c0504c2eeffcf213301b35d9b0bd3c7d140c849012b1fa7ee177e994366b9b278afd94f6bf9a65bbd1cfcf5f3525512e5b257f6a5cd61c43ff2c695cd9571d8d0e24bff92a5ace203d9a643b7c52d794b3a6a2f0cdc6c8c1527e51b32847935dd0c12b1f1aef49cc40d4318b5b067ab9d238e7dc4a8903d8ed224c15ed66b11043fb6ca6109587b6210027df615ef57125d696d0de758be6e4b1693e260589e441ebb020177a4bc7c577a7f2c7d415e00fe93cf1436bf13f738f0cb7d0448074f1436457dfdc03217b585d133dd44928779072129072c0cf0ad9ff3fdbc686f12d219313ceb77e01846f030d631c8014987081a1e3659239e009105143ff3fd3d999fb10e1a1b8f0adce31db881d5da746138462e5a1b45d47862fff760d3b1ae1de946257f2f0edd1bb911495fe1a24ec3a7cd5285e5bb25ac1d206d2f926f9dfd574758a6eb2ee5faed26e5a8e07dbeb11ba4dcfad69d93cc718fca7658b97384a243589699547d476887de967e325ba5e3b982b079eddf83998849579a849dbd3f2f487eaf9242512899756352f3680f334e0585bd43a3439bd62404297912e545e7c18e0c2e19714752b7525bebea1d83222648bc9457ff3fed4c91b1fabc6c88b5c3805dde0267f72a0abba1715fcbacce4253881625026ec2e240e8bb98c5316d28d361a91a1a572caa057492fec8d5e8d8b51f5890515186f7c97ba4a3810f40e9916567ea7a1980fd806d295c73a8b1243b538c373f531994507ae50889cddbe473a8dac128c98eeaa965cb0cdec2dce36fae175334b1dccd48839b7d28292a7c753cf23990d111e518a4260631d5a99a28f3bfd01db75d8271d08556abef553106fdc472ae97b5f4d2d3741a5104d06560d85f48d3e3acb040c3264d37f370f2acbff61ed733f655d8815983c7e78942131b41645f1ddcb24711ef39dede1317c4d7dd9b01f77066b9f3714b5f09dbb35e8341188e4384bad7238d9ef7d73e2055bb9e6706a90348ae9e5057780666f3642d7a18085e115e5ea3447fdd013a7d976d00e39edee09b271286c1a325161d3d6eac566cb86c5af3d287b5a56dcc48faec1d8342bf3c5436ccf03c0b47cb880aa7001e2c5464a406e24dfd9d021e62558e3cc9ae3228f03ddab021d5519fb426551e0a39ad08f68229662f16b79b7653b8f827a8527f1dc556a02f9e3c7d0f3872467a60340dbb0641d91d6956a33f5c905069ac39e67b40fc8d5dc617e00e89dd926bac628eb187ca1d0c41972b73b628f18159633c6d4697893bab32cb760a193b57034804a66381e62bebd6b729294bb14a113c5750a2bbdb57d40ec9e37ce7f3a486b920bf2972779b88d4ffd3136e2c10286682a4c413ed2991ce333060be5e348dde9eaded10e4cfc84ab1b157713936149239477a0b5a437574a45f24843ec4a525a71813c05c2524b92c893cb6aa0dda8df21d550371f5ac622038baef7071007a31cc486158ca1a8ec2a0c274ea26100fcfa5a3991b6f79384ae487975207d2b0b068df60c7bd63c014d13d2b5215ba7be1802b78742cee248c07cb00f3d5472dde9f85a1a9a323125a3cca08fe5c8d89f73c3fb600a4a3c7f28f12ccdac1e911c8d62242deb1ceb63eb40ffad0ae8845cc9efe69e9f5a7d2cb9910306e16b529d8e16e235e8e54eb84859d4346bfbfbefd453f9a4c8f4cc5c6c80a616433dbbcbb512651578d1d2736f513afa0fc68b401b53086d4a32d2a73100b59f8c07c06f43d17d2021fdc15410e22b5911b3572d5f7996703e97d24699da3fe7714ce74a1daa802609cc631db787abb71504d8c016cb7f5973c0d5f91899bbb100b97d4063ca590d15f176612d2e8779f89132428c6a17ce0dcab8ca081b9d891d3d0cd0bc755a193c5d5180d28d917ea7c5121c702e7c66a58b5499ba4fae3336a2040c986afd2f44d92047b338db4b6b3b6c176d88c641a6d9b4d4749654d55785002b3201ba3eb86562adf07f94b3e39bb3304a2d022a872ae74cbf27f0194c5c73037bca2d3daf1150aee2f81991aecca23660de5072568652037ce13944ec9d75f7cf424607e36233008df0a9707913985b837c631288ac62c253c9cc1586706b9e8238bb0d3d14fcfad900dff65772b36ca252d9f81450ec29d6be025262bc1104a1643c099b3bae8914c8c78cf39d09907d725a52f3ef3a9981c2dec6cccb88017805cf2163e8909eb0822c34d2b42ed08af78dbae9484e7e4faaf2a40b0762f23b491a2ccbdb5cdb4df184b2b70cd39b0fd39b8a50e4cc527f4c6169e79e9c1cca54900a1624e198a0214d8013c017a2dad0aea1521269505213c1c873cb5531b6dcaf1c5430d741514e49e7f3c0f7bea8c9e3ecddacc99e2a8e729f8a0e9c87687f11158aaa9a7159ca567598add54fdb1a58eb08da87154c59bb9214e9d63fc280ce2fe1300b12d4b805d2d992a5e5f74b04e6b41ef9e4f364aaf3f90aad6435d7662d5639882f9edf5dc7ae1e5623fb1cfd9578fbe00cf82353ecf865d9ea24b5d5050e6f7609205b2ef209c57df854ab27f2dbf047e69666ecb731f0b11e540edc105301dd9b915fb4fb1d96f4f8b99b9c42f55f99cedb22638167927766642f0c1f6c4038d4ebc8dfacf6a3ea59532d6275fa5947cc80f44650719be2802f83f62b86776c7a8ac0b92305c69583eb7b1457e21760890e8b9f42f0043af46d07f82f8aab3168ea992bb165dc7396aef85646148b9e9fa88735bcc4f2f94d70fe02200480795aed487d24810b4875284d8e51e25493075e17b7f9f319da50e339a61412cee460382cef9feefa131bb3038360535c5593039fe5fa3795bdff94b1d41e0538536a9e6de8e4a9228d65bdc5cf6868680f452599112cbb3750f9f167ed33017d61dc6b6b374d87384d3a81e74289bd5253ebd20edd58d54bd3711fed8b2273d5c39ab91cfa21b2d3a901891eff40eefd70b8d0d55c1c33a9bbbf2e0dfa2430c736a18addf449dbaa6ed37f04b5a921f945bca6bda7cc75fe47f4c8395918236dbd810406e684aec3eca46c8079dc76defdd90c746859df26c661e746260ec99f15b3bcef2d4eba263d6563f305d522b58f2a39d9f420625b2da43f7dab24c63ac0cd79078a56156ddb4a295057c02dfd02bb52511d08547ec1c0be7a7a1ffdeb550551cf0170e89d9ccf024e862eb9df3458bede7e0bc7060860bcefe43e526edc7ed295f331d5167705f7f32da9721abf972e7eb1235344776ac19bc23e6b916d3a5e54f6863dfe0f46b17800ca77c07f80f0fbe0b2a39fdd2e0107e53148182c577a60a52ce377947c1c44f9264db8fe29b5d9943ec70997fbd1759539f1c5c279f645b68a856d58571bd99d0589f444f239f194c9e73e1606f8affd027a78fec78b8ce11a3871e416307c4357e761b6836be85570d3f155e9d19db103d148cf9dd8b51faabd6157e5e80c9b78e19501489fb6fabc2c1b7de2d9f480006f0b5858eae39893f9ec8a36ed92f2d6e64a31a7c1b13dfa8540d3176e2d451b09237feca9752c8e14b48eee5dec0cc314a00cf41303c8af57c727140be157376f5182e5bd20ef43bfb73077f388b2152c79b40c7bd7360aa0da790677535a1e1ea76528a51b5ea8ceecf9babab979606945dc154ab3269d729996e6f7ed843e8207cd7893e5f8be32fecbcae63474a8f3d3e66f5ad3be91ebd42319d4d4e81377d3531f4bbb7279ba63403c9d827875d7c244a9e7a7c83818af42fee45603039becb40982e1ec43e71c919a409cebd605b865e99936dac09953b4be63ee592eb0f1bc6c8a0fb156bde6c4e05df97253dfa07ad950253f18e0bde6eb9baaad215c785a73750c6f30b36acff3e760abd513258e60d80770b4116cc7f925f34b286649676697b49fecdc8e99c6fe3311d34fcc8c4cc1f066ce680bbf9c9fc32722c858204e9f8201dab9bd6639830830e9a24830a2dfc02f767eea40019df8d41f2e0f63562cdbe55f71b136d52a61b271a24e5992a123f08babf356fd83468d20ecb634bb0ad02be4af5fa5163445cf5ae233804ea209f5c279c726db78f1c81974fb8cabc783e54ee537c9bc3c83370bba589e1389bb1e63ecf59250dcc2752fe0e1081cffb2e7f4c62d44e54a46480a809d383e81106a1b06165f419a8f3502cc7fef7c9067599af2f049fac6ee80b15122555362f7419ab7f3379cf9f27503c503eacc8e94bde23efcd0257fca4da1ac39ad5f580174c42860c91be20a8b1b95c2ccd2a51466da013a02d728d54c168eb50c064b30da49f272f08ca19099058805f91afce70776194f24a151fe36c2619df9fab6760554cbb58781514f131f1ec127a06d98e5ce4ba82fcf1165937ed258ddc9ace565827b6b8cc009b87b083119fc093a106d5f5c679e7a145b619e34f69ac0531a9d7e17ece8e335b66f14fa874dafa045603e127954d89dfcc0994581a48f54fec32d4228831dabe01d0d9f887f4604e975326e8cda35e2151a452be21a4f7117740e70bfb98cbbdaba32795fae8150ab9be24746faf5c8a9ab253cf34f2807e30a238a3ce2aa5de2691371c49b1475e62444947f632da3da60786d0f1f52a8ddb0f69bb293540830f10cf70b3d84609d16fb1c6285a4ca9ab615ea8b0aa6274317dc9c06fba50e001d00fb9db760fe6e4e751a720bb33cfa914fd5ccd5a5e5ee325805cabfbdbfdbe82a45aa53570a50fc22573e6bbf7fb641f16d01f44b9176f965b1ae610b0bf2a73fa1125b14bded8008d3d1617951e19f225d0698241746b651e003fafa16764506610fd92caf131e8c278fece483410fc3e2c6f2cc76d4a9b66028ff3aa83d4a074cce66ef035e8f2186d2ff9ed2615b0c451c8564b812f225feecf9cbbb2de6238dc4c8770a0e17feb7cb02217da98318414257c4dbf3022d8f1e5ad79fea78168c8f1771affdf4597994697e6cece2e6bfc7219d3018e3ac49549e37b8a57e0e69ef51c8944a3ed215f36c15a2883aceab247dac03ef5a82f235fea559e6b42cccd5eafc30066a3a3173bcf2f7ad34004071bd080e69c7ad3f514c62c928e63457afd2973142069ea68111c6820af10202db0396474cb2a78e1a7121ec04900d9f4ebbadf3d306273afaeaaaaf0d882dbd511146f009b748c2e093f02baac204a3b4ebd4bee5aedc3935775b9d01cab2723ce0c06ccfd5e2a8a2c8fc467c9a06ff3964e96e104890097d00a99811114179536be5457dc37864f4b5f848d27d28a6143b90bc2ae09b218e867fbd6791404ccb662fb779119b8cd2472d1f9e360ccc37f39f2019c79f365c813fd80faf189985f1704016f096acfc6bc0b674fb117ba7eab0f4138791416638ba365c546180b8d5662bfe157f3f63430198548216d7cec0ec8724ebde55883b2c384cbb67b2d7179362f9114dbbe561c8acb3d40ccde56ea66cd7c832b299a96f3a0e0aebb57e9246068d5fbdb126e6a149f7ef2214c35f30409f1b44de792cd741df0cf48f273f6dcafd69547fde219908a75b3b594f45a382ffda619f7e1378df37a8b2a25aad273329002ef931a95a0a7b670dba6dcfc08119783f60b84aba6ba878de6158e689ab051e5ed1743f6fe28a3c061198e7a49d08a68271205e4151c49264929d9ba38dcb2559f45658ce96b2c232cdf40e63bd8828794ef664543bc2f700a65d7c86f218a9b76ad0391906f4480f5563b434403e35eca1079d8c1f906a271ffa21d669a27883108ee78a4fceaa056c0bd5aa4496ec5f37b2dab8b19abc88c61ec5891759c6fb2263f534df3d7116d6874f42d8bc3a1ff9383a68ef3955295b5478c28308c79ab25ae9ca31544427a2cde901ea588ba872f37cedac395f6661ec659f1bcde925f6a82502b32fbb07d4356efda64e82c35356f9abaf5d3f0abbcbf0b0fcc2191501aeb7b59b21e00858b19492aaab25c62afc3b0cecd3d7746eb6cb1edb0cdc569602791a17911802c9f5ccca92717ac661cfd4d4dd8bcdec75492a64bdd2150c2235e7d87759e137b213cb3ab4e275a99e4ac77fda073e2870b6486ba384c44b4f59b382847a5d0a4f87198a996e639f51246014a0d9751db9f85bcbea056a7609332bb1e7ffee3baf262a346e45697d9c97c5ef099e109251368b5a807e6b69c1247e8430d2ac2261aab0ef2a0f695c22086b86fee0adb6bdc8a14af3d02ea0effac0f6f55e8203503b48deb8c8673b92c499284b935abd06352b391c253e35870f024bcbec4332f578a74d4ab0be09e73e3cbf5e1ed7e53eceeeff4ec26941dec578ce3a33f701bb540da65f810e7f4df368804cfcb6078c99d45e4f15ee1d1ad6831c3e6e01102e6ebeed1f86940de0759b256594c9f91041716bd57ea464e77cca292090f612bd7daf20e9b534bacf13ca7d940c90fa9c18b188fbcc17e282edb1156cf5c1351a9f118dcbc5cc720c5c6dad1ccfd04f1beab7817561e86442665b841c97150d10395fd842b54d025a221d81f05c820474e492341a0c6dff31f4a38ee089082f7bfb17b9d8c8355dc76bcefcf0c7692ece39649e85ddf7e395f1baf893eb960d8e1374e84a1d32fc1924ec5808c1255b34946db13ada6163b368754820d519197aceb746d33f556f9932aa775b5547d4b42ab6433e4adfea54bbd7d173e622229660e74ec486937fba081cbb26de3ce7f6f76e070cf54315f18b03675cee1c06fc765f145b7fe4fd12f897c83e21c299fb9614533e163564b9d3090cb00f253029a3a4042e2047cead0dcd42969685de183ded532773056cebbe0242e9bdbf079eb9c8b0a64df4833ad35fc40a317e99070683255e7087a0896b20e0b483410f9e4913bf36cd028555302162a6c6152803b31b8dede9717b80947efaa233f6324941e0714473c92da512fbec873e4b745505a5e691e2f1b6dc2e98d1cacf4c1a42dff6e360909bb82027b6ad070f34ea2d1bea39653da363b2dd14633f5d0f11cc1617ab8239e9832b162b2bc18d8703a39a21ac2ce9b1f23395225f6b34671d5e7679459e7f86391c80e2e3c350220f3f3cb40e575fd8afae3bbe1104246b092e405bb740e213734a5a171aeb6d82b185973a797cf3f17d77cee462e4f3032d053044aa6d8060928f6227bee4a2ad6f7cc6bf49df364cc75fdb9c9aefda07130967032ecb5a29b38bafd4e6755e2427585746460d696c9481db581ccd583311b68da1e80fc45b330e7fc6744105cf7f329effa8d05e5f04f891e6a45c0f620a1c516f22c796523a325d03aa141674b2d257074a20a7b14308310c73ccefa815f73715282cb467a763532504523a1b1fdcf2ed3af8381fa967e02294195a9d0eb43a1f5413be08d6e9ac6e95ebddb34f6962bb64dbde6e94bf734cca4cd1d70feb5b3525d1a4f8551facc79b5f00732cb252e9df686627a56b80b13fd033cf279cfc12ae321a0fa58da9df8da8e6f9f64214e40c22334f13bf1f6da122b4673deedbff3f98958b53af0f4b40158d79e63778123cc6dfd55f43f4bce42f318b0ac418dac56dd9436e78bb527c37dfc28180fed5c439f952931b29e271d83b633effe9809a6399282048357028ab1b540cc0510ee6b19a63643714857fe51c2b1b2963b7964cb602861e81eb52348453e9bc497c447e8a8eb73c79f3997ba17f35f32121ac7b0172845bd8caed56a79285e97d17aa467312c4d10b8bce1d18e416c383b128ded04fd1724a29cd8fe9377ead625ae91efff1a562e03d382e4b4621b28f717ac6fa928dac4a086aea4e122d59f28c961ace3dea0bfc79eb62a5702870bb86a8d82e6284b39f61d2c39b7d99eb65f319cce48af91a9028a48cae8c3c08134f7285c9e7161a570947fab3497f00476f9ede57415cf5889ec18501783af4c371a24560a3046a2683741e851ec1c34fe45c777ed5cb03dfb8ae6648a1224bfbc723f1a69a9edc5ef37147baa1a84b199be1dd645dcc0fba7ca9e8365309f3669b6d1d2e8a47e21d34d1405e6530e0d200dd9997ad72de1e70e660dcf53a6bc4bccd999214ef9206af79b44915e9956f8a019919290066728eb9ae5ccf073eefa4b9f771f584c03648cccfbc1823d118326d7488e2fdb2319df94a593ab0bb34c9970d038dddf2c174631f7b73eba3e6fdae9edee2ead25e57f4c498c32a567c546f089930cabc63db6421a25915714aeef8d9ccd320237cb0e4d302fe1c964c4aaa604714105a1228fe5ad6ca7f42fb2e07c7d6b0bae5f3b320f59e9821d0f66b702e0bef73c4f3d891454e90599f033a96da7df2faf22455f49e28b10ca126096573ceb1d4154791bd607ab67ddc372cdc3da2957e67ce2c599d50b90710895a934fe744c3cb75b1836eed5ac9a549c28930a6388a7c993c7d5a5aa302ee7bf08d177548ecd98c65152d6197286f52b57a3f918218fda1241e28c86201d6e3b6ca12d8e6756223bf9b19387c321db1a0ea2fdcb7a7705f7e8c81a998368a1cdb7788be5629a43704d8e91662b3e1a5ab205f85a27a139a5dd5e40cab92e6dcadb5be50ca3343905fd10ba97df8aa658634c914db6389809d9b18f59fbe371733e5ae1fb35f0f6230a2394119aca72cb11db8a0d0c82a0313562b97528fb50b99f21e3c4097366b763b0325a2f8875b32cd4beadb07925be74aa54aa89f9b52eb1394e1863899f04d7fb451fdb81fc4360a3320dc2a24b3b2c0fd463d9906b0797c3215595d59e5350da3a8cd519d51e76904a80d73a163b384fa68002516c7d7efb1f14aee9258b3aab9c5033b8d929430ef742cc88665799fb1207f2c8d333db1ac85d4c15235103d28b3769df98a763426546b21a8eb0f67872edc8c9d448b8c70d6f7af172d13c3aac5d4ae5bfc8ca9c891e501f2c473eac63cdc16a96b0f74cffb89211a411b0e6b4a0d794b5be83a7cdde651573a142789aaa6aaf76c7f6ba4851d1eedce7feb5f7a2c1179e351a6d97620395b96850238967e8264f581ba4ad4dc85933c874e30fa3adf74901f6ece0504879356a835eb019e12e5761f5555f63c91142c59cb32515de844c0284a31d5e148b694c53e3c69378a1c2880e893fce50f5ebb5b46b7ddc8753e7104f5effea9b0c36e3720469c3f20b8d97cd39c06cecf7881d20032be0f23ed939613cb0dc5ac81ece654aaf5ec36ba427cda4a0031328afc840ffda24b1829153682cbee0da142cfac74394c073def27b4b38f5cdc1c7b699d281d1fd41ac559410cba3330d16c74c8d035ef0210c8dd151a3850db594502d1d50c2959301c384da313611e361e71e937a5d1799d1a45398ce25b1111c86177152676d64393e6ed1f11821c1fb5dca4cddce3a3b1e28975d80dca762c79210222f6771d20ac64da695035d00dae321be393b17008e5f0037f4c1733e4a9f17ce275a85fb44ba59edf9e20403843b11863e4db333233314661bfaf853d6269b187bbb6c0eb0f510d4912645056813ad34cf3bfe5277c589a0314bae0aa802cff46b510c6c76938cb84e921f7b4cf4200da1a82942a807a2075c0f7dfebf768b54b2e308dc49488c4080d6c71c0bf8d773d5de3cd112c588a8ffe11d7a17534a6c7fef432c380ccf252a10d8cd1fa13a5cea6e546349923de83cceee44f2981984fef7144be4e72ea0c149458a7aa6648c9f658622c00be9d0074d3b0d498e475c8e4bfdc9ed4ce81d3aba532aabf7e18d5097ce37505c2dfe9df59a6bb30fe45d62c8a1f2b065ca8bf74f81bc3da5ea3bc5fe855ed0f0104574554480151238458b0d0dd6d493ec964a7462117237ea214ab8bb54b5a7d9e005f5606865f5c7c04adb7149725e02ae803000000000000c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945862d09879b6ff8bdded4f70af68cd3e81dc71a4c671032da6cd9224a5c6c1a660aa1393872b9170453d05c1f40ee3bcb8f727b3e196cbb9c72e7f12ea97080f67e003c99764d0dda139b3165da5dc4bf9700c6a563fcd0543f549e7b19d4cc4caf777c3aac4386f3bb692fd45d7197df5894f1c9545709c9c2255a3b6ed950385ba5a7c9c5fe91bfc671695898f78518380e34231b3e36a49b641cb3e940beec0062", - "040000007d24b5bfe1999a3b21189a3c4d4867784bc2105a0196aba2ba6fd1c9a63e22e1be3fd8ef559f3e7d94c5da9f3ffdb276804f413014d8bf07fe14907d6a37659320e538c79c0033eb2537c88a69d77f048cf4cc4fadd09c9bbb91b4d965ac8f2e0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000002000000000000000000000000000006000080f8694a1277777777000000001c1d1c000000000002ef753da29c8538cbe9669c722c10bec5663e07d101f0a6c3f1f86440a7b00dbe374e5118632c4075f9e84b6c62791de12f1ec0e70e7d415d61c6639d786b1a0c0289051e9e5ef26a5dcbceee48051ae1ee91d70e02022fcf954f3d1190186523ec4cb0ad65db85d28e247bc1daf3fa5b111983e5d328166df852374f3efa9430f7e7d5ef94c51c82437ac68d11f78c190ff7314fdfe4fe007c0be3aeae7bc1094c0be2db5c7d2b24faddb22ac70bfa8499783f312f0bec068f8c09483f7b7edb6e63753d60feb460e2ea1f683740eded3d994f602670d174d38dd95b2a151d0b1d5f2592bd522084eba11fe9f8fb1eac057b84bde9119816ff74790db723529e8713c8daf25996fad08f2a78ceff248ccc91a83402b94311946343866a6dace2226d246cb8226f2bf7555640d4891457a7f6bb6c85962a5e482ec760b6d6483a15f6b44108c2096492765fea12c37da638a7add8d0b74b1bbeb5784c3712349881b78d229a682f024cb21c0c3961704a71ebd54be06a17f44b1fb1926844f14c3a9eceb626fcacc77ddb138846bb40f28daaf7e431d5d09d6f2be928bd09b03f6ee2302cf572c781cda2167d7d8e9b1f4667c8b3f7621c0cf85aeb45462eebe743a33bebb34a9d118cb2d4a69d2038d591e3266e77e122f9fb889ab83325e5d2ab3bea0e85e10cfdd1508d3233ede0b9de84634972e6d3cbcf9325407c43fba5c9dd30a70aece3ac6ac3d5598fd2dd29907584b85398cf21879b4e9ca3c2066e65fad046e788e56fd4a9098b5a4b0fbbe12c0f7c0b5caffbbfa69e4289c9cca89ffb3158dabeb2952a6af2bac251010a3644c01918e0198b835da28e26f694ca21d897785240d0477cadd8bd03bad34639189525c02fea6172168722cf2ae9a6b51412b4f9b24495b9b2852cf045c1acc6d97dd0d6746dd116cf8bbce3258c862e1fb18a4e91d9118c5741a38d6a7aed613910b11cb881cb6d1437669ad853512778ced215ff5b460a47cbfd30e86f9eec227fc123262d73f45d71e66f17492af0457191e797ac9fe6149f4b3cd631dce8f9844bf16588f55003371165f0e48562a11799c33c5b4e4dd390b3943fddf0162c033f0751530acaf5ac2530f320c157c498452ac5012adbde2cc19339fe82e1ee6245dcea9f587a40f3b78600de1209ef9eb6a903d267a95742c856aab1829fc8974731e49b6e8f674eefa81b23026d0bcb1d770c31a60232798a8828fecba930b51b80ae6b98645be3c5b80b195828dfab3bf8763ae660dbe4f02ed5b52abb301b18f3ebf8f1f81b8feeeed620809673472aedf9d70ac86268b7a162d0f46c0ff6bf52bf5dd289a9f34c19632198cf15730427971369cebadb6e943a6d8dfa84f83f2f6451e9d155449f6ff1b41f538eb760edccc3697ef679a586c8295afff2cd8de2ddcaabecdd1c0b41e8db2790ca35e263372e2aadc2b579fcd47d74bcfa188dabae48a78eb8e32e403a3f4bbf86b8535c568a332e0b64de3b3ba0e75a2ce01deefb1b1faa6fc59cf602d1359180616258847d458d03990f158398018e63abf87086caacdeeabf6daf6965d184bf8dac33b1c5af2223168e023a2f5021874300012761f400e35e341e3b54683442a1bbf7907060b54181d27021ea69caefe8326414462f03c44eacac9f26c8a37a8eae78c76dbe19d33f6b198e8a2f4d77a2d50bdc9785518a1e210fea6451bc05e85bd106737ad37e9c96105db1b9bb09bd7cecc45960de0bd6d803913fa43935a8c17de7bf573089ec323b1aba8f6eaf0603b91e53c540305cefe8361dfe47b787257add20569bcb7aad355d93dfe9d28443da5662fd1030a8e251fef553877edd1e1559bba63ebcec258035548d037eb34276f4b256b22631489e8f7201c86537a53502b6f9b4ae7c2a7272459a4df0d203b7399ca1bae6b5260566332b955e342132535e527fa207f8ec9b0bcf9442b7794160497121720d2fd698e3eee28fa34de2321afe580958dd133b1dd2b36afa84dbd004c4a571afa48466d3b7915c84753186b5a3e7b724a8fb8e411f8732b963fe81bbaa48b247330eec8a0897ebd64a25032e8aa4c987ff8153bb447308bb3cf5ab699504746794711928457df6e10d689d81cd6a846123375f5c46ed603f14b0ac6c9729075873179c3bae9740c273d0ec9e1ce060285211c4e60fbd2801cae6c7337570601712fb81abfc25d9a43464541e13bc42b02f01f8ec78a7e5dd3e84fa9576891397106427a6ef262e11f24a55af39caf98130c69bb042475834753518d2f67f66c04d81c574eaf7d8b83bb029f037c4999159186e170752880638619096dd852f29994be72f3a6922a97610fa11085d4288214fe131d2243929d40dd5915a6789c77a499f43489ec2a0b7ad37e7b5070000000000000000dcdeed4e7121d043c65c8049da787baf0bb29c59b75e9608dc59b97fb001c92ffde01cdc9b9d97951e4247bb513ff71eff5413fda3522232fb7d7bc48429bf301c3bbf60c1e5346e6b2412ec70d7ec4091384f5a9cd1feddbf9b02fa15e591c1f86bb9ee9b65bccc11ed903646e771b8d252e63306498d3b325c7cf46dd9e4f8e1e385bd5631b11f427848e7fa3bb78f8f97d090ff15457ddb0030fa9a8332dd2ed68ec267909771b6ee3edd3370ba34516a4a7171680d2d912e2fa4c966942b231609e3a4f5860f35991d117445464ebf6049e31d0b0eacd23a11122c2cce82c6f72a160e131c588770bc6df3888503df8add4f1285f1417543f380479052a2bf8597f56b0d5587578c3b896ed7bf0e057b9a39ca8ee3b1abc2bb967bf5fd7064150871024113211114f203ce5f150e30ff55747a6ecd17a342b77fc7c41ba70e1a216112048b26bea002606abde584d49e7cd633b7a5391290e7808978100e2d5f955cda22772bf642aa0e3b4e8f30edc8c9e6dc1d4952160377205a83730dc58516ad5d5f1b121f397aa2d43f47ff7a09b602b9c61958a3317d2316b9c8db14e40a53e88f1744655a81b850ed7c9388c5388da56e36ed67ec15e15b52cac4bf47a088df916d2c70c9bb348640cb429cbed26810d8fe2218424a6c63f1dfb5bfd3277bc64dd12ae6c088d7f55c4804f6c8bcfd6332bf4d6edbce09574a9c64d3fdb1e41c4d17a403646efc749f7ca43eaf94b014dd269c833ac3e19bc7442ab86b815a9eaa9efa44d01e69c77f73f600c5a911f6e50b5713d079c855ddcc2ba6462077f5d170cda9bf0eb8e477095aad7cd5c081864b328a9cefe21b44b53ae46d38a66f6aeded011536310c3bc0dcf64d2dd0c9015c6c2f83d36d146f9bc9f5a627dca73c5e092953815715ce9ad107d5450b84d449e0e93bf16a4e03d8b15d8b938216cd6c0bc08ccbba0658391f8d8cccfcecf77a85778b9904105bce80cd8c15e38114a80fb6e6870fbc92af588a905da1de9cd58d7c288e7cf406ef916c27b1b4b61fac457fa6390d7a7b6c14256c7a87fd510806be27244e778173f993bf86ff5cbe48b85178c8ba1d529a974a00995ccaf42b64d4e714fb5df79980d79492002f7e220dceb7a14769cff9c1dba91247cb300eb8bfcfc3a85e360266fc4b9f328ba12a6098aeebc67e4fc9aae6762defa078251a0d9653cdbec24fbe31ffa3ef322e6ba7c7114d0f642b72c7ea2688505047248fb18b8321959dec8693a1ab349c16770aaf10889e46d8d8f508f3233a69c9a820b88fce5d5ed044b9cd7420f456459d3ae87a23cc72d3d9c770f94c82224d95426e10107ceb351676c1dea9f252470ec81a9825bf0c2b4a3342ffd702cdb306a351ef3bdb56539da5022b878e08549a6ec8d8773b44c19281da0e307614f72a30e46b73f8db627c4ae9f530c0ea6ea523a6b857f96acdf37b42808ffd31fccef667f92d7ae7ee853233308d0e6a61fb0f78f1d0ee35278788dc3f7585fff3688ce16d40da875b756b2cf4aa33875e01404fe7c74614f184a5eb458acd986abc580f0cf2517110b9f1239615194055de68c7925573faef91ec11706d27b7b672b42b323c32b25a796e795baa58a7dcf5e19a46f21b27bb14e2db080ea704f7a1d15c2ff114964a65bb7429a216ff96939999a743316b073d63cf87ec39d924f6e7658f325dd6a77c9921b2b21f49a22b1d96155d1dc9a206a9d521a5b3372c397556febe9495bbad48c1d9a50f0578bf5e0fdaf8d0276c1fbcd0eda0a5b72ced1fcddd7f6dc0df854aae139d42527db885aaed6998cfe1daef4865a39fccbf57673eae767a975e43f1b198185b1e37a7d1afe476cc35602f148cfee549147584f19255d6cb3e31def73cef31e3adff8184109cffcb6aba6e268367a2f1d803604aefe48404ec5b431c13dbb14374dc9e118736b43f342a3c93f57c707f58dab5f2359f88b48eb85c37d052105bdabb93a8e1f2866330f5548252ffbfd62b448fdeb777168701bdc6136a22bcc048e3679f6098c00ca7151267a4bb1c6561685f5f6fba0d1976a6b7999257a1e4d5155020b124f65e43dc06da593c7fdd96c6fd84afe493d2ade3624fd7672fc0fa7c77d97bea5be3c865655cc77440c7d28ea2cff6eb9bcf85780f2ff0e4215c8c18f63012aa4067fc1524e81c1b9d2e08975b0305c2a1add51a9471c9181835d923cf51b854cc659616fc1932e4997b2b3b737e661945abeb0d9b1fe3c113c2b2a8b371d8630927bcc23c21faff67fc6680ea0b3468b8a0279e3e160629bfccc7f1aac37b5aba4e275cb9cb8ada5c99361c70125a45c0536a9467343dbf1a22610ee2da7ab15fb8d3c5680cc447458f81523ee75668a3f75302693169b7a20349c35b77ef8e99cd3c8b852e4d1871972415de7b9bc9859697d7eab02e559f03cd57fae9e5d3d692e617a2cfbdc34eee3c9db4efdad6f1fb19a7c4907db5173f80ec204fe16919bcca832722c58273f8fb67f69e5d8b24c285aa1a74581f0f9d1fc11b42f578a1eafe7a7dc2c6f11065697d3207585344122314bcd914733132cd0bf5a661eb329dae384c0a85f559932a49d31facb17189716a38b20e3f0c0f30ab4686e79cfe9ad03c00fb0d726991869b6c89ea25da9450c3d6cc5bba1bb17c7a3c38962361890e3f7e24ce94253f63e12dcff3e2c3d045ad05f45ad9349575c7ccd0cd82fdf1e083c56dfed867382a4cf758decef9c05bea3138ca4507b7f638edbfe8f1512911ec00d4379fa996b4d64060078b95064cc81e92aff21e4b30d0b848a8d8d5ceab8f665e686881a79bb390d75f94c593be007bcd38d10de1e750df1a9256375c15e2bed4da66082248abb6d6660ec9ef6351125c245527c3b13e22d77ab516f2457d890f9dd5a6c8d0a21a4d626a5fcfc4bc3a427b5d3581830e070fc6b4c0ac8038bfa1aa52b12b0329410b6b8d0d78407817ec0cd708eaa5215921b14e113e8ceee38318fe47f3cf5a58c1ab86a6eb7734170e55b5002ab3a48cefe62fc6c897aeae4ef82eee968be5b59bf329cca3d03ad5dd38dc287eeda31de96cfb4ee94eca046b1d9e83632f1ce043b7c65782940b60bc0f9f35cde82d5623c83c6d3540139ba820af7bdada01c22a2531b1e3171e6befc5b8289868ccceedb49fe28a32bee69055d5e167eeaeb320832e0da67d6f536b7ea5226e86420f72ee68978a460d1a5f5d0f22e7b3fb59f68489f757581bb4fa107c14829bf5b93ee95f76a84c2f08514f73aa5c062585b57b02de19dd4039afc4480d8666cef6de93ea111a934295350433ecb4d7cd9957a0cc739439bd5308449d3ab744b76f429b3997611e9edfcc49f021f65645ac5524ddbc8fe9f49d8820633ea37d9e9dd5bfef0912fdc1ba80500df637ca3701122f543e99df4f528519c6233fe9cc94e5d2591124212b6a7711cb083018647b0e7200811aa58b82b5fbb10d347fb64ddf7ecc1e526d69bf7d0bf9ac4287ac42db1e4e1d9037ed3d9624cd19c590c460c87c71e7c5055cf0b78318761a5e5b8ea36978ac18275470e04d8e3da440cc7fda0b2fb7857bc2a0bda4843a60d21c3bfaaf7e32f16de155a161e01392be4ef0ab5df2bf0b18a0aaddcc364acf987c625c20fcb90b22e3a0bd6fdd161780a58517012cbfd7086a042f1e13b3f337ed2dfb4f66635d188287bfdadc3bab7a139c3ed8d784c2773836618e440f2f5ecabb712c9116a0d8536419ce663402b427556e899d12be13a588c66565c60fa3ee42f5b21cd3a8febc2b906eb91a778baf31aceeb53acb3556007cd7752fcda896c3a4a41cee337e5e63a5bd7d3d9be234295ccc93a1cd3b4c171f3a7210306901bcaabea6776909baa057ec840813de6ca414318b10d18787403f9ae1a57d671cecb824163683d2e8f3d40cd916a9e6d63aaf5f69dac13bf6cbcf9562a915febaf7d95e8fdc956018e42276703719e4f0d7c698051290d59531e034f884fe7794175006fa69b6b09897979881187a31d33c3728eb87e0562213ae81f502108314c35d590b02b4484caf58925d3f9620e89d5e4272be9fc2bcd587d337de2b815b64ebb3dc542dda0e64ff6d6037fff10941f565cb6814ac3058945d4fdd79c3f97819906551441b1914a4b6c4346a34d7d05315eeffa813cf95b83767317386bc21f1456ccf52cc983777764c02dd9c5ebf3940c19c8d4cd2c1e6366935211884e8aee011aac2fddcb0646cfb290d3f7ac0ea8fd1ec20b57f67a28a470673c4c202eb57409ca729c4ffadcb1828daed09ec1223d758548e477e7e06f8d9015df9a40b964438b2c59261a8527d0755b468601d381e60826627dad42f680f33a83027246eaa154ae2cf04ce7cfd0eae34735da1ecd1b408f4d41a9278115695b16a248cb697366105585a863b4629f6a6899d77dca911091f73e33a812f5baa98b3460edecd6cf2bda734810a7412943426e8d8e00e24afacc681379b92978ec8e049f34b22de5488e9ab25a7bd135ddcb766dcc95ee688268ef957b83130c6869bcf0bf43d606209c5071b00e32a20cd6da4bd4cc5492f435a62561348e3769093639c533570f22b9ecda5aa7c2773753211c68672101694fa491eaec2005a9cc439f773801afe423675efc54e302fdb5e09b895316e7ac8898343bcdd91ad238211e3318ddfe0d86c5ae1c6d83d791c52d9b35496b8ed9978a1c7b5dd00bc6c9697f39247238c2042258025121816660ef0c53a49995cd9b45ba1712d45695472b69d6757e56c572c0f290ad6225d35ca5e5f564ad2c3ac7fb0aa41ac346ec3036adaab5000b9c58d8861aed031b0e627a1e665c36dfceebc558f59df5b6235ee823de9d185d171a9237a20811d9b5e4efe508fb9907d25b6849dedff9e8d71fd0b2cff2f8ea8cc1a7e98b204295f267dae98a6476d99f9eb73499fc918e2db191b9decac79eef1b046e9958c32ff1c8bca28c125b2b2340f980219d5cc979eeabf2b2dadec09e43ea4bb67b136dd30cfcda9dbb611d899e5c3656d46bca5b43affc771c9eb1697b10936d6922c17baf10888d8fc10b4a891d4bfe5ead9136c4f79215c61d4796897fb39834f0440db29202211d82d2b16e69d9398fe33e22959a4310d274c67a4dc9ae6acf72abd13a1afb5fc319c3d5ae89933158c91ffc851e5e5fc854b102a047a0d30211afda1cb548d279fc894f1002c3721e3229519b560f0a71bb648149bc763b3401b9ad57704139a85d936bd0879a820f90be6ea7d78b6fe1679d336dcc2f776a3373e473ab5ee54f5e0a8df6114fd0e2d88ed6e7035d232eae1e4d785b417a43e06bdf7bfc3509bb4ad808d39ca785673436a1009dcce6cd055f10439de64652c31dcac2b65ec47264fec73581f8598f8c318bc0f8d0eb929e7c4d6e5f012238e01e19b1fd6b54feb463912e6557b65741ff8919434e44e04e41a5caadb74f3cc0254541c06faa480499326b7146499b55a2fced4dd416d5a31779c8de5dea938385217832cbc605788ff4fa96e24fdc3875b52769db18abdc76a687974925a52081043864ee8e39574d7f27fac30650eabb1fe70d5d7bab946b234d1b8ee449f08654ac868a22839924b9e7b94175e60c5b575263089b525f40d6f76570d2740095a43696a90f486332f45f4f6ee2d1d55d4b3f2311637a9e73f921a56ea0529104573b25b2c48307adcbe3b2232cc04933dae07c34c491099c57dd7e4b393fe34db10623bb35b74ce92f8b1892d24b9fd88eb7cfc3d1791b0bc3bddebcf42592093e6ffde9f40766ad3c21a67caed25b8b250946ec46773565fdcc6305803362274e612308b8b767423afffdb27239f3b9bcb8e70bf0ee68cc8a1af4e59f6972d7c90b182d862066d1b83ec044b259b398840cc736ece77dac61d07e4b338083a97146137dce132a2a8a0255d1c5aea80b5e0095b6181dbdf1fa23317c74c0e25cb86b08c4136065729777527f49f407256d36049e4c236201174b312e80090376a2113d62058b659f63de5b8695e52fd178c573ae0e14f205cb2fd929c9f09079930738deea7a2090288911af17e157d6c9ea4bc04f6264c81e4f3b5b087fd17a7c0b7eb631c1d1476ddce8be398fb7f576f3f01f98b823b7e8eca7cb3831c0ed3c036219c94ecf5a0c2d112f788d73a432394247fc0244de10e28d4577ecc084c521f0007f3a6215a549abb3091e59c6d6cd674c8e5775acd276c980033df3c2143be0589f65da81bfab1dff81e6783f814980bed3cf47e51dda6424ff43c2a82e966c7ec5b197a73cc580919db591cc522f87a561ca46753679b8d26110d1667bbcc24706633f219617f620958cfc35c1d70e034c0555bf76d9d854f8e5a0a973b88cd6096e5f3d2a72f3196f4bd42b32d6849fd37d10df37225b0cfe05c1005ff528c59352ad6e319f77da2ddf1c94b8b7e7c7a25c7cd15121540f31ec51725e71924c3616257756be8d404b53cb3091c6c3a11940c44cc8808426305550f35f9a4c5322222e661561bdecd8ace024f4c2fffeb3bc1bfa7f69454f6699d36dc42f35d78130f04b39ef392c5969a4d8de6d5271ee7a32af3f311386857fc0c21d053bae00a066ada63a28fd84b0fae439f1060a7b633ea07813863162195125e00d9c2aa7f25c11c981794cc97718f22e3cdbd21701d6f6f5fc25885be6330ac8b8266bd64a227535648a926a002345e224cb6bb4ec6767c1f1511c2c1753def927f97f9fd620c27eae292cca484472b6fe5d68aa58d3fbc772153043073308ec7c0a37c5355c0bdd43179025aa0e8d492353849fd7accf1a0acb7507f11281ab671d69ceaabbf539eae572f0015426f5e9a57e8c4d4d92216a93027572c11172cfb505e590e4d5899aa663a5ea32d5cc163ebef26c92908e15fe3c0705d06e32504c7901bebbbe7de2bb3f5ec28dd50299d941b24242ea0e151d747e129357f4fd6c98876dd0779fe40a7cd386f198150b43d5fced11d2906915937905f104a9ab5f0d05ddf227110e72a6c80a7878e559b5d8b1fd632e851633256254a22608358228feba5055a91dcfa6f702d55b8a463f0e0dd4af11872694e1b38ce25e8f8b4ec993d38223eba5dbc585fdd5ba53b179c20a278181fe3a0d13a7feb333941b59748b2b06b2c51d6c52d0a8bdcf833628cc30787d9d16c0991bb5a523a92da788563800133ac376a6feb09a8ce1de5c1ac1ce128272cdacb42b9592611e34bb0848a05f3c69e274b33481fd2b351ce7562413c2b2eee4cde66944b64103734d44e69b9187d0c98ee204f539c59b2374eef044e731b1bb3d06465f37d16634579e24f7ba512a29204e0e3fe7d89809914e41b7ad8d17e5ac11af5246b2192c833af76bad3906f95683240ea619360d9a0ad9e7e97777e2797180447e13067cdd4efb5ee7429fc5b97e80d3f9b8396b8d2df51ac47b434ee0109b0eaa22f854d4de4ada9dcc003a4a8e147ceed375d607922b59a50312813519571e2a526774b1241513f77d2b53d3d435f141c55eddad14021ccc542ac37aea8e24b9331fcceaa35dec147c114e181e9a6800f1748c3aa1b425d532da7ed19bf10ec5304900d6f685acba0fed0d7bde86d5d5dab0fe046efe66fe78b886d24c097fa252a7a9151e7ba2cf15798d1cdc07904c8f32c1853b8e79be4d344b6d8820005ff2e11ceaa7833e1de67fa3f64637bf20963bea0a981ee810562a0b8b2dd532e01140421a975d2e7f39c3988e99e5cc8116cd9462e2f405121dea5a03616d7fcad17ba0956b84671d94c524efaa13b6b0bcc15b98b6433619bbfc9736d5432fc5237b9a018b716c2e08e4eac57d2b7c33ffd813816a0b01f7d09a5afa082e1d10a327247e0f086f3360dd6b9b736903a518390b887a6dd2f5cfa65322e5fe6dd801ce6ff44388ecfcc02ab12c562f55484cbda45465049da5aba32131491f3bfd92a1f9e85fef13e622e06445252fe64b42680ba24d09d0cf28c9f517a24ac14322d57761c1d53491940ce65df7c1ce7b6f766409f66f6ab4a9b455df1de0316ea2281d48f8f2bfa74f001509e7d2222b7931453759b1cb0ef887335e62bf97aeb1fae49095be74c11f89ae74297e22a342f60ff851f43c1e695080527747f9326097ef0a6838a1f46daab1f109c4e921beb2ea1cb6a334dedc57e55e58469aea61a185933a8a4c5fcb5366487d36541c46f12d8b830ab05c415cdafeb875eb2031e154fdde2d07437c0297ba56e4416cab08544013b2728a42ac6daac513c436f3e07dc6aeee0957297b17c242e221c41187df1fe919602d84805486c0dfe8ba108bc4c5b95c300bf121307d465a3b69f99fece83b1ddba11e3a8ebde80cedaa52c7b5acc9d0417064415bfb6d8ff6ff46444a62619c9321171883977194fddaa0fb059c29139fea48955b1ceddae3ac8051923472d23f06773f49e6624a8f2ba23b36a6c574d85b40f701d705c983ad5bce01bb2d031617bf8b2769ffc90d2ef086be32b2e84cad752afdee010c8e26ee09ea95e963b57e93188d4af84a71a5224e383a0dde184ed343fc59f77620045b9d6cffdb1a89ef0d5cb7e853810f24523a211f2a2fc19a49729d02fbc51b9674783ed4c7c0ef070c6b47413681ee65934cbc65777f92d13f01879a5851ca57501b5cd016cce8e9902f4379997d5c75b3558161552ebe9eb325a3ee76fe87bfde3d2cb44fb9009bcf14ea07900a9e120367d6a0253fba1b57f388efab647bcbad82a4ef8b5a7158c3d0ddfd134e568c937375a9df0304080a5ae883ec3661b176c272c7dd87aa40f209c9fef9d07bd102818b55f3e7a8c0e06dad914acae44f9023a04395e12b1d41b7d425634c748713a709547376cff51e864654c3b24b19d294b99c5e61abbc2f270163995512a5d042d94e1df1b49bc9f2fc814d7409f97758487ea49b276ce60ba980b9e2df67e1a186a18ea60ac743f45714b80eeb90cc06d7158f6cf09c54a858fef698ffe7032c22de1618bfd90bbe8dd7db0aba29f53abf0aca67e1471bee1c871bf3595f423213645b9dd88a4153c7dee3845194b496abcc0104997fc89eebd4fc72c5ca73cb5789cbbec9cdd9cb0cf9117718041860fb2073fb3842c45cd1a8e44a295b3166e1ab0a5a18aaf22575454d4d3750aa838944d1f5caf671d9402cf331785d83c50c29b2e49d402ce4ba32516fe1b37c463359d7cb780d3561ac8c6ecf1626d33aa1b482f343086e740be27175fbe1cc6ff2f798b9cc96e2d88baa6d80b0e443374cdc7f11cda7def2a1875595f6980d0779641c9777632f7a5aebeb48f3e9d01c187695217de185ea6c99cd47b321c53c26a83cd2f749612ca143a2a3a594c2e80c1ec90d98564f2a69e579f9713c20af6a559f541514a7514b8fd88165be486e825c3de6899e97f9e39a1654e51ed9690cefd5e225602e68480e9f2346b3f8d61268dc5f6add54484b7f4bf8fe086110f74183a0bc2515056f9a0bad6f4dbbd848d80df7a24d5d92a6b6b2b16fabc0486028a13b67a2bbe17f9812ccf6692327e78a5dfeb56feb6dda38c9ff2360062cf7128f357ab4b395b26880fdf80dd889ab809da70b1f58f5c1005a3e054f9c40691c287163f445610bdf0f14e6cb73e0eac5ab2fa5a9db4a9774c135e92200c27a34aaa2f3b9e2d568d28ae69652f1a351636492a590f79df0d4f9d589ba0651aa572a6cf9070a873ce75a200506ca74339dafbf0da6add65d5b5594b5b49bb0b63b398b44ff5f996115ce0d1b6f220b7b7b20049f5fc9f26e4fd8b7668578c4dda8365a9e79db99378091b3572473747ca3b4104e7b7bb1bc22988df73cc1e6fdb242c78804b4334550788a3e6a50a17fd8a0985f2449eb8554bc28c989cc1d9755aac8b33482d2c70525e102b4518f7aed260cbc6d6e7317a22e92b776183ccd105ac9bfbed1bbf0da4be0c0203a390cb9b488ed0aaa098ba8d5ebb9659fbf19b8cbc1b4d78edae8f5f272d2bf0303fdedd0e3de90ec360fced0ebbc85d612a9c396ba66cde481b92efc7ac9a1381dea34d170791896ea030cfce7234a0a2d2301bc79043aa7dfed6f3ea7bbe28a344a274fd9b9670b70cd74379a6fa1849a26609f1ef892c0073b7db34f09b8631af1884552a234f7f37263e04c61418b602bddc8561c0e097c5767fdeddc5deabac6308e5ae1c41565baa4d0bb33718486f3c655245f26b26a12becdc95a31819afa5729cbf3127bca5596f9d409301a32e80a3b7ec270b9387e88e9e1422b9ac903aab06f29970b50673222a3460acc1ed2a6ed45d10d3b42887d803e880f39141ce63b8d3fcaf49d87a9ec7f9720808aeaf8eab0ab37ab690f97cbc125be08fd6cd41df957059878d19b106b39e06bf30cc9d3c85f25de650f4afd295dc11025f9a72a5e46422d88c01972e22bf024fe61e0dfb824df1bf44d1f77db0118127ae48e2a145d82bcb537cc4be81e7bbe0e1d3e19b56537e7bee8931d4fc38a03d1c387079b64590d1f775566cf0a16ca2bbad3409c29ca616d8f91040a3ef52bd0b7fb2dea0b65f0841a03fcf8d25a6d7a0904a74ca61835e3e0734e4addddd167cbe9d3ccc89a0965191fd70065b0fc48f450ebd036f9c15039393ebd191a982fff506847cb3de8eed4cb8074da6076302b1e7623cbf5bb1ac4d6af09fad853100eb1aeb302717031608283897f3edb7e5b7f5768a363eb2bfe951b6a9c470d9abfad6ebabd17dadc0ec021684726a3f7daceb4acfed42084e70c8e721034f481300", - "04000000821ccb50796e05b15fde182e6e3170ad072e8c43cd976e191b214cc0b1bd9957f972fed3d6ea50bc8dc07827d9314a989ff91fdf51efc2506c098a000b9675c3e2ce3df4527cec45858a7a5313b87d0ee29b8e001768bc64da9b0416a06ec0210a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000003000000000000000000000000000006000080f8694a1277777777000000001c1d1c0000000000025ffd47baa3f5a5b90eeff3e0779f2d3563860fd5b9d7666cc06abf31b105a8140643a0cc5b44e881a3eead60361c59cc283f1fad00138eb02268408b29029232df48832e00e32157fd299f16bfd4482cc933ab2ff4cb953b162c8998e03a4d05bb13c472eb737e2e3cff834999cb5438003c74df6993c0579033e56a1fade81706ac0a77b99cb933f66906bfd2a2402c8739f844ee72d34ba50a1e1e9486a73e4c7a063267570a483bac82673d954ab903345b291266f89526184c5633a54bfaebc05f6cea64c403025806e65d8e89cbb0ca967dbefb653063a35597715c488891d19d68a5b7f0b74ca44b7552aea2308e325c71f7199ed497deb6c755c6727993f4d218e3128bbef26bd03941a19b344e8e629d81f15559abb7f6881ef7c688146640b02a0e5a9a78e8c587006eccd05bb1d5ee2ab8d1c743391970a0cfe2da89d18fbb51bf3d6b9fb9aa1818619406b89b53200b86d8b3094e46a01a67d63ff2b113b266cd38203f05bd01cce4e4f39a0072baf5f582315a98575332523e967e353cc3ef8d1df1d26dd79e5375cf9bd93f804e4d709004967bc70b3ae79bd7a9cb67cd273bf3df4e1218ec3f67dd9254b589fc73d5ce565e106eb6c6621a5c2438fe784eb5d95efff8e3b008a63bb1c329c5bba077bc756f875acc5d0eb0d02d67f2aa04738c8c625b56c82cab932b05ae2e50092322887318df508180080e1c7b80cf66894cac8de85931e7fedef575e2f7146ecc4658ae936a722548c527593bfdc59acb58ab6c4f360bc0ef75e3bd171c1c730a51749bc95bc2ab4eb7cc3792e107c31239e3711f35b3094c207d73cb0ceea7643d175cf97ae6d8d221f48fd048236449a28b497b36ed3c817c161d4ea89b7bae5170dfc9c33b3b08f0a38e964eabde9f4020eac2a7b480b9dbc7111d67b45997fb94f4244cb8bfefd0d6326a9da5203ad489ebb4e66f382a5bf82e9011e8d3a44cd8b6eaa60662d20be380bb5f474e5f8d70585cef0c5e490254ae896caa9bdc42b85c4fc0cdaace29679ade3adb96628241c509aa1adf1bdd633850f4df4b24765fc4dda5feddcaa6de3a55d58978cd71c9fdc5bfc77b33506ff8b198dbb4ba4cf3d6d4da3db5b76cfdb26379050cec5d43ecc5edb79d046e56ce8582078f6dae1f9802665db37c5285ab13076b7910c0d230f090375c46e44b0f142d540e32b8020f271de3f8ffcd2a9c8cbc1a7f5db56852ec2e9078731d724824ef0db06e8eebd7f111b7326a751086cde390eb42268a8dd44b7b9b1362a594858308abe397b2abc43a57612f98d027afbe7a5d3035c418bc32f556c8564c0901f9aa322de146697139f8801fe1f4836a800dd0eb2033d3b1c79b4f1b630b85a57a009c887eb4faaa0ae71aa5a1b9ce1dedecd5a9aeee985941c39fd28e2412193dbcd3a941c7d20e6ae310ed6082184c17dd2fca5fb27a1985843a6d92bfbea1c0ca8f7aa583e0336cb786cf38b893deef8f5d9a7ad8b096013090ce9224270c5ca0ed72961b44a2749eb99c23089258895392fc65c6181e59bdf0284a08b6bbcac67a394d3b73185f1c454ac279da8c360bd816131add0e86431a2f4bd018bf1e558bb79761851f9b6b1c198ece4e6ea28d4650ca1f5fbf1401306709d11c65829df6ff7b6a4b8bb55921ec2a3bd146728b717f31681c355cdcbd551e6f310a85ec235ba6014dd384c0118d9aec510c0ff524cc07a525b4e80cd1d2d51649cc6889b2240672cf91d9270ce131b10e839c5ba8dd5ae0bdfc943f9052aaf4e838cd0ad9074d845312f17f33a1333c5e580f48dd93b4c013ce245e807acc8e9bc89429027b3e782bd1054c1ed0b81c6f5b54184e7c0c3289dda890f9d5c21cbf13660d4a5634777d00944d6e9a91a560a7422b354fa46282871b9f29bf0dc7cba8547b19c53c16c5e9cf9986701d8d15ac5893d6f5827bb02e0eae3f589f4fcf153515406a1804d2cf8f62d765eb65e09d16c6dd3acca553ff0083ca089e62fa06898a1859d224d8f823f01ff17a2a53d2e27ba6eb1ace30b7f9a97049c581b912645ca1337d449fef95b61cee2b825716f8db4defd52709f08214e1be87c2a1fdce6c3225c10e72b0e8137dd99e2080a033af6eeb1ab4734cd25b822c7b6ab2060774df62fce9bdc9d238b679514b336dda53a630aaa419af1b4df7489bf0fa054c82bbcdded5f01eba9137164a023f495ddaaa883bc42edcc05c2361488731d9352278c9f9075197db5e29a1c87add4cadfe063c6a072f6e1fa9f8b1ddb2a5e46c7b3120627845eb9891cd09b299270c63f0147376065b406b531dbb2283bfbbd7f793de7f627685263d89308ac3896d62920ac548a7f97681b9c0b48671dbe6b6cdff66b3c80dd90b7f5aea8f2616a57f0c47f2375f070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c4e5f35dd019ce932c8d81f52f6ac4b4c7ad62d1513e1c5c445d10faaf17053387812744aea4097a7d1707dd944080558fe3569fccc6920fcc5edee87764c76b69c14f4fd2f140a5aa80078ac3bafab06214182cd9e26ab213ef6a424b4752d8b8b2b693f46bdd24a46bea270af5a4ff7fa74189ebcb1163d359d3dbfa7042509689bc397969857751feed4314241810eeccfd63998768b5a811277d852abb5a1e88196c0e6f98596ff2ecb67af89c3dd6568a4fc2e495559d85d9a043c117615fdc8135207ea0cac2c99648e6047226055013ba411abbe71fed3f3fb678bf99ac4d44d51224662036ac1be7e71d203934498d1f0489bd4e9f8463ce20e381a31cab6da793065a53353682f60fa162048ec3c278685200128c45ed315900a3111b2a3f36810bf78e75a36765a59b3e618177b61f6a90944e0e5973a573c9f048f17f1acb7a5e29889ceaa14f78ffcdbf9b83a3a8ee5233dde72047074853d78a6b7f5de7b73d0b861dfdedb8f2719ac647a67161803b611e5b80338be8f0012bbcbf1f5f05558b742a7d4271865a4e3c1fe55489ced6624aa329fedced737980ebcccee2210078dc20db162ee0da6d8f12d6293b9079bcd29416068e738f129991e084f498a98b41c4c7a8430ab26e0e06ed6115ff86611a29893b50c4190322ab26aa6a3ea878671fadb3b77b694dfb541dfd52d8e199569c800b003931def1aa79159208545edab077606d0f61947a571b6e7c0551002d739157c6f5fc1fd81a2e7172e9f480f0499f9162ff55146ea147508098c2ae0c723d8f113a9fc8db656a25264b4d4f1ff86acaa7498f351934e3fd113c2f8e45488360a40b0cd1e8be9ef9c323cad2df8c077fdb1ca88159d3339818c557e4ce14e8efa0a60f9ec0e474f05cf1478643238fe22a7ea8c74c555d37bb9555e9e733e07cbd25a3446847a3ed44d0390261cae0a92841eb6c49b20dba2869f3cdd0f33754e813f8b270d8d7c8c7a605541067e929ee330f34ee19f5de779bd0d74c4f82d97e0d794afac96f3184bf7456e8a6a1ae576889b198fe9d619425b3378e2b8cc97caae0497a3730f2adc1642f039a99b7df9d68e080e9ae10dfb93da507276b50644d8a963a0f381f5f2970725ce544f384ef4797e5cf686a0e242621501b3b5b58caeb4ce31d8dc19de210ac4744180a3698c1ccd5b68ba48edd1d242764e287d1b22262ca260c8e5d4c031a798684aaa48b739b19ea140db60fcc23cd4849deb5c3b3137331f2504ac002856a0e2a18bc613f2de3b0b615335755d9a7de9cf27d1ab273b93c87e0c03af4414f1586512fba9bba193ae17f636dbc8f2957bf28f31b2f7f53d3e4dd6f1ce49137a89a55549f23445de2650e4f1c00b22c6396c08a49e803505406be93b90080bc7e1317a4040810726d775090a6b8ff2ced7e1d150b21d3990d64cd3f943db519722fb8b4bc68656188e109fa6670235ff5f2261e4819b0a3ba1d15be9a6b39a07f579923924d4fecf753ff918356801b662ed3071753bc110adf8ace113d4bd09634b88a48095caa9ba92b2dc5bf8a59a2b7964861493ab25fc0e588f29bf7dc2b08fc95b27d8673685d313551aa6869ddf013253c6ccca39ca9bd71e3f31c77efb8b7a8a5d05afee6d24c027e0ceab5b3159632de281253ec3bbdffea8a9e761b4f1ee56047dbacbbf7d3c88240d18e4d2f625e24d2fd4922f81cd50895c276a738557723711934ea1705ef98a29d87527af74fabf3bee87f2813ded83917d8ebc2890f9dd3fe5d988aca61f771aba9df9455e22fff03e8565feafdb0619706f36b9dca969747e4061be9248ac3a23add9452f9830849e3e72c8a1b13873ed3759589e03f800f9209df6ff23edfedf91fb8eb35db90a1e31305ba079f6cfd6751c036a050c091081a7cd92f6a0b9099e3deba523218be28c11da50788de3f60ee17d78cb8d9f210365f94a9b938f37a5f4aa1c1637c596a04ac232242d6725b6b49b12208d10a47d8264c2346b598935fe0f43eb56e0361eea0a8a631562defff77b502e1cf0359bd42f1bf330664217a637476406e402ab0bcdada496cc5527f74b911a96d7b4b927a80fd918255830fcda63832500e53c4b5cdb90bc83099b65f18f4b84561aa54c7d2d969aa3464eaa220c59669baf9d7e08216d3b33c39f5573c41411f1a0a10c43eab6cb39be9baae5f828ce41e50352863a60c4575a4863482939f2d3e2db6414b0cf533468ca0f547d02030ec80c58632311a48ffe647a6ff5bf0defddee45927b9c888a8307ea592a3037261215036fd0b441aa141c7356d91031919b2f8e2f92af9134b9e42df419bd91cb582984da871da855643b4ff5bb4c5cd16a773c99688817fdd76b7faa1b0b1341de20e35209ab6a1016197fe373807f9e406214c7b9c0ae7aa8e4412c7330f88d053056363d0cb4ffe3c34b05727144ba6e418ff0c5236ff9a4bb716986c86694990d1887982d0d8c1caa1c471c793cea11b5fda1d346da4caa12e74f36a0fd8af52d743b9aabb1262ca1295342cef187f3fb13c1e565f7bb85863f86f93dddeb2613dc2aa2db4259e9c086ae837c4e8655a7e37a6e3801c6811718bf76704804fe276aaefa402ffbb5394227225f69e1adcc7556936bac642048dd86b35effc30b0723034ad8fac787a99022903d8b074cf8fdadb8ed3b8cbf75006acebf1d110534f3f533ae921c0b78ce67452adc26124ae25dd9bfaba7d4914b379360a812813d3f5743f889a442d4b6d437b1558b97e15a5db16296f36cf499417a484b4eed0ad96a626149a4d847df37d7a88f7e1773f89a26ff26e90b930fc2a8494cd6170479e0457a55b481b045dddf6e7362c99ab049d097d3251431e61242c819b4d22f70db675f50a7dea683a71b66f7f91c6ecb99c019d207a6edb7ca4f9ffeab7e29aaa723bb87f14efb2fdce5eca874cbe2e6f8a1801d1f7faad249cd9bbe72913f121b8ac6fe1446a0b182d661b0d8594f52e971955322c9c6595840aee5178518853df56c9676206ebaba2aa04f8a20960e2b5cc3be71681e85d686ee75cb2a39cb9b6eb6b0933f34a49487839995931a1c0c4f804c1f9dbc45c9996811926a0e8f9cddda2e7d6c946d70ccb58717660a1c8bbc7bdf868849de9198995148b210c81081f7515983e9e7cb807dad9da48aab614439811826d84a1f97515f915109383260e314f80fbf1f5606509db8f2103ea1788570dd8d452a8b2dd13fbf1538fa9cf2e9c9fa3d12362fa93d496d1d770c71516c794fa7a442c2fb0395afc70d900847ca74b989a9e400d3fd4c5ca81c2211c856126b72a296513fb401aeed0892efad767e23594b6c4da91e8e45779c76c6c94cd9a02d0adf3b9ded9bed2520064891d9fa14d4e26a311910148f057bfa59684b73813264a2a901d4f953040e2a277a15089841f12882b2e069f913787a37f7f9671be7747f7abce6a97e16183d03c5ca8f71f38824c0b2e197b57f5aab474201cfe23f90ca1e7a4f11e3733b1dcefd8652a7cf727c5ee648caaca370a20ef0e658334520c38d3c78870a9b3824ae09f4d0452dc5adfe57192007c4ee608e8594e7bcb5a8983004f2f0271b1a129b5c0f9a9a5435c9116c86bc33b1a2cca7b104cccd8e96a31618aa869f011056e5b876f257bf9557381e4e812ff830ed34ae2bfaab746c49e65b0811dab906967440a6850c570aa0a80f3bfe70996d14a1a9a3b356562a2bed99c40acaf107eae6809d0adfd64bbeb5045ba87073ed5714a13839906f11a0263fa078420606787ee1d0c1fd90dd8cd8f2f1c796604d54826d472df55ab8d72d20fafad1ae39c3dbf0d54c1b38d84e8ad9dccf402c27448364a7c30c169367386b9795f27e0b0b56b00facc89636a1b1391ca960f8e0fac566eadfe44aabdb359c9efa8d3d331b2b6105d5403730d9d180a6c65658565a1723d858425a078e6cd8d9a73c3e1fff7f57c2e12ba17ffa065efdefb1b78bd8f9221aaa227eb21bc4dec5d0d01011711bce5dfb699f2810f2fa15d955c9b71934b28e2bc0b1e37b075515690f870ca8324ffbb1ccce79a1fc706e78bbb465bc37034cd5d5dc6c390f1b41cbfb94256b64253f2f43657968313cb6908d8061db87209cf3da1050bb8a757dc765243e42590255037bfbec6701406049e81a5326d5f423a0f189ff94c32a333221882636fd5b98cdc9c14731eb93e9e3564b3b93ea155faf3eabafa21126a0d52c8c3b514080698bee3bba11f5ae26b5d20fc7f0ab3319bc5d6b5ff6d63a781cf1d02c570ad8d007a7c27e495437a2f6fa86f38e9343363ff315ebd95e23d57414a50dd97bb934b3ac9bc5b5cb6742c2f50d746590cdbec2cc2c025a1b6abcac53171c04ee700a6ea6096d462801d172680cdd919b21c80d7b0730642cdd53f10b420799c09b8e03e5a0ce59f1870fd90a5ea31dba28da6d43b278b39f0edd2d9fc82929e2f41d737dd9ad010c1bc06ecac08030713bbf9abd30e7f7bea89bf50f8020530dea34e2127c58e35d9268c1e7267cb00bfa9ebdbd929d5eb0f686d8927f28cd8e2d6487a99523fb8704f426d68d27fd8e843b880d5e1830d94c66537c36263e231c78baee3d32836658aa0cfa222377bed6912e61c6bf920e28421062dd1df2ca1fd3524ad599ed2ebf7ea512b7326e2b86a2724c74977cbcde823d5f1128c8061a4e6edd0e180ff55de5b77f37cf6c7b50f1be0b4d1d8b6ea176e14ef03593024fa9a801677a3ce854d53fb7dd0041f47c5c466a1ca103238ff5648bf52fccc159b34e16196d3e91ab6a92571211f3154ab9b44e25d546c0539e2c59b428d36e5c2cd272ed254500c49a6d09984e221fac248325ad848c01ade7319a3520c83cad8fade9995048fc2e377b91a0522200c1d3d38e54ce2315dba3d792c12d6759f17eef0edb7d502572f6e3f1bbddf2002e2807afe73cbcc481572ed55f11b920e0d25bfa52f10c00c175605eaeac91308d0512e298a055e05de156f0d633c3a0c73525e62d7e5c61edb032139f9aa7d55902a0fda39066fd662b782f4405041e3f54f29781b264c4194d1464335fea1e618ba2a6e5ba4b62c8a5f0d694254379ef615bbe3a66d75cc329f68aeeed52693d63a0f66f794d700f72d2edc303a6e57ae7f4c0987da01d7de8c60c263ffc64c01a92dc1f4d066e525ef07c602af211d442c45e23c1f78b9060a95f3f102b3557dd3fdf5e673b02a23f81d91639a936a656c0c877ea8ba7d235c78a91b09ee51db1e5e9919cac5febcbd39cb70c95ac9efb1c547e9a7f88399e5362dac5136b3fb3581cefb79994c01f07ce2434d891d7831fefbef2bc7983e7dbd9dcd83d8de60d0c68536e8fd5ea14f5d33b27fd3e2ba87cce7f94d9421210fc1989758efcfd4bb6ab8dac93be06477bf57c02840a3a6c7252a91bd612007b1e0568b0829ab2d41347594017d337f06db94c11c35ded31fa365b0874cbee6000b9ab06eecddaca8d0c8fc064e4ec96efdd9e2b6cc3992bc48220f8f1f6ef697063d0c46a617246641a73c6c3ab3d26bfaf8706dfd89adbee69abdd9f198419b0ea1e8510de1b92c616ee2eb2725334bbfee90c13fb8742087c0c70cde18a8576166601332aa002a347e65452e2a2237cee6705cec7a1e2425fa6044339b63bf5a047ba52a49ed6bd1e88e4d6ffce458480df30afaf3ac08037e0dbe7a6cc95c7842909db75c6d8e1731eefbe358d7773c71b1aeeb77c102780d48018f417edc1429ee3f3d18cdba62e6b0b4488684967e79520b4a1ba5a8df08f892253e1fed1915cdd201e87d75c6d1d2554a99a341e487a1654eda35019c7c38c86f5c75020f7f9619a61150d213b99b756924f5f9895e71f49d172a31028270f39dcc1ddf929992a516e4c270ac591674e6ba2c13dd06e0b506041e8942778deca31ddc84f4262ff4ad4d81e531cf16d4d041f3911441c12c77ed92459409ab65ed1949920a684e729d0904593d7a42ffbceed454a9cd23eb7e1742bbf6effde398f122a8443e86c272fdb97ef9455f33ec1161b73013800c40bda9d301d96758c6de69d103c430ee0192f74956b3d73cdf3cff36850d0192633385b19d546bc8f0b1f9e3524757f2d4245646a218b78e6a9f4e289b7882910167b2cca4ac0b90203e5ccf084ca174b16b6c0570f6d9c4e5f08815017f92a4aedd6d5cc3f40a4b9384a77405efb4b87a15caf74bc5d04197ca425592c0900484b814b3d1926954716e1df3b7017a22951344fdf52496f797562f397be1a3ef6bab299a518e7ccda7e5fdd166a6c3e94debb1930febcdc609b93dea783be0d009656909f18ed83eeac7cfdb0a5954dc8b9d604db26c6904d8ce0abbef49d005d2b718f92cb54a7adad0d106a0400ba35808525068312f938a58963d7266f1829495bce11d4c0c05073ff5a72bb508eee9fcf3bcaeba833bd03edd36a49272a1bd479d2408c272e3badb2ff2e6e036aae1ed1667b8bfd538889f705c624b93f37293759a9bc6b57833ea34b0973dfa3171bd9c81715bdcdd39a1a5a16645532b276af5eb53fa910f837f367301e75c8eaaf25dc6842212f5a43b71a6f76c92d600408f82c64dadddd2e72075a070e7e62baabb69fd006132d441c4f184c5d0f869993de13d03ae69b61956f37f191f05b24d242c23bcee76e5ae1726a296b1b15bae2365e9379db640dfeda8d9c7d12a653252a104891a78fd4aa3971af9731c00ee4e0c2f2a4e4fc6e50d67ab75024acfde2fcba159829904f9b27982f2e251f941d897bcec7ce91edf7156cb1754e27813c59d3bfae136b5fdc4ec32e7f17f5d4c4d078f68e91ead670d0cbb30054f2e90fcdf204ac0b99c8c435d932c10ba9267de7a61d791731e0d39b6927f8d8c4b395e03f239d84b717021375480b2c36e3b110777eda7b9e67fbeadb56cbd75ae21d5bbe2f95bd5a2d21ec1a5a403c619e55e46f332c9f98368823f03e4bbf12041f138dcdf2423400dd940062381e75ed02772618afbcf1bcdd949e34afa5bdd0c25b0addc12c1bff4e7faf0a1608d0a36b250d7997bb5711e1b6c74fbf391bff697982fa2b388f1c1934483517257f23bc65aa0e32b5631cb27606e552c49d8376d70c7dbd53570b8d92ea893d3c7b1bc8f62c174ac33faf08269b8d173605aa9a18d81fdbec0e392a6b0910443c504165eee0571388028e1512b8384f60cfcdaf2ea17b7e9c1be172676062a02de0409faeb6f0594e0fb6e696d6605dcf8a5be6115589e2322d7c838bb06f7908aab838bd06e720a051d07233bc7bda3bf1dd16820777d5f57d15d8ce486c9c0081681824871c37c137be3355e8587d12417caa506e3c14caf7a1e9f2d94d6c15e4fc132b2a62f4fef4d12d118ba9d39313a212980dd0f4d7a177cee3ed87f02812f6c2546004e10249c06aaa49a01657c7c7d2ef5c155310e2b69bf2e2b5ac3beea29add230e49ab31149447760e2c54745a77fc33127beb384adea5efd15e17aec6db9af767f1c1d5d7b2cb07c3b193acf0ab44c5804ae5c3e382538cbafa1ddfc31f1448eaea7b0a7504e9fc5256e4dfff39ee61145fe246856fc4fa93d22154068a45c9c12234f6e4aa3748b0a5418e4992a22eb18bb8033793715318370834424065bd4cab694acffa6f0448a61844d4328eb406b72b3c9b2b610b5eb50007bdfc74c7feade19a2459ac4b21856868aa06a2d175589dc86345b311df552ab8a56a724630d565e4ba55a1abb0946a0a8d6e2bc453d4dcebf1159c82b98816c8584ef251cacd77c3ffa104ffbaa96a90d876145fa73fc5fff5f5570a6d8d1580e1c4cce5b5f8e8a5d2b1d20b41b4009c79ebfd4a8e1636f6f93f12593f0532d565ccdf90ed011e0ab0fcb3db28f10535ef5e93f59851db610641feb3bba4190f3074e4257bdfed4f05a52c98c380a471bb3b952488283be1f14fcad4a3d219765b4b2b3421d5ef845f6c7b9ad6af6b66a75ef0c03ab4f2c5150c078068943d1e89d298524d9e9cc5b20c3bd03d89d7a6d3cf30b02e17516e0001b071b92a35d245e0c596071fb8dc53e53159eead8cf86441e0348a0a951d4a2ce30274b423bf3cef4e5969077107e166199d2c5714e25e2e0bbd8db356fcdcfb3d3b8b04066c193c83903ab0f0eb18d2faa428f3104af484d07a96e43ec593a5a9bc6d9c2176535fd5727a3acb3ab4b2e9e9a570f06455bf2b68cbe461743af5466bf7f8050f5c7710b8cd086922c098d4c9c26e53708c5523c0739705505aac79ef65781f226761215eec4cb44f8317b2fffdb15dec242532c0cc8db35c117a35278c54034cdb69bb5df20b8cc8f1eff23bb6e8b929a130e44e0b0812e937fc89b3de0a13afe080628083e386b703ff58a07fb599b66605d12342bcd8fbe69ef239f3ec30bb2fba014ab66bd3344d60786edcd434fd3a19f46353cc0c7901e051405544028bb9dbb1ba427c4b6e6b5a3ec8a593f0832d6a61692d72bc6faf044ee5664b1a7b5a3d38fd1a1b436b833287a162ae7851085a1f63bae8f2fe18b09c603ff33bf0b5ddd6cee3a4b4275348c9835ef59b44f2db1f828f77d0b7d8df70487c91205dd731d9d516d9cb6fd88080f45312c10edc4cb8729c7e71fc9fa87808bf3a3099918984a60eccb1ce433aef537927236f3e0f59fc922b0ff7d0b39fa53f7c19b5048f8fd2e9a3cbdb8e6d7d156b697bd7242355bce57cb3d94d16a5f9adc607288f3ec2641d42eb3303e0344ffe4e4cad5d58be766687da989e8448a5cc7c1ca4ddb0e6cb4f4d22104b1d32f6dc3632fa7012ed5e9d5a2111dcfb62c7666e1bedb86bd966f9caadc2ba81da0488c78352f7d3ad94f35fb75a12272754630a20e42a38a52c4934c5d3bea8631f590e31ac72b485478b7d8ba786e2bbdcff8d22a0082034283aad9f28adf92604124062230891d81f71872c135d234bcb76e82dcfaa6969b84c9171805683b4a419f41a830bd88a76618ae387e3a69254ee920a1375d8362b4e038a2e2b4a98b1c181ae9e5f24b19b07c5d46bd50d0e1e37502646eceabe404904f3813c243675a8322f853d45614c7d56fb8667badf80b87b10ca9d2363e37281fbebfaa303a7366de81d92fdb81edae1f057fd933523dd0a0b88f33140db7acf9131d23420c2b976156d2bfd785e9c8c7c7a520abf8b58d204ef04b5f5f9424c5f305ec6d97f582627a9f7b1d124dbbe6bbd4a36340292b70be4278a0bf1833f90bec6598d3a85fd10c37d2c7fccb02e440deaf2f191492c242d84f09ec1e0a034843a5fffa7c63cca1be0c6c378ce3ca56bde144d25b52412b27185ea5d4a3f4764ee54f0bc70c489f6d81e8a9c7208638f9a3a0bac5ff8b857a74cf8363d05ee1d8f3a166cd50701e0fe692879ce79a3d691424066b749abc3e738d5647bb844731b409cde36b48e420348197710106d7cc0d216cdc677b81c4300b93de75630c4b3e117cf10b678e538db372b2304f314a19d41b5534d9213d408155635a716fe42fa7a03ad90cf8866c124e99a66405883e8bb6f9a502937e18db7c266d8cdd119d12c7121c580f83c2be68d9a65744d77e15c337fe898e1b2fadd3b48b4e03d08d4cbb2bd50f567c1913084eeb5dd249c81b71a1d3a20e2c0d6a8fb7f2099c60904310e9416d9b34407ab6d32fe2bba4cfcf688c5c92b34fa937b7c5345fc8724085c893a5ee567bf6e3b2c1adae130a72f2a3a16d8920cd7e6b93ddd1352a13b1505cc0cf4b00a3ae34a00cb2f85591672068027403537fd0721374d5936ac968952ce66bdf64318c927bb6c184a880fa15e384a3112b78c3969161d05b00c431ff94c55f794c150ff7bcb35265782fbc6ef4903632144809ddbbe3d801f67d840f06a15f966775826cc19fd1f431d9b2dc8b552ba3b28eb47a6b96a038432ce40c84eec8854e48d1172af6aa5719778915b64cbf2bdfd1df50cc32b2736181d4664ed8bfae97f49c20e30bf9c4ea8e67b53fe74afb41c63b12c30eae8c890a5ca1bebc6ea3d553f500b755430896246cf8f4577b3975759e150ec920229f0909348a612900466b5d66e5e2d331d6d9aafabb50bdab70c93cb2d3f6647ff3e399e06946844e96897d74d22795ed647aef1526ccf5dace92d9f5578c19b0d4747d50ab9442ccbd04807a28a35e0df84cd1d4e9c8dc025717871bf8a9f9495ea8d6f6d1687cb1b3c2a6ccb25924ea8c6ad9dc62bd510325df9f6c52c391218b8fb35468e6a855878f17f6d83f866cffa34a2d1f3c21e17cf28514bc1b80740721f43424681e4b421367c296b90a75a116d59c3bc06aa93cf2d809158a67ce2ae3ce452706f919af9669e0f7ed795a3c0316b4ad876d292063107e29e7374826e95233a7e66a89cc7fb4a6d96487f2f2fb1d68df0c0092201b68d49a7d03461d3fd5927b89fe693bbdd3cd201155aef2f533edd651b1802f530b807760dfe1b4385c3ed4000f6a8118b0a3df4c412e79944e444fe063d340f4871ba816c772ce322db4e55348b6e5046b1e6cdb665ef7731e4dc58c93a21102ead248952e94d44bd8357a49f2641bb636285ea307eebf48939441ee1e31a03adf3198df993b59a995d271e9b851fdeac457d6355f9c207292515c0ac2b3801c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce9458607000000000000009ff3604b2c9238c3575aaba36bf28511d83a0aaf443d53981899c20be308112327ed070500b374e359a90435a60363235ca445da700abc2c3b962e89ddae24040006000080f8694a1277777777000000001c1d1c00000000000234ba607b674dd1faf18173ab52cb86ada65b24659b7ab0db262a4d46ef6307813610d535a38b024b19e566c3d73cb49c5dc6a73457c658fa61aa19c9a669d70823c009c26d2c4c5949f83ffb187b8d03a7e05970d87668b9ebb172e5b44c4f300bffbdba179aceb954a3d6da0cc8e9f59587e9a4ab1e9578466bc9eb508b791bc0497d33ffab8b845eed45ec6d6d9072da6064b0afe5eca2b8e3caa4801e04990e2ce95ee1594a1f922a2ad1e0550fa5268c2e1486785a68ad25200e0d1a1fff176fbd7f928197be17c9ea0d4b2f1987cb4c5d4e62ddd8001803e1672d2509ce5607d0ada2ebfd792a4eada56d50babab5b04f4999d97a78f2fc35e1ff001aef6c11bca252ab1f6959508604fd29f29642562b862c9d326655c735e7e9ff0e5b539d819b0ff9b7594947225abffd69d94748a59b5e4798eb4f0d9f41848da1acc1c42ba1af1a4e69227887f00de8aad96af6043998f72164b95e9157ef40f3253d38dd577c636fb694a49fbbeb14a153d3615454c5ed2913c49454efa45880b7e81c288c34793ab18eb68dddb3b5eb8c6f9ef4889d0fb8d3a2dd58164e5edb536fc705b63b194f2dcf384c026004d3aff29e11cdd17ac5c71c26d30ef20b5c157fa9c1c4b33d9bb95cc5882bd36d990fb12700baf432d820f66283742ef447d962088dddc54a21b162d0ed191f12d4b335b4227aef5583bd2a7639a275dd3c6397d11baf62a2983eb982d0d4e5bc64f8bdfb72a5b7f99c81c4af1395d153c9535ae61358ea5fd933e1ca35dfb4344a3a096236e9c777626575f9773f1ed0e64c7e67616b36b48d9f481453f8815d4e48601961cce17d7e5cb37be71839a205a208fd7d35652247b32d384453f30376c2b0dde5d64285c86ea396bf919978de33d5959c7a2bf9fb5e15da56ba2b11b805789d994dd44b5b39952d90bb9cbe0209c63123cec7ff2f2da1c1ebc0930b0e3a03b90dd6e58bf83187e7b71a9a5264fbbfeb90c57647c5d6de4752ccdf657a95007a21a6d8e4910ae99c90e98bef3ba13ae57614499747369bae218a8fcbdf074b48a5f374f74e769d02af067b82283116764abbd30fdc9923a3995d144bf1033ab26d3197ab184748b4992bfb51b0ea22cf3bb574236f2209a2e1391f153b706d5b7640e8a23778332fbdcb1e35cdee0bdfa55c35b02b793b6f2fb01893363d01388391479aee427cc977bef4cdd250e78a7f0f39e711aeb13be5f9a895792dae2657ac2789d2f0a5b0b7a9093fdafe072883f6842e377b05a046488db93fc23002a40a7315e284aa164b2e144cd5ffc6afc8584eb5d52b21b48a924e257b72a180792eb6f8f0a5220c0db0fdf5f5d0a0aecdde7f194e88369ee5d2efda82edf85e8d20b69680c677a4ed53eb33475b9beca2c560386cceb4ddfbd30292b111c37530ae6ee207b87fe5b67b5a90943e2a3c43c66eb8f9b1b006fe008f9da8791e71915349b9a9652d9c508adab7668438eafbfb46288de70ea1f96a32d36ea48e0dfc3fbafa1ea69d28f2b3b1e291a02823229ab70510e1fc102e5df0f6160c7af5ce67e8a6dbdf5e486d285f2b4ebcfcf2c10426ec94e0886edbcc0727b0703ee6ba3a1f7d4a5ceab9386123e531cab919407eba95c72314e0237e4208e22981b912ed9c2b4cac88a8592fb62d648846bf411b886a6b89b83ad03210cf072b00019dc6d0e541b6bb9a22ac9b3603ac0ede0b27cf0998333446344fa2cb44350f9dbc5d557cbdb74d335c6bb398ecd2eef9686763c1f21a34970e810a8eff7b37947fd455ada6010eb00ed5f1f92395ff7d1fa77b05beac74c53db704530f54a5947187366dedae6d48386d68c303b5eeac6e4848607890ad4c4ec6fe25251b4727e8cd22d8fc8972840fc8d5887ce647ad628b298e15f9cdd49b917887e0f8e8ebe0312fd04f3871c68f402f8dcfee60e81283a66f1725ce579861c999ede9f9e2d976a83253ea608b66ccd6ac83359bae0d060adb0f5573ca385446cf54f14fa3231830ba0243fd574aa8ab787ef0150be0cb9c38970043d6fe200fbb6d03158f33f5e3a811887ca482b83122242d228451449593c8dfb33190298e873d49c01b8d0b9ce8851e60e65308325bf3a934054fcc53e791fb117dec249e9836d466ec94188df94077762d8c12e8cfcbac6a9af9741395ee566c26f9e5ef21d7e08a0453fd22ed3228f9118bf2606e87e0e0d1e495075f348b16701162640d2b805fd4d2d3890cd6bfd5afb790ee9163e30d55f8015ee86b07d063dd0398366e4cea8379c951160896d3374b1c39093954117d7e3840715e3018b917c6ddf9c47869bb01a71793b2d414c252cf62e9d781e29137f59978d39b8ff60d45540bdd2dfc73dd0bacb811267b486783e9e9a0d0d5a2a161e082adaa070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c02f3f899fc0cfbb1beb2f0a6b1364b43fbfd5e372a1b64b90685c1b0750cf93993917608f18aca5ec561fec653860b83841a345f03b0e9ad5360c2616b8b511f973cb8eaa583b1e65825fb0cde26316a897f759b9c79d96d4bcaec217948791d524ca3ba26457a5b6f5278171729abc58fcfc844a5e2e9ff048bb334bd46692d97beb0e892e144acb380a1a2810048d5b4226ce2b4f9bd020ae4b26ef3d03419236d3862dde808d4fbc7187da8d7a63c5154c369f26a905f355469a0db4e562de2ead4d75b8693256748db27c5d041f6bd93bc97c7cf7a6f2c2966c29817bc398cf4a61ff5c81b66a7c725dc820e24ccbb2402b16e8a5a9e0d676193924ecb3a48bed2157a84205b689c5f673b45f5cf8589d2e048366b6e3ef58a6cfab7781e90d5f0f2922fa407d0882daf4644908abfbc5da2bc90c09be46ecd7667947d00094c2024142dc31a072b758c2b4c5306e458256fda993ea15295f970f480cd333f986e7f633ba84f8981266e9db3b78a3fa87052a648fa99c4dcb5d1420da4bac5c6ffe822276ffdd6de43f39987e9ffb1562c8e136ec163623c1ef0b957bfb67cd4af92e6433d2b3c757be0b74d7053fee3d1833bea1b076b4e2e878b68be8b661b0c54f6cf9e3bec410ee0a65c0371b4cee0f3cf196d88ac4ef5ca02a42e352785e77307367dbdeb20cc0aaf0be2f72ddb4b12cb9d1e7ed530eeef35a44daf8d80446626e90ff4d6705317ddea944a45e094901680b89133957343b5209a0146722d0d494c9fa805231b072740b15fdb7a1e0dba39015437cb2e61f0cca0179c0128c874cdcb3e4c377925a097d46a2ea86ebcb2aaac4e69b8d93f3f813fa110857017ec1126b0f48e1b61ef1ee9f2d3288a1ba037b28294d381855a9db1a44f6aa83f17773222761fad2add32acb500f060e76600b50779934496796f4c86114c123c55b42ce44d600055e9e249fe7d5f1a80f54d49e5b0dfd71518a7669538471b5e759dfb425c51d742df88cd4237000e0989d5e554f698d0112bd61a33a307b36b22a76aa8e2938e884191321c09c1d90a5678e903a5b76446698e5031233ad87218bf81d1f49cac719c2b27afcc4a191daca45a1c9f51425cf48008a1a569e2adae4627c233bbd024ef0f7c3973ba5bbf9fa0704e111223cce823d50b5d91fc0d805e0bc51daf91f0375b6feb67ed3a729933f275fdde5f8c1885cb9275fbfe2796b9cb4dc5d3eedd1044ffe62bb5a4f20c0969ecce5a0233c5a7740f9f18ba0a6c9a38ffe4b0e5377e6e84e659ece4b09a516f1f5e158f633a18b527ae8cb2813b6fc27f5108a7230bb2ccd25f9934b0899ce9c8cb3d5afa146791b52509aa6f78f02904882b0730d1a8630eb2c3e408aed611ab9cdede995bd2ab2940dcb74cbad21b1a8c27bcdd2b3758c61e5c0d271dda23139fdfa17fe97f19358fd6e4e6efcf71996b359eaea79979375a010436dc45f4ab138d7426f806450b624c14febce156041a32539494b096a3210d114d203df26b1cc826fa2946f53b2521ddeffc30550bb2d26dbd6900c912852b1741e76aa7f77b6c4aaafd16760429d5ce5d3cecaa3e1ff1d3399dd2e4bb0123d668b63b61bed7b097daf5a4710e82dcae3e2db6fd652bcfa527938559d83ae86982f26cffd2be75bb6f842883ac73819dc831dac60616f3c85011bc5139d67254cee29b964ab71fce45fba367356f2122a61544345df6d07f423d13bb32c328125323ff62ec30d67cfafde6eb20c8bf832b8a51e3de2726ba66fb6a0224da5f79286ab7861dac4d7fcc85c62f85fe476216c55ee4e5ebb7ecd3f642c547ec45844ec95586eac20c1834a5abb0ab3901c50deeee97ebd64d9980c53e0b8ff88e2273331b1484adc54fd459eaed17ade204477a17b54cfac56fd8d05f3ff4edc2e473295817cc00ab5c34806f1e370a9f97dc474e0d4e6955f915cd6d2069df587eb0650c72b4d2454142230623070f6d21be2bdd0173bb0a959990d9d250e47a2148b42030900e9e7014806e22ae690eafac7a2b3fbf45d6b51dfecbbd21993a12e057c82425533990c8b5c238a6d329c4c41387bd693ec77f1d6d200f17a86063111051f7090c2bfa3ed2a58ea8d22015a2cff83e127edc0383eac49c3b6caf9b5e0ab4abe911658ab63925d60842f70fe83f9ce4258bb79b6311bff08b231078eb8eff59e9dbc955af596ea7acd15fa8b8e1ba88e110ac383eeecca4340797afebeca8fa7c5839a3a306d4bb8004cdcd0372d83cf4e2214394cc2a09252971cd530af7802ac06d57fa0784500c40581efce6bcc497fae84e8bbdfaac727bac1cc0d49c0fadd64639c6c839f6b3e4735074e5f2cd2b5fe6fc9cc34152d723f1e1ef3fede91d41cf39a8207ad69044d14925961ca8b535362da356e419de13adc49ddf8708b82e6ba3b5609ae6110f28333601eed005b94b0d31699c8a687ae732b7d7bb263081cdabb462241911bba94585d0e20c9b41f4d8d5565e70bf351ea95382544864f4a960b8850fd5095213c2bb602338ab2a3f9b1fd97e8d42f68f2f943441ded01beb76f463997f1709e92c9e6df0341cc64ce46bee5ae1ccf0037b77ea00edf62f5f545d16bd063bd9097ef8eaa34d9dd1cb7b2d7f080fe56d14e4eb521da00c7c1d19c13e934601f963f80fe122c184cbc0047fd38cc0a7b4389debb41f44c7cccb596c41936e2fc672796877e1f0d013df6aa65a8d39c60e49eaaaf4bbcab70fa97a0b864aad214ba57bf5ba65abe585e52fec23b33a8fec951699fa4ef19e4af9e7c237248e1f4a71e6166133b2f1b6949d70f072170002b3d38dfaccb3843e641e85bedcde02e289d94ab76f935ced360b5b4abcd503d274923c222d757f8436e97156e067037c7c984ebb22b836bde9b5aefd12b6f079dbab91f69bd904facc456154ca3a1730b6fc7095af42e8e20d0b94ee3c797049971d28d583d5d1d7b539e8794a7710c2de9d2a9db9e6842f7a6a410b9df0f16fdf6bb58c35ca3a7d44b965f04e5e0391f7ab9789ca3f88973b59f50cf46f0d472e4cf49cd81c1b05d8640d625d601155db952b3544d54e5742be75a4bc9cf0d1084bc141b76cbb06290971fa526001e135397dfaadbb5865bb00fc424700901c4e50c7aa4db925b9b7fb0d8631b311fb820bceed1f83a6c166f78819a059017c7e7bc0b134aafbcb063ed15ff67f165441f7015d9a3514ad604c82e400703302c8e2e2bfbf738ef380e6f690392712d64c59fca62f638f2dd8edbb842a7ceafc4926febecfe42d5327af88fa21a9320d1f590803f35b2ecae7e605f0aaf99504537de024e600435f4963aae484cc3f6620243c307ad03f87bbb60696bf1b66409b143dd80362b48e74627ba790e700b4a6d10a4961fd6e4d954af5e585e44a02dc9137a9f2c5b2f09c5edd52924a0f62e0db46f2eb9c15ce3e9940f16a4c7c4be030c02182b2aef10f01de089f380e8afe59f6ace4c9f34738d041cfa61e19a64156a675832d16f4ee54526e0b7c39a8f48dbba330e8ef36b5564d263060c90009a367bfc4a9d1fa7e7903d0de3b2a68de720b8bf070f456306084485cb3858e98004be70aea72b6d0200def4f340ec415fdd2bcaf28eb60a1c2854fe016de38232c721b6d3f3325a101b77ded810b660a83f31c46a5f13a5a08aa6df7da23d0eba9fcbb45ff299761741ca950e12f2f1881946ed0c16f62139d03b430d1dedc3e7f7c68f2bd50993adeeeaad42315b36e0e592b42f1caa568156ea7aaba4072425cc227be504ae30f50335793483ae94a208efe33d61a1bd8cf95db05914e3b732a6c2ea57180dd5421a85a94ca2a97c80a41c04484c5552bd6489ca235c28d773a4d5122d93fbbcfcf8707b88f3d2604da1a47cee05bb3a9fce7528905b5a279a51b44a72a7bfcc9d1769db1813e161dee4387ebefb87805c1bc133b7cf56d549d165356bd3c24b4fd4cbb7a920cca8bd5e43b14557d48c1131a5ec93b3dd64a8d0791d9e50f4f501a5c858f2110418e110a74f7469c1b2ecb54c929d4c08927ff36c4106d696b6758823b235b2a0704d52ad4da79b09c140c266153e7e54ffe69776b2fb97ae8d605c37142c40bd45690f4207e4d3905cc0e69f548c9ec024a2ddddff639d148577de8be4a322d756efa88eaa2e92f2edf13a664924d341a8f95760db3d00329c8f882c24ced3ae07c89e35d51b7e11b0d1e53270bb0523ddde6e95ef8a0c05d2d2b6ba7c6ec169202e6102335e193e302b8c460ed998878abfb1db24e1797d1e7605e13598923a088f38ee8d824d556ebca3d36311acdc402555cc962cdd10936bb4e1ece2e39a6078516e98169fc31fabca7a0edacc689d6a5b4fe2475c0c73ce3d8510bb903260e1e381fc5fa6ea920c8bd2a8ec145eb778f9891d840ba5a3f08b0f6dd3f07e753899c30fe2b565e821fefe44cadf2117d358a2447b0d8ce48f742325b7d358a96536be71ba650ebc36783be0ecd540fb04bdd6a4cc39073df2b9a5ed9b23a4e2cd9ffdbc2967e690188dfc052f21bc49e9c81be87d12b4ea1a770e108d50de901bbb0d046c50a4228254aa095f0cef9d608b0ef50208b0eed938cc7d136207105030c72580f3d5c707b62090a29415e32af9066217272ea6cd498b5c1a81d06314c21406328037ddfa23222cc84c3afbf8cd1c3762faf04352bc37910971404fd446bc4beaa71b98135724118a1dc65ffb937d5310fe1f40c307095f0d3314199773a33bd6e2c89405f48bf12d6651d789e66f1820cdabb6107bdb309b937d8e0f513fef644f96b702e509903ce203c95a10ec4c9f4a71e75c9495038b423de361a86cea19cc2cb4f1f1874e672b2b2e97ee9462090f0639864e95331262a4a560c9948f3c74db29b1d979b7648a7a18536d7f6d8d2fd422f7070756835185866ac588a4daa8094185982d0879768320c5a05a95f1a761a9042efb4e291395bcfe4924fd4df12b131c3520fa984499532946adcfe20cd2fa56d8d44296926284e91509bf8ae72338c28b93974700af04d3ca38f55824ad9f52bd0e6b05f2c7bd8d324b4bfd657855c8cd458baea1bac09386c4444cff7594a870650c1e524230b2a26d865605eee5a016efeedc957effda3d1c145ad66982ad9188bb80c2d1546650750c7e79416c80d7ac102b47bc7798048489afde2f8461a9162997824253047f3d0b0148160aca7c533bdb6710281b42e64ab5eb5194a78d4244e601b67451ddf954d429fa006f25e09ef2a78388c6dca6228f17e3fe61510038f162626435783cba9d6809fb7b50fc1bcfb6231466454b5925c32d04c02e5bac1903df02e8b2ef25e64fb78d7daba63afe4bce774148ae824c62d778d88b6d6c7723cd5d56278b36058f492e4dcd6cb898414f521d9a21cde732aceb5a62adb996f1e18d950a982f9fee6c02750b13965ee93d80751116df1a5884ee24d05f0a74a3faee0198fa1f42bc5241dcdc623ab172dacf6108535f92e0279b9ceb96395073a5b009395aaf3ce8df09add65b351f341d2600351d24d3474f7d123fa7e51f017b0a0b90c4cdcc5db57927d8e87319914fb60ca897c7642e0e323376070cd6f05fec5e74c88c3175010761c7f1ac3c00e263611050c29a932af6cc7908eea6d1e2cefe518c6092cbf7fe7a6c5b0b821aadf6f4c504a1de79e723b5c17bd68d634d7b18b4b9955b37d765c464dcaaab31b9613567d37640e3b7ba9c2abc9b8ad3fbe2ee8b62b4ec7223792f76658bccff7069454442873c81104f5859de761160347deb9e1390544369afd02640ad5f6868e92c2d576a13808199a53fcff7863344ece1634086ca08e72b8d8dad0c11744ca5889437dc482375b6371f12853a22b37ee12ac0bf851194eca88f4e711d6c010135c46cac6c4b6d4d22ded888f4306369c5e7b716720ddcfd1550760b2674eae607713c5696f43d84af2d853505636f0aa30d128cd5ea230bff5a9322b0f38fc998eb902fa2e66a5cdf573b67faf264bd8aee6a7baaa4607ca070939347511a3e7fcc1c2aed75942bf4b02a7a3680f21e60ba2c3fb198e823ef8742241a5193df74d2fd25e4d28080588ed992440022cac1c026a3bf2c1de232751ee2c56381cc320b8511846093b8c82c3b69bee0a5703ebce82d93c99555970e5f192bf4c1438ef3d583f40e8b4042138963b862055a0a8b1df6cad65b82d57850dc251e50508dcf9d58c60b4d6d5f706b10bbb25717263300d3b432ccb759ddbd52e5dc847469dbe7db86ed6d35997f93f8cc939ea38e0eefecedb429e6ed8b028a6ba59954ad0b1345816bb14ef04d6d922770d40b19adfd065256ac351479ec65435951bb014a5fdee04be55231894b9390a28c7823bcb54409faa06f1c3da22ec89f0f9421fa9a33bc840a1362863b549360829e94a149010328b366b45d94e44b03182eb30c63fc967159c1df1386350c53d8f249a1d5cf7529434d61cf0085c59fd02171e5af8f1c82f63d8fbabf8f07622899eb8d01eca1fc6e242d202799005db7e6d26f734d6963a81ab2cf54936440914330b0a7a64f4c785c0958d72e82720124629c630ebe6c2fa7efa9e2272c234db67c5049db7b62f7e1eb3bbbdbfb842fa3df06ac020f84fac21207504412516cf601b65700c971606725d4fc31c4ef15a6635efde36696e339f2cfd775184233eba170149c0d215428706551ada80a5e9509949d22eeb0ff390d1d172b7033c153fadbd3f158b87cb300dea6364874ae86b93e5863f46d3fa2a0c507b4c382a46e0f953854689ce9b7f2a30945ac9ab4848297b833b4fedd6f839ef106a7028f1469d0950628256fec62aa432d6c0a85c3c4f5a6b792c12992a84ce000e6c1aeb6bd6c354960d9a741e0ef483a723762006e291f5950075e35b4223c471cd23733b1dddf91eeca80a4535db48fea257297e0b02eeeeb3da56c2b7acc338240f0e1eff611efae168d566dcb55b9a9d569539031fc4100eb6ca194a369c1330395dfc82e506d8669ae0b80d185a1f037fea20a2cc16da225b6e3ebe2dea684a032dd222dc5df9679f927887e0323e2be5c6b5db8b45640bc9fa099432d28c833a00b04697cd0817b118b78aa4a1ed51dcfe3fc69560b06c859284c8581b6ba223af7d55a3c623400aa0a30fbf3756e3d167100f5739ec9f7fcab49e5164b08b3628f9de44f0e7fd887a88b54305cd1c57a7b9b4ae5547dc617b4aa616b02fd638f4d030b7d9394929abe4264653c79bab88d1210197fe186b41c32c4ffe2827174edabc9cb926173a4afcfdc16e9386d2c2867d9d07d014161ba69169d51d61056d0e3d4c6f7e2fd93d244df132e72f560569889d635cd192f7c6c75fa777570aa806c5c9ec31b9432ad8070eb1474e9d685eb85116aef47ec47eb621c33a38301ae2348233d3b49ac13e64c70d4c4d594927cf3508f8ca6c040e71c95963820d7a70f22fe3120ad893234799be5de84d096b5b8961cdf8b09a52eefb994f433ee5b57ed74f1eda8d6894d2d19fd1faec1d6f34aa175e4b3a8298159f8a6e4130c3d2100d2c9ba994be1e20367f5d587d34ad6c2b00078ae1fc589c77ef3c3d2f0819eeccff1e7b686308122d9d8504b39be1bc01425d29147ad7e24db8c1c132b955ab073d37fc1a83a12d4155f747ffb33779b2f58e4c862d97bfee479631188a1c888ae437b39bf9f197fda0ce1708be825c4eb5bcf8c419b7f44d1be60c224b70e8536ba3f0eb79d6255438988b420f80a81c2f986a8abc2a7c60bf54f0027e1c190c4a8711fbc8551441c6640130372c515be3f22cb10fb9b53223096821a135a309f40922d5cbc2acd57e0d7cbec9d47837ae1465312424a77c6be3451090277f17d6225a0d634455659903b1bc51e79c1330a70d6139e9d7fac08e5928f23d2c10c6268ebbfda4cc45948a33a263f672a523125d188f64c9c01b2ef801686f5fd26321808e96e07433968d05a44864eddc2d190155cd3266c23778dd1cf843a779f77919c8e7a5560dfebc817d703f3eeaa802c613992e5ee2ba6ae90600125b1aa07f04902c524d3cf57e1461d9895461117ec413fb3537752d755737738bebbe1135afa71db91e93f33771d16ab3134f0d6d588dfe23ec6661698421c010d43df3dd7e9c422f8b1e34ad0953e9fe8d7ce81f4b0a62334f5229c6b11fbf5889642660619a2c1f0e98fc561836f62f61861712455a193e54e7c4fe6f1052296ee852b33ded957545dea80dc5f0c97cbda1d7a6a74ae0f482a59e8cb33bb42522b6652eae4ffa1184a2de0e215a662edc4731a0e6042a69f93fa68cc9088fca3e3d8473d5aaabc62ee5956144fd68eacf289eabfe35e6112e919837b82d7084db1a4cfd8e1a86c4ea3b90b890aac23156b50e21f293d0091cb71822592ff9c0493c1dbfd67640a5da51820cbdf5b86bdfcf47065c715bdf265190284a0b73ae525c70e05f0b35f67f8d8652f31cb650c02195c931546a32dc64207c2e0bc73fc8158e7188e8dcb8e258236356ebe5e35361b0bd759fc8652773690a2908ccc0ebd47a889f3ab783f4f3cf12738b7b2323680c69eb1f28688820c02c601f93ccb28717da6b6e5ac20fbaf7fb283784370fd30fed3aa8e0b485027dda030449a6abeb922c705c903a2f349dfb075b9ce0c18e90df690fad3177e02ee6ef19ce602f6cf463ca06a38203017ebfd02519b5b607a11718243b01084656792f3bec57956232f1c5f6ea03fe34bed97e55a8ab67741617263ab232293b19fac40daa9688655da4d37882b0b21980dd5201b4fcef42e0c038e8033a024c787ec218988b08396e9a621ac4374b10bd13d521b52f0afccb3efa4681e8f6ca1fd2152142c89c09aa954cf4c5e4073fdc99cb6cd151458b59552f0ac5f61888679ffc3711d4b806e756a77f31c993ec9239927414ec4fe996e7fc498cecacc56b30440add6f71b02bc34f3705681e7e19cd3722febf38b6ecc25398bb9b527c77fce532371b2463d4fd5a8d0f1dbf97b95eb59acf0281d7805f99e519aa4efb65699a2b2ed89cc8af53bc305bc1a4f750a953086fab18a36eace7e0311de9a6d400042c17846ede3f280a7ab4dda32bbf364fad1722b5bbdc0bab21aba5e4f43b243b2165258d04633957684ae38ab2b101914a21dc1bdc31423f7748d0e36ba5d3201552a2aa76507dc1d4b4d92c4f16329c00c167765ee4f340a281f1f3d73478bd1a0d31ad5bc40969f7ae3cfed770c1b9eea1d75b8b655bfb6932610eec0d5ab113b12dd78802355c2cc8e71427ddbed5ce2cf37d454fe788c09772ce1668b9d120d1cf5f9b0503b193b2378df3b292666df3df011ec6b94271a61fae493f6f92a7308f733d9a12fd7b5596db6a6285d44ea2a0ad64d329ceeff2296a403a730c2a18881d32ebfd93d502d54021471ab8f9473af265b6e42c1fb98c1767a92d5613e29d270a27af9fa8a71f666fe1766d071813b2156e912182a7aa914439c96ab469a576c17510f1617b4536f69c2ded22c1d50d7482cb7fbcde67af59ea734f3742a0e375c7e0210ae4ecff0f818f71b270d49137e46a6ab38afffc1e24cbbd1719870d3e86dc6ff5d1bd5411bb64dd569d593e4c248415f7d59339ff83a749b6a05dd86280bab71b975247de7eb838de56281ca26849ecb8e86cf7bf9a0cae3d93acb75b4af9a46f93c830ccb8c922facef21700878b23cd313fedda6ab91908b77f5142bd60e02deb87c4a2e80b25fc7c51982d1a700fc827a45cf4114305bbb485f8a04e9a4c576365222319432630051ceea8dbcbd0513366fe622b7c15b9c5b9c7697fa7ee201eae4aad0423bb61b96652b3f1e19a5670bad143d6d8b90a9472a2f0177fae07a68dce0172384663be8e4099ec3c154e81a0a2a42363569f8f4030ab4bba6ecede9447835cd97adce8f030e3abf7fe531c9b63a81a5285bf7b45c1f3599a59c5a6ecb70cd6a747b61245e673243b55bf0bf824bc01b754810a19812c082b2252e891d98896999590ce20c9cf78be0e86967f099849b7613ac45084d0c4b7490389500f296efcc38e69fccacd8a9cb3df706bc09c399886164afd22de21676d0fdb93fee1efaf2d363e2ee83295c2bfcdfd4bcce1f0197c9052a92b3ad4032d871562d7c46a0d7deb229244414be672c0dd9a0de1cdd818b8b498ecbf1c786d53e82bb1dfa187d22b4bae3179d56ca4fdd6f8f2d4c81df80726dfcf243829c33d23b77b8d039b0d169c5613ecde639a30eec12dbd364bdca747e8bbf610033c8a02b1f2763aa9a63806d07364d24228d7ba621133ec01c79059f65c54748703fc60eecc810382fbd160a8df4dcd47aa57f640f5ffd74a1f94f9a56156f7c0c6e34fdd6e43a5a0ac46b71474140fb8f16c10aab75678875f19fa82dad79a6cd284c78488aee66c5279d16acb21b8db2df30327783b64335934d7db219dc6846d9199329fa8f8e8a949863b39c03bbf8d83850920f4e87f41bc8f14c5fe3541444af632f5df9866dcae93493fae87809f16ee551bac8c4ddd0bce15ff7be0e573cd46fbac5fc7f4b764f46fd3bb09ab24bbbd9c38ee0f648386d892a90165e2acc2e5057c7aef96648ae013178932d6eab4b60d94555a7f380201c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945860300000000000000af3ce8279bc3e39954527b6314ce47076c97b16c3577c2e7ef014a9f62bb1e248ebb21fb1ca0aea57f0a3df15877c9de9751b1767d705d511fb67eec61dfd42f00" + "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f02c71c7ffa660028b5f3bc0b0bedf9b76a829ce8f2ef82c2c69ab6948bc9fd00a80000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000100000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000002000adfbfe7961473dc7f8ffd411b3e2eeb005a37342e6081d5121f18f5648c8480adb28949796e09a38118152905839afc125618be1fdaf921d188488b607f2544e12a249ab310f17a9349bfe463c7de09d2b822ab0efa88b6d32f77d7c38793192b944aeec0ca94918390dbe44c50e706407692e348ed9b7cedd231941a673722ef1e7e74888672b2b2d08c97a9ac114b7039feffbeb8bbe197db4a0bca8d395cd40551c1d5d788acc2ad09eddda73a5948de2d9e2d82aa638dad6f5dc61042d6850b926d944f29f17e96eca84684252c97ce4382f2642e54208929a4b37954e8e386c677f2aee3e8f4f4aee9f76a87d868fa2210445c09b927b842485918c869a23be8213ae21937a8ca83406fab193cecfd3fcf3b1c698e8057a6c87c059dc6f4ccb30af8e608a7c04088cf3ca32ab20cd780da9443606b092c8b5d85c9a76433c0993e3eee385884ce1f3890abf95462c49bed01a3a5c09df98cb7082e9770bdee196f8b968003f5cc76d82bf575f01da3ed40e44b3b15721f4a9dd5ecd14fb71a42b24ccb7d7e6a3bc10b53ebcb7e0ec6ace91dbc19801eff0c76ec0c10602bca2cfce9f3e79536a25143d351ed2894b4eb4e549960f212f0787057ab1ac8b249c3d3ff8652cb3fb17d7656d50c5e6833b056feb26855332f60e7b8d1ebba32df63d8561fd7d209a1e5adb9853bb5b5d6a41bf1ec52d348023e945bc02e8d6ae8d5b6c7a9225991cca4aa0b41861f237b3bf545220799f152767c7fdcc693a989057e119c18a96007c69c8fe5751a4258ec3f0f99c1aea8dbbaf4df9953ccf6b42cf2f4265011ca89ec7b9ef2c6e9410886291054f50db6310b225ddf32f9db26416da6ca9ef6e3198db36ebab9802517aeaf628d41358fd141dda8fab32fcded20707abc3d00191e0b2690a1e2fa044814191323155fb21e3da8798e0bafef8c2da4c73f967504f51e716cf87117f90fd028df17f3ea26aebeda7f5b3192cd5f4855044e9a41bbfb817074ca1680a458338b191a9619dd337bd0335cb1896d79c79cce10e454b58fecb1cf10da9f53129bbf3cae2bde82007ed98505f16922b6ae53a3a709c2e01ff7e529925d6069807c06bb0c73abf8d463b2a944a97d150935cc76e1ae1f8f95159a928a5afbf76d54544a771fd4bc482ca522274b94c87b4f1c7cc3399709b5572c5133bc945cca63bad59b454ee301e3582f09c5c31f326a59705a2b534d8e9a79835bf767ea563b0aa74d3301c40a303f6fc04ba0f3807c5decb6743aabfed1a092f88975820c324e2229829462e4985e299c2415eccbdbb4ff26789b74e91db286e6a4af023e8a18e826e930d9d4ac8d92cd8a1098d0705852cda367ba067e723ace9ea8b9502e20e6519dc72b1cb477c4f3091ae4d20eb7401acac77d923eaf5de00ecbb61baa3aca9044f3e66262245aa9f3dce1d02a88e8c26b34e3c27b4e4e5f91cb633c9b6e098063d052dd6883d4c2b153c739ef78c5f375c640ff747adc1110de2f9d011118f3208bee2f3af9990d56ecddab1cfde0c053020b1116afdec7a3303fffe6f6880072482f95aa3115724814aa5fad017e3b7637f3dba509f1e371c9b87a275cfceb68aa5317dbac0e1959367d124935c76631b8aeb532d99c393374f214af2d6a3a5bf4071d97b6ad39b5b2ec03f1feb520ce467808eb2cedb3ec933c20322bcd4511b838de111f9faafb5d45ffd8edbb1fe8f0928d535ab9809b4cbf588af635419b10f7ad9f4418c766d88526215b74518cb6554e833ada2dea5e57776a09541d76ba545f8a727bbe7722912cf00da4a48a462a5b7b13c88941762462142f97e8da2b358435c9cb53d24b6443ea2e1bdaaf6ce58dbd0bcc598cf170a193e14e76ca8bde66ccc786bd330c6ce61db5f202b01c7faf185877e3614c1a1b4484cae6dbef080142f8c45e3e48485746fd3505bba099ae7b37b96e22b2cfe6a0dea5b017974126259d5055a28ad510b3b7116c27287fb7e635f1918d5a9ca2529b1741c9e86c59ddf11c3f70a56fac7c9607eb9bb36612494ed1ae819c092cfff73b7c9c5d3e8680dbe73f92b749c84363c374d80632fc488d0b7d35f25ecac1c151ad8427d7a4eacf24fa6937fd5c416776654bcfae92d999b51c49d76bd53a9d5600b40915acab5d31f0ea3f7a68adccbb72cb454164beb35819af0e9e06ecb40e96c9c2aa8018883301f65cfbaa7ea894737d49b44aa5d76c4b26bbb6de7126bf785fc2a8760ce1664150be0b6828659513561b52906e6a4782732749897a41ffce670736ce0baf5730fce9bcb50a44e1e9bba166f4812ecfdbc2ddd8483405cd2bc68ac179177e1713220348da35c7b2a30c9ad9670d99a53a3c4c4a611fcefe9e39024732d6996568f2fd8eca433a41664b070000000000000000ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82ffde01c599a33ae69b9dcc093a546efd4cdc2c8daa0479ccdc63123cbd0622fa54f8c15ce9a049727b659c998b2fc935ddfae5788c51772e00dd8fafb91e7b9e7b9d4a34efad77ea3f54eaf8bb5bfd4c5d5ec6761689042ec6b1639e79d2628e712669e32f33d058707141549b0a0fc31d9fe4a633871d1ca48096cd8272f735a0838bc1a440947547ce52183863bf080eba73bb36f5130d7dc8676be2e28d00714dc36ccc580d88f6d878357e7121a811a03eb12faddcb75c9c3703ccc4afdaa85101244e619f565a5635e6b8c856fda2edfc27b5c06a711730beb1c361a6a916fd713ba64385734b8563775d66adace055205c6cf9a6c90faca0629e7b93511d0e51e3405210bc3d3c590ead6671e57af44a9418a5d3c6369d5b6d294032f1592c601c2782f5e5fb7ef820f548a7e21661944982f5b04f8722ebf42456df6748a2f9ba2b816bfdfe1432f6c4911daec2b75802d43000403272e1de73bfd625b9742b8970133c0599a17cb7fd7984d6a3da82e845e179ea888019c6d86016cbef610a7a0e3409f0a2bac1181ce62a22fe3fdad2708225ec503077caf354dc5c12f6fad975509172383e2f87405fc7c387b1de333f435426fa3b8a524cea377f3c24690918a4ea2dbf4940ded498169b9b85adcd9d37175ac43897abea5d629775f4f9792d2ece6ff69dec38e38d0c1c9e40dd2967aa103a20a148290a9b89ea82e1bb5235bfd29d260862365933e19f81eb19be2c775707433d66c15f68e5bb8a578a925f20e9d1bc34132c5a214ade50ff48489b89cb674fd3a9c787d0ab539849aa19486e3d4081d4f361517f45fa35168e0432fbb69251a6a7e8f5d33b30564338f693e636d04203502588b4e9128744f49005a77e5de0f79e06053c01e82f4bc29f0bdaf3292c300030eb758fe2a7e98f41f0db618ecb99924e25084b0e69da78bb4918b365b8c613ff5e033d4994e176b5abe710fa552b3e5e21f59a33e4e0aad74c0504c2eeffcf213301b35d9b0bd3c7d140c849012b1fa7ee177e994366b9b278afd94f6bf9a65bbd1cfcf5f3525512e5b257f6a5cd61c43ff2c695cd9571d8d0e24bff92a5ace203d9a643b7c52d794b3a6a2f0cdc6c8c1527e51b32847935dd0c12b1f1aef49cc40d4318b5b067ab9d238e7dc4a8903d8ed224c15ed66b11043fb6ca6109587b6210027df615ef57125d696d0de758be6e4b1693e260589e441ebb020177a4bc7c577a7f2c7d415e00fe93cf1436bf13f738f0cb7d0448074f1436457dfdc03217b585d133dd44928779072129072c0cf0ad9ff3fdbc686f12d219313ceb77e01846f030d631c8014987081a1e3659239e009105143ff3fd3d999fb10e1a1b8f0adce31db881d5da746138462e5a1b45d47862fff760d3b1ae1de946257f2f0edd1bb911495fe1a24ec3a7cd5285e5bb25ac1d206d2f926f9dfd574758a6eb2ee5faed26e5a8e07dbeb11ba4dcfad69d93cc718fca7658b97384a243589699547d476887de967e325ba5e3b982b079eddf83998849579a849dbd3f2f487eaf9242512899756352f3680f334e0585bd43a3439bd62404297912e545e7c18e0c2e19714752b7525bebea1d83222648bc9457ff3fed4c91b1fabc6c88b5c3805dde0267f72a0abba1715fcbacce4253881625026ec2e240e8bb98c5316d28d361a91a1a572caa057492fec8d5e8d8b51f5890515186f7c97ba4a3810f40e9916567ea7a1980fd806d295c73a8b1243b538c373f531994507ae50889cddbe473a8dac128c98eeaa965cb0cdec2dce36fae175334b1dccd48839b7d28292a7c753cf23990d111e518a4260631d5a99a28f3bfd01db75d8271d08556abef553106fdc472ae97b5f4d2d3741a5104d06560d85f48d3e3acb040c3264d37f370f2acbff61ed733f655d8815983c7e78942131b41645f1ddcb24711ef39dede1317c4d7dd9b01f77066b9f3714b5f09dbb35e8341188e4384bad7238d9ef7d73e2055bb9e6706a90348ae9e5057780666f3642d7a18085e115e5ea3447fdd013a7d976d00e39edee09b271286c1a325161d3d6eac566cb86c5af3d287b5a56dcc48faec1d8342bf3c5436ccf03c0b47cb880aa7001e2c5464a406e24dfd9d021e62558e3cc9ae3228f03ddab021d5519fb426551e0a39ad08f68229662f16b79b7653b8f827a8527f1dc556a02f9e3c7d0f3872467a60340dbb0641d91d6956a33f5c905069ac39e67b40fc8d5dc617e00e89dd926bac628eb187ca1d0c41972b73b628f18159633c6d4697893bab32cb760a193b57034804a66381e62bebd6b729294bb14a113c5750a2bbdb57d40ec9e37ce7f3a486b920bf2972779b88d4ffd3136e2c10286682a4c413ed2991ce333060be5e348dde9eaded10e4cfc84ab1b157713936149239477a0b5a437574a45f24843ec4a525a71813c05c2524b92c893cb6aa0dda8df21d550371f5ac622038baef7071007a31cc486158ca1a8ec2a0c274ea26100fcfa5a3991b6f79384ae487975207d2b0b068df60c7bd63c014d13d2b5215ba7be1802b78742cee248c07cb00f3d5472dde9f85a1a9a323125a3cca08fe5c8d89f73c3fb600a4a3c7f28f12ccdac1e911c8d62242deb1ceb63eb40ffad0ae8845cc9efe69e9f5a7d2cb9910306e16b529d8e16e235e8e54eb84859d4346bfbfbefd453f9a4c8f4cc5c6c80a616433dbbcbb512651578d1d2736f513afa0fc68b401b53086d4a32d2a73100b59f8c07c06f43d17d2021fdc15410e22b5911b3572d5f7996703e97d24699da3fe7714ce74a1daa802609cc631db787abb71504d8c016cb7f5973c0d5f91899bbb100b97d4063ca590d15f176612d2e8779f89132428c6a17ce0dcab8ca081b9d891d3d0cd0bc755a193c5d5180d28d917ea7c5121c702e7c66a58b5499ba4fae3336a2040c986afd2f44d92047b338db4b6b3b6c176d88c641a6d9b4d4749654d55785002b3201ba3eb86562adf07f94b3e39bb3304a2d022a872ae74cbf27f0194c5c73037bca2d3daf1150aee2f81991aecca23660de5072568652037ce13944ec9d75f7cf424607e36233008df0a9707913985b837c631288ac62c253c9cc1586706b9e8238bb0d3d14fcfad900dff65772b36ca252d9f81450ec29d6be025262bc1104a1643c099b3bae8914c8c78cf39d09907d725a52f3ef3a9981c2dec6cccb88017805cf2163e8909eb0822c34d2b42ed08af78dbae9484e7e4faaf2a40b0762f23b491a2ccbdb5cdb4df184b2b70cd39b0fd39b8a50e4cc527f4c6169e79e9c1cca54900a1624e198a0214d8013c017a2dad0aea1521269505213c1c873cb5531b6dcaf1c5430d741514e49e7f3c0f7bea8c9e3ecddacc99e2a8e729f8a0e9c87687f11158aaa9a7159ca567598add54fdb1a58eb08da87154c59bb9214e9d63fc280ce2fe1300b12d4b805d2d992a5e5f74b04e6b41ef9e4f364aaf3f90aad6435d7662d5639882f9edf5dc7ae1e5623fb1cfd9578fbe00cf82353ecf865d9ea24b5d5050e6f7609205b2ef209c57df854ab27f2dbf047e69666ecb731f0b11e540edc105301dd9b915fb4fb1d96f4f8b99b9c42f55f99cedb22638167927766642f0c1f6c4038d4ebc8dfacf6a3ea59532d6275fa5947cc80f44650719be2802f83f62b86776c7a8ac0b92305c69583eb7b1457e21760890e8b9f42f0043af46d07f82f8aab3168ea992bb165dc7396aef85646148b9e9fa88735bcc4f2f94d70fe02200480795aed487d24810b4875284d8e51e25493075e17b7f9f319da50e339a61412cee460382cef9feefa131bb3038360535c5593039fe5fa3795bdff94b1d41e0538536a9e6de8e4a9228d65bdc5cf6868680f452599112cbb3750f9f167ed33017d61dc6b6b374d87384d3a81e74289bd5253ebd20edd58d54bd3711fed8b2273d5c39ab91cfa21b2d3a901891eff40eefd70b8d0d55c1c33a9bbbf2e0dfa2430c736a18addf449dbaa6ed37f04b5a921f945bca6bda7cc75fe47f4c8395918236dbd810406e684aec3eca46c8079dc76defdd90c746859df26c661e746260ec99f15b3bcef2d4eba263d6563f305d522b58f2a39d9f420625b2da43f7dab24c63ac0cd79078a56156ddb4a295057c02dfd02bb52511d08547ec1c0be7a7a1ffdeb550551cf0170e89d9ccf024e862eb9df3458bede7e0bc7060860bcefe43e526edc7ed295f331d5167705f7f32da9721abf972e7eb1235344776ac19bc23e6b916d3a5e54f6863dfe0f46b17800ca77c07f80f0fbe0b2a39fdd2e0107e53148182c577a60a52ce377947c1c44f9264db8fe29b5d9943ec70997fbd1759539f1c5c279f645b68a856d58571bd99d0589f444f239f194c9e73e1606f8affd027a78fec78b8ce11a3871e416307c4357e761b6836be85570d3f155e9d19db103d148cf9dd8b51faabd6157e5e80c9b78e19501489fb6fabc2c1b7de2d9f480006f0b5858eae39893f9ec8a36ed92f2d6e64a31a7c1b13dfa8540d3176e2d451b09237feca9752c8e14b48eee5dec0cc314a00cf41303c8af57c727140be157376f5182e5bd20ef43bfb73077f388b2152c79b40c7bd7360aa0da790677535a1e1ea76528a51b5ea8ceecf9babab979606945dc154ab3269d729996e6f7ed843e8207cd7893e5f8be32fecbcae63474a8f3d3e66f5ad3be91ebd42319d4d4e81377d3531f4bbb7279ba63403c9d827875d7c244a9e7a7c83818af42fee45603039becb40982e1ec43e71c919a409cebd605b865e99936dac09953b4be63ee592eb0f1bc6c8a0fb156bde6c4e05df97253dfa07ad950253f18e0bde6eb9baaad215c785a73750c6f30b36acff3e760abd513258e60d80770b4116cc7f925f34b286649676697b49fecdc8e99c6fe3311d34fcc8c4cc1f066ce680bbf9c9fc32722c858204e9f8201dab9bd6639830830e9a24830a2dfc02f767eea40019df8d41f2e0f63562cdbe55f71b136d52a61b271a24e5992a123f08babf356fd83468d20ecb634bb0ad02be4af5fa5163445cf5ae233804ea209f5c279c726db78f1c81974fb8cabc783e54ee537c9bc3c83370bba589e1389bb1e63ecf59250dcc2752fe0e1081cffb2e7f4c62d44e54a46480a809d383e81106a1b06165f419a8f3502cc7fef7c9067599af2f049fac6ee80b15122555362f7419ab7f3379cf9f27503c503eacc8e94bde23efcd0257fca4da1ac39ad5f580174c42860c91be20a8b1b95c2ccd2a51466da013a02d728d54c168eb50c064b30da49f272f08ca19099058805f91afce70776194f24a151fe36c2619df9fab6760554cbb58781514f131f1ec127a06d98e5ce4ba82fcf1165937ed258ddc9ace565827b6b8cc009b87b083119fc093a106d5f5c679e7a145b619e34f69ac0531a9d7e17ece8e335b66f14fa874dafa045603e127954d89dfcc0994581a48f54fec32d4228831dabe01d0d9f887f4604e975326e8cda35e2151a452be21a4f7117740e70bfb98cbbdaba32795fae8150ab9be24746faf5c8a9ab253cf34f2807e30a238a3ce2aa5de2691371c49b1475e62444947f632da3da60786d0f1f52a8ddb0f69bb293540830f10cf70b3d84609d16fb1c6285a4ca9ab615ea8b0aa6274317dc9c06fba50e001d00fb9db760fe6e4e751a720bb33cfa914fd5ccd5a5e5ee325805cabfbdbfdbe82a45aa53570a50fc22573e6bbf7fb641f16d01f44b9176f965b1ae610b0bf2a73fa1125b14bded8008d3d1617951e19f225d0698241746b651e003fafa16764506610fd92caf131e8c278fece483410fc3e2c6f2cc76d4a9b66028ff3aa83d4a074cce66ef035e8f2186d2ff9ed2615b0c451c8564b812f225feecf9cbbb2de6238dc4c8770a0e17feb7cb02217da98318414257c4dbf3022d8f1e5ad79fea78168c8f1771affdf4597994697e6cece2e6bfc7219d3018e3ac49549e37b8a57e0e69ef51c8944a3ed215f36c15a2883aceab247dac03ef5a82f235fea559e6b42cccd5eafc30066a3a3173bcf2f7ad34004071bd080e69c7ad3f514c62c928e63457afd2973142069ea68111c6820af10202db0396474cb2a78e1a7121ec04900d9f4ebbadf3d306273afaeaaaaf0d882dbd511146f009b748c2e093f02baac204a3b4ebd4bee5aedc3935775b9d01cab2723ce0c06ccfd5e2a8a2c8fc467c9a06ff3964e96e104890097d00a99811114179536be5457dc37864f4b5f848d27d28a6143b90bc2ae09b218e867fbd6791404ccb662fb779119b8cd2472d1f9e360ccc37f39f2019c79f365c813fd80faf189985f1704016f096acfc6bc0b674fb117ba7eab0f4138791416638ba365c546180b8d5662bfe157f3f63430198548216d7cec0ec8724ebde55883b2c384cbb67b2d7179362f9114dbbe561c8acb3d40ccde56ea66cd7c832b299a96f3a0e0aebb57e9246068d5fbdb126e6a149f7ef2214c35f30409f1b44de792cd741df0cf48f273f6dcafd69547fde219908a75b3b594f45a382ffda619f7e1378df37a8b2a25aad273329002ef931a95a0a7b670dba6dcfc08119783f60b84aba6ba878de6158e689ab051e5ed1743f6fe28a3c061198e7a49d08a68271205e4151c49264929d9ba38dcb2559f45658ce96b2c232cdf40e63bd8828794ef664543bc2f700a65d7c86f218a9b76ad0391906f4480f5563b434403e35eca1079d8c1f906a271ffa21d669a27883108ee78a4fceaa056c0bd5aa4496ec5f37b2dab8b19abc88c61ec5891759c6fb2263f534df3d7116d6874f42d8bc3a1ff9383a68ef3955295b5478c28308c79ab25ae9ca31544427a2cde901ea588ba872f37cedac395f6661ec659f1bcde925f6a82502b32fbb07d4356efda64e82c35356f9abaf5d3f0abbcbf0b0fcc2191501aeb7b59b21e00858b19492aaab25c62afc3b0cecd3d7746eb6cb1edb0cdc569602791a17911802c9f5ccca92717ac661cfd4d4dd8bcdec75492a64bdd2150c2235e7d87759e137b213cb3ab4e275a99e4ac77fda073e2870b6486ba384c44b4f59b382847a5d0a4f87198a996e639f51246014a0d9751db9f85bcbea056a7609332bb1e7ffee3baf262a346e45697d9c97c5ef099e109251368b5a807e6b69c1247e8430d2ac2261aab0ef2a0f695c22086b86fee0adb6bdc8a14af3d02ea0effac0f6f55e8203503b48deb8c8673b92c499284b935abd06352b391c253e35870f024bcbec4332f578a74d4ab0be09e73e3cbf5e1ed7e53eceeeff4ec26941dec578ce3a33f701bb540da65f810e7f4df368804cfcb6078c99d45e4f15ee1d1ad6831c3e6e01102e6ebeed1f86940de0759b256594c9f91041716bd57ea464e77cca292090f612bd7daf20e9b534bacf13ca7d940c90fa9c18b188fbcc17e282edb1156cf5c1351a9f118dcbc5cc720c5c6dad1ccfd04f1beab7817561e86442665b841c97150d10395fd842b54d025a221d81f05c820474e492341a0c6dff31f4a38ee089082f7bfb17b9d8c8355dc76bcefcf0c7692ece39649e85ddf7e395f1baf893eb960d8e1374e84a1d32fc1924ec5808c1255b34946db13ada6163b368754820d519197aceb746d33f556f9932aa775b5547d4b42ab6433e4adfea54bbd7d173e622229660e74ec486937fba081cbb26de3ce7f6f76e070cf54315f18b03675cee1c06fc765f145b7fe4fd12f897c83e21c299fb9614533e163564b9d3090cb00f253029a3a4042e2047cead0dcd42969685de183ded532773056cebbe0242e9bdbf079eb9c8b0a64df4833ad35fc40a317e99070683255e7087a0896b20e0b483410f9e4913bf36cd028555302162a6c6152803b31b8dede9717b80947efaa233f6324941e0714473c92da512fbec873e4b745505a5e691e2f1b6dc2e98d1cacf4c1a42dff6e360909bb82027b6ad070f34ea2d1bea39653da363b2dd14633f5d0f11cc1617ab8239e9832b162b2bc18d8703a39a21ac2ce9b1f23395225f6b34671d5e7679459e7f86391c80e2e3c350220f3f3cb40e575fd8afae3bbe1104246b092e405bb740e213734a5a171aeb6d82b185973a797cf3f17d77cee462e4f3032d053044aa6d8060928f6227bee4a2ad6f7cc6bf49df364cc75fdb9c9aefda07130967032ecb5a29b38bafd4e6755e2427585746460d696c9481db581ccd583311b68da1e80fc45b330e7fc6744105cf7f329effa8d05e5f04f891e6a45c0f620a1c516f22c796523a325d03aa141674b2d257074a20a7b14308310c73ccefa815f73715282cb467a763532504523a1b1fdcf2ed3af8381fa967e02294195a9d0eb43a1f5413be08d6e9ac6e95ebddb34f6962bb64dbde6e94bf734cca4cd1d70feb5b3525d1a4f8551facc79b5f00732cb252e9df686627a56b80b13fd033cf279cfc12ae321a0fa58da9df8da8e6f9f64214e40c22334f13bf1f6da122b4673deedbff3f98958b53af0f4b40158d79e63778123cc6dfd55f43f4bce42f318b0ac418dac56dd9436e78bb527c37dfc28180fed5c439f952931b29e271d83b633effe9809a6399282048357028ab1b540cc0510ee6b19a63643714857fe51c2b1b2963b7964cb602861e81eb52348453e9bc497c447e8a8eb73c79f3997ba17f35f32121ac7b0172845bd8caed56a79285e97d17aa467312c4d10b8bce1d18e416c383b128ded04fd1724a29cd8fe9377ead625ae91efff1a562e03d382e4b4621b28f717ac6fa928dac4a086aea4e122d59f28c961ace3dea0bfc79eb62a5702870bb86a8d82e6284b39f61d2c39b7d99eb65f319cce48af91a9028a48cae8c3c08134f7285c9e7161a570947fab3497f00476f9ede57415cf5889ec18501783af4c371a24560a3046a2683741e851ec1c34fe45c777ed5cb03dfb8ae6648a1224bfbc723f1a69a9edc5ef37147baa1a84b199be1dd645dcc0fba7ca9e8365309f3669b6d1d2e8a47e21d34d1405e6530e0d200dd9997ad72de1e70e660dcf53a6bc4bccd999214ef9206af79b44915e9956f8a019919290066728eb9ae5ccf073eefa4b9f771f584c03648cccfbc1823d118326d7488e2fdb2319df94a593ab0bb34c9970d038dddf2c174631f7b73eba3e6fdae9edee2ead25e57f4c498c32a567c546f089930cabc63db6421a25915714aeef8d9ccd320237cb0e4d302fe1c964c4aaa604714105a1228fe5ad6ca7f42fb2e07c7d6b0bae5f3b320f59e9821d0f66b702e0bef73c4f3d891454e90599f033a96da7df2faf22455f49e28b10ca126096573ceb1d4154791bd607ab67ddc372cdc3da2957e67ce2c599d50b90710895a934fe744c3cb75b1836eed5ac9a549c28930a6388a7c993c7d5a5aa302ee7bf08d177548ecd98c65152d6197286f52b57a3f918218fda1241e28c86201d6e3b6ca12d8e6756223bf9b19387c321db1a0ea2fdcb7a7705f7e8c81a998368a1cdb7788be5629a43704d8e91662b3e1a5ab205f85a27a139a5dd5e40cab92e6dcadb5be50ca3343905fd10ba97df8aa658634c914db6389809d9b18f59fbe371733e5ae1fb35f0f6230a2394119aca72cb11db8a0d0c82a0313562b97528fb50b99f21e3c4097366b763b0325a2f8875b32cd4beadb07925be74aa54aa89f9b52eb1394e1863899f04d7fb451fdb81fc4360a3320dc2a24b3b2c0fd463d9906b0797c3215595d59e5350da3a8cd519d51e76904a80d73a163b384fa68002516c7d7efb1f14aee9258b3aab9c5033b8d929430ef742cc88665799fb1207f2c8d333db1ac85d4c15235103d28b3769df98a763426546b21a8eb0f67872edc8c9d448b8c70d6f7af172d13c3aac5d4ae5bfc8ca9c891e501f2c473eac63cdc16a96b0f74cffb89211a411b0e6b4a0d794b5be83a7cdde651573a142789aaa6aaf76c7f6ba4851d1eedce7feb5f7a2c1179e351a6d97620395b96850238967e8264f581ba4ad4dc85933c874e30fa3adf74901f6ece0504879356a835eb019e12e5761f5555f63c91142c59cb32515de844c0284a31d5e148b694c53e3c69378a1c2880e893fce50f5ebb5b46b7ddc8753e7104f5effea9b0c36e3720469c3f20b8d97cd39c06cecf7881d20032be0f23ed939613cb0dc5ac81ece654aaf5ec36ba427cda4a0031328afc840ffda24b1829153682cbee0da142cfac74394c073def27b4b38f5cdc1c7b699d281d1fd41ac559410cba3330d16c74c8d035ef0210c8dd151a3850db594502d1d50c2959301c384da313611e361e71e937a5d1799d1a45398ce25b1111c86177152676d64393e6ed1f11821c1fb5dca4cddce3a3b1e28975d80dca762c79210222f6771d20ac64da695035d00dae321be393b17008e5f0037f4c1733e4a9f17ce275a85fb44ba59edf9e20403843b11863e4db333233314661bfaf853d6269b187bbb6c0eb0f510d4912645056813ad34cf3bfe5277c589a0314bae0aa802cff46b510c6c76938cb84e921f7b4cf4200da1a82942a807a2075c0f7dfebf768b54b2e308dc49488c4080d6c71c0bf8d773d5de3cd112c588a8ffe11d7a17534a6c7fef432c380ccf252a10d8cd1fa13a5cea6e546349923de83cceee44f2981984fef7144be4e72ea0c149458a7aa6648c9f658622c00be9d0074d3b0d498e475c8e4bfdc9ed4ce81d3aba532aabf7e18d5097ce37505c2dfe9df59a6bb30fe45d62c8a1f2b065ca8bf74f81bc3da5ea3bc5fe855ed0f0104574554480151238458b0d0dd6d493ec964a7462117237ea214ab8bb54b5a7d9e005f5606865f5c7c04adb7149725e02ae803000000000000c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945862d09879b6ff8bdded4f70af68cd3e81dc71a4c671032da6cd9224a5c6c1a660aa1393872b9170453d05c1f40ee3bcb8f727b3e196cbb9c72e7f12ea97080f67e003c99764d0dda139b3165da5dc4bf9700c6a563fcd0543f549e7b19d4cc4caf777c3aac4386f3bb692fd45d7197df5894f1c9545709c9c2255a3b6ed950385ba5a7c9c5fe91bfc671695898f78518380e34231b3e36a49b641cb3e940beec0062", + "040000007d24b5bfe1999a3b21189a3c4d4867784bc2105a0196aba2ba6fd1c9a63e22e1be3fd8ef559f3e7d94c5da9f3ffdb276804f413014d8bf07fe14907d6a37659320e538c79c0033eb2537c88a69d77f048cf4cc4fadd09c9bbb91b4d965ac8f2e0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000200000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000002ef753da29c8538cbe9669c722c10bec5663e07d101f0a6c3f1f86440a7b00dbe374e5118632c4075f9e84b6c62791de12f1ec0e70e7d415d61c6639d786b1a0c0289051e9e5ef26a5dcbceee48051ae1ee91d70e02022fcf954f3d1190186523ec4cb0ad65db85d28e247bc1daf3fa5b111983e5d328166df852374f3efa9430f7e7d5ef94c51c82437ac68d11f78c190ff7314fdfe4fe007c0be3aeae7bc1094c0be2db5c7d2b24faddb22ac70bfa8499783f312f0bec068f8c09483f7b7edb6e63753d60feb460e2ea1f683740eded3d994f602670d174d38dd95b2a151d0b1d5f2592bd522084eba11fe9f8fb1eac057b84bde9119816ff74790db723529e8713c8daf25996fad08f2a78ceff248ccc91a83402b94311946343866a6dace2226d246cb8226f2bf7555640d4891457a7f6bb6c85962a5e482ec760b6d6483a15f6b44108c2096492765fea12c37da638a7add8d0b74b1bbeb5784c3712349881b78d229a682f024cb21c0c3961704a71ebd54be06a17f44b1fb1926844f14c3a9eceb626fcacc77ddb138846bb40f28daaf7e431d5d09d6f2be928bd09b03f6ee2302cf572c781cda2167d7d8e9b1f4667c8b3f7621c0cf85aeb45462eebe743a33bebb34a9d118cb2d4a69d2038d591e3266e77e122f9fb889ab83325e5d2ab3bea0e85e10cfdd1508d3233ede0b9de84634972e6d3cbcf9325407c43fba5c9dd30a70aece3ac6ac3d5598fd2dd29907584b85398cf21879b4e9ca3c2066e65fad046e788e56fd4a9098b5a4b0fbbe12c0f7c0b5caffbbfa69e4289c9cca89ffb3158dabeb2952a6af2bac251010a3644c01918e0198b835da28e26f694ca21d897785240d0477cadd8bd03bad34639189525c02fea6172168722cf2ae9a6b51412b4f9b24495b9b2852cf045c1acc6d97dd0d6746dd116cf8bbce3258c862e1fb18a4e91d9118c5741a38d6a7aed613910b11cb881cb6d1437669ad853512778ced215ff5b460a47cbfd30e86f9eec227fc123262d73f45d71e66f17492af0457191e797ac9fe6149f4b3cd631dce8f9844bf16588f55003371165f0e48562a11799c33c5b4e4dd390b3943fddf0162c033f0751530acaf5ac2530f320c157c498452ac5012adbde2cc19339fe82e1ee6245dcea9f587a40f3b78600de1209ef9eb6a903d267a95742c856aab1829fc8974731e49b6e8f674eefa81b23026d0bcb1d770c31a60232798a8828fecba930b51b80ae6b98645be3c5b80b195828dfab3bf8763ae660dbe4f02ed5b52abb301b18f3ebf8f1f81b8feeeed620809673472aedf9d70ac86268b7a162d0f46c0ff6bf52bf5dd289a9f34c19632198cf15730427971369cebadb6e943a6d8dfa84f83f2f6451e9d155449f6ff1b41f538eb760edccc3697ef679a586c8295afff2cd8de2ddcaabecdd1c0b41e8db2790ca35e263372e2aadc2b579fcd47d74bcfa188dabae48a78eb8e32e403a3f4bbf86b8535c568a332e0b64de3b3ba0e75a2ce01deefb1b1faa6fc59cf602d1359180616258847d458d03990f158398018e63abf87086caacdeeabf6daf6965d184bf8dac33b1c5af2223168e023a2f5021874300012761f400e35e341e3b54683442a1bbf7907060b54181d27021ea69caefe8326414462f03c44eacac9f26c8a37a8eae78c76dbe19d33f6b198e8a2f4d77a2d50bdc9785518a1e210fea6451bc05e85bd106737ad37e9c96105db1b9bb09bd7cecc45960de0bd6d803913fa43935a8c17de7bf573089ec323b1aba8f6eaf0603b91e53c540305cefe8361dfe47b787257add20569bcb7aad355d93dfe9d28443da5662fd1030a8e251fef553877edd1e1559bba63ebcec258035548d037eb34276f4b256b22631489e8f7201c86537a53502b6f9b4ae7c2a7272459a4df0d203b7399ca1bae6b5260566332b955e342132535e527fa207f8ec9b0bcf9442b7794160497121720d2fd698e3eee28fa34de2321afe580958dd133b1dd2b36afa84dbd004c4a571afa48466d3b7915c84753186b5a3e7b724a8fb8e411f8732b963fe81bbaa48b247330eec8a0897ebd64a25032e8aa4c987ff8153bb447308bb3cf5ab699504746794711928457df6e10d689d81cd6a846123375f5c46ed603f14b0ac6c9729075873179c3bae9740c273d0ec9e1ce060285211c4e60fbd2801cae6c7337570601712fb81abfc25d9a43464541e13bc42b02f01f8ec78a7e5dd3e84fa9576891397106427a6ef262e11f24a55af39caf98130c69bb042475834753518d2f67f66c04d81c574eaf7d8b83bb029f037c4999159186e170752880638619096dd852f29994be72f3a6922a97610fa11085d4288214fe131d2243929d40dd5915a6789c77a499f43489ec2a0b7ad37e7b5070000000000000000dcdeed4e7121d043c65c8049da787baf0bb29c59b75e9608dc59b97fb001c92ffde01cdc9b9d97951e4247bb513ff71eff5413fda3522232fb7d7bc48429bf301c3bbf60c1e5346e6b2412ec70d7ec4091384f5a9cd1feddbf9b02fa15e591c1f86bb9ee9b65bccc11ed903646e771b8d252e63306498d3b325c7cf46dd9e4f8e1e385bd5631b11f427848e7fa3bb78f8f97d090ff15457ddb0030fa9a8332dd2ed68ec267909771b6ee3edd3370ba34516a4a7171680d2d912e2fa4c966942b231609e3a4f5860f35991d117445464ebf6049e31d0b0eacd23a11122c2cce82c6f72a160e131c588770bc6df3888503df8add4f1285f1417543f380479052a2bf8597f56b0d5587578c3b896ed7bf0e057b9a39ca8ee3b1abc2bb967bf5fd7064150871024113211114f203ce5f150e30ff55747a6ecd17a342b77fc7c41ba70e1a216112048b26bea002606abde584d49e7cd633b7a5391290e7808978100e2d5f955cda22772bf642aa0e3b4e8f30edc8c9e6dc1d4952160377205a83730dc58516ad5d5f1b121f397aa2d43f47ff7a09b602b9c61958a3317d2316b9c8db14e40a53e88f1744655a81b850ed7c9388c5388da56e36ed67ec15e15b52cac4bf47a088df916d2c70c9bb348640cb429cbed26810d8fe2218424a6c63f1dfb5bfd3277bc64dd12ae6c088d7f55c4804f6c8bcfd6332bf4d6edbce09574a9c64d3fdb1e41c4d17a403646efc749f7ca43eaf94b014dd269c833ac3e19bc7442ab86b815a9eaa9efa44d01e69c77f73f600c5a911f6e50b5713d079c855ddcc2ba6462077f5d170cda9bf0eb8e477095aad7cd5c081864b328a9cefe21b44b53ae46d38a66f6aeded011536310c3bc0dcf64d2dd0c9015c6c2f83d36d146f9bc9f5a627dca73c5e092953815715ce9ad107d5450b84d449e0e93bf16a4e03d8b15d8b938216cd6c0bc08ccbba0658391f8d8cccfcecf77a85778b9904105bce80cd8c15e38114a80fb6e6870fbc92af588a905da1de9cd58d7c288e7cf406ef916c27b1b4b61fac457fa6390d7a7b6c14256c7a87fd510806be27244e778173f993bf86ff5cbe48b85178c8ba1d529a974a00995ccaf42b64d4e714fb5df79980d79492002f7e220dceb7a14769cff9c1dba91247cb300eb8bfcfc3a85e360266fc4b9f328ba12a6098aeebc67e4fc9aae6762defa078251a0d9653cdbec24fbe31ffa3ef322e6ba7c7114d0f642b72c7ea2688505047248fb18b8321959dec8693a1ab349c16770aaf10889e46d8d8f508f3233a69c9a820b88fce5d5ed044b9cd7420f456459d3ae87a23cc72d3d9c770f94c82224d95426e10107ceb351676c1dea9f252470ec81a9825bf0c2b4a3342ffd702cdb306a351ef3bdb56539da5022b878e08549a6ec8d8773b44c19281da0e307614f72a30e46b73f8db627c4ae9f530c0ea6ea523a6b857f96acdf37b42808ffd31fccef667f92d7ae7ee853233308d0e6a61fb0f78f1d0ee35278788dc3f7585fff3688ce16d40da875b756b2cf4aa33875e01404fe7c74614f184a5eb458acd986abc580f0cf2517110b9f1239615194055de68c7925573faef91ec11706d27b7b672b42b323c32b25a796e795baa58a7dcf5e19a46f21b27bb14e2db080ea704f7a1d15c2ff114964a65bb7429a216ff96939999a743316b073d63cf87ec39d924f6e7658f325dd6a77c9921b2b21f49a22b1d96155d1dc9a206a9d521a5b3372c397556febe9495bbad48c1d9a50f0578bf5e0fdaf8d0276c1fbcd0eda0a5b72ced1fcddd7f6dc0df854aae139d42527db885aaed6998cfe1daef4865a39fccbf57673eae767a975e43f1b198185b1e37a7d1afe476cc35602f148cfee549147584f19255d6cb3e31def73cef31e3adff8184109cffcb6aba6e268367a2f1d803604aefe48404ec5b431c13dbb14374dc9e118736b43f342a3c93f57c707f58dab5f2359f88b48eb85c37d052105bdabb93a8e1f2866330f5548252ffbfd62b448fdeb777168701bdc6136a22bcc048e3679f6098c00ca7151267a4bb1c6561685f5f6fba0d1976a6b7999257a1e4d5155020b124f65e43dc06da593c7fdd96c6fd84afe493d2ade3624fd7672fc0fa7c77d97bea5be3c865655cc77440c7d28ea2cff6eb9bcf85780f2ff0e4215c8c18f63012aa4067fc1524e81c1b9d2e08975b0305c2a1add51a9471c9181835d923cf51b854cc659616fc1932e4997b2b3b737e661945abeb0d9b1fe3c113c2b2a8b371d8630927bcc23c21faff67fc6680ea0b3468b8a0279e3e160629bfccc7f1aac37b5aba4e275cb9cb8ada5c99361c70125a45c0536a9467343dbf1a22610ee2da7ab15fb8d3c5680cc447458f81523ee75668a3f75302693169b7a20349c35b77ef8e99cd3c8b852e4d1871972415de7b9bc9859697d7eab02e559f03cd57fae9e5d3d692e617a2cfbdc34eee3c9db4efdad6f1fb19a7c4907db5173f80ec204fe16919bcca832722c58273f8fb67f69e5d8b24c285aa1a74581f0f9d1fc11b42f578a1eafe7a7dc2c6f11065697d3207585344122314bcd914733132cd0bf5a661eb329dae384c0a85f559932a49d31facb17189716a38b20e3f0c0f30ab4686e79cfe9ad03c00fb0d726991869b6c89ea25da9450c3d6cc5bba1bb17c7a3c38962361890e3f7e24ce94253f63e12dcff3e2c3d045ad05f45ad9349575c7ccd0cd82fdf1e083c56dfed867382a4cf758decef9c05bea3138ca4507b7f638edbfe8f1512911ec00d4379fa996b4d64060078b95064cc81e92aff21e4b30d0b848a8d8d5ceab8f665e686881a79bb390d75f94c593be007bcd38d10de1e750df1a9256375c15e2bed4da66082248abb6d6660ec9ef6351125c245527c3b13e22d77ab516f2457d890f9dd5a6c8d0a21a4d626a5fcfc4bc3a427b5d3581830e070fc6b4c0ac8038bfa1aa52b12b0329410b6b8d0d78407817ec0cd708eaa5215921b14e113e8ceee38318fe47f3cf5a58c1ab86a6eb7734170e55b5002ab3a48cefe62fc6c897aeae4ef82eee968be5b59bf329cca3d03ad5dd38dc287eeda31de96cfb4ee94eca046b1d9e83632f1ce043b7c65782940b60bc0f9f35cde82d5623c83c6d3540139ba820af7bdada01c22a2531b1e3171e6befc5b8289868ccceedb49fe28a32bee69055d5e167eeaeb320832e0da67d6f536b7ea5226e86420f72ee68978a460d1a5f5d0f22e7b3fb59f68489f757581bb4fa107c14829bf5b93ee95f76a84c2f08514f73aa5c062585b57b02de19dd4039afc4480d8666cef6de93ea111a934295350433ecb4d7cd9957a0cc739439bd5308449d3ab744b76f429b3997611e9edfcc49f021f65645ac5524ddbc8fe9f49d8820633ea37d9e9dd5bfef0912fdc1ba80500df637ca3701122f543e99df4f528519c6233fe9cc94e5d2591124212b6a7711cb083018647b0e7200811aa58b82b5fbb10d347fb64ddf7ecc1e526d69bf7d0bf9ac4287ac42db1e4e1d9037ed3d9624cd19c590c460c87c71e7c5055cf0b78318761a5e5b8ea36978ac18275470e04d8e3da440cc7fda0b2fb7857bc2a0bda4843a60d21c3bfaaf7e32f16de155a161e01392be4ef0ab5df2bf0b18a0aaddcc364acf987c625c20fcb90b22e3a0bd6fdd161780a58517012cbfd7086a042f1e13b3f337ed2dfb4f66635d188287bfdadc3bab7a139c3ed8d784c2773836618e440f2f5ecabb712c9116a0d8536419ce663402b427556e899d12be13a588c66565c60fa3ee42f5b21cd3a8febc2b906eb91a778baf31aceeb53acb3556007cd7752fcda896c3a4a41cee337e5e63a5bd7d3d9be234295ccc93a1cd3b4c171f3a7210306901bcaabea6776909baa057ec840813de6ca414318b10d18787403f9ae1a57d671cecb824163683d2e8f3d40cd916a9e6d63aaf5f69dac13bf6cbcf9562a915febaf7d95e8fdc956018e42276703719e4f0d7c698051290d59531e034f884fe7794175006fa69b6b09897979881187a31d33c3728eb87e0562213ae81f502108314c35d590b02b4484caf58925d3f9620e89d5e4272be9fc2bcd587d337de2b815b64ebb3dc542dda0e64ff6d6037fff10941f565cb6814ac3058945d4fdd79c3f97819906551441b1914a4b6c4346a34d7d05315eeffa813cf95b83767317386bc21f1456ccf52cc983777764c02dd9c5ebf3940c19c8d4cd2c1e6366935211884e8aee011aac2fddcb0646cfb290d3f7ac0ea8fd1ec20b57f67a28a470673c4c202eb57409ca729c4ffadcb1828daed09ec1223d758548e477e7e06f8d9015df9a40b964438b2c59261a8527d0755b468601d381e60826627dad42f680f33a83027246eaa154ae2cf04ce7cfd0eae34735da1ecd1b408f4d41a9278115695b16a248cb697366105585a863b4629f6a6899d77dca911091f73e33a812f5baa98b3460edecd6cf2bda734810a7412943426e8d8e00e24afacc681379b92978ec8e049f34b22de5488e9ab25a7bd135ddcb766dcc95ee688268ef957b83130c6869bcf0bf43d606209c5071b00e32a20cd6da4bd4cc5492f435a62561348e3769093639c533570f22b9ecda5aa7c2773753211c68672101694fa491eaec2005a9cc439f773801afe423675efc54e302fdb5e09b895316e7ac8898343bcdd91ad238211e3318ddfe0d86c5ae1c6d83d791c52d9b35496b8ed9978a1c7b5dd00bc6c9697f39247238c2042258025121816660ef0c53a49995cd9b45ba1712d45695472b69d6757e56c572c0f290ad6225d35ca5e5f564ad2c3ac7fb0aa41ac346ec3036adaab5000b9c58d8861aed031b0e627a1e665c36dfceebc558f59df5b6235ee823de9d185d171a9237a20811d9b5e4efe508fb9907d25b6849dedff9e8d71fd0b2cff2f8ea8cc1a7e98b204295f267dae98a6476d99f9eb73499fc918e2db191b9decac79eef1b046e9958c32ff1c8bca28c125b2b2340f980219d5cc979eeabf2b2dadec09e43ea4bb67b136dd30cfcda9dbb611d899e5c3656d46bca5b43affc771c9eb1697b10936d6922c17baf10888d8fc10b4a891d4bfe5ead9136c4f79215c61d4796897fb39834f0440db29202211d82d2b16e69d9398fe33e22959a4310d274c67a4dc9ae6acf72abd13a1afb5fc319c3d5ae89933158c91ffc851e5e5fc854b102a047a0d30211afda1cb548d279fc894f1002c3721e3229519b560f0a71bb648149bc763b3401b9ad57704139a85d936bd0879a820f90be6ea7d78b6fe1679d336dcc2f776a3373e473ab5ee54f5e0a8df6114fd0e2d88ed6e7035d232eae1e4d785b417a43e06bdf7bfc3509bb4ad808d39ca785673436a1009dcce6cd055f10439de64652c31dcac2b65ec47264fec73581f8598f8c318bc0f8d0eb929e7c4d6e5f012238e01e19b1fd6b54feb463912e6557b65741ff8919434e44e04e41a5caadb74f3cc0254541c06faa480499326b7146499b55a2fced4dd416d5a31779c8de5dea938385217832cbc605788ff4fa96e24fdc3875b52769db18abdc76a687974925a52081043864ee8e39574d7f27fac30650eabb1fe70d5d7bab946b234d1b8ee449f08654ac868a22839924b9e7b94175e60c5b575263089b525f40d6f76570d2740095a43696a90f486332f45f4f6ee2d1d55d4b3f2311637a9e73f921a56ea0529104573b25b2c48307adcbe3b2232cc04933dae07c34c491099c57dd7e4b393fe34db10623bb35b74ce92f8b1892d24b9fd88eb7cfc3d1791b0bc3bddebcf42592093e6ffde9f40766ad3c21a67caed25b8b250946ec46773565fdcc6305803362274e612308b8b767423afffdb27239f3b9bcb8e70bf0ee68cc8a1af4e59f6972d7c90b182d862066d1b83ec044b259b398840cc736ece77dac61d07e4b338083a97146137dce132a2a8a0255d1c5aea80b5e0095b6181dbdf1fa23317c74c0e25cb86b08c4136065729777527f49f407256d36049e4c236201174b312e80090376a2113d62058b659f63de5b8695e52fd178c573ae0e14f205cb2fd929c9f09079930738deea7a2090288911af17e157d6c9ea4bc04f6264c81e4f3b5b087fd17a7c0b7eb631c1d1476ddce8be398fb7f576f3f01f98b823b7e8eca7cb3831c0ed3c036219c94ecf5a0c2d112f788d73a432394247fc0244de10e28d4577ecc084c521f0007f3a6215a549abb3091e59c6d6cd674c8e5775acd276c980033df3c2143be0589f65da81bfab1dff81e6783f814980bed3cf47e51dda6424ff43c2a82e966c7ec5b197a73cc580919db591cc522f87a561ca46753679b8d26110d1667bbcc24706633f219617f620958cfc35c1d70e034c0555bf76d9d854f8e5a0a973b88cd6096e5f3d2a72f3196f4bd42b32d6849fd37d10df37225b0cfe05c1005ff528c59352ad6e319f77da2ddf1c94b8b7e7c7a25c7cd15121540f31ec51725e71924c3616257756be8d404b53cb3091c6c3a11940c44cc8808426305550f35f9a4c5322222e661561bdecd8ace024f4c2fffeb3bc1bfa7f69454f6699d36dc42f35d78130f04b39ef392c5969a4d8de6d5271ee7a32af3f311386857fc0c21d053bae00a066ada63a28fd84b0fae439f1060a7b633ea07813863162195125e00d9c2aa7f25c11c981794cc97718f22e3cdbd21701d6f6f5fc25885be6330ac8b8266bd64a227535648a926a002345e224cb6bb4ec6767c1f1511c2c1753def927f97f9fd620c27eae292cca484472b6fe5d68aa58d3fbc772153043073308ec7c0a37c5355c0bdd43179025aa0e8d492353849fd7accf1a0acb7507f11281ab671d69ceaabbf539eae572f0015426f5e9a57e8c4d4d92216a93027572c11172cfb505e590e4d5899aa663a5ea32d5cc163ebef26c92908e15fe3c0705d06e32504c7901bebbbe7de2bb3f5ec28dd50299d941b24242ea0e151d747e129357f4fd6c98876dd0779fe40a7cd386f198150b43d5fced11d2906915937905f104a9ab5f0d05ddf227110e72a6c80a7878e559b5d8b1fd632e851633256254a22608358228feba5055a91dcfa6f702d55b8a463f0e0dd4af11872694e1b38ce25e8f8b4ec993d38223eba5dbc585fdd5ba53b179c20a278181fe3a0d13a7feb333941b59748b2b06b2c51d6c52d0a8bdcf833628cc30787d9d16c0991bb5a523a92da788563800133ac376a6feb09a8ce1de5c1ac1ce128272cdacb42b9592611e34bb0848a05f3c69e274b33481fd2b351ce7562413c2b2eee4cde66944b64103734d44e69b9187d0c98ee204f539c59b2374eef044e731b1bb3d06465f37d16634579e24f7ba512a29204e0e3fe7d89809914e41b7ad8d17e5ac11af5246b2192c833af76bad3906f95683240ea619360d9a0ad9e7e97777e2797180447e13067cdd4efb5ee7429fc5b97e80d3f9b8396b8d2df51ac47b434ee0109b0eaa22f854d4de4ada9dcc003a4a8e147ceed375d607922b59a50312813519571e2a526774b1241513f77d2b53d3d435f141c55eddad14021ccc542ac37aea8e24b9331fcceaa35dec147c114e181e9a6800f1748c3aa1b425d532da7ed19bf10ec5304900d6f685acba0fed0d7bde86d5d5dab0fe046efe66fe78b886d24c097fa252a7a9151e7ba2cf15798d1cdc07904c8f32c1853b8e79be4d344b6d8820005ff2e11ceaa7833e1de67fa3f64637bf20963bea0a981ee810562a0b8b2dd532e01140421a975d2e7f39c3988e99e5cc8116cd9462e2f405121dea5a03616d7fcad17ba0956b84671d94c524efaa13b6b0bcc15b98b6433619bbfc9736d5432fc5237b9a018b716c2e08e4eac57d2b7c33ffd813816a0b01f7d09a5afa082e1d10a327247e0f086f3360dd6b9b736903a518390b887a6dd2f5cfa65322e5fe6dd801ce6ff44388ecfcc02ab12c562f55484cbda45465049da5aba32131491f3bfd92a1f9e85fef13e622e06445252fe64b42680ba24d09d0cf28c9f517a24ac14322d57761c1d53491940ce65df7c1ce7b6f766409f66f6ab4a9b455df1de0316ea2281d48f8f2bfa74f001509e7d2222b7931453759b1cb0ef887335e62bf97aeb1fae49095be74c11f89ae74297e22a342f60ff851f43c1e695080527747f9326097ef0a6838a1f46daab1f109c4e921beb2ea1cb6a334dedc57e55e58469aea61a185933a8a4c5fcb5366487d36541c46f12d8b830ab05c415cdafeb875eb2031e154fdde2d07437c0297ba56e4416cab08544013b2728a42ac6daac513c436f3e07dc6aeee0957297b17c242e221c41187df1fe919602d84805486c0dfe8ba108bc4c5b95c300bf121307d465a3b69f99fece83b1ddba11e3a8ebde80cedaa52c7b5acc9d0417064415bfb6d8ff6ff46444a62619c9321171883977194fddaa0fb059c29139fea48955b1ceddae3ac8051923472d23f06773f49e6624a8f2ba23b36a6c574d85b40f701d705c983ad5bce01bb2d031617bf8b2769ffc90d2ef086be32b2e84cad752afdee010c8e26ee09ea95e963b57e93188d4af84a71a5224e383a0dde184ed343fc59f77620045b9d6cffdb1a89ef0d5cb7e853810f24523a211f2a2fc19a49729d02fbc51b9674783ed4c7c0ef070c6b47413681ee65934cbc65777f92d13f01879a5851ca57501b5cd016cce8e9902f4379997d5c75b3558161552ebe9eb325a3ee76fe87bfde3d2cb44fb9009bcf14ea07900a9e120367d6a0253fba1b57f388efab647bcbad82a4ef8b5a7158c3d0ddfd134e568c937375a9df0304080a5ae883ec3661b176c272c7dd87aa40f209c9fef9d07bd102818b55f3e7a8c0e06dad914acae44f9023a04395e12b1d41b7d425634c748713a709547376cff51e864654c3b24b19d294b99c5e61abbc2f270163995512a5d042d94e1df1b49bc9f2fc814d7409f97758487ea49b276ce60ba980b9e2df67e1a186a18ea60ac743f45714b80eeb90cc06d7158f6cf09c54a858fef698ffe7032c22de1618bfd90bbe8dd7db0aba29f53abf0aca67e1471bee1c871bf3595f423213645b9dd88a4153c7dee3845194b496abcc0104997fc89eebd4fc72c5ca73cb5789cbbec9cdd9cb0cf9117718041860fb2073fb3842c45cd1a8e44a295b3166e1ab0a5a18aaf22575454d4d3750aa838944d1f5caf671d9402cf331785d83c50c29b2e49d402ce4ba32516fe1b37c463359d7cb780d3561ac8c6ecf1626d33aa1b482f343086e740be27175fbe1cc6ff2f798b9cc96e2d88baa6d80b0e443374cdc7f11cda7def2a1875595f6980d0779641c9777632f7a5aebeb48f3e9d01c187695217de185ea6c99cd47b321c53c26a83cd2f749612ca143a2a3a594c2e80c1ec90d98564f2a69e579f9713c20af6a559f541514a7514b8fd88165be486e825c3de6899e97f9e39a1654e51ed9690cefd5e225602e68480e9f2346b3f8d61268dc5f6add54484b7f4bf8fe086110f74183a0bc2515056f9a0bad6f4dbbd848d80df7a24d5d92a6b6b2b16fabc0486028a13b67a2bbe17f9812ccf6692327e78a5dfeb56feb6dda38c9ff2360062cf7128f357ab4b395b26880fdf80dd889ab809da70b1f58f5c1005a3e054f9c40691c287163f445610bdf0f14e6cb73e0eac5ab2fa5a9db4a9774c135e92200c27a34aaa2f3b9e2d568d28ae69652f1a351636492a590f79df0d4f9d589ba0651aa572a6cf9070a873ce75a200506ca74339dafbf0da6add65d5b5594b5b49bb0b63b398b44ff5f996115ce0d1b6f220b7b7b20049f5fc9f26e4fd8b7668578c4dda8365a9e79db99378091b3572473747ca3b4104e7b7bb1bc22988df73cc1e6fdb242c78804b4334550788a3e6a50a17fd8a0985f2449eb8554bc28c989cc1d9755aac8b33482d2c70525e102b4518f7aed260cbc6d6e7317a22e92b776183ccd105ac9bfbed1bbf0da4be0c0203a390cb9b488ed0aaa098ba8d5ebb9659fbf19b8cbc1b4d78edae8f5f272d2bf0303fdedd0e3de90ec360fced0ebbc85d612a9c396ba66cde481b92efc7ac9a1381dea34d170791896ea030cfce7234a0a2d2301bc79043aa7dfed6f3ea7bbe28a344a274fd9b9670b70cd74379a6fa1849a26609f1ef892c0073b7db34f09b8631af1884552a234f7f37263e04c61418b602bddc8561c0e097c5767fdeddc5deabac6308e5ae1c41565baa4d0bb33718486f3c655245f26b26a12becdc95a31819afa5729cbf3127bca5596f9d409301a32e80a3b7ec270b9387e88e9e1422b9ac903aab06f29970b50673222a3460acc1ed2a6ed45d10d3b42887d803e880f39141ce63b8d3fcaf49d87a9ec7f9720808aeaf8eab0ab37ab690f97cbc125be08fd6cd41df957059878d19b106b39e06bf30cc9d3c85f25de650f4afd295dc11025f9a72a5e46422d88c01972e22bf024fe61e0dfb824df1bf44d1f77db0118127ae48e2a145d82bcb537cc4be81e7bbe0e1d3e19b56537e7bee8931d4fc38a03d1c387079b64590d1f775566cf0a16ca2bbad3409c29ca616d8f91040a3ef52bd0b7fb2dea0b65f0841a03fcf8d25a6d7a0904a74ca61835e3e0734e4addddd167cbe9d3ccc89a0965191fd70065b0fc48f450ebd036f9c15039393ebd191a982fff506847cb3de8eed4cb8074da6076302b1e7623cbf5bb1ac4d6af09fad853100eb1aeb302717031608283897f3edb7e5b7f5768a363eb2bfe951b6a9c470d9abfad6ebabd17dadc0ec021684726a3f7daceb4acfed42084e70c8e721034f481300", + "04000000821ccb50796e05b15fde182e6e3170ad072e8c43cd976e191b214cc0b1bd9957f972fed3d6ea50bc8dc07827d9314a989ff91fdf51efc2506c098a000b9675c3e2ce3df4527cec45858a7a5313b87d0ee29b8e001768bc64da9b0416a06ec0210a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000300000000000000000000000000000600008077777777d80a1977000000001c1d1c0000000000025ffd47baa3f5a5b90eeff3e0779f2d3563860fd5b9d7666cc06abf31b105a8140643a0cc5b44e881a3eead60361c59cc283f1fad00138eb02268408b29029232df48832e00e32157fd299f16bfd4482cc933ab2ff4cb953b162c8998e03a4d05bb13c472eb737e2e3cff834999cb5438003c74df6993c0579033e56a1fade81706ac0a77b99cb933f66906bfd2a2402c8739f844ee72d34ba50a1e1e9486a73e4c7a063267570a483bac82673d954ab903345b291266f89526184c5633a54bfaebc05f6cea64c403025806e65d8e89cbb0ca967dbefb653063a35597715c488891d19d68a5b7f0b74ca44b7552aea2308e325c71f7199ed497deb6c755c6727993f4d218e3128bbef26bd03941a19b344e8e629d81f15559abb7f6881ef7c688146640b02a0e5a9a78e8c587006eccd05bb1d5ee2ab8d1c743391970a0cfe2da89d18fbb51bf3d6b9fb9aa1818619406b89b53200b86d8b3094e46a01a67d63ff2b113b266cd38203f05bd01cce4e4f39a0072baf5f582315a98575332523e967e353cc3ef8d1df1d26dd79e5375cf9bd93f804e4d709004967bc70b3ae79bd7a9cb67cd273bf3df4e1218ec3f67dd9254b589fc73d5ce565e106eb6c6621a5c2438fe784eb5d95efff8e3b008a63bb1c329c5bba077bc756f875acc5d0eb0d02d67f2aa04738c8c625b56c82cab932b05ae2e50092322887318df508180080e1c7b80cf66894cac8de85931e7fedef575e2f7146ecc4658ae936a722548c527593bfdc59acb58ab6c4f360bc0ef75e3bd171c1c730a51749bc95bc2ab4eb7cc3792e107c31239e3711f35b3094c207d73cb0ceea7643d175cf97ae6d8d221f48fd048236449a28b497b36ed3c817c161d4ea89b7bae5170dfc9c33b3b08f0a38e964eabde9f4020eac2a7b480b9dbc7111d67b45997fb94f4244cb8bfefd0d6326a9da5203ad489ebb4e66f382a5bf82e9011e8d3a44cd8b6eaa60662d20be380bb5f474e5f8d70585cef0c5e490254ae896caa9bdc42b85c4fc0cdaace29679ade3adb96628241c509aa1adf1bdd633850f4df4b24765fc4dda5feddcaa6de3a55d58978cd71c9fdc5bfc77b33506ff8b198dbb4ba4cf3d6d4da3db5b76cfdb26379050cec5d43ecc5edb79d046e56ce8582078f6dae1f9802665db37c5285ab13076b7910c0d230f090375c46e44b0f142d540e32b8020f271de3f8ffcd2a9c8cbc1a7f5db56852ec2e9078731d724824ef0db06e8eebd7f111b7326a751086cde390eb42268a8dd44b7b9b1362a594858308abe397b2abc43a57612f98d027afbe7a5d3035c418bc32f556c8564c0901f9aa322de146697139f8801fe1f4836a800dd0eb2033d3b1c79b4f1b630b85a57a009c887eb4faaa0ae71aa5a1b9ce1dedecd5a9aeee985941c39fd28e2412193dbcd3a941c7d20e6ae310ed6082184c17dd2fca5fb27a1985843a6d92bfbea1c0ca8f7aa583e0336cb786cf38b893deef8f5d9a7ad8b096013090ce9224270c5ca0ed72961b44a2749eb99c23089258895392fc65c6181e59bdf0284a08b6bbcac67a394d3b73185f1c454ac279da8c360bd816131add0e86431a2f4bd018bf1e558bb79761851f9b6b1c198ece4e6ea28d4650ca1f5fbf1401306709d11c65829df6ff7b6a4b8bb55921ec2a3bd146728b717f31681c355cdcbd551e6f310a85ec235ba6014dd384c0118d9aec510c0ff524cc07a525b4e80cd1d2d51649cc6889b2240672cf91d9270ce131b10e839c5ba8dd5ae0bdfc943f9052aaf4e838cd0ad9074d845312f17f33a1333c5e580f48dd93b4c013ce245e807acc8e9bc89429027b3e782bd1054c1ed0b81c6f5b54184e7c0c3289dda890f9d5c21cbf13660d4a5634777d00944d6e9a91a560a7422b354fa46282871b9f29bf0dc7cba8547b19c53c16c5e9cf9986701d8d15ac5893d6f5827bb02e0eae3f589f4fcf153515406a1804d2cf8f62d765eb65e09d16c6dd3acca553ff0083ca089e62fa06898a1859d224d8f823f01ff17a2a53d2e27ba6eb1ace30b7f9a97049c581b912645ca1337d449fef95b61cee2b825716f8db4defd52709f08214e1be87c2a1fdce6c3225c10e72b0e8137dd99e2080a033af6eeb1ab4734cd25b822c7b6ab2060774df62fce9bdc9d238b679514b336dda53a630aaa419af1b4df7489bf0fa054c82bbcdded5f01eba9137164a023f495ddaaa883bc42edcc05c2361488731d9352278c9f9075197db5e29a1c87add4cadfe063c6a072f6e1fa9f8b1ddb2a5e46c7b3120627845eb9891cd09b299270c63f0147376065b406b531dbb2283bfbbd7f793de7f627685263d89308ac3896d62920ac548a7f97681b9c0b48671dbe6b6cdff66b3c80dd90b7f5aea8f2616a57f0c47f2375f070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c4e5f35dd019ce932c8d81f52f6ac4b4c7ad62d1513e1c5c445d10faaf17053387812744aea4097a7d1707dd944080558fe3569fccc6920fcc5edee87764c76b69c14f4fd2f140a5aa80078ac3bafab06214182cd9e26ab213ef6a424b4752d8b8b2b693f46bdd24a46bea270af5a4ff7fa74189ebcb1163d359d3dbfa7042509689bc397969857751feed4314241810eeccfd63998768b5a811277d852abb5a1e88196c0e6f98596ff2ecb67af89c3dd6568a4fc2e495559d85d9a043c117615fdc8135207ea0cac2c99648e6047226055013ba411abbe71fed3f3fb678bf99ac4d44d51224662036ac1be7e71d203934498d1f0489bd4e9f8463ce20e381a31cab6da793065a53353682f60fa162048ec3c278685200128c45ed315900a3111b2a3f36810bf78e75a36765a59b3e618177b61f6a90944e0e5973a573c9f048f17f1acb7a5e29889ceaa14f78ffcdbf9b83a3a8ee5233dde72047074853d78a6b7f5de7b73d0b861dfdedb8f2719ac647a67161803b611e5b80338be8f0012bbcbf1f5f05558b742a7d4271865a4e3c1fe55489ced6624aa329fedced737980ebcccee2210078dc20db162ee0da6d8f12d6293b9079bcd29416068e738f129991e084f498a98b41c4c7a8430ab26e0e06ed6115ff86611a29893b50c4190322ab26aa6a3ea878671fadb3b77b694dfb541dfd52d8e199569c800b003931def1aa79159208545edab077606d0f61947a571b6e7c0551002d739157c6f5fc1fd81a2e7172e9f480f0499f9162ff55146ea147508098c2ae0c723d8f113a9fc8db656a25264b4d4f1ff86acaa7498f351934e3fd113c2f8e45488360a40b0cd1e8be9ef9c323cad2df8c077fdb1ca88159d3339818c557e4ce14e8efa0a60f9ec0e474f05cf1478643238fe22a7ea8c74c555d37bb9555e9e733e07cbd25a3446847a3ed44d0390261cae0a92841eb6c49b20dba2869f3cdd0f33754e813f8b270d8d7c8c7a605541067e929ee330f34ee19f5de779bd0d74c4f82d97e0d794afac96f3184bf7456e8a6a1ae576889b198fe9d619425b3378e2b8cc97caae0497a3730f2adc1642f039a99b7df9d68e080e9ae10dfb93da507276b50644d8a963a0f381f5f2970725ce544f384ef4797e5cf686a0e242621501b3b5b58caeb4ce31d8dc19de210ac4744180a3698c1ccd5b68ba48edd1d242764e287d1b22262ca260c8e5d4c031a798684aaa48b739b19ea140db60fcc23cd4849deb5c3b3137331f2504ac002856a0e2a18bc613f2de3b0b615335755d9a7de9cf27d1ab273b93c87e0c03af4414f1586512fba9bba193ae17f636dbc8f2957bf28f31b2f7f53d3e4dd6f1ce49137a89a55549f23445de2650e4f1c00b22c6396c08a49e803505406be93b90080bc7e1317a4040810726d775090a6b8ff2ced7e1d150b21d3990d64cd3f943db519722fb8b4bc68656188e109fa6670235ff5f2261e4819b0a3ba1d15be9a6b39a07f579923924d4fecf753ff918356801b662ed3071753bc110adf8ace113d4bd09634b88a48095caa9ba92b2dc5bf8a59a2b7964861493ab25fc0e588f29bf7dc2b08fc95b27d8673685d313551aa6869ddf013253c6ccca39ca9bd71e3f31c77efb8b7a8a5d05afee6d24c027e0ceab5b3159632de281253ec3bbdffea8a9e761b4f1ee56047dbacbbf7d3c88240d18e4d2f625e24d2fd4922f81cd50895c276a738557723711934ea1705ef98a29d87527af74fabf3bee87f2813ded83917d8ebc2890f9dd3fe5d988aca61f771aba9df9455e22fff03e8565feafdb0619706f36b9dca969747e4061be9248ac3a23add9452f9830849e3e72c8a1b13873ed3759589e03f800f9209df6ff23edfedf91fb8eb35db90a1e31305ba079f6cfd6751c036a050c091081a7cd92f6a0b9099e3deba523218be28c11da50788de3f60ee17d78cb8d9f210365f94a9b938f37a5f4aa1c1637c596a04ac232242d6725b6b49b12208d10a47d8264c2346b598935fe0f43eb56e0361eea0a8a631562defff77b502e1cf0359bd42f1bf330664217a637476406e402ab0bcdada496cc5527f74b911a96d7b4b927a80fd918255830fcda63832500e53c4b5cdb90bc83099b65f18f4b84561aa54c7d2d969aa3464eaa220c59669baf9d7e08216d3b33c39f5573c41411f1a0a10c43eab6cb39be9baae5f828ce41e50352863a60c4575a4863482939f2d3e2db6414b0cf533468ca0f547d02030ec80c58632311a48ffe647a6ff5bf0defddee45927b9c888a8307ea592a3037261215036fd0b441aa141c7356d91031919b2f8e2f92af9134b9e42df419bd91cb582984da871da855643b4ff5bb4c5cd16a773c99688817fdd76b7faa1b0b1341de20e35209ab6a1016197fe373807f9e406214c7b9c0ae7aa8e4412c7330f88d053056363d0cb4ffe3c34b05727144ba6e418ff0c5236ff9a4bb716986c86694990d1887982d0d8c1caa1c471c793cea11b5fda1d346da4caa12e74f36a0fd8af52d743b9aabb1262ca1295342cef187f3fb13c1e565f7bb85863f86f93dddeb2613dc2aa2db4259e9c086ae837c4e8655a7e37a6e3801c6811718bf76704804fe276aaefa402ffbb5394227225f69e1adcc7556936bac642048dd86b35effc30b0723034ad8fac787a99022903d8b074cf8fdadb8ed3b8cbf75006acebf1d110534f3f533ae921c0b78ce67452adc26124ae25dd9bfaba7d4914b379360a812813d3f5743f889a442d4b6d437b1558b97e15a5db16296f36cf499417a484b4eed0ad96a626149a4d847df37d7a88f7e1773f89a26ff26e90b930fc2a8494cd6170479e0457a55b481b045dddf6e7362c99ab049d097d3251431e61242c819b4d22f70db675f50a7dea683a71b66f7f91c6ecb99c019d207a6edb7ca4f9ffeab7e29aaa723bb87f14efb2fdce5eca874cbe2e6f8a1801d1f7faad249cd9bbe72913f121b8ac6fe1446a0b182d661b0d8594f52e971955322c9c6595840aee5178518853df56c9676206ebaba2aa04f8a20960e2b5cc3be71681e85d686ee75cb2a39cb9b6eb6b0933f34a49487839995931a1c0c4f804c1f9dbc45c9996811926a0e8f9cddda2e7d6c946d70ccb58717660a1c8bbc7bdf868849de9198995148b210c81081f7515983e9e7cb807dad9da48aab614439811826d84a1f97515f915109383260e314f80fbf1f5606509db8f2103ea1788570dd8d452a8b2dd13fbf1538fa9cf2e9c9fa3d12362fa93d496d1d770c71516c794fa7a442c2fb0395afc70d900847ca74b989a9e400d3fd4c5ca81c2211c856126b72a296513fb401aeed0892efad767e23594b6c4da91e8e45779c76c6c94cd9a02d0adf3b9ded9bed2520064891d9fa14d4e26a311910148f057bfa59684b73813264a2a901d4f953040e2a277a15089841f12882b2e069f913787a37f7f9671be7747f7abce6a97e16183d03c5ca8f71f38824c0b2e197b57f5aab474201cfe23f90ca1e7a4f11e3733b1dcefd8652a7cf727c5ee648caaca370a20ef0e658334520c38d3c78870a9b3824ae09f4d0452dc5adfe57192007c4ee608e8594e7bcb5a8983004f2f0271b1a129b5c0f9a9a5435c9116c86bc33b1a2cca7b104cccd8e96a31618aa869f011056e5b876f257bf9557381e4e812ff830ed34ae2bfaab746c49e65b0811dab906967440a6850c570aa0a80f3bfe70996d14a1a9a3b356562a2bed99c40acaf107eae6809d0adfd64bbeb5045ba87073ed5714a13839906f11a0263fa078420606787ee1d0c1fd90dd8cd8f2f1c796604d54826d472df55ab8d72d20fafad1ae39c3dbf0d54c1b38d84e8ad9dccf402c27448364a7c30c169367386b9795f27e0b0b56b00facc89636a1b1391ca960f8e0fac566eadfe44aabdb359c9efa8d3d331b2b6105d5403730d9d180a6c65658565a1723d858425a078e6cd8d9a73c3e1fff7f57c2e12ba17ffa065efdefb1b78bd8f9221aaa227eb21bc4dec5d0d01011711bce5dfb699f2810f2fa15d955c9b71934b28e2bc0b1e37b075515690f870ca8324ffbb1ccce79a1fc706e78bbb465bc37034cd5d5dc6c390f1b41cbfb94256b64253f2f43657968313cb6908d8061db87209cf3da1050bb8a757dc765243e42590255037bfbec6701406049e81a5326d5f423a0f189ff94c32a333221882636fd5b98cdc9c14731eb93e9e3564b3b93ea155faf3eabafa21126a0d52c8c3b514080698bee3bba11f5ae26b5d20fc7f0ab3319bc5d6b5ff6d63a781cf1d02c570ad8d007a7c27e495437a2f6fa86f38e9343363ff315ebd95e23d57414a50dd97bb934b3ac9bc5b5cb6742c2f50d746590cdbec2cc2c025a1b6abcac53171c04ee700a6ea6096d462801d172680cdd919b21c80d7b0730642cdd53f10b420799c09b8e03e5a0ce59f1870fd90a5ea31dba28da6d43b278b39f0edd2d9fc82929e2f41d737dd9ad010c1bc06ecac08030713bbf9abd30e7f7bea89bf50f8020530dea34e2127c58e35d9268c1e7267cb00bfa9ebdbd929d5eb0f686d8927f28cd8e2d6487a99523fb8704f426d68d27fd8e843b880d5e1830d94c66537c36263e231c78baee3d32836658aa0cfa222377bed6912e61c6bf920e28421062dd1df2ca1fd3524ad599ed2ebf7ea512b7326e2b86a2724c74977cbcde823d5f1128c8061a4e6edd0e180ff55de5b77f37cf6c7b50f1be0b4d1d8b6ea176e14ef03593024fa9a801677a3ce854d53fb7dd0041f47c5c466a1ca103238ff5648bf52fccc159b34e16196d3e91ab6a92571211f3154ab9b44e25d546c0539e2c59b428d36e5c2cd272ed254500c49a6d09984e221fac248325ad848c01ade7319a3520c83cad8fade9995048fc2e377b91a0522200c1d3d38e54ce2315dba3d792c12d6759f17eef0edb7d502572f6e3f1bbddf2002e2807afe73cbcc481572ed55f11b920e0d25bfa52f10c00c175605eaeac91308d0512e298a055e05de156f0d633c3a0c73525e62d7e5c61edb032139f9aa7d55902a0fda39066fd662b782f4405041e3f54f29781b264c4194d1464335fea1e618ba2a6e5ba4b62c8a5f0d694254379ef615bbe3a66d75cc329f68aeeed52693d63a0f66f794d700f72d2edc303a6e57ae7f4c0987da01d7de8c60c263ffc64c01a92dc1f4d066e525ef07c602af211d442c45e23c1f78b9060a95f3f102b3557dd3fdf5e673b02a23f81d91639a936a656c0c877ea8ba7d235c78a91b09ee51db1e5e9919cac5febcbd39cb70c95ac9efb1c547e9a7f88399e5362dac5136b3fb3581cefb79994c01f07ce2434d891d7831fefbef2bc7983e7dbd9dcd83d8de60d0c68536e8fd5ea14f5d33b27fd3e2ba87cce7f94d9421210fc1989758efcfd4bb6ab8dac93be06477bf57c02840a3a6c7252a91bd612007b1e0568b0829ab2d41347594017d337f06db94c11c35ded31fa365b0874cbee6000b9ab06eecddaca8d0c8fc064e4ec96efdd9e2b6cc3992bc48220f8f1f6ef697063d0c46a617246641a73c6c3ab3d26bfaf8706dfd89adbee69abdd9f198419b0ea1e8510de1b92c616ee2eb2725334bbfee90c13fb8742087c0c70cde18a8576166601332aa002a347e65452e2a2237cee6705cec7a1e2425fa6044339b63bf5a047ba52a49ed6bd1e88e4d6ffce458480df30afaf3ac08037e0dbe7a6cc95c7842909db75c6d8e1731eefbe358d7773c71b1aeeb77c102780d48018f417edc1429ee3f3d18cdba62e6b0b4488684967e79520b4a1ba5a8df08f892253e1fed1915cdd201e87d75c6d1d2554a99a341e487a1654eda35019c7c38c86f5c75020f7f9619a61150d213b99b756924f5f9895e71f49d172a31028270f39dcc1ddf929992a516e4c270ac591674e6ba2c13dd06e0b506041e8942778deca31ddc84f4262ff4ad4d81e531cf16d4d041f3911441c12c77ed92459409ab65ed1949920a684e729d0904593d7a42ffbceed454a9cd23eb7e1742bbf6effde398f122a8443e86c272fdb97ef9455f33ec1161b73013800c40bda9d301d96758c6de69d103c430ee0192f74956b3d73cdf3cff36850d0192633385b19d546bc8f0b1f9e3524757f2d4245646a218b78e6a9f4e289b7882910167b2cca4ac0b90203e5ccf084ca174b16b6c0570f6d9c4e5f08815017f92a4aedd6d5cc3f40a4b9384a77405efb4b87a15caf74bc5d04197ca425592c0900484b814b3d1926954716e1df3b7017a22951344fdf52496f797562f397be1a3ef6bab299a518e7ccda7e5fdd166a6c3e94debb1930febcdc609b93dea783be0d009656909f18ed83eeac7cfdb0a5954dc8b9d604db26c6904d8ce0abbef49d005d2b718f92cb54a7adad0d106a0400ba35808525068312f938a58963d7266f1829495bce11d4c0c05073ff5a72bb508eee9fcf3bcaeba833bd03edd36a49272a1bd479d2408c272e3badb2ff2e6e036aae1ed1667b8bfd538889f705c624b93f37293759a9bc6b57833ea34b0973dfa3171bd9c81715bdcdd39a1a5a16645532b276af5eb53fa910f837f367301e75c8eaaf25dc6842212f5a43b71a6f76c92d600408f82c64dadddd2e72075a070e7e62baabb69fd006132d441c4f184c5d0f869993de13d03ae69b61956f37f191f05b24d242c23bcee76e5ae1726a296b1b15bae2365e9379db640dfeda8d9c7d12a653252a104891a78fd4aa3971af9731c00ee4e0c2f2a4e4fc6e50d67ab75024acfde2fcba159829904f9b27982f2e251f941d897bcec7ce91edf7156cb1754e27813c59d3bfae136b5fdc4ec32e7f17f5d4c4d078f68e91ead670d0cbb30054f2e90fcdf204ac0b99c8c435d932c10ba9267de7a61d791731e0d39b6927f8d8c4b395e03f239d84b717021375480b2c36e3b110777eda7b9e67fbeadb56cbd75ae21d5bbe2f95bd5a2d21ec1a5a403c619e55e46f332c9f98368823f03e4bbf12041f138dcdf2423400dd940062381e75ed02772618afbcf1bcdd949e34afa5bdd0c25b0addc12c1bff4e7faf0a1608d0a36b250d7997bb5711e1b6c74fbf391bff697982fa2b388f1c1934483517257f23bc65aa0e32b5631cb27606e552c49d8376d70c7dbd53570b8d92ea893d3c7b1bc8f62c174ac33faf08269b8d173605aa9a18d81fdbec0e392a6b0910443c504165eee0571388028e1512b8384f60cfcdaf2ea17b7e9c1be172676062a02de0409faeb6f0594e0fb6e696d6605dcf8a5be6115589e2322d7c838bb06f7908aab838bd06e720a051d07233bc7bda3bf1dd16820777d5f57d15d8ce486c9c0081681824871c37c137be3355e8587d12417caa506e3c14caf7a1e9f2d94d6c15e4fc132b2a62f4fef4d12d118ba9d39313a212980dd0f4d7a177cee3ed87f02812f6c2546004e10249c06aaa49a01657c7c7d2ef5c155310e2b69bf2e2b5ac3beea29add230e49ab31149447760e2c54745a77fc33127beb384adea5efd15e17aec6db9af767f1c1d5d7b2cb07c3b193acf0ab44c5804ae5c3e382538cbafa1ddfc31f1448eaea7b0a7504e9fc5256e4dfff39ee61145fe246856fc4fa93d22154068a45c9c12234f6e4aa3748b0a5418e4992a22eb18bb8033793715318370834424065bd4cab694acffa6f0448a61844d4328eb406b72b3c9b2b610b5eb50007bdfc74c7feade19a2459ac4b21856868aa06a2d175589dc86345b311df552ab8a56a724630d565e4ba55a1abb0946a0a8d6e2bc453d4dcebf1159c82b98816c8584ef251cacd77c3ffa104ffbaa96a90d876145fa73fc5fff5f5570a6d8d1580e1c4cce5b5f8e8a5d2b1d20b41b4009c79ebfd4a8e1636f6f93f12593f0532d565ccdf90ed011e0ab0fcb3db28f10535ef5e93f59851db610641feb3bba4190f3074e4257bdfed4f05a52c98c380a471bb3b952488283be1f14fcad4a3d219765b4b2b3421d5ef845f6c7b9ad6af6b66a75ef0c03ab4f2c5150c078068943d1e89d298524d9e9cc5b20c3bd03d89d7a6d3cf30b02e17516e0001b071b92a35d245e0c596071fb8dc53e53159eead8cf86441e0348a0a951d4a2ce30274b423bf3cef4e5969077107e166199d2c5714e25e2e0bbd8db356fcdcfb3d3b8b04066c193c83903ab0f0eb18d2faa428f3104af484d07a96e43ec593a5a9bc6d9c2176535fd5727a3acb3ab4b2e9e9a570f06455bf2b68cbe461743af5466bf7f8050f5c7710b8cd086922c098d4c9c26e53708c5523c0739705505aac79ef65781f226761215eec4cb44f8317b2fffdb15dec242532c0cc8db35c117a35278c54034cdb69bb5df20b8cc8f1eff23bb6e8b929a130e44e0b0812e937fc89b3de0a13afe080628083e386b703ff58a07fb599b66605d12342bcd8fbe69ef239f3ec30bb2fba014ab66bd3344d60786edcd434fd3a19f46353cc0c7901e051405544028bb9dbb1ba427c4b6e6b5a3ec8a593f0832d6a61692d72bc6faf044ee5664b1a7b5a3d38fd1a1b436b833287a162ae7851085a1f63bae8f2fe18b09c603ff33bf0b5ddd6cee3a4b4275348c9835ef59b44f2db1f828f77d0b7d8df70487c91205dd731d9d516d9cb6fd88080f45312c10edc4cb8729c7e71fc9fa87808bf3a3099918984a60eccb1ce433aef537927236f3e0f59fc922b0ff7d0b39fa53f7c19b5048f8fd2e9a3cbdb8e6d7d156b697bd7242355bce57cb3d94d16a5f9adc607288f3ec2641d42eb3303e0344ffe4e4cad5d58be766687da989e8448a5cc7c1ca4ddb0e6cb4f4d22104b1d32f6dc3632fa7012ed5e9d5a2111dcfb62c7666e1bedb86bd966f9caadc2ba81da0488c78352f7d3ad94f35fb75a12272754630a20e42a38a52c4934c5d3bea8631f590e31ac72b485478b7d8ba786e2bbdcff8d22a0082034283aad9f28adf92604124062230891d81f71872c135d234bcb76e82dcfaa6969b84c9171805683b4a419f41a830bd88a76618ae387e3a69254ee920a1375d8362b4e038a2e2b4a98b1c181ae9e5f24b19b07c5d46bd50d0e1e37502646eceabe404904f3813c243675a8322f853d45614c7d56fb8667badf80b87b10ca9d2363e37281fbebfaa303a7366de81d92fdb81edae1f057fd933523dd0a0b88f33140db7acf9131d23420c2b976156d2bfd785e9c8c7c7a520abf8b58d204ef04b5f5f9424c5f305ec6d97f582627a9f7b1d124dbbe6bbd4a36340292b70be4278a0bf1833f90bec6598d3a85fd10c37d2c7fccb02e440deaf2f191492c242d84f09ec1e0a034843a5fffa7c63cca1be0c6c378ce3ca56bde144d25b52412b27185ea5d4a3f4764ee54f0bc70c489f6d81e8a9c7208638f9a3a0bac5ff8b857a74cf8363d05ee1d8f3a166cd50701e0fe692879ce79a3d691424066b749abc3e738d5647bb844731b409cde36b48e420348197710106d7cc0d216cdc677b81c4300b93de75630c4b3e117cf10b678e538db372b2304f314a19d41b5534d9213d408155635a716fe42fa7a03ad90cf8866c124e99a66405883e8bb6f9a502937e18db7c266d8cdd119d12c7121c580f83c2be68d9a65744d77e15c337fe898e1b2fadd3b48b4e03d08d4cbb2bd50f567c1913084eeb5dd249c81b71a1d3a20e2c0d6a8fb7f2099c60904310e9416d9b34407ab6d32fe2bba4cfcf688c5c92b34fa937b7c5345fc8724085c893a5ee567bf6e3b2c1adae130a72f2a3a16d8920cd7e6b93ddd1352a13b1505cc0cf4b00a3ae34a00cb2f85591672068027403537fd0721374d5936ac968952ce66bdf64318c927bb6c184a880fa15e384a3112b78c3969161d05b00c431ff94c55f794c150ff7bcb35265782fbc6ef4903632144809ddbbe3d801f67d840f06a15f966775826cc19fd1f431d9b2dc8b552ba3b28eb47a6b96a038432ce40c84eec8854e48d1172af6aa5719778915b64cbf2bdfd1df50cc32b2736181d4664ed8bfae97f49c20e30bf9c4ea8e67b53fe74afb41c63b12c30eae8c890a5ca1bebc6ea3d553f500b755430896246cf8f4577b3975759e150ec920229f0909348a612900466b5d66e5e2d331d6d9aafabb50bdab70c93cb2d3f6647ff3e399e06946844e96897d74d22795ed647aef1526ccf5dace92d9f5578c19b0d4747d50ab9442ccbd04807a28a35e0df84cd1d4e9c8dc025717871bf8a9f9495ea8d6f6d1687cb1b3c2a6ccb25924ea8c6ad9dc62bd510325df9f6c52c391218b8fb35468e6a855878f17f6d83f866cffa34a2d1f3c21e17cf28514bc1b80740721f43424681e4b421367c296b90a75a116d59c3bc06aa93cf2d809158a67ce2ae3ce452706f919af9669e0f7ed795a3c0316b4ad876d292063107e29e7374826e95233a7e66a89cc7fb4a6d96487f2f2fb1d68df0c0092201b68d49a7d03461d3fd5927b89fe693bbdd3cd201155aef2f533edd651b1802f530b807760dfe1b4385c3ed4000f6a8118b0a3df4c412e79944e444fe063d340f4871ba816c772ce322db4e55348b6e5046b1e6cdb665ef7731e4dc58c93a21102ead248952e94d44bd8357a49f2641bb636285ea307eebf48939441ee1e31a03adf3198df993b59a995d271e9b851fdeac457d6355f9c207292515c0ac2b3801c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce9458607000000000000009ff3604b2c9238c3575aaba36bf28511d83a0aaf443d53981899c20be308112327ed070500b374e359a90435a60363235ca445da700abc2c3b962e89ddae2404000600008077777777d80a1977000000001c1d1c00000000000234ba607b674dd1faf18173ab52cb86ada65b24659b7ab0db262a4d46ef6307813610d535a38b024b19e566c3d73cb49c5dc6a73457c658fa61aa19c9a669d70823c009c26d2c4c5949f83ffb187b8d03a7e05970d87668b9ebb172e5b44c4f300bffbdba179aceb954a3d6da0cc8e9f59587e9a4ab1e9578466bc9eb508b791bc0497d33ffab8b845eed45ec6d6d9072da6064b0afe5eca2b8e3caa4801e04990e2ce95ee1594a1f922a2ad1e0550fa5268c2e1486785a68ad25200e0d1a1fff176fbd7f928197be17c9ea0d4b2f1987cb4c5d4e62ddd8001803e1672d2509ce5607d0ada2ebfd792a4eada56d50babab5b04f4999d97a78f2fc35e1ff001aef6c11bca252ab1f6959508604fd29f29642562b862c9d326655c735e7e9ff0e5b539d819b0ff9b7594947225abffd69d94748a59b5e4798eb4f0d9f41848da1acc1c42ba1af1a4e69227887f00de8aad96af6043998f72164b95e9157ef40f3253d38dd577c636fb694a49fbbeb14a153d3615454c5ed2913c49454efa45880b7e81c288c34793ab18eb68dddb3b5eb8c6f9ef4889d0fb8d3a2dd58164e5edb536fc705b63b194f2dcf384c026004d3aff29e11cdd17ac5c71c26d30ef20b5c157fa9c1c4b33d9bb95cc5882bd36d990fb12700baf432d820f66283742ef447d962088dddc54a21b162d0ed191f12d4b335b4227aef5583bd2a7639a275dd3c6397d11baf62a2983eb982d0d4e5bc64f8bdfb72a5b7f99c81c4af1395d153c9535ae61358ea5fd933e1ca35dfb4344a3a096236e9c777626575f9773f1ed0e64c7e67616b36b48d9f481453f8815d4e48601961cce17d7e5cb37be71839a205a208fd7d35652247b32d384453f30376c2b0dde5d64285c86ea396bf919978de33d5959c7a2bf9fb5e15da56ba2b11b805789d994dd44b5b39952d90bb9cbe0209c63123cec7ff2f2da1c1ebc0930b0e3a03b90dd6e58bf83187e7b71a9a5264fbbfeb90c57647c5d6de4752ccdf657a95007a21a6d8e4910ae99c90e98bef3ba13ae57614499747369bae218a8fcbdf074b48a5f374f74e769d02af067b82283116764abbd30fdc9923a3995d144bf1033ab26d3197ab184748b4992bfb51b0ea22cf3bb574236f2209a2e1391f153b706d5b7640e8a23778332fbdcb1e35cdee0bdfa55c35b02b793b6f2fb01893363d01388391479aee427cc977bef4cdd250e78a7f0f39e711aeb13be5f9a895792dae2657ac2789d2f0a5b0b7a9093fdafe072883f6842e377b05a046488db93fc23002a40a7315e284aa164b2e144cd5ffc6afc8584eb5d52b21b48a924e257b72a180792eb6f8f0a5220c0db0fdf5f5d0a0aecdde7f194e88369ee5d2efda82edf85e8d20b69680c677a4ed53eb33475b9beca2c560386cceb4ddfbd30292b111c37530ae6ee207b87fe5b67b5a90943e2a3c43c66eb8f9b1b006fe008f9da8791e71915349b9a9652d9c508adab7668438eafbfb46288de70ea1f96a32d36ea48e0dfc3fbafa1ea69d28f2b3b1e291a02823229ab70510e1fc102e5df0f6160c7af5ce67e8a6dbdf5e486d285f2b4ebcfcf2c10426ec94e0886edbcc0727b0703ee6ba3a1f7d4a5ceab9386123e531cab919407eba95c72314e0237e4208e22981b912ed9c2b4cac88a8592fb62d648846bf411b886a6b89b83ad03210cf072b00019dc6d0e541b6bb9a22ac9b3603ac0ede0b27cf0998333446344fa2cb44350f9dbc5d557cbdb74d335c6bb398ecd2eef9686763c1f21a34970e810a8eff7b37947fd455ada6010eb00ed5f1f92395ff7d1fa77b05beac74c53db704530f54a5947187366dedae6d48386d68c303b5eeac6e4848607890ad4c4ec6fe25251b4727e8cd22d8fc8972840fc8d5887ce647ad628b298e15f9cdd49b917887e0f8e8ebe0312fd04f3871c68f402f8dcfee60e81283a66f1725ce579861c999ede9f9e2d976a83253ea608b66ccd6ac83359bae0d060adb0f5573ca385446cf54f14fa3231830ba0243fd574aa8ab787ef0150be0cb9c38970043d6fe200fbb6d03158f33f5e3a811887ca482b83122242d228451449593c8dfb33190298e873d49c01b8d0b9ce8851e60e65308325bf3a934054fcc53e791fb117dec249e9836d466ec94188df94077762d8c12e8cfcbac6a9af9741395ee566c26f9e5ef21d7e08a0453fd22ed3228f9118bf2606e87e0e0d1e495075f348b16701162640d2b805fd4d2d3890cd6bfd5afb790ee9163e30d55f8015ee86b07d063dd0398366e4cea8379c951160896d3374b1c39093954117d7e3840715e3018b917c6ddf9c47869bb01a71793b2d414c252cf62e9d781e29137f59978d39b8ff60d45540bdd2dfc73dd0bacb811267b486783e9e9a0d0d5a2a161e082adaa070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c02f3f899fc0cfbb1beb2f0a6b1364b43fbfd5e372a1b64b90685c1b0750cf93993917608f18aca5ec561fec653860b83841a345f03b0e9ad5360c2616b8b511f973cb8eaa583b1e65825fb0cde26316a897f759b9c79d96d4bcaec217948791d524ca3ba26457a5b6f5278171729abc58fcfc844a5e2e9ff048bb334bd46692d97beb0e892e144acb380a1a2810048d5b4226ce2b4f9bd020ae4b26ef3d03419236d3862dde808d4fbc7187da8d7a63c5154c369f26a905f355469a0db4e562de2ead4d75b8693256748db27c5d041f6bd93bc97c7cf7a6f2c2966c29817bc398cf4a61ff5c81b66a7c725dc820e24ccbb2402b16e8a5a9e0d676193924ecb3a48bed2157a84205b689c5f673b45f5cf8589d2e048366b6e3ef58a6cfab7781e90d5f0f2922fa407d0882daf4644908abfbc5da2bc90c09be46ecd7667947d00094c2024142dc31a072b758c2b4c5306e458256fda993ea15295f970f480cd333f986e7f633ba84f8981266e9db3b78a3fa87052a648fa99c4dcb5d1420da4bac5c6ffe822276ffdd6de43f39987e9ffb1562c8e136ec163623c1ef0b957bfb67cd4af92e6433d2b3c757be0b74d7053fee3d1833bea1b076b4e2e878b68be8b661b0c54f6cf9e3bec410ee0a65c0371b4cee0f3cf196d88ac4ef5ca02a42e352785e77307367dbdeb20cc0aaf0be2f72ddb4b12cb9d1e7ed530eeef35a44daf8d80446626e90ff4d6705317ddea944a45e094901680b89133957343b5209a0146722d0d494c9fa805231b072740b15fdb7a1e0dba39015437cb2e61f0cca0179c0128c874cdcb3e4c377925a097d46a2ea86ebcb2aaac4e69b8d93f3f813fa110857017ec1126b0f48e1b61ef1ee9f2d3288a1ba037b28294d381855a9db1a44f6aa83f17773222761fad2add32acb500f060e76600b50779934496796f4c86114c123c55b42ce44d600055e9e249fe7d5f1a80f54d49e5b0dfd71518a7669538471b5e759dfb425c51d742df88cd4237000e0989d5e554f698d0112bd61a33a307b36b22a76aa8e2938e884191321c09c1d90a5678e903a5b76446698e5031233ad87218bf81d1f49cac719c2b27afcc4a191daca45a1c9f51425cf48008a1a569e2adae4627c233bbd024ef0f7c3973ba5bbf9fa0704e111223cce823d50b5d91fc0d805e0bc51daf91f0375b6feb67ed3a729933f275fdde5f8c1885cb9275fbfe2796b9cb4dc5d3eedd1044ffe62bb5a4f20c0969ecce5a0233c5a7740f9f18ba0a6c9a38ffe4b0e5377e6e84e659ece4b09a516f1f5e158f633a18b527ae8cb2813b6fc27f5108a7230bb2ccd25f9934b0899ce9c8cb3d5afa146791b52509aa6f78f02904882b0730d1a8630eb2c3e408aed611ab9cdede995bd2ab2940dcb74cbad21b1a8c27bcdd2b3758c61e5c0d271dda23139fdfa17fe97f19358fd6e4e6efcf71996b359eaea79979375a010436dc45f4ab138d7426f806450b624c14febce156041a32539494b096a3210d114d203df26b1cc826fa2946f53b2521ddeffc30550bb2d26dbd6900c912852b1741e76aa7f77b6c4aaafd16760429d5ce5d3cecaa3e1ff1d3399dd2e4bb0123d668b63b61bed7b097daf5a4710e82dcae3e2db6fd652bcfa527938559d83ae86982f26cffd2be75bb6f842883ac73819dc831dac60616f3c85011bc5139d67254cee29b964ab71fce45fba367356f2122a61544345df6d07f423d13bb32c328125323ff62ec30d67cfafde6eb20c8bf832b8a51e3de2726ba66fb6a0224da5f79286ab7861dac4d7fcc85c62f85fe476216c55ee4e5ebb7ecd3f642c547ec45844ec95586eac20c1834a5abb0ab3901c50deeee97ebd64d9980c53e0b8ff88e2273331b1484adc54fd459eaed17ade204477a17b54cfac56fd8d05f3ff4edc2e473295817cc00ab5c34806f1e370a9f97dc474e0d4e6955f915cd6d2069df587eb0650c72b4d2454142230623070f6d21be2bdd0173bb0a959990d9d250e47a2148b42030900e9e7014806e22ae690eafac7a2b3fbf45d6b51dfecbbd21993a12e057c82425533990c8b5c238a6d329c4c41387bd693ec77f1d6d200f17a86063111051f7090c2bfa3ed2a58ea8d22015a2cff83e127edc0383eac49c3b6caf9b5e0ab4abe911658ab63925d60842f70fe83f9ce4258bb79b6311bff08b231078eb8eff59e9dbc955af596ea7acd15fa8b8e1ba88e110ac383eeecca4340797afebeca8fa7c5839a3a306d4bb8004cdcd0372d83cf4e2214394cc2a09252971cd530af7802ac06d57fa0784500c40581efce6bcc497fae84e8bbdfaac727bac1cc0d49c0fadd64639c6c839f6b3e4735074e5f2cd2b5fe6fc9cc34152d723f1e1ef3fede91d41cf39a8207ad69044d14925961ca8b535362da356e419de13adc49ddf8708b82e6ba3b5609ae6110f28333601eed005b94b0d31699c8a687ae732b7d7bb263081cdabb462241911bba94585d0e20c9b41f4d8d5565e70bf351ea95382544864f4a960b8850fd5095213c2bb602338ab2a3f9b1fd97e8d42f68f2f943441ded01beb76f463997f1709e92c9e6df0341cc64ce46bee5ae1ccf0037b77ea00edf62f5f545d16bd063bd9097ef8eaa34d9dd1cb7b2d7f080fe56d14e4eb521da00c7c1d19c13e934601f963f80fe122c184cbc0047fd38cc0a7b4389debb41f44c7cccb596c41936e2fc672796877e1f0d013df6aa65a8d39c60e49eaaaf4bbcab70fa97a0b864aad214ba57bf5ba65abe585e52fec23b33a8fec951699fa4ef19e4af9e7c237248e1f4a71e6166133b2f1b6949d70f072170002b3d38dfaccb3843e641e85bedcde02e289d94ab76f935ced360b5b4abcd503d274923c222d757f8436e97156e067037c7c984ebb22b836bde9b5aefd12b6f079dbab91f69bd904facc456154ca3a1730b6fc7095af42e8e20d0b94ee3c797049971d28d583d5d1d7b539e8794a7710c2de9d2a9db9e6842f7a6a410b9df0f16fdf6bb58c35ca3a7d44b965f04e5e0391f7ab9789ca3f88973b59f50cf46f0d472e4cf49cd81c1b05d8640d625d601155db952b3544d54e5742be75a4bc9cf0d1084bc141b76cbb06290971fa526001e135397dfaadbb5865bb00fc424700901c4e50c7aa4db925b9b7fb0d8631b311fb820bceed1f83a6c166f78819a059017c7e7bc0b134aafbcb063ed15ff67f165441f7015d9a3514ad604c82e400703302c8e2e2bfbf738ef380e6f690392712d64c59fca62f638f2dd8edbb842a7ceafc4926febecfe42d5327af88fa21a9320d1f590803f35b2ecae7e605f0aaf99504537de024e600435f4963aae484cc3f6620243c307ad03f87bbb60696bf1b66409b143dd80362b48e74627ba790e700b4a6d10a4961fd6e4d954af5e585e44a02dc9137a9f2c5b2f09c5edd52924a0f62e0db46f2eb9c15ce3e9940f16a4c7c4be030c02182b2aef10f01de089f380e8afe59f6ace4c9f34738d041cfa61e19a64156a675832d16f4ee54526e0b7c39a8f48dbba330e8ef36b5564d263060c90009a367bfc4a9d1fa7e7903d0de3b2a68de720b8bf070f456306084485cb3858e98004be70aea72b6d0200def4f340ec415fdd2bcaf28eb60a1c2854fe016de38232c721b6d3f3325a101b77ded810b660a83f31c46a5f13a5a08aa6df7da23d0eba9fcbb45ff299761741ca950e12f2f1881946ed0c16f62139d03b430d1dedc3e7f7c68f2bd50993adeeeaad42315b36e0e592b42f1caa568156ea7aaba4072425cc227be504ae30f50335793483ae94a208efe33d61a1bd8cf95db05914e3b732a6c2ea57180dd5421a85a94ca2a97c80a41c04484c5552bd6489ca235c28d773a4d5122d93fbbcfcf8707b88f3d2604da1a47cee05bb3a9fce7528905b5a279a51b44a72a7bfcc9d1769db1813e161dee4387ebefb87805c1bc133b7cf56d549d165356bd3c24b4fd4cbb7a920cca8bd5e43b14557d48c1131a5ec93b3dd64a8d0791d9e50f4f501a5c858f2110418e110a74f7469c1b2ecb54c929d4c08927ff36c4106d696b6758823b235b2a0704d52ad4da79b09c140c266153e7e54ffe69776b2fb97ae8d605c37142c40bd45690f4207e4d3905cc0e69f548c9ec024a2ddddff639d148577de8be4a322d756efa88eaa2e92f2edf13a664924d341a8f95760db3d00329c8f882c24ced3ae07c89e35d51b7e11b0d1e53270bb0523ddde6e95ef8a0c05d2d2b6ba7c6ec169202e6102335e193e302b8c460ed998878abfb1db24e1797d1e7605e13598923a088f38ee8d824d556ebca3d36311acdc402555cc962cdd10936bb4e1ece2e39a6078516e98169fc31fabca7a0edacc689d6a5b4fe2475c0c73ce3d8510bb903260e1e381fc5fa6ea920c8bd2a8ec145eb778f9891d840ba5a3f08b0f6dd3f07e753899c30fe2b565e821fefe44cadf2117d358a2447b0d8ce48f742325b7d358a96536be71ba650ebc36783be0ecd540fb04bdd6a4cc39073df2b9a5ed9b23a4e2cd9ffdbc2967e690188dfc052f21bc49e9c81be87d12b4ea1a770e108d50de901bbb0d046c50a4228254aa095f0cef9d608b0ef50208b0eed938cc7d136207105030c72580f3d5c707b62090a29415e32af9066217272ea6cd498b5c1a81d06314c21406328037ddfa23222cc84c3afbf8cd1c3762faf04352bc37910971404fd446bc4beaa71b98135724118a1dc65ffb937d5310fe1f40c307095f0d3314199773a33bd6e2c89405f48bf12d6651d789e66f1820cdabb6107bdb309b937d8e0f513fef644f96b702e509903ce203c95a10ec4c9f4a71e75c9495038b423de361a86cea19cc2cb4f1f1874e672b2b2e97ee9462090f0639864e95331262a4a560c9948f3c74db29b1d979b7648a7a18536d7f6d8d2fd422f7070756835185866ac588a4daa8094185982d0879768320c5a05a95f1a761a9042efb4e291395bcfe4924fd4df12b131c3520fa984499532946adcfe20cd2fa56d8d44296926284e91509bf8ae72338c28b93974700af04d3ca38f55824ad9f52bd0e6b05f2c7bd8d324b4bfd657855c8cd458baea1bac09386c4444cff7594a870650c1e524230b2a26d865605eee5a016efeedc957effda3d1c145ad66982ad9188bb80c2d1546650750c7e79416c80d7ac102b47bc7798048489afde2f8461a9162997824253047f3d0b0148160aca7c533bdb6710281b42e64ab5eb5194a78d4244e601b67451ddf954d429fa006f25e09ef2a78388c6dca6228f17e3fe61510038f162626435783cba9d6809fb7b50fc1bcfb6231466454b5925c32d04c02e5bac1903df02e8b2ef25e64fb78d7daba63afe4bce774148ae824c62d778d88b6d6c7723cd5d56278b36058f492e4dcd6cb898414f521d9a21cde732aceb5a62adb996f1e18d950a982f9fee6c02750b13965ee93d80751116df1a5884ee24d05f0a74a3faee0198fa1f42bc5241dcdc623ab172dacf6108535f92e0279b9ceb96395073a5b009395aaf3ce8df09add65b351f341d2600351d24d3474f7d123fa7e51f017b0a0b90c4cdcc5db57927d8e87319914fb60ca897c7642e0e323376070cd6f05fec5e74c88c3175010761c7f1ac3c00e263611050c29a932af6cc7908eea6d1e2cefe518c6092cbf7fe7a6c5b0b821aadf6f4c504a1de79e723b5c17bd68d634d7b18b4b9955b37d765c464dcaaab31b9613567d37640e3b7ba9c2abc9b8ad3fbe2ee8b62b4ec7223792f76658bccff7069454442873c81104f5859de761160347deb9e1390544369afd02640ad5f6868e92c2d576a13808199a53fcff7863344ece1634086ca08e72b8d8dad0c11744ca5889437dc482375b6371f12853a22b37ee12ac0bf851194eca88f4e711d6c010135c46cac6c4b6d4d22ded888f4306369c5e7b716720ddcfd1550760b2674eae607713c5696f43d84af2d853505636f0aa30d128cd5ea230bff5a9322b0f38fc998eb902fa2e66a5cdf573b67faf264bd8aee6a7baaa4607ca070939347511a3e7fcc1c2aed75942bf4b02a7a3680f21e60ba2c3fb198e823ef8742241a5193df74d2fd25e4d28080588ed992440022cac1c026a3bf2c1de232751ee2c56381cc320b8511846093b8c82c3b69bee0a5703ebce82d93c99555970e5f192bf4c1438ef3d583f40e8b4042138963b862055a0a8b1df6cad65b82d57850dc251e50508dcf9d58c60b4d6d5f706b10bbb25717263300d3b432ccb759ddbd52e5dc847469dbe7db86ed6d35997f93f8cc939ea38e0eefecedb429e6ed8b028a6ba59954ad0b1345816bb14ef04d6d922770d40b19adfd065256ac351479ec65435951bb014a5fdee04be55231894b9390a28c7823bcb54409faa06f1c3da22ec89f0f9421fa9a33bc840a1362863b549360829e94a149010328b366b45d94e44b03182eb30c63fc967159c1df1386350c53d8f249a1d5cf7529434d61cf0085c59fd02171e5af8f1c82f63d8fbabf8f07622899eb8d01eca1fc6e242d202799005db7e6d26f734d6963a81ab2cf54936440914330b0a7a64f4c785c0958d72e82720124629c630ebe6c2fa7efa9e2272c234db67c5049db7b62f7e1eb3bbbdbfb842fa3df06ac020f84fac21207504412516cf601b65700c971606725d4fc31c4ef15a6635efde36696e339f2cfd775184233eba170149c0d215428706551ada80a5e9509949d22eeb0ff390d1d172b7033c153fadbd3f158b87cb300dea6364874ae86b93e5863f46d3fa2a0c507b4c382a46e0f953854689ce9b7f2a30945ac9ab4848297b833b4fedd6f839ef106a7028f1469d0950628256fec62aa432d6c0a85c3c4f5a6b792c12992a84ce000e6c1aeb6bd6c354960d9a741e0ef483a723762006e291f5950075e35b4223c471cd23733b1dddf91eeca80a4535db48fea257297e0b02eeeeb3da56c2b7acc338240f0e1eff611efae168d566dcb55b9a9d569539031fc4100eb6ca194a369c1330395dfc82e506d8669ae0b80d185a1f037fea20a2cc16da225b6e3ebe2dea684a032dd222dc5df9679f927887e0323e2be5c6b5db8b45640bc9fa099432d28c833a00b04697cd0817b118b78aa4a1ed51dcfe3fc69560b06c859284c8581b6ba223af7d55a3c623400aa0a30fbf3756e3d167100f5739ec9f7fcab49e5164b08b3628f9de44f0e7fd887a88b54305cd1c57a7b9b4ae5547dc617b4aa616b02fd638f4d030b7d9394929abe4264653c79bab88d1210197fe186b41c32c4ffe2827174edabc9cb926173a4afcfdc16e9386d2c2867d9d07d014161ba69169d51d61056d0e3d4c6f7e2fd93d244df132e72f560569889d635cd192f7c6c75fa777570aa806c5c9ec31b9432ad8070eb1474e9d685eb85116aef47ec47eb621c33a38301ae2348233d3b49ac13e64c70d4c4d594927cf3508f8ca6c040e71c95963820d7a70f22fe3120ad893234799be5de84d096b5b8961cdf8b09a52eefb994f433ee5b57ed74f1eda8d6894d2d19fd1faec1d6f34aa175e4b3a8298159f8a6e4130c3d2100d2c9ba994be1e20367f5d587d34ad6c2b00078ae1fc589c77ef3c3d2f0819eeccff1e7b686308122d9d8504b39be1bc01425d29147ad7e24db8c1c132b955ab073d37fc1a83a12d4155f747ffb33779b2f58e4c862d97bfee479631188a1c888ae437b39bf9f197fda0ce1708be825c4eb5bcf8c419b7f44d1be60c224b70e8536ba3f0eb79d6255438988b420f80a81c2f986a8abc2a7c60bf54f0027e1c190c4a8711fbc8551441c6640130372c515be3f22cb10fb9b53223096821a135a309f40922d5cbc2acd57e0d7cbec9d47837ae1465312424a77c6be3451090277f17d6225a0d634455659903b1bc51e79c1330a70d6139e9d7fac08e5928f23d2c10c6268ebbfda4cc45948a33a263f672a523125d188f64c9c01b2ef801686f5fd26321808e96e07433968d05a44864eddc2d190155cd3266c23778dd1cf843a779f77919c8e7a5560dfebc817d703f3eeaa802c613992e5ee2ba6ae90600125b1aa07f04902c524d3cf57e1461d9895461117ec413fb3537752d755737738bebbe1135afa71db91e93f33771d16ab3134f0d6d588dfe23ec6661698421c010d43df3dd7e9c422f8b1e34ad0953e9fe8d7ce81f4b0a62334f5229c6b11fbf5889642660619a2c1f0e98fc561836f62f61861712455a193e54e7c4fe6f1052296ee852b33ded957545dea80dc5f0c97cbda1d7a6a74ae0f482a59e8cb33bb42522b6652eae4ffa1184a2de0e215a662edc4731a0e6042a69f93fa68cc9088fca3e3d8473d5aaabc62ee5956144fd68eacf289eabfe35e6112e919837b82d7084db1a4cfd8e1a86c4ea3b90b890aac23156b50e21f293d0091cb71822592ff9c0493c1dbfd67640a5da51820cbdf5b86bdfcf47065c715bdf265190284a0b73ae525c70e05f0b35f67f8d8652f31cb650c02195c931546a32dc64207c2e0bc73fc8158e7188e8dcb8e258236356ebe5e35361b0bd759fc8652773690a2908ccc0ebd47a889f3ab783f4f3cf12738b7b2323680c69eb1f28688820c02c601f93ccb28717da6b6e5ac20fbaf7fb283784370fd30fed3aa8e0b485027dda030449a6abeb922c705c903a2f349dfb075b9ce0c18e90df690fad3177e02ee6ef19ce602f6cf463ca06a38203017ebfd02519b5b607a11718243b01084656792f3bec57956232f1c5f6ea03fe34bed97e55a8ab67741617263ab232293b19fac40daa9688655da4d37882b0b21980dd5201b4fcef42e0c038e8033a024c787ec218988b08396e9a621ac4374b10bd13d521b52f0afccb3efa4681e8f6ca1fd2152142c89c09aa954cf4c5e4073fdc99cb6cd151458b59552f0ac5f61888679ffc3711d4b806e756a77f31c993ec9239927414ec4fe996e7fc498cecacc56b30440add6f71b02bc34f3705681e7e19cd3722febf38b6ecc25398bb9b527c77fce532371b2463d4fd5a8d0f1dbf97b95eb59acf0281d7805f99e519aa4efb65699a2b2ed89cc8af53bc305bc1a4f750a953086fab18a36eace7e0311de9a6d400042c17846ede3f280a7ab4dda32bbf364fad1722b5bbdc0bab21aba5e4f43b243b2165258d04633957684ae38ab2b101914a21dc1bdc31423f7748d0e36ba5d3201552a2aa76507dc1d4b4d92c4f16329c00c167765ee4f340a281f1f3d73478bd1a0d31ad5bc40969f7ae3cfed770c1b9eea1d75b8b655bfb6932610eec0d5ab113b12dd78802355c2cc8e71427ddbed5ce2cf37d454fe788c09772ce1668b9d120d1cf5f9b0503b193b2378df3b292666df3df011ec6b94271a61fae493f6f92a7308f733d9a12fd7b5596db6a6285d44ea2a0ad64d329ceeff2296a403a730c2a18881d32ebfd93d502d54021471ab8f9473af265b6e42c1fb98c1767a92d5613e29d270a27af9fa8a71f666fe1766d071813b2156e912182a7aa914439c96ab469a576c17510f1617b4536f69c2ded22c1d50d7482cb7fbcde67af59ea734f3742a0e375c7e0210ae4ecff0f818f71b270d49137e46a6ab38afffc1e24cbbd1719870d3e86dc6ff5d1bd5411bb64dd569d593e4c248415f7d59339ff83a749b6a05dd86280bab71b975247de7eb838de56281ca26849ecb8e86cf7bf9a0cae3d93acb75b4af9a46f93c830ccb8c922facef21700878b23cd313fedda6ab91908b77f5142bd60e02deb87c4a2e80b25fc7c51982d1a700fc827a45cf4114305bbb485f8a04e9a4c576365222319432630051ceea8dbcbd0513366fe622b7c15b9c5b9c7697fa7ee201eae4aad0423bb61b96652b3f1e19a5670bad143d6d8b90a9472a2f0177fae07a68dce0172384663be8e4099ec3c154e81a0a2a42363569f8f4030ab4bba6ecede9447835cd97adce8f030e3abf7fe531c9b63a81a5285bf7b45c1f3599a59c5a6ecb70cd6a747b61245e673243b55bf0bf824bc01b754810a19812c082b2252e891d98896999590ce20c9cf78be0e86967f099849b7613ac45084d0c4b7490389500f296efcc38e69fccacd8a9cb3df706bc09c399886164afd22de21676d0fdb93fee1efaf2d363e2ee83295c2bfcdfd4bcce1f0197c9052a92b3ad4032d871562d7c46a0d7deb229244414be672c0dd9a0de1cdd818b8b498ecbf1c786d53e82bb1dfa187d22b4bae3179d56ca4fdd6f8f2d4c81df80726dfcf243829c33d23b77b8d039b0d169c5613ecde639a30eec12dbd364bdca747e8bbf610033c8a02b1f2763aa9a63806d07364d24228d7ba621133ec01c79059f65c54748703fc60eecc810382fbd160a8df4dcd47aa57f640f5ffd74a1f94f9a56156f7c0c6e34fdd6e43a5a0ac46b71474140fb8f16c10aab75678875f19fa82dad79a6cd284c78488aee66c5279d16acb21b8db2df30327783b64335934d7db219dc6846d9199329fa8f8e8a949863b39c03bbf8d83850920f4e87f41bc8f14c5fe3541444af632f5df9866dcae93493fae87809f16ee551bac8c4ddd0bce15ff7be0e573cd46fbac5fc7f4b764f46fd3bb09ab24bbbd9c38ee0f648386d892a90165e2acc2e5057c7aef96648ae013178932d6eab4b60d94555a7f380201c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945860300000000000000af3ce8279bc3e39954527b6314ce47076c97b16c3577c2e7ef014a9f62bb1e248ebb21fb1ca0aea57f0a3df15877c9de9751b1767d705d511fb67eec61dfd42f00" ].map(|hex| >::from_hex(hex).expect("Block bytes are in valid hex representation")); } From 4ad68ae9b08588acc499bb2b1484347e10328cf5 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 12:03:27 +0100 Subject: [PATCH 129/230] Revert "Update zebra-chain to sync with the updated librustzcash (zcash_primitives) interface (OrchardBundle enum etc.)" This reverts commit 998a2c7046a257b8a34d6d2ac10557e34ef135f6. --- .../src/primitives/zcash_note_encryption.rs | 44 +++++-------------- .../src/primitives/zcash_primitives.rs | 14 ++++-- 2 files changed, 23 insertions(+), 35 deletions(-) diff --git a/zebra-chain/src/primitives/zcash_note_encryption.rs b/zebra-chain/src/primitives/zcash_note_encryption.rs index 1b6673d5e11..20270117003 100644 --- a/zebra-chain/src/primitives/zcash_note_encryption.rs +++ b/zebra-chain/src/primitives/zcash_note_encryption.rs @@ -8,33 +8,6 @@ use crate::{ transaction::Transaction, }; -use orchard::{ - bundle::{Authorization, Bundle}, - domain::OrchardDomainCommon, -}; - -use zcash_primitives::transaction::OrchardBundle; - -fn orchard_bundle_decrypts_successfully( - bundle: &Bundle, -) -> bool { - for act in bundle.actions() { - if zcash_note_encryption::try_output_recovery_with_ovk( - &orchard::domain::OrchardDomain::for_action(act), - &orchard::keys::OutgoingViewingKey::from([0u8; 32]), - act, - act.cv_net(), - &act.encrypted_note().out_ciphertext, - ) - .is_none() - { - return false; - } - } - - true -} - /// Returns true if all Sapling or Orchard outputs, if any, decrypt successfully with /// an all-zeroes outgoing viewing key. /// @@ -76,11 +49,18 @@ pub fn decrypts_successfully(transaction: &Transaction, network: &Network, heigh } if let Some(bundle) = alt_tx.orchard_bundle() { - if !match bundle { - OrchardBundle::OrchardVanilla(bundle) => orchard_bundle_decrypts_successfully(bundle), - OrchardBundle::OrchardZSA(bundle) => orchard_bundle_decrypts_successfully(bundle), - } { - return false; + for act in bundle.actions() { + if zcash_note_encryption::try_output_recovery_with_ovk( + &orchard::domain::OrchardDomain::for_action(act), + &orchard::keys::OutgoingViewingKey::from([0u8; 32]), + act, + act.cv_net(), + &act.encrypted_note().out_ciphertext, + ) + .is_none() + { + return false; + } } } diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 596eec2430a..906475cf2bb 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -156,6 +156,9 @@ impl<'a> zp_tx::Authorization for PrecomputedAuth<'a> { type SaplingAuth = sapling_crypto::bundle::Authorized; type OrchardAuth = orchard::bundle::Authorized; + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] + type OrchardZsaAuth = orchard::bundle::Authorized; + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] type IssueAuth = orchard::issuance::Signed; } @@ -288,9 +291,14 @@ impl<'a> PrecomputedTxData<'a> { all_prev_outputs: all_previous_outputs, }, }; - let tx_data: zp_tx::TransactionData = alt_tx - .into_data() - .map_authorization(f_transparent, IdentityMap, IdentityMap, IdentityMap); + let tx_data: zp_tx::TransactionData = + alt_tx.into_data().map_authorization( + f_transparent, + IdentityMap, + IdentityMap, + IdentityMap, + IdentityMap, + ); PrecomputedTxData { tx_data, From a999d70578feb26e302b22fd9b3c895b94d44702 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 12:05:03 +0100 Subject: [PATCH 130/230] Revert "Update zebra-chain to sync with the updated librustzcash (zcash_primitives) interface (OrchardBundle enum etc.)" This reverts commit 998a2c7046a257b8a34d6d2ac10557e34ef135f6. --- .../src/primitives/zcash_note_encryption.rs | 44 +++++-------------- .../src/primitives/zcash_primitives.rs | 14 ++++-- 2 files changed, 23 insertions(+), 35 deletions(-) diff --git a/zebra-chain/src/primitives/zcash_note_encryption.rs b/zebra-chain/src/primitives/zcash_note_encryption.rs index 1b6673d5e11..20270117003 100644 --- a/zebra-chain/src/primitives/zcash_note_encryption.rs +++ b/zebra-chain/src/primitives/zcash_note_encryption.rs @@ -8,33 +8,6 @@ use crate::{ transaction::Transaction, }; -use orchard::{ - bundle::{Authorization, Bundle}, - domain::OrchardDomainCommon, -}; - -use zcash_primitives::transaction::OrchardBundle; - -fn orchard_bundle_decrypts_successfully( - bundle: &Bundle, -) -> bool { - for act in bundle.actions() { - if zcash_note_encryption::try_output_recovery_with_ovk( - &orchard::domain::OrchardDomain::for_action(act), - &orchard::keys::OutgoingViewingKey::from([0u8; 32]), - act, - act.cv_net(), - &act.encrypted_note().out_ciphertext, - ) - .is_none() - { - return false; - } - } - - true -} - /// Returns true if all Sapling or Orchard outputs, if any, decrypt successfully with /// an all-zeroes outgoing viewing key. /// @@ -76,11 +49,18 @@ pub fn decrypts_successfully(transaction: &Transaction, network: &Network, heigh } if let Some(bundle) = alt_tx.orchard_bundle() { - if !match bundle { - OrchardBundle::OrchardVanilla(bundle) => orchard_bundle_decrypts_successfully(bundle), - OrchardBundle::OrchardZSA(bundle) => orchard_bundle_decrypts_successfully(bundle), - } { - return false; + for act in bundle.actions() { + if zcash_note_encryption::try_output_recovery_with_ovk( + &orchard::domain::OrchardDomain::for_action(act), + &orchard::keys::OutgoingViewingKey::from([0u8; 32]), + act, + act.cv_net(), + &act.encrypted_note().out_ciphertext, + ) + .is_none() + { + return false; + } } } diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 9aba76215f2..67cef7716a2 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -156,6 +156,9 @@ impl<'a> zp_tx::Authorization for PrecomputedAuth<'a> { type SaplingAuth = sapling_crypto::bundle::Authorized; type OrchardAuth = orchard::bundle::Authorized; + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] + type OrchardZsaAuth = orchard::bundle::Authorized; + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] type IssueAuth = orchard::issuance::Signed; } @@ -285,9 +288,14 @@ impl<'a> PrecomputedTxData<'a> { all_prev_outputs: all_previous_outputs, }, }; - let tx_data: zp_tx::TransactionData = alt_tx - .into_data() - .map_authorization(f_transparent, IdentityMap, IdentityMap, IdentityMap); + let tx_data: zp_tx::TransactionData = + alt_tx.into_data().map_authorization( + f_transparent, + IdentityMap, + IdentityMap, + IdentityMap, + IdentityMap, + ); PrecomputedTxData { tx_data, From daeb0f06c9650eb63daee30a7e5eb091cb04d2bc Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 12:13:10 +0100 Subject: [PATCH 131/230] Revert "Update librustzcash and orchard version hashes in Cargo.lock, make a minorr fix in code to sync with that" This reverts commit cfaac4b1c0f6e86a4e0de40e3be849e0411546ef. --- Cargo.lock | 22 +++++++++---------- .../src/primitives/zcash_note_encryption.rs | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c700474b30a..cc94ff2101b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#b61b7f2ae05648da97edd4ad513fead707274563" dependencies = [ "blake2b_simd", "byteorder", @@ -1407,7 +1407,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#b61b7f2ae05648da97edd4ad513fead707274563" dependencies = [ "blake2b_simd", ] @@ -2878,7 +2878,7 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchard" version = "0.8.0" -source = "git+https://github.com/QED-it/orchard?branch=zsa1#3dbdbc52c6e2ffeca015ae6eb80ad7f1c870384d" +source = "git+https://github.com/QED-it/orchard?branch=zsa1#a7c02d22a1e2f4310130ae2e7b9813136071bc75" dependencies = [ "aes", "bitvec", @@ -5814,7 +5814,7 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" version = "0.3.2" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#b61b7f2ae05648da97edd4ad513fead707274563" dependencies = [ "bech32", "bs58", @@ -5826,7 +5826,7 @@ dependencies = [ [[package]] name = "zcash_client_backend" version = "0.12.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#b61b7f2ae05648da97edd4ad513fead707274563" dependencies = [ "base64 0.21.7", "bech32", @@ -5865,7 +5865,7 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#b61b7f2ae05648da97edd4ad513fead707274563" dependencies = [ "byteorder", "nonempty", @@ -5874,7 +5874,7 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#b61b7f2ae05648da97edd4ad513fead707274563" dependencies = [ "blake2b_simd", "byteorder", @@ -5910,7 +5910,7 @@ dependencies = [ [[package]] name = "zcash_keys" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#b61b7f2ae05648da97edd4ad513fead707274563" dependencies = [ "bech32", "blake2b_simd", @@ -5947,7 +5947,7 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.15.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#b61b7f2ae05648da97edd4ad513fead707274563" dependencies = [ "aes", "bip0039", @@ -6008,7 +6008,7 @@ dependencies = [ [[package]] name = "zcash_protocol" version = "0.1.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#b61b7f2ae05648da97edd4ad513fead707274563" dependencies = [ "document-features", "memuse", @@ -6548,7 +6548,7 @@ dependencies = [ [[package]] name = "zip321" version = "0.0.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#b61b7f2ae05648da97edd4ad513fead707274563" dependencies = [ "base64 0.21.7", "nom", diff --git a/zebra-chain/src/primitives/zcash_note_encryption.rs b/zebra-chain/src/primitives/zcash_note_encryption.rs index 20270117003..cbc19afc5d2 100644 --- a/zebra-chain/src/primitives/zcash_note_encryption.rs +++ b/zebra-chain/src/primitives/zcash_note_encryption.rs @@ -51,7 +51,7 @@ pub fn decrypts_successfully(transaction: &Transaction, network: &Network, heigh if let Some(bundle) = alt_tx.orchard_bundle() { for act in bundle.actions() { if zcash_note_encryption::try_output_recovery_with_ovk( - &orchard::domain::OrchardDomain::for_action(act), + &orchard::note_encryption::OrchardDomain::for_action(act), &orchard::keys::OutgoingViewingKey::from([0u8; 32]), act, act.cv_net(), From e0653ccba01e4689c36decb4ca15890594d39205 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 12:17:12 +0100 Subject: [PATCH 132/230] Change ConsensusBranchId value back to a temporary 0x77777777, to aling with the one used in OLD librustzcash --- zebra-chain/src/parameters/network_upgrade.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index fe9eb672c01..ae9d28eab9b 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -230,7 +230,7 @@ pub(crate) const CONSENSUS_BRANCH_IDS: &[(NetworkUpgrade, ConsensusBranchId)] = (Nu6, ConsensusBranchId(0xc8e71055)), // FIXME: TODO: Use a proper value below. #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] - (Nu7, ConsensusBranchId(0x77190ad8)), + (Nu7, ConsensusBranchId(0x77777777)), ]; /// The target block spacing before Blossom. From 08de3de071695c1babfa881335952df0e3cfee9b Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 12:21:29 +0100 Subject: [PATCH 133/230] Change TX_V6_VERSION_GROUP_ID value back to 0x124A_69F8, to aling with the one used in OLD librustzcash --- zebra-chain/src/parameters/transaction.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/parameters/transaction.rs b/zebra-chain/src/parameters/transaction.rs index 0eb6f04ff66..f775f2c4bb2 100644 --- a/zebra-chain/src/parameters/transaction.rs +++ b/zebra-chain/src/parameters/transaction.rs @@ -17,4 +17,4 @@ pub const TX_V5_VERSION_GROUP_ID: u32 = 0x26A7_270A; /// Orchard transactions must use transaction version 5 and this version /// group ID. // FIXME: use a proper value! -pub const TX_V6_VERSION_GROUP_ID: u32 = 0x7777_7777; +pub const TX_V6_VERSION_GROUP_ID: u32 = 0x124A_69F8; From 49f0a9cac3a111265b1b01c39b29eca4c29f19b3 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 12:23:58 +0100 Subject: [PATCH 134/230] Revert "Fix consenus test to use the new orchard builder return type" This reverts commit 6b7e6655034a8aab6e544b5443fd97694a85409c. --- zebra-consensus/src/primitives/halo2/tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index fc4a7aeba5c..d5768709681 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -63,7 +63,7 @@ fn generate_test_vectors() { .unwrap(); } - let bundle: Bundle<_, i64, OrchardVanilla> = builder.build(rng).unwrap().0; + let bundle: Bundle<_, i64, OrchardVanilla> = builder.build(rng).unwrap().unwrap().0; let bundle = bundle .create_proof(&proving_key, rng) From 12ad26aa9355cd0d8083b14064e4a5633ce1cab8 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 13:05:15 +0100 Subject: [PATCH 135/230] Revert zebra-rpc test snapshots to use a temporary consensus branch id (0x77777777) to syn with an OLD version of librustzcash --- .../methods/tests/snapshots/get_blockchain_info@mainnet_10.snap | 2 +- .../methods/tests/snapshots/get_blockchain_info@testnet_10.snap | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap index 9fadb83a0fb..9ec46ee6a75 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap @@ -71,7 +71,7 @@ expression: info "activationheight": 2726400, "status": "pending" }, - "77190ad8": { + "77777777": { "name": "NU7", "activationheight": 3111000, "status": "pending" diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap index 14085ee0770..41ba65fcf65 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap @@ -71,7 +71,7 @@ expression: info "activationheight": 2976000, "status": "pending" }, - "77190ad8": { + "77777777": { "name": "NU7", "activationheight": 3222000, "status": "pending" From 53b657d67b8dc807aeb2177a7384fb075412bb15 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 14:25:07 +0100 Subject: [PATCH 136/230] Revert "Update OrchardZSA test vectors to use new TX_V6_VERSION_GROUP_ID and consensus group id" This reverts commit 0dd30f3f365ff0d8ac36000480632fe0a146b02d. --- zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs | 8 ++++---- zebra-test/src/vectors/zsa.rs | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs index f62f401209d..324f270c04d 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs @@ -110,7 +110,7 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x64, 0x40, 0xa8, 0x86, 0x5d, 0x61, 0x39, 0xb3, 0x39, 0x62, 0x94, 0xee, 0x42, 0xc5, 0xa6, 0x0b, 0x63, 0x57, 0xca, 0x65, 0x8b, 0xa6, 0x76, 0xf2, 0xd6, 0xda, 0x8e, 0x00, 0xcf, 0x60, 0xe8, @@ -860,7 +860,7 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, 0x6a, 0xc2, 0x2a, 0x5e, 0xe1, 0xc1, 0x53, 0x80, 0x98, 0x98, 0x9d, 0x4e, 0xe3, 0x6a, 0x88, 0xb9, 0x25, 0xea, 0xdd, 0xc9, 0x0b, 0x5c, 0x14, 0xbb, 0xc9, 0xf1, 0x0a, 0xa0, 0x22, 0x46, @@ -1594,7 +1594,7 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0xca, 0xe4, 0xbf, 0xa4, 0xba, 0xfc, 0x37, 0x22, 0xd8, 0xf9, 0x3c, 0x6c, 0xfb, 0xcc, 0xba, 0xd7, 0x94, 0x44, 0x58, 0x85, 0x10, 0xba, 0x7a, 0x9d, 0x8e, 0xa3, 0x90, 0x6e, 0x7f, 0xdc, @@ -2221,7 +2221,7 @@ pub const BLOCKS: [&[u8]; 4] = [ 0xb8, 0x40, 0xa0, 0xd0, 0x5b, 0x7e, 0x8e, 0x35, 0xfd, 0x0a, 0xf3, 0x08, 0xe3, 0x37, 0xfa, 0xd8, 0xb9, 0x08, 0x94, 0x79, 0xdd, 0x35, 0x73, 0x05, 0x8e, 0x64, 0x48, 0x82, 0xe9, 0xb0, 0x49, 0x1d, 0x06, 0x89, 0x26, 0xc4, 0x8c, 0x06, 0x52, 0xad, 0xd9, 0x32, 0x00, 0x06, 0x00, - 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x56, 0x90, 0xe6, 0xfe, 0xfc, 0x61, 0x4c, 0xd6, 0x40, 0xc0, 0xfc, 0x9c, 0x69, 0x91, 0x0d, 0x55, 0xd2, 0x0f, 0x25, 0xad, 0xfe, 0x3e, 0x4c, 0x9c, 0x06, 0x96, 0x9a, 0xe3, 0x2a, 0x51, 0xbe, 0x9a, 0x7a, 0x06, 0x13, 0x03, 0x39, diff --git a/zebra-test/src/vectors/zsa.rs b/zebra-test/src/vectors/zsa.rs index 61e9183774b..f4caefb4afd 100644 --- a/zebra-test/src/vectors/zsa.rs +++ b/zebra-test/src/vectors/zsa.rs @@ -8,8 +8,8 @@ use lazy_static::lazy_static; lazy_static! { pub static ref ZSA_WORKFLOW_BLOCKS: [Vec; 3] = [ - "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f02c71c7ffa660028b5f3bc0b0bedf9b76a829ce8f2ef82c2c69ab6948bc9fd00a80000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000100000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000002000adfbfe7961473dc7f8ffd411b3e2eeb005a37342e6081d5121f18f5648c8480adb28949796e09a38118152905839afc125618be1fdaf921d188488b607f2544e12a249ab310f17a9349bfe463c7de09d2b822ab0efa88b6d32f77d7c38793192b944aeec0ca94918390dbe44c50e706407692e348ed9b7cedd231941a673722ef1e7e74888672b2b2d08c97a9ac114b7039feffbeb8bbe197db4a0bca8d395cd40551c1d5d788acc2ad09eddda73a5948de2d9e2d82aa638dad6f5dc61042d6850b926d944f29f17e96eca84684252c97ce4382f2642e54208929a4b37954e8e386c677f2aee3e8f4f4aee9f76a87d868fa2210445c09b927b842485918c869a23be8213ae21937a8ca83406fab193cecfd3fcf3b1c698e8057a6c87c059dc6f4ccb30af8e608a7c04088cf3ca32ab20cd780da9443606b092c8b5d85c9a76433c0993e3eee385884ce1f3890abf95462c49bed01a3a5c09df98cb7082e9770bdee196f8b968003f5cc76d82bf575f01da3ed40e44b3b15721f4a9dd5ecd14fb71a42b24ccb7d7e6a3bc10b53ebcb7e0ec6ace91dbc19801eff0c76ec0c10602bca2cfce9f3e79536a25143d351ed2894b4eb4e549960f212f0787057ab1ac8b249c3d3ff8652cb3fb17d7656d50c5e6833b056feb26855332f60e7b8d1ebba32df63d8561fd7d209a1e5adb9853bb5b5d6a41bf1ec52d348023e945bc02e8d6ae8d5b6c7a9225991cca4aa0b41861f237b3bf545220799f152767c7fdcc693a989057e119c18a96007c69c8fe5751a4258ec3f0f99c1aea8dbbaf4df9953ccf6b42cf2f4265011ca89ec7b9ef2c6e9410886291054f50db6310b225ddf32f9db26416da6ca9ef6e3198db36ebab9802517aeaf628d41358fd141dda8fab32fcded20707abc3d00191e0b2690a1e2fa044814191323155fb21e3da8798e0bafef8c2da4c73f967504f51e716cf87117f90fd028df17f3ea26aebeda7f5b3192cd5f4855044e9a41bbfb817074ca1680a458338b191a9619dd337bd0335cb1896d79c79cce10e454b58fecb1cf10da9f53129bbf3cae2bde82007ed98505f16922b6ae53a3a709c2e01ff7e529925d6069807c06bb0c73abf8d463b2a944a97d150935cc76e1ae1f8f95159a928a5afbf76d54544a771fd4bc482ca522274b94c87b4f1c7cc3399709b5572c5133bc945cca63bad59b454ee301e3582f09c5c31f326a59705a2b534d8e9a79835bf767ea563b0aa74d3301c40a303f6fc04ba0f3807c5decb6743aabfed1a092f88975820c324e2229829462e4985e299c2415eccbdbb4ff26789b74e91db286e6a4af023e8a18e826e930d9d4ac8d92cd8a1098d0705852cda367ba067e723ace9ea8b9502e20e6519dc72b1cb477c4f3091ae4d20eb7401acac77d923eaf5de00ecbb61baa3aca9044f3e66262245aa9f3dce1d02a88e8c26b34e3c27b4e4e5f91cb633c9b6e098063d052dd6883d4c2b153c739ef78c5f375c640ff747adc1110de2f9d011118f3208bee2f3af9990d56ecddab1cfde0c053020b1116afdec7a3303fffe6f6880072482f95aa3115724814aa5fad017e3b7637f3dba509f1e371c9b87a275cfceb68aa5317dbac0e1959367d124935c76631b8aeb532d99c393374f214af2d6a3a5bf4071d97b6ad39b5b2ec03f1feb520ce467808eb2cedb3ec933c20322bcd4511b838de111f9faafb5d45ffd8edbb1fe8f0928d535ab9809b4cbf588af635419b10f7ad9f4418c766d88526215b74518cb6554e833ada2dea5e57776a09541d76ba545f8a727bbe7722912cf00da4a48a462a5b7b13c88941762462142f97e8da2b358435c9cb53d24b6443ea2e1bdaaf6ce58dbd0bcc598cf170a193e14e76ca8bde66ccc786bd330c6ce61db5f202b01c7faf185877e3614c1a1b4484cae6dbef080142f8c45e3e48485746fd3505bba099ae7b37b96e22b2cfe6a0dea5b017974126259d5055a28ad510b3b7116c27287fb7e635f1918d5a9ca2529b1741c9e86c59ddf11c3f70a56fac7c9607eb9bb36612494ed1ae819c092cfff73b7c9c5d3e8680dbe73f92b749c84363c374d80632fc488d0b7d35f25ecac1c151ad8427d7a4eacf24fa6937fd5c416776654bcfae92d999b51c49d76bd53a9d5600b40915acab5d31f0ea3f7a68adccbb72cb454164beb35819af0e9e06ecb40e96c9c2aa8018883301f65cfbaa7ea894737d49b44aa5d76c4b26bbb6de7126bf785fc2a8760ce1664150be0b6828659513561b52906e6a4782732749897a41ffce670736ce0baf5730fce9bcb50a44e1e9bba166f4812ecfdbc2ddd8483405cd2bc68ac179177e1713220348da35c7b2a30c9ad9670d99a53a3c4c4a611fcefe9e39024732d6996568f2fd8eca433a41664b070000000000000000ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82ffde01c599a33ae69b9dcc093a546efd4cdc2c8daa0479ccdc63123cbd0622fa54f8c15ce9a049727b659c998b2fc935ddfae5788c51772e00dd8fafb91e7b9e7b9d4a34efad77ea3f54eaf8bb5bfd4c5d5ec6761689042ec6b1639e79d2628e712669e32f33d058707141549b0a0fc31d9fe4a633871d1ca48096cd8272f735a0838bc1a440947547ce52183863bf080eba73bb36f5130d7dc8676be2e28d00714dc36ccc580d88f6d878357e7121a811a03eb12faddcb75c9c3703ccc4afdaa85101244e619f565a5635e6b8c856fda2edfc27b5c06a711730beb1c361a6a916fd713ba64385734b8563775d66adace055205c6cf9a6c90faca0629e7b93511d0e51e3405210bc3d3c590ead6671e57af44a9418a5d3c6369d5b6d294032f1592c601c2782f5e5fb7ef820f548a7e21661944982f5b04f8722ebf42456df6748a2f9ba2b816bfdfe1432f6c4911daec2b75802d43000403272e1de73bfd625b9742b8970133c0599a17cb7fd7984d6a3da82e845e179ea888019c6d86016cbef610a7a0e3409f0a2bac1181ce62a22fe3fdad2708225ec503077caf354dc5c12f6fad975509172383e2f87405fc7c387b1de333f435426fa3b8a524cea377f3c24690918a4ea2dbf4940ded498169b9b85adcd9d37175ac43897abea5d629775f4f9792d2ece6ff69dec38e38d0c1c9e40dd2967aa103a20a148290a9b89ea82e1bb5235bfd29d260862365933e19f81eb19be2c775707433d66c15f68e5bb8a578a925f20e9d1bc34132c5a214ade50ff48489b89cb674fd3a9c787d0ab539849aa19486e3d4081d4f361517f45fa35168e0432fbb69251a6a7e8f5d33b30564338f693e636d04203502588b4e9128744f49005a77e5de0f79e06053c01e82f4bc29f0bdaf3292c300030eb758fe2a7e98f41f0db618ecb99924e25084b0e69da78bb4918b365b8c613ff5e033d4994e176b5abe710fa552b3e5e21f59a33e4e0aad74c0504c2eeffcf213301b35d9b0bd3c7d140c849012b1fa7ee177e994366b9b278afd94f6bf9a65bbd1cfcf5f3525512e5b257f6a5cd61c43ff2c695cd9571d8d0e24bff92a5ace203d9a643b7c52d794b3a6a2f0cdc6c8c1527e51b32847935dd0c12b1f1aef49cc40d4318b5b067ab9d238e7dc4a8903d8ed224c15ed66b11043fb6ca6109587b6210027df615ef57125d696d0de758be6e4b1693e260589e441ebb020177a4bc7c577a7f2c7d415e00fe93cf1436bf13f738f0cb7d0448074f1436457dfdc03217b585d133dd44928779072129072c0cf0ad9ff3fdbc686f12d219313ceb77e01846f030d631c8014987081a1e3659239e009105143ff3fd3d999fb10e1a1b8f0adce31db881d5da746138462e5a1b45d47862fff760d3b1ae1de946257f2f0edd1bb911495fe1a24ec3a7cd5285e5bb25ac1d206d2f926f9dfd574758a6eb2ee5faed26e5a8e07dbeb11ba4dcfad69d93cc718fca7658b97384a243589699547d476887de967e325ba5e3b982b079eddf83998849579a849dbd3f2f487eaf9242512899756352f3680f334e0585bd43a3439bd62404297912e545e7c18e0c2e19714752b7525bebea1d83222648bc9457ff3fed4c91b1fabc6c88b5c3805dde0267f72a0abba1715fcbacce4253881625026ec2e240e8bb98c5316d28d361a91a1a572caa057492fec8d5e8d8b51f5890515186f7c97ba4a3810f40e9916567ea7a1980fd806d295c73a8b1243b538c373f531994507ae50889cddbe473a8dac128c98eeaa965cb0cdec2dce36fae175334b1dccd48839b7d28292a7c753cf23990d111e518a4260631d5a99a28f3bfd01db75d8271d08556abef553106fdc472ae97b5f4d2d3741a5104d06560d85f48d3e3acb040c3264d37f370f2acbff61ed733f655d8815983c7e78942131b41645f1ddcb24711ef39dede1317c4d7dd9b01f77066b9f3714b5f09dbb35e8341188e4384bad7238d9ef7d73e2055bb9e6706a90348ae9e5057780666f3642d7a18085e115e5ea3447fdd013a7d976d00e39edee09b271286c1a325161d3d6eac566cb86c5af3d287b5a56dcc48faec1d8342bf3c5436ccf03c0b47cb880aa7001e2c5464a406e24dfd9d021e62558e3cc9ae3228f03ddab021d5519fb426551e0a39ad08f68229662f16b79b7653b8f827a8527f1dc556a02f9e3c7d0f3872467a60340dbb0641d91d6956a33f5c905069ac39e67b40fc8d5dc617e00e89dd926bac628eb187ca1d0c41972b73b628f18159633c6d4697893bab32cb760a193b57034804a66381e62bebd6b729294bb14a113c5750a2bbdb57d40ec9e37ce7f3a486b920bf2972779b88d4ffd3136e2c10286682a4c413ed2991ce333060be5e348dde9eaded10e4cfc84ab1b157713936149239477a0b5a437574a45f24843ec4a525a71813c05c2524b92c893cb6aa0dda8df21d550371f5ac622038baef7071007a31cc486158ca1a8ec2a0c274ea26100fcfa5a3991b6f79384ae487975207d2b0b068df60c7bd63c014d13d2b5215ba7be1802b78742cee248c07cb00f3d5472dde9f85a1a9a323125a3cca08fe5c8d89f73c3fb600a4a3c7f28f12ccdac1e911c8d62242deb1ceb63eb40ffad0ae8845cc9efe69e9f5a7d2cb9910306e16b529d8e16e235e8e54eb84859d4346bfbfbefd453f9a4c8f4cc5c6c80a616433dbbcbb512651578d1d2736f513afa0fc68b401b53086d4a32d2a73100b59f8c07c06f43d17d2021fdc15410e22b5911b3572d5f7996703e97d24699da3fe7714ce74a1daa802609cc631db787abb71504d8c016cb7f5973c0d5f91899bbb100b97d4063ca590d15f176612d2e8779f89132428c6a17ce0dcab8ca081b9d891d3d0cd0bc755a193c5d5180d28d917ea7c5121c702e7c66a58b5499ba4fae3336a2040c986afd2f44d92047b338db4b6b3b6c176d88c641a6d9b4d4749654d55785002b3201ba3eb86562adf07f94b3e39bb3304a2d022a872ae74cbf27f0194c5c73037bca2d3daf1150aee2f81991aecca23660de5072568652037ce13944ec9d75f7cf424607e36233008df0a9707913985b837c631288ac62c253c9cc1586706b9e8238bb0d3d14fcfad900dff65772b36ca252d9f81450ec29d6be025262bc1104a1643c099b3bae8914c8c78cf39d09907d725a52f3ef3a9981c2dec6cccb88017805cf2163e8909eb0822c34d2b42ed08af78dbae9484e7e4faaf2a40b0762f23b491a2ccbdb5cdb4df184b2b70cd39b0fd39b8a50e4cc527f4c6169e79e9c1cca54900a1624e198a0214d8013c017a2dad0aea1521269505213c1c873cb5531b6dcaf1c5430d741514e49e7f3c0f7bea8c9e3ecddacc99e2a8e729f8a0e9c87687f11158aaa9a7159ca567598add54fdb1a58eb08da87154c59bb9214e9d63fc280ce2fe1300b12d4b805d2d992a5e5f74b04e6b41ef9e4f364aaf3f90aad6435d7662d5639882f9edf5dc7ae1e5623fb1cfd9578fbe00cf82353ecf865d9ea24b5d5050e6f7609205b2ef209c57df854ab27f2dbf047e69666ecb731f0b11e540edc105301dd9b915fb4fb1d96f4f8b99b9c42f55f99cedb22638167927766642f0c1f6c4038d4ebc8dfacf6a3ea59532d6275fa5947cc80f44650719be2802f83f62b86776c7a8ac0b92305c69583eb7b1457e21760890e8b9f42f0043af46d07f82f8aab3168ea992bb165dc7396aef85646148b9e9fa88735bcc4f2f94d70fe02200480795aed487d24810b4875284d8e51e25493075e17b7f9f319da50e339a61412cee460382cef9feefa131bb3038360535c5593039fe5fa3795bdff94b1d41e0538536a9e6de8e4a9228d65bdc5cf6868680f452599112cbb3750f9f167ed33017d61dc6b6b374d87384d3a81e74289bd5253ebd20edd58d54bd3711fed8b2273d5c39ab91cfa21b2d3a901891eff40eefd70b8d0d55c1c33a9bbbf2e0dfa2430c736a18addf449dbaa6ed37f04b5a921f945bca6bda7cc75fe47f4c8395918236dbd810406e684aec3eca46c8079dc76defdd90c746859df26c661e746260ec99f15b3bcef2d4eba263d6563f305d522b58f2a39d9f420625b2da43f7dab24c63ac0cd79078a56156ddb4a295057c02dfd02bb52511d08547ec1c0be7a7a1ffdeb550551cf0170e89d9ccf024e862eb9df3458bede7e0bc7060860bcefe43e526edc7ed295f331d5167705f7f32da9721abf972e7eb1235344776ac19bc23e6b916d3a5e54f6863dfe0f46b17800ca77c07f80f0fbe0b2a39fdd2e0107e53148182c577a60a52ce377947c1c44f9264db8fe29b5d9943ec70997fbd1759539f1c5c279f645b68a856d58571bd99d0589f444f239f194c9e73e1606f8affd027a78fec78b8ce11a3871e416307c4357e761b6836be85570d3f155e9d19db103d148cf9dd8b51faabd6157e5e80c9b78e19501489fb6fabc2c1b7de2d9f480006f0b5858eae39893f9ec8a36ed92f2d6e64a31a7c1b13dfa8540d3176e2d451b09237feca9752c8e14b48eee5dec0cc314a00cf41303c8af57c727140be157376f5182e5bd20ef43bfb73077f388b2152c79b40c7bd7360aa0da790677535a1e1ea76528a51b5ea8ceecf9babab979606945dc154ab3269d729996e6f7ed843e8207cd7893e5f8be32fecbcae63474a8f3d3e66f5ad3be91ebd42319d4d4e81377d3531f4bbb7279ba63403c9d827875d7c244a9e7a7c83818af42fee45603039becb40982e1ec43e71c919a409cebd605b865e99936dac09953b4be63ee592eb0f1bc6c8a0fb156bde6c4e05df97253dfa07ad950253f18e0bde6eb9baaad215c785a73750c6f30b36acff3e760abd513258e60d80770b4116cc7f925f34b286649676697b49fecdc8e99c6fe3311d34fcc8c4cc1f066ce680bbf9c9fc32722c858204e9f8201dab9bd6639830830e9a24830a2dfc02f767eea40019df8d41f2e0f63562cdbe55f71b136d52a61b271a24e5992a123f08babf356fd83468d20ecb634bb0ad02be4af5fa5163445cf5ae233804ea209f5c279c726db78f1c81974fb8cabc783e54ee537c9bc3c83370bba589e1389bb1e63ecf59250dcc2752fe0e1081cffb2e7f4c62d44e54a46480a809d383e81106a1b06165f419a8f3502cc7fef7c9067599af2f049fac6ee80b15122555362f7419ab7f3379cf9f27503c503eacc8e94bde23efcd0257fca4da1ac39ad5f580174c42860c91be20a8b1b95c2ccd2a51466da013a02d728d54c168eb50c064b30da49f272f08ca19099058805f91afce70776194f24a151fe36c2619df9fab6760554cbb58781514f131f1ec127a06d98e5ce4ba82fcf1165937ed258ddc9ace565827b6b8cc009b87b083119fc093a106d5f5c679e7a145b619e34f69ac0531a9d7e17ece8e335b66f14fa874dafa045603e127954d89dfcc0994581a48f54fec32d4228831dabe01d0d9f887f4604e975326e8cda35e2151a452be21a4f7117740e70bfb98cbbdaba32795fae8150ab9be24746faf5c8a9ab253cf34f2807e30a238a3ce2aa5de2691371c49b1475e62444947f632da3da60786d0f1f52a8ddb0f69bb293540830f10cf70b3d84609d16fb1c6285a4ca9ab615ea8b0aa6274317dc9c06fba50e001d00fb9db760fe6e4e751a720bb33cfa914fd5ccd5a5e5ee325805cabfbdbfdbe82a45aa53570a50fc22573e6bbf7fb641f16d01f44b9176f965b1ae610b0bf2a73fa1125b14bded8008d3d1617951e19f225d0698241746b651e003fafa16764506610fd92caf131e8c278fece483410fc3e2c6f2cc76d4a9b66028ff3aa83d4a074cce66ef035e8f2186d2ff9ed2615b0c451c8564b812f225feecf9cbbb2de6238dc4c8770a0e17feb7cb02217da98318414257c4dbf3022d8f1e5ad79fea78168c8f1771affdf4597994697e6cece2e6bfc7219d3018e3ac49549e37b8a57e0e69ef51c8944a3ed215f36c15a2883aceab247dac03ef5a82f235fea559e6b42cccd5eafc30066a3a3173bcf2f7ad34004071bd080e69c7ad3f514c62c928e63457afd2973142069ea68111c6820af10202db0396474cb2a78e1a7121ec04900d9f4ebbadf3d306273afaeaaaaf0d882dbd511146f009b748c2e093f02baac204a3b4ebd4bee5aedc3935775b9d01cab2723ce0c06ccfd5e2a8a2c8fc467c9a06ff3964e96e104890097d00a99811114179536be5457dc37864f4b5f848d27d28a6143b90bc2ae09b218e867fbd6791404ccb662fb779119b8cd2472d1f9e360ccc37f39f2019c79f365c813fd80faf189985f1704016f096acfc6bc0b674fb117ba7eab0f4138791416638ba365c546180b8d5662bfe157f3f63430198548216d7cec0ec8724ebde55883b2c384cbb67b2d7179362f9114dbbe561c8acb3d40ccde56ea66cd7c832b299a96f3a0e0aebb57e9246068d5fbdb126e6a149f7ef2214c35f30409f1b44de792cd741df0cf48f273f6dcafd69547fde219908a75b3b594f45a382ffda619f7e1378df37a8b2a25aad273329002ef931a95a0a7b670dba6dcfc08119783f60b84aba6ba878de6158e689ab051e5ed1743f6fe28a3c061198e7a49d08a68271205e4151c49264929d9ba38dcb2559f45658ce96b2c232cdf40e63bd8828794ef664543bc2f700a65d7c86f218a9b76ad0391906f4480f5563b434403e35eca1079d8c1f906a271ffa21d669a27883108ee78a4fceaa056c0bd5aa4496ec5f37b2dab8b19abc88c61ec5891759c6fb2263f534df3d7116d6874f42d8bc3a1ff9383a68ef3955295b5478c28308c79ab25ae9ca31544427a2cde901ea588ba872f37cedac395f6661ec659f1bcde925f6a82502b32fbb07d4356efda64e82c35356f9abaf5d3f0abbcbf0b0fcc2191501aeb7b59b21e00858b19492aaab25c62afc3b0cecd3d7746eb6cb1edb0cdc569602791a17911802c9f5ccca92717ac661cfd4d4dd8bcdec75492a64bdd2150c2235e7d87759e137b213cb3ab4e275a99e4ac77fda073e2870b6486ba384c44b4f59b382847a5d0a4f87198a996e639f51246014a0d9751db9f85bcbea056a7609332bb1e7ffee3baf262a346e45697d9c97c5ef099e109251368b5a807e6b69c1247e8430d2ac2261aab0ef2a0f695c22086b86fee0adb6bdc8a14af3d02ea0effac0f6f55e8203503b48deb8c8673b92c499284b935abd06352b391c253e35870f024bcbec4332f578a74d4ab0be09e73e3cbf5e1ed7e53eceeeff4ec26941dec578ce3a33f701bb540da65f810e7f4df368804cfcb6078c99d45e4f15ee1d1ad6831c3e6e01102e6ebeed1f86940de0759b256594c9f91041716bd57ea464e77cca292090f612bd7daf20e9b534bacf13ca7d940c90fa9c18b188fbcc17e282edb1156cf5c1351a9f118dcbc5cc720c5c6dad1ccfd04f1beab7817561e86442665b841c97150d10395fd842b54d025a221d81f05c820474e492341a0c6dff31f4a38ee089082f7bfb17b9d8c8355dc76bcefcf0c7692ece39649e85ddf7e395f1baf893eb960d8e1374e84a1d32fc1924ec5808c1255b34946db13ada6163b368754820d519197aceb746d33f556f9932aa775b5547d4b42ab6433e4adfea54bbd7d173e622229660e74ec486937fba081cbb26de3ce7f6f76e070cf54315f18b03675cee1c06fc765f145b7fe4fd12f897c83e21c299fb9614533e163564b9d3090cb00f253029a3a4042e2047cead0dcd42969685de183ded532773056cebbe0242e9bdbf079eb9c8b0a64df4833ad35fc40a317e99070683255e7087a0896b20e0b483410f9e4913bf36cd028555302162a6c6152803b31b8dede9717b80947efaa233f6324941e0714473c92da512fbec873e4b745505a5e691e2f1b6dc2e98d1cacf4c1a42dff6e360909bb82027b6ad070f34ea2d1bea39653da363b2dd14633f5d0f11cc1617ab8239e9832b162b2bc18d8703a39a21ac2ce9b1f23395225f6b34671d5e7679459e7f86391c80e2e3c350220f3f3cb40e575fd8afae3bbe1104246b092e405bb740e213734a5a171aeb6d82b185973a797cf3f17d77cee462e4f3032d053044aa6d8060928f6227bee4a2ad6f7cc6bf49df364cc75fdb9c9aefda07130967032ecb5a29b38bafd4e6755e2427585746460d696c9481db581ccd583311b68da1e80fc45b330e7fc6744105cf7f329effa8d05e5f04f891e6a45c0f620a1c516f22c796523a325d03aa141674b2d257074a20a7b14308310c73ccefa815f73715282cb467a763532504523a1b1fdcf2ed3af8381fa967e02294195a9d0eb43a1f5413be08d6e9ac6e95ebddb34f6962bb64dbde6e94bf734cca4cd1d70feb5b3525d1a4f8551facc79b5f00732cb252e9df686627a56b80b13fd033cf279cfc12ae321a0fa58da9df8da8e6f9f64214e40c22334f13bf1f6da122b4673deedbff3f98958b53af0f4b40158d79e63778123cc6dfd55f43f4bce42f318b0ac418dac56dd9436e78bb527c37dfc28180fed5c439f952931b29e271d83b633effe9809a6399282048357028ab1b540cc0510ee6b19a63643714857fe51c2b1b2963b7964cb602861e81eb52348453e9bc497c447e8a8eb73c79f3997ba17f35f32121ac7b0172845bd8caed56a79285e97d17aa467312c4d10b8bce1d18e416c383b128ded04fd1724a29cd8fe9377ead625ae91efff1a562e03d382e4b4621b28f717ac6fa928dac4a086aea4e122d59f28c961ace3dea0bfc79eb62a5702870bb86a8d82e6284b39f61d2c39b7d99eb65f319cce48af91a9028a48cae8c3c08134f7285c9e7161a570947fab3497f00476f9ede57415cf5889ec18501783af4c371a24560a3046a2683741e851ec1c34fe45c777ed5cb03dfb8ae6648a1224bfbc723f1a69a9edc5ef37147baa1a84b199be1dd645dcc0fba7ca9e8365309f3669b6d1d2e8a47e21d34d1405e6530e0d200dd9997ad72de1e70e660dcf53a6bc4bccd999214ef9206af79b44915e9956f8a019919290066728eb9ae5ccf073eefa4b9f771f584c03648cccfbc1823d118326d7488e2fdb2319df94a593ab0bb34c9970d038dddf2c174631f7b73eba3e6fdae9edee2ead25e57f4c498c32a567c546f089930cabc63db6421a25915714aeef8d9ccd320237cb0e4d302fe1c964c4aaa604714105a1228fe5ad6ca7f42fb2e07c7d6b0bae5f3b320f59e9821d0f66b702e0bef73c4f3d891454e90599f033a96da7df2faf22455f49e28b10ca126096573ceb1d4154791bd607ab67ddc372cdc3da2957e67ce2c599d50b90710895a934fe744c3cb75b1836eed5ac9a549c28930a6388a7c993c7d5a5aa302ee7bf08d177548ecd98c65152d6197286f52b57a3f918218fda1241e28c86201d6e3b6ca12d8e6756223bf9b19387c321db1a0ea2fdcb7a7705f7e8c81a998368a1cdb7788be5629a43704d8e91662b3e1a5ab205f85a27a139a5dd5e40cab92e6dcadb5be50ca3343905fd10ba97df8aa658634c914db6389809d9b18f59fbe371733e5ae1fb35f0f6230a2394119aca72cb11db8a0d0c82a0313562b97528fb50b99f21e3c4097366b763b0325a2f8875b32cd4beadb07925be74aa54aa89f9b52eb1394e1863899f04d7fb451fdb81fc4360a3320dc2a24b3b2c0fd463d9906b0797c3215595d59e5350da3a8cd519d51e76904a80d73a163b384fa68002516c7d7efb1f14aee9258b3aab9c5033b8d929430ef742cc88665799fb1207f2c8d333db1ac85d4c15235103d28b3769df98a763426546b21a8eb0f67872edc8c9d448b8c70d6f7af172d13c3aac5d4ae5bfc8ca9c891e501f2c473eac63cdc16a96b0f74cffb89211a411b0e6b4a0d794b5be83a7cdde651573a142789aaa6aaf76c7f6ba4851d1eedce7feb5f7a2c1179e351a6d97620395b96850238967e8264f581ba4ad4dc85933c874e30fa3adf74901f6ece0504879356a835eb019e12e5761f5555f63c91142c59cb32515de844c0284a31d5e148b694c53e3c69378a1c2880e893fce50f5ebb5b46b7ddc8753e7104f5effea9b0c36e3720469c3f20b8d97cd39c06cecf7881d20032be0f23ed939613cb0dc5ac81ece654aaf5ec36ba427cda4a0031328afc840ffda24b1829153682cbee0da142cfac74394c073def27b4b38f5cdc1c7b699d281d1fd41ac559410cba3330d16c74c8d035ef0210c8dd151a3850db594502d1d50c2959301c384da313611e361e71e937a5d1799d1a45398ce25b1111c86177152676d64393e6ed1f11821c1fb5dca4cddce3a3b1e28975d80dca762c79210222f6771d20ac64da695035d00dae321be393b17008e5f0037f4c1733e4a9f17ce275a85fb44ba59edf9e20403843b11863e4db333233314661bfaf853d6269b187bbb6c0eb0f510d4912645056813ad34cf3bfe5277c589a0314bae0aa802cff46b510c6c76938cb84e921f7b4cf4200da1a82942a807a2075c0f7dfebf768b54b2e308dc49488c4080d6c71c0bf8d773d5de3cd112c588a8ffe11d7a17534a6c7fef432c380ccf252a10d8cd1fa13a5cea6e546349923de83cceee44f2981984fef7144be4e72ea0c149458a7aa6648c9f658622c00be9d0074d3b0d498e475c8e4bfdc9ed4ce81d3aba532aabf7e18d5097ce37505c2dfe9df59a6bb30fe45d62c8a1f2b065ca8bf74f81bc3da5ea3bc5fe855ed0f0104574554480151238458b0d0dd6d493ec964a7462117237ea214ab8bb54b5a7d9e005f5606865f5c7c04adb7149725e02ae803000000000000c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945862d09879b6ff8bdded4f70af68cd3e81dc71a4c671032da6cd9224a5c6c1a660aa1393872b9170453d05c1f40ee3bcb8f727b3e196cbb9c72e7f12ea97080f67e003c99764d0dda139b3165da5dc4bf9700c6a563fcd0543f549e7b19d4cc4caf777c3aac4386f3bb692fd45d7197df5894f1c9545709c9c2255a3b6ed950385ba5a7c9c5fe91bfc671695898f78518380e34231b3e36a49b641cb3e940beec0062", - "040000007d24b5bfe1999a3b21189a3c4d4867784bc2105a0196aba2ba6fd1c9a63e22e1be3fd8ef559f3e7d94c5da9f3ffdb276804f413014d8bf07fe14907d6a37659320e538c79c0033eb2537c88a69d77f048cf4cc4fadd09c9bbb91b4d965ac8f2e0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000200000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000002ef753da29c8538cbe9669c722c10bec5663e07d101f0a6c3f1f86440a7b00dbe374e5118632c4075f9e84b6c62791de12f1ec0e70e7d415d61c6639d786b1a0c0289051e9e5ef26a5dcbceee48051ae1ee91d70e02022fcf954f3d1190186523ec4cb0ad65db85d28e247bc1daf3fa5b111983e5d328166df852374f3efa9430f7e7d5ef94c51c82437ac68d11f78c190ff7314fdfe4fe007c0be3aeae7bc1094c0be2db5c7d2b24faddb22ac70bfa8499783f312f0bec068f8c09483f7b7edb6e63753d60feb460e2ea1f683740eded3d994f602670d174d38dd95b2a151d0b1d5f2592bd522084eba11fe9f8fb1eac057b84bde9119816ff74790db723529e8713c8daf25996fad08f2a78ceff248ccc91a83402b94311946343866a6dace2226d246cb8226f2bf7555640d4891457a7f6bb6c85962a5e482ec760b6d6483a15f6b44108c2096492765fea12c37da638a7add8d0b74b1bbeb5784c3712349881b78d229a682f024cb21c0c3961704a71ebd54be06a17f44b1fb1926844f14c3a9eceb626fcacc77ddb138846bb40f28daaf7e431d5d09d6f2be928bd09b03f6ee2302cf572c781cda2167d7d8e9b1f4667c8b3f7621c0cf85aeb45462eebe743a33bebb34a9d118cb2d4a69d2038d591e3266e77e122f9fb889ab83325e5d2ab3bea0e85e10cfdd1508d3233ede0b9de84634972e6d3cbcf9325407c43fba5c9dd30a70aece3ac6ac3d5598fd2dd29907584b85398cf21879b4e9ca3c2066e65fad046e788e56fd4a9098b5a4b0fbbe12c0f7c0b5caffbbfa69e4289c9cca89ffb3158dabeb2952a6af2bac251010a3644c01918e0198b835da28e26f694ca21d897785240d0477cadd8bd03bad34639189525c02fea6172168722cf2ae9a6b51412b4f9b24495b9b2852cf045c1acc6d97dd0d6746dd116cf8bbce3258c862e1fb18a4e91d9118c5741a38d6a7aed613910b11cb881cb6d1437669ad853512778ced215ff5b460a47cbfd30e86f9eec227fc123262d73f45d71e66f17492af0457191e797ac9fe6149f4b3cd631dce8f9844bf16588f55003371165f0e48562a11799c33c5b4e4dd390b3943fddf0162c033f0751530acaf5ac2530f320c157c498452ac5012adbde2cc19339fe82e1ee6245dcea9f587a40f3b78600de1209ef9eb6a903d267a95742c856aab1829fc8974731e49b6e8f674eefa81b23026d0bcb1d770c31a60232798a8828fecba930b51b80ae6b98645be3c5b80b195828dfab3bf8763ae660dbe4f02ed5b52abb301b18f3ebf8f1f81b8feeeed620809673472aedf9d70ac86268b7a162d0f46c0ff6bf52bf5dd289a9f34c19632198cf15730427971369cebadb6e943a6d8dfa84f83f2f6451e9d155449f6ff1b41f538eb760edccc3697ef679a586c8295afff2cd8de2ddcaabecdd1c0b41e8db2790ca35e263372e2aadc2b579fcd47d74bcfa188dabae48a78eb8e32e403a3f4bbf86b8535c568a332e0b64de3b3ba0e75a2ce01deefb1b1faa6fc59cf602d1359180616258847d458d03990f158398018e63abf87086caacdeeabf6daf6965d184bf8dac33b1c5af2223168e023a2f5021874300012761f400e35e341e3b54683442a1bbf7907060b54181d27021ea69caefe8326414462f03c44eacac9f26c8a37a8eae78c76dbe19d33f6b198e8a2f4d77a2d50bdc9785518a1e210fea6451bc05e85bd106737ad37e9c96105db1b9bb09bd7cecc45960de0bd6d803913fa43935a8c17de7bf573089ec323b1aba8f6eaf0603b91e53c540305cefe8361dfe47b787257add20569bcb7aad355d93dfe9d28443da5662fd1030a8e251fef553877edd1e1559bba63ebcec258035548d037eb34276f4b256b22631489e8f7201c86537a53502b6f9b4ae7c2a7272459a4df0d203b7399ca1bae6b5260566332b955e342132535e527fa207f8ec9b0bcf9442b7794160497121720d2fd698e3eee28fa34de2321afe580958dd133b1dd2b36afa84dbd004c4a571afa48466d3b7915c84753186b5a3e7b724a8fb8e411f8732b963fe81bbaa48b247330eec8a0897ebd64a25032e8aa4c987ff8153bb447308bb3cf5ab699504746794711928457df6e10d689d81cd6a846123375f5c46ed603f14b0ac6c9729075873179c3bae9740c273d0ec9e1ce060285211c4e60fbd2801cae6c7337570601712fb81abfc25d9a43464541e13bc42b02f01f8ec78a7e5dd3e84fa9576891397106427a6ef262e11f24a55af39caf98130c69bb042475834753518d2f67f66c04d81c574eaf7d8b83bb029f037c4999159186e170752880638619096dd852f29994be72f3a6922a97610fa11085d4288214fe131d2243929d40dd5915a6789c77a499f43489ec2a0b7ad37e7b5070000000000000000dcdeed4e7121d043c65c8049da787baf0bb29c59b75e9608dc59b97fb001c92ffde01cdc9b9d97951e4247bb513ff71eff5413fda3522232fb7d7bc48429bf301c3bbf60c1e5346e6b2412ec70d7ec4091384f5a9cd1feddbf9b02fa15e591c1f86bb9ee9b65bccc11ed903646e771b8d252e63306498d3b325c7cf46dd9e4f8e1e385bd5631b11f427848e7fa3bb78f8f97d090ff15457ddb0030fa9a8332dd2ed68ec267909771b6ee3edd3370ba34516a4a7171680d2d912e2fa4c966942b231609e3a4f5860f35991d117445464ebf6049e31d0b0eacd23a11122c2cce82c6f72a160e131c588770bc6df3888503df8add4f1285f1417543f380479052a2bf8597f56b0d5587578c3b896ed7bf0e057b9a39ca8ee3b1abc2bb967bf5fd7064150871024113211114f203ce5f150e30ff55747a6ecd17a342b77fc7c41ba70e1a216112048b26bea002606abde584d49e7cd633b7a5391290e7808978100e2d5f955cda22772bf642aa0e3b4e8f30edc8c9e6dc1d4952160377205a83730dc58516ad5d5f1b121f397aa2d43f47ff7a09b602b9c61958a3317d2316b9c8db14e40a53e88f1744655a81b850ed7c9388c5388da56e36ed67ec15e15b52cac4bf47a088df916d2c70c9bb348640cb429cbed26810d8fe2218424a6c63f1dfb5bfd3277bc64dd12ae6c088d7f55c4804f6c8bcfd6332bf4d6edbce09574a9c64d3fdb1e41c4d17a403646efc749f7ca43eaf94b014dd269c833ac3e19bc7442ab86b815a9eaa9efa44d01e69c77f73f600c5a911f6e50b5713d079c855ddcc2ba6462077f5d170cda9bf0eb8e477095aad7cd5c081864b328a9cefe21b44b53ae46d38a66f6aeded011536310c3bc0dcf64d2dd0c9015c6c2f83d36d146f9bc9f5a627dca73c5e092953815715ce9ad107d5450b84d449e0e93bf16a4e03d8b15d8b938216cd6c0bc08ccbba0658391f8d8cccfcecf77a85778b9904105bce80cd8c15e38114a80fb6e6870fbc92af588a905da1de9cd58d7c288e7cf406ef916c27b1b4b61fac457fa6390d7a7b6c14256c7a87fd510806be27244e778173f993bf86ff5cbe48b85178c8ba1d529a974a00995ccaf42b64d4e714fb5df79980d79492002f7e220dceb7a14769cff9c1dba91247cb300eb8bfcfc3a85e360266fc4b9f328ba12a6098aeebc67e4fc9aae6762defa078251a0d9653cdbec24fbe31ffa3ef322e6ba7c7114d0f642b72c7ea2688505047248fb18b8321959dec8693a1ab349c16770aaf10889e46d8d8f508f3233a69c9a820b88fce5d5ed044b9cd7420f456459d3ae87a23cc72d3d9c770f94c82224d95426e10107ceb351676c1dea9f252470ec81a9825bf0c2b4a3342ffd702cdb306a351ef3bdb56539da5022b878e08549a6ec8d8773b44c19281da0e307614f72a30e46b73f8db627c4ae9f530c0ea6ea523a6b857f96acdf37b42808ffd31fccef667f92d7ae7ee853233308d0e6a61fb0f78f1d0ee35278788dc3f7585fff3688ce16d40da875b756b2cf4aa33875e01404fe7c74614f184a5eb458acd986abc580f0cf2517110b9f1239615194055de68c7925573faef91ec11706d27b7b672b42b323c32b25a796e795baa58a7dcf5e19a46f21b27bb14e2db080ea704f7a1d15c2ff114964a65bb7429a216ff96939999a743316b073d63cf87ec39d924f6e7658f325dd6a77c9921b2b21f49a22b1d96155d1dc9a206a9d521a5b3372c397556febe9495bbad48c1d9a50f0578bf5e0fdaf8d0276c1fbcd0eda0a5b72ced1fcddd7f6dc0df854aae139d42527db885aaed6998cfe1daef4865a39fccbf57673eae767a975e43f1b198185b1e37a7d1afe476cc35602f148cfee549147584f19255d6cb3e31def73cef31e3adff8184109cffcb6aba6e268367a2f1d803604aefe48404ec5b431c13dbb14374dc9e118736b43f342a3c93f57c707f58dab5f2359f88b48eb85c37d052105bdabb93a8e1f2866330f5548252ffbfd62b448fdeb777168701bdc6136a22bcc048e3679f6098c00ca7151267a4bb1c6561685f5f6fba0d1976a6b7999257a1e4d5155020b124f65e43dc06da593c7fdd96c6fd84afe493d2ade3624fd7672fc0fa7c77d97bea5be3c865655cc77440c7d28ea2cff6eb9bcf85780f2ff0e4215c8c18f63012aa4067fc1524e81c1b9d2e08975b0305c2a1add51a9471c9181835d923cf51b854cc659616fc1932e4997b2b3b737e661945abeb0d9b1fe3c113c2b2a8b371d8630927bcc23c21faff67fc6680ea0b3468b8a0279e3e160629bfccc7f1aac37b5aba4e275cb9cb8ada5c99361c70125a45c0536a9467343dbf1a22610ee2da7ab15fb8d3c5680cc447458f81523ee75668a3f75302693169b7a20349c35b77ef8e99cd3c8b852e4d1871972415de7b9bc9859697d7eab02e559f03cd57fae9e5d3d692e617a2cfbdc34eee3c9db4efdad6f1fb19a7c4907db5173f80ec204fe16919bcca832722c58273f8fb67f69e5d8b24c285aa1a74581f0f9d1fc11b42f578a1eafe7a7dc2c6f11065697d3207585344122314bcd914733132cd0bf5a661eb329dae384c0a85f559932a49d31facb17189716a38b20e3f0c0f30ab4686e79cfe9ad03c00fb0d726991869b6c89ea25da9450c3d6cc5bba1bb17c7a3c38962361890e3f7e24ce94253f63e12dcff3e2c3d045ad05f45ad9349575c7ccd0cd82fdf1e083c56dfed867382a4cf758decef9c05bea3138ca4507b7f638edbfe8f1512911ec00d4379fa996b4d64060078b95064cc81e92aff21e4b30d0b848a8d8d5ceab8f665e686881a79bb390d75f94c593be007bcd38d10de1e750df1a9256375c15e2bed4da66082248abb6d6660ec9ef6351125c245527c3b13e22d77ab516f2457d890f9dd5a6c8d0a21a4d626a5fcfc4bc3a427b5d3581830e070fc6b4c0ac8038bfa1aa52b12b0329410b6b8d0d78407817ec0cd708eaa5215921b14e113e8ceee38318fe47f3cf5a58c1ab86a6eb7734170e55b5002ab3a48cefe62fc6c897aeae4ef82eee968be5b59bf329cca3d03ad5dd38dc287eeda31de96cfb4ee94eca046b1d9e83632f1ce043b7c65782940b60bc0f9f35cde82d5623c83c6d3540139ba820af7bdada01c22a2531b1e3171e6befc5b8289868ccceedb49fe28a32bee69055d5e167eeaeb320832e0da67d6f536b7ea5226e86420f72ee68978a460d1a5f5d0f22e7b3fb59f68489f757581bb4fa107c14829bf5b93ee95f76a84c2f08514f73aa5c062585b57b02de19dd4039afc4480d8666cef6de93ea111a934295350433ecb4d7cd9957a0cc739439bd5308449d3ab744b76f429b3997611e9edfcc49f021f65645ac5524ddbc8fe9f49d8820633ea37d9e9dd5bfef0912fdc1ba80500df637ca3701122f543e99df4f528519c6233fe9cc94e5d2591124212b6a7711cb083018647b0e7200811aa58b82b5fbb10d347fb64ddf7ecc1e526d69bf7d0bf9ac4287ac42db1e4e1d9037ed3d9624cd19c590c460c87c71e7c5055cf0b78318761a5e5b8ea36978ac18275470e04d8e3da440cc7fda0b2fb7857bc2a0bda4843a60d21c3bfaaf7e32f16de155a161e01392be4ef0ab5df2bf0b18a0aaddcc364acf987c625c20fcb90b22e3a0bd6fdd161780a58517012cbfd7086a042f1e13b3f337ed2dfb4f66635d188287bfdadc3bab7a139c3ed8d784c2773836618e440f2f5ecabb712c9116a0d8536419ce663402b427556e899d12be13a588c66565c60fa3ee42f5b21cd3a8febc2b906eb91a778baf31aceeb53acb3556007cd7752fcda896c3a4a41cee337e5e63a5bd7d3d9be234295ccc93a1cd3b4c171f3a7210306901bcaabea6776909baa057ec840813de6ca414318b10d18787403f9ae1a57d671cecb824163683d2e8f3d40cd916a9e6d63aaf5f69dac13bf6cbcf9562a915febaf7d95e8fdc956018e42276703719e4f0d7c698051290d59531e034f884fe7794175006fa69b6b09897979881187a31d33c3728eb87e0562213ae81f502108314c35d590b02b4484caf58925d3f9620e89d5e4272be9fc2bcd587d337de2b815b64ebb3dc542dda0e64ff6d6037fff10941f565cb6814ac3058945d4fdd79c3f97819906551441b1914a4b6c4346a34d7d05315eeffa813cf95b83767317386bc21f1456ccf52cc983777764c02dd9c5ebf3940c19c8d4cd2c1e6366935211884e8aee011aac2fddcb0646cfb290d3f7ac0ea8fd1ec20b57f67a28a470673c4c202eb57409ca729c4ffadcb1828daed09ec1223d758548e477e7e06f8d9015df9a40b964438b2c59261a8527d0755b468601d381e60826627dad42f680f33a83027246eaa154ae2cf04ce7cfd0eae34735da1ecd1b408f4d41a9278115695b16a248cb697366105585a863b4629f6a6899d77dca911091f73e33a812f5baa98b3460edecd6cf2bda734810a7412943426e8d8e00e24afacc681379b92978ec8e049f34b22de5488e9ab25a7bd135ddcb766dcc95ee688268ef957b83130c6869bcf0bf43d606209c5071b00e32a20cd6da4bd4cc5492f435a62561348e3769093639c533570f22b9ecda5aa7c2773753211c68672101694fa491eaec2005a9cc439f773801afe423675efc54e302fdb5e09b895316e7ac8898343bcdd91ad238211e3318ddfe0d86c5ae1c6d83d791c52d9b35496b8ed9978a1c7b5dd00bc6c9697f39247238c2042258025121816660ef0c53a49995cd9b45ba1712d45695472b69d6757e56c572c0f290ad6225d35ca5e5f564ad2c3ac7fb0aa41ac346ec3036adaab5000b9c58d8861aed031b0e627a1e665c36dfceebc558f59df5b6235ee823de9d185d171a9237a20811d9b5e4efe508fb9907d25b6849dedff9e8d71fd0b2cff2f8ea8cc1a7e98b204295f267dae98a6476d99f9eb73499fc918e2db191b9decac79eef1b046e9958c32ff1c8bca28c125b2b2340f980219d5cc979eeabf2b2dadec09e43ea4bb67b136dd30cfcda9dbb611d899e5c3656d46bca5b43affc771c9eb1697b10936d6922c17baf10888d8fc10b4a891d4bfe5ead9136c4f79215c61d4796897fb39834f0440db29202211d82d2b16e69d9398fe33e22959a4310d274c67a4dc9ae6acf72abd13a1afb5fc319c3d5ae89933158c91ffc851e5e5fc854b102a047a0d30211afda1cb548d279fc894f1002c3721e3229519b560f0a71bb648149bc763b3401b9ad57704139a85d936bd0879a820f90be6ea7d78b6fe1679d336dcc2f776a3373e473ab5ee54f5e0a8df6114fd0e2d88ed6e7035d232eae1e4d785b417a43e06bdf7bfc3509bb4ad808d39ca785673436a1009dcce6cd055f10439de64652c31dcac2b65ec47264fec73581f8598f8c318bc0f8d0eb929e7c4d6e5f012238e01e19b1fd6b54feb463912e6557b65741ff8919434e44e04e41a5caadb74f3cc0254541c06faa480499326b7146499b55a2fced4dd416d5a31779c8de5dea938385217832cbc605788ff4fa96e24fdc3875b52769db18abdc76a687974925a52081043864ee8e39574d7f27fac30650eabb1fe70d5d7bab946b234d1b8ee449f08654ac868a22839924b9e7b94175e60c5b575263089b525f40d6f76570d2740095a43696a90f486332f45f4f6ee2d1d55d4b3f2311637a9e73f921a56ea0529104573b25b2c48307adcbe3b2232cc04933dae07c34c491099c57dd7e4b393fe34db10623bb35b74ce92f8b1892d24b9fd88eb7cfc3d1791b0bc3bddebcf42592093e6ffde9f40766ad3c21a67caed25b8b250946ec46773565fdcc6305803362274e612308b8b767423afffdb27239f3b9bcb8e70bf0ee68cc8a1af4e59f6972d7c90b182d862066d1b83ec044b259b398840cc736ece77dac61d07e4b338083a97146137dce132a2a8a0255d1c5aea80b5e0095b6181dbdf1fa23317c74c0e25cb86b08c4136065729777527f49f407256d36049e4c236201174b312e80090376a2113d62058b659f63de5b8695e52fd178c573ae0e14f205cb2fd929c9f09079930738deea7a2090288911af17e157d6c9ea4bc04f6264c81e4f3b5b087fd17a7c0b7eb631c1d1476ddce8be398fb7f576f3f01f98b823b7e8eca7cb3831c0ed3c036219c94ecf5a0c2d112f788d73a432394247fc0244de10e28d4577ecc084c521f0007f3a6215a549abb3091e59c6d6cd674c8e5775acd276c980033df3c2143be0589f65da81bfab1dff81e6783f814980bed3cf47e51dda6424ff43c2a82e966c7ec5b197a73cc580919db591cc522f87a561ca46753679b8d26110d1667bbcc24706633f219617f620958cfc35c1d70e034c0555bf76d9d854f8e5a0a973b88cd6096e5f3d2a72f3196f4bd42b32d6849fd37d10df37225b0cfe05c1005ff528c59352ad6e319f77da2ddf1c94b8b7e7c7a25c7cd15121540f31ec51725e71924c3616257756be8d404b53cb3091c6c3a11940c44cc8808426305550f35f9a4c5322222e661561bdecd8ace024f4c2fffeb3bc1bfa7f69454f6699d36dc42f35d78130f04b39ef392c5969a4d8de6d5271ee7a32af3f311386857fc0c21d053bae00a066ada63a28fd84b0fae439f1060a7b633ea07813863162195125e00d9c2aa7f25c11c981794cc97718f22e3cdbd21701d6f6f5fc25885be6330ac8b8266bd64a227535648a926a002345e224cb6bb4ec6767c1f1511c2c1753def927f97f9fd620c27eae292cca484472b6fe5d68aa58d3fbc772153043073308ec7c0a37c5355c0bdd43179025aa0e8d492353849fd7accf1a0acb7507f11281ab671d69ceaabbf539eae572f0015426f5e9a57e8c4d4d92216a93027572c11172cfb505e590e4d5899aa663a5ea32d5cc163ebef26c92908e15fe3c0705d06e32504c7901bebbbe7de2bb3f5ec28dd50299d941b24242ea0e151d747e129357f4fd6c98876dd0779fe40a7cd386f198150b43d5fced11d2906915937905f104a9ab5f0d05ddf227110e72a6c80a7878e559b5d8b1fd632e851633256254a22608358228feba5055a91dcfa6f702d55b8a463f0e0dd4af11872694e1b38ce25e8f8b4ec993d38223eba5dbc585fdd5ba53b179c20a278181fe3a0d13a7feb333941b59748b2b06b2c51d6c52d0a8bdcf833628cc30787d9d16c0991bb5a523a92da788563800133ac376a6feb09a8ce1de5c1ac1ce128272cdacb42b9592611e34bb0848a05f3c69e274b33481fd2b351ce7562413c2b2eee4cde66944b64103734d44e69b9187d0c98ee204f539c59b2374eef044e731b1bb3d06465f37d16634579e24f7ba512a29204e0e3fe7d89809914e41b7ad8d17e5ac11af5246b2192c833af76bad3906f95683240ea619360d9a0ad9e7e97777e2797180447e13067cdd4efb5ee7429fc5b97e80d3f9b8396b8d2df51ac47b434ee0109b0eaa22f854d4de4ada9dcc003a4a8e147ceed375d607922b59a50312813519571e2a526774b1241513f77d2b53d3d435f141c55eddad14021ccc542ac37aea8e24b9331fcceaa35dec147c114e181e9a6800f1748c3aa1b425d532da7ed19bf10ec5304900d6f685acba0fed0d7bde86d5d5dab0fe046efe66fe78b886d24c097fa252a7a9151e7ba2cf15798d1cdc07904c8f32c1853b8e79be4d344b6d8820005ff2e11ceaa7833e1de67fa3f64637bf20963bea0a981ee810562a0b8b2dd532e01140421a975d2e7f39c3988e99e5cc8116cd9462e2f405121dea5a03616d7fcad17ba0956b84671d94c524efaa13b6b0bcc15b98b6433619bbfc9736d5432fc5237b9a018b716c2e08e4eac57d2b7c33ffd813816a0b01f7d09a5afa082e1d10a327247e0f086f3360dd6b9b736903a518390b887a6dd2f5cfa65322e5fe6dd801ce6ff44388ecfcc02ab12c562f55484cbda45465049da5aba32131491f3bfd92a1f9e85fef13e622e06445252fe64b42680ba24d09d0cf28c9f517a24ac14322d57761c1d53491940ce65df7c1ce7b6f766409f66f6ab4a9b455df1de0316ea2281d48f8f2bfa74f001509e7d2222b7931453759b1cb0ef887335e62bf97aeb1fae49095be74c11f89ae74297e22a342f60ff851f43c1e695080527747f9326097ef0a6838a1f46daab1f109c4e921beb2ea1cb6a334dedc57e55e58469aea61a185933a8a4c5fcb5366487d36541c46f12d8b830ab05c415cdafeb875eb2031e154fdde2d07437c0297ba56e4416cab08544013b2728a42ac6daac513c436f3e07dc6aeee0957297b17c242e221c41187df1fe919602d84805486c0dfe8ba108bc4c5b95c300bf121307d465a3b69f99fece83b1ddba11e3a8ebde80cedaa52c7b5acc9d0417064415bfb6d8ff6ff46444a62619c9321171883977194fddaa0fb059c29139fea48955b1ceddae3ac8051923472d23f06773f49e6624a8f2ba23b36a6c574d85b40f701d705c983ad5bce01bb2d031617bf8b2769ffc90d2ef086be32b2e84cad752afdee010c8e26ee09ea95e963b57e93188d4af84a71a5224e383a0dde184ed343fc59f77620045b9d6cffdb1a89ef0d5cb7e853810f24523a211f2a2fc19a49729d02fbc51b9674783ed4c7c0ef070c6b47413681ee65934cbc65777f92d13f01879a5851ca57501b5cd016cce8e9902f4379997d5c75b3558161552ebe9eb325a3ee76fe87bfde3d2cb44fb9009bcf14ea07900a9e120367d6a0253fba1b57f388efab647bcbad82a4ef8b5a7158c3d0ddfd134e568c937375a9df0304080a5ae883ec3661b176c272c7dd87aa40f209c9fef9d07bd102818b55f3e7a8c0e06dad914acae44f9023a04395e12b1d41b7d425634c748713a709547376cff51e864654c3b24b19d294b99c5e61abbc2f270163995512a5d042d94e1df1b49bc9f2fc814d7409f97758487ea49b276ce60ba980b9e2df67e1a186a18ea60ac743f45714b80eeb90cc06d7158f6cf09c54a858fef698ffe7032c22de1618bfd90bbe8dd7db0aba29f53abf0aca67e1471bee1c871bf3595f423213645b9dd88a4153c7dee3845194b496abcc0104997fc89eebd4fc72c5ca73cb5789cbbec9cdd9cb0cf9117718041860fb2073fb3842c45cd1a8e44a295b3166e1ab0a5a18aaf22575454d4d3750aa838944d1f5caf671d9402cf331785d83c50c29b2e49d402ce4ba32516fe1b37c463359d7cb780d3561ac8c6ecf1626d33aa1b482f343086e740be27175fbe1cc6ff2f798b9cc96e2d88baa6d80b0e443374cdc7f11cda7def2a1875595f6980d0779641c9777632f7a5aebeb48f3e9d01c187695217de185ea6c99cd47b321c53c26a83cd2f749612ca143a2a3a594c2e80c1ec90d98564f2a69e579f9713c20af6a559f541514a7514b8fd88165be486e825c3de6899e97f9e39a1654e51ed9690cefd5e225602e68480e9f2346b3f8d61268dc5f6add54484b7f4bf8fe086110f74183a0bc2515056f9a0bad6f4dbbd848d80df7a24d5d92a6b6b2b16fabc0486028a13b67a2bbe17f9812ccf6692327e78a5dfeb56feb6dda38c9ff2360062cf7128f357ab4b395b26880fdf80dd889ab809da70b1f58f5c1005a3e054f9c40691c287163f445610bdf0f14e6cb73e0eac5ab2fa5a9db4a9774c135e92200c27a34aaa2f3b9e2d568d28ae69652f1a351636492a590f79df0d4f9d589ba0651aa572a6cf9070a873ce75a200506ca74339dafbf0da6add65d5b5594b5b49bb0b63b398b44ff5f996115ce0d1b6f220b7b7b20049f5fc9f26e4fd8b7668578c4dda8365a9e79db99378091b3572473747ca3b4104e7b7bb1bc22988df73cc1e6fdb242c78804b4334550788a3e6a50a17fd8a0985f2449eb8554bc28c989cc1d9755aac8b33482d2c70525e102b4518f7aed260cbc6d6e7317a22e92b776183ccd105ac9bfbed1bbf0da4be0c0203a390cb9b488ed0aaa098ba8d5ebb9659fbf19b8cbc1b4d78edae8f5f272d2bf0303fdedd0e3de90ec360fced0ebbc85d612a9c396ba66cde481b92efc7ac9a1381dea34d170791896ea030cfce7234a0a2d2301bc79043aa7dfed6f3ea7bbe28a344a274fd9b9670b70cd74379a6fa1849a26609f1ef892c0073b7db34f09b8631af1884552a234f7f37263e04c61418b602bddc8561c0e097c5767fdeddc5deabac6308e5ae1c41565baa4d0bb33718486f3c655245f26b26a12becdc95a31819afa5729cbf3127bca5596f9d409301a32e80a3b7ec270b9387e88e9e1422b9ac903aab06f29970b50673222a3460acc1ed2a6ed45d10d3b42887d803e880f39141ce63b8d3fcaf49d87a9ec7f9720808aeaf8eab0ab37ab690f97cbc125be08fd6cd41df957059878d19b106b39e06bf30cc9d3c85f25de650f4afd295dc11025f9a72a5e46422d88c01972e22bf024fe61e0dfb824df1bf44d1f77db0118127ae48e2a145d82bcb537cc4be81e7bbe0e1d3e19b56537e7bee8931d4fc38a03d1c387079b64590d1f775566cf0a16ca2bbad3409c29ca616d8f91040a3ef52bd0b7fb2dea0b65f0841a03fcf8d25a6d7a0904a74ca61835e3e0734e4addddd167cbe9d3ccc89a0965191fd70065b0fc48f450ebd036f9c15039393ebd191a982fff506847cb3de8eed4cb8074da6076302b1e7623cbf5bb1ac4d6af09fad853100eb1aeb302717031608283897f3edb7e5b7f5768a363eb2bfe951b6a9c470d9abfad6ebabd17dadc0ec021684726a3f7daceb4acfed42084e70c8e721034f481300", - "04000000821ccb50796e05b15fde182e6e3170ad072e8c43cd976e191b214cc0b1bd9957f972fed3d6ea50bc8dc07827d9314a989ff91fdf51efc2506c098a000b9675c3e2ce3df4527cec45858a7a5313b87d0ee29b8e001768bc64da9b0416a06ec0210a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000300000000000000000000000000000600008077777777d80a1977000000001c1d1c0000000000025ffd47baa3f5a5b90eeff3e0779f2d3563860fd5b9d7666cc06abf31b105a8140643a0cc5b44e881a3eead60361c59cc283f1fad00138eb02268408b29029232df48832e00e32157fd299f16bfd4482cc933ab2ff4cb953b162c8998e03a4d05bb13c472eb737e2e3cff834999cb5438003c74df6993c0579033e56a1fade81706ac0a77b99cb933f66906bfd2a2402c8739f844ee72d34ba50a1e1e9486a73e4c7a063267570a483bac82673d954ab903345b291266f89526184c5633a54bfaebc05f6cea64c403025806e65d8e89cbb0ca967dbefb653063a35597715c488891d19d68a5b7f0b74ca44b7552aea2308e325c71f7199ed497deb6c755c6727993f4d218e3128bbef26bd03941a19b344e8e629d81f15559abb7f6881ef7c688146640b02a0e5a9a78e8c587006eccd05bb1d5ee2ab8d1c743391970a0cfe2da89d18fbb51bf3d6b9fb9aa1818619406b89b53200b86d8b3094e46a01a67d63ff2b113b266cd38203f05bd01cce4e4f39a0072baf5f582315a98575332523e967e353cc3ef8d1df1d26dd79e5375cf9bd93f804e4d709004967bc70b3ae79bd7a9cb67cd273bf3df4e1218ec3f67dd9254b589fc73d5ce565e106eb6c6621a5c2438fe784eb5d95efff8e3b008a63bb1c329c5bba077bc756f875acc5d0eb0d02d67f2aa04738c8c625b56c82cab932b05ae2e50092322887318df508180080e1c7b80cf66894cac8de85931e7fedef575e2f7146ecc4658ae936a722548c527593bfdc59acb58ab6c4f360bc0ef75e3bd171c1c730a51749bc95bc2ab4eb7cc3792e107c31239e3711f35b3094c207d73cb0ceea7643d175cf97ae6d8d221f48fd048236449a28b497b36ed3c817c161d4ea89b7bae5170dfc9c33b3b08f0a38e964eabde9f4020eac2a7b480b9dbc7111d67b45997fb94f4244cb8bfefd0d6326a9da5203ad489ebb4e66f382a5bf82e9011e8d3a44cd8b6eaa60662d20be380bb5f474e5f8d70585cef0c5e490254ae896caa9bdc42b85c4fc0cdaace29679ade3adb96628241c509aa1adf1bdd633850f4df4b24765fc4dda5feddcaa6de3a55d58978cd71c9fdc5bfc77b33506ff8b198dbb4ba4cf3d6d4da3db5b76cfdb26379050cec5d43ecc5edb79d046e56ce8582078f6dae1f9802665db37c5285ab13076b7910c0d230f090375c46e44b0f142d540e32b8020f271de3f8ffcd2a9c8cbc1a7f5db56852ec2e9078731d724824ef0db06e8eebd7f111b7326a751086cde390eb42268a8dd44b7b9b1362a594858308abe397b2abc43a57612f98d027afbe7a5d3035c418bc32f556c8564c0901f9aa322de146697139f8801fe1f4836a800dd0eb2033d3b1c79b4f1b630b85a57a009c887eb4faaa0ae71aa5a1b9ce1dedecd5a9aeee985941c39fd28e2412193dbcd3a941c7d20e6ae310ed6082184c17dd2fca5fb27a1985843a6d92bfbea1c0ca8f7aa583e0336cb786cf38b893deef8f5d9a7ad8b096013090ce9224270c5ca0ed72961b44a2749eb99c23089258895392fc65c6181e59bdf0284a08b6bbcac67a394d3b73185f1c454ac279da8c360bd816131add0e86431a2f4bd018bf1e558bb79761851f9b6b1c198ece4e6ea28d4650ca1f5fbf1401306709d11c65829df6ff7b6a4b8bb55921ec2a3bd146728b717f31681c355cdcbd551e6f310a85ec235ba6014dd384c0118d9aec510c0ff524cc07a525b4e80cd1d2d51649cc6889b2240672cf91d9270ce131b10e839c5ba8dd5ae0bdfc943f9052aaf4e838cd0ad9074d845312f17f33a1333c5e580f48dd93b4c013ce245e807acc8e9bc89429027b3e782bd1054c1ed0b81c6f5b54184e7c0c3289dda890f9d5c21cbf13660d4a5634777d00944d6e9a91a560a7422b354fa46282871b9f29bf0dc7cba8547b19c53c16c5e9cf9986701d8d15ac5893d6f5827bb02e0eae3f589f4fcf153515406a1804d2cf8f62d765eb65e09d16c6dd3acca553ff0083ca089e62fa06898a1859d224d8f823f01ff17a2a53d2e27ba6eb1ace30b7f9a97049c581b912645ca1337d449fef95b61cee2b825716f8db4defd52709f08214e1be87c2a1fdce6c3225c10e72b0e8137dd99e2080a033af6eeb1ab4734cd25b822c7b6ab2060774df62fce9bdc9d238b679514b336dda53a630aaa419af1b4df7489bf0fa054c82bbcdded5f01eba9137164a023f495ddaaa883bc42edcc05c2361488731d9352278c9f9075197db5e29a1c87add4cadfe063c6a072f6e1fa9f8b1ddb2a5e46c7b3120627845eb9891cd09b299270c63f0147376065b406b531dbb2283bfbbd7f793de7f627685263d89308ac3896d62920ac548a7f97681b9c0b48671dbe6b6cdff66b3c80dd90b7f5aea8f2616a57f0c47f2375f070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c4e5f35dd019ce932c8d81f52f6ac4b4c7ad62d1513e1c5c445d10faaf17053387812744aea4097a7d1707dd944080558fe3569fccc6920fcc5edee87764c76b69c14f4fd2f140a5aa80078ac3bafab06214182cd9e26ab213ef6a424b4752d8b8b2b693f46bdd24a46bea270af5a4ff7fa74189ebcb1163d359d3dbfa7042509689bc397969857751feed4314241810eeccfd63998768b5a811277d852abb5a1e88196c0e6f98596ff2ecb67af89c3dd6568a4fc2e495559d85d9a043c117615fdc8135207ea0cac2c99648e6047226055013ba411abbe71fed3f3fb678bf99ac4d44d51224662036ac1be7e71d203934498d1f0489bd4e9f8463ce20e381a31cab6da793065a53353682f60fa162048ec3c278685200128c45ed315900a3111b2a3f36810bf78e75a36765a59b3e618177b61f6a90944e0e5973a573c9f048f17f1acb7a5e29889ceaa14f78ffcdbf9b83a3a8ee5233dde72047074853d78a6b7f5de7b73d0b861dfdedb8f2719ac647a67161803b611e5b80338be8f0012bbcbf1f5f05558b742a7d4271865a4e3c1fe55489ced6624aa329fedced737980ebcccee2210078dc20db162ee0da6d8f12d6293b9079bcd29416068e738f129991e084f498a98b41c4c7a8430ab26e0e06ed6115ff86611a29893b50c4190322ab26aa6a3ea878671fadb3b77b694dfb541dfd52d8e199569c800b003931def1aa79159208545edab077606d0f61947a571b6e7c0551002d739157c6f5fc1fd81a2e7172e9f480f0499f9162ff55146ea147508098c2ae0c723d8f113a9fc8db656a25264b4d4f1ff86acaa7498f351934e3fd113c2f8e45488360a40b0cd1e8be9ef9c323cad2df8c077fdb1ca88159d3339818c557e4ce14e8efa0a60f9ec0e474f05cf1478643238fe22a7ea8c74c555d37bb9555e9e733e07cbd25a3446847a3ed44d0390261cae0a92841eb6c49b20dba2869f3cdd0f33754e813f8b270d8d7c8c7a605541067e929ee330f34ee19f5de779bd0d74c4f82d97e0d794afac96f3184bf7456e8a6a1ae576889b198fe9d619425b3378e2b8cc97caae0497a3730f2adc1642f039a99b7df9d68e080e9ae10dfb93da507276b50644d8a963a0f381f5f2970725ce544f384ef4797e5cf686a0e242621501b3b5b58caeb4ce31d8dc19de210ac4744180a3698c1ccd5b68ba48edd1d242764e287d1b22262ca260c8e5d4c031a798684aaa48b739b19ea140db60fcc23cd4849deb5c3b3137331f2504ac002856a0e2a18bc613f2de3b0b615335755d9a7de9cf27d1ab273b93c87e0c03af4414f1586512fba9bba193ae17f636dbc8f2957bf28f31b2f7f53d3e4dd6f1ce49137a89a55549f23445de2650e4f1c00b22c6396c08a49e803505406be93b90080bc7e1317a4040810726d775090a6b8ff2ced7e1d150b21d3990d64cd3f943db519722fb8b4bc68656188e109fa6670235ff5f2261e4819b0a3ba1d15be9a6b39a07f579923924d4fecf753ff918356801b662ed3071753bc110adf8ace113d4bd09634b88a48095caa9ba92b2dc5bf8a59a2b7964861493ab25fc0e588f29bf7dc2b08fc95b27d8673685d313551aa6869ddf013253c6ccca39ca9bd71e3f31c77efb8b7a8a5d05afee6d24c027e0ceab5b3159632de281253ec3bbdffea8a9e761b4f1ee56047dbacbbf7d3c88240d18e4d2f625e24d2fd4922f81cd50895c276a738557723711934ea1705ef98a29d87527af74fabf3bee87f2813ded83917d8ebc2890f9dd3fe5d988aca61f771aba9df9455e22fff03e8565feafdb0619706f36b9dca969747e4061be9248ac3a23add9452f9830849e3e72c8a1b13873ed3759589e03f800f9209df6ff23edfedf91fb8eb35db90a1e31305ba079f6cfd6751c036a050c091081a7cd92f6a0b9099e3deba523218be28c11da50788de3f60ee17d78cb8d9f210365f94a9b938f37a5f4aa1c1637c596a04ac232242d6725b6b49b12208d10a47d8264c2346b598935fe0f43eb56e0361eea0a8a631562defff77b502e1cf0359bd42f1bf330664217a637476406e402ab0bcdada496cc5527f74b911a96d7b4b927a80fd918255830fcda63832500e53c4b5cdb90bc83099b65f18f4b84561aa54c7d2d969aa3464eaa220c59669baf9d7e08216d3b33c39f5573c41411f1a0a10c43eab6cb39be9baae5f828ce41e50352863a60c4575a4863482939f2d3e2db6414b0cf533468ca0f547d02030ec80c58632311a48ffe647a6ff5bf0defddee45927b9c888a8307ea592a3037261215036fd0b441aa141c7356d91031919b2f8e2f92af9134b9e42df419bd91cb582984da871da855643b4ff5bb4c5cd16a773c99688817fdd76b7faa1b0b1341de20e35209ab6a1016197fe373807f9e406214c7b9c0ae7aa8e4412c7330f88d053056363d0cb4ffe3c34b05727144ba6e418ff0c5236ff9a4bb716986c86694990d1887982d0d8c1caa1c471c793cea11b5fda1d346da4caa12e74f36a0fd8af52d743b9aabb1262ca1295342cef187f3fb13c1e565f7bb85863f86f93dddeb2613dc2aa2db4259e9c086ae837c4e8655a7e37a6e3801c6811718bf76704804fe276aaefa402ffbb5394227225f69e1adcc7556936bac642048dd86b35effc30b0723034ad8fac787a99022903d8b074cf8fdadb8ed3b8cbf75006acebf1d110534f3f533ae921c0b78ce67452adc26124ae25dd9bfaba7d4914b379360a812813d3f5743f889a442d4b6d437b1558b97e15a5db16296f36cf499417a484b4eed0ad96a626149a4d847df37d7a88f7e1773f89a26ff26e90b930fc2a8494cd6170479e0457a55b481b045dddf6e7362c99ab049d097d3251431e61242c819b4d22f70db675f50a7dea683a71b66f7f91c6ecb99c019d207a6edb7ca4f9ffeab7e29aaa723bb87f14efb2fdce5eca874cbe2e6f8a1801d1f7faad249cd9bbe72913f121b8ac6fe1446a0b182d661b0d8594f52e971955322c9c6595840aee5178518853df56c9676206ebaba2aa04f8a20960e2b5cc3be71681e85d686ee75cb2a39cb9b6eb6b0933f34a49487839995931a1c0c4f804c1f9dbc45c9996811926a0e8f9cddda2e7d6c946d70ccb58717660a1c8bbc7bdf868849de9198995148b210c81081f7515983e9e7cb807dad9da48aab614439811826d84a1f97515f915109383260e314f80fbf1f5606509db8f2103ea1788570dd8d452a8b2dd13fbf1538fa9cf2e9c9fa3d12362fa93d496d1d770c71516c794fa7a442c2fb0395afc70d900847ca74b989a9e400d3fd4c5ca81c2211c856126b72a296513fb401aeed0892efad767e23594b6c4da91e8e45779c76c6c94cd9a02d0adf3b9ded9bed2520064891d9fa14d4e26a311910148f057bfa59684b73813264a2a901d4f953040e2a277a15089841f12882b2e069f913787a37f7f9671be7747f7abce6a97e16183d03c5ca8f71f38824c0b2e197b57f5aab474201cfe23f90ca1e7a4f11e3733b1dcefd8652a7cf727c5ee648caaca370a20ef0e658334520c38d3c78870a9b3824ae09f4d0452dc5adfe57192007c4ee608e8594e7bcb5a8983004f2f0271b1a129b5c0f9a9a5435c9116c86bc33b1a2cca7b104cccd8e96a31618aa869f011056e5b876f257bf9557381e4e812ff830ed34ae2bfaab746c49e65b0811dab906967440a6850c570aa0a80f3bfe70996d14a1a9a3b356562a2bed99c40acaf107eae6809d0adfd64bbeb5045ba87073ed5714a13839906f11a0263fa078420606787ee1d0c1fd90dd8cd8f2f1c796604d54826d472df55ab8d72d20fafad1ae39c3dbf0d54c1b38d84e8ad9dccf402c27448364a7c30c169367386b9795f27e0b0b56b00facc89636a1b1391ca960f8e0fac566eadfe44aabdb359c9efa8d3d331b2b6105d5403730d9d180a6c65658565a1723d858425a078e6cd8d9a73c3e1fff7f57c2e12ba17ffa065efdefb1b78bd8f9221aaa227eb21bc4dec5d0d01011711bce5dfb699f2810f2fa15d955c9b71934b28e2bc0b1e37b075515690f870ca8324ffbb1ccce79a1fc706e78bbb465bc37034cd5d5dc6c390f1b41cbfb94256b64253f2f43657968313cb6908d8061db87209cf3da1050bb8a757dc765243e42590255037bfbec6701406049e81a5326d5f423a0f189ff94c32a333221882636fd5b98cdc9c14731eb93e9e3564b3b93ea155faf3eabafa21126a0d52c8c3b514080698bee3bba11f5ae26b5d20fc7f0ab3319bc5d6b5ff6d63a781cf1d02c570ad8d007a7c27e495437a2f6fa86f38e9343363ff315ebd95e23d57414a50dd97bb934b3ac9bc5b5cb6742c2f50d746590cdbec2cc2c025a1b6abcac53171c04ee700a6ea6096d462801d172680cdd919b21c80d7b0730642cdd53f10b420799c09b8e03e5a0ce59f1870fd90a5ea31dba28da6d43b278b39f0edd2d9fc82929e2f41d737dd9ad010c1bc06ecac08030713bbf9abd30e7f7bea89bf50f8020530dea34e2127c58e35d9268c1e7267cb00bfa9ebdbd929d5eb0f686d8927f28cd8e2d6487a99523fb8704f426d68d27fd8e843b880d5e1830d94c66537c36263e231c78baee3d32836658aa0cfa222377bed6912e61c6bf920e28421062dd1df2ca1fd3524ad599ed2ebf7ea512b7326e2b86a2724c74977cbcde823d5f1128c8061a4e6edd0e180ff55de5b77f37cf6c7b50f1be0b4d1d8b6ea176e14ef03593024fa9a801677a3ce854d53fb7dd0041f47c5c466a1ca103238ff5648bf52fccc159b34e16196d3e91ab6a92571211f3154ab9b44e25d546c0539e2c59b428d36e5c2cd272ed254500c49a6d09984e221fac248325ad848c01ade7319a3520c83cad8fade9995048fc2e377b91a0522200c1d3d38e54ce2315dba3d792c12d6759f17eef0edb7d502572f6e3f1bbddf2002e2807afe73cbcc481572ed55f11b920e0d25bfa52f10c00c175605eaeac91308d0512e298a055e05de156f0d633c3a0c73525e62d7e5c61edb032139f9aa7d55902a0fda39066fd662b782f4405041e3f54f29781b264c4194d1464335fea1e618ba2a6e5ba4b62c8a5f0d694254379ef615bbe3a66d75cc329f68aeeed52693d63a0f66f794d700f72d2edc303a6e57ae7f4c0987da01d7de8c60c263ffc64c01a92dc1f4d066e525ef07c602af211d442c45e23c1f78b9060a95f3f102b3557dd3fdf5e673b02a23f81d91639a936a656c0c877ea8ba7d235c78a91b09ee51db1e5e9919cac5febcbd39cb70c95ac9efb1c547e9a7f88399e5362dac5136b3fb3581cefb79994c01f07ce2434d891d7831fefbef2bc7983e7dbd9dcd83d8de60d0c68536e8fd5ea14f5d33b27fd3e2ba87cce7f94d9421210fc1989758efcfd4bb6ab8dac93be06477bf57c02840a3a6c7252a91bd612007b1e0568b0829ab2d41347594017d337f06db94c11c35ded31fa365b0874cbee6000b9ab06eecddaca8d0c8fc064e4ec96efdd9e2b6cc3992bc48220f8f1f6ef697063d0c46a617246641a73c6c3ab3d26bfaf8706dfd89adbee69abdd9f198419b0ea1e8510de1b92c616ee2eb2725334bbfee90c13fb8742087c0c70cde18a8576166601332aa002a347e65452e2a2237cee6705cec7a1e2425fa6044339b63bf5a047ba52a49ed6bd1e88e4d6ffce458480df30afaf3ac08037e0dbe7a6cc95c7842909db75c6d8e1731eefbe358d7773c71b1aeeb77c102780d48018f417edc1429ee3f3d18cdba62e6b0b4488684967e79520b4a1ba5a8df08f892253e1fed1915cdd201e87d75c6d1d2554a99a341e487a1654eda35019c7c38c86f5c75020f7f9619a61150d213b99b756924f5f9895e71f49d172a31028270f39dcc1ddf929992a516e4c270ac591674e6ba2c13dd06e0b506041e8942778deca31ddc84f4262ff4ad4d81e531cf16d4d041f3911441c12c77ed92459409ab65ed1949920a684e729d0904593d7a42ffbceed454a9cd23eb7e1742bbf6effde398f122a8443e86c272fdb97ef9455f33ec1161b73013800c40bda9d301d96758c6de69d103c430ee0192f74956b3d73cdf3cff36850d0192633385b19d546bc8f0b1f9e3524757f2d4245646a218b78e6a9f4e289b7882910167b2cca4ac0b90203e5ccf084ca174b16b6c0570f6d9c4e5f08815017f92a4aedd6d5cc3f40a4b9384a77405efb4b87a15caf74bc5d04197ca425592c0900484b814b3d1926954716e1df3b7017a22951344fdf52496f797562f397be1a3ef6bab299a518e7ccda7e5fdd166a6c3e94debb1930febcdc609b93dea783be0d009656909f18ed83eeac7cfdb0a5954dc8b9d604db26c6904d8ce0abbef49d005d2b718f92cb54a7adad0d106a0400ba35808525068312f938a58963d7266f1829495bce11d4c0c05073ff5a72bb508eee9fcf3bcaeba833bd03edd36a49272a1bd479d2408c272e3badb2ff2e6e036aae1ed1667b8bfd538889f705c624b93f37293759a9bc6b57833ea34b0973dfa3171bd9c81715bdcdd39a1a5a16645532b276af5eb53fa910f837f367301e75c8eaaf25dc6842212f5a43b71a6f76c92d600408f82c64dadddd2e72075a070e7e62baabb69fd006132d441c4f184c5d0f869993de13d03ae69b61956f37f191f05b24d242c23bcee76e5ae1726a296b1b15bae2365e9379db640dfeda8d9c7d12a653252a104891a78fd4aa3971af9731c00ee4e0c2f2a4e4fc6e50d67ab75024acfde2fcba159829904f9b27982f2e251f941d897bcec7ce91edf7156cb1754e27813c59d3bfae136b5fdc4ec32e7f17f5d4c4d078f68e91ead670d0cbb30054f2e90fcdf204ac0b99c8c435d932c10ba9267de7a61d791731e0d39b6927f8d8c4b395e03f239d84b717021375480b2c36e3b110777eda7b9e67fbeadb56cbd75ae21d5bbe2f95bd5a2d21ec1a5a403c619e55e46f332c9f98368823f03e4bbf12041f138dcdf2423400dd940062381e75ed02772618afbcf1bcdd949e34afa5bdd0c25b0addc12c1bff4e7faf0a1608d0a36b250d7997bb5711e1b6c74fbf391bff697982fa2b388f1c1934483517257f23bc65aa0e32b5631cb27606e552c49d8376d70c7dbd53570b8d92ea893d3c7b1bc8f62c174ac33faf08269b8d173605aa9a18d81fdbec0e392a6b0910443c504165eee0571388028e1512b8384f60cfcdaf2ea17b7e9c1be172676062a02de0409faeb6f0594e0fb6e696d6605dcf8a5be6115589e2322d7c838bb06f7908aab838bd06e720a051d07233bc7bda3bf1dd16820777d5f57d15d8ce486c9c0081681824871c37c137be3355e8587d12417caa506e3c14caf7a1e9f2d94d6c15e4fc132b2a62f4fef4d12d118ba9d39313a212980dd0f4d7a177cee3ed87f02812f6c2546004e10249c06aaa49a01657c7c7d2ef5c155310e2b69bf2e2b5ac3beea29add230e49ab31149447760e2c54745a77fc33127beb384adea5efd15e17aec6db9af767f1c1d5d7b2cb07c3b193acf0ab44c5804ae5c3e382538cbafa1ddfc31f1448eaea7b0a7504e9fc5256e4dfff39ee61145fe246856fc4fa93d22154068a45c9c12234f6e4aa3748b0a5418e4992a22eb18bb8033793715318370834424065bd4cab694acffa6f0448a61844d4328eb406b72b3c9b2b610b5eb50007bdfc74c7feade19a2459ac4b21856868aa06a2d175589dc86345b311df552ab8a56a724630d565e4ba55a1abb0946a0a8d6e2bc453d4dcebf1159c82b98816c8584ef251cacd77c3ffa104ffbaa96a90d876145fa73fc5fff5f5570a6d8d1580e1c4cce5b5f8e8a5d2b1d20b41b4009c79ebfd4a8e1636f6f93f12593f0532d565ccdf90ed011e0ab0fcb3db28f10535ef5e93f59851db610641feb3bba4190f3074e4257bdfed4f05a52c98c380a471bb3b952488283be1f14fcad4a3d219765b4b2b3421d5ef845f6c7b9ad6af6b66a75ef0c03ab4f2c5150c078068943d1e89d298524d9e9cc5b20c3bd03d89d7a6d3cf30b02e17516e0001b071b92a35d245e0c596071fb8dc53e53159eead8cf86441e0348a0a951d4a2ce30274b423bf3cef4e5969077107e166199d2c5714e25e2e0bbd8db356fcdcfb3d3b8b04066c193c83903ab0f0eb18d2faa428f3104af484d07a96e43ec593a5a9bc6d9c2176535fd5727a3acb3ab4b2e9e9a570f06455bf2b68cbe461743af5466bf7f8050f5c7710b8cd086922c098d4c9c26e53708c5523c0739705505aac79ef65781f226761215eec4cb44f8317b2fffdb15dec242532c0cc8db35c117a35278c54034cdb69bb5df20b8cc8f1eff23bb6e8b929a130e44e0b0812e937fc89b3de0a13afe080628083e386b703ff58a07fb599b66605d12342bcd8fbe69ef239f3ec30bb2fba014ab66bd3344d60786edcd434fd3a19f46353cc0c7901e051405544028bb9dbb1ba427c4b6e6b5a3ec8a593f0832d6a61692d72bc6faf044ee5664b1a7b5a3d38fd1a1b436b833287a162ae7851085a1f63bae8f2fe18b09c603ff33bf0b5ddd6cee3a4b4275348c9835ef59b44f2db1f828f77d0b7d8df70487c91205dd731d9d516d9cb6fd88080f45312c10edc4cb8729c7e71fc9fa87808bf3a3099918984a60eccb1ce433aef537927236f3e0f59fc922b0ff7d0b39fa53f7c19b5048f8fd2e9a3cbdb8e6d7d156b697bd7242355bce57cb3d94d16a5f9adc607288f3ec2641d42eb3303e0344ffe4e4cad5d58be766687da989e8448a5cc7c1ca4ddb0e6cb4f4d22104b1d32f6dc3632fa7012ed5e9d5a2111dcfb62c7666e1bedb86bd966f9caadc2ba81da0488c78352f7d3ad94f35fb75a12272754630a20e42a38a52c4934c5d3bea8631f590e31ac72b485478b7d8ba786e2bbdcff8d22a0082034283aad9f28adf92604124062230891d81f71872c135d234bcb76e82dcfaa6969b84c9171805683b4a419f41a830bd88a76618ae387e3a69254ee920a1375d8362b4e038a2e2b4a98b1c181ae9e5f24b19b07c5d46bd50d0e1e37502646eceabe404904f3813c243675a8322f853d45614c7d56fb8667badf80b87b10ca9d2363e37281fbebfaa303a7366de81d92fdb81edae1f057fd933523dd0a0b88f33140db7acf9131d23420c2b976156d2bfd785e9c8c7c7a520abf8b58d204ef04b5f5f9424c5f305ec6d97f582627a9f7b1d124dbbe6bbd4a36340292b70be4278a0bf1833f90bec6598d3a85fd10c37d2c7fccb02e440deaf2f191492c242d84f09ec1e0a034843a5fffa7c63cca1be0c6c378ce3ca56bde144d25b52412b27185ea5d4a3f4764ee54f0bc70c489f6d81e8a9c7208638f9a3a0bac5ff8b857a74cf8363d05ee1d8f3a166cd50701e0fe692879ce79a3d691424066b749abc3e738d5647bb844731b409cde36b48e420348197710106d7cc0d216cdc677b81c4300b93de75630c4b3e117cf10b678e538db372b2304f314a19d41b5534d9213d408155635a716fe42fa7a03ad90cf8866c124e99a66405883e8bb6f9a502937e18db7c266d8cdd119d12c7121c580f83c2be68d9a65744d77e15c337fe898e1b2fadd3b48b4e03d08d4cbb2bd50f567c1913084eeb5dd249c81b71a1d3a20e2c0d6a8fb7f2099c60904310e9416d9b34407ab6d32fe2bba4cfcf688c5c92b34fa937b7c5345fc8724085c893a5ee567bf6e3b2c1adae130a72f2a3a16d8920cd7e6b93ddd1352a13b1505cc0cf4b00a3ae34a00cb2f85591672068027403537fd0721374d5936ac968952ce66bdf64318c927bb6c184a880fa15e384a3112b78c3969161d05b00c431ff94c55f794c150ff7bcb35265782fbc6ef4903632144809ddbbe3d801f67d840f06a15f966775826cc19fd1f431d9b2dc8b552ba3b28eb47a6b96a038432ce40c84eec8854e48d1172af6aa5719778915b64cbf2bdfd1df50cc32b2736181d4664ed8bfae97f49c20e30bf9c4ea8e67b53fe74afb41c63b12c30eae8c890a5ca1bebc6ea3d553f500b755430896246cf8f4577b3975759e150ec920229f0909348a612900466b5d66e5e2d331d6d9aafabb50bdab70c93cb2d3f6647ff3e399e06946844e96897d74d22795ed647aef1526ccf5dace92d9f5578c19b0d4747d50ab9442ccbd04807a28a35e0df84cd1d4e9c8dc025717871bf8a9f9495ea8d6f6d1687cb1b3c2a6ccb25924ea8c6ad9dc62bd510325df9f6c52c391218b8fb35468e6a855878f17f6d83f866cffa34a2d1f3c21e17cf28514bc1b80740721f43424681e4b421367c296b90a75a116d59c3bc06aa93cf2d809158a67ce2ae3ce452706f919af9669e0f7ed795a3c0316b4ad876d292063107e29e7374826e95233a7e66a89cc7fb4a6d96487f2f2fb1d68df0c0092201b68d49a7d03461d3fd5927b89fe693bbdd3cd201155aef2f533edd651b1802f530b807760dfe1b4385c3ed4000f6a8118b0a3df4c412e79944e444fe063d340f4871ba816c772ce322db4e55348b6e5046b1e6cdb665ef7731e4dc58c93a21102ead248952e94d44bd8357a49f2641bb636285ea307eebf48939441ee1e31a03adf3198df993b59a995d271e9b851fdeac457d6355f9c207292515c0ac2b3801c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce9458607000000000000009ff3604b2c9238c3575aaba36bf28511d83a0aaf443d53981899c20be308112327ed070500b374e359a90435a60363235ca445da700abc2c3b962e89ddae2404000600008077777777d80a1977000000001c1d1c00000000000234ba607b674dd1faf18173ab52cb86ada65b24659b7ab0db262a4d46ef6307813610d535a38b024b19e566c3d73cb49c5dc6a73457c658fa61aa19c9a669d70823c009c26d2c4c5949f83ffb187b8d03a7e05970d87668b9ebb172e5b44c4f300bffbdba179aceb954a3d6da0cc8e9f59587e9a4ab1e9578466bc9eb508b791bc0497d33ffab8b845eed45ec6d6d9072da6064b0afe5eca2b8e3caa4801e04990e2ce95ee1594a1f922a2ad1e0550fa5268c2e1486785a68ad25200e0d1a1fff176fbd7f928197be17c9ea0d4b2f1987cb4c5d4e62ddd8001803e1672d2509ce5607d0ada2ebfd792a4eada56d50babab5b04f4999d97a78f2fc35e1ff001aef6c11bca252ab1f6959508604fd29f29642562b862c9d326655c735e7e9ff0e5b539d819b0ff9b7594947225abffd69d94748a59b5e4798eb4f0d9f41848da1acc1c42ba1af1a4e69227887f00de8aad96af6043998f72164b95e9157ef40f3253d38dd577c636fb694a49fbbeb14a153d3615454c5ed2913c49454efa45880b7e81c288c34793ab18eb68dddb3b5eb8c6f9ef4889d0fb8d3a2dd58164e5edb536fc705b63b194f2dcf384c026004d3aff29e11cdd17ac5c71c26d30ef20b5c157fa9c1c4b33d9bb95cc5882bd36d990fb12700baf432d820f66283742ef447d962088dddc54a21b162d0ed191f12d4b335b4227aef5583bd2a7639a275dd3c6397d11baf62a2983eb982d0d4e5bc64f8bdfb72a5b7f99c81c4af1395d153c9535ae61358ea5fd933e1ca35dfb4344a3a096236e9c777626575f9773f1ed0e64c7e67616b36b48d9f481453f8815d4e48601961cce17d7e5cb37be71839a205a208fd7d35652247b32d384453f30376c2b0dde5d64285c86ea396bf919978de33d5959c7a2bf9fb5e15da56ba2b11b805789d994dd44b5b39952d90bb9cbe0209c63123cec7ff2f2da1c1ebc0930b0e3a03b90dd6e58bf83187e7b71a9a5264fbbfeb90c57647c5d6de4752ccdf657a95007a21a6d8e4910ae99c90e98bef3ba13ae57614499747369bae218a8fcbdf074b48a5f374f74e769d02af067b82283116764abbd30fdc9923a3995d144bf1033ab26d3197ab184748b4992bfb51b0ea22cf3bb574236f2209a2e1391f153b706d5b7640e8a23778332fbdcb1e35cdee0bdfa55c35b02b793b6f2fb01893363d01388391479aee427cc977bef4cdd250e78a7f0f39e711aeb13be5f9a895792dae2657ac2789d2f0a5b0b7a9093fdafe072883f6842e377b05a046488db93fc23002a40a7315e284aa164b2e144cd5ffc6afc8584eb5d52b21b48a924e257b72a180792eb6f8f0a5220c0db0fdf5f5d0a0aecdde7f194e88369ee5d2efda82edf85e8d20b69680c677a4ed53eb33475b9beca2c560386cceb4ddfbd30292b111c37530ae6ee207b87fe5b67b5a90943e2a3c43c66eb8f9b1b006fe008f9da8791e71915349b9a9652d9c508adab7668438eafbfb46288de70ea1f96a32d36ea48e0dfc3fbafa1ea69d28f2b3b1e291a02823229ab70510e1fc102e5df0f6160c7af5ce67e8a6dbdf5e486d285f2b4ebcfcf2c10426ec94e0886edbcc0727b0703ee6ba3a1f7d4a5ceab9386123e531cab919407eba95c72314e0237e4208e22981b912ed9c2b4cac88a8592fb62d648846bf411b886a6b89b83ad03210cf072b00019dc6d0e541b6bb9a22ac9b3603ac0ede0b27cf0998333446344fa2cb44350f9dbc5d557cbdb74d335c6bb398ecd2eef9686763c1f21a34970e810a8eff7b37947fd455ada6010eb00ed5f1f92395ff7d1fa77b05beac74c53db704530f54a5947187366dedae6d48386d68c303b5eeac6e4848607890ad4c4ec6fe25251b4727e8cd22d8fc8972840fc8d5887ce647ad628b298e15f9cdd49b917887e0f8e8ebe0312fd04f3871c68f402f8dcfee60e81283a66f1725ce579861c999ede9f9e2d976a83253ea608b66ccd6ac83359bae0d060adb0f5573ca385446cf54f14fa3231830ba0243fd574aa8ab787ef0150be0cb9c38970043d6fe200fbb6d03158f33f5e3a811887ca482b83122242d228451449593c8dfb33190298e873d49c01b8d0b9ce8851e60e65308325bf3a934054fcc53e791fb117dec249e9836d466ec94188df94077762d8c12e8cfcbac6a9af9741395ee566c26f9e5ef21d7e08a0453fd22ed3228f9118bf2606e87e0e0d1e495075f348b16701162640d2b805fd4d2d3890cd6bfd5afb790ee9163e30d55f8015ee86b07d063dd0398366e4cea8379c951160896d3374b1c39093954117d7e3840715e3018b917c6ddf9c47869bb01a71793b2d414c252cf62e9d781e29137f59978d39b8ff60d45540bdd2dfc73dd0bacb811267b486783e9e9a0d0d5a2a161e082adaa070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c02f3f899fc0cfbb1beb2f0a6b1364b43fbfd5e372a1b64b90685c1b0750cf93993917608f18aca5ec561fec653860b83841a345f03b0e9ad5360c2616b8b511f973cb8eaa583b1e65825fb0cde26316a897f759b9c79d96d4bcaec217948791d524ca3ba26457a5b6f5278171729abc58fcfc844a5e2e9ff048bb334bd46692d97beb0e892e144acb380a1a2810048d5b4226ce2b4f9bd020ae4b26ef3d03419236d3862dde808d4fbc7187da8d7a63c5154c369f26a905f355469a0db4e562de2ead4d75b8693256748db27c5d041f6bd93bc97c7cf7a6f2c2966c29817bc398cf4a61ff5c81b66a7c725dc820e24ccbb2402b16e8a5a9e0d676193924ecb3a48bed2157a84205b689c5f673b45f5cf8589d2e048366b6e3ef58a6cfab7781e90d5f0f2922fa407d0882daf4644908abfbc5da2bc90c09be46ecd7667947d00094c2024142dc31a072b758c2b4c5306e458256fda993ea15295f970f480cd333f986e7f633ba84f8981266e9db3b78a3fa87052a648fa99c4dcb5d1420da4bac5c6ffe822276ffdd6de43f39987e9ffb1562c8e136ec163623c1ef0b957bfb67cd4af92e6433d2b3c757be0b74d7053fee3d1833bea1b076b4e2e878b68be8b661b0c54f6cf9e3bec410ee0a65c0371b4cee0f3cf196d88ac4ef5ca02a42e352785e77307367dbdeb20cc0aaf0be2f72ddb4b12cb9d1e7ed530eeef35a44daf8d80446626e90ff4d6705317ddea944a45e094901680b89133957343b5209a0146722d0d494c9fa805231b072740b15fdb7a1e0dba39015437cb2e61f0cca0179c0128c874cdcb3e4c377925a097d46a2ea86ebcb2aaac4e69b8d93f3f813fa110857017ec1126b0f48e1b61ef1ee9f2d3288a1ba037b28294d381855a9db1a44f6aa83f17773222761fad2add32acb500f060e76600b50779934496796f4c86114c123c55b42ce44d600055e9e249fe7d5f1a80f54d49e5b0dfd71518a7669538471b5e759dfb425c51d742df88cd4237000e0989d5e554f698d0112bd61a33a307b36b22a76aa8e2938e884191321c09c1d90a5678e903a5b76446698e5031233ad87218bf81d1f49cac719c2b27afcc4a191daca45a1c9f51425cf48008a1a569e2adae4627c233bbd024ef0f7c3973ba5bbf9fa0704e111223cce823d50b5d91fc0d805e0bc51daf91f0375b6feb67ed3a729933f275fdde5f8c1885cb9275fbfe2796b9cb4dc5d3eedd1044ffe62bb5a4f20c0969ecce5a0233c5a7740f9f18ba0a6c9a38ffe4b0e5377e6e84e659ece4b09a516f1f5e158f633a18b527ae8cb2813b6fc27f5108a7230bb2ccd25f9934b0899ce9c8cb3d5afa146791b52509aa6f78f02904882b0730d1a8630eb2c3e408aed611ab9cdede995bd2ab2940dcb74cbad21b1a8c27bcdd2b3758c61e5c0d271dda23139fdfa17fe97f19358fd6e4e6efcf71996b359eaea79979375a010436dc45f4ab138d7426f806450b624c14febce156041a32539494b096a3210d114d203df26b1cc826fa2946f53b2521ddeffc30550bb2d26dbd6900c912852b1741e76aa7f77b6c4aaafd16760429d5ce5d3cecaa3e1ff1d3399dd2e4bb0123d668b63b61bed7b097daf5a4710e82dcae3e2db6fd652bcfa527938559d83ae86982f26cffd2be75bb6f842883ac73819dc831dac60616f3c85011bc5139d67254cee29b964ab71fce45fba367356f2122a61544345df6d07f423d13bb32c328125323ff62ec30d67cfafde6eb20c8bf832b8a51e3de2726ba66fb6a0224da5f79286ab7861dac4d7fcc85c62f85fe476216c55ee4e5ebb7ecd3f642c547ec45844ec95586eac20c1834a5abb0ab3901c50deeee97ebd64d9980c53e0b8ff88e2273331b1484adc54fd459eaed17ade204477a17b54cfac56fd8d05f3ff4edc2e473295817cc00ab5c34806f1e370a9f97dc474e0d4e6955f915cd6d2069df587eb0650c72b4d2454142230623070f6d21be2bdd0173bb0a959990d9d250e47a2148b42030900e9e7014806e22ae690eafac7a2b3fbf45d6b51dfecbbd21993a12e057c82425533990c8b5c238a6d329c4c41387bd693ec77f1d6d200f17a86063111051f7090c2bfa3ed2a58ea8d22015a2cff83e127edc0383eac49c3b6caf9b5e0ab4abe911658ab63925d60842f70fe83f9ce4258bb79b6311bff08b231078eb8eff59e9dbc955af596ea7acd15fa8b8e1ba88e110ac383eeecca4340797afebeca8fa7c5839a3a306d4bb8004cdcd0372d83cf4e2214394cc2a09252971cd530af7802ac06d57fa0784500c40581efce6bcc497fae84e8bbdfaac727bac1cc0d49c0fadd64639c6c839f6b3e4735074e5f2cd2b5fe6fc9cc34152d723f1e1ef3fede91d41cf39a8207ad69044d14925961ca8b535362da356e419de13adc49ddf8708b82e6ba3b5609ae6110f28333601eed005b94b0d31699c8a687ae732b7d7bb263081cdabb462241911bba94585d0e20c9b41f4d8d5565e70bf351ea95382544864f4a960b8850fd5095213c2bb602338ab2a3f9b1fd97e8d42f68f2f943441ded01beb76f463997f1709e92c9e6df0341cc64ce46bee5ae1ccf0037b77ea00edf62f5f545d16bd063bd9097ef8eaa34d9dd1cb7b2d7f080fe56d14e4eb521da00c7c1d19c13e934601f963f80fe122c184cbc0047fd38cc0a7b4389debb41f44c7cccb596c41936e2fc672796877e1f0d013df6aa65a8d39c60e49eaaaf4bbcab70fa97a0b864aad214ba57bf5ba65abe585e52fec23b33a8fec951699fa4ef19e4af9e7c237248e1f4a71e6166133b2f1b6949d70f072170002b3d38dfaccb3843e641e85bedcde02e289d94ab76f935ced360b5b4abcd503d274923c222d757f8436e97156e067037c7c984ebb22b836bde9b5aefd12b6f079dbab91f69bd904facc456154ca3a1730b6fc7095af42e8e20d0b94ee3c797049971d28d583d5d1d7b539e8794a7710c2de9d2a9db9e6842f7a6a410b9df0f16fdf6bb58c35ca3a7d44b965f04e5e0391f7ab9789ca3f88973b59f50cf46f0d472e4cf49cd81c1b05d8640d625d601155db952b3544d54e5742be75a4bc9cf0d1084bc141b76cbb06290971fa526001e135397dfaadbb5865bb00fc424700901c4e50c7aa4db925b9b7fb0d8631b311fb820bceed1f83a6c166f78819a059017c7e7bc0b134aafbcb063ed15ff67f165441f7015d9a3514ad604c82e400703302c8e2e2bfbf738ef380e6f690392712d64c59fca62f638f2dd8edbb842a7ceafc4926febecfe42d5327af88fa21a9320d1f590803f35b2ecae7e605f0aaf99504537de024e600435f4963aae484cc3f6620243c307ad03f87bbb60696bf1b66409b143dd80362b48e74627ba790e700b4a6d10a4961fd6e4d954af5e585e44a02dc9137a9f2c5b2f09c5edd52924a0f62e0db46f2eb9c15ce3e9940f16a4c7c4be030c02182b2aef10f01de089f380e8afe59f6ace4c9f34738d041cfa61e19a64156a675832d16f4ee54526e0b7c39a8f48dbba330e8ef36b5564d263060c90009a367bfc4a9d1fa7e7903d0de3b2a68de720b8bf070f456306084485cb3858e98004be70aea72b6d0200def4f340ec415fdd2bcaf28eb60a1c2854fe016de38232c721b6d3f3325a101b77ded810b660a83f31c46a5f13a5a08aa6df7da23d0eba9fcbb45ff299761741ca950e12f2f1881946ed0c16f62139d03b430d1dedc3e7f7c68f2bd50993adeeeaad42315b36e0e592b42f1caa568156ea7aaba4072425cc227be504ae30f50335793483ae94a208efe33d61a1bd8cf95db05914e3b732a6c2ea57180dd5421a85a94ca2a97c80a41c04484c5552bd6489ca235c28d773a4d5122d93fbbcfcf8707b88f3d2604da1a47cee05bb3a9fce7528905b5a279a51b44a72a7bfcc9d1769db1813e161dee4387ebefb87805c1bc133b7cf56d549d165356bd3c24b4fd4cbb7a920cca8bd5e43b14557d48c1131a5ec93b3dd64a8d0791d9e50f4f501a5c858f2110418e110a74f7469c1b2ecb54c929d4c08927ff36c4106d696b6758823b235b2a0704d52ad4da79b09c140c266153e7e54ffe69776b2fb97ae8d605c37142c40bd45690f4207e4d3905cc0e69f548c9ec024a2ddddff639d148577de8be4a322d756efa88eaa2e92f2edf13a664924d341a8f95760db3d00329c8f882c24ced3ae07c89e35d51b7e11b0d1e53270bb0523ddde6e95ef8a0c05d2d2b6ba7c6ec169202e6102335e193e302b8c460ed998878abfb1db24e1797d1e7605e13598923a088f38ee8d824d556ebca3d36311acdc402555cc962cdd10936bb4e1ece2e39a6078516e98169fc31fabca7a0edacc689d6a5b4fe2475c0c73ce3d8510bb903260e1e381fc5fa6ea920c8bd2a8ec145eb778f9891d840ba5a3f08b0f6dd3f07e753899c30fe2b565e821fefe44cadf2117d358a2447b0d8ce48f742325b7d358a96536be71ba650ebc36783be0ecd540fb04bdd6a4cc39073df2b9a5ed9b23a4e2cd9ffdbc2967e690188dfc052f21bc49e9c81be87d12b4ea1a770e108d50de901bbb0d046c50a4228254aa095f0cef9d608b0ef50208b0eed938cc7d136207105030c72580f3d5c707b62090a29415e32af9066217272ea6cd498b5c1a81d06314c21406328037ddfa23222cc84c3afbf8cd1c3762faf04352bc37910971404fd446bc4beaa71b98135724118a1dc65ffb937d5310fe1f40c307095f0d3314199773a33bd6e2c89405f48bf12d6651d789e66f1820cdabb6107bdb309b937d8e0f513fef644f96b702e509903ce203c95a10ec4c9f4a71e75c9495038b423de361a86cea19cc2cb4f1f1874e672b2b2e97ee9462090f0639864e95331262a4a560c9948f3c74db29b1d979b7648a7a18536d7f6d8d2fd422f7070756835185866ac588a4daa8094185982d0879768320c5a05a95f1a761a9042efb4e291395bcfe4924fd4df12b131c3520fa984499532946adcfe20cd2fa56d8d44296926284e91509bf8ae72338c28b93974700af04d3ca38f55824ad9f52bd0e6b05f2c7bd8d324b4bfd657855c8cd458baea1bac09386c4444cff7594a870650c1e524230b2a26d865605eee5a016efeedc957effda3d1c145ad66982ad9188bb80c2d1546650750c7e79416c80d7ac102b47bc7798048489afde2f8461a9162997824253047f3d0b0148160aca7c533bdb6710281b42e64ab5eb5194a78d4244e601b67451ddf954d429fa006f25e09ef2a78388c6dca6228f17e3fe61510038f162626435783cba9d6809fb7b50fc1bcfb6231466454b5925c32d04c02e5bac1903df02e8b2ef25e64fb78d7daba63afe4bce774148ae824c62d778d88b6d6c7723cd5d56278b36058f492e4dcd6cb898414f521d9a21cde732aceb5a62adb996f1e18d950a982f9fee6c02750b13965ee93d80751116df1a5884ee24d05f0a74a3faee0198fa1f42bc5241dcdc623ab172dacf6108535f92e0279b9ceb96395073a5b009395aaf3ce8df09add65b351f341d2600351d24d3474f7d123fa7e51f017b0a0b90c4cdcc5db57927d8e87319914fb60ca897c7642e0e323376070cd6f05fec5e74c88c3175010761c7f1ac3c00e263611050c29a932af6cc7908eea6d1e2cefe518c6092cbf7fe7a6c5b0b821aadf6f4c504a1de79e723b5c17bd68d634d7b18b4b9955b37d765c464dcaaab31b9613567d37640e3b7ba9c2abc9b8ad3fbe2ee8b62b4ec7223792f76658bccff7069454442873c81104f5859de761160347deb9e1390544369afd02640ad5f6868e92c2d576a13808199a53fcff7863344ece1634086ca08e72b8d8dad0c11744ca5889437dc482375b6371f12853a22b37ee12ac0bf851194eca88f4e711d6c010135c46cac6c4b6d4d22ded888f4306369c5e7b716720ddcfd1550760b2674eae607713c5696f43d84af2d853505636f0aa30d128cd5ea230bff5a9322b0f38fc998eb902fa2e66a5cdf573b67faf264bd8aee6a7baaa4607ca070939347511a3e7fcc1c2aed75942bf4b02a7a3680f21e60ba2c3fb198e823ef8742241a5193df74d2fd25e4d28080588ed992440022cac1c026a3bf2c1de232751ee2c56381cc320b8511846093b8c82c3b69bee0a5703ebce82d93c99555970e5f192bf4c1438ef3d583f40e8b4042138963b862055a0a8b1df6cad65b82d57850dc251e50508dcf9d58c60b4d6d5f706b10bbb25717263300d3b432ccb759ddbd52e5dc847469dbe7db86ed6d35997f93f8cc939ea38e0eefecedb429e6ed8b028a6ba59954ad0b1345816bb14ef04d6d922770d40b19adfd065256ac351479ec65435951bb014a5fdee04be55231894b9390a28c7823bcb54409faa06f1c3da22ec89f0f9421fa9a33bc840a1362863b549360829e94a149010328b366b45d94e44b03182eb30c63fc967159c1df1386350c53d8f249a1d5cf7529434d61cf0085c59fd02171e5af8f1c82f63d8fbabf8f07622899eb8d01eca1fc6e242d202799005db7e6d26f734d6963a81ab2cf54936440914330b0a7a64f4c785c0958d72e82720124629c630ebe6c2fa7efa9e2272c234db67c5049db7b62f7e1eb3bbbdbfb842fa3df06ac020f84fac21207504412516cf601b65700c971606725d4fc31c4ef15a6635efde36696e339f2cfd775184233eba170149c0d215428706551ada80a5e9509949d22eeb0ff390d1d172b7033c153fadbd3f158b87cb300dea6364874ae86b93e5863f46d3fa2a0c507b4c382a46e0f953854689ce9b7f2a30945ac9ab4848297b833b4fedd6f839ef106a7028f1469d0950628256fec62aa432d6c0a85c3c4f5a6b792c12992a84ce000e6c1aeb6bd6c354960d9a741e0ef483a723762006e291f5950075e35b4223c471cd23733b1dddf91eeca80a4535db48fea257297e0b02eeeeb3da56c2b7acc338240f0e1eff611efae168d566dcb55b9a9d569539031fc4100eb6ca194a369c1330395dfc82e506d8669ae0b80d185a1f037fea20a2cc16da225b6e3ebe2dea684a032dd222dc5df9679f927887e0323e2be5c6b5db8b45640bc9fa099432d28c833a00b04697cd0817b118b78aa4a1ed51dcfe3fc69560b06c859284c8581b6ba223af7d55a3c623400aa0a30fbf3756e3d167100f5739ec9f7fcab49e5164b08b3628f9de44f0e7fd887a88b54305cd1c57a7b9b4ae5547dc617b4aa616b02fd638f4d030b7d9394929abe4264653c79bab88d1210197fe186b41c32c4ffe2827174edabc9cb926173a4afcfdc16e9386d2c2867d9d07d014161ba69169d51d61056d0e3d4c6f7e2fd93d244df132e72f560569889d635cd192f7c6c75fa777570aa806c5c9ec31b9432ad8070eb1474e9d685eb85116aef47ec47eb621c33a38301ae2348233d3b49ac13e64c70d4c4d594927cf3508f8ca6c040e71c95963820d7a70f22fe3120ad893234799be5de84d096b5b8961cdf8b09a52eefb994f433ee5b57ed74f1eda8d6894d2d19fd1faec1d6f34aa175e4b3a8298159f8a6e4130c3d2100d2c9ba994be1e20367f5d587d34ad6c2b00078ae1fc589c77ef3c3d2f0819eeccff1e7b686308122d9d8504b39be1bc01425d29147ad7e24db8c1c132b955ab073d37fc1a83a12d4155f747ffb33779b2f58e4c862d97bfee479631188a1c888ae437b39bf9f197fda0ce1708be825c4eb5bcf8c419b7f44d1be60c224b70e8536ba3f0eb79d6255438988b420f80a81c2f986a8abc2a7c60bf54f0027e1c190c4a8711fbc8551441c6640130372c515be3f22cb10fb9b53223096821a135a309f40922d5cbc2acd57e0d7cbec9d47837ae1465312424a77c6be3451090277f17d6225a0d634455659903b1bc51e79c1330a70d6139e9d7fac08e5928f23d2c10c6268ebbfda4cc45948a33a263f672a523125d188f64c9c01b2ef801686f5fd26321808e96e07433968d05a44864eddc2d190155cd3266c23778dd1cf843a779f77919c8e7a5560dfebc817d703f3eeaa802c613992e5ee2ba6ae90600125b1aa07f04902c524d3cf57e1461d9895461117ec413fb3537752d755737738bebbe1135afa71db91e93f33771d16ab3134f0d6d588dfe23ec6661698421c010d43df3dd7e9c422f8b1e34ad0953e9fe8d7ce81f4b0a62334f5229c6b11fbf5889642660619a2c1f0e98fc561836f62f61861712455a193e54e7c4fe6f1052296ee852b33ded957545dea80dc5f0c97cbda1d7a6a74ae0f482a59e8cb33bb42522b6652eae4ffa1184a2de0e215a662edc4731a0e6042a69f93fa68cc9088fca3e3d8473d5aaabc62ee5956144fd68eacf289eabfe35e6112e919837b82d7084db1a4cfd8e1a86c4ea3b90b890aac23156b50e21f293d0091cb71822592ff9c0493c1dbfd67640a5da51820cbdf5b86bdfcf47065c715bdf265190284a0b73ae525c70e05f0b35f67f8d8652f31cb650c02195c931546a32dc64207c2e0bc73fc8158e7188e8dcb8e258236356ebe5e35361b0bd759fc8652773690a2908ccc0ebd47a889f3ab783f4f3cf12738b7b2323680c69eb1f28688820c02c601f93ccb28717da6b6e5ac20fbaf7fb283784370fd30fed3aa8e0b485027dda030449a6abeb922c705c903a2f349dfb075b9ce0c18e90df690fad3177e02ee6ef19ce602f6cf463ca06a38203017ebfd02519b5b607a11718243b01084656792f3bec57956232f1c5f6ea03fe34bed97e55a8ab67741617263ab232293b19fac40daa9688655da4d37882b0b21980dd5201b4fcef42e0c038e8033a024c787ec218988b08396e9a621ac4374b10bd13d521b52f0afccb3efa4681e8f6ca1fd2152142c89c09aa954cf4c5e4073fdc99cb6cd151458b59552f0ac5f61888679ffc3711d4b806e756a77f31c993ec9239927414ec4fe996e7fc498cecacc56b30440add6f71b02bc34f3705681e7e19cd3722febf38b6ecc25398bb9b527c77fce532371b2463d4fd5a8d0f1dbf97b95eb59acf0281d7805f99e519aa4efb65699a2b2ed89cc8af53bc305bc1a4f750a953086fab18a36eace7e0311de9a6d400042c17846ede3f280a7ab4dda32bbf364fad1722b5bbdc0bab21aba5e4f43b243b2165258d04633957684ae38ab2b101914a21dc1bdc31423f7748d0e36ba5d3201552a2aa76507dc1d4b4d92c4f16329c00c167765ee4f340a281f1f3d73478bd1a0d31ad5bc40969f7ae3cfed770c1b9eea1d75b8b655bfb6932610eec0d5ab113b12dd78802355c2cc8e71427ddbed5ce2cf37d454fe788c09772ce1668b9d120d1cf5f9b0503b193b2378df3b292666df3df011ec6b94271a61fae493f6f92a7308f733d9a12fd7b5596db6a6285d44ea2a0ad64d329ceeff2296a403a730c2a18881d32ebfd93d502d54021471ab8f9473af265b6e42c1fb98c1767a92d5613e29d270a27af9fa8a71f666fe1766d071813b2156e912182a7aa914439c96ab469a576c17510f1617b4536f69c2ded22c1d50d7482cb7fbcde67af59ea734f3742a0e375c7e0210ae4ecff0f818f71b270d49137e46a6ab38afffc1e24cbbd1719870d3e86dc6ff5d1bd5411bb64dd569d593e4c248415f7d59339ff83a749b6a05dd86280bab71b975247de7eb838de56281ca26849ecb8e86cf7bf9a0cae3d93acb75b4af9a46f93c830ccb8c922facef21700878b23cd313fedda6ab91908b77f5142bd60e02deb87c4a2e80b25fc7c51982d1a700fc827a45cf4114305bbb485f8a04e9a4c576365222319432630051ceea8dbcbd0513366fe622b7c15b9c5b9c7697fa7ee201eae4aad0423bb61b96652b3f1e19a5670bad143d6d8b90a9472a2f0177fae07a68dce0172384663be8e4099ec3c154e81a0a2a42363569f8f4030ab4bba6ecede9447835cd97adce8f030e3abf7fe531c9b63a81a5285bf7b45c1f3599a59c5a6ecb70cd6a747b61245e673243b55bf0bf824bc01b754810a19812c082b2252e891d98896999590ce20c9cf78be0e86967f099849b7613ac45084d0c4b7490389500f296efcc38e69fccacd8a9cb3df706bc09c399886164afd22de21676d0fdb93fee1efaf2d363e2ee83295c2bfcdfd4bcce1f0197c9052a92b3ad4032d871562d7c46a0d7deb229244414be672c0dd9a0de1cdd818b8b498ecbf1c786d53e82bb1dfa187d22b4bae3179d56ca4fdd6f8f2d4c81df80726dfcf243829c33d23b77b8d039b0d169c5613ecde639a30eec12dbd364bdca747e8bbf610033c8a02b1f2763aa9a63806d07364d24228d7ba621133ec01c79059f65c54748703fc60eecc810382fbd160a8df4dcd47aa57f640f5ffd74a1f94f9a56156f7c0c6e34fdd6e43a5a0ac46b71474140fb8f16c10aab75678875f19fa82dad79a6cd284c78488aee66c5279d16acb21b8db2df30327783b64335934d7db219dc6846d9199329fa8f8e8a949863b39c03bbf8d83850920f4e87f41bc8f14c5fe3541444af632f5df9866dcae93493fae87809f16ee551bac8c4ddd0bce15ff7be0e573cd46fbac5fc7f4b764f46fd3bb09ab24bbbd9c38ee0f648386d892a90165e2acc2e5057c7aef96648ae013178932d6eab4b60d94555a7f380201c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945860300000000000000af3ce8279bc3e39954527b6314ce47076c97b16c3577c2e7ef014a9f62bb1e248ebb21fb1ca0aea57f0a3df15877c9de9751b1767d705d511fb67eec61dfd42f00" + "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f02c71c7ffa660028b5f3bc0b0bedf9b76a829ce8f2ef82c2c69ab6948bc9fd00a80000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000001000000000000000000000000000006000080f8694a1277777777000000001c1d1c000000000002000adfbfe7961473dc7f8ffd411b3e2eeb005a37342e6081d5121f18f5648c8480adb28949796e09a38118152905839afc125618be1fdaf921d188488b607f2544e12a249ab310f17a9349bfe463c7de09d2b822ab0efa88b6d32f77d7c38793192b944aeec0ca94918390dbe44c50e706407692e348ed9b7cedd231941a673722ef1e7e74888672b2b2d08c97a9ac114b7039feffbeb8bbe197db4a0bca8d395cd40551c1d5d788acc2ad09eddda73a5948de2d9e2d82aa638dad6f5dc61042d6850b926d944f29f17e96eca84684252c97ce4382f2642e54208929a4b37954e8e386c677f2aee3e8f4f4aee9f76a87d868fa2210445c09b927b842485918c869a23be8213ae21937a8ca83406fab193cecfd3fcf3b1c698e8057a6c87c059dc6f4ccb30af8e608a7c04088cf3ca32ab20cd780da9443606b092c8b5d85c9a76433c0993e3eee385884ce1f3890abf95462c49bed01a3a5c09df98cb7082e9770bdee196f8b968003f5cc76d82bf575f01da3ed40e44b3b15721f4a9dd5ecd14fb71a42b24ccb7d7e6a3bc10b53ebcb7e0ec6ace91dbc19801eff0c76ec0c10602bca2cfce9f3e79536a25143d351ed2894b4eb4e549960f212f0787057ab1ac8b249c3d3ff8652cb3fb17d7656d50c5e6833b056feb26855332f60e7b8d1ebba32df63d8561fd7d209a1e5adb9853bb5b5d6a41bf1ec52d348023e945bc02e8d6ae8d5b6c7a9225991cca4aa0b41861f237b3bf545220799f152767c7fdcc693a989057e119c18a96007c69c8fe5751a4258ec3f0f99c1aea8dbbaf4df9953ccf6b42cf2f4265011ca89ec7b9ef2c6e9410886291054f50db6310b225ddf32f9db26416da6ca9ef6e3198db36ebab9802517aeaf628d41358fd141dda8fab32fcded20707abc3d00191e0b2690a1e2fa044814191323155fb21e3da8798e0bafef8c2da4c73f967504f51e716cf87117f90fd028df17f3ea26aebeda7f5b3192cd5f4855044e9a41bbfb817074ca1680a458338b191a9619dd337bd0335cb1896d79c79cce10e454b58fecb1cf10da9f53129bbf3cae2bde82007ed98505f16922b6ae53a3a709c2e01ff7e529925d6069807c06bb0c73abf8d463b2a944a97d150935cc76e1ae1f8f95159a928a5afbf76d54544a771fd4bc482ca522274b94c87b4f1c7cc3399709b5572c5133bc945cca63bad59b454ee301e3582f09c5c31f326a59705a2b534d8e9a79835bf767ea563b0aa74d3301c40a303f6fc04ba0f3807c5decb6743aabfed1a092f88975820c324e2229829462e4985e299c2415eccbdbb4ff26789b74e91db286e6a4af023e8a18e826e930d9d4ac8d92cd8a1098d0705852cda367ba067e723ace9ea8b9502e20e6519dc72b1cb477c4f3091ae4d20eb7401acac77d923eaf5de00ecbb61baa3aca9044f3e66262245aa9f3dce1d02a88e8c26b34e3c27b4e4e5f91cb633c9b6e098063d052dd6883d4c2b153c739ef78c5f375c640ff747adc1110de2f9d011118f3208bee2f3af9990d56ecddab1cfde0c053020b1116afdec7a3303fffe6f6880072482f95aa3115724814aa5fad017e3b7637f3dba509f1e371c9b87a275cfceb68aa5317dbac0e1959367d124935c76631b8aeb532d99c393374f214af2d6a3a5bf4071d97b6ad39b5b2ec03f1feb520ce467808eb2cedb3ec933c20322bcd4511b838de111f9faafb5d45ffd8edbb1fe8f0928d535ab9809b4cbf588af635419b10f7ad9f4418c766d88526215b74518cb6554e833ada2dea5e57776a09541d76ba545f8a727bbe7722912cf00da4a48a462a5b7b13c88941762462142f97e8da2b358435c9cb53d24b6443ea2e1bdaaf6ce58dbd0bcc598cf170a193e14e76ca8bde66ccc786bd330c6ce61db5f202b01c7faf185877e3614c1a1b4484cae6dbef080142f8c45e3e48485746fd3505bba099ae7b37b96e22b2cfe6a0dea5b017974126259d5055a28ad510b3b7116c27287fb7e635f1918d5a9ca2529b1741c9e86c59ddf11c3f70a56fac7c9607eb9bb36612494ed1ae819c092cfff73b7c9c5d3e8680dbe73f92b749c84363c374d80632fc488d0b7d35f25ecac1c151ad8427d7a4eacf24fa6937fd5c416776654bcfae92d999b51c49d76bd53a9d5600b40915acab5d31f0ea3f7a68adccbb72cb454164beb35819af0e9e06ecb40e96c9c2aa8018883301f65cfbaa7ea894737d49b44aa5d76c4b26bbb6de7126bf785fc2a8760ce1664150be0b6828659513561b52906e6a4782732749897a41ffce670736ce0baf5730fce9bcb50a44e1e9bba166f4812ecfdbc2ddd8483405cd2bc68ac179177e1713220348da35c7b2a30c9ad9670d99a53a3c4c4a611fcefe9e39024732d6996568f2fd8eca433a41664b070000000000000000ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82ffde01c599a33ae69b9dcc093a546efd4cdc2c8daa0479ccdc63123cbd0622fa54f8c15ce9a049727b659c998b2fc935ddfae5788c51772e00dd8fafb91e7b9e7b9d4a34efad77ea3f54eaf8bb5bfd4c5d5ec6761689042ec6b1639e79d2628e712669e32f33d058707141549b0a0fc31d9fe4a633871d1ca48096cd8272f735a0838bc1a440947547ce52183863bf080eba73bb36f5130d7dc8676be2e28d00714dc36ccc580d88f6d878357e7121a811a03eb12faddcb75c9c3703ccc4afdaa85101244e619f565a5635e6b8c856fda2edfc27b5c06a711730beb1c361a6a916fd713ba64385734b8563775d66adace055205c6cf9a6c90faca0629e7b93511d0e51e3405210bc3d3c590ead6671e57af44a9418a5d3c6369d5b6d294032f1592c601c2782f5e5fb7ef820f548a7e21661944982f5b04f8722ebf42456df6748a2f9ba2b816bfdfe1432f6c4911daec2b75802d43000403272e1de73bfd625b9742b8970133c0599a17cb7fd7984d6a3da82e845e179ea888019c6d86016cbef610a7a0e3409f0a2bac1181ce62a22fe3fdad2708225ec503077caf354dc5c12f6fad975509172383e2f87405fc7c387b1de333f435426fa3b8a524cea377f3c24690918a4ea2dbf4940ded498169b9b85adcd9d37175ac43897abea5d629775f4f9792d2ece6ff69dec38e38d0c1c9e40dd2967aa103a20a148290a9b89ea82e1bb5235bfd29d260862365933e19f81eb19be2c775707433d66c15f68e5bb8a578a925f20e9d1bc34132c5a214ade50ff48489b89cb674fd3a9c787d0ab539849aa19486e3d4081d4f361517f45fa35168e0432fbb69251a6a7e8f5d33b30564338f693e636d04203502588b4e9128744f49005a77e5de0f79e06053c01e82f4bc29f0bdaf3292c300030eb758fe2a7e98f41f0db618ecb99924e25084b0e69da78bb4918b365b8c613ff5e033d4994e176b5abe710fa552b3e5e21f59a33e4e0aad74c0504c2eeffcf213301b35d9b0bd3c7d140c849012b1fa7ee177e994366b9b278afd94f6bf9a65bbd1cfcf5f3525512e5b257f6a5cd61c43ff2c695cd9571d8d0e24bff92a5ace203d9a643b7c52d794b3a6a2f0cdc6c8c1527e51b32847935dd0c12b1f1aef49cc40d4318b5b067ab9d238e7dc4a8903d8ed224c15ed66b11043fb6ca6109587b6210027df615ef57125d696d0de758be6e4b1693e260589e441ebb020177a4bc7c577a7f2c7d415e00fe93cf1436bf13f738f0cb7d0448074f1436457dfdc03217b585d133dd44928779072129072c0cf0ad9ff3fdbc686f12d219313ceb77e01846f030d631c8014987081a1e3659239e009105143ff3fd3d999fb10e1a1b8f0adce31db881d5da746138462e5a1b45d47862fff760d3b1ae1de946257f2f0edd1bb911495fe1a24ec3a7cd5285e5bb25ac1d206d2f926f9dfd574758a6eb2ee5faed26e5a8e07dbeb11ba4dcfad69d93cc718fca7658b97384a243589699547d476887de967e325ba5e3b982b079eddf83998849579a849dbd3f2f487eaf9242512899756352f3680f334e0585bd43a3439bd62404297912e545e7c18e0c2e19714752b7525bebea1d83222648bc9457ff3fed4c91b1fabc6c88b5c3805dde0267f72a0abba1715fcbacce4253881625026ec2e240e8bb98c5316d28d361a91a1a572caa057492fec8d5e8d8b51f5890515186f7c97ba4a3810f40e9916567ea7a1980fd806d295c73a8b1243b538c373f531994507ae50889cddbe473a8dac128c98eeaa965cb0cdec2dce36fae175334b1dccd48839b7d28292a7c753cf23990d111e518a4260631d5a99a28f3bfd01db75d8271d08556abef553106fdc472ae97b5f4d2d3741a5104d06560d85f48d3e3acb040c3264d37f370f2acbff61ed733f655d8815983c7e78942131b41645f1ddcb24711ef39dede1317c4d7dd9b01f77066b9f3714b5f09dbb35e8341188e4384bad7238d9ef7d73e2055bb9e6706a90348ae9e5057780666f3642d7a18085e115e5ea3447fdd013a7d976d00e39edee09b271286c1a325161d3d6eac566cb86c5af3d287b5a56dcc48faec1d8342bf3c5436ccf03c0b47cb880aa7001e2c5464a406e24dfd9d021e62558e3cc9ae3228f03ddab021d5519fb426551e0a39ad08f68229662f16b79b7653b8f827a8527f1dc556a02f9e3c7d0f3872467a60340dbb0641d91d6956a33f5c905069ac39e67b40fc8d5dc617e00e89dd926bac628eb187ca1d0c41972b73b628f18159633c6d4697893bab32cb760a193b57034804a66381e62bebd6b729294bb14a113c5750a2bbdb57d40ec9e37ce7f3a486b920bf2972779b88d4ffd3136e2c10286682a4c413ed2991ce333060be5e348dde9eaded10e4cfc84ab1b157713936149239477a0b5a437574a45f24843ec4a525a71813c05c2524b92c893cb6aa0dda8df21d550371f5ac622038baef7071007a31cc486158ca1a8ec2a0c274ea26100fcfa5a3991b6f79384ae487975207d2b0b068df60c7bd63c014d13d2b5215ba7be1802b78742cee248c07cb00f3d5472dde9f85a1a9a323125a3cca08fe5c8d89f73c3fb600a4a3c7f28f12ccdac1e911c8d62242deb1ceb63eb40ffad0ae8845cc9efe69e9f5a7d2cb9910306e16b529d8e16e235e8e54eb84859d4346bfbfbefd453f9a4c8f4cc5c6c80a616433dbbcbb512651578d1d2736f513afa0fc68b401b53086d4a32d2a73100b59f8c07c06f43d17d2021fdc15410e22b5911b3572d5f7996703e97d24699da3fe7714ce74a1daa802609cc631db787abb71504d8c016cb7f5973c0d5f91899bbb100b97d4063ca590d15f176612d2e8779f89132428c6a17ce0dcab8ca081b9d891d3d0cd0bc755a193c5d5180d28d917ea7c5121c702e7c66a58b5499ba4fae3336a2040c986afd2f44d92047b338db4b6b3b6c176d88c641a6d9b4d4749654d55785002b3201ba3eb86562adf07f94b3e39bb3304a2d022a872ae74cbf27f0194c5c73037bca2d3daf1150aee2f81991aecca23660de5072568652037ce13944ec9d75f7cf424607e36233008df0a9707913985b837c631288ac62c253c9cc1586706b9e8238bb0d3d14fcfad900dff65772b36ca252d9f81450ec29d6be025262bc1104a1643c099b3bae8914c8c78cf39d09907d725a52f3ef3a9981c2dec6cccb88017805cf2163e8909eb0822c34d2b42ed08af78dbae9484e7e4faaf2a40b0762f23b491a2ccbdb5cdb4df184b2b70cd39b0fd39b8a50e4cc527f4c6169e79e9c1cca54900a1624e198a0214d8013c017a2dad0aea1521269505213c1c873cb5531b6dcaf1c5430d741514e49e7f3c0f7bea8c9e3ecddacc99e2a8e729f8a0e9c87687f11158aaa9a7159ca567598add54fdb1a58eb08da87154c59bb9214e9d63fc280ce2fe1300b12d4b805d2d992a5e5f74b04e6b41ef9e4f364aaf3f90aad6435d7662d5639882f9edf5dc7ae1e5623fb1cfd9578fbe00cf82353ecf865d9ea24b5d5050e6f7609205b2ef209c57df854ab27f2dbf047e69666ecb731f0b11e540edc105301dd9b915fb4fb1d96f4f8b99b9c42f55f99cedb22638167927766642f0c1f6c4038d4ebc8dfacf6a3ea59532d6275fa5947cc80f44650719be2802f83f62b86776c7a8ac0b92305c69583eb7b1457e21760890e8b9f42f0043af46d07f82f8aab3168ea992bb165dc7396aef85646148b9e9fa88735bcc4f2f94d70fe02200480795aed487d24810b4875284d8e51e25493075e17b7f9f319da50e339a61412cee460382cef9feefa131bb3038360535c5593039fe5fa3795bdff94b1d41e0538536a9e6de8e4a9228d65bdc5cf6868680f452599112cbb3750f9f167ed33017d61dc6b6b374d87384d3a81e74289bd5253ebd20edd58d54bd3711fed8b2273d5c39ab91cfa21b2d3a901891eff40eefd70b8d0d55c1c33a9bbbf2e0dfa2430c736a18addf449dbaa6ed37f04b5a921f945bca6bda7cc75fe47f4c8395918236dbd810406e684aec3eca46c8079dc76defdd90c746859df26c661e746260ec99f15b3bcef2d4eba263d6563f305d522b58f2a39d9f420625b2da43f7dab24c63ac0cd79078a56156ddb4a295057c02dfd02bb52511d08547ec1c0be7a7a1ffdeb550551cf0170e89d9ccf024e862eb9df3458bede7e0bc7060860bcefe43e526edc7ed295f331d5167705f7f32da9721abf972e7eb1235344776ac19bc23e6b916d3a5e54f6863dfe0f46b17800ca77c07f80f0fbe0b2a39fdd2e0107e53148182c577a60a52ce377947c1c44f9264db8fe29b5d9943ec70997fbd1759539f1c5c279f645b68a856d58571bd99d0589f444f239f194c9e73e1606f8affd027a78fec78b8ce11a3871e416307c4357e761b6836be85570d3f155e9d19db103d148cf9dd8b51faabd6157e5e80c9b78e19501489fb6fabc2c1b7de2d9f480006f0b5858eae39893f9ec8a36ed92f2d6e64a31a7c1b13dfa8540d3176e2d451b09237feca9752c8e14b48eee5dec0cc314a00cf41303c8af57c727140be157376f5182e5bd20ef43bfb73077f388b2152c79b40c7bd7360aa0da790677535a1e1ea76528a51b5ea8ceecf9babab979606945dc154ab3269d729996e6f7ed843e8207cd7893e5f8be32fecbcae63474a8f3d3e66f5ad3be91ebd42319d4d4e81377d3531f4bbb7279ba63403c9d827875d7c244a9e7a7c83818af42fee45603039becb40982e1ec43e71c919a409cebd605b865e99936dac09953b4be63ee592eb0f1bc6c8a0fb156bde6c4e05df97253dfa07ad950253f18e0bde6eb9baaad215c785a73750c6f30b36acff3e760abd513258e60d80770b4116cc7f925f34b286649676697b49fecdc8e99c6fe3311d34fcc8c4cc1f066ce680bbf9c9fc32722c858204e9f8201dab9bd6639830830e9a24830a2dfc02f767eea40019df8d41f2e0f63562cdbe55f71b136d52a61b271a24e5992a123f08babf356fd83468d20ecb634bb0ad02be4af5fa5163445cf5ae233804ea209f5c279c726db78f1c81974fb8cabc783e54ee537c9bc3c83370bba589e1389bb1e63ecf59250dcc2752fe0e1081cffb2e7f4c62d44e54a46480a809d383e81106a1b06165f419a8f3502cc7fef7c9067599af2f049fac6ee80b15122555362f7419ab7f3379cf9f27503c503eacc8e94bde23efcd0257fca4da1ac39ad5f580174c42860c91be20a8b1b95c2ccd2a51466da013a02d728d54c168eb50c064b30da49f272f08ca19099058805f91afce70776194f24a151fe36c2619df9fab6760554cbb58781514f131f1ec127a06d98e5ce4ba82fcf1165937ed258ddc9ace565827b6b8cc009b87b083119fc093a106d5f5c679e7a145b619e34f69ac0531a9d7e17ece8e335b66f14fa874dafa045603e127954d89dfcc0994581a48f54fec32d4228831dabe01d0d9f887f4604e975326e8cda35e2151a452be21a4f7117740e70bfb98cbbdaba32795fae8150ab9be24746faf5c8a9ab253cf34f2807e30a238a3ce2aa5de2691371c49b1475e62444947f632da3da60786d0f1f52a8ddb0f69bb293540830f10cf70b3d84609d16fb1c6285a4ca9ab615ea8b0aa6274317dc9c06fba50e001d00fb9db760fe6e4e751a720bb33cfa914fd5ccd5a5e5ee325805cabfbdbfdbe82a45aa53570a50fc22573e6bbf7fb641f16d01f44b9176f965b1ae610b0bf2a73fa1125b14bded8008d3d1617951e19f225d0698241746b651e003fafa16764506610fd92caf131e8c278fece483410fc3e2c6f2cc76d4a9b66028ff3aa83d4a074cce66ef035e8f2186d2ff9ed2615b0c451c8564b812f225feecf9cbbb2de6238dc4c8770a0e17feb7cb02217da98318414257c4dbf3022d8f1e5ad79fea78168c8f1771affdf4597994697e6cece2e6bfc7219d3018e3ac49549e37b8a57e0e69ef51c8944a3ed215f36c15a2883aceab247dac03ef5a82f235fea559e6b42cccd5eafc30066a3a3173bcf2f7ad34004071bd080e69c7ad3f514c62c928e63457afd2973142069ea68111c6820af10202db0396474cb2a78e1a7121ec04900d9f4ebbadf3d306273afaeaaaaf0d882dbd511146f009b748c2e093f02baac204a3b4ebd4bee5aedc3935775b9d01cab2723ce0c06ccfd5e2a8a2c8fc467c9a06ff3964e96e104890097d00a99811114179536be5457dc37864f4b5f848d27d28a6143b90bc2ae09b218e867fbd6791404ccb662fb779119b8cd2472d1f9e360ccc37f39f2019c79f365c813fd80faf189985f1704016f096acfc6bc0b674fb117ba7eab0f4138791416638ba365c546180b8d5662bfe157f3f63430198548216d7cec0ec8724ebde55883b2c384cbb67b2d7179362f9114dbbe561c8acb3d40ccde56ea66cd7c832b299a96f3a0e0aebb57e9246068d5fbdb126e6a149f7ef2214c35f30409f1b44de792cd741df0cf48f273f6dcafd69547fde219908a75b3b594f45a382ffda619f7e1378df37a8b2a25aad273329002ef931a95a0a7b670dba6dcfc08119783f60b84aba6ba878de6158e689ab051e5ed1743f6fe28a3c061198e7a49d08a68271205e4151c49264929d9ba38dcb2559f45658ce96b2c232cdf40e63bd8828794ef664543bc2f700a65d7c86f218a9b76ad0391906f4480f5563b434403e35eca1079d8c1f906a271ffa21d669a27883108ee78a4fceaa056c0bd5aa4496ec5f37b2dab8b19abc88c61ec5891759c6fb2263f534df3d7116d6874f42d8bc3a1ff9383a68ef3955295b5478c28308c79ab25ae9ca31544427a2cde901ea588ba872f37cedac395f6661ec659f1bcde925f6a82502b32fbb07d4356efda64e82c35356f9abaf5d3f0abbcbf0b0fcc2191501aeb7b59b21e00858b19492aaab25c62afc3b0cecd3d7746eb6cb1edb0cdc569602791a17911802c9f5ccca92717ac661cfd4d4dd8bcdec75492a64bdd2150c2235e7d87759e137b213cb3ab4e275a99e4ac77fda073e2870b6486ba384c44b4f59b382847a5d0a4f87198a996e639f51246014a0d9751db9f85bcbea056a7609332bb1e7ffee3baf262a346e45697d9c97c5ef099e109251368b5a807e6b69c1247e8430d2ac2261aab0ef2a0f695c22086b86fee0adb6bdc8a14af3d02ea0effac0f6f55e8203503b48deb8c8673b92c499284b935abd06352b391c253e35870f024bcbec4332f578a74d4ab0be09e73e3cbf5e1ed7e53eceeeff4ec26941dec578ce3a33f701bb540da65f810e7f4df368804cfcb6078c99d45e4f15ee1d1ad6831c3e6e01102e6ebeed1f86940de0759b256594c9f91041716bd57ea464e77cca292090f612bd7daf20e9b534bacf13ca7d940c90fa9c18b188fbcc17e282edb1156cf5c1351a9f118dcbc5cc720c5c6dad1ccfd04f1beab7817561e86442665b841c97150d10395fd842b54d025a221d81f05c820474e492341a0c6dff31f4a38ee089082f7bfb17b9d8c8355dc76bcefcf0c7692ece39649e85ddf7e395f1baf893eb960d8e1374e84a1d32fc1924ec5808c1255b34946db13ada6163b368754820d519197aceb746d33f556f9932aa775b5547d4b42ab6433e4adfea54bbd7d173e622229660e74ec486937fba081cbb26de3ce7f6f76e070cf54315f18b03675cee1c06fc765f145b7fe4fd12f897c83e21c299fb9614533e163564b9d3090cb00f253029a3a4042e2047cead0dcd42969685de183ded532773056cebbe0242e9bdbf079eb9c8b0a64df4833ad35fc40a317e99070683255e7087a0896b20e0b483410f9e4913bf36cd028555302162a6c6152803b31b8dede9717b80947efaa233f6324941e0714473c92da512fbec873e4b745505a5e691e2f1b6dc2e98d1cacf4c1a42dff6e360909bb82027b6ad070f34ea2d1bea39653da363b2dd14633f5d0f11cc1617ab8239e9832b162b2bc18d8703a39a21ac2ce9b1f23395225f6b34671d5e7679459e7f86391c80e2e3c350220f3f3cb40e575fd8afae3bbe1104246b092e405bb740e213734a5a171aeb6d82b185973a797cf3f17d77cee462e4f3032d053044aa6d8060928f6227bee4a2ad6f7cc6bf49df364cc75fdb9c9aefda07130967032ecb5a29b38bafd4e6755e2427585746460d696c9481db581ccd583311b68da1e80fc45b330e7fc6744105cf7f329effa8d05e5f04f891e6a45c0f620a1c516f22c796523a325d03aa141674b2d257074a20a7b14308310c73ccefa815f73715282cb467a763532504523a1b1fdcf2ed3af8381fa967e02294195a9d0eb43a1f5413be08d6e9ac6e95ebddb34f6962bb64dbde6e94bf734cca4cd1d70feb5b3525d1a4f8551facc79b5f00732cb252e9df686627a56b80b13fd033cf279cfc12ae321a0fa58da9df8da8e6f9f64214e40c22334f13bf1f6da122b4673deedbff3f98958b53af0f4b40158d79e63778123cc6dfd55f43f4bce42f318b0ac418dac56dd9436e78bb527c37dfc28180fed5c439f952931b29e271d83b633effe9809a6399282048357028ab1b540cc0510ee6b19a63643714857fe51c2b1b2963b7964cb602861e81eb52348453e9bc497c447e8a8eb73c79f3997ba17f35f32121ac7b0172845bd8caed56a79285e97d17aa467312c4d10b8bce1d18e416c383b128ded04fd1724a29cd8fe9377ead625ae91efff1a562e03d382e4b4621b28f717ac6fa928dac4a086aea4e122d59f28c961ace3dea0bfc79eb62a5702870bb86a8d82e6284b39f61d2c39b7d99eb65f319cce48af91a9028a48cae8c3c08134f7285c9e7161a570947fab3497f00476f9ede57415cf5889ec18501783af4c371a24560a3046a2683741e851ec1c34fe45c777ed5cb03dfb8ae6648a1224bfbc723f1a69a9edc5ef37147baa1a84b199be1dd645dcc0fba7ca9e8365309f3669b6d1d2e8a47e21d34d1405e6530e0d200dd9997ad72de1e70e660dcf53a6bc4bccd999214ef9206af79b44915e9956f8a019919290066728eb9ae5ccf073eefa4b9f771f584c03648cccfbc1823d118326d7488e2fdb2319df94a593ab0bb34c9970d038dddf2c174631f7b73eba3e6fdae9edee2ead25e57f4c498c32a567c546f089930cabc63db6421a25915714aeef8d9ccd320237cb0e4d302fe1c964c4aaa604714105a1228fe5ad6ca7f42fb2e07c7d6b0bae5f3b320f59e9821d0f66b702e0bef73c4f3d891454e90599f033a96da7df2faf22455f49e28b10ca126096573ceb1d4154791bd607ab67ddc372cdc3da2957e67ce2c599d50b90710895a934fe744c3cb75b1836eed5ac9a549c28930a6388a7c993c7d5a5aa302ee7bf08d177548ecd98c65152d6197286f52b57a3f918218fda1241e28c86201d6e3b6ca12d8e6756223bf9b19387c321db1a0ea2fdcb7a7705f7e8c81a998368a1cdb7788be5629a43704d8e91662b3e1a5ab205f85a27a139a5dd5e40cab92e6dcadb5be50ca3343905fd10ba97df8aa658634c914db6389809d9b18f59fbe371733e5ae1fb35f0f6230a2394119aca72cb11db8a0d0c82a0313562b97528fb50b99f21e3c4097366b763b0325a2f8875b32cd4beadb07925be74aa54aa89f9b52eb1394e1863899f04d7fb451fdb81fc4360a3320dc2a24b3b2c0fd463d9906b0797c3215595d59e5350da3a8cd519d51e76904a80d73a163b384fa68002516c7d7efb1f14aee9258b3aab9c5033b8d929430ef742cc88665799fb1207f2c8d333db1ac85d4c15235103d28b3769df98a763426546b21a8eb0f67872edc8c9d448b8c70d6f7af172d13c3aac5d4ae5bfc8ca9c891e501f2c473eac63cdc16a96b0f74cffb89211a411b0e6b4a0d794b5be83a7cdde651573a142789aaa6aaf76c7f6ba4851d1eedce7feb5f7a2c1179e351a6d97620395b96850238967e8264f581ba4ad4dc85933c874e30fa3adf74901f6ece0504879356a835eb019e12e5761f5555f63c91142c59cb32515de844c0284a31d5e148b694c53e3c69378a1c2880e893fce50f5ebb5b46b7ddc8753e7104f5effea9b0c36e3720469c3f20b8d97cd39c06cecf7881d20032be0f23ed939613cb0dc5ac81ece654aaf5ec36ba427cda4a0031328afc840ffda24b1829153682cbee0da142cfac74394c073def27b4b38f5cdc1c7b699d281d1fd41ac559410cba3330d16c74c8d035ef0210c8dd151a3850db594502d1d50c2959301c384da313611e361e71e937a5d1799d1a45398ce25b1111c86177152676d64393e6ed1f11821c1fb5dca4cddce3a3b1e28975d80dca762c79210222f6771d20ac64da695035d00dae321be393b17008e5f0037f4c1733e4a9f17ce275a85fb44ba59edf9e20403843b11863e4db333233314661bfaf853d6269b187bbb6c0eb0f510d4912645056813ad34cf3bfe5277c589a0314bae0aa802cff46b510c6c76938cb84e921f7b4cf4200da1a82942a807a2075c0f7dfebf768b54b2e308dc49488c4080d6c71c0bf8d773d5de3cd112c588a8ffe11d7a17534a6c7fef432c380ccf252a10d8cd1fa13a5cea6e546349923de83cceee44f2981984fef7144be4e72ea0c149458a7aa6648c9f658622c00be9d0074d3b0d498e475c8e4bfdc9ed4ce81d3aba532aabf7e18d5097ce37505c2dfe9df59a6bb30fe45d62c8a1f2b065ca8bf74f81bc3da5ea3bc5fe855ed0f0104574554480151238458b0d0dd6d493ec964a7462117237ea214ab8bb54b5a7d9e005f5606865f5c7c04adb7149725e02ae803000000000000c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945862d09879b6ff8bdded4f70af68cd3e81dc71a4c671032da6cd9224a5c6c1a660aa1393872b9170453d05c1f40ee3bcb8f727b3e196cbb9c72e7f12ea97080f67e003c99764d0dda139b3165da5dc4bf9700c6a563fcd0543f549e7b19d4cc4caf777c3aac4386f3bb692fd45d7197df5894f1c9545709c9c2255a3b6ed950385ba5a7c9c5fe91bfc671695898f78518380e34231b3e36a49b641cb3e940beec0062", + "040000007d24b5bfe1999a3b21189a3c4d4867784bc2105a0196aba2ba6fd1c9a63e22e1be3fd8ef559f3e7d94c5da9f3ffdb276804f413014d8bf07fe14907d6a37659320e538c79c0033eb2537c88a69d77f048cf4cc4fadd09c9bbb91b4d965ac8f2e0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000002000000000000000000000000000006000080f8694a1277777777000000001c1d1c000000000002ef753da29c8538cbe9669c722c10bec5663e07d101f0a6c3f1f86440a7b00dbe374e5118632c4075f9e84b6c62791de12f1ec0e70e7d415d61c6639d786b1a0c0289051e9e5ef26a5dcbceee48051ae1ee91d70e02022fcf954f3d1190186523ec4cb0ad65db85d28e247bc1daf3fa5b111983e5d328166df852374f3efa9430f7e7d5ef94c51c82437ac68d11f78c190ff7314fdfe4fe007c0be3aeae7bc1094c0be2db5c7d2b24faddb22ac70bfa8499783f312f0bec068f8c09483f7b7edb6e63753d60feb460e2ea1f683740eded3d994f602670d174d38dd95b2a151d0b1d5f2592bd522084eba11fe9f8fb1eac057b84bde9119816ff74790db723529e8713c8daf25996fad08f2a78ceff248ccc91a83402b94311946343866a6dace2226d246cb8226f2bf7555640d4891457a7f6bb6c85962a5e482ec760b6d6483a15f6b44108c2096492765fea12c37da638a7add8d0b74b1bbeb5784c3712349881b78d229a682f024cb21c0c3961704a71ebd54be06a17f44b1fb1926844f14c3a9eceb626fcacc77ddb138846bb40f28daaf7e431d5d09d6f2be928bd09b03f6ee2302cf572c781cda2167d7d8e9b1f4667c8b3f7621c0cf85aeb45462eebe743a33bebb34a9d118cb2d4a69d2038d591e3266e77e122f9fb889ab83325e5d2ab3bea0e85e10cfdd1508d3233ede0b9de84634972e6d3cbcf9325407c43fba5c9dd30a70aece3ac6ac3d5598fd2dd29907584b85398cf21879b4e9ca3c2066e65fad046e788e56fd4a9098b5a4b0fbbe12c0f7c0b5caffbbfa69e4289c9cca89ffb3158dabeb2952a6af2bac251010a3644c01918e0198b835da28e26f694ca21d897785240d0477cadd8bd03bad34639189525c02fea6172168722cf2ae9a6b51412b4f9b24495b9b2852cf045c1acc6d97dd0d6746dd116cf8bbce3258c862e1fb18a4e91d9118c5741a38d6a7aed613910b11cb881cb6d1437669ad853512778ced215ff5b460a47cbfd30e86f9eec227fc123262d73f45d71e66f17492af0457191e797ac9fe6149f4b3cd631dce8f9844bf16588f55003371165f0e48562a11799c33c5b4e4dd390b3943fddf0162c033f0751530acaf5ac2530f320c157c498452ac5012adbde2cc19339fe82e1ee6245dcea9f587a40f3b78600de1209ef9eb6a903d267a95742c856aab1829fc8974731e49b6e8f674eefa81b23026d0bcb1d770c31a60232798a8828fecba930b51b80ae6b98645be3c5b80b195828dfab3bf8763ae660dbe4f02ed5b52abb301b18f3ebf8f1f81b8feeeed620809673472aedf9d70ac86268b7a162d0f46c0ff6bf52bf5dd289a9f34c19632198cf15730427971369cebadb6e943a6d8dfa84f83f2f6451e9d155449f6ff1b41f538eb760edccc3697ef679a586c8295afff2cd8de2ddcaabecdd1c0b41e8db2790ca35e263372e2aadc2b579fcd47d74bcfa188dabae48a78eb8e32e403a3f4bbf86b8535c568a332e0b64de3b3ba0e75a2ce01deefb1b1faa6fc59cf602d1359180616258847d458d03990f158398018e63abf87086caacdeeabf6daf6965d184bf8dac33b1c5af2223168e023a2f5021874300012761f400e35e341e3b54683442a1bbf7907060b54181d27021ea69caefe8326414462f03c44eacac9f26c8a37a8eae78c76dbe19d33f6b198e8a2f4d77a2d50bdc9785518a1e210fea6451bc05e85bd106737ad37e9c96105db1b9bb09bd7cecc45960de0bd6d803913fa43935a8c17de7bf573089ec323b1aba8f6eaf0603b91e53c540305cefe8361dfe47b787257add20569bcb7aad355d93dfe9d28443da5662fd1030a8e251fef553877edd1e1559bba63ebcec258035548d037eb34276f4b256b22631489e8f7201c86537a53502b6f9b4ae7c2a7272459a4df0d203b7399ca1bae6b5260566332b955e342132535e527fa207f8ec9b0bcf9442b7794160497121720d2fd698e3eee28fa34de2321afe580958dd133b1dd2b36afa84dbd004c4a571afa48466d3b7915c84753186b5a3e7b724a8fb8e411f8732b963fe81bbaa48b247330eec8a0897ebd64a25032e8aa4c987ff8153bb447308bb3cf5ab699504746794711928457df6e10d689d81cd6a846123375f5c46ed603f14b0ac6c9729075873179c3bae9740c273d0ec9e1ce060285211c4e60fbd2801cae6c7337570601712fb81abfc25d9a43464541e13bc42b02f01f8ec78a7e5dd3e84fa9576891397106427a6ef262e11f24a55af39caf98130c69bb042475834753518d2f67f66c04d81c574eaf7d8b83bb029f037c4999159186e170752880638619096dd852f29994be72f3a6922a97610fa11085d4288214fe131d2243929d40dd5915a6789c77a499f43489ec2a0b7ad37e7b5070000000000000000dcdeed4e7121d043c65c8049da787baf0bb29c59b75e9608dc59b97fb001c92ffde01cdc9b9d97951e4247bb513ff71eff5413fda3522232fb7d7bc48429bf301c3bbf60c1e5346e6b2412ec70d7ec4091384f5a9cd1feddbf9b02fa15e591c1f86bb9ee9b65bccc11ed903646e771b8d252e63306498d3b325c7cf46dd9e4f8e1e385bd5631b11f427848e7fa3bb78f8f97d090ff15457ddb0030fa9a8332dd2ed68ec267909771b6ee3edd3370ba34516a4a7171680d2d912e2fa4c966942b231609e3a4f5860f35991d117445464ebf6049e31d0b0eacd23a11122c2cce82c6f72a160e131c588770bc6df3888503df8add4f1285f1417543f380479052a2bf8597f56b0d5587578c3b896ed7bf0e057b9a39ca8ee3b1abc2bb967bf5fd7064150871024113211114f203ce5f150e30ff55747a6ecd17a342b77fc7c41ba70e1a216112048b26bea002606abde584d49e7cd633b7a5391290e7808978100e2d5f955cda22772bf642aa0e3b4e8f30edc8c9e6dc1d4952160377205a83730dc58516ad5d5f1b121f397aa2d43f47ff7a09b602b9c61958a3317d2316b9c8db14e40a53e88f1744655a81b850ed7c9388c5388da56e36ed67ec15e15b52cac4bf47a088df916d2c70c9bb348640cb429cbed26810d8fe2218424a6c63f1dfb5bfd3277bc64dd12ae6c088d7f55c4804f6c8bcfd6332bf4d6edbce09574a9c64d3fdb1e41c4d17a403646efc749f7ca43eaf94b014dd269c833ac3e19bc7442ab86b815a9eaa9efa44d01e69c77f73f600c5a911f6e50b5713d079c855ddcc2ba6462077f5d170cda9bf0eb8e477095aad7cd5c081864b328a9cefe21b44b53ae46d38a66f6aeded011536310c3bc0dcf64d2dd0c9015c6c2f83d36d146f9bc9f5a627dca73c5e092953815715ce9ad107d5450b84d449e0e93bf16a4e03d8b15d8b938216cd6c0bc08ccbba0658391f8d8cccfcecf77a85778b9904105bce80cd8c15e38114a80fb6e6870fbc92af588a905da1de9cd58d7c288e7cf406ef916c27b1b4b61fac457fa6390d7a7b6c14256c7a87fd510806be27244e778173f993bf86ff5cbe48b85178c8ba1d529a974a00995ccaf42b64d4e714fb5df79980d79492002f7e220dceb7a14769cff9c1dba91247cb300eb8bfcfc3a85e360266fc4b9f328ba12a6098aeebc67e4fc9aae6762defa078251a0d9653cdbec24fbe31ffa3ef322e6ba7c7114d0f642b72c7ea2688505047248fb18b8321959dec8693a1ab349c16770aaf10889e46d8d8f508f3233a69c9a820b88fce5d5ed044b9cd7420f456459d3ae87a23cc72d3d9c770f94c82224d95426e10107ceb351676c1dea9f252470ec81a9825bf0c2b4a3342ffd702cdb306a351ef3bdb56539da5022b878e08549a6ec8d8773b44c19281da0e307614f72a30e46b73f8db627c4ae9f530c0ea6ea523a6b857f96acdf37b42808ffd31fccef667f92d7ae7ee853233308d0e6a61fb0f78f1d0ee35278788dc3f7585fff3688ce16d40da875b756b2cf4aa33875e01404fe7c74614f184a5eb458acd986abc580f0cf2517110b9f1239615194055de68c7925573faef91ec11706d27b7b672b42b323c32b25a796e795baa58a7dcf5e19a46f21b27bb14e2db080ea704f7a1d15c2ff114964a65bb7429a216ff96939999a743316b073d63cf87ec39d924f6e7658f325dd6a77c9921b2b21f49a22b1d96155d1dc9a206a9d521a5b3372c397556febe9495bbad48c1d9a50f0578bf5e0fdaf8d0276c1fbcd0eda0a5b72ced1fcddd7f6dc0df854aae139d42527db885aaed6998cfe1daef4865a39fccbf57673eae767a975e43f1b198185b1e37a7d1afe476cc35602f148cfee549147584f19255d6cb3e31def73cef31e3adff8184109cffcb6aba6e268367a2f1d803604aefe48404ec5b431c13dbb14374dc9e118736b43f342a3c93f57c707f58dab5f2359f88b48eb85c37d052105bdabb93a8e1f2866330f5548252ffbfd62b448fdeb777168701bdc6136a22bcc048e3679f6098c00ca7151267a4bb1c6561685f5f6fba0d1976a6b7999257a1e4d5155020b124f65e43dc06da593c7fdd96c6fd84afe493d2ade3624fd7672fc0fa7c77d97bea5be3c865655cc77440c7d28ea2cff6eb9bcf85780f2ff0e4215c8c18f63012aa4067fc1524e81c1b9d2e08975b0305c2a1add51a9471c9181835d923cf51b854cc659616fc1932e4997b2b3b737e661945abeb0d9b1fe3c113c2b2a8b371d8630927bcc23c21faff67fc6680ea0b3468b8a0279e3e160629bfccc7f1aac37b5aba4e275cb9cb8ada5c99361c70125a45c0536a9467343dbf1a22610ee2da7ab15fb8d3c5680cc447458f81523ee75668a3f75302693169b7a20349c35b77ef8e99cd3c8b852e4d1871972415de7b9bc9859697d7eab02e559f03cd57fae9e5d3d692e617a2cfbdc34eee3c9db4efdad6f1fb19a7c4907db5173f80ec204fe16919bcca832722c58273f8fb67f69e5d8b24c285aa1a74581f0f9d1fc11b42f578a1eafe7a7dc2c6f11065697d3207585344122314bcd914733132cd0bf5a661eb329dae384c0a85f559932a49d31facb17189716a38b20e3f0c0f30ab4686e79cfe9ad03c00fb0d726991869b6c89ea25da9450c3d6cc5bba1bb17c7a3c38962361890e3f7e24ce94253f63e12dcff3e2c3d045ad05f45ad9349575c7ccd0cd82fdf1e083c56dfed867382a4cf758decef9c05bea3138ca4507b7f638edbfe8f1512911ec00d4379fa996b4d64060078b95064cc81e92aff21e4b30d0b848a8d8d5ceab8f665e686881a79bb390d75f94c593be007bcd38d10de1e750df1a9256375c15e2bed4da66082248abb6d6660ec9ef6351125c245527c3b13e22d77ab516f2457d890f9dd5a6c8d0a21a4d626a5fcfc4bc3a427b5d3581830e070fc6b4c0ac8038bfa1aa52b12b0329410b6b8d0d78407817ec0cd708eaa5215921b14e113e8ceee38318fe47f3cf5a58c1ab86a6eb7734170e55b5002ab3a48cefe62fc6c897aeae4ef82eee968be5b59bf329cca3d03ad5dd38dc287eeda31de96cfb4ee94eca046b1d9e83632f1ce043b7c65782940b60bc0f9f35cde82d5623c83c6d3540139ba820af7bdada01c22a2531b1e3171e6befc5b8289868ccceedb49fe28a32bee69055d5e167eeaeb320832e0da67d6f536b7ea5226e86420f72ee68978a460d1a5f5d0f22e7b3fb59f68489f757581bb4fa107c14829bf5b93ee95f76a84c2f08514f73aa5c062585b57b02de19dd4039afc4480d8666cef6de93ea111a934295350433ecb4d7cd9957a0cc739439bd5308449d3ab744b76f429b3997611e9edfcc49f021f65645ac5524ddbc8fe9f49d8820633ea37d9e9dd5bfef0912fdc1ba80500df637ca3701122f543e99df4f528519c6233fe9cc94e5d2591124212b6a7711cb083018647b0e7200811aa58b82b5fbb10d347fb64ddf7ecc1e526d69bf7d0bf9ac4287ac42db1e4e1d9037ed3d9624cd19c590c460c87c71e7c5055cf0b78318761a5e5b8ea36978ac18275470e04d8e3da440cc7fda0b2fb7857bc2a0bda4843a60d21c3bfaaf7e32f16de155a161e01392be4ef0ab5df2bf0b18a0aaddcc364acf987c625c20fcb90b22e3a0bd6fdd161780a58517012cbfd7086a042f1e13b3f337ed2dfb4f66635d188287bfdadc3bab7a139c3ed8d784c2773836618e440f2f5ecabb712c9116a0d8536419ce663402b427556e899d12be13a588c66565c60fa3ee42f5b21cd3a8febc2b906eb91a778baf31aceeb53acb3556007cd7752fcda896c3a4a41cee337e5e63a5bd7d3d9be234295ccc93a1cd3b4c171f3a7210306901bcaabea6776909baa057ec840813de6ca414318b10d18787403f9ae1a57d671cecb824163683d2e8f3d40cd916a9e6d63aaf5f69dac13bf6cbcf9562a915febaf7d95e8fdc956018e42276703719e4f0d7c698051290d59531e034f884fe7794175006fa69b6b09897979881187a31d33c3728eb87e0562213ae81f502108314c35d590b02b4484caf58925d3f9620e89d5e4272be9fc2bcd587d337de2b815b64ebb3dc542dda0e64ff6d6037fff10941f565cb6814ac3058945d4fdd79c3f97819906551441b1914a4b6c4346a34d7d05315eeffa813cf95b83767317386bc21f1456ccf52cc983777764c02dd9c5ebf3940c19c8d4cd2c1e6366935211884e8aee011aac2fddcb0646cfb290d3f7ac0ea8fd1ec20b57f67a28a470673c4c202eb57409ca729c4ffadcb1828daed09ec1223d758548e477e7e06f8d9015df9a40b964438b2c59261a8527d0755b468601d381e60826627dad42f680f33a83027246eaa154ae2cf04ce7cfd0eae34735da1ecd1b408f4d41a9278115695b16a248cb697366105585a863b4629f6a6899d77dca911091f73e33a812f5baa98b3460edecd6cf2bda734810a7412943426e8d8e00e24afacc681379b92978ec8e049f34b22de5488e9ab25a7bd135ddcb766dcc95ee688268ef957b83130c6869bcf0bf43d606209c5071b00e32a20cd6da4bd4cc5492f435a62561348e3769093639c533570f22b9ecda5aa7c2773753211c68672101694fa491eaec2005a9cc439f773801afe423675efc54e302fdb5e09b895316e7ac8898343bcdd91ad238211e3318ddfe0d86c5ae1c6d83d791c52d9b35496b8ed9978a1c7b5dd00bc6c9697f39247238c2042258025121816660ef0c53a49995cd9b45ba1712d45695472b69d6757e56c572c0f290ad6225d35ca5e5f564ad2c3ac7fb0aa41ac346ec3036adaab5000b9c58d8861aed031b0e627a1e665c36dfceebc558f59df5b6235ee823de9d185d171a9237a20811d9b5e4efe508fb9907d25b6849dedff9e8d71fd0b2cff2f8ea8cc1a7e98b204295f267dae98a6476d99f9eb73499fc918e2db191b9decac79eef1b046e9958c32ff1c8bca28c125b2b2340f980219d5cc979eeabf2b2dadec09e43ea4bb67b136dd30cfcda9dbb611d899e5c3656d46bca5b43affc771c9eb1697b10936d6922c17baf10888d8fc10b4a891d4bfe5ead9136c4f79215c61d4796897fb39834f0440db29202211d82d2b16e69d9398fe33e22959a4310d274c67a4dc9ae6acf72abd13a1afb5fc319c3d5ae89933158c91ffc851e5e5fc854b102a047a0d30211afda1cb548d279fc894f1002c3721e3229519b560f0a71bb648149bc763b3401b9ad57704139a85d936bd0879a820f90be6ea7d78b6fe1679d336dcc2f776a3373e473ab5ee54f5e0a8df6114fd0e2d88ed6e7035d232eae1e4d785b417a43e06bdf7bfc3509bb4ad808d39ca785673436a1009dcce6cd055f10439de64652c31dcac2b65ec47264fec73581f8598f8c318bc0f8d0eb929e7c4d6e5f012238e01e19b1fd6b54feb463912e6557b65741ff8919434e44e04e41a5caadb74f3cc0254541c06faa480499326b7146499b55a2fced4dd416d5a31779c8de5dea938385217832cbc605788ff4fa96e24fdc3875b52769db18abdc76a687974925a52081043864ee8e39574d7f27fac30650eabb1fe70d5d7bab946b234d1b8ee449f08654ac868a22839924b9e7b94175e60c5b575263089b525f40d6f76570d2740095a43696a90f486332f45f4f6ee2d1d55d4b3f2311637a9e73f921a56ea0529104573b25b2c48307adcbe3b2232cc04933dae07c34c491099c57dd7e4b393fe34db10623bb35b74ce92f8b1892d24b9fd88eb7cfc3d1791b0bc3bddebcf42592093e6ffde9f40766ad3c21a67caed25b8b250946ec46773565fdcc6305803362274e612308b8b767423afffdb27239f3b9bcb8e70bf0ee68cc8a1af4e59f6972d7c90b182d862066d1b83ec044b259b398840cc736ece77dac61d07e4b338083a97146137dce132a2a8a0255d1c5aea80b5e0095b6181dbdf1fa23317c74c0e25cb86b08c4136065729777527f49f407256d36049e4c236201174b312e80090376a2113d62058b659f63de5b8695e52fd178c573ae0e14f205cb2fd929c9f09079930738deea7a2090288911af17e157d6c9ea4bc04f6264c81e4f3b5b087fd17a7c0b7eb631c1d1476ddce8be398fb7f576f3f01f98b823b7e8eca7cb3831c0ed3c036219c94ecf5a0c2d112f788d73a432394247fc0244de10e28d4577ecc084c521f0007f3a6215a549abb3091e59c6d6cd674c8e5775acd276c980033df3c2143be0589f65da81bfab1dff81e6783f814980bed3cf47e51dda6424ff43c2a82e966c7ec5b197a73cc580919db591cc522f87a561ca46753679b8d26110d1667bbcc24706633f219617f620958cfc35c1d70e034c0555bf76d9d854f8e5a0a973b88cd6096e5f3d2a72f3196f4bd42b32d6849fd37d10df37225b0cfe05c1005ff528c59352ad6e319f77da2ddf1c94b8b7e7c7a25c7cd15121540f31ec51725e71924c3616257756be8d404b53cb3091c6c3a11940c44cc8808426305550f35f9a4c5322222e661561bdecd8ace024f4c2fffeb3bc1bfa7f69454f6699d36dc42f35d78130f04b39ef392c5969a4d8de6d5271ee7a32af3f311386857fc0c21d053bae00a066ada63a28fd84b0fae439f1060a7b633ea07813863162195125e00d9c2aa7f25c11c981794cc97718f22e3cdbd21701d6f6f5fc25885be6330ac8b8266bd64a227535648a926a002345e224cb6bb4ec6767c1f1511c2c1753def927f97f9fd620c27eae292cca484472b6fe5d68aa58d3fbc772153043073308ec7c0a37c5355c0bdd43179025aa0e8d492353849fd7accf1a0acb7507f11281ab671d69ceaabbf539eae572f0015426f5e9a57e8c4d4d92216a93027572c11172cfb505e590e4d5899aa663a5ea32d5cc163ebef26c92908e15fe3c0705d06e32504c7901bebbbe7de2bb3f5ec28dd50299d941b24242ea0e151d747e129357f4fd6c98876dd0779fe40a7cd386f198150b43d5fced11d2906915937905f104a9ab5f0d05ddf227110e72a6c80a7878e559b5d8b1fd632e851633256254a22608358228feba5055a91dcfa6f702d55b8a463f0e0dd4af11872694e1b38ce25e8f8b4ec993d38223eba5dbc585fdd5ba53b179c20a278181fe3a0d13a7feb333941b59748b2b06b2c51d6c52d0a8bdcf833628cc30787d9d16c0991bb5a523a92da788563800133ac376a6feb09a8ce1de5c1ac1ce128272cdacb42b9592611e34bb0848a05f3c69e274b33481fd2b351ce7562413c2b2eee4cde66944b64103734d44e69b9187d0c98ee204f539c59b2374eef044e731b1bb3d06465f37d16634579e24f7ba512a29204e0e3fe7d89809914e41b7ad8d17e5ac11af5246b2192c833af76bad3906f95683240ea619360d9a0ad9e7e97777e2797180447e13067cdd4efb5ee7429fc5b97e80d3f9b8396b8d2df51ac47b434ee0109b0eaa22f854d4de4ada9dcc003a4a8e147ceed375d607922b59a50312813519571e2a526774b1241513f77d2b53d3d435f141c55eddad14021ccc542ac37aea8e24b9331fcceaa35dec147c114e181e9a6800f1748c3aa1b425d532da7ed19bf10ec5304900d6f685acba0fed0d7bde86d5d5dab0fe046efe66fe78b886d24c097fa252a7a9151e7ba2cf15798d1cdc07904c8f32c1853b8e79be4d344b6d8820005ff2e11ceaa7833e1de67fa3f64637bf20963bea0a981ee810562a0b8b2dd532e01140421a975d2e7f39c3988e99e5cc8116cd9462e2f405121dea5a03616d7fcad17ba0956b84671d94c524efaa13b6b0bcc15b98b6433619bbfc9736d5432fc5237b9a018b716c2e08e4eac57d2b7c33ffd813816a0b01f7d09a5afa082e1d10a327247e0f086f3360dd6b9b736903a518390b887a6dd2f5cfa65322e5fe6dd801ce6ff44388ecfcc02ab12c562f55484cbda45465049da5aba32131491f3bfd92a1f9e85fef13e622e06445252fe64b42680ba24d09d0cf28c9f517a24ac14322d57761c1d53491940ce65df7c1ce7b6f766409f66f6ab4a9b455df1de0316ea2281d48f8f2bfa74f001509e7d2222b7931453759b1cb0ef887335e62bf97aeb1fae49095be74c11f89ae74297e22a342f60ff851f43c1e695080527747f9326097ef0a6838a1f46daab1f109c4e921beb2ea1cb6a334dedc57e55e58469aea61a185933a8a4c5fcb5366487d36541c46f12d8b830ab05c415cdafeb875eb2031e154fdde2d07437c0297ba56e4416cab08544013b2728a42ac6daac513c436f3e07dc6aeee0957297b17c242e221c41187df1fe919602d84805486c0dfe8ba108bc4c5b95c300bf121307d465a3b69f99fece83b1ddba11e3a8ebde80cedaa52c7b5acc9d0417064415bfb6d8ff6ff46444a62619c9321171883977194fddaa0fb059c29139fea48955b1ceddae3ac8051923472d23f06773f49e6624a8f2ba23b36a6c574d85b40f701d705c983ad5bce01bb2d031617bf8b2769ffc90d2ef086be32b2e84cad752afdee010c8e26ee09ea95e963b57e93188d4af84a71a5224e383a0dde184ed343fc59f77620045b9d6cffdb1a89ef0d5cb7e853810f24523a211f2a2fc19a49729d02fbc51b9674783ed4c7c0ef070c6b47413681ee65934cbc65777f92d13f01879a5851ca57501b5cd016cce8e9902f4379997d5c75b3558161552ebe9eb325a3ee76fe87bfde3d2cb44fb9009bcf14ea07900a9e120367d6a0253fba1b57f388efab647bcbad82a4ef8b5a7158c3d0ddfd134e568c937375a9df0304080a5ae883ec3661b176c272c7dd87aa40f209c9fef9d07bd102818b55f3e7a8c0e06dad914acae44f9023a04395e12b1d41b7d425634c748713a709547376cff51e864654c3b24b19d294b99c5e61abbc2f270163995512a5d042d94e1df1b49bc9f2fc814d7409f97758487ea49b276ce60ba980b9e2df67e1a186a18ea60ac743f45714b80eeb90cc06d7158f6cf09c54a858fef698ffe7032c22de1618bfd90bbe8dd7db0aba29f53abf0aca67e1471bee1c871bf3595f423213645b9dd88a4153c7dee3845194b496abcc0104997fc89eebd4fc72c5ca73cb5789cbbec9cdd9cb0cf9117718041860fb2073fb3842c45cd1a8e44a295b3166e1ab0a5a18aaf22575454d4d3750aa838944d1f5caf671d9402cf331785d83c50c29b2e49d402ce4ba32516fe1b37c463359d7cb780d3561ac8c6ecf1626d33aa1b482f343086e740be27175fbe1cc6ff2f798b9cc96e2d88baa6d80b0e443374cdc7f11cda7def2a1875595f6980d0779641c9777632f7a5aebeb48f3e9d01c187695217de185ea6c99cd47b321c53c26a83cd2f749612ca143a2a3a594c2e80c1ec90d98564f2a69e579f9713c20af6a559f541514a7514b8fd88165be486e825c3de6899e97f9e39a1654e51ed9690cefd5e225602e68480e9f2346b3f8d61268dc5f6add54484b7f4bf8fe086110f74183a0bc2515056f9a0bad6f4dbbd848d80df7a24d5d92a6b6b2b16fabc0486028a13b67a2bbe17f9812ccf6692327e78a5dfeb56feb6dda38c9ff2360062cf7128f357ab4b395b26880fdf80dd889ab809da70b1f58f5c1005a3e054f9c40691c287163f445610bdf0f14e6cb73e0eac5ab2fa5a9db4a9774c135e92200c27a34aaa2f3b9e2d568d28ae69652f1a351636492a590f79df0d4f9d589ba0651aa572a6cf9070a873ce75a200506ca74339dafbf0da6add65d5b5594b5b49bb0b63b398b44ff5f996115ce0d1b6f220b7b7b20049f5fc9f26e4fd8b7668578c4dda8365a9e79db99378091b3572473747ca3b4104e7b7bb1bc22988df73cc1e6fdb242c78804b4334550788a3e6a50a17fd8a0985f2449eb8554bc28c989cc1d9755aac8b33482d2c70525e102b4518f7aed260cbc6d6e7317a22e92b776183ccd105ac9bfbed1bbf0da4be0c0203a390cb9b488ed0aaa098ba8d5ebb9659fbf19b8cbc1b4d78edae8f5f272d2bf0303fdedd0e3de90ec360fced0ebbc85d612a9c396ba66cde481b92efc7ac9a1381dea34d170791896ea030cfce7234a0a2d2301bc79043aa7dfed6f3ea7bbe28a344a274fd9b9670b70cd74379a6fa1849a26609f1ef892c0073b7db34f09b8631af1884552a234f7f37263e04c61418b602bddc8561c0e097c5767fdeddc5deabac6308e5ae1c41565baa4d0bb33718486f3c655245f26b26a12becdc95a31819afa5729cbf3127bca5596f9d409301a32e80a3b7ec270b9387e88e9e1422b9ac903aab06f29970b50673222a3460acc1ed2a6ed45d10d3b42887d803e880f39141ce63b8d3fcaf49d87a9ec7f9720808aeaf8eab0ab37ab690f97cbc125be08fd6cd41df957059878d19b106b39e06bf30cc9d3c85f25de650f4afd295dc11025f9a72a5e46422d88c01972e22bf024fe61e0dfb824df1bf44d1f77db0118127ae48e2a145d82bcb537cc4be81e7bbe0e1d3e19b56537e7bee8931d4fc38a03d1c387079b64590d1f775566cf0a16ca2bbad3409c29ca616d8f91040a3ef52bd0b7fb2dea0b65f0841a03fcf8d25a6d7a0904a74ca61835e3e0734e4addddd167cbe9d3ccc89a0965191fd70065b0fc48f450ebd036f9c15039393ebd191a982fff506847cb3de8eed4cb8074da6076302b1e7623cbf5bb1ac4d6af09fad853100eb1aeb302717031608283897f3edb7e5b7f5768a363eb2bfe951b6a9c470d9abfad6ebabd17dadc0ec021684726a3f7daceb4acfed42084e70c8e721034f481300", + "04000000821ccb50796e05b15fde182e6e3170ad072e8c43cd976e191b214cc0b1bd9957f972fed3d6ea50bc8dc07827d9314a989ff91fdf51efc2506c098a000b9675c3e2ce3df4527cec45858a7a5313b87d0ee29b8e001768bc64da9b0416a06ec0210a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000003000000000000000000000000000006000080f8694a1277777777000000001c1d1c0000000000025ffd47baa3f5a5b90eeff3e0779f2d3563860fd5b9d7666cc06abf31b105a8140643a0cc5b44e881a3eead60361c59cc283f1fad00138eb02268408b29029232df48832e00e32157fd299f16bfd4482cc933ab2ff4cb953b162c8998e03a4d05bb13c472eb737e2e3cff834999cb5438003c74df6993c0579033e56a1fade81706ac0a77b99cb933f66906bfd2a2402c8739f844ee72d34ba50a1e1e9486a73e4c7a063267570a483bac82673d954ab903345b291266f89526184c5633a54bfaebc05f6cea64c403025806e65d8e89cbb0ca967dbefb653063a35597715c488891d19d68a5b7f0b74ca44b7552aea2308e325c71f7199ed497deb6c755c6727993f4d218e3128bbef26bd03941a19b344e8e629d81f15559abb7f6881ef7c688146640b02a0e5a9a78e8c587006eccd05bb1d5ee2ab8d1c743391970a0cfe2da89d18fbb51bf3d6b9fb9aa1818619406b89b53200b86d8b3094e46a01a67d63ff2b113b266cd38203f05bd01cce4e4f39a0072baf5f582315a98575332523e967e353cc3ef8d1df1d26dd79e5375cf9bd93f804e4d709004967bc70b3ae79bd7a9cb67cd273bf3df4e1218ec3f67dd9254b589fc73d5ce565e106eb6c6621a5c2438fe784eb5d95efff8e3b008a63bb1c329c5bba077bc756f875acc5d0eb0d02d67f2aa04738c8c625b56c82cab932b05ae2e50092322887318df508180080e1c7b80cf66894cac8de85931e7fedef575e2f7146ecc4658ae936a722548c527593bfdc59acb58ab6c4f360bc0ef75e3bd171c1c730a51749bc95bc2ab4eb7cc3792e107c31239e3711f35b3094c207d73cb0ceea7643d175cf97ae6d8d221f48fd048236449a28b497b36ed3c817c161d4ea89b7bae5170dfc9c33b3b08f0a38e964eabde9f4020eac2a7b480b9dbc7111d67b45997fb94f4244cb8bfefd0d6326a9da5203ad489ebb4e66f382a5bf82e9011e8d3a44cd8b6eaa60662d20be380bb5f474e5f8d70585cef0c5e490254ae896caa9bdc42b85c4fc0cdaace29679ade3adb96628241c509aa1adf1bdd633850f4df4b24765fc4dda5feddcaa6de3a55d58978cd71c9fdc5bfc77b33506ff8b198dbb4ba4cf3d6d4da3db5b76cfdb26379050cec5d43ecc5edb79d046e56ce8582078f6dae1f9802665db37c5285ab13076b7910c0d230f090375c46e44b0f142d540e32b8020f271de3f8ffcd2a9c8cbc1a7f5db56852ec2e9078731d724824ef0db06e8eebd7f111b7326a751086cde390eb42268a8dd44b7b9b1362a594858308abe397b2abc43a57612f98d027afbe7a5d3035c418bc32f556c8564c0901f9aa322de146697139f8801fe1f4836a800dd0eb2033d3b1c79b4f1b630b85a57a009c887eb4faaa0ae71aa5a1b9ce1dedecd5a9aeee985941c39fd28e2412193dbcd3a941c7d20e6ae310ed6082184c17dd2fca5fb27a1985843a6d92bfbea1c0ca8f7aa583e0336cb786cf38b893deef8f5d9a7ad8b096013090ce9224270c5ca0ed72961b44a2749eb99c23089258895392fc65c6181e59bdf0284a08b6bbcac67a394d3b73185f1c454ac279da8c360bd816131add0e86431a2f4bd018bf1e558bb79761851f9b6b1c198ece4e6ea28d4650ca1f5fbf1401306709d11c65829df6ff7b6a4b8bb55921ec2a3bd146728b717f31681c355cdcbd551e6f310a85ec235ba6014dd384c0118d9aec510c0ff524cc07a525b4e80cd1d2d51649cc6889b2240672cf91d9270ce131b10e839c5ba8dd5ae0bdfc943f9052aaf4e838cd0ad9074d845312f17f33a1333c5e580f48dd93b4c013ce245e807acc8e9bc89429027b3e782bd1054c1ed0b81c6f5b54184e7c0c3289dda890f9d5c21cbf13660d4a5634777d00944d6e9a91a560a7422b354fa46282871b9f29bf0dc7cba8547b19c53c16c5e9cf9986701d8d15ac5893d6f5827bb02e0eae3f589f4fcf153515406a1804d2cf8f62d765eb65e09d16c6dd3acca553ff0083ca089e62fa06898a1859d224d8f823f01ff17a2a53d2e27ba6eb1ace30b7f9a97049c581b912645ca1337d449fef95b61cee2b825716f8db4defd52709f08214e1be87c2a1fdce6c3225c10e72b0e8137dd99e2080a033af6eeb1ab4734cd25b822c7b6ab2060774df62fce9bdc9d238b679514b336dda53a630aaa419af1b4df7489bf0fa054c82bbcdded5f01eba9137164a023f495ddaaa883bc42edcc05c2361488731d9352278c9f9075197db5e29a1c87add4cadfe063c6a072f6e1fa9f8b1ddb2a5e46c7b3120627845eb9891cd09b299270c63f0147376065b406b531dbb2283bfbbd7f793de7f627685263d89308ac3896d62920ac548a7f97681b9c0b48671dbe6b6cdff66b3c80dd90b7f5aea8f2616a57f0c47f2375f070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c4e5f35dd019ce932c8d81f52f6ac4b4c7ad62d1513e1c5c445d10faaf17053387812744aea4097a7d1707dd944080558fe3569fccc6920fcc5edee87764c76b69c14f4fd2f140a5aa80078ac3bafab06214182cd9e26ab213ef6a424b4752d8b8b2b693f46bdd24a46bea270af5a4ff7fa74189ebcb1163d359d3dbfa7042509689bc397969857751feed4314241810eeccfd63998768b5a811277d852abb5a1e88196c0e6f98596ff2ecb67af89c3dd6568a4fc2e495559d85d9a043c117615fdc8135207ea0cac2c99648e6047226055013ba411abbe71fed3f3fb678bf99ac4d44d51224662036ac1be7e71d203934498d1f0489bd4e9f8463ce20e381a31cab6da793065a53353682f60fa162048ec3c278685200128c45ed315900a3111b2a3f36810bf78e75a36765a59b3e618177b61f6a90944e0e5973a573c9f048f17f1acb7a5e29889ceaa14f78ffcdbf9b83a3a8ee5233dde72047074853d78a6b7f5de7b73d0b861dfdedb8f2719ac647a67161803b611e5b80338be8f0012bbcbf1f5f05558b742a7d4271865a4e3c1fe55489ced6624aa329fedced737980ebcccee2210078dc20db162ee0da6d8f12d6293b9079bcd29416068e738f129991e084f498a98b41c4c7a8430ab26e0e06ed6115ff86611a29893b50c4190322ab26aa6a3ea878671fadb3b77b694dfb541dfd52d8e199569c800b003931def1aa79159208545edab077606d0f61947a571b6e7c0551002d739157c6f5fc1fd81a2e7172e9f480f0499f9162ff55146ea147508098c2ae0c723d8f113a9fc8db656a25264b4d4f1ff86acaa7498f351934e3fd113c2f8e45488360a40b0cd1e8be9ef9c323cad2df8c077fdb1ca88159d3339818c557e4ce14e8efa0a60f9ec0e474f05cf1478643238fe22a7ea8c74c555d37bb9555e9e733e07cbd25a3446847a3ed44d0390261cae0a92841eb6c49b20dba2869f3cdd0f33754e813f8b270d8d7c8c7a605541067e929ee330f34ee19f5de779bd0d74c4f82d97e0d794afac96f3184bf7456e8a6a1ae576889b198fe9d619425b3378e2b8cc97caae0497a3730f2adc1642f039a99b7df9d68e080e9ae10dfb93da507276b50644d8a963a0f381f5f2970725ce544f384ef4797e5cf686a0e242621501b3b5b58caeb4ce31d8dc19de210ac4744180a3698c1ccd5b68ba48edd1d242764e287d1b22262ca260c8e5d4c031a798684aaa48b739b19ea140db60fcc23cd4849deb5c3b3137331f2504ac002856a0e2a18bc613f2de3b0b615335755d9a7de9cf27d1ab273b93c87e0c03af4414f1586512fba9bba193ae17f636dbc8f2957bf28f31b2f7f53d3e4dd6f1ce49137a89a55549f23445de2650e4f1c00b22c6396c08a49e803505406be93b90080bc7e1317a4040810726d775090a6b8ff2ced7e1d150b21d3990d64cd3f943db519722fb8b4bc68656188e109fa6670235ff5f2261e4819b0a3ba1d15be9a6b39a07f579923924d4fecf753ff918356801b662ed3071753bc110adf8ace113d4bd09634b88a48095caa9ba92b2dc5bf8a59a2b7964861493ab25fc0e588f29bf7dc2b08fc95b27d8673685d313551aa6869ddf013253c6ccca39ca9bd71e3f31c77efb8b7a8a5d05afee6d24c027e0ceab5b3159632de281253ec3bbdffea8a9e761b4f1ee56047dbacbbf7d3c88240d18e4d2f625e24d2fd4922f81cd50895c276a738557723711934ea1705ef98a29d87527af74fabf3bee87f2813ded83917d8ebc2890f9dd3fe5d988aca61f771aba9df9455e22fff03e8565feafdb0619706f36b9dca969747e4061be9248ac3a23add9452f9830849e3e72c8a1b13873ed3759589e03f800f9209df6ff23edfedf91fb8eb35db90a1e31305ba079f6cfd6751c036a050c091081a7cd92f6a0b9099e3deba523218be28c11da50788de3f60ee17d78cb8d9f210365f94a9b938f37a5f4aa1c1637c596a04ac232242d6725b6b49b12208d10a47d8264c2346b598935fe0f43eb56e0361eea0a8a631562defff77b502e1cf0359bd42f1bf330664217a637476406e402ab0bcdada496cc5527f74b911a96d7b4b927a80fd918255830fcda63832500e53c4b5cdb90bc83099b65f18f4b84561aa54c7d2d969aa3464eaa220c59669baf9d7e08216d3b33c39f5573c41411f1a0a10c43eab6cb39be9baae5f828ce41e50352863a60c4575a4863482939f2d3e2db6414b0cf533468ca0f547d02030ec80c58632311a48ffe647a6ff5bf0defddee45927b9c888a8307ea592a3037261215036fd0b441aa141c7356d91031919b2f8e2f92af9134b9e42df419bd91cb582984da871da855643b4ff5bb4c5cd16a773c99688817fdd76b7faa1b0b1341de20e35209ab6a1016197fe373807f9e406214c7b9c0ae7aa8e4412c7330f88d053056363d0cb4ffe3c34b05727144ba6e418ff0c5236ff9a4bb716986c86694990d1887982d0d8c1caa1c471c793cea11b5fda1d346da4caa12e74f36a0fd8af52d743b9aabb1262ca1295342cef187f3fb13c1e565f7bb85863f86f93dddeb2613dc2aa2db4259e9c086ae837c4e8655a7e37a6e3801c6811718bf76704804fe276aaefa402ffbb5394227225f69e1adcc7556936bac642048dd86b35effc30b0723034ad8fac787a99022903d8b074cf8fdadb8ed3b8cbf75006acebf1d110534f3f533ae921c0b78ce67452adc26124ae25dd9bfaba7d4914b379360a812813d3f5743f889a442d4b6d437b1558b97e15a5db16296f36cf499417a484b4eed0ad96a626149a4d847df37d7a88f7e1773f89a26ff26e90b930fc2a8494cd6170479e0457a55b481b045dddf6e7362c99ab049d097d3251431e61242c819b4d22f70db675f50a7dea683a71b66f7f91c6ecb99c019d207a6edb7ca4f9ffeab7e29aaa723bb87f14efb2fdce5eca874cbe2e6f8a1801d1f7faad249cd9bbe72913f121b8ac6fe1446a0b182d661b0d8594f52e971955322c9c6595840aee5178518853df56c9676206ebaba2aa04f8a20960e2b5cc3be71681e85d686ee75cb2a39cb9b6eb6b0933f34a49487839995931a1c0c4f804c1f9dbc45c9996811926a0e8f9cddda2e7d6c946d70ccb58717660a1c8bbc7bdf868849de9198995148b210c81081f7515983e9e7cb807dad9da48aab614439811826d84a1f97515f915109383260e314f80fbf1f5606509db8f2103ea1788570dd8d452a8b2dd13fbf1538fa9cf2e9c9fa3d12362fa93d496d1d770c71516c794fa7a442c2fb0395afc70d900847ca74b989a9e400d3fd4c5ca81c2211c856126b72a296513fb401aeed0892efad767e23594b6c4da91e8e45779c76c6c94cd9a02d0adf3b9ded9bed2520064891d9fa14d4e26a311910148f057bfa59684b73813264a2a901d4f953040e2a277a15089841f12882b2e069f913787a37f7f9671be7747f7abce6a97e16183d03c5ca8f71f38824c0b2e197b57f5aab474201cfe23f90ca1e7a4f11e3733b1dcefd8652a7cf727c5ee648caaca370a20ef0e658334520c38d3c78870a9b3824ae09f4d0452dc5adfe57192007c4ee608e8594e7bcb5a8983004f2f0271b1a129b5c0f9a9a5435c9116c86bc33b1a2cca7b104cccd8e96a31618aa869f011056e5b876f257bf9557381e4e812ff830ed34ae2bfaab746c49e65b0811dab906967440a6850c570aa0a80f3bfe70996d14a1a9a3b356562a2bed99c40acaf107eae6809d0adfd64bbeb5045ba87073ed5714a13839906f11a0263fa078420606787ee1d0c1fd90dd8cd8f2f1c796604d54826d472df55ab8d72d20fafad1ae39c3dbf0d54c1b38d84e8ad9dccf402c27448364a7c30c169367386b9795f27e0b0b56b00facc89636a1b1391ca960f8e0fac566eadfe44aabdb359c9efa8d3d331b2b6105d5403730d9d180a6c65658565a1723d858425a078e6cd8d9a73c3e1fff7f57c2e12ba17ffa065efdefb1b78bd8f9221aaa227eb21bc4dec5d0d01011711bce5dfb699f2810f2fa15d955c9b71934b28e2bc0b1e37b075515690f870ca8324ffbb1ccce79a1fc706e78bbb465bc37034cd5d5dc6c390f1b41cbfb94256b64253f2f43657968313cb6908d8061db87209cf3da1050bb8a757dc765243e42590255037bfbec6701406049e81a5326d5f423a0f189ff94c32a333221882636fd5b98cdc9c14731eb93e9e3564b3b93ea155faf3eabafa21126a0d52c8c3b514080698bee3bba11f5ae26b5d20fc7f0ab3319bc5d6b5ff6d63a781cf1d02c570ad8d007a7c27e495437a2f6fa86f38e9343363ff315ebd95e23d57414a50dd97bb934b3ac9bc5b5cb6742c2f50d746590cdbec2cc2c025a1b6abcac53171c04ee700a6ea6096d462801d172680cdd919b21c80d7b0730642cdd53f10b420799c09b8e03e5a0ce59f1870fd90a5ea31dba28da6d43b278b39f0edd2d9fc82929e2f41d737dd9ad010c1bc06ecac08030713bbf9abd30e7f7bea89bf50f8020530dea34e2127c58e35d9268c1e7267cb00bfa9ebdbd929d5eb0f686d8927f28cd8e2d6487a99523fb8704f426d68d27fd8e843b880d5e1830d94c66537c36263e231c78baee3d32836658aa0cfa222377bed6912e61c6bf920e28421062dd1df2ca1fd3524ad599ed2ebf7ea512b7326e2b86a2724c74977cbcde823d5f1128c8061a4e6edd0e180ff55de5b77f37cf6c7b50f1be0b4d1d8b6ea176e14ef03593024fa9a801677a3ce854d53fb7dd0041f47c5c466a1ca103238ff5648bf52fccc159b34e16196d3e91ab6a92571211f3154ab9b44e25d546c0539e2c59b428d36e5c2cd272ed254500c49a6d09984e221fac248325ad848c01ade7319a3520c83cad8fade9995048fc2e377b91a0522200c1d3d38e54ce2315dba3d792c12d6759f17eef0edb7d502572f6e3f1bbddf2002e2807afe73cbcc481572ed55f11b920e0d25bfa52f10c00c175605eaeac91308d0512e298a055e05de156f0d633c3a0c73525e62d7e5c61edb032139f9aa7d55902a0fda39066fd662b782f4405041e3f54f29781b264c4194d1464335fea1e618ba2a6e5ba4b62c8a5f0d694254379ef615bbe3a66d75cc329f68aeeed52693d63a0f66f794d700f72d2edc303a6e57ae7f4c0987da01d7de8c60c263ffc64c01a92dc1f4d066e525ef07c602af211d442c45e23c1f78b9060a95f3f102b3557dd3fdf5e673b02a23f81d91639a936a656c0c877ea8ba7d235c78a91b09ee51db1e5e9919cac5febcbd39cb70c95ac9efb1c547e9a7f88399e5362dac5136b3fb3581cefb79994c01f07ce2434d891d7831fefbef2bc7983e7dbd9dcd83d8de60d0c68536e8fd5ea14f5d33b27fd3e2ba87cce7f94d9421210fc1989758efcfd4bb6ab8dac93be06477bf57c02840a3a6c7252a91bd612007b1e0568b0829ab2d41347594017d337f06db94c11c35ded31fa365b0874cbee6000b9ab06eecddaca8d0c8fc064e4ec96efdd9e2b6cc3992bc48220f8f1f6ef697063d0c46a617246641a73c6c3ab3d26bfaf8706dfd89adbee69abdd9f198419b0ea1e8510de1b92c616ee2eb2725334bbfee90c13fb8742087c0c70cde18a8576166601332aa002a347e65452e2a2237cee6705cec7a1e2425fa6044339b63bf5a047ba52a49ed6bd1e88e4d6ffce458480df30afaf3ac08037e0dbe7a6cc95c7842909db75c6d8e1731eefbe358d7773c71b1aeeb77c102780d48018f417edc1429ee3f3d18cdba62e6b0b4488684967e79520b4a1ba5a8df08f892253e1fed1915cdd201e87d75c6d1d2554a99a341e487a1654eda35019c7c38c86f5c75020f7f9619a61150d213b99b756924f5f9895e71f49d172a31028270f39dcc1ddf929992a516e4c270ac591674e6ba2c13dd06e0b506041e8942778deca31ddc84f4262ff4ad4d81e531cf16d4d041f3911441c12c77ed92459409ab65ed1949920a684e729d0904593d7a42ffbceed454a9cd23eb7e1742bbf6effde398f122a8443e86c272fdb97ef9455f33ec1161b73013800c40bda9d301d96758c6de69d103c430ee0192f74956b3d73cdf3cff36850d0192633385b19d546bc8f0b1f9e3524757f2d4245646a218b78e6a9f4e289b7882910167b2cca4ac0b90203e5ccf084ca174b16b6c0570f6d9c4e5f08815017f92a4aedd6d5cc3f40a4b9384a77405efb4b87a15caf74bc5d04197ca425592c0900484b814b3d1926954716e1df3b7017a22951344fdf52496f797562f397be1a3ef6bab299a518e7ccda7e5fdd166a6c3e94debb1930febcdc609b93dea783be0d009656909f18ed83eeac7cfdb0a5954dc8b9d604db26c6904d8ce0abbef49d005d2b718f92cb54a7adad0d106a0400ba35808525068312f938a58963d7266f1829495bce11d4c0c05073ff5a72bb508eee9fcf3bcaeba833bd03edd36a49272a1bd479d2408c272e3badb2ff2e6e036aae1ed1667b8bfd538889f705c624b93f37293759a9bc6b57833ea34b0973dfa3171bd9c81715bdcdd39a1a5a16645532b276af5eb53fa910f837f367301e75c8eaaf25dc6842212f5a43b71a6f76c92d600408f82c64dadddd2e72075a070e7e62baabb69fd006132d441c4f184c5d0f869993de13d03ae69b61956f37f191f05b24d242c23bcee76e5ae1726a296b1b15bae2365e9379db640dfeda8d9c7d12a653252a104891a78fd4aa3971af9731c00ee4e0c2f2a4e4fc6e50d67ab75024acfde2fcba159829904f9b27982f2e251f941d897bcec7ce91edf7156cb1754e27813c59d3bfae136b5fdc4ec32e7f17f5d4c4d078f68e91ead670d0cbb30054f2e90fcdf204ac0b99c8c435d932c10ba9267de7a61d791731e0d39b6927f8d8c4b395e03f239d84b717021375480b2c36e3b110777eda7b9e67fbeadb56cbd75ae21d5bbe2f95bd5a2d21ec1a5a403c619e55e46f332c9f98368823f03e4bbf12041f138dcdf2423400dd940062381e75ed02772618afbcf1bcdd949e34afa5bdd0c25b0addc12c1bff4e7faf0a1608d0a36b250d7997bb5711e1b6c74fbf391bff697982fa2b388f1c1934483517257f23bc65aa0e32b5631cb27606e552c49d8376d70c7dbd53570b8d92ea893d3c7b1bc8f62c174ac33faf08269b8d173605aa9a18d81fdbec0e392a6b0910443c504165eee0571388028e1512b8384f60cfcdaf2ea17b7e9c1be172676062a02de0409faeb6f0594e0fb6e696d6605dcf8a5be6115589e2322d7c838bb06f7908aab838bd06e720a051d07233bc7bda3bf1dd16820777d5f57d15d8ce486c9c0081681824871c37c137be3355e8587d12417caa506e3c14caf7a1e9f2d94d6c15e4fc132b2a62f4fef4d12d118ba9d39313a212980dd0f4d7a177cee3ed87f02812f6c2546004e10249c06aaa49a01657c7c7d2ef5c155310e2b69bf2e2b5ac3beea29add230e49ab31149447760e2c54745a77fc33127beb384adea5efd15e17aec6db9af767f1c1d5d7b2cb07c3b193acf0ab44c5804ae5c3e382538cbafa1ddfc31f1448eaea7b0a7504e9fc5256e4dfff39ee61145fe246856fc4fa93d22154068a45c9c12234f6e4aa3748b0a5418e4992a22eb18bb8033793715318370834424065bd4cab694acffa6f0448a61844d4328eb406b72b3c9b2b610b5eb50007bdfc74c7feade19a2459ac4b21856868aa06a2d175589dc86345b311df552ab8a56a724630d565e4ba55a1abb0946a0a8d6e2bc453d4dcebf1159c82b98816c8584ef251cacd77c3ffa104ffbaa96a90d876145fa73fc5fff5f5570a6d8d1580e1c4cce5b5f8e8a5d2b1d20b41b4009c79ebfd4a8e1636f6f93f12593f0532d565ccdf90ed011e0ab0fcb3db28f10535ef5e93f59851db610641feb3bba4190f3074e4257bdfed4f05a52c98c380a471bb3b952488283be1f14fcad4a3d219765b4b2b3421d5ef845f6c7b9ad6af6b66a75ef0c03ab4f2c5150c078068943d1e89d298524d9e9cc5b20c3bd03d89d7a6d3cf30b02e17516e0001b071b92a35d245e0c596071fb8dc53e53159eead8cf86441e0348a0a951d4a2ce30274b423bf3cef4e5969077107e166199d2c5714e25e2e0bbd8db356fcdcfb3d3b8b04066c193c83903ab0f0eb18d2faa428f3104af484d07a96e43ec593a5a9bc6d9c2176535fd5727a3acb3ab4b2e9e9a570f06455bf2b68cbe461743af5466bf7f8050f5c7710b8cd086922c098d4c9c26e53708c5523c0739705505aac79ef65781f226761215eec4cb44f8317b2fffdb15dec242532c0cc8db35c117a35278c54034cdb69bb5df20b8cc8f1eff23bb6e8b929a130e44e0b0812e937fc89b3de0a13afe080628083e386b703ff58a07fb599b66605d12342bcd8fbe69ef239f3ec30bb2fba014ab66bd3344d60786edcd434fd3a19f46353cc0c7901e051405544028bb9dbb1ba427c4b6e6b5a3ec8a593f0832d6a61692d72bc6faf044ee5664b1a7b5a3d38fd1a1b436b833287a162ae7851085a1f63bae8f2fe18b09c603ff33bf0b5ddd6cee3a4b4275348c9835ef59b44f2db1f828f77d0b7d8df70487c91205dd731d9d516d9cb6fd88080f45312c10edc4cb8729c7e71fc9fa87808bf3a3099918984a60eccb1ce433aef537927236f3e0f59fc922b0ff7d0b39fa53f7c19b5048f8fd2e9a3cbdb8e6d7d156b697bd7242355bce57cb3d94d16a5f9adc607288f3ec2641d42eb3303e0344ffe4e4cad5d58be766687da989e8448a5cc7c1ca4ddb0e6cb4f4d22104b1d32f6dc3632fa7012ed5e9d5a2111dcfb62c7666e1bedb86bd966f9caadc2ba81da0488c78352f7d3ad94f35fb75a12272754630a20e42a38a52c4934c5d3bea8631f590e31ac72b485478b7d8ba786e2bbdcff8d22a0082034283aad9f28adf92604124062230891d81f71872c135d234bcb76e82dcfaa6969b84c9171805683b4a419f41a830bd88a76618ae387e3a69254ee920a1375d8362b4e038a2e2b4a98b1c181ae9e5f24b19b07c5d46bd50d0e1e37502646eceabe404904f3813c243675a8322f853d45614c7d56fb8667badf80b87b10ca9d2363e37281fbebfaa303a7366de81d92fdb81edae1f057fd933523dd0a0b88f33140db7acf9131d23420c2b976156d2bfd785e9c8c7c7a520abf8b58d204ef04b5f5f9424c5f305ec6d97f582627a9f7b1d124dbbe6bbd4a36340292b70be4278a0bf1833f90bec6598d3a85fd10c37d2c7fccb02e440deaf2f191492c242d84f09ec1e0a034843a5fffa7c63cca1be0c6c378ce3ca56bde144d25b52412b27185ea5d4a3f4764ee54f0bc70c489f6d81e8a9c7208638f9a3a0bac5ff8b857a74cf8363d05ee1d8f3a166cd50701e0fe692879ce79a3d691424066b749abc3e738d5647bb844731b409cde36b48e420348197710106d7cc0d216cdc677b81c4300b93de75630c4b3e117cf10b678e538db372b2304f314a19d41b5534d9213d408155635a716fe42fa7a03ad90cf8866c124e99a66405883e8bb6f9a502937e18db7c266d8cdd119d12c7121c580f83c2be68d9a65744d77e15c337fe898e1b2fadd3b48b4e03d08d4cbb2bd50f567c1913084eeb5dd249c81b71a1d3a20e2c0d6a8fb7f2099c60904310e9416d9b34407ab6d32fe2bba4cfcf688c5c92b34fa937b7c5345fc8724085c893a5ee567bf6e3b2c1adae130a72f2a3a16d8920cd7e6b93ddd1352a13b1505cc0cf4b00a3ae34a00cb2f85591672068027403537fd0721374d5936ac968952ce66bdf64318c927bb6c184a880fa15e384a3112b78c3969161d05b00c431ff94c55f794c150ff7bcb35265782fbc6ef4903632144809ddbbe3d801f67d840f06a15f966775826cc19fd1f431d9b2dc8b552ba3b28eb47a6b96a038432ce40c84eec8854e48d1172af6aa5719778915b64cbf2bdfd1df50cc32b2736181d4664ed8bfae97f49c20e30bf9c4ea8e67b53fe74afb41c63b12c30eae8c890a5ca1bebc6ea3d553f500b755430896246cf8f4577b3975759e150ec920229f0909348a612900466b5d66e5e2d331d6d9aafabb50bdab70c93cb2d3f6647ff3e399e06946844e96897d74d22795ed647aef1526ccf5dace92d9f5578c19b0d4747d50ab9442ccbd04807a28a35e0df84cd1d4e9c8dc025717871bf8a9f9495ea8d6f6d1687cb1b3c2a6ccb25924ea8c6ad9dc62bd510325df9f6c52c391218b8fb35468e6a855878f17f6d83f866cffa34a2d1f3c21e17cf28514bc1b80740721f43424681e4b421367c296b90a75a116d59c3bc06aa93cf2d809158a67ce2ae3ce452706f919af9669e0f7ed795a3c0316b4ad876d292063107e29e7374826e95233a7e66a89cc7fb4a6d96487f2f2fb1d68df0c0092201b68d49a7d03461d3fd5927b89fe693bbdd3cd201155aef2f533edd651b1802f530b807760dfe1b4385c3ed4000f6a8118b0a3df4c412e79944e444fe063d340f4871ba816c772ce322db4e55348b6e5046b1e6cdb665ef7731e4dc58c93a21102ead248952e94d44bd8357a49f2641bb636285ea307eebf48939441ee1e31a03adf3198df993b59a995d271e9b851fdeac457d6355f9c207292515c0ac2b3801c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce9458607000000000000009ff3604b2c9238c3575aaba36bf28511d83a0aaf443d53981899c20be308112327ed070500b374e359a90435a60363235ca445da700abc2c3b962e89ddae24040006000080f8694a1277777777000000001c1d1c00000000000234ba607b674dd1faf18173ab52cb86ada65b24659b7ab0db262a4d46ef6307813610d535a38b024b19e566c3d73cb49c5dc6a73457c658fa61aa19c9a669d70823c009c26d2c4c5949f83ffb187b8d03a7e05970d87668b9ebb172e5b44c4f300bffbdba179aceb954a3d6da0cc8e9f59587e9a4ab1e9578466bc9eb508b791bc0497d33ffab8b845eed45ec6d6d9072da6064b0afe5eca2b8e3caa4801e04990e2ce95ee1594a1f922a2ad1e0550fa5268c2e1486785a68ad25200e0d1a1fff176fbd7f928197be17c9ea0d4b2f1987cb4c5d4e62ddd8001803e1672d2509ce5607d0ada2ebfd792a4eada56d50babab5b04f4999d97a78f2fc35e1ff001aef6c11bca252ab1f6959508604fd29f29642562b862c9d326655c735e7e9ff0e5b539d819b0ff9b7594947225abffd69d94748a59b5e4798eb4f0d9f41848da1acc1c42ba1af1a4e69227887f00de8aad96af6043998f72164b95e9157ef40f3253d38dd577c636fb694a49fbbeb14a153d3615454c5ed2913c49454efa45880b7e81c288c34793ab18eb68dddb3b5eb8c6f9ef4889d0fb8d3a2dd58164e5edb536fc705b63b194f2dcf384c026004d3aff29e11cdd17ac5c71c26d30ef20b5c157fa9c1c4b33d9bb95cc5882bd36d990fb12700baf432d820f66283742ef447d962088dddc54a21b162d0ed191f12d4b335b4227aef5583bd2a7639a275dd3c6397d11baf62a2983eb982d0d4e5bc64f8bdfb72a5b7f99c81c4af1395d153c9535ae61358ea5fd933e1ca35dfb4344a3a096236e9c777626575f9773f1ed0e64c7e67616b36b48d9f481453f8815d4e48601961cce17d7e5cb37be71839a205a208fd7d35652247b32d384453f30376c2b0dde5d64285c86ea396bf919978de33d5959c7a2bf9fb5e15da56ba2b11b805789d994dd44b5b39952d90bb9cbe0209c63123cec7ff2f2da1c1ebc0930b0e3a03b90dd6e58bf83187e7b71a9a5264fbbfeb90c57647c5d6de4752ccdf657a95007a21a6d8e4910ae99c90e98bef3ba13ae57614499747369bae218a8fcbdf074b48a5f374f74e769d02af067b82283116764abbd30fdc9923a3995d144bf1033ab26d3197ab184748b4992bfb51b0ea22cf3bb574236f2209a2e1391f153b706d5b7640e8a23778332fbdcb1e35cdee0bdfa55c35b02b793b6f2fb01893363d01388391479aee427cc977bef4cdd250e78a7f0f39e711aeb13be5f9a895792dae2657ac2789d2f0a5b0b7a9093fdafe072883f6842e377b05a046488db93fc23002a40a7315e284aa164b2e144cd5ffc6afc8584eb5d52b21b48a924e257b72a180792eb6f8f0a5220c0db0fdf5f5d0a0aecdde7f194e88369ee5d2efda82edf85e8d20b69680c677a4ed53eb33475b9beca2c560386cceb4ddfbd30292b111c37530ae6ee207b87fe5b67b5a90943e2a3c43c66eb8f9b1b006fe008f9da8791e71915349b9a9652d9c508adab7668438eafbfb46288de70ea1f96a32d36ea48e0dfc3fbafa1ea69d28f2b3b1e291a02823229ab70510e1fc102e5df0f6160c7af5ce67e8a6dbdf5e486d285f2b4ebcfcf2c10426ec94e0886edbcc0727b0703ee6ba3a1f7d4a5ceab9386123e531cab919407eba95c72314e0237e4208e22981b912ed9c2b4cac88a8592fb62d648846bf411b886a6b89b83ad03210cf072b00019dc6d0e541b6bb9a22ac9b3603ac0ede0b27cf0998333446344fa2cb44350f9dbc5d557cbdb74d335c6bb398ecd2eef9686763c1f21a34970e810a8eff7b37947fd455ada6010eb00ed5f1f92395ff7d1fa77b05beac74c53db704530f54a5947187366dedae6d48386d68c303b5eeac6e4848607890ad4c4ec6fe25251b4727e8cd22d8fc8972840fc8d5887ce647ad628b298e15f9cdd49b917887e0f8e8ebe0312fd04f3871c68f402f8dcfee60e81283a66f1725ce579861c999ede9f9e2d976a83253ea608b66ccd6ac83359bae0d060adb0f5573ca385446cf54f14fa3231830ba0243fd574aa8ab787ef0150be0cb9c38970043d6fe200fbb6d03158f33f5e3a811887ca482b83122242d228451449593c8dfb33190298e873d49c01b8d0b9ce8851e60e65308325bf3a934054fcc53e791fb117dec249e9836d466ec94188df94077762d8c12e8cfcbac6a9af9741395ee566c26f9e5ef21d7e08a0453fd22ed3228f9118bf2606e87e0e0d1e495075f348b16701162640d2b805fd4d2d3890cd6bfd5afb790ee9163e30d55f8015ee86b07d063dd0398366e4cea8379c951160896d3374b1c39093954117d7e3840715e3018b917c6ddf9c47869bb01a71793b2d414c252cf62e9d781e29137f59978d39b8ff60d45540bdd2dfc73dd0bacb811267b486783e9e9a0d0d5a2a161e082adaa070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c02f3f899fc0cfbb1beb2f0a6b1364b43fbfd5e372a1b64b90685c1b0750cf93993917608f18aca5ec561fec653860b83841a345f03b0e9ad5360c2616b8b511f973cb8eaa583b1e65825fb0cde26316a897f759b9c79d96d4bcaec217948791d524ca3ba26457a5b6f5278171729abc58fcfc844a5e2e9ff048bb334bd46692d97beb0e892e144acb380a1a2810048d5b4226ce2b4f9bd020ae4b26ef3d03419236d3862dde808d4fbc7187da8d7a63c5154c369f26a905f355469a0db4e562de2ead4d75b8693256748db27c5d041f6bd93bc97c7cf7a6f2c2966c29817bc398cf4a61ff5c81b66a7c725dc820e24ccbb2402b16e8a5a9e0d676193924ecb3a48bed2157a84205b689c5f673b45f5cf8589d2e048366b6e3ef58a6cfab7781e90d5f0f2922fa407d0882daf4644908abfbc5da2bc90c09be46ecd7667947d00094c2024142dc31a072b758c2b4c5306e458256fda993ea15295f970f480cd333f986e7f633ba84f8981266e9db3b78a3fa87052a648fa99c4dcb5d1420da4bac5c6ffe822276ffdd6de43f39987e9ffb1562c8e136ec163623c1ef0b957bfb67cd4af92e6433d2b3c757be0b74d7053fee3d1833bea1b076b4e2e878b68be8b661b0c54f6cf9e3bec410ee0a65c0371b4cee0f3cf196d88ac4ef5ca02a42e352785e77307367dbdeb20cc0aaf0be2f72ddb4b12cb9d1e7ed530eeef35a44daf8d80446626e90ff4d6705317ddea944a45e094901680b89133957343b5209a0146722d0d494c9fa805231b072740b15fdb7a1e0dba39015437cb2e61f0cca0179c0128c874cdcb3e4c377925a097d46a2ea86ebcb2aaac4e69b8d93f3f813fa110857017ec1126b0f48e1b61ef1ee9f2d3288a1ba037b28294d381855a9db1a44f6aa83f17773222761fad2add32acb500f060e76600b50779934496796f4c86114c123c55b42ce44d600055e9e249fe7d5f1a80f54d49e5b0dfd71518a7669538471b5e759dfb425c51d742df88cd4237000e0989d5e554f698d0112bd61a33a307b36b22a76aa8e2938e884191321c09c1d90a5678e903a5b76446698e5031233ad87218bf81d1f49cac719c2b27afcc4a191daca45a1c9f51425cf48008a1a569e2adae4627c233bbd024ef0f7c3973ba5bbf9fa0704e111223cce823d50b5d91fc0d805e0bc51daf91f0375b6feb67ed3a729933f275fdde5f8c1885cb9275fbfe2796b9cb4dc5d3eedd1044ffe62bb5a4f20c0969ecce5a0233c5a7740f9f18ba0a6c9a38ffe4b0e5377e6e84e659ece4b09a516f1f5e158f633a18b527ae8cb2813b6fc27f5108a7230bb2ccd25f9934b0899ce9c8cb3d5afa146791b52509aa6f78f02904882b0730d1a8630eb2c3e408aed611ab9cdede995bd2ab2940dcb74cbad21b1a8c27bcdd2b3758c61e5c0d271dda23139fdfa17fe97f19358fd6e4e6efcf71996b359eaea79979375a010436dc45f4ab138d7426f806450b624c14febce156041a32539494b096a3210d114d203df26b1cc826fa2946f53b2521ddeffc30550bb2d26dbd6900c912852b1741e76aa7f77b6c4aaafd16760429d5ce5d3cecaa3e1ff1d3399dd2e4bb0123d668b63b61bed7b097daf5a4710e82dcae3e2db6fd652bcfa527938559d83ae86982f26cffd2be75bb6f842883ac73819dc831dac60616f3c85011bc5139d67254cee29b964ab71fce45fba367356f2122a61544345df6d07f423d13bb32c328125323ff62ec30d67cfafde6eb20c8bf832b8a51e3de2726ba66fb6a0224da5f79286ab7861dac4d7fcc85c62f85fe476216c55ee4e5ebb7ecd3f642c547ec45844ec95586eac20c1834a5abb0ab3901c50deeee97ebd64d9980c53e0b8ff88e2273331b1484adc54fd459eaed17ade204477a17b54cfac56fd8d05f3ff4edc2e473295817cc00ab5c34806f1e370a9f97dc474e0d4e6955f915cd6d2069df587eb0650c72b4d2454142230623070f6d21be2bdd0173bb0a959990d9d250e47a2148b42030900e9e7014806e22ae690eafac7a2b3fbf45d6b51dfecbbd21993a12e057c82425533990c8b5c238a6d329c4c41387bd693ec77f1d6d200f17a86063111051f7090c2bfa3ed2a58ea8d22015a2cff83e127edc0383eac49c3b6caf9b5e0ab4abe911658ab63925d60842f70fe83f9ce4258bb79b6311bff08b231078eb8eff59e9dbc955af596ea7acd15fa8b8e1ba88e110ac383eeecca4340797afebeca8fa7c5839a3a306d4bb8004cdcd0372d83cf4e2214394cc2a09252971cd530af7802ac06d57fa0784500c40581efce6bcc497fae84e8bbdfaac727bac1cc0d49c0fadd64639c6c839f6b3e4735074e5f2cd2b5fe6fc9cc34152d723f1e1ef3fede91d41cf39a8207ad69044d14925961ca8b535362da356e419de13adc49ddf8708b82e6ba3b5609ae6110f28333601eed005b94b0d31699c8a687ae732b7d7bb263081cdabb462241911bba94585d0e20c9b41f4d8d5565e70bf351ea95382544864f4a960b8850fd5095213c2bb602338ab2a3f9b1fd97e8d42f68f2f943441ded01beb76f463997f1709e92c9e6df0341cc64ce46bee5ae1ccf0037b77ea00edf62f5f545d16bd063bd9097ef8eaa34d9dd1cb7b2d7f080fe56d14e4eb521da00c7c1d19c13e934601f963f80fe122c184cbc0047fd38cc0a7b4389debb41f44c7cccb596c41936e2fc672796877e1f0d013df6aa65a8d39c60e49eaaaf4bbcab70fa97a0b864aad214ba57bf5ba65abe585e52fec23b33a8fec951699fa4ef19e4af9e7c237248e1f4a71e6166133b2f1b6949d70f072170002b3d38dfaccb3843e641e85bedcde02e289d94ab76f935ced360b5b4abcd503d274923c222d757f8436e97156e067037c7c984ebb22b836bde9b5aefd12b6f079dbab91f69bd904facc456154ca3a1730b6fc7095af42e8e20d0b94ee3c797049971d28d583d5d1d7b539e8794a7710c2de9d2a9db9e6842f7a6a410b9df0f16fdf6bb58c35ca3a7d44b965f04e5e0391f7ab9789ca3f88973b59f50cf46f0d472e4cf49cd81c1b05d8640d625d601155db952b3544d54e5742be75a4bc9cf0d1084bc141b76cbb06290971fa526001e135397dfaadbb5865bb00fc424700901c4e50c7aa4db925b9b7fb0d8631b311fb820bceed1f83a6c166f78819a059017c7e7bc0b134aafbcb063ed15ff67f165441f7015d9a3514ad604c82e400703302c8e2e2bfbf738ef380e6f690392712d64c59fca62f638f2dd8edbb842a7ceafc4926febecfe42d5327af88fa21a9320d1f590803f35b2ecae7e605f0aaf99504537de024e600435f4963aae484cc3f6620243c307ad03f87bbb60696bf1b66409b143dd80362b48e74627ba790e700b4a6d10a4961fd6e4d954af5e585e44a02dc9137a9f2c5b2f09c5edd52924a0f62e0db46f2eb9c15ce3e9940f16a4c7c4be030c02182b2aef10f01de089f380e8afe59f6ace4c9f34738d041cfa61e19a64156a675832d16f4ee54526e0b7c39a8f48dbba330e8ef36b5564d263060c90009a367bfc4a9d1fa7e7903d0de3b2a68de720b8bf070f456306084485cb3858e98004be70aea72b6d0200def4f340ec415fdd2bcaf28eb60a1c2854fe016de38232c721b6d3f3325a101b77ded810b660a83f31c46a5f13a5a08aa6df7da23d0eba9fcbb45ff299761741ca950e12f2f1881946ed0c16f62139d03b430d1dedc3e7f7c68f2bd50993adeeeaad42315b36e0e592b42f1caa568156ea7aaba4072425cc227be504ae30f50335793483ae94a208efe33d61a1bd8cf95db05914e3b732a6c2ea57180dd5421a85a94ca2a97c80a41c04484c5552bd6489ca235c28d773a4d5122d93fbbcfcf8707b88f3d2604da1a47cee05bb3a9fce7528905b5a279a51b44a72a7bfcc9d1769db1813e161dee4387ebefb87805c1bc133b7cf56d549d165356bd3c24b4fd4cbb7a920cca8bd5e43b14557d48c1131a5ec93b3dd64a8d0791d9e50f4f501a5c858f2110418e110a74f7469c1b2ecb54c929d4c08927ff36c4106d696b6758823b235b2a0704d52ad4da79b09c140c266153e7e54ffe69776b2fb97ae8d605c37142c40bd45690f4207e4d3905cc0e69f548c9ec024a2ddddff639d148577de8be4a322d756efa88eaa2e92f2edf13a664924d341a8f95760db3d00329c8f882c24ced3ae07c89e35d51b7e11b0d1e53270bb0523ddde6e95ef8a0c05d2d2b6ba7c6ec169202e6102335e193e302b8c460ed998878abfb1db24e1797d1e7605e13598923a088f38ee8d824d556ebca3d36311acdc402555cc962cdd10936bb4e1ece2e39a6078516e98169fc31fabca7a0edacc689d6a5b4fe2475c0c73ce3d8510bb903260e1e381fc5fa6ea920c8bd2a8ec145eb778f9891d840ba5a3f08b0f6dd3f07e753899c30fe2b565e821fefe44cadf2117d358a2447b0d8ce48f742325b7d358a96536be71ba650ebc36783be0ecd540fb04bdd6a4cc39073df2b9a5ed9b23a4e2cd9ffdbc2967e690188dfc052f21bc49e9c81be87d12b4ea1a770e108d50de901bbb0d046c50a4228254aa095f0cef9d608b0ef50208b0eed938cc7d136207105030c72580f3d5c707b62090a29415e32af9066217272ea6cd498b5c1a81d06314c21406328037ddfa23222cc84c3afbf8cd1c3762faf04352bc37910971404fd446bc4beaa71b98135724118a1dc65ffb937d5310fe1f40c307095f0d3314199773a33bd6e2c89405f48bf12d6651d789e66f1820cdabb6107bdb309b937d8e0f513fef644f96b702e509903ce203c95a10ec4c9f4a71e75c9495038b423de361a86cea19cc2cb4f1f1874e672b2b2e97ee9462090f0639864e95331262a4a560c9948f3c74db29b1d979b7648a7a18536d7f6d8d2fd422f7070756835185866ac588a4daa8094185982d0879768320c5a05a95f1a761a9042efb4e291395bcfe4924fd4df12b131c3520fa984499532946adcfe20cd2fa56d8d44296926284e91509bf8ae72338c28b93974700af04d3ca38f55824ad9f52bd0e6b05f2c7bd8d324b4bfd657855c8cd458baea1bac09386c4444cff7594a870650c1e524230b2a26d865605eee5a016efeedc957effda3d1c145ad66982ad9188bb80c2d1546650750c7e79416c80d7ac102b47bc7798048489afde2f8461a9162997824253047f3d0b0148160aca7c533bdb6710281b42e64ab5eb5194a78d4244e601b67451ddf954d429fa006f25e09ef2a78388c6dca6228f17e3fe61510038f162626435783cba9d6809fb7b50fc1bcfb6231466454b5925c32d04c02e5bac1903df02e8b2ef25e64fb78d7daba63afe4bce774148ae824c62d778d88b6d6c7723cd5d56278b36058f492e4dcd6cb898414f521d9a21cde732aceb5a62adb996f1e18d950a982f9fee6c02750b13965ee93d80751116df1a5884ee24d05f0a74a3faee0198fa1f42bc5241dcdc623ab172dacf6108535f92e0279b9ceb96395073a5b009395aaf3ce8df09add65b351f341d2600351d24d3474f7d123fa7e51f017b0a0b90c4cdcc5db57927d8e87319914fb60ca897c7642e0e323376070cd6f05fec5e74c88c3175010761c7f1ac3c00e263611050c29a932af6cc7908eea6d1e2cefe518c6092cbf7fe7a6c5b0b821aadf6f4c504a1de79e723b5c17bd68d634d7b18b4b9955b37d765c464dcaaab31b9613567d37640e3b7ba9c2abc9b8ad3fbe2ee8b62b4ec7223792f76658bccff7069454442873c81104f5859de761160347deb9e1390544369afd02640ad5f6868e92c2d576a13808199a53fcff7863344ece1634086ca08e72b8d8dad0c11744ca5889437dc482375b6371f12853a22b37ee12ac0bf851194eca88f4e711d6c010135c46cac6c4b6d4d22ded888f4306369c5e7b716720ddcfd1550760b2674eae607713c5696f43d84af2d853505636f0aa30d128cd5ea230bff5a9322b0f38fc998eb902fa2e66a5cdf573b67faf264bd8aee6a7baaa4607ca070939347511a3e7fcc1c2aed75942bf4b02a7a3680f21e60ba2c3fb198e823ef8742241a5193df74d2fd25e4d28080588ed992440022cac1c026a3bf2c1de232751ee2c56381cc320b8511846093b8c82c3b69bee0a5703ebce82d93c99555970e5f192bf4c1438ef3d583f40e8b4042138963b862055a0a8b1df6cad65b82d57850dc251e50508dcf9d58c60b4d6d5f706b10bbb25717263300d3b432ccb759ddbd52e5dc847469dbe7db86ed6d35997f93f8cc939ea38e0eefecedb429e6ed8b028a6ba59954ad0b1345816bb14ef04d6d922770d40b19adfd065256ac351479ec65435951bb014a5fdee04be55231894b9390a28c7823bcb54409faa06f1c3da22ec89f0f9421fa9a33bc840a1362863b549360829e94a149010328b366b45d94e44b03182eb30c63fc967159c1df1386350c53d8f249a1d5cf7529434d61cf0085c59fd02171e5af8f1c82f63d8fbabf8f07622899eb8d01eca1fc6e242d202799005db7e6d26f734d6963a81ab2cf54936440914330b0a7a64f4c785c0958d72e82720124629c630ebe6c2fa7efa9e2272c234db67c5049db7b62f7e1eb3bbbdbfb842fa3df06ac020f84fac21207504412516cf601b65700c971606725d4fc31c4ef15a6635efde36696e339f2cfd775184233eba170149c0d215428706551ada80a5e9509949d22eeb0ff390d1d172b7033c153fadbd3f158b87cb300dea6364874ae86b93e5863f46d3fa2a0c507b4c382a46e0f953854689ce9b7f2a30945ac9ab4848297b833b4fedd6f839ef106a7028f1469d0950628256fec62aa432d6c0a85c3c4f5a6b792c12992a84ce000e6c1aeb6bd6c354960d9a741e0ef483a723762006e291f5950075e35b4223c471cd23733b1dddf91eeca80a4535db48fea257297e0b02eeeeb3da56c2b7acc338240f0e1eff611efae168d566dcb55b9a9d569539031fc4100eb6ca194a369c1330395dfc82e506d8669ae0b80d185a1f037fea20a2cc16da225b6e3ebe2dea684a032dd222dc5df9679f927887e0323e2be5c6b5db8b45640bc9fa099432d28c833a00b04697cd0817b118b78aa4a1ed51dcfe3fc69560b06c859284c8581b6ba223af7d55a3c623400aa0a30fbf3756e3d167100f5739ec9f7fcab49e5164b08b3628f9de44f0e7fd887a88b54305cd1c57a7b9b4ae5547dc617b4aa616b02fd638f4d030b7d9394929abe4264653c79bab88d1210197fe186b41c32c4ffe2827174edabc9cb926173a4afcfdc16e9386d2c2867d9d07d014161ba69169d51d61056d0e3d4c6f7e2fd93d244df132e72f560569889d635cd192f7c6c75fa777570aa806c5c9ec31b9432ad8070eb1474e9d685eb85116aef47ec47eb621c33a38301ae2348233d3b49ac13e64c70d4c4d594927cf3508f8ca6c040e71c95963820d7a70f22fe3120ad893234799be5de84d096b5b8961cdf8b09a52eefb994f433ee5b57ed74f1eda8d6894d2d19fd1faec1d6f34aa175e4b3a8298159f8a6e4130c3d2100d2c9ba994be1e20367f5d587d34ad6c2b00078ae1fc589c77ef3c3d2f0819eeccff1e7b686308122d9d8504b39be1bc01425d29147ad7e24db8c1c132b955ab073d37fc1a83a12d4155f747ffb33779b2f58e4c862d97bfee479631188a1c888ae437b39bf9f197fda0ce1708be825c4eb5bcf8c419b7f44d1be60c224b70e8536ba3f0eb79d6255438988b420f80a81c2f986a8abc2a7c60bf54f0027e1c190c4a8711fbc8551441c6640130372c515be3f22cb10fb9b53223096821a135a309f40922d5cbc2acd57e0d7cbec9d47837ae1465312424a77c6be3451090277f17d6225a0d634455659903b1bc51e79c1330a70d6139e9d7fac08e5928f23d2c10c6268ebbfda4cc45948a33a263f672a523125d188f64c9c01b2ef801686f5fd26321808e96e07433968d05a44864eddc2d190155cd3266c23778dd1cf843a779f77919c8e7a5560dfebc817d703f3eeaa802c613992e5ee2ba6ae90600125b1aa07f04902c524d3cf57e1461d9895461117ec413fb3537752d755737738bebbe1135afa71db91e93f33771d16ab3134f0d6d588dfe23ec6661698421c010d43df3dd7e9c422f8b1e34ad0953e9fe8d7ce81f4b0a62334f5229c6b11fbf5889642660619a2c1f0e98fc561836f62f61861712455a193e54e7c4fe6f1052296ee852b33ded957545dea80dc5f0c97cbda1d7a6a74ae0f482a59e8cb33bb42522b6652eae4ffa1184a2de0e215a662edc4731a0e6042a69f93fa68cc9088fca3e3d8473d5aaabc62ee5956144fd68eacf289eabfe35e6112e919837b82d7084db1a4cfd8e1a86c4ea3b90b890aac23156b50e21f293d0091cb71822592ff9c0493c1dbfd67640a5da51820cbdf5b86bdfcf47065c715bdf265190284a0b73ae525c70e05f0b35f67f8d8652f31cb650c02195c931546a32dc64207c2e0bc73fc8158e7188e8dcb8e258236356ebe5e35361b0bd759fc8652773690a2908ccc0ebd47a889f3ab783f4f3cf12738b7b2323680c69eb1f28688820c02c601f93ccb28717da6b6e5ac20fbaf7fb283784370fd30fed3aa8e0b485027dda030449a6abeb922c705c903a2f349dfb075b9ce0c18e90df690fad3177e02ee6ef19ce602f6cf463ca06a38203017ebfd02519b5b607a11718243b01084656792f3bec57956232f1c5f6ea03fe34bed97e55a8ab67741617263ab232293b19fac40daa9688655da4d37882b0b21980dd5201b4fcef42e0c038e8033a024c787ec218988b08396e9a621ac4374b10bd13d521b52f0afccb3efa4681e8f6ca1fd2152142c89c09aa954cf4c5e4073fdc99cb6cd151458b59552f0ac5f61888679ffc3711d4b806e756a77f31c993ec9239927414ec4fe996e7fc498cecacc56b30440add6f71b02bc34f3705681e7e19cd3722febf38b6ecc25398bb9b527c77fce532371b2463d4fd5a8d0f1dbf97b95eb59acf0281d7805f99e519aa4efb65699a2b2ed89cc8af53bc305bc1a4f750a953086fab18a36eace7e0311de9a6d400042c17846ede3f280a7ab4dda32bbf364fad1722b5bbdc0bab21aba5e4f43b243b2165258d04633957684ae38ab2b101914a21dc1bdc31423f7748d0e36ba5d3201552a2aa76507dc1d4b4d92c4f16329c00c167765ee4f340a281f1f3d73478bd1a0d31ad5bc40969f7ae3cfed770c1b9eea1d75b8b655bfb6932610eec0d5ab113b12dd78802355c2cc8e71427ddbed5ce2cf37d454fe788c09772ce1668b9d120d1cf5f9b0503b193b2378df3b292666df3df011ec6b94271a61fae493f6f92a7308f733d9a12fd7b5596db6a6285d44ea2a0ad64d329ceeff2296a403a730c2a18881d32ebfd93d502d54021471ab8f9473af265b6e42c1fb98c1767a92d5613e29d270a27af9fa8a71f666fe1766d071813b2156e912182a7aa914439c96ab469a576c17510f1617b4536f69c2ded22c1d50d7482cb7fbcde67af59ea734f3742a0e375c7e0210ae4ecff0f818f71b270d49137e46a6ab38afffc1e24cbbd1719870d3e86dc6ff5d1bd5411bb64dd569d593e4c248415f7d59339ff83a749b6a05dd86280bab71b975247de7eb838de56281ca26849ecb8e86cf7bf9a0cae3d93acb75b4af9a46f93c830ccb8c922facef21700878b23cd313fedda6ab91908b77f5142bd60e02deb87c4a2e80b25fc7c51982d1a700fc827a45cf4114305bbb485f8a04e9a4c576365222319432630051ceea8dbcbd0513366fe622b7c15b9c5b9c7697fa7ee201eae4aad0423bb61b96652b3f1e19a5670bad143d6d8b90a9472a2f0177fae07a68dce0172384663be8e4099ec3c154e81a0a2a42363569f8f4030ab4bba6ecede9447835cd97adce8f030e3abf7fe531c9b63a81a5285bf7b45c1f3599a59c5a6ecb70cd6a747b61245e673243b55bf0bf824bc01b754810a19812c082b2252e891d98896999590ce20c9cf78be0e86967f099849b7613ac45084d0c4b7490389500f296efcc38e69fccacd8a9cb3df706bc09c399886164afd22de21676d0fdb93fee1efaf2d363e2ee83295c2bfcdfd4bcce1f0197c9052a92b3ad4032d871562d7c46a0d7deb229244414be672c0dd9a0de1cdd818b8b498ecbf1c786d53e82bb1dfa187d22b4bae3179d56ca4fdd6f8f2d4c81df80726dfcf243829c33d23b77b8d039b0d169c5613ecde639a30eec12dbd364bdca747e8bbf610033c8a02b1f2763aa9a63806d07364d24228d7ba621133ec01c79059f65c54748703fc60eecc810382fbd160a8df4dcd47aa57f640f5ffd74a1f94f9a56156f7c0c6e34fdd6e43a5a0ac46b71474140fb8f16c10aab75678875f19fa82dad79a6cd284c78488aee66c5279d16acb21b8db2df30327783b64335934d7db219dc6846d9199329fa8f8e8a949863b39c03bbf8d83850920f4e87f41bc8f14c5fe3541444af632f5df9866dcae93493fae87809f16ee551bac8c4ddd0bce15ff7be0e573cd46fbac5fc7f4b764f46fd3bb09ab24bbbd9c38ee0f648386d892a90165e2acc2e5057c7aef96648ae013178932d6eab4b60d94555a7f380201c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945860300000000000000af3ce8279bc3e39954527b6314ce47076c97b16c3577c2e7ef014a9f62bb1e248ebb21fb1ca0aea57f0a3df15877c9de9751b1767d705d511fb67eec61dfd42f00" ].map(|hex| >::from_hex(hex).expect("Block bytes are in valid hex representation")); } From d102b13c384c7bf68c2f203260976a78405384ae Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 14:27:36 +0100 Subject: [PATCH 137/230] Revert "Minor fix to align with orchard changes" This reverts commit 225dac1a303adc30ddd43446cd3d96767d6aa2ca. --- zebra-chain/src/orchard/orchard_flavor_ext.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index 7721d303b3b..0ade1c75d39 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -7,7 +7,7 @@ use serde::{de::DeserializeOwned, Serialize}; #[cfg(any(test, feature = "proptest-impl"))] use proptest_derive::Arbitrary; -use orchard::{domain::OrchardDomainCommon, orchard_flavor}; +use orchard::{note_encryption::OrchardDomainCommon, orchard_flavor}; use crate::{ orchard::ValueCommitment, From 0b24a2b4d901977dc2b93ae99cc3ebc310c19eb1 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 14 Feb 2025 14:46:29 +0100 Subject: [PATCH 138/230] Revert "Minor fix to align with orchard changes" This reverts commit 225dac1a303adc30ddd43446cd3d96767d6aa2ca. --- zebra-chain/src/orchard/orchard_flavor_ext.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index ea8931130a1..f8ce25d0ed5 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -7,7 +7,7 @@ use serde::{de::DeserializeOwned, Serialize}; #[cfg(any(test, feature = "proptest-impl"))] use proptest_derive::Arbitrary; -use orchard::{domain::OrchardDomainCommon, orchard_flavor}; +use orchard::{note_encryption::OrchardDomainCommon, orchard_flavor}; use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize}; From 7691e795df61bdbb8f4fc79bceb400e01f285304 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 17 Feb 2025 09:39:33 +0100 Subject: [PATCH 139/230] Remove RUSTFLAGS and RUSTDOCFLAGS from CI config as they override .cargo/config.toml settings --- .github/workflows/ci-basic.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index ed66ba1e586..d8ca56bd4cc 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -16,9 +16,6 @@ jobs: ROCKSDB_LIB_DIR: /usr/lib # Use system-installed Snappy library for compression in RocksDB SNAPPY_LIB_DIR: /usr/lib/x86_64-linux-gnu - # Enable the `nu6` feature in `zcash_protocol` - RUSTFLAGS: '--cfg zcash_unstable="nu6"' - RUSTDOCFLAGS: '--cfg zcash_unstable="nu6"' steps: - uses: actions/checkout@v4 From 7d8956dbf23ed73b4d6c85dba842448a261fad20 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 17 Feb 2025 12:35:16 +0100 Subject: [PATCH 140/230] Secure .cargo config in ci-basic.yml CI to apply custom rustflags --- .github/workflows/ci-basic.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index d8ca56bd4cc..a5e339f176b 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -22,6 +22,9 @@ jobs: - name: Install dependencies on Ubuntu #run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential librocksdb-dev run: sudo apt-get update && sudo apt-get install -y protobuf-compiler librocksdb-dev + # Remove group/world write permissions so Cargo loads the config (insecure files are ignored) + - name: Secure .cargo config + run: chmod -R go-w .cargo - name: Run tests run: cargo test --verbose - name: Verify working directory is clean From 7dfd07ed8e494d0d82a50b93aeef922f71041b15 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 17 Feb 2025 13:16:56 +0100 Subject: [PATCH 141/230] Revert "Secure .cargo config in ci-basic.yml CI to apply custom rustflags" This reverts commit 7d8956dbf23ed73b4d6c85dba842448a261fad20. --- .github/workflows/ci-basic.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index a5e339f176b..d8ca56bd4cc 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -22,9 +22,6 @@ jobs: - name: Install dependencies on Ubuntu #run: sudo apt-get update && sudo apt-get install -y protobuf-compiler build-essential librocksdb-dev run: sudo apt-get update && sudo apt-get install -y protobuf-compiler librocksdb-dev - # Remove group/world write permissions so Cargo loads the config (insecure files are ignored) - - name: Secure .cargo config - run: chmod -R go-w .cargo - name: Run tests run: cargo test --verbose - name: Verify working directory is clean From 72092f5560fe9c3b1ac8a0444e8167f62a6c64d8 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 17 Feb 2025 13:20:58 +0100 Subject: [PATCH 142/230] Add --cfg zcash_unstable flag to rustdocflags of .cargo/config.toml --- .cargo/config.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.cargo/config.toml b/.cargo/config.toml index ab7095e21bd..c2a4131abc9 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -85,6 +85,9 @@ rustflags = [ [build] rustdocflags = [ + # FIXME: Consider removing this line later (it's needed for the ZSA version of librustzcash crates) + "--cfg", "zcash_unstable=\"nu6\"", + # The -A and -W settings must be the same as the `RUSTDOCFLAGS` in: # https://github.com/ZcashFoundation/zebra/blob/main/.github/workflows/docs-deploy-firebase.yml#L68 From de8dab52033f0585b09b6a02bc17955f86871467 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 17 Feb 2025 13:20:58 +0100 Subject: [PATCH 143/230] Add --cfg zcash_unstable flag to rustdocflags of .cargo/config.toml --- .cargo/config.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.cargo/config.toml b/.cargo/config.toml index ab7095e21bd..c2a4131abc9 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -85,6 +85,9 @@ rustflags = [ [build] rustdocflags = [ + # FIXME: Consider removing this line later (it's needed for the ZSA version of librustzcash crates) + "--cfg", "zcash_unstable=\"nu6\"", + # The -A and -W settings must be the same as the `RUSTDOCFLAGS` in: # https://github.com/ZcashFoundation/zebra/blob/main/.github/workflows/docs-deploy-firebase.yml#L68 From 944df50c5d4ddd1c7116cbc348dcef3ca62e2bdd Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 17 Feb 2025 09:39:33 +0100 Subject: [PATCH 144/230] Remove RUSTFLAGS and RUSTDOCFLAGS from CI config as they override .cargo/config.toml settings --- .github/workflows/ci-basic.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci-basic.yml b/.github/workflows/ci-basic.yml index c2cde8686bf..1759ff184c6 100644 --- a/.github/workflows/ci-basic.yml +++ b/.github/workflows/ci-basic.yml @@ -16,9 +16,6 @@ jobs: ROCKSDB_LIB_DIR: /usr/lib # Use system-installed Snappy library for compression in RocksDB SNAPPY_LIB_DIR: /usr/lib/x86_64-linux-gnu - # Enable the `nu6` feature in `zcash_protocol` - RUSTFLAGS: '--cfg zcash_unstable="nu6"' - RUSTDOCFLAGS: '--cfg zcash_unstable="nu6"' steps: - uses: actions/checkout@v4 From ddadae90e2a54107cd9eac165acc63d4f3bdc7a1 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 18 Feb 2025 13:13:50 +0100 Subject: [PATCH 145/230] Change unfixed FIXMEs to TODOs --- .cargo/config.toml | 4 ++-- rust-toolchain.toml | 2 +- zebra-chain/src/parameters/network_upgrade.rs | 2 +- zebra-consensus/src/primitives/halo2/tests.rs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index c2a4131abc9..83f31157547 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -3,7 +3,7 @@ # Flags that apply to all Zebra crates and configurations [target.'cfg(all())'] rustflags = [ - # FIXME: Consider removing this line later (it's needed for the ZSA version of librustzcash crates) + # TODO: Consider removing this line later (it's needed for the ZSA version of librustzcash crates) "--cfg", "zcash_unstable=\"nu6\"", # Zebra standard lints for Rust 1.65+ @@ -85,7 +85,7 @@ rustflags = [ [build] rustdocflags = [ - # FIXME: Consider removing this line later (it's needed for the ZSA version of librustzcash crates) + # TODO: Consider removing this line later (it's needed for the ZSA version of librustzcash crates) "--cfg", "zcash_unstable=\"nu6\"", # The -A and -W settings must be the same as the `RUSTDOCFLAGS` in: diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 8b6ca9a2b78..f4478060854 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ -# FIXME: This file does not exist in the original Zebra repo - consider removing it before the final merge. +# TODO: This file does not exist in the original Zebra repo - consider removing it before the final merge. [toolchain] channel = "1.82.0" components = [ "clippy", "rustfmt" ] diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 49a76d0a449..dea69eb3773 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -531,7 +531,7 @@ impl From for NetworkUpgrade { zcash_protocol::consensus::NetworkUpgrade::Canopy => Self::Canopy, zcash_protocol::consensus::NetworkUpgrade::Nu5 => Self::Nu5, zcash_protocol::consensus::NetworkUpgrade::Nu6 => Self::Nu6, - // FIXME: TODO: Use a proper value below. + // TODO: Use a proper value below. #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] zcash_protocol::consensus::NetworkUpgrade::Nu7 => Self::Nu6, } diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index d5768709681..e5afdacfc58 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -25,7 +25,7 @@ use zebra_chain::{ use crate::primitives::halo2::*; -// FIXME: add support for OrchardZSA (see OrchardVanilla and AssetBase::native() usage below) +// TODO: Add support for OrchardZSA (see OrchardVanilla and AssetBase::native() usage below) #[allow(dead_code, clippy::print_stdout)] fn generate_test_vectors() { let proving_key = ProvingKey::build::(); From 4dceb869901b50562b13b01c634670face301b7d Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 13 Feb 2025 15:54:58 +0100 Subject: [PATCH 146/230] Update zebra-chain to sync with the updated librustzcash (zcash_primitives) interface (OrchardBundle enum etc.) --- .../src/primitives/zcash_note_encryption.rs | 44 ++++++++++++++----- .../src/primitives/zcash_primitives.rs | 18 +------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/zebra-chain/src/primitives/zcash_note_encryption.rs b/zebra-chain/src/primitives/zcash_note_encryption.rs index cbc19afc5d2..1b6673d5e11 100644 --- a/zebra-chain/src/primitives/zcash_note_encryption.rs +++ b/zebra-chain/src/primitives/zcash_note_encryption.rs @@ -8,6 +8,33 @@ use crate::{ transaction::Transaction, }; +use orchard::{ + bundle::{Authorization, Bundle}, + domain::OrchardDomainCommon, +}; + +use zcash_primitives::transaction::OrchardBundle; + +fn orchard_bundle_decrypts_successfully( + bundle: &Bundle, +) -> bool { + for act in bundle.actions() { + if zcash_note_encryption::try_output_recovery_with_ovk( + &orchard::domain::OrchardDomain::for_action(act), + &orchard::keys::OutgoingViewingKey::from([0u8; 32]), + act, + act.cv_net(), + &act.encrypted_note().out_ciphertext, + ) + .is_none() + { + return false; + } + } + + true +} + /// Returns true if all Sapling or Orchard outputs, if any, decrypt successfully with /// an all-zeroes outgoing viewing key. /// @@ -49,18 +76,11 @@ pub fn decrypts_successfully(transaction: &Transaction, network: &Network, heigh } if let Some(bundle) = alt_tx.orchard_bundle() { - for act in bundle.actions() { - if zcash_note_encryption::try_output_recovery_with_ovk( - &orchard::note_encryption::OrchardDomain::for_action(act), - &orchard::keys::OutgoingViewingKey::from([0u8; 32]), - act, - act.cv_net(), - &act.encrypted_note().out_ciphertext, - ) - .is_none() - { - return false; - } + if !match bundle { + OrchardBundle::OrchardVanilla(bundle) => orchard_bundle_decrypts_successfully(bundle), + OrchardBundle::OrchardZSA(bundle) => orchard_bundle_decrypts_successfully(bundle), + } { + return false; } } diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 0d10f8546af..f123f3d1d07 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -158,14 +158,7 @@ impl<'a> zp_tx::Authorization for PrecomputedAuth<'a> { type SaplingAuth = sapling_crypto::bundle::Authorized; type OrchardAuth = orchard::bundle::Authorized; - // FIXME: is this correct? - // FIXME: remove this cfg - //#[cfg(zcash_unstable = "nu6")] - type OrchardZsaAuth = orchard::bundle::Authorized; - - // FIXME: is this correct? - // FIXME: remove this cfg - //#[cfg(zcash_unstable = "nu6")] + #[cfg(zcash_unstable = "nu6" /* TODO nu7 */ )] type IssueAuth = orchard::issuance::Signed; } @@ -296,14 +289,7 @@ impl<'a> PrecomputedTxData<'a> { }; let tx_data: zp_tx::TransactionData = alt_tx .into_data() - // FIXME: do we need to pass another arg values or orchard_zsa and issue instead of IdentityMap? - .map_authorization( - f_transparent, - IdentityMap, - IdentityMap, - IdentityMap, - IdentityMap, - ); + .map_authorization(f_transparent, IdentityMap, IdentityMap, IdentityMap); PrecomputedTxData { tx_data, From 529fa6a1c8281fd518cb89df9e4c708dae2d8fdb Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 22 Feb 2025 23:41:05 +0100 Subject: [PATCH 147/230] Update Cargo.lock to use new librustzcash and orchard --- Cargo.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cad04052478..1b596d3bf85 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "blake2b_simd", "byteorder", @@ -1407,7 +1407,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "blake2b_simd", ] @@ -2878,7 +2878,7 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchard" version = "0.8.0" -source = "git+https://github.com/QED-it/orchard?branch=zsa1#a7c02d22a1e2f4310130ae2e7b9813136071bc75" +source = "git+https://github.com/QED-it/orchard?branch=zsa1#3dbdbc52c6e2ffeca015ae6eb80ad7f1c870384d" dependencies = [ "aes", "bitvec", @@ -5815,7 +5815,7 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" version = "0.3.2" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "bech32", "bs58", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "zcash_client_backend" version = "0.12.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "base64 0.21.7", "bech32", @@ -5866,7 +5866,7 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "byteorder", "nonempty", @@ -5875,7 +5875,7 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "blake2b_simd", "byteorder", @@ -5885,7 +5885,7 @@ dependencies = [ [[package]] name = "zcash_keys" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "bech32", "blake2b_simd", @@ -5922,7 +5922,7 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.15.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "aes", "bip0039", @@ -5983,7 +5983,7 @@ dependencies = [ [[package]] name = "zcash_protocol" version = "0.1.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "document-features", "memuse", @@ -6524,7 +6524,7 @@ dependencies = [ [[package]] name = "zip321" version = "0.0.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#2684455ab69452669132eff8effd1229fb5c8de9" +source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" dependencies = [ "base64 0.21.7", "nom", From ad66e9e8bb5da338fb66504d6fea904f599e7936 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 22 Feb 2025 23:42:08 +0100 Subject: [PATCH 148/230] Use doimain module to import OrchardDomainCommon from the updated orchard crate --- zebra-chain/src/orchard/orchard_flavor_ext.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index 0ade1c75d39..7721d303b3b 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -7,7 +7,7 @@ use serde::{de::DeserializeOwned, Serialize}; #[cfg(any(test, feature = "proptest-impl"))] use proptest_derive::Arbitrary; -use orchard::{note_encryption::OrchardDomainCommon, orchard_flavor}; +use orchard::{domain::OrchardDomainCommon, orchard_flavor}; use crate::{ orchard::ValueCommitment, From 1f391405bdb0c5038c99f772f5e90c195cdf3ef7 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 22 Feb 2025 23:55:34 +0100 Subject: [PATCH 149/230] Update transaction serialization to support action groups for V6 --- zebra-chain/src/transaction/serialize.rs | 188 +++++++++++++++++++++-- 1 file changed, 174 insertions(+), 14 deletions(-) diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index b3ed12ebd7d..0989e82e091 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -11,13 +11,14 @@ use reddsa::{orchard::Binding, orchard::SpendAuth, Signature}; use crate::{ amount, block::MAX_BLOCK_BYTES, - orchard::OrchardFlavorExt, + orchard::{OrchardVanilla, OrchardZSA}, parameters::{OVERWINTER_VERSION_GROUP_ID, SAPLING_VERSION_GROUP_ID, TX_V5_VERSION_GROUP_ID}, primitives::{Halo2Proof, ZkSnarkProof}, serialization::{ zcash_deserialize_external_count, zcash_serialize_empty_list, - zcash_serialize_external_count, AtLeastOne, ReadZcashExt, SerializationError, - TrustedPreallocate, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, + zcash_serialize_external_count, AtLeastOne, CompactSizeMessage, ReadZcashExt, + SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashDeserializeInto, + ZcashSerialize, }, }; @@ -327,7 +328,7 @@ impl ZcashDeserialize for Option> { } } -impl ZcashSerialize for Option> { +impl ZcashSerialize for Option> { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { match self { None => { @@ -348,10 +349,13 @@ impl ZcashSerialize for Option> { } } -impl ZcashSerialize for orchard::ShieldedData { +impl ZcashSerialize for orchard::ShieldedData { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { // Split the AuthorizedAction - let (actions, sigs): (Vec>, Vec>) = self + let (actions, sigs): ( + Vec>, + Vec>, + ) = self .actions .iter() .cloned() @@ -376,7 +380,74 @@ impl ZcashSerialize for orchard::ShieldedData { // Denoted as `vSpendAuthSigsOrchard` in the spec. zcash_serialize_external_count(&sigs, &mut writer)?; - #[cfg(feature = "tx-v6")] + // Denoted as `bindingSigOrchard` in the spec. + self.binding_sig.zcash_serialize(&mut writer)?; + + Ok(()) + } +} + +// FIXME: Try to avoid duplication with OrchardVanilla version +#[cfg(feature = "tx-v6")] +impl ZcashSerialize for Option> { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + match self { + None => { + // Denoted as `nActionsOrchard` in the spec. + zcash_serialize_empty_list(writer)?; + + // We don't need to write anything else here. + // "The fields flagsOrchard, valueBalanceOrchard, anchorOrchard, sizeProofsOrchard, + // proofsOrchard , and bindingSigOrchard are present if and only if nActionsOrchard > 0." + // `§` note of the second table of https://zips.z.cash/protocol/protocol.pdf#txnencoding + } + Some(orchard_shielded_data) => { + orchard_shielded_data.zcash_serialize(&mut writer)?; + } + } + + Ok(()) + } +} + +// FIXME: Try to avoid duplication with OrchardVanilla version +#[cfg(feature = "tx-v6")] +impl ZcashSerialize for orchard::ShieldedData { + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + // Exactly one action group for NU7 + CompactSizeMessage::try_from(1) + .expect("1 should convert to CompactSizeMessage") + .zcash_serialize(&mut writer)?; + + // Split the AuthorizedAction + let (actions, sigs): (Vec>, Vec>) = self + .actions + .iter() + .cloned() + .map(orchard::AuthorizedAction::into_parts) + .unzip(); + + // Denoted as `nActionsOrchard` and `vActionsOrchard` in the spec. + actions.zcash_serialize(&mut writer)?; + + // Denoted as `flagsOrchard` in the spec. + self.flags.zcash_serialize(&mut writer)?; + + // Denoted as `anchorOrchard` in the spec. + self.shared_anchor.zcash_serialize(&mut writer)?; + + // Denoted as `sizeProofsOrchard` and `proofsOrchard` in the spec. + self.proof.zcash_serialize(&mut writer)?; + + // Timelimit must be zero for NU7 + writer.write_u32::(0)?; + + // Denoted as `vSpendAuthSigsOrchard` in the spec. + zcash_serialize_external_count(&sigs, &mut writer)?; + + // Denoted as `valueBalanceOrchard` in the spec. + self.value_balance.zcash_serialize(&mut writer)?; + // Denoted as `vAssetBurn` in the spec (ZIP 230). self.burn.zcash_serialize(&mut writer)?; @@ -389,10 +460,11 @@ impl ZcashSerialize for orchard::ShieldedData { // we can't split ShieldedData out of Option deserialization, // because the counts are read along with the arrays. -impl ZcashDeserialize for Option> { +impl ZcashDeserialize for Option> { fn zcash_deserialize(mut reader: R) -> Result { // Denoted as `nActionsOrchard` and `vActionsOrchard` in the spec. - let actions: Vec> = (&mut reader).zcash_deserialize_into()?; + let actions: Vec> = + (&mut reader).zcash_deserialize_into()?; // "The fields flagsOrchard, valueBalanceOrchard, anchorOrchard, sizeProofsOrchard, // proofsOrchard , and bindingSigOrchard are present if and only if nActionsOrchard > 0." @@ -434,15 +506,103 @@ impl ZcashDeserialize for Option> let sigs: Vec> = zcash_deserialize_external_count(actions.len(), &mut reader)?; + // Denoted as `bindingSigOrchard` in the spec. + let binding_sig: Signature = (&mut reader).zcash_deserialize_into()?; + + // Create the AuthorizedAction from deserialized parts + let authorized_actions: Vec> = actions + .into_iter() + .zip(sigs) + .map(|(action, spend_auth_sig)| { + orchard::AuthorizedAction::from_parts(action, spend_auth_sig) + }) + .collect(); + + let actions: AtLeastOne> = + authorized_actions.try_into()?; + + Ok(Some(orchard::ShieldedData:: { + flags, + value_balance, + burn: Default::default(), + shared_anchor, + proof, + actions, + binding_sig, + })) + } +} + +// FIXME: Try to avoid duplication with OrchardVanilla version +// we can't split ShieldedData out of Option deserialization, +// because the counts are read along with the arrays. +#[cfg(feature = "tx-v6")] +impl ZcashDeserialize for Option> { + fn zcash_deserialize(mut reader: R) -> Result { + // FIXME: add a comment + let num_action_groups: usize = (&mut reader) + .zcash_deserialize_into::()? + .into(); + if num_action_groups == 0 { + return Ok(None); + } else if num_action_groups != 1 { + return Err(SerializationError::Parse( + "A V6 transaction must contain exactly one action group", + )); + } + + // Denoted as `nActionsOrchard` and `vActionsOrchard` in the spec. + let actions: Vec> = (&mut reader).zcash_deserialize_into()?; + + // # Consensus + // + // > Elements of an Action description MUST be canonical encodings of the types given above. + // + // https://zips.z.cash/protocol/protocol.pdf#actiondesc + // + // Some Action elements are validated in this function; they are described below. + + // Denoted as `flagsOrchard` in the spec. + // Consensus: type of each flag is 𝔹, i.e. a bit. This is enforced implicitly + // in [`Flags::zcash_deserialized`]. + let flags: orchard::Flags = (&mut reader).zcash_deserialize_into()?; + + // Denoted as `anchorOrchard` in the spec. + // Consensus: type is `{0 .. 𝑞_ℙ − 1}`. See [`orchard::tree::Root::zcash_deserialize`]. + let shared_anchor: orchard::tree::Root = (&mut reader).zcash_deserialize_into()?; + + // Denoted as `sizeProofsOrchard` and `proofsOrchard` in the spec. + // Consensus: type is `ZKAction.Proof`, i.e. a byte sequence. + // https://zips.z.cash/protocol/protocol.pdf#halo2encoding + let proof: Halo2Proof = (&mut reader).zcash_deserialize_into()?; + + // FIXME: add a comment + let timelimit = reader.read_u32::()?; + if timelimit != 0 { + return Err(SerializationError::Parse( + "Timelimit field must be set to zero", + )); + } + + // Denoted as `vSpendAuthSigsOrchard` in the spec. + // Consensus: this validates the `spendAuthSig` elements, whose type is + // SpendAuthSig^{Orchard}.Signature, i.e. + // B^Y^{[ceiling(ℓ_G/8) + ceiling(bitlength(𝑟_G)/8)]} i.e. 64 bytes + // See [`Signature::zcash_deserialize`]. + let sigs: Vec> = + zcash_deserialize_external_count(actions.len(), &mut reader)?; + + // Denoted as `valueBalanceOrchard` in the spec. + let value_balance: amount::Amount = (&mut reader).zcash_deserialize_into()?; + // TODO: FIXME: add a proper comment - #[cfg(feature = "tx-v6")] let burn = (&mut reader).zcash_deserialize_into()?; // Denoted as `bindingSigOrchard` in the spec. let binding_sig: Signature = (&mut reader).zcash_deserialize_into()?; // Create the AuthorizedAction from deserialized parts - let authorized_actions: Vec> = actions + let authorized_actions: Vec> = actions .into_iter() .zip(sigs) .map(|(action, spend_auth_sig)| { @@ -450,12 +610,12 @@ impl ZcashDeserialize for Option> }) .collect(); - let actions: AtLeastOne> = authorized_actions.try_into()?; + let actions: AtLeastOne> = + authorized_actions.try_into()?; - Ok(Some(orchard::ShieldedData:: { + Ok(Some(orchard::ShieldedData:: { flags, value_balance, - #[cfg(feature = "tx-v6")] burn, shared_anchor, proof, From 20b3f761a4fd14186342a418c20692a571555d14 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 23 Feb 2025 00:02:41 +0100 Subject: [PATCH 150/230] Change Nu7 ConsensusBranchId and TX_V6_VERSION_GROUP_ID values to be the same as in the latest librustzcash --- zebra-chain/src/parameters/network_upgrade.rs | 2 +- zebra-chain/src/parameters/transaction.rs | 2 +- .../methods/tests/snapshots/get_blockchain_info@testnet_10.snap | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 1eade62208c..06a1fbdfd65 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -227,7 +227,7 @@ pub(crate) const CONSENSUS_BRANCH_IDS: &[(NetworkUpgrade, ConsensusBranchId)] = (Nu5, ConsensusBranchId(0xc2d6d0b4)), (Nu6, ConsensusBranchId(0xc8e71055)), // FIXME: use a proper value below - (Nu7, ConsensusBranchId(0x77777777)), + (Nu7, ConsensusBranchId(0x77190ad8)), ]; /// The target block spacing before Blossom. diff --git a/zebra-chain/src/parameters/transaction.rs b/zebra-chain/src/parameters/transaction.rs index bfb3c8ca7c7..ad820e1fea9 100644 --- a/zebra-chain/src/parameters/transaction.rs +++ b/zebra-chain/src/parameters/transaction.rs @@ -18,4 +18,4 @@ pub const TX_V5_VERSION_GROUP_ID: u32 = 0x26A7_270A; /// group ID. // FIXME: use a proper value! #[cfg(feature = "tx-v6")] -pub const TX_V6_VERSION_GROUP_ID: u32 = 0x124A_69F8; +pub const TX_V6_VERSION_GROUP_ID: u32 = 0x7777_7777; diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap index 20776940884..f6c17c6c7fb 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@testnet_10.snap @@ -71,7 +71,7 @@ expression: info "activationheight": 2976000, "status": "pending" }, - "77777777": { + "77190ad8": { "name": "NU7", "activationheight": 2942001, "status": "pending" From 36ca70b0f135e6296eb861e74dac346ef3329dae Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 23 Feb 2025 09:58:12 +0100 Subject: [PATCH 151/230] Fix zebra-consensus tests to use new orchard builder interface --- zebra-consensus/src/primitives/halo2/tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 45c4fb6e7a4..d1fab3bd279 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -63,7 +63,7 @@ fn generate_test_vectors() { } let bundle: Bundle<_, i64, ::Flavor> = - builder.build(rng).unwrap().unwrap().0; + builder.build(rng).unwrap().0; let bundle = bundle .create_proof(&proving_key, rng) From 47ac4e00aab859713ddcd07ca0880def4e2fe4e7 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 24 Feb 2025 08:50:47 +0100 Subject: [PATCH 152/230] Fix typos in comments --- zebra-chain/src/transaction.rs | 8 ++++---- zebra-state/src/service/check/utxo.rs | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index ada329140f1..0e73f51467e 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -142,8 +142,8 @@ pub enum Transaction { /// The orchard data for this transaction, if any. orchard_shielded_data: Option, }, - // FIXME: implement V6 properly (now it's just a coipy of V5) - /// A `version = 6` transaction , which supports Orchard ZSA, Orchard Vanille, Sapling and + // FIXME: implement V6 properly (now it's just a copy of V5) + /// A `version = 6` transaction , which supports Orchard ZSA, Orchard Vanilla, Sapling and /// transparent, but not Sprout. V6 { /// The Network Upgrade for this transaction. @@ -1027,7 +1027,7 @@ impl Transaction { .. } => orchard_shielded_data.as_ref(), - // FIXME: Support V6/OrchardZSA propetly. + // FIXME: Support V6/OrchardZSA properly. Transaction::V6 { orchard_shielded_data, .. @@ -1051,7 +1051,7 @@ impl Transaction { .. } => Some(orchard_shielded_data), - // FIXME: Support V6/OrchardZSA propetly. + // FIXME: Support V6/OrchardZSA properly. Transaction::V6 { orchard_shielded_data: Some(orchard_shielded_data), .. diff --git a/zebra-state/src/service/check/utxo.rs b/zebra-state/src/service/check/utxo.rs index b856a616dd5..c6327787d32 100644 --- a/zebra-state/src/service/check/utxo.rs +++ b/zebra-state/src/service/check/utxo.rs @@ -63,7 +63,7 @@ pub fn transparent_spend( finalized_state, )?; - // FIXME: what about v6? + // FIXME: what about V6? // The state service returns UTXOs from pending blocks, // which can be rejected by later contextual checks. // This is a particular issue for v5 transactions, From 708844ce704ddb36c749213d0abf5ee034ac1948 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 24 Feb 2025 09:10:59 +0100 Subject: [PATCH 153/230] Rename txid_v5_v6 to txid_v5_to_v6, minor fixes in comments --- zebra-chain/src/transaction.rs | 3 +-- zebra-chain/src/transaction/txid.rs | 9 +++------ zebra-state/src/service/check/utxo.rs | 3 +-- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 0e73f51467e..a960947ad40 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -143,8 +143,7 @@ pub enum Transaction { orchard_shielded_data: Option, }, // FIXME: implement V6 properly (now it's just a copy of V5) - /// A `version = 6` transaction , which supports Orchard ZSA, Orchard Vanilla, Sapling and - /// transparent, but not Sprout. + /// A `version = 6` transaction , OrchardZSA, Orchard, Sapling and transparent, but not Sprout. V6 { /// The Network Upgrade for this transaction. /// diff --git a/zebra-chain/src/transaction/txid.rs b/zebra-chain/src/transaction/txid.rs index eb05fd6edb3..e32912162bd 100644 --- a/zebra-chain/src/transaction/txid.rs +++ b/zebra-chain/src/transaction/txid.rs @@ -28,7 +28,7 @@ impl<'a> TxIdBuilder<'a> { | Transaction::V2 { .. } | Transaction::V3 { .. } | Transaction::V4 { .. } => self.txid_v1_to_v4(), - Transaction::V5 { .. } | Transaction::V6 { .. } => self.txid_v5_v6(), + Transaction::V5 { .. } | Transaction::V6 { .. } => self.txid_v5_to_v6(), } } @@ -43,14 +43,11 @@ impl<'a> TxIdBuilder<'a> { Ok(Hash(hash_writer.finish())) } - // FIXME: it looks like the updated zcash_primitives in librustzcash - // auto-detects the transaction version by the first byte, so the same function - // can be used here for both V5 and V6. // FIXME: fix spec refs below for V6 - /// Compute the Transaction ID for a V5/V6 transaction in the given network upgrade. + /// Compute the Transaction ID for transactions V5 to V6. /// In this case it's the hash of a tree of hashes of specific parts of the /// transaction, as specified in ZIP-244 and ZIP-225. - fn txid_v5_v6(self) -> Result { + fn txid_v5_to_v6(self) -> Result { // The v5 txid (from ZIP-244) is computed using librustzcash. Convert the zebra // transaction to a librustzcash transaction. let alt_tx: zcash_primitives::transaction::Transaction = self.trans.try_into()?; diff --git a/zebra-state/src/service/check/utxo.rs b/zebra-state/src/service/check/utxo.rs index c6327787d32..9e2c0618ac0 100644 --- a/zebra-state/src/service/check/utxo.rs +++ b/zebra-state/src/service/check/utxo.rs @@ -63,10 +63,9 @@ pub fn transparent_spend( finalized_state, )?; - // FIXME: what about V6? // The state service returns UTXOs from pending blocks, // which can be rejected by later contextual checks. - // This is a particular issue for v5 transactions, + // This is a particular issue for v5 and v6 transactions, // because their authorizing data is only bound to the block data // during contextual validation (#2336). // From 4fd7f88a9b8162e3135e51b0bf70597d9ee71684 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 24 Feb 2025 09:24:43 +0100 Subject: [PATCH 154/230] Rename transaction_to_fake_v5 function to transaction_to_fake_min_v5 and panic if V6 passed into it --- zebra-chain/src/transaction/arbitrary.rs | 22 ++++---------------- zebra-chain/src/transaction/tests/vectors.rs | 4 ++-- zebra-consensus/src/block/tests.rs | 4 ++-- 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 73aac10a23d..8712b5b2f65 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -849,7 +849,7 @@ impl Arbitrary for VerifiedUnminedTx { /// Convert `trans` into a fake v5 transaction, /// converting sapling shielded data from v4 to v5 if possible. -pub fn transaction_to_fake_v5( +pub fn transaction_to_fake_min_v5( trans: &Transaction, network: &Network, height: block::Height, @@ -918,22 +918,8 @@ pub fn transaction_to_fake_v5( orchard_shielded_data: None, }, v5 @ V5 { .. } => v5.clone(), - V6 { - inputs, - outputs, - lock_time, - sapling_shielded_data, - orchard_shielded_data, - .. - } => V5 { - network_upgrade: block_nu, - inputs: inputs.clone(), - outputs: outputs.clone(), - lock_time: *lock_time, - expiry_height: height, - sapling_shielded_data: sapling_shielded_data.clone(), - orchard_shielded_data: orchard_shielded_data.clone(), - }, + #[cfg(feature = "tx-v6")] + V6 => panic!("V6 transactions are not supported in this test!"), } } @@ -1017,7 +1003,7 @@ pub fn fake_v5_transactions_for_network<'b>( blocks: impl DoubleEndedIterator + 'b, ) -> impl DoubleEndedIterator + 'b { transactions_from_blocks(blocks) - .map(move |(height, transaction)| transaction_to_fake_v5(&transaction, network, height)) + .map(move |(height, transaction)| transaction_to_fake_min_v5(&transaction, network, height)) } /// Generate an iterator over ([`block::Height`], [`Arc`]). diff --git a/zebra-chain/src/transaction/tests/vectors.rs b/zebra-chain/src/transaction/tests/vectors.rs index f20bfaef455..ca3e9a6493c 100644 --- a/zebra-chain/src/transaction/tests/vectors.rs +++ b/zebra-chain/src/transaction/tests/vectors.rs @@ -371,7 +371,7 @@ fn fake_v5_round_trip_for_network(network: Network) { .transactions .iter() .map(AsRef::as_ref) - .map(|t| arbitrary::transaction_to_fake_v5(t, &network, Height(*height))) + .map(|t| arbitrary::transaction_to_fake_min_v5(t, &network, Height(*height))) .map(Into::into) .collect(); @@ -516,7 +516,7 @@ fn fake_v5_librustzcash_round_trip_for_network(network: Network) { .transactions .iter() .map(AsRef::as_ref) - .map(|t| arbitrary::transaction_to_fake_v5(t, &network, Height(*height))) + .map(|t| arbitrary::transaction_to_fake_min_v5(t, &network, Height(*height))) .map(Into::into) .collect(); diff --git a/zebra-consensus/src/block/tests.rs b/zebra-consensus/src/block/tests.rs index e6eb6f2c4b9..7f42801a4ff 100644 --- a/zebra-consensus/src/block/tests.rs +++ b/zebra-consensus/src/block/tests.rs @@ -14,7 +14,7 @@ use zebra_chain::{ }, parameters::NetworkUpgrade, serialization::{ZcashDeserialize, ZcashDeserializeInto}, - transaction::{arbitrary::transaction_to_fake_v5, LockTime, Transaction}, + transaction::{arbitrary::transaction_to_fake_min_v5, LockTime, Transaction}, work::difficulty::{ParameterDifficulty as _, INVALID_COMPACT_DIFFICULTY}, }; use zebra_script::CachedFfiTransaction; @@ -664,7 +664,7 @@ fn merkle_root_fake_v5_for_network(network: Network) -> Result<(), Report> { .transactions .iter() .map(AsRef::as_ref) - .map(|t| transaction_to_fake_v5(t, &network, Height(*height))) + .map(|t| transaction_to_fake_min_v5(t, &network, Height(*height))) .map(Into::into) .collect(); From a597c4e780b1d87b52d643f4fd5bedd20f6579da Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 24 Feb 2025 09:19:45 +0100 Subject: [PATCH 155/230] Minor fix in comments --- zebra-chain/src/parameters/transaction.rs | 2 +- zebrad/src/components/mempool/storage/tests/prop.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/zebra-chain/src/parameters/transaction.rs b/zebra-chain/src/parameters/transaction.rs index f775f2c4bb2..729cb82cf11 100644 --- a/zebra-chain/src/parameters/transaction.rs +++ b/zebra-chain/src/parameters/transaction.rs @@ -14,7 +14,7 @@ pub const TX_V5_VERSION_GROUP_ID: u32 = 0x26A7_270A; /// The version group ID for version 6 transactions. /// -/// Orchard transactions must use transaction version 5 and this version +/// Orchard ZSA transactions must use transaction version 6 and this version /// group ID. // FIXME: use a proper value! pub const TX_V6_VERSION_GROUP_ID: u32 = 0x124A_69F8; diff --git a/zebrad/src/components/mempool/storage/tests/prop.rs b/zebrad/src/components/mempool/storage/tests/prop.rs index 98abdb2b8e8..ed67312bf2c 100644 --- a/zebrad/src/components/mempool/storage/tests/prop.rs +++ b/zebrad/src/components/mempool/storage/tests/prop.rs @@ -446,7 +446,7 @@ enum SpendConflictTestInput { conflict: SpendConflictForTransactionV5, }, - // FIXME: add and use V6? + // FIXME: add V6 test } impl SpendConflictTestInput { From 0498e067cc924be48228a6a175b1cbf6cfdcb0d4 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 24 Feb 2025 10:23:01 +0100 Subject: [PATCH 156/230] Temporary comment of #[cfg(feature = tx-v6)] in zebra-chain/src/transaction/arbitrary.rs --- zebra-chain/src/transaction/arbitrary.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 8712b5b2f65..de5763844a1 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -918,7 +918,7 @@ pub fn transaction_to_fake_min_v5( orchard_shielded_data: None, }, v5 @ V5 { .. } => v5.clone(), - #[cfg(feature = "tx-v6")] + // FIXME: add #[cfg(feature = "tx-v6")] V6 => panic!("V6 transactions are not supported in this test!"), } } From 1857e0c3f2895336408850347e169f6f27a71a62 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 24 Feb 2025 12:16:04 +0100 Subject: [PATCH 157/230] Update ZSA test blocks (use test data with action groups) --- zebra-chain/src/orchard_zsa/tests/blocks.rs | 2 +- .../src/orchard_zsa/tests/vectors/blocks.rs | 5103 +++++++++-------- zebra-test/src/vectors/zsa.rs | 12 +- 3 files changed, 2564 insertions(+), 2553 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/tests/blocks.rs b/zebra-chain/src/orchard_zsa/tests/blocks.rs index 8c10e3d8801..ebb672519a0 100644 --- a/zebra-chain/src/orchard_zsa/tests/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/blocks.rs @@ -22,7 +22,7 @@ fn deserialize_blocks() { .inner(); assert_eq!(issue_bundle.actions().len(), 1); - assert_eq!(issue_bundle.actions()[0].notes().len(), 1); + assert_eq!(issue_bundle.actions()[0].notes().len(), 2); } } } diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs index 324f270c04d..3261be7d16c 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs @@ -5,12 +5,12 @@ pub const BLOCKS: [&[u8]; 4] = [ // Issuance block &[ 0x04, 0x00, 0x00, 0x00, 0x27, 0xe3, 0x01, 0x34, 0xd6, 0x20, 0xe9, 0xfe, 0x61, 0xf7, 0x19, - 0x93, 0xb2, 0xc2, 0x72, 0x75, 0x6a, 0xce, 0xec, 0xdc, 0xbf, 0xd3, 0xe5, 0x43, 0xf7, 0x30, - 0xbc, 0x65, 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, - 0x76, 0xf9, 0x0e, 0xd8, 0x11, 0x9f, 0x02, 0x77, 0x8a, 0xa0, 0x8d, 0x1a, 0x56, 0x79, 0x47, - 0x66, 0x88, 0xbf, 0x6e, 0x8e, 0x5a, 0x4f, 0x57, 0x00, 0x23, 0xde, 0x3e, 0xf1, 0x3a, 0x05, - 0xe5, 0x9d, 0x2e, 0x94, 0x76, 0x6a, 0x3c, 0x7a, 0x94, 0x88, 0x5d, 0x72, 0x57, 0x04, 0x56, - 0x3c, 0x74, 0xd1, 0x7a, 0xbd, 0xf7, 0x53, 0x53, 0xdb, 0x1a, 0xf2, 0xfa, 0x49, 0x4d, 0x3f, + 0x93, 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, 0x76, + 0xf9, 0x0e, 0xd8, 0x11, 0x9f, 0x02, 0x77, 0xa3, 0xc3, 0x64, 0xbb, 0xcf, 0xff, 0xce, 0xbb, + 0xfd, 0x7d, 0xbf, 0xaf, 0xce, 0x1b, 0x51, 0x1f, 0x53, 0x83, 0x64, 0x9e, 0x84, 0xbb, 0xa9, + 0xc5, 0x98, 0xf7, 0x65, 0x7c, 0xd7, 0x3f, 0x84, 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, 0xf2, 0xfa, 0x49, 0x4d, 0x3f, 0xa6, 0x0c, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -110,658 +110,668 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x64, - 0x40, 0xa8, 0x86, 0x5d, 0x61, 0x39, 0xb3, 0x39, 0x62, 0x94, 0xee, 0x42, 0xc5, 0xa6, 0x0b, - 0x63, 0x57, 0xca, 0x65, 0x8b, 0xa6, 0x76, 0xf2, 0xd6, 0xda, 0x8e, 0x00, 0xcf, 0x60, 0xe8, - 0x33, 0xa4, 0x55, 0xec, 0x7c, 0x99, 0x0f, 0xda, 0xd2, 0x46, 0xc0, 0x5b, 0x4a, 0x8f, 0xe5, - 0x2c, 0x6a, 0xb7, 0x00, 0xca, 0x49, 0xb4, 0xda, 0x80, 0xd3, 0x3d, 0x4d, 0x83, 0x7a, 0xd1, - 0x3a, 0x21, 0x3f, 0xfe, 0x71, 0xf5, 0x04, 0xd3, 0xaf, 0xeb, 0x10, 0x9d, 0xc2, 0x0d, 0xbd, - 0x3a, 0x9b, 0x2d, 0xf7, 0x7c, 0xd3, 0x2c, 0x7e, 0x7b, 0xeb, 0xb7, 0xaf, 0x60, 0xe4, 0xd3, - 0x41, 0x96, 0xe7, 0x2c, 0x0a, 0xf8, 0x99, 0x89, 0xbd, 0x70, 0x79, 0x54, 0x3b, 0xc7, 0x66, - 0x29, 0x91, 0x31, 0x97, 0xa6, 0x53, 0xfe, 0x24, 0x70, 0xf9, 0xf2, 0x41, 0x81, 0xac, 0x79, - 0x60, 0x43, 0x79, 0xed, 0x42, 0xba, 0x25, 0xdd, 0xf0, 0x05, 0xe8, 0xff, 0x14, 0x9e, 0xe8, - 0x34, 0x91, 0x5d, 0xc6, 0x9d, 0x6a, 0x2f, 0xc5, 0x70, 0x55, 0x65, 0x01, 0xf3, 0x74, 0x6f, - 0xe7, 0x37, 0x4a, 0x8f, 0x5d, 0x4d, 0xb6, 0x4e, 0x3b, 0xab, 0xc5, 0xc9, 0xa2, 0x86, 0x28, - 0x0e, 0xa6, 0x2d, 0xc0, 0xc4, 0x12, 0x74, 0xe9, 0x39, 0x34, 0xa6, 0xd8, 0xbc, 0x24, 0xdf, - 0x5a, 0x2b, 0x2d, 0xd3, 0xae, 0x62, 0x2f, 0x37, 0x38, 0xcb, 0x41, 0x26, 0xa5, 0xae, 0xed, - 0x94, 0x84, 0x51, 0xc2, 0xe7, 0xff, 0xbe, 0x27, 0x7b, 0x37, 0x94, 0xc0, 0xb5, 0x17, 0x08, - 0x0a, 0x00, 0xd4, 0x69, 0x74, 0x8f, 0x4e, 0x2c, 0xeb, 0x06, 0x2f, 0x1d, 0x61, 0xdc, 0x70, - 0xab, 0x97, 0xc9, 0xbd, 0x02, 0x68, 0xf0, 0xe1, 0x5e, 0xcb, 0x76, 0x25, 0x2c, 0x2c, 0xd2, - 0xf1, 0x8a, 0x03, 0xb3, 0x2f, 0x0b, 0x40, 0xa2, 0x56, 0xc4, 0x3a, 0xd0, 0xf7, 0xc4, 0xef, - 0x98, 0x52, 0x87, 0x54, 0x5b, 0x8e, 0xf8, 0xb3, 0x6e, 0x3d, 0x9e, 0xd6, 0x05, 0xb9, 0x49, - 0x54, 0x1b, 0xe0, 0xbc, 0xe7, 0x52, 0x71, 0x6c, 0x70, 0xdb, 0x0c, 0xf2, 0x06, 0x9e, 0x80, - 0x90, 0xde, 0x83, 0x0e, 0x8c, 0xee, 0xa3, 0x36, 0x99, 0xf0, 0xa8, 0x29, 0x58, 0x9e, 0xa8, - 0x4c, 0x90, 0x0d, 0x66, 0x06, 0xf9, 0x95, 0x21, 0x65, 0xa4, 0x90, 0x58, 0x9f, 0x61, 0x66, - 0x25, 0x8b, 0x7b, 0x13, 0xa1, 0x6b, 0x9c, 0xf4, 0x80, 0xfb, 0x34, 0xd1, 0x0f, 0x52, 0x2d, - 0xbd, 0x2a, 0xcd, 0x16, 0x7b, 0x7d, 0xd0, 0x6c, 0x4d, 0x2d, 0xbb, 0x51, 0x90, 0x7d, 0x4d, - 0x38, 0xbe, 0x06, 0x95, 0x18, 0xd4, 0x31, 0x6d, 0xa4, 0x67, 0xca, 0xe5, 0x35, 0x51, 0xaa, - 0xb4, 0x33, 0x46, 0x67, 0xc0, 0xa5, 0xb7, 0x07, 0x63, 0x64, 0xe8, 0x42, 0x8e, 0x81, 0xf4, - 0xc4, 0xcb, 0xde, 0x44, 0xe8, 0xf1, 0x80, 0xca, 0x7a, 0x70, 0x33, 0x64, 0xaa, 0x4d, 0x50, - 0xaf, 0xf3, 0x24, 0x27, 0xc4, 0x23, 0xfb, 0xf8, 0x47, 0x61, 0x83, 0x5c, 0x31, 0xeb, 0x69, - 0x73, 0x64, 0x4c, 0xe3, 0x8e, 0x24, 0x40, 0xd9, 0xe0, 0x46, 0x17, 0xbc, 0x0b, 0xa0, 0xcd, - 0x8d, 0x14, 0x96, 0x57, 0x21, 0x71, 0x97, 0x9c, 0xa7, 0x5b, 0x28, 0xb7, 0x5b, 0x71, 0xd2, - 0x7b, 0x77, 0x83, 0x09, 0x3a, 0xc4, 0x9c, 0x37, 0x38, 0xfb, 0xdf, 0xe1, 0xf9, 0xc7, 0x29, - 0xe0, 0x50, 0xbb, 0xfd, 0x7b, 0xa1, 0x53, 0xe5, 0x3b, 0x85, 0x61, 0x21, 0x66, 0xf0, 0xa2, - 0xb7, 0x65, 0x77, 0xd4, 0x5f, 0x0f, 0xf8, 0x5f, 0x4c, 0x6a, 0x90, 0x03, 0xc1, 0x2f, 0x8c, - 0x95, 0xa4, 0x36, 0x88, 0x51, 0x43, 0xd9, 0xa8, 0x78, 0x7f, 0x36, 0xb2, 0x27, 0x2f, 0x2c, - 0xd0, 0x21, 0xdc, 0x6a, 0x3f, 0x34, 0xdf, 0xac, 0x94, 0xf2, 0x8f, 0x13, 0x2e, 0x3d, 0x2a, - 0x4a, 0xf0, 0xdc, 0xa4, 0x1c, 0xc8, 0x59, 0x7e, 0xa0, 0x88, 0x7c, 0x02, 0x06, 0xf1, 0xbe, - 0x5a, 0xae, 0xc4, 0xf7, 0x72, 0x46, 0x97, 0xd9, 0x4b, 0x47, 0x9f, 0x9b, 0x93, 0x93, 0x71, - 0x8d, 0x80, 0xf7, 0xaf, 0xc7, 0xf9, 0xc9, 0x84, 0xd5, 0x9e, 0x87, 0x0f, 0x64, 0x33, 0x1f, - 0xd6, 0xf5, 0x90, 0x2d, 0x3a, 0xc3, 0x59, 0xf5, 0x25, 0xe6, 0xa5, 0xda, 0xf4, 0x21, 0x24, - 0x9d, 0xdb, 0x69, 0x86, 0x93, 0xec, 0x7d, 0x9b, 0xfd, 0x71, 0x19, 0xab, 0x05, 0xb6, 0xfd, - 0x5c, 0x6b, 0x17, 0x7e, 0xe5, 0xc4, 0x10, 0x38, 0xd7, 0x9b, 0x84, 0x94, 0x0d, 0xf1, 0xf5, - 0xe6, 0x79, 0x84, 0x3c, 0x04, 0x84, 0x2c, 0x6a, 0x62, 0xcf, 0xd6, 0x2f, 0xd0, 0x1b, 0xcc, - 0xc2, 0xc8, 0x2a, 0x67, 0x34, 0x52, 0xae, 0x88, 0x48, 0x47, 0x5f, 0x61, 0x4d, 0xba, 0x6c, - 0x53, 0xf1, 0x8b, 0x12, 0x54, 0xcc, 0xf0, 0x77, 0x89, 0x72, 0x98, 0x97, 0xed, 0x2e, 0xfa, - 0xef, 0x0b, 0x54, 0x69, 0x02, 0x69, 0x15, 0xa6, 0x5f, 0x11, 0xed, 0x04, 0x58, 0x02, 0x46, - 0xc4, 0xdc, 0x9c, 0xb6, 0xe1, 0xc8, 0xd8, 0xdc, 0xa3, 0x99, 0xea, 0x17, 0x96, 0x74, 0x7b, - 0x5f, 0xeb, 0x00, 0x02, 0x91, 0x04, 0x9e, 0xf4, 0xff, 0x6d, 0x0b, 0x29, 0x82, 0x37, 0x1a, - 0x4c, 0xa0, 0x71, 0x71, 0x20, 0xaf, 0xe4, 0x3b, 0x6e, 0x26, 0xb1, 0x89, 0x56, 0xb3, 0xb6, - 0x44, 0x2d, 0x2b, 0xb4, 0x6f, 0x22, 0xe4, 0x5d, 0xd8, 0x7d, 0x25, 0x60, 0xe7, 0xf4, 0xab, - 0x87, 0x0b, 0x97, 0x0a, 0xd4, 0x82, 0x48, 0x93, 0x0f, 0x1d, 0xcc, 0xc7, 0x69, 0xee, 0xc7, - 0xcf, 0x5d, 0x9b, 0xbe, 0x9f, 0x23, 0x4b, 0x06, 0x49, 0x88, 0xf5, 0xbd, 0xb5, 0xc3, 0xed, - 0x46, 0x2a, 0x17, 0xc8, 0x5c, 0x4e, 0xa4, 0x56, 0xf3, 0x62, 0x28, 0xe7, 0xd1, 0x66, 0x15, - 0x1c, 0xeb, 0x62, 0xc1, 0x64, 0xee, 0xb6, 0x98, 0x7a, 0x9e, 0x40, 0xaa, 0xa2, 0x7d, 0xca, - 0xb6, 0xf3, 0x82, 0x6d, 0x65, 0xfb, 0x82, 0x57, 0xd2, 0x64, 0xc8, 0xb8, 0x15, 0x1b, 0x68, - 0x94, 0x90, 0x7a, 0xd5, 0xd7, 0xe6, 0x42, 0x99, 0x6f, 0x46, 0xc8, 0x3d, 0x9e, 0x5d, 0x85, - 0x00, 0x7b, 0xed, 0x53, 0xde, 0x27, 0xa4, 0x66, 0x3f, 0xa3, 0xc2, 0xf8, 0x89, 0x69, 0x8a, - 0xac, 0xcc, 0x15, 0x5e, 0xdd, 0x63, 0xda, 0xe3, 0x5a, 0x1f, 0xe9, 0x81, 0x60, 0x20, 0x60, - 0xc1, 0xf9, 0xbb, 0x71, 0x87, 0x77, 0x79, 0xe0, 0x90, 0x3d, 0xef, 0x49, 0xa9, 0xf7, 0x66, - 0x70, 0x6f, 0x80, 0x88, 0xbe, 0x89, 0x73, 0x99, 0x3e, 0xb1, 0xf9, 0xd6, 0xe7, 0xb1, 0x9f, - 0x3e, 0xfe, 0x39, 0xed, 0x36, 0x18, 0xee, 0xc3, 0x41, 0xbb, 0x69, 0x9a, 0x8b, 0xb1, 0x13, - 0x2d, 0xd5, 0xab, 0xb7, 0xb6, 0x3b, 0xed, 0xdf, 0x5b, 0x08, 0xde, 0x7d, 0xe5, 0x5d, 0xfa, - 0x32, 0x91, 0x78, 0x03, 0x87, 0x77, 0x85, 0xc2, 0x92, 0x66, 0x51, 0x83, 0xdb, 0xa8, 0x3f, - 0xce, 0x17, 0xaa, 0xf5, 0xbb, 0x1e, 0x5c, 0x5f, 0x2e, 0xb6, 0x6c, 0x6d, 0x1a, 0x98, 0x84, - 0xe4, 0x69, 0x44, 0x9a, 0xf5, 0x6e, 0xd8, 0xd4, 0xc9, 0xd3, 0x42, 0x18, 0xca, 0x80, 0x1c, - 0x71, 0x8c, 0x62, 0x79, 0x59, 0xd9, 0x3b, 0xf3, 0xba, 0x90, 0x6b, 0x36, 0x2a, 0x7c, 0xf8, - 0xd3, 0xf4, 0xaa, 0xd9, 0x17, 0x59, 0xb1, 0xe6, 0x5a, 0x50, 0xcb, 0x0b, 0x6b, 0x19, 0x0c, - 0xe0, 0x5e, 0x67, 0x09, 0x42, 0x53, 0x71, 0x8b, 0xc2, 0x4e, 0x46, 0xc3, 0xff, 0xf1, 0x45, - 0x2b, 0x81, 0x52, 0x3b, 0xb4, 0x59, 0x20, 0xdc, 0x24, 0xea, 0xa5, 0xe7, 0xfc, 0x19, 0xc2, - 0xeb, 0x8c, 0x91, 0x99, 0x0a, 0x87, 0x43, 0xa7, 0x4c, 0x3e, 0x5a, 0xd7, 0x71, 0x5e, 0x3f, - 0x7c, 0xd0, 0x2f, 0x1a, 0xc0, 0xac, 0x73, 0xcf, 0xfc, 0x0a, 0x85, 0xe8, 0xd6, 0xb1, 0xa2, - 0xe0, 0x2e, 0x7a, 0xa8, 0x68, 0x68, 0x0a, 0x7d, 0x73, 0xd0, 0xc7, 0x6a, 0x3e, 0x7b, 0x6b, - 0x6a, 0x28, 0x59, 0x7a, 0x29, 0x85, 0x84, 0x04, 0xbb, 0x7c, 0x5b, 0x8f, 0x68, 0x6f, 0xb7, - 0x3e, 0xbf, 0xca, 0x97, 0x62, 0x7a, 0x73, 0xf3, 0xe3, 0x23, 0x39, 0xa6, 0xb1, 0x71, 0xd0, - 0x4e, 0xb5, 0x7a, 0x29, 0x51, 0xc9, 0x40, 0x45, 0x2f, 0x25, 0x58, 0x0c, 0x71, 0x61, 0x9c, - 0x73, 0x99, 0xc8, 0xab, 0xee, 0x67, 0x0d, 0x97, 0xd3, 0xdc, 0xa0, 0x90, 0x3b, 0xc2, 0x91, - 0x07, 0x1f, 0xf0, 0xe9, 0x97, 0xa9, 0xb5, 0x46, 0xdc, 0x63, 0xfc, 0xa3, 0x24, 0x1f, 0xeb, - 0xa8, 0x85, 0x66, 0x9a, 0xaf, 0x0f, 0x37, 0xe0, 0x8e, 0x01, 0x32, 0x35, 0xdb, 0xbe, 0xa3, - 0xbe, 0xf6, 0x2f, 0x1a, 0xd8, 0x1e, 0xc6, 0x40, 0xb9, 0x69, 0xea, 0x02, 0x95, 0x14, 0x9b, - 0xe9, 0x7d, 0x0c, 0xb7, 0x55, 0xf8, 0x87, 0xd9, 0x76, 0x3e, 0x15, 0xae, 0x83, 0xba, 0xe7, - 0x60, 0xc4, 0x0d, 0x32, 0x8a, 0x46, 0x9a, 0x56, 0xdc, 0xc1, 0x62, 0x9e, 0x76, 0xf6, 0x34, - 0xfb, 0xb9, 0xca, 0x32, 0xaa, 0xdd, 0x2b, 0x4e, 0xd2, 0xbc, 0x1a, 0xe4, 0x5d, 0x8c, 0x79, - 0xb1, 0x84, 0xd3, 0xfc, 0xd5, 0x40, 0xa9, 0x00, 0x97, 0x18, 0x39, 0xf7, 0x78, 0xa7, 0xfd, - 0x60, 0xb4, 0xfa, 0x3f, 0x8b, 0x74, 0x23, 0xb6, 0x90, 0x07, 0x32, 0xea, 0xde, 0x4d, 0xe9, - 0xbf, 0xe3, 0x78, 0x0a, 0xe0, 0x86, 0x21, 0x02, 0x2d, 0x45, 0xe0, 0x74, 0x20, 0xb7, 0x63, - 0x17, 0x2f, 0x09, 0xd3, 0xbe, 0x24, 0x6e, 0xef, 0x62, 0x06, 0x35, 0x1d, 0x0d, 0xe0, 0xb8, - 0xc4, 0xff, 0xc5, 0x3e, 0x4a, 0xf3, 0x04, 0x2b, 0x4f, 0xea, 0xf6, 0xfd, 0x8d, 0x28, 0x5e, - 0xdc, 0xe8, 0x1d, 0x39, 0x20, 0x43, 0x89, 0x5c, 0x37, 0x50, 0x38, 0x92, 0x00, 0x69, 0x46, - 0xc8, 0x55, 0x16, 0x70, 0x90, 0x73, 0x9e, 0xd8, 0x08, 0xdb, 0x3a, 0xcf, 0x5c, 0xc8, 0xdb, - 0x2b, 0xae, 0x8e, 0x7c, 0x51, 0xa9, 0x0c, 0x54, 0xc8, 0x15, 0x21, 0x26, 0x29, 0x92, 0x25, - 0x19, 0xa8, 0x31, 0x7c, 0x7d, 0x41, 0x32, 0x69, 0xe4, 0xfd, 0xf0, 0x0f, 0x12, 0x2e, 0x35, - 0x0d, 0x22, 0x04, 0xf5, 0x7e, 0x5c, 0xa7, 0x2e, 0xe1, 0xda, 0x11, 0xd2, 0xbf, 0x98, 0xe1, - 0x33, 0xf7, 0x3c, 0xb2, 0x4a, 0x1c, 0x01, 0x3e, 0xf7, 0xcc, 0x14, 0x2a, 0x51, 0xe6, 0x4f, - 0x43, 0xba, 0xd4, 0xad, 0xb7, 0x8c, 0x5c, 0x4a, 0x44, 0x03, 0x7f, 0x80, 0x0f, 0xe5, 0x58, - 0x35, 0x44, 0x11, 0x13, 0x63, 0xd6, 0x62, 0x48, 0x15, 0xa9, 0xb9, 0xdf, 0xf9, 0xc1, 0x70, - 0x80, 0xdf, 0x76, 0xda, 0x93, 0x50, 0xc3, 0x17, 0x5b, 0xb7, 0xdd, 0xfa, 0x14, 0x5a, 0xfa, - 0x2f, 0xd6, 0x4b, 0x54, 0xd8, 0x41, 0xab, 0x82, 0xc9, 0x12, 0xd8, 0x65, 0x71, 0x99, 0xff, - 0x07, 0x3b, 0x46, 0x84, 0xeb, 0x89, 0x04, 0x10, 0x6d, 0x5c, 0x1e, 0xe4, 0xcb, 0x13, 0xcd, - 0x37, 0x3b, 0xde, 0x78, 0xfc, 0x48, 0xbd, 0xb2, 0x85, 0x89, 0x45, 0x72, 0x96, 0x2a, 0x7d, - 0x69, 0x1a, 0x59, 0x6d, 0x03, 0x30, 0xb9, 0xce, 0x98, 0xb3, 0xc2, 0x23, 0xb4, 0x86, 0x2a, - 0x1e, 0x76, 0x49, 0xc0, 0x7b, 0xd6, 0x3c, 0x54, 0x76, 0x22, 0x1c, 0x8e, 0x86, 0x56, 0xeb, - 0xa3, 0x00, 0x73, 0x3c, 0xeb, 0x64, 0xa1, 0xd7, 0x4a, 0xeb, 0x4d, 0x98, 0x49, 0xcf, 0x93, - 0x72, 0xec, 0x35, 0x33, 0x8b, 0x97, 0xf4, 0xd0, 0xb7, 0x80, 0xf8, 0xc4, 0x85, 0x27, 0x1f, - 0x5e, 0x3c, 0xe9, 0x83, 0x3d, 0xbc, 0x99, 0x96, 0x3d, 0x63, 0xaa, 0x99, 0x7c, 0x83, 0x07, - 0x55, 0x78, 0x94, 0x7f, 0xa4, 0x48, 0x77, 0x38, 0xa3, 0xb8, 0xb7, 0x02, 0xee, 0x82, 0xac, - 0x27, 0x1e, 0xb4, 0x2a, 0xa9, 0x27, 0x98, 0xcf, 0x58, 0x80, 0xa6, 0x58, 0x15, 0xce, 0x17, - 0x87, 0xb4, 0xff, 0xaf, 0x22, 0xa8, 0xf3, 0x83, 0xf6, 0xd9, 0x04, 0xb3, 0xbb, 0xf1, 0x1a, - 0xa7, 0x00, 0x5c, 0x64, 0xfb, 0x99, 0x6f, 0x54, 0xda, 0x29, 0x1e, 0x4f, 0xae, 0x22, 0x24, - 0xce, 0xc8, 0x77, 0xc8, 0x7e, 0xe6, 0xfd, 0xce, 0x07, 0x7d, 0x0d, 0x93, 0xde, 0x13, 0xd3, - 0x08, 0xdb, 0xc1, 0xd5, 0xbb, 0x5a, 0x69, 0x34, 0xa5, 0x90, 0x44, 0x5b, 0xd2, 0x50, 0x4c, - 0x03, 0xb4, 0x35, 0x33, 0x4d, 0x63, 0xdb, 0xfb, 0xe7, 0xed, 0x07, 0x91, 0x1f, 0x7e, 0xa5, - 0x68, 0xa0, 0xe7, 0x80, 0x65, 0xf8, 0x79, 0xc7, 0xca, 0x80, 0x27, 0x41, 0x59, 0xa3, 0x38, - 0xc3, 0xae, 0xa5, 0x8c, 0x1d, 0x00, 0xb5, 0xbc, 0x6d, 0x16, 0xdf, 0x8e, 0x36, 0xa6, 0x24, - 0x8e, 0x1d, 0xca, 0x0c, 0x13, 0xed, 0x3d, 0xe1, 0x68, 0xc9, 0x0b, 0x8b, 0xd4, 0x17, 0xf2, - 0xb3, 0xec, 0x78, 0xa0, 0x7d, 0x35, 0x71, 0xe4, 0x24, 0xd1, 0xe5, 0xc1, 0x13, 0x2c, 0x7e, - 0xab, 0x86, 0x19, 0xfe, 0xbe, 0x22, 0xcf, 0xb7, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xae, 0x29, 0x35, 0xf1, 0xdf, 0xd8, 0xa2, 0x4a, 0xed, 0x7c, 0x70, 0xdf, 0x7d, - 0xe3, 0xa6, 0x68, 0xeb, 0x7a, 0x49, 0xb1, 0x31, 0x98, 0x80, 0xdd, 0xe2, 0xbb, 0xd9, 0x03, - 0x1a, 0xe5, 0xd8, 0x2f, 0xfd, 0xe0, 0x1c, 0x85, 0xa0, 0x45, 0xcc, 0x0e, 0xf3, 0x67, 0x88, - 0xe9, 0x1e, 0xdf, 0x18, 0xe6, 0x3a, 0x44, 0x94, 0x53, 0x74, 0x09, 0x4e, 0x08, 0x3c, 0x33, - 0xd3, 0x07, 0xd1, 0x72, 0xaf, 0x7f, 0x82, 0xec, 0x14, 0x05, 0x87, 0x12, 0x50, 0xc0, 0xc4, - 0x4f, 0x7c, 0x67, 0xdf, 0xd2, 0xe2, 0xc7, 0x38, 0x0d, 0x7c, 0x30, 0xf6, 0x80, 0x39, 0xe2, - 0x7d, 0x77, 0xb4, 0x42, 0xcb, 0x01, 0x63, 0xca, 0x95, 0x32, 0xa4, 0x18, 0x2c, 0x2b, 0xef, - 0xa0, 0x26, 0x88, 0xc6, 0x01, 0x97, 0x10, 0xba, 0xba, 0x3d, 0x80, 0xf2, 0xb8, 0x94, 0xfd, - 0x91, 0x75, 0xf2, 0x2c, 0x7f, 0xf6, 0xdf, 0x41, 0x2c, 0x8c, 0x41, 0xde, 0xb3, 0x94, 0xb9, - 0x89, 0xc2, 0x27, 0xf5, 0xc2, 0x03, 0x32, 0xb7, 0xa0, 0x30, 0x36, 0x98, 0x23, 0xc6, 0xac, - 0x19, 0xee, 0xa1, 0xe6, 0xe2, 0x68, 0xee, 0xaa, 0x70, 0x0c, 0x81, 0xe8, 0x87, 0x31, 0xbf, - 0x74, 0xaa, 0xd7, 0x37, 0xab, 0xf9, 0x15, 0x8c, 0x3e, 0xfc, 0x59, 0x16, 0x20, 0x4e, 0xe3, - 0xd4, 0x5e, 0x57, 0x28, 0xcf, 0x42, 0x7f, 0x1a, 0x86, 0x9d, 0x1c, 0x5d, 0x4a, 0xf1, 0x7a, - 0x17, 0x9e, 0xd1, 0x6f, 0xfd, 0xcd, 0xb4, 0xe9, 0x05, 0xdb, 0x8e, 0x10, 0x99, 0x25, 0x41, - 0x2c, 0xa6, 0xf6, 0x65, 0xd3, 0x4f, 0x3c, 0x3d, 0xc9, 0x2c, 0xf5, 0x40, 0xea, 0x6d, 0x7a, - 0x07, 0xdf, 0x9c, 0x3b, 0x3f, 0xe7, 0x45, 0xd8, 0xcf, 0x95, 0x33, 0x57, 0x39, 0x37, 0x61, - 0x36, 0x7c, 0xf7, 0xee, 0xb5, 0xc0, 0x75, 0x0b, 0xe3, 0x08, 0x02, 0xfe, 0x8f, 0x52, 0x14, - 0xa4, 0x1f, 0x99, 0xbe, 0x8d, 0xb8, 0x1f, 0x35, 0xf1, 0x96, 0x61, 0x31, 0x19, 0x20, 0xd8, - 0x1c, 0xdb, 0x99, 0x9f, 0x34, 0x68, 0xf0, 0x16, 0x05, 0x5d, 0x33, 0xbc, 0x8e, 0xa9, 0x50, - 0xda, 0x3f, 0x07, 0xc0, 0xf1, 0x02, 0x61, 0x88, 0xe2, 0x8b, 0x50, 0xc9, 0xad, 0x30, 0xab, - 0x00, 0x05, 0xea, 0x60, 0x4c, 0xcf, 0x86, 0xb0, 0x32, 0x40, 0x1a, 0x6b, 0x84, 0xf9, 0xee, - 0xee, 0x1c, 0x82, 0xf6, 0xbc, 0xd3, 0x88, 0x7c, 0xb9, 0x87, 0x88, 0x8c, 0x1e, 0xc2, 0x55, - 0x37, 0xc6, 0x60, 0xdc, 0xf8, 0x1d, 0xbc, 0x80, 0x06, 0x33, 0x33, 0x61, 0x99, 0xce, 0x7c, - 0x41, 0xea, 0xf2, 0xc8, 0x92, 0x0c, 0xd3, 0xd6, 0xf4, 0x1b, 0xa7, 0x8d, 0x97, 0xb9, 0x84, - 0x51, 0x65, 0x6e, 0xcb, 0x7a, 0x73, 0x97, 0x0a, 0xfd, 0xaa, 0x36, 0xb9, 0xb1, 0x5e, 0x8d, - 0xe1, 0xcf, 0x85, 0x2c, 0x5c, 0x41, 0xee, 0x6c, 0xbc, 0x0e, 0x76, 0x80, 0x5a, 0xa9, 0x3c, - 0x3f, 0xa9, 0x33, 0xc4, 0x3d, 0x12, 0x5d, 0x0b, 0x00, 0x68, 0x7d, 0x15, 0x30, 0x37, 0xe2, - 0x4d, 0x4f, 0x49, 0x30, 0x0c, 0x93, 0x2c, 0x18, 0xdd, 0x1f, 0x92, 0xab, 0xef, 0x0a, 0x2c, - 0x12, 0x4c, 0x4e, 0x99, 0xee, 0xcb, 0x95, 0x68, 0xf1, 0xf8, 0x88, 0x8c, 0xe1, 0x16, 0x2d, - 0x08, 0x6a, 0x5a, 0xb1, 0x87, 0xb4, 0x9f, 0x6b, 0x16, 0xb6, 0x69, 0xb0, 0x40, 0xbc, 0x9c, - 0x54, 0x61, 0xa2, 0x65, 0x97, 0x29, 0xa0, 0xfa, 0x12, 0x7b, 0xc5, 0xdb, 0xcf, 0x6a, 0x54, - 0xfc, 0xc8, 0x93, 0xd0, 0xdf, 0x06, 0x7a, 0xd7, 0x44, 0x0c, 0x80, 0x35, 0xe1, 0xcf, 0x18, - 0xc5, 0xb4, 0x19, 0xf3, 0x9c, 0x97, 0x3b, 0x1a, 0x91, 0xbd, 0x54, 0x0c, 0x37, 0x6b, 0x14, - 0x1d, 0xfe, 0x5c, 0xea, 0xb4, 0x3c, 0x71, 0x16, 0x21, 0x1e, 0xa0, 0x14, 0x13, 0x8d, 0xaf, - 0xbd, 0x24, 0xb2, 0x9a, 0xf4, 0x82, 0xab, 0x03, 0xb7, 0x77, 0x00, 0x6f, 0x99, 0x6f, 0xa4, - 0x89, 0xe7, 0x6f, 0xf9, 0xc2, 0x30, 0x3c, 0x1f, 0xe4, 0x69, 0x27, 0x53, 0x40, 0x16, 0xf1, - 0x9e, 0xae, 0xe7, 0xd1, 0xaf, 0x02, 0xf7, 0xb1, 0x13, 0x1a, 0x3e, 0x16, 0x1b, 0x2d, 0x18, - 0xfd, 0xbf, 0xb8, 0x61, 0xeb, 0xf7, 0x8d, 0xe8, 0x5b, 0xa0, 0xee, 0x0e, 0x56, 0xe6, 0xe1, - 0x5c, 0x4a, 0x09, 0x51, 0x41, 0xfa, 0x0c, 0xa8, 0xfc, 0x1a, 0x8d, 0x00, 0x14, 0x4d, 0x82, - 0x85, 0x9e, 0x62, 0x7b, 0x70, 0x06, 0x0b, 0x6a, 0xd7, 0xb1, 0x82, 0x46, 0x49, 0xcf, 0x3b, - 0x76, 0x57, 0xd0, 0x27, 0x44, 0xac, 0xb8, 0xb3, 0x74, 0x6b, 0x3a, 0x1c, 0x2b, 0xdb, 0x5c, - 0x9a, 0x57, 0x1c, 0x79, 0xee, 0x80, 0x1d, 0x6a, 0x8d, 0xbb, 0xfd, 0xc1, 0x70, 0x4e, 0x9b, - 0xa0, 0xd3, 0x29, 0x3e, 0xe1, 0x61, 0xe5, 0xe9, 0x69, 0x59, 0xf6, 0x3f, 0x55, 0x5e, 0x0f, - 0x8a, 0x4a, 0x99, 0x95, 0xa4, 0x97, 0x71, 0xd0, 0x72, 0x36, 0xb4, 0x20, 0x0a, 0xce, 0x69, - 0xab, 0xdc, 0xf9, 0xa4, 0x66, 0xd3, 0x0e, 0x81, 0xca, 0x93, 0xa9, 0xb9, 0xd1, 0x92, 0x41, - 0xa3, 0x09, 0x57, 0xcb, 0x05, 0x28, 0xaf, 0xea, 0x86, 0xe1, 0xf1, 0x9c, 0x7d, 0x38, 0x58, - 0x97, 0x6d, 0x50, 0xa6, 0xef, 0xf6, 0xbf, 0x8b, 0x29, 0x8d, 0xbb, 0x86, 0x48, 0x52, 0x58, - 0x8f, 0x88, 0x55, 0x8a, 0x05, 0x40, 0xa0, 0x7c, 0x72, 0xb6, 0xdd, 0xa9, 0x48, 0x77, 0xdc, - 0xee, 0xbc, 0xd3, 0x6f, 0x95, 0x9f, 0x51, 0xa8, 0x5d, 0x7a, 0x61, 0x06, 0x6a, 0x78, 0x1c, - 0xb9, 0xcf, 0xa9, 0xf7, 0x88, 0x81, 0x97, 0x53, 0x5f, 0x62, 0x58, 0xb2, 0x8d, 0x71, 0xce, - 0xf4, 0x05, 0x16, 0x8b, 0x4a, 0xa3, 0xdd, 0x35, 0xfa, 0xdd, 0xd9, 0x95, 0xde, 0xb5, 0x26, - 0x0d, 0xf8, 0x73, 0x26, 0xb6, 0x5c, 0x09, 0x2b, 0x49, 0xac, 0x66, 0x91, 0x33, 0x5f, 0x44, - 0xbe, 0x13, 0xd1, 0x64, 0x44, 0xe4, 0x86, 0x4a, 0xdd, 0xde, 0x2e, 0x2c, 0xe1, 0x89, 0x32, - 0x66, 0x14, 0x2e, 0x75, 0x74, 0xe6, 0x47, 0xf9, 0x74, 0x11, 0xe3, 0x00, 0x3f, 0x13, 0x07, - 0xbc, 0x09, 0x88, 0x4b, 0x51, 0xf6, 0x91, 0xb7, 0x45, 0xaf, 0xaf, 0x69, 0x7b, 0x4f, 0x77, - 0x7d, 0x2e, 0xc7, 0x5c, 0x2c, 0x4f, 0xae, 0x5a, 0x80, 0x6a, 0xef, 0xba, 0x3e, 0x2c, 0x93, - 0x63, 0x3a, 0xe4, 0xce, 0x75, 0xe1, 0xce, 0x38, 0xf7, 0x84, 0xe1, 0xfa, 0x6f, 0x3e, 0x20, - 0x17, 0x3a, 0xe7, 0x99, 0x24, 0xc1, 0x2f, 0x98, 0x32, 0xe4, 0xca, 0x89, 0x80, 0x9c, 0x68, - 0x50, 0xb1, 0x56, 0x7e, 0x5f, 0x51, 0x2c, 0x79, 0x05, 0x16, 0x10, 0xf0, 0x7e, 0x8b, 0x09, - 0xaa, 0xb1, 0xf5, 0xcf, 0xb9, 0x18, 0x14, 0x5e, 0xfd, 0xc0, 0x08, 0xbd, 0x65, 0x1f, 0x7c, - 0x1b, 0x2e, 0x0b, 0x7e, 0xc8, 0xbb, 0x32, 0x71, 0x83, 0x2c, 0x67, 0x82, 0x32, 0xfb, 0xcb, - 0x22, 0xe0, 0xff, 0x9b, 0xc1, 0x0a, 0x54, 0xe7, 0xdb, 0x86, 0x23, 0x00, 0x04, 0x08, 0x06, - 0xd1, 0x5a, 0x8f, 0xc9, 0xe3, 0x3a, 0x9b, 0x51, 0xeb, 0xfd, 0xb2, 0xf3, 0x27, 0x45, 0xa1, - 0xeb, 0xdc, 0xd0, 0xf9, 0xa7, 0x70, 0x23, 0xec, 0xc4, 0x29, 0xf1, 0xce, 0x52, 0x89, 0xa2, - 0xcb, 0xa0, 0x45, 0x6d, 0xa5, 0xa7, 0x73, 0xf4, 0xd7, 0x4c, 0x48, 0xd9, 0x15, 0xb9, 0xe9, - 0x87, 0x84, 0x30, 0xfe, 0x0d, 0xf6, 0x45, 0x88, 0xa4, 0x29, 0x26, 0x5d, 0xde, 0xc9, 0x0f, - 0xea, 0x4c, 0xb3, 0xe1, 0x48, 0x9f, 0x03, 0x99, 0x8f, 0xb6, 0x78, 0xa1, 0xaa, 0x7a, 0xa3, - 0x99, 0xb9, 0x0c, 0xcf, 0x22, 0xc5, 0x6e, 0x51, 0x82, 0xcb, 0x14, 0xbd, 0x5e, 0x03, 0xc1, - 0xe1, 0xc2, 0xec, 0x68, 0x09, 0xb0, 0x20, 0x06, 0xa9, 0x1c, 0x64, 0xdc, 0x8d, 0xac, 0x8c, - 0xbb, 0x1c, 0xb7, 0x6b, 0x80, 0x58, 0x92, 0x85, 0xe4, 0x2c, 0x98, 0xfa, 0x44, 0xd9, 0xe0, - 0xfd, 0x67, 0xb4, 0xa1, 0xfc, 0x02, 0xfd, 0x82, 0x0c, 0xac, 0xa3, 0x6f, 0x20, 0x54, 0x5e, - 0x22, 0xfe, 0xb1, 0x2d, 0xad, 0x46, 0x72, 0x5d, 0x78, 0xea, 0xb3, 0xd4, 0x65, 0xa5, 0xd2, - 0x85, 0xa2, 0xe9, 0xb2, 0xbc, 0xf6, 0xdf, 0x32, 0xa3, 0x2a, 0x91, 0x26, 0x1b, 0x18, 0x05, - 0x23, 0x19, 0xb5, 0x1e, 0x3c, 0x6a, 0x29, 0x7d, 0xc3, 0x6e, 0x52, 0xc7, 0xf2, 0x50, 0x29, - 0x67, 0xfb, 0xeb, 0x0a, 0xd0, 0xdb, 0xf7, 0x0c, 0x8a, 0x25, 0x70, 0xb8, 0xf7, 0x15, 0x88, - 0xfb, 0x28, 0x91, 0xef, 0xf0, 0xa2, 0x3c, 0x28, 0xdd, 0x2f, 0x4f, 0xd0, 0xf6, 0x26, 0xa4, - 0xdb, 0x65, 0x3b, 0x39, 0x61, 0x43, 0xc6, 0xf8, 0x68, 0xd6, 0x55, 0xe2, 0xd5, 0x85, 0x03, - 0x9c, 0x89, 0x1a, 0x11, 0xff, 0xf1, 0x37, 0x76, 0x8d, 0x05, 0xf7, 0x5c, 0x27, 0xb8, 0xd3, - 0x79, 0xad, 0x02, 0xca, 0xb0, 0x52, 0xec, 0x67, 0x89, 0xfb, 0xb1, 0x28, 0x72, 0xae, 0x32, - 0x2f, 0xde, 0x58, 0x2c, 0x8e, 0x6d, 0x87, 0xb3, 0x3f, 0xb8, 0x44, 0x7e, 0x81, 0x76, 0x29, - 0x4b, 0xe9, 0xdf, 0x99, 0xc7, 0x43, 0xde, 0xb2, 0xe3, 0xf9, 0xf9, 0x1c, 0x8a, 0x3b, 0x58, - 0x88, 0xf6, 0x0e, 0x1e, 0x7f, 0x9f, 0x49, 0xb0, 0x49, 0xba, 0xdb, 0x6d, 0x59, 0xdf, 0x42, - 0x8e, 0xa4, 0x13, 0x80, 0xb5, 0x01, 0x90, 0xd9, 0x6f, 0xf7, 0x2e, 0xba, 0x28, 0x7c, 0xa5, - 0x5f, 0x32, 0x43, 0x99, 0x64, 0xa9, 0xa5, 0x9b, 0xa8, 0xc0, 0x99, 0x03, 0x08, 0x02, 0x10, - 0xde, 0xa1, 0x75, 0xc9, 0x72, 0xa7, 0x66, 0x7a, 0x66, 0xca, 0xb9, 0x36, 0xd0, 0x98, 0xaf, - 0xdf, 0x2d, 0xc3, 0xac, 0x5c, 0xda, 0x1c, 0x66, 0xea, 0xb7, 0x3e, 0x89, 0x32, 0x54, 0xb3, - 0x57, 0xa5, 0x4f, 0x9a, 0xda, 0x6b, 0x11, 0x21, 0x79, 0x15, 0x7e, 0xb1, 0x92, 0x64, 0x07, - 0xe8, 0x8f, 0x40, 0x19, 0xbf, 0x7b, 0x34, 0x1d, 0xd5, 0xbb, 0x0e, 0xbc, 0xd3, 0xd9, 0x88, - 0x59, 0xe1, 0xd2, 0xe2, 0x8a, 0x25, 0xd8, 0x6c, 0x34, 0x8c, 0xab, 0xca, 0x24, 0x51, 0xbf, - 0xcd, 0x7d, 0x1a, 0x88, 0x0e, 0x41, 0x0f, 0xcf, 0x10, 0x62, 0x40, 0xf1, 0xef, 0x38, 0xf9, - 0x14, 0x52, 0x9a, 0x6f, 0xd3, 0xf9, 0x6b, 0x98, 0x4f, 0x19, 0x6c, 0x07, 0xec, 0xcf, 0x36, - 0x53, 0x77, 0x58, 0x23, 0x56, 0x08, 0x65, 0xdb, 0x24, 0x1c, 0xd2, 0xdb, 0x62, 0x5f, 0xdc, - 0x1c, 0x01, 0x49, 0xf6, 0x8c, 0x21, 0x6f, 0x71, 0x22, 0x5f, 0x02, 0xb5, 0x00, 0x49, 0x28, - 0x11, 0xc1, 0x3c, 0xba, 0x69, 0xdc, 0x7f, 0xcb, 0xc7, 0xa8, 0x8d, 0xf5, 0xee, 0xe4, 0x4b, - 0x53, 0x8d, 0x01, 0xa3, 0xd1, 0x82, 0x88, 0x28, 0x03, 0x42, 0xed, 0x20, 0x4b, 0xca, 0xb0, - 0x3a, 0x4e, 0x05, 0xee, 0x42, 0xc1, 0xd8, 0xd6, 0x2c, 0x64, 0xd6, 0x83, 0x03, 0xc1, 0x21, - 0x75, 0xd4, 0xce, 0x5d, 0x83, 0x9b, 0x74, 0x88, 0x51, 0x14, 0x9c, 0x5e, 0x73, 0xe5, 0xaf, - 0x1e, 0x12, 0xae, 0xb9, 0xc3, 0x2d, 0xd7, 0x09, 0xf8, 0x4b, 0x2e, 0x14, 0xcf, 0x94, 0x17, - 0xf6, 0xc8, 0x28, 0xbf, 0x6b, 0xd9, 0x33, 0x4c, 0x4c, 0xab, 0x2e, 0xa4, 0x3a, 0xe7, 0x6b, - 0x3d, 0xe0, 0xc4, 0x35, 0xc1, 0xb3, 0x7f, 0x9e, 0xcc, 0x65, 0xeb, 0xed, 0xd8, 0x15, 0x27, - 0x11, 0x66, 0x20, 0x68, 0xaa, 0xf3, 0xa0, 0xf3, 0xa8, 0x6f, 0x51, 0x63, 0x42, 0xcf, 0xba, - 0x10, 0x4f, 0x04, 0xdf, 0x64, 0x87, 0x88, 0xda, 0x49, 0x3e, 0xbf, 0xa2, 0x21, 0xd6, 0x31, - 0xac, 0x9f, 0xf2, 0xf8, 0xd1, 0x5c, 0xf8, 0x89, 0x72, 0x0c, 0x9e, 0x24, 0x30, 0xc1, 0x9f, - 0xd9, 0x36, 0xae, 0xcc, 0xcc, 0xbb, 0x09, 0xf2, 0xc3, 0x5c, 0xf9, 0x33, 0x87, 0x58, 0xb5, - 0x47, 0x69, 0x26, 0x23, 0x57, 0x98, 0xa4, 0x62, 0xa9, 0x0d, 0x70, 0xa7, 0x2d, 0xce, 0x6f, - 0x55, 0x05, 0x8f, 0x8b, 0x51, 0x5b, 0x18, 0xcd, 0x65, 0x9b, 0x47, 0xb6, 0xee, 0xd4, 0xfd, - 0x72, 0x28, 0xa0, 0x94, 0xa2, 0xd7, 0xd2, 0xef, 0x5a, 0xae, 0xc1, 0xf3, 0x6b, 0x5c, 0xa4, - 0x54, 0xdb, 0x48, 0xec, 0xfd, 0xe1, 0xe9, 0x5e, 0x8c, 0x62, 0x4c, 0xf7, 0x7a, 0x50, 0x62, - 0xeb, 0xdf, 0x54, 0x6a, 0x49, 0x6f, 0xdb, 0x5a, 0x02, 0x96, 0xf9, 0x1d, 0x57, 0x8e, 0xa1, - 0x61, 0xaa, 0xc7, 0xc7, 0xa8, 0x1b, 0xf5, 0x33, 0x3d, 0x65, 0x12, 0x45, 0x54, 0xfc, 0x9d, - 0x40, 0x17, 0x7c, 0xff, 0xf4, 0x2e, 0x0b, 0xbd, 0x56, 0x80, 0x5c, 0x83, 0x7f, 0xe6, 0x20, - 0x3f, 0x6e, 0x91, 0xa2, 0x2c, 0x58, 0x33, 0x69, 0xbc, 0x15, 0x10, 0xdc, 0x2d, 0xa3, 0xd6, - 0x06, 0xa9, 0xce, 0xa7, 0xec, 0xa8, 0x28, 0x14, 0xbe, 0xbe, 0x80, 0x82, 0x8f, 0x1d, 0x4c, - 0x24, 0x40, 0x26, 0x68, 0xdd, 0xa9, 0xaa, 0x4c, 0xd6, 0x87, 0x7e, 0x46, 0x7a, 0xaa, 0x43, - 0x56, 0x2e, 0xd9, 0x24, 0xda, 0x6f, 0xdd, 0x21, 0x10, 0x39, 0x48, 0xd5, 0x08, 0xec, 0x5d, - 0x1f, 0xe4, 0xdb, 0x64, 0xa1, 0x99, 0x8b, 0x11, 0x60, 0x2f, 0x4b, 0x44, 0x84, 0xd2, 0x69, - 0x52, 0xfd, 0xee, 0xe9, 0x5b, 0xb0, 0xa8, 0xc5, 0x07, 0x77, 0x15, 0xfe, 0x58, 0xf5, 0x62, - 0xfb, 0x60, 0x4c, 0x43, 0xe0, 0x17, 0x54, 0x42, 0x9f, 0x07, 0x7c, 0x2d, 0xc0, 0xa2, 0x6a, - 0x3e, 0x13, 0x0b, 0x78, 0x5c, 0x62, 0x98, 0x7f, 0x55, 0xe2, 0xc7, 0xb2, 0x58, 0xe1, 0x9d, - 0x53, 0xb5, 0xd9, 0xaf, 0x0c, 0x11, 0x70, 0x85, 0xca, 0x21, 0x87, 0x1a, 0x39, 0x5e, 0x67, - 0xd4, 0x51, 0x75, 0x2e, 0xa8, 0xea, 0x0d, 0x30, 0xc0, 0x93, 0x60, 0x18, 0x7f, 0xdf, 0x4a, - 0x41, 0xa0, 0x80, 0x1c, 0xed, 0x5c, 0xaa, 0x84, 0x4f, 0x2d, 0xec, 0x8c, 0xad, 0x24, 0xa1, - 0x4b, 0xa9, 0x52, 0x27, 0x8e, 0x70, 0xf6, 0xff, 0xc0, 0xb4, 0x13, 0x39, 0x75, 0xd4, 0xfc, - 0x9a, 0xbf, 0xff, 0x53, 0x3f, 0x44, 0x19, 0xd9, 0xa5, 0x28, 0x18, 0x5c, 0x38, 0xfb, 0x4c, - 0x3e, 0x5b, 0x40, 0xf2, 0xf4, 0xc2, 0x2c, 0x95, 0xdb, 0xd2, 0xe5, 0x5f, 0x87, 0x56, 0x63, - 0x28, 0xda, 0x07, 0xa9, 0x90, 0x83, 0x94, 0xdb, 0x56, 0x2c, 0xa3, 0xd0, 0xc4, 0x52, 0x6d, - 0x1f, 0xfa, 0x35, 0x4f, 0xba, 0xcf, 0x12, 0xf4, 0xf0, 0x46, 0xb5, 0x1e, 0x67, 0xba, 0x10, - 0xc9, 0xc3, 0x0a, 0x30, 0xed, 0xcd, 0xc4, 0x3a, 0x87, 0x08, 0x2c, 0xd9, 0x21, 0x5f, 0x68, - 0x0f, 0xf8, 0x2f, 0x6f, 0x2a, 0x27, 0x47, 0x79, 0x16, 0x52, 0x7a, 0xfd, 0x9d, 0x65, 0xec, - 0x53, 0x90, 0xaf, 0xf0, 0x45, 0x24, 0x08, 0x5a, 0x9f, 0xfd, 0xec, 0xd9, 0x9a, 0x4c, 0x0a, - 0xd4, 0x09, 0x58, 0xdd, 0x29, 0xe4, 0x1a, 0x8e, 0xe9, 0xa3, 0x60, 0x85, 0xd8, 0xd5, 0x9c, - 0xb7, 0x33, 0x2c, 0x3a, 0xfe, 0xd7, 0x09, 0x5a, 0x7a, 0x19, 0x3b, 0x67, 0xc2, 0xc9, 0xf1, - 0x41, 0xa4, 0xc6, 0x7f, 0x1e, 0x7d, 0x6a, 0x75, 0x24, 0xce, 0xef, 0x30, 0xdc, 0x74, 0x8f, - 0x2d, 0x8c, 0xf0, 0x5d, 0x2d, 0x4b, 0x0d, 0x0d, 0x1a, 0xda, 0x8b, 0xdb, 0xc9, 0xac, 0xeb, - 0x51, 0x5e, 0xaa, 0xde, 0x05, 0x3c, 0x8c, 0x87, 0x09, 0x08, 0x2d, 0xd2, 0xca, 0xe6, 0x66, - 0x97, 0x70, 0x38, 0x0e, 0x28, 0x53, 0x4b, 0x59, 0x85, 0x6a, 0x59, 0xe2, 0xd2, 0x6f, 0x87, - 0x4f, 0x4b, 0xf5, 0xe1, 0x4d, 0xc9, 0x23, 0xdd, 0xfe, 0x77, 0x44, 0x92, 0x3f, 0xf6, 0x78, - 0x93, 0x18, 0x38, 0x02, 0x24, 0x22, 0x89, 0xb7, 0x59, 0x84, 0x7d, 0xe4, 0xf7, 0x67, 0xaa, - 0xb8, 0xd4, 0x03, 0x92, 0x97, 0xfd, 0xaa, 0xb0, 0x5d, 0xee, 0x1a, 0x48, 0xb1, 0xfb, 0x1c, - 0x9d, 0xaf, 0x64, 0xc3, 0xd6, 0x3e, 0xb7, 0x62, 0xf5, 0xdb, 0xea, 0x61, 0x1d, 0xde, 0xc6, - 0xee, 0x6e, 0x90, 0xfd, 0x0b, 0x74, 0xd2, 0xc2, 0xf7, 0x35, 0x98, 0x78, 0x74, 0x3e, 0xb4, - 0xac, 0x29, 0x4f, 0xcd, 0x95, 0x6f, 0x0a, 0x6b, 0x20, 0xee, 0xd6, 0xd8, 0x6b, 0x34, 0x51, - 0xc0, 0x6f, 0x52, 0x9c, 0x4d, 0xac, 0x9a, 0x11, 0xb8, 0xb8, 0x29, 0x37, 0x8a, 0x1b, 0x8f, - 0x0c, 0x3a, 0x7a, 0x24, 0xfa, 0xc9, 0x5b, 0xef, 0x94, 0x9d, 0x36, 0xf9, 0x1a, 0x5b, 0x97, - 0xab, 0x0d, 0x3e, 0xc4, 0x7c, 0x9a, 0x83, 0xb7, 0x36, 0x1b, 0x2c, 0x93, 0xd2, 0x66, 0x6e, - 0x6f, 0x32, 0x11, 0x2f, 0x21, 0x19, 0x96, 0x3d, 0x7c, 0x5f, 0x2e, 0x6c, 0x05, 0x34, 0x95, - 0x7c, 0x1b, 0x9b, 0x33, 0xa4, 0xb2, 0x6d, 0x5f, 0xda, 0x45, 0x69, 0x0e, 0x5c, 0x1e, 0x5e, - 0xa9, 0x1a, 0x31, 0xc8, 0x23, 0x78, 0x98, 0x34, 0x4b, 0xe9, 0x37, 0xd5, 0x87, 0x46, 0xec, - 0x9b, 0x20, 0x50, 0x35, 0xb9, 0x95, 0xe5, 0x06, 0x50, 0xa6, 0xe1, 0xdd, 0x19, 0xf5, 0xc6, - 0x96, 0xec, 0xb3, 0x08, 0x1c, 0x25, 0xad, 0x3b, 0xfc, 0x11, 0x6c, 0x9a, 0x7d, 0xd8, 0x31, - 0x03, 0x24, 0xb5, 0xcb, 0x90, 0xed, 0xfc, 0x98, 0xb1, 0x46, 0xec, 0xd0, 0xa9, 0x3c, 0x1f, - 0x66, 0xb5, 0xba, 0x5e, 0xf2, 0x5a, 0xd5, 0xf3, 0xdf, 0x54, 0xe7, 0x11, 0x89, 0xdc, 0xf0, - 0xea, 0x09, 0x5d, 0x7a, 0x7a, 0xf6, 0x5f, 0x5d, 0x69, 0xc0, 0xbc, 0xf3, 0x73, 0x73, 0x9a, - 0xd5, 0x78, 0x40, 0xe3, 0x54, 0x31, 0x45, 0xd1, 0xc0, 0x2f, 0x93, 0xbc, 0x1e, 0x2f, 0x39, - 0x4e, 0xb4, 0xf0, 0x3e, 0x57, 0x7a, 0x64, 0x8d, 0x98, 0x66, 0x5d, 0x83, 0x5a, 0x6f, 0x8b, - 0x5f, 0xf2, 0x7e, 0xd1, 0xc9, 0xcc, 0xbb, 0xf7, 0xaa, 0x95, 0x2e, 0x7a, 0x7d, 0x8d, 0xec, - 0x37, 0x7a, 0xb5, 0xbc, 0x8d, 0x62, 0xd2, 0x32, 0x1e, 0xd7, 0x8b, 0x15, 0x06, 0x75, 0xde, - 0x81, 0xab, 0xb0, 0xd4, 0x59, 0xa2, 0x25, 0x34, 0xca, 0x6d, 0xce, 0x3f, 0xa3, 0xae, 0xe6, - 0x09, 0xb3, 0x33, 0xe1, 0x25, 0x56, 0x77, 0x30, 0x8b, 0xf7, 0x30, 0x0f, 0x74, 0x72, 0x36, - 0x8c, 0x4b, 0x5d, 0x94, 0xbc, 0x4f, 0x5e, 0x1d, 0x8a, 0x75, 0xec, 0xd4, 0x21, 0x21, 0xa9, - 0x54, 0x9c, 0xc8, 0x37, 0x28, 0x06, 0xae, 0x5c, 0x72, 0x3b, 0xa0, 0x80, 0x0d, 0x17, 0xbb, - 0x22, 0xe8, 0xf7, 0xa9, 0x31, 0x7d, 0x2c, 0x13, 0x74, 0xbc, 0xa0, 0x09, 0xba, 0x5b, 0x05, - 0xa4, 0xf9, 0xab, 0xb5, 0xd5, 0xd7, 0x11, 0x3f, 0xa3, 0xb4, 0x89, 0x79, 0x1c, 0x4a, 0xd8, - 0xfb, 0xc6, 0x54, 0x41, 0xaf, 0x32, 0xc9, 0x71, 0xaa, 0x5a, 0xb1, 0xb5, 0xe0, 0xa0, 0x73, - 0x45, 0x18, 0x73, 0x17, 0xd2, 0xcb, 0xb8, 0x70, 0x30, 0xbb, 0xce, 0x25, 0xad, 0x9e, 0x8d, - 0xf3, 0x0d, 0xec, 0x26, 0x3f, 0x2c, 0x16, 0x49, 0x45, 0x68, 0xbe, 0x04, 0x3e, 0x67, 0x1a, - 0xa6, 0x7e, 0xe9, 0x44, 0x63, 0x43, 0x91, 0x92, 0x25, 0x84, 0x04, 0xe6, 0xa8, 0xb7, 0xf2, - 0x70, 0x86, 0xba, 0x2e, 0x34, 0x4c, 0x0f, 0x45, 0xac, 0x39, 0x8d, 0x0c, 0x59, 0x60, 0x08, - 0xb2, 0x07, 0x79, 0xfd, 0xd0, 0x60, 0xad, 0x0d, 0x53, 0xa6, 0x9b, 0x02, 0x22, 0xf2, 0xbc, - 0xb4, 0xbd, 0x9e, 0x8a, 0xe8, 0x3b, 0xa7, 0x76, 0x21, 0x8e, 0x59, 0x5f, 0x08, 0xb6, 0xf9, - 0x4f, 0x18, 0x09, 0x8b, 0x8a, 0x94, 0x59, 0x93, 0xa3, 0x23, 0xf1, 0xdb, 0x62, 0x88, 0x30, - 0xe5, 0xea, 0xf1, 0x79, 0x3a, 0xf4, 0x3a, 0x57, 0xee, 0xab, 0xa0, 0x82, 0x39, 0x44, 0xd9, - 0x13, 0xb9, 0x32, 0xb4, 0x97, 0xb9, 0xa9, 0xb3, 0x23, 0x81, 0x61, 0xed, 0x96, 0x51, 0xd9, - 0xc5, 0x1c, 0x1b, 0xe7, 0x2a, 0x18, 0x83, 0xdb, 0xf5, 0xf2, 0x93, 0x98, 0xd8, 0x79, 0xc3, - 0x38, 0x6d, 0x86, 0x83, 0x9a, 0x80, 0x0d, 0x21, 0x5e, 0xbd, 0x7c, 0x7a, 0x32, 0xd0, 0x75, - 0xea, 0xe4, 0x95, 0x01, 0xcc, 0xa3, 0x2c, 0x74, 0x97, 0x1a, 0x25, 0xc7, 0x1a, 0x38, 0xe6, - 0x92, 0x8b, 0x89, 0xff, 0x56, 0xcd, 0x8d, 0x9f, 0xa0, 0x18, 0x9b, 0x00, 0xc4, 0x58, 0x38, - 0x49, 0x6a, 0x87, 0x59, 0xcc, 0x3b, 0xde, 0xb1, 0x6a, 0x86, 0x12, 0x74, 0x03, 0xd7, 0x04, - 0xc4, 0x63, 0xab, 0x1f, 0x5f, 0xf8, 0x4b, 0xba, 0x1d, 0x27, 0x06, 0xba, 0x68, 0xee, 0xe2, - 0xd3, 0x59, 0xb1, 0xc1, 0x7b, 0x97, 0x4e, 0x36, 0x9e, 0x13, 0x62, 0x9a, 0xad, 0x75, 0xe5, - 0x44, 0xaa, 0x9c, 0x5e, 0xdd, 0x05, 0x24, 0x6f, 0x44, 0x54, 0xc2, 0x5a, 0xfd, 0x4e, 0x97, - 0x49, 0xfc, 0xf8, 0xe9, 0x87, 0x42, 0x7d, 0xc5, 0xd6, 0x36, 0x21, 0x20, 0x6c, 0x2c, 0x32, - 0xf9, 0xca, 0x49, 0x2f, 0x7c, 0x3c, 0x24, 0x39, 0xd6, 0x91, 0xd3, 0x69, 0xf1, 0x8b, 0x91, - 0x54, 0xfd, 0xa0, 0x7a, 0x01, 0x52, 0x4a, 0xee, 0xf7, 0xea, 0xac, 0x19, 0xe8, 0x26, 0x8c, - 0x5b, 0x23, 0xd3, 0xa3, 0xa6, 0x44, 0xdf, 0x9c, 0x90, 0xd8, 0x09, 0x68, 0xda, 0x44, 0x50, - 0x2c, 0x55, 0x44, 0xd5, 0xc2, 0x7d, 0xab, 0xb0, 0x44, 0x81, 0xe5, 0xd9, 0x89, 0x0b, 0x08, - 0x7e, 0xe0, 0x15, 0x0f, 0xef, 0x80, 0xd9, 0x46, 0xef, 0x0d, 0x58, 0x9b, 0xa2, 0x5f, 0x74, - 0xb4, 0x5c, 0x66, 0x84, 0x5b, 0x5d, 0x5e, 0x08, 0xd1, 0xfc, 0x8e, 0x7b, 0xb4, 0x51, 0x59, - 0x17, 0xb3, 0x32, 0xdb, 0x86, 0x6a, 0x7a, 0x11, 0x74, 0x78, 0xda, 0x6b, 0x50, 0x10, 0x16, - 0x04, 0x48, 0x1f, 0xc8, 0x24, 0x9f, 0x77, 0xb7, 0x39, 0x0f, 0xd4, 0xde, 0x34, 0x50, 0x3a, - 0xb7, 0x2d, 0x0e, 0x6e, 0x9e, 0x15, 0x9a, 0x8e, 0x90, 0x1e, 0x93, 0xbf, 0x6b, 0xb8, 0xeb, - 0x10, 0x52, 0xe4, 0x0d, 0x7f, 0x05, 0x0e, 0x5d, 0x87, 0x25, 0x8f, 0xbc, 0x7f, 0x25, 0xfa, - 0xce, 0x37, 0x03, 0xac, 0x15, 0xfa, 0x46, 0x3d, 0xd5, 0x48, 0xfb, 0xf2, 0x63, 0x7b, 0xda, - 0x6f, 0x37, 0xdb, 0xbe, 0xc0, 0xad, 0xac, 0xb3, 0x36, 0xe4, 0xe6, 0x15, 0xd7, 0xd4, 0xc8, - 0x4e, 0xe0, 0x74, 0x3d, 0xe7, 0x31, 0x05, 0xf3, 0x42, 0x79, 0x12, 0x91, 0x56, 0x8e, 0xf7, - 0xd1, 0x60, 0xd4, 0x7d, 0x28, 0x53, 0x5b, 0xe9, 0x16, 0x25, 0x17, 0x32, 0x6c, 0x3a, 0x80, - 0xc8, 0x23, 0xe3, 0x54, 0xef, 0xc4, 0xfe, 0xd7, 0x21, 0xa1, 0xc1, 0x01, 0xfc, 0xad, 0x4e, - 0x3d, 0x14, 0xb5, 0xd4, 0x08, 0x9d, 0xdd, 0x98, 0x6c, 0xd6, 0x26, 0x4d, 0xad, 0x83, 0x50, - 0x45, 0x82, 0x0e, 0x8d, 0x1e, 0x4c, 0x7a, 0xea, 0x65, 0xb2, 0x1c, 0x75, 0x2d, 0xe3, 0x57, - 0xd2, 0x26, 0x56, 0x8c, 0x46, 0xb7, 0x83, 0x61, 0x4b, 0x1d, 0xe0, 0x42, 0xa1, 0x3f, 0x9d, - 0xe5, 0x37, 0xdd, 0xfa, 0x21, 0xd8, 0x45, 0x2a, 0xa5, 0xc8, 0x4f, 0x8a, 0x38, 0x0c, 0xc0, - 0x7f, 0x43, 0xac, 0xfa, 0xaf, 0x8b, 0x84, 0xdf, 0x70, 0xc3, 0xf7, 0x1b, 0xff, 0x1c, 0x82, - 0x66, 0xdb, 0x04, 0x27, 0xa8, 0x60, 0x38, 0xd9, 0x6a, 0x76, 0xbc, 0xd2, 0xac, 0xa7, 0x2c, - 0xa7, 0x25, 0xde, 0xe2, 0xff, 0xc0, 0x30, 0xbb, 0x45, 0x3c, 0x11, 0xea, 0x3b, 0x33, 0xfb, - 0x40, 0x71, 0xbe, 0xfe, 0xa6, 0x0b, 0xb9, 0xac, 0xff, 0xa9, 0xe4, 0xc6, 0x5d, 0x9a, 0x9b, - 0xea, 0x10, 0x53, 0x95, 0xa3, 0x4f, 0x9b, 0xc7, 0x8c, 0x4c, 0x5e, 0x92, 0x95, 0xc1, 0x52, - 0xd2, 0xe1, 0x45, 0x4a, 0x53, 0x14, 0xc1, 0xed, 0x1f, 0xba, 0x8a, 0x47, 0xc3, 0x64, 0x1e, - 0x7b, 0xf6, 0x61, 0x39, 0xb8, 0x1c, 0x83, 0x59, 0x2d, 0x1e, 0xf6, 0xb4, 0x81, 0x32, 0xee, - 0xe0, 0x97, 0xd2, 0x25, 0xdb, 0xa6, 0x44, 0xf0, 0xe9, 0x73, 0xa1, 0xb5, 0xfc, 0x1b, 0x04, - 0xe5, 0x5d, 0x35, 0x3c, 0xe3, 0x1b, 0x4a, 0x30, 0x02, 0x29, 0x00, 0xe9, 0xda, 0xc5, 0x74, - 0x6f, 0x7e, 0xb4, 0xa1, 0x4f, 0xbb, 0xfe, 0x8b, 0x36, 0x74, 0x2a, 0x4e, 0xee, 0xc6, 0x85, - 0x38, 0x05, 0x74, 0xfe, 0x5c, 0xf2, 0xca, 0x39, 0xdd, 0xab, 0xca, 0xa4, 0x30, 0xf9, 0xee, - 0xf1, 0x3b, 0xdd, 0x2c, 0xe0, 0x64, 0x73, 0x88, 0x9e, 0x80, 0x0f, 0xbf, 0xf8, 0x5e, 0x1a, - 0x8b, 0x05, 0xea, 0x9a, 0x9a, 0xae, 0x82, 0xeb, 0x6d, 0x04, 0xbf, 0xa8, 0x25, 0xdf, 0x54, - 0x17, 0x92, 0x3d, 0x52, 0x4e, 0x3c, 0x93, 0xc6, 0x5a, 0xd8, 0x50, 0xf8, 0x57, 0x42, 0xf2, - 0x02, 0x9e, 0xbb, 0xf6, 0x44, 0xd7, 0x0d, 0x59, 0xdf, 0x77, 0x3b, 0x23, 0x54, 0x7b, 0xa7, - 0x67, 0x75, 0xf3, 0xe5, 0x75, 0x3e, 0x9d, 0xdc, 0xe0, 0xdc, 0x75, 0xb8, 0x93, 0xf0, 0xd2, - 0x5b, 0x03, 0x9c, 0x56, 0x4d, 0x22, 0xd9, 0xfd, 0x42, 0xb2, 0xcf, 0xc9, 0xb4, 0x3f, 0xe5, - 0x32, 0x01, 0x75, 0x54, 0xa4, 0xdf, 0xa3, 0x43, 0xcd, 0x77, 0x25, 0x87, 0xb9, 0x74, 0x07, - 0x71, 0xe8, 0xa6, 0x82, 0x82, 0x14, 0x16, 0x94, 0x45, 0x6a, 0xb1, 0x42, 0xfe, 0x7b, 0xbf, - 0x08, 0xa2, 0x1d, 0x42, 0xc2, 0x79, 0x6e, 0xec, 0x50, 0x71, 0x57, 0xa5, 0x81, 0xbf, 0xe4, - 0x52, 0x68, 0xf1, 0xd4, 0xc9, 0xdb, 0x34, 0x2d, 0x9e, 0xda, 0x2f, 0x29, 0xda, 0x43, 0x6a, - 0xc6, 0x13, 0x09, 0x9e, 0xf1, 0xfb, 0xe1, 0x6b, 0x9b, 0x48, 0x5d, 0x8e, 0xcb, 0xc0, 0xb3, - 0x0f, 0x48, 0x67, 0x8e, 0x53, 0xd7, 0x51, 0x8e, 0xf4, 0x44, 0x1d, 0xcf, 0xc4, 0x03, 0x0d, - 0x64, 0x68, 0xb9, 0x62, 0x2b, 0x0b, 0x31, 0xf1, 0xc8, 0x22, 0xce, 0xbe, 0xc5, 0xa6, 0x06, - 0x4f, 0x43, 0x9a, 0x1b, 0xa5, 0xfc, 0xa6, 0xac, 0xe4, 0x94, 0x5e, 0x4b, 0x80, 0x65, 0xfe, - 0xb4, 0xeb, 0xd4, 0x4d, 0x0e, 0x66, 0x01, 0x1d, 0x2b, 0x31, 0x7d, 0xfc, 0x3a, 0xb2, 0x63, - 0x45, 0x5b, 0x3a, 0x64, 0xd1, 0xc8, 0x25, 0x1a, 0xa6, 0x6c, 0x96, 0xa5, 0x9c, 0x20, 0xfc, - 0xf8, 0x8a, 0x0d, 0x5b, 0x83, 0x19, 0xd4, 0xde, 0x01, 0xc3, 0x22, 0x06, 0x6c, 0x0b, 0x0a, - 0x17, 0x9c, 0x77, 0x1f, 0xc0, 0x53, 0x07, 0xc7, 0x6f, 0xe3, 0xdf, 0x61, 0x6e, 0x21, 0x0e, - 0x8f, 0x26, 0x3b, 0x89, 0x3b, 0x7b, 0x11, 0x7a, 0xf2, 0x88, 0x29, 0x98, 0xff, 0xec, 0x4b, - 0x95, 0xee, 0x8b, 0xc7, 0xde, 0x60, 0x0a, 0x49, 0x0e, 0x4f, 0xa3, 0x91, 0xa9, 0xfc, 0x97, - 0x4a, 0x34, 0xe8, 0x00, 0x8f, 0x38, 0xa6, 0x91, 0xe5, 0xde, 0xfe, 0x2d, 0x20, 0xde, 0xd8, - 0x9b, 0x6a, 0x97, 0x14, 0x3a, 0xaf, 0x2f, 0x47, 0x8a, 0x66, 0x22, 0x03, 0x68, 0x4b, 0x9b, - 0xe4, 0xbd, 0x98, 0x2e, 0x5f, 0x21, 0x63, 0x5a, 0x9a, 0x70, 0x27, 0x41, 0x46, 0x51, 0x27, - 0xbb, 0xa1, 0xb6, 0xd5, 0x2d, 0xdf, 0x09, 0x64, 0xd5, 0xdb, 0x0c, 0x2f, 0x4c, 0x00, 0x55, - 0x45, 0xd1, 0x12, 0xd7, 0xdb, 0x81, 0x09, 0x40, 0x59, 0xba, 0x93, 0xe8, 0xfc, 0x0c, 0x1a, - 0x9e, 0x00, 0xd9, 0xf7, 0xc5, 0x68, 0x23, 0x16, 0x10, 0x51, 0xba, 0xb0, 0x0c, 0x67, 0x56, - 0x6d, 0xd4, 0x81, 0x88, 0xa1, 0x6f, 0xcc, 0x9c, 0x54, 0x3b, 0x5a, 0xc0, 0x27, 0x90, 0xaa, - 0xf1, 0x10, 0xf7, 0x28, 0x56, 0xec, 0x49, 0x05, 0x41, 0x88, 0x24, 0x9a, 0x8b, 0x62, 0x5f, - 0xe1, 0x9c, 0xa6, 0xd7, 0x23, 0x08, 0x80, 0xf5, 0x85, 0x4d, 0xce, 0xa4, 0xf5, 0x11, 0xc0, - 0x4b, 0xd3, 0x64, 0xe4, 0x2e, 0x08, 0x3b, 0xea, 0x33, 0x46, 0xaf, 0x92, 0xec, 0x61, 0xc8, - 0x14, 0xee, 0x6f, 0x90, 0x5a, 0xe8, 0x3e, 0xcb, 0xe1, 0x41, 0xd8, 0x5f, 0xab, 0xac, 0x5b, - 0xe7, 0x61, 0x09, 0x92, 0x62, 0xc8, 0x42, 0x12, 0x3f, 0x9d, 0x17, 0x11, 0x17, 0x1d, 0x89, - 0x1c, 0x59, 0x55, 0x42, 0xec, 0x37, 0x7b, 0xdc, 0x30, 0xe7, 0x01, 0x8f, 0x76, 0x6c, 0xda, - 0xb0, 0x45, 0x50, 0x02, 0x8d, 0x27, 0xea, 0x55, 0x04, 0x11, 0xf6, 0xf3, 0x3f, 0xca, 0xed, - 0xef, 0x8c, 0xf6, 0xb6, 0xd5, 0x83, 0x46, 0xa1, 0x56, 0xd9, 0xc5, 0xa5, 0x65, 0x45, 0x9c, - 0x50, 0x3e, 0x9e, 0xc6, 0xd0, 0x83, 0x8d, 0x13, 0xd0, 0x6a, 0x21, 0x30, 0x44, 0x70, 0x6a, - 0x95, 0xf2, 0x48, 0x18, 0x84, 0xe5, 0x60, 0xa4, 0xb3, 0xe5, 0x74, 0xe0, 0x8a, 0x47, 0x58, - 0x82, 0x89, 0xb7, 0x16, 0xc0, 0x1a, 0x0f, 0x0f, 0x35, 0x56, 0xa3, 0x0c, 0xdb, 0x12, 0xc0, - 0x02, 0x8f, 0x1a, 0x72, 0xd1, 0x73, 0xbf, 0xf0, 0x67, 0x94, 0xaa, 0xc8, 0x73, 0x5b, 0x95, - 0x61, 0x5a, 0xca, 0x41, 0xf5, 0xe9, 0xc6, 0x38, 0x21, 0x67, 0x1b, 0xe7, 0xc5, 0x7b, 0x0d, - 0x06, 0x60, 0x6d, 0x31, 0x40, 0x6e, 0xa5, 0xd6, 0xfa, 0xe1, 0xd1, 0x85, 0x8e, 0x52, 0x2d, - 0xf5, 0x06, 0x90, 0xf8, 0x55, 0xf9, 0x1e, 0x8e, 0x7f, 0xd5, 0xc7, 0x32, 0x0a, 0x93, 0xb8, - 0xe0, 0xe3, 0x1c, 0xe1, 0xa0, 0xfe, 0xa6, 0x11, 0x4b, 0x08, 0x14, 0x47, 0x10, 0x56, 0xc5, - 0x62, 0x38, 0x22, 0x12, 0xfc, 0x2b, 0x9a, 0x9e, 0xf2, 0x19, 0xe7, 0xa4, 0xa2, 0x0f, 0xb8, - 0x32, 0xeb, 0x42, 0x77, 0x3c, 0xb2, 0x41, 0xbf, 0x3c, 0x05, 0x19, 0xf3, 0x6a, 0x50, 0x74, - 0x41, 0x0e, 0x02, 0xab, 0x1a, 0xc7, 0x69, 0x04, 0x76, 0xb4, 0xb2, 0x45, 0x6f, 0x05, 0x92, - 0x77, 0x83, 0x9b, 0xc2, 0x4b, 0xeb, 0x30, 0xf1, 0x8e, 0xf0, 0x2c, 0xa8, 0x52, 0xdf, 0xcf, - 0x0f, 0xd4, 0x63, 0xb7, 0x55, 0x9e, 0x8d, 0xd9, 0xc0, 0xef, 0x02, 0xaa, 0x74, 0x76, 0x43, - 0x4b, 0x60, 0x53, 0x04, 0xce, 0x21, 0xa5, 0xa0, 0x1c, 0x48, 0xca, 0x64, 0xe3, 0xc7, 0x18, - 0xc2, 0x67, 0x95, 0xba, 0x85, 0xe9, 0x87, 0xee, 0xd8, 0x03, 0x07, 0xc4, 0xe7, 0x6a, 0xf8, - 0x83, 0xb4, 0xbc, 0xb6, 0x82, 0x9e, 0xc9, 0x1e, 0xe3, 0xa9, 0x36, 0x22, 0x77, 0xc4, 0x98, - 0x3c, 0x50, 0xfb, 0x6e, 0xd9, 0x42, 0x2a, 0x48, 0xb6, 0xe8, 0x33, 0x7c, 0xc4, 0x30, 0xd7, - 0xc0, 0x59, 0x6d, 0x5c, 0x74, 0x93, 0x8b, 0x70, 0x28, 0x25, 0xcc, 0x52, 0x3d, 0xb1, 0xa8, - 0xa6, 0x60, 0x39, 0x3a, 0x2d, 0xf6, 0x53, 0x0e, 0x34, 0x28, 0xe1, 0x2b, 0x89, 0x08, 0x27, - 0x3a, 0x28, 0x51, 0xef, 0x20, 0xf9, 0x9c, 0x36, 0xb1, 0x2c, 0xeb, 0x6a, 0xeb, 0x60, 0x08, - 0x0b, 0x25, 0xac, 0x34, 0x4d, 0x21, 0xea, 0x2d, 0x27, 0x98, 0x62, 0x14, 0x68, 0x41, 0x94, - 0x66, 0x20, 0x0d, 0x52, 0x32, 0x0d, 0x71, 0x68, 0x1a, 0x44, 0x13, 0x47, 0xda, 0x22, 0xd6, - 0xf5, 0x3a, 0x3a, 0x05, 0x9f, 0xfc, 0x62, 0xbc, 0x76, 0xd9, 0x37, 0x7f, 0x73, 0x2b, 0x8d, - 0x83, 0xa5, 0x81, 0xf3, 0x98, 0x95, 0x56, 0x99, 0x19, 0x73, 0xd7, 0x24, 0xf7, 0x62, 0x79, - 0xf5, 0x7b, 0x2e, 0x05, 0x41, 0x65, 0x72, 0xfb, 0x6a, 0xd1, 0xd2, 0xe9, 0x9c, 0x08, 0x53, - 0x8d, 0x08, 0x84, 0x27, 0xe7, 0x6a, 0xda, 0x99, 0xf2, 0xbf, 0x13, 0xb4, 0x1f, 0xa8, 0x5f, - 0x21, 0x40, 0xc0, 0x64, 0xb4, 0x0a, 0x6a, 0x2f, 0x88, 0x09, 0xff, 0x82, 0x19, 0x9b, 0xec, - 0x4f, 0xa0, 0xdf, 0x73, 0xb2, 0x41, 0x00, 0x09, 0xa6, 0xff, 0x38, 0x58, 0x68, 0x44, 0xe0, - 0x67, 0xda, 0xd7, 0x57, 0xd9, 0x9c, 0xf6, 0x0a, 0xd6, 0x9f, 0x6a, 0x3b, 0x98, 0x59, 0xdd, - 0xdf, 0xe2, 0x10, 0x56, 0xd5, 0xf3, 0x51, 0x20, 0x7e, 0xc5, 0x78, 0x0d, 0x18, 0xcf, 0x8f, - 0x0c, 0x01, 0xf2, 0xaa, 0xa2, 0x05, 0x9c, 0x65, 0x8e, 0x10, 0x86, 0x0a, 0x2c, 0x6c, 0x45, - 0x7b, 0x6d, 0x03, 0xdf, 0x57, 0xd3, 0x36, 0x21, 0xee, 0xd1, 0xd1, 0x81, 0x5e, 0x27, 0x86, - 0xbc, 0x76, 0x70, 0x85, 0xe0, 0x95, 0x46, 0xc7, 0xc8, 0x8b, 0x95, 0x28, 0x39, 0xc8, 0x55, - 0xf9, 0x61, 0x7c, 0xd5, 0x37, 0x48, 0xad, 0x68, 0x1c, 0x4e, 0x84, 0x38, 0x48, 0x34, 0xad, - 0x24, 0xab, 0xfa, 0x1d, 0x6f, 0xda, 0x2e, 0x41, 0xc4, 0xcc, 0x5c, 0x3b, 0xaf, 0x32, 0xb7, - 0x13, 0x3d, 0x0a, 0x44, 0x83, 0x01, 0x78, 0x07, 0xfe, 0x6f, 0xae, 0xfe, 0x11, 0xa4, 0x29, - 0x54, 0x7d, 0x83, 0x8a, 0xd4, 0xed, 0xba, 0x93, 0x13, 0x60, 0x3a, 0xd4, 0xa9, 0xa4, 0x63, - 0x3e, 0x06, 0x81, 0xa0, 0x31, 0x8b, 0xc2, 0x25, 0x70, 0xaa, 0xc8, 0x41, 0xcd, 0xce, 0x55, - 0x9b, 0x6a, 0x6f, 0x75, 0x01, 0xcb, 0xd4, 0xde, 0x6b, 0xcc, 0x38, 0xe5, 0x14, 0x18, 0xe4, - 0x53, 0xac, 0x26, 0x08, 0x1e, 0x07, 0x78, 0x3c, 0xd4, 0x17, 0xdd, 0x40, 0x50, 0x3c, 0x94, - 0x46, 0x6b, 0xc4, 0xf3, 0x7b, 0xdd, 0x2d, 0xe3, 0xe9, 0x0e, 0x23, 0x44, 0x39, 0xbc, 0x97, - 0xa4, 0xa0, 0xda, 0x84, 0x20, 0xec, 0x94, 0xce, 0x0e, 0x04, 0xd4, 0xb0, 0x61, 0xb4, 0x4f, - 0xa7, 0x08, 0x71, 0xd6, 0x8e, 0x48, 0x6f, 0x88, 0xd4, 0x19, 0x60, 0x0a, 0x91, 0x77, 0x99, - 0xbb, 0xce, 0x30, 0xb8, 0x36, 0x1b, 0x0c, 0x13, 0x0e, 0x2d, 0x79, 0xc6, 0xe6, 0x79, 0xa4, - 0xd7, 0x4d, 0xea, 0x8e, 0xa2, 0xc1, 0x40, 0xbd, 0x2b, 0xde, 0x04, 0x78, 0xa6, 0x59, 0x8a, - 0x10, 0xac, 0xc3, 0xf6, 0x53, 0x71, 0xfe, 0x79, 0x0f, 0x79, 0x37, 0xd5, 0xbf, 0xdd, 0xab, - 0xad, 0xac, 0x9e, 0x12, 0xac, 0xbd, 0xd5, 0x06, 0x26, 0x35, 0xab, 0xb1, 0x0d, 0x26, 0x5e, - 0x87, 0x3a, 0xa0, 0x07, 0xb0, 0xb5, 0x72, 0xc8, 0xad, 0x43, 0x2b, 0x87, 0xb1, 0x91, 0xf4, - 0x1c, 0x42, 0xd8, 0x51, 0xa6, 0x6e, 0xf6, 0xa7, 0xff, 0x53, 0xd8, 0xa5, 0x11, 0xce, 0x2c, - 0x01, 0xf4, 0x1d, 0x22, 0x23, 0x4d, 0xcb, 0x27, 0x61, 0x06, 0xdb, 0x9d, 0x3c, 0x99, 0x0c, - 0x5e, 0x1f, 0xca, 0x13, 0xde, 0x97, 0xdf, 0xbd, 0x28, 0x72, 0xdc, 0x2d, 0x69, 0x9c, 0x3b, - 0x6a, 0xa2, 0x0c, 0x5c, 0xf6, 0xfa, 0x2f, 0xc5, 0xe6, 0xd6, 0x6c, 0xcd, 0x1a, 0xfe, 0x39, - 0xed, 0x31, 0x72, 0x26, 0xbb, 0xa5, 0xfd, 0x2a, 0x97, 0x0a, 0xdb, 0xa5, 0x54, 0xb1, 0x44, - 0x00, 0x3f, 0x9b, 0x79, 0xa2, 0xda, 0xc3, 0xc1, 0x4d, 0xdf, 0x70, 0x43, 0xc9, 0x0b, 0xdb, - 0x4a, 0x24, 0xf7, 0xba, 0x4b, 0xac, 0x46, 0x78, 0x42, 0x3b, 0x66, 0xe3, 0x2d, 0x3a, 0x42, - 0x9a, 0x84, 0x3c, 0x5b, 0x36, 0x6f, 0x66, 0x14, 0x58, 0xec, 0x60, 0x4b, 0x67, 0xfb, 0x6a, - 0x34, 0x2c, 0x6a, 0x15, 0xb7, 0xc6, 0x7b, 0x0a, 0xe3, 0x5b, 0x9a, 0xcd, 0x84, 0x2e, 0xab, - 0x18, 0x8f, 0x08, 0x07, 0xe2, 0x25, 0xb6, 0x3d, 0x21, 0x0f, 0x59, 0xb7, 0x92, 0xaa, 0x4f, - 0x79, 0xcd, 0x60, 0x7e, 0x0a, 0x0a, 0x85, 0xff, 0x4d, 0x0d, 0x01, 0x0f, 0xe2, 0xcf, 0x97, - 0xee, 0x13, 0x75, 0xfc, 0x91, 0x80, 0x0a, 0x96, 0x86, 0x6c, 0x88, 0x09, 0xeb, 0x5c, 0x71, - 0x6b, 0x24, 0x51, 0xec, 0xd3, 0xa4, 0x83, 0x14, 0x47, 0x8b, 0xa0, 0x21, 0x95, 0x38, 0xf3, - 0x0f, 0x56, 0x81, 0xb5, 0x93, 0xfe, 0xe1, 0x63, 0x8f, 0x88, 0x6b, 0x85, 0x38, 0xce, 0x3c, - 0x5c, 0xea, 0x46, 0x73, 0xb8, 0x00, 0xd9, 0x5d, 0xa8, 0x3f, 0x76, 0xfd, 0xdc, 0x9e, 0x78, - 0x90, 0x83, 0xd2, 0x29, 0xb2, 0xbd, 0x86, 0x85, 0x58, 0x65, 0x33, 0xb7, 0x01, 0xab, 0x68, - 0x84, 0xc5, 0xab, 0x7a, 0x77, 0x8e, 0x4b, 0xf2, 0x27, 0x3d, 0x44, 0x3e, 0xa4, 0x4e, 0x19, - 0x20, 0xde, 0xaa, 0xe2, 0x28, 0xf2, 0x85, 0x86, 0xa6, 0x92, 0x2a, 0xce, 0x88, 0xae, 0x9f, - 0xfe, 0xff, 0xac, 0x1a, 0xbf, 0x78, 0x69, 0xe4, 0x98, 0xb5, 0xa1, 0x54, 0x97, 0x05, 0x25, - 0x70, 0x3e, 0x67, 0x00, 0x96, 0xc5, 0xe0, 0x39, 0x9c, 0x95, 0x92, 0x7d, 0xd7, 0x23, 0x83, - 0xb9, 0xe2, 0xf3, 0xbb, 0x65, 0x98, 0xcc, 0xda, 0x47, 0xf2, 0xd3, 0x59, 0x43, 0x34, 0x92, - 0x32, 0x03, 0x70, 0x5f, 0x5f, 0xcd, 0x8c, 0xba, 0xc6, 0x97, 0x48, 0x20, 0x18, 0x8e, 0xe2, - 0xfc, 0x96, 0xc9, 0x6a, 0x4a, 0xcf, 0x4c, 0xf8, 0x68, 0x55, 0x3c, 0x80, 0x8f, 0x69, 0x41, - 0xe2, 0xf1, 0x08, 0x90, 0xe4, 0xa0, 0xf4, 0x63, 0x04, 0x4f, 0x64, 0x16, 0xfc, 0xd5, 0x32, - 0xf0, 0x87, 0x57, 0x60, 0x28, 0x85, 0xfc, 0x1f, 0x8c, 0x42, 0xec, 0xc1, 0x41, 0x93, 0x32, - 0x0b, 0x4b, 0x8e, 0xbc, 0x18, 0xc7, 0x15, 0xd4, 0xe1, 0x99, 0x3f, 0x69, 0x74, 0x05, 0x44, - 0xd1, 0xd7, 0x83, 0xc0, 0x01, 0x00, 0x34, 0x0e, 0x44, 0x56, 0xf5, 0xe2, 0x6c, 0xfe, 0x26, - 0xfb, 0x10, 0x2a, 0xfc, 0xea, 0xb6, 0x1f, 0xef, 0x62, 0xbe, 0x39, 0x0d, 0xa2, 0xfc, 0xea, - 0x72, 0x2d, 0xa6, 0x1e, 0x5c, 0x25, 0x0f, 0xcc, 0xe6, 0xad, 0xc5, 0xe6, 0x53, 0xc9, 0x1c, - 0x46, 0x4a, 0x89, 0xaf, 0x58, 0xf9, 0xa3, 0x09, 0x0b, 0x6e, 0xdf, 0x29, 0xcd, 0xfc, 0x4c, - 0xb8, 0x9b, 0x3e, 0x0e, 0x5b, 0xdb, 0x4e, 0x4b, 0x82, 0x36, 0x7b, 0x01, 0xe9, 0x83, 0x75, - 0x5a, 0xfc, 0xe5, 0x90, 0xc3, 0xe9, 0xc2, 0x6f, 0x15, 0x8f, 0x01, 0xc5, 0x8a, 0x0a, 0xea, - 0x73, 0x02, 0xc0, 0xa4, 0x7a, 0x18, 0x32, 0x30, 0xb9, 0x05, 0xb7, 0x03, 0x02, 0xef, 0xac, - 0x2f, 0xdc, 0x5c, 0x40, 0x2a, 0x56, 0x0b, 0xe5, 0xe3, 0x70, 0x85, 0x88, 0x1d, 0xd9, 0x7d, - 0xa0, 0x40, 0x8d, 0x37, 0x85, 0xdf, 0xd0, 0xca, 0xd6, 0x1f, 0xe7, 0x67, 0xfa, 0xc5, 0xb8, - 0x92, 0xdd, 0x4f, 0x26, 0x4d, 0x77, 0xbe, 0x51, 0xa8, 0x0b, 0x1d, 0x2c, 0xb4, 0x52, 0x33, - 0x8d, 0x95, 0xaf, 0xf1, 0xbd, 0x6e, 0x91, 0xde, 0xac, 0xf6, 0xba, 0x0a, 0x5c, 0x9b, 0x67, - 0x20, 0x21, 0xd1, 0x33, 0xf7, 0x0f, 0xf4, 0xb1, 0x2a, 0x6b, 0x5b, 0x30, 0x31, 0x01, 0x1d, - 0xb3, 0x10, 0xec, 0xef, 0x05, 0x24, 0x72, 0xd6, 0xb5, 0x14, 0x48, 0xef, 0xc7, 0x93, 0xf8, - 0xf4, 0x76, 0x9a, 0x24, 0x01, 0xe3, 0x26, 0xca, 0x30, 0xa0, 0xc5, 0x1c, 0x7e, 0xc2, 0x19, - 0x7a, 0x87, 0xf9, 0x1d, 0xd3, 0xa4, 0xae, 0x81, 0xb3, 0x06, 0x2f, 0xbd, 0xc3, 0xd5, 0xb6, - 0xd7, 0xa7, 0x82, 0x8d, 0xab, 0x0e, 0x34, 0x9e, 0xe2, 0x37, 0x2b, 0x0b, 0x49, 0x94, 0x1f, - 0x25, 0x33, 0x27, 0xdf, 0x15, 0x3e, 0x2c, 0x90, 0x60, 0x19, 0x28, 0xcc, 0xd1, 0x0f, 0xc8, - 0x67, 0x5e, 0x5c, 0x63, 0x42, 0x14, 0x7c, 0xfb, 0x22, 0x21, 0x43, 0x7f, 0x31, 0x3a, 0xa5, - 0xe4, 0x87, 0x75, 0xfe, 0x08, 0x45, 0xa7, 0x32, 0xd9, 0x5f, 0x54, 0x93, 0x64, 0xce, 0xaf, - 0xca, 0x4a, 0x1e, 0xd9, 0xde, 0x5a, 0x64, 0x9f, 0x77, 0x93, 0x49, 0x54, 0x7a, 0xa9, 0x96, - 0xc0, 0x0e, 0xf4, 0x0c, 0xc2, 0x43, 0x33, 0x42, 0x92, 0x3f, 0x11, 0x96, 0x8b, 0x50, 0x11, - 0xa6, 0x9c, 0xe7, 0x38, 0x40, 0xaa, 0x19, 0x56, 0x6e, 0x6e, 0x6a, 0xe6, 0x9f, 0xa4, 0xbe, - 0x10, 0xc5, 0xf8, 0x72, 0xe0, 0xaf, 0xec, 0x51, 0xa0, 0xd9, 0x28, 0x08, 0xe9, 0x16, 0x1c, - 0x50, 0x97, 0xe7, 0x18, 0x38, 0xd0, 0x05, 0x35, 0x49, 0x72, 0xfa, 0xe4, 0x7b, 0x6e, 0x52, - 0x92, 0x41, 0x1d, 0xcd, 0x08, 0x79, 0xd7, 0x75, 0xd8, 0x9e, 0x02, 0x70, 0xaf, 0x09, 0x6c, - 0xac, 0x1c, 0x33, 0xa1, 0x7e, 0x56, 0xcd, 0xad, 0x4e, 0x4d, 0xc8, 0xae, 0xa4, 0xac, 0xbf, - 0x29, 0x52, 0xa0, 0x1e, 0x29, 0x76, 0x08, 0xc1, 0x2d, 0x7f, 0xcf, 0x2a, 0x63, 0xde, 0xd0, - 0x38, 0xa0, 0xf8, 0xf5, 0xc0, 0x0e, 0x1b, 0xce, 0x32, 0xe4, 0x67, 0xa6, 0x9d, 0xf1, 0xb5, - 0x02, 0x91, 0xb0, 0x4c, 0xbf, 0xf9, 0x38, 0x33, 0x47, 0xf8, 0x82, 0x8f, 0x17, 0xc0, 0xd8, - 0xa6, 0xe4, 0x0c, 0x85, 0xa7, 0xc2, 0x81, 0xf3, 0x99, 0x6e, 0x8c, 0x4b, 0x40, 0x9e, 0x7c, - 0x31, 0x13, 0x03, 0x36, 0x33, 0x0c, 0x95, 0xcd, 0xe3, 0x35, 0x4c, 0x73, 0x83, 0x3d, 0x80, - 0xaa, 0xa7, 0xbb, 0x15, 0x1b, 0x7e, 0xbd, 0x23, 0x31, 0xe7, 0x50, 0x51, 0xe0, 0x51, 0xaf, - 0xf1, 0x74, 0x2d, 0x4f, 0xa7, 0x6b, 0x81, 0x5a, 0x07, 0xd6, 0x0f, 0xb4, 0xdf, 0x95, 0x5d, - 0xf8, 0x7c, 0x47, 0xea, 0x0c, 0x90, 0x3d, 0x73, 0x2d, 0x05, 0x07, 0x50, 0xc9, 0x92, 0x6c, - 0xdf, 0xd3, 0xbc, 0xcc, 0xb0, 0x60, 0xfe, 0xf4, 0x6b, 0xc9, 0x9c, 0x1d, 0x99, 0x1f, 0x45, - 0x66, 0xe9, 0x66, 0xb3, 0xd8, 0x3f, 0x87, 0x32, 0x09, 0x0d, 0x8e, 0xe4, 0xb6, 0x68, 0xd8, - 0x5c, 0x13, 0x58, 0x16, 0x27, 0xa3, 0x9a, 0x51, 0x3a, 0x8a, 0xac, 0x03, 0x7e, 0x65, 0x32, - 0x0e, 0xff, 0xb6, 0x2b, 0x8f, 0xe1, 0x65, 0x03, 0x1d, 0x84, 0x31, 0x7b, 0x08, 0x29, 0x55, - 0xa7, 0x1f, 0x1b, 0x95, 0x1d, 0x5e, 0x68, 0x8f, 0x6f, 0xc7, 0x52, 0x55, 0x09, 0x8a, 0x8e, - 0xff, 0xd3, 0x5b, 0x41, 0x60, 0xb8, 0x3a, 0x05, 0x5b, 0xb9, 0xe0, 0xbe, 0x0f, 0xd8, 0xf7, - 0x01, 0xb5, 0xeb, 0xc9, 0xed, 0x8e, 0xe4, 0x85, 0x69, 0x18, 0xdd, 0xa1, 0x27, 0xf0, 0x9a, - 0x13, 0x51, 0xe7, 0x22, 0xdf, 0x04, 0xcd, 0xc3, 0xd9, 0xa8, 0x73, 0xdb, 0xe8, 0xb7, 0x39, - 0x66, 0x9b, 0x36, 0x15, 0xad, 0x14, 0xad, 0x9d, 0xf0, 0x64, 0x69, 0xa3, 0x6a, 0xbb, 0x59, - 0xfb, 0xce, 0x00, 0xac, 0x23, 0xb4, 0x7f, 0x3a, 0xa2, 0xf9, 0x55, 0x4b, 0x7b, 0x0f, 0x9d, - 0x5a, 0x2b, 0xc7, 0x5e, 0xb7, 0xfb, 0x21, 0x10, 0xf4, 0x0d, 0x2e, 0x62, 0xca, 0x7b, 0x30, - 0x0f, 0xdf, 0xa7, 0xf3, 0xd2, 0xf4, 0x6c, 0xd8, 0x14, 0x76, 0x02, 0x3b, 0x43, 0x59, 0xd7, - 0xa9, 0x19, 0x81, 0x1d, 0x65, 0xe8, 0xc3, 0x9b, 0x69, 0xf2, 0xd4, 0x73, 0xf3, 0xf8, 0x84, - 0xaa, 0xf9, 0x1e, 0xa9, 0x1e, 0xcd, 0x84, 0xc4, 0x45, 0xa6, 0x34, 0xf2, 0x8a, 0x93, 0x3b, - 0xb6, 0x2b, 0xc8, 0x49, 0x48, 0x1c, 0xd9, 0x70, 0x8e, 0xf2, 0x07, 0x2b, 0xf5, 0x22, 0x63, - 0x3f, 0x0c, 0x2b, 0xb7, 0xd6, 0x8a, 0x6f, 0x64, 0x41, 0x33, 0x7a, 0xd7, 0x02, 0x13, 0x50, - 0xec, 0x36, 0xa9, 0x6a, 0x31, 0x26, 0xe3, 0x00, 0xa7, 0x67, 0xbb, 0xac, 0x22, 0xee, 0xbc, - 0x33, 0xb0, 0x4f, 0xdf, 0x2b, 0x36, 0xdf, 0x8f, 0x1a, 0x6a, 0xc5, 0x21, 0x78, 0xd0, 0x8c, - 0x5c, 0x71, 0xe5, 0xde, 0xa3, 0x85, 0x39, 0x5b, 0x62, 0x3f, 0xea, 0xae, 0x03, 0x14, 0x67, - 0x4e, 0xc7, 0x9b, 0x4a, 0x5d, 0x26, 0xca, 0x1f, 0xdf, 0xa0, 0x8f, 0x18, 0x2b, 0xf4, 0x2d, - 0x4a, 0xd3, 0x9c, 0x07, 0x7c, 0xb7, 0xa6, 0x1e, 0xcb, 0xb6, 0x48, 0x02, 0x79, 0x6a, 0xf3, - 0x67, 0xf4, 0xe2, 0xe7, 0x5f, 0x0e, 0x3a, 0x27, 0xb5, 0xff, 0xc4, 0xef, 0x5b, 0xf6, 0x02, - 0x64, 0x73, 0x94, 0x8c, 0x50, 0x29, 0x86, 0xcc, 0x02, 0x6e, 0xc4, 0x70, 0xa8, 0x36, 0xc9, - 0x3f, 0x32, 0xc3, 0x1d, 0x21, 0x54, 0x64, 0x9d, 0xdc, 0x71, 0x30, 0xd3, 0x97, 0x4c, 0x4c, - 0xd2, 0xfa, 0xb9, 0x80, 0x11, 0x12, 0x47, 0xa3, 0x5d, 0x85, 0x61, 0xbe, 0x6c, 0x8c, 0xdc, - 0x12, 0x59, 0x1d, 0xbb, 0x81, 0xe6, 0x5e, 0x99, 0xf9, 0x78, 0xce, 0xe1, 0x8b, 0x4f, 0x6a, - 0x01, 0xce, 0xb4, 0xc1, 0xb0, 0xf8, 0x50, 0x4c, 0x4d, 0x48, 0x1e, 0xea, 0x94, 0x6f, 0xab, - 0x26, 0xf8, 0x0c, 0x74, 0xd2, 0xd3, 0x75, 0x6a, 0x83, 0x96, 0xfd, 0xb4, 0x5e, 0xfb, 0x06, - 0x63, 0xf7, 0x1c, 0xa9, 0x15, 0xc9, 0x72, 0xc2, 0xf7, 0x36, 0x03, 0x66, 0xca, 0x66, 0x3b, - 0x8e, 0x39, 0x59, 0x51, 0x27, 0x87, 0xe7, 0xbb, 0x98, 0xc2, 0xb0, 0xe6, 0x1c, 0xb9, 0x05, - 0xb6, 0xde, 0x55, 0xbb, 0xb8, 0xff, 0x42, 0x79, 0xf1, 0xa3, 0x09, 0xa6, 0xe2, 0xc9, 0xa5, - 0x58, 0x42, 0x9a, 0xdb, 0x08, 0xd3, 0x29, 0x17, 0xc2, 0x91, 0x10, 0xdf, 0x3a, 0xb3, 0x41, - 0x3a, 0x27, 0x73, 0xf7, 0xc7, 0xd9, 0xa4, 0x58, 0xef, 0xd2, 0xcd, 0x2e, 0xe1, 0x42, 0xd4, - 0x05, 0x7e, 0x96, 0x8b, 0x26, 0x99, 0x7c, 0xfc, 0x34, 0x33, 0x18, 0x3b, 0x29, 0x71, 0x3f, - 0x39, 0x7a, 0x4c, 0xf0, 0x01, 0x20, 0xe0, 0x44, 0x5a, 0x88, 0xb6, 0xcc, 0xb6, 0xcd, 0x96, - 0x8a, 0x1f, 0x9e, 0xcb, 0x3c, 0x7f, 0x7e, 0x1a, 0x2c, 0xbf, 0x2a, 0xda, 0xd1, 0x91, 0x53, - 0x20, 0x00, 0x10, 0xb4, 0x83, 0x78, 0x8f, 0xeb, 0xc1, 0x0f, 0xe2, 0x10, 0x14, 0x5d, 0x27, - 0x3a, 0x3d, 0x5e, 0x3e, 0x3d, 0xe5, 0x7c, 0x84, 0xaa, 0x7c, 0x6a, 0xa8, 0x3d, 0x86, 0x0a, - 0x79, 0xcc, 0xa1, 0x09, 0x2e, 0x96, 0x41, 0x41, 0xc5, 0xce, 0x3e, 0x9d, 0x93, 0x20, 0xb0, - 0x7a, 0x53, 0xfd, 0x10, 0xba, 0x2f, 0xe4, 0x0f, 0xfd, 0xbf, 0x55, 0x23, 0x2b, 0x3a, 0x2d, - 0xaa, 0x7e, 0xf1, 0xbc, 0x6d, 0x93, 0x57, 0xc7, 0x1b, 0xd4, 0x28, 0x03, 0x8f, 0xae, 0x3c, - 0x90, 0xb2, 0xb1, 0xff, 0x2c, 0x40, 0xa2, 0xd4, 0x0a, 0x55, 0xde, 0xeb, 0xf7, 0x85, 0xad, - 0x6e, 0x13, 0x6e, 0x55, 0x53, 0x06, 0xf1, 0x37, 0x2e, 0x50, 0x78, 0xe0, 0x6f, 0x27, 0xc1, - 0xbe, 0xc5, 0x81, 0xb3, 0x52, 0xd5, 0xc0, 0xe9, 0x98, 0xf5, 0x74, 0x5b, 0x17, 0xdd, 0x84, - 0xbc, 0xed, 0x06, 0x2c, 0xa3, 0xa4, 0x48, 0xc9, 0xf1, 0xa1, 0x9d, 0xf2, 0x48, 0x23, 0x59, - 0x09, 0xd5, 0x88, 0xf1, 0x79, 0xa2, 0x03, 0xe6, 0x8d, 0xe6, 0x3a, 0xb9, 0xd3, 0xeb, 0xcb, - 0xa6, 0x13, 0xd0, 0xef, 0xe3, 0x11, 0x71, 0x0e, 0x1b, 0xf3, 0xd3, 0xa9, 0xc3, 0xfb, 0xc6, - 0xbd, 0xf8, 0xd8, 0x99, 0x41, 0x81, 0x6f, 0xe8, 0x09, 0x7d, 0x0a, 0xcd, 0x91, 0xc0, 0xa2, - 0x38, 0x42, 0x5c, 0x53, 0x19, 0x02, 0x5e, 0x21, 0xab, 0xa1, 0xf1, 0xe8, 0x0d, 0xf0, 0x6d, - 0x65, 0xab, 0x4d, 0x39, 0xa4, 0x05, 0xda, 0x30, 0xc4, 0x4c, 0x94, 0x3a, 0xd8, 0x49, 0x00, - 0x39, 0x85, 0xe4, 0x91, 0x55, 0xf9, 0x40, 0x08, 0x22, 0x04, 0x1a, 0xa5, 0xe2, 0x48, 0x3d, - 0x10, 0x76, 0xb4, 0x25, 0x7f, 0x12, 0xb2, 0xfb, 0xda, 0xa5, 0xa9, 0x18, 0x28, 0x91, 0x1d, - 0x86, 0x0f, 0xda, 0x10, 0x53, 0xa9, 0x99, 0xc1, 0xc8, 0x02, 0x41, 0x3a, 0x42, 0xdc, 0x55, - 0x21, 0xca, 0x6e, 0x8a, 0x75, 0x5b, 0xe1, 0x26, 0xdf, 0x16, 0x48, 0x14, 0xc7, 0x01, 0xad, - 0x2f, 0x75, 0x49, 0x64, 0x44, 0xff, 0x5a, 0xc6, 0x70, 0x89, 0x10, 0x79, 0xac, 0x0e, 0x2f, - 0xaf, 0x6d, 0x57, 0xf5, 0x59, 0x6c, 0x79, 0x1b, 0x9d, 0x4c, 0x39, 0xb3, 0xa5, 0xbf, 0xb6, - 0xe0, 0x78, 0x76, 0x81, 0x4f, 0xde, 0xea, 0xa0, 0xdd, 0x63, 0x25, 0x7c, 0x4f, 0x1d, 0x53, - 0x2d, 0x2d, 0x4d, 0x61, 0x72, 0x86, 0x07, 0x6e, 0xd3, 0x23, 0xe3, 0x79, 0xc4, 0x27, 0xc5, - 0xfe, 0x5d, 0x05, 0xb1, 0xe3, 0x45, 0x1b, 0x6c, 0xd7, 0x1e, 0x8f, 0x62, 0xc2, 0x85, 0x0d, - 0x2c, 0xbe, 0x25, 0xc5, 0x38, 0xe9, 0xa2, 0x80, 0x34, 0x4f, 0x4e, 0x30, 0xff, 0xaf, 0x16, - 0x4c, 0x8b, 0xd0, 0xb1, 0x0e, 0x3f, 0x4e, 0xf9, 0x0d, 0x4e, 0x1d, 0x95, 0x49, 0x66, 0xcf, - 0xa0, 0x8f, 0xa3, 0xf6, 0x35, 0xfa, 0x88, 0xa1, 0xf9, 0xfc, 0x34, 0x71, 0xd6, 0xfe, 0xbc, - 0x21, 0x6f, 0xbe, 0xc4, 0xca, 0xd7, 0x85, 0xa3, 0x65, 0x10, 0x5c, 0x46, 0xc9, 0xbd, 0xce, - 0xbf, 0xcc, 0x4c, 0x3c, 0x7e, 0x2a, 0x28, 0x09, 0x6a, 0x73, 0x16, 0x35, 0xf7, 0xe3, 0x4e, - 0x8a, 0xbb, 0x7a, 0x54, 0x2c, 0xe1, 0x18, 0x1c, 0x90, 0x14, 0xe7, 0x5a, 0xe8, 0xd9, 0xc9, - 0x29, 0x20, 0x12, 0x5e, 0x0a, 0xcf, 0xdc, 0xcd, 0x16, 0x86, 0xde, 0x72, 0x0e, 0x41, 0x52, - 0x91, 0x74, 0x4c, 0x68, 0x50, 0xc1, 0x91, 0xcc, 0x92, 0xca, 0x42, 0x8a, 0x6a, 0x1a, 0xfd, - 0x37, 0x70, 0x61, 0xab, 0x18, 0x21, 0x07, 0x0e, 0xc5, 0x62, 0x02, 0xc8, 0xf8, 0xe5, 0xa3, - 0x94, 0x38, 0xff, 0x40, 0xbf, 0xee, 0x77, 0xa1, 0x5f, 0x19, 0x91, 0x26, 0x72, 0xc0, 0x32, - 0x1b, 0x8a, 0xab, 0xc3, 0x2a, 0x00, 0x50, 0xee, 0xd9, 0xc9, 0xa4, 0x07, 0x04, 0x7c, 0xa1, - 0xd7, 0xbb, 0xba, 0x46, 0x64, 0xbc, 0x07, 0x00, 0x30, 0x02, 0x1d, 0xe4, 0x64, 0xc9, 0x0d, - 0x2a, 0xfc, 0x3a, 0xdb, 0xeb, 0x73, 0x54, 0x2a, 0x97, 0x48, 0xa3, 0x06, 0xe7, 0x36, 0x1c, - 0xae, 0xbb, 0xe2, 0x3a, 0xa7, 0x4f, 0xa4, 0x39, 0x67, 0xc3, 0xab, 0x1f, 0x13, 0x30, 0xa2, - 0x5c, 0x49, 0x52, 0x04, 0xf5, 0x46, 0x74, 0x50, 0xae, 0xa8, 0xd3, 0xae, 0x33, 0x84, 0x9f, - 0x8c, 0x27, 0xfc, 0x42, 0xa4, 0x44, 0x4f, 0x2d, 0xa2, 0xb9, 0x84, 0x43, 0x46, 0x87, 0x6b, - 0x4e, 0xb3, 0xa4, 0x47, 0x5c, 0xd1, 0xc2, 0xac, 0x0f, 0x34, 0x99, 0x00, 0xfc, 0xc9, 0xab, - 0x85, 0x0e, 0x49, 0x9f, 0xf4, 0x95, 0x7f, 0xc3, 0x8f, 0x35, 0xd0, 0x3c, 0xbe, 0x7c, 0xbc, - 0x2d, 0xe4, 0xd7, 0x03, 0x62, 0x86, 0xd8, 0x4d, 0x3d, 0x65, 0xc0, 0xa3, 0x7d, 0xc1, 0x83, - 0x70, 0xd0, 0x3a, 0x1b, 0xd6, 0x32, 0x46, 0xf4, 0xb6, 0x95, 0x09, 0xf7, 0xca, 0x71, 0xa8, - 0x05, 0x7b, 0xbb, 0xcb, 0x8e, 0x8f, 0x11, 0x79, 0x1a, 0xd1, 0xdd, 0x41, 0x3f, 0x95, 0x2b, - 0xdf, 0x31, 0x11, 0xa2, 0xe4, 0x56, 0x04, 0x11, 0x40, 0x68, 0x6b, 0xa7, 0x22, 0xa3, 0xb7, - 0x7a, 0x95, 0x2d, 0xa7, 0xd3, 0x61, 0x68, 0xb5, 0x26, 0x82, 0x8f, 0xb6, 0x21, 0xb3, 0xae, - 0x12, 0x1c, 0xa6, 0x22, 0x2f, 0xd2, 0x5e, 0x28, 0x14, 0x01, 0x94, 0xb9, 0x56, 0x88, 0x9f, - 0x56, 0xd0, 0xee, 0x02, 0xd3, 0x58, 0x6c, 0x9d, 0xc0, 0x0a, 0xf8, 0x0b, 0xdf, 0xea, 0xf0, - 0xf9, 0xe5, 0xbb, 0x64, 0x46, 0x29, 0x67, 0xa8, 0xaa, 0xb0, 0xb4, 0x24, 0xb2, 0x85, 0x20, - 0x14, 0x42, 0x73, 0xe0, 0x53, 0xed, 0xa0, 0x0f, 0x23, 0x7f, 0xd0, 0x9e, 0x98, 0xd2, 0x69, - 0x64, 0x9b, 0xb1, 0x9c, 0xcd, 0x06, 0x8f, 0x64, 0x52, 0x45, 0x24, 0x13, 0x35, 0x34, 0xbf, - 0x52, 0xff, 0x4a, 0x1f, 0x96, 0x6a, 0xc5, 0x38, 0xb3, 0x50, 0xf6, 0xe3, 0xb0, 0x7b, 0x3f, - 0x3e, 0x67, 0xa7, 0x5b, 0x4e, 0x91, 0x27, 0xb5, 0x46, 0x71, 0x0c, 0x50, 0xb1, 0xfb, 0xb5, - 0x90, 0x9a, 0x8d, 0xa5, 0x7b, 0x36, 0x11, 0x97, 0x56, 0xd8, 0x31, 0x2c, 0x54, 0xe0, 0x12, - 0x68, 0x1e, 0x86, 0x8c, 0x10, 0x36, 0xce, 0x12, 0x3b, 0xad, 0x8b, 0xf1, 0x45, 0x97, 0xb8, - 0x76, 0x19, 0x38, 0x99, 0x72, 0x87, 0x78, 0x1d, 0x6e, 0xe6, 0x75, 0x70, 0x05, 0x3b, 0x1e, - 0xfb, 0xe8, 0xba, 0x94, 0x67, 0x6e, 0x3e, 0x32, 0x86, 0xa3, 0x77, 0x07, 0xfc, 0xa1, 0x05, - 0x03, 0x97, 0x72, 0x7b, 0x9b, 0x8e, 0xd0, 0x63, 0x5a, 0xc4, 0x58, 0x1b, 0x5d, 0x95, 0xe9, - 0x49, 0x80, 0x7a, 0xfc, 0xcb, 0x08, 0xa4, 0x4d, 0xf6, 0x5d, 0x73, 0x77, 0xe1, 0x19, 0x1d, - 0xaf, 0x67, 0xa8, 0x6e, 0x37, 0xa9, 0x19, 0xe7, 0xa0, 0x17, 0x86, 0x62, 0x13, 0xde, 0x48, - 0x81, 0x72, 0x3b, 0xc2, 0xba, 0xdb, 0x4c, 0x9b, 0x0b, 0xab, 0x10, 0x2c, 0xf9, 0xc1, 0x0e, - 0xc4, 0x2f, 0x16, 0x35, 0x26, 0x91, 0xf2, 0xf8, 0x33, 0xc4, 0x01, 0x46, 0x3e, 0xb3, 0x21, - 0x66, 0x62, 0xf7, 0x5e, 0xae, 0x53, 0x7e, 0xdf, 0x62, 0xad, 0x96, 0x58, 0xc5, 0x52, 0x46, - 0xb4, 0x13, 0x6a, 0x9f, 0x69, 0x32, 0x55, 0xc8, 0xd4, 0xcd, 0x12, 0xa4, 0x6a, 0x7d, 0x31, - 0x6a, 0x6e, 0x13, 0x56, 0xfc, 0x8d, 0x2c, 0xe8, 0xf4, 0x54, 0x83, 0xaa, 0x2a, 0x00, 0xfd, - 0xdd, 0xee, 0x95, 0x27, 0xbe, 0xcf, 0x58, 0xb1, 0xa5, 0xdf, 0x1e, 0x2b, 0x18, 0x98, 0x3c, - 0x6e, 0x1f, 0x5e, 0x93, 0xdf, 0x90, 0x2c, 0x7d, 0xae, 0x89, 0xa7, 0x56, 0x59, 0x27, 0x5c, - 0x15, 0x22, 0xf9, 0xf4, 0xdc, 0x71, 0x00, 0xfe, 0x69, 0x9c, 0x34, 0x56, 0x07, 0x10, 0x1c, - 0x47, 0x47, 0x6c, 0xa0, 0x43, 0x74, 0x68, 0x89, 0x8c, 0x31, 0xd2, 0x69, 0x11, 0x94, 0x7f, - 0x45, 0x01, 0x5a, 0x0e, 0x50, 0x75, 0xf6, 0x70, 0xa5, 0x5f, 0xc1, 0x78, 0x45, 0xd8, 0x1d, - 0x2b, 0xb6, 0xbc, 0x0f, 0xb8, 0xab, 0x13, 0x40, 0xf6, 0xb5, 0x43, 0x82, 0x7d, 0xe5, 0x53, - 0x63, 0x6a, 0xf7, 0xed, 0xf4, 0xf0, 0x56, 0x75, 0xdd, 0xc0, 0x8e, 0xa0, 0x68, 0x66, 0xf1, - 0xce, 0x08, 0x73, 0xbb, 0xd4, 0xff, 0x3e, 0x10, 0xbb, 0xca, 0x51, 0x48, 0x44, 0xe7, 0x76, - 0x37, 0x98, 0x0e, 0x80, 0xa5, 0x00, 0x46, 0xb3, 0x22, 0x02, 0x62, 0xe7, 0xef, 0x24, 0x3a, - 0xeb, 0x9c, 0x53, 0x30, 0x4f, 0x39, 0x38, 0x0b, 0xc0, 0x4c, 0x7b, 0xbf, 0xbf, 0xb4, 0xc8, - 0xf6, 0x5e, 0x69, 0x26, 0xfb, 0xdb, 0x0d, 0x80, 0x94, 0xd3, 0x4e, 0xa0, 0x51, 0x5b, 0xb2, - 0x8d, 0x5c, 0x31, 0xc9, 0x0f, 0x8c, 0xf5, 0xa9, 0x7f, 0x1b, 0xe8, 0x78, 0x51, 0x41, 0xdb, - 0xf6, 0x40, 0x62, 0x5d, 0x9b, 0x49, 0xbe, 0x09, 0x03, 0xc4, 0x43, 0xcc, 0xb1, 0xc5, 0xf8, - 0x14, 0x9f, 0x05, 0xa0, 0x4c, 0x93, 0x49, 0x3c, 0x7a, 0x05, 0xee, 0x35, 0x91, 0x38, 0xc7, - 0xb0, 0x8a, 0xea, 0x1b, 0x01, 0xcc, 0xc7, 0xb5, 0x0e, 0x02, 0xa8, 0xe2, 0xa3, 0x01, 0x81, - 0x6c, 0x0a, 0x6a, 0xc3, 0x0d, 0x0d, 0x4d, 0x58, 0x41, 0xcb, 0xfc, 0x36, 0x1e, 0x15, 0xf4, - 0x89, 0xca, 0x1c, 0xbc, 0xd4, 0xd8, 0x70, 0x36, 0x1d, 0x6d, 0x30, 0x7b, 0x28, 0x8d, 0x94, - 0x4d, 0x8e, 0x02, 0xf3, 0x06, 0x44, 0x39, 0xf4, 0xfe, 0xde, 0x2a, 0x45, 0xf2, 0xb5, 0xcb, - 0x44, 0xe2, 0xd7, 0x41, 0x4f, 0xfb, 0x0a, 0x86, 0xbf, 0x47, 0x21, 0x70, 0x17, 0x4d, 0x33, - 0x5e, 0xd7, 0x00, 0x13, 0x47, 0xa3, 0x56, 0x90, 0x04, 0x43, 0x5c, 0xf8, 0x61, 0x2b, 0xf8, - 0x83, 0xe5, 0x5b, 0x48, 0x82, 0x0c, 0xbb, 0x92, 0xf5, 0xdc, 0x03, 0xd3, 0x9b, 0xc6, 0x12, - 0xb7, 0x34, 0x65, 0x28, 0xac, 0x45, 0x11, 0x61, 0x73, 0x58, 0x87, 0xb2, 0xc7, 0x2c, 0xd8, - 0x79, 0x28, 0xa5, 0x1f, 0xd3, 0x0b, 0xb6, 0x7a, 0x30, 0xa1, 0x9c, 0x25, 0x23, 0x7b, 0x74, - 0x17, 0xc4, 0xc6, 0x7c, 0xa9, 0x66, 0xeb, 0xe1, 0x2d, 0x74, 0x82, 0xc7, 0xe8, 0xb3, 0xa6, - 0xcd, 0x92, 0x15, 0x87, 0x0c, 0x2a, 0x0b, 0x04, 0x64, 0xf9, 0x3f, 0x81, 0x95, 0x5c, 0xb2, - 0x1c, 0x6d, 0xf7, 0xa4, 0x0b, 0xb9, 0xcd, 0xfe, 0x05, 0x9c, 0x4a, 0x66, 0xc3, 0xef, 0x0e, - 0x6b, 0xb9, 0xb2, 0x56, 0x1b, 0x82, 0x2f, 0xc1, 0x46, 0xbe, 0x31, 0xcb, 0x50, 0xdf, 0xa6, - 0xe5, 0xa8, 0x97, 0x2e, 0x13, 0xe2, 0xe3, 0x1d, 0x84, 0xa7, 0x4b, 0x45, 0x35, 0xb9, 0x6c, - 0xa8, 0x1f, 0x56, 0x3f, 0x30, 0xa8, 0x6c, 0x32, 0xb8, 0xae, 0xd0, 0x95, 0xd0, 0x5b, 0x8d, - 0xec, 0x37, 0xb7, 0xa7, 0x9f, 0xe6, 0x4f, 0xdc, 0xd1, 0x4a, 0xf9, 0xf0, 0x04, 0x6e, 0x93, - 0x57, 0xbb, 0xbe, 0xf9, 0xd2, 0x37, 0x2e, 0x14, 0x14, 0x54, 0xbe, 0xad, 0x9f, 0xad, 0xdd, - 0x1c, 0x8e, 0x07, 0x6f, 0xb7, 0x28, 0xc7, 0xe7, 0x5a, 0x5d, 0x70, 0x52, 0x96, 0x14, 0x5f, - 0x44, 0xcc, 0xa0, 0xac, 0x0b, 0x2c, 0xac, 0xe6, 0xe8, 0xba, 0x7a, 0x50, 0x29, 0x86, 0x88, - 0xe7, 0x0d, 0x5c, 0xef, 0xa4, 0x87, 0x1b, 0x71, 0xfd, 0xe9, 0x68, 0xb1, 0xae, 0xf6, 0xcd, - 0xd7, 0xdf, 0x2a, 0xbf, 0x46, 0x45, 0xf0, 0x45, 0xae, 0x1a, 0xef, 0x89, 0x31, 0x17, 0x1d, - 0x37, 0xba, 0xed, 0x0a, 0x0c, 0xf5, 0x9f, 0x40, 0x4f, 0x33, 0x80, 0x3a, 0xb4, 0x88, 0xa4, - 0x30, 0x25, 0xe8, 0x4f, 0x03, 0xb4, 0x37, 0x12, 0x9d, 0x52, 0x3e, 0xd5, 0xb8, 0x24, 0xdc, - 0xd1, 0x35, 0xe6, 0xda, 0xa1, 0xd2, 0x02, 0x04, 0x58, 0x07, 0xdd, 0xd0, 0x6a, 0x7b, 0xd6, - 0x47, 0x0c, 0xaa, 0xcc, 0xe9, 0xf6, 0x11, 0xd3, 0xbd, 0xf7, 0x09, 0xab, 0xd2, 0xf3, 0xd1, - 0xda, 0x9c, 0xf0, 0x2f, 0x20, 0x14, 0x14, 0x78, 0xf5, 0x31, 0x7b, 0x19, 0x64, 0x13, 0x1e, - 0xbb, 0x18, 0x60, 0x1d, 0xcd, 0xa2, 0x52, 0x2e, 0x64, 0x79, 0xd2, 0xca, 0x81, 0xe5, 0x6d, - 0x4c, 0xe5, 0x52, 0xb5, 0x96, 0x0f, 0xc8, 0x80, 0x1a, 0x27, 0x69, 0x22, 0xef, 0x67, 0xde, - 0x7b, 0xf9, 0xaf, 0xfe, 0x34, 0x88, 0x1e, 0x2a, 0xb8, 0xbe, 0x10, 0xb7, 0x6e, 0xec, 0x73, - 0x80, 0x9d, 0xca, 0x48, 0xbd, 0xd3, 0xf7, 0x3d, 0xbb, 0xa8, 0x7c, 0x73, 0xbb, 0x1f, 0x2d, - 0x1b, 0xd9, 0x85, 0xf6, 0x16, 0x7e, 0xdd, 0x48, 0x87, 0x23, 0x95, 0xe3, 0x79, 0x07, 0xb9, - 0xd9, 0x9f, 0xca, 0x59, 0x2b, 0x7b, 0x82, 0x3e, 0x45, 0x00, 0x1f, 0xff, 0x01, 0x98, 0x56, - 0x06, 0x0b, 0xc4, 0xe9, 0x65, 0xf7, 0xac, 0x2a, 0x5d, 0x48, 0x9e, 0x6b, 0x02, 0x6a, 0x2d, - 0xdf, 0x50, 0x87, 0x4b, 0x21, 0x16, 0x74, 0x24, 0x99, 0xac, 0x2e, 0x11, 0x00, 0x44, 0xbb, - 0x2e, 0x45, 0x65, 0xf7, 0x11, 0xd5, 0xdb, 0xfc, 0x66, 0xed, 0xd9, 0x14, 0x54, 0x52, 0xc7, - 0x44, 0xbb, 0x9b, 0x9b, 0x5d, 0x60, 0x69, 0xbc, 0x43, 0xc3, 0x59, 0xdc, 0x99, 0xf5, 0x18, - 0xdd, 0x92, 0x03, 0x24, 0xa8, 0xda, 0x5b, 0x91, 0xc0, 0xf5, 0x51, 0x24, 0x8a, 0x75, 0x1b, - 0x50, 0x86, 0x2d, 0x3a, 0xf7, 0x37, 0x36, 0x13, 0x1c, 0x8c, 0x29, 0xae, 0xa1, 0x38, 0x5a, - 0x89, 0x01, 0x01, 0x04, 0x57, 0x45, 0x54, 0x48, 0x01, 0x51, 0x23, 0x84, 0x58, 0xb0, 0xd0, - 0xdd, 0x6d, 0x49, 0x3e, 0xc9, 0x64, 0xa7, 0x46, 0x21, 0x17, 0x23, 0x7e, 0xa2, 0x14, 0xab, - 0x8b, 0xb5, 0x4b, 0x5a, 0x7d, 0x9e, 0x00, 0x5f, 0x56, 0x06, 0x86, 0x5f, 0x5c, 0x7c, 0x04, - 0xad, 0xb7, 0x14, 0x97, 0x25, 0xe0, 0x2a, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc9, 0xcd, 0x43, 0x2e, 0xde, 0xa8, 0x73, 0x19, 0xb8, 0xbd, 0xf5, 0xb4, 0x00, 0xd1, 0x7c, - 0xb0, 0xd4, 0x74, 0x3f, 0x21, 0x74, 0xc1, 0x50, 0x37, 0xc7, 0xfd, 0x9e, 0x5c, 0xdc, 0xe9, - 0x45, 0x86, 0x4c, 0x29, 0xe3, 0x15, 0x3f, 0x0c, 0x0f, 0x8d, 0xf0, 0x15, 0xdd, 0xa9, 0x02, - 0x16, 0x6c, 0xda, 0x01, 0x5a, 0xf9, 0x06, 0x33, 0x78, 0xfa, 0xdc, 0xc3, 0xcc, 0x19, 0xad, - 0x25, 0xff, 0x82, 0x25, 0x47, 0xea, 0x17, 0x04, 0x55, 0x5d, 0x56, 0x53, 0x69, 0x74, 0xd6, - 0x2e, 0x91, 0xfc, 0x3d, 0x6d, 0xcb, 0x39, 0x76, 0xf1, 0x08, 0x26, 0xba, 0xd9, 0x72, 0x21, - 0xf4, 0x2d, 0x60, 0x2c, 0x4f, 0x8e, 0x00, 0x3c, 0x99, 0x76, 0x4d, 0x0d, 0xda, 0x13, 0x9b, - 0x31, 0x65, 0xda, 0x5d, 0xc4, 0xbf, 0x97, 0x00, 0xc6, 0xa5, 0x63, 0xfc, 0xd0, 0x54, 0x3f, - 0x54, 0x9e, 0x7b, 0x19, 0xd4, 0xcc, 0x4c, 0xaf, 0x77, 0x33, 0xbb, 0x23, 0xe1, 0x95, 0x16, - 0x4d, 0xde, 0xb6, 0xbf, 0xd4, 0x57, 0x8a, 0x5d, 0x48, 0x12, 0x41, 0x31, 0xd3, 0x18, 0xc0, - 0xdc, 0x23, 0xe2, 0xe6, 0xd5, 0x99, 0x50, 0xbe, 0xa6, 0xe5, 0x9f, 0xe4, 0x90, 0xba, 0x1e, - 0x9e, 0x26, 0xbd, 0x63, 0xcc, 0xb6, 0x4b, 0x36, 0x4d, 0x91, 0x8c, 0x15, 0x65, 0x4b, 0x72, - 0xa6, 0xda, 0xb9, 0x56, 0x7e, 0xf2, 0x57, 0xf2, 0x50, 0x2f, 0xc2, 0xca, 0x84, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0xa2, 0xff, 0x89, 0x60, 0x63, 0x0d, 0xce, 0x65, 0xb2, 0x2a, 0x0f, 0x76, 0x90, 0x71, 0x40, + 0xd1, 0x7f, 0xd2, 0xc4, 0xc6, 0x04, 0x6c, 0x71, 0xbc, 0xf6, 0xa7, 0x33, 0xad, 0x7a, 0x5f, + 0xcf, 0x27, 0x38, 0x13, 0xc8, 0x60, 0x92, 0xc0, 0xe3, 0x18, 0x2d, 0xdc, 0x16, 0xbf, 0xd9, + 0xc2, 0xbf, 0x72, 0x85, 0xaf, 0xa4, 0x35, 0x3f, 0xfd, 0x55, 0x99, 0x56, 0xf9, 0x6f, 0x8d, + 0x5b, 0x4f, 0x4f, 0x23, 0x13, 0xe7, 0xbd, 0x68, 0x9d, 0x1c, 0x16, 0x20, 0x3f, 0xef, 0x22, + 0x05, 0xae, 0x6e, 0xcf, 0x77, 0x4c, 0xf2, 0x7a, 0x2e, 0xf1, 0xe8, 0xf2, 0xb3, 0x5b, 0x1e, + 0xea, 0xb4, 0xdc, 0x6b, 0x5d, 0x08, 0x26, 0x52, 0x7f, 0x08, 0x12, 0x7c, 0x5a, 0x32, 0xa8, + 0x8e, 0x3b, 0x26, 0xf5, 0xb6, 0xab, 0x99, 0x46, 0x68, 0x31, 0xa4, 0xf8, 0x47, 0x5b, 0x42, + 0x46, 0x35, 0x89, 0xc8, 0x2a, 0xdb, 0x1b, 0x2e, 0x62, 0xdc, 0xd8, 0x7c, 0x50, 0x82, 0x07, + 0x5e, 0x90, 0xad, 0xda, 0x78, 0x55, 0x9a, 0x4b, 0x24, 0xf5, 0xe3, 0xbd, 0x01, 0xaf, 0x74, + 0xa0, 0x84, 0x02, 0xaa, 0xe8, 0xe8, 0x74, 0x1a, 0xc8, 0xa3, 0x3e, 0xa8, 0x29, 0x1b, 0x2f, + 0xc8, 0xcc, 0xa7, 0xf3, 0xda, 0x7a, 0xbf, 0xe1, 0x74, 0xeb, 0xb2, 0xf4, 0x73, 0x9c, 0x6b, + 0x00, 0x2f, 0xa9, 0x2c, 0xe2, 0x1b, 0x4f, 0xf8, 0x23, 0x64, 0xdf, 0x00, 0xb8, 0x09, 0x14, + 0xcf, 0x1f, 0xc1, 0x4c, 0xaf, 0x3e, 0x11, 0x67, 0xc4, 0x25, 0x49, 0x59, 0x9f, 0x2b, 0xeb, + 0x08, 0x6f, 0x13, 0x78, 0x4c, 0x6f, 0x4c, 0xd1, 0xb6, 0x69, 0xe5, 0xb4, 0xd5, 0xd6, 0x29, + 0x7d, 0x4e, 0x21, 0xa4, 0x52, 0x23, 0x64, 0xfb, 0x5d, 0x40, 0xaf, 0x01, 0xc2, 0xce, 0xa0, + 0x66, 0x5e, 0x01, 0xa6, 0xd6, 0x88, 0x73, 0x78, 0x80, 0x70, 0x8f, 0x51, 0x71, 0xd2, 0x07, + 0x38, 0xd6, 0x37, 0x65, 0x54, 0x7f, 0x46, 0x6c, 0x84, 0x50, 0x49, 0x03, 0x53, 0xc3, 0xbe, + 0x38, 0xea, 0xd6, 0xa9, 0x69, 0xc0, 0x60, 0x10, 0x6c, 0x20, 0x6e, 0x96, 0x51, 0x59, 0x3a, + 0xbc, 0x2a, 0x31, 0x81, 0x2c, 0x7e, 0xbc, 0x53, 0x97, 0x11, 0xf5, 0xc7, 0x15, 0x82, 0x9a, + 0x00, 0x79, 0x28, 0xfe, 0xa2, 0x8a, 0x5a, 0x7f, 0xec, 0x35, 0x35, 0xb1, 0xfd, 0x43, 0x2f, + 0xf1, 0x0f, 0xcb, 0x42, 0x34, 0xf2, 0x6a, 0x31, 0xb4, 0x0d, 0x98, 0x6f, 0x1a, 0xcd, 0x29, + 0x9d, 0x83, 0x7a, 0xae, 0xb8, 0x67, 0x9d, 0x5a, 0xab, 0xe5, 0x5d, 0x48, 0xdb, 0x84, 0x9d, + 0xde, 0x12, 0x28, 0xed, 0xbf, 0x58, 0xf0, 0xc1, 0x12, 0xb7, 0xb8, 0xd8, 0x8b, 0x5b, 0x6e, + 0xa7, 0xd5, 0xaf, 0xf1, 0x9b, 0xd5, 0x05, 0x2e, 0x61, 0xae, 0x76, 0x9f, 0x08, 0x27, 0x4a, + 0x82, 0x3c, 0x9c, 0xea, 0xfa, 0xeb, 0x5e, 0x0c, 0x25, 0xdf, 0x1e, 0x1d, 0x85, 0xcd, 0x09, + 0xac, 0x98, 0xe5, 0xdc, 0xfe, 0x93, 0xf0, 0x30, 0xc1, 0x4b, 0xca, 0x99, 0x22, 0x28, 0xa0, + 0x80, 0xe2, 0x97, 0x2c, 0x2d, 0x9a, 0x62, 0xf8, 0x74, 0x0b, 0x27, 0x6d, 0x96, 0x1b, 0x1d, + 0xd3, 0x57, 0x60, 0xc1, 0x5a, 0x87, 0x5d, 0x20, 0x2a, 0x68, 0x3f, 0x80, 0x36, 0x3e, 0x10, + 0x42, 0x2b, 0xee, 0x42, 0x05, 0xfd, 0x5f, 0xf8, 0x44, 0xea, 0x7d, 0xc5, 0xf8, 0x5d, 0x7f, + 0xf6, 0x5f, 0xff, 0xdc, 0xa2, 0x0f, 0x56, 0x14, 0x77, 0xc6, 0x36, 0x70, 0x13, 0x0c, 0x74, + 0x7c, 0x47, 0x2b, 0x7e, 0x78, 0x94, 0x86, 0x07, 0xb4, 0x68, 0x13, 0xa3, 0xff, 0x23, 0x71, + 0x3c, 0x1e, 0xf5, 0x24, 0x2b, 0xd2, 0xff, 0xe7, 0xda, 0x34, 0x8e, 0x7d, 0xcd, 0x50, 0xea, + 0xd0, 0xef, 0xe6, 0x15, 0xb8, 0x3c, 0x50, 0x4f, 0xcb, 0xa6, 0xa2, 0x69, 0xf8, 0x45, 0x86, + 0x00, 0x86, 0xea, 0x0a, 0x4f, 0xbd, 0xc6, 0xfc, 0x3b, 0xca, 0x86, 0x10, 0x81, 0x30, 0xe2, + 0x3e, 0x07, 0x18, 0xcb, 0xe2, 0x43, 0xfe, 0x03, 0x14, 0x9b, 0xe5, 0x81, 0x95, 0x99, 0x85, + 0xb6, 0x25, 0x98, 0x8b, 0xc6, 0x9a, 0x05, 0xde, 0xa3, 0x87, 0x99, 0xc8, 0x08, 0xb7, 0x3d, + 0x31, 0xf5, 0x6d, 0xda, 0x38, 0x90, 0x8e, 0x57, 0x57, 0xda, 0xf3, 0x10, 0x2b, 0xf9, 0xc1, + 0x6a, 0xdd, 0x05, 0xb0, 0x57, 0x3a, 0xaa, 0x12, 0xde, 0xff, 0x60, 0x8f, 0x70, 0x89, 0x14, + 0x71, 0xa8, 0xc7, 0xde, 0x00, 0x82, 0x26, 0xe0, 0xd2, 0x83, 0xbe, 0x8f, 0x6e, 0x68, 0x9d, + 0x60, 0x65, 0x72, 0xa6, 0xb9, 0xa0, 0xe1, 0x6b, 0x10, 0xd9, 0x56, 0xcd, 0x3c, 0x79, 0xf6, + 0x05, 0x1a, 0x2e, 0x3d, 0xb3, 0x18, 0x8e, 0xa4, 0xb7, 0xbf, 0xe9, 0x47, 0x5a, 0x94, 0x9d, + 0x9e, 0x2f, 0xb9, 0xac, 0x90, 0x82, 0xe9, 0x64, 0x76, 0xf4, 0x6c, 0x8d, 0x59, 0x24, 0xaf, + 0xca, 0xcc, 0xf6, 0x80, 0x29, 0xd0, 0x3b, 0x60, 0x6d, 0xd5, 0x61, 0x24, 0x65, 0x6d, 0xa3, + 0x48, 0xea, 0xe7, 0x69, 0x08, 0xb5, 0x85, 0x0a, 0x52, 0x7b, 0x25, 0x5f, 0xe7, 0x61, 0x46, + 0xfb, 0x51, 0x1a, 0xac, 0x1d, 0x00, 0x96, 0x21, 0xde, 0x6d, 0xa7, 0xca, 0x34, 0x2c, 0x02, + 0x61, 0x22, 0xa3, 0xa1, 0xd4, 0xa4, 0x3b, 0x12, 0x6e, 0x79, 0x73, 0xa7, 0x4b, 0xaf, 0x78, + 0x8b, 0x5a, 0xdd, 0x8a, 0x5d, 0xd3, 0x7d, 0xb6, 0xb9, 0xf2, 0x83, 0x86, 0x82, 0xd1, 0xa0, + 0x3b, 0x53, 0x6c, 0x41, 0x85, 0x19, 0xea, 0x00, 0x2d, 0x64, 0x64, 0x52, 0x45, 0x72, 0x4c, + 0x4d, 0x7b, 0xf8, 0x45, 0xac, 0x47, 0xba, 0x0f, 0x10, 0x1b, 0x9c, 0xc7, 0xc9, 0xae, 0x70, + 0x61, 0x14, 0xfb, 0x82, 0xf1, 0x65, 0x23, 0xc0, 0x67, 0xad, 0xaf, 0xa0, 0x4c, 0x98, 0xeb, + 0x7b, 0xe8, 0x73, 0x61, 0xf4, 0x2a, 0xe6, 0x0b, 0x51, 0x9d, 0x05, 0xd4, 0x2d, 0x8a, 0x43, + 0x7b, 0xe3, 0x6f, 0xda, 0xa7, 0xe8, 0x6b, 0x2d, 0x9b, 0x58, 0x44, 0x29, 0x58, 0xb3, 0xc4, + 0x78, 0x7d, 0xc8, 0x1e, 0xca, 0x15, 0xee, 0x84, 0x6b, 0xcb, 0x51, 0x32, 0xb9, 0xd5, 0xa0, + 0xaf, 0xdd, 0x1a, 0x08, 0xef, 0x41, 0x7b, 0x7e, 0x26, 0xfb, 0x6a, 0x99, 0x95, 0xe4, 0x3e, + 0x4b, 0x8c, 0xb2, 0xb1, 0xf9, 0xc8, 0xa9, 0xf2, 0x83, 0xf6, 0xfa, 0x03, 0x74, 0x5a, 0xc6, + 0x75, 0x88, 0x6b, 0x14, 0xb8, 0xbd, 0x5b, 0xe6, 0x6b, 0xab, 0x0f, 0x8b, 0x30, 0xd5, 0x2e, + 0xdc, 0xaf, 0x76, 0xf8, 0x28, 0x5b, 0xf2, 0x55, 0x83, 0x04, 0x8b, 0xa1, 0x0e, 0x5f, 0x80, + 0xb9, 0xf5, 0x41, 0xde, 0x0f, 0xf6, 0x29, 0x05, 0xe9, 0xd2, 0xdc, 0x19, 0x5b, 0x3a, 0x5b, + 0x03, 0x9b, 0xb2, 0x63, 0xcf, 0x21, 0xb8, 0xf2, 0x44, 0xdd, 0x0f, 0x96, 0xa1, 0xe5, 0x80, + 0xe2, 0x4f, 0xa3, 0x1e, 0x46, 0xdb, 0x5f, 0x1d, 0x5f, 0xb4, 0x55, 0xca, 0x57, 0xb5, 0x0b, + 0x1d, 0xce, 0xbe, 0x05, 0x04, 0xdd, 0xf3, 0xbd, 0xaf, 0x06, 0xbf, 0xe1, 0x17, 0xa5, 0xb5, + 0x16, 0x78, 0xcd, 0x76, 0x2d, 0xbf, 0x70, 0x9f, 0x75, 0x2f, 0x6e, 0xc9, 0x87, 0x3c, 0x04, + 0xab, 0x1c, 0xa6, 0xe3, 0xf0, 0xac, 0xca, 0x73, 0xfb, 0x4b, 0xaf, 0x1f, 0xa2, 0xb3, 0x79, + 0xbb, 0xcc, 0xdc, 0xfa, 0x13, 0xd9, 0x83, 0xb0, 0x5d, 0xd5, 0x41, 0xa8, 0x0b, 0x37, 0x95, + 0xa4, 0x89, 0xc8, 0x3a, 0x1f, 0x7d, 0xd7, 0xdc, 0xb5, 0xfa, 0x31, 0xbf, 0x2b, 0x3f, 0x55, + 0x4d, 0xd4, 0x90, 0xda, 0xc8, 0xb2, 0xf9, 0x54, 0x51, 0xba, 0x7b, 0xa7, 0xc1, 0x09, 0xf0, + 0x24, 0x81, 0x7e, 0x2b, 0x64, 0x73, 0x2f, 0xd5, 0x1a, 0xf3, 0xa0, 0x41, 0x15, 0x9d, 0x95, + 0x89, 0x44, 0xe7, 0x5d, 0x26, 0x8a, 0xdf, 0x9b, 0xb6, 0x38, 0xa4, 0xa5, 0x1b, 0x3d, 0xbe, + 0xbb, 0x5b, 0x5b, 0x20, 0xbc, 0xe2, 0x1c, 0xf0, 0x72, 0x50, 0xd0, 0x68, 0xe6, 0xac, 0xa3, + 0x97, 0xd9, 0x5d, 0xe7, 0xbd, 0x4a, 0xd2, 0x87, 0xbc, 0x37, 0x98, 0xc8, 0xaa, 0xbd, 0x57, + 0x80, 0x2d, 0x2d, 0x55, 0xef, 0x15, 0xe5, 0x46, 0x21, 0xff, 0x0c, 0xb1, 0xe8, 0x36, 0x60, + 0x28, 0x1e, 0x2c, 0x7a, 0x6c, 0x1c, 0x4e, 0x29, 0x71, 0xfd, 0x4d, 0x34, 0x09, 0xe4, 0x0b, + 0x58, 0xbe, 0xf5, 0xdd, 0xf9, 0x6e, 0x2f, 0x11, 0xe7, 0x0a, 0xe8, 0x93, 0xf2, 0x53, 0x9a, + 0xb2, 0xa3, 0xc0, 0x47, 0x10, 0x2e, 0x08, 0x55, 0x16, 0x60, 0xc8, 0x86, 0xba, 0x44, 0xcf, + 0xe9, 0x8a, 0x39, 0xd1, 0x1c, 0xfd, 0x7e, 0xdb, 0xfb, 0xaa, 0xe0, 0xa1, 0xa0, 0xfc, 0x69, + 0x2d, 0x5e, 0x45, 0xd5, 0xc0, 0xe0, 0x83, 0x72, 0x12, 0xab, 0x05, 0x8e, 0x1c, 0x01, 0x0e, + 0xdc, 0xd5, 0xd6, 0xa5, 0xca, 0x49, 0x81, 0xba, 0x80, 0xdb, 0x99, 0x0a, 0xf2, 0xe4, 0x1e, + 0xaf, 0xaa, 0x20, 0x9e, 0xe3, 0xaa, 0xdf, 0xa0, 0xba, 0x30, 0x47, 0xf1, 0x29, 0x46, 0x17, + 0x85, 0x57, 0x7a, 0x10, 0xc8, 0x1d, 0xb9, 0x45, 0x52, 0x1f, 0xa7, 0xa6, 0x38, 0x6b, 0x6c, + 0x07, 0xf6, 0xa3, 0x19, 0xa7, 0xe5, 0xb7, 0x4d, 0xbb, 0xf2, 0x9c, 0xd0, 0xe5, 0x9f, 0x9b, + 0xe5, 0xae, 0xdb, 0x76, 0x4d, 0x75, 0x93, 0xb4, 0xc4, 0x4b, 0xa7, 0x4b, 0xa2, 0x5a, 0xba, + 0x14, 0x45, 0xff, 0xbe, 0x1c, 0xd6, 0x36, 0x12, 0x89, 0x17, 0xea, 0xd3, 0x85, 0xdf, 0xaf, + 0x08, 0x49, 0x91, 0xc2, 0xfa, 0x41, 0x6f, 0x44, 0xcf, 0x8d, 0x6f, 0x9b, 0xb2, 0x91, 0x55, + 0xff, 0xdd, 0xfc, 0xf5, 0x11, 0x9d, 0x0d, 0xb3, 0xdb, 0xe3, 0xcf, 0x13, 0x4d, 0x47, 0x87, + 0x68, 0xc6, 0x07, 0xd6, 0xf1, 0x18, 0xdf, 0x2a, 0xea, 0xd2, 0xc9, 0x55, 0x57, 0xa3, 0xae, + 0xf7, 0xfb, 0xb4, 0x33, 0x61, 0x08, 0xac, 0x45, 0xe1, 0x8b, 0x8c, 0x87, 0x1e, 0xe6, 0x5b, + 0x1d, 0x75, 0xff, 0x5a, 0xba, 0x13, 0xa6, 0xa6, 0xb3, 0x66, 0xeb, 0xc9, 0x8e, 0x8d, 0x39, + 0xfd, 0x3f, 0x98, 0x50, 0x6f, 0x7c, 0x84, 0x99, 0x0c, 0x28, 0xc7, 0x47, 0x89, 0xbd, 0x80, + 0xb0, 0x07, 0x0f, 0xcc, 0x64, 0x9c, 0xca, 0x17, 0x9e, 0xbe, 0x95, 0x4c, 0xb5, 0xb4, 0x4b, + 0x0d, 0x3f, 0x62, 0x49, 0xc4, 0x75, 0x18, 0x77, 0xf0, 0xa4, 0x03, 0x10, 0x16, 0xc9, 0x15, + 0xc8, 0x34, 0xe7, 0xdf, 0x81, 0x75, 0x6e, 0x10, 0xa4, 0x41, 0x83, 0x3f, 0xe0, 0xb7, 0x50, + 0x87, 0xbf, 0x63, 0xe1, 0xb7, 0x6c, 0x1e, 0xa3, 0xbc, 0xde, 0x99, 0x70, 0x25, 0xd9, 0x18, + 0x9f, 0x7d, 0x1c, 0x50, 0xac, 0x63, 0x23, 0xfb, 0x8d, 0x57, 0xfa, 0xbf, 0xec, 0xb7, 0x07, + 0x69, 0x50, 0xdd, 0xa5, 0x10, 0xf0, 0xac, 0xae, 0xac, 0xbf, 0x14, 0xbd, 0xb3, 0x35, 0x48, + 0x9c, 0x0f, 0x56, 0xcc, 0x67, 0xd5, 0x12, 0x74, 0xd2, 0x17, 0x34, 0xbd, 0x1a, 0x1b, 0xed, + 0xcf, 0x7e, 0x98, 0xa0, 0x88, 0x1c, 0xb1, 0xeb, 0xd3, 0x8a, 0xd6, 0x7c, 0x61, 0x90, 0x01, + 0x43, 0x73, 0x1e, 0xb7, 0xe1, 0xca, 0x81, 0xeb, 0xa2, 0x5d, 0x7a, 0x67, 0xd4, 0xab, 0xea, + 0xb4, 0x8a, 0xe0, 0x63, 0xe7, 0xd8, 0x4f, 0x2b, 0x1a, 0xb1, 0x2a, 0xd3, 0x93, 0x8c, 0xc4, + 0x3d, 0x19, 0x4d, 0x82, 0x21, 0xb7, 0x8e, 0xfd, 0x31, 0xc9, 0x72, 0x51, 0x2d, 0xd9, 0x2c, + 0x70, 0x4b, 0xcf, 0x74, 0x93, 0x37, 0x20, 0x8d, 0x3a, 0xc3, 0x3a, 0xf1, 0x86, 0xfc, 0x87, + 0x79, 0x82, 0x42, 0xca, 0xfa, 0x31, 0x92, 0x9b, 0x6a, 0x50, 0xb2, 0xc8, 0xb6, 0xbe, 0x32, + 0xba, 0xee, 0x7b, 0xeb, 0x2f, 0xfc, 0xa2, 0x22, 0x12, 0xfc, 0xed, 0x56, 0x59, 0x58, 0x55, + 0xed, 0x70, 0x1d, 0xda, 0x8c, 0x8e, 0x14, 0xc2, 0xcc, 0x55, 0x5b, 0xd5, 0x5f, 0xd5, 0xa0, + 0xfb, 0xce, 0x67, 0xb2, 0x4f, 0x8b, 0xdd, 0x0a, 0x11, 0x14, 0x1a, 0xce, 0x97, 0x73, 0xb4, + 0x9d, 0xe5, 0xe2, 0x43, 0x36, 0xf9, 0x99, 0x01, 0x73, 0xc5, 0x7f, 0xea, 0xfc, 0xbb, 0x29, + 0xb3, 0xa7, 0x70, 0x7a, 0xa8, 0x57, 0x31, 0x01, 0x28, 0xa8, 0x01, 0x05, 0x8b, 0xff, 0xf8, + 0xe7, 0x1e, 0x5d, 0xbd, 0x02, 0x45, 0xd3, 0x64, 0x0f, 0x9d, 0x92, 0x65, 0xb8, 0x8b, 0x41, + 0xd3, 0xf8, 0xf2, 0x2f, 0x30, 0x0c, 0x03, 0x0b, 0x98, 0xcd, 0x73, 0xbc, 0x96, 0xa1, 0x0e, + 0x2f, 0xda, 0xa9, 0xa2, 0x7c, 0x2a, 0x42, 0xb9, 0x5c, 0x90, 0xfc, 0xde, 0xe7, 0x2e, 0x07, + 0xac, 0x44, 0x86, 0x5a, 0xcb, 0x7c, 0x2d, 0xb4, 0x2d, 0x1f, 0x38, 0xfb, 0x05, 0x05, 0x5a, + 0x29, 0xcb, 0x51, 0xc9, 0x1b, 0xcd, 0xe8, 0x53, 0x93, 0xc1, 0x4f, 0xed, 0x88, 0x2b, 0x94, + 0xb6, 0xef, 0x49, 0x6a, 0x04, 0xe3, 0x18, 0xf1, 0xc1, 0xff, 0xbb, 0xde, 0x5c, 0x5d, 0x7e, + 0x8b, 0x55, 0xea, 0x03, 0x37, 0xbd, 0x01, 0xa6, 0x99, 0x07, 0xae, 0x29, 0x35, 0xf1, 0xdf, + 0xd8, 0xa2, 0x4a, 0xed, 0x7c, 0x70, 0xdf, 0x7d, 0xe3, 0xa6, 0x68, 0xeb, 0x7a, 0x49, 0xb1, + 0x31, 0x98, 0x80, 0xdd, 0xe2, 0xbb, 0xd9, 0x03, 0x1a, 0xe5, 0xd8, 0x2f, 0xfd, 0xe0, 0x1c, + 0x74, 0x2f, 0x81, 0x6f, 0xd3, 0xd4, 0x57, 0x7b, 0x25, 0xb0, 0x59, 0x6a, 0x11, 0xa9, 0x8f, + 0xa8, 0x0e, 0xd8, 0xa5, 0xd6, 0x51, 0x45, 0x69, 0xa2, 0x05, 0x97, 0x8f, 0x6d, 0x1e, 0x62, + 0x53, 0x0b, 0x22, 0xac, 0xe4, 0x55, 0x76, 0xc2, 0xd3, 0xc4, 0xcb, 0x48, 0xa1, 0x45, 0x57, + 0xdb, 0xd0, 0xdb, 0x40, 0x46, 0x60, 0xad, 0x16, 0x8d, 0x22, 0xbe, 0x24, 0x58, 0x16, 0x22, + 0x4b, 0xb5, 0x7b, 0x3a, 0x32, 0x5c, 0x24, 0xb0, 0x6c, 0x70, 0x76, 0xf8, 0xa4, 0x76, 0x1f, + 0xba, 0xc1, 0x94, 0xe9, 0x6a, 0x5d, 0xce, 0xc1, 0x4c, 0x19, 0xf4, 0x32, 0xbc, 0x02, 0x86, + 0xbc, 0xa0, 0x36, 0x49, 0x81, 0xa4, 0x8a, 0x72, 0xcb, 0xff, 0xd7, 0x18, 0x43, 0x06, 0xba, + 0x01, 0x03, 0xad, 0x72, 0xa0, 0x27, 0xb0, 0x18, 0x13, 0x8e, 0xaa, 0x81, 0x1f, 0x88, 0xc8, + 0x49, 0x4f, 0x4a, 0x9a, 0x5e, 0x3c, 0xc3, 0xa4, 0x1b, 0x07, 0x3d, 0x97, 0xda, 0xa4, 0xdb, + 0x8e, 0xd3, 0xb3, 0xdb, 0x93, 0x43, 0xa4, 0x8c, 0xfa, 0xec, 0x73, 0x54, 0xcc, 0x4e, 0xf3, + 0x9b, 0x7c, 0x9c, 0xfd, 0x27, 0x34, 0x15, 0xc0, 0x5a, 0x1f, 0xbd, 0xd1, 0x9f, 0xe1, 0xa0, + 0x58, 0xa3, 0xbb, 0x6b, 0x67, 0x1f, 0xec, 0xe0, 0x30, 0x26, 0xef, 0xc5, 0xbc, 0x71, 0xe9, + 0x1d, 0x8f, 0x93, 0x8b, 0x6c, 0xa4, 0x6c, 0x8f, 0x6c, 0x95, 0x80, 0xa1, 0xb0, 0x2c, 0x99, + 0x71, 0xad, 0xd1, 0x99, 0x5d, 0x43, 0xba, 0x6f, 0x09, 0xe7, 0xf2, 0x0b, 0x0f, 0x54, 0x35, + 0x5c, 0xd0, 0xc3, 0x9b, 0xe7, 0xd2, 0x33, 0xea, 0x9c, 0x42, 0x96, 0xa8, 0xca, 0x0c, 0x1a, + 0x12, 0x45, 0x7d, 0xb2, 0xd2, 0xd1, 0x16, 0x4c, 0x17, 0xe7, 0x3f, 0xc9, 0xb3, 0xef, 0x73, + 0x5c, 0x5f, 0xbe, 0x4f, 0xd6, 0xd3, 0x6b, 0x99, 0x94, 0xb5, 0x45, 0xaf, 0x62, 0x25, 0x52, + 0x84, 0x4c, 0x55, 0xbc, 0xaf, 0x70, 0xaf, 0x05, 0x92, 0x0a, 0x65, 0x32, 0x32, 0x06, 0xda, + 0x4b, 0x8a, 0x26, 0x56, 0x03, 0x5b, 0xb8, 0x86, 0xc2, 0x67, 0x90, 0x3b, 0xaf, 0x9c, 0xf5, + 0x34, 0x09, 0xa7, 0x1a, 0x8a, 0xa6, 0xc4, 0x84, 0x32, 0xc0, 0x21, 0x3b, 0xed, 0xef, 0x24, + 0x7d, 0xb0, 0x20, 0xc0, 0x8f, 0xa6, 0x26, 0x7b, 0xa4, 0x83, 0x6a, 0xf3, 0x0f, 0x10, 0x53, + 0x13, 0x3a, 0x56, 0x76, 0xaf, 0xf9, 0x5a, 0xa6, 0x7d, 0xe3, 0x2f, 0xf0, 0x28, 0x75, 0x5b, + 0xac, 0x57, 0x0d, 0x1a, 0xa8, 0x75, 0xac, 0xd9, 0x8f, 0x0e, 0xd7, 0x35, 0xfa, 0x24, 0xef, + 0xa3, 0x52, 0x6f, 0x18, 0x37, 0x43, 0x96, 0xd4, 0xcb, 0x46, 0x65, 0x0c, 0x66, 0x11, 0x9d, + 0xb6, 0xf8, 0xa3, 0xee, 0xbd, 0x6c, 0xa2, 0x0d, 0x16, 0xaa, 0x19, 0x33, 0xd0, 0xfd, 0x5b, + 0x84, 0x9e, 0x51, 0xd9, 0xea, 0x0e, 0xdc, 0x56, 0x35, 0xc4, 0x12, 0xdf, 0x8d, 0x51, 0x83, + 0xec, 0x58, 0x24, 0x04, 0x1d, 0xcc, 0x7c, 0xc5, 0x42, 0x75, 0x93, 0xc9, 0x97, 0xa3, 0x3a, + 0x6e, 0x2e, 0xfd, 0x6f, 0xb7, 0x11, 0x01, 0xd2, 0xaf, 0xfb, 0x84, 0x1e, 0x78, 0x72, 0xe4, + 0x2b, 0xcc, 0x2c, 0xdc, 0xae, 0x31, 0xd9, 0x91, 0xd2, 0x0c, 0xf9, 0x83, 0xbd, 0x88, 0x95, + 0x39, 0x44, 0x85, 0x0f, 0x92, 0xf9, 0xa3, 0x29, 0xae, 0x4f, 0x43, 0x56, 0x9e, 0x71, 0xc2, + 0x0d, 0x71, 0xeb, 0xac, 0xa8, 0x37, 0x80, 0xf3, 0x24, 0x4c, 0xa8, 0x28, 0x5e, 0x73, 0x4f, + 0x12, 0x6f, 0xab, 0xdc, 0xf8, 0xed, 0x4a, 0xc1, 0x06, 0x3f, 0xca, 0x3d, 0x6b, 0xae, 0x27, + 0xcd, 0x38, 0x77, 0x59, 0xe5, 0x15, 0xb7, 0x29, 0x91, 0x59, 0xc0, 0x51, 0x34, 0x90, 0xca, + 0x6b, 0x5f, 0x29, 0x26, 0xf8, 0x1a, 0xa5, 0xe4, 0xb7, 0xd0, 0x16, 0xa5, 0x05, 0x01, 0xc4, + 0x06, 0x0c, 0xc8, 0xdb, 0x96, 0x81, 0xa3, 0x02, 0xca, 0x6c, 0xf8, 0x48, 0xa4, 0xb4, 0xb8, + 0x55, 0x00, 0x9e, 0x13, 0x26, 0x5e, 0x42, 0x2c, 0x45, 0xa3, 0x02, 0x7c, 0x75, 0x6b, 0x1a, + 0x4f, 0xc9, 0x79, 0xb4, 0xbb, 0x28, 0x02, 0xcf, 0x03, 0x2a, 0x4e, 0x02, 0x51, 0x09, 0xc4, + 0xd2, 0x50, 0x23, 0x61, 0x25, 0x89, 0xac, 0x7b, 0xb5, 0x4a, 0x1e, 0x90, 0xd3, 0x8d, 0xd6, + 0x0f, 0x34, 0x7d, 0x7e, 0xb2, 0x93, 0x90, 0xb4, 0x22, 0x3c, 0xb9, 0x12, 0xa8, 0x07, 0x27, + 0xb6, 0x88, 0x29, 0x1e, 0x8a, 0x17, 0x09, 0x0d, 0xcd, 0x04, 0xdc, 0x4e, 0x9a, 0xf0, 0x3e, + 0xa4, 0x12, 0xb0, 0x6d, 0x42, 0x39, 0xf3, 0x00, 0x51, 0x86, 0x50, 0x23, 0x32, 0x90, 0xdf, + 0x9e, 0x07, 0x01, 0x16, 0xae, 0x12, 0x33, 0xd5, 0x95, 0xfc, 0xac, 0x06, 0xcc, 0x88, 0x69, + 0xe2, 0x23, 0xa5, 0x65, 0x5c, 0xa8, 0xb1, 0x7c, 0x1c, 0xb2, 0x64, 0xb4, 0xb2, 0x99, 0x74, + 0x98, 0xa0, 0xfd, 0x20, 0xf2, 0x86, 0x27, 0x08, 0xd1, 0xbf, 0x1f, 0x96, 0xb8, 0x71, 0x42, + 0x36, 0xac, 0x8c, 0xe9, 0xbb, 0x55, 0x8e, 0x22, 0x46, 0x0b, 0xbc, 0x1e, 0xab, 0x12, 0x4d, + 0x73, 0x54, 0x7a, 0x50, 0x55, 0x89, 0x95, 0x39, 0xf2, 0x9f, 0xf2, 0x5f, 0x66, 0xa7, 0x2c, + 0xdc, 0x85, 0x28, 0xee, 0x77, 0xde, 0x67, 0x93, 0xfc, 0xee, 0x62, 0xef, 0x21, 0x18, 0x57, + 0xf4, 0x94, 0x37, 0x2c, 0x55, 0x37, 0x11, 0x47, 0x59, 0x54, 0x07, 0xd3, 0x54, 0x04, 0x61, + 0xc2, 0x00, 0x2d, 0x29, 0xb1, 0x4e, 0x6d, 0x16, 0x4e, 0xcc, 0xe5, 0x0c, 0xf3, 0x9d, 0x2a, + 0x37, 0x0f, 0xb9, 0x45, 0x5a, 0x73, 0xdc, 0x10, 0x72, 0x49, 0x8c, 0x3b, 0xb2, 0xb3, 0x53, + 0x46, 0xda, 0x9b, 0xe1, 0x22, 0x99, 0x23, 0xd3, 0x4a, 0xc3, 0xf9, 0x93, 0x5d, 0x6a, 0xb4, + 0x94, 0x08, 0x1d, 0x38, 0xad, 0x43, 0x7c, 0x51, 0x4d, 0xec, 0x7d, 0x08, 0xd3, 0x7f, 0x53, + 0xb0, 0x29, 0xf4, 0xc6, 0xee, 0xb5, 0xf0, 0x6e, 0x78, 0x60, 0xab, 0x48, 0xbb, 0x8b, 0xba, + 0xe2, 0x77, 0x06, 0x37, 0xa3, 0x1d, 0xd5, 0x7f, 0x87, 0x35, 0xc9, 0xa9, 0xdd, 0x32, 0xe2, + 0x0d, 0x57, 0xd3, 0xab, 0x2e, 0xcc, 0xa9, 0xde, 0x98, 0xa5, 0x9d, 0xdb, 0x9a, 0x7b, 0xf2, + 0x81, 0x7b, 0x0f, 0x73, 0xf6, 0x20, 0x82, 0xe9, 0xfa, 0x8b, 0x90, 0x47, 0xda, 0x39, 0x5c, + 0xdf, 0xa7, 0xd5, 0x77, 0xe8, 0xe8, 0x74, 0xb2, 0x8a, 0xd1, 0xdd, 0xd3, 0x7d, 0x9e, 0x13, + 0x09, 0x69, 0x9a, 0x01, 0x99, 0xb5, 0xa0, 0x54, 0x01, 0x8f, 0xd0, 0x51, 0xa1, 0x75, 0x85, + 0x9a, 0xb2, 0x86, 0x57, 0x52, 0x02, 0xd5, 0x51, 0x8f, 0xc1, 0x6e, 0x72, 0xb1, 0x24, 0x24, + 0x0f, 0x25, 0x64, 0xce, 0xa4, 0x73, 0x32, 0x08, 0x77, 0x11, 0x80, 0x4a, 0xd5, 0xc7, 0x9e, + 0x53, 0x6e, 0xfa, 0xfa, 0x3e, 0xbc, 0x65, 0x67, 0x6a, 0xcc, 0x28, 0xfc, 0xc3, 0x64, 0x04, + 0x63, 0x44, 0xb4, 0x37, 0x07, 0x1d, 0x8b, 0x73, 0x9f, 0xdc, 0x27, 0x22, 0xad, 0x66, 0xa4, + 0xd7, 0x16, 0xd5, 0x45, 0xe0, 0xe7, 0x23, 0x92, 0xcc, 0xb8, 0x7c, 0x48, 0x8f, 0xd1, 0x2a, + 0xd0, 0x1d, 0x41, 0x10, 0x7b, 0x84, 0xd1, 0xd4, 0x02, 0x3d, 0x3c, 0xa9, 0xde, 0xc9, 0x89, + 0x05, 0x85, 0xb4, 0x72, 0x89, 0xd2, 0xfd, 0xac, 0xbb, 0x70, 0xd6, 0xc0, 0xea, 0x3e, 0xb8, + 0x50, 0x72, 0x1e, 0x8f, 0x43, 0xe5, 0x4f, 0x18, 0x4f, 0x53, 0x29, 0xcd, 0x31, 0x8a, 0xd8, + 0x10, 0x0f, 0xf7, 0xd7, 0x65, 0x4a, 0x69, 0x4d, 0xff, 0x05, 0x30, 0x6b, 0x07, 0x3c, 0xae, + 0xab, 0x12, 0x66, 0x35, 0xa7, 0xc9, 0x88, 0x28, 0xc0, 0x5c, 0xd3, 0xec, 0xc5, 0xa3, 0x1f, + 0xe1, 0x4b, 0x1f, 0x20, 0x47, 0x47, 0x15, 0xb2, 0xa4, 0x22, 0xfb, 0x8a, 0xeb, 0x6d, 0xd4, + 0xc2, 0x45, 0x2c, 0x97, 0x40, 0x74, 0x0d, 0x85, 0x98, 0xf1, 0x01, 0xb8, 0xbd, 0xa6, 0x5c, + 0xd7, 0x89, 0xc5, 0x7c, 0x08, 0x18, 0xee, 0xa9, 0x37, 0x94, 0x19, 0x3b, 0x7d, 0xd9, 0x8d, + 0xbe, 0x48, 0xb1, 0x56, 0x44, 0x87, 0xc6, 0xba, 0xa0, 0x08, 0x49, 0xe9, 0x70, 0x48, 0xec, + 0x05, 0xbc, 0xd4, 0x15, 0xf2, 0xb0, 0x18, 0xa5, 0xfa, 0x4a, 0x8b, 0x9c, 0xfd, 0x97, 0x68, + 0xa8, 0xc4, 0xc7, 0x51, 0x52, 0x19, 0x65, 0xc8, 0x73, 0xe5, 0xb9, 0xe3, 0xf4, 0xe9, 0xd0, + 0x21, 0xa0, 0xf2, 0x91, 0x84, 0x8a, 0x75, 0xab, 0x9f, 0x0a, 0x59, 0xf7, 0x9a, 0x8e, 0x7b, + 0x57, 0x75, 0x25, 0xbf, 0xc8, 0xc7, 0x41, 0xd7, 0x59, 0xe8, 0xf0, 0x76, 0xfe, 0x20, 0x00, + 0x19, 0xf7, 0xe2, 0xb8, 0x9e, 0x03, 0x79, 0x74, 0xaf, 0xce, 0x5f, 0x01, 0x9f, 0xd9, 0xeb, + 0xca, 0x0d, 0x81, 0xd5, 0xf3, 0x0e, 0x74, 0xe1, 0xf7, 0x55, 0xc9, 0x38, 0xe2, 0x78, 0x36, + 0x32, 0xb0, 0xca, 0xf9, 0x61, 0xff, 0x57, 0x54, 0xf6, 0x40, 0xce, 0x99, 0xe3, 0x9c, 0xb5, + 0x72, 0xa5, 0x27, 0xd1, 0xe5, 0x14, 0xe8, 0x83, 0xd3, 0xa0, 0x2e, 0x7f, 0x27, 0xcc, 0x01, + 0xc7, 0xf5, 0x0f, 0x39, 0x5c, 0x28, 0x2b, 0xec, 0x37, 0x43, 0x94, 0x79, 0x65, 0xf3, 0xab, + 0x86, 0x85, 0x01, 0xce, 0x9a, 0x66, 0xff, 0xf6, 0xc5, 0x29, 0x85, 0x1b, 0x5c, 0xfb, 0x1c, + 0x3c, 0xda, 0xcd, 0x2b, 0x14, 0xd8, 0xfa, 0x4b, 0x8e, 0xbb, 0x8c, 0x2c, 0x10, 0xda, 0x86, + 0xfd, 0x05, 0xad, 0xe3, 0x9e, 0x8a, 0x34, 0x77, 0x35, 0xa6, 0x78, 0xbb, 0x84, 0xfb, 0xd1, + 0x20, 0xff, 0x80, 0x83, 0xf3, 0x53, 0xda, 0x61, 0x47, 0x46, 0x47, 0x3f, 0x55, 0xca, 0x04, + 0xf1, 0x56, 0x6b, 0x72, 0xac, 0xbe, 0x76, 0xbf, 0xba, 0xae, 0xb7, 0x77, 0x59, 0xd0, 0x1d, + 0x87, 0xc8, 0x90, 0x81, 0x01, 0xa3, 0x02, 0x3c, 0x38, 0x22, 0x1f, 0x0d, 0xdd, 0x2b, 0x81, + 0x63, 0xbe, 0x8d, 0x43, 0x20, 0xbb, 0xba, 0xca, 0xa6, 0x4f, 0x81, 0x9e, 0x53, 0x33, 0xe9, + 0xad, 0xbb, 0x37, 0xd8, 0x0b, 0x00, 0xd5, 0xc7, 0x37, 0x66, 0x94, 0x0a, 0xff, 0xff, 0x85, + 0xc9, 0x65, 0xd8, 0x29, 0x65, 0x5c, 0x8f, 0x83, 0x86, 0xbf, 0x80, 0xe2, 0xb1, 0xf2, 0xd4, + 0xac, 0x6a, 0xc1, 0xcc, 0xa0, 0xd8, 0x87, 0xa4, 0x2e, 0x97, 0x18, 0xce, 0x59, 0x85, 0x61, + 0xba, 0x10, 0x6d, 0x18, 0x0d, 0xcd, 0x80, 0x59, 0x78, 0xc5, 0x19, 0xa3, 0x54, 0xa8, 0x4c, + 0x59, 0x11, 0xf3, 0xb7, 0x65, 0xba, 0xd7, 0x9b, 0x6d, 0x40, 0xcb, 0x09, 0x68, 0xcb, 0x0e, + 0x7d, 0x0f, 0x16, 0x65, 0x57, 0xad, 0x55, 0x7c, 0x00, 0x05, 0x09, 0xb8, 0x39, 0xc7, 0x2e, + 0xb1, 0x02, 0x8c, 0x33, 0x44, 0x93, 0x4a, 0xab, 0xf0, 0x5b, 0x4a, 0xc7, 0x0b, 0xf1, 0x26, + 0x40, 0x25, 0xa6, 0xb1, 0xed, 0x5b, 0xe2, 0x22, 0x56, 0x93, 0xe1, 0x20, 0xaa, 0x1e, 0x01, + 0x65, 0x0a, 0x64, 0xe0, 0xdc, 0x7f, 0xe0, 0x17, 0x71, 0x8c, 0x8d, 0xfa, 0x04, 0xb0, 0xc9, + 0x59, 0x6e, 0xbc, 0x25, 0x34, 0x8a, 0xc4, 0x86, 0x9a, 0x2e, 0x15, 0xf7, 0x44, 0x64, 0x05, + 0xab, 0x89, 0x4b, 0xa5, 0x90, 0xa6, 0xe2, 0x55, 0xf7, 0xde, 0x3d, 0x24, 0xd6, 0x36, 0x94, + 0x47, 0x96, 0xdb, 0x61, 0xab, 0x39, 0x1d, 0xe2, 0x8f, 0xf3, 0xab, 0xea, 0x0a, 0x49, 0x10, + 0x41, 0x28, 0x68, 0x8e, 0x1d, 0x56, 0x75, 0x3b, 0xbe, 0x62, 0xa8, 0xe1, 0xdc, 0x1b, 0xc5, + 0x3a, 0x63, 0xa2, 0xea, 0x3e, 0xa0, 0xfe, 0x3a, 0xa8, 0x3b, 0x61, 0x4e, 0x9f, 0x4e, 0x9b, + 0xf1, 0xb3, 0x03, 0x7f, 0x0f, 0x90, 0xad, 0xed, 0xa7, 0xe3, 0xda, 0x64, 0xe8, 0x42, 0xa2, + 0xc0, 0x4a, 0x0e, 0x50, 0xa1, 0xd1, 0x76, 0x44, 0xd9, 0x6d, 0x24, 0x3e, 0xca, 0xa2, 0x40, + 0xb6, 0xd4, 0xbe, 0x0d, 0xb4, 0x0d, 0x07, 0x11, 0xa7, 0x77, 0x2c, 0x96, 0x45, 0xbe, 0x5d, + 0x29, 0x30, 0xb3, 0x43, 0xee, 0x60, 0x02, 0xc8, 0xe8, 0x59, 0x2f, 0x15, 0xa4, 0x05, 0x35, + 0x4b, 0x07, 0x0d, 0x6c, 0xa3, 0xa3, 0x8a, 0x76, 0x97, 0x9b, 0xd2, 0xfa, 0x9b, 0x73, 0x73, + 0x0b, 0xdd, 0x37, 0x9e, 0xcd, 0x86, 0xe1, 0xbc, 0x31, 0x4a, 0xda, 0x63, 0xdf, 0x86, 0x17, + 0x6a, 0xae, 0x61, 0xe4, 0x68, 0x5c, 0x07, 0x12, 0x99, 0xac, 0x45, 0x97, 0xa4, 0xd9, 0x14, + 0x85, 0x5d, 0x98, 0xb6, 0x95, 0x3c, 0xf6, 0x1c, 0xee, 0xdf, 0xee, 0x61, 0x19, 0xb8, 0xb1, + 0x1b, 0x28, 0x25, 0x23, 0xb1, 0x17, 0x3a, 0x1b, 0xb7, 0x80, 0x75, 0x68, 0xf7, 0xb3, 0xd6, + 0x91, 0xc3, 0x3f, 0x28, 0x7a, 0x3b, 0xda, 0xdb, 0x55, 0xc4, 0x93, 0xdb, 0x4d, 0x8d, 0x73, + 0x31, 0x53, 0xd8, 0x5c, 0xd1, 0xb3, 0x13, 0x3b, 0x89, 0x1b, 0x99, 0x5e, 0xe4, 0x4e, 0x99, + 0x93, 0xf5, 0xc6, 0x1b, 0x83, 0x2b, 0x9a, 0x49, 0xf7, 0x16, 0xcb, 0x5d, 0xb3, 0x16, 0xc7, + 0xa6, 0x89, 0x18, 0x6d, 0x2b, 0x18, 0x43, 0xc4, 0x63, 0x7b, 0xd0, 0x6f, 0x8a, 0xa9, 0x9e, + 0xb0, 0x1b, 0x2a, 0x64, 0x83, 0xc9, 0x79, 0x6a, 0xd4, 0xae, 0xab, 0x3b, 0xe6, 0x75, 0x73, + 0x09, 0x95, 0x80, 0x76, 0x41, 0x0d, 0x60, 0x74, 0xad, 0xc6, 0x81, 0xff, 0x3c, 0xf0, 0x8a, + 0x5e, 0x8a, 0x41, 0xab, 0x24, 0x6c, 0x36, 0xfa, 0x11, 0xe7, 0x58, 0x95, 0x75, 0x1d, 0x3f, + 0x1e, 0xc1, 0xa5, 0x0c, 0xce, 0xa7, 0x3f, 0xde, 0x45, 0x8a, 0x52, 0x92, 0x85, 0xca, 0xe9, + 0x23, 0x92, 0x28, 0x72, 0x5c, 0x05, 0x0f, 0x01, 0xc2, 0x69, 0x82, 0xb7, 0xe7, 0x01, 0xbc, + 0x19, 0xb6, 0xd6, 0x25, 0x02, 0xed, 0x17, 0x75, 0x73, 0x3b, 0x7f, 0xe5, 0x9a, 0xbd, 0x62, + 0x3e, 0xb2, 0x4b, 0x2e, 0xb9, 0x97, 0xf9, 0xe1, 0x0d, 0xc2, 0xee, 0x51, 0x30, 0xbe, 0xf7, + 0x7a, 0x34, 0x1f, 0x93, 0x26, 0xf6, 0x7e, 0x97, 0x60, 0xb8, 0x60, 0x96, 0x5d, 0x7d, 0x0c, + 0x43, 0xb8, 0x71, 0x3c, 0xc8, 0xd5, 0x88, 0xe4, 0x2c, 0xc4, 0x21, 0x81, 0xc2, 0xe5, 0x09, + 0xfd, 0x4a, 0x80, 0x1f, 0x69, 0xee, 0x39, 0x6f, 0x91, 0x8e, 0x8e, 0xc2, 0x03, 0xf0, 0x3a, + 0x7a, 0xc3, 0x35, 0xd5, 0xeb, 0x9e, 0x77, 0x26, 0xdc, 0x18, 0xa4, 0x5e, 0x2a, 0xe9, 0xf7, + 0xdf, 0x60, 0xd0, 0xf1, 0x55, 0x11, 0xc4, 0x81, 0xba, 0x90, 0xd9, 0xf9, 0x3b, 0x62, 0xc7, + 0x03, 0x42, 0x6d, 0xab, 0xe5, 0xd7, 0x13, 0x77, 0xcd, 0x3f, 0x64, 0x57, 0x0f, 0xa8, 0x20, + 0xb4, 0x91, 0x93, 0xea, 0x81, 0x1a, 0x87, 0xc1, 0x4b, 0x63, 0x45, 0x60, 0x95, 0xa9, 0x82, + 0xf4, 0xa9, 0x02, 0xc2, 0x19, 0xa1, 0x6f, 0x58, 0x6c, 0x91, 0x69, 0xad, 0x14, 0xa2, 0x33, + 0x35, 0x2a, 0xa6, 0x13, 0x53, 0x76, 0x28, 0xf5, 0x7e, 0xf9, 0x86, 0x55, 0x67, 0x7c, 0xab, + 0x25, 0x11, 0xe5, 0x1f, 0x57, 0x4c, 0x85, 0xb9, 0x8e, 0x7f, 0x48, 0xc5, 0xdf, 0xb1, 0x75, + 0x82, 0xeb, 0xf6, 0x17, 0x10, 0x02, 0x3d, 0x58, 0xf2, 0xf5, 0x13, 0x65, 0xab, 0x05, 0x52, + 0x04, 0xb3, 0x95, 0xba, 0x22, 0xc9, 0x47, 0x21, 0xfb, 0xe4, 0xa2, 0xd3, 0x6f, 0x16, 0xc5, + 0x56, 0x0b, 0x01, 0x3b, 0x24, 0x38, 0x3c, 0x55, 0xa8, 0x46, 0x2e, 0x8c, 0x17, 0xb6, 0x74, + 0x16, 0x58, 0xec, 0xfa, 0x2b, 0x11, 0x1d, 0x97, 0x8d, 0xe5, 0xd3, 0x95, 0x31, 0xea, 0x93, + 0x48, 0xd8, 0x23, 0x8b, 0x8c, 0x91, 0xa5, 0x05, 0xd8, 0xbe, 0x0b, 0x2e, 0x98, 0x79, 0x7b, + 0x67, 0xac, 0x3a, 0xac, 0x00, 0xf4, 0x7d, 0x5e, 0x79, 0x7e, 0xa3, 0x93, 0xff, 0x8e, 0x93, + 0x39, 0x10, 0x0c, 0x60, 0xc4, 0xd8, 0x8c, 0x63, 0x14, 0x19, 0x0d, 0xb8, 0x45, 0x9d, 0x6a, + 0x3f, 0xda, 0x77, 0x8f, 0xd4, 0x90, 0xab, 0xaf, 0x12, 0xe4, 0xaf, 0x82, 0x69, 0x91, 0x2a, + 0x07, 0xa5, 0xa7, 0x6b, 0xaa, 0xee, 0x16, 0xf0, 0x06, 0x6e, 0xb5, 0x2e, 0xa8, 0xd2, 0x71, + 0x18, 0xb6, 0x64, 0x18, 0x54, 0x25, 0x61, 0xb3, 0x03, 0x75, 0x50, 0xa1, 0xe4, 0x5c, 0x45, + 0x17, 0xa0, 0xd4, 0xdd, 0xdd, 0xc7, 0x45, 0x07, 0x9f, 0xbc, 0x3c, 0xcc, 0x2e, 0x37, 0x0e, + 0xf0, 0x22, 0x8d, 0x78, 0x33, 0x80, 0xf6, 0x58, 0x62, 0x8c, 0x86, 0x38, 0x56, 0x2d, 0x3a, + 0x08, 0x8e, 0x16, 0x2d, 0xb4, 0xb0, 0x79, 0x4a, 0x3f, 0x6d, 0xfc, 0x06, 0x79, 0x71, 0xcf, + 0x0e, 0x56, 0x62, 0x57, 0xfe, 0x5e, 0x7c, 0x01, 0xf3, 0x4b, 0xc9, 0x09, 0x25, 0x32, 0x90, + 0x48, 0xa6, 0x40, 0x21, 0xb9, 0x9e, 0x1e, 0x09, 0x11, 0xbb, 0x4c, 0x00, 0xab, 0x58, 0xbc, + 0xd6, 0xb4, 0x34, 0xaa, 0xab, 0x7f, 0x74, 0x00, 0x81, 0xcc, 0x21, 0x01, 0xe8, 0x63, 0xf9, + 0x89, 0xe4, 0xd3, 0x83, 0x1d, 0xe2, 0x76, 0xdf, 0xb3, 0xb6, 0xb8, 0x8d, 0x88, 0x0c, 0x24, + 0x05, 0xb6, 0x73, 0x65, 0x2a, 0xfe, 0x49, 0xc9, 0x95, 0xfa, 0x34, 0x46, 0xda, 0x29, 0xb3, + 0x54, 0x7f, 0xe7, 0xf6, 0x41, 0x0f, 0xc4, 0xee, 0xb2, 0xc7, 0xa5, 0xfe, 0xdb, 0x66, 0x0a, + 0x31, 0x8c, 0x1b, 0xbd, 0xe4, 0xa5, 0x20, 0x38, 0xf7, 0x6e, 0x70, 0x8a, 0x24, 0x29, 0xb5, + 0x82, 0x7c, 0x8a, 0xd0, 0x74, 0xef, 0x71, 0x6f, 0x94, 0x68, 0x30, 0x14, 0xbb, 0x4d, 0xfc, + 0xcb, 0xbc, 0xc5, 0x14, 0x8c, 0xd3, 0xc2, 0x74, 0x3f, 0x4b, 0x00, 0x0f, 0x7d, 0x80, 0x75, + 0x21, 0xf2, 0x5b, 0xa6, 0xa8, 0x3d, 0xda, 0x4c, 0xa4, 0xac, 0x7e, 0x49, 0x29, 0x2d, 0xc3, + 0x71, 0x5c, 0x69, 0x8f, 0x42, 0x5f, 0x12, 0xd4, 0x2b, 0xa1, 0x0a, 0x2e, 0x2f, 0x4a, 0xd8, + 0xdd, 0x9b, 0xbc, 0x6f, 0x73, 0x95, 0xbb, 0xfd, 0x28, 0x2b, 0x79, 0x8e, 0x64, 0x3b, 0x7b, + 0x6f, 0x10, 0xad, 0xed, 0x7c, 0x14, 0xde, 0x6a, 0x9c, 0x75, 0x2c, 0x09, 0x18, 0xf7, 0xcf, + 0x72, 0xe8, 0xda, 0x82, 0xf1, 0xbd, 0xae, 0xdd, 0x25, 0xe5, 0xc2, 0xff, 0xd6, 0xe6, 0xfa, + 0x26, 0x03, 0xa1, 0x29, 0x0d, 0xbd, 0xce, 0x58, 0x62, 0xf7, 0x4d, 0x78, 0xd4, 0x9b, 0x36, + 0x79, 0x7b, 0xa7, 0x3f, 0x6b, 0xc5, 0x80, 0x06, 0x32, 0xbf, 0xc7, 0x9f, 0x1a, 0x74, 0x0b, + 0x2e, 0x7d, 0xe7, 0x16, 0xa4, 0x91, 0x41, 0x0b, 0x55, 0xc3, 0x4c, 0x48, 0x91, 0x00, 0x4a, + 0xec, 0x13, 0x4e, 0xaf, 0x55, 0x52, 0x64, 0x25, 0x52, 0xa3, 0x9d, 0xe1, 0xa9, 0x62, 0xcb, + 0x54, 0x88, 0x2b, 0xd0, 0x7d, 0x03, 0x77, 0x12, 0xf7, 0x25, 0xbd, 0x2f, 0x0d, 0x4d, 0xc7, + 0x20, 0x0d, 0x9f, 0x03, 0x49, 0xfd, 0x0a, 0x86, 0x40, 0x06, 0xd8, 0x26, 0x04, 0x21, 0x14, + 0xbb, 0xae, 0xe4, 0xb2, 0x64, 0x09, 0xc7, 0xa2, 0xa2, 0xd7, 0x72, 0x06, 0x7e, 0x30, 0xd2, + 0x4a, 0x1e, 0xe3, 0xbb, 0x55, 0x39, 0x4c, 0x8a, 0x8d, 0xae, 0x11, 0xb4, 0xb6, 0x58, 0x5f, + 0x15, 0x05, 0xe0, 0xdc, 0x6e, 0x02, 0x27, 0x02, 0x0e, 0x79, 0x40, 0xa2, 0x77, 0xfa, 0x65, + 0x88, 0x40, 0x18, 0x25, 0xfc, 0xb6, 0xbc, 0x05, 0x6e, 0x9e, 0x2a, 0xdf, 0x5c, 0xb8, 0x60, + 0xca, 0xae, 0x4d, 0xd4, 0x9a, 0x62, 0x66, 0x30, 0xc7, 0xb5, 0xb8, 0x36, 0xbf, 0x08, 0x23, + 0xc0, 0x97, 0x80, 0xc3, 0xd4, 0x16, 0x33, 0x64, 0xf0, 0x19, 0xf7, 0x2a, 0x44, 0xe0, 0x4b, + 0xfc, 0x55, 0x37, 0xd7, 0x38, 0x8a, 0xbf, 0x53, 0x2f, 0x13, 0x2c, 0xaf, 0x8a, 0x2a, 0x4a, + 0xad, 0x46, 0xea, 0x37, 0xd5, 0x60, 0x74, 0xfd, 0xa2, 0x05, 0xa5, 0x2f, 0x9a, 0xb3, 0xac, + 0xeb, 0xa2, 0x44, 0xb2, 0x47, 0x15, 0x2b, 0x7d, 0xf5, 0xe9, 0x0a, 0x70, 0x17, 0x4f, 0x04, + 0x25, 0xac, 0x48, 0x71, 0x57, 0xa8, 0x45, 0xde, 0x84, 0xdb, 0x22, 0x00, 0xff, 0x39, 0x14, + 0xee, 0x1b, 0xd3, 0xb7, 0x0e, 0x02, 0x53, 0x0a, 0x82, 0xb4, 0x97, 0xa1, 0xab, 0x4e, 0x37, + 0xbc, 0x78, 0x3a, 0xfd, 0xbe, 0x96, 0x1c, 0x1c, 0xf6, 0x1f, 0x1d, 0xd8, 0xca, 0x66, 0xf7, + 0x0d, 0x79, 0x12, 0xe3, 0x72, 0xe5, 0x19, 0x78, 0x8c, 0xd4, 0x38, 0x9c, 0xd8, 0x11, 0x3a, + 0x14, 0x7c, 0x07, 0x9c, 0xa2, 0x14, 0xa2, 0x7e, 0x55, 0x89, 0x05, 0x17, 0xf6, 0xd5, 0x2f, + 0xfa, 0xc8, 0x3e, 0x1c, 0xe3, 0x0a, 0x31, 0x93, 0x1b, 0xee, 0x79, 0xf1, 0xd9, 0xa0, 0x40, + 0xba, 0x7f, 0x72, 0x51, 0x86, 0x28, 0x5a, 0x7d, 0xd2, 0x38, 0xe6, 0x1b, 0x4f, 0xfd, 0xf0, + 0xa9, 0x3e, 0x92, 0xf6, 0x37, 0x0a, 0x3f, 0xf3, 0x18, 0x31, 0x7d, 0xcd, 0x2c, 0x21, 0xc3, + 0xca, 0x1e, 0xbc, 0xeb, 0xcf, 0x23, 0x92, 0x68, 0xee, 0x5b, 0x1e, 0x51, 0x48, 0x07, 0xc9, + 0xf9, 0x09, 0xf7, 0x97, 0xf0, 0x49, 0x16, 0x12, 0x45, 0xdb, 0x07, 0x6c, 0x0c, 0xde, 0x8b, + 0xa0, 0xd9, 0xd2, 0xf8, 0x4b, 0x69, 0x92, 0x96, 0x6a, 0x2b, 0x2c, 0xe2, 0x4f, 0x81, 0x86, + 0xcb, 0x6f, 0xa8, 0x0d, 0x68, 0x23, 0x59, 0xac, 0x1f, 0x52, 0xfd, 0x99, 0x88, 0x35, 0xbc, + 0x9e, 0xce, 0xa6, 0xd9, 0xa2, 0x68, 0x35, 0x7e, 0xfc, 0x2d, 0xfb, 0x16, 0x46, 0x06, 0x1c, + 0xac, 0x40, 0xb5, 0x90, 0x36, 0x0d, 0x48, 0xfe, 0x7c, 0x93, 0x34, 0x66, 0x3f, 0x91, 0x10, + 0xf3, 0x16, 0x21, 0x36, 0x3d, 0xd7, 0x8e, 0x39, 0x64, 0x0f, 0x8c, 0xbb, 0xd3, 0x49, 0xcd, + 0xa0, 0xb3, 0xac, 0x24, 0xa8, 0xd4, 0xda, 0xb4, 0x35, 0xe7, 0x7f, 0xbc, 0x27, 0xa0, 0xd4, + 0xdd, 0x9a, 0x97, 0x18, 0x74, 0x58, 0x88, 0xe2, 0x2c, 0xa8, 0xf8, 0xf0, 0x73, 0x77, 0x05, + 0xab, 0xd5, 0x84, 0x33, 0x17, 0xae, 0x8e, 0x84, 0xa5, 0x93, 0x50, 0x5f, 0x6d, 0x73, 0x28, + 0xbf, 0xd1, 0x85, 0x8f, 0x18, 0xce, 0x04, 0xdf, 0x67, 0x75, 0xdf, 0x46, 0x8f, 0x41, 0x9d, + 0x4e, 0xfd, 0xe9, 0x65, 0xa6, 0xb6, 0xbb, 0xbf, 0x1c, 0xc5, 0xef, 0xc0, 0x2f, 0x50, 0x17, + 0xc9, 0x1c, 0x23, 0x1e, 0xcb, 0x21, 0x41, 0x95, 0x97, 0x14, 0x1f, 0xe2, 0xde, 0xd1, 0xea, + 0xdc, 0xad, 0x68, 0x46, 0x68, 0x0a, 0x70, 0x14, 0x44, 0x19, 0x97, 0x33, 0xdc, 0x98, 0x75, + 0x56, 0xe3, 0x70, 0x30, 0xcc, 0x79, 0x46, 0x08, 0x33, 0xcb, 0x33, 0x93, 0xd1, 0x0c, 0x28, + 0xea, 0xc8, 0xc8, 0x2f, 0xe8, 0x04, 0x9b, 0x54, 0xcc, 0xf0, 0x8e, 0x44, 0x06, 0x0a, 0x78, + 0x42, 0x38, 0x82, 0x94, 0xd9, 0x00, 0xf9, 0x36, 0x0f, 0xea, 0x35, 0xdd, 0xd4, 0xd7, 0x98, + 0x23, 0xcf, 0xc5, 0x99, 0x46, 0x04, 0x4b, 0x41, 0x7f, 0xc8, 0x49, 0x13, 0x4f, 0xc8, 0x0c, + 0x30, 0xc2, 0xbb, 0x9e, 0xab, 0xec, 0x4e, 0x05, 0x67, 0x08, 0x3c, 0x99, 0x65, 0x85, 0xb3, + 0xb0, 0xba, 0x0f, 0x14, 0x5c, 0xe5, 0x17, 0x05, 0xc0, 0x8f, 0x84, 0x7d, 0xdf, 0xb5, 0xa7, + 0x02, 0xdd, 0x33, 0xcb, 0xb3, 0x02, 0x14, 0x8a, 0xed, 0x1f, 0x0a, 0x00, 0xe6, 0xef, 0xc0, + 0xd0, 0xfc, 0x9f, 0x69, 0xba, 0x8b, 0xe6, 0xeb, 0x66, 0x62, 0x51, 0xd7, 0x91, 0x50, 0xe6, + 0x75, 0x3b, 0x49, 0x17, 0x61, 0xd3, 0x44, 0x99, 0x43, 0x7a, 0xe8, 0x2c, 0x2a, 0x12, 0x59, + 0x87, 0x25, 0x95, 0x22, 0xc6, 0xe7, 0x67, 0xd7, 0xbc, 0x34, 0xd5, 0x0f, 0x0b, 0xab, 0x10, + 0x3c, 0x7a, 0x86, 0x31, 0xc0, 0x9c, 0x96, 0xdb, 0x0d, 0xa4, 0xf3, 0x92, 0x55, 0x1c, 0xc4, + 0xdc, 0xca, 0xc3, 0x49, 0x6f, 0xeb, 0x6f, 0x8e, 0x48, 0xd1, 0x8a, 0x83, 0x6d, 0x3b, 0x24, + 0xaa, 0x6e, 0xdf, 0x15, 0x30, 0xe3, 0x6b, 0xcc, 0x87, 0x49, 0xb6, 0xa0, 0x27, 0xc7, 0x95, + 0x0b, 0x94, 0xf5, 0x48, 0xb7, 0xf9, 0xd9, 0xe0, 0xc4, 0xf4, 0x42, 0xfb, 0xd6, 0x58, 0x2f, + 0xad, 0x3d, 0xe1, 0x80, 0x92, 0x4d, 0xf9, 0xb1, 0x2d, 0xdf, 0x74, 0x12, 0x4b, 0x37, 0x05, + 0xab, 0x07, 0x25, 0x0d, 0xef, 0xfc, 0x12, 0xcf, 0xb5, 0xdf, 0x20, 0x10, 0x98, 0xed, 0x40, + 0xb8, 0x69, 0x9a, 0xab, 0xad, 0xd9, 0x9d, 0x71, 0x9e, 0x80, 0x77, 0x03, 0x08, 0x39, 0xb6, + 0x75, 0x16, 0xbe, 0x64, 0x24, 0xbd, 0xab, 0x58, 0x3f, 0x9b, 0x56, 0x0d, 0x43, 0x0e, 0x23, + 0xbd, 0x87, 0x18, 0x30, 0xcb, 0x22, 0xad, 0x60, 0x17, 0xb3, 0xcd, 0x38, 0x8e, 0x3f, 0x95, + 0x3d, 0x49, 0xeb, 0xe5, 0xb0, 0xdc, 0x31, 0xd7, 0x0d, 0x9e, 0xbe, 0x76, 0x67, 0x8e, 0x93, + 0x67, 0x65, 0x48, 0xbc, 0x63, 0x88, 0x7b, 0xdf, 0x49, 0x30, 0xb9, 0xe3, 0xb1, 0xf8, 0xba, + 0xac, 0xe7, 0xd7, 0x89, 0x85, 0x78, 0xb4, 0x4e, 0x28, 0x10, 0x90, 0x6c, 0xda, 0x47, 0x63, + 0xdf, 0x23, 0xc5, 0x8b, 0xd4, 0xc9, 0x61, 0xbd, 0x3a, 0x20, 0x7b, 0x58, 0xf2, 0x9c, 0xa3, + 0x39, 0xdc, 0xb9, 0x00, 0x6f, 0x61, 0xbd, 0xfb, 0x2d, 0x86, 0x04, 0xbd, 0xcf, 0x6a, 0x27, + 0x65, 0x21, 0x6d, 0xdb, 0xd5, 0x12, 0x78, 0xaa, 0x93, 0xd5, 0x1e, 0x78, 0x88, 0xfd, 0x3f, + 0x48, 0xf4, 0x23, 0x2e, 0xd8, 0x44, 0xd8, 0x30, 0x53, 0xce, 0x9a, 0x2b, 0x24, 0xdf, 0xd3, + 0x2a, 0x88, 0x8c, 0x7a, 0x2a, 0x22, 0xe3, 0x4c, 0x39, 0x5d, 0xe5, 0x9a, 0x48, 0xad, 0x9e, + 0x4c, 0x2c, 0x23, 0x1f, 0x46, 0xab, 0x8b, 0x4b, 0x39, 0x8b, 0x7a, 0xf4, 0xc6, 0x20, 0x09, + 0x86, 0xb4, 0xe2, 0xb7, 0x6a, 0x69, 0x2f, 0x97, 0x58, 0xd7, 0xf2, 0x48, 0x49, 0x29, 0xd9, + 0xd4, 0x26, 0x96, 0x3b, 0x4e, 0x7a, 0xfc, 0x83, 0xcc, 0x57, 0xa4, 0x73, 0xf2, 0x13, 0x88, + 0x3a, 0x2c, 0x03, 0x21, 0x50, 0x80, 0x42, 0xad, 0xa0, 0x97, 0x4d, 0x81, 0x44, 0x71, 0xfd, + 0x20, 0x35, 0xad, 0xfd, 0xb2, 0x76, 0xc2, 0x39, 0xfb, 0x02, 0x2e, 0x06, 0xb8, 0xc6, 0x0d, + 0xbc, 0x20, 0x46, 0x3a, 0x2d, 0x9a, 0x50, 0x3e, 0xcf, 0xc8, 0x99, 0x7d, 0xb3, 0xad, 0x3b, + 0x41, 0x8a, 0x76, 0x42, 0x7a, 0x91, 0x12, 0xdc, 0xcc, 0x92, 0x9a, 0xdb, 0x7d, 0x7f, 0x96, + 0xf9, 0x36, 0xf4, 0xff, 0x68, 0x2f, 0x34, 0x9d, 0xac, 0x9e, 0x90, 0xf5, 0xf0, 0x13, 0x7a, + 0xef, 0x9f, 0xbc, 0xfb, 0x55, 0xe2, 0xd9, 0x0a, 0xfc, 0xdf, 0x89, 0xcf, 0x22, 0x97, 0x4e, + 0x2f, 0xb1, 0x2a, 0xe9, 0xbd, 0xbc, 0xb3, 0x17, 0x57, 0x7e, 0x5a, 0xcd, 0xd0, 0x9b, 0x9f, + 0x4a, 0x50, 0xa0, 0x79, 0xd8, 0x1d, 0xf8, 0x14, 0x99, 0x5f, 0xdb, 0x5f, 0x6f, 0xcc, 0x97, + 0x39, 0x42, 0x96, 0x0e, 0xbe, 0x93, 0x89, 0xac, 0xf8, 0x0f, 0xdd, 0x9f, 0x36, 0x2e, 0x97, + 0x79, 0x72, 0xb1, 0x76, 0xc6, 0xc6, 0x0d, 0x70, 0x75, 0xa1, 0x7a, 0x69, 0xf7, 0x15, 0x82, + 0xd6, 0x34, 0xb1, 0x21, 0xa7, 0xcf, 0x84, 0x22, 0x15, 0x68, 0x52, 0x2a, 0x41, 0x2c, 0xb4, + 0x5a, 0x3f, 0xec, 0x73, 0x71, 0x29, 0x9e, 0x21, 0xa2, 0x1d, 0xd3, 0x0d, 0x3f, 0x79, 0xea, + 0x4d, 0x1a, 0x31, 0x91, 0x89, 0xd7, 0x96, 0xca, 0x08, 0x1e, 0x85, 0xc8, 0x70, 0x3f, 0x0c, + 0xa4, 0x0c, 0x00, 0x74, 0xf6, 0x38, 0x43, 0x13, 0xe4, 0x14, 0xf1, 0xbe, 0x32, 0xd3, 0xd9, + 0x31, 0x8e, 0x0e, 0xf9, 0x66, 0x98, 0x04, 0x74, 0x9c, 0x82, 0x61, 0x03, 0x7e, 0x91, 0x25, + 0x26, 0x62, 0xfe, 0x3d, 0x00, 0xbb, 0x6b, 0xa8, 0x9f, 0xe8, 0x95, 0x64, 0x35, 0xb8, 0xb0, + 0x92, 0x1d, 0x61, 0x6b, 0xcb, 0x36, 0xe1, 0x6d, 0x1e, 0x03, 0x0e, 0x66, 0x1c, 0x9b, 0x84, + 0xe8, 0xd4, 0x2e, 0xbd, 0x56, 0x18, 0x8b, 0xe5, 0x3e, 0x0d, 0x73, 0xd6, 0xae, 0x74, 0x60, + 0x13, 0x58, 0x38, 0x6e, 0x78, 0x57, 0x52, 0x2d, 0xbb, 0x0e, 0x7d, 0x83, 0x0c, 0x4a, 0x89, + 0x46, 0x97, 0x33, 0xfa, 0x18, 0x71, 0xd6, 0x1b, 0x57, 0xab, 0xd0, 0xc6, 0xd7, 0x55, 0x38, + 0x14, 0xaf, 0xfc, 0x3d, 0x05, 0xee, 0x78, 0x30, 0x0f, 0xe1, 0x7b, 0x18, 0x1c, 0x67, 0x29, + 0x35, 0xab, 0x2c, 0x31, 0x22, 0x24, 0x21, 0x50, 0x56, 0x88, 0x0f, 0x4e, 0xd2, 0x48, 0x55, + 0xf0, 0x4d, 0x24, 0x9a, 0x82, 0x17, 0x20, 0x0d, 0x2f, 0x60, 0x50, 0x58, 0x40, 0x1a, 0x56, + 0x01, 0x41, 0xfb, 0x7c, 0x01, 0x8d, 0x5e, 0x21, 0x12, 0x48, 0x80, 0xfa, 0x2c, 0x57, 0x57, + 0xcb, 0xed, 0xa1, 0x35, 0x89, 0x00, 0x9b, 0xa7, 0xd8, 0x8f, 0x34, 0xdf, 0x26, 0x9a, 0xa5, + 0xf1, 0x7d, 0x0e, 0x15, 0x72, 0x2d, 0xd5, 0x61, 0xec, 0x26, 0x3d, 0x79, 0xe8, 0xfb, 0x67, + 0x9c, 0x9e, 0x15, 0x74, 0x8a, 0x78, 0x68, 0x1d, 0x0b, 0x01, 0x94, 0x7d, 0x3e, 0x0c, 0x18, + 0x80, 0x49, 0x89, 0x0e, 0x11, 0xdd, 0xf9, 0x6b, 0xcd, 0x1e, 0xae, 0xda, 0x18, 0x8f, 0x03, + 0xf6, 0x46, 0x7f, 0x0e, 0x91, 0x0e, 0x70, 0xe4, 0x44, 0x81, 0x01, 0xf5, 0xfb, 0xaa, 0xfd, + 0x54, 0xe5, 0x7b, 0xef, 0x17, 0xc2, 0x06, 0x8b, 0x54, 0x5d, 0x89, 0x7b, 0x3b, 0x04, 0x02, + 0xf3, 0x3d, 0x77, 0x82, 0x63, 0x9e, 0xac, 0xad, 0xad, 0x62, 0xcf, 0x8f, 0x54, 0xfd, 0x8f, + 0x81, 0x89, 0x84, 0xa2, 0x17, 0x44, 0xf3, 0x39, 0x13, 0x6a, 0x6f, 0x42, 0x60, 0xcb, 0xbd, + 0xed, 0x0d, 0x2f, 0xf0, 0x68, 0x21, 0xce, 0xc3, 0x51, 0x9b, 0x58, 0x0d, 0xa0, 0x6d, 0x27, + 0x1e, 0xd1, 0x72, 0x43, 0x44, 0xbd, 0x7d, 0x1b, 0x2e, 0xf8, 0x54, 0x4d, 0xdd, 0x6d, 0x51, + 0xd4, 0xb0, 0xc5, 0x31, 0xc2, 0xb3, 0xa8, 0xc6, 0xfe, 0x58, 0xf9, 0x8b, 0x29, 0x9c, 0xe7, + 0x8c, 0x15, 0x6b, 0xb6, 0xd3, 0x9b, 0x00, 0x46, 0x19, 0x6c, 0x97, 0x66, 0x8b, 0xfb, 0xea, + 0x34, 0x1b, 0xa8, 0xfd, 0x18, 0x33, 0xcb, 0xb9, 0x98, 0x40, 0x81, 0x6b, 0x63, 0x9a, 0xcf, + 0xf5, 0x91, 0x0f, 0x91, 0x12, 0x1e, 0x95, 0xe4, 0x1b, 0xd6, 0xf1, 0x6f, 0x14, 0x13, 0xf2, + 0x3f, 0xec, 0x51, 0x2b, 0x13, 0xaa, 0x2e, 0x29, 0xae, 0x67, 0x98, 0x0f, 0xd1, 0x19, 0xe0, + 0x8a, 0x73, 0xb8, 0x91, 0x9b, 0xa6, 0xcc, 0x11, 0xef, 0x1e, 0xea, 0x54, 0xa2, 0x84, 0x2e, + 0xab, 0x3c, 0xd1, 0x98, 0xa9, 0xa1, 0xf6, 0x77, 0x51, 0x06, 0x6f, 0xef, 0x6c, 0x76, 0x7f, + 0xcc, 0xb1, 0x24, 0x96, 0xc6, 0x09, 0x63, 0x7e, 0x66, 0xda, 0x8d, 0x50, 0xad, 0x8a, 0xcf, + 0xa1, 0xa3, 0xce, 0x00, 0x30, 0x9b, 0xe7, 0x59, 0xcf, 0xb3, 0xc8, 0x25, 0xb5, 0x22, 0x83, + 0x1f, 0x76, 0xb3, 0xa4, 0x30, 0xcc, 0xa0, 0x0c, 0xc7, 0x98, 0xd1, 0x5e, 0x9f, 0x61, 0xd5, + 0x1a, 0xcf, 0xac, 0x01, 0x01, 0xde, 0xd3, 0x70, 0x85, 0x86, 0x48, 0x42, 0x6f, 0x1f, 0x2b, + 0xd3, 0x3d, 0xac, 0xf5, 0xc7, 0x34, 0x18, 0xd6, 0xbe, 0x1a, 0xf1, 0x0d, 0x55, 0xe6, 0xce, + 0x31, 0xcc, 0xc5, 0x69, 0xce, 0x6e, 0xf1, 0x8d, 0x31, 0x4f, 0x5f, 0xc6, 0x7e, 0x20, 0xb7, + 0x01, 0xf2, 0x30, 0x1b, 0xde, 0x1f, 0x72, 0x40, 0x2c, 0xd7, 0x98, 0xa4, 0x43, 0xe8, 0x24, + 0x3b, 0xfe, 0x5d, 0x7a, 0x32, 0xb5, 0xfc, 0x0c, 0xe0, 0x91, 0xff, 0x37, 0xee, 0x5b, 0x8a, + 0xbe, 0xa7, 0x05, 0x20, 0x44, 0xa3, 0x94, 0xf9, 0xdb, 0x17, 0x84, 0xd4, 0xbb, 0x3b, 0xe4, + 0x37, 0xd9, 0xb5, 0xe8, 0xab, 0x4a, 0xaf, 0xfe, 0x9a, 0x8d, 0x38, 0x10, 0x7f, 0xf1, 0x4f, + 0x59, 0x2f, 0xf2, 0x4a, 0x04, 0x01, 0x98, 0xf7, 0xe0, 0x5f, 0x96, 0x3f, 0xed, 0x6c, 0x50, + 0x34, 0x4c, 0x6c, 0x7d, 0x81, 0x44, 0xd8, 0x6b, 0x88, 0x43, 0x5a, 0xc5, 0xe8, 0x13, 0x20, + 0xf3, 0x51, 0x99, 0x1a, 0xd8, 0xcf, 0x22, 0xe6, 0x64, 0x8c, 0xd7, 0x49, 0x6a, 0xa0, 0x82, + 0x53, 0xca, 0xde, 0x6d, 0x55, 0x20, 0x74, 0x7d, 0x4f, 0xe5, 0x63, 0xf4, 0x56, 0x8d, 0x85, + 0xa2, 0xc4, 0x16, 0x79, 0x9a, 0x1e, 0x48, 0xfa, 0x33, 0x70, 0xfd, 0x61, 0xe1, 0x78, 0x59, + 0x36, 0x3a, 0xe6, 0x97, 0xd6, 0x34, 0xc5, 0xfd, 0xc5, 0x6d, 0x4b, 0x73, 0x95, 0x02, 0xac, + 0x43, 0x6d, 0x94, 0x83, 0xfa, 0x6b, 0xa7, 0x46, 0x1f, 0x6c, 0x1d, 0x7f, 0xb6, 0x40, 0xa9, + 0xd4, 0xd0, 0x92, 0x48, 0x3f, 0x2e, 0x7f, 0x74, 0xca, 0x2c, 0x5a, 0x37, 0x64, 0x86, 0x89, + 0xc8, 0x1a, 0x0d, 0xb2, 0x2b, 0xa2, 0xb7, 0xeb, 0xde, 0xe5, 0xe3, 0x83, 0x3f, 0xac, 0x4c, + 0xc2, 0x78, 0x81, 0xd1, 0xae, 0x46, 0x84, 0x2e, 0x4c, 0x93, 0x0a, 0x65, 0x88, 0xa2, 0xda, + 0x26, 0x9b, 0xfb, 0x89, 0xab, 0xc3, 0xdd, 0x07, 0x85, 0x0f, 0x25, 0x27, 0x45, 0xc3, 0x0f, + 0x06, 0x79, 0x21, 0xf1, 0xc8, 0xf7, 0x62, 0x5e, 0xf2, 0x28, 0x72, 0x5d, 0xdb, 0x1b, 0x1c, + 0x1c, 0xa2, 0x22, 0x88, 0x63, 0xe5, 0xa5, 0x45, 0x9d, 0x06, 0x88, 0x94, 0xe6, 0x0e, 0x87, + 0xd5, 0x08, 0x63, 0x7f, 0xcb, 0x7c, 0x8a, 0x76, 0x34, 0x4d, 0xf9, 0x2a, 0xa5, 0x29, 0x0b, + 0x89, 0x92, 0xbf, 0xed, 0x97, 0x14, 0xc1, 0xc0, 0x00, 0xe9, 0x33, 0x04, 0xb3, 0x9b, 0x1b, + 0x36, 0x97, 0x68, 0x1f, 0xa0, 0xa8, 0x8d, 0x4e, 0xa1, 0xdf, 0x33, 0x4a, 0x19, 0xe3, 0x8e, + 0x18, 0x0d, 0x8c, 0xfd, 0x58, 0xe1, 0x89, 0xbd, 0x15, 0xbb, 0x8f, 0x32, 0x23, 0x7d, 0xd5, + 0xbb, 0x1f, 0x35, 0xb6, 0xf7, 0x05, 0x1e, 0x20, 0x63, 0xad, 0x81, 0x65, 0x84, 0x22, 0xd8, + 0xea, 0xef, 0xe6, 0x81, 0x25, 0x7f, 0x2e, 0x69, 0xe7, 0x34, 0xa7, 0xe4, 0x07, 0x7f, 0x26, + 0x65, 0xf1, 0xcc, 0xd6, 0x69, 0xc8, 0xa7, 0x2b, 0x87, 0x87, 0x83, 0x08, 0xd3, 0x8d, 0x84, + 0x35, 0xff, 0x40, 0x71, 0x20, 0xc6, 0xed, 0xf0, 0xed, 0xd5, 0x52, 0x79, 0xe5, 0x59, 0xf6, + 0xf9, 0xec, 0x8e, 0x6f, 0x07, 0xcf, 0xa6, 0x8f, 0x33, 0x27, 0x1a, 0x07, 0x3d, 0x5c, 0xdc, + 0x42, 0x14, 0x73, 0xe4, 0x68, 0xcd, 0xfd, 0x20, 0xe5, 0x9a, 0xbc, 0xb9, 0x7d, 0xb0, 0xef, + 0xc6, 0x74, 0xab, 0x9d, 0x4e, 0xa6, 0x8c, 0x6a, 0x0d, 0xca, 0x3b, 0x38, 0xa6, 0xd0, 0x25, + 0x85, 0xc3, 0x29, 0x6b, 0x95, 0x3b, 0x28, 0xce, 0xdc, 0xd3, 0x9e, 0x30, 0x50, 0x3a, 0x2c, + 0x1b, 0x0f, 0x5e, 0x7b, 0x38, 0x9e, 0x1d, 0x86, 0x49, 0x26, 0x4d, 0x9a, 0x5f, 0x01, 0xf0, + 0x62, 0x3e, 0x75, 0xb5, 0x24, 0xbd, 0x64, 0x2b, 0xd7, 0x65, 0x89, 0x7f, 0xbe, 0x37, 0x8b, + 0x44, 0x6f, 0xb9, 0x34, 0x7e, 0xa7, 0xe8, 0x77, 0xcb, 0xcc, 0x16, 0x24, 0x57, 0xd3, 0xf4, + 0x35, 0xb3, 0xbf, 0xbc, 0xb9, 0xa5, 0x4e, 0x86, 0xc0, 0xd6, 0x66, 0xd7, 0x37, 0xe7, 0xf6, + 0x08, 0xa8, 0x39, 0x0e, 0xac, 0x1c, 0xe8, 0xca, 0xb7, 0xb8, 0xf8, 0x88, 0x86, 0x09, 0xcc, + 0x27, 0x9d, 0x0b, 0xa9, 0xe5, 0x16, 0x00, 0x75, 0x50, 0x4f, 0x22, 0xf7, 0xcc, 0x08, 0xd3, + 0x07, 0xd0, 0xba, 0x5c, 0x8c, 0x16, 0x70, 0x5f, 0xa8, 0xd4, 0xd0, 0xee, 0x79, 0x35, 0xea, + 0x0c, 0x3d, 0x5c, 0x10, 0x35, 0x89, 0x8a, 0xd9, 0xbe, 0xa0, 0xd1, 0xe3, 0x00, 0xe8, 0x89, + 0x61, 0x72, 0x9c, 0xa6, 0x33, 0x97, 0x25, 0x29, 0x94, 0xf1, 0x0a, 0xde, 0x52, 0x8a, 0xc6, + 0xd4, 0xcd, 0x01, 0xf0, 0x72, 0x9e, 0x18, 0xa2, 0x51, 0x7f, 0x6b, 0x17, 0x3d, 0x62, 0xe1, + 0x0f, 0xf0, 0x33, 0x23, 0x18, 0x92, 0xd2, 0x33, 0x72, 0xc3, 0x03, 0xf3, 0x66, 0x6b, 0x19, + 0x4a, 0x4d, 0x0f, 0x1c, 0x30, 0xbb, 0x54, 0x31, 0x2a, 0x9d, 0xd5, 0xb2, 0x07, 0x46, 0xe2, + 0x12, 0x26, 0xbf, 0xad, 0x80, 0x4c, 0x9e, 0x6e, 0x55, 0x87, 0xa0, 0xfd, 0x47, 0x5a, 0x9b, + 0x0b, 0xc6, 0x56, 0x88, 0x52, 0xec, 0x0d, 0x40, 0x2c, 0x6d, 0x3b, 0x10, 0xa5, 0x8e, 0x01, + 0xed, 0x05, 0xf0, 0x09, 0xf6, 0xbb, 0x93, 0x00, 0xbe, 0x57, 0x74, 0x9a, 0x15, 0x62, 0x01, + 0x4f, 0x5a, 0xf7, 0x57, 0x6e, 0x0c, 0x05, 0x96, 0x16, 0xef, 0x1b, 0xfa, 0x01, 0x37, 0xc7, + 0x6c, 0x2d, 0xca, 0xf0, 0x5d, 0xd1, 0x90, 0x63, 0xcc, 0xec, 0xb9, 0x26, 0x01, 0x90, 0xfb, + 0xf5, 0xf7, 0x80, 0x7f, 0x1e, 0x57, 0xdb, 0xa0, 0x07, 0x66, 0x2f, 0x5b, 0xb4, 0x5b, 0x12, + 0x94, 0x83, 0xe9, 0xcd, 0xef, 0xe9, 0x73, 0xee, 0x3f, 0xfc, 0xd0, 0xd9, 0x62, 0xfb, 0x97, + 0xee, 0x6e, 0x85, 0xf9, 0xc9, 0x95, 0x28, 0xfb, 0x00, 0x72, 0x69, 0x42, 0xd6, 0x38, 0x39, + 0xd7, 0x0a, 0xb2, 0xa5, 0x16, 0xc6, 0x23, 0x0e, 0xb1, 0xfc, 0xb8, 0x1a, 0x9d, 0xa2, 0xdc, + 0xa5, 0x61, 0xb8, 0x4f, 0x99, 0x39, 0xb0, 0x3b, 0x27, 0xd1, 0x6f, 0x5d, 0x10, 0x67, 0xd7, + 0x9e, 0x32, 0x2d, 0x04, 0x9a, 0x3e, 0xa5, 0x87, 0x69, 0x20, 0x91, 0xd6, 0x35, 0x53, 0xb3, + 0x1f, 0x68, 0xfc, 0x00, 0x62, 0x0b, 0x22, 0x41, 0x90, 0x1d, 0x7b, 0x40, 0x13, 0x55, 0xe6, + 0x79, 0x8e, 0x85, 0xe3, 0xd3, 0x11, 0xae, 0x3b, 0x43, 0xc5, 0xb2, 0xa2, 0x37, 0x1d, 0x56, + 0xc5, 0x9a, 0x9b, 0x06, 0x37, 0x0e, 0x47, 0xfe, 0x1e, 0x50, 0x6e, 0x30, 0x7e, 0x28, 0xf7, + 0x7d, 0xed, 0x15, 0xbe, 0x85, 0x51, 0x9c, 0x1e, 0x9c, 0xea, 0x65, 0x50, 0x75, 0x38, 0x31, + 0x0c, 0xf4, 0x35, 0xf6, 0x5c, 0x3c, 0x28, 0xa4, 0xd4, 0xdc, 0x7b, 0x6b, 0xef, 0x57, 0x33, + 0x54, 0xa2, 0x73, 0xa3, 0x05, 0x72, 0x1f, 0x30, 0x93, 0x1e, 0x24, 0x94, 0x29, 0xc4, 0x8f, + 0x06, 0xe2, 0x98, 0xf9, 0xe6, 0xcb, 0x16, 0x40, 0x45, 0xff, 0x26, 0xa2, 0x50, 0x41, 0xde, + 0x30, 0xc9, 0x87, 0xe0, 0x86, 0x72, 0x23, 0x2b, 0x83, 0xc0, 0x35, 0x20, 0x7e, 0x7f, 0xf1, + 0x9a, 0x59, 0xa4, 0xd1, 0x94, 0x9b, 0xc1, 0xa5, 0x58, 0x54, 0xb7, 0x3e, 0xb8, 0x81, 0x23, + 0xd9, 0xfc, 0x4e, 0x6d, 0x7e, 0x83, 0xc1, 0x77, 0x92, 0x57, 0x4d, 0x24, 0x36, 0x00, 0x9f, + 0xc7, 0x2a, 0xf8, 0x5a, 0xc5, 0x44, 0x09, 0x2d, 0x90, 0x4f, 0xe0, 0xbd, 0x09, 0x47, 0x90, + 0x64, 0x1d, 0x1c, 0xb2, 0x09, 0xe6, 0xca, 0x3a, 0x7c, 0x1c, 0x88, 0xe9, 0x7c, 0x4f, 0x37, + 0x3f, 0x91, 0x09, 0x12, 0xca, 0xb5, 0x00, 0xca, 0xd5, 0xa1, 0x39, 0xe5, 0x22, 0xb4, 0xf6, + 0xb2, 0xa2, 0x83, 0xdf, 0xa6, 0x73, 0xa2, 0x21, 0x66, 0x0a, 0x7d, 0x4f, 0x83, 0x3e, 0x12, + 0x34, 0xcd, 0x15, 0x17, 0x67, 0x55, 0x38, 0xed, 0x32, 0xf7, 0x1a, 0xf0, 0xd8, 0x21, 0x64, + 0x9f, 0x7e, 0x86, 0xbd, 0x14, 0xbd, 0x84, 0xad, 0x85, 0x37, 0xcd, 0xb8, 0x7f, 0x78, 0x17, + 0x95, 0x95, 0x2e, 0x11, 0x06, 0xa5, 0x71, 0x9f, 0x95, 0xc0, 0x27, 0xda, 0x3c, 0x6c, 0x5d, + 0xac, 0xcf, 0x3e, 0x16, 0xd0, 0xa4, 0xed, 0xd6, 0x9f, 0x98, 0xdf, 0x86, 0x9f, 0x9f, 0x7d, + 0x7f, 0x41, 0x58, 0x0b, 0xbc, 0x82, 0x00, 0x93, 0x97, 0x64, 0xf5, 0x67, 0x31, 0xce, 0x1b, + 0x89, 0x2a, 0x0c, 0x8b, 0xb5, 0x11, 0x75, 0x70, 0x12, 0x59, 0x8b, 0xf1, 0xa6, 0x1b, 0xa3, + 0xd7, 0xff, 0x35, 0xf2, 0x70, 0x2c, 0x1a, 0xfa, 0x35, 0x6d, 0x2b, 0x5b, 0xd3, 0x34, 0xbf, + 0x73, 0x25, 0x95, 0x4e, 0x69, 0x22, 0x3a, 0x70, 0xe9, 0xd5, 0xa4, 0x3b, 0x7f, 0xf5, 0x8e, + 0x37, 0xc4, 0xbf, 0x03, 0x95, 0xd2, 0xbe, 0xf8, 0xf1, 0x26, 0x34, 0xed, 0x0a, 0xf0, 0x25, + 0x50, 0xeb, 0x7b, 0x00, 0x79, 0x66, 0x41, 0x32, 0xdf, 0xb2, 0x06, 0x80, 0x3f, 0x17, 0x27, + 0x09, 0x41, 0x8c, 0xdf, 0x71, 0x85, 0xa2, 0x2a, 0xaf, 0xb9, 0x5b, 0x7c, 0x17, 0x4d, 0xcb, + 0x55, 0xaf, 0x29, 0x45, 0xcb, 0x1f, 0x6d, 0xc1, 0x73, 0xb4, 0xb3, 0xac, 0xe1, 0xc6, 0x23, + 0x71, 0x2e, 0x3e, 0x3a, 0xeb, 0xc5, 0x51, 0xf5, 0x22, 0xea, 0x8c, 0xbf, 0x49, 0xed, 0x11, + 0x29, 0x66, 0xbb, 0x28, 0x1e, 0x60, 0xde, 0xe4, 0x4e, 0x4a, 0xd0, 0x49, 0x7b, 0xa4, 0x89, + 0xdb, 0xec, 0x36, 0xff, 0x79, 0x7f, 0xa4, 0x9d, 0x77, 0x97, 0x89, 0x0a, 0x98, 0x14, 0xe4, + 0x5d, 0x16, 0x6e, 0x88, 0x51, 0x87, 0xb8, 0x84, 0x0c, 0x97, 0xc8, 0x18, 0x4c, 0xf4, 0xa6, + 0xec, 0x4e, 0xaf, 0x8b, 0xed, 0xb1, 0xe0, 0x26, 0xd6, 0x72, 0x5e, 0xce, 0x43, 0x39, 0xd4, + 0x39, 0xb1, 0x36, 0x2a, 0x17, 0x11, 0xed, 0x7b, 0x87, 0x6d, 0xd9, 0x73, 0xac, 0x52, 0x06, + 0x5f, 0xf2, 0xfb, 0x71, 0x5c, 0xf3, 0x06, 0xed, 0xb8, 0x3a, 0x21, 0x44, 0xe6, 0x92, 0x5e, + 0x7c, 0x41, 0x41, 0x0c, 0xef, 0x00, 0xb7, 0x5f, 0xe2, 0x1a, 0xa9, 0x3e, 0x8e, 0x83, 0x44, + 0xac, 0xbe, 0xd6, 0x70, 0x55, 0x9a, 0x4f, 0x70, 0xa0, 0xff, 0x17, 0x31, 0x66, 0xb8, 0xaf, + 0xe6, 0xe8, 0xc7, 0x12, 0xbc, 0x58, 0xac, 0x3a, 0x10, 0x64, 0x7f, 0xe5, 0xd1, 0xa7, 0xae, + 0xe0, 0x4f, 0x75, 0xc5, 0xf1, 0x9a, 0x23, 0x5c, 0xec, 0x4d, 0xc6, 0x8a, 0xd9, 0x69, 0x57, + 0x3d, 0xa2, 0xa7, 0x6c, 0x9c, 0x17, 0xd0, 0x86, 0x30, 0x30, 0xac, 0x1b, 0x90, 0x71, 0x5c, + 0x44, 0xef, 0x34, 0x8a, 0x02, 0x8c, 0x82, 0xc9, 0xbd, 0x19, 0x3d, 0x45, 0x23, 0x4c, 0xe6, + 0x7c, 0x4e, 0x52, 0x15, 0x40, 0xdd, 0x4a, 0x3f, 0x33, 0xa8, 0x54, 0x02, 0x48, 0x58, 0x82, + 0x3b, 0x19, 0x3f, 0x0b, 0x94, 0x5f, 0xcd, 0x56, 0xfc, 0xef, 0x89, 0x21, 0x4e, 0x2b, 0x30, + 0x73, 0x6b, 0x36, 0xda, 0x97, 0x4d, 0xa0, 0xe1, 0x36, 0xb9, 0x79, 0xb8, 0xec, 0x21, 0x7c, + 0xa5, 0xf2, 0x26, 0x16, 0xd2, 0xfa, 0xf8, 0x6c, 0x5c, 0x85, 0x7c, 0x4b, 0x0e, 0xe9, 0xc3, + 0x40, 0x93, 0x38, 0x5a, 0xae, 0x05, 0xb8, 0x49, 0xdc, 0x95, 0x7e, 0xca, 0x44, 0xf7, 0x7b, + 0x04, 0x19, 0xd8, 0x9b, 0x54, 0x79, 0xfd, 0x92, 0xe3, 0xaf, 0x00, 0xa8, 0xb7, 0x3b, 0x5d, + 0xf7, 0xb9, 0x21, 0xcf, 0xc3, 0x2d, 0x3f, 0x75, 0x09, 0xac, 0xae, 0xd5, 0x99, 0xfb, 0xba, + 0x02, 0x67, 0x32, 0x20, 0xf5, 0x8a, 0x0f, 0xbf, 0x25, 0xed, 0x43, 0x5f, 0x4c, 0xdf, 0x72, + 0xda, 0x03, 0x3d, 0x38, 0xcf, 0x43, 0xe5, 0xbb, 0xb5, 0xc2, 0x1d, 0x4f, 0x99, 0x75, 0x74, + 0xba, 0x25, 0xf9, 0xb8, 0x3e, 0xba, 0x7f, 0xfc, 0x52, 0x3d, 0x30, 0x18, 0x24, 0x65, 0x9f, + 0x0a, 0x55, 0xeb, 0xf6, 0x4a, 0x0d, 0x47, 0xbd, 0x2b, 0x6f, 0x41, 0x74, 0x27, 0x25, 0x14, + 0x66, 0x7e, 0x57, 0x8f, 0xd2, 0x4f, 0x3a, 0x0f, 0x65, 0xf6, 0xd9, 0xca, 0x1f, 0x07, 0x2e, + 0x96, 0x7b, 0x60, 0x50, 0x1f, 0x08, 0x0c, 0x48, 0xb9, 0xf3, 0xbb, 0x20, 0x30, 0x81, 0xe8, + 0x7e, 0x41, 0x62, 0x84, 0x10, 0x8e, 0x80, 0x0e, 0x02, 0x64, 0x6b, 0x69, 0x68, 0xdc, 0x01, + 0x71, 0xdb, 0x29, 0x09, 0xfb, 0xc6, 0x5b, 0x72, 0xe9, 0xa0, 0x86, 0xee, 0x66, 0xdd, 0x22, + 0xc0, 0xb1, 0xb3, 0x29, 0x19, 0x19, 0x5d, 0xe2, 0x12, 0x02, 0x11, 0xde, 0x22, 0x99, 0x6c, + 0xd2, 0x47, 0x8a, 0x18, 0x81, 0xd8, 0xb2, 0x75, 0xc4, 0x23, 0x46, 0x87, 0x90, 0x3b, 0x8b, + 0xbf, 0x35, 0x45, 0xed, 0x00, 0x36, 0x8d, 0xa8, 0x8c, 0x3a, 0xda, 0x48, 0x24, 0x72, 0xba, + 0x5b, 0x07, 0x9e, 0x65, 0x66, 0x86, 0x60, 0x3d, 0xeb, 0xf7, 0x5b, 0xe6, 0xe7, 0x70, 0xa2, + 0xfe, 0x59, 0xdc, 0x6b, 0xc6, 0x42, 0xe5, 0x37, 0xcd, 0x0d, 0x55, 0xb2, 0x9a, 0x69, 0x2e, + 0x3a, 0xba, 0x99, 0xa9, 0x96, 0x17, 0xc4, 0xa1, 0x42, 0x97, 0x86, 0x0b, 0x0a, 0xd8, 0xaa, + 0x72, 0x64, 0x1c, 0xfa, 0xe8, 0x84, 0x26, 0x89, 0x64, 0x1d, 0xe7, 0xa7, 0x9d, 0x6e, 0xf1, + 0x1d, 0x1e, 0x8e, 0x0b, 0x4d, 0x50, 0xed, 0xf2, 0x13, 0x3b, 0x35, 0xda, 0x83, 0x56, 0x7b, + 0xb9, 0xba, 0x6c, 0x8d, 0x85, 0x7e, 0xdc, 0xa2, 0x69, 0xf9, 0x38, 0x48, 0x63, 0x7a, 0x71, + 0xb1, 0x31, 0x94, 0x3e, 0x7d, 0xe3, 0xa9, 0xd1, 0x3a, 0xa6, 0xbf, 0x39, 0x38, 0x5c, 0x4b, + 0x78, 0x4d, 0xf2, 0x5d, 0x18, 0xb2, 0xe2, 0x85, 0x15, 0x38, 0xd5, 0x96, 0x13, 0x25, 0x08, + 0x33, 0x13, 0xde, 0xa0, 0xe6, 0x1f, 0x26, 0x4f, 0xaa, 0x85, 0xa9, 0x5c, 0x2b, 0x92, 0x84, + 0x2f, 0xb3, 0x41, 0x79, 0x82, 0x7d, 0x95, 0x54, 0x4c, 0x5e, 0xcf, 0x68, 0x68, 0x6f, 0xed, + 0xe2, 0xf7, 0x96, 0xdc, 0xd6, 0xfc, 0x02, 0x04, 0xdd, 0xe1, 0x10, 0x5f, 0xfc, 0xaa, 0x4f, + 0xd3, 0xf1, 0x6c, 0x1a, 0x36, 0xa2, 0x36, 0x4f, 0x0e, 0xc6, 0xeb, 0x75, 0x26, 0x2c, 0x05, + 0x01, 0xd1, 0x83, 0xf7, 0xf0, 0xee, 0x58, 0x3b, 0xe3, 0x06, 0x02, 0x4a, 0x36, 0x13, 0x11, + 0x01, 0xe4, 0xe6, 0x24, 0xa2, 0x20, 0x67, 0xad, 0x94, 0x39, 0xe4, 0x0a, 0x3c, 0x4d, 0x65, + 0xee, 0x22, 0x0a, 0x80, 0x97, 0xca, 0x37, 0x2a, 0x2d, 0x4f, 0x9d, 0x22, 0xa3, 0x90, 0x09, + 0x7d, 0xdf, 0xde, 0x00, 0x7e, 0x97, 0x17, 0x21, 0x60, 0xbe, 0xe3, 0x26, 0xf6, 0x0e, 0x71, + 0x11, 0x42, 0xaa, 0x8a, 0x2f, 0xff, 0xae, 0x58, 0xe9, 0xa6, 0x6a, 0x50, 0x62, 0x11, 0xb3, + 0xb9, 0xb1, 0x73, 0x73, 0x1f, 0x57, 0x4e, 0xf3, 0x46, 0xa4, 0x87, 0xdc, 0x44, 0xbd, 0xdb, + 0x47, 0xfd, 0x7d, 0xec, 0x71, 0xa3, 0xc5, 0x36, 0x24, 0x07, 0xfd, 0x69, 0xd9, 0x91, 0xb0, + 0x24, 0x28, 0x2f, 0x83, 0x97, 0x73, 0xe9, 0xd9, 0x45, 0x0a, 0xec, 0xa4, 0x97, 0x55, 0x79, + 0x5d, 0x37, 0x6d, 0x98, 0x4b, 0x08, 0x61, 0x86, 0xe9, 0xf2, 0xd0, 0x5c, 0x1b, 0x05, 0x21, + 0xb6, 0xd4, 0x31, 0xb2, 0x41, 0xe6, 0x6a, 0x80, 0x26, 0xb0, 0x63, 0x0e, 0xe8, 0x0d, 0x54, + 0x96, 0x69, 0xee, 0x5e, 0xd4, 0xc6, 0x9b, 0xcb, 0x56, 0x0b, 0x29, 0x19, 0xdf, 0x40, 0x69, + 0x68, 0x26, 0x04, 0x87, 0x08, 0xf6, 0x17, 0x42, 0xdd, 0xf6, 0xf9, 0x0e, 0xa3, 0xd5, 0x41, + 0x9b, 0xbc, 0x03, 0xa7, 0x4a, 0x1a, 0x05, 0x6d, 0x12, 0xa5, 0xe2, 0xd3, 0x3a, 0x06, 0x65, + 0xf4, 0xf5, 0xad, 0x06, 0x7d, 0xdd, 0x17, 0xf9, 0xa1, 0x3e, 0xe3, 0x2b, 0x4a, 0x8e, 0xe7, + 0x56, 0x2b, 0xed, 0xff, 0x56, 0x0e, 0x42, 0x9a, 0x71, 0x52, 0x16, 0x42, 0x81, 0x88, 0xa9, + 0x4d, 0x8e, 0xea, 0x99, 0x0a, 0xfe, 0xda, 0xec, 0x3e, 0x58, 0xcd, 0x29, 0x4b, 0xb3, 0x94, + 0x67, 0x26, 0x65, 0xa7, 0xce, 0x79, 0xaa, 0xf4, 0xc0, 0xb3, 0x5d, 0x4f, 0x12, 0x21, 0x2b, + 0x4e, 0xd5, 0x88, 0x3b, 0x6b, 0xf2, 0xb2, 0xb6, 0x7f, 0x05, 0x22, 0x3f, 0x3d, 0x64, 0xd0, + 0xd9, 0x95, 0x5c, 0x44, 0xbf, 0xcf, 0x72, 0x8d, 0xa2, 0x16, 0xac, 0x73, 0x3b, 0x6d, 0x55, + 0xdb, 0x5b, 0xf8, 0x13, 0xe6, 0xf1, 0xb1, 0x2c, 0x53, 0x0e, 0x14, 0x95, 0x13, 0xa2, 0x99, + 0xb2, 0x7b, 0x5a, 0xe9, 0x79, 0x26, 0xfb, 0x1e, 0x24, 0xb8, 0xc8, 0x42, 0xa4, 0xd7, 0x9d, + 0xa8, 0x58, 0x32, 0xdd, 0x51, 0xb8, 0x26, 0xad, 0xd0, 0xf9, 0xe7, 0x85, 0xf7, 0x72, 0x00, + 0x05, 0x98, 0x41, 0xad, 0xb6, 0x10, 0x23, 0x21, 0x82, 0x0d, 0x09, 0x00, 0x3f, 0xe4, 0xd0, + 0x2b, 0x18, 0x1a, 0xdf, 0xaf, 0x19, 0x25, 0x64, 0xc6, 0xcb, 0x62, 0xd1, 0x85, 0x2e, 0x91, + 0xe5, 0x23, 0x5f, 0x1c, 0x67, 0xac, 0xc7, 0x58, 0x3c, 0xee, 0xde, 0xac, 0x03, 0x23, 0x49, + 0x6b, 0x87, 0xbd, 0xe7, 0x4c, 0xbd, 0xb3, 0xc2, 0x0a, 0x73, 0x19, 0xe3, 0x71, 0xdd, 0x2c, + 0xf2, 0x34, 0x6f, 0x03, 0x33, 0x33, 0xea, 0x9d, 0xb5, 0xf3, 0x4a, 0x22, 0x2c, 0x67, 0x41, + 0xb0, 0x6f, 0xd6, 0xbf, 0xf4, 0xc6, 0xd7, 0x16, 0xa3, 0x87, 0xe1, 0x10, 0x7c, 0x95, 0xbd, + 0xdd, 0xe1, 0x2d, 0xc5, 0x80, 0x3d, 0x06, 0x66, 0xa7, 0x34, 0xcb, 0x67, 0xc6, 0xbe, 0x3d, + 0x7c, 0xbd, 0xc3, 0xc9, 0x37, 0x3d, 0xc8, 0xc8, 0x89, 0x33, 0x9a, 0x96, 0xdb, 0x01, 0x35, + 0x17, 0x23, 0x5a, 0xdb, 0x4a, 0xff, 0xad, 0x10, 0xf3, 0xda, 0xe3, 0xab, 0xe6, 0x32, 0xaf, + 0x46, 0x84, 0x82, 0x1a, 0x1e, 0x51, 0xb4, 0xa7, 0x62, 0xd8, 0x06, 0x8f, 0x5a, 0xe3, 0x42, + 0x4c, 0xe5, 0xbc, 0xd6, 0xb8, 0x98, 0xbd, 0x77, 0x17, 0x2a, 0xc1, 0x8a, 0xca, 0x07, 0xc8, + 0xae, 0x53, 0xaf, 0xe8, 0x57, 0xc8, 0x85, 0xa3, 0xe0, 0xfb, 0xd1, 0xef, 0x9c, 0xee, 0xa9, + 0x41, 0x16, 0x95, 0xe8, 0x13, 0xc0, 0xef, 0xbe, 0xc0, 0x6e, 0x65, 0xba, 0x82, 0x2a, 0x07, + 0xc3, 0x62, 0x45, 0x7f, 0xf5, 0xe7, 0xf1, 0x73, 0x39, 0x98, 0x72, 0xb4, 0xd1, 0x82, 0xa8, + 0x01, 0xba, 0x6e, 0xf8, 0x84, 0x30, 0xb1, 0xad, 0x68, 0x4c, 0xaf, 0x28, 0xb7, 0x39, 0xba, + 0x37, 0x9b, 0x95, 0xd5, 0x6f, 0xbf, 0xc2, 0x56, 0x8c, 0x1f, 0x53, 0xd1, 0xc7, 0x39, 0xf9, + 0x32, 0x88, 0xd3, 0xb5, 0xdd, 0xa6, 0x8e, 0x99, 0xfb, 0xcc, 0x5e, 0xf8, 0xf6, 0x27, 0x7f, + 0x17, 0x0d, 0x4a, 0xe0, 0xd3, 0x9e, 0x58, 0xf8, 0xad, 0xd9, 0xab, 0x31, 0xdb, 0x90, 0x48, + 0x15, 0xc9, 0x22, 0xf4, 0x59, 0xd5, 0x57, 0x64, 0xe1, 0x2c, 0xf9, 0xfb, 0x88, 0x0c, 0x53, + 0x53, 0xc0, 0x3d, 0x16, 0x27, 0x39, 0xbd, 0xb8, 0xc8, 0xd8, 0x74, 0xc5, 0xc1, 0x0c, 0x67, + 0x07, 0x53, 0x6c, 0x4a, 0x55, 0x12, 0x96, 0x75, 0xa6, 0x4e, 0xca, 0x5d, 0x3c, 0x01, 0x0f, + 0x65, 0xe0, 0x0d, 0x1f, 0x35, 0xec, 0xf7, 0xa0, 0x4a, 0x49, 0x8d, 0x1b, 0x5e, 0x44, 0x4a, + 0x89, 0x6a, 0xb3, 0xfe, 0x79, 0x8c, 0xea, 0x6f, 0xc1, 0xb2, 0xef, 0x5b, 0xd3, 0xa7, 0xa8, + 0x60, 0x0f, 0xe2, 0x88, 0x7d, 0xf1, 0x16, 0x1c, 0xb6, 0xf8, 0x3f, 0xf4, 0xfa, 0x94, 0xb3, + 0x79, 0x06, 0xa9, 0x4f, 0x2d, 0x2a, 0xdd, 0x9a, 0x1a, 0xa1, 0x7b, 0x0c, 0x3f, 0x2b, 0x2b, + 0xe0, 0x3f, 0xe1, 0x59, 0x8d, 0x59, 0x4f, 0xde, 0x2e, 0xc0, 0x05, 0xdb, 0x41, 0xe5, 0x54, + 0xb4, 0x59, 0x3d, 0xfb, 0x76, 0x6f, 0xd3, 0x66, 0xdf, 0x69, 0xa8, 0xb4, 0x43, 0xd7, 0xc5, + 0x68, 0x1d, 0xc1, 0xfb, 0x06, 0x8a, 0x4b, 0x45, 0x0c, 0x43, 0x80, 0x9d, 0x89, 0x5a, 0x94, + 0x40, 0x19, 0x7d, 0x5f, 0xc9, 0xdf, 0x55, 0x0d, 0xac, 0xaf, 0x0d, 0x70, 0xbc, 0x06, 0x9b, + 0x29, 0x2e, 0xfd, 0x92, 0x55, 0x9f, 0xd3, 0x73, 0x04, 0x0b, 0x2c, 0x6e, 0x96, 0xa8, 0xe4, + 0x3e, 0xc0, 0x64, 0x7f, 0xdf, 0xbd, 0xe5, 0xb8, 0x5b, 0xc4, 0xae, 0x42, 0x2d, 0x70, 0x76, + 0xb0, 0x46, 0xcd, 0x26, 0x3b, 0xb0, 0x27, 0x63, 0x6e, 0x0b, 0x5d, 0x7e, 0x54, 0xe3, 0x36, + 0x4f, 0xa4, 0x12, 0x53, 0x3e, 0xcc, 0xef, 0x6d, 0xd6, 0xd5, 0xc2, 0x19, 0x8f, 0xb9, 0x75, + 0xca, 0xcd, 0x89, 0xf4, 0xe7, 0x88, 0x7d, 0x62, 0x77, 0x8e, 0x88, 0x84, 0x34, 0xeb, 0x1c, + 0x52, 0x2c, 0x1a, 0xd3, 0x35, 0xe8, 0x40, 0x04, 0x01, 0xfe, 0x0b, 0xbd, 0x34, 0x57, 0x47, + 0x33, 0xcf, 0x5e, 0x4c, 0x7c, 0x50, 0xb1, 0x04, 0xfc, 0xcc, 0x0c, 0xf2, 0x6f, 0xb0, 0x5e, + 0xf5, 0xeb, 0xd4, 0x26, 0xc8, 0x59, 0xc5, 0x74, 0xdb, 0xbc, 0x06, 0xdd, 0x09, 0x60, 0xb9, + 0x16, 0xb2, 0x04, 0x00, 0xd8, 0x36, 0x1a, 0xd8, 0x96, 0x91, 0x53, 0x00, 0x9a, 0xfc, 0x10, + 0x06, 0xfb, 0xe3, 0x6b, 0x0d, 0x80, 0x37, 0x2f, 0x48, 0xfc, 0xba, 0x35, 0x0a, 0x73, 0xf7, + 0x20, 0xb0, 0x3e, 0x6c, 0x82, 0x2b, 0xab, 0x6f, 0xaa, 0xb5, 0x9f, 0x3b, 0x50, 0x6b, 0xd2, + 0xaf, 0x44, 0x09, 0xa6, 0xdf, 0xbf, 0x08, 0xac, 0x68, 0xda, 0x3a, 0x89, 0xe9, 0xa2, 0x60, + 0x16, 0x0c, 0x28, 0xc8, 0x68, 0x65, 0x0c, 0xc2, 0x6e, 0x4f, 0x24, 0x88, 0xe5, 0x6e, 0x29, + 0xe1, 0x5d, 0xed, 0x35, 0x32, 0xe4, 0xd9, 0x7e, 0x72, 0x87, 0xa6, 0xf8, 0xe8, 0xba, 0x50, + 0x8d, 0x26, 0x17, 0x4e, 0x67, 0xe5, 0x56, 0xc8, 0xc6, 0x8c, 0xe5, 0x40, 0xc0, 0xf5, 0x0d, + 0xfc, 0xc8, 0x7a, 0x58, 0xe9, 0xd6, 0x18, 0x3c, 0xb1, 0xe5, 0x06, 0xbf, 0x52, 0x7a, 0xa3, + 0xe4, 0x53, 0x19, 0xc0, 0xe2, 0xa3, 0x2f, 0x38, 0xf4, 0x2d, 0x74, 0x53, 0x41, 0x5c, 0x0f, + 0x99, 0xaa, 0xf5, 0xca, 0xfa, 0x5c, 0x90, 0x76, 0x25, 0x6b, 0x4a, 0x88, 0xd5, 0x04, 0x7a, + 0xdb, 0xbb, 0x7d, 0xcb, 0x2c, 0xf3, 0x7b, 0xad, 0x18, 0x39, 0x82, 0xf4, 0xd6, 0xc2, 0x31, + 0x92, 0x08, 0xc7, 0xaa, 0xd4, 0x6d, 0x85, 0xe9, 0xc2, 0x6b, 0x1c, 0xfc, 0xc3, 0x30, 0xe0, + 0xa6, 0x93, 0x00, 0x68, 0x8c, 0x4a, 0xcd, 0x32, 0xf6, 0xdc, 0x33, 0xf7, 0x21, 0x5d, 0xc1, + 0x51, 0x15, 0x01, 0x47, 0xda, 0xe2, 0xb5, 0xc3, 0x5e, 0xc0, 0xd8, 0x3f, 0xd2, 0xb3, 0xad, + 0x65, 0x62, 0xa9, 0xb4, 0xd0, 0x85, 0xb1, 0x1c, 0xde, 0x12, 0x60, 0x98, 0xbf, 0x5f, 0xfd, + 0x9c, 0x92, 0x1c, 0xd5, 0x2c, 0x2f, 0xbb, 0xa6, 0xf2, 0xfa, 0xa7, 0x3d, 0x00, 0xdd, 0x8b, + 0xc2, 0xf9, 0x78, 0x5a, 0xb5, 0x0e, 0xfc, 0xcf, 0xa9, 0x59, 0x78, 0x8e, 0xf8, 0xda, 0x1e, + 0xc3, 0x6f, 0x5e, 0x33, 0x15, 0xd9, 0xb0, 0xf5, 0x7d, 0x9f, 0x1d, 0x69, 0xef, 0xfc, 0xa8, + 0x4b, 0x48, 0x6e, 0x81, 0x6a, 0x59, 0x30, 0xd7, 0xf0, 0x4b, 0xfe, 0x40, 0x6d, 0x84, 0x38, + 0xe8, 0xdd, 0xe2, 0x1f, 0xa2, 0xa1, 0x29, 0xd5, 0xf4, 0x4d, 0x9b, 0xb2, 0x95, 0xe4, 0x0b, + 0xc2, 0xdb, 0x71, 0x0d, 0x85, 0x78, 0x1e, 0x4f, 0xaf, 0x91, 0x0a, 0x13, 0xe4, 0x46, 0x96, + 0xc5, 0x2b, 0x26, 0x2d, 0x55, 0x1a, 0x90, 0x6f, 0x8e, 0xba, 0x19, 0xa4, 0xbb, 0xd5, 0x1e, + 0x7e, 0x37, 0xaf, 0x01, 0x6c, 0x30, 0xf8, 0x9f, 0xa5, 0x71, 0xa0, 0x75, 0xf9, 0x97, 0xa8, + 0x73, 0xf6, 0x6a, 0x93, 0xc5, 0x45, 0xff, 0x2b, 0x12, 0x5f, 0x5d, 0x03, 0xe3, 0x24, 0x74, + 0x93, 0xd6, 0xdf, 0xdd, 0x1c, 0xde, 0xf5, 0x30, 0x70, 0x46, 0xb8, 0x80, 0x19, 0x74, 0x4f, + 0x2b, 0x23, 0xd4, 0xf8, 0x53, 0x10, 0xd1, 0x7d, 0x37, 0x5d, 0x13, 0x67, 0x82, 0xad, 0x31, + 0xed, 0xd9, 0x02, 0x09, 0x8e, 0x74, 0x38, 0x53, 0xc6, 0x77, 0x38, 0xbd, 0xdc, 0xa3, 0x85, + 0x5a, 0x27, 0x97, 0x84, 0x25, 0x0e, 0x48, 0x56, 0xa2, 0x41, 0xf0, 0x13, 0x27, 0xc9, 0x48, + 0x8f, 0xc7, 0xa1, 0x61, 0x8a, 0x42, 0x9c, 0x43, 0xa4, 0xf6, 0xba, 0x1a, 0xe1, 0x2c, 0x02, + 0xed, 0x9b, 0xbf, 0x4e, 0xf9, 0x05, 0xfa, 0xe9, 0x87, 0x23, 0x11, 0x65, 0xc0, 0x23, 0x99, + 0xce, 0xff, 0x80, 0x8d, 0x01, 0x48, 0x54, 0xdf, 0xa3, 0xa6, 0x6c, 0xf1, 0xb6, 0xdb, 0xfb, + 0x5c, 0x68, 0x38, 0x1a, 0x3b, 0x5b, 0x40, 0x61, 0xf0, 0xe1, 0x57, 0x98, 0xea, 0x70, 0x3d, + 0x92, 0x79, 0xef, 0x9b, 0x66, 0xb8, 0x7c, 0x80, 0xd1, 0x05, 0x44, 0x91, 0x97, 0x81, 0x31, + 0x63, 0xc9, 0x28, 0xf4, 0xb7, 0x9d, 0x60, 0x2c, 0xcf, 0xc5, 0x41, 0xa8, 0xdf, 0xf2, 0x38, + 0xb1, 0x12, 0x55, 0xab, 0xfa, 0x04, 0xaf, 0x1d, 0x95, 0x3c, 0x61, 0x6a, 0x15, 0x86, 0xde, + 0x94, 0xeb, 0xb9, 0x18, 0x0b, 0x83, 0x4b, 0x91, 0x7b, 0x8e, 0xc6, 0x93, 0x28, 0x06, 0x73, + 0x5f, 0xf1, 0xbf, 0xd0, 0xc4, 0xb3, 0x7f, 0xfe, 0x16, 0x76, 0x68, 0x2d, 0x82, 0xba, 0x9a, + 0x4b, 0x4b, 0x5c, 0x22, 0x04, 0x97, 0xdf, 0x0b, 0xaf, 0x31, 0x0e, 0xd4, 0x02, 0xf4, 0x37, + 0xf0, 0xf6, 0x39, 0xb8, 0xd3, 0x12, 0x20, 0xf7, 0xc6, 0x6b, 0x06, 0xa1, 0xd9, 0x7a, 0x69, + 0x8a, 0x15, 0x19, 0x2e, 0x6c, 0x4b, 0x37, 0xdf, 0x85, 0xc1, 0x17, 0x22, 0x00, 0x00, 0x00, + 0x00, 0xac, 0xc8, 0xd2, 0x3a, 0x88, 0x7c, 0xbf, 0x7b, 0xe1, 0x46, 0xdb, 0x10, 0xdf, 0xaf, + 0x7e, 0x99, 0xc3, 0x94, 0xfd, 0x6f, 0x21, 0x5e, 0x9c, 0x23, 0x6a, 0xec, 0x52, 0x1e, 0xfa, + 0x9f, 0x24, 0x03, 0xfc, 0x33, 0x00, 0x03, 0x35, 0x12, 0x1c, 0x9f, 0x39, 0xf4, 0x70, 0x2f, + 0x34, 0xee, 0x9b, 0x07, 0x92, 0x15, 0x36, 0x2f, 0xa8, 0xd5, 0x00, 0x98, 0x37, 0x48, 0x52, + 0x44, 0x38, 0x99, 0xcf, 0x0d, 0x4f, 0xe6, 0x0a, 0xa4, 0x20, 0x20, 0x28, 0x52, 0xa5, 0xbb, + 0x01, 0x9b, 0x44, 0x4c, 0x16, 0x1e, 0xa6, 0xfb, 0x91, 0x47, 0x2f, 0xcf, 0x60, 0xce, 0xaa, + 0x0c, 0x1b, 0x31, 0x11, 0xa4, 0xbe, 0xa0, 0xba, 0x32, 0x38, 0xa6, 0x15, 0x77, 0x22, 0x64, + 0xd4, 0x4a, 0x64, 0x47, 0x41, 0x2b, 0x0d, 0x2e, 0x7c, 0x91, 0x6d, 0x1f, 0xc2, 0xb9, 0xab, + 0xc0, 0x78, 0xd6, 0xa2, 0x47, 0xdd, 0x90, 0x41, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0xdf, 0x29, 0x9d, 0x0c, 0x2e, 0xc5, 0x94, 0xe5, 0x8b, 0x66, 0xed, + 0x60, 0x82, 0xdd, 0x86, 0x83, 0x9e, 0x02, 0xa7, 0xe3, 0x9e, 0x61, 0x88, 0x2f, 0x02, 0x9d, + 0xe5, 0x95, 0x12, 0x2a, 0x81, 0x99, 0x2b, 0x3c, 0x78, 0x21, 0x8f, 0x2f, 0x9a, 0x7a, 0x9b, + 0x14, 0xa5, 0x3a, 0xd6, 0xd7, 0xa6, 0x6d, 0x5e, 0x91, 0xb8, 0x3e, 0x64, 0xac, 0xf9, 0x21, + 0x27, 0x2e, 0x8a, 0x0c, 0x06, 0xec, 0x07, 0x01, 0x04, 0x57, 0x45, 0x54, 0x48, 0x02, 0xcc, + 0x36, 0x60, 0x19, 0x59, 0x21, 0x3b, 0x6b, 0x0c, 0xdb, 0x96, 0xa7, 0x5c, 0x17, 0xc3, 0xa6, + 0x68, 0xa9, 0x7f, 0x0d, 0x6a, 0x8c, 0x5c, 0xe1, 0x64, 0xa5, 0x18, 0xea, 0x9b, 0xa9, 0xa5, + 0x0e, 0xa7, 0x51, 0x91, 0xfd, 0x86, 0x1b, 0x0f, 0xf1, 0x0e, 0x62, 0xb0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xc6, 0xd3, 0xfc, 0xbe, 0xa6, 0xce, 0xa1, 0xef, 0x53, + 0x01, 0x50, 0x43, 0x9c, 0xde, 0x78, 0x7f, 0x28, 0xad, 0x6e, 0x86, 0x1b, 0xfc, 0x8a, 0x21, + 0x0a, 0x88, 0x5e, 0xcc, 0x24, 0x3f, 0x91, 0x0c, 0xf7, 0x08, 0x24, 0x8d, 0x8c, 0x7a, 0x76, + 0x7e, 0xa8, 0x22, 0xc7, 0xbf, 0xe6, 0x44, 0x63, 0x12, 0x24, 0xc0, 0x27, 0x89, 0x7b, 0xd3, + 0xc5, 0x5c, 0x5c, 0x4f, 0xb7, 0x64, 0xa7, 0x9b, 0x2f, 0xf2, 0xd6, 0xc1, 0x3f, 0x2a, 0x7f, + 0x5c, 0xbe, 0x97, 0x07, 0xd2, 0x6d, 0x7d, 0x7e, 0xe1, 0x39, 0x7f, 0x63, 0x58, 0xd3, 0x24, + 0xa2, 0x4d, 0x55, 0xcf, 0x3c, 0x5d, 0x59, 0x92, 0x52, 0x8f, 0x4f, 0x2e, 0x77, 0x37, 0xd1, + 0x4d, 0xec, 0xf0, 0x60, 0xbd, 0x7b, 0xe5, 0xa8, 0x96, 0xd1, 0x8f, 0xca, 0x11, 0x6c, 0x6a, + 0x15, 0xbe, 0x55, 0xf0, 0x4a, 0x35, 0x1f, 0xa3, 0xdd, 0x4c, 0x1e, 0x5a, 0x42, 0x0f, 0xb8, + 0x22, 0x65, 0x55, 0xe6, 0x78, 0xe9, 0xe6, 0xf4, 0x1f, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x47, 0xc6, 0xd3, 0xfc, 0xbe, 0xa6, 0xce, 0xa1, 0xef, 0x53, 0x01, 0x50, 0x43, + 0x9c, 0xde, 0x78, 0x7f, 0x28, 0xad, 0x6e, 0x86, 0x1b, 0xfc, 0x8a, 0x21, 0x0a, 0x88, 0x5e, + 0xcc, 0x24, 0x3f, 0x91, 0xbb, 0xdf, 0x18, 0x7e, 0xfe, 0xa2, 0xae, 0x6a, 0x90, 0x90, 0xcf, + 0x97, 0xc6, 0x82, 0xc8, 0x97, 0xc1, 0x05, 0xc3, 0xf9, 0x4c, 0x6a, 0x4d, 0x29, 0x16, 0x68, + 0xe3, 0xf2, 0x4d, 0xb6, 0x1b, 0x11, 0x37, 0x75, 0x8f, 0xea, 0xaa, 0xa9, 0x9b, 0x1d, 0x18, + 0x09, 0x3c, 0x24, 0xad, 0x36, 0x9e, 0x43, 0xa2, 0xf9, 0x34, 0x11, 0x13, 0xc4, 0xd2, 0xaf, + 0x87, 0x3d, 0xf5, 0xb0, 0x42, 0x7b, 0x76, 0xc2, 0x00, 0xd5, 0xe5, 0x0a, 0xe1, 0xb4, 0x1c, + 0x0a, 0x64, 0xb4, 0x3b, 0xf7, 0xb2, 0x30, 0x20, 0x7f, 0x12, 0xee, 0x69, 0xae, 0x9b, 0xa1, + 0x6f, 0xd6, 0x53, 0x91, 0x1e, 0x11, 0x66, 0xea, 0xdc, 0xf7, 0x8c, 0x53, 0x11, 0x5e, 0x51, + 0x2a, 0x15, 0xad, 0xe5, 0x68, 0xae, 0xf3, 0x14, 0x04, 0x78, 0xa9, 0x2b, 0x61, 0x2f, 0x91, + 0xcf, 0x62, 0x24, 0x90, 0xeb, 0xd8, 0x22, 0x30, 0xbb, 0xc4, 0xa2, 0x11, 0x30, 0x58, 0x3d, + 0xdb, 0xe3, 0x85, 0xc0, 0x1c, 0x68, 0x66, 0x9b, 0x1b, 0x6c, 0x1d, 0xa6, 0xe9, 0xd4, 0x0a, + 0x17, 0xed, 0x21, 0xdc, 0xa5, 0x96, 0x2d, 0x25, 0x97, 0x4c, 0x9b, 0x5d, 0x5c, 0xfa, 0x26, ], // Transfer block &[ - 0x04, 0x00, 0x00, 0x00, 0x27, 0xe3, 0x01, 0x34, 0xd6, 0x20, 0xe9, 0xfe, 0x61, 0xf7, 0x19, - 0x93, 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, 0x76, - 0xf9, 0x0e, 0xd8, 0x11, 0x9f, 0x02, 0xe2, 0xec, 0x78, 0x12, 0x64, 0x23, 0x8b, 0xa6, 0xf5, - 0xab, 0xc9, 0xc0, 0x66, 0xf5, 0x1f, 0xe1, 0xb9, 0xf7, 0xb3, 0xd1, 0xa4, 0x40, 0xce, 0xa0, - 0xf0, 0x60, 0x79, 0xb4, 0x43, 0x15, 0x9d, 0xe7, 0x13, 0x64, 0x84, 0x07, 0x94, 0x1f, 0xda, - 0x44, 0xf6, 0xf5, 0xa1, 0x3e, 0xaf, 0xf5, 0xb2, 0xe1, 0x35, 0x1b, 0x63, 0xb4, 0x81, 0x96, - 0x3f, 0x2a, 0xf5, 0x7e, 0x56, 0x38, 0xa3, 0x99, 0x92, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0xa6, 0x0c, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x04, 0x00, 0x00, 0x00, 0x11, 0x83, 0xac, 0x9d, 0xf4, 0xa7, 0x0b, 0xb9, 0x7b, 0x19, 0x83, + 0x66, 0xe5, 0x0b, 0x57, 0x0c, 0x5c, 0xdd, 0xc1, 0x6f, 0xab, 0x0e, 0xd1, 0xd8, 0x03, 0x1b, + 0x67, 0x17, 0xaa, 0x61, 0xf9, 0xa4, 0x6d, 0x07, 0xc8, 0xf6, 0x27, 0xf0, 0x32, 0x9f, 0xfc, + 0x73, 0x53, 0xda, 0x1b, 0x2b, 0xd5, 0xef, 0x58, 0xb9, 0xd2, 0xbf, 0xbe, 0x63, 0x79, 0x3d, + 0x6c, 0xc3, 0x8c, 0x1c, 0x13, 0x34, 0x4b, 0xbd, 0xff, 0xeb, 0x2e, 0x6b, 0xa2, 0x9e, 0x22, + 0x11, 0xd3, 0x77, 0x9f, 0xdd, 0x4f, 0x0f, 0xd0, 0x8c, 0x54, 0xab, 0x63, 0x13, 0x64, 0x25, + 0xb3, 0x5a, 0x2f, 0x5d, 0xfa, 0x36, 0xdc, 0x12, 0x18, 0x46, 0x0a, 0x10, 0x4a, 0x4d, 0x0f, + 0x0f, 0x0f, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -856,646 +866,646 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, - 0xff, 0xff, 0xff, 0x02, 0x51, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, + 0xff, 0xff, 0xff, 0x02, 0x52, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, - 0x6a, 0xc2, 0x2a, 0x5e, 0xe1, 0xc1, 0x53, 0x80, 0x98, 0x98, 0x9d, 0x4e, 0xe3, 0x6a, 0x88, - 0xb9, 0x25, 0xea, 0xdd, 0xc9, 0x0b, 0x5c, 0x14, 0xbb, 0xc9, 0xf1, 0x0a, 0xa0, 0x22, 0x46, - 0x2f, 0xd7, 0xfb, 0xb2, 0xf4, 0xca, 0x12, 0x4b, 0xc6, 0xfe, 0x41, 0xc0, 0x35, 0x88, 0x21, - 0x86, 0x0b, 0x89, 0x43, 0x19, 0x29, 0x8e, 0x4f, 0xa3, 0xd4, 0x00, 0x9e, 0x16, 0x9e, 0x7a, - 0x54, 0x49, 0x20, 0x55, 0xd0, 0xbd, 0xc9, 0x0c, 0xb9, 0xc3, 0xae, 0x0d, 0x2d, 0x10, 0x47, - 0x08, 0xcd, 0x4e, 0xb9, 0x02, 0x45, 0x0b, 0x5b, 0xc5, 0xbd, 0xcd, 0x65, 0xdb, 0x40, 0x22, - 0xc4, 0x8f, 0x12, 0x70, 0x98, 0x75, 0x30, 0xcb, 0x0c, 0xa4, 0x9a, 0x68, 0x0f, 0xe5, 0x06, - 0x35, 0xfd, 0x8c, 0x75, 0x37, 0x81, 0xb3, 0xfc, 0x96, 0xa6, 0xe4, 0x5d, 0x4c, 0xba, 0x55, - 0xe4, 0x9e, 0x43, 0x13, 0x37, 0x74, 0x1a, 0x35, 0x48, 0x2b, 0x9d, 0xfe, 0x06, 0xb0, 0xa8, - 0x6c, 0x89, 0x50, 0x7e, 0x17, 0xf0, 0x75, 0xad, 0xf1, 0x35, 0xad, 0xed, 0xc1, 0x63, 0xb9, - 0x96, 0xbd, 0xbc, 0xcd, 0x38, 0x1f, 0x58, 0xb9, 0xb3, 0x67, 0x02, 0x93, 0x03, 0x0f, 0x68, - 0x2d, 0x61, 0xcc, 0xf8, 0x1d, 0xd5, 0xb4, 0x37, 0x8a, 0xa5, 0x9f, 0x55, 0x10, 0x25, 0xfd, - 0x0c, 0x41, 0x40, 0x60, 0xab, 0xe6, 0x04, 0x57, 0x76, 0x8c, 0x08, 0xbf, 0x0d, 0x4c, 0x85, - 0x61, 0x1b, 0x33, 0x31, 0xaf, 0x5a, 0x33, 0xe1, 0x39, 0x8d, 0x37, 0xd9, 0x4a, 0x72, 0x2e, - 0x81, 0xe7, 0x44, 0x4c, 0xdd, 0xbb, 0x34, 0x4e, 0xdc, 0x4e, 0x75, 0xca, 0x13, 0x07, 0x50, - 0x13, 0x10, 0x6c, 0x46, 0x31, 0x80, 0x39, 0x23, 0xf2, 0x56, 0x9e, 0xc6, 0x2f, 0x1a, 0xff, - 0xea, 0x1a, 0xe6, 0x72, 0x53, 0x08, 0xfa, 0x07, 0x8d, 0x94, 0x6e, 0x31, 0x57, 0xa0, 0x32, - 0xb2, 0x96, 0x6f, 0xb8, 0xb0, 0x3c, 0x49, 0x56, 0xd2, 0xa0, 0xe0, 0x3f, 0x3c, 0x07, 0x89, - 0x61, 0xb4, 0x3d, 0x2f, 0x78, 0xed, 0xfb, 0xfe, 0x0f, 0x89, 0x5f, 0x7c, 0x35, 0x8e, 0x70, - 0x42, 0x40, 0x2d, 0xaa, 0xfe, 0xe5, 0xb4, 0xee, 0x02, 0x47, 0x5a, 0x66, 0xe9, 0x83, 0xf3, - 0x9d, 0xb0, 0x91, 0xa7, 0x94, 0x62, 0xac, 0x68, 0x7d, 0xc0, 0x53, 0xcc, 0xbe, 0x98, 0xbd, - 0x20, 0xe3, 0xd9, 0xd6, 0xf4, 0x02, 0x68, 0x81, 0x96, 0x8a, 0x81, 0x6f, 0x4c, 0x2f, 0x2d, - 0x10, 0x42, 0xdb, 0xf7, 0xdc, 0x8a, 0x56, 0xbc, 0x15, 0x60, 0x0a, 0x30, 0x3c, 0x7c, 0x4f, - 0xdc, 0x09, 0x78, 0x9c, 0x99, 0x2f, 0x6d, 0xe9, 0x0f, 0x41, 0xf7, 0xf5, 0x13, 0x06, 0x05, - 0xf3, 0x00, 0xa9, 0x36, 0xc5, 0x6b, 0x71, 0x4f, 0xc0, 0x60, 0xd2, 0x15, 0xe2, 0x52, 0x17, - 0x38, 0x29, 0x1a, 0x4a, 0x0c, 0x96, 0x95, 0xe4, 0xf6, 0x62, 0xcb, 0x51, 0xcd, 0x81, 0xfe, - 0x70, 0x20, 0x48, 0x1b, 0xac, 0x5f, 0x90, 0xc8, 0x01, 0x9f, 0x82, 0x33, 0x30, 0x13, 0xd4, - 0x3a, 0x8d, 0x78, 0xf5, 0xf0, 0xb3, 0xa5, 0x77, 0xa3, 0xc1, 0xb4, 0xc2, 0xc7, 0x50, 0x30, - 0x7b, 0x6f, 0xbe, 0xf8, 0xa3, 0x20, 0x80, 0x38, 0x37, 0xed, 0x32, 0x7e, 0x9a, 0xe7, 0xeb, - 0xd6, 0xb8, 0xc8, 0xd2, 0x82, 0x43, 0xd9, 0x88, 0xdf, 0xf4, 0x05, 0x66, 0xbf, 0x45, 0x83, - 0x26, 0x85, 0xf7, 0x30, 0x7f, 0x4a, 0x29, 0x16, 0x21, 0x23, 0xb6, 0x7f, 0x51, 0x9e, 0x1b, - 0xc6, 0x59, 0x8b, 0x63, 0x6a, 0x41, 0xf2, 0xb7, 0x6d, 0xa9, 0x4a, 0xc9, 0xcf, 0x17, 0x74, - 0x91, 0xf8, 0xbd, 0x09, 0x98, 0x0a, 0x4f, 0x09, 0xb8, 0x95, 0x6c, 0xa7, 0x18, 0x50, 0x49, - 0x53, 0xd9, 0xc6, 0x86, 0xc9, 0xba, 0xf5, 0x09, 0xc7, 0xc8, 0x74, 0x50, 0x75, 0xa8, 0xe0, - 0x49, 0x38, 0x72, 0x1d, 0xaa, 0xb0, 0xf9, 0xf2, 0x3d, 0x42, 0x2b, 0x0a, 0x04, 0xd7, 0x19, - 0x5c, 0xbb, 0xb2, 0x70, 0xeb, 0x0f, 0x1d, 0xcd, 0x8f, 0xf3, 0xbf, 0x6d, 0xf8, 0xdc, 0x32, - 0x0d, 0xca, 0x6a, 0xe6, 0xa0, 0x81, 0xe6, 0xa9, 0x2b, 0x8d, 0x8d, 0xea, 0xea, 0x34, 0xb7, - 0x02, 0x78, 0x75, 0xc2, 0xfa, 0xc2, 0x35, 0x27, 0xdc, 0x28, 0xcc, 0xf9, 0xee, 0x53, 0x55, - 0x6c, 0xf8, 0xee, 0x38, 0xe8, 0x43, 0x32, 0x24, 0xcc, 0x1c, 0x7a, 0x97, 0xcf, 0x1d, 0x42, - 0x60, 0xcc, 0x04, 0x25, 0x8d, 0x45, 0x3e, 0x57, 0x61, 0x8f, 0x94, 0xb7, 0x0c, 0xf1, 0xab, - 0x28, 0x96, 0x3c, 0x0c, 0x19, 0x11, 0xef, 0x7a, 0xad, 0x20, 0xa1, 0x01, 0xaa, 0x58, 0xfc, - 0x48, 0xae, 0x53, 0xd6, 0xc3, 0xab, 0x3b, 0x31, 0xa0, 0x14, 0xa3, 0x35, 0xb0, 0x91, 0xe5, - 0x28, 0x2e, 0x0c, 0x3f, 0x18, 0x2b, 0x11, 0x30, 0xa9, 0x85, 0xa8, 0xe1, 0xbe, 0x51, 0xd1, - 0x0f, 0x27, 0x79, 0xf0, 0x99, 0x43, 0xd6, 0xb1, 0x5f, 0x98, 0x78, 0x81, 0xcd, 0xa4, 0xf1, - 0x4d, 0x8c, 0x1b, 0xd7, 0xcc, 0x0e, 0xfd, 0x00, 0x7b, 0xf2, 0xff, 0x61, 0xca, 0x20, 0xed, - 0x8d, 0xf8, 0xb9, 0x19, 0x2b, 0x3c, 0xab, 0x2f, 0xd1, 0x8d, 0x2b, 0x50, 0x88, 0x10, 0x16, - 0x86, 0xdd, 0x00, 0xd9, 0xee, 0x8a, 0x3c, 0x1f, 0x82, 0x0a, 0xae, 0xeb, 0xb8, 0xe5, 0xb8, - 0x83, 0x0b, 0x7a, 0xbe, 0x02, 0x62, 0xf2, 0xfa, 0xa4, 0x28, 0xa5, 0xd3, 0x53, 0xa6, 0x82, - 0xca, 0x17, 0xeb, 0x78, 0x3a, 0x30, 0x84, 0xc5, 0x66, 0x38, 0xcd, 0xb0, 0xb7, 0x33, 0x27, - 0x33, 0x35, 0x24, 0xeb, 0x48, 0xb0, 0x4c, 0x1e, 0xd3, 0xe4, 0x88, 0x38, 0x00, 0x56, 0xe1, - 0x23, 0x82, 0x20, 0x63, 0xdb, 0xe6, 0xd6, 0x04, 0x45, 0x7b, 0x21, 0xcf, 0xbf, 0xa5, 0x5a, - 0xc2, 0x4e, 0x60, 0x21, 0x4f, 0xec, 0xe1, 0xdd, 0xf5, 0xdb, 0x4e, 0x29, 0xc8, 0x38, 0x1d, - 0x12, 0x33, 0xe5, 0x75, 0x63, 0x3e, 0x09, 0xdd, 0x74, 0x21, 0x1a, 0x6f, 0xfc, 0x5c, 0xbf, - 0x81, 0xba, 0x77, 0xf7, 0x5c, 0x5e, 0xe0, 0xeb, 0xea, 0x3c, 0xf4, 0x45, 0x27, 0x86, 0xd7, - 0x40, 0x56, 0xee, 0xe6, 0xa6, 0xb0, 0x36, 0x1b, 0x99, 0x4a, 0x26, 0x40, 0x06, 0xe6, 0x0b, - 0x8d, 0x3f, 0xe4, 0xa4, 0x88, 0x74, 0x5d, 0x6e, 0xb2, 0x7c, 0xec, 0x87, 0x20, 0x29, 0x4a, - 0xa2, 0x71, 0x60, 0x77, 0x8f, 0x95, 0x7e, 0x7a, 0x44, 0xf9, 0x17, 0x36, 0xa6, 0x39, 0xcc, - 0x3e, 0xcc, 0x49, 0x4d, 0xe8, 0x5c, 0x12, 0x04, 0x36, 0x2b, 0x08, 0x5d, 0x42, 0x32, 0xa8, - 0xde, 0xf8, 0xdb, 0x98, 0xe8, 0xa0, 0x98, 0xf2, 0x5d, 0xec, 0x9a, 0xa3, 0x3e, 0xf9, 0xab, - 0xc7, 0x7c, 0x8f, 0xac, 0xa6, 0x41, 0x83, 0x59, 0x51, 0x8a, 0x05, 0x65, 0x28, 0x48, 0xfe, - 0x2c, 0x2c, 0x73, 0xfd, 0xb1, 0xe8, 0x6e, 0x8c, 0x7d, 0x0a, 0xf7, 0xdc, 0x7b, 0x64, 0x23, - 0x4b, 0x17, 0xc4, 0x3e, 0xbf, 0xc0, 0xb6, 0xdb, 0x34, 0x73, 0x75, 0x07, 0xa9, 0x4f, 0x91, - 0xdf, 0xc2, 0x69, 0x50, 0x99, 0xe9, 0xf7, 0xc2, 0xa9, 0x30, 0x10, 0x75, 0xf1, 0x49, 0x7f, - 0x26, 0x09, 0x8d, 0x6b, 0x6b, 0xfa, 0xf8, 0x9c, 0x6e, 0x5a, 0x08, 0xed, 0x89, 0x57, 0x12, - 0x38, 0x18, 0xf6, 0x14, 0x51, 0x8a, 0x6c, 0x4e, 0x04, 0x60, 0xd3, 0x01, 0x78, 0x33, 0x16, - 0x00, 0x78, 0x81, 0x0f, 0x4d, 0x5b, 0x54, 0x31, 0x08, 0x2c, 0x6a, 0x6d, 0x76, 0x3e, 0xeb, - 0x58, 0x04, 0x94, 0x86, 0xf0, 0x2f, 0x16, 0xfd, 0xa8, 0x34, 0x1d, 0x71, 0x33, 0x1c, 0x32, - 0x61, 0xf5, 0xf7, 0x8e, 0xf3, 0x9a, 0xdc, 0x65, 0x0f, 0x84, 0xe9, 0xed, 0xf2, 0x12, 0xf6, - 0xe0, 0x6c, 0x42, 0xd1, 0xe6, 0x80, 0x61, 0x60, 0x4d, 0x97, 0xb3, 0x11, 0x3f, 0x57, 0xe3, - 0xbe, 0x90, 0x25, 0xaf, 0xec, 0x25, 0x11, 0x6b, 0xdb, 0x40, 0x3d, 0x51, 0xe5, 0x75, 0x16, - 0xbe, 0xcb, 0xb0, 0xd9, 0xee, 0xd6, 0x38, 0x5a, 0xc6, 0xe5, 0x9b, 0x2d, 0x84, 0x5b, 0x12, - 0xc9, 0x5c, 0x89, 0x99, 0x2a, 0x9e, 0xda, 0xb7, 0xd3, 0xfd, 0xf3, 0x5d, 0x30, 0xae, 0xf5, - 0xd8, 0xeb, 0xc6, 0x90, 0x02, 0x51, 0xc9, 0xbc, 0xaf, 0x36, 0x2d, 0xa4, 0xf4, 0x76, 0xcd, - 0x34, 0x89, 0x6c, 0x44, 0x6e, 0x41, 0xb2, 0x7b, 0x85, 0xf1, 0x72, 0xa1, 0xf3, 0xe0, 0x07, - 0xf3, 0x56, 0x58, 0xc6, 0x86, 0x13, 0x50, 0x70, 0xd5, 0x4e, 0x23, 0xb5, 0x15, 0x4f, 0x3e, - 0x5a, 0x80, 0x22, 0x4e, 0x2e, 0x05, 0x01, 0x1a, 0x72, 0x95, 0x50, 0xfe, 0x90, 0xcf, 0xe5, - 0xa1, 0x2a, 0x28, 0x63, 0x49, 0x4c, 0xd2, 0x88, 0x9b, 0x5a, 0x5f, 0x29, 0xf2, 0xa0, 0x14, - 0x78, 0xac, 0x02, 0x0a, 0x3e, 0xd6, 0xbf, 0x7a, 0x74, 0x5d, 0x21, 0x4e, 0xb6, 0x14, 0xd7, - 0x33, 0x64, 0x6e, 0x8c, 0x6d, 0x54, 0x87, 0xc6, 0x00, 0x44, 0xa4, 0x3c, 0x0a, 0x13, 0xcc, - 0xfd, 0x33, 0x6c, 0xb3, 0x6a, 0xb2, 0xb6, 0x49, 0x40, 0xcc, 0x6e, 0xfc, 0x59, 0xcc, 0xb7, - 0x7a, 0xbc, 0xd5, 0xe0, 0xb7, 0x31, 0x5e, 0x88, 0xe9, 0x16, 0xbe, 0x17, 0x12, 0xe0, 0x96, - 0x4d, 0xf7, 0x6e, 0x01, 0x2e, 0x68, 0xfc, 0xda, 0x6c, 0x2b, 0x0d, 0x54, 0x84, 0x9a, 0x6c, - 0xe1, 0xc4, 0xba, 0xc9, 0x4a, 0xca, 0xae, 0x0f, 0xcb, 0x6e, 0xf9, 0x19, 0x6c, 0x6f, 0x84, - 0xf1, 0xda, 0x0e, 0xd6, 0x2b, 0x40, 0xbd, 0x5e, 0xc6, 0x02, 0xe8, 0x97, 0x15, 0xa0, 0x76, - 0x07, 0x47, 0xa5, 0x32, 0xd4, 0x64, 0x16, 0xb2, 0x68, 0x49, 0xe9, 0x06, 0xd4, 0x36, 0xeb, - 0x23, 0x2a, 0x7b, 0x4f, 0x87, 0x3e, 0x63, 0x57, 0xed, 0x03, 0xba, 0xb9, 0x74, 0x86, 0xf1, - 0xaa, 0xdd, 0x70, 0xd1, 0xb9, 0xc5, 0x51, 0x8e, 0x2c, 0x98, 0xf2, 0x5b, 0xf6, 0x3a, 0x79, - 0x95, 0x37, 0xe1, 0x91, 0xca, 0x01, 0x78, 0x24, 0xe2, 0x3e, 0x94, 0xe1, 0xf5, 0x24, 0x13, - 0xa1, 0xb5, 0x06, 0xe9, 0x15, 0xa4, 0xac, 0x91, 0x67, 0x8a, 0xd8, 0x1a, 0x53, 0xd6, 0x3f, - 0x58, 0x3c, 0xc4, 0xfd, 0x05, 0x2b, 0xce, 0x3c, 0x86, 0x88, 0x22, 0x06, 0x34, 0x96, 0x59, - 0x39, 0x38, 0x5f, 0x2f, 0x8d, 0xc8, 0xd6, 0x86, 0xbc, 0xa3, 0x41, 0x84, 0x50, 0x49, 0xa3, - 0x46, 0xad, 0xb0, 0xc2, 0x00, 0xa7, 0xb7, 0x14, 0xca, 0xe3, 0x39, 0x4e, 0x84, 0x49, 0xa1, - 0x78, 0x8f, 0x95, 0x73, 0x48, 0xfa, 0x2c, 0xe3, 0x77, 0x92, 0x84, 0x0e, 0x8b, 0x5f, 0x49, - 0xfe, 0x21, 0x3b, 0x90, 0xee, 0x21, 0x2c, 0x73, 0x18, 0xbf, 0xa1, 0x06, 0xe1, 0xc1, 0xd8, - 0xac, 0x5f, 0xe4, 0xe5, 0x83, 0x13, 0x8a, 0xd4, 0xff, 0x58, 0x38, 0x1c, 0x5d, 0x5d, 0xa9, - 0x3c, 0xca, 0xb5, 0xcd, 0xda, 0xff, 0x6d, 0x14, 0x0d, 0x99, 0xa6, 0xae, 0xfa, 0x5b, 0x0f, - 0xd0, 0x20, 0x97, 0x30, 0xbc, 0x34, 0x63, 0xfd, 0x77, 0x09, 0x7b, 0x2b, 0xcd, 0x5e, 0x01, - 0xe9, 0x98, 0x07, 0xb8, 0xb5, 0xc2, 0xc3, 0x77, 0xc7, 0x16, 0xe0, 0xc3, 0xaa, 0x5b, 0x52, - 0x99, 0x0e, 0x15, 0x6c, 0x10, 0xfc, 0x3c, 0x71, 0xab, 0x6c, 0xcc, 0xad, 0x0e, 0x7d, 0xed, - 0xe2, 0xdf, 0xcd, 0xd1, 0x8b, 0xb4, 0x8f, 0x77, 0x8f, 0x40, 0x02, 0x3e, 0x38, 0x39, 0x91, - 0xb9, 0x80, 0xab, 0x30, 0x0d, 0xba, 0x52, 0x97, 0x38, 0x81, 0xb5, 0x4b, 0x47, 0x66, 0xf5, - 0x58, 0x4d, 0x75, 0x57, 0x90, 0xa1, 0xf5, 0xcd, 0x8c, 0x1b, 0x8d, 0xbd, 0xfb, 0xf4, 0xed, - 0xd2, 0xdf, 0xb6, 0x36, 0xc3, 0x6e, 0xbd, 0x97, 0x78, 0x3f, 0x4f, 0xb8, 0x31, 0x00, 0x60, - 0x39, 0x75, 0xee, 0xef, 0xdd, 0x61, 0x2c, 0xcb, 0x3c, 0x55, 0x00, 0x67, 0xbb, 0x9e, 0x57, - 0x5f, 0x73, 0x45, 0xc3, 0xff, 0xa4, 0x04, 0x0b, 0x21, 0x9b, 0xd8, 0x57, 0xa2, 0x88, 0x2a, - 0xf2, 0x71, 0x94, 0xe3, 0x85, 0x0f, 0x7c, 0x2e, 0x96, 0x14, 0x24, 0x4a, 0xb4, 0xc7, 0xfb, - 0x18, 0x51, 0x6f, 0xcb, 0x84, 0xd7, 0xf1, 0x35, 0x62, 0xae, 0x7c, 0x5c, 0x8c, 0x62, 0x12, - 0x36, 0xed, 0x38, 0xb1, 0x33, 0x02, 0x66, 0x61, 0xce, 0xb3, 0xc2, 0x92, 0x15, 0xcb, 0x80, - 0x19, 0xbf, 0x76, 0x89, 0x45, 0x20, 0x89, 0x27, 0xb9, 0xea, 0x91, 0x8b, 0xcf, 0x72, 0xdc, - 0xd5, 0xf9, 0x95, 0x4b, 0xf2, 0x96, 0xf8, 0xf6, 0x97, 0x7c, 0xa3, 0xc2, 0xb5, 0x3e, 0x0a, - 0x88, 0xbf, 0x87, 0x24, 0xf4, 0xc3, 0x3f, 0x8a, 0x99, 0x63, 0xc4, 0x94, 0xd2, 0x29, 0x21, - 0x06, 0x17, 0xed, 0x3e, 0xbf, 0x63, 0x3d, 0xf8, 0xe9, 0x9b, 0x4a, 0x43, 0xf4, 0xc0, 0x4c, - 0xe3, 0x50, 0x5f, 0x67, 0x2e, 0x51, 0xd7, 0x56, 0x09, 0xd0, 0xf6, 0x8f, 0x27, 0xd5, 0xda, - 0x03, 0x2f, 0xad, 0x49, 0xfc, 0xc8, 0x11, 0x92, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5f, 0xd6, 0x1c, 0x7a, 0x83, 0xfd, 0x08, 0x31, 0xa4, 0xc2, 0xd7, 0xed, 0xd3, - 0x13, 0x02, 0x5e, 0xb3, 0x4b, 0xf1, 0x70, 0xb1, 0xf4, 0x20, 0x7a, 0xbf, 0xeb, 0xbf, 0x17, - 0x4f, 0x13, 0x89, 0x2d, 0xfd, 0xe0, 0x1c, 0xf8, 0xfe, 0x41, 0x80, 0xed, 0x2c, 0xe8, 0x8c, - 0xa8, 0x5d, 0xfb, 0xeb, 0x24, 0xc7, 0x0b, 0xb0, 0x44, 0x4c, 0x42, 0xa4, 0x9f, 0x6e, 0x04, - 0xae, 0x5f, 0x0c, 0x0f, 0x48, 0x7b, 0x33, 0xc1, 0x35, 0xe7, 0xe1, 0x89, 0x07, 0x42, 0x6f, - 0x41, 0x0b, 0x2d, 0xdd, 0xe5, 0x44, 0xa0, 0xf2, 0xe3, 0xd4, 0x73, 0xf4, 0x91, 0x39, 0x7d, - 0x5b, 0x3f, 0x2a, 0xc7, 0xd3, 0x32, 0x3c, 0x26, 0x5e, 0x83, 0x31, 0xec, 0x7e, 0xe8, 0x0b, - 0xfa, 0x3a, 0x48, 0x7c, 0x2a, 0xb2, 0xb6, 0xda, 0x18, 0x21, 0xe4, 0x6b, 0xe6, 0xc9, 0xe2, - 0x92, 0x03, 0x9c, 0x94, 0x27, 0x46, 0xbd, 0xd8, 0x74, 0xb7, 0x87, 0xbb, 0x18, 0xae, 0x29, - 0x01, 0x74, 0x81, 0x42, 0x5f, 0x5a, 0x61, 0x91, 0xb9, 0x04, 0x42, 0x46, 0x9b, 0x2d, 0x74, - 0x1b, 0x06, 0x18, 0xc5, 0x7b, 0xf1, 0x95, 0xf8, 0xd6, 0x23, 0x62, 0xfc, 0x71, 0x5d, 0xa9, - 0xeb, 0xcf, 0x55, 0x3e, 0x19, 0x1a, 0x8e, 0x36, 0x5f, 0x94, 0x6d, 0x1d, 0xf3, 0x4a, 0xd0, - 0x79, 0x43, 0x9a, 0x4a, 0xff, 0x9f, 0xbf, 0xf3, 0xeb, 0x40, 0xd9, 0xd5, 0xb5, 0xfd, 0xa9, - 0xe1, 0xaf, 0xd2, 0x15, 0x2e, 0x8a, 0x2f, 0x7a, 0xaf, 0xbb, 0xc4, 0xc1, 0xfb, 0x21, 0x6a, - 0x08, 0x55, 0x70, 0x78, 0x59, 0x40, 0xb9, 0x11, 0x2a, 0xfc, 0x2e, 0x47, 0x25, 0xe6, 0x78, - 0xf1, 0x18, 0x0e, 0x82, 0xec, 0xcb, 0xd4, 0xc7, 0xff, 0xca, 0xd2, 0x8d, 0xd2, 0xc2, 0x38, - 0x19, 0xb3, 0xe7, 0x46, 0x18, 0x95, 0xf2, 0x8a, 0x4d, 0x96, 0x83, 0x50, 0xf3, 0x2f, 0x4e, - 0x44, 0x7b, 0xfc, 0x66, 0xbc, 0x32, 0x1a, 0x68, 0x45, 0xd6, 0x5d, 0xcc, 0x20, 0x21, 0x2f, - 0x56, 0x14, 0xf5, 0xd0, 0x90, 0x0c, 0x98, 0x87, 0x69, 0xa9, 0x5c, 0x37, 0x97, 0xbb, 0x78, - 0x62, 0x15, 0xf7, 0xaa, 0xda, 0x71, 0x97, 0x28, 0x65, 0x4f, 0x40, 0xf7, 0x15, 0x22, 0xb9, - 0xa5, 0x08, 0xd2, 0x1d, 0xca, 0x0d, 0xcc, 0xfc, 0x8f, 0xf8, 0x89, 0xf8, 0xee, 0x7c, 0xfe, - 0x70, 0x93, 0xb3, 0xd4, 0x0f, 0x5f, 0xf9, 0x36, 0xc5, 0x29, 0x56, 0x12, 0x5a, 0xd9, 0x7e, - 0x02, 0x1e, 0x9b, 0x23, 0x77, 0x5e, 0x4d, 0xbf, 0x7e, 0x85, 0x00, 0x7a, 0x75, 0x3d, 0x58, - 0x97, 0x5f, 0x41, 0xe3, 0xdd, 0x72, 0xd6, 0x4c, 0x75, 0x3e, 0x4a, 0xa4, 0x7e, 0xb4, 0xcc, - 0x3c, 0x75, 0x40, 0x41, 0x9f, 0x55, 0x79, 0x60, 0xe0, 0x4b, 0xaf, 0x9b, 0x5a, 0x4c, 0x8d, - 0x38, 0xa7, 0x0b, 0xcd, 0x93, 0x30, 0x6a, 0x23, 0xce, 0xb1, 0x3a, 0x74, 0x43, 0xb4, 0xd6, - 0xc0, 0x20, 0x2a, 0x90, 0x6d, 0xfb, 0x91, 0xf2, 0xd8, 0xe8, 0x4d, 0x0d, 0xcb, 0x48, 0x49, - 0xc3, 0x45, 0xf5, 0x68, 0xbc, 0x86, 0x47, 0x26, 0x61, 0x71, 0x55, 0x59, 0xc7, 0x02, 0x43, - 0x1b, 0x65, 0x13, 0x99, 0x45, 0x3e, 0x03, 0x31, 0xe8, 0x00, 0x00, 0x7e, 0x39, 0x4a, 0x81, - 0x89, 0xda, 0x5d, 0xea, 0xe9, 0xb7, 0x10, 0xcc, 0xcc, 0x76, 0xd7, 0x02, 0xcb, 0xd8, 0x07, - 0xa0, 0x80, 0x94, 0xbe, 0xf7, 0xed, 0xca, 0x3c, 0xe6, 0x5f, 0xf3, 0x7e, 0x5c, 0xc1, 0xfe, - 0x26, 0x92, 0x42, 0x50, 0x8d, 0x9b, 0x20, 0xa5, 0x8c, 0xba, 0x93, 0xee, 0x57, 0xdf, 0xf4, - 0x03, 0x08, 0x5a, 0x63, 0x97, 0x46, 0x47, 0xb7, 0x4d, 0x58, 0x78, 0xf1, 0x56, 0xa2, 0x10, - 0xc0, 0xdf, 0x7f, 0x29, 0xeb, 0x70, 0x6f, 0x1a, 0xf0, 0x84, 0xca, 0xca, 0xde, 0x4a, 0x0f, - 0x0c, 0x1e, 0x05, 0x05, 0xb3, 0xb2, 0x2c, 0x67, 0x29, 0x51, 0x2b, 0x7e, 0xc9, 0xf0, 0x87, - 0x2b, 0x9b, 0xff, 0x75, 0xdb, 0xa3, 0x8d, 0x55, 0x95, 0x50, 0x82, 0x90, 0xdf, 0x86, 0xb9, - 0xa7, 0xf2, 0x69, 0xfb, 0x48, 0x17, 0xe5, 0xb3, 0x19, 0x65, 0xd1, 0x90, 0x72, 0xe8, 0xca, - 0xb5, 0xbd, 0xaa, 0x1b, 0x00, 0xf7, 0x3f, 0x75, 0x80, 0xe4, 0x6f, 0xb3, 0x0c, 0xb9, 0x6e, - 0x53, 0x26, 0xb4, 0xa7, 0x6b, 0x4b, 0xa8, 0x39, 0xa4, 0xd6, 0x1d, 0x9d, 0xdf, 0xe8, 0x70, - 0x5f, 0x97, 0xaa, 0xcd, 0x45, 0xfe, 0xcb, 0x58, 0xfd, 0x10, 0x6d, 0x89, 0xc7, 0x64, 0x88, - 0x0d, 0xad, 0x12, 0x30, 0x50, 0x4e, 0xac, 0xdf, 0x3a, 0x53, 0x90, 0x86, 0xaa, 0xe2, 0x1d, - 0xcf, 0xfa, 0xaf, 0xb9, 0x57, 0xa2, 0xb4, 0xce, 0x46, 0x03, 0x02, 0x9a, 0x0f, 0x56, 0x48, - 0x99, 0x94, 0x6c, 0x55, 0x5b, 0x39, 0xe7, 0xee, 0x8a, 0xa9, 0x49, 0x8c, 0x69, 0xa3, 0x89, - 0xef, 0xf9, 0xa5, 0x47, 0x0e, 0x2a, 0xf6, 0xe4, 0xc8, 0x76, 0x61, 0x64, 0xc2, 0xb1, 0x40, - 0x6f, 0x83, 0xda, 0xca, 0xe9, 0x82, 0x45, 0x42, 0xfd, 0xe4, 0x51, 0x27, 0x08, 0xb3, 0xb2, - 0xa3, 0x98, 0xd0, 0xfc, 0xad, 0xfa, 0xa5, 0xd8, 0x0c, 0x03, 0xfa, 0x69, 0xe5, 0xe8, 0x60, - 0x3a, 0x0f, 0xcf, 0x4b, 0x26, 0xc1, 0x4d, 0x60, 0x8a, 0xfe, 0x9f, 0x17, 0x30, 0xc6, 0x50, - 0x76, 0xa9, 0x50, 0x94, 0x9a, 0x71, 0xf7, 0x94, 0x38, 0xb3, 0x2b, 0xc9, 0xab, 0x0e, 0x22, - 0x5b, 0x04, 0xed, 0x1b, 0x14, 0x16, 0x34, 0x8c, 0x86, 0x2c, 0xb8, 0xcc, 0xc7, 0xfa, 0x84, - 0x9c, 0xec, 0x4a, 0x62, 0x9d, 0x24, 0x0b, 0x86, 0x07, 0xd3, 0xb3, 0xdb, 0xfe, 0x00, 0x9d, - 0x7c, 0x8d, 0x60, 0x03, 0x6e, 0x37, 0xe4, 0x27, 0x76, 0xb6, 0x66, 0x3f, 0xbe, 0x16, 0xb9, - 0x37, 0x9c, 0x22, 0x84, 0xa8, 0x29, 0xf5, 0xa5, 0xe4, 0x07, 0xf9, 0x01, 0x59, 0xb0, 0xa5, - 0x1b, 0x91, 0xb5, 0xd0, 0x22, 0x11, 0x4b, 0x6f, 0x1f, 0xb8, 0x2e, 0x50, 0xb3, 0xb2, 0x78, - 0xfb, 0x86, 0x16, 0x38, 0xb6, 0x1e, 0x75, 0x29, 0x4b, 0x39, 0x27, 0x49, 0xe8, 0xc2, 0x89, - 0xeb, 0x04, 0x8d, 0xfb, 0xcc, 0xb7, 0x35, 0xd9, 0xb3, 0x80, 0x46, 0xbc, 0xf6, 0xda, 0x54, - 0x3e, 0x73, 0x2c, 0x8e, 0x97, 0x03, 0xd5, 0x5f, 0xfc, 0x6a, 0x4a, 0x27, 0x0f, 0xee, 0x27, - 0x5c, 0x51, 0x9b, 0xa4, 0xf5, 0xc8, 0x6d, 0x89, 0x2b, 0xc0, 0x9f, 0x51, 0xb2, 0x54, 0x8d, - 0x57, 0x5d, 0x31, 0x30, 0x92, 0xb8, 0x74, 0xd4, 0xb4, 0x81, 0xb3, 0x74, 0xc1, 0x82, 0xe8, - 0xfd, 0xa9, 0x73, 0x5e, 0x97, 0x2b, 0xc7, 0x0f, 0x98, 0x0e, 0x41, 0xe5, 0xee, 0xbf, 0xcc, - 0x54, 0x8f, 0x5c, 0x01, 0x01, 0x41, 0x6f, 0xae, 0x13, 0x30, 0x8b, 0xac, 0x9d, 0x1a, 0x92, - 0x2e, 0xb3, 0x0d, 0x97, 0xac, 0x74, 0x30, 0xed, 0xf9, 0xa8, 0x18, 0xf4, 0x86, 0xe1, 0xcc, - 0xb2, 0x91, 0x77, 0xe7, 0x8e, 0x61, 0xe3, 0x25, 0x59, 0x45, 0x58, 0x09, 0xf2, 0x11, 0x53, - 0xea, 0xe4, 0xbf, 0x81, 0xb0, 0x77, 0xcb, 0xbe, 0x01, 0x58, 0xfe, 0x9b, 0x01, 0xc9, 0xe3, - 0x6b, 0xaa, 0xc4, 0xf6, 0x82, 0x47, 0x03, 0xa9, 0xe9, 0xe9, 0x0b, 0xdc, 0xdc, 0x7a, 0xbd, - 0xdd, 0xb6, 0xbb, 0x32, 0x91, 0xdf, 0xe4, 0x06, 0xce, 0x04, 0x02, 0x5a, 0x99, 0xb6, 0x1b, - 0x19, 0xe3, 0xa8, 0x3d, 0xd4, 0xc0, 0x77, 0x27, 0xe6, 0x83, 0xac, 0x55, 0xcd, 0x0b, 0x75, - 0x76, 0x53, 0xda, 0xbf, 0xe0, 0x8a, 0xa1, 0x33, 0x11, 0xc5, 0xbc, 0x47, 0xf2, 0x09, 0xdd, - 0x07, 0x6a, 0x69, 0xe1, 0x83, 0x95, 0x0e, 0xe4, 0xad, 0xf3, 0x18, 0xa7, 0xe1, 0x9b, 0xba, - 0x32, 0x7c, 0xb9, 0xec, 0xa7, 0x01, 0x4c, 0xc7, 0x04, 0xc8, 0x03, 0x52, 0xb8, 0xea, 0x73, - 0x2d, 0xf2, 0x18, 0x8f, 0x1a, 0x0b, 0x1f, 0x8c, 0xa4, 0x63, 0x4f, 0x92, 0x6d, 0xcf, 0x18, - 0x62, 0x3a, 0x64, 0x9c, 0x80, 0xb6, 0xaf, 0xe9, 0x27, 0x36, 0x9f, 0xd4, 0x8f, 0x74, 0xdc, - 0x74, 0x85, 0x30, 0x4d, 0xbc, 0x01, 0xdd, 0xa4, 0x0d, 0x99, 0x20, 0x79, 0x45, 0x92, 0xe2, - 0x0d, 0xef, 0x16, 0x52, 0x60, 0x68, 0x86, 0x71, 0x32, 0x96, 0x14, 0xcc, 0x8a, 0x43, 0x0d, - 0x9c, 0xd6, 0x48, 0x7f, 0x71, 0xbc, 0x38, 0xe4, 0xac, 0xda, 0x23, 0x90, 0xa9, 0x40, 0x5d, - 0x77, 0x79, 0x9d, 0x39, 0x40, 0x51, 0x22, 0xa5, 0xa5, 0x8f, 0xd6, 0x37, 0xc4, 0x97, 0xa7, - 0x7a, 0x1a, 0xb2, 0xf6, 0xd8, 0x9f, 0x6a, 0x0f, 0x91, 0x3f, 0x26, 0x0b, 0xc6, 0xd9, 0xcd, - 0xd2, 0x7a, 0x8c, 0xdc, 0xd9, 0x8b, 0xd1, 0x9e, 0x62, 0x82, 0x0a, 0xa7, 0x05, 0xd1, 0x08, - 0xc9, 0x32, 0x71, 0xe2, 0x49, 0xcf, 0xf0, 0x2e, 0x1a, 0x49, 0x7f, 0x1e, 0x11, 0x20, 0xd9, - 0xb8, 0x75, 0xda, 0x29, 0xa5, 0x02, 0x8d, 0x62, 0x4f, 0x44, 0x6f, 0xdd, 0x66, 0x9e, 0x15, - 0xbf, 0x8c, 0xda, 0xac, 0xd7, 0x06, 0xf3, 0x52, 0xe2, 0x43, 0x01, 0xe4, 0x9b, 0xf2, 0x0a, - 0x7f, 0x47, 0xc9, 0x51, 0xa7, 0xfb, 0xcc, 0xb3, 0x28, 0x9f, 0xce, 0xaf, 0x7e, 0x46, 0x15, - 0xd5, 0x53, 0x75, 0xee, 0x63, 0x87, 0xbf, 0x95, 0xde, 0x52, 0x50, 0xe8, 0xf2, 0xee, 0x74, - 0xea, 0x06, 0x84, 0xd4, 0xa1, 0xf5, 0xf1, 0x37, 0xc8, 0x73, 0x9a, 0xfa, 0xad, 0x6f, 0x00, - 0x5c, 0x07, 0x01, 0x24, 0xe7, 0x8b, 0x83, 0x35, 0x0e, 0x61, 0x5f, 0xa8, 0x5b, 0xaf, 0x15, - 0x8a, 0xc9, 0xe0, 0x8b, 0x3b, 0xce, 0x47, 0x33, 0x2c, 0x14, 0x78, 0xc4, 0x96, 0x7c, 0x9d, - 0xfb, 0xe6, 0x23, 0xbe, 0xbf, 0x84, 0x7f, 0x9c, 0x18, 0xb0, 0x25, 0xd0, 0xe4, 0x98, 0x9d, - 0x01, 0x04, 0x67, 0x14, 0x0d, 0xa6, 0x76, 0x08, 0xec, 0xc7, 0x89, 0x27, 0x26, 0x96, 0x79, - 0x79, 0x95, 0xee, 0x90, 0x00, 0xac, 0xc5, 0x4d, 0xc2, 0x4f, 0x8e, 0x11, 0xb4, 0x0a, 0xaa, - 0x90, 0x04, 0x9f, 0x56, 0x6c, 0x9e, 0x80, 0xe0, 0xaf, 0xf8, 0x68, 0xd8, 0x39, 0x63, 0x6c, - 0x1b, 0x2b, 0x56, 0x79, 0xb0, 0x00, 0x01, 0x22, 0xaf, 0xa4, 0x9b, 0x9f, 0x69, 0x04, 0x96, - 0x3d, 0xfb, 0xae, 0x74, 0x95, 0xac, 0x6c, 0x14, 0x9e, 0x9b, 0x0f, 0x3b, 0xa2, 0x11, 0x8a, - 0x8b, 0xee, 0x90, 0x98, 0x6e, 0xa9, 0x5c, 0x26, 0x34, 0x90, 0xe5, 0xfb, 0x28, 0xcd, 0x8a, - 0x3e, 0x64, 0x44, 0x77, 0xd0, 0x80, 0x04, 0x20, 0xc7, 0x62, 0xf6, 0x51, 0x9e, 0x24, 0x4d, - 0x0e, 0xc7, 0xa7, 0xf1, 0xdb, 0x53, 0x09, 0xaf, 0xca, 0x30, 0x3a, 0xdc, 0xad, 0x15, 0x1e, - 0xd7, 0xf4, 0x3c, 0x6a, 0x44, 0x2b, 0x24, 0xb5, 0x51, 0xd5, 0x93, 0x66, 0x89, 0xad, 0x3d, - 0x51, 0x73, 0x60, 0x75, 0xa2, 0x26, 0x04, 0x4e, 0x44, 0x1c, 0xb3, 0x80, 0x8c, 0x1b, 0x3d, - 0xd7, 0x7a, 0xc3, 0x7b, 0x93, 0x95, 0xa9, 0x97, 0x3d, 0x18, 0xe6, 0x5c, 0x09, 0x07, 0x70, - 0xbf, 0x4e, 0xcb, 0x6d, 0x19, 0xec, 0xb5, 0x8f, 0x84, 0x8a, 0x41, 0x3f, 0x40, 0x43, 0x59, - 0xa4, 0x68, 0x0d, 0x9b, 0xa7, 0x02, 0x07, 0x2b, 0x92, 0x56, 0xc1, 0x61, 0x1e, 0x93, 0xaa, - 0xc9, 0x97, 0x9a, 0x85, 0x07, 0x34, 0xd8, 0xbd, 0x9d, 0x9f, 0xb1, 0x0e, 0x5d, 0x75, 0xe9, - 0x35, 0xb5, 0x75, 0x09, 0xdc, 0x8c, 0xda, 0x2a, 0x81, 0x4b, 0x4e, 0xaf, 0x51, 0xb6, 0x35, - 0x31, 0x18, 0xdd, 0x7b, 0x14, 0x80, 0x18, 0xfd, 0x6e, 0x2c, 0x29, 0x4a, 0x0f, 0x7e, 0x64, - 0x76, 0x5e, 0xcd, 0x41, 0x5e, 0x0c, 0x4a, 0xfa, 0x5a, 0xe6, 0x97, 0xa4, 0x4c, 0xeb, 0xd5, - 0x57, 0x6d, 0xb5, 0xb3, 0xd6, 0x23, 0x7f, 0x14, 0x36, 0x11, 0x27, 0xe1, 0xe3, 0x89, 0xdb, - 0x0d, 0x4f, 0x4f, 0xfb, 0xad, 0x7f, 0x78, 0x90, 0x76, 0x3f, 0x60, 0xbd, 0xb6, 0x56, 0x1c, - 0xe1, 0x14, 0xa1, 0x2a, 0x75, 0x52, 0xc6, 0x38, 0x9d, 0x61, 0xf4, 0xea, 0xc5, 0xf3, 0x15, - 0x1f, 0x77, 0x22, 0xa8, 0xe2, 0x46, 0xce, 0xb9, 0xff, 0xbc, 0xe1, 0x0a, 0xb0, 0x97, 0xb7, - 0xf9, 0x3b, 0x44, 0x85, 0x25, 0xaf, 0x69, 0x5e, 0xf2, 0x96, 0x56, 0x41, 0xf0, 0x22, 0xb2, - 0xd5, 0xe3, 0x92, 0x15, 0x01, 0x59, 0xf9, 0x1e, 0xe2, 0x64, 0x0e, 0xa7, 0x9f, 0xd9, 0x5f, - 0x4a, 0x82, 0x2b, 0xac, 0xaa, 0x36, 0x2c, 0x80, 0x2f, 0x68, 0x5d, 0x1c, 0xaf, 0x3e, 0x83, - 0xca, 0x00, 0x42, 0x83, 0xdd, 0xce, 0x1f, 0x63, 0x06, 0x83, 0x48, 0x99, 0xb8, 0x4b, 0x4c, - 0xbf, 0xe0, 0x02, 0x0c, 0x17, 0x10, 0xd7, 0x14, 0x6f, 0xac, 0xf5, 0x15, 0xcf, 0x2a, 0xb2, - 0xbb, 0xdd, 0x9a, 0x5b, 0x12, 0xed, 0x89, 0xdb, 0xc7, 0x9c, 0xe3, 0x62, 0x64, 0x73, 0x50, - 0x09, 0x42, 0x51, 0x76, 0x67, 0x0d, 0x3b, 0x64, 0x6c, 0x47, 0xf9, 0x7f, 0xae, 0x23, 0x40, - 0xb8, 0xce, 0x37, 0xc9, 0x8f, 0xf3, 0x52, 0x4a, 0x92, 0xae, 0x25, 0x99, 0xe4, 0xb4, 0xc0, - 0xe3, 0x87, 0x43, 0x1f, 0xa4, 0x1b, 0x01, 0xb1, 0xdc, 0xcc, 0xb7, 0x42, 0x2b, 0xab, 0x5f, - 0x09, 0x95, 0xf0, 0x7f, 0x0c, 0x4a, 0xc3, 0xf3, 0x2d, 0x80, 0x2e, 0xf0, 0xdb, 0x06, 0x06, - 0xbe, 0x1d, 0x48, 0x04, 0x57, 0x03, 0x33, 0x1b, 0x33, 0x21, 0xbe, 0xa1, 0x6d, 0xc2, 0x0a, - 0x74, 0x9c, 0x82, 0x3f, 0x3e, 0x59, 0x31, 0x8b, 0x2b, 0xf8, 0xbd, 0x41, 0xce, 0x8d, 0xba, - 0xa3, 0xe8, 0x73, 0xce, 0xd2, 0x83, 0x61, 0x47, 0x96, 0x46, 0x0f, 0x1c, 0xc4, 0x53, 0x84, - 0x42, 0x9d, 0x56, 0xd4, 0xd6, 0x55, 0x29, 0x1c, 0x7d, 0x42, 0x6a, 0x9e, 0xd7, 0x27, 0x83, - 0xaa, 0xf2, 0x61, 0x22, 0x03, 0xf5, 0x8c, 0x77, 0x02, 0xab, 0xf8, 0xc9, 0x06, 0x25, 0xad, - 0xbd, 0x01, 0xaa, 0x2c, 0xb8, 0xb3, 0xc3, 0x39, 0x1d, 0x61, 0x54, 0x93, 0x9e, 0x33, 0x14, - 0x52, 0xc7, 0x25, 0x3e, 0x80, 0x6d, 0xdf, 0x82, 0xde, 0x26, 0x8c, 0xfa, 0x7c, 0xd6, 0x19, - 0x30, 0xa0, 0x37, 0xba, 0x7a, 0x2f, 0x02, 0x8c, 0x5d, 0x19, 0xec, 0xf9, 0x2b, 0x99, 0xe0, - 0xbd, 0x65, 0x13, 0x52, 0xc6, 0x90, 0x26, 0x95, 0xb1, 0xe7, 0x59, 0x3c, 0xbc, 0x0b, 0x06, - 0x72, 0x79, 0x3b, 0x35, 0x1d, 0xca, 0x90, 0x12, 0x24, 0xf0, 0x49, 0x43, 0x8f, 0xa6, 0xea, - 0x38, 0xc1, 0x9f, 0x04, 0x46, 0xe2, 0x3a, 0x89, 0xe3, 0x20, 0xa5, 0x06, 0x4c, 0x9b, 0x0b, - 0x37, 0xc0, 0x0f, 0x41, 0x2d, 0x23, 0x20, 0xaf, 0xea, 0x62, 0x6e, 0x11, 0xff, 0x17, 0x7f, - 0x6d, 0xd8, 0xbe, 0x8f, 0xe3, 0xfb, 0x26, 0x0b, 0x64, 0x2a, 0xc0, 0x50, 0xb2, 0x99, 0x10, - 0x44, 0x64, 0xbe, 0x65, 0xeb, 0x4b, 0x13, 0xee, 0xea, 0xfc, 0x38, 0x35, 0xa2, 0x82, 0xe6, - 0x0c, 0xfc, 0x19, 0x99, 0x18, 0x7c, 0x80, 0xa3, 0x8a, 0xcd, 0x6a, 0xa0, 0xff, 0x2b, 0x7c, - 0x57, 0x7b, 0x0b, 0x28, 0xd4, 0x8a, 0xb1, 0xff, 0x09, 0x12, 0x3d, 0x13, 0x8c, 0x96, 0x4a, - 0xb4, 0x18, 0xde, 0xb2, 0x59, 0x99, 0x2d, 0xda, 0x7d, 0x9d, 0xc1, 0x99, 0x58, 0x83, 0xaa, - 0xea, 0x94, 0xe8, 0xb4, 0x24, 0xf1, 0x2d, 0x30, 0x51, 0xde, 0x35, 0x25, 0x1a, 0x2c, 0x24, - 0x9c, 0xb5, 0x62, 0x06, 0x92, 0xc2, 0x24, 0x33, 0x89, 0x77, 0xfa, 0x0a, 0x44, 0xd2, 0x8f, - 0x11, 0xa2, 0x35, 0x55, 0x1a, 0xdc, 0x9b, 0x2a, 0x52, 0xf1, 0x0b, 0x8e, 0x0f, 0xf4, 0x4b, - 0xdc, 0xf6, 0x23, 0x5f, 0xbf, 0x01, 0x41, 0x95, 0x4f, 0x95, 0x48, 0x22, 0x41, 0x4f, 0x77, - 0x5b, 0xca, 0x89, 0xbf, 0xc9, 0x3f, 0x8b, 0x9a, 0x03, 0xf8, 0x8a, 0x69, 0x10, 0x39, 0x06, - 0xac, 0x72, 0x27, 0x23, 0x7b, 0xbd, 0x6f, 0x78, 0xae, 0x62, 0xd1, 0x15, 0x20, 0x1b, 0x83, - 0xae, 0x9f, 0x5a, 0xb2, 0x51, 0xb7, 0x52, 0xe2, 0x7f, 0x31, 0xf3, 0x04, 0x27, 0xab, 0x39, - 0x14, 0x25, 0x17, 0xd6, 0x35, 0x83, 0x2b, 0x69, 0xda, 0x7a, 0x6c, 0xc8, 0xae, 0xb8, 0x5f, - 0xd8, 0x1d, 0x85, 0x5a, 0x2d, 0xe3, 0x29, 0x4c, 0x84, 0xc9, 0x99, 0x6c, 0x91, 0x84, 0x98, - 0xea, 0xf4, 0x6a, 0x2c, 0x2e, 0xaa, 0x92, 0x14, 0xc0, 0xe6, 0x79, 0x6b, 0x40, 0x8a, 0x24, - 0x47, 0x15, 0x93, 0xcf, 0xf9, 0x62, 0x29, 0xdd, 0xd6, 0xb6, 0x59, 0xd0, 0xd7, 0x02, 0x2b, - 0xdb, 0x7e, 0xd9, 0x71, 0x3a, 0x2a, 0x06, 0x9b, 0xc4, 0x70, 0x24, 0xe4, 0xed, 0x89, 0xf1, - 0xa1, 0x75, 0x21, 0xaf, 0x89, 0x9a, 0x49, 0xbc, 0xf8, 0xb5, 0xf9, 0xd5, 0x70, 0xdd, 0xec, - 0xc2, 0x92, 0xd6, 0xc2, 0x04, 0x8d, 0xdf, 0x03, 0x30, 0x79, 0x84, 0x6d, 0x70, 0xd5, 0x2e, - 0xe7, 0xf4, 0x35, 0x72, 0x5b, 0x59, 0xcc, 0x78, 0x67, 0x42, 0x3c, 0xde, 0xa7, 0x2f, 0x2a, - 0xb1, 0x24, 0xdf, 0x54, 0xcc, 0x6b, 0x6c, 0x07, 0x64, 0x39, 0x56, 0x95, 0x37, 0x85, 0x28, - 0x5b, 0x84, 0x79, 0x5d, 0x40, 0x82, 0x74, 0xc9, 0xba, 0xd2, 0x29, 0x10, 0x8e, 0x4b, 0x72, - 0x2c, 0xd7, 0x30, 0xce, 0xbf, 0x34, 0x02, 0x05, 0xd3, 0xed, 0xf3, 0x10, 0x58, 0x48, 0xde, - 0x20, 0x7f, 0x3c, 0xaa, 0xd0, 0xfa, 0x6b, 0x6b, 0xae, 0xdc, 0xa9, 0x63, 0x1a, 0xf1, 0x13, - 0xb0, 0xf9, 0xb7, 0xdf, 0xd4, 0xb4, 0x37, 0x94, 0xb5, 0x21, 0x28, 0x4f, 0xba, 0x23, 0x5d, - 0x01, 0xe9, 0x0e, 0x7e, 0x71, 0x59, 0x29, 0xba, 0x07, 0xe8, 0x51, 0xaa, 0x13, 0xdf, 0xb7, - 0x96, 0xac, 0x50, 0xc5, 0x9a, 0x48, 0x27, 0xa5, 0xb8, 0xdb, 0xbb, 0x9c, 0x1c, 0x51, 0xd0, - 0x3d, 0xde, 0x63, 0x50, 0xe9, 0x4c, 0x6a, 0x4b, 0x26, 0x2d, 0xb6, 0xaf, 0xcd, 0x8d, 0xfe, - 0x99, 0x3a, 0x0e, 0x31, 0x75, 0xeb, 0x62, 0x53, 0x8f, 0x8c, 0xb6, 0xe7, 0x1a, 0x45, 0x6d, - 0x85, 0x1e, 0x1f, 0x48, 0xc8, 0x50, 0x20, 0x5f, 0x59, 0x3e, 0x68, 0xcf, 0xc5, 0xa0, 0xf7, - 0x6c, 0xa8, 0xdb, 0x7a, 0x8d, 0xbc, 0x8f, 0x7d, 0x28, 0x92, 0x5a, 0xaf, 0x3b, 0xa7, 0xf8, - 0x2e, 0x07, 0xa9, 0x56, 0x3f, 0xab, 0x0a, 0xd3, 0x57, 0x02, 0xa0, 0xc4, 0x18, 0x6f, 0x5d, - 0x58, 0x98, 0x94, 0x6d, 0x3d, 0x21, 0xaf, 0x9c, 0x01, 0x18, 0x69, 0xb1, 0x06, 0xa7, 0xeb, - 0xb5, 0x42, 0x10, 0x68, 0x1f, 0xca, 0x1f, 0x23, 0x68, 0x32, 0xab, 0x9d, 0xad, 0xb3, 0x1b, - 0x97, 0x73, 0x15, 0x10, 0x83, 0x93, 0x33, 0x09, 0x14, 0x13, 0xaf, 0xb2, 0x11, 0xc8, 0xc1, - 0x15, 0xe8, 0xce, 0x14, 0xfb, 0x7c, 0x14, 0xb2, 0x19, 0xd4, 0x12, 0x4d, 0xee, 0x2d, 0x72, - 0xf3, 0x76, 0x2c, 0x68, 0xae, 0x2e, 0xde, 0x4d, 0x5f, 0xb8, 0x9f, 0xe9, 0x08, 0xef, 0x7d, - 0x4c, 0x71, 0x48, 0x1a, 0x74, 0x15, 0x49, 0xf6, 0x36, 0xfe, 0x20, 0xd7, 0x4b, 0xff, 0x8a, - 0x2a, 0x0a, 0x19, 0x2d, 0x92, 0xa3, 0x5b, 0x11, 0x31, 0x2b, 0x97, 0x02, 0x4c, 0xc3, 0x85, - 0xe6, 0x77, 0xde, 0x92, 0x92, 0x80, 0xa6, 0x76, 0xd0, 0x35, 0xbe, 0x89, 0x16, 0xbc, 0x53, - 0xdf, 0xa3, 0x24, 0x75, 0x83, 0x3d, 0x9e, 0x2e, 0xcd, 0xa1, 0x2c, 0x1a, 0x73, 0x89, 0x8f, - 0x6a, 0xe5, 0x15, 0xf5, 0x74, 0xbc, 0x66, 0x73, 0x7a, 0x39, 0x7d, 0x72, 0xb6, 0xc9, 0x32, - 0xa7, 0x1c, 0x30, 0x25, 0xf0, 0xcc, 0xb1, 0xd8, 0x66, 0xba, 0xb3, 0xc6, 0x2f, 0xa6, 0x62, - 0x3e, 0x14, 0xd1, 0x71, 0x58, 0x83, 0x74, 0x30, 0x0d, 0x70, 0x44, 0x03, 0x3e, 0xfd, 0x62, - 0x6a, 0x06, 0x83, 0x59, 0x39, 0xfe, 0x5e, 0x35, 0x11, 0xdf, 0x9d, 0x2f, 0x57, 0x70, 0xbb, - 0x1b, 0x8b, 0x63, 0x55, 0xe6, 0xa2, 0x73, 0xb9, 0xd1, 0x83, 0x9d, 0xfb, 0xb8, 0xb6, 0x79, - 0x1a, 0xbd, 0x4a, 0x23, 0x86, 0xfb, 0x0b, 0xfc, 0xb9, 0x28, 0x49, 0xfe, 0x90, 0x67, 0x04, - 0x6f, 0x77, 0x35, 0xdc, 0x88, 0xcc, 0xd7, 0x55, 0xa9, 0x8c, 0x78, 0x4e, 0x5f, 0x6d, 0x6a, - 0x83, 0xa9, 0x22, 0x02, 0xe1, 0x29, 0x27, 0x76, 0x57, 0x29, 0x42, 0xc4, 0xcf, 0x4c, 0x3b, - 0x4c, 0x69, 0x75, 0x70, 0x1a, 0x91, 0x56, 0x9b, 0x3a, 0x43, 0x7a, 0xf2, 0x2b, 0x88, 0x4b, - 0x50, 0xc9, 0x9f, 0xd3, 0x37, 0xe7, 0xf4, 0x1b, 0x3c, 0xce, 0x32, 0xb5, 0xc9, 0x85, 0xf9, - 0x11, 0x3a, 0x40, 0x5d, 0xde, 0xd6, 0xd0, 0x7e, 0xf4, 0xf8, 0xfa, 0x4b, 0xe9, 0x34, 0xb1, - 0x8b, 0x18, 0x4b, 0xf0, 0xb5, 0x15, 0xcc, 0xa2, 0x5e, 0x36, 0x6d, 0xa8, 0x7c, 0x60, 0xe1, - 0x5d, 0x13, 0x4e, 0x3e, 0xe6, 0x4d, 0xd7, 0x3d, 0x74, 0xe8, 0xf1, 0xed, 0x36, 0x6d, 0x5c, - 0x5a, 0x92, 0xd3, 0xf3, 0x71, 0xa7, 0xdf, 0xf1, 0x86, 0x84, 0x97, 0x39, 0x52, 0x3e, 0xed, - 0xa4, 0x7b, 0xba, 0xc5, 0x5c, 0x60, 0xb9, 0xaa, 0x0e, 0x5b, 0xf2, 0x7d, 0x26, 0x07, 0x88, - 0x43, 0xa1, 0x40, 0x9d, 0x50, 0x83, 0x94, 0xe1, 0xc9, 0xc8, 0x37, 0xcf, 0x14, 0x35, 0xb2, - 0x53, 0x20, 0x94, 0x27, 0x38, 0x02, 0x09, 0x00, 0xf6, 0x19, 0xf4, 0x3e, 0xbe, 0x1b, 0x0f, - 0x37, 0x63, 0x3b, 0x1a, 0x99, 0x0a, 0xad, 0x26, 0x16, 0x0b, 0x73, 0xaf, 0x76, 0xef, 0xa5, - 0x23, 0x34, 0xa0, 0xee, 0x07, 0xd3, 0x0e, 0xcf, 0x3f, 0xac, 0x27, 0xc7, 0x03, 0xac, 0x25, - 0xc2, 0xe8, 0xf8, 0x4d, 0xac, 0x38, 0x18, 0x0e, 0xf2, 0xfe, 0xff, 0x0e, 0xcb, 0xf3, 0x78, - 0xc5, 0xf7, 0x1b, 0xdf, 0x99, 0x52, 0x82, 0x6f, 0xf2, 0x06, 0xfc, 0xfb, 0x71, 0xfd, 0x00, - 0xfa, 0x08, 0x94, 0x17, 0x59, 0xb6, 0x2c, 0xf4, 0xed, 0x35, 0x95, 0xd2, 0x95, 0xe6, 0x3a, - 0x21, 0xdb, 0x33, 0x98, 0x10, 0xcf, 0xad, 0x06, 0xa7, 0x7a, 0x20, 0xe1, 0xc1, 0x15, 0x20, - 0x02, 0x27, 0x4a, 0x2f, 0xe3, 0xb8, 0xbb, 0xd6, 0x13, 0x1d, 0x82, 0x23, 0x61, 0xf8, 0x88, - 0x79, 0x86, 0xec, 0x57, 0x8d, 0x77, 0x2b, 0x0f, 0x05, 0x7a, 0x88, 0xb5, 0x32, 0xec, 0x33, - 0xf1, 0xe8, 0x84, 0xf4, 0x1e, 0xf3, 0x27, 0xff, 0x37, 0x5a, 0xed, 0x6e, 0xad, 0x89, 0xfc, - 0x5c, 0x58, 0xcd, 0xea, 0xd5, 0x77, 0x0f, 0x0a, 0x12, 0xff, 0x45, 0xaf, 0x4a, 0xce, 0x38, - 0xaa, 0x7d, 0xf3, 0xdb, 0xda, 0x1e, 0xec, 0xfa, 0x8a, 0xa1, 0x61, 0xa3, 0x15, 0x50, 0xac, - 0xa1, 0x62, 0x54, 0x50, 0x04, 0xf1, 0x46, 0xc6, 0x9b, 0x44, 0x3c, 0xcd, 0xfb, 0x33, 0x8f, - 0xf7, 0xe7, 0xf1, 0x97, 0x86, 0x4c, 0xf3, 0xe9, 0x49, 0x5b, 0xe5, 0xad, 0x00, 0x9c, 0x9b, - 0x2c, 0x2a, 0xcf, 0x41, 0x66, 0xb0, 0x49, 0x92, 0x2d, 0x20, 0xfa, 0xdc, 0x08, 0x4a, 0xc8, - 0x1a, 0x83, 0x37, 0xee, 0x9f, 0x39, 0xe6, 0x48, 0x5f, 0x12, 0x7e, 0x62, 0x8b, 0xe9, 0x4b, - 0xf8, 0xde, 0x6e, 0xa4, 0xe7, 0x9f, 0x1a, 0x0d, 0x5c, 0x36, 0xd7, 0xda, 0x6b, 0x95, 0x07, - 0xa3, 0xda, 0x1c, 0x64, 0x84, 0x9d, 0x9f, 0x9e, 0xc2, 0x25, 0x40, 0xe8, 0x44, 0xfb, 0x35, - 0xc1, 0x8f, 0x8e, 0x06, 0xa7, 0x55, 0x42, 0x9c, 0xad, 0x32, 0x95, 0x8e, 0xdc, 0xd3, 0x83, - 0x3c, 0x39, 0x8a, 0x16, 0x40, 0xe7, 0xe2, 0x84, 0x3f, 0xa5, 0x28, 0x79, 0x34, 0xd6, 0xf5, - 0xc0, 0x8c, 0xe9, 0xcf, 0x8a, 0xbd, 0x39, 0x2c, 0x50, 0x57, 0x09, 0xa6, 0x46, 0xba, 0x0d, - 0x22, 0x44, 0x8a, 0x03, 0x4d, 0x0f, 0xcf, 0x92, 0xf9, 0xd6, 0x86, 0xbb, 0x4d, 0xec, 0x89, - 0xd1, 0x05, 0x69, 0x4c, 0xeb, 0xeb, 0xcd, 0xea, 0x7b, 0xbf, 0xc2, 0x1a, 0x02, 0xb9, 0x66, - 0xf8, 0x96, 0xd4, 0x6d, 0x5d, 0x09, 0xe0, 0xb5, 0x80, 0x9f, 0xd6, 0xd3, 0x11, 0x24, 0x3a, - 0x53, 0x09, 0x70, 0x06, 0x7f, 0x6e, 0xba, 0xa8, 0x8d, 0x96, 0x61, 0xe4, 0x75, 0x9d, 0x8f, - 0xa6, 0x52, 0x59, 0x9b, 0xc5, 0x00, 0x8f, 0x2f, 0x21, 0xc0, 0xb4, 0x16, 0x56, 0xe4, 0x4e, - 0x11, 0x45, 0x01, 0xae, 0x26, 0x7d, 0x08, 0x19, 0x4e, 0xa7, 0x22, 0x96, 0x4c, 0xbb, 0xc2, - 0x12, 0xf6, 0xc4, 0x0b, 0x39, 0x7f, 0xb7, 0xa5, 0x61, 0x35, 0x77, 0x0b, 0x4e, 0x11, 0xfb, - 0xe3, 0x5c, 0xc0, 0xfb, 0xdd, 0x19, 0x37, 0x59, 0xcb, 0x98, 0xd6, 0x08, 0x52, 0xf4, 0x87, - 0xab, 0xd7, 0x99, 0x2b, 0x87, 0x8c, 0xde, 0x74, 0x6f, 0x34, 0xd0, 0x31, 0xc6, 0xc1, 0x72, - 0x3a, 0xe2, 0x49, 0xcf, 0x61, 0xb7, 0x06, 0x67, 0x80, 0xc7, 0x87, 0x84, 0xb9, 0x86, 0x8c, - 0x99, 0x94, 0xbe, 0x54, 0xa0, 0xa9, 0x7c, 0x89, 0x7a, 0xef, 0xa9, 0x0f, 0xf9, 0x30, 0x02, - 0xb6, 0xe3, 0xf1, 0x55, 0x7b, 0xe9, 0x49, 0xa6, 0xe2, 0xa3, 0x66, 0xc6, 0xb7, 0xfd, 0xa4, - 0x58, 0x32, 0x5c, 0x30, 0x9e, 0xd4, 0x19, 0x17, 0xd2, 0x7c, 0xc5, 0x93, 0x21, 0x70, 0x8b, - 0x1b, 0xb4, 0x4f, 0x9f, 0x82, 0x88, 0x0b, 0x60, 0x3f, 0x21, 0x75, 0xab, 0x48, 0x82, 0x10, - 0x7f, 0x49, 0x6d, 0x22, 0x3a, 0xcd, 0x56, 0x75, 0x07, 0xd2, 0xdc, 0xac, 0x6b, 0x77, 0x8b, - 0x62, 0xe1, 0x3a, 0x76, 0xac, 0x9c, 0x41, 0x6c, 0x24, 0x59, 0x13, 0x63, 0x5c, 0x4d, 0xd9, - 0xfe, 0x0e, 0x5c, 0xa9, 0x69, 0x0f, 0x52, 0xd8, 0xbb, 0x13, 0x9b, 0x80, 0xdc, 0xb6, 0x7b, - 0x75, 0x1e, 0xb3, 0x7a, 0x1e, 0xed, 0x26, 0xb9, 0x27, 0xfd, 0x4d, 0x55, 0xb1, 0x29, 0xfe, - 0xa7, 0x21, 0x21, 0x8c, 0x5f, 0x96, 0xc6, 0xee, 0xc0, 0xb6, 0xe9, 0x45, 0x70, 0xe2, 0x53, - 0x70, 0xef, 0xd5, 0xbb, 0x2f, 0x28, 0x02, 0xb4, 0xfd, 0x1f, 0x62, 0xe1, 0x67, 0xa9, 0x1b, - 0x89, 0x1d, 0x0e, 0xc9, 0xb0, 0xd7, 0x97, 0xa6, 0xc9, 0xe1, 0xdc, 0xcb, 0x3e, 0x68, 0x91, - 0x07, 0x27, 0xe8, 0xda, 0x49, 0x1a, 0x3d, 0x71, 0x08, 0xbf, 0xc3, 0x61, 0xf8, 0xdd, 0x23, - 0x4b, 0x13, 0xe3, 0xa0, 0x7c, 0xc7, 0xb7, 0x56, 0x4d, 0x17, 0x66, 0x6b, 0xf9, 0x9d, 0x08, - 0x2c, 0x91, 0x6f, 0x3e, 0xff, 0xa4, 0xe7, 0xf9, 0x8a, 0xe5, 0x1f, 0xc7, 0x75, 0x69, 0x85, - 0x12, 0xce, 0xad, 0xd8, 0x6c, 0xa5, 0x76, 0x56, 0x76, 0x71, 0x56, 0xed, 0xf8, 0x0f, 0xa4, - 0x24, 0xdd, 0x69, 0xd0, 0x3c, 0x1d, 0xee, 0xba, 0xa2, 0x35, 0x95, 0x37, 0x13, 0x65, 0x64, - 0xfa, 0x42, 0x58, 0xe2, 0x6a, 0x67, 0x5c, 0x32, 0x3c, 0x68, 0x3c, 0x81, 0x12, 0xdf, 0x34, - 0x06, 0x52, 0xe4, 0x2e, 0x76, 0x6c, 0x56, 0xc3, 0xf4, 0xfc, 0xf8, 0xd0, 0x1a, 0x5d, 0x2e, - 0xed, 0x60, 0x62, 0x01, 0xd7, 0x1e, 0xc7, 0x6f, 0x14, 0x20, 0x20, 0x3e, 0x03, 0xc0, 0x10, - 0x13, 0xed, 0xbb, 0x5c, 0x37, 0xc7, 0x26, 0x71, 0x8d, 0x95, 0x89, 0x00, 0xff, 0xde, 0x69, - 0xf8, 0x06, 0x5b, 0xef, 0xa5, 0x7f, 0xf3, 0x87, 0x4f, 0x08, 0x33, 0x40, 0xdc, 0x76, 0x9a, - 0x4c, 0xb6, 0x72, 0x14, 0xcb, 0xc8, 0x7c, 0xdc, 0x91, 0x83, 0x15, 0x57, 0xcc, 0xe5, 0x69, - 0x84, 0x2b, 0x00, 0x0b, 0xbd, 0x6a, 0xae, 0x39, 0xd4, 0x9f, 0xbb, 0x59, 0x1f, 0x3f, 0xc1, - 0x8b, 0xb2, 0x1c, 0x18, 0x95, 0xfb, 0x93, 0x07, 0x89, 0xa1, 0x32, 0x60, 0xaa, 0x76, 0x6b, - 0x65, 0x79, 0x70, 0x13, 0x52, 0x1e, 0xa1, 0x51, 0x60, 0x2c, 0x2a, 0x83, 0x78, 0x36, 0x64, - 0xd3, 0x8f, 0x0d, 0xe7, 0xdc, 0x9e, 0x1e, 0x2d, 0x1d, 0x7c, 0x49, 0x21, 0x33, 0x8d, 0xe5, - 0x10, 0xea, 0xf7, 0x10, 0x5f, 0x04, 0x54, 0x01, 0xe0, 0x48, 0x73, 0xe7, 0xa1, 0xdb, 0x4d, - 0x39, 0xb1, 0x00, 0x01, 0xf9, 0xa9, 0x20, 0xa7, 0xef, 0xfd, 0x11, 0xa4, 0x89, 0x5b, 0xab, - 0x48, 0xb2, 0xce, 0xba, 0xf9, 0x4e, 0xdc, 0x4c, 0x70, 0x16, 0xc0, 0xd8, 0x72, 0x31, 0x33, - 0x35, 0xa8, 0x9b, 0x5c, 0xe9, 0x5d, 0x04, 0x61, 0x1c, 0x56, 0xad, 0x0f, 0xcc, 0x80, 0x1c, - 0x12, 0x0f, 0xee, 0xb0, 0x60, 0x03, 0xb5, 0x7a, 0x02, 0x24, 0xa2, 0x12, 0xf6, 0xc5, 0x0f, - 0x63, 0x11, 0x70, 0xe2, 0xdf, 0xa7, 0xd8, 0x2d, 0x52, 0x52, 0x67, 0x08, 0x94, 0xe6, 0x4c, - 0x53, 0x89, 0xea, 0xbf, 0x77, 0x0d, 0xda, 0xe9, 0x40, 0x21, 0xf5, 0xbf, 0x91, 0x13, 0xcb, - 0x81, 0xe0, 0x43, 0xa5, 0x7d, 0xb7, 0xf2, 0x96, 0xe5, 0xa9, 0x47, 0x58, 0x55, 0x9f, 0xc5, - 0x2e, 0x66, 0xf0, 0x79, 0x39, 0xdb, 0x07, 0xd2, 0x8e, 0x23, 0x16, 0xc2, 0x16, 0x09, 0x50, - 0x36, 0x7f, 0xdc, 0x85, 0x27, 0x2d, 0xb1, 0xe2, 0x90, 0x59, 0x64, 0x7e, 0x7a, 0xe9, 0x8d, - 0x4c, 0xd6, 0x1e, 0x06, 0x0b, 0x9d, 0x4e, 0x3a, 0x90, 0xc5, 0xcd, 0x00, 0xb2, 0xd0, 0xea, - 0xa0, 0xc4, 0x14, 0xb3, 0x4c, 0xd8, 0xa8, 0x24, 0xe3, 0x5c, 0xa3, 0xf4, 0x81, 0xba, 0xf2, - 0x74, 0xf6, 0xf7, 0xf6, 0xde, 0xae, 0x79, 0x5a, 0xa9, 0x6b, 0x34, 0x2d, 0xdf, 0x8d, 0xcc, - 0x89, 0xf9, 0xd7, 0x6d, 0x18, 0xc5, 0xf6, 0x81, 0xa1, 0x21, 0xfa, 0xe3, 0x21, 0x80, 0x17, - 0xb3, 0x20, 0x2e, 0x17, 0x9a, 0x0b, 0xd3, 0xcf, 0x35, 0xa3, 0x64, 0x10, 0xd5, 0xda, 0x8a, - 0xcb, 0xbb, 0x4c, 0x55, 0x3a, 0x5c, 0x10, 0xa4, 0xbc, 0x35, 0xce, 0xb3, 0x9f, 0x46, 0xeb, - 0xbf, 0x59, 0x1a, 0x0c, 0xad, 0xfd, 0x11, 0xcf, 0x3f, 0xf5, 0xa9, 0x24, 0xe9, 0x0f, 0xf7, - 0xc2, 0xf2, 0xfa, 0xad, 0x4a, 0xf9, 0x54, 0x8b, 0x0a, 0x4e, 0x99, 0x73, 0x5d, 0x8e, 0x77, - 0xef, 0x56, 0x9e, 0xcf, 0x46, 0x79, 0xe8, 0xb7, 0x40, 0xa6, 0x20, 0x24, 0x2c, 0xe5, 0xe0, - 0x77, 0x7c, 0xfd, 0x6a, 0x07, 0x24, 0x90, 0xcb, 0x8b, 0xc3, 0x13, 0x41, 0x89, 0xdb, 0x24, - 0x6d, 0x31, 0x6b, 0xd5, 0x17, 0xa9, 0xee, 0xe8, 0x80, 0xeb, 0x70, 0x7e, 0xb2, 0x73, 0xbf, - 0xa5, 0x4d, 0xe3, 0x22, 0x17, 0xd9, 0x15, 0x5b, 0xb2, 0xbd, 0xe9, 0x29, 0x3a, 0x0d, 0x50, - 0x6b, 0xf3, 0xba, 0x30, 0xd0, 0x34, 0x1c, 0x69, 0xd2, 0x02, 0x56, 0x02, 0x35, 0x1d, 0xa0, - 0x84, 0xf9, 0xee, 0xe0, 0x24, 0x50, 0xc4, 0x73, 0x40, 0x2e, 0x70, 0x13, 0x89, 0xc7, 0x1d, - 0x5f, 0x00, 0x82, 0x1b, 0x91, 0x2e, 0x40, 0x4c, 0x33, 0x9e, 0x38, 0xb2, 0xbd, 0xf3, 0x64, - 0x30, 0x51, 0xc2, 0x19, 0x45, 0xf0, 0x38, 0xc3, 0x99, 0x2c, 0x8f, 0x4f, 0xbc, 0xba, 0xf8, - 0x71, 0x13, 0xe2, 0x62, 0xdd, 0x02, 0x95, 0x3d, 0x23, 0x51, 0x12, 0xad, 0x22, 0x53, 0x72, - 0x1c, 0xf8, 0x6a, 0xf4, 0x49, 0xcd, 0x58, 0xf7, 0x91, 0xef, 0xec, 0x37, 0x4a, 0x23, 0xd8, - 0x41, 0xbd, 0xcf, 0x1f, 0xd1, 0x0a, 0x8d, 0x66, 0xd4, 0x49, 0x84, 0x38, 0xbb, 0xa8, 0x3f, - 0xdb, 0x28, 0x28, 0x7a, 0xeb, 0x77, 0xa2, 0xbb, 0x17, 0x9b, 0x8d, 0x4e, 0x1f, 0xde, 0xf9, - 0x43, 0x2d, 0x69, 0x92, 0x3e, 0x29, 0x4c, 0xfa, 0xe9, 0x6f, 0x20, 0x49, 0x51, 0xa0, 0x3b, - 0x41, 0x77, 0xe6, 0x0d, 0x48, 0x58, 0x94, 0x04, 0xd9, 0x1c, 0x78, 0x26, 0x8b, 0x31, 0x3f, - 0xf7, 0xb7, 0x43, 0x26, 0x47, 0x81, 0x2d, 0x12, 0x6a, 0xb2, 0xbb, 0x6c, 0xdc, 0xfe, 0xd8, - 0xa8, 0x0e, 0x1f, 0x36, 0x17, 0x1e, 0x98, 0xcb, 0x3f, 0xf3, 0x28, 0x80, 0x3e, 0xa7, 0x39, - 0x02, 0x41, 0xdf, 0x69, 0xd4, 0x8c, 0xf1, 0xd3, 0x57, 0x08, 0x64, 0xcc, 0xda, 0xac, 0x9e, - 0x19, 0xd6, 0xde, 0x81, 0xdc, 0x3e, 0xd3, 0x0d, 0xe8, 0x00, 0xa3, 0xd4, 0x13, 0x02, 0x66, - 0x9d, 0x1c, 0xe2, 0x54, 0x43, 0xa5, 0x4f, 0x64, 0x2a, 0xdd, 0x16, 0x06, 0xfe, 0x07, 0x54, - 0xae, 0xb4, 0x1b, 0x5e, 0x7c, 0x22, 0x76, 0x46, 0x51, 0x40, 0xbd, 0x77, 0x52, 0x11, 0x7c, - 0x08, 0x9e, 0x5b, 0xd8, 0x6b, 0x71, 0x7c, 0x30, 0x68, 0x92, 0x1b, 0x25, 0x24, 0x38, 0x95, - 0xa2, 0x16, 0xae, 0xa3, 0xa5, 0xa0, 0xd9, 0x93, 0xe1, 0x85, 0x3b, 0x0b, 0x77, 0x7d, 0x6b, - 0xb7, 0x20, 0x49, 0x1d, 0x67, 0x11, 0x8d, 0x4c, 0x21, 0xad, 0x82, 0x65, 0xbe, 0xe7, 0xef, - 0x38, 0x80, 0x45, 0x1a, 0x7b, 0xb0, 0x35, 0x86, 0x99, 0x9c, 0x52, 0x9a, 0x32, 0x27, 0x1b, - 0x65, 0xf1, 0x33, 0xe6, 0xd2, 0x20, 0x6a, 0xa9, 0xb5, 0x36, 0x6a, 0x6a, 0xeb, 0x5f, 0xc1, - 0x15, 0xab, 0x32, 0x86, 0x18, 0x60, 0x46, 0xe3, 0xfd, 0x2b, 0xbd, 0xbf, 0x13, 0x86, 0x32, - 0xf6, 0xf2, 0xf6, 0x4b, 0x33, 0x07, 0x54, 0x11, 0xaf, 0xf0, 0x00, 0xc2, 0x79, 0xcc, 0x51, - 0xb2, 0x28, 0x36, 0x31, 0x27, 0x12, 0x31, 0x77, 0xee, 0x21, 0xc3, 0xdb, 0xc6, 0x62, 0xb5, - 0x0a, 0xb4, 0x68, 0xa8, 0x40, 0xe4, 0x15, 0x22, 0x45, 0x84, 0x21, 0xd9, 0x81, 0xca, 0x5b, - 0x7c, 0xad, 0xda, 0x7f, 0x85, 0x0f, 0x0a, 0xe5, 0x01, 0x8c, 0x07, 0x96, 0x26, 0x62, 0x6e, - 0x58, 0x7f, 0x6a, 0x45, 0x30, 0x0f, 0x76, 0xbc, 0xf8, 0x9b, 0x07, 0x29, 0x04, 0x32, 0xd2, - 0xe5, 0x4d, 0x10, 0x8f, 0x50, 0x8e, 0x74, 0x0e, 0x3f, 0x57, 0x8d, 0x99, 0x00, 0xc2, 0x08, - 0x2d, 0x66, 0xf8, 0x14, 0x21, 0x32, 0x28, 0x4d, 0x1b, 0x1c, 0xd8, 0x4a, 0xdd, 0xe8, 0x3a, - 0x29, 0xd7, 0x64, 0x41, 0x5a, 0x57, 0xf0, 0x22, 0xd2, 0x9d, 0x2e, 0x4c, 0xcf, 0x8f, 0xaa, - 0x69, 0x76, 0x59, 0x49, 0x50, 0xd5, 0x94, 0x5f, 0x6b, 0xb4, 0xbd, 0x64, 0xb2, 0x07, 0x3e, - 0x1a, 0x62, 0x46, 0x60, 0xb4, 0xf4, 0x23, 0x7d, 0x56, 0xf5, 0xb9, 0x7b, 0x05, 0x16, 0xff, - 0xdf, 0x8a, 0x5f, 0xfa, 0x36, 0x79, 0xc0, 0xe7, 0x21, 0x85, 0x6e, 0x03, 0x92, 0x26, 0x61, - 0xed, 0x22, 0xec, 0x81, 0xc5, 0xb7, 0xbe, 0xc4, 0x8a, 0x1b, 0x22, 0x90, 0xc6, 0xee, 0x27, - 0xf2, 0x50, 0x32, 0x87, 0x0f, 0xae, 0x8f, 0x6c, 0x04, 0x85, 0x55, 0x44, 0x94, 0x5e, 0x1c, - 0x59, 0x29, 0x55, 0x09, 0xfd, 0x63, 0x98, 0x39, 0x21, 0xe7, 0x31, 0x4f, 0xbe, 0x6f, 0xdd, - 0xcf, 0x12, 0x32, 0x0d, 0x8c, 0xfd, 0x78, 0xbb, 0x4c, 0x31, 0xb7, 0x45, 0x59, 0xda, 0x15, - 0x93, 0xb3, 0x0c, 0xa5, 0xb8, 0x58, 0x97, 0xa3, 0x87, 0x40, 0xa2, 0xbb, 0x61, 0xfa, 0x54, - 0x4c, 0x3a, 0xdf, 0x13, 0x02, 0x0f, 0xb6, 0x99, 0x7f, 0x6e, 0x3d, 0x10, 0xb7, 0x13, 0x27, - 0x4a, 0xdd, 0x3d, 0x9b, 0x2a, 0x7d, 0x9a, 0x31, 0x57, 0x62, 0x76, 0xc9, 0x9a, 0xa0, 0xbe, - 0x9e, 0xbf, 0xda, 0x9d, 0x9a, 0x12, 0x5b, 0x60, 0xd5, 0x5f, 0x7d, 0x4f, 0x97, 0xae, 0x64, - 0x73, 0xa7, 0x51, 0xcb, 0x6e, 0xf9, 0xaf, 0x4b, 0x9b, 0x0b, 0xd9, 0xef, 0xb5, 0xae, 0xe3, - 0xf1, 0x22, 0x14, 0xc5, 0xbe, 0xcf, 0xa7, 0x3e, 0x9c, 0xa2, 0x38, 0x13, 0xd7, 0xba, 0xa7, - 0xa7, 0x8b, 0xeb, 0x00, 0x8c, 0x81, 0xbf, 0x29, 0x69, 0x74, 0x7f, 0x9a, 0x43, 0xee, 0xc6, - 0x02, 0x66, 0x3c, 0x60, 0x31, 0xc0, 0xe3, 0x29, 0xa3, 0x12, 0x61, 0xa2, 0x16, 0x76, 0x1f, - 0x50, 0x80, 0x29, 0x7d, 0xa5, 0x4b, 0x56, 0x24, 0x0e, 0x17, 0x52, 0xe4, 0x82, 0x06, 0xdc, - 0x31, 0xb1, 0x95, 0x8f, 0xe6, 0xce, 0x97, 0x0e, 0x1d, 0x17, 0xc9, 0x04, 0x39, 0x24, 0x54, - 0x97, 0xaa, 0x1a, 0x29, 0x6e, 0x41, 0x9c, 0x56, 0x91, 0x39, 0x13, 0xf2, 0x1b, 0xb3, 0xb5, - 0x2e, 0x7d, 0x27, 0x51, 0xda, 0x42, 0x2c, 0xe3, 0x58, 0x86, 0xa7, 0xdb, 0xbf, 0x14, 0xc4, - 0x2c, 0x8c, 0x84, 0xcf, 0xd8, 0x07, 0x0f, 0xac, 0x15, 0xec, 0x66, 0x1b, 0x1e, 0x5a, 0xe9, - 0x15, 0xb8, 0x71, 0x63, 0x81, 0x4d, 0xf5, 0x9e, 0x94, 0x5a, 0xb3, 0x12, 0x0d, 0x46, 0x8a, - 0x2b, 0x49, 0x85, 0xc1, 0xcb, 0xac, 0xa0, 0x3e, 0x80, 0x83, 0x98, 0xde, 0x2e, 0x5a, 0x41, - 0x8e, 0x3d, 0xf0, 0xda, 0xdd, 0x09, 0x8a, 0xea, 0x21, 0xcc, 0x3e, 0x9e, 0x3d, 0x0d, 0x4d, - 0x01, 0xef, 0x36, 0xaf, 0xe0, 0x4e, 0x1a, 0xef, 0x97, 0xb7, 0xa0, 0xaf, 0x14, 0xd3, 0x4e, - 0xe0, 0x92, 0x22, 0xc4, 0x3e, 0xa4, 0xd4, 0x5b, 0xd1, 0x22, 0xe8, 0x71, 0xd8, 0xf8, 0xfe, - 0xfc, 0xde, 0xe0, 0xb6, 0x2c, 0x07, 0xb5, 0xef, 0xa2, 0xf9, 0x52, 0x21, 0xc8, 0x13, 0x11, - 0x8b, 0x19, 0x04, 0xca, 0x07, 0xce, 0x41, 0xb8, 0xc5, 0xf3, 0x95, 0xa7, 0xaa, 0x1a, 0x0d, - 0xf4, 0x45, 0x1b, 0xf4, 0x8e, 0xce, 0x11, 0x8a, 0x31, 0xf2, 0xaa, 0xeb, 0x20, 0xb7, 0x32, - 0x3f, 0x16, 0x7e, 0x3a, 0xce, 0xb5, 0xb5, 0xfd, 0x3e, 0xba, 0x84, 0x55, 0xbd, 0x27, 0xbe, - 0xa1, 0x17, 0xfa, 0xa2, 0x53, 0x1b, 0x12, 0x63, 0x18, 0x85, 0x5e, 0x84, 0x00, 0xbe, 0x96, - 0xfb, 0x7e, 0x38, 0x70, 0xfa, 0x73, 0xef, 0xb4, 0xe2, 0x0b, 0x9a, 0x9c, 0x2f, 0x18, 0xec, - 0x3a, 0x0f, 0xde, 0xf0, 0x54, 0x92, 0xba, 0xc1, 0x18, 0x4b, 0x28, 0x7d, 0xe0, 0x31, 0x72, - 0x90, 0xa5, 0x1b, 0x80, 0x56, 0xc7, 0x5b, 0xac, 0x11, 0xe0, 0x02, 0x01, 0x90, 0x15, 0xfc, - 0x17, 0xcb, 0xed, 0x31, 0x14, 0xc3, 0xb4, 0xf5, 0x40, 0x8c, 0xf7, 0x3f, 0x0e, 0x4e, 0x36, - 0x6f, 0x30, 0xef, 0x00, 0xcd, 0x49, 0x25, 0x32, 0x14, 0xfb, 0x8c, 0xdb, 0xc4, 0x73, 0x00, - 0x34, 0x9d, 0xd8, 0xa8, 0x8d, 0xaf, 0x32, 0x05, 0x40, 0xbc, 0xcd, 0x93, 0x7c, 0xf2, 0x0d, - 0x0a, 0xea, 0x1e, 0x04, 0xb7, 0x72, 0xf4, 0x77, 0x66, 0x89, 0x22, 0x5e, 0x40, 0x31, 0x4d, - 0xf8, 0xdc, 0x74, 0x50, 0xcb, 0xec, 0x1c, 0xf7, 0xd3, 0xf0, 0x1a, 0xfb, 0x18, 0xc3, 0x17, - 0x86, 0x1c, 0x11, 0xa4, 0xa1, 0xce, 0xba, 0x9e, 0x61, 0x0c, 0x42, 0xd0, 0x5b, 0x0d, 0x8a, - 0x7c, 0xee, 0x71, 0xbd, 0x63, 0x95, 0xaf, 0x38, 0x3e, 0xfa, 0xc9, 0xc3, 0x87, 0x2f, 0x3f, - 0x3e, 0xe4, 0x22, 0x32, 0xe7, 0x48, 0x30, 0xb3, 0xe6, 0x99, 0x41, 0x0b, 0x62, 0x19, 0x38, - 0xa8, 0x1e, 0x97, 0xc5, 0x4c, 0x41, 0xef, 0xab, 0x92, 0x5a, 0x7f, 0xa4, 0x58, 0xac, 0x7b, - 0x8c, 0xa4, 0xe2, 0xe3, 0x91, 0x0f, 0x45, 0x13, 0x70, 0x2f, 0x07, 0x91, 0x3d, 0xee, 0x61, - 0x5d, 0xc9, 0xaf, 0x71, 0x01, 0x1f, 0x5a, 0x8b, 0xf2, 0xa9, 0xeb, 0x44, 0x7a, 0x22, 0x79, - 0xe6, 0x2b, 0x77, 0xb9, 0x2e, 0x91, 0x8e, 0x00, 0x9f, 0xe7, 0x1e, 0x6d, 0xea, 0xe7, 0x73, - 0x24, 0x12, 0x70, 0xcf, 0xb8, 0xba, 0xc3, 0x8d, 0x53, 0xa7, 0x24, 0x8b, 0x8a, 0xa2, 0xea, - 0x65, 0x8e, 0xe4, 0x31, 0xdf, 0x27, 0xee, 0x7d, 0x3a, 0x3f, 0xcf, 0x0e, 0x5d, 0x6e, 0x6d, - 0x65, 0x2c, 0x28, 0xcc, 0x9d, 0x04, 0x17, 0xac, 0xcb, 0x81, 0x04, 0x44, 0xfd, 0xb2, 0xb2, - 0xc6, 0x8d, 0xa3, 0x3b, 0x56, 0x24, 0xbf, 0xd5, 0x2f, 0xb0, 0x91, 0x1b, 0x1f, 0x79, 0x57, - 0x9d, 0x8d, 0x9b, 0x5d, 0x0f, 0x4c, 0x6c, 0x22, 0xf6, 0x0c, 0x6c, 0x5a, 0xf6, 0x56, 0xbf, - 0xa6, 0x6b, 0x29, 0x78, 0x7e, 0x87, 0x89, 0xfc, 0xf3, 0xc3, 0x9b, 0x43, 0x96, 0x2c, 0x9f, - 0x43, 0x1f, 0x6d, 0xae, 0xe9, 0x99, 0xfe, 0x0d, 0x6e, 0xb7, 0x3f, 0xe8, 0x74, 0x33, 0x2b, - 0x56, 0x60, 0xee, 0xee, 0xab, 0x2c, 0x34, 0xed, 0x46, 0x5a, 0x99, 0xd9, 0x3c, 0x28, 0xf2, - 0x0d, 0x43, 0x20, 0xf3, 0xd7, 0xa6, 0x54, 0xc2, 0x1c, 0x8d, 0x21, 0xcd, 0x70, 0x54, 0x3e, - 0xa8, 0x32, 0x3e, 0xf5, 0x70, 0x10, 0x47, 0x37, 0x84, 0x67, 0x62, 0x2c, 0xd2, 0xc6, 0x5a, - 0x60, 0x58, 0x32, 0x8d, 0x66, 0x14, 0x32, 0xd0, 0xa5, 0x13, 0x3a, 0xfd, 0xe0, 0x07, 0x83, - 0x5a, 0xce, 0xd0, 0x61, 0xaf, 0x89, 0x42, 0xe0, 0x89, 0x5d, 0xd2, 0x77, 0x61, 0x44, 0xac, - 0xbe, 0x34, 0x44, 0x6f, 0x3a, 0x7b, 0x06, 0xd1, 0x96, 0x35, 0xcf, 0xbf, 0xbd, 0x06, 0x7b, - 0xa7, 0x95, 0x58, 0xb7, 0x19, 0x3d, 0x80, 0xc2, 0xf7, 0x0f, 0xef, 0x43, 0xda, 0x60, 0x62, - 0x5f, 0xe4, 0xb0, 0x07, 0xba, 0x16, 0x23, 0xb7, 0x59, 0x8a, 0x90, 0xc7, 0xf9, 0xa1, 0x8d, - 0xa4, 0x33, 0x80, 0x03, 0xc0, 0xf3, 0x3a, 0x84, 0xca, 0xcd, 0xcc, 0x75, 0x7a, 0xb8, 0xf9, - 0xfc, 0xb9, 0x88, 0x5c, 0x67, 0xd3, 0xb1, 0xd7, 0x33, 0x56, 0xe7, 0x1f, 0x87, 0x1c, 0x7e, - 0x07, 0x64, 0x73, 0xc3, 0x78, 0x90, 0xc0, 0x30, 0x15, 0xdf, 0x76, 0x74, 0xc0, 0xe9, 0x80, - 0x81, 0x61, 0x4f, 0xea, 0xdb, 0x88, 0x77, 0x10, 0x20, 0x97, 0x22, 0xea, 0xa6, 0x94, 0x51, - 0x88, 0xe8, 0xf4, 0x73, 0x58, 0x22, 0x7d, 0x63, 0x8c, 0x24, 0xdf, 0xfd, 0x9f, 0x40, 0xa3, - 0xf7, 0xfe, 0xbb, 0x64, 0xcd, 0x62, 0x60, 0x9d, 0x32, 0x7a, 0x88, 0xad, 0x1b, 0x05, 0xa3, - 0xd2, 0x14, 0x10, 0x06, 0x6e, 0x4c, 0x87, 0x9c, 0x33, 0x7d, 0xd7, 0x0d, 0xa8, 0x46, 0xb8, - 0x79, 0x9f, 0x77, 0xef, 0xa9, 0xbc, 0x38, 0x98, 0xc7, 0x91, 0xe8, 0xf2, 0xe8, 0x63, 0x14, - 0x7e, 0xe5, 0x19, 0x20, 0x2e, 0x5a, 0x9a, 0xa6, 0x6a, 0xbb, 0xa1, 0x61, 0x59, 0x5b, 0x5c, - 0x02, 0x56, 0x96, 0x2f, 0xd3, 0xcc, 0x1a, 0x94, 0xf4, 0xd8, 0x11, 0x80, 0x0f, 0xa8, 0x12, - 0xb7, 0x37, 0x80, 0x0e, 0x7f, 0xef, 0xca, 0x28, 0xd1, 0x55, 0x3d, 0x10, 0x96, 0xe7, 0x25, - 0x27, 0xf5, 0x9f, 0x63, 0x81, 0xa9, 0xea, 0xff, 0x01, 0x7f, 0x21, 0x6f, 0x5b, 0x34, 0x27, - 0xe9, 0x63, 0x70, 0x0a, 0x8e, 0x5d, 0xee, 0xe2, 0xbb, 0x5c, 0xb1, 0x25, 0x59, 0xf8, 0xb1, - 0xc5, 0x83, 0xf2, 0x55, 0xf6, 0xad, 0x0c, 0xfc, 0x38, 0x86, 0xca, 0xfd, 0x64, 0x34, 0x9d, - 0x36, 0x75, 0xf4, 0xcd, 0x26, 0x29, 0x73, 0x73, 0x67, 0xc6, 0xcf, 0xc7, 0x8a, 0xd0, 0x9d, - 0xb6, 0x6f, 0x69, 0x79, 0x17, 0x07, 0xb1, 0xe3, 0xd9, 0x94, 0x33, 0x47, 0xf7, 0xc7, 0x00, - 0x09, 0x44, 0x01, 0xe6, 0x57, 0xf0, 0x35, 0x03, 0x67, 0xa0, 0x59, 0x60, 0xff, 0x2a, 0x92, - 0x1f, 0xd5, 0x33, 0xf5, 0xcb, 0xc9, 0xbd, 0xbe, 0x96, 0x76, 0xa8, 0x0f, 0x18, 0x77, 0xdd, - 0x80, 0x3a, 0xf4, 0x7a, 0xb7, 0xf9, 0x5e, 0x63, 0xb7, 0x30, 0x97, 0xe3, 0x37, 0x9f, 0xb0, - 0xa1, 0xa6, 0x76, 0x38, 0x37, 0xae, 0xca, 0x13, 0x5d, 0xb7, 0xb2, 0x9d, 0xfe, 0xad, 0x96, - 0xc5, 0x72, 0x04, 0xfa, 0x0c, 0x4e, 0x65, 0x77, 0x19, 0x48, 0x01, 0x1f, 0xc2, 0x18, 0x80, - 0xd6, 0xea, 0xfb, 0x99, 0xc0, 0x7b, 0xc4, 0xce, 0x13, 0x13, 0x27, 0x98, 0x22, 0x11, 0xe6, - 0xc8, 0x8b, 0x69, 0x9d, 0xa2, 0xac, 0x23, 0xe2, 0x2a, 0x8a, 0x2f, 0x83, 0x73, 0x0c, 0x7b, - 0x85, 0x4d, 0xdf, 0xe3, 0x4b, 0x53, 0xdf, 0x2e, 0x86, 0xab, 0x5b, 0xde, 0xf5, 0x99, 0x59, - 0xbf, 0xe9, 0x66, 0x29, 0xc8, 0xf4, 0xb2, 0x03, 0x31, 0x2d, 0x55, 0xfb, 0xdc, 0x3d, 0x86, - 0x37, 0xf2, 0x58, 0x71, 0xb2, 0x59, 0xf0, 0x62, 0xf2, 0x62, 0xbe, 0x70, 0x9f, 0xa6, 0x3e, - 0xa5, 0x77, 0xe8, 0xf1, 0xdd, 0x97, 0x7e, 0x49, 0x8b, 0x3d, 0xb1, 0xf2, 0x54, 0x16, 0x39, - 0x0d, 0x59, 0x3f, 0x6b, 0x39, 0x94, 0x5d, 0x96, 0x4c, 0xdf, 0x60, 0xf5, 0x5b, 0xf8, 0x50, - 0xd5, 0xbe, 0xa3, 0x1c, 0x4c, 0x54, 0x3b, 0xeb, 0xfc, 0x3f, 0x49, 0x3c, 0xa8, 0x08, 0x01, - 0x80, 0xeb, 0x6a, 0x84, 0x10, 0xbd, 0x3e, 0xf1, 0x27, 0xd2, 0x50, 0xa1, 0x94, 0x91, 0xd2, - 0x3d, 0x49, 0x09, 0xcb, 0xf1, 0xf2, 0xa3, 0xda, 0xe2, 0xb2, 0x75, 0x3a, 0x08, 0x22, 0xc4, - 0x0a, 0xe7, 0x66, 0xa7, 0xbf, 0xb5, 0x2c, 0x1a, 0x87, 0x18, 0x3e, 0xa3, 0xc5, 0x12, 0xe2, - 0xbd, 0xc8, 0x99, 0x19, 0x17, 0x23, 0x64, 0x6e, 0x5a, 0x64, 0x18, 0x34, 0x39, 0xb6, 0xe1, - 0x96, 0xb5, 0xcf, 0xd1, 0xf7, 0x9d, 0xec, 0x72, 0x13, 0x95, 0x7f, 0x50, 0xb9, 0x0b, 0xed, - 0x65, 0xba, 0xff, 0x28, 0x85, 0xc9, 0xab, 0xbc, 0xda, 0x63, 0xdc, 0x8a, 0x5a, 0xe6, 0x77, - 0xbc, 0x2c, 0x22, 0x7d, 0xd2, 0x00, 0xba, 0x18, 0xf8, 0x1c, 0x3b, 0xfb, 0xc3, 0xe4, 0x6f, - 0xb3, 0xdd, 0x77, 0x59, 0x95, 0x05, 0x57, 0x27, 0xd3, 0x1f, 0x33, 0x72, 0x49, 0xc4, 0xcf, - 0xbd, 0x05, 0x52, 0x65, 0xf3, 0xee, 0x3c, 0x27, 0x7e, 0xdd, 0x19, 0xf9, 0x1a, 0x5c, 0xc7, - 0xe8, 0x76, 0xf2, 0x70, 0x4e, 0x45, 0x11, 0x2c, 0x9e, 0x1e, 0x60, 0x4c, 0x23, 0xc4, 0x61, - 0x54, 0x86, 0x2a, 0xf4, 0xdc, 0xb2, 0x56, 0x68, 0x02, 0x59, 0x7b, 0xd8, 0x3d, 0x94, 0x37, - 0x2d, 0xdd, 0x20, 0x89, 0xaa, 0x90, 0x89, 0x9d, 0x6c, 0x81, 0x06, 0x41, 0x39, 0xd7, 0x7c, - 0x32, 0x99, 0xca, 0xb7, 0xd5, 0xa4, 0x19, 0xa3, 0xc3, 0x5e, 0xdd, 0x07, 0xe5, 0xde, 0x54, - 0xe3, 0x38, 0xb6, 0x76, 0x61, 0xc5, 0xd3, 0x64, 0xb7, 0x91, 0xe6, 0x8e, 0x8d, 0x6c, 0x7d, - 0xa6, 0x0f, 0xa8, 0x55, 0x8d, 0xd7, 0x58, 0xdd, 0x21, 0xac, 0xb8, 0xf0, 0x5e, 0x5f, 0x49, - 0x0b, 0xf0, 0xa1, 0x24, 0x13, 0xf2, 0xd9, 0x25, 0x25, 0x02, 0x09, 0xb7, 0xd2, 0x1a, 0x85, - 0xcc, 0x3e, 0x82, 0xf2, 0xf9, 0x5f, 0xee, 0xe7, 0x95, 0xa0, 0x34, 0xb8, 0x73, 0x86, 0xac, - 0x5e, 0xef, 0x55, 0x16, 0xb8, 0x1a, 0x49, 0x4a, 0xd6, 0x9e, 0x9b, 0x0c, 0x4b, 0xed, 0x6b, - 0x35, 0x12, 0x72, 0x53, 0x22, 0x2f, 0x91, 0xe4, 0x1f, 0x4c, 0x16, 0x2a, 0x7e, 0xb1, 0x0f, - 0x11, 0xe1, 0xcb, 0xd1, 0x11, 0xb4, 0x7a, 0x2b, 0xff, 0x1d, 0xc4, 0x57, 0x1e, 0xd7, 0x32, - 0x0c, 0x00, 0x32, 0x3f, 0x7c, 0xfb, 0x39, 0x7e, 0x30, 0x34, 0xc6, 0xe0, 0x64, 0x99, 0x2f, - 0x9e, 0x04, 0x30, 0x15, 0xb5, 0xef, 0x3c, 0x51, 0xa3, 0x0d, 0x44, 0x25, 0xe6, 0x7e, 0x97, - 0x70, 0x67, 0x06, 0xa1, 0xb6, 0x9e, 0xe3, 0xa4, 0xd2, 0x2b, 0x81, 0xb4, 0x24, 0x39, 0x1a, - 0x4a, 0x0c, 0xc8, 0x85, 0xaf, 0x15, 0x25, 0x64, 0x1d, 0x0b, 0xf4, 0x0d, 0x96, 0xb6, 0x50, - 0xd1, 0xe5, 0x01, 0x7e, 0x73, 0x59, 0xd3, 0x69, 0xc8, 0x8e, 0x48, 0x9b, 0xe2, 0xc6, 0x10, - 0x06, 0x6e, 0x25, 0xf9, 0x7b, 0x36, 0x4a, 0x56, 0xa2, 0x0a, 0xed, 0xd7, 0xe1, 0x1a, 0x58, - 0x30, 0x43, 0x4c, 0x3e, 0x38, 0x22, 0xdc, 0x66, 0xb1, 0xf6, 0x28, 0x84, 0xb2, 0xd6, 0x68, - 0x52, 0x9b, 0xee, 0xf3, 0x8d, 0xef, 0xdf, 0xe8, 0xd4, 0x99, 0xe0, 0x03, 0x51, 0x67, 0xa3, - 0x38, 0xf0, 0xff, 0x63, 0x3c, 0x4e, 0xf3, 0x8e, 0xb7, 0xcf, 0xb4, 0xbb, 0x37, 0x0a, 0xea, - 0xe5, 0x30, 0x58, 0x9a, 0xb0, 0xcb, 0x64, 0x2d, 0x7f, 0x04, 0xbf, 0xd3, 0xb8, 0xf2, 0x15, - 0xd1, 0x9e, 0x20, 0x6d, 0x7d, 0xd5, 0xfe, 0xc7, 0x87, 0xcc, 0xfe, 0xf1, 0x81, 0x74, 0x88, - 0x34, 0x6f, 0xba, 0x4d, 0xeb, 0x49, 0x72, 0xb2, 0x15, 0x37, 0x25, 0xab, 0xaa, 0xcd, 0x50, - 0x1a, 0xe1, 0x1e, 0xae, 0x18, 0x89, 0x56, 0x65, 0xba, 0x6b, 0x7a, 0x55, 0x07, 0x13, 0xfa, - 0xd3, 0x11, 0x51, 0x55, 0x3f, 0x30, 0x5b, 0x2a, 0x9e, 0x5a, 0x0c, 0x13, 0x21, 0x8d, 0x54, - 0x22, 0xe5, 0x6c, 0xbd, 0x96, 0x06, 0x22, 0xa5, 0x5e, 0x7a, 0xb2, 0x1f, 0x43, 0x4b, 0x4f, - 0xc5, 0x10, 0x0a, 0x7d, 0x08, 0xef, 0xed, 0xd8, 0xb5, 0x00, 0xc4, 0x03, 0x87, 0x11, 0xae, - 0x01, 0x63, 0x0c, 0x76, 0x11, 0x03, 0x25, 0x26, 0x18, 0x19, 0x39, 0x19, 0x52, 0x32, 0xaa, - 0x06, 0xe1, 0x88, 0xad, 0x09, 0x36, 0x15, 0xd8, 0xbf, 0xa9, 0xdb, 0x76, 0x71, 0x44, 0x23, - 0x0e, 0x20, 0xa2, 0x39, 0x01, 0x06, 0xd0, 0xd1, 0xa1, 0x71, 0x26, 0xf8, 0x90, 0x8e, 0x22, - 0xef, 0xb7, 0x02, 0x59, 0x60, 0x26, 0x17, 0xf8, 0xee, 0x0b, 0xe1, 0x2f, 0xbd, 0x29, 0x84, - 0xa5, 0xf5, 0x2f, 0xaf, 0x2f, 0x34, 0x00, 0x92, 0x53, 0x99, 0xd1, 0xb8, 0x20, 0x08, 0xec, - 0xda, 0xae, 0x1c, 0x3e, 0xa7, 0x36, 0xe1, 0xd2, 0x28, 0xee, 0x6e, 0x94, 0x5a, 0x80, 0x02, - 0xac, 0x71, 0xcb, 0x6a, 0xab, 0x34, 0x15, 0xb0, 0x59, 0x41, 0xe8, 0xe8, 0x84, 0x43, 0x0f, - 0xca, 0xa8, 0xdf, 0xd3, 0x7c, 0x3d, 0xcc, 0x81, 0xb8, 0x94, 0x5f, 0x86, 0xcd, 0x52, 0x4a, - 0xe2, 0x36, 0x1b, 0xa1, 0x98, 0xdf, 0x3c, 0x75, 0x5b, 0x12, 0x37, 0x84, 0xc0, 0xf3, 0xbf, - 0xf2, 0x31, 0x9a, 0x64, 0xff, 0xfc, 0xf3, 0x2c, 0x1a, 0x4c, 0x11, 0x6a, 0x43, 0x48, 0xb5, - 0x4b, 0x3d, 0xac, 0x6c, 0xa3, 0x8e, 0xdb, 0x1d, 0xa4, 0x2c, 0x42, 0x06, 0x31, 0xa7, 0x51, - 0xcb, 0xe2, 0x88, 0xaa, 0x9d, 0xd7, 0xc2, 0x08, 0x73, 0xbc, 0x58, 0x0e, 0x79, 0x4a, 0x75, - 0x9b, 0x9c, 0xe4, 0xbf, 0x36, 0x85, 0x49, 0x03, 0xf6, 0x91, 0x43, 0x21, 0xb0, 0xc2, 0xc3, - 0x11, 0x2c, 0x68, 0x30, 0x4b, 0x10, 0xdf, 0x17, 0xf4, 0xb8, 0x1d, 0x17, 0x25, 0x5f, 0x17, - 0x2d, 0x96, 0x69, 0x8d, 0x7f, 0x98, 0xcc, 0xdc, 0x3a, 0xc8, 0x52, 0x0d, 0x8d, 0x6e, 0x06, - 0xce, 0x05, 0xca, 0xb3, 0xa7, 0xe2, 0x23, 0x1e, 0x46, 0xe5, 0xc9, 0xa0, 0x3e, 0x9e, 0xd3, - 0xa2, 0x95, 0x0d, 0x4a, 0x5b, 0xf8, 0x99, 0x54, 0xf0, 0xd6, 0x4e, 0x3a, 0x78, 0x4b, 0xf6, - 0x64, 0x58, 0x4d, 0x93, 0x6e, 0xed, 0x4c, 0xa4, 0xe3, 0x11, 0xf3, 0x85, 0x22, 0xd6, 0x05, - 0x95, 0x5d, 0x9b, 0x70, 0xfe, 0x61, 0x5c, 0xb9, 0x39, 0x0a, 0xd9, 0x33, 0x0f, 0x46, 0x0b, - 0x42, 0x8d, 0x39, 0x2b, 0xc4, 0x5e, 0x95, 0x68, 0x4f, 0x68, 0x00, 0x24, 0x31, 0xc9, 0x0a, - 0xe9, 0x38, 0x86, 0x21, 0x13, 0x10, 0xe7, 0x75, 0x48, 0x07, 0xb2, 0xa1, 0x26, 0x6a, 0xbd, - 0x45, 0x63, 0x09, 0xa4, 0x2e, 0xda, 0x9d, 0x76, 0xed, 0xbe, 0xd2, 0x7e, 0xee, 0x01, 0x89, - 0x1e, 0x12, 0x41, 0x4e, 0x54, 0xd2, 0xc8, 0x6a, 0xc1, 0xf4, 0xd4, 0xe1, 0x48, 0x3d, 0x85, - 0xc4, 0x64, 0xae, 0xa4, 0xeb, 0x83, 0x54, 0x9c, 0x6a, 0x6c, 0x4a, 0xb9, 0xf4, 0x42, 0x03, - 0x9b, 0xfe, 0x42, 0x5d, 0x14, 0x07, 0xdb, 0xae, 0xf4, 0x15, 0x11, 0x85, 0x17, 0xd9, 0x70, - 0x09, 0xa7, 0x19, 0x62, 0xef, 0x65, 0x5f, 0xec, 0x22, 0xfa, 0xcd, 0x3e, 0x55, 0x6f, 0x83, - 0xf8, 0x2e, 0x31, 0xbf, 0xcf, 0xd4, 0xa6, 0x35, 0x7f, 0xde, 0xdc, 0x09, 0xab, 0x2d, 0x13, - 0xd8, 0xfc, 0x94, 0x85, 0x3b, 0x04, 0x75, 0x5e, 0xcb, 0x7f, 0x06, 0xa9, 0xfd, 0xdf, 0xca, - 0xd1, 0x96, 0x32, 0xc4, 0x94, 0xe7, 0x46, 0x3f, 0x8c, 0xe4, 0xfd, 0x9f, 0xe0, 0xca, 0xaf, - 0x9e, 0xa2, 0xa9, 0x99, 0x22, 0xe1, 0x13, 0x6f, 0x30, 0x65, 0xdd, 0x8e, 0x0a, 0xc9, 0xef, - 0x25, 0x39, 0x58, 0x8a, 0x76, 0x0b, 0x9c, 0xcb, 0xea, 0x64, 0x7d, 0xda, 0x28, 0x0f, 0xac, - 0x68, 0x24, 0x60, 0x6b, 0x8b, 0x12, 0x78, 0xcc, 0x19, 0xe3, 0x87, 0x48, 0x50, 0x02, 0xb0, - 0x52, 0xdd, 0xb4, 0x47, 0xa0, 0xf8, 0x0d, 0xe0, 0x35, 0x3b, 0x17, 0xc4, 0xf1, 0x68, 0xe5, - 0x5d, 0x47, 0x68, 0xbc, 0x34, 0x7c, 0x4e, 0x98, 0xf0, 0x64, 0x28, 0xbb, 0x10, 0x3b, 0x3f, - 0xbf, 0x3d, 0x07, 0x23, 0xdc, 0x59, 0xa5, 0xdc, 0x91, 0xc1, 0x0b, 0x1a, 0xb8, 0x56, 0x93, - 0x58, 0x68, 0x14, 0xc4, 0x30, 0x27, 0x16, 0x4a, 0x3a, 0x64, 0x5e, 0xad, 0x75, 0xd5, 0x94, - 0x79, 0xe4, 0xf5, 0x88, 0x62, 0x9c, 0x3e, 0xac, 0xea, 0xb3, 0x0b, 0x2b, 0x1f, 0x07, 0x57, - 0xe9, 0xeb, 0x2e, 0x4c, 0x51, 0x83, 0x5c, 0xcf, 0x35, 0x68, 0x32, 0x61, 0x34, 0xf7, 0xe3, - 0x0f, 0xfb, 0x7b, 0x4e, 0x32, 0x79, 0x51, 0x95, 0x78, 0xdc, 0x00, 0x23, 0xa6, 0xfe, 0xb8, - 0x49, 0x01, 0x40, 0xd0, 0xd3, 0x66, 0x6d, 0xd9, 0xf0, 0x08, 0xa1, 0xa7, 0xa9, 0x79, 0x72, - 0x84, 0x57, 0x2e, 0xf9, 0x0d, 0x20, 0x26, 0xe5, 0x78, 0x60, 0xc1, 0x0f, 0xe0, 0x28, 0x8f, - 0xa7, 0x0d, 0xb7, 0x85, 0x53, 0x2a, 0x3f, 0x85, 0x1d, 0xdb, 0x3b, 0x50, 0x3a, 0x29, 0x38, - 0x9e, 0xd2, 0x80, 0x14, 0xee, 0xa1, 0x5a, 0x83, 0xe8, 0x0c, 0x6f, 0x63, 0xe2, 0x4a, 0x5a, - 0x84, 0x36, 0x84, 0x87, 0x19, 0x8f, 0x6c, 0xaf, 0x88, 0xd6, 0xc4, 0x67, 0x2e, 0xbf, 0x18, - 0x7f, 0x32, 0xe0, 0x53, 0x2b, 0x8c, 0x60, 0xdf, 0xee, 0xd7, 0x87, 0xb6, 0xe6, 0x62, 0xaa, - 0x43, 0x73, 0x92, 0x8c, 0xce, 0x98, 0x0a, 0x65, 0x5d, 0xd4, 0x1c, 0x31, 0x3c, 0x37, 0xdc, - 0x99, 0x1a, 0x4a, 0xa4, 0xc9, 0x86, 0xd1, 0xe8, 0x57, 0xcc, 0x07, 0x79, 0xa7, 0xe8, 0x21, - 0x09, 0x29, 0x17, 0x50, 0xe1, 0x51, 0x81, 0x04, 0xc0, 0x30, 0xcc, 0x90, 0x43, 0x0a, 0xf4, - 0x24, 0xbf, 0x22, 0x66, 0x5f, 0xd8, 0xe2, 0x20, 0x22, 0x69, 0x7d, 0x8e, 0xeb, 0x0b, 0xe2, - 0xea, 0x9b, 0x93, 0x94, 0xb7, 0xd2, 0x63, 0x2e, 0xe2, 0xa7, 0x25, 0x3e, 0x61, 0x02, 0x98, - 0xde, 0x66, 0x9c, 0xf1, 0xf3, 0x9c, 0xcb, 0xd9, 0x2c, 0x98, 0x03, 0x70, 0x74, 0x6c, 0xa0, - 0x97, 0xd5, 0x35, 0xcb, 0x9f, 0xf5, 0x57, 0x98, 0xbb, 0xc1, 0xdc, 0x34, 0x74, 0xff, 0xd8, - 0xea, 0x58, 0xa2, 0x43, 0x45, 0xd2, 0xa4, 0xe3, 0x78, 0x0f, 0x28, 0xf0, 0xee, 0x85, 0xf1, - 0xc9, 0x55, 0x52, 0x86, 0x6e, 0x29, 0xe1, 0x50, 0xbf, 0x7c, 0xb1, 0xff, 0x1a, 0x95, 0xa5, - 0xc5, 0xad, 0xf9, 0xd8, 0xba, 0x6e, 0xab, 0x43, 0x3f, 0xae, 0xa2, 0x97, 0xa1, 0x51, 0x0c, - 0x82, 0xae, 0x07, 0xc9, 0xda, 0xfe, 0xc9, 0x6a, 0x2d, 0xfa, 0x83, 0xaa, 0x53, 0xcd, 0x31, - 0x2f, 0x6d, 0x70, 0x40, 0x19, 0x37, 0xd4, 0xff, 0xc3, 0x32, 0xd6, 0x4b, 0x46, 0x23, 0x79, - 0xd9, 0x90, 0x0d, 0x70, 0x42, 0x03, 0x9b, 0x93, 0xe6, 0xc1, 0xdf, 0x02, 0x08, 0xf8, 0x72, - 0x45, 0xe9, 0x91, 0xc6, 0x7e, 0x29, 0x30, 0x56, 0xfe, 0x2e, 0x21, 0x1f, 0x34, 0xc3, 0x41, - 0x2f, 0x79, 0x47, 0xe0, 0x02, 0x9c, 0x53, 0xb3, 0x13, 0xf8, 0x5d, 0xb0, 0xd0, 0xe0, 0x0f, - 0x75, 0x8a, 0x26, 0xdf, 0x1f, 0xad, 0x22, 0xe9, 0xbd, 0x11, 0x81, 0x98, 0xb3, 0x58, 0x99, - 0x99, 0xd3, 0x19, 0x5f, 0x01, 0xa4, 0x5c, 0x6f, 0xa0, 0x9c, 0xb1, 0x5d, 0xfe, 0xfe, 0xbf, - 0x9e, 0x48, 0x44, 0xd0, 0x71, 0x24, 0x86, 0xe4, 0xaa, 0xd5, 0x59, 0x5a, 0xaa, 0x0f, 0xa5, - 0x11, 0xb4, 0xf4, 0x00, 0x43, 0x44, 0x59, 0xf1, 0x95, 0x62, 0x0e, 0x8f, 0x07, 0x51, 0xd3, - 0x66, 0x1a, 0x20, 0xb1, 0xab, 0x36, 0x3e, 0x10, 0x12, 0xae, 0xe0, 0xa2, 0x05, 0xe7, 0x7c, - 0xd5, 0x34, 0xcd, 0x86, 0x43, 0xb0, 0x29, 0xc3, 0xfc, 0xcb, 0x9b, 0x39, 0xf5, 0x1e, 0x2f, - 0x13, 0x1b, 0xfa, 0x4f, 0x68, 0xe3, 0x41, 0x99, 0x05, 0xfd, 0xa1, 0x10, 0x5a, 0x65, 0x13, - 0xc3, 0xc7, 0xc1, 0xc8, 0x83, 0xfa, 0x5e, 0x5b, 0xa6, 0x76, 0x03, 0xc3, 0x21, 0x23, 0x56, - 0xb4, 0x9a, 0x89, 0xdb, 0xa5, 0xa4, 0xb1, 0x9e, 0xe7, 0x85, 0xe6, 0x20, 0x11, 0x71, 0x59, - 0x81, 0x19, 0x9f, 0xef, 0xac, 0xd2, 0x6f, 0x5e, 0x26, 0x3f, 0x7d, 0x33, 0x08, 0xa3, 0x28, - 0x3f, 0x75, 0x6a, 0x25, 0xe7, 0xb3, 0x78, 0xe9, 0x46, 0x46, 0x4f, 0xb0, 0xab, 0x48, 0x03, - 0x8a, 0xca, 0xa7, 0x42, 0x57, 0x6b, 0xa5, 0x0f, 0x4e, 0x6f, 0xf1, 0x1b, 0x0d, 0x6b, 0xa9, - 0x8e, 0x21, 0xb7, 0x96, 0x22, 0xba, 0xc6, 0xac, 0xa4, 0xb8, 0x58, 0x07, 0xf1, 0x0c, 0x1a, - 0x5b, 0x0e, 0x42, 0x49, 0x10, 0xeb, 0x91, 0x2b, 0x2a, 0xdd, 0xef, 0x08, 0x32, 0x7e, 0x5d, - 0xaf, 0x32, 0x1b, 0x29, 0xa6, 0x17, 0x92, 0x46, 0x1a, 0x7b, 0x32, 0xcc, 0x5f, 0x9f, 0xd7, - 0xf4, 0x52, 0x68, 0x35, 0x47, 0x7a, 0xeb, 0xc1, 0x20, 0xf9, 0xe4, 0x6f, 0xa0, 0xc5, 0x0f, - 0x61, 0x82, 0xc0, 0xa0, 0xb5, 0xa3, 0x12, 0x5c, 0xa8, 0xbd, 0xa2, 0x9a, 0xb8, 0x0b, 0xd5, - 0xda, 0x4e, 0xe5, 0xaf, 0x94, 0x24, 0x53, 0x34, 0xc9, 0xed, 0x57, 0xa7, 0xb0, 0x3b, 0x5e, - 0xd2, 0x58, 0x89, 0xe8, 0xb0, 0x62, 0xf4, 0x2d, 0xec, 0xd3, 0x63, 0x73, 0x46, 0xf8, 0x15, - 0xc9, 0xc4, 0xab, 0xa9, 0x33, 0x57, 0x1d, 0x11, 0x4b, 0xc5, 0xde, 0xd0, 0x9f, 0x17, 0xdc, - 0x5d, 0x77, 0xe8, 0x58, 0x23, 0xd9, 0x0d, 0x43, 0xbf, 0x36, 0x8f, 0x04, 0x8f, 0xb9, 0xa2, - 0x8b, 0xf3, 0x2b, 0xb2, 0x8c, 0x54, 0x43, 0xf4, 0xba, 0xb4, 0x11, 0x68, 0x90, 0x6d, 0xd0, - 0x8e, 0xe2, 0x7d, 0xa9, 0x75, 0xaf, 0x71, 0xcf, 0xb1, 0xdb, 0x85, 0xc7, 0xda, 0x61, 0x1a, - 0x4e, 0xaa, 0xd0, 0xa5, 0xd0, 0x42, 0x5e, 0x7a, 0x96, 0x24, 0x05, 0x1e, 0x00, 0x90, 0x04, - 0x42, 0x5b, 0x45, 0xbc, 0xe5, 0x61, 0xe6, 0xf1, 0x44, 0x79, 0x91, 0x21, 0x0d, 0x9d, 0xa9, - 0x0e, 0x99, 0x39, 0xf6, 0x29, 0x0d, 0xe2, 0x91, 0x78, 0x38, 0x49, 0x87, 0x89, 0x97, 0x25, - 0x17, 0x53, 0x25, 0x25, 0x2e, 0x6c, 0xf5, 0x5c, 0xec, 0x19, 0xe3, 0x0e, 0x7b, 0x30, 0xb7, - 0x7d, 0xbd, 0xb6, 0x77, 0x93, 0xc9, 0x3b, 0xd9, 0x97, 0xc3, 0x46, 0x51, 0x61, 0x3c, 0x50, - 0x4f, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x14, 0x15, 0xf5, 0x6a, 0x02, 0x90, 0xcb, 0x82, 0x93, 0x52, 0xa0, 0x05, 0x3f, 0x31, 0x73, + 0xd9, 0x9e, 0xc2, 0xa6, 0x07, 0xca, 0x29, 0x82, 0x02, 0x76, 0xab, 0xa6, 0x02, 0x0e, 0x29, + 0xc0, 0x2f, 0x5b, 0xb0, 0xa2, 0xb8, 0x0a, 0x56, 0xb3, 0x87, 0xa5, 0x75, 0x52, 0x9e, 0x00, + 0x08, 0x55, 0x46, 0xa1, 0x30, 0x43, 0x8f, 0x1c, 0x0b, 0x63, 0x32, 0x1e, 0xf9, 0x33, 0x08, + 0x6f, 0xbc, 0x80, 0x2a, 0x24, 0xc8, 0xe2, 0x33, 0x2c, 0xae, 0xab, 0xe6, 0x83, 0x7c, 0xdd, + 0x5b, 0xc3, 0xa2, 0x21, 0x33, 0x0b, 0x60, 0x2e, 0x17, 0x2f, 0xb7, 0x12, 0x08, 0x4e, 0xb4, + 0xa5, 0xea, 0x67, 0x4d, 0xc6, 0x96, 0xf2, 0xc9, 0x15, 0x23, 0x7c, 0x89, 0xce, 0xc9, 0x83, + 0xae, 0x15, 0x9a, 0xe8, 0x39, 0xca, 0x48, 0x05, 0x29, 0xa6, 0x63, 0x94, 0x4e, 0xe1, 0x1a, + 0xd8, 0x09, 0x52, 0xf3, 0x8a, 0xf4, 0xe6, 0x3b, 0x35, 0x3d, 0xbc, 0x0a, 0xf1, 0xae, 0xa4, + 0x1f, 0x7b, 0x57, 0xe5, 0xbe, 0xe6, 0x8d, 0x35, 0xf9, 0x09, 0x94, 0x14, 0x3a, 0x28, 0x21, + 0xf6, 0x0d, 0x3f, 0xce, 0xa7, 0x2f, 0xa5, 0xf9, 0xd6, 0x1c, 0x5c, 0xd2, 0x0d, 0x76, 0x9f, + 0xb8, 0x13, 0xf5, 0x27, 0x1c, 0x32, 0x72, 0xe5, 0x52, 0x8d, 0x97, 0x12, 0xdd, 0x02, 0x3a, + 0x34, 0x55, 0x0f, 0x23, 0x9b, 0x1c, 0x4a, 0x5b, 0xf8, 0x91, 0x9a, 0xe0, 0xb8, 0xed, 0xf0, + 0xf1, 0xae, 0xb8, 0x40, 0xbb, 0xb3, 0xd5, 0xcf, 0x5f, 0x5a, 0x2b, 0x41, 0x5d, 0xb9, 0xbc, + 0xe4, 0xe8, 0x7a, 0xaa, 0xa3, 0x79, 0x68, 0x46, 0x89, 0x69, 0xbf, 0x8a, 0x8f, 0xf2, 0xbc, + 0x5c, 0xe8, 0xd1, 0x5c, 0x3d, 0x60, 0x4e, 0x24, 0xef, 0x31, 0x5f, 0xe1, 0xf5, 0x7f, 0xa3, + 0xbc, 0x05, 0xce, 0xcc, 0x90, 0x2f, 0xcb, 0xe9, 0x33, 0x40, 0x93, 0xb5, 0xa9, 0x63, 0xb8, + 0x6f, 0xc8, 0x8b, 0x8a, 0x79, 0x7f, 0x2f, 0xd1, 0x8d, 0x14, 0xd4, 0x21, 0x22, 0xd6, 0x6d, + 0x33, 0x77, 0xfe, 0xc2, 0x73, 0x14, 0x96, 0x01, 0x00, 0x41, 0x20, 0xff, 0x10, 0xc5, 0xa7, + 0xbc, 0xaa, 0xdc, 0x22, 0xf1, 0x93, 0xa4, 0x99, 0xc8, 0x8f, 0x3a, 0xd5, 0xb5, 0xee, 0xaf, + 0xf2, 0x76, 0x5c, 0x28, 0xb7, 0x36, 0x61, 0x33, 0x34, 0x35, 0xa4, 0x80, 0x16, 0x4e, 0x6d, + 0x84, 0x69, 0x5d, 0x82, 0x58, 0x16, 0xcc, 0xca, 0x01, 0x35, 0x0b, 0x3f, 0x87, 0x73, 0x84, + 0x69, 0x0f, 0xc4, 0x7a, 0xb5, 0x3b, 0x8a, 0xad, 0x4c, 0x5c, 0xf9, 0x4b, 0xfa, 0xe1, 0x00, + 0x33, 0xd7, 0xb0, 0x54, 0x19, 0xf1, 0x69, 0x7b, 0x41, 0x31, 0x4d, 0x95, 0x75, 0xab, 0x04, + 0x28, 0xe8, 0x9f, 0x05, 0x6a, 0x67, 0xc8, 0x4f, 0x75, 0x15, 0x26, 0x4e, 0xae, 0x37, 0x9c, + 0x59, 0x89, 0x3b, 0x5e, 0x08, 0x83, 0xa4, 0xd1, 0x61, 0x06, 0xec, 0x60, 0x70, 0xef, 0x1c, + 0xdf, 0x8b, 0x50, 0xe5, 0x08, 0xf3, 0x90, 0xc9, 0x11, 0xc7, 0x19, 0xdc, 0xb6, 0xd1, 0x32, + 0x14, 0x0c, 0xb4, 0xf7, 0xa0, 0xf8, 0xf8, 0x50, 0x45, 0x40, 0xd7, 0xd8, 0xef, 0x5f, 0xa0, + 0xfa, 0xc6, 0xf4, 0xc3, 0x46, 0x4c, 0x02, 0xcf, 0x06, 0x30, 0x81, 0x0f, 0xd1, 0x6c, 0xd3, + 0x01, 0x75, 0x7e, 0xa2, 0xa6, 0x17, 0x76, 0x8a, 0x00, 0xac, 0xc5, 0x3c, 0xd6, 0xea, 0x2d, + 0x9e, 0xff, 0xc7, 0x31, 0xa4, 0x1d, 0x9d, 0x7d, 0xf3, 0xa0, 0xf6, 0x60, 0x04, 0xb8, 0x83, + 0xe8, 0xc6, 0xea, 0xb8, 0x5f, 0x15, 0xa4, 0xf5, 0xa7, 0xfb, 0x49, 0x02, 0x7e, 0x53, 0xb0, + 0x5d, 0x90, 0xfc, 0x59, 0x8e, 0x0a, 0xc0, 0x03, 0xa6, 0x52, 0xdc, 0x92, 0x42, 0xf5, 0x37, + 0xfd, 0x76, 0xd7, 0x3d, 0x34, 0xee, 0x12, 0x31, 0xf4, 0x06, 0x0b, 0x25, 0x4b, 0xd0, 0x49, + 0x57, 0x3e, 0xbf, 0xa9, 0x86, 0x59, 0xa4, 0x0d, 0x00, 0x4e, 0x42, 0x84, 0x8c, 0x38, 0x3a, + 0xad, 0x6b, 0x8c, 0xe4, 0x24, 0xe9, 0xb8, 0x02, 0x66, 0xdb, 0x51, 0xba, 0x39, 0xaa, 0xf6, + 0xb5, 0xea, 0xd6, 0xc8, 0x69, 0x7f, 0xd6, 0x5c, 0xba, 0x7e, 0x4b, 0x2e, 0xdf, 0x53, 0xd1, + 0xf7, 0xb6, 0xf5, 0xb6, 0x36, 0x7d, 0x9e, 0x7e, 0xfa, 0x3e, 0x79, 0x80, 0xd2, 0x9d, 0x67, + 0xa0, 0xa1, 0x36, 0x84, 0x8b, 0x08, 0xdd, 0x25, 0x8d, 0x9b, 0xfc, 0x13, 0x04, 0xd0, 0xd7, + 0xf9, 0x84, 0x5f, 0xdd, 0xce, 0x07, 0x2f, 0x4d, 0x51, 0x88, 0xed, 0x3b, 0xda, 0x7c, 0x9c, + 0x30, 0x82, 0x65, 0x9b, 0xfb, 0xa9, 0x1f, 0xd5, 0x62, 0x10, 0x6e, 0x4d, 0x0f, 0xe8, 0xcc, + 0x19, 0x6f, 0xae, 0x5f, 0xe0, 0x54, 0x81, 0xf3, 0x66, 0xd1, 0x7a, 0xc5, 0xa5, 0xd1, 0x29, + 0x52, 0xfa, 0x42, 0x06, 0x77, 0x78, 0xd9, 0x21, 0x01, 0xdb, 0x05, 0xbc, 0xea, 0x16, 0x11, + 0x8f, 0x4b, 0x15, 0xbc, 0x5f, 0xb6, 0x0c, 0xb2, 0xce, 0x9a, 0x2d, 0x32, 0xbe, 0xe6, 0xe3, + 0xdc, 0x04, 0x1f, 0x0f, 0xe9, 0x8e, 0x68, 0x3e, 0x09, 0x36, 0x7e, 0x83, 0xa8, 0xb0, 0x3b, + 0xa1, 0x87, 0xba, 0x2a, 0x28, 0xc5, 0x7a, 0xfb, 0x4f, 0x59, 0x67, 0x52, 0xfd, 0x8e, 0x1b, + 0x8f, 0xae, 0x46, 0xae, 0x69, 0x1e, 0xd8, 0x9c, 0xc4, 0x75, 0xce, 0x9c, 0xf8, 0x39, 0x46, + 0x7c, 0x0b, 0x27, 0x3e, 0x44, 0xb1, 0xd4, 0xdd, 0xe8, 0xf1, 0x96, 0x6c, 0x97, 0xb8, 0x9d, + 0xd5, 0x33, 0xb0, 0xcd, 0xea, 0x2a, 0x84, 0x19, 0xcd, 0x71, 0x6f, 0xb9, 0xc2, 0xfe, 0x40, + 0x24, 0x54, 0x34, 0xb5, 0x4a, 0x7e, 0x41, 0xb2, 0x9b, 0x31, 0x19, 0x1a, 0xb6, 0x15, 0x90, + 0xf5, 0x68, 0xd2, 0xa1, 0xd0, 0x0f, 0x87, 0xfb, 0x32, 0x7a, 0xc2, 0x4e, 0xfa, 0x2c, 0x86, + 0xe6, 0x69, 0xf8, 0x67, 0xfc, 0x1c, 0xd2, 0x79, 0xc9, 0x98, 0x15, 0xd7, 0x35, 0x18, 0x90, + 0xd8, 0x73, 0x2d, 0x43, 0xf8, 0x17, 0x4a, 0x72, 0x0a, 0xb5, 0x9f, 0x05, 0x13, 0xa1, 0x14, + 0x5d, 0x35, 0xfc, 0x8e, 0xf8, 0xe9, 0x69, 0xc8, 0x0f, 0xa7, 0xc0, 0xc2, 0x5d, 0x97, 0xd0, + 0x40, 0x92, 0x03, 0xc8, 0x66, 0xf1, 0x70, 0xac, 0xe4, 0xab, 0x21, 0x04, 0x0c, 0xa9, 0x8e, + 0x7d, 0xf2, 0x56, 0xa5, 0x80, 0x5a, 0xaa, 0x6a, 0x0e, 0xba, 0x8b, 0x9e, 0xab, 0x1e, 0xd3, + 0x9d, 0x26, 0x97, 0x4f, 0xc2, 0x55, 0x87, 0xd6, 0xdc, 0x5e, 0xc6, 0x76, 0x2a, 0xc8, 0x71, + 0x12, 0xaa, 0x9a, 0xf5, 0x54, 0x64, 0x1f, 0x61, 0x4e, 0x5d, 0xa8, 0xd8, 0x32, 0x31, 0x72, + 0xbe, 0x5e, 0x99, 0x5a, 0x0e, 0xfb, 0xaa, 0xc6, 0x7e, 0xd9, 0xc9, 0x8d, 0xfd, 0xaa, 0x79, + 0xca, 0x33, 0xdd, 0x78, 0xc6, 0xbd, 0x3b, 0xa3, 0xdd, 0xdc, 0x03, 0xd9, 0x17, 0x6b, 0x96, + 0xbd, 0xe2, 0x10, 0x78, 0xa6, 0xf5, 0x47, 0xd8, 0x13, 0x83, 0x39, 0x3c, 0x5b, 0xe7, 0x3a, + 0x2b, 0x4a, 0x70, 0xc0, 0x99, 0x0d, 0x34, 0xdd, 0x91, 0x42, 0x94, 0x30, 0x98, 0x49, 0x90, + 0xdf, 0x86, 0x04, 0x5c, 0x0c, 0xc9, 0x2a, 0x0b, 0x4d, 0x20, 0x80, 0xdb, 0x5c, 0x4a, 0x2d, + 0xfe, 0x43, 0x16, 0x43, 0x51, 0xc4, 0x19, 0xff, 0xb0, 0x54, 0x82, 0xd7, 0xa8, 0xc0, 0xfc, + 0x17, 0x04, 0x26, 0x97, 0x00, 0x54, 0xf0, 0xd8, 0xe3, 0x20, 0xf9, 0xaf, 0x0d, 0xd7, 0xdd, + 0x3a, 0x67, 0xa2, 0xf9, 0x0e, 0xca, 0xdc, 0x31, 0x32, 0x71, 0x59, 0xbf, 0x15, 0xb3, 0x79, + 0xbe, 0xf0, 0x1e, 0xf2, 0x3d, 0xa1, 0xfc, 0x69, 0xee, 0x8b, 0x94, 0x4e, 0xf8, 0x28, 0x70, + 0xa7, 0x22, 0x2b, 0xe1, 0x79, 0xf1, 0x8c, 0x69, 0x57, 0xc1, 0xba, 0x2b, 0x44, 0xa0, 0xe0, + 0x0e, 0x5d, 0xa8, 0x3b, 0xa8, 0xfb, 0x4a, 0x7c, 0x8a, 0x38, 0x9e, 0x02, 0xf8, 0xff, 0x63, + 0xab, 0xa8, 0x48, 0x54, 0xe2, 0xe5, 0x0f, 0xdc, 0x95, 0xd9, 0xc4, 0x5a, 0x7a, 0x6b, 0x44, + 0xb8, 0x6d, 0xde, 0x4a, 0x97, 0x93, 0x6e, 0x32, 0xa2, 0x77, 0x37, 0x4c, 0xd3, 0xee, 0xe9, + 0x70, 0xa1, 0xfd, 0xfc, 0x5c, 0xd0, 0xc9, 0x1c, 0xac, 0xe3, 0x06, 0xd8, 0x82, 0xd6, 0x70, + 0xd8, 0x4a, 0x59, 0x32, 0x5a, 0x24, 0x67, 0x57, 0xe5, 0x66, 0x9e, 0x5a, 0xc3, 0x17, 0x29, + 0x19, 0xb5, 0xb6, 0x1a, 0x88, 0x3b, 0xe7, 0x3e, 0x4b, 0x9c, 0x1d, 0x79, 0xe8, 0x55, 0x94, + 0xb2, 0xe3, 0xdc, 0xd1, 0x4a, 0x1e, 0x40, 0xf0, 0x5e, 0xfa, 0x08, 0x4d, 0x4a, 0xbb, 0xa3, + 0xa7, 0x09, 0x80, 0xa7, 0xfb, 0xb7, 0x6e, 0x51, 0x51, 0xad, 0x58, 0x2a, 0xb2, 0x39, 0x32, + 0x7a, 0xf0, 0x7f, 0xe1, 0xf7, 0xfb, 0x10, 0x2d, 0x1c, 0xcc, 0x92, 0x6f, 0x83, 0x5c, 0xaa, + 0x3d, 0x63, 0xdc, 0xcd, 0xde, 0xc1, 0x99, 0xc7, 0xf5, 0xf4, 0x23, 0x83, 0xab, 0xff, 0xb9, + 0xed, 0x40, 0x83, 0x95, 0x37, 0xef, 0x45, 0x63, 0x75, 0x74, 0x68, 0xc0, 0xdb, 0x3e, 0xe6, + 0xbc, 0xe6, 0x14, 0x92, 0x9e, 0xa4, 0xbd, 0xa9, 0x8c, 0x41, 0x7e, 0xea, 0xc0, 0xeb, 0x4d, + 0xbf, 0xa1, 0x82, 0x2a, 0x10, 0x6f, 0x45, 0x6a, 0xc4, 0xb2, 0x70, 0x80, 0xf9, 0xe3, 0x3b, + 0x72, 0xb8, 0x45, 0xc8, 0xd1, 0x0a, 0xe4, 0xd7, 0xe7, 0x11, 0xf5, 0xf6, 0xeb, 0x68, 0x47, + 0xa6, 0xaf, 0x0b, 0xc9, 0x9f, 0xe2, 0xde, 0x97, 0x1b, 0x6b, 0xfd, 0x13, 0xa3, 0xf2, 0x39, + 0x21, 0x2e, 0xc8, 0x93, 0xf8, 0xed, 0xaa, 0x84, 0x44, 0xa0, 0x75, 0x78, 0xab, 0x9f, 0xb4, + 0x27, 0xd7, 0xa7, 0x35, 0x30, 0xa3, 0x13, 0xa6, 0xcc, 0xaa, 0xa6, 0xda, 0x16, 0x4d, 0xc2, + 0xc4, 0x1f, 0xde, 0xc0, 0xeb, 0x76, 0x7a, 0x8f, 0xb4, 0x35, 0x5b, 0x5c, 0xc4, 0x55, 0x29, + 0x51, 0xa3, 0x55, 0x8d, 0x88, 0xad, 0x89, 0x50, 0x55, 0x09, 0xaf, 0xbf, 0x6d, 0xf8, 0x1b, + 0xaa, 0x3b, 0x6d, 0xb7, 0xff, 0x5e, 0x83, 0x49, 0x09, 0xa6, 0xf8, 0x0e, 0x0b, 0xc8, 0x45, + 0x13, 0xc8, 0xfe, 0x39, 0x61, 0x99, 0xfa, 0x84, 0x32, 0x05, 0x68, 0x2f, 0x78, 0x17, 0x41, + 0x44, 0x04, 0x99, 0x75, 0x12, 0x89, 0x59, 0x2a, 0x73, 0x86, 0x04, 0x29, 0xcc, 0x18, 0x53, + 0x90, 0x62, 0xd2, 0xb9, 0x1f, 0x03, 0xaf, 0xe1, 0x86, 0x40, 0xb8, 0x92, 0xb9, 0x19, 0x3f, + 0x1c, 0xf5, 0xc4, 0xb0, 0x10, 0x9c, 0x7d, 0xf8, 0x95, 0x18, 0xc5, 0x6d, 0x71, 0xa4, 0xa8, + 0x0d, 0xc1, 0xaf, 0xfa, 0x9f, 0x8c, 0x0b, 0x84, 0xc0, 0x73, 0x5e, 0x06, 0x9d, 0x68, 0xfc, + 0xa5, 0xa4, 0xed, 0x9b, 0x2c, 0x8c, 0x9c, 0x2e, 0x4a, 0x1e, 0x3d, 0x10, 0xd3, 0xf5, 0x93, + 0xc1, 0x49, 0xc6, 0x0b, 0xae, 0x24, 0xac, 0x10, 0xf2, 0x43, 0x3e, 0xe9, 0x4b, 0x96, 0xfa, + 0x76, 0xb7, 0xdc, 0x43, 0x60, 0xa3, 0x78, 0x5b, 0x6c, 0x84, 0xf4, 0xe2, 0x1a, 0xf6, 0x84, + 0xbb, 0x46, 0x05, 0x13, 0xef, 0x05, 0x75, 0x94, 0x8a, 0xcf, 0xeb, 0x2f, 0x49, 0xb5, 0x64, + 0x5c, 0x32, 0x84, 0xc8, 0x93, 0xf5, 0x3f, 0x3f, 0x63, 0x2f, 0x39, 0x8f, 0x8f, 0x27, 0x21, + 0xc2, 0x0b, 0xd3, 0xe0, 0xff, 0x6f, 0x21, 0x93, 0xaa, 0x57, 0xf8, 0x57, 0x22, 0x07, 0x7b, + 0xbc, 0x55, 0x16, 0x43, 0x53, 0xd9, 0x65, 0x59, 0x28, 0x91, 0x18, 0x64, 0x67, 0xa1, 0xfc, + 0xb3, 0xf0, 0x58, 0x33, 0xf6, 0xcc, 0x30, 0x7a, 0x16, 0x8c, 0xef, 0x2e, 0x08, 0xe1, 0x55, + 0x5a, 0xda, 0xb3, 0x83, 0xd1, 0x9c, 0xcb, 0x8d, 0x33, 0x01, 0x4e, 0xbb, 0xd4, 0xcb, 0xb1, + 0xff, 0x19, 0xd8, 0x77, 0x9e, 0xec, 0xb1, 0xbf, 0xc6, 0x17, 0xe0, 0x35, 0x51, 0xd4, 0x42, + 0xf2, 0x6c, 0x41, 0x4e, 0x16, 0x60, 0x1c, 0x71, 0xb6, 0x49, 0xdf, 0xc8, 0xa4, 0xc6, 0x39, + 0x9a, 0xdc, 0x2b, 0x66, 0x9c, 0x88, 0xc8, 0xdb, 0xbe, 0x58, 0x36, 0xac, 0xee, 0x78, 0xf6, + 0x77, 0xf1, 0x58, 0xd3, 0x96, 0x74, 0x38, 0x52, 0xb1, 0xdf, 0x91, 0x82, 0x7c, 0x60, 0x6b, + 0x80, 0x10, 0xb3, 0xb1, 0xd4, 0xf2, 0x80, 0x42, 0xe0, 0x3f, 0x83, 0xfc, 0xcb, 0xb4, 0x32, + 0x3a, 0x34, 0x7b, 0x1a, 0x8a, 0xa2, 0xce, 0xf3, 0xd6, 0x9a, 0x4c, 0x96, 0x80, 0x02, 0xf6, + 0x21, 0xf3, 0xef, 0x84, 0xd0, 0x24, 0x3d, 0xc4, 0xf7, 0xac, 0xa6, 0x4b, 0x14, 0xab, 0x4f, + 0xb7, 0x0b, 0x0a, 0x37, 0x76, 0x52, 0x7b, 0xc8, 0x34, 0xa2, 0xf4, 0xad, 0x6b, 0xd1, 0x5f, + 0x37, 0xf3, 0x73, 0xe5, 0x56, 0x10, 0x7b, 0xac, 0x46, 0xd7, 0x9d, 0x54, 0x8c, 0x60, 0xbf, + 0x73, 0xc7, 0x74, 0x78, 0xa6, 0xb0, 0x51, 0xea, 0x7f, 0x6f, 0x39, 0x54, 0x8c, 0xb8, 0xa0, + 0x38, 0x65, 0x77, 0x9b, 0x1a, 0x94, 0x67, 0x00, 0x3f, 0xeb, 0xd8, 0x3e, 0x09, 0xb2, 0x09, + 0xba, 0x88, 0x77, 0xb0, 0x44, 0xf1, 0xa1, 0x43, 0x92, 0x07, 0x4e, 0xd7, 0x97, 0xcf, 0xc4, + 0xd2, 0xb7, 0xfc, 0x0b, 0x4f, 0x14, 0xdd, 0x38, 0xa4, 0x12, 0xa8, 0x4c, 0xcd, 0x91, 0x9f, + 0xd3, 0x75, 0xb0, 0xab, 0xf3, 0x25, 0x20, 0x51, 0xd1, 0xcf, 0x04, 0x33, 0xfd, 0xe0, 0x1c, + 0xf8, 0x57, 0x0b, 0x7f, 0x0d, 0x1a, 0x30, 0xe7, 0x24, 0xdb, 0xfd, 0xea, 0x13, 0x3d, 0xa6, + 0xff, 0x2f, 0x7a, 0xab, 0x50, 0xa9, 0x30, 0xf4, 0x76, 0xca, 0xcc, 0xf6, 0x27, 0x1d, 0x7e, + 0x1e, 0x97, 0xc9, 0xe6, 0x4d, 0x48, 0xa2, 0xb0, 0xb4, 0x15, 0xd5, 0xf5, 0xaa, 0x42, 0xce, + 0x90, 0xc5, 0x81, 0x43, 0xd3, 0x45, 0x64, 0xba, 0x18, 0x0b, 0xd2, 0xaa, 0x76, 0xcd, 0x5f, + 0x17, 0xb4, 0xae, 0xbe, 0x9d, 0x59, 0x51, 0x0a, 0x0c, 0x46, 0xdf, 0x4e, 0x82, 0xae, 0xa9, + 0x0f, 0xbb, 0x1b, 0xf7, 0x12, 0xc2, 0xf9, 0x89, 0x53, 0x05, 0x5f, 0xf4, 0x7b, 0x6f, 0x09, + 0xff, 0x8f, 0xd4, 0x8e, 0xfe, 0xae, 0xcd, 0x84, 0x40, 0xd7, 0xd6, 0x37, 0x47, 0xa2, 0x66, + 0x2a, 0x3b, 0x4b, 0x93, 0x92, 0xf4, 0xc2, 0x4a, 0xe4, 0x9c, 0xb7, 0xf9, 0x38, 0x29, 0x88, + 0x91, 0x6c, 0xe6, 0xb6, 0xa6, 0x99, 0x55, 0x93, 0xb6, 0xc5, 0xf1, 0x2c, 0x72, 0xbb, 0x6e, + 0xe3, 0xb9, 0x17, 0x8c, 0xfe, 0xf4, 0x9f, 0x3c, 0xdb, 0xcc, 0x67, 0x31, 0xfa, 0xfa, 0xbc, + 0xcf, 0x32, 0x49, 0xe5, 0x8b, 0xd5, 0xab, 0x3f, 0xde, 0x0a, 0x56, 0xbd, 0x12, 0xfe, 0x92, + 0xdf, 0x6e, 0xc1, 0xb3, 0x77, 0xcf, 0x1f, 0x1d, 0xc6, 0xef, 0xff, 0xe6, 0xd1, 0x34, 0xf5, + 0xa7, 0x78, 0x07, 0x20, 0xb3, 0xe6, 0xb1, 0x26, 0xb6, 0x9a, 0xb6, 0x03, 0x99, 0x07, 0x18, + 0xa5, 0xa9, 0xe2, 0xdd, 0x7b, 0x14, 0x15, 0x73, 0x26, 0x82, 0x17, 0xac, 0x22, 0xae, 0x94, + 0xfb, 0x63, 0x41, 0x51, 0xd1, 0x76, 0xbe, 0xdd, 0x19, 0x87, 0x1a, 0xe3, 0xcb, 0x97, 0x59, + 0xd4, 0xae, 0x08, 0xe3, 0x44, 0x1d, 0x0b, 0x49, 0x15, 0x8c, 0xde, 0xca, 0x19, 0xc7, 0xde, + 0x38, 0x2f, 0xe1, 0x94, 0xe4, 0x5d, 0x6c, 0x73, 0xbd, 0xbb, 0x48, 0x23, 0x7d, 0x09, 0xb0, + 0x24, 0x40, 0x38, 0x98, 0xfe, 0xbd, 0x3b, 0xe0, 0x65, 0xd2, 0xe7, 0xc4, 0x22, 0x15, 0x2a, + 0x2a, 0x3e, 0x5d, 0x6e, 0xb7, 0xf6, 0x77, 0xc2, 0xdf, 0x63, 0xe1, 0x18, 0x8b, 0x6f, 0xc2, + 0x8c, 0x60, 0x8e, 0x2c, 0xe6, 0x9e, 0xb9, 0x00, 0xc4, 0xd0, 0xc2, 0x69, 0x8c, 0xf9, 0xd0, + 0xbd, 0xe5, 0xe7, 0xc1, 0x8b, 0x60, 0xf3, 0xa2, 0x23, 0x4b, 0x5d, 0x31, 0x0a, 0x65, 0xac, + 0x09, 0x8f, 0xa9, 0xf0, 0xb9, 0x36, 0xe8, 0x7d, 0xdd, 0xfc, 0x62, 0xbd, 0xe0, 0x2e, 0xa5, + 0xb8, 0x4a, 0x03, 0x81, 0x18, 0xed, 0xeb, 0x0c, 0xfa, 0xfd, 0x4a, 0x85, 0x36, 0xd6, 0x04, + 0x34, 0xff, 0x3c, 0xd2, 0x01, 0x71, 0xb7, 0x8c, 0xd9, 0x2a, 0xca, 0xf5, 0x57, 0xe6, 0xd8, + 0xa3, 0x62, 0x3c, 0xca, 0x95, 0xdc, 0xcb, 0x2f, 0xb8, 0x4f, 0xd4, 0xc6, 0x73, 0x3d, 0xae, + 0xd9, 0x10, 0xf0, 0x4a, 0x4a, 0x75, 0x68, 0xe4, 0xab, 0x7d, 0x3c, 0xd3, 0x92, 0x1a, 0x93, + 0x25, 0xf3, 0x47, 0x1d, 0x40, 0x5b, 0x9c, 0x2a, 0x96, 0xc4, 0xbb, 0xa6, 0xa0, 0x11, 0x72, + 0xc4, 0x2a, 0x8f, 0xb9, 0x66, 0xcd, 0xc0, 0xc2, 0x31, 0x10, 0x06, 0x42, 0x70, 0x50, 0xc3, + 0x93, 0x17, 0xad, 0xa1, 0x1e, 0x2c, 0x3c, 0xba, 0x8a, 0x9c, 0x56, 0x78, 0x2c, 0x79, 0x2d, + 0xcb, 0xa7, 0xeb, 0xb9, 0xde, 0xe5, 0xc3, 0xa9, 0x03, 0x6c, 0xc4, 0x47, 0x83, 0xa9, 0x9c, + 0x24, 0x6c, 0x78, 0x8c, 0xbf, 0x39, 0xba, 0x17, 0x84, 0x14, 0x6f, 0x9c, 0x05, 0x83, 0xbb, + 0x9e, 0xeb, 0x10, 0x35, 0x86, 0x1d, 0x2c, 0x21, 0x68, 0x45, 0x89, 0xd4, 0xdf, 0x70, 0x88, + 0x00, 0x70, 0xc0, 0xc1, 0x62, 0xda, 0x92, 0x72, 0xd1, 0xcc, 0x59, 0x40, 0xc9, 0x1b, 0x4c, + 0xf1, 0x24, 0x56, 0x5a, 0x88, 0x4d, 0x5e, 0x59, 0x16, 0x14, 0xbc, 0xdc, 0xf1, 0xb4, 0x81, + 0x1b, 0x97, 0x30, 0xb8, 0xc6, 0x12, 0x2d, 0x68, 0x46, 0x31, 0x5d, 0xa9, 0x71, 0x78, 0xb7, + 0x52, 0x9d, 0xc3, 0x1e, 0xf3, 0x3f, 0xb5, 0x39, 0x1f, 0x57, 0x63, 0x7e, 0x3a, 0x45, 0x55, + 0x1e, 0x2a, 0x3c, 0x91, 0x2b, 0x96, 0xe9, 0x3b, 0x3b, 0xcf, 0x01, 0x89, 0x43, 0x56, 0xb6, + 0x50, 0xdb, 0x34, 0x59, 0x4e, 0x3d, 0x19, 0x47, 0xb7, 0xc2, 0x9c, 0x53, 0x4d, 0xe4, 0x47, + 0x3a, 0x26, 0x56, 0x45, 0x67, 0x33, 0x7b, 0xa7, 0x1c, 0xfb, 0x39, 0x26, 0x75, 0x98, 0xc3, + 0x0f, 0x79, 0xce, 0xe3, 0xcd, 0x46, 0x19, 0x37, 0xa6, 0x21, 0x6f, 0xfa, 0x73, 0xef, 0xc6, + 0x83, 0x0c, 0xe4, 0x30, 0x81, 0xba, 0xd8, 0x05, 0x7f, 0xa8, 0xbb, 0x73, 0xd6, 0x27, 0x31, + 0x9e, 0xca, 0x67, 0x8c, 0x5a, 0x3d, 0xac, 0x8b, 0x71, 0x7a, 0xba, 0x32, 0xf0, 0xef, 0xda, + 0x1d, 0xbf, 0xba, 0x8c, 0xe4, 0xba, 0x13, 0x1d, 0x9a, 0x21, 0x83, 0xe7, 0x18, 0xb6, 0xd1, + 0x82, 0xe5, 0x25, 0xfc, 0x37, 0xa6, 0x7d, 0x9d, 0x09, 0xb8, 0x78, 0x70, 0x11, 0x6d, 0x24, + 0xf4, 0x34, 0xc1, 0x32, 0xe0, 0x46, 0xc5, 0xd7, 0x59, 0x79, 0x19, 0x26, 0xfa, 0xdf, 0x2e, + 0xb6, 0xc3, 0xd1, 0xa1, 0x5d, 0xd9, 0x23, 0x64, 0xc2, 0xc5, 0x73, 0x23, 0xe5, 0x98, 0x1a, + 0x89, 0x2c, 0x64, 0x5f, 0x42, 0x1b, 0x98, 0x42, 0xb8, 0xad, 0x21, 0x2d, 0x87, 0x34, 0x7d, + 0xc4, 0x95, 0x34, 0x60, 0x88, 0xad, 0xae, 0x0c, 0xaa, 0x8b, 0x68, 0xb1, 0x4a, 0x0c, 0x36, + 0xaf, 0x30, 0x55, 0x4f, 0x0d, 0x17, 0x43, 0x20, 0x8a, 0xa5, 0xb0, 0xdf, 0xb3, 0x74, 0x3d, + 0x1a, 0x9a, 0x29, 0xa0, 0x13, 0x8c, 0x98, 0x46, 0xc3, 0xf4, 0xa6, 0x5d, 0x7a, 0x93, 0xc2, + 0x4d, 0xea, 0x5c, 0xc5, 0x1a, 0x4a, 0x7e, 0x45, 0x8c, 0x0f, 0xc7, 0x1a, 0xd2, 0x1e, 0x84, + 0x98, 0xb3, 0x98, 0x51, 0x58, 0x0f, 0x5f, 0xba, 0xc3, 0xfb, 0x49, 0x9e, 0x93, 0x79, 0x59, + 0x09, 0xe5, 0xc5, 0x78, 0x5d, 0x59, 0x89, 0xfe, 0x97, 0x1b, 0x8b, 0xd4, 0xba, 0xc8, 0xcf, + 0xc4, 0xf1, 0xa3, 0xf7, 0x00, 0x72, 0x42, 0xad, 0xd3, 0x25, 0x42, 0xc6, 0xc8, 0x2b, 0x69, + 0xf0, 0x7d, 0x82, 0xdd, 0x89, 0x6c, 0x33, 0x05, 0x64, 0x27, 0x0d, 0x83, 0xf6, 0x44, 0x0b, + 0x6b, 0x84, 0x37, 0x99, 0xae, 0x08, 0xa4, 0xb9, 0xda, 0x47, 0x21, 0xc6, 0xce, 0x18, 0xec, + 0x1c, 0x9a, 0x9c, 0xe6, 0xdc, 0x7d, 0xd4, 0xf5, 0x93, 0x00, 0x76, 0xe2, 0x5d, 0x48, 0xd8, + 0xf9, 0x71, 0x47, 0x3f, 0xb0, 0x17, 0xe3, 0x82, 0x35, 0x36, 0xaa, 0x7a, 0x68, 0xfe, 0xee, + 0xdb, 0x37, 0x2e, 0xef, 0xa3, 0x35, 0x48, 0x27, 0xd0, 0x07, 0x3b, 0x70, 0xd9, 0xfa, 0x77, + 0x52, 0xe9, 0xf2, 0x41, 0x04, 0xf6, 0x07, 0x9c, 0x96, 0x14, 0x85, 0xa7, 0x7c, 0x08, 0x4d, + 0xb5, 0x9e, 0x1d, 0x25, 0x2a, 0x84, 0xc1, 0x98, 0x17, 0x97, 0x7b, 0x52, 0x35, 0x9f, 0x74, + 0x92, 0xbf, 0x73, 0xdd, 0x1f, 0xa9, 0x9a, 0xef, 0xc9, 0xec, 0x01, 0x51, 0x89, 0xd6, 0xc1, + 0x5a, 0x38, 0xda, 0xab, 0xd4, 0x01, 0x0a, 0x1f, 0x0d, 0x9d, 0x2a, 0x5f, 0xc9, 0x5b, 0xf1, + 0xb5, 0x65, 0x62, 0x42, 0x3f, 0x89, 0x74, 0x71, 0x50, 0x72, 0x67, 0x98, 0x44, 0x64, 0x13, + 0xcf, 0x15, 0x72, 0x38, 0xc2, 0xa6, 0xc0, 0x4f, 0x04, 0x1e, 0x49, 0xed, 0x75, 0x79, 0xf8, + 0xab, 0x25, 0x4c, 0xc3, 0x30, 0x2e, 0x83, 0xff, 0xaf, 0x8e, 0xd1, 0xce, 0xab, 0x29, 0xc3, + 0x94, 0x00, 0xe4, 0x8a, 0x2c, 0xb3, 0x33, 0x4f, 0x75, 0x2c, 0x7f, 0x11, 0xe9, 0xf7, 0xf2, + 0x1b, 0x8b, 0x8f, 0x16, 0xa7, 0x18, 0x33, 0xae, 0xb4, 0x9f, 0x9e, 0x4b, 0xe4, 0x16, 0xe2, + 0x27, 0x18, 0x28, 0x2a, 0xcc, 0x7c, 0x5b, 0xe0, 0xb2, 0x9a, 0xbf, 0xa9, 0x5a, 0x16, 0xfc, + 0xdf, 0x9c, 0x18, 0xdf, 0x2f, 0xed, 0xd3, 0x5c, 0x08, 0x3a, 0x11, 0xf3, 0xa3, 0xb5, 0x4d, + 0x42, 0xb3, 0x7b, 0x4c, 0x9f, 0x08, 0xc4, 0x3e, 0x4f, 0xd3, 0x7e, 0xce, 0xe9, 0x85, 0xa5, + 0xf7, 0xe5, 0x09, 0x6a, 0x62, 0xa7, 0xd1, 0x1d, 0x49, 0x1e, 0x8c, 0x8d, 0x11, 0xd2, 0xdd, + 0x0d, 0x41, 0x2f, 0x69, 0x62, 0x75, 0xe1, 0x85, 0xa8, 0x23, 0x0d, 0xa5, 0xe8, 0x7b, 0xee, + 0xa5, 0xb0, 0x1f, 0x00, 0x6a, 0xc4, 0x3f, 0x24, 0x9d, 0xf5, 0x95, 0xa9, 0x2f, 0x53, 0xf2, + 0x1f, 0x89, 0x52, 0xa9, 0x36, 0xd3, 0x7b, 0x2f, 0xab, 0x28, 0x7d, 0x32, 0x3b, 0x21, 0x7b, + 0xfc, 0x05, 0xab, 0x4e, 0x3f, 0x1e, 0x08, 0xca, 0xb3, 0x55, 0x53, 0xfe, 0x41, 0xf8, 0x38, + 0xf2, 0x61, 0x26, 0xd6, 0x63, 0x6b, 0xb1, 0xc0, 0x53, 0xa0, 0xe4, 0x31, 0xb8, 0xfe, 0x94, + 0xc6, 0x04, 0xd4, 0xe8, 0x33, 0x08, 0xf9, 0xab, 0x27, 0xc0, 0xee, 0xf9, 0x18, 0x45, 0x23, + 0xf0, 0x37, 0x5c, 0x90, 0xaf, 0x4b, 0xc3, 0xde, 0x7a, 0x4e, 0xbd, 0x31, 0x7c, 0xa0, 0x2a, + 0x7c, 0x68, 0x64, 0xe7, 0xb5, 0x56, 0x77, 0x4e, 0x75, 0x2c, 0x33, 0x6b, 0x2d, 0xca, 0x3d, + 0xcb, 0xab, 0x7c, 0x70, 0x10, 0xa6, 0x72, 0x22, 0x3a, 0x5f, 0xe0, 0xd1, 0xac, 0xd7, 0x8c, + 0x20, 0xab, 0xbc, 0x8b, 0xa6, 0x27, 0x91, 0x4d, 0xa0, 0xb9, 0x0e, 0x0c, 0x34, 0x27, 0x1f, + 0xb9, 0x21, 0xae, 0x34, 0x51, 0x79, 0xa2, 0xed, 0xc9, 0x25, 0xcc, 0x5d, 0x05, 0x13, 0x22, + 0x16, 0xb4, 0x83, 0x8f, 0x87, 0x23, 0x2d, 0x04, 0xf1, 0x51, 0x25, 0x9e, 0x31, 0xf7, 0xae, + 0xad, 0x8d, 0xd2, 0x73, 0xb7, 0xb4, 0x5e, 0x0f, 0x7c, 0x60, 0xf6, 0xbd, 0xa5, 0xfc, 0xd3, + 0x46, 0x67, 0xb3, 0x7b, 0x8e, 0x8f, 0x65, 0x30, 0xb5, 0xa4, 0xb3, 0x4c, 0x56, 0x43, 0x3d, + 0x73, 0xbc, 0xbc, 0xff, 0xbf, 0x00, 0xec, 0xda, 0x33, 0x71, 0xbf, 0xe7, 0x5f, 0x10, 0xa4, + 0x65, 0x43, 0xd7, 0xbd, 0x98, 0xa4, 0x11, 0x84, 0xb2, 0x90, 0xa0, 0x46, 0xea, 0xe6, 0xcf, + 0xb8, 0xa8, 0x78, 0x3b, 0xbe, 0x42, 0xa4, 0x71, 0x0f, 0x15, 0x3a, 0x3d, 0x06, 0x3b, 0x85, + 0x5e, 0xe6, 0x97, 0x3e, 0x25, 0xa0, 0x9f, 0x82, 0x21, 0x41, 0x25, 0x6b, 0x48, 0x67, 0xdb, + 0xf4, 0x5b, 0x9f, 0x82, 0x68, 0xba, 0xd7, 0x3b, 0x7d, 0x18, 0xdf, 0xcd, 0xb2, 0xf2, 0xc7, + 0xaa, 0x54, 0x7b, 0x94, 0x18, 0x4f, 0x9d, 0xf2, 0x49, 0x1c, 0x91, 0x00, 0x17, 0x5e, 0x6f, + 0xeb, 0x63, 0x43, 0x93, 0xd1, 0x3c, 0x6e, 0x54, 0xd7, 0x54, 0x16, 0x0e, 0xc0, 0xbf, 0x21, + 0xea, 0x3b, 0xf8, 0x49, 0x00, 0xda, 0x21, 0x9e, 0x26, 0x89, 0xc5, 0x9e, 0x8d, 0xa9, 0x3f, + 0x3a, 0x44, 0xec, 0xfc, 0x4c, 0x16, 0xd0, 0x51, 0x15, 0xbc, 0x47, 0xdd, 0x1b, 0x66, 0x89, + 0x18, 0x3d, 0x56, 0x9e, 0xdb, 0x71, 0x33, 0x47, 0xa3, 0x4c, 0x7f, 0xa1, 0xbf, 0x71, 0x18, + 0x0f, 0x97, 0x92, 0xf1, 0x3c, 0x13, 0xeb, 0xec, 0xa3, 0x78, 0x29, 0x38, 0x24, 0x0a, 0xae, + 0x6c, 0xe6, 0x20, 0x62, 0x13, 0xd4, 0x9d, 0x34, 0x61, 0x2e, 0x4f, 0xc5, 0xaa, 0x7d, 0x6c, + 0x2e, 0x0d, 0xe7, 0x59, 0x02, 0x56, 0x49, 0x5d, 0x74, 0xe1, 0x04, 0x13, 0xf8, 0x95, 0x7f, + 0xf6, 0x39, 0x22, 0x72, 0x79, 0x31, 0x3c, 0xcd, 0x76, 0x33, 0x38, 0xa6, 0xcf, 0x35, 0xe7, + 0x71, 0xf9, 0xbf, 0x9d, 0x8c, 0x97, 0xc7, 0x53, 0x9e, 0x69, 0x10, 0xdf, 0xec, 0x3d, 0x62, + 0x0c, 0x0e, 0x27, 0xac, 0x0d, 0xb9, 0x71, 0xdd, 0xcb, 0x6c, 0x0e, 0x17, 0x55, 0x9e, 0xa2, + 0x5f, 0x72, 0x37, 0x9c, 0xe1, 0xb3, 0xf8, 0x54, 0x44, 0x68, 0x11, 0x43, 0xcd, 0x36, 0x09, + 0xe1, 0x6e, 0xac, 0xe0, 0x8c, 0xcb, 0x6c, 0x9a, 0x0c, 0x41, 0x9e, 0x32, 0x4a, 0x07, 0xbb, + 0x02, 0x07, 0x14, 0x44, 0x87, 0x00, 0x77, 0x29, 0x83, 0x20, 0x28, 0xdc, 0x6f, 0xcb, 0x48, + 0x2b, 0x44, 0xa0, 0xeb, 0xff, 0xfd, 0xaf, 0xbf, 0x49, 0x07, 0x6d, 0x48, 0x89, 0x14, 0x6d, + 0xa4, 0x99, 0xd5, 0xa6, 0xd8, 0x94, 0xf0, 0x70, 0x24, 0x02, 0xcd, 0x46, 0x2a, 0x97, 0x2b, + 0xd4, 0x5d, 0x59, 0xeb, 0x38, 0x18, 0xe2, 0xc3, 0x74, 0xa3, 0x98, 0xd9, 0xe8, 0x0e, 0xb0, + 0x68, 0xeb, 0xf8, 0xf8, 0x9b, 0x0f, 0xdb, 0x20, 0x6b, 0x36, 0x21, 0xae, 0x1b, 0xa3, 0x3c, + 0x51, 0x83, 0xe9, 0x23, 0xf5, 0x0e, 0x9a, 0xcc, 0x82, 0x17, 0x02, 0x37, 0x16, 0xf5, 0xa0, + 0xf1, 0xc6, 0x70, 0xc0, 0x4e, 0x6c, 0x02, 0x0f, 0xc7, 0x4a, 0x9b, 0xdc, 0xc2, 0x85, 0x0a, + 0x03, 0x71, 0x71, 0x20, 0xdf, 0xf8, 0xfd, 0xc2, 0xe0, 0x33, 0x0c, 0xe4, 0x00, 0xe9, 0x75, + 0xea, 0x05, 0x7d, 0x94, 0xc3, 0x0f, 0xf8, 0x14, 0xa2, 0xc5, 0x27, 0x8c, 0xe9, 0xe7, 0x9d, + 0x96, 0x0f, 0x4c, 0x11, 0xed, 0xf6, 0xd2, 0xca, 0xf8, 0x74, 0x09, 0x41, 0xbf, 0x54, 0xf0, + 0x2a, 0x36, 0x48, 0x64, 0x8f, 0xad, 0xd1, 0x89, 0x28, 0x45, 0x0d, 0x66, 0xe1, 0xe7, 0xb7, + 0x8f, 0xa7, 0x06, 0x0f, 0x76, 0x3b, 0x72, 0x4b, 0x42, 0x00, 0x7b, 0xd5, 0xe2, 0xbc, 0x2a, + 0x15, 0x6c, 0xcf, 0x01, 0x40, 0x09, 0x8b, 0x87, 0xd0, 0xfd, 0x7c, 0x21, 0xc8, 0x65, 0xbe, + 0x90, 0xe2, 0x98, 0xe4, 0x07, 0xa4, 0x0a, 0x7f, 0xe3, 0x4c, 0x35, 0xf0, 0x0e, 0x16, 0xd7, + 0x1d, 0x6a, 0xe4, 0x56, 0x49, 0xd5, 0x30, 0x5f, 0x04, 0xd6, 0x5d, 0x6c, 0x66, 0x43, 0xc0, + 0x06, 0x2d, 0x46, 0xcb, 0x5b, 0x88, 0x22, 0x5b, 0xcc, 0x04, 0x72, 0x37, 0x6f, 0xf0, 0xdc, + 0xbb, 0x4f, 0x4e, 0x4d, 0x8b, 0xfc, 0x51, 0xee, 0x57, 0x27, 0x98, 0x2e, 0x1c, 0x60, 0x0d, + 0xc7, 0x5e, 0xa3, 0x5b, 0x98, 0x29, 0x4e, 0x34, 0x25, 0x4f, 0x11, 0x9b, 0xe0, 0x31, 0x1e, + 0x9d, 0xa4, 0x21, 0x7c, 0xcd, 0x14, 0x4a, 0x76, 0xde, 0xf0, 0x78, 0x92, 0x71, 0x61, 0x81, + 0xe1, 0xbd, 0xf1, 0xa6, 0x7c, 0x4f, 0x21, 0x5f, 0x4e, 0x7c, 0x1b, 0x33, 0xae, 0x16, 0x12, + 0x33, 0x93, 0xa3, 0xab, 0xe3, 0xed, 0xf2, 0x2a, 0xef, 0xd9, 0xda, 0x85, 0xc2, 0xeb, 0x0a, + 0xea, 0x04, 0xab, 0xfb, 0x5a, 0x79, 0x39, 0x15, 0x11, 0xb5, 0x11, 0x3e, 0x05, 0xc0, 0x01, + 0x9f, 0x73, 0xad, 0x5e, 0xfa, 0xf5, 0x3f, 0xdd, 0xf3, 0x7c, 0x82, 0xb5, 0xda, 0x42, 0x19, + 0xf2, 0x6b, 0x5d, 0x9d, 0xe5, 0xb5, 0x7c, 0xb8, 0x7c, 0xaf, 0x3b, 0x3c, 0x9a, 0x24, 0x00, + 0x45, 0x95, 0x68, 0x27, 0x82, 0xa8, 0xbe, 0x81, 0x4d, 0x37, 0x61, 0x3a, 0xe6, 0x5b, 0x74, + 0x8b, 0x02, 0x32, 0x80, 0xa0, 0xcf, 0xc6, 0xea, 0xda, 0x41, 0x13, 0x1d, 0x58, 0x53, 0x3c, + 0x9a, 0x1f, 0xae, 0xa0, 0x2d, 0xaa, 0x08, 0x72, 0xc0, 0x9c, 0x75, 0xb8, 0xde, 0xac, 0xa0, + 0x13, 0xa8, 0x41, 0x2c, 0x4b, 0xef, 0x94, 0x9a, 0x2d, 0x11, 0x04, 0xae, 0x22, 0x95, 0x57, + 0xa7, 0xf6, 0xf7, 0x22, 0x82, 0x7b, 0x61, 0xd6, 0xce, 0x63, 0x75, 0xe9, 0x62, 0xb7, 0x1a, + 0xbc, 0xff, 0x9d, 0xeb, 0xe8, 0xc3, 0xc9, 0x72, 0x28, 0x8a, 0xbd, 0x67, 0xc6, 0x39, 0xd1, + 0x86, 0xf5, 0x2a, 0xe6, 0x6e, 0x09, 0x19, 0x7e, 0x79, 0x70, 0xa8, 0x1a, 0x37, 0x50, 0x86, + 0x30, 0x20, 0xf4, 0xfd, 0x5e, 0x45, 0x61, 0xf1, 0xc5, 0x48, 0x61, 0x27, 0x38, 0xce, 0x11, + 0xa7, 0x6d, 0x5b, 0x59, 0xa0, 0x22, 0x0d, 0x1a, 0x8b, 0x53, 0xed, 0xaa, 0x14, 0x37, 0x4b, + 0x74, 0x4c, 0xa3, 0x33, 0x06, 0x1b, 0x10, 0x54, 0x04, 0xad, 0x92, 0x18, 0x0e, 0x25, 0x4d, + 0x43, 0xf3, 0xc8, 0xa0, 0xba, 0x5c, 0x29, 0xe8, 0xb0, 0x09, 0x7f, 0x9f, 0xaa, 0x56, 0xb7, + 0x8f, 0x86, 0xbe, 0xf0, 0x0b, 0xaa, 0x28, 0x06, 0xfb, 0x70, 0x82, 0xbc, 0x98, 0x48, 0x40, + 0xae, 0x53, 0x6b, 0xed, 0x85, 0xc6, 0x9d, 0x69, 0xe6, 0x46, 0x4c, 0x2f, 0x57, 0x5a, 0x1c, + 0x56, 0x65, 0xab, 0x58, 0x48, 0x9c, 0x3a, 0x8f, 0xb6, 0x14, 0xf7, 0xa6, 0x30, 0xfc, 0x9b, + 0x71, 0x8e, 0xc7, 0x0f, 0x12, 0xdd, 0x21, 0xf5, 0x14, 0xfc, 0xab, 0x2c, 0x68, 0x03, 0x87, + 0x60, 0xe4, 0xa9, 0x4f, 0xf7, 0x5f, 0x94, 0xc5, 0x3e, 0x61, 0xb4, 0x98, 0xd7, 0x27, 0xce, + 0x12, 0x28, 0xfd, 0x3f, 0x62, 0x08, 0xf0, 0x87, 0x4c, 0x24, 0x07, 0x4f, 0xa2, 0xac, 0x21, + 0x22, 0xac, 0x11, 0x10, 0xc1, 0x1a, 0x05, 0x02, 0x9c, 0x0a, 0x7f, 0x41, 0xed, 0x11, 0x20, + 0x93, 0xe1, 0xb5, 0xe3, 0xfd, 0xdd, 0x79, 0xfb, 0x97, 0x56, 0x12, 0x5d, 0x9b, 0x9e, 0x08, + 0x63, 0x46, 0x0e, 0x89, 0xdb, 0x05, 0x26, 0x18, 0x05, 0x6b, 0x85, 0x73, 0xa8, 0x3e, 0xd7, + 0x5a, 0x0f, 0xb6, 0x56, 0xc7, 0x9d, 0x5a, 0xef, 0x50, 0xe6, 0xd9, 0x5e, 0x90, 0xfa, 0x13, + 0x4d, 0x7f, 0x5b, 0x04, 0x33, 0xc6, 0x26, 0x8f, 0x77, 0x30, 0x81, 0x08, 0xb6, 0x8f, 0x9a, + 0x82, 0x38, 0xf1, 0x10, 0x88, 0x0f, 0x79, 0x60, 0x55, 0x22, 0xee, 0x13, 0xa6, 0xd6, 0x20, + 0xb3, 0xe2, 0xd8, 0xe7, 0x2d, 0xce, 0x3e, 0x71, 0x92, 0x29, 0x66, 0xb0, 0x06, 0x0b, 0x37, + 0xa7, 0xfa, 0x1c, 0x17, 0xd3, 0x33, 0xb9, 0x08, 0x45, 0xb5, 0x6d, 0x42, 0xb3, 0x06, 0x30, + 0xea, 0xb2, 0x19, 0xf8, 0x61, 0x6a, 0xcf, 0xd7, 0x15, 0x5a, 0x04, 0x33, 0x74, 0x6d, 0x07, + 0x07, 0xf0, 0x47, 0xea, 0x6d, 0x8b, 0x26, 0x4f, 0x07, 0xba, 0x14, 0xa0, 0x68, 0x32, 0xc6, + 0x25, 0x8c, 0xda, 0x63, 0x3c, 0xd0, 0xd1, 0x3c, 0xd1, 0xfa, 0x01, 0x1b, 0xe4, 0x7b, 0xa3, + 0xaf, 0x6e, 0xc7, 0x3f, 0x94, 0x41, 0x9c, 0x17, 0x86, 0x89, 0xb6, 0x05, 0xbb, 0x8d, 0xd4, + 0xed, 0xcb, 0xae, 0xb9, 0xdf, 0x35, 0xec, 0xfd, 0xb5, 0x24, 0xb3, 0xab, 0x10, 0x59, 0xfa, + 0xe3, 0xb0, 0x07, 0xfa, 0xc7, 0xde, 0x8f, 0x7c, 0xa7, 0xbd, 0xba, 0xcf, 0xde, 0x6b, 0xd3, + 0x60, 0xa4, 0xe0, 0x8d, 0xdd, 0x65, 0x1e, 0x65, 0xeb, 0xf7, 0xdd, 0x47, 0xe0, 0x5a, 0x23, + 0x4e, 0x6d, 0x9f, 0xc8, 0x81, 0x4d, 0x13, 0xa1, 0xcd, 0x72, 0x1e, 0x2e, 0x48, 0x4b, 0x24, + 0x08, 0x43, 0xfa, 0x95, 0xdd, 0xb1, 0x38, 0x0f, 0x95, 0xe0, 0x25, 0xeb, 0xbe, 0xba, 0xe5, + 0xb3, 0x03, 0xb0, 0x2a, 0x45, 0x70, 0xdd, 0xcb, 0x5b, 0xa3, 0xc1, 0x3b, 0x02, 0x62, 0x5c, + 0x90, 0x07, 0x74, 0x1c, 0x67, 0x60, 0x71, 0x04, 0xed, 0x27, 0x7a, 0x89, 0x9b, 0x77, 0x4a, + 0xc4, 0xa0, 0xff, 0x30, 0x35, 0x5d, 0x54, 0x6a, 0xe8, 0x4d, 0x5e, 0xb3, 0x35, 0xf8, 0x97, + 0x3f, 0xa2, 0xac, 0x42, 0x9b, 0x46, 0xcd, 0x50, 0x23, 0x48, 0x08, 0x96, 0x00, 0x5d, 0x5a, + 0x29, 0xc0, 0x27, 0xde, 0x7c, 0x3f, 0x46, 0x0a, 0x48, 0x3a, 0x83, 0xa3, 0xea, 0xbf, 0x6b, + 0x08, 0x40, 0x08, 0x7c, 0xea, 0x1a, 0x5f, 0xdb, 0xcb, 0xf6, 0x74, 0x8c, 0xbf, 0xab, 0x55, + 0xf1, 0xa9, 0xc8, 0x32, 0x81, 0xc6, 0x21, 0x1c, 0x43, 0x7a, 0xf4, 0xc0, 0x67, 0xf6, 0x38, + 0xed, 0x45, 0x86, 0x9f, 0xf2, 0xb2, 0xa7, 0x8f, 0xcf, 0x4c, 0x6d, 0xc5, 0xac, 0x3f, 0x57, + 0x65, 0xdd, 0x5a, 0x42, 0x03, 0x74, 0x79, 0x10, 0x82, 0x02, 0x69, 0xfb, 0xc4, 0xa7, 0x2a, + 0x3e, 0xed, 0x85, 0x74, 0x43, 0x07, 0x0d, 0xa5, 0x50, 0xb1, 0x12, 0x13, 0xc4, 0x99, 0x16, + 0x59, 0x11, 0x26, 0xce, 0x62, 0xca, 0xe4, 0x66, 0x38, 0xa0, 0x2f, 0x30, 0x01, 0x3e, 0x74, + 0x43, 0x3f, 0xa2, 0x8d, 0xf6, 0xb8, 0xfe, 0x88, 0xb4, 0x84, 0xd6, 0x21, 0x7f, 0xde, 0xc1, + 0x6f, 0x0a, 0x1a, 0x6c, 0x47, 0x33, 0x76, 0xaa, 0xeb, 0xdd, 0x25, 0xbc, 0x5a, 0x21, 0x0e, + 0xff, 0x40, 0x1e, 0x57, 0xbd, 0x97, 0x25, 0xf3, 0x49, 0x03, 0xa5, 0x07, 0x3a, 0x8a, 0x71, + 0xfa, 0x1f, 0x5a, 0x31, 0x14, 0x93, 0x55, 0xab, 0x81, 0xa7, 0xa6, 0xd9, 0xfd, 0x2b, 0x86, + 0x0f, 0xe5, 0xbe, 0x49, 0x1f, 0xe1, 0xfd, 0x37, 0x9c, 0x74, 0x94, 0xa0, 0x81, 0xe0, 0xba, + 0xb0, 0x2b, 0xaf, 0xd0, 0x69, 0x4f, 0x90, 0x7f, 0x48, 0x63, 0xae, 0x78, 0x8b, 0x9d, 0x85, + 0x8f, 0xbd, 0x2f, 0xd5, 0xa8, 0x75, 0x24, 0x69, 0x42, 0xf6, 0xd4, 0x81, 0x3c, 0xbe, 0x57, + 0xcd, 0x7d, 0x4c, 0x82, 0x9f, 0xd2, 0xa5, 0x1a, 0xc9, 0x26, 0xd0, 0x77, 0x51, 0xab, 0xd6, + 0x1d, 0x29, 0x24, 0xed, 0x05, 0xaa, 0x5e, 0x14, 0xe8, 0x0a, 0x2f, 0x25, 0x07, 0x32, 0xc3, + 0x8f, 0x3b, 0x50, 0x06, 0x4c, 0x08, 0x11, 0xda, 0xf2, 0x4f, 0x2f, 0xcf, 0x41, 0x95, 0xcc, + 0xdd, 0xa4, 0x67, 0xe6, 0x39, 0x16, 0x3d, 0x1f, 0xb7, 0x91, 0xcd, 0xfd, 0xbd, 0x31, 0x50, + 0x5b, 0xbb, 0xee, 0x95, 0xda, 0x53, 0x63, 0xa2, 0x88, 0xd7, 0x0b, 0x5c, 0xeb, 0x53, 0xc1, + 0x4c, 0x7d, 0xfb, 0xf8, 0xfc, 0x54, 0x47, 0x02, 0x30, 0x4e, 0xfc, 0x14, 0xd0, 0xd1, 0x5a, + 0xf1, 0x17, 0x03, 0x0f, 0x5f, 0x7e, 0xcc, 0xac, 0x31, 0xd6, 0x51, 0x07, 0xbf, 0x9b, 0xff, + 0x13, 0x84, 0x21, 0xd5, 0xc3, 0x0f, 0x1c, 0x41, 0xa1, 0xd0, 0x28, 0x1c, 0xb9, 0xd0, 0x29, + 0xd9, 0x06, 0x88, 0xc3, 0xd8, 0x92, 0x1a, 0x80, 0xf1, 0xff, 0x53, 0x3f, 0xa2, 0x96, 0x5a, + 0x91, 0x2a, 0x2f, 0x69, 0x5d, 0x2e, 0xce, 0x2b, 0x4b, 0x60, 0xe8, 0x77, 0x0c, 0x4b, 0x21, + 0x01, 0x79, 0x26, 0x4e, 0x8d, 0x07, 0x54, 0xbf, 0xf2, 0x7f, 0xae, 0x9d, 0x67, 0xd7, 0x67, + 0x0d, 0x70, 0x5a, 0xa6, 0xab, 0xa2, 0x75, 0x59, 0x69, 0x68, 0x7e, 0x3a, 0x01, 0x31, 0x18, + 0x39, 0x8d, 0xae, 0x43, 0x78, 0x4d, 0x44, 0x6b, 0x9a, 0xd8, 0xc9, 0xef, 0xcd, 0x5a, 0x63, + 0xb7, 0x24, 0x4e, 0x75, 0xea, 0x2a, 0x19, 0x78, 0x6a, 0x4f, 0x28, 0x26, 0x37, 0x72, 0xe4, + 0x8e, 0x0a, 0xec, 0x60, 0xa3, 0x9d, 0x84, 0x07, 0x80, 0x11, 0x87, 0xa1, 0x20, 0xbc, 0x1d, + 0xad, 0x93, 0x8d, 0x30, 0x2e, 0x3b, 0xbc, 0xfe, 0x95, 0x49, 0x39, 0x8c, 0x2b, 0xd1, 0xf6, + 0xc3, 0xc8, 0x51, 0x08, 0x10, 0x43, 0x57, 0x88, 0xb8, 0x43, 0x73, 0x59, 0x0c, 0x32, 0x08, + 0x35, 0x55, 0xb7, 0x60, 0xc0, 0x99, 0x6f, 0x22, 0x74, 0xea, 0x1e, 0xf3, 0x2e, 0x2c, 0x36, + 0xb1, 0x8c, 0x37, 0xa8, 0x96, 0x2c, 0x62, 0x44, 0x4f, 0x7c, 0x67, 0xc0, 0xc2, 0x16, 0x72, + 0x64, 0xe9, 0x03, 0xe3, 0x4d, 0x60, 0x8a, 0xcf, 0x74, 0x70, 0x17, 0xb4, 0x81, 0xcc, 0xf2, + 0xc2, 0x52, 0xb7, 0x79, 0x8d, 0x9e, 0x47, 0x1a, 0x83, 0x39, 0xdb, 0xa1, 0x7a, 0x9a, 0x96, + 0xdd, 0x1d, 0x0c, 0xdf, 0x5c, 0x8b, 0x3a, 0x71, 0x61, 0x9f, 0x57, 0x6c, 0x84, 0xc0, 0x7d, + 0x53, 0xe4, 0xb8, 0xe2, 0x79, 0xb5, 0x54, 0x6f, 0xde, 0x24, 0xf6, 0x0b, 0xc6, 0x45, 0xb5, + 0xfb, 0x52, 0x92, 0x5a, 0xe3, 0xd2, 0xe1, 0x80, 0x53, 0x14, 0x1b, 0x5d, 0xef, 0x2c, 0x75, + 0xbe, 0xe4, 0x1e, 0xc4, 0x49, 0x20, 0x27, 0x3b, 0x53, 0x9d, 0x3e, 0x33, 0x8a, 0xe6, 0x96, + 0x21, 0x6a, 0xf0, 0x82, 0x8b, 0x1d, 0x84, 0x10, 0x33, 0xe9, 0xd9, 0x38, 0xd8, 0xb2, 0x81, + 0xf7, 0xec, 0xf4, 0xdf, 0x27, 0x89, 0xac, 0x3c, 0xb6, 0xcc, 0x62, 0x06, 0xf7, 0x25, 0x99, + 0xd5, 0xdd, 0xab, 0xc0, 0x27, 0xa0, 0x23, 0xfc, 0xf9, 0x91, 0x71, 0x54, 0xca, 0x6f, 0xc2, + 0xff, 0xb6, 0xce, 0x17, 0x2d, 0xd2, 0xac, 0xae, 0x5f, 0xed, 0x73, 0x7d, 0x30, 0xab, 0x32, + 0x1f, 0xaa, 0x29, 0xe1, 0xad, 0xe0, 0x6c, 0xb2, 0xf8, 0x8e, 0xdb, 0x54, 0x29, 0xd8, 0x71, + 0x6f, 0xd5, 0x3a, 0x76, 0x99, 0x38, 0x83, 0x97, 0xbe, 0xda, 0x81, 0x09, 0x07, 0x33, 0xab, + 0x82, 0x19, 0x35, 0x6b, 0x54, 0xb7, 0x79, 0x7f, 0x91, 0xae, 0xda, 0x1a, 0xae, 0xf0, 0xb9, + 0x4f, 0x0e, 0xde, 0x86, 0x2f, 0x4d, 0xbe, 0xe9, 0x5b, 0x8d, 0xaa, 0xc8, 0xda, 0x19, 0xd0, + 0x5b, 0xea, 0x95, 0xf6, 0x0f, 0xc2, 0x13, 0xc3, 0x3a, 0x1d, 0x59, 0xdf, 0x57, 0xa6, 0xf3, + 0x98, 0x18, 0x8f, 0x34, 0x61, 0x22, 0x01, 0x5b, 0x82, 0x73, 0x4b, 0x1e, 0x43, 0x94, 0x41, + 0x13, 0x06, 0xda, 0x56, 0x70, 0x27, 0x00, 0xe4, 0x9c, 0xa6, 0x80, 0x40, 0xe8, 0x7c, 0x49, + 0xdd, 0xe1, 0x44, 0x56, 0x97, 0x12, 0x45, 0x10, 0xe1, 0x20, 0xd3, 0x52, 0x9c, 0x5b, 0x35, + 0xfb, 0xc4, 0x3e, 0xe5, 0xe8, 0x98, 0x32, 0x8f, 0x39, 0x4b, 0x84, 0xf5, 0x2c, 0xf6, 0x11, + 0x53, 0x95, 0xac, 0xc5, 0x12, 0x5d, 0x55, 0x6f, 0xff, 0x3b, 0x34, 0xd6, 0x73, 0xe3, 0xf8, + 0x2b, 0x98, 0xe6, 0x8e, 0xb0, 0x91, 0xa6, 0xba, 0x66, 0x8d, 0x39, 0xa3, 0x04, 0xb7, 0x79, + 0x83, 0x89, 0xda, 0xf5, 0x88, 0xfe, 0x2f, 0x4a, 0x28, 0xdd, 0x2b, 0x40, 0xf7, 0x34, 0xf2, + 0xad, 0x0d, 0x5a, 0x03, 0xfb, 0xcd, 0x61, 0x74, 0x34, 0x5f, 0xce, 0x22, 0x39, 0x2f, 0xd1, + 0x9f, 0x2c, 0xd4, 0xc6, 0x21, 0x59, 0xe4, 0xbe, 0x94, 0x67, 0x98, 0x32, 0x7b, 0xdb, 0xb3, + 0xbb, 0xdb, 0xb0, 0x6a, 0x0c, 0x7e, 0x2f, 0x02, 0x72, 0x45, 0x80, 0x73, 0x6b, 0x89, 0x36, + 0xb3, 0x39, 0x5c, 0x78, 0x64, 0xfc, 0xed, 0x19, 0xe2, 0x30, 0x6b, 0x9b, 0x59, 0xac, 0x18, + 0xa9, 0x2d, 0x54, 0x56, 0xc4, 0x5c, 0x58, 0x4f, 0x60, 0x0b, 0x13, 0xff, 0x09, 0xf8, 0xc5, + 0x9d, 0x3e, 0x8f, 0xaa, 0x7f, 0x29, 0xea, 0xb6, 0xe4, 0x38, 0x17, 0x95, 0x33, 0x28, 0xee, + 0x81, 0x21, 0xc3, 0x9e, 0x01, 0xe8, 0x07, 0x2a, 0x72, 0xe8, 0xc7, 0x06, 0xbf, 0xa5, 0x10, + 0xb3, 0x29, 0x27, 0x3d, 0x9a, 0xa1, 0x21, 0x9b, 0xc5, 0xe5, 0xa2, 0x4c, 0xc5, 0xbe, 0xa4, + 0x82, 0xc1, 0xb3, 0xd3, 0xd2, 0xd5, 0xfc, 0x7d, 0xc4, 0xfd, 0x0e, 0x36, 0x0c, 0x4d, 0xfd, + 0xa1, 0x3a, 0xa5, 0xa6, 0xf4, 0x21, 0x9f, 0xe5, 0x8f, 0x9c, 0x74, 0xe1, 0x20, 0x33, 0x7b, + 0x17, 0x2e, 0x70, 0x97, 0x4c, 0x7c, 0x6d, 0xed, 0xdb, 0x3a, 0x6c, 0xff, 0x70, 0x6a, 0x9f, + 0x25, 0x94, 0x48, 0x60, 0xf3, 0xb9, 0xa0, 0x39, 0x1b, 0x2d, 0x49, 0x07, 0xde, 0xec, 0xf3, + 0xf7, 0x4f, 0x07, 0x31, 0xa0, 0x68, 0x50, 0xbd, 0x1d, 0x2a, 0x2a, 0x1c, 0xa5, 0xd6, 0xf7, + 0xdd, 0xf4, 0x47, 0x95, 0xcf, 0x58, 0x68, 0x96, 0x3c, 0x1e, 0xe9, 0x5c, 0xea, 0xba, 0x71, + 0x23, 0xbf, 0xae, 0xf2, 0x1b, 0x44, 0x48, 0x47, 0x9c, 0x3d, 0x0a, 0xed, 0x5c, 0x5e, 0x40, + 0x15, 0x84, 0xcf, 0xdb, 0x6f, 0xce, 0x9a, 0x08, 0x03, 0xb4, 0x20, 0x26, 0x5e, 0x06, 0xab, + 0x05, 0xa7, 0xcb, 0x5c, 0x24, 0xc7, 0x2f, 0x56, 0x65, 0x20, 0x4f, 0x1a, 0x5a, 0x6c, 0xd7, + 0x0f, 0xa7, 0x3e, 0x33, 0x30, 0x0b, 0x93, 0xf3, 0xae, 0x54, 0xf3, 0x1e, 0xd6, 0x1f, 0x18, + 0xf4, 0xaf, 0xef, 0xb0, 0xd7, 0x78, 0x31, 0x6f, 0xc5, 0xff, 0x68, 0x53, 0xfc, 0xa5, 0xc2, + 0x73, 0x2d, 0x85, 0x8c, 0x84, 0xc5, 0x03, 0x79, 0xea, 0x24, 0x0b, 0xdb, 0x8d, 0xdd, 0x02, + 0x36, 0x0f, 0xd0, 0xd5, 0x9e, 0xfc, 0xf3, 0x38, 0xff, 0xc2, 0xb7, 0xe3, 0x51, 0x89, 0x37, + 0x6c, 0x8b, 0x4c, 0xca, 0x68, 0x4c, 0x2c, 0x59, 0xa7, 0x66, 0xcc, 0x28, 0xb3, 0x6c, 0x4b, + 0x07, 0x86, 0x39, 0xf9, 0x75, 0x41, 0xe6, 0xe0, 0x12, 0x5e, 0xc3, 0x2b, 0x82, 0x31, 0x8c, + 0xeb, 0x53, 0xd1, 0x2f, 0x6b, 0x79, 0x12, 0xdb, 0x8b, 0xd6, 0xc5, 0x0d, 0xee, 0xcf, 0xb3, + 0x38, 0x88, 0x3b, 0x1b, 0x13, 0x69, 0x53, 0xdf, 0x47, 0xc4, 0xfe, 0x6d, 0xda, 0x53, 0xd2, + 0x2a, 0x6a, 0x5b, 0x82, 0x6f, 0x66, 0xfb, 0xa5, 0xd5, 0x1c, 0x70, 0x49, 0x8e, 0x2b, 0xdb, + 0x60, 0xe5, 0xd9, 0xbb, 0x28, 0xb6, 0x29, 0x27, 0x8e, 0x15, 0x7a, 0x40, 0xc5, 0xbd, 0x15, + 0x1d, 0xc2, 0xee, 0x80, 0xe5, 0x1b, 0xa0, 0xc2, 0xd0, 0x3a, 0x01, 0xe0, 0x6b, 0x55, 0x20, + 0x1a, 0x43, 0x52, 0x0c, 0x58, 0x63, 0xc0, 0xb5, 0x06, 0x7f, 0x34, 0xe7, 0x90, 0x46, 0x5b, + 0x28, 0xdf, 0x5b, 0xe0, 0x5b, 0xbd, 0xe7, 0x34, 0xdc, 0x02, 0xd3, 0x47, 0x33, 0xde, 0xac, + 0xf1, 0x10, 0x86, 0x40, 0x24, 0x0a, 0xca, 0x46, 0x9c, 0x72, 0x2a, 0x5f, 0x21, 0x22, 0x8a, + 0x7c, 0x00, 0x1e, 0x11, 0xe0, 0x0d, 0x78, 0xe4, 0xc3, 0x97, 0xb8, 0xa3, 0xbe, 0x51, 0xf0, + 0xe1, 0x28, 0x58, 0x9d, 0xef, 0xf0, 0x9c, 0x3d, 0xbe, 0xe1, 0xa3, 0x05, 0x12, 0xd8, 0xbd, + 0xab, 0x45, 0x80, 0x5f, 0x57, 0x30, 0xee, 0x2a, 0xb2, 0x52, 0x49, 0x58, 0x11, 0x64, 0xfe, + 0x9e, 0x9b, 0x00, 0x37, 0x0e, 0xac, 0x58, 0x2a, 0xba, 0x51, 0xc5, 0x44, 0x0e, 0xe7, 0x24, + 0x30, 0xde, 0x62, 0xa6, 0x57, 0x8a, 0xfe, 0x07, 0x55, 0xde, 0xf3, 0xdd, 0x25, 0xc6, 0x2a, + 0x4c, 0xbf, 0xe6, 0x10, 0xc1, 0x46, 0x72, 0xae, 0x6d, 0x6a, 0x30, 0x5a, 0x7c, 0x06, 0x47, + 0x0e, 0x12, 0x96, 0xc7, 0xa8, 0x4e, 0x07, 0xe8, 0xc3, 0xa5, 0xe5, 0xde, 0x1d, 0x31, 0x5e, + 0x92, 0x48, 0xfc, 0xaf, 0x09, 0x3f, 0x85, 0x94, 0x3d, 0xe3, 0xd6, 0x79, 0x65, 0x61, 0xad, + 0x07, 0x60, 0x00, 0x14, 0x19, 0x64, 0xdf, 0xda, 0x69, 0x98, 0x56, 0xaa, 0xea, 0x49, 0x40, + 0x36, 0xd6, 0xa6, 0x2e, 0x9c, 0x11, 0x58, 0x56, 0x8e, 0xb3, 0x02, 0xd7, 0x7a, 0xbb, 0x9f, + 0x48, 0x64, 0xbf, 0x07, 0x48, 0x21, 0x85, 0x67, 0xb6, 0xf8, 0x89, 0x7c, 0x37, 0x05, 0xf7, + 0x82, 0x59, 0xc8, 0xb1, 0x6c, 0x6b, 0x05, 0x96, 0xf0, 0x88, 0x80, 0x03, 0x66, 0xbd, 0x2f, + 0x22, 0xff, 0xe9, 0x57, 0xee, 0x35, 0x2d, 0x1b, 0xac, 0xab, 0xcc, 0x26, 0x9f, 0x8c, 0x9f, + 0x18, 0x6a, 0x5c, 0xa6, 0x77, 0x22, 0x9f, 0x66, 0xd4, 0xc9, 0xd8, 0xc5, 0x40, 0x32, 0x21, + 0xa9, 0x88, 0x30, 0x5b, 0x3e, 0xc8, 0xcb, 0xbe, 0x1c, 0x0e, 0x85, 0xc3, 0x22, 0xaf, 0xee, + 0x4e, 0x0b, 0xde, 0xec, 0xa0, 0x0a, 0xd4, 0xe2, 0xe1, 0x5d, 0x6a, 0xfd, 0x15, 0x8b, 0x96, + 0x59, 0xd7, 0x38, 0x43, 0xcb, 0xd8, 0x25, 0x01, 0x05, 0x0b, 0x6d, 0x0e, 0xd9, 0xf7, 0x58, + 0xf0, 0x47, 0xc4, 0x3a, 0xf1, 0xc0, 0xc4, 0x61, 0xaa, 0x3d, 0xf3, 0x38, 0x2b, 0x10, 0xd5, + 0xb5, 0x2e, 0x0e, 0xc8, 0xb9, 0x1e, 0xb7, 0x8e, 0xe5, 0x22, 0x56, 0x1b, 0xc5, 0x18, 0x16, + 0xc5, 0x67, 0x4c, 0xce, 0xa0, 0x7b, 0x0c, 0x5f, 0xf5, 0x9f, 0xaf, 0x28, 0x53, 0xf3, 0x2c, + 0xe5, 0x11, 0xc9, 0x1b, 0x6a, 0x92, 0x3f, 0x55, 0xba, 0xd8, 0xa5, 0xee, 0xf6, 0xe8, 0x11, + 0x2f, 0x72, 0x22, 0x60, 0xbd, 0x84, 0x51, 0xd1, 0x47, 0x90, 0x71, 0xff, 0x8b, 0x83, 0x37, + 0x47, 0xd7, 0x26, 0x80, 0x76, 0x37, 0x14, 0x2d, 0xb1, 0xd6, 0x72, 0x83, 0xe6, 0xc8, 0xcd, + 0x88, 0x56, 0x0b, 0x24, 0xa1, 0x2d, 0x45, 0x0f, 0x5e, 0x46, 0x39, 0xc0, 0x31, 0x85, 0x2e, + 0xf9, 0x86, 0x13, 0xe1, 0x4c, 0x34, 0x8b, 0x99, 0xee, 0x20, 0xa8, 0xae, 0x33, 0x74, 0xb7, + 0x78, 0x58, 0x28, 0x9d, 0x18, 0xf7, 0x7d, 0x3a, 0x6f, 0xaa, 0x1c, 0xb7, 0x3f, 0x98, 0x15, + 0x35, 0xb7, 0xb4, 0x71, 0xdd, 0x8c, 0xd3, 0xec, 0x7f, 0xad, 0x96, 0xaf, 0xa8, 0x82, 0xb9, + 0x9e, 0x79, 0x69, 0x9f, 0x82, 0x7a, 0x1d, 0xef, 0xf7, 0xdf, 0x73, 0x71, 0xe5, 0x4e, 0x53, + 0xf6, 0xb5, 0xe3, 0xb3, 0x4c, 0x9f, 0xe3, 0xbb, 0x3d, 0x19, 0x1b, 0xcd, 0x8d, 0x7e, 0x70, + 0xa5, 0x5b, 0x76, 0xc5, 0xc7, 0xdb, 0xf8, 0x44, 0x3c, 0xc6, 0x2b, 0x47, 0x05, 0x9b, 0x3a, + 0x81, 0xc2, 0xd8, 0xdb, 0xdf, 0x4e, 0xb2, 0x32, 0xfa, 0xb4, 0xc1, 0xbf, 0x5d, 0xff, 0x03, + 0x93, 0x32, 0x6b, 0x0f, 0x1a, 0xd0, 0x9c, 0xe5, 0xff, 0x1b, 0x32, 0xc5, 0x72, 0x48, 0x63, + 0x95, 0x2e, 0x92, 0x6c, 0x5b, 0x3e, 0xfe, 0xdb, 0x9b, 0xf4, 0x32, 0x36, 0x15, 0xa9, 0xc1, + 0x8f, 0x41, 0xf0, 0xbc, 0x10, 0x11, 0x8c, 0x20, 0x90, 0x71, 0xf1, 0x9c, 0x21, 0x06, 0x31, + 0xc2, 0xee, 0x86, 0x25, 0xe6, 0x87, 0xad, 0x4c, 0xef, 0xae, 0xa6, 0x79, 0x20, 0x62, 0x1b, + 0x37, 0x97, 0x9b, 0xba, 0x94, 0x84, 0x26, 0xb4, 0xb3, 0xcf, 0x00, 0x2c, 0x7e, 0xdf, 0x25, + 0x0e, 0xc8, 0x3a, 0x70, 0x5c, 0x20, 0x1d, 0x6f, 0xd2, 0x46, 0xcb, 0x29, 0x3b, 0x68, 0x9e, + 0x90, 0x8a, 0x4d, 0x5d, 0xa6, 0xb7, 0xd0, 0x8e, 0x0e, 0x9e, 0xf8, 0xe1, 0xdb, 0x5d, 0x57, + 0x43, 0x14, 0x1b, 0xe8, 0x8f, 0x4a, 0x26, 0xfe, 0xef, 0x78, 0x71, 0x7d, 0x97, 0xfb, 0xe2, + 0xab, 0xcc, 0x40, 0x96, 0x02, 0xa5, 0xcc, 0x08, 0x42, 0xeb, 0xc9, 0x74, 0x52, 0x12, 0x70, + 0xc4, 0xac, 0xe6, 0x3b, 0xc6, 0x5a, 0x3d, 0x41, 0x2e, 0x8f, 0xfe, 0x0f, 0x22, 0x62, 0x12, + 0x94, 0x41, 0x36, 0xb4, 0xdf, 0x7a, 0xe5, 0xe4, 0x0e, 0x46, 0x7f, 0x5e, 0x4b, 0x77, 0x6d, + 0xa0, 0x6e, 0x67, 0xf3, 0x81, 0x2c, 0x1e, 0xed, 0x53, 0x9c, 0x8c, 0x28, 0xb7, 0x1a, 0x72, + 0xd1, 0x5c, 0x37, 0x00, 0x1f, 0x5a, 0x01, 0x94, 0x24, 0x82, 0x46, 0xe9, 0x5e, 0x01, 0xe3, + 0x46, 0x55, 0xa2, 0x42, 0xf6, 0xbd, 0x41, 0x33, 0x90, 0x25, 0x02, 0xa3, 0x8b, 0xf2, 0xb1, + 0xfc, 0x42, 0xb9, 0x1c, 0xe1, 0x91, 0xa0, 0xc4, 0x34, 0x30, 0x54, 0xcd, 0x00, 0x3f, 0x6e, + 0x28, 0x6f, 0xb7, 0x9c, 0x62, 0x58, 0xa3, 0xec, 0xab, 0x08, 0x10, 0x2d, 0x70, 0x85, 0x7c, + 0x7d, 0x09, 0x26, 0x66, 0x7e, 0x5f, 0x5d, 0x11, 0xaf, 0xd8, 0xc7, 0x31, 0xc5, 0xfd, 0xbc, + 0x6c, 0x6e, 0xf7, 0xc3, 0xdd, 0x63, 0xf8, 0x9f, 0xae, 0xb2, 0x3d, 0x1b, 0x13, 0x33, 0x3b, + 0x27, 0x7f, 0x05, 0x9b, 0xb1, 0x42, 0xc2, 0x5f, 0x20, 0x3e, 0xad, 0xb6, 0x13, 0x59, 0x32, + 0x3f, 0xd4, 0x9a, 0xf9, 0x05, 0x22, 0x53, 0x44, 0x4b, 0x99, 0x8b, 0xcb, 0xa7, 0x09, 0xfb, + 0x7c, 0xc2, 0x81, 0xf3, 0x23, 0xb8, 0x3c, 0x8d, 0xdf, 0x84, 0x91, 0xa2, 0x7b, 0x89, 0x4d, + 0xf5, 0x99, 0x29, 0xb5, 0x37, 0xdf, 0xcd, 0x50, 0x97, 0x0d, 0xe4, 0x31, 0x22, 0xae, 0xf2, + 0x27, 0xd1, 0x09, 0x4c, 0x95, 0x61, 0x81, 0xa8, 0x3c, 0xa4, 0x2d, 0x90, 0x69, 0xe5, 0xd2, + 0xe4, 0xe0, 0x41, 0xfc, 0x8b, 0x71, 0x78, 0x88, 0x0e, 0x7b, 0xf8, 0x82, 0x54, 0x1e, 0xcd, + 0x59, 0x93, 0x1b, 0x9d, 0x51, 0x9e, 0x28, 0x86, 0xa9, 0x27, 0xf7, 0xe3, 0x1d, 0x84, 0xad, + 0x41, 0x93, 0x19, 0x04, 0xb2, 0x60, 0x31, 0x2c, 0xa3, 0xe1, 0x41, 0x5a, 0xcf, 0xdb, 0x67, + 0x63, 0x22, 0xa4, 0x24, 0x06, 0xc0, 0xe2, 0xda, 0x89, 0x88, 0x23, 0x6a, 0x21, 0x58, 0x96, + 0x11, 0xda, 0x66, 0xc3, 0x16, 0x16, 0x4f, 0xfc, 0x31, 0xc4, 0x74, 0xf8, 0x04, 0xbc, 0xf0, + 0xfc, 0x5f, 0xd9, 0xb4, 0x39, 0x55, 0x00, 0xc1, 0x00, 0x37, 0x3c, 0x69, 0x0d, 0xad, 0x73, + 0xbf, 0x2d, 0x0b, 0x68, 0x18, 0x2c, 0x99, 0xdf, 0xe9, 0x65, 0x0a, 0x57, 0x28, 0xda, 0x15, + 0xbf, 0x7f, 0x2d, 0xab, 0x52, 0xad, 0x50, 0x97, 0x14, 0x7e, 0xd6, 0x04, 0xfb, 0xeb, 0xe9, + 0xa3, 0x30, 0x52, 0x62, 0x21, 0x3b, 0xab, 0x9a, 0x97, 0x57, 0xe6, 0x26, 0x21, 0xa6, 0x37, + 0xd2, 0x51, 0x24, 0x5e, 0x54, 0x9e, 0xaf, 0xbf, 0xba, 0xb0, 0x0c, 0x0b, 0x21, 0xe8, 0x9e, + 0xed, 0x4e, 0x17, 0x13, 0xa4, 0x41, 0x0d, 0x2b, 0x6a, 0xc3, 0x35, 0x81, 0xcb, 0xa4, 0x57, + 0x95, 0x42, 0x19, 0xa3, 0x3c, 0x26, 0x0a, 0x8c, 0xe3, 0x64, 0x53, 0x50, 0x21, 0x1e, 0x35, + 0x98, 0x1d, 0x4f, 0xa0, 0x4e, 0x69, 0x72, 0x07, 0x8e, 0x4d, 0x7c, 0x4e, 0xef, 0x30, 0x26, + 0x86, 0x39, 0xdc, 0x80, 0x9b, 0x5d, 0xab, 0xa8, 0xc4, 0x7b, 0x0f, 0xb9, 0xed, 0xd5, 0x05, + 0xee, 0x73, 0x56, 0x7a, 0x58, 0x6e, 0xdc, 0x1a, 0xf7, 0xda, 0xd2, 0x0a, 0xbc, 0x33, 0x87, + 0xce, 0x4f, 0x7c, 0x80, 0x19, 0x99, 0xf4, 0x52, 0x3c, 0xb8, 0xfb, 0x92, 0x19, 0x02, 0xf8, + 0x17, 0x3e, 0x25, 0x2b, 0x18, 0x63, 0xb5, 0x0f, 0x7a, 0x6f, 0xb4, 0x35, 0x5e, 0xe8, 0x33, + 0xbe, 0x5d, 0xa7, 0x4f, 0x6b, 0xff, 0xea, 0xe2, 0x9e, 0x5a, 0xf4, 0x2c, 0x06, 0x4c, 0x61, + 0xdb, 0x25, 0x19, 0x19, 0xaa, 0x72, 0x3e, 0x18, 0x4a, 0x10, 0x3a, 0x7e, 0xec, 0x41, 0x5e, + 0x8e, 0x28, 0x05, 0x55, 0x0c, 0xc9, 0x3f, 0xe0, 0xe5, 0x1d, 0x67, 0xef, 0xdd, 0xde, 0xbd, + 0x6f, 0x7c, 0x66, 0xab, 0xea, 0x1f, 0x05, 0xb0, 0x04, 0x04, 0xf5, 0x71, 0xf4, 0x8a, 0xc6, + 0x3a, 0x24, 0xd3, 0xb0, 0xac, 0xb4, 0x68, 0xbf, 0x18, 0xba, 0xd6, 0x43, 0xe4, 0x11, 0xfb, + 0x42, 0xa8, 0xd2, 0x8d, 0x9e, 0x8c, 0x9a, 0x27, 0xb9, 0x3d, 0xde, 0x91, 0x6b, 0xec, 0x0b, + 0xb7, 0x0a, 0xce, 0xf6, 0x5a, 0x35, 0x9c, 0xfb, 0x58, 0x9f, 0xc6, 0x05, 0xdc, 0x4c, 0x58, + 0x57, 0x09, 0x12, 0x19, 0x19, 0xf1, 0xca, 0xe7, 0x08, 0x34, 0x80, 0x27, 0xa5, 0x53, 0x82, + 0x67, 0x91, 0xa2, 0xe0, 0xe9, 0x6b, 0xbc, 0x02, 0x07, 0x81, 0xad, 0x02, 0x57, 0x79, 0x68, + 0x65, 0xfd, 0x83, 0x7e, 0x52, 0xdc, 0xa0, 0x3f, 0x5c, 0x50, 0x93, 0x00, 0x88, 0xce, 0x3d, + 0x14, 0x59, 0xf0, 0x1d, 0x1a, 0x4d, 0x59, 0x60, 0xfa, 0x9e, 0xd3, 0xdf, 0x1b, 0xad, 0x7c, + 0x77, 0x3b, 0xd5, 0xfe, 0xf6, 0x04, 0x93, 0x29, 0x44, 0x6c, 0x64, 0xe7, 0xb7, 0x0f, 0x83, + 0xc4, 0x30, 0x10, 0x46, 0x4e, 0x18, 0xaa, 0xf4, 0x7f, 0xff, 0xba, 0x4c, 0xa1, 0x22, 0x72, + 0xf4, 0x08, 0x91, 0x37, 0xce, 0x54, 0x73, 0x25, 0x54, 0xd8, 0xf3, 0x90, 0x0e, 0xe3, 0x02, + 0x3c, 0x07, 0xa8, 0x5f, 0x1f, 0x56, 0xea, 0x4c, 0xb7, 0x5d, 0xbd, 0x9d, 0x69, 0x3e, 0xc6, + 0xbc, 0x46, 0x25, 0xbb, 0xd2, 0x9b, 0xf6, 0x4b, 0xb7, 0x61, 0x9c, 0xfb, 0xbb, 0x07, 0xb1, + 0x65, 0xc9, 0x3f, 0x80, 0xb0, 0x90, 0xce, 0x50, 0x01, 0x92, 0xeb, 0x1a, 0xe1, 0x70, 0x97, + 0x2e, 0xdd, 0xe1, 0xbe, 0x6c, 0x85, 0xe2, 0x8a, 0x4f, 0x7f, 0x38, 0x98, 0x06, 0x90, 0x25, + 0x22, 0x9d, 0x88, 0x95, 0x07, 0x25, 0x90, 0x9f, 0x79, 0x26, 0xd1, 0x20, 0x45, 0x22, 0x22, + 0x25, 0xe1, 0xae, 0x9c, 0x3c, 0xd0, 0x6d, 0x09, 0x1c, 0xe6, 0xce, 0x2c, 0x84, 0x3f, 0x79, + 0x0c, 0xaa, 0xdf, 0x5b, 0x16, 0x22, 0x0b, 0x4c, 0x58, 0x09, 0xd0, 0x88, 0x6b, 0x55, 0xaa, + 0xf0, 0xb9, 0x0c, 0x5e, 0x2b, 0xc2, 0xaa, 0x1a, 0xa7, 0x59, 0xb6, 0xc7, 0x65, 0x0a, 0xf6, + 0x28, 0x0a, 0x06, 0xf4, 0xeb, 0x8a, 0x79, 0x86, 0x03, 0x47, 0x48, 0xdb, 0x3b, 0xaa, 0xf5, + 0xb3, 0xff, 0xe0, 0x43, 0xeb, 0x81, 0x88, 0xac, 0x8e, 0xc8, 0xf6, 0x30, 0x86, 0x2d, 0x11, + 0x41, 0xca, 0xe2, 0xfc, 0x58, 0xd7, 0x0b, 0x42, 0x41, 0xde, 0x3b, 0x1d, 0x95, 0x1f, 0x6c, + 0xca, 0x34, 0x72, 0xe2, 0x38, 0x58, 0xcf, 0xfd, 0x92, 0x3e, 0x37, 0xca, 0x89, 0xa2, 0xf0, + 0xf7, 0xe3, 0x02, 0x98, 0xb0, 0x08, 0xfc, 0xb0, 0xe2, 0xd2, 0xa6, 0xcc, 0x33, 0xca, 0xaa, + 0x20, 0x82, 0xfa, 0xba, 0xe2, 0xa3, 0x23, 0xb3, 0x53, 0x13, 0x0d, 0xfd, 0x9b, 0xfc, 0x23, + 0x4c, 0xf7, 0x01, 0x0c, 0x75, 0x19, 0xb3, 0x2a, 0x33, 0x24, 0x4d, 0x0f, 0x63, 0x2f, 0x13, + 0x15, 0xfb, 0xcf, 0x77, 0x0c, 0x4f, 0x39, 0x76, 0xb3, 0xcd, 0xea, 0xce, 0xbd, 0x15, 0x99, + 0x65, 0x2d, 0x76, 0x78, 0x5e, 0xe8, 0xbb, 0x2e, 0x23, 0xbd, 0x44, 0x1f, 0x2a, 0x49, 0xcb, + 0xff, 0x37, 0x7a, 0x2f, 0xe6, 0xde, 0xe9, 0xaa, 0xc2, 0x0e, 0x5e, 0x55, 0xca, 0x3a, 0xc0, + 0x22, 0xa5, 0xc4, 0x0f, 0xaa, 0x15, 0xf5, 0xfe, 0xd0, 0x76, 0xbc, 0x88, 0xcd, 0x35, 0xa1, + 0xeb, 0x54, 0x14, 0x10, 0x7b, 0x27, 0x6d, 0xab, 0x78, 0xd7, 0x05, 0x9e, 0x26, 0xf1, 0xfb, + 0x1c, 0x95, 0xb5, 0x9b, 0xc8, 0x55, 0xc5, 0xd6, 0x42, 0xdd, 0xcf, 0xf6, 0x85, 0x3a, 0x33, + 0xc8, 0x41, 0xef, 0x43, 0xf7, 0x3f, 0x16, 0x43, 0xfa, 0x15, 0x18, 0x66, 0x66, 0xb7, 0xd5, + 0xfb, 0xb6, 0xbd, 0x4e, 0xd5, 0x9d, 0xf3, 0xed, 0x0c, 0x2a, 0x89, 0x63, 0x16, 0xcb, 0x4a, + 0x49, 0x17, 0x22, 0x76, 0x3f, 0x62, 0x28, 0x0b, 0xf2, 0xe5, 0x53, 0x9b, 0x73, 0x4d, 0x70, + 0x30, 0x3b, 0x04, 0x7b, 0xa2, 0xaa, 0xb7, 0xdd, 0x02, 0xf1, 0xec, 0x68, 0xa8, 0x4d, 0x2f, + 0xa9, 0x0a, 0xd5, 0x88, 0xbf, 0x31, 0xfd, 0x98, 0x1a, 0x3d, 0x10, 0x0a, 0x8d, 0x97, 0xc3, + 0xd4, 0x2d, 0x5b, 0x2a, 0x33, 0xe5, 0x8c, 0xa9, 0x37, 0x1e, 0x22, 0x9a, 0x81, 0xbc, 0x6a, + 0xa9, 0x58, 0xd8, 0xc4, 0x82, 0xe9, 0xae, 0x08, 0xe5, 0x82, 0x94, 0x05, 0xe2, 0x65, 0x22, + 0x25, 0xa0, 0x77, 0xb2, 0xbb, 0xbe, 0xcc, 0xc4, 0xcf, 0xe8, 0x5e, 0xf7, 0xb3, 0xd4, 0x1f, + 0x3f, 0x88, 0x18, 0x98, 0x38, 0xaa, 0x82, 0xa1, 0x70, 0x73, 0x11, 0x35, 0xea, 0x10, 0x09, + 0xb7, 0xab, 0xd7, 0x51, 0xe2, 0x48, 0x81, 0xe8, 0x77, 0x4b, 0x53, 0x5f, 0xb0, 0x54, 0x21, + 0x0d, 0xff, 0x0f, 0x01, 0xa7, 0x3a, 0x5a, 0x21, 0xbc, 0xb9, 0x07, 0x87, 0x3b, 0x07, 0x3a, + 0x2d, 0x84, 0x25, 0x8c, 0x13, 0x6d, 0xdf, 0x37, 0x73, 0x5d, 0xf5, 0x25, 0x23, 0x33, 0xd1, + 0x51, 0x2f, 0xa3, 0x20, 0x8e, 0xac, 0x2e, 0x33, 0x79, 0x58, 0x98, 0x33, 0x4a, 0xd4, 0x78, + 0x18, 0xf8, 0x07, 0x4f, 0xbe, 0x8b, 0x99, 0xb2, 0xd6, 0xd9, 0x08, 0x10, 0xf9, 0xf1, 0xee, + 0x61, 0x0a, 0x08, 0x3d, 0x59, 0xbc, 0xdd, 0x79, 0xd5, 0x2b, 0x7e, 0x8d, 0x70, 0x42, 0x1d, + 0xcf, 0x78, 0x42, 0x81, 0x1c, 0x00, 0xfc, 0x9f, 0x43, 0xfd, 0x90, 0x6e, 0x51, 0xe5, 0xcc, + 0x6f, 0xe9, 0xaa, 0x85, 0xae, 0x44, 0x48, 0x7c, 0xc8, 0x40, 0xf9, 0xed, 0xf9, 0xf6, 0xb2, + 0x80, 0x41, 0xf1, 0x87, 0xb0, 0x78, 0x09, 0x27, 0xe3, 0x9f, 0x63, 0xf7, 0x3f, 0xfc, 0xc5, + 0x0a, 0x51, 0x2d, 0x11, 0x1f, 0x36, 0xd5, 0xc0, 0x69, 0x6e, 0x88, 0x5a, 0xc1, 0xfa, 0x33, + 0x1f, 0x54, 0xf7, 0xa9, 0x90, 0xe2, 0x0d, 0xb3, 0x14, 0x59, 0x3b, 0x61, 0xe0, 0x3f, 0x57, + 0xe7, 0xda, 0x2c, 0xd6, 0xd0, 0x98, 0xbc, 0xaf, 0xa6, 0xaf, 0xb4, 0xef, 0xe2, 0x81, 0xc5, + 0xd4, 0x06, 0x93, 0x00, 0xad, 0x89, 0x26, 0x8c, 0xe3, 0xfb, 0x10, 0xab, 0x03, 0xba, 0xd5, + 0xd0, 0xfc, 0x33, 0xee, 0x56, 0x01, 0x4f, 0x8d, 0xf7, 0x90, 0x24, 0x00, 0xd6, 0xf3, 0xa9, + 0x98, 0xd6, 0xd3, 0xe3, 0xea, 0xd6, 0xe7, 0xde, 0x8b, 0xa3, 0x13, 0xad, 0x12, 0x5d, 0xb6, + 0x82, 0x5d, 0x56, 0x4c, 0x7f, 0x00, 0x49, 0x1c, 0xd7, 0x05, 0xbd, 0xf0, 0x1f, 0xd7, 0xab, + 0x06, 0x4b, 0xd2, 0x19, 0xb8, 0x0f, 0xeb, 0xd4, 0xbf, 0xea, 0x48, 0xdd, 0x3a, 0xdc, 0x12, + 0x6d, 0xfe, 0x78, 0xbe, 0x6a, 0x59, 0x3b, 0xfe, 0x9f, 0xfd, 0x1e, 0xc3, 0xa3, 0xd0, 0xd8, + 0x8b, 0xda, 0xad, 0x7f, 0xf9, 0x76, 0xd8, 0xdb, 0xd0, 0x35, 0x8c, 0xb3, 0x92, 0x7e, 0xe4, + 0x43, 0x05, 0xa7, 0x03, 0x3e, 0xf9, 0xea, 0x06, 0x69, 0x73, 0xb3, 0x4b, 0x67, 0x38, 0xab, + 0xa0, 0xc4, 0x57, 0xfb, 0xc8, 0xe9, 0x9c, 0xe3, 0x1a, 0x9c, 0xfc, 0xff, 0x26, 0xf0, 0x99, + 0xb3, 0x4f, 0x2e, 0x38, 0x0c, 0x7d, 0x35, 0x3a, 0xdc, 0xb1, 0xe4, 0x16, 0xa3, 0x9f, 0x6b, + 0xbe, 0xcc, 0xd2, 0x8c, 0x3e, 0x7d, 0xc8, 0xa7, 0xf1, 0xc9, 0x41, 0x00, 0xf6, 0x9a, 0xa5, + 0xc9, 0x2f, 0x66, 0x26, 0x58, 0x13, 0xda, 0xaf, 0x33, 0xbe, 0x5b, 0xfa, 0x42, 0xf1, 0x4d, + 0x4c, 0x02, 0x96, 0xf9, 0x2c, 0x38, 0x79, 0x0e, 0xb1, 0x6d, 0xda, 0x5b, 0x2c, 0xd7, 0x3b, + 0x8a, 0x74, 0x4d, 0x28, 0x43, 0xa5, 0xa6, 0x39, 0x94, 0xf2, 0x8b, 0x6d, 0x8c, 0xe0, 0xb9, + 0xf3, 0xce, 0x2c, 0x40, 0x43, 0x2a, 0x66, 0x59, 0x76, 0xf2, 0x69, 0x1a, 0x7e, 0x6c, 0x9e, + 0x20, 0x97, 0x2d, 0x91, 0x60, 0x11, 0xb4, 0xb7, 0xa5, 0x28, 0xed, 0xb0, 0x27, 0x2d, 0xd6, + 0xe6, 0x55, 0x02, 0x27, 0xff, 0x94, 0xfa, 0x39, 0x0d, 0x8f, 0xab, 0xc2, 0x51, 0x61, 0xff, + 0x56, 0xf4, 0xc0, 0x88, 0x31, 0x53, 0x71, 0xb5, 0x14, 0x6f, 0xf5, 0x02, 0xe5, 0xbe, 0x21, + 0x78, 0xd4, 0x99, 0x57, 0x9e, 0x01, 0xc2, 0xce, 0x44, 0x35, 0x8e, 0xe1, 0x69, 0xd3, 0x24, + 0x7b, 0x86, 0xd5, 0x3a, 0x57, 0xc8, 0x1d, 0x93, 0x9e, 0xfa, 0x25, 0xca, 0x9b, 0x12, 0x59, + 0xf9, 0x74, 0xe5, 0x03, 0xb0, 0x64, 0x81, 0xe1, 0x4f, 0xef, 0xe7, 0x01, 0x3f, 0xef, 0x22, + 0x2e, 0x13, 0x48, 0x17, 0x3d, 0x9f, 0xd5, 0x5a, 0x24, 0x01, 0x2c, 0x9d, 0x5d, 0x66, 0x10, + 0x22, 0x6c, 0x81, 0x69, 0xd5, 0x3b, 0x0d, 0x93, 0xe3, 0x0e, 0x21, 0xd0, 0x36, 0x91, 0xa6, + 0x90, 0x1c, 0xf6, 0x95, 0xb1, 0x97, 0x39, 0xf1, 0x24, 0xa8, 0x1e, 0x3d, 0x55, 0x9f, 0x2d, + 0x8c, 0xb5, 0x0d, 0x2d, 0xf7, 0xd3, 0x1c, 0x7f, 0xa5, 0xa6, 0xc1, 0xd0, 0x63, 0x14, 0xd6, + 0x80, 0x76, 0x23, 0x19, 0x2d, 0x53, 0xc3, 0xa1, 0x12, 0xa7, 0xf7, 0xef, 0x4b, 0xad, 0x51, + 0x03, 0xe9, 0x12, 0x43, 0x37, 0x1a, 0xe2, 0xad, 0xf0, 0xf6, 0xc7, 0xf2, 0x28, 0x20, 0x1f, + 0xec, 0x78, 0xa4, 0xa8, 0x5e, 0xd2, 0x75, 0x0e, 0xc9, 0x6d, 0xaf, 0x63, 0xa8, 0xf8, 0xa9, + 0xdf, 0x69, 0xe6, 0x8d, 0x98, 0x60, 0x13, 0xda, 0xc0, 0xc5, 0xaa, 0x42, 0xe5, 0x49, 0x10, + 0x64, 0xe0, 0xa5, 0x35, 0xf7, 0xf7, 0xe4, 0x9b, 0x51, 0x4c, 0x2f, 0xd6, 0xd0, 0x0c, 0x22, + 0x32, 0x4c, 0x4c, 0x74, 0x8c, 0x1f, 0x62, 0xd4, 0x06, 0x07, 0x6f, 0xab, 0xe6, 0x1b, 0x68, + 0x97, 0x2b, 0xe3, 0x48, 0x68, 0x68, 0xd5, 0xac, 0xa6, 0x78, 0x23, 0x9c, 0xaa, 0x8a, 0x73, + 0x5c, 0xcd, 0xc3, 0x88, 0xe4, 0x6c, 0x19, 0xf2, 0x7e, 0xa5, 0x19, 0x8f, 0x04, 0x01, 0xb4, + 0x6b, 0xca, 0x86, 0xb4, 0x2f, 0x90, 0xd0, 0xcc, 0x6b, 0xe5, 0xa0, 0xb8, 0x03, 0x5d, 0x3e, + 0x4b, 0x6d, 0x61, 0xc2, 0x65, 0x77, 0xb6, 0xbf, 0x88, 0x16, 0xbc, 0x4d, 0x2a, 0xf8, 0xbe, + 0x2d, 0x8e, 0x15, 0x09, 0xc0, 0x14, 0xac, 0x05, 0x5a, 0x9e, 0x1d, 0xb0, 0xba, 0xca, 0x19, + 0xba, 0x05, 0xaf, 0x3d, 0x29, 0x40, 0x1d, 0xa2, 0x3c, 0x35, 0x7e, 0xd5, 0xad, 0x53, 0x01, + 0x74, 0x56, 0xc6, 0x95, 0x3b, 0x4e, 0xc4, 0x50, 0xa3, 0xa0, 0x9d, 0x4d, 0x66, 0xf8, 0x76, + 0x52, 0x23, 0x47, 0x85, 0xdd, 0x19, 0xd3, 0x63, 0x55, 0x41, 0xfb, 0x51, 0x46, 0x06, 0x02, + 0x68, 0x3e, 0xa7, 0x65, 0x40, 0x54, 0x72, 0x02, 0x6a, 0xa4, 0x89, 0x97, 0x71, 0xef, 0x8b, + 0x76, 0x7d, 0x58, 0xbf, 0x72, 0x8b, 0x86, 0x6b, 0xca, 0xe4, 0x8e, 0x94, 0xb8, 0xe6, 0x85, + 0x2a, 0xc3, 0x14, 0x1b, 0xb3, 0x77, 0x9c, 0xe7, 0x1b, 0x56, 0x5e, 0xdf, 0x3b, 0x97, 0x64, + 0x42, 0xbd, 0xf8, 0xe7, 0x10, 0x7a, 0xbe, 0x85, 0x95, 0x28, 0xd9, 0xbd, 0x2f, 0x37, 0x08, + 0x0b, 0x92, 0xf0, 0xae, 0x27, 0x05, 0x2b, 0x55, 0x63, 0x45, 0x22, 0x23, 0x73, 0x40, 0x69, + 0x72, 0xf4, 0xaa, 0xb9, 0x21, 0xc0, 0x59, 0xed, 0x81, 0x21, 0x7b, 0x80, 0xfe, 0x3a, 0x50, + 0x57, 0x0a, 0x75, 0x0e, 0x1d, 0x36, 0xb0, 0x04, 0xf5, 0x6e, 0x30, 0x76, 0x91, 0x3d, 0xf5, + 0xcc, 0x1b, 0x05, 0xc7, 0xa4, 0x09, 0xf2, 0x90, 0xba, 0xda, 0xf2, 0x80, 0xe8, 0xd0, 0xa9, + 0x70, 0x5e, 0x2c, 0x5e, 0x4f, 0x20, 0x50, 0x30, 0x9f, 0x00, 0xbc, 0xff, 0xf8, 0x2d, 0x7a, + 0xa8, 0x81, 0x58, 0xfb, 0xf9, 0x6f, 0x84, 0x02, 0x65, 0xd9, 0x74, 0xd2, 0x20, 0x76, 0xe9, + 0x7e, 0xff, 0xb9, 0x33, 0x4f, 0x6c, 0xb1, 0xd3, 0x99, 0xd7, 0x95, 0x9e, 0xcf, 0x03, 0x31, + 0xbf, 0x2d, 0x2e, 0xcb, 0x74, 0x11, 0x22, 0x1e, 0x97, 0xa5, 0x9c, 0x44, 0x87, 0xd1, 0xdb, + 0xeb, 0x2e, 0x07, 0x51, 0x3c, 0xe5, 0xb3, 0x06, 0x76, 0xf3, 0xe1, 0x7b, 0x71, 0x39, 0xdf, + 0x1c, 0xcc, 0x61, 0xc8, 0x72, 0x78, 0xfe, 0x74, 0xb3, 0x04, 0x65, 0x0f, 0x49, 0x39, 0x29, + 0x35, 0x3f, 0x85, 0x61, 0x24, 0xae, 0x34, 0x93, 0xbd, 0x63, 0x8a, 0x80, 0x97, 0x17, 0x80, + 0x1a, 0x47, 0xfa, 0x21, 0x42, 0xa6, 0x6e, 0xad, 0xc8, 0xba, 0x74, 0xf9, 0x03, 0x33, 0xdf, + 0x22, 0x05, 0x70, 0xd9, 0x70, 0x9b, 0x58, 0x23, 0x60, 0xe6, 0x9a, 0x0a, 0xc2, 0x9b, 0xf3, + 0x28, 0x3c, 0x0b, 0xa1, 0xec, 0x60, 0x18, 0x64, 0x77, 0xe2, 0x86, 0x57, 0xaf, 0x15, 0x91, + 0x98, 0xe9, 0x7e, 0xfc, 0x5c, 0x59, 0x58, 0x4a, 0xd9, 0x09, 0xd7, 0x0b, 0x30, 0x3c, 0xcc, + 0xc9, 0x81, 0x70, 0xa8, 0x29, 0x9b, 0x3a, 0x67, 0x1d, 0x6c, 0xce, 0x17, 0xe0, 0x35, 0xcd, + 0x9e, 0xd2, 0xda, 0x3f, 0xd9, 0x0b, 0x04, 0xea, 0x8b, 0xb0, 0xb0, 0x8b, 0x65, 0x1a, 0xfe, + 0x63, 0x0b, 0x87, 0xb1, 0xc0, 0xa5, 0x36, 0x1c, 0x0d, 0x3e, 0xcb, 0x72, 0x1a, 0x85, 0x40, + 0xb3, 0x22, 0xe5, 0x84, 0xeb, 0x04, 0xaa, 0x1a, 0x79, 0xa7, 0x2b, 0xec, 0x68, 0x94, 0x58, + 0x55, 0xab, 0x5b, 0x98, 0xdd, 0x3e, 0xc6, 0x6c, 0x04, 0x84, 0xf0, 0xf3, 0x66, 0xcc, 0x3f, + 0xad, 0xf4, 0x50, 0xdf, 0xa4, 0xa3, 0x98, 0x2a, 0x02, 0xd8, 0xe5, 0x43, 0x70, 0xe0, 0xdc, + 0xec, 0x69, 0x21, 0x41, 0x9e, 0xac, 0xb9, 0x88, 0xaa, 0xc6, 0x00, 0x8e, 0xed, 0xa5, 0xb3, + 0xda, 0x78, 0x59, 0x0a, 0x15, 0xa5, 0x59, 0x49, 0xc7, 0xba, 0xc5, 0x69, 0xab, 0x45, 0x59, + 0x55, 0x52, 0x7d, 0x3f, 0x47, 0x54, 0x89, 0xfa, 0x8b, 0x8a, 0x77, 0xb8, 0x26, 0xf6, 0xbd, + 0x62, 0x38, 0x5d, 0x75, 0xdc, 0x26, 0x78, 0x67, 0xbf, 0xd3, 0x3e, 0x25, 0x46, 0x8f, 0x26, + 0x40, 0x53, 0x9e, 0xec, 0xdf, 0x3d, 0xf7, 0x98, 0xe5, 0x4a, 0x9a, 0xe6, 0x56, 0xc6, 0x1f, + 0x9e, 0xae, 0xf0, 0x31, 0xff, 0x5e, 0x49, 0x45, 0x41, 0xc3, 0x8f, 0xaf, 0x69, 0x73, 0x92, + 0x8c, 0x0e, 0x4a, 0xfd, 0x40, 0xfb, 0x63, 0x82, 0xee, 0xc6, 0x1c, 0xc1, 0x53, 0x6c, 0x1c, + 0x22, 0x95, 0xd1, 0x92, 0x11, 0x10, 0xcf, 0xfe, 0xf5, 0x83, 0xd6, 0x5f, 0x32, 0x3f, 0x8d, + 0xd5, 0x07, 0x2a, 0x7d, 0x30, 0x60, 0xf4, 0x7d, 0xd4, 0x42, 0x8a, 0x39, 0x47, 0x25, 0x87, + 0xed, 0xbc, 0x44, 0x3f, 0x3d, 0x16, 0xde, 0xc3, 0x68, 0x9e, 0x79, 0x36, 0xa5, 0xd6, 0x7d, + 0x28, 0xaa, 0x64, 0x3d, 0xa5, 0xe1, 0x74, 0x9c, 0xf7, 0x8c, 0xe2, 0x49, 0x44, 0x8f, 0x2a, + 0xf1, 0x60, 0xe3, 0x78, 0xa4, 0x86, 0x11, 0x09, 0x20, 0x38, 0x5e, 0x1f, 0x23, 0xac, 0x62, + 0x53, 0xe5, 0xbc, 0xaf, 0xe4, 0xba, 0xe5, 0x8b, 0xed, 0x19, 0xd2, 0xcf, 0x8e, 0xab, 0x41, + 0x7f, 0x1e, 0x44, 0xe9, 0x29, 0x4c, 0xe5, 0x06, 0x33, 0xc2, 0x15, 0x1a, 0x11, 0xe8, 0xe2, + 0x1a, 0x3d, 0x86, 0x34, 0x71, 0xd0, 0xc0, 0x9b, 0x76, 0x1a, 0x0a, 0x99, 0xce, 0x6e, 0x6c, + 0x95, 0x5c, 0x84, 0x9b, 0xfe, 0x87, 0x08, 0x33, 0x00, 0x8e, 0x33, 0x7b, 0x0a, 0x0e, 0x5c, + 0xea, 0x8f, 0x35, 0xfb, 0x25, 0x4e, 0x84, 0x83, 0x28, 0x7b, 0x02, 0xb5, 0x9b, 0xb1, 0x9b, + 0xf7, 0xcb, 0xce, 0x46, 0xea, 0x09, 0x64, 0x75, 0x57, 0x67, 0xe8, 0x21, 0xcc, 0xfa, 0xb0, + 0xa5, 0x54, 0x68, 0xb5, 0x9a, 0xc8, 0xec, 0x48, 0x11, 0xe3, 0x85, 0x99, 0xed, 0x5b, 0xe1, + 0x1f, 0x6f, 0xbf, 0x3e, 0x98, 0xdc, 0x33, 0x20, 0x94, 0xd0, 0xde, 0x85, 0x28, 0x8a, 0xdf, + 0xbf, 0xb9, 0x1b, 0xb5, 0xd5, 0x04, 0x7d, 0x78, 0x84, 0x96, 0x87, 0x4e, 0x05, 0xbc, 0xa6, + 0xc7, 0x59, 0xde, 0xbe, 0x65, 0x41, 0x0d, 0x66, 0x31, 0x9c, 0x2e, 0xa7, 0x8e, 0xb2, 0xce, + 0x0b, 0x33, 0x32, 0xe7, 0x1f, 0x4e, 0x44, 0x5e, 0x50, 0xee, 0x60, 0x66, 0xa6, 0xe0, 0xda, + 0xe2, 0xb8, 0x3f, 0xb8, 0xcc, 0xd5, 0x95, 0xef, 0x2b, 0xb3, 0x8c, 0xd3, 0xa9, 0xca, 0xa0, + 0xb6, 0x56, 0xa5, 0x33, 0x2a, 0x2a, 0x0b, 0xac, 0x98, 0x62, 0xc4, 0xce, 0x5a, 0xf9, 0x6b, + 0x06, 0xd0, 0x53, 0xf7, 0x7c, 0x11, 0xea, 0xbf, 0xa6, 0x99, 0xe7, 0xe3, 0x94, 0xa1, 0x7a, + 0x90, 0xaa, 0x48, 0x57, 0xb8, 0x39, 0x8d, 0xd9, 0xf5, 0xbd, 0x4e, 0x82, 0x53, 0x7d, 0x32, + 0xe4, 0xcf, 0x50, 0x63, 0x14, 0x2e, 0x12, 0x9e, 0xaf, 0x05, 0xf6, 0x2c, 0x5f, 0x3f, 0x02, + 0xc7, 0x00, 0x4a, 0x15, 0x11, 0x12, 0xb6, 0x28, 0xfd, 0x21, 0x5a, 0xde, 0x3b, 0xb9, 0xd3, + 0x7e, 0x01, 0xbf, 0x4c, 0x07, 0xa2, 0x21, 0x59, 0xca, 0xa0, 0xa7, 0xf1, 0x7f, 0x48, 0x31, + 0x8d, 0xba, 0xa8, 0x5a, 0x08, 0xb1, 0x99, 0x44, 0x38, 0x6b, 0xf1, 0x2e, 0x61, 0xfe, 0x75, + 0xf4, 0x06, 0x0d, 0xb3, 0x85, 0x13, 0xc8, 0xa1, 0xad, 0x35, 0xe8, 0xd5, 0xaa, 0xf3, 0x6d, + 0x24, 0x25, 0xe4, 0x4a, 0xea, 0x33, 0x9f, 0xe6, 0x70, 0xe9, 0x0d, 0x07, 0x65, 0x65, 0x63, + 0x89, 0xc1, 0x37, 0x51, 0xda, 0x4f, 0xad, 0x86, 0x18, 0xcc, 0x6b, 0x3b, 0xff, 0x7a, 0x25, + 0xc9, 0x6f, 0x15, 0x7a, 0x09, 0x26, 0x1f, 0x78, 0x4b, 0x06, 0xb4, 0x09, 0x95, 0x23, 0x9d, + 0x14, 0x49, 0x61, 0x9b, 0x3a, 0x1e, 0x70, 0x97, 0xed, 0xc7, 0x71, 0x11, 0x6d, 0x0e, 0x81, + 0x5e, 0x86, 0x6a, 0xee, 0xec, 0x19, 0xa0, 0xa0, 0xd7, 0x2c, 0x4c, 0xfe, 0x26, 0x1e, 0x0c, + 0xae, 0x3f, 0xb3, 0x32, 0x00, 0xcc, 0xd5, 0x64, 0x22, 0x73, 0x94, 0xda, 0xc1, 0x21, 0x1c, + 0xed, 0xf4, 0x7b, 0x61, 0x8f, 0x62, 0x5f, 0xc3, 0x5b, 0x50, 0xf6, 0x08, 0xb1, 0x2b, 0xf5, + 0xc0, 0x00, 0x14, 0xe8, 0x61, 0x8d, 0x60, 0x34, 0x2f, 0xf7, 0x91, 0xe7, 0xa1, 0xb1, 0xd9, + 0x0b, 0x66, 0xa6, 0x1a, 0x83, 0xbe, 0x21, 0xa6, 0xbd, 0xcc, 0x62, 0x19, 0x5b, 0xa0, 0xd2, + 0x60, 0xdd, 0xf9, 0x94, 0x2f, 0x3b, 0x1f, 0xc5, 0xe5, 0xc6, 0xd7, 0x5a, 0x1b, 0xce, 0xe9, + 0x17, 0x37, 0xaa, 0x34, 0xd6, 0x49, 0xff, 0xbd, 0xd5, 0x81, 0x4a, 0xcb, 0xcd, 0xfb, 0xf6, + 0xbe, 0xf7, 0x2b, 0x46, 0x57, 0xa7, 0x55, 0xc9, 0xdf, 0xda, 0x3e, 0xa5, 0x10, 0x31, 0xc6, + 0x68, 0x34, 0xc4, 0x7e, 0x98, 0x1b, 0xbf, 0xf4, 0xa7, 0x33, 0xc2, 0x6b, 0xef, 0xac, 0x02, + 0xd1, 0x6a, 0xf4, 0xbf, 0x9b, 0x9e, 0x16, 0x2a, 0x0b, 0x1e, 0xbc, 0x8b, 0x99, 0x16, 0x04, + 0xfd, 0xea, 0x38, 0xf4, 0x37, 0xfe, 0xb8, 0xed, 0x7f, 0x45, 0xcc, 0xe7, 0x03, 0x9e, 0x14, + 0x05, 0x8b, 0xd4, 0xb7, 0xe8, 0x87, 0xdd, 0x81, 0xd2, 0x0f, 0xfa, 0x72, 0x6a, 0xfa, 0x9c, + 0x65, 0x0d, 0x9e, 0xea, 0x83, 0x8a, 0x50, 0x54, 0xa3, 0xa4, 0x02, 0x7f, 0x05, 0x79, 0x91, + 0x4b, 0x1e, 0x55, 0xab, 0x7c, 0xa0, 0x74, 0x1b, 0xa3, 0x6c, 0x20, 0x2f, 0x00, 0x00, 0x00, + 0x00, 0x93, 0x75, 0xef, 0xe3, 0xff, 0xc0, 0x3f, 0x7a, 0x2f, 0x5b, 0x89, 0x1a, 0x08, 0xe6, + 0x1a, 0x37, 0xc7, 0x59, 0xc3, 0x67, 0x81, 0xc9, 0x08, 0xee, 0x93, 0xb9, 0xbf, 0xab, 0x36, + 0x00, 0xe7, 0x18, 0x65, 0xb0, 0x97, 0xb7, 0xe9, 0x06, 0x95, 0xd8, 0xa9, 0x92, 0x2a, 0x80, + 0x06, 0x2e, 0x93, 0x86, 0x9b, 0x7e, 0xc9, 0xa0, 0x2a, 0xd1, 0x3e, 0x69, 0x85, 0x20, 0x60, + 0xd1, 0xce, 0x09, 0x8f, 0x27, 0xeb, 0xba, 0xc3, 0x26, 0xc2, 0xc9, 0x6d, 0x30, 0x74, 0xfa, + 0xa2, 0xfe, 0xc8, 0x49, 0x43, 0x5a, 0x14, 0x78, 0x17, 0xab, 0x98, 0x43, 0x35, 0x36, 0x36, + 0xc7, 0xca, 0xcf, 0x59, 0xf9, 0x28, 0x1c, 0x6a, 0xe6, 0xb8, 0x4a, 0x77, 0x2b, 0x71, 0xb4, + 0xee, 0x32, 0x1f, 0x2f, 0xfa, 0x62, 0xf1, 0x30, 0xa2, 0x65, 0x41, 0xe6, 0x9d, 0x21, 0xa1, + 0xa5, 0x0c, 0x98, 0x0a, 0x4c, 0x72, 0x8a, 0x2d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x77, 0x47, 0xe5, 0xa6, 0x2c, 0x4f, 0xa5, 0xc9, 0x34, 0xe8, 0x02, 0xd3, + 0x68, 0x82, 0x47, 0x85, 0x92, 0xd9, 0x59, 0x74, 0x56, 0x42, 0xa9, 0xc6, 0xef, 0x99, 0x6d, + 0x83, 0xfb, 0xd1, 0xfa, 0x3c, 0x42, 0xc2, 0xab, 0x28, 0x59, 0x03, 0x91, 0x81, 0xb0, 0x18, + 0xed, 0xe2, 0x64, 0xa2, 0x2d, 0xcb, 0x23, 0x54, 0x43, 0xaf, 0xfb, 0x4b, 0x97, 0x10, 0x4a, + 0xa3, 0x07, 0x29, 0xa9, 0xa7, 0xc8, 0x1e, 0x00, ], // Burn block &[ - 0x04, 0x00, 0x00, 0x00, 0x27, 0xe3, 0x01, 0x34, 0xd6, 0x20, 0xe9, 0xfe, 0x61, 0xf7, 0x19, - 0x93, 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, 0x76, - 0xf9, 0x0e, 0xd8, 0x11, 0x9f, 0x02, 0x18, 0x0b, 0xf8, 0x73, 0x87, 0x12, 0x3e, 0x5b, 0xf1, - 0xff, 0x12, 0x2a, 0xd2, 0x7e, 0x1d, 0x26, 0x5c, 0xd4, 0xde, 0x75, 0x6f, 0xe5, 0xf6, 0xca, - 0x98, 0xaf, 0x7d, 0x82, 0x2d, 0xd7, 0xe4, 0x8c, 0x8b, 0x3d, 0x63, 0xe9, 0x2b, 0x4e, 0x01, - 0x7f, 0x6f, 0xae, 0x46, 0xfc, 0x20, 0x6e, 0x93, 0x75, 0x4b, 0xbd, 0xa0, 0xba, 0x7c, 0x5b, - 0x18, 0xc2, 0xfb, 0x1d, 0x3a, 0x9f, 0x81, 0x2f, 0xc3, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0xa6, 0x0c, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0xd6, 0x6d, 0x19, 0xa5, 0x70, 0xa9, 0xa0, 0x90, 0x90, 0x14, + 0x16, 0x59, 0xbf, 0x85, 0xed, 0x88, 0x6b, 0x6d, 0xa9, 0xea, 0x09, 0x5a, 0x53, 0x15, 0xe3, + 0x0b, 0x96, 0x5f, 0xb2, 0x5b, 0xab, 0x3a, 0x71, 0xc4, 0x89, 0xea, 0x21, 0xf0, 0x5d, 0xc8, + 0x44, 0xfe, 0x68, 0x13, 0xf1, 0xbb, 0x44, 0x6f, 0x36, 0x27, 0x7e, 0xf9, 0x03, 0x06, 0x58, + 0x41, 0x7f, 0xfc, 0x60, 0x3e, 0x8c, 0xe6, 0xdc, 0xda, 0xcd, 0x52, 0x94, 0x80, 0x27, 0xa5, + 0x82, 0xb3, 0xc1, 0x1b, 0x47, 0x07, 0xf4, 0x76, 0xf9, 0x42, 0xb3, 0x4f, 0xf7, 0x7e, 0xf4, + 0x63, 0xb2, 0xa7, 0x2a, 0x40, 0x0c, 0xf6, 0xa8, 0x09, 0x2b, 0x0a, 0x10, 0x4a, 0x4d, 0x0f, + 0x0f, 0x0f, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1590,1263 +1600,1264 @@ pub const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, - 0xff, 0xff, 0xff, 0x02, 0x51, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, + 0xff, 0xff, 0xff, 0x02, 0x53, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, - 0xca, 0xe4, 0xbf, 0xa4, 0xba, 0xfc, 0x37, 0x22, 0xd8, 0xf9, 0x3c, 0x6c, 0xfb, 0xcc, 0xba, - 0xd7, 0x94, 0x44, 0x58, 0x85, 0x10, 0xba, 0x7a, 0x9d, 0x8e, 0xa3, 0x90, 0x6e, 0x7f, 0xdc, - 0xa8, 0x7a, 0x06, 0x13, 0x03, 0x39, 0x58, 0x9a, 0x79, 0x4c, 0x5a, 0x25, 0x5a, 0x2c, 0xd2, - 0xf8, 0x68, 0x30, 0x8b, 0xcc, 0x89, 0x88, 0x3a, 0x44, 0x0b, 0x4d, 0xa1, 0xbc, 0xd1, 0xbd, - 0x74, 0xdb, 0x3d, 0xbf, 0x6d, 0x78, 0xf8, 0x78, 0x34, 0x11, 0x9b, 0xde, 0x3d, 0x5e, 0x4c, - 0x3f, 0x2f, 0x8f, 0x4e, 0xda, 0xda, 0x54, 0xe2, 0x9f, 0x1c, 0x35, 0x44, 0x41, 0x84, 0x83, - 0x8e, 0xab, 0xd5, 0xa0, 0x9f, 0xf0, 0xc5, 0xd9, 0xdd, 0x94, 0x3e, 0xe1, 0xcb, 0x9d, 0x09, - 0x3c, 0x98, 0x56, 0x33, 0x3f, 0x49, 0x3a, 0x4b, 0xfc, 0x72, 0xda, 0xf2, 0xa6, 0xe6, 0xbb, - 0x44, 0x25, 0x13, 0x4b, 0x56, 0x89, 0x0e, 0x70, 0x76, 0x51, 0xef, 0x2d, 0x8f, 0xa2, 0x49, - 0x16, 0xc5, 0xfd, 0xd2, 0x70, 0xdd, 0x87, 0xc2, 0x1c, 0x7b, 0xd6, 0xd9, 0xa3, 0xd4, 0xe1, - 0x60, 0xbe, 0x2f, 0xad, 0xf0, 0x54, 0xb4, 0xd7, 0x0d, 0x3b, 0xcf, 0x02, 0x31, 0x1e, 0x0d, - 0xcb, 0x8a, 0x95, 0xe7, 0x91, 0xaf, 0xa3, 0xfa, 0x85, 0xbf, 0x90, 0x79, 0x4b, 0x27, 0x62, - 0x01, 0x76, 0x23, 0x40, 0x39, 0x5b, 0x12, 0x97, 0x95, 0x56, 0xe9, 0xd7, 0x1f, 0x4e, 0x1a, - 0xaf, 0x76, 0x00, 0xff, 0x87, 0x8a, 0xdb, 0x86, 0xf6, 0xc7, 0x17, 0x40, 0x44, 0x6a, 0xaf, - 0x38, 0xa0, 0xc1, 0xf3, 0xe3, 0x3f, 0xfa, 0xfa, 0x47, 0x00, 0xeb, 0x10, 0x14, 0xb0, 0xaf, - 0x94, 0x39, 0x03, 0xa8, 0x30, 0x17, 0xa7, 0xe1, 0x74, 0x7b, 0x95, 0xb8, 0x29, 0xfb, 0xfd, - 0x65, 0xee, 0xba, 0xe5, 0x9e, 0xfa, 0x63, 0xa2, 0x61, 0x5e, 0xae, 0xd2, 0xca, 0xb8, 0xcb, - 0xe6, 0x69, 0x62, 0x90, 0xdb, 0x6f, 0xd9, 0x59, 0x91, 0xf2, 0x03, 0x07, 0x6a, 0x27, 0xa6, - 0x92, 0x65, 0x25, 0xd4, 0x78, 0x39, 0xdc, 0xc5, 0x54, 0xf4, 0x2c, 0x41, 0x3b, 0x9a, 0xc0, - 0x8b, 0x9b, 0x7b, 0xa2, 0x3b, 0xfb, 0x6b, 0xc6, 0xe8, 0x3f, 0x31, 0x9c, 0xa3, 0xb0, 0x79, - 0xf1, 0xb4, 0xf0, 0xf9, 0xb8, 0xe8, 0xfa, 0x32, 0xcd, 0x58, 0x9a, 0xc9, 0xaf, 0xe3, 0xa0, - 0x28, 0x2b, 0x9b, 0x93, 0x1b, 0x09, 0x67, 0xc2, 0x66, 0xc9, 0xad, 0xce, 0x66, 0x3f, 0x59, - 0xed, 0x95, 0xaa, 0xa6, 0x5c, 0x5e, 0x90, 0x67, 0xb0, 0xc9, 0x81, 0x8d, 0x96, 0xcd, 0x89, - 0xd1, 0x62, 0x95, 0xf4, 0x47, 0x2b, 0xa1, 0x50, 0x48, 0x95, 0x62, 0xfc, 0x02, 0x5f, 0xa6, - 0xca, 0x5c, 0x6a, 0x2c, 0xef, 0xdd, 0x26, 0x21, 0x9b, 0xb3, 0xc5, 0x0d, 0x0e, 0xf5, 0x76, - 0xb3, 0x1a, 0x6d, 0x87, 0x63, 0x37, 0xbb, 0x4d, 0x27, 0xa4, 0xa9, 0x72, 0x70, 0x22, 0xce, - 0xa8, 0x15, 0x9d, 0xdb, 0x3b, 0x01, 0x56, 0xe0, 0x15, 0x46, 0x03, 0xb6, 0xb5, 0xda, 0xae, - 0x01, 0x12, 0xe3, 0x44, 0x3d, 0x82, 0x0f, 0xa2, 0x56, 0xc0, 0x7d, 0xe9, 0x00, 0xb5, 0x8a, - 0xf3, 0x52, 0xb5, 0x34, 0xbb, 0x5b, 0x4d, 0x9b, 0x6f, 0xbc, 0x93, 0xa9, 0x07, 0x63, 0x8d, - 0x48, 0xe4, 0x7d, 0xa2, 0xa0, 0x6a, 0x0f, 0x84, 0xb9, 0x8c, 0xd7, 0xe3, 0xa5, 0x2c, 0x8e, - 0xbd, 0xec, 0xb2, 0xec, 0xe6, 0x4e, 0xf6, 0xae, 0x07, 0xba, 0xcf, 0xcd, 0xc5, 0xce, 0xbd, - 0xf6, 0xc1, 0x8f, 0xa0, 0x50, 0x83, 0xec, 0x60, 0x0d, 0xa2, 0xb7, 0x65, 0x7d, 0xdd, 0xcd, - 0x8e, 0x6e, 0xda, 0xfc, 0xee, 0x5d, 0xe1, 0x98, 0x27, 0x70, 0xf1, 0x8c, 0x5c, 0xa1, 0x18, - 0x1c, 0x7b, 0x53, 0x1e, 0xa0, 0x9c, 0xd2, 0xb9, 0x25, 0xfb, 0x16, 0xa7, 0x12, 0xd4, 0xe9, - 0xed, 0x53, 0x8d, 0x1c, 0xbd, 0xcc, 0x12, 0x8f, 0x72, 0xec, 0xc0, 0x93, 0xba, 0xcb, 0xaf, - 0xaf, 0x3b, 0xef, 0x5f, 0x1e, 0xb1, 0xd7, 0x0d, 0x5d, 0xc8, 0xe1, 0xfb, 0x25, 0x9a, 0xfa, - 0x0c, 0xb0, 0x18, 0x3d, 0x7b, 0x53, 0x1e, 0x60, 0x36, 0xdf, 0xb8, 0x32, 0x14, 0x81, 0x6d, - 0xda, 0xc0, 0xbb, 0xc6, 0xe8, 0xf5, 0xa0, 0x36, 0xcf, 0x21, 0xf4, 0xa8, 0xd8, 0x48, 0x56, - 0x72, 0x78, 0x00, 0xe2, 0xda, 0xc1, 0xa4, 0xde, 0x38, 0x50, 0x94, 0x35, 0x79, 0x95, 0xd7, - 0x97, 0x8e, 0xfe, 0x22, 0x9f, 0xca, 0x58, 0x14, 0xee, 0x42, 0x29, 0x50, 0x9f, 0x76, 0xb6, - 0x80, 0x81, 0x0b, 0x93, 0x00, 0x5c, 0xd9, 0xc8, 0xfc, 0x50, 0x74, 0x3e, 0x23, 0xa0, 0x83, - 0xef, 0x98, 0x33, 0x4c, 0x2c, 0x9c, 0x81, 0x4f, 0x21, 0xf3, 0xaf, 0xce, 0xbf, 0xfc, 0xf7, - 0xfa, 0x0c, 0x7a, 0xdd, 0x4c, 0xb2, 0x6a, 0xe0, 0x19, 0xde, 0x6e, 0xe2, 0x84, 0xee, 0xeb, - 0xb6, 0x4c, 0xcc, 0xf0, 0x7b, 0x3b, 0x69, 0x6b, 0x98, 0xef, 0x4a, 0xb0, 0x95, 0xa7, 0x8f, - 0xc1, 0x58, 0xd0, 0xe1, 0x34, 0x63, 0xed, 0x22, 0x6d, 0xe5, 0x84, 0x7b, 0x59, 0x6a, 0xb7, - 0xdb, 0xe5, 0x1b, 0x3b, 0xb3, 0xa6, 0xb2, 0x4f, 0x85, 0xd1, 0x24, 0xbb, 0xb6, 0x2c, 0x15, - 0x69, 0x0a, 0x32, 0xde, 0xe3, 0x2d, 0x08, 0x9c, 0x6c, 0x89, 0x80, 0x4e, 0xab, 0xef, 0x6f, - 0x3c, 0x8f, 0x67, 0x7f, 0xfb, 0xf9, 0x13, 0xe3, 0xa0, 0x94, 0x66, 0xc9, 0x94, 0x41, 0x31, - 0xbc, 0xa9, 0x9a, 0x8f, 0x0d, 0x46, 0x90, 0xc3, 0x3d, 0xa8, 0xba, 0x1a, 0x52, 0xa4, 0x1f, - 0x95, 0xb0, 0x60, 0xd3, 0x82, 0x92, 0xe1, 0xde, 0x1f, 0x38, 0xf8, 0x1a, 0xb4, 0xe3, 0xa1, - 0xac, 0x9f, 0x58, 0x86, 0x37, 0xf4, 0x9f, 0xe6, 0xbb, 0x66, 0x47, 0x5b, 0x6d, 0x70, 0x1d, - 0x15, 0x2f, 0x7d, 0x55, 0x45, 0x61, 0x20, 0xce, 0x55, 0xe4, 0x89, 0xc8, 0x95, 0x4e, 0x15, - 0x4e, 0xcf, 0x05, 0xbd, 0xac, 0x28, 0xf1, 0x4d, 0x64, 0x00, 0x36, 0xb6, 0xbe, 0xdf, 0x14, - 0x91, 0x32, 0xf5, 0x10, 0x0a, 0x40, 0xeb, 0x66, 0xa2, 0x58, 0xf4, 0xeb, 0xc9, 0xd6, 0x2d, - 0x7f, 0xb3, 0xd7, 0x40, 0xf4, 0x74, 0xe0, 0x4a, 0xe4, 0x00, 0xd2, 0xee, 0x72, 0xbc, 0xd2, - 0x2f, 0xcd, 0xa3, 0x3d, 0x10, 0xcd, 0x31, 0x4b, 0x2b, 0xb9, 0x12, 0xed, 0xdc, 0x04, 0xb7, - 0x5c, 0x38, 0xd7, 0x71, 0xd4, 0x34, 0x65, 0x39, 0xdd, 0xfe, 0x1b, 0x73, 0x05, 0xb5, 0x27, - 0xc7, 0x53, 0x64, 0xb6, 0x7b, 0x16, 0x97, 0xba, 0xbf, 0x13, 0x4e, 0x5c, 0xc8, 0xf4, 0xcf, - 0x5a, 0x5c, 0x12, 0x96, 0xb5, 0xd5, 0x7e, 0x73, 0x7f, 0x4a, 0x64, 0x55, 0xa0, 0x7d, 0x00, - 0xd7, 0x47, 0x8c, 0x9f, 0x97, 0xcd, 0x55, 0x7f, 0x52, 0x55, 0x30, 0x2f, 0x9a, 0x34, 0x09, - 0x59, 0xa4, 0x04, 0x27, 0xb1, 0x90, 0xbe, 0xdd, 0xba, 0x2b, 0xbf, 0xfd, 0xd1, 0xf3, 0x2a, - 0xba, 0xb5, 0x34, 0xbd, 0xb4, 0x4f, 0x66, 0x15, 0x27, 0x88, 0xb3, 0x8e, 0x91, 0xde, 0x9c, - 0xd5, 0x2c, 0x2c, 0xa9, 0x36, 0xc7, 0xa1, 0x08, 0x28, 0xc3, 0x18, 0xdc, 0xce, 0xa1, 0xf1, - 0xff, 0x0d, 0x89, 0xaf, 0x8f, 0xa6, 0x0d, 0xd4, 0x0b, 0x1b, 0x62, 0x5a, 0x3b, 0xc1, 0x1c, - 0x4b, 0x52, 0x37, 0x81, 0x0c, 0xc5, 0x08, 0xb4, 0x72, 0xf6, 0x96, 0xf5, 0x8c, 0xa2, 0x4d, - 0x6b, 0x63, 0xe5, 0x28, 0x26, 0xdd, 0x61, 0xc7, 0x85, 0xfa, 0x94, 0x85, 0xde, 0x58, 0xdd, - 0x69, 0xae, 0x6d, 0x05, 0x21, 0x19, 0xa1, 0x5c, 0xb4, 0x8b, 0x22, 0xd3, 0x13, 0xc0, 0x70, - 0x50, 0x23, 0x19, 0xd9, 0x38, 0x99, 0x25, 0x7a, 0x03, 0xa1, 0x56, 0x6c, 0x57, 0x67, 0x16, - 0x07, 0xe7, 0x7d, 0xed, 0xf3, 0x45, 0xfb, 0x23, 0x9d, 0x9f, 0x78, 0xc4, 0x36, 0x14, 0x2f, - 0x45, 0x58, 0x52, 0x29, 0xd7, 0x40, 0x36, 0xac, 0x36, 0x14, 0x11, 0x72, 0x8c, 0xe8, 0x08, - 0x6f, 0x5b, 0x7e, 0x3e, 0x76, 0x40, 0x57, 0xcd, 0xa1, 0x36, 0x30, 0x7b, 0x06, 0x16, 0xe5, - 0xba, 0xf7, 0xdb, 0xec, 0xff, 0x12, 0xe3, 0x91, 0x62, 0xc3, 0x75, 0x26, 0x68, 0x73, 0x38, - 0xc7, 0xcf, 0x26, 0xe1, 0xc9, 0x2b, 0xc3, 0xa6, 0x6b, 0x12, 0x6d, 0x98, 0x3d, 0xe0, 0x80, - 0x37, 0x7b, 0x68, 0xc8, 0x9a, 0xfd, 0x3e, 0x85, 0x64, 0x77, 0x5f, 0xe5, 0x53, 0xa3, 0xfd, - 0xe1, 0xe8, 0x48, 0x42, 0x6f, 0xaa, 0xdb, 0x8f, 0x8a, 0x69, 0x55, 0x47, 0xfa, 0x75, 0xcf, - 0xd7, 0x15, 0x3e, 0x57, 0xfa, 0x74, 0x2e, 0xcb, 0x1c, 0x7d, 0x37, 0xf9, 0xb1, 0xc9, 0xd8, - 0x71, 0x21, 0x78, 0x8e, 0xc3, 0xe3, 0x79, 0x97, 0x9d, 0x8b, 0x22, 0x4a, 0x0f, 0x63, 0x02, - 0xbe, 0x5f, 0x31, 0x8e, 0xd6, 0x03, 0xe7, 0xd8, 0x94, 0x6a, 0x0c, 0x92, 0x93, 0x57, 0xdc, - 0x60, 0xc7, 0xac, 0xc5, 0x0a, 0x7f, 0x74, 0x63, 0x98, 0x06, 0x29, 0x0a, 0x82, 0x03, 0xa0, - 0x20, 0x10, 0x64, 0x1e, 0x98, 0xea, 0x1a, 0x1b, 0x18, 0x5f, 0xbf, 0x56, 0xd7, 0x48, 0xa3, - 0x4e, 0x61, 0x0c, 0xa9, 0x87, 0xef, 0x35, 0xa1, 0x42, 0x55, 0xcf, 0x73, 0x07, 0xb7, 0x14, - 0xb0, 0xdf, 0x26, 0x6d, 0xf2, 0x10, 0x4d, 0xa5, 0xcd, 0x1d, 0xe5, 0x1c, 0x1f, 0xb9, 0x64, - 0x17, 0x99, 0x9e, 0xf6, 0xb7, 0x56, 0x29, 0xd1, 0xe8, 0x9a, 0x5e, 0x3c, 0x40, 0xc2, 0xe5, - 0xfc, 0x9d, 0x34, 0x10, 0x88, 0x14, 0x9c, 0xc6, 0xf6, 0x91, 0xe7, 0x18, 0xfe, 0x24, 0x3f, - 0xa7, 0x50, 0x3b, 0x11, 0xd7, 0xf0, 0xba, 0x7f, 0xcf, 0x8d, 0xb6, 0x92, 0x6e, 0x5a, 0x22, - 0x65, 0xf4, 0x34, 0xd7, 0x2c, 0x77, 0x03, 0xf5, 0xc9, 0x9b, 0xc2, 0x3b, 0xc9, 0xe5, 0xce, - 0x58, 0xa4, 0x7f, 0xf1, 0xdb, 0xcb, 0x89, 0x5d, 0xac, 0x93, 0x8a, 0xb4, 0x55, 0x57, 0x4d, - 0x0f, 0x39, 0x59, 0x46, 0xa7, 0x15, 0x3d, 0x61, 0xe3, 0x56, 0x47, 0x26, 0xe8, 0xb9, 0xe5, - 0x6e, 0xf3, 0xa7, 0x24, 0xd5, 0x45, 0xf7, 0x73, 0x55, 0x41, 0xe0, 0x8d, 0x5b, 0xc3, 0xb5, - 0x4d, 0xe9, 0xc7, 0x9a, 0xa9, 0x93, 0x13, 0x7c, 0xda, 0xc8, 0xfc, 0x27, 0x86, 0xb8, 0x35, - 0xf8, 0x07, 0xfa, 0x0f, 0x4c, 0x37, 0xe9, 0x24, 0x6d, 0xee, 0x42, 0x25, 0x20, 0x58, 0xb1, - 0xd0, 0x91, 0x49, 0x9c, 0xf7, 0x66, 0x44, 0x51, 0x2d, 0x60, 0x7d, 0x42, 0xd0, 0xdf, 0xda, - 0x06, 0xdf, 0x41, 0x1a, 0xce, 0xd3, 0xd4, 0x8f, 0x21, 0x34, 0x83, 0xa7, 0x19, 0x12, 0x5a, - 0x96, 0x5e, 0x5e, 0x3c, 0x5e, 0xf0, 0xee, 0x67, 0xbb, 0x44, 0x8e, 0x29, 0x0b, 0xac, 0xb3, - 0xe6, 0x9a, 0x1e, 0xdc, 0xb4, 0xee, 0xb4, 0x3f, 0x7e, 0x38, 0x51, 0x63, 0x74, 0xb3, 0x51, - 0x72, 0x0a, 0x6f, 0x34, 0xd8, 0x3c, 0x34, 0x09, 0x58, 0x5d, 0x88, 0xa9, 0x10, 0xf0, 0x21, - 0x4a, 0xd0, 0x7f, 0x0a, 0xb7, 0x2c, 0xfa, 0xbb, 0x1b, 0xcf, 0x21, 0x82, 0xdd, 0xa2, 0x96, - 0x33, 0xdc, 0xdd, 0x47, 0xf4, 0x43, 0x82, 0xea, 0xa1, 0xf5, 0xd9, 0x02, 0xb1, 0x15, 0x1c, - 0x44, 0x31, 0x11, 0xf2, 0xfd, 0x8e, 0xba, 0x04, 0x72, 0xa9, 0xb0, 0xbd, 0x06, 0xed, 0x2a, - 0x3a, 0x43, 0x14, 0xc7, 0x70, 0xa9, 0x3d, 0x28, 0xee, 0x3f, 0x16, 0x13, 0x10, 0x2b, 0x3e, - 0x8d, 0x07, 0x59, 0x48, 0x91, 0xe8, 0x5b, 0x2a, 0x86, 0x47, 0xea, 0x47, 0xd9, 0xb5, 0xb8, - 0x4d, 0xed, 0xf0, 0x0e, 0x1f, 0x95, 0xf9, 0x4f, 0x5a, 0xb1, 0x35, 0xda, 0x2c, 0xbd, 0xd4, - 0x08, 0x31, 0x5f, 0xe0, 0x22, 0x84, 0x70, 0xf6, 0x93, 0x08, 0x47, 0x21, 0xe2, 0xf8, 0x37, - 0xc4, 0x26, 0x67, 0xae, 0x1b, 0xa3, 0x16, 0xb8, 0x88, 0x38, 0x0a, 0x59, 0xcf, 0x92, 0xb7, - 0x63, 0xc9, 0x61, 0xa5, 0x2f, 0xdf, 0x51, 0x5c, 0x58, 0xcc, 0x4e, 0xb3, 0xab, 0xa7, 0xe9, - 0x5a, 0x16, 0xb4, 0xe8, 0x47, 0x2e, 0xd8, 0x8b, 0xf1, 0x25, 0x72, 0x26, 0x4c, 0x65, 0x33, - 0x2f, 0xa1, 0x13, 0x4f, 0x38, 0xe9, 0x56, 0x80, 0xb9, 0xf5, 0xdf, 0x96, 0x9b, 0xaa, 0xfe, - 0x01, 0x87, 0xe8, 0x0e, 0x98, 0xa0, 0xb6, 0x90, 0x45, 0x80, 0x2b, 0x9a, 0x6c, 0xc0, 0x94, - 0xbb, 0x6f, 0xea, 0x14, 0xbd, 0x9d, 0xab, 0x9d, 0xe3, 0x9a, 0x08, 0x80, 0xa2, 0x19, 0x21, - 0x35, 0x33, 0xb9, 0x3c, 0x5f, 0xb4, 0x6b, 0xf0, 0xef, 0xec, 0xe8, 0x8d, 0x4a, 0xcf, 0xdc, - 0x84, 0x4d, 0xb5, 0xe8, 0xaa, 0xac, 0xf5, 0xd0, 0x4f, 0x46, 0xb7, 0xf8, 0x8f, 0x46, 0x3d, - 0x92, 0x97, 0x57, 0xc9, 0xd4, 0xdf, 0x96, 0x9c, 0x9d, 0x8c, 0x3e, 0x4e, 0x78, 0xe4, 0xcf, - 0xd6, 0xcd, 0xf7, 0x05, 0x75, 0x21, 0x6c, 0x1b, 0xf9, 0x5f, 0x70, 0x0e, 0xed, 0x8b, 0x56, - 0x6b, 0x78, 0xf5, 0x43, 0x0e, 0x8e, 0x7f, 0x90, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x89, 0xb9, 0x7e, 0x92, 0x7c, 0xb6, 0xce, 0xd7, 0xde, 0xa4, 0x52, 0x2e, 0x4d, - 0x92, 0x78, 0x5d, 0xad, 0x6d, 0x63, 0x95, 0x4f, 0xb2, 0xec, 0xba, 0xca, 0x16, 0x80, 0x1c, - 0xe9, 0x2a, 0xff, 0x0c, 0xfd, 0xe0, 0x1c, 0x28, 0x95, 0x9d, 0xe4, 0xbe, 0xa6, 0xea, 0x9c, - 0x3f, 0xd1, 0x95, 0x44, 0x48, 0x2f, 0xb9, 0x2e, 0x1f, 0x8c, 0xd8, 0xb2, 0xc9, 0xbe, 0xda, - 0x00, 0xc6, 0xc1, 0x77, 0xf6, 0xae, 0xa7, 0x67, 0x39, 0x8b, 0x03, 0x00, 0x15, 0x80, 0x70, - 0xa4, 0x55, 0x24, 0xf2, 0xc7, 0xa2, 0xe9, 0xf0, 0x75, 0x18, 0x1a, 0x89, 0xc2, 0x60, 0xe2, - 0x9c, 0x66, 0xa9, 0xbe, 0xdd, 0x6d, 0xf9, 0xdb, 0x3a, 0x6e, 0x87, 0x60, 0x31, 0xb2, 0xea, - 0xb8, 0x4c, 0x63, 0xfd, 0x63, 0x01, 0xa8, 0x11, 0x43, 0xc6, 0xa7, 0xee, 0x8b, 0x48, 0xe2, - 0x82, 0x1a, 0x8b, 0x94, 0xee, 0x6d, 0xe8, 0x28, 0xf0, 0xd6, 0x41, 0x6a, 0x85, 0x29, 0x32, - 0xb5, 0x0b, 0x35, 0x18, 0xe3, 0x40, 0xba, 0xbd, 0x28, 0x1d, 0x48, 0x67, 0x9d, 0x66, 0x1a, - 0x17, 0xd9, 0x33, 0xcd, 0xa6, 0x87, 0xd2, 0xda, 0xd4, 0x99, 0x9f, 0x7e, 0x81, 0x2b, 0x8c, - 0xe5, 0x23, 0x1b, 0x4f, 0x0f, 0x20, 0x53, 0xfa, 0x6c, 0x04, 0x1c, 0xd9, 0xad, 0x6e, 0x66, - 0x3a, 0x6b, 0x2f, 0x53, 0x1d, 0x23, 0x14, 0xca, 0x45, 0xb8, 0xa6, 0x14, 0x24, 0x5f, 0xc7, - 0x2b, 0x87, 0x36, 0x3a, 0x80, 0x10, 0x2b, 0x1f, 0x3d, 0x4f, 0xfe, 0x0a, 0x08, 0xff, 0x46, - 0xee, 0x13, 0x51, 0x08, 0x7b, 0x26, 0x1f, 0xeb, 0xf7, 0xb7, 0x07, 0xd5, 0xa9, 0x39, 0x5b, - 0x62, 0xb3, 0xff, 0x82, 0xfa, 0x50, 0x60, 0x71, 0xd0, 0x02, 0xf2, 0xb7, 0xf6, 0x83, 0xe8, - 0xbf, 0xb0, 0xd9, 0x87, 0x82, 0x25, 0x86, 0xd4, 0x72, 0x58, 0xdc, 0x5f, 0x43, 0x52, 0xb2, - 0xa5, 0x78, 0x10, 0x40, 0x88, 0x16, 0x3a, 0xc0, 0xb8, 0x1b, 0x85, 0x27, 0x62, 0xcc, 0xe8, - 0xf7, 0x1f, 0x1e, 0x6c, 0x99, 0xaa, 0x10, 0x6b, 0x1c, 0xe6, 0xc0, 0xf3, 0x95, 0x9d, 0xf8, - 0x2b, 0x44, 0x1c, 0x73, 0xc0, 0x25, 0xea, 0x15, 0x05, 0x85, 0xcc, 0xbd, 0x5e, 0xe9, 0x7a, - 0xea, 0x43, 0xfb, 0x8d, 0x16, 0x88, 0x54, 0xf1, 0xb2, 0x4b, 0xd7, 0x89, 0x26, 0x74, 0xc2, - 0xca, 0xe3, 0x8c, 0x26, 0x00, 0x55, 0x65, 0xc9, 0xb4, 0x38, 0x50, 0xa5, 0x09, 0x17, 0x6e, - 0x68, 0xde, 0x0b, 0xeb, 0xa1, 0x60, 0x57, 0x5c, 0xff, 0x9f, 0x75, 0xc0, 0xda, 0x26, 0x0d, - 0x9c, 0x0c, 0x11, 0x73, 0x7e, 0x20, 0xbf, 0xf4, 0x1d, 0x4e, 0x55, 0x80, 0xac, 0x99, 0x1b, - 0xf9, 0x75, 0xe2, 0xa8, 0xc3, 0x06, 0xfc, 0xc2, 0x70, 0x1e, 0xcb, 0x66, 0x3e, 0x70, 0x8a, - 0x08, 0x23, 0xe1, 0xa7, 0x40, 0x15, 0x0a, 0xcd, 0x49, 0xce, 0xb9, 0x77, 0xd1, 0x3e, 0xee, - 0x98, 0x07, 0xc4, 0x9b, 0xdd, 0xc8, 0x05, 0x9a, 0xe1, 0xbf, 0xdd, 0x1a, 0xe6, 0x01, 0x35, - 0x29, 0x55, 0x16, 0xb7, 0x10, 0x75, 0x6d, 0x02, 0x4d, 0xe7, 0x27, 0xec, 0xa4, 0x9a, 0xe6, - 0xb3, 0x0e, 0x8b, 0xda, 0xe1, 0xec, 0x6c, 0x76, 0x64, 0x82, 0x59, 0x63, 0x22, 0x41, 0x11, - 0x04, 0xf5, 0x77, 0xb1, 0x18, 0xdc, 0x80, 0x6c, 0xa8, 0xc3, 0x8c, 0x21, 0x2b, 0xd8, 0xc2, - 0xa9, 0x33, 0xad, 0x9a, 0x1b, 0x17, 0xb8, 0x9a, 0xae, 0xf4, 0x54, 0x60, 0xf9, 0x93, 0xd4, - 0x26, 0xff, 0x26, 0xfb, 0xa8, 0xbf, 0x2d, 0xd5, 0x42, 0x12, 0xa2, 0x23, 0xab, 0x3d, 0x0c, - 0x1f, 0xd2, 0x8f, 0xc7, 0x16, 0x65, 0x97, 0x9b, 0x3c, 0xb9, 0x92, 0x37, 0x7b, 0x9e, 0x0f, - 0xe4, 0x2c, 0x22, 0x7b, 0x9a, 0xdd, 0x69, 0xfe, 0x2b, 0x27, 0xbe, 0x7e, 0xe7, 0x5e, 0xae, - 0xb4, 0xf9, 0xe5, 0x70, 0xae, 0x2d, 0x2d, 0x52, 0x90, 0x70, 0x62, 0xf1, 0x81, 0x8f, 0xe0, - 0xbb, 0xf7, 0x6d, 0x1a, 0xee, 0x1d, 0x36, 0x49, 0x39, 0x82, 0x62, 0x7a, 0x62, 0xb0, 0x6e, - 0x38, 0x77, 0x44, 0x25, 0x92, 0xa1, 0x8b, 0x86, 0x34, 0x69, 0x9a, 0x2c, 0x03, 0x54, 0x85, - 0x68, 0xbf, 0x9e, 0xc6, 0x32, 0x9a, 0x03, 0x79, 0x7c, 0x89, 0x36, 0x61, 0xa3, 0x62, 0xb9, - 0x96, 0xc3, 0xa2, 0x0b, 0xa8, 0x6d, 0xe5, 0x8c, 0x8a, 0x22, 0x2f, 0x30, 0x15, 0x7c, 0xb7, - 0x32, 0xf3, 0x03, 0x04, 0xe9, 0xd2, 0x3d, 0x09, 0x90, 0xa6, 0x96, 0x59, 0x98, 0xb0, 0x73, - 0x9e, 0x1d, 0x91, 0xd6, 0xf2, 0x16, 0xd4, 0xb1, 0xec, 0xe9, 0xb0, 0x6c, 0x3b, 0x0e, 0x95, - 0x21, 0x5b, 0xd9, 0x2b, 0xb1, 0x19, 0xdd, 0x72, 0x4c, 0xcc, 0x74, 0xf1, 0x28, 0xd8, 0xf7, - 0x3f, 0x3e, 0xa2, 0x21, 0xfb, 0x16, 0x22, 0xf6, 0xca, 0x7c, 0x0b, 0xa6, 0xa6, 0x0d, 0x12, - 0x83, 0xfb, 0x96, 0xa8, 0xaa, 0xf6, 0x6c, 0x27, 0x77, 0xbd, 0x01, 0xdf, 0x3e, 0x66, 0x56, - 0x0f, 0x61, 0x07, 0xab, 0xd0, 0x31, 0xac, 0x1d, 0x76, 0x97, 0x6b, 0x77, 0x80, 0x13, 0x4e, - 0x6e, 0xa0, 0x74, 0x8f, 0x4f, 0xf7, 0x49, 0x32, 0xde, 0xbf, 0x56, 0x09, 0xbf, 0x51, 0x47, - 0x05, 0x73, 0x5f, 0xf7, 0xe4, 0xd8, 0xcd, 0x60, 0x1a, 0x05, 0x2e, 0x0d, 0x26, 0x7c, 0xb5, - 0x55, 0x3a, 0xca, 0xbb, 0x0e, 0x34, 0xf7, 0x59, 0xb7, 0xed, 0xcc, 0x2a, 0x8d, 0x75, 0xf3, - 0x4b, 0x5a, 0x3b, 0xe5, 0xcc, 0x6d, 0xcb, 0x55, 0x24, 0x85, 0x9a, 0xee, 0xe2, 0xeb, 0x81, - 0x6c, 0xe9, 0x72, 0xd8, 0xe6, 0xaf, 0x9a, 0xd2, 0x1b, 0x9b, 0x80, 0x40, 0x0e, 0x57, 0xe8, - 0x9e, 0x87, 0xe0, 0x78, 0x82, 0x43, 0xcc, 0x46, 0x96, 0x78, 0x2b, 0xbf, 0x89, 0xd2, 0x08, - 0x72, 0x79, 0x3a, 0x38, 0x05, 0x4d, 0xce, 0x00, 0xe9, 0x3f, 0xcd, 0x03, 0x2e, 0x51, 0xa1, - 0x13, 0x56, 0xae, 0xd7, 0x27, 0x48, 0x94, 0x74, 0x52, 0x5f, 0xed, 0xff, 0xb3, 0x2a, 0x8b, - 0xb9, 0x93, 0xb8, 0x4a, 0xb0, 0xcf, 0x6c, 0x17, 0x02, 0x9f, 0x93, 0xed, 0xec, 0x6f, 0x4b, - 0x28, 0xfb, 0xc1, 0x9b, 0x58, 0x0f, 0x8e, 0x01, 0x99, 0x27, 0x40, 0x0d, 0x9c, 0x07, 0x41, - 0x02, 0xab, 0x8d, 0xc8, 0xe5, 0xab, 0x0e, 0xde, 0x3d, 0xaf, 0x3d, 0xa6, 0xc3, 0x3c, 0x83, - 0x3e, 0x63, 0xcf, 0xf7, 0xa0, 0x88, 0xea, 0x80, 0x05, 0x49, 0x58, 0x3d, 0xa9, 0xec, 0x4a, - 0x94, 0x11, 0xb8, 0x00, 0xd0, 0xb1, 0xc0, 0x45, 0x81, 0x7a, 0x76, 0xc4, 0x32, 0x0f, 0x80, - 0xa3, 0xe4, 0xd4, 0x4c, 0x18, 0x77, 0xee, 0x3b, 0xba, 0x0a, 0x88, 0x87, 0x7e, 0x11, 0xbe, - 0x10, 0x69, 0x88, 0xad, 0x39, 0x16, 0x76, 0x33, 0x8f, 0xbf, 0xe6, 0x40, 0xa4, 0xd3, 0xfb, - 0x09, 0xe9, 0x8f, 0x30, 0xba, 0x80, 0xfb, 0xe3, 0x81, 0x79, 0x5a, 0x1b, 0x8b, 0x4b, 0xf2, - 0x11, 0xdd, 0x31, 0xf5, 0x74, 0x41, 0x0a, 0xa8, 0x72, 0x5f, 0xed, 0x98, 0xd8, 0x31, 0x86, - 0x8b, 0x19, 0x05, 0xa0, 0xe3, 0xb7, 0xbd, 0x54, 0xce, 0xc6, 0xb1, 0xf4, 0x47, 0xa3, 0x83, - 0x6a, 0xaa, 0xeb, 0xa3, 0x52, 0x47, 0xae, 0xd8, 0x84, 0x42, 0x2b, 0x63, 0x92, 0x2a, 0xa5, - 0x63, 0x38, 0xcc, 0xe7, 0x17, 0x10, 0x71, 0xe1, 0x81, 0x04, 0xbc, 0x71, 0x19, 0xf9, 0x94, - 0x53, 0xcc, 0x84, 0xdd, 0x6a, 0x79, 0xc3, 0x47, 0x4b, 0xee, 0xce, 0xb9, 0x60, 0x41, 0xc7, - 0x2e, 0xe8, 0x87, 0x62, 0xd0, 0xd8, 0x9a, 0x1b, 0x55, 0x4a, 0x12, 0xf8, 0x82, 0xfd, 0x1c, - 0x17, 0x86, 0x8b, 0x7c, 0xd2, 0x0e, 0xb2, 0xed, 0x8c, 0x7f, 0x56, 0x89, 0x70, 0xea, 0x2c, - 0x33, 0x7e, 0x01, 0x84, 0xa6, 0x86, 0x0d, 0xa4, 0xb0, 0xbd, 0xa7, 0x73, 0x43, 0xcd, 0xbe, - 0x9e, 0xcc, 0xbf, 0x94, 0x9f, 0xa4, 0xa5, 0xdf, 0x95, 0xd6, 0x01, 0xa3, 0xcd, 0x2c, 0xe6, - 0xb8, 0xb3, 0x5e, 0x33, 0x2b, 0x2f, 0xea, 0xc5, 0x1b, 0x6d, 0x1c, 0x54, 0x32, 0xb7, 0x26, - 0x08, 0xc5, 0x7e, 0xf9, 0x6d, 0x33, 0xcc, 0x51, 0x2c, 0x57, 0x06, 0xa4, 0xf5, 0x8c, 0x47, - 0x5b, 0x2c, 0x36, 0xb4, 0xf2, 0x40, 0xcb, 0x1a, 0x3b, 0x9d, 0xa5, 0x0f, 0x3e, 0xe2, 0x73, - 0xe5, 0xf0, 0x1e, 0x50, 0xef, 0x54, 0x41, 0x68, 0x6c, 0x7c, 0xe6, 0x7d, 0x57, 0xad, 0x38, - 0x0f, 0xa0, 0xcf, 0x95, 0x93, 0xbd, 0x6c, 0x20, 0xc8, 0xa4, 0x36, 0xf3, 0xe0, 0x2a, 0xa0, - 0xc4, 0x4b, 0xec, 0x3b, 0x68, 0x2f, 0xb8, 0xa9, 0x66, 0x39, 0x94, 0x2c, 0xcf, 0x3f, 0xd4, - 0x47, 0xb5, 0x5c, 0xf4, 0xc6, 0xd4, 0x19, 0x3f, 0x3a, 0x05, 0x2a, 0x69, 0x0a, 0xa6, 0x3b, - 0xca, 0xb0, 0x10, 0xc0, 0x19, 0xdb, 0x9b, 0x53, 0x6a, 0x47, 0xbb, 0x3a, 0x36, 0x88, 0x6a, - 0xd9, 0xae, 0x4c, 0x4d, 0x12, 0x2d, 0x8d, 0x43, 0x23, 0x7f, 0x99, 0x0a, 0x99, 0xeb, 0x0b, - 0xef, 0x37, 0x78, 0x80, 0xf4, 0x40, 0xcf, 0x18, 0x15, 0x82, 0xaa, 0x92, 0x27, 0x82, 0x4c, - 0x5a, 0x37, 0x49, 0x66, 0xf5, 0x9a, 0xe5, 0x1b, 0xef, 0x26, 0x8e, 0x9c, 0x39, 0x79, 0xd8, - 0x87, 0xdc, 0xd3, 0x84, 0xf8, 0xbc, 0x8f, 0xfa, 0x28, 0x62, 0xa5, 0xa2, 0xe6, 0x51, 0x90, - 0x66, 0xf0, 0xe6, 0xa9, 0x93, 0xef, 0xcb, 0x25, 0xf0, 0xa6, 0x4b, 0x40, 0xdc, 0xeb, 0x0b, - 0x45, 0xa3, 0xc7, 0x0a, 0x4e, 0xd5, 0x26, 0x30, 0xf4, 0xd3, 0xea, 0x88, 0x1e, 0x22, 0x91, - 0xad, 0x86, 0xf2, 0x93, 0xa2, 0xd8, 0x08, 0xa9, 0x4e, 0x6f, 0xa3, 0x2e, 0xf8, 0xde, 0x1e, - 0x11, 0x84, 0xe8, 0x31, 0x82, 0x7a, 0xb7, 0x2e, 0xf8, 0x2f, 0x29, 0xa7, 0xeb, 0x73, 0x47, - 0x57, 0xf8, 0x34, 0x37, 0xc2, 0x3b, 0x28, 0x72, 0x41, 0xb9, 0xdd, 0x2a, 0x7e, 0x56, 0xb5, - 0x43, 0x26, 0xa6, 0xfa, 0xfd, 0x80, 0x53, 0x39, 0x4f, 0x82, 0x2a, 0x8a, 0xe7, 0xe4, 0x2c, - 0x40, 0xfa, 0x59, 0x60, 0x5a, 0x29, 0x25, 0x60, 0x13, 0xff, 0xaf, 0x70, 0x69, 0x97, 0xd5, - 0x55, 0x80, 0x12, 0x2a, 0xc1, 0x17, 0x06, 0x8f, 0xdf, 0xc8, 0x4c, 0xa5, 0x56, 0x98, 0x57, - 0x48, 0x56, 0x87, 0x90, 0xa0, 0x03, 0xf4, 0x2d, 0x4d, 0x09, 0x32, 0x74, 0xed, 0xfc, 0x9e, - 0x53, 0xd2, 0x4b, 0xc5, 0xdf, 0xdd, 0xe2, 0xb9, 0x71, 0x2d, 0xf0, 0x40, 0x2e, 0xaa, 0xe7, - 0x8b, 0xf2, 0xd3, 0x6c, 0xd3, 0x34, 0xaf, 0x58, 0x71, 0x98, 0x7a, 0x6b, 0x56, 0x15, 0xfd, - 0x06, 0x1a, 0xf5, 0x4a, 0x8c, 0xea, 0xa5, 0x9a, 0x06, 0x80, 0x0d, 0x03, 0x62, 0x3f, 0x02, - 0x03, 0xcb, 0x9c, 0x73, 0x6b, 0x95, 0xfd, 0x10, 0x11, 0xf2, 0xc9, 0xfa, 0x97, 0x9e, 0x67, - 0x8b, 0x15, 0xe2, 0x7c, 0xfc, 0x00, 0x96, 0xcf, 0x76, 0x5e, 0x97, 0x38, 0x41, 0x42, 0x9a, - 0xe4, 0xf4, 0xfd, 0xaf, 0xbf, 0x90, 0xbb, 0x80, 0xe5, 0x9b, 0x87, 0x0e, 0x2a, 0xcc, 0xfc, - 0x16, 0x05, 0x5c, 0xf0, 0xca, 0x67, 0xf1, 0x70, 0xef, 0x17, 0x68, 0xb0, 0x73, 0x0b, 0x35, - 0x30, 0xda, 0xeb, 0x2c, 0x0f, 0x8c, 0x0f, 0x1e, 0x86, 0x95, 0x7b, 0x45, 0x7a, 0x0d, 0xb2, - 0xf4, 0xb2, 0x6a, 0x1c, 0x4a, 0x9d, 0x59, 0x44, 0x9c, 0x4b, 0x4a, 0x9c, 0xd8, 0x87, 0xa6, - 0xac, 0xad, 0x5a, 0x96, 0x5d, 0x8c, 0xaa, 0xc7, 0x1a, 0x1f, 0x68, 0x44, 0x4d, 0x32, 0xc4, - 0x3a, 0x44, 0x85, 0x60, 0x4e, 0x89, 0x5d, 0xb6, 0xc2, 0x3a, 0xdf, 0xa5, 0x8d, 0xa0, 0xb5, - 0x0c, 0x25, 0xa9, 0x1c, 0x6d, 0xa9, 0x95, 0x35, 0xae, 0x03, 0x3e, 0x79, 0xbd, 0x20, 0x6e, - 0x30, 0x93, 0x6e, 0x9e, 0x0e, 0x21, 0x7a, 0x4c, 0x2f, 0xac, 0xf1, 0x2d, 0xb9, 0xf8, 0xab, - 0x2b, 0x6c, 0x17, 0x07, 0x55, 0xe0, 0x53, 0x49, 0xc2, 0xad, 0xcc, 0x45, 0xae, 0xb2, 0x5a, - 0x38, 0x68, 0xae, 0x79, 0x27, 0x82, 0x22, 0x68, 0xeb, 0x75, 0x02, 0x1e, 0x7d, 0xd3, 0x15, - 0x0e, 0xd9, 0x66, 0x32, 0x60, 0xe5, 0x51, 0x47, 0xd8, 0xd8, 0xe7, 0x70, 0x77, 0xc5, 0xbd, - 0xe7, 0x6e, 0x6f, 0x8b, 0x98, 0x8e, 0x19, 0x4d, 0x1c, 0x0c, 0xf2, 0x47, 0x71, 0xa1, 0x64, - 0x8b, 0xf4, 0xc6, 0x80, 0x0f, 0xab, 0x1e, 0x5d, 0x10, 0x62, 0xfd, 0x17, 0x18, 0x3f, 0x92, - 0x20, 0x05, 0x8f, 0xca, 0x87, 0xfc, 0xf7, 0xf4, 0xa9, 0xdd, 0xa6, 0x4d, 0x02, 0xc4, 0x5d, - 0xce, 0xf9, 0x93, 0xaf, 0x4d, 0x42, 0xa0, 0x64, 0x42, 0x29, 0x5b, 0xcf, 0x93, 0xfb, 0x8e, - 0x0a, 0xa3, 0xf0, 0xb3, 0x64, 0xbd, 0xc9, 0xdf, 0xbc, 0xbf, 0x87, 0xef, 0x73, 0x53, 0xcd, - 0xed, 0x2f, 0xb7, 0xee, 0xe8, 0x3d, 0xcc, 0x0d, 0xd5, 0x12, 0xdb, 0xf4, 0x6f, 0x8b, 0xe7, - 0x08, 0x4a, 0x7b, 0x1b, 0x54, 0x14, 0x5a, 0x0c, 0x63, 0x16, 0xb2, 0xa1, 0x1f, 0x7b, 0x76, - 0x18, 0x13, 0xfa, 0x31, 0x83, 0xb7, 0xc9, 0x99, 0x24, 0x65, 0xdc, 0x0a, 0x6f, 0xb6, 0xf8, - 0x3f, 0xe2, 0xb9, 0xf6, 0x54, 0x28, 0x49, 0x28, 0xa3, 0x1c, 0x01, 0xa7, 0x0d, 0x55, 0x45, - 0xd2, 0x02, 0x80, 0x03, 0xe5, 0xc9, 0xe2, 0xd3, 0x7d, 0xe7, 0xf3, 0x37, 0xfe, 0x28, 0x09, - 0x12, 0x26, 0x07, 0x4c, 0x80, 0xe4, 0x39, 0x04, 0x73, 0x39, 0x00, 0x06, 0xa5, 0xa3, 0x22, - 0x6d, 0xd8, 0x86, 0x99, 0x14, 0x5d, 0x50, 0xb4, 0x20, 0x17, 0xd6, 0x06, 0x36, 0x16, 0x2b, - 0xbc, 0xc6, 0xc8, 0x73, 0x87, 0x17, 0xd6, 0xc9, 0x41, 0x25, 0xcd, 0x3e, 0x50, 0x29, 0x91, - 0x32, 0x8f, 0xba, 0x37, 0x65, 0x45, 0x5e, 0x6c, 0x1c, 0x41, 0xab, 0x94, 0xbc, 0x21, 0xd5, - 0x16, 0x04, 0xa1, 0xd9, 0xe4, 0x87, 0x86, 0x9a, 0x97, 0x13, 0x98, 0x84, 0x48, 0x1f, 0x39, - 0xec, 0x7d, 0x81, 0x0c, 0x35, 0xf0, 0xac, 0x12, 0xde, 0x4b, 0x8f, 0x47, 0x5b, 0x82, 0xd0, - 0xbb, 0x10, 0x36, 0xaf, 0x94, 0x62, 0xf6, 0x93, 0xf6, 0x3a, 0x99, 0x91, 0xdb, 0x28, 0x45, - 0x19, 0xe6, 0x64, 0xba, 0x4a, 0x9f, 0xe3, 0x85, 0x68, 0x5f, 0x29, 0xad, 0x1e, 0x64, 0xbd, - 0xae, 0x36, 0xcb, 0xc6, 0xd5, 0x7b, 0xb7, 0x55, 0xa5, 0x9a, 0xf4, 0x26, 0x7b, 0x90, 0xf4, - 0x4d, 0x0a, 0x39, 0xf3, 0x5c, 0x79, 0x00, 0xd8, 0x7a, 0x07, 0x6e, 0x02, 0x5e, 0x6a, 0x69, - 0x75, 0x00, 0x6e, 0x7c, 0xfe, 0x24, 0x66, 0x38, 0xa6, 0xa2, 0x8d, 0x9a, 0x23, 0x36, 0x1e, - 0x9e, 0x9f, 0x45, 0x7b, 0x17, 0xfe, 0xb8, 0x77, 0x99, 0x42, 0x7d, 0x5d, 0x0b, 0xd8, 0x74, - 0x70, 0xfb, 0x29, 0x15, 0x46, 0x4e, 0xae, 0x8d, 0x67, 0xc5, 0xde, 0x2d, 0x1b, 0x40, 0x61, - 0x07, 0x1f, 0xa4, 0x04, 0xbb, 0x49, 0x15, 0xc3, 0x07, 0x83, 0x24, 0x11, 0x68, 0x37, 0x10, - 0x74, 0x9a, 0xb8, 0x68, 0xbf, 0xd3, 0x78, 0x89, 0xe9, 0x3a, 0x29, 0x70, 0x93, 0x1d, 0x60, - 0x19, 0x70, 0x2e, 0x53, 0xe4, 0x4d, 0x7c, 0x6d, 0x08, 0x99, 0x60, 0x1a, 0xdb, 0x96, 0x56, - 0x0d, 0xbf, 0x9d, 0xf8, 0xde, 0xca, 0x54, 0x22, 0xc9, 0x28, 0xff, 0xd0, 0xf9, 0xe4, 0x3f, - 0x2a, 0x4d, 0xfa, 0x03, 0x06, 0x2a, 0xcd, 0x29, 0x58, 0xe2, 0x08, 0xb9, 0x8c, 0x9e, 0x2c, - 0x6e, 0x58, 0x9c, 0x5a, 0x2a, 0x0f, 0x7e, 0xd3, 0xe4, 0xad, 0x3f, 0x61, 0xad, 0x80, 0x9d, - 0xe7, 0x3b, 0xe7, 0x51, 0x1f, 0x23, 0x84, 0xae, 0xa0, 0x86, 0xbc, 0x6a, 0x0a, 0x9e, 0x41, - 0x7d, 0x99, 0x5d, 0x67, 0x4b, 0x93, 0xd5, 0xd1, 0x29, 0xf6, 0x1c, 0xf5, 0x7f, 0x3f, 0xe3, - 0x70, 0x52, 0x66, 0x11, 0xb2, 0xf3, 0x60, 0x14, 0x03, 0x40, 0x1a, 0x3f, 0x7a, 0x79, 0x22, - 0x7b, 0xdb, 0xba, 0xfa, 0x4a, 0xc7, 0x10, 0x8a, 0xc2, 0x8f, 0x41, 0x77, 0x2e, 0x82, 0xd7, - 0xa0, 0x3d, 0xdb, 0xf5, 0xed, 0x67, 0xa4, 0x03, 0x96, 0x00, 0x95, 0xb6, 0x8d, 0x7f, 0x5b, - 0xbf, 0x1a, 0xfa, 0x95, 0xd5, 0x3c, 0xab, 0xfd, 0xdd, 0x8e, 0x1f, 0xb4, 0x32, 0x9c, 0x08, - 0x43, 0x27, 0xd4, 0xdc, 0xa0, 0x55, 0x2e, 0x21, 0x6f, 0x49, 0xc6, 0x5e, 0x60, 0x42, 0x95, - 0x1f, 0x1a, 0xbd, 0x09, 0x9e, 0xab, 0xb9, 0xc7, 0x38, 0x38, 0x6e, 0x5f, 0xfa, 0x5c, 0x15, - 0xd3, 0x87, 0x3e, 0x0a, 0x69, 0x97, 0xaa, 0x3f, 0x46, 0xe8, 0xe8, 0xf5, 0x97, 0x10, 0x94, - 0x6c, 0x5d, 0xf4, 0x4e, 0x73, 0x06, 0x35, 0x85, 0xbd, 0x17, 0x1a, 0x79, 0x52, 0xee, 0xf8, - 0x43, 0x3a, 0x75, 0x04, 0x0a, 0x04, 0xde, 0x4b, 0x4e, 0xcf, 0x75, 0x1d, 0x2d, 0xe3, 0x12, - 0xb5, 0x8b, 0x48, 0x1c, 0xfd, 0xdd, 0x5b, 0x1b, 0x5d, 0x27, 0x18, 0x1f, 0x7e, 0xc5, 0x14, - 0x94, 0xa0, 0x2a, 0xca, 0xb6, 0x8c, 0x44, 0x09, 0x4f, 0x4a, 0x97, 0x68, 0x7b, 0x9a, 0x3c, - 0x3e, 0xc6, 0xfb, 0x6c, 0x2b, 0xc7, 0x88, 0x05, 0x44, 0x14, 0xc3, 0x51, 0x4e, 0xf8, 0x4b, - 0x0b, 0x6e, 0x6a, 0xcc, 0x50, 0x7b, 0xfa, 0xc3, 0xd4, 0x82, 0x7b, 0xc4, 0xa8, 0xf4, 0x82, - 0x64, 0xf2, 0xb0, 0xce, 0x14, 0xdb, 0x51, 0xc7, 0xd1, 0x08, 0x32, 0x26, 0x16, 0xd1, 0x2b, - 0xcb, 0xba, 0x8f, 0x41, 0x6d, 0xbb, 0x28, 0xfd, 0xdc, 0x9d, 0x9e, 0xfc, 0x05, 0xc0, 0x4b, - 0xb0, 0x6c, 0x2e, 0x6d, 0x60, 0x45, 0xc9, 0x4d, 0x8b, 0x48, 0x62, 0x08, 0x27, 0x37, 0xea, - 0xb2, 0x06, 0x3c, 0x61, 0x8b, 0x3c, 0x15, 0x26, 0x4c, 0x5b, 0x59, 0xc3, 0x7e, 0x68, 0xfa, - 0xaf, 0x7d, 0x70, 0x4a, 0x55, 0x89, 0x9c, 0xea, 0x68, 0xdb, 0xa8, 0x63, 0xe7, 0x6b, 0x43, - 0x0e, 0xcb, 0x47, 0x0e, 0x76, 0x36, 0x49, 0xb2, 0x61, 0x34, 0x5d, 0x2e, 0x31, 0x9c, 0x0f, - 0x18, 0x5a, 0xbf, 0x7c, 0x29, 0x33, 0x59, 0xa6, 0xc4, 0x55, 0x22, 0xfd, 0xe2, 0x19, 0x09, - 0x3f, 0x5d, 0x15, 0x16, 0xf7, 0xfe, 0x52, 0x4e, 0x59, 0xe0, 0xae, 0x96, 0xfb, 0x1b, 0x00, - 0xfe, 0xc0, 0xbc, 0x4a, 0xdf, 0xd4, 0x24, 0x6b, 0xf1, 0x7e, 0x23, 0x64, 0x5b, 0x23, 0x14, - 0x40, 0x22, 0x52, 0x2f, 0x2f, 0xdb, 0x8a, 0x08, 0x7a, 0xa0, 0x45, 0x8b, 0x93, 0xef, 0xeb, - 0xc7, 0x64, 0xc6, 0x35, 0xe3, 0xfa, 0x7c, 0x74, 0xbd, 0xd3, 0x81, 0xde, 0xdd, 0x33, 0x3b, - 0x9d, 0x94, 0x5e, 0x55, 0xf5, 0xc0, 0x3b, 0x69, 0x2f, 0xd5, 0xd9, 0x5b, 0x88, 0x42, 0xa2, - 0x1d, 0xe7, 0xde, 0x8b, 0xc0, 0x72, 0xde, 0x71, 0x8f, 0xa4, 0xdc, 0x6a, 0x28, 0x4a, 0xb7, - 0x33, 0xe9, 0x06, 0x3a, 0x9b, 0x88, 0x9f, 0x1a, 0x3b, 0x90, 0x0d, 0xb8, 0x36, 0x1d, 0x4b, - 0x23, 0x5c, 0xa5, 0x28, 0xdf, 0x64, 0x82, 0xa8, 0xfc, 0x6d, 0xdf, 0x4c, 0x9f, 0xbb, 0x8e, - 0x3c, 0x39, 0xba, 0xe6, 0x60, 0xf5, 0x55, 0xa7, 0x66, 0x55, 0x3f, 0x1f, 0xfc, 0x99, 0x03, - 0x16, 0x2e, 0xcb, 0x66, 0x74, 0x8d, 0xb2, 0x6b, 0xce, 0x32, 0xb6, 0xf6, 0x24, 0xcd, 0x7a, - 0xbf, 0x4c, 0xd8, 0x3c, 0x20, 0x23, 0x46, 0x71, 0x07, 0x99, 0x57, 0x29, 0x04, 0x98, 0x18, - 0x1c, 0x46, 0x67, 0xcb, 0xeb, 0xcf, 0xc0, 0x46, 0x46, 0xa3, 0xfd, 0xb3, 0x70, 0x89, 0x90, - 0x38, 0xf8, 0x5a, 0x9e, 0x46, 0xae, 0x10, 0x6b, 0x17, 0x67, 0x18, 0x75, 0x20, 0xff, 0x19, - 0x62, 0x60, 0xaa, 0x5d, 0xd1, 0x34, 0xb4, 0xca, 0xf2, 0xc3, 0x16, 0xdf, 0x2b, 0x4d, 0x46, - 0xfc, 0x87, 0x14, 0x4a, 0xc3, 0x2d, 0x4c, 0x26, 0x34, 0x02, 0x0c, 0xbf, 0x9e, 0x82, 0x08, - 0x2c, 0x0c, 0xc6, 0xb6, 0xe2, 0xbd, 0xa4, 0x88, 0x1d, 0xf1, 0xba, 0x8a, 0xef, 0x3a, 0xf2, - 0x3e, 0xb0, 0x8d, 0xe8, 0x08, 0x62, 0x9b, 0xa5, 0xe4, 0xb6, 0xd4, 0xbf, 0xf6, 0xc2, 0x7c, - 0xfe, 0xce, 0x14, 0x18, 0xd6, 0x6f, 0x7d, 0x2c, 0xb9, 0x9a, 0xb0, 0x72, 0xf0, 0x55, 0x3d, - 0xaf, 0x18, 0xb8, 0x9d, 0x0d, 0x0b, 0x09, 0x41, 0x22, 0x9e, 0xf4, 0xf0, 0x78, 0xfe, 0xd3, - 0xaa, 0x47, 0xf6, 0xe4, 0xad, 0x2e, 0xf1, 0xaf, 0xa4, 0x5c, 0xff, 0xd4, 0x7b, 0x68, 0x75, - 0x12, 0xba, 0x74, 0xc5, 0x61, 0xd4, 0x48, 0x77, 0x37, 0x6d, 0x12, 0xbc, 0x3d, 0x46, 0x44, - 0xe7, 0x66, 0xc0, 0x0c, 0x98, 0xec, 0x78, 0x33, 0xb9, 0x38, 0x14, 0xed, 0x9c, 0xfe, 0x61, - 0xc7, 0xcc, 0x16, 0x79, 0x3b, 0xea, 0x09, 0xea, 0x08, 0xfe, 0x74, 0x78, 0x72, 0x1d, 0x17, - 0xe4, 0x6f, 0x06, 0x4f, 0xec, 0xa2, 0x95, 0xd6, 0x3f, 0x2c, 0x06, 0x66, 0x42, 0x4b, 0x64, - 0xba, 0x19, 0x41, 0x3a, 0x9a, 0x6e, 0x5b, 0xea, 0x31, 0x02, 0xd1, 0x97, 0x21, 0xeb, 0x61, - 0xff, 0x4d, 0x8b, 0xdd, 0x33, 0x7f, 0x22, 0xb0, 0xe9, 0xd7, 0x77, 0x24, 0x1f, 0xb8, 0xd3, - 0x39, 0x51, 0xec, 0x69, 0xde, 0x45, 0x58, 0xdd, 0x6d, 0x1e, 0x7d, 0xba, 0x98, 0xe9, 0xe2, - 0xc5, 0xe5, 0xf5, 0xa7, 0x2a, 0x9a, 0x8a, 0xe7, 0x16, 0x1c, 0xde, 0x19, 0x39, 0x34, 0x65, - 0x7e, 0xd5, 0x29, 0x59, 0x85, 0x21, 0x54, 0x86, 0x0d, 0xfb, 0xf5, 0xe7, 0xf1, 0x03, 0xb9, - 0x42, 0x41, 0x0c, 0x8e, 0x06, 0xd2, 0x14, 0x70, 0x09, 0x5d, 0xa7, 0x71, 0xeb, 0x94, 0x97, - 0x04, 0x1a, 0xa4, 0xcd, 0x95, 0x87, 0xc8, 0x06, 0xbe, 0x7d, 0xaa, 0x77, 0x0a, 0x4e, 0xb1, - 0x31, 0x1b, 0x55, 0x3f, 0xf0, 0x42, 0x3b, 0x99, 0x5f, 0x4b, 0x2f, 0x6e, 0xae, 0xc9, 0x43, - 0x1b, 0x55, 0x22, 0x07, 0x38, 0x3e, 0xc5, 0xf7, 0x41, 0x03, 0x7d, 0xba, 0x82, 0xac, 0x2d, - 0x78, 0xad, 0xb8, 0x39, 0xef, 0x3d, 0x97, 0x62, 0xcd, 0x15, 0xa0, 0x99, 0x46, 0x5d, 0xf3, - 0xe0, 0xae, 0x65, 0x77, 0x11, 0xd0, 0x89, 0x78, 0x5c, 0x56, 0x2c, 0x60, 0xbd, 0xa9, 0x42, - 0x4b, 0xb0, 0x90, 0x23, 0x8e, 0xc6, 0xeb, 0x39, 0x37, 0x74, 0x2b, 0x34, 0x2a, 0x4d, 0x9f, - 0xf4, 0x0a, 0x5b, 0xa5, 0x3c, 0xaa, 0x33, 0x86, 0x0a, 0xe1, 0x3f, 0x7a, 0x34, 0xae, 0x45, - 0x57, 0x17, 0x8c, 0x64, 0xa2, 0xd4, 0xa1, 0x50, 0xe6, 0x14, 0x8d, 0xcc, 0x3f, 0x7d, 0xbf, - 0x87, 0xc3, 0x11, 0x8b, 0x6d, 0x09, 0xd2, 0x93, 0x30, 0xff, 0x48, 0xaf, 0x7b, 0x7c, 0x45, - 0x3f, 0x28, 0xbd, 0xaf, 0x8f, 0x24, 0xb9, 0x34, 0xe5, 0x09, 0xeb, 0xa7, 0xef, 0x58, 0x0f, - 0x86, 0x0f, 0xc1, 0xaf, 0x4c, 0x70, 0x96, 0xeb, 0x17, 0x50, 0x1a, 0x33, 0x72, 0xbb, 0x18, - 0xa0, 0x66, 0x99, 0x17, 0x80, 0x08, 0xec, 0x95, 0xb8, 0x5e, 0xae, 0xbe, 0xd3, 0xc0, 0xa3, - 0xa5, 0xc5, 0x15, 0x69, 0xc3, 0xf2, 0x8d, 0x4c, 0x36, 0xe7, 0x8e, 0x7b, 0x2a, 0xbc, 0x0e, - 0xec, 0xd0, 0x6a, 0xdc, 0x0a, 0xff, 0x5f, 0xd2, 0x42, 0xb9, 0xda, 0x41, 0x9e, 0xcb, 0xaa, - 0xef, 0x02, 0xbe, 0xa0, 0x1e, 0xb7, 0xed, 0x83, 0xac, 0xd4, 0xf3, 0x19, 0x6e, 0xb1, 0x1d, - 0x7b, 0x0b, 0x48, 0x51, 0xbd, 0xda, 0x5b, 0x04, 0x14, 0xd4, 0x37, 0x01, 0x7b, 0x32, 0xa6, - 0xe4, 0xd9, 0x11, 0x46, 0x6d, 0xec, 0xd9, 0xf0, 0x2e, 0x3b, 0xb6, 0xf0, 0x98, 0xc0, 0x14, - 0xd2, 0x12, 0xae, 0x07, 0x85, 0x0f, 0x87, 0x89, 0x93, 0x32, 0xa1, 0x25, 0x10, 0x40, 0xc8, - 0xf6, 0xee, 0xb9, 0x3a, 0xfa, 0x69, 0xfa, 0x3f, 0xe3, 0xc3, 0xea, 0x9a, 0xca, 0xe5, 0x7d, - 0x11, 0x3d, 0x80, 0x21, 0x90, 0xc5, 0xbd, 0xbe, 0x3e, 0x22, 0xf6, 0x20, 0x42, 0x1e, 0xda, - 0xfc, 0x78, 0xec, 0xac, 0x84, 0x75, 0xce, 0x86, 0x3c, 0xd0, 0xb0, 0xd7, 0xa7, 0x43, 0xc7, - 0xdd, 0x6d, 0x8d, 0xda, 0xdf, 0x1e, 0xfa, 0x41, 0x72, 0x5d, 0x42, 0xb4, 0xcb, 0xca, 0xf1, - 0xd6, 0xe3, 0x36, 0xb2, 0xee, 0x7e, 0x55, 0x31, 0x1c, 0x13, 0x83, 0xf4, 0x57, 0x99, 0x5f, - 0x57, 0xf6, 0x15, 0xba, 0x0b, 0xdb, 0x2d, 0x0e, 0xdc, 0x78, 0x21, 0xe9, 0x45, 0x39, 0xe3, - 0x83, 0x4d, 0xb2, 0xfc, 0x67, 0xe8, 0x36, 0x13, 0xd5, 0xd3, 0x9c, 0x37, 0xa6, 0x1d, 0x79, - 0x61, 0x80, 0x02, 0xa7, 0x3c, 0x29, 0x45, 0x2c, 0x53, 0x20, 0xa6, 0x98, 0x7b, 0xf1, 0x3a, - 0xef, 0x34, 0x24, 0x39, 0xe0, 0xb5, 0x8e, 0x65, 0xc9, 0x2c, 0xb5, 0xfd, 0xa1, 0xd3, 0xad, - 0x34, 0xb4, 0x29, 0xcd, 0x0c, 0xfa, 0x34, 0xb2, 0x55, 0xba, 0x2b, 0x26, 0x95, 0x8a, 0x47, - 0xe9, 0xa0, 0xb8, 0xaf, 0x53, 0xaa, 0xc9, 0x10, 0x86, 0x6c, 0x7f, 0xde, 0x02, 0xe5, 0xeb, - 0x77, 0x0d, 0xff, 0x30, 0x31, 0xae, 0x21, 0xda, 0x0e, 0x72, 0x51, 0x34, 0x34, 0x15, 0x64, - 0xa7, 0x8f, 0xde, 0x48, 0xa3, 0x7e, 0x4b, 0xd2, 0xcf, 0xfa, 0x7c, 0xc1, 0x50, 0x9a, 0xa2, - 0x3e, 0x1d, 0xd5, 0xb0, 0xf5, 0x6f, 0xc3, 0xd0, 0xbe, 0xd0, 0x26, 0xc8, 0xc1, 0x2f, 0xd7, - 0x09, 0xc8, 0xbf, 0xaf, 0x74, 0xa4, 0x53, 0xd1, 0xf4, 0x02, 0x44, 0xe6, 0xaa, 0x6f, 0x9d, - 0x00, 0x2c, 0x31, 0x6b, 0xa4, 0xb5, 0x0c, 0xdc, 0xc3, 0x41, 0xd7, 0x4d, 0x90, 0x5f, 0x77, - 0x42, 0x02, 0x3c, 0x0c, 0x3f, 0x3a, 0xf3, 0xac, 0x57, 0x85, 0x54, 0x4e, 0xac, 0xdf, 0x6a, - 0x79, 0x7f, 0x3e, 0x29, 0xb5, 0x1d, 0x1a, 0x22, 0x8b, 0x9a, 0x09, 0xd7, 0x72, 0xbb, 0x0f, - 0xa3, 0xdd, 0xa6, 0xf0, 0x00, 0xbf, 0x2e, 0x0f, 0x63, 0x5f, 0xe1, 0xf7, 0x85, 0x02, 0x61, - 0x03, 0x47, 0xa9, 0xe2, 0xfe, 0xaa, 0x9d, 0x34, 0xca, 0x34, 0xb5, 0x3b, 0xb9, 0xb7, 0xa9, - 0x5a, 0xea, 0xb0, 0x17, 0x97, 0x44, 0x34, 0xd6, 0x68, 0xac, 0xdb, 0x58, 0xdd, 0x38, 0xfe, - 0x58, 0x23, 0x95, 0xc6, 0xea, 0xf6, 0xf9, 0x00, 0x58, 0xe3, 0x37, 0x22, 0x3d, 0x4b, 0xfc, - 0x2b, 0x9e, 0xf8, 0x4b, 0x39, 0x4a, 0xf1, 0xb0, 0x0b, 0x2e, 0x91, 0x77, 0xb2, 0xc5, 0x16, - 0xe8, 0x6c, 0xaa, 0x42, 0x19, 0xba, 0x22, 0x1c, 0x3b, 0xd9, 0x2f, 0x29, 0x03, 0xde, 0x50, - 0x83, 0xc2, 0xb6, 0x22, 0x66, 0x4b, 0x95, 0x86, 0xfb, 0x3f, 0x1f, 0x3e, 0xe1, 0x58, 0xf5, - 0x51, 0x87, 0xeb, 0x3b, 0x32, 0xad, 0xd8, 0x43, 0xe7, 0x80, 0xcc, 0x89, 0xac, 0x04, 0x3f, - 0x12, 0x47, 0x27, 0x58, 0xb3, 0x54, 0x11, 0x36, 0xc1, 0x06, 0xcd, 0xa2, 0x2b, 0x87, 0x25, - 0xa6, 0xc8, 0x94, 0x1d, 0x74, 0x4f, 0xb9, 0x32, 0x45, 0x02, 0xdb, 0x16, 0xfd, 0xcd, 0x69, - 0x78, 0x84, 0x89, 0xa8, 0x39, 0xfe, 0x07, 0xe4, 0x6c, 0x8e, 0x13, 0xf4, 0x41, 0x4b, 0x2e, - 0xdf, 0x57, 0xed, 0x3b, 0x42, 0xfb, 0xf0, 0x02, 0x6b, 0x7b, 0x04, 0xb3, 0xb3, 0x56, 0x4f, - 0xe8, 0xe1, 0xaa, 0x27, 0xdc, 0x13, 0x0d, 0xa7, 0x21, 0xa3, 0xdb, 0x54, 0x08, 0x2a, 0xd9, - 0xae, 0x3a, 0xbe, 0xf2, 0x60, 0x0b, 0x39, 0x11, 0x54, 0xe8, 0xb8, 0x85, 0x61, 0x72, 0x1e, - 0x7a, 0x9b, 0x39, 0x12, 0x9d, 0x57, 0xfd, 0xde, 0x0c, 0x73, 0xb3, 0xfd, 0x8c, 0xec, 0x66, - 0x37, 0xdf, 0x97, 0x10, 0xf2, 0xc6, 0x07, 0x97, 0x18, 0x2c, 0xd0, 0xf5, 0x5b, 0xa7, 0x28, - 0xd4, 0xae, 0xfe, 0x53, 0x7b, 0x7b, 0x83, 0xd4, 0x7e, 0x99, 0x55, 0xe6, 0x40, 0xff, 0x3e, - 0x4e, 0xc6, 0xce, 0xf3, 0x50, 0x1c, 0x91, 0x2d, 0xd8, 0x30, 0xcd, 0x6e, 0xcc, 0x51, 0x72, - 0x1c, 0xe9, 0x91, 0x44, 0x3c, 0xf2, 0x77, 0x37, 0x79, 0x04, 0x7f, 0xc6, 0xb5, 0x80, 0xf8, - 0x91, 0x53, 0x64, 0x65, 0x6a, 0x9f, 0x75, 0x16, 0x4c, 0x08, 0x37, 0x32, 0x83, 0xfb, 0x4b, - 0x48, 0xba, 0xed, 0x1a, 0x73, 0xe7, 0x58, 0x92, 0xdf, 0xa7, 0xc2, 0x68, 0xe9, 0x65, 0x42, - 0xfa, 0xf8, 0x40, 0x8a, 0xda, 0x20, 0x9e, 0x14, 0x09, 0x0e, 0xea, 0x6f, 0x9e, 0x78, 0x9d, - 0x91, 0xe4, 0x3d, 0x09, 0x7f, 0x16, 0xde, 0xec, 0x4e, 0x58, 0x2b, 0x07, 0xdd, 0xbc, 0x68, - 0x6e, 0xb4, 0x4c, 0x68, 0x7b, 0x4c, 0x8c, 0xc9, 0x62, 0x4a, 0x65, 0x33, 0x1c, 0xcc, 0x6b, - 0x9b, 0x1b, 0xaf, 0xa1, 0x4a, 0x22, 0x40, 0x57, 0x9e, 0xc5, 0x69, 0x08, 0xba, 0x24, 0x20, - 0x03, 0x43, 0x22, 0x1b, 0x63, 0xb1, 0x81, 0xd5, 0x9c, 0x33, 0x20, 0x54, 0xda, 0x14, 0x31, - 0x2f, 0x22, 0xe4, 0x63, 0xbc, 0x5b, 0xb6, 0x0e, 0x7c, 0x2c, 0x04, 0xf9, 0xbe, 0x99, 0xa7, - 0x7a, 0x63, 0x02, 0x73, 0x8e, 0x9a, 0xb7, 0x7b, 0xc2, 0xa4, 0xf4, 0x0e, 0x34, 0x51, 0xe0, - 0x04, 0x5c, 0xc7, 0xd0, 0xba, 0x01, 0xef, 0xdf, 0x12, 0x3f, 0xd4, 0x8c, 0xc8, 0x2c, 0xd5, - 0xcc, 0xe9, 0xdd, 0x69, 0x2d, 0x2f, 0xf5, 0xf6, 0x5a, 0x79, 0xc7, 0x0c, 0x50, 0x04, 0x31, - 0x2b, 0xcf, 0x03, 0xc1, 0x93, 0xbe, 0xf3, 0x32, 0x30, 0x49, 0x25, 0xe2, 0xbe, 0x42, 0x62, - 0x2f, 0x61, 0x91, 0x1a, 0xb6, 0x2f, 0x89, 0xce, 0x8c, 0x96, 0x49, 0x56, 0x7c, 0x05, 0xf4, - 0xf7, 0x06, 0x56, 0x0d, 0x35, 0x7b, 0x81, 0x9a, 0xc7, 0xaa, 0x47, 0x36, 0x9f, 0x3a, 0xf3, - 0xbb, 0x3a, 0x4e, 0x4b, 0xe0, 0x8e, 0x82, 0x52, 0x31, 0xb8, 0xac, 0x13, 0x33, 0x75, 0x99, - 0xe7, 0xb6, 0x01, 0x24, 0x07, 0x01, 0x06, 0x77, 0x39, 0x69, 0xfb, 0x5e, 0x0e, 0x18, 0x1d, - 0xf8, 0x66, 0x5b, 0xe0, 0xde, 0xbc, 0x04, 0x7e, 0x7c, 0x99, 0x1b, 0xf5, 0x7d, 0xb2, 0x0b, - 0xa9, 0x89, 0x3d, 0x46, 0x16, 0xc4, 0x0a, 0x8a, 0x24, 0x99, 0xaf, 0xe1, 0x90, 0x1e, 0x61, - 0x6b, 0x34, 0xe2, 0xa2, 0x8d, 0xb7, 0xb4, 0xfa, 0x71, 0x95, 0x3f, 0xb2, 0xa2, 0x37, 0x04, - 0xb9, 0xa6, 0xce, 0xa0, 0xa6, 0x03, 0xbb, 0xdc, 0x7e, 0x8a, 0x11, 0x58, 0x02, 0x6f, 0x11, - 0xd8, 0x2b, 0x15, 0x82, 0xdd, 0x15, 0x7a, 0x56, 0x88, 0x36, 0xc3, 0xd4, 0xb3, 0x1f, 0x3a, - 0x67, 0x21, 0x46, 0x00, 0x17, 0xd1, 0x83, 0xad, 0x3d, 0xe5, 0x8d, 0x92, 0x26, 0xfa, 0x8c, - 0x50, 0xa3, 0x54, 0x93, 0x4b, 0x3a, 0x47, 0x50, 0xe9, 0x93, 0xb0, 0xd3, 0x13, 0x82, 0xd2, - 0x61, 0x09, 0xab, 0x96, 0xdd, 0xda, 0xab, 0x8d, 0x90, 0xbd, 0x72, 0x5e, 0xab, 0x7f, 0x28, - 0x8c, 0x58, 0x97, 0x56, 0xaf, 0x2c, 0xb9, 0x8d, 0x40, 0x0c, 0x09, 0x4d, 0x19, 0x15, 0xd6, - 0x0b, 0x56, 0x30, 0x49, 0x1c, 0x04, 0xec, 0x34, 0xa4, 0x11, 0xcc, 0x70, 0x2d, 0x39, 0xda, - 0x58, 0x0f, 0x25, 0x6b, 0x28, 0x19, 0xca, 0xb9, 0x29, 0x3c, 0x92, 0x95, 0x1b, 0x12, 0x23, - 0xcd, 0xdd, 0x16, 0x03, 0xac, 0xce, 0x3d, 0x29, 0x46, 0x0f, 0xba, 0x60, 0x92, 0x51, 0x68, - 0xa2, 0x4d, 0xf2, 0x27, 0x05, 0xa2, 0xde, 0xde, 0x7c, 0x79, 0xf4, 0x51, 0x7f, 0xc5, 0x5e, - 0x72, 0xc2, 0x84, 0x61, 0xb0, 0xda, 0xbe, 0x3c, 0x20, 0xc4, 0xa4, 0x7c, 0x9e, 0x2b, 0x03, - 0x1e, 0x59, 0x49, 0xdf, 0xb4, 0x3c, 0x47, 0x8e, 0x50, 0x63, 0x96, 0x38, 0x82, 0x90, 0x49, - 0xc2, 0xcd, 0x77, 0xdf, 0xfd, 0x05, 0x31, 0x9b, 0xce, 0x68, 0x97, 0x00, 0x4e, 0x62, 0xbf, - 0x05, 0x61, 0x3f, 0x27, 0x46, 0x08, 0xcd, 0x2f, 0xa8, 0x9f, 0xb6, 0x52, 0x1e, 0xa7, 0xbe, - 0x97, 0x0d, 0x2e, 0x83, 0x4e, 0x12, 0xf7, 0xaa, 0x2c, 0xdb, 0x7a, 0x75, 0x10, 0x93, 0x07, - 0xde, 0xdd, 0xab, 0x0f, 0x2a, 0x8c, 0xf6, 0xf2, 0xcc, 0x12, 0xc0, 0xf7, 0x17, 0x0c, 0x7c, - 0x51, 0x57, 0x32, 0xe0, 0x4e, 0xe1, 0xa3, 0xb1, 0x6d, 0xf8, 0x6b, 0xa6, 0x74, 0x0b, 0x18, - 0x02, 0xed, 0x37, 0x00, 0x1c, 0x67, 0x93, 0x44, 0x49, 0x60, 0x6d, 0x36, 0xfc, 0xdb, 0xab, - 0x9e, 0x7c, 0x0e, 0x9f, 0x88, 0xf9, 0xf4, 0x3f, 0xc0, 0xf4, 0xdb, 0x80, 0xbd, 0xab, 0xa3, - 0x64, 0x97, 0x5b, 0xdd, 0xbf, 0xab, 0xca, 0xdd, 0xc5, 0xa7, 0x13, 0xcf, 0x9a, 0x39, 0xd1, - 0x55, 0x13, 0xec, 0xd0, 0x03, 0x83, 0xb5, 0xf0, 0x8a, 0xe6, 0x40, 0x9d, 0x92, 0x9a, 0x0d, - 0x41, 0x5c, 0xf3, 0x7b, 0x29, 0x9c, 0xa4, 0xea, 0x86, 0xce, 0xcf, 0x0e, 0x43, 0x13, 0xd6, - 0x27, 0x58, 0xee, 0x10, 0x10, 0x57, 0xd9, 0x3f, 0xcc, 0xfa, 0xfc, 0x34, 0xbb, 0x2b, 0xb9, - 0x3b, 0x93, 0xa3, 0xed, 0x90, 0x06, 0xdb, 0x95, 0x21, 0x8e, 0x69, 0x3c, 0xf3, 0xaa, 0xcf, - 0x7b, 0x5f, 0x02, 0x5a, 0x89, 0xbc, 0x9f, 0xbd, 0x9c, 0x65, 0x11, 0x67, 0x0b, 0x04, 0x88, - 0x69, 0xf1, 0x43, 0x4f, 0xa1, 0x5f, 0xdc, 0x75, 0xbc, 0xf7, 0xe0, 0xf2, 0x14, 0xfc, 0xe7, - 0x8f, 0x8e, 0x97, 0x80, 0x2a, 0x24, 0xb9, 0xbb, 0xb8, 0x34, 0x00, 0x60, 0xfe, 0xfa, 0x84, - 0xe8, 0xa4, 0x9e, 0xa0, 0x3c, 0xba, 0x75, 0xb4, 0x17, 0xb2, 0xc3, 0xcd, 0xed, 0x28, 0x15, - 0x00, 0x68, 0x13, 0x6d, 0xf1, 0x83, 0x3c, 0x72, 0x47, 0xdf, 0x93, 0x84, 0x82, 0xc8, 0x84, - 0x34, 0x1b, 0xab, 0x45, 0xf7, 0x4d, 0x25, 0x4e, 0xb4, 0xe0, 0x97, 0xe7, 0x5a, 0xc4, 0x39, - 0xd3, 0x15, 0x6e, 0xb1, 0xd7, 0x43, 0xad, 0x27, 0x15, 0x00, 0xbf, 0x54, 0x46, 0x5b, 0x84, - 0x92, 0xa8, 0xfc, 0xa2, 0x10, 0x52, 0x5a, 0xcb, 0x82, 0x41, 0xe8, 0xe2, 0xe6, 0xd8, 0x36, - 0xae, 0x43, 0x49, 0xbc, 0xf3, 0x18, 0x57, 0xa4, 0xba, 0xd3, 0x1b, 0x05, 0xa3, 0x1e, 0x78, - 0x43, 0x9c, 0xec, 0x18, 0x2d, 0x92, 0x9a, 0x87, 0x33, 0xfc, 0x25, 0x2e, 0xd1, 0x0b, 0xa6, - 0xc6, 0x86, 0x6d, 0xc0, 0x27, 0x32, 0x80, 0x79, 0xb8, 0x5e, 0x2c, 0x4f, 0x2d, 0x74, 0x16, - 0x70, 0x36, 0x8e, 0xa0, 0x8b, 0xf0, 0x67, 0x6c, 0x4a, 0x6e, 0xeb, 0xc6, 0xb7, 0x56, 0xc6, - 0x55, 0x91, 0x1f, 0xf4, 0x5a, 0x2a, 0x53, 0xb0, 0x65, 0x35, 0xc0, 0xe4, 0x47, 0xb8, 0x1f, - 0x77, 0xab, 0x87, 0xaf, 0x4f, 0xee, 0xa5, 0xec, 0x41, 0xc1, 0xa1, 0xfe, 0x4f, 0xeb, 0xb2, - 0x4b, 0x96, 0xc6, 0x12, 0x94, 0x93, 0x0a, 0x00, 0x17, 0xf1, 0xbc, 0xe1, 0x78, 0x67, 0x66, - 0xb2, 0x03, 0x3d, 0xa7, 0xff, 0xe1, 0x1d, 0x39, 0xac, 0xb9, 0xa6, 0x6c, 0x2a, 0x76, 0x37, - 0xfd, 0xcd, 0x48, 0x42, 0x39, 0x72, 0x56, 0xe6, 0x67, 0x1e, 0x20, 0xf9, 0xdd, 0x2e, 0xa9, - 0xf0, 0xac, 0xc2, 0x38, 0x88, 0xea, 0xd3, 0x63, 0x66, 0x02, 0xe3, 0x9f, 0xe5, 0xae, 0x95, - 0x98, 0x7d, 0x4f, 0xb9, 0xd4, 0x7c, 0x77, 0xc1, 0xf4, 0x55, 0xc3, 0xe0, 0x89, 0xbf, 0x0c, - 0xf4, 0x02, 0xef, 0xd5, 0xb9, 0x17, 0x6e, 0x13, 0xa8, 0xee, 0x99, 0xa5, 0x27, 0xcd, 0xc6, - 0xbd, 0x6a, 0x14, 0x7f, 0x40, 0xaf, 0xbf, 0x1e, 0x65, 0x28, 0xb7, 0xab, 0x82, 0x4a, 0x91, - 0xf3, 0x26, 0xc3, 0x1d, 0x23, 0x28, 0x7b, 0x27, 0x6f, 0xc6, 0x5c, 0x1b, 0x68, 0xc1, 0xc5, - 0x39, 0x7c, 0x49, 0x93, 0x7d, 0x28, 0x13, 0xe1, 0xf9, 0x46, 0x5d, 0x44, 0xb4, 0x4e, 0x47, - 0x92, 0x11, 0x26, 0xe7, 0xc1, 0x50, 0x70, 0x18, 0xe7, 0x35, 0x76, 0x6a, 0x63, 0x75, 0xb2, - 0xe7, 0xd0, 0x2e, 0xeb, 0xa7, 0xab, 0x05, 0xc0, 0x76, 0xf0, 0xb3, 0x04, 0xde, 0xf5, 0xb4, - 0x86, 0x93, 0x90, 0x0c, 0x6c, 0x63, 0x03, 0xfa, 0x99, 0x6e, 0x1f, 0x0c, 0xbc, 0x47, 0x1f, - 0x9a, 0x9b, 0x11, 0xe1, 0x73, 0x1f, 0x89, 0x20, 0x4a, 0x1d, 0x76, 0x43, 0x3c, 0x8d, 0x4c, - 0x64, 0x93, 0xfd, 0x3d, 0x09, 0x2f, 0xcf, 0x85, 0x11, 0xef, 0x9f, 0x5a, 0x30, 0x2d, 0x77, - 0x5c, 0xef, 0xd1, 0xb0, 0xb9, 0x20, 0xb3, 0xf7, 0x03, 0x29, 0xb1, 0x6b, 0x48, 0x59, 0x68, - 0x0a, 0x96, 0xae, 0x17, 0x87, 0x14, 0xe3, 0x56, 0x3e, 0x8e, 0xcd, 0xa7, 0x81, 0x70, 0xc0, - 0x31, 0xc9, 0xf7, 0x58, 0x99, 0xa2, 0x0a, 0xd3, 0xa3, 0x8d, 0xec, 0xcf, 0xe3, 0x63, 0xf8, - 0xc6, 0x50, 0xb3, 0xf2, 0x06, 0xc4, 0x12, 0x3c, 0x20, 0xf7, 0xeb, 0xc3, 0xbf, 0xc8, 0xca, - 0x70, 0x3a, 0x13, 0x5a, 0x66, 0xf4, 0x21, 0x67, 0xc3, 0x65, 0x5d, 0xaa, 0x7a, 0xa1, 0x66, - 0xac, 0x07, 0x3a, 0x4c, 0x75, 0x8b, 0x32, 0x54, 0x69, 0xf2, 0x5e, 0x8a, 0xaf, 0x04, 0x95, - 0x38, 0xc7, 0x4e, 0x5f, 0x1a, 0xc0, 0xf6, 0x93, 0xe4, 0x58, 0x48, 0xa8, 0x14, 0xd5, 0x6e, - 0x5d, 0x09, 0x6d, 0xe9, 0x23, 0x94, 0xf3, 0xa0, 0x6f, 0xb1, 0xff, 0x3d, 0x88, 0x47, 0x54, - 0xe6, 0x52, 0x89, 0xa0, 0x9a, 0x5f, 0x03, 0x8f, 0xd6, 0xfa, 0x47, 0x43, 0x34, 0x85, 0xad, - 0xa7, 0x61, 0x09, 0x38, 0x27, 0x89, 0x70, 0xbe, 0x14, 0x7a, 0x87, 0x0f, 0xe1, 0xcb, 0x67, - 0x01, 0x97, 0x6d, 0x4d, 0x2d, 0x78, 0xff, 0x07, 0x32, 0xfd, 0xab, 0x98, 0x12, 0x96, 0x54, - 0xda, 0xcb, 0xda, 0xfd, 0xc3, 0xb9, 0x65, 0x18, 0x86, 0x2b, 0x05, 0xe1, 0x8e, 0xb3, 0x7b, - 0xa8, 0xe2, 0x5f, 0xc3, 0x83, 0x5c, 0x41, 0xe7, 0x50, 0xd0, 0x11, 0x83, 0x5f, 0x25, 0xf9, - 0x5b, 0xe4, 0x4f, 0x22, 0xa4, 0x82, 0x48, 0x10, 0x7c, 0xbb, 0x9a, 0x9f, 0x74, 0x87, 0x07, - 0x83, 0x71, 0x55, 0x4e, 0x5a, 0x4a, 0xb5, 0x2d, 0x08, 0x41, 0x3f, 0x31, 0x2c, 0x45, 0x79, - 0x07, 0xa1, 0x5f, 0x73, 0xbe, 0xb1, 0x19, 0x64, 0x3d, 0x8f, 0x0b, 0x1a, 0xfe, 0xdf, 0xaf, - 0x70, 0x55, 0x24, 0xfe, 0x2b, 0x76, 0x1f, 0x62, 0x88, 0xb0, 0x90, 0xfa, 0xf2, 0xc6, 0x07, - 0xa4, 0xe7, 0xee, 0x3a, 0xba, 0x2a, 0xd0, 0xa9, 0x4e, 0xca, 0xcd, 0x24, 0x43, 0x12, 0x0c, - 0x01, 0xb0, 0x75, 0x13, 0x28, 0xf5, 0xcc, 0x57, 0xb8, 0x17, 0xbf, 0xc7, 0xff, 0x26, 0x9a, - 0x88, 0x0f, 0xfb, 0x59, 0x72, 0x1a, 0x19, 0x60, 0x6e, 0x79, 0x13, 0x12, 0xc4, 0x27, 0xdf, - 0xaa, 0xae, 0x47, 0x11, 0xf1, 0x74, 0xd2, 0x97, 0xe5, 0x9b, 0x3c, 0xa4, 0x86, 0xdd, 0x53, - 0xec, 0xfd, 0x91, 0x1b, 0x3a, 0xd7, 0x7c, 0xd8, 0x93, 0xcc, 0xa0, 0xf9, 0x81, 0x8a, 0xcc, - 0x91, 0x74, 0xb6, 0x5e, 0x49, 0x83, 0x81, 0xb6, 0x45, 0xeb, 0x85, 0xe5, 0x54, 0xe6, 0xe1, - 0x4c, 0x03, 0x2e, 0xa5, 0xf2, 0x19, 0xa9, 0xb6, 0x97, 0xcf, 0xd3, 0x77, 0xca, 0x89, 0x10, - 0xc5, 0x71, 0x61, 0x32, 0x57, 0xc7, 0x48, 0x3c, 0xfb, 0x06, 0x66, 0xf3, 0x5c, 0x82, 0x43, - 0xf5, 0x4c, 0xc3, 0x9c, 0xb7, 0xa4, 0x32, 0x16, 0x4f, 0xe2, 0xf2, 0x33, 0xb1, 0xe0, 0xd8, - 0x6b, 0xce, 0x27, 0xfd, 0xce, 0x77, 0xd5, 0x10, 0xc2, 0xc5, 0x3c, 0x43, 0x40, 0xbe, 0xa5, - 0x1c, 0x66, 0x45, 0xa6, 0x9a, 0xd1, 0xac, 0x34, 0xcc, 0x08, 0xa6, 0xc7, 0x9a, 0xb1, 0xbe, - 0xbc, 0xe1, 0x59, 0xef, 0xaf, 0x2c, 0xa7, 0x84, 0x88, 0x47, 0x39, 0xfd, 0x3c, 0x76, 0x6e, - 0x95, 0xdb, 0x17, 0x99, 0x75, 0x0f, 0x5f, 0xad, 0x9b, 0xe2, 0x68, 0x3f, 0x0c, 0x66, 0xbe, - 0xbd, 0x2e, 0xb3, 0xbb, 0xfd, 0xca, 0xeb, 0xb2, 0x7c, 0xe5, 0x11, 0x3f, 0x5b, 0xb6, 0x60, - 0x99, 0x32, 0x3c, 0x2f, 0xe5, 0x77, 0xe6, 0xee, 0x73, 0x04, 0x2d, 0xf6, 0x9b, 0x26, 0x62, - 0x6c, 0x13, 0x9d, 0x3f, 0x1d, 0x7b, 0x91, 0x68, 0x0d, 0xb1, 0xc6, 0x0c, 0x2d, 0x32, 0x77, - 0xa7, 0x0c, 0xee, 0x9a, 0x7e, 0x15, 0x6f, 0x0f, 0x5a, 0x0e, 0x48, 0x74, 0x27, 0x34, 0xfe, - 0x39, 0xb6, 0x46, 0x0d, 0x93, 0x79, 0x23, 0x4a, 0x03, 0x78, 0x02, 0x89, 0xf3, 0xb8, 0xa8, - 0xf2, 0xef, 0x8e, 0x03, 0x73, 0x76, 0x5d, 0x37, 0xdf, 0x94, 0x50, 0x9b, 0x43, 0xf2, 0x4c, - 0x66, 0x79, 0x29, 0xeb, 0x58, 0xed, 0x90, 0xca, 0xc5, 0xf9, 0x5a, 0x69, 0xb7, 0x4d, 0x69, - 0x38, 0x22, 0x46, 0x46, 0x32, 0x31, 0xc8, 0x3d, 0xb1, 0x8e, 0x57, 0xbd, 0xba, 0x72, 0x8f, - 0x1a, 0xc9, 0x01, 0xe5, 0x17, 0x3d, 0x36, 0x74, 0xfa, 0x74, 0xa6, 0x78, 0x72, 0x95, 0xc1, - 0xe6, 0x7c, 0x0b, 0x93, 0xc0, 0x1b, 0x7a, 0xad, 0xd7, 0x3d, 0x04, 0xda, 0xde, 0xc4, 0x12, - 0x77, 0xac, 0xfc, 0xfd, 0x1f, 0x10, 0x16, 0x57, 0xcc, 0x53, 0xa7, 0xcd, 0x7b, 0x70, 0x67, - 0x16, 0x0f, 0x70, 0x26, 0x0e, 0x51, 0x2d, 0x40, 0x23, 0xf1, 0x95, 0x8c, 0xb8, 0xaa, 0x6f, - 0xec, 0x26, 0xd5, 0x06, 0x83, 0x02, 0x27, 0xb7, 0x3a, 0x20, 0x27, 0xd1, 0x32, 0xe3, 0xc1, - 0xfa, 0xf8, 0x29, 0x31, 0x06, 0x64, 0xfa, 0xc9, 0x02, 0xf4, 0x1c, 0x6a, 0x8f, 0x59, 0x0c, - 0xc0, 0x1c, 0x47, 0x0f, 0x46, 0x42, 0xdf, 0x79, 0x87, 0x4a, 0x06, 0x29, 0x08, 0xad, 0xce, - 0x43, 0xb1, 0x65, 0xb5, 0x0d, 0xe3, 0x20, 0x66, 0x53, 0x6e, 0x06, 0x81, 0xb7, 0x45, 0x12, - 0xd6, 0x27, 0x7a, 0x7d, 0x63, 0xd6, 0xf6, 0x8c, 0x86, 0xf6, 0xbe, 0x76, 0x0b, 0x01, 0xb3, - 0x68, 0x2a, 0x98, 0x50, 0xdb, 0xd9, 0xa8, 0xbb, 0xe4, 0x9c, 0xf8, 0x60, 0xe4, 0x7a, 0x07, - 0x16, 0xb8, 0x6d, 0xca, 0x61, 0x0c, 0x8b, 0x81, 0x51, 0xc7, 0x57, 0x24, 0xd3, 0x78, 0x04, - 0x23, 0x00, 0x96, 0x30, 0x20, 0xf8, 0x6c, 0x97, 0x57, 0xbf, 0x59, 0xc8, 0x16, 0xad, 0x66, - 0xea, 0xfa, 0xde, 0xc6, 0x0c, 0xe5, 0x82, 0xa3, 0xf1, 0x23, 0x23, 0x77, 0x77, 0xb0, 0x9c, - 0x7f, 0x39, 0xa9, 0x54, 0x55, 0x76, 0x56, 0xc8, 0x0f, 0x13, 0x36, 0x5f, 0xb6, 0x67, 0x16, - 0x4a, 0x1f, 0x6d, 0x9d, 0xc2, 0xd7, 0x43, 0x4e, 0xe7, 0xd7, 0x8a, 0x49, 0xd8, 0xee, 0x2d, - 0xac, 0x67, 0xd6, 0x1f, 0xe2, 0x42, 0xaa, 0x4a, 0x24, 0x64, 0x52, 0x24, 0xbf, 0x10, 0xe8, - 0x2f, 0x0e, 0xcb, 0x03, 0x19, 0x6c, 0x68, 0xb0, 0x57, 0xf2, 0x01, 0xbc, 0x3d, 0x66, 0x30, - 0x26, 0xd2, 0x7e, 0xcb, 0xcb, 0x21, 0xd1, 0x81, 0xb9, 0xb7, 0x92, 0xab, 0xe6, 0x4e, 0x47, - 0x33, 0x44, 0x2f, 0xed, 0x9e, 0x10, 0xd4, 0x7b, 0x55, 0xf6, 0xac, 0xa6, 0x23, 0xa7, 0xdb, - 0x0a, 0x28, 0x31, 0xbf, 0x73, 0xba, 0xe8, 0x0b, 0x86, 0x66, 0x3b, 0x85, 0x64, 0xd0, 0xd6, - 0x46, 0xd6, 0xe5, 0x4a, 0x77, 0xbc, 0xf1, 0xdd, 0xd2, 0x99, 0xad, 0x5f, 0x76, 0xf0, 0x57, - 0xf3, 0xa1, 0x93, 0xdb, 0x5e, 0x51, 0x14, 0x1e, 0x28, 0x26, 0x17, 0x5d, 0x37, 0xd9, 0xb2, - 0xef, 0x03, 0x72, 0x4c, 0xf3, 0x15, 0x3a, 0xf8, 0x9d, 0xf5, 0x09, 0xac, 0xb3, 0x31, 0x30, - 0x25, 0x15, 0x60, 0xeb, 0x5f, 0xcc, 0x7b, 0x48, 0x41, 0x4f, 0x65, 0x0e, 0x09, 0xd5, 0x23, - 0x7e, 0x2e, 0x68, 0x4f, 0x46, 0x76, 0x6f, 0x76, 0x1a, 0x76, 0x72, 0xbb, 0xa9, 0x31, 0x39, - 0x62, 0x54, 0x90, 0x1f, 0x3b, 0x62, 0xa5, 0xfb, 0x78, 0x05, 0xf3, 0x8f, 0x60, 0x0c, 0xc9, - 0x37, 0x3e, 0xad, 0xc1, 0x80, 0xaa, 0x78, 0x40, 0x8e, 0x68, 0xbb, 0x1d, 0x3d, 0x6e, 0x20, - 0xdc, 0x60, 0x45, 0x6f, 0x71, 0xa6, 0x8d, 0x79, 0x05, 0x96, 0xe6, 0x99, 0x4e, 0x82, 0x74, - 0x23, 0x78, 0xb4, 0xd9, 0xd2, 0x98, 0x4c, 0x9b, 0x75, 0x8f, 0x35, 0x64, 0x12, 0xda, 0x4d, - 0xb0, 0x94, 0x42, 0xb3, 0x8f, 0x1a, 0x03, 0xce, 0xd0, 0x3f, 0x69, 0xf4, 0xbb, 0x03, 0x3e, - 0xac, 0x32, 0x1f, 0x0c, 0x65, 0x2c, 0x81, 0x7b, 0xc0, 0x5b, 0xf2, 0xe7, 0xc8, 0xfa, 0xf2, - 0x96, 0x1c, 0x74, 0xc4, 0xbb, 0x5b, 0x88, 0xd9, 0x29, 0x26, 0xdf, 0xbe, 0xcb, 0x2e, 0x11, - 0xa2, 0xeb, 0x17, 0x67, 0x3f, 0x91, 0x90, 0x08, 0x73, 0x87, 0x1f, 0x49, 0xff, 0x92, 0xed, - 0xfd, 0x19, 0x4f, 0x28, 0xe6, 0x1c, 0xca, 0xb4, 0xbf, 0x8c, 0xee, 0x9d, 0xa6, 0xf0, 0xd8, - 0x48, 0xdd, 0xac, 0xec, 0xc2, 0x08, 0x3c, 0x8f, 0x56, 0x2c, 0x15, 0xf5, 0xee, 0xce, 0x67, - 0x13, 0x11, 0xcf, 0xf2, 0xf7, 0x0c, 0xd0, 0xa7, 0x7e, 0x93, 0x4d, 0xa0, 0x6f, 0xdc, 0x5c, - 0xb6, 0x10, 0x13, 0x11, 0xa3, 0x0e, 0x82, 0xf5, 0x35, 0x41, 0xc4, 0xdb, 0x56, 0x80, 0x6f, - 0x5b, 0xfa, 0xdd, 0x8c, 0x04, 0xa9, 0x07, 0x19, 0xc2, 0x2d, 0x24, 0xde, 0x14, 0x7d, 0xe3, - 0x3e, 0x5d, 0x9f, 0x9f, 0x2a, 0x4c, 0x9b, 0xe8, 0xdc, 0x93, 0x00, 0x13, 0x90, 0x3d, 0x41, - 0xd5, 0x3c, 0x5d, 0x6f, 0x9a, 0xda, 0xc6, 0x6e, 0xb7, 0xee, 0x9d, 0x92, 0x30, 0xfe, 0xe1, - 0xbb, 0xe9, 0x93, 0x7d, 0x9c, 0x03, 0xd6, 0x13, 0x2b, 0x37, 0x97, 0xd6, 0x35, 0x3f, 0x09, - 0x57, 0xe1, 0xe6, 0xb2, 0x9b, 0x95, 0x8d, 0x2b, 0x84, 0xc5, 0x34, 0x91, 0xb0, 0x13, 0xed, - 0x53, 0x1a, 0x84, 0x3e, 0x00, 0x30, 0x92, 0x38, 0x07, 0xfe, 0x3d, 0x18, 0x80, 0x16, 0x09, - 0x04, 0xe1, 0x16, 0x8f, 0x77, 0xf8, 0x7c, 0x0a, 0xe3, 0x95, 0x49, 0xbf, 0xb1, 0xf4, 0x60, - 0x60, 0x9b, 0xa4, 0x46, 0x4c, 0x3e, 0xf2, 0xcd, 0x19, 0x2c, 0x9c, 0xe9, 0xf5, 0xbb, 0xca, - 0x14, 0x3d, 0xa5, 0x9f, 0x18, 0xce, 0x11, 0x7a, 0x10, 0xd0, 0xd8, 0xcb, 0x88, 0x12, 0x7c, - 0x61, 0xf8, 0x3e, 0x79, 0x81, 0xb6, 0xd9, 0xc0, 0x37, 0x26, 0xc7, 0xde, 0x71, 0xa2, 0x8f, - 0x2f, 0x07, 0xa7, 0x31, 0x8b, 0x69, 0xd5, 0x45, 0x77, 0xc8, 0x58, 0xc2, 0x08, 0x98, 0x6c, - 0x6b, 0x99, 0x1f, 0xeb, 0x87, 0x34, 0xd7, 0xdb, 0x4f, 0x2f, 0x19, 0x6a, 0x48, 0xcd, 0x9c, - 0x09, 0xb5, 0x27, 0x38, 0xab, 0x0c, 0x83, 0xdd, 0xea, 0x2e, 0xd7, 0xdd, 0x4d, 0x36, 0x01, - 0xc4, 0x64, 0xef, 0xd5, 0x52, 0x5e, 0x7a, 0xb7, 0x98, 0x6c, 0xc9, 0xbb, 0xb7, 0x4d, 0xc9, - 0x61, 0x0c, 0xa8, 0xe1, 0x52, 0xec, 0xc8, 0x0f, 0x69, 0x14, 0xb0, 0x9e, 0x19, 0x2d, 0xa7, - 0x6b, 0x8a, 0x80, 0x1d, 0xb0, 0x3f, 0x1e, 0x5c, 0xde, 0x8a, 0xb7, 0x8b, 0x24, 0xa0, 0x07, - 0xf4, 0x96, 0x74, 0x25, 0xfa, 0x27, 0x14, 0x2f, 0x9a, 0x20, 0x78, 0x41, 0xd7, 0x8c, 0x54, - 0xfb, 0xdd, 0x5f, 0xd9, 0x31, 0x51, 0x8d, 0x70, 0xba, 0xe4, 0x6c, 0x84, 0x49, 0x89, 0xa0, - 0xfc, 0x99, 0x2a, 0xb5, 0x37, 0x7b, 0x3b, 0x01, 0x3a, 0x21, 0xa0, 0x21, 0x40, 0xbf, 0x0c, - 0x96, 0xb9, 0xac, 0xdb, 0x8a, 0x68, 0x6b, 0x83, 0xad, 0x03, 0xf8, 0xde, 0xe8, 0x60, 0xcf, - 0xdf, 0xd7, 0x25, 0x8c, 0xe9, 0xf3, 0xe8, 0xac, 0x7b, 0x7f, 0xaf, 0xdc, 0x3f, 0x11, 0x5a, - 0xf9, 0x9f, 0xeb, 0x5a, 0x4c, 0x27, 0x17, 0x97, 0x51, 0x2b, 0x3a, 0x16, 0x4a, 0x57, 0x3a, - 0x44, 0xe9, 0x9f, 0x12, 0x52, 0x01, 0xa4, 0x77, 0x39, 0x77, 0x1b, 0xb7, 0x8e, 0xfd, 0xff, - 0x3b, 0xcb, 0xa4, 0x8d, 0xe2, 0xe0, 0xc0, 0xea, 0x9f, 0x86, 0x2b, 0xe2, 0x37, 0xfd, 0x7d, - 0x72, 0x19, 0xf3, 0xbb, 0xa3, 0x48, 0xc9, 0x8a, 0xd5, 0x4b, 0xfe, 0x4c, 0xb5, 0xd3, 0xc9, - 0x04, 0x62, 0x24, 0xf4, 0x05, 0x23, 0xc6, 0x9d, 0x68, 0x42, 0x10, 0x50, 0x71, 0xcd, 0xc0, - 0xec, 0x3b, 0xb6, 0xbc, 0xb5, 0xac, 0x80, 0xa4, 0xc1, 0x7e, 0x15, 0x65, 0xa6, 0x6e, 0x6d, - 0xdf, 0x70, 0x0f, 0xf1, 0x33, 0x17, 0x91, 0x24, 0x98, 0x27, 0xaa, 0xf0, 0xe4, 0x55, 0xab, - 0xb6, 0x63, 0xed, 0x7d, 0x69, 0x80, 0x9b, 0xdd, 0x0a, 0x5c, 0xfa, 0x4a, 0x9c, 0x12, 0x8b, - 0x5f, 0xb1, 0x87, 0x44, 0x5a, 0xc0, 0x21, 0x0f, 0x70, 0x65, 0xa1, 0x43, 0x36, 0x97, 0xd9, - 0xb7, 0x0d, 0x73, 0xa7, 0x41, 0x6d, 0x1b, 0x0a, 0x81, 0x5d, 0x6b, 0x69, 0x2a, 0x28, 0x17, - 0x19, 0x44, 0x8e, 0x9b, 0xd8, 0xc2, 0x00, 0x55, 0x20, 0x2e, 0xfc, 0x84, 0xb5, 0xba, 0x8a, - 0x2f, 0x79, 0x3e, 0xd0, 0x34, 0xf5, 0xf3, 0x3f, 0x5b, 0x12, 0x11, 0x62, 0x79, 0x23, 0x22, - 0xa4, 0x42, 0x75, 0x6d, 0xde, 0x84, 0x88, 0x32, 0x2a, 0xce, 0x0d, 0xe6, 0x40, 0xb6, 0x5e, - 0x2d, 0x9c, 0x97, 0x08, 0xf9, 0xfc, 0x3e, 0x3b, 0x02, 0x0e, 0x95, 0x49, 0xf0, 0x73, 0x1c, - 0x73, 0xeb, 0xaf, 0x0a, 0x2e, 0xaf, 0x32, 0x14, 0x58, 0xd3, 0xb3, 0x37, 0x08, 0x4a, 0xef, - 0x53, 0x31, 0x6e, 0x65, 0xa6, 0xe4, 0x40, 0x9d, 0x0a, 0x45, 0x36, 0xdf, 0xb5, 0xdc, 0xbc, - 0x43, 0x33, 0x66, 0x64, 0x11, 0x4d, 0x94, 0x61, 0xa3, 0x6b, 0x36, 0x3f, 0xc2, 0x3b, 0x01, - 0xe8, 0x35, 0xde, 0xa6, 0x50, 0x68, 0x8d, 0xdb, 0x75, 0x54, 0xd9, 0xc3, 0x74, 0xb9, 0x56, - 0x96, 0xd3, 0x73, 0x27, 0x5e, 0xf4, 0xb5, 0xe5, 0x9f, 0xfb, 0x3c, 0xf9, 0xdd, 0x0c, 0xa8, - 0x7a, 0x27, 0xfb, 0x46, 0x1f, 0x46, 0x6f, 0x47, 0xec, 0x88, 0xe5, 0x85, 0x48, 0xbf, 0xd5, - 0x57, 0xa0, 0xe3, 0xad, 0x7e, 0x4a, 0xb5, 0xdc, 0x13, 0x55, 0x7e, 0xd1, 0xf1, 0x83, 0x54, - 0x42, 0x47, 0xee, 0xad, 0x0f, 0xa8, 0x91, 0x8c, 0x1d, 0xcc, 0xc6, 0x9e, 0xf6, 0x93, 0x9f, - 0x8f, 0xde, 0x89, 0x3b, 0x26, 0x5c, 0x24, 0x81, 0xb6, 0xdd, 0x9f, 0x67, 0xb2, 0x05, 0xf4, - 0xf0, 0x1d, 0x84, 0x06, 0xb4, 0x3f, 0x88, 0xf9, 0xe6, 0x1e, 0xe4, 0xc6, 0x10, 0x8e, 0x9f, - 0x99, 0x92, 0x6a, 0xaa, 0x25, 0x0b, 0x19, 0xd3, 0xa4, 0xa2, 0x48, 0xe6, 0x0b, 0x8e, 0x52, - 0x3b, 0x6d, 0x6d, 0xcd, 0x69, 0xa5, 0x04, 0x09, 0xfd, 0xd0, 0xe2, 0xb4, 0x74, 0x63, 0x22, - 0xeb, 0x3c, 0x81, 0x56, 0x4f, 0xd5, 0xd1, 0xb5, 0x63, 0x1a, 0xa4, 0xeb, 0x0f, 0xe8, 0xbc, - 0x48, 0x9f, 0x0a, 0x66, 0x56, 0xdb, 0x32, 0xe9, 0x5b, 0x23, 0xc4, 0x55, 0x46, 0x37, 0xee, - 0x71, 0x93, 0xd4, 0x52, 0x83, 0xdc, 0xc2, 0x79, 0x61, 0xa8, 0xf5, 0xb1, 0x3c, 0x10, 0xd5, - 0xff, 0x62, 0x99, 0x43, 0x6d, 0xe2, 0x86, 0xad, 0x5e, 0x7e, 0xc0, 0x06, 0x03, 0x6b, 0xf5, - 0x5a, 0x1f, 0x6b, 0x44, 0x4d, 0x95, 0xd9, 0x24, 0x92, 0x19, 0x5d, 0x79, 0x73, 0x8d, 0x84, - 0x13, 0x09, 0xaa, 0x72, 0x7c, 0x38, 0x7d, 0x7c, 0xd2, 0xd7, 0xe2, 0x49, 0xc3, 0x09, 0x0f, - 0xf3, 0xc7, 0x46, 0xa7, 0x01, 0x50, 0x61, 0x28, 0xfc, 0x22, 0xda, 0x15, 0xa2, 0xd3, 0xe6, - 0xa9, 0xc7, 0xad, 0x0a, 0x6b, 0xb8, 0x4d, 0x7d, 0x5b, 0x28, 0x3f, 0xdb, 0xa1, 0xb8, 0x07, - 0x3f, 0x54, 0xd1, 0x4a, 0x1c, 0x29, 0xcf, 0xc6, 0xea, 0x0b, 0x20, 0x78, 0x14, 0xe8, 0xbf, - 0x40, 0x09, 0x93, 0x20, 0x39, 0x0e, 0xe1, 0x45, 0x92, 0xc9, 0xcb, 0xe9, 0xdd, 0x50, 0xbb, - 0x6f, 0xc1, 0x3c, 0xa6, 0xb8, 0xf4, 0x83, 0x4f, 0xa9, 0xfc, 0xd3, 0x8c, 0x99, 0x07, 0x1f, - 0xd4, 0xc5, 0x52, 0xd3, 0x80, 0x3e, 0xcb, 0x59, 0x6b, 0xf4, 0xec, 0xc1, 0x46, 0x24, 0xed, - 0x97, 0x0e, 0x16, 0x39, 0x1c, 0x2e, 0xfd, 0x64, 0x72, 0xa5, 0xc5, 0xb3, 0x2f, 0xda, 0xc4, - 0x62, 0x66, 0xb4, 0x3a, 0xb6, 0xc0, 0x72, 0x73, 0xd2, 0xe2, 0x18, 0x52, 0x8b, 0x22, 0x1b, - 0x21, 0x69, 0x3b, 0x30, 0x54, 0xfb, 0xbb, 0xc5, 0x5c, 0x5e, 0x97, 0x5f, 0x25, 0xb8, 0xd5, - 0x2f, 0x4e, 0x78, 0x4a, 0xf8, 0x2f, 0xe2, 0x20, 0xa6, 0xfe, 0x77, 0xc8, 0x25, 0x08, 0xb4, - 0x6d, 0xea, 0x66, 0xa2, 0xcc, 0x81, 0x82, 0x8b, 0x0d, 0xcd, 0x7f, 0x86, 0x91, 0x91, 0xc1, - 0xbb, 0x53, 0x35, 0xb0, 0xff, 0xfb, 0x8b, 0xb3, 0xf2, 0xbd, 0x16, 0xdb, 0xbf, 0x11, 0xc0, - 0x48, 0x84, 0xe8, 0xf7, 0xfb, 0xb4, 0x7f, 0xc2, 0xaa, 0x17, 0x06, 0xa4, 0x70, 0xdd, 0xc6, - 0x77, 0xb3, 0xd7, 0x56, 0x21, 0xf3, 0xd9, 0x2a, 0x62, 0x81, 0x24, 0x11, 0x71, 0xff, 0xff, - 0x25, 0x3f, 0xc9, 0x25, 0x52, 0x63, 0x89, 0xbb, 0x17, 0x66, 0x66, 0x24, 0x29, 0x01, 0xd6, - 0x11, 0x8c, 0x10, 0xc6, 0xba, 0xf8, 0xa8, 0xe3, 0xcd, 0x44, 0x5d, 0xfd, 0xa1, 0xc0, 0xd8, - 0x6a, 0x60, 0xc0, 0x2a, 0xd8, 0xd9, 0xad, 0xf0, 0x46, 0x9e, 0x42, 0xe6, 0x8c, 0x5e, 0x04, - 0x27, 0x8a, 0xd7, 0xf5, 0xb7, 0x70, 0x80, 0x37, 0xc0, 0x6d, 0x6c, 0xd0, 0x0f, 0x8a, 0xc4, - 0xf8, 0x76, 0xfc, 0x02, 0x97, 0xf2, 0xac, 0x3f, 0x07, 0x41, 0xd5, 0xea, 0x38, 0xe9, 0xad, - 0x0e, 0x14, 0x85, 0xfc, 0xd3, 0x6b, 0x10, 0x65, 0xd4, 0x12, 0x35, 0x6d, 0xa5, 0x47, 0x60, - 0xe9, 0x2d, 0x02, 0x33, 0xa9, 0x7b, 0x81, 0x2e, 0x87, 0x8c, 0x23, 0x98, 0x67, 0x2c, 0x59, - 0x0d, 0x68, 0x9d, 0x03, 0x13, 0xd7, 0x4d, 0x34, 0xcf, 0xb9, 0xb3, 0x34, 0xa5, 0xb8, 0xce, - 0xf3, 0xce, 0x4c, 0x46, 0xb5, 0x74, 0x2a, 0x29, 0xa6, 0x78, 0x10, 0x29, 0xec, 0xe7, 0x62, - 0xcd, 0xf0, 0xb8, 0x7b, 0x30, 0xa0, 0xb4, 0x07, 0x5a, 0x37, 0x19, 0x91, 0x5a, 0x1e, 0xc4, - 0x9f, 0x44, 0xf0, 0x5c, 0x25, 0xde, 0x2a, 0xce, 0xe6, 0x1a, 0x4b, 0x89, 0xa3, 0x42, 0xa1, - 0x9a, 0x0b, 0x85, 0xf8, 0x4a, 0x59, 0x0e, 0x1e, 0x50, 0xa3, 0x77, 0xe8, 0x06, 0xce, 0x76, - 0xb0, 0x6d, 0x17, 0x3a, 0xe3, 0x1a, 0xf9, 0xb8, 0x8c, 0xcd, 0x44, 0x52, 0x5e, 0x6c, 0x58, - 0x7f, 0xad, 0x7b, 0x3a, 0x2c, 0xce, 0x5d, 0x9e, 0xed, 0x31, 0xf8, 0x7b, 0x0f, 0x2b, 0x1e, - 0xf0, 0x8e, 0xa4, 0x33, 0xa6, 0xc5, 0x83, 0xba, 0xdc, 0xd9, 0x44, 0x4e, 0x4a, 0x94, 0x63, - 0xb2, 0x33, 0x9e, 0xcd, 0x59, 0x8e, 0x13, 0xd0, 0xb6, 0x22, 0x5e, 0xa3, 0x4e, 0x9c, 0x09, - 0x2e, 0x6f, 0xc8, 0x66, 0x8b, 0xd4, 0x82, 0x63, 0x8f, 0x9b, 0xe8, 0x28, 0x98, 0x4d, 0xea, - 0xc4, 0xeb, 0x8e, 0xc5, 0x08, 0x2a, 0x9f, 0x0f, 0x15, 0x17, 0x6b, 0x6f, 0xe0, 0x84, 0x08, - 0x77, 0xe9, 0x51, 0xa8, 0xa4, 0x66, 0x71, 0x0d, 0x55, 0xcf, 0x21, 0xdb, 0xc8, 0xd0, 0x2d, - 0x43, 0xac, 0x6a, 0xca, 0x71, 0x7c, 0x74, 0xef, 0x21, 0x68, 0x5f, 0xc6, 0xdb, 0xf2, 0x8f, - 0x82, 0xa8, 0xce, 0x56, 0xe9, 0x11, 0x5d, 0xae, 0xb2, 0x7f, 0x69, 0xea, 0x9a, 0x9c, 0x25, - 0x1d, 0xcb, 0x23, 0xdb, 0x14, 0x07, 0x52, 0x88, 0xe3, 0xb0, 0xf2, 0x8c, 0xa2, 0x17, 0x35, - 0xa2, 0x12, 0x3c, 0x83, 0xd2, 0xa4, 0x06, 0x9d, 0x46, 0xbf, 0x02, 0x35, 0x0c, 0xf5, 0x20, - 0x8e, 0xf0, 0x15, 0x2e, 0xa2, 0xf8, 0x9b, 0xa0, 0x7d, 0x78, 0x06, 0xb2, 0x9b, 0x68, 0xf1, - 0xbe, 0xe3, 0x92, 0x6a, 0x82, 0xa0, 0x42, 0xbd, 0x60, 0xe3, 0xae, 0x02, 0x04, 0x9f, 0x30, - 0x8c, 0xa9, 0x80, 0x4c, 0x27, 0x17, 0x9a, 0x70, 0x47, 0xc5, 0xb6, 0x3c, 0xf3, 0xf0, 0xf7, - 0x15, 0xbf, 0x0a, 0x65, 0x48, 0x67, 0x80, 0xcc, 0x86, 0x31, 0x1e, 0x55, 0xeb, 0xc8, 0x63, - 0x88, 0x12, 0x93, 0xaf, 0x05, 0xb6, 0x2e, 0x2f, 0x4f, 0xa6, 0x07, 0x5f, 0xed, 0x69, 0x0b, - 0x3f, 0x65, 0x23, 0x46, 0xdc, 0x5e, 0x3a, 0xef, 0x82, 0x29, 0x45, 0x79, 0xcb, 0x64, 0xad, - 0x71, 0xe1, 0xfe, 0xe4, 0xd4, 0x3d, 0x01, 0xa4, 0xea, 0xa2, 0x61, 0x70, 0x68, 0xc6, 0x50, - 0x77, 0x92, 0xc7, 0x84, 0xbc, 0x99, 0xe8, 0x30, 0x1b, 0x7c, 0xbf, 0x77, 0xa4, 0x4f, 0x9a, - 0xb4, 0x07, 0xff, 0x08, 0xe0, 0x84, 0x19, 0xba, 0xe7, 0xa5, 0xdc, 0x38, 0xd1, 0x89, 0xea, - 0x84, 0x24, 0x85, 0x89, 0x38, 0xfc, 0xf4, 0x33, 0xdd, 0xfa, 0x2f, 0xbf, 0x9b, 0xa9, 0x4c, - 0xfd, 0xb8, 0xa1, 0xb2, 0x17, 0x4f, 0xed, 0xc0, 0x1e, 0xdf, 0x7e, 0x84, 0x94, 0xfc, 0x98, - 0x2e, 0x49, 0x7d, 0x5d, 0xcf, 0x28, 0x13, 0x80, 0xe6, 0x67, 0xaf, 0xca, 0x0e, 0x78, 0x80, - 0xd4, 0x6b, 0x2a, 0x41, 0xe2, 0x92, 0xd3, 0xa3, 0xbc, 0x0e, 0x91, 0x51, 0xe8, 0xe2, 0x5f, - 0x0d, 0x04, 0x5e, 0xf7, 0xdc, 0x00, 0xc1, 0x26, 0xf2, 0x94, 0x7b, 0xe5, 0xd2, 0xd7, 0x9e, - 0x11, 0x05, 0x4b, 0x92, 0x13, 0x80, 0x17, 0x18, 0x45, 0x78, 0x35, 0xc1, 0x86, 0xfe, 0xd2, - 0xe0, 0x3f, 0xe4, 0xe5, 0xfa, 0x96, 0x95, 0x01, 0x1f, 0xb3, 0x12, 0x57, 0xd2, 0x89, 0xa8, - 0x9c, 0x3a, 0x0f, 0x0e, 0xd5, 0xbd, 0x71, 0xb5, 0x0d, 0xae, 0x04, 0xfb, 0x9e, 0xaa, 0xf2, - 0x21, 0x22, 0x68, 0x95, 0xee, 0xca, 0x10, 0xf2, 0x53, 0x51, 0x64, 0x31, 0x8d, 0x12, 0x60, - 0x06, 0x43, 0x02, 0x3f, 0x41, 0x0b, 0x4c, 0x7f, 0x37, 0x5c, 0xfe, 0x86, 0x29, 0xe1, 0x05, - 0xea, 0x7b, 0x04, 0x04, 0xe3, 0x19, 0x42, 0xf5, 0xd0, 0x20, 0x8c, 0xb1, 0x9e, 0xf7, 0x21, - 0x64, 0xd2, 0x87, 0x7e, 0xd4, 0xee, 0x3b, 0x16, 0x11, 0xce, 0xa4, 0xee, 0xc1, 0x29, 0x61, - 0xf9, 0x34, 0xaa, 0x41, 0x17, 0xbb, 0xce, 0x04, 0xc3, 0xea, 0x38, 0xfa, 0xf6, 0x7e, 0xbb, - 0xe6, 0x68, 0xef, 0x0e, 0xaf, 0x6b, 0x8f, 0x90, 0x9a, 0x0b, 0x22, 0xed, 0x81, 0x68, 0x17, - 0x7a, 0xc2, 0xde, 0x31, 0x2a, 0xf0, 0x6f, 0xac, 0x7b, 0xc4, 0x62, 0x60, 0x62, 0x38, 0x03, - 0x42, 0x52, 0x88, 0x44, 0x18, 0xd3, 0xcf, 0x3d, 0xd8, 0x0f, 0x03, 0x3e, 0x01, 0xc9, 0xcd, - 0x43, 0x2e, 0xde, 0xa8, 0x73, 0x19, 0xb8, 0xbd, 0xf5, 0xb4, 0x00, 0xd1, 0x7c, 0xb0, 0xd4, - 0x74, 0x3f, 0x21, 0x74, 0xc1, 0x50, 0x37, 0xc7, 0xfd, 0x9e, 0x5c, 0xdc, 0xe9, 0x45, 0x86, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x6e, 0xfc, 0xcf, 0xd6, 0x50, 0x59, - 0x56, 0xba, 0x5c, 0x84, 0x50, 0x05, 0xa2, 0x3f, 0xbd, 0x48, 0xe9, 0x9d, 0xce, 0xde, 0x81, - 0xb8, 0x40, 0xa0, 0xd0, 0x5b, 0x7e, 0x8e, 0x35, 0xfd, 0x0a, 0xf3, 0x08, 0xe3, 0x37, 0xfa, - 0xd8, 0xb9, 0x08, 0x94, 0x79, 0xdd, 0x35, 0x73, 0x05, 0x8e, 0x64, 0x48, 0x82, 0xe9, 0xb0, - 0x49, 0x1d, 0x06, 0x89, 0x26, 0xc4, 0x8c, 0x06, 0x52, 0xad, 0xd9, 0x32, 0x00, 0x06, 0x00, - 0x00, 0x80, 0xf8, 0x69, 0x4a, 0x12, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x56, 0x90, 0xe6, 0xfe, 0xfc, 0x61, 0x4c, - 0xd6, 0x40, 0xc0, 0xfc, 0x9c, 0x69, 0x91, 0x0d, 0x55, 0xd2, 0x0f, 0x25, 0xad, 0xfe, 0x3e, - 0x4c, 0x9c, 0x06, 0x96, 0x9a, 0xe3, 0x2a, 0x51, 0xbe, 0x9a, 0x7a, 0x06, 0x13, 0x03, 0x39, - 0x58, 0x9a, 0x79, 0x4c, 0x5a, 0x25, 0x5a, 0x2c, 0xd2, 0xf8, 0x68, 0x30, 0x8b, 0xcc, 0x89, - 0x88, 0x3a, 0x44, 0x0b, 0x4d, 0xa1, 0xbc, 0xd1, 0xbd, 0x74, 0xdb, 0x3d, 0xef, 0x27, 0xa6, - 0x4e, 0xe8, 0x32, 0x34, 0xd7, 0x81, 0x3f, 0x46, 0x09, 0x1f, 0xff, 0x84, 0x9d, 0x9d, 0x62, - 0x1c, 0x11, 0x61, 0x5d, 0xd0, 0x73, 0x16, 0xe3, 0x9e, 0x00, 0xf0, 0x42, 0x42, 0x8a, 0xab, - 0xd6, 0x1b, 0x3b, 0x2e, 0x01, 0x15, 0x0f, 0xf5, 0xe9, 0xdb, 0x99, 0x6d, 0x5c, 0x8a, 0x3a, - 0xc1, 0x68, 0x54, 0xbf, 0xee, 0xea, 0xd1, 0x00, 0x8b, 0xe5, 0x3b, 0x7d, 0x15, 0x4a, 0x5e, - 0x36, 0x80, 0x58, 0x13, 0x14, 0xce, 0xd6, 0x26, 0x36, 0x7d, 0x7d, 0xc0, 0x34, 0x53, 0x5f, - 0x54, 0x62, 0x0f, 0xa5, 0x9d, 0xb4, 0x7d, 0x5e, 0xa3, 0xc4, 0xe8, 0x44, 0x66, 0xf7, 0x37, - 0x38, 0xef, 0x91, 0x3c, 0x6a, 0x36, 0x4a, 0xd8, 0x3d, 0x09, 0x45, 0x00, 0x62, 0xa8, 0x9c, - 0x25, 0x2a, 0x02, 0xa7, 0x13, 0xf9, 0xa3, 0x70, 0xb0, 0xeb, 0xdd, 0xf2, 0x0b, 0x82, 0xf1, - 0x43, 0x75, 0xc3, 0x18, 0xa0, 0xaf, 0x1d, 0x9c, 0x75, 0xe4, 0x90, 0xdf, 0x51, 0x6b, 0x3e, - 0x1f, 0x26, 0xf9, 0x68, 0x63, 0x9c, 0xc5, 0xef, 0xae, 0x44, 0xed, 0x31, 0x3f, 0xca, 0xaf, - 0x54, 0x28, 0xe3, 0x7e, 0x85, 0xea, 0x43, 0x75, 0x39, 0x82, 0xf3, 0x13, 0xd5, 0xa2, 0x9f, - 0x79, 0xee, 0xd4, 0x8f, 0xec, 0x3a, 0x56, 0x3f, 0x0e, 0x27, 0xb5, 0x17, 0x17, 0x43, 0x93, - 0x45, 0x82, 0x31, 0x0f, 0x7a, 0x56, 0xfb, 0xb7, 0x78, 0xef, 0x6e, 0x43, 0x63, 0x3a, 0x54, - 0xcc, 0xb6, 0x5b, 0x5c, 0x19, 0x11, 0xe2, 0x5d, 0xd5, 0xbe, 0xb0, 0xa2, 0x18, 0x77, 0x8e, - 0x97, 0x15, 0x12, 0x3a, 0x8c, 0x01, 0xc3, 0x98, 0x9b, 0xc3, 0x66, 0x2c, 0xc3, 0xa8, 0x94, - 0xc6, 0x2d, 0x0b, 0x77, 0x88, 0xc4, 0xa1, 0xdc, 0xd6, 0x96, 0x35, 0xea, 0xb9, 0xd8, 0x55, - 0xfc, 0x73, 0xf0, 0xd8, 0x2a, 0x38, 0x50, 0x16, 0x40, 0xa5, 0xe4, 0x91, 0xc3, 0x33, 0xc8, - 0xcc, 0xf1, 0xd1, 0x42, 0xf7, 0x9a, 0x35, 0x24, 0x21, 0xb2, 0x23, 0x0f, 0xd7, 0xb9, 0xca, - 0xfd, 0x96, 0x75, 0x9b, 0xf0, 0x07, 0x19, 0xcb, 0xa4, 0xe8, 0x78, 0x35, 0xe6, 0x3d, 0xdd, - 0x89, 0x76, 0x34, 0xa2, 0xf6, 0xa6, 0xac, 0x96, 0x25, 0xea, 0x2d, 0x05, 0x3f, 0xba, 0x50, - 0xb8, 0x5f, 0x12, 0xc9, 0xc6, 0x2b, 0xfc, 0xd0, 0x97, 0x33, 0xdc, 0x31, 0xce, 0xa4, 0xd0, - 0xf3, 0xd6, 0x44, 0x9b, 0xc4, 0xc4, 0x29, 0x96, 0xc6, 0x44, 0x94, 0x4c, 0xbc, 0xbc, 0xca, - 0xaf, 0xd1, 0x6d, 0x9f, 0xbb, 0x2a, 0xbf, 0xfc, 0xb5, 0x8e, 0xe9, 0xab, 0xd1, 0xbd, 0x4d, - 0xa7, 0x29, 0x32, 0x5b, 0xc4, 0x85, 0x0d, 0x10, 0xe7, 0xf2, 0x58, 0xd5, 0xba, 0xa3, 0x1b, - 0xaf, 0x9d, 0xff, 0xfd, 0xb0, 0x82, 0x19, 0xad, 0x30, 0xb7, 0x25, 0x23, 0x10, 0x77, 0x76, - 0xc4, 0x32, 0x95, 0x2c, 0xa7, 0xdd, 0x09, 0x35, 0xb6, 0x5a, 0xc8, 0x2d, 0x19, 0x8d, 0x55, - 0x4b, 0xa2, 0xc5, 0x7b, 0x82, 0x3e, 0x13, 0x3d, 0x5d, 0x5b, 0xa5, 0x19, 0x37, 0x47, 0xd8, - 0xdc, 0x09, 0x0e, 0x46, 0x19, 0xfc, 0x29, 0xd8, 0x70, 0x70, 0x26, 0xcb, 0x51, 0x83, 0x75, - 0x2b, 0x2c, 0xf2, 0xe7, 0xf7, 0xf9, 0xea, 0xb7, 0xfd, 0xa7, 0xe2, 0x8c, 0x68, 0x35, 0x8c, - 0xc7, 0x58, 0x4b, 0x22, 0xd2, 0x65, 0xf4, 0xd9, 0x03, 0x8b, 0xdb, 0xb6, 0xa8, 0xca, 0x7d, - 0x7c, 0xc0, 0x7f, 0x27, 0xf4, 0xd2, 0xaf, 0xfb, 0x95, 0x60, 0x37, 0x5c, 0x94, 0x6d, 0x6c, - 0x1f, 0xd7, 0x54, 0x6a, 0x05, 0xb2, 0x45, 0x0d, 0xc7, 0xe0, 0x17, 0x37, 0x9a, 0xd3, 0x0c, - 0x16, 0x2d, 0x9c, 0x1e, 0xee, 0x5a, 0x74, 0xea, 0x3c, 0x92, 0x6c, 0x10, 0x84, 0x96, 0xd2, - 0x67, 0x96, 0x99, 0xee, 0xb1, 0x41, 0x9e, 0x97, 0x11, 0x16, 0xce, 0xf3, 0xdd, 0x6a, 0xd8, - 0x7e, 0xfc, 0xae, 0xdc, 0xb0, 0x8a, 0xc0, 0xa0, 0xbb, 0x09, 0x9a, 0x48, 0xcc, 0x5c, 0xd1, - 0x49, 0x69, 0x8a, 0x1c, 0x97, 0xcc, 0x46, 0xdf, 0x8f, 0x29, 0x01, 0x69, 0x98, 0xce, 0x0e, - 0x43, 0x56, 0x1e, 0x71, 0xa6, 0x09, 0x07, 0x84, 0x0b, 0x79, 0x86, 0xa7, 0x14, 0x2b, 0x6a, - 0xc0, 0x6b, 0xf8, 0x3d, 0xd6, 0x55, 0x45, 0xb9, 0xbd, 0x62, 0x33, 0x7e, 0xab, 0xd5, 0x5f, - 0x7c, 0x66, 0x45, 0xd9, 0xf5, 0xcf, 0x14, 0x5d, 0x0a, 0x81, 0x24, 0xe4, 0x91, 0xa6, 0x91, - 0xfa, 0x19, 0x32, 0xcc, 0xce, 0x71, 0x9d, 0xda, 0xa3, 0xc2, 0xfb, 0x54, 0xf7, 0x36, 0x45, - 0x0f, 0xf9, 0x90, 0x19, 0x88, 0xa7, 0x40, 0xa8, 0xc5, 0x5c, 0x21, 0xfe, 0xa0, 0x06, 0x6b, - 0x10, 0x93, 0x24, 0x45, 0x86, 0x31, 0xe0, 0xfd, 0x51, 0x64, 0xb7, 0xed, 0xbc, 0x38, 0xa0, - 0x8b, 0xdf, 0x2e, 0xb0, 0xf7, 0x20, 0xb3, 0x5d, 0xaa, 0x55, 0x43, 0x7f, 0x5a, 0x29, 0xb9, - 0xdc, 0xd6, 0x5f, 0xc8, 0xea, 0x49, 0x30, 0xe3, 0x59, 0x8a, 0x76, 0xf7, 0x08, 0x3e, 0x39, - 0xc3, 0x88, 0xae, 0x43, 0x62, 0x44, 0xe4, 0x65, 0xc1, 0xfe, 0xf0, 0xa4, 0x33, 0xec, 0x6c, - 0xd5, 0xe6, 0xf3, 0xc3, 0x7c, 0xa4, 0x47, 0x1f, 0xe6, 0xca, 0x6e, 0xf4, 0x83, 0x65, 0x61, - 0xf4, 0xfb, 0x2c, 0x60, 0xff, 0x27, 0xa9, 0xc7, 0x5d, 0x43, 0x1a, 0x2e, 0xbd, 0x28, 0x1e, - 0x22, 0xa5, 0x6b, 0xef, 0x99, 0x3d, 0x3e, 0x50, 0xbd, 0xe1, 0x8b, 0x99, 0xf0, 0x42, 0xbe, - 0xdd, 0x60, 0x35, 0x8a, 0x3e, 0xc6, 0xd8, 0x6c, 0x74, 0x72, 0x4b, 0xf3, 0x34, 0x50, 0x23, - 0x4f, 0x58, 0x3c, 0x26, 0xb2, 0x59, 0x0b, 0xd3, 0x3d, 0x26, 0x3a, 0xe3, 0x04, 0x17, 0xc7, - 0x4b, 0x92, 0x7c, 0xe5, 0xac, 0xae, 0x02, 0x37, 0xb8, 0x39, 0x54, 0x4a, 0x5f, 0xb7, 0x6d, - 0x5f, 0xd9, 0xd3, 0x58, 0xed, 0xa3, 0xeb, 0xea, 0x26, 0x69, 0xfd, 0xec, 0xd2, 0xd4, 0xe0, - 0xea, 0x19, 0xe1, 0x85, 0xaf, 0xbd, 0xad, 0x51, 0x4a, 0x84, 0x78, 0xde, 0xc6, 0x4d, 0x0e, - 0x5c, 0x9e, 0x88, 0xbe, 0xf1, 0x19, 0x1a, 0xd9, 0x92, 0xc1, 0xea, 0x75, 0x0b, 0x84, 0x90, - 0x4d, 0x39, 0x03, 0x69, 0x10, 0x0b, 0xb0, 0x37, 0xd6, 0xec, 0x9f, 0xe6, 0xed, 0x3a, 0xd6, - 0x9d, 0xee, 0x76, 0xa0, 0x3e, 0xbf, 0xb9, 0x91, 0x81, 0x2f, 0xac, 0xc1, 0xdd, 0x04, 0x3b, - 0xe0, 0x63, 0x60, 0xca, 0xa9, 0xf8, 0x52, 0xf0, 0x28, 0x10, 0xd3, 0x79, 0x74, 0x20, 0xe5, - 0x8a, 0x1b, 0x5c, 0xa3, 0x38, 0x51, 0xfe, 0x64, 0xf5, 0x98, 0x80, 0x88, 0x41, 0xe2, 0xfd, - 0xec, 0x9a, 0xe8, 0x05, 0x29, 0xf9, 0x1b, 0xc5, 0xf3, 0x15, 0x2d, 0x58, 0x9a, 0xc4, 0x75, - 0xfd, 0x99, 0x23, 0x24, 0xcf, 0xb1, 0x00, 0x62, 0x47, 0xaa, 0x14, 0xa3, 0x7e, 0x1e, 0x38, - 0x9a, 0xa8, 0x18, 0xf7, 0x62, 0xb9, 0x9e, 0x3f, 0x10, 0x2f, 0x45, 0xf4, 0x36, 0x0e, 0x91, - 0x23, 0x1c, 0x04, 0xcf, 0x4d, 0xf9, 0xd4, 0x21, 0x7b, 0x86, 0x0a, 0xf7, 0x65, 0x67, 0xd5, - 0x11, 0xb2, 0x58, 0x90, 0x12, 0xd9, 0x12, 0x22, 0xe8, 0x13, 0xdf, 0x04, 0xd8, 0x4d, 0xad, - 0xa2, 0x0d, 0x7c, 0x8d, 0x71, 0xe5, 0xeb, 0x52, 0xd0, 0x26, 0xe2, 0xad, 0xaa, 0xd5, 0xcd, - 0x89, 0x28, 0xac, 0xc4, 0x2c, 0x20, 0x2d, 0xcf, 0x01, 0x27, 0x69, 0xd3, 0x81, 0xe2, 0x7e, - 0x4b, 0x25, 0x03, 0x03, 0x80, 0x67, 0xd4, 0x8d, 0x13, 0x7f, 0x59, 0x38, 0x80, 0x43, 0x0c, - 0x82, 0x70, 0x5c, 0xbd, 0xda, 0x97, 0x7f, 0x50, 0xb3, 0x8a, 0x44, 0xa5, 0xed, 0x73, 0x23, - 0x1f, 0xae, 0x55, 0x32, 0xb8, 0xa7, 0x39, 0x89, 0x6b, 0x93, 0x7a, 0x01, 0xca, 0xde, 0x59, - 0x9c, 0x52, 0xce, 0xb8, 0x38, 0x26, 0x21, 0xc8, 0x48, 0x95, 0x7f, 0xf9, 0xd8, 0x96, 0x71, - 0x72, 0xf3, 0xc1, 0x53, 0xed, 0xfb, 0xe7, 0x0b, 0xcf, 0xf1, 0x74, 0xd6, 0xe6, 0xaf, 0xe5, - 0xb7, 0x0d, 0xd2, 0x72, 0xc6, 0xe4, 0x00, 0x17, 0x72, 0xc2, 0xd7, 0xa6, 0x7b, 0x52, 0x14, - 0x0c, 0x66, 0xa2, 0x80, 0x66, 0x3d, 0x0e, 0x4e, 0xa9, 0x53, 0x0c, 0x20, 0x00, 0x41, 0xc5, - 0x3c, 0xc6, 0x75, 0x00, 0xfa, 0x64, 0x59, 0x2a, 0x02, 0xbd, 0x49, 0xc8, 0x1a, 0xaa, 0xec, - 0xb1, 0xfe, 0x67, 0xbb, 0x6f, 0xa9, 0xc1, 0x50, 0xbd, 0x63, 0xf4, 0xef, 0x4b, 0x33, 0x1f, - 0xb4, 0xad, 0xe2, 0x85, 0xa6, 0x2e, 0xd9, 0x61, 0xaf, 0x52, 0x44, 0xfe, 0x2e, 0xaa, 0x8f, - 0x69, 0x54, 0xff, 0x09, 0x32, 0xb2, 0xe7, 0x64, 0x49, 0x9f, 0x76, 0xae, 0x3a, 0x71, 0xef, - 0xc6, 0x42, 0x76, 0xda, 0x34, 0x7e, 0xe9, 0x5c, 0x01, 0xc4, 0x08, 0x28, 0xf6, 0xd9, 0x4b, - 0xcd, 0x88, 0x4d, 0xbd, 0x47, 0x2a, 0x8f, 0x51, 0x42, 0x65, 0x98, 0x95, 0x04, 0xa4, 0x3e, - 0xf3, 0x7d, 0xa7, 0xed, 0xac, 0xd8, 0x16, 0x70, 0xa4, 0x25, 0xbf, 0x1f, 0x58, 0x64, 0xdd, - 0x25, 0x55, 0x0b, 0xa4, 0xe3, 0x74, 0xb8, 0x79, 0xa9, 0xa2, 0xc5, 0x41, 0x36, 0x41, 0xd7, - 0xb7, 0x33, 0xab, 0x4a, 0xe0, 0x94, 0x10, 0xc6, 0x7e, 0x6b, 0xeb, 0x74, 0x0f, 0xcf, 0x97, - 0xa3, 0xc0, 0xc5, 0x55, 0x6f, 0xa8, 0x92, 0xba, 0x83, 0x77, 0x91, 0xdf, 0xed, 0xe8, 0x39, - 0xf2, 0x1e, 0x57, 0x08, 0xa5, 0x05, 0x94, 0x44, 0xca, 0x07, 0x37, 0x33, 0x27, 0x7e, 0xd1, - 0xbd, 0x9e, 0x1d, 0x40, 0x3e, 0x01, 0x03, 0x68, 0xfd, 0xf6, 0x44, 0xe4, 0x31, 0x9c, 0xe0, - 0xe1, 0xf4, 0x7f, 0x18, 0xaa, 0xa9, 0x3d, 0x27, 0xe8, 0xc5, 0x23, 0x79, 0x0a, 0x59, 0xd4, - 0xfe, 0xb0, 0xa7, 0x7a, 0xdc, 0xa9, 0xb0, 0xa9, 0xd5, 0xb5, 0x3d, 0xb0, 0x1c, 0x59, 0x2e, - 0x4d, 0xfd, 0x62, 0xad, 0x32, 0x4a, 0xbe, 0x3d, 0x23, 0x9e, 0x8d, 0x4f, 0xc9, 0x5f, 0xa1, - 0x07, 0x5e, 0x79, 0x0e, 0xf9, 0x2f, 0xb3, 0xdf, 0xb9, 0x4d, 0x01, 0x5e, 0x40, 0x5a, 0xd8, - 0x00, 0x78, 0xa0, 0x0a, 0xef, 0x1c, 0xa5, 0x1c, 0x0c, 0xac, 0xe7, 0x1c, 0x82, 0x37, 0xb1, - 0x67, 0x96, 0xfb, 0xe5, 0x39, 0x4c, 0x7e, 0x18, 0x7a, 0x51, 0x21, 0x0b, 0x1f, 0xa5, 0xc9, - 0x06, 0xb6, 0x39, 0x79, 0x59, 0x65, 0xb4, 0x5f, 0xca, 0x9b, 0x67, 0x7d, 0x22, 0xc6, 0x48, - 0xab, 0x92, 0xd1, 0xf2, 0x6e, 0xa1, 0xff, 0xc2, 0x5d, 0x8d, 0xdb, 0x10, 0xf8, 0xf1, 0x42, - 0x88, 0x98, 0x41, 0x8b, 0x59, 0x52, 0x91, 0x23, 0x77, 0xa2, 0xf4, 0x9c, 0xf4, 0xe1, 0xb2, - 0x55, 0xe7, 0x27, 0xaa, 0x9f, 0x6c, 0x99, 0x53, 0xf0, 0x68, 0xde, 0xa5, 0x92, 0x60, 0xec, - 0x1b, 0x62, 0xb8, 0xe7, 0x7e, 0x6f, 0x61, 0xe6, 0x1c, 0x24, 0x6b, 0x63, 0xec, 0x7d, 0xab, - 0x81, 0xd7, 0xb2, 0x8b, 0x8d, 0xc8, 0x9e, 0x37, 0x3e, 0x27, 0xb9, 0x19, 0x7e, 0x96, 0xcf, - 0xdd, 0x67, 0x32, 0x42, 0x89, 0x49, 0xbc, 0x2a, 0xc0, 0x0c, 0x04, 0xf3, 0x20, 0x8b, 0x33, - 0x82, 0x0d, 0xa6, 0x65, 0x43, 0x56, 0x12, 0x6c, 0xb8, 0xe9, 0x33, 0x92, 0x1e, 0xf5, 0x2b, - 0x65, 0x61, 0xa1, 0xef, 0x5e, 0xe3, 0x43, 0x10, 0x42, 0x35, 0xec, 0x50, 0xbd, 0xd2, 0xd3, - 0x15, 0xbd, 0x86, 0x63, 0x2a, 0x88, 0xcf, 0x58, 0x47, 0xe0, 0xe5, 0x80, 0x28, 0xe1, 0xbc, - 0xf6, 0x01, 0xd3, 0xd8, 0x31, 0x03, 0xaa, 0xcc, 0x93, 0xf5, 0x60, 0x1a, 0xf6, 0xbf, 0xf0, - 0x18, 0x1b, 0x8f, 0xaa, 0x72, 0x0d, 0x68, 0xce, 0x19, 0xa2, 0x36, 0xe9, 0xf9, 0xd2, 0x88, - 0xd3, 0xe3, 0x36, 0x7f, 0x95, 0x9b, 0x2a, 0xa0, 0x14, 0x53, 0xd0, 0xa7, 0xa1, 0xc3, 0xf0, - 0x6d, 0x7a, 0xba, 0x70, 0xc6, 0x63, 0xf2, 0xb8, 0x72, 0x97, 0x35, 0x11, 0x40, 0x9b, 0x3a, - 0x50, 0x97, 0x22, 0xc9, 0x8b, 0xe6, 0x10, 0x4b, 0x6a, 0x36, 0x60, 0xb1, 0xc9, 0x6a, 0xdc, - 0x6f, 0x52, 0x69, 0x98, 0x5f, 0x33, 0xb8, 0x91, 0x77, 0x96, 0x04, 0xc9, 0x2e, 0x19, 0xb1, - 0x27, 0x07, 0xe8, 0x8f, 0x56, 0x69, 0x21, 0xe3, 0x90, 0xfd, 0x8c, 0x48, 0x31, 0x93, 0x59, - 0x04, 0xc4, 0xf8, 0x46, 0xad, 0x48, 0x6e, 0x71, 0x00, 0xba, 0xfa, 0x35, 0x70, 0x49, 0x31, - 0x64, 0x86, 0x5d, 0xf0, 0x1e, 0x20, 0x3c, 0xa6, 0x83, 0x43, 0xc2, 0x26, 0x72, 0xef, 0x08, - 0x7f, 0x32, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xb9, 0x7e, 0x92, - 0x7c, 0xb6, 0xce, 0xd7, 0xde, 0xa4, 0x52, 0x2e, 0x4d, 0x92, 0x78, 0x5d, 0xad, 0x6d, 0x63, - 0x95, 0x4f, 0xb2, 0xec, 0xba, 0xca, 0x16, 0x80, 0x1c, 0xe9, 0x2a, 0xff, 0x0c, 0xfd, 0xe0, - 0x1c, 0x43, 0x91, 0xbb, 0x35, 0xd5, 0x13, 0xec, 0x97, 0x7a, 0x9a, 0x1c, 0xbb, 0x8c, 0xfe, - 0xd9, 0xac, 0x9e, 0x2b, 0x75, 0xfd, 0x12, 0xfb, 0x29, 0x96, 0x71, 0xc8, 0x59, 0x47, 0x5e, - 0xc3, 0x5c, 0x13, 0xe2, 0x3b, 0x40, 0xfa, 0x97, 0xf3, 0x21, 0x98, 0xe9, 0xe0, 0xa4, 0xf8, - 0xb1, 0x82, 0x8c, 0xb4, 0x7c, 0xd4, 0xa0, 0x27, 0xdd, 0xb2, 0x94, 0xc9, 0x56, 0x2e, 0x6e, - 0x22, 0xd3, 0xda, 0xa0, 0xa0, 0x43, 0x75, 0xd7, 0x01, 0xd1, 0x4d, 0x91, 0x12, 0xf6, 0x5f, - 0x87, 0x27, 0x83, 0xf1, 0x1a, 0xb8, 0x44, 0x91, 0x06, 0xb3, 0x6c, 0x2f, 0x24, 0xe0, 0x1a, - 0x17, 0xbf, 0x3d, 0x6c, 0xd4, 0x8a, 0x8d, 0xc4, 0x18, 0xf5, 0xdd, 0xc4, 0x89, 0xe0, 0x4e, - 0xfb, 0x93, 0x5b, 0x70, 0xf6, 0x93, 0xf5, 0xeb, 0xf8, 0x52, 0x3d, 0xdb, 0x8a, 0x79, 0x44, - 0x3f, 0xec, 0x99, 0xa6, 0xb0, 0xa6, 0x86, 0xdc, 0x3e, 0xbc, 0x04, 0x77, 0x44, 0xce, 0xd6, - 0xfe, 0x00, 0x43, 0xa0, 0xa3, 0x7a, 0xf2, 0x20, 0x16, 0x6f, 0x21, 0x89, 0x17, 0x1f, 0x88, - 0x4e, 0xac, 0xad, 0x69, 0x7b, 0x69, 0x7e, 0xfd, 0xdb, 0xfc, 0x89, 0x35, 0xd1, 0xb3, 0xa3, - 0x01, 0x75, 0x5b, 0xe9, 0xc5, 0x60, 0x61, 0xf9, 0x4b, 0xca, 0x38, 0xd0, 0x34, 0xd4, 0x13, - 0xc6, 0xab, 0xce, 0xc8, 0x96, 0xab, 0xe6, 0x90, 0x73, 0x50, 0x34, 0x64, 0x98, 0x7f, 0xd0, - 0xf0, 0x85, 0x7c, 0x2b, 0xe9, 0x4e, 0x65, 0xbc, 0x34, 0xd0, 0xb1, 0xdd, 0xe1, 0x8c, 0xce, - 0xff, 0x31, 0x12, 0x33, 0x3d, 0x0d, 0xf2, 0x4c, 0xff, 0xe1, 0x27, 0xab, 0xd9, 0x6c, 0x2e, - 0x2e, 0xf6, 0x7c, 0x05, 0xf1, 0x3b, 0xfd, 0x19, 0xe3, 0x49, 0x3b, 0xa6, 0xd6, 0xc2, 0x38, - 0x6c, 0x6a, 0x28, 0x8d, 0x85, 0x5e, 0x19, 0xda, 0xb9, 0x32, 0x2e, 0xa4, 0xe6, 0xdb, 0xa6, - 0x4c, 0x36, 0xcd, 0xb6, 0x82, 0x35, 0xad, 0x85, 0xc3, 0x21, 0x89, 0x61, 0x14, 0xa1, 0xc5, - 0xb1, 0xa9, 0x69, 0xbf, 0x21, 0x1b, 0x2b, 0x87, 0x28, 0xfb, 0x15, 0xcf, 0x97, 0xe6, 0x10, - 0x2b, 0xf7, 0x9f, 0x03, 0x5d, 0x9b, 0xbc, 0x3d, 0x2e, 0x8b, 0x3b, 0x98, 0x2a, 0x82, 0xe7, - 0xa2, 0xb5, 0x72, 0x46, 0xb9, 0xcc, 0xa1, 0x24, 0xe6, 0xe6, 0x70, 0xf8, 0x31, 0x46, 0x6a, - 0x70, 0x34, 0xe6, 0x34, 0x7d, 0x3f, 0x6f, 0xa0, 0xdb, 0x81, 0xda, 0x1a, 0x40, 0x17, 0xeb, - 0x9b, 0x3d, 0x1f, 0x23, 0x1d, 0x61, 0x1d, 0x1b, 0x14, 0x29, 0x66, 0xf1, 0xff, 0xe9, 0x48, - 0x09, 0x48, 0x5d, 0x1d, 0x02, 0xe5, 0x6e, 0x33, 0x3b, 0x4b, 0xe3, 0x86, 0xd8, 0x2f, 0x34, - 0xc2, 0xe2, 0x34, 0x3a, 0xb2, 0xe8, 0x25, 0x64, 0xd8, 0x4e, 0x51, 0x42, 0x8d, 0x48, 0x56, - 0x3c, 0xd6, 0x8d, 0x37, 0xaf, 0x41, 0x4e, 0xf5, 0x10, 0x32, 0x82, 0x16, 0xb1, 0x24, 0xa6, - 0x45, 0x58, 0xbf, 0x35, 0xd1, 0x39, 0x24, 0xe2, 0xc1, 0xe3, 0x7f, 0xfb, 0xee, 0x36, 0x04, - 0x6b, 0x62, 0x99, 0x7d, 0x85, 0x88, 0x4d, 0x71, 0xca, 0xda, 0x5e, 0x08, 0x3d, 0x27, 0xfc, - 0x32, 0x98, 0xd6, 0xd9, 0x83, 0x1a, 0x65, 0xdb, 0xa8, 0x9e, 0xfd, 0x3b, 0xe9, 0x05, 0x49, - 0x5c, 0xb0, 0xb8, 0x93, 0xfe, 0xc4, 0x55, 0xf7, 0x7e, 0xa7, 0x2f, 0xc0, 0x06, 0x80, 0xee, - 0xe6, 0x68, 0x4d, 0x88, 0xc8, 0x1d, 0xa7, 0x2c, 0xf2, 0x94, 0xc8, 0xbd, 0x0a, 0xd0, 0xa0, - 0x1e, 0x53, 0x42, 0xca, 0x38, 0x52, 0xf3, 0xe1, 0x75, 0x05, 0xbe, 0x02, 0x41, 0xd4, 0x86, - 0x19, 0xf7, 0xfa, 0x3a, 0x45, 0x73, 0x31, 0xd1, 0xe4, 0xb6, 0xf5, 0xb2, 0x4f, 0x16, 0x0d, - 0x36, 0x5a, 0x09, 0xe3, 0x80, 0xe7, 0xea, 0x39, 0x87, 0xb3, 0x4c, 0x20, 0x73, 0x8d, 0x00, - 0xbe, 0x47, 0x82, 0x8e, 0xf9, 0xfc, 0x61, 0x1f, 0xe2, 0xc5, 0xad, 0xdb, 0xd6, 0x90, 0xa8, - 0x92, 0x82, 0x6a, 0x0e, 0x8e, 0x5d, 0x1e, 0xae, 0x44, 0xa1, 0x84, 0xd3, 0xc1, 0x17, 0x53, - 0xc3, 0x7f, 0x63, 0x72, 0x8b, 0x46, 0x30, 0x92, 0x1d, 0x16, 0x6f, 0xfa, 0x75, 0xc5, 0x1b, - 0xc7, 0x5a, 0xc6, 0xca, 0xd9, 0x44, 0xd4, 0x06, 0x49, 0xb7, 0x1a, 0x88, 0xb3, 0x06, 0x0a, - 0xaa, 0xd4, 0x45, 0x65, 0x30, 0x47, 0x2a, 0x6d, 0xf4, 0xa7, 0x95, 0x97, 0x52, 0xb2, 0x25, - 0x0e, 0x02, 0xc7, 0xb2, 0x4a, 0x84, 0xff, 0x7c, 0x0e, 0x1f, 0x59, 0xbf, 0x96, 0xfb, 0xaa, - 0x1a, 0x87, 0xbe, 0xfa, 0xf7, 0x8c, 0xfe, 0xb8, 0x1c, 0xb7, 0xe1, 0x07, 0x6c, 0xc4, 0x01, - 0x0d, 0x96, 0xf7, 0xaa, 0x52, 0x17, 0x20, 0x2a, 0xcd, 0x1e, 0x3d, 0x64, 0xa8, 0x2b, 0x27, - 0x46, 0x4b, 0xe2, 0x11, 0xd7, 0x4b, 0xf4, 0xd4, 0x26, 0x24, 0xb1, 0x6a, 0xdd, 0xf5, 0x0c, - 0x6a, 0x9b, 0x2b, 0x73, 0x6e, 0x8f, 0x1a, 0x49, 0x91, 0x7c, 0xf2, 0x70, 0x5d, 0x4e, 0xad, - 0x1c, 0x72, 0x1a, 0x2f, 0x30, 0xda, 0xfe, 0x1e, 0x33, 0xf5, 0xaf, 0xa2, 0x25, 0x95, 0xe9, - 0xca, 0x1e, 0x39, 0xcd, 0x8d, 0xc0, 0x94, 0xcf, 0x89, 0x10, 0xf5, 0xee, 0xe7, 0xf8, 0x35, - 0x82, 0xc4, 0x84, 0xd8, 0xab, 0xc9, 0x28, 0x65, 0x82, 0x3f, 0xba, 0x62, 0xde, 0xce, 0xb7, - 0xbd, 0x3b, 0x55, 0x19, 0x27, 0xfe, 0x91, 0xb8, 0xf8, 0x12, 0xb5, 0xc2, 0xe2, 0xe2, 0x5d, - 0x51, 0x8d, 0x82, 0x56, 0xbf, 0x9b, 0x0e, 0xee, 0x3d, 0xef, 0x67, 0xb4, 0x5f, 0xfc, 0x2e, - 0x9b, 0xbb, 0x65, 0xa4, 0xa4, 0xc9, 0x6b, 0x74, 0xef, 0x40, 0x45, 0xd9, 0xb1, 0x73, 0xd7, - 0x2d, 0xfc, 0x60, 0xee, 0xca, 0x3e, 0x4a, 0x06, 0xc4, 0x01, 0x71, 0x9b, 0xac, 0x73, 0xc8, - 0xb7, 0x72, 0x58, 0xb4, 0x28, 0x0f, 0x09, 0x9e, 0xee, 0x8d, 0x9a, 0x30, 0x0e, 0xdf, 0xd9, - 0x21, 0x11, 0x76, 0xa6, 0x90, 0x0c, 0x1c, 0xb1, 0xc9, 0x28, 0x77, 0x9b, 0x81, 0x9d, 0x96, - 0x18, 0x29, 0xb7, 0xbd, 0x1d, 0x0e, 0xec, 0x07, 0x84, 0xc9, 0xe1, 0xc0, 0xc9, 0x6f, 0x81, - 0x29, 0x0b, 0x46, 0xf9, 0x5e, 0xfa, 0x7b, 0xb5, 0x58, 0xe6, 0x9e, 0x57, 0xdc, 0xcf, 0x0e, - 0x3e, 0xbf, 0x8c, 0xa3, 0x0c, 0xe4, 0xa7, 0x3a, 0xb9, 0xad, 0x08, 0x82, 0x5f, 0x9a, 0xd7, - 0xcf, 0xfc, 0x35, 0xcd, 0x56, 0x31, 0xee, 0xd7, 0x7c, 0xc0, 0x6e, 0x0f, 0x10, 0x6c, 0x8a, - 0xa7, 0xd8, 0x23, 0x1b, 0xe6, 0x7b, 0x8c, 0xf1, 0x42, 0x27, 0xbd, 0x0d, 0x96, 0x45, 0x0f, - 0x8c, 0x3f, 0xb4, 0xc1, 0x98, 0xf0, 0x11, 0x64, 0x16, 0x9c, 0xef, 0x6c, 0xda, 0x01, 0x7d, - 0x4f, 0x2f, 0x49, 0xa7, 0xb9, 0xae, 0x4e, 0x8c, 0x35, 0xc7, 0x98, 0xb0, 0x4f, 0xfa, 0xdc, - 0x05, 0xa8, 0x06, 0x9b, 0xea, 0xa6, 0x8e, 0x24, 0x92, 0x9b, 0xeb, 0x90, 0xba, 0x3a, 0x4e, - 0x84, 0xc3, 0x9d, 0x46, 0x10, 0x19, 0x31, 0x4d, 0x73, 0xa7, 0xdd, 0x32, 0x37, 0x00, 0x6b, - 0x2c, 0x25, 0x72, 0xfe, 0x78, 0xb5, 0x26, 0xa6, 0xf2, 0xa7, 0xe7, 0xd7, 0x64, 0xa0, 0xec, - 0x45, 0x65, 0x4c, 0x82, 0x1f, 0x7e, 0xb8, 0x79, 0xf9, 0xb9, 0xd7, 0xcd, 0x37, 0x34, 0x43, - 0x93, 0x21, 0xaf, 0x95, 0x5d, 0x4b, 0xa5, 0xb8, 0x3e, 0x3e, 0x2c, 0xa0, 0x0b, 0x86, 0x4c, - 0x19, 0x18, 0x38, 0x0a, 0x39, 0xb1, 0xb5, 0x3b, 0x37, 0x3b, 0x29, 0x6f, 0xdc, 0x08, 0xae, - 0xe5, 0xbd, 0x93, 0x4d, 0x29, 0x90, 0x77, 0x52, 0x13, 0x10, 0xdf, 0xf4, 0x1a, 0x59, 0xda, - 0xf2, 0x78, 0x0e, 0xa8, 0x10, 0x33, 0x0e, 0x40, 0xb1, 0xc5, 0xae, 0xa1, 0xbc, 0x39, 0x82, - 0x71, 0xa2, 0x27, 0xa2, 0xb8, 0x8f, 0x6c, 0xd9, 0x6c, 0x96, 0x24, 0x1d, 0x0c, 0x32, 0x18, - 0x4e, 0xe3, 0xca, 0xba, 0xba, 0xfa, 0xce, 0xe7, 0x1c, 0x27, 0xad, 0x78, 0x4d, 0x23, 0xde, - 0xa8, 0x6c, 0xfe, 0x4b, 0xc9, 0x29, 0x23, 0xc4, 0xe3, 0x88, 0x51, 0xdc, 0x93, 0x1e, 0x5a, - 0x06, 0xf7, 0x3a, 0xba, 0x2b, 0xd2, 0x47, 0x41, 0x0e, 0xc9, 0xd5, 0x13, 0xbe, 0x52, 0xe7, - 0x31, 0xe8, 0xd7, 0xc7, 0xd6, 0x27, 0x0e, 0xe4, 0x8d, 0x30, 0x61, 0x40, 0xb7, 0xe1, 0x5f, - 0x28, 0x1b, 0xbb, 0x2a, 0xf0, 0xb0, 0x0f, 0x61, 0xd7, 0x6f, 0xc1, 0x1e, 0xd5, 0x37, 0x65, - 0x78, 0xae, 0x39, 0xc1, 0x85, 0x3a, 0x84, 0x7f, 0xc0, 0xce, 0x96, 0x19, 0xce, 0x36, 0x5f, - 0x3f, 0x41, 0x93, 0xe9, 0xaf, 0x5b, 0x5c, 0x08, 0xec, 0xec, 0xf1, 0xa9, 0x9a, 0xb3, 0x23, - 0xa4, 0xe7, 0xaa, 0xb4, 0x7a, 0x10, 0x2b, 0x76, 0x12, 0x7b, 0x51, 0xf7, 0x01, 0xbc, 0x08, - 0xd1, 0x07, 0x45, 0x67, 0x78, 0xe7, 0x36, 0x24, 0xfc, 0xfc, 0x04, 0xac, 0x37, 0xf9, 0xba, - 0xf3, 0x7f, 0x5c, 0x98, 0xbd, 0x1d, 0x2f, 0x85, 0x8f, 0x93, 0x7c, 0xcf, 0x57, 0x15, 0x91, - 0x9a, 0x62, 0xb0, 0x91, 0xf9, 0x8e, 0x75, 0x43, 0x50, 0xfb, 0x45, 0x07, 0x9d, 0xb9, 0x7a, - 0x47, 0x10, 0xc7, 0xfe, 0x43, 0xb5, 0xe2, 0x43, 0x1e, 0x25, 0x1a, 0x5a, 0x2b, 0x1a, 0xab, - 0xac, 0xad, 0x85, 0xd4, 0x00, 0x94, 0x9e, 0x0e, 0x24, 0xa1, 0x74, 0xd7, 0xe8, 0xc4, 0x10, - 0xab, 0xb6, 0xa4, 0x73, 0x81, 0x48, 0xf1, 0xfe, 0xa2, 0x3b, 0x4a, 0x68, 0x6b, 0x19, 0x0e, - 0xe2, 0xde, 0x79, 0x38, 0xac, 0x53, 0x14, 0x09, 0x16, 0x0e, 0x58, 0x2d, 0x2f, 0xd3, 0xbd, - 0x90, 0x6a, 0x7c, 0xb1, 0xd6, 0x50, 0x36, 0x8f, 0x6a, 0x80, 0x2e, 0x40, 0x0a, 0xab, 0x6e, - 0x4a, 0xc6, 0xe5, 0xd7, 0xe7, 0x1e, 0x8a, 0xf0, 0x51, 0xe9, 0xe6, 0xdc, 0x8b, 0xd0, 0xad, - 0xf7, 0xe1, 0x69, 0x95, 0x14, 0xc4, 0xa1, 0x04, 0x0c, 0xd1, 0x91, 0x8a, 0x3c, 0x0d, 0x28, - 0xff, 0x97, 0x65, 0xec, 0xd2, 0x90, 0x8b, 0xbe, 0xe2, 0x6c, 0xfe, 0xa8, 0x9b, 0x0f, 0x9e, - 0xe2, 0xba, 0x5a, 0xcd, 0x05, 0x75, 0x0f, 0xc8, 0x6a, 0x86, 0x78, 0xfe, 0x0f, 0x43, 0x8f, - 0x0e, 0xf4, 0xa8, 0x12, 0xe7, 0x30, 0x63, 0xe0, 0x87, 0xa3, 0xa9, 0x29, 0x6e, 0x9d, 0xab, - 0xaf, 0x40, 0xe3, 0x5d, 0x39, 0xa0, 0x9a, 0x83, 0xc8, 0x53, 0xb1, 0xc2, 0xe3, 0xdf, 0xa4, - 0x78, 0x9b, 0xfa, 0x43, 0xf7, 0xc8, 0xf7, 0xd5, 0xad, 0xf7, 0xda, 0x29, 0x7c, 0x4b, 0xf3, - 0xf0, 0xfb, 0x5d, 0x2a, 0x64, 0xab, 0x04, 0xd1, 0xfb, 0x0a, 0xa5, 0x75, 0xbd, 0xb7, 0xdd, - 0xf5, 0x50, 0xb0, 0xab, 0x4d, 0xe0, 0x97, 0xf1, 0x9f, 0x02, 0xdb, 0x52, 0xba, 0x23, 0xb5, - 0x71, 0xd7, 0xf1, 0x2f, 0xf6, 0xd2, 0xfd, 0xe8, 0x00, 0x8b, 0x17, 0x9f, 0x59, 0x46, 0x0f, - 0xa2, 0xc7, 0x77, 0xf9, 0xcc, 0x83, 0x0d, 0x3d, 0x6f, 0x27, 0x81, 0x19, 0xe4, 0x04, 0xfc, - 0xa8, 0x4a, 0xfd, 0x2e, 0xb1, 0xb6, 0x03, 0x6d, 0x4b, 0x33, 0xb7, 0x52, 0x15, 0xc7, 0x9a, - 0xe1, 0x02, 0x41, 0xb0, 0x55, 0x6b, 0xb2, 0x6b, 0xed, 0xde, 0xc7, 0xbb, 0xcb, 0x49, 0x98, - 0x4b, 0xe8, 0x0b, 0x95, 0x27, 0x44, 0xc1, 0xc4, 0x1d, 0xa2, 0x71, 0xa7, 0xba, 0xf3, 0xef, - 0x84, 0x0d, 0xb9, 0x9a, 0xbf, 0xb8, 0x4b, 0xe3, 0xe4, 0xf3, 0x3c, 0x49, 0xc6, 0x79, 0x41, - 0xf0, 0x34, 0x78, 0x8b, 0xb2, 0x58, 0x2c, 0x52, 0xc4, 0x7e, 0xad, 0x89, 0xc6, 0x99, 0x71, - 0xf7, 0xe7, 0xac, 0xac, 0x53, 0xf7, 0x08, 0x0c, 0xc4, 0x45, 0x67, 0x15, 0x2b, 0xf2, 0x79, - 0x89, 0x2f, 0x52, 0x57, 0xac, 0xff, 0x97, 0x9f, 0x43, 0xca, 0x0a, 0x99, 0xd2, 0x28, 0x91, - 0xac, 0x28, 0xbe, 0x7f, 0x75, 0x01, 0x18, 0xa1, 0xdc, 0xc9, 0x8d, 0x1c, 0x87, 0xd8, 0x52, - 0x73, 0x36, 0x08, 0x5d, 0xca, 0xd5, 0xe2, 0x58, 0x3e, 0xbd, 0xa4, 0xb1, 0x0b, 0xb0, 0xec, - 0xae, 0x86, 0x81, 0x09, 0x7a, 0x0b, 0x83, 0xba, 0x8f, 0x3c, 0x41, 0x3e, 0x1c, 0xde, 0x0b, - 0xcc, 0x7d, 0x79, 0x2d, 0xcb, 0xa8, 0x97, 0xbe, 0x5e, 0x7a, 0x31, 0xa4, 0xa6, 0x56, 0x84, - 0x3c, 0xe0, 0x8d, 0x6e, 0x0e, 0x6e, 0x14, 0x88, 0xd6, 0xea, 0x30, 0xab, 0x48, 0x84, 0xc4, - 0xfa, 0x05, 0x35, 0x32, 0x1a, 0xbc, 0xcb, 0xa9, 0x09, 0x66, 0xfe, 0x61, 0x31, 0xd4, 0x22, - 0xb0, 0xdd, 0x31, 0x06, 0x84, 0x36, 0xaf, 0x74, 0x83, 0xa8, 0x65, 0x46, 0xde, 0xc2, 0xdd, - 0xd0, 0x26, 0xeb, 0x71, 0x95, 0x70, 0x6f, 0xc5, 0xcc, 0x0e, 0xc5, 0x3e, 0xd4, 0x0c, 0xad, - 0xbf, 0xe3, 0xf6, 0xe7, 0xc4, 0xee, 0xc7, 0x13, 0x27, 0xce, 0xdb, 0x7a, 0xab, 0x18, 0x77, - 0x02, 0x00, 0x14, 0x87, 0xe0, 0x94, 0x5b, 0xc1, 0xe8, 0xdc, 0xec, 0xf8, 0x20, 0x75, 0xad, - 0x87, 0x1a, 0x0b, 0xfa, 0x2f, 0x06, 0x55, 0xc2, 0xc2, 0xf7, 0xb9, 0x6c, 0x28, 0x49, 0x29, - 0xfd, 0x4c, 0xbf, 0x92, 0x77, 0x6a, 0x55, 0x99, 0x93, 0x18, 0x45, 0xdd, 0x24, 0xe3, 0xbe, - 0x6a, 0xaa, 0xc2, 0x3c, 0xdb, 0x93, 0xc0, 0x23, 0x56, 0xed, 0xfd, 0xb2, 0xe6, 0x4f, 0x0c, - 0x1d, 0xb9, 0xee, 0x97, 0xd0, 0x1b, 0xe1, 0xa1, 0x4b, 0x93, 0x3c, 0xd9, 0x56, 0x4d, 0xd6, - 0xb7, 0x20, 0x92, 0x7b, 0x15, 0x3a, 0x30, 0xf2, 0x69, 0x43, 0x86, 0x4c, 0x8d, 0x11, 0xab, - 0xc7, 0x8a, 0xe4, 0x66, 0x3d, 0xe3, 0x88, 0xe0, 0x4d, 0x53, 0x11, 0xdf, 0x73, 0x63, 0xc0, - 0xa9, 0x84, 0xf0, 0x03, 0xca, 0x97, 0x1d, 0x3f, 0xd0, 0x61, 0x29, 0x43, 0x07, 0x57, 0xbb, - 0x69, 0x21, 0x40, 0x82, 0x71, 0x58, 0xd9, 0x41, 0x8a, 0x56, 0xb3, 0x41, 0xd3, 0x9a, 0xf7, - 0x9a, 0x6c, 0x41, 0x9b, 0xc7, 0x84, 0x3a, 0xf1, 0xf9, 0x10, 0xb4, 0x61, 0x9d, 0xd2, 0x30, - 0xcc, 0x48, 0xde, 0x23, 0x22, 0xed, 0x85, 0x65, 0x0c, 0x08, 0x78, 0x24, 0x85, 0x07, 0x43, - 0x9c, 0xda, 0x2b, 0x34, 0xbd, 0x3f, 0xe3, 0x25, 0x22, 0x91, 0xf1, 0x20, 0x35, 0xb0, 0x65, - 0x10, 0xda, 0xae, 0x28, 0x4d, 0x10, 0xea, 0x90, 0x0b, 0x60, 0x64, 0xf4, 0xf6, 0x7f, 0x08, - 0xd8, 0x14, 0x81, 0x19, 0x88, 0xc5, 0x50, 0x6a, 0x08, 0x5b, 0x60, 0x05, 0x9d, 0x11, 0x9c, - 0x1d, 0x5f, 0x55, 0x84, 0x79, 0xcf, 0x9f, 0x39, 0x6b, 0xde, 0x72, 0x58, 0x20, 0x9d, 0x4f, - 0x59, 0x63, 0x2d, 0xe4, 0x8b, 0x53, 0x69, 0x4a, 0xab, 0x1f, 0x6d, 0xc5, 0x7c, 0xb9, 0x07, - 0x00, 0x93, 0xa0, 0xf3, 0x3f, 0x88, 0x35, 0xc2, 0xbe, 0x26, 0x53, 0x3d, 0xf4, 0x56, 0x41, - 0x9d, 0x1f, 0xde, 0xde, 0x51, 0xcf, 0xc7, 0x86, 0x66, 0x61, 0x41, 0x90, 0x1d, 0x71, 0x37, - 0x07, 0x6d, 0x30, 0xfd, 0x29, 0xc2, 0x1c, 0x0f, 0xc8, 0x6a, 0x04, 0x26, 0x4a, 0x3a, 0x68, - 0x7a, 0x13, 0x76, 0xcf, 0x11, 0x94, 0x30, 0xdd, 0xcf, 0x7a, 0x62, 0xd6, 0x3d, 0x38, 0x29, - 0x62, 0xb5, 0x7b, 0x16, 0x1d, 0x91, 0xce, 0x24, 0xa9, 0x0e, 0x54, 0x91, 0x70, 0x6e, 0x03, - 0x33, 0x5f, 0x07, 0x0d, 0x1d, 0x48, 0xa6, 0x21, 0x6f, 0xf4, 0x4c, 0x6f, 0xed, 0x05, 0xfe, - 0x51, 0x3e, 0x87, 0x1b, 0xfe, 0x96, 0x08, 0xff, 0x73, 0x2b, 0xa5, 0x22, 0x4d, 0x90, 0x3b, - 0x2f, 0xa0, 0xca, 0xdb, 0x20, 0x43, 0x0c, 0xeb, 0x94, 0x8b, 0x3e, 0x6f, 0x56, 0x18, 0xe1, - 0xa4, 0xde, 0xe0, 0x94, 0xea, 0x22, 0xe7, 0x0c, 0x25, 0xed, 0x1b, 0x70, 0xb3, 0x50, 0x90, - 0x54, 0xc3, 0xe5, 0x0e, 0x8e, 0xbb, 0xd1, 0xed, 0xa5, 0xc6, 0xd9, 0x80, 0x20, 0x5c, 0x27, - 0xfa, 0x16, 0xe9, 0x94, 0xe9, 0xaf, 0xf5, 0xba, 0xc3, 0x98, 0x3a, 0x05, 0x9c, 0x9f, 0x30, - 0x9a, 0x13, 0x5a, 0x58, 0xd9, 0xda, 0x57, 0x55, 0x8c, 0xcd, 0x7c, 0xac, 0xa6, 0x6e, 0x47, - 0x25, 0xaa, 0xb9, 0xb0, 0xeb, 0x7e, 0xd1, 0xdf, 0x03, 0x7a, 0x5e, 0x3f, 0x32, 0xf3, 0x95, - 0xd5, 0x51, 0x36, 0xab, 0x0e, 0x25, 0xfc, 0x10, 0x55, 0xc1, 0x58, 0xe2, 0x2f, 0xa3, 0x9f, - 0x2e, 0xbf, 0x9a, 0x70, 0x37, 0x00, 0x31, 0xc2, 0x31, 0xce, 0x21, 0x96, 0xf7, 0xb2, 0x02, - 0x40, 0x2d, 0x61, 0x38, 0xf4, 0xba, 0xdf, 0xee, 0x17, 0xfd, 0xf6, 0x97, 0x4b, 0x94, 0x4b, - 0x46, 0xf2, 0x77, 0x5a, 0xc6, 0xe2, 0x08, 0xf7, 0x03, 0x13, 0xa5, 0xe7, 0x86, 0xe6, 0xcd, - 0x8c, 0x00, 0xe9, 0xf4, 0x4c, 0x16, 0x79, 0x73, 0x41, 0xcd, 0x40, 0x0b, 0x38, 0x25, 0xe3, - 0x33, 0xc2, 0xda, 0x64, 0x29, 0x07, 0xd4, 0x41, 0xd3, 0x15, 0xb8, 0x16, 0x97, 0x13, 0x13, - 0xf0, 0xdf, 0x9d, 0x25, 0x2f, 0x7e, 0xb2, 0xd2, 0xe0, 0x90, 0xb7, 0x18, 0xa3, 0x6d, 0x23, - 0xe4, 0x25, 0xd0, 0x1f, 0x2c, 0x5f, 0x00, 0xd2, 0x2a, 0xf0, 0x97, 0x46, 0xbb, 0x92, 0xba, - 0xcd, 0x86, 0x05, 0x6e, 0xd7, 0x3e, 0x19, 0xa0, 0xce, 0x42, 0x12, 0x25, 0x2f, 0x58, 0xde, - 0x94, 0x0c, 0x04, 0x16, 0x84, 0x14, 0x27, 0xb4, 0x40, 0xb9, 0x78, 0xf1, 0x5e, 0x04, 0xa1, - 0x61, 0x3c, 0xf1, 0xbe, 0xe3, 0x6b, 0x49, 0x3e, 0x66, 0x84, 0x5f, 0xba, 0x10, 0xfe, 0x29, - 0x55, 0xd5, 0x80, 0x36, 0x8f, 0x8a, 0x44, 0x32, 0xa7, 0x98, 0x48, 0x61, 0x3f, 0x72, 0x7e, - 0xac, 0xd2, 0x1e, 0xc1, 0x90, 0xdf, 0x21, 0x95, 0x2a, 0x29, 0xaf, 0x8b, 0xde, 0x96, 0x60, - 0x6d, 0x64, 0xca, 0x99, 0x4c, 0x80, 0x22, 0x4c, 0x7d, 0x4b, 0xe7, 0xe0, 0xe7, 0xff, 0xcf, - 0x51, 0x60, 0xa7, 0x3f, 0xfd, 0xd9, 0xbf, 0xe8, 0x70, 0xb9, 0xed, 0x06, 0xd4, 0xec, 0x8a, - 0xc6, 0x28, 0xd5, 0x7d, 0x5a, 0xe4, 0x04, 0x7e, 0xc0, 0x83, 0xaf, 0xaa, 0x62, 0x69, 0xe9, - 0x80, 0xbb, 0x59, 0xb2, 0xe9, 0x62, 0x4d, 0x87, 0x49, 0xc8, 0xe8, 0xfb, 0xb3, 0x28, 0xe5, - 0x10, 0x9c, 0xb5, 0xdc, 0xe5, 0xec, 0x62, 0x75, 0x2f, 0x40, 0xe5, 0xd5, 0x23, 0x41, 0x0a, - 0x5e, 0x73, 0xa9, 0x48, 0xe5, 0x6d, 0xce, 0x40, 0xf4, 0x69, 0xde, 0xf9, 0xde, 0x85, 0x49, - 0x3e, 0xff, 0x4a, 0x0f, 0xad, 0x7a, 0x04, 0x3a, 0xdc, 0xfc, 0x17, 0xbc, 0xa9, 0x53, 0x2c, - 0x53, 0x66, 0xc1, 0x85, 0x65, 0xe7, 0xde, 0x1a, 0x21, 0xcf, 0xac, 0x2e, 0x6b, 0xac, 0x74, - 0x1d, 0x55, 0x1a, 0xe5, 0x1f, 0x11, 0x79, 0x00, 0x60, 0x93, 0xaf, 0xc8, 0x1c, 0x18, 0x3c, - 0xc0, 0x0b, 0x97, 0x12, 0x34, 0xf7, 0xfa, 0xd9, 0x8a, 0x49, 0xd6, 0xf4, 0xee, 0x75, 0x8d, - 0x5c, 0x66, 0xa2, 0xe1, 0x07, 0x1b, 0xda, 0x70, 0xa8, 0xd6, 0x3e, 0x9f, 0xa7, 0xa2, 0x14, - 0xa1, 0xd5, 0x45, 0xaa, 0x0c, 0xb2, 0x5f, 0x64, 0xd6, 0x04, 0x0c, 0xc8, 0xa5, 0x89, 0xf6, - 0xed, 0xbc, 0x10, 0xb5, 0xaf, 0xf7, 0x39, 0xdd, 0xe8, 0xf4, 0xab, 0x67, 0xcf, 0xd7, 0x69, - 0x32, 0xea, 0x96, 0xc7, 0x38, 0x43, 0x8c, 0xec, 0xf2, 0x8a, 0x84, 0x88, 0xa9, 0xd8, 0x67, - 0x05, 0x51, 0x4e, 0xdf, 0x80, 0x74, 0x38, 0xcf, 0x24, 0x37, 0xa9, 0x9d, 0x11, 0xdd, 0x04, - 0xd4, 0xf0, 0x2c, 0x7a, 0x31, 0x78, 0x1b, 0xe9, 0x92, 0x90, 0x35, 0x25, 0x75, 0xa7, 0x8c, - 0x6a, 0x26, 0x45, 0xfd, 0xaf, 0x8a, 0x1f, 0xc1, 0x1f, 0x61, 0x32, 0x31, 0xf0, 0x4c, 0xfc, - 0x1f, 0x8c, 0xc5, 0xee, 0x81, 0xaf, 0xc3, 0x86, 0x9b, 0x82, 0xa6, 0x1d, 0x8f, 0xa8, 0xc1, - 0x0c, 0x2d, 0xdd, 0x21, 0x86, 0x68, 0xe6, 0x66, 0xcf, 0x65, 0x00, 0x73, 0x11, 0xf0, 0xe1, - 0xab, 0xcc, 0x20, 0xab, 0x6f, 0x68, 0x41, 0xfa, 0x00, 0xed, 0xf6, 0xaa, 0x9f, 0xcb, 0x96, - 0x24, 0x52, 0xeb, 0x65, 0x27, 0xcb, 0x53, 0xf8, 0x06, 0xff, 0x30, 0x9e, 0x59, 0xe0, 0x38, - 0x46, 0x38, 0x7c, 0x22, 0xda, 0x05, 0x25, 0x2e, 0xda, 0xfc, 0x21, 0x87, 0x6f, 0x83, 0x35, - 0x2d, 0x90, 0x93, 0x1c, 0xaf, 0xf3, 0x16, 0x92, 0xa5, 0x6e, 0x0d, 0xdb, 0xdc, 0xf6, 0x4e, - 0x22, 0x34, 0xa2, 0xa7, 0xc5, 0xda, 0x31, 0xac, 0x49, 0x75, 0x52, 0x59, 0x4e, 0xdd, 0x11, - 0xd9, 0x8e, 0x33, 0x76, 0x13, 0xad, 0xfb, 0x19, 0x18, 0x0e, 0xb7, 0x31, 0x2a, 0xe2, 0x31, - 0xc3, 0x6a, 0x4f, 0x2e, 0x10, 0x92, 0x28, 0xa5, 0xd3, 0x11, 0x6e, 0x65, 0xe7, 0x20, 0x49, - 0x51, 0x61, 0xbd, 0x42, 0x3e, 0xc6, 0x90, 0xad, 0xa4, 0x5e, 0xf1, 0x76, 0x22, 0xc3, 0x58, - 0xac, 0xaa, 0x22, 0x7a, 0x0c, 0x32, 0x44, 0x9d, 0x75, 0xfd, 0x7b, 0xa5, 0xfa, 0xd9, 0xc7, - 0x19, 0xf7, 0x93, 0x2e, 0x41, 0x45, 0x63, 0x43, 0x58, 0x75, 0x73, 0xc2, 0x7d, 0xfd, 0xd3, - 0x3b, 0x2d, 0x0e, 0x4a, 0xce, 0x88, 0x18, 0x17, 0xd2, 0x6c, 0xa0, 0xb8, 0xbb, 0xf8, 0x34, - 0x02, 0x8f, 0x79, 0xe8, 0xa8, 0xfe, 0x7c, 0x81, 0x17, 0x08, 0xe0, 0xbe, 0x6b, 0x4b, 0xd1, - 0x2b, 0x5c, 0x15, 0xd4, 0x11, 0x76, 0x43, 0xc3, 0xa6, 0x06, 0x2a, 0x10, 0x8b, 0x01, 0xc2, - 0x2e, 0x0b, 0xe4, 0xe8, 0xe3, 0x0d, 0xbd, 0x7e, 0xc6, 0x76, 0x91, 0x05, 0xf8, 0xfb, 0x3c, - 0x5d, 0x03, 0xb0, 0x54, 0x93, 0xb7, 0xc8, 0xad, 0x94, 0xa9, 0x1c, 0x0a, 0xec, 0x68, 0x7b, - 0xca, 0xba, 0xda, 0x88, 0xb7, 0x6a, 0xc3, 0x89, 0x0d, 0x44, 0x93, 0xfe, 0x6e, 0xb2, 0xe5, - 0x15, 0xa0, 0x6a, 0x5f, 0x60, 0x6c, 0x97, 0x20, 0x01, 0x19, 0xa1, 0x78, 0x51, 0x1c, 0xa2, - 0x65, 0x7e, 0x7c, 0x7a, 0xfe, 0x62, 0x7d, 0x2d, 0x8c, 0x87, 0x02, 0x6b, 0x1b, 0xbb, 0x4f, - 0x3e, 0x62, 0x90, 0x4d, 0x77, 0x6f, 0x50, 0xb8, 0x38, 0x78, 0x67, 0xfc, 0x72, 0x35, 0x05, - 0x2b, 0x06, 0x44, 0xa3, 0xe8, 0x3a, 0x07, 0xbe, 0xf1, 0xb4, 0x3a, 0x1b, 0x87, 0x18, 0x44, - 0x84, 0xb5, 0x68, 0x80, 0xf6, 0xde, 0x13, 0xf4, 0xba, 0x77, 0xb0, 0x5b, 0xfd, 0xb2, 0x22, - 0xb4, 0x48, 0x28, 0xf3, 0xcd, 0x7f, 0x52, 0xec, 0x47, 0xdb, 0x13, 0xe4, 0x70, 0x1f, 0x02, - 0x4d, 0x10, 0x2a, 0x9f, 0x6c, 0xa3, 0x8e, 0x5b, 0x46, 0x1d, 0xdf, 0x7b, 0x5d, 0x4b, 0x71, - 0x32, 0x1d, 0xd1, 0x99, 0x33, 0xdd, 0x70, 0xb2, 0x77, 0x71, 0x00, 0x1e, 0x76, 0xd1, 0x8f, - 0x9f, 0xa4, 0xf4, 0xfd, 0x38, 0x9d, 0x64, 0xa9, 0x54, 0xd2, 0x30, 0x03, 0x31, 0x47, 0xaf, - 0x17, 0xc9, 0x7f, 0x31, 0x58, 0xd8, 0x3f, 0x0a, 0x56, 0x9e, 0xa4, 0xe1, 0x58, 0x82, 0xc7, - 0x6f, 0x67, 0x10, 0x77, 0xf8, 0x59, 0x93, 0x45, 0x09, 0x58, 0xfc, 0x94, 0xe1, 0xd7, 0xca, - 0x3e, 0xd9, 0x46, 0x7b, 0x6b, 0x96, 0x9e, 0x67, 0x37, 0x5c, 0xfb, 0xc0, 0x0d, 0x07, 0xfe, - 0x03, 0x92, 0xce, 0x87, 0x19, 0x34, 0x6b, 0x50, 0xec, 0xa1, 0x1d, 0x5c, 0x73, 0xdf, 0x28, - 0x04, 0x47, 0xdc, 0xfb, 0x67, 0xa7, 0x49, 0xf9, 0xbc, 0x72, 0x34, 0x55, 0x0e, 0xa4, 0x11, - 0x9f, 0x86, 0x57, 0x8e, 0xcc, 0x1e, 0xcd, 0xcd, 0xa1, 0xa6, 0x87, 0x20, 0xf7, 0xfd, 0xef, - 0x18, 0x1d, 0xb4, 0x54, 0x88, 0xb0, 0xe9, 0xfb, 0xda, 0xa7, 0x61, 0xb4, 0x32, 0x36, 0xda, - 0x53, 0xda, 0xa4, 0xeb, 0xde, 0xca, 0x1f, 0x3c, 0xbc, 0x9f, 0x3e, 0x61, 0x07, 0x2d, 0x30, - 0x99, 0x41, 0xc2, 0x67, 0x1e, 0x80, 0x57, 0xbb, 0x89, 0x23, 0x47, 0xf6, 0x8b, 0x40, 0x2d, - 0x01, 0x4e, 0x03, 0x48, 0xf1, 0xd3, 0x4d, 0xa0, 0xbc, 0x91, 0xf0, 0x43, 0x51, 0xe6, 0x5b, - 0x99, 0x1f, 0xd8, 0x72, 0x2c, 0xf9, 0x5d, 0xa1, 0xbc, 0x63, 0x8d, 0x2c, 0x13, 0xb8, 0x9f, - 0x47, 0x09, 0x3c, 0xf0, 0xae, 0xad, 0xbf, 0xc1, 0x88, 0x7e, 0x32, 0xd3, 0x74, 0x7f, 0x5c, - 0xe7, 0xb9, 0x3e, 0xaf, 0x08, 0x62, 0xd0, 0xed, 0x60, 0x9c, 0xdd, 0x49, 0x5b, 0x22, 0xde, - 0x53, 0x05, 0xd1, 0x33, 0x97, 0x98, 0x73, 0x43, 0x2e, 0x34, 0xf1, 0xcf, 0xa0, 0x98, 0x5a, - 0x14, 0xeb, 0xa0, 0xad, 0xb7, 0xb3, 0x36, 0xb9, 0x1a, 0xa7, 0x98, 0x0e, 0x13, 0xa8, 0x22, - 0xc0, 0xfe, 0xc0, 0x20, 0xd0, 0x11, 0x8d, 0x58, 0x2d, 0xff, 0x15, 0x21, 0x61, 0x6a, 0xc5, - 0xd0, 0x9d, 0x31, 0x89, 0x0a, 0xd0, 0x44, 0xf2, 0x5f, 0x3f, 0x6d, 0x9e, 0xc5, 0xc8, 0x3c, - 0x36, 0x51, 0x5c, 0x46, 0x1c, 0xf3, 0x7e, 0x2b, 0xdc, 0xbe, 0xee, 0x70, 0xe5, 0x66, 0xaf, - 0x1a, 0xbd, 0xe4, 0x3b, 0x44, 0x1c, 0x8c, 0xc1, 0xd0, 0x68, 0x53, 0xf4, 0xb8, 0x81, 0x93, - 0xe3, 0x52, 0xff, 0xaf, 0x2c, 0xc7, 0xab, 0x1c, 0xba, 0x22, 0x36, 0xba, 0x02, 0x95, 0x91, - 0x90, 0x3e, 0xa6, 0x1f, 0x86, 0xce, 0xe1, 0x43, 0x90, 0x0d, 0xe0, 0xa8, 0xf3, 0xe2, 0x82, - 0x48, 0x51, 0x96, 0x71, 0x09, 0xe8, 0x79, 0x61, 0x6e, 0x1d, 0xd6, 0x19, 0x19, 0x70, 0xdf, - 0x0a, 0x97, 0x43, 0xcf, 0x27, 0xe0, 0x57, 0x43, 0xb2, 0x89, 0xbe, 0xa6, 0x59, 0xd7, 0x3c, - 0x50, 0xa5, 0xb0, 0x44, 0xf7, 0xfc, 0x53, 0xd3, 0xa9, 0x57, 0xc1, 0x95, 0x44, 0x0d, 0x0d, - 0x19, 0xb2, 0x01, 0xe4, 0xad, 0x06, 0xbb, 0xc7, 0xfa, 0x04, 0xad, 0xd4, 0x52, 0xdf, 0x0c, - 0xb5, 0xf7, 0x89, 0x50, 0xa9, 0xe9, 0x57, 0x69, 0x1d, 0xd2, 0x17, 0xf9, 0xbf, 0x3e, 0xd1, - 0x08, 0x8e, 0xae, 0x03, 0x2a, 0x4d, 0xf3, 0xee, 0xa1, 0xa1, 0x8f, 0x65, 0x62, 0x42, 0x28, - 0xa3, 0x9c, 0xd9, 0x37, 0x96, 0x8b, 0x2c, 0x30, 0x98, 0xcf, 0xc8, 0x34, 0xdd, 0x03, 0xcd, - 0x48, 0x4b, 0x39, 0x16, 0xe4, 0xfb, 0x9a, 0x01, 0xc3, 0x0e, 0x77, 0xbc, 0x7a, 0x84, 0x5b, - 0xff, 0x25, 0x45, 0x63, 0x28, 0x28, 0x9b, 0x7b, 0x3a, 0x5a, 0x81, 0x0f, 0x56, 0x8d, 0xe7, - 0xe8, 0x00, 0xc6, 0x0e, 0x09, 0x29, 0xfb, 0x96, 0x1f, 0xee, 0xae, 0x3b, 0xaf, 0x58, 0xee, - 0x5e, 0x75, 0x4f, 0xdb, 0x7d, 0x8a, 0x9b, 0x65, 0xbb, 0xc4, 0xb6, 0xd6, 0xd2, 0x49, 0xb4, - 0x9c, 0x74, 0x64, 0x36, 0x07, 0x49, 0x0b, 0x0d, 0xb2, 0xe4, 0x26, 0xe3, 0xf2, 0x3a, 0x30, - 0xbd, 0x7f, 0xe8, 0x11, 0x51, 0x1b, 0x78, 0xa4, 0xac, 0xc7, 0x81, 0xf8, 0x8d, 0xb2, 0x17, - 0x23, 0xef, 0xe2, 0x0e, 0x7d, 0x0c, 0x4c, 0x22, 0x19, 0x0c, 0xd4, 0x5a, 0x57, 0x4e, 0xb7, - 0xa7, 0xf9, 0x50, 0xfc, 0x94, 0x74, 0xdc, 0xae, 0x77, 0xdb, 0xb1, 0x89, 0x1c, 0x75, 0xbf, - 0x4e, 0xc8, 0x49, 0x55, 0x65, 0xe3, 0x80, 0xee, 0xa9, 0xc9, 0x00, 0x3b, 0xca, 0xac, 0x28, - 0x54, 0x17, 0xe8, 0x77, 0xb0, 0xb5, 0x77, 0x04, 0x34, 0xd8, 0x41, 0xe0, 0x5a, 0x71, 0x87, - 0x8e, 0x05, 0xc6, 0xcc, 0xe3, 0xda, 0x2b, 0x75, 0x4e, 0xce, 0xa4, 0x70, 0x0c, 0x4a, 0x4e, - 0x18, 0x67, 0xf8, 0x59, 0x4e, 0x89, 0x38, 0xc4, 0x4a, 0x67, 0x7a, 0xc0, 0x1e, 0xb5, 0x0b, - 0xf2, 0x27, 0x18, 0x87, 0x2f, 0x08, 0xa4, 0x3d, 0x56, 0xbd, 0xec, 0xd9, 0x2f, 0x48, 0x39, - 0x3f, 0x4b, 0xf8, 0x69, 0xb6, 0x1f, 0x81, 0xf0, 0x63, 0x6d, 0x69, 0x90, 0xa9, 0x27, 0x60, - 0x29, 0x07, 0x52, 0x0e, 0x12, 0xd5, 0xa7, 0xce, 0x2c, 0x3d, 0x6c, 0x8d, 0x31, 0x7f, 0x7b, - 0xca, 0x0e, 0x9a, 0xb8, 0x0a, 0x6a, 0xec, 0xe8, 0xcd, 0x62, 0x6e, 0x2a, 0x91, 0xf9, 0xee, - 0xad, 0xad, 0xd8, 0xd7, 0x09, 0xb2, 0xce, 0xe1, 0x03, 0x9a, 0x8c, 0xb9, 0x11, 0x5d, 0x37, - 0xee, 0x41, 0x63, 0x0c, 0x37, 0x00, 0x6c, 0x2e, 0xb2, 0x3c, 0x4c, 0x22, 0x9c, 0x28, 0x9c, - 0x50, 0xf7, 0x2f, 0x94, 0x8c, 0xea, 0xb0, 0xb7, 0x7c, 0x85, 0x81, 0xf2, 0x6f, 0x34, 0x82, - 0xa6, 0x12, 0x31, 0xc7, 0x72, 0x1d, 0xa5, 0x6c, 0x2c, 0x6c, 0xa0, 0x00, 0x81, 0xc0, 0x8a, - 0xc6, 0xa2, 0x08, 0x36, 0x70, 0x77, 0xa9, 0x26, 0xe8, 0xe7, 0x6b, 0xaf, 0x79, 0x4a, 0x8a, - 0xa2, 0x92, 0xa5, 0x79, 0x99, 0x70, 0xd2, 0x28, 0x2c, 0x2e, 0xc6, 0x15, 0x4a, 0x73, 0xdf, - 0x04, 0xc3, 0xaf, 0xa2, 0xc4, 0xa9, 0xbf, 0xfb, 0x80, 0xb5, 0x38, 0xb5, 0xec, 0x15, 0x9e, - 0x94, 0x0e, 0x9b, 0xdd, 0x22, 0x5a, 0x99, 0x53, 0x58, 0x29, 0x8a, 0x37, 0x74, 0xea, 0x73, - 0x85, 0xe1, 0xe5, 0x63, 0x3a, 0x60, 0x16, 0x71, 0xb3, 0x8c, 0x1e, 0xda, 0x3e, 0x20, 0xfa, - 0x1b, 0x53, 0xeb, 0x8c, 0xa8, 0x82, 0xd4, 0xb9, 0x12, 0x32, 0xa6, 0x14, 0xd0, 0xa2, 0x64, - 0xc2, 0xab, 0x25, 0xb8, 0xc4, 0xd0, 0x79, 0xa2, 0x77, 0xc6, 0x28, 0xd9, 0x90, 0xc1, 0xbb, - 0xf3, 0x51, 0xf5, 0xdd, 0x1d, 0x6c, 0x27, 0x2c, 0xc7, 0xab, 0x75, 0xcb, 0xc8, 0x0a, 0xc7, - 0x20, 0x45, 0x87, 0xdc, 0xdc, 0xed, 0x9c, 0xfc, 0x18, 0xc4, 0x20, 0xc4, 0x75, 0x9d, 0xbf, - 0x2c, 0x0b, 0x44, 0xd9, 0x6c, 0x20, 0x6a, 0x5e, 0xb4, 0xdd, 0x73, 0x5a, 0x0e, 0xf8, 0x17, - 0x2f, 0x7a, 0x2c, 0x0e, 0xe5, 0x9c, 0x97, 0x33, 0x29, 0x23, 0x91, 0x90, 0x64, 0x76, 0x5c, - 0xb2, 0x69, 0x40, 0x1a, 0x8c, 0x93, 0x0d, 0x06, 0xe5, 0x60, 0x49, 0x9e, 0xb5, 0xda, 0xd4, - 0x07, 0x46, 0x21, 0xcf, 0x57, 0xae, 0xc8, 0xde, 0xa6, 0x11, 0xd8, 0x37, 0xca, 0x66, 0x4e, - 0x5c, 0x04, 0x24, 0x42, 0x9b, 0xfb, 0x53, 0x65, 0x26, 0x9f, 0xd1, 0x1b, 0x25, 0xa8, 0x0c, - 0x74, 0x62, 0xd1, 0xee, 0x02, 0xe3, 0xf9, 0xd3, 0xc3, 0x11, 0x31, 0x73, 0x07, 0xbc, 0x3a, - 0xcf, 0x54, 0xce, 0xc2, 0x23, 0xe7, 0x7e, 0x65, 0xf7, 0xc8, 0xc4, 0x13, 0x52, 0x5f, 0xd7, - 0x76, 0x0d, 0x76, 0x09, 0x00, 0x41, 0x26, 0x5e, 0xbf, 0xb5, 0x28, 0x70, 0x33, 0x8d, 0xf0, - 0xb3, 0xf1, 0xa8, 0xfe, 0x04, 0xa2, 0xc9, 0x7a, 0x07, 0x39, 0x71, 0x1d, 0xa2, 0xbd, 0xc3, - 0x9e, 0xc7, 0x42, 0x0b, 0xff, 0x9e, 0x4f, 0x18, 0x34, 0x6c, 0x3f, 0x6d, 0x8e, 0x69, 0x87, - 0xb5, 0xec, 0x25, 0x7d, 0x0f, 0x33, 0xa6, 0xf9, 0x8d, 0xa4, 0x3e, 0x1e, 0x8a, 0x45, 0x5e, - 0xbc, 0x23, 0x94, 0x7a, 0x34, 0xfa, 0x0c, 0x84, 0x0c, 0x4c, 0x0d, 0x12, 0x54, 0x7c, 0xbb, - 0x18, 0xe8, 0xd2, 0xb2, 0x6c, 0x51, 0x2f, 0x6e, 0x7c, 0xeb, 0x23, 0xd3, 0x76, 0x30, 0x83, - 0x42, 0x2d, 0xd9, 0x74, 0x90, 0x49, 0xe9, 0xd1, 0x72, 0xb8, 0xf4, 0x9f, 0x3e, 0x19, 0x41, - 0xe6, 0xea, 0x6d, 0x98, 0xbc, 0x7e, 0x5f, 0x26, 0x43, 0xaf, 0xad, 0xe3, 0x0d, 0x56, 0x47, - 0x5c, 0x3f, 0x3b, 0x4e, 0xd6, 0xa9, 0xb9, 0x5e, 0xf6, 0xc2, 0x94, 0xa9, 0x17, 0x76, 0x15, - 0x5e, 0x80, 0x19, 0xbd, 0x2e, 0xa6, 0x53, 0x02, 0x2f, 0xf9, 0xa5, 0xc8, 0x89, 0xbb, 0xc1, - 0x0b, 0x15, 0xa5, 0x21, 0x14, 0xbc, 0xb7, 0x31, 0xf2, 0x5c, 0xbb, 0x71, 0x2b, 0xb3, 0xea, - 0x3a, 0x35, 0x0b, 0x57, 0xc6, 0x04, 0xc8, 0x07, 0x08, 0x48, 0x70, 0x2e, 0x8b, 0x6c, 0x30, - 0x67, 0x49, 0x89, 0xa4, 0xb5, 0x69, 0xfd, 0x25, 0x5a, 0x1f, 0xe0, 0x39, 0xe7, 0xc4, 0xc1, - 0x5b, 0xd8, 0xac, 0x04, 0xd4, 0x2f, 0x23, 0x2c, 0xcb, 0xd1, 0x46, 0xd5, 0x37, 0x79, 0x37, - 0xb2, 0x63, 0x3e, 0xa7, 0x61, 0x1c, 0xfa, 0x34, 0x50, 0x23, 0xa0, 0x53, 0x39, 0x60, 0x97, - 0x8a, 0xa4, 0x76, 0x86, 0x19, 0x16, 0xb6, 0x56, 0x50, 0x3c, 0x38, 0x9a, 0x79, 0xc4, 0xdf, - 0x57, 0x27, 0xbb, 0x6f, 0x6a, 0x65, 0xa4, 0x33, 0x6b, 0xc7, 0x36, 0xd5, 0x1c, 0xd4, 0x3b, - 0x29, 0x48, 0x37, 0x41, 0xd7, 0x66, 0xaa, 0x15, 0x08, 0x95, 0x61, 0xb0, 0x78, 0xfc, 0x98, - 0xc1, 0xa6, 0xbc, 0xd2, 0x7d, 0x37, 0xf9, 0xb0, 0x08, 0xfe, 0x36, 0xfe, 0x29, 0x60, 0x1b, - 0xe7, 0x4d, 0x6a, 0x02, 0xb6, 0x7c, 0xf4, 0x2c, 0xa9, 0x10, 0x20, 0xc7, 0xd3, 0x21, 0x3f, - 0xe6, 0x4b, 0x01, 0x65, 0xde, 0x20, 0xc7, 0xe4, 0x40, 0x40, 0x4e, 0x75, 0xa1, 0x22, 0x9d, - 0x48, 0x21, 0xe5, 0x9a, 0xed, 0xfd, 0xf9, 0x95, 0x3f, 0x6a, 0xc8, 0x2a, 0x32, 0x60, 0x9b, - 0x97, 0xdb, 0xf0, 0x78, 0x93, 0x96, 0x83, 0x86, 0x84, 0xae, 0x6f, 0x82, 0x58, 0x73, 0x66, - 0xa7, 0xd5, 0xb7, 0x5c, 0x25, 0x5d, 0xaa, 0x64, 0x32, 0x06, 0x47, 0x88, 0x00, 0x03, 0x00, - 0xfd, 0xda, 0xa8, 0xf4, 0xc4, 0xef, 0x99, 0xa4, 0x88, 0x67, 0xa4, 0x65, 0x67, 0x64, 0x26, - 0xa8, 0x62, 0xa1, 0xae, 0x98, 0x5b, 0x71, 0x20, 0x33, 0xb4, 0x18, 0xc0, 0x6d, 0xf3, 0xc3, - 0x0b, 0xf3, 0xf8, 0x5d, 0xd0, 0x2a, 0x68, 0x24, 0xfe, 0x17, 0x48, 0x78, 0xa0, 0x30, 0x9b, - 0x4c, 0xa0, 0xb8, 0x42, 0x29, 0xac, 0x60, 0xc2, 0xea, 0xb6, 0xa5, 0xff, 0x74, 0x01, 0x24, - 0x48, 0xf3, 0x1b, 0xe5, 0x62, 0x0d, 0x5a, 0x8b, 0x69, 0x66, 0x17, 0x52, 0xa7, 0xff, 0xe6, - 0x5f, 0x4b, 0xd3, 0x83, 0x4d, 0x1a, 0x2d, 0x50, 0xa2, 0x13, 0x9a, 0xd0, 0xe4, 0x92, 0xd5, - 0x47, 0xbc, 0x88, 0xb8, 0x30, 0x06, 0x4c, 0xde, 0x13, 0x39, 0x3a, 0xa7, 0x7b, 0x9e, 0x00, - 0x8d, 0xbb, 0x00, 0x4e, 0xf9, 0x5d, 0x5e, 0x84, 0x26, 0x74, 0x2e, 0x59, 0x00, 0x8b, 0x06, - 0x40, 0x12, 0x64, 0x99, 0xc4, 0x9e, 0x1f, 0xac, 0x35, 0x6b, 0xa6, 0x30, 0x44, 0x03, 0x8c, - 0x15, 0xc7, 0x67, 0x7c, 0xa5, 0x02, 0x5d, 0xe8, 0x86, 0xc4, 0x72, 0xe0, 0x2f, 0x05, 0x8c, - 0xbe, 0xda, 0x37, 0x9c, 0x60, 0x20, 0xdc, 0x56, 0x3f, 0xe9, 0xec, 0x9d, 0x63, 0x55, 0xbc, - 0x54, 0xe0, 0x58, 0xbc, 0xae, 0xb2, 0x18, 0x1a, 0xea, 0xc4, 0x23, 0xb6, 0xbb, 0x55, 0x94, - 0xb2, 0x0f, 0xad, 0x8c, 0x98, 0x79, 0x7f, 0xe5, 0xd9, 0xfc, 0x39, 0x91, 0xa3, 0x64, 0x43, - 0x98, 0x8f, 0xb3, 0x03, 0xe1, 0x9b, 0x74, 0x74, 0xaa, 0x32, 0x74, 0x46, 0xd0, 0xd3, 0x62, - 0x56, 0xfa, 0x8a, 0x21, 0x9f, 0xeb, 0x55, 0x3c, 0x07, 0xdf, 0x86, 0x7e, 0x34, 0x6b, 0xb9, - 0xfc, 0xf4, 0x38, 0x53, 0x31, 0xfa, 0xd0, 0x2c, 0x50, 0x6a, 0x2c, 0x74, 0x78, 0x01, 0x41, - 0xeb, 0x93, 0x4b, 0xf3, 0xec, 0xeb, 0xa4, 0x68, 0x67, 0x06, 0x63, 0x3d, 0x35, 0x73, 0x21, - 0x58, 0x76, 0x49, 0xd4, 0x8b, 0xdb, 0x29, 0xe5, 0x32, 0x5b, 0x09, 0xd7, 0x87, 0xc8, 0x12, - 0x03, 0x34, 0xcc, 0x6e, 0xce, 0xfd, 0xfc, 0x45, 0xe3, 0x26, 0xcb, 0x41, 0x75, 0xf0, 0x62, - 0xc1, 0x2b, 0x55, 0xca, 0xf6, 0x40, 0x70, 0x49, 0x0a, 0xb0, 0x53, 0x66, 0xa8, 0x59, 0x16, - 0x99, 0x7d, 0xa0, 0xda, 0x77, 0x24, 0x3a, 0xeb, 0xc6, 0x49, 0x0f, 0xde, 0x46, 0xdb, 0x81, - 0x53, 0x17, 0x1a, 0x0f, 0xed, 0x4e, 0xf8, 0x15, 0x29, 0x90, 0xba, 0x63, 0x8b, 0x2a, 0x41, - 0x1d, 0xf5, 0x7f, 0x4a, 0x26, 0xe9, 0x25, 0xcd, 0xd8, 0x1b, 0x39, 0x5c, 0xa7, 0xc7, 0xd1, - 0xe0, 0x8c, 0x57, 0xd1, 0x23, 0x2f, 0xec, 0x3f, 0x9c, 0x78, 0x0a, 0xc0, 0x53, 0xf2, 0x93, - 0xbb, 0x11, 0x05, 0x29, 0xbd, 0x90, 0x3b, 0x82, 0x63, 0xe4, 0x33, 0x9a, 0x85, 0xbc, 0x9c, - 0xee, 0xb2, 0x7d, 0xd6, 0x01, 0x21, 0xd5, 0x14, 0x35, 0xf2, 0x98, 0x89, 0x7a, 0xe3, 0xce, - 0x23, 0x89, 0xc0, 0xe8, 0xbd, 0x17, 0xed, 0x4b, 0xee, 0xc2, 0xba, 0xe7, 0xba, 0x5f, 0x9b, - 0x04, 0xd8, 0x8e, 0x11, 0x11, 0xab, 0x30, 0xa1, 0x98, 0x2a, 0xb2, 0x64, 0xae, 0xa0, 0xfa, - 0x20, 0x62, 0xa2, 0x75, 0xf8, 0xca, 0xb0, 0x94, 0xc0, 0x3a, 0xe5, 0x77, 0xe4, 0xb8, 0x1e, - 0x47, 0x7d, 0xc8, 0xfb, 0x39, 0x9c, 0x65, 0x0e, 0x43, 0x2e, 0x04, 0x3c, 0x11, 0x68, 0x26, - 0x26, 0x11, 0xe6, 0xa0, 0xde, 0x74, 0x09, 0x04, 0xfc, 0xa2, 0xd6, 0x60, 0x63, 0x2b, 0x57, - 0x16, 0xcf, 0xe4, 0x92, 0xc9, 0x72, 0xf8, 0x43, 0x07, 0x79, 0xe2, 0xdc, 0x01, 0x1e, 0xc3, - 0xea, 0x17, 0x1d, 0x21, 0xd7, 0x15, 0x87, 0xc6, 0x1a, 0x31, 0xd9, 0x23, 0x2a, 0x29, 0xd5, - 0x3a, 0x33, 0x1c, 0x6e, 0xbd, 0xcb, 0xf5, 0xe1, 0x9e, 0x3e, 0x7a, 0x17, 0xeb, 0xf8, 0x54, - 0x31, 0xa0, 0x32, 0x9c, 0x6e, 0x1d, 0x54, 0x96, 0xa7, 0x8c, 0xf3, 0x8f, 0x94, 0x66, 0x73, - 0x55, 0x1d, 0x60, 0x63, 0x6c, 0xa4, 0xe4, 0xad, 0xb1, 0xe3, 0x93, 0xbf, 0xad, 0xd2, 0x7f, - 0xb6, 0x53, 0x03, 0x67, 0x08, 0xe0, 0xcf, 0xa5, 0xd1, 0x1e, 0x19, 0xd5, 0x62, 0x55, 0x23, - 0xad, 0x0a, 0x2a, 0x9c, 0xfe, 0x62, 0x65, 0x93, 0x4d, 0xe6, 0x8a, 0xad, 0xbc, 0xc9, 0x95, - 0x63, 0xbd, 0xdc, 0x91, 0x36, 0xf1, 0x1d, 0x41, 0x69, 0x62, 0x9a, 0x12, 0x1d, 0x17, 0x2f, - 0x09, 0xe2, 0xa7, 0xd2, 0xdf, 0xd2, 0xc4, 0xc4, 0x05, 0xde, 0x39, 0xb7, 0xf3, 0x56, 0x98, - 0x94, 0x89, 0x2e, 0xe4, 0xd8, 0x92, 0x0c, 0xa4, 0xb3, 0xaa, 0x90, 0x3b, 0x4f, 0x82, 0x1f, - 0x46, 0x42, 0x58, 0xee, 0xb3, 0x75, 0x21, 0x49, 0x3b, 0x7a, 0xf3, 0xe0, 0xc6, 0x8b, 0x3a, - 0x98, 0x0b, 0x15, 0x99, 0x31, 0x09, 0xc5, 0x75, 0x18, 0x36, 0x25, 0x69, 0x3c, 0xeb, 0x48, - 0x35, 0x09, 0xbe, 0xdb, 0xd5, 0x47, 0xfe, 0xa1, 0x9d, 0xf7, 0x38, 0xe1, 0x63, 0x0b, 0x34, - 0xca, 0x37, 0x56, 0xb6, 0x7c, 0x49, 0xb0, 0x77, 0x61, 0xf7, 0x3a, 0xc1, 0xe3, 0x6d, 0x41, - 0xed, 0xdf, 0xfb, 0x33, 0x57, 0x90, 0xd5, 0x7e, 0x0c, 0x48, 0x63, 0x1f, 0x56, 0x1e, 0x3d, - 0x7b, 0x1e, 0x49, 0xa4, 0x79, 0x51, 0xa1, 0x76, 0x45, 0x82, 0x23, 0x43, 0x1f, 0x4e, 0xa1, - 0x4d, 0xd0, 0x84, 0x8c, 0x32, 0xaf, 0x6e, 0xd5, 0x67, 0xe9, 0x8a, 0xd5, 0xf9, 0xaa, 0x45, - 0xd8, 0x0f, 0x1f, 0x25, 0xae, 0x47, 0xeb, 0x4c, 0x48, 0x08, 0x3e, 0x63, 0xee, 0x78, 0x3f, - 0xea, 0xdc, 0x3e, 0xb6, 0x5d, 0xcf, 0x2e, 0x2a, 0x9f, 0xd1, 0x43, 0xee, 0x9f, 0xbb, 0x47, - 0x84, 0x21, 0x0a, 0x72, 0xb2, 0xcb, 0x02, 0x95, 0xa7, 0xdb, 0x3b, 0x3c, 0xdf, 0x82, 0x49, - 0xe9, 0x0a, 0x70, 0x11, 0x86, 0x29, 0xaa, 0x62, 0x07, 0xa5, 0x15, 0x31, 0x2e, 0x65, 0xf9, - 0xd9, 0x04, 0xdc, 0xfc, 0x17, 0xa6, 0xd5, 0xd2, 0x89, 0x6c, 0x68, 0x90, 0xd0, 0xdb, 0x83, - 0xd3, 0xb9, 0x5b, 0x3a, 0x2e, 0xb2, 0xfc, 0xe6, 0x7e, 0x36, 0xcf, 0x35, 0xf5, 0x7f, 0xe4, - 0x70, 0x68, 0x1e, 0xb9, 0xd2, 0x1b, 0x36, 0x78, 0xd0, 0x78, 0x61, 0xed, 0x0c, 0xaa, 0xb8, - 0x7d, 0xa9, 0x44, 0x2c, 0x44, 0x37, 0xc6, 0xf7, 0x85, 0x58, 0x4d, 0x9a, 0x3f, 0x63, 0x19, - 0x12, 0xf4, 0x53, 0xcb, 0x5f, 0xe9, 0x99, 0x1c, 0x2f, 0xe9, 0x96, 0x87, 0xbc, 0xb4, 0x80, - 0x8a, 0xd2, 0xa3, 0x65, 0x2d, 0xa4, 0xd5, 0x3c, 0x09, 0xc1, 0x42, 0x7a, 0xce, 0xd5, 0x56, - 0x3c, 0xd8, 0x76, 0x58, 0xca, 0xe3, 0xb6, 0x4e, 0x2c, 0x5f, 0x1a, 0x48, 0x95, 0x88, 0x71, - 0x31, 0x6a, 0xc0, 0x80, 0x1c, 0x6e, 0x59, 0xc5, 0xc0, 0x1f, 0xe3, 0xee, 0x7d, 0xb1, 0x2b, - 0xee, 0x13, 0x70, 0x6f, 0x40, 0x74, 0x7d, 0x73, 0xcb, 0x89, 0x80, 0x13, 0x67, 0x70, 0xc0, - 0x82, 0x42, 0x91, 0xe2, 0x88, 0x9f, 0xf6, 0x4a, 0x52, 0x65, 0x06, 0x28, 0x39, 0x96, 0x6d, - 0xc0, 0xde, 0x1f, 0x8a, 0x22, 0xd1, 0xae, 0x39, 0xe8, 0x29, 0xae, 0x2f, 0xe7, 0x21, 0xdf, - 0x6a, 0xd7, 0x35, 0xb7, 0xa4, 0x3d, 0x97, 0x53, 0xc2, 0x2e, 0xca, 0xa9, 0x66, 0x32, 0xe3, - 0x76, 0x67, 0xd2, 0x9e, 0x61, 0xeb, 0x94, 0xa3, 0xd7, 0x0c, 0x96, 0xdd, 0x01, 0xe9, 0x6e, - 0xdd, 0x67, 0xa6, 0x75, 0x01, 0x97, 0xf6, 0x63, 0x5d, 0x75, 0xbc, 0x33, 0xe9, 0xe8, 0xa6, - 0x17, 0x13, 0x24, 0xb0, 0x93, 0x75, 0x03, 0xc4, 0x54, 0x7d, 0x8b, 0xc3, 0xc4, 0xb8, 0x6a, - 0xd0, 0xb4, 0x83, 0x65, 0x13, 0x11, 0x9d, 0xf2, 0x3f, 0x59, 0x3f, 0x8f, 0x54, 0x4a, 0xf6, - 0x7b, 0x9e, 0x12, 0x03, 0x5f, 0x16, 0xa4, 0x70, 0x80, 0x64, 0xf4, 0xed, 0xa5, 0x68, 0x83, - 0xc5, 0x8c, 0x44, 0x5d, 0xb2, 0x4e, 0x3f, 0x92, 0xf3, 0xa1, 0xa4, 0xc7, 0x60, 0x94, 0xcc, - 0x1b, 0x5c, 0x48, 0xdc, 0x3c, 0x79, 0xf9, 0x06, 0x54, 0xa2, 0x5b, 0xc4, 0xfa, 0xa1, 0x11, - 0xcf, 0x83, 0xc1, 0x25, 0x20, 0x76, 0x1a, 0xea, 0xd3, 0x01, 0xda, 0xc7, 0xe2, 0xa1, 0x1d, - 0x63, 0xf4, 0x0f, 0x04, 0x4d, 0x53, 0x2c, 0x68, 0x3c, 0x58, 0xc2, 0xd6, 0x8a, 0xe3, 0x8b, - 0x3f, 0x39, 0xb4, 0x1e, 0x07, 0x6f, 0xa1, 0x4c, 0x1b, 0xe5, 0xae, 0xcc, 0xbd, 0xdd, 0x36, - 0x4b, 0x82, 0x7c, 0x2f, 0xb6, 0xe0, 0x66, 0x87, 0x24, 0x9c, 0x5e, 0x80, 0xe5, 0x95, 0xab, - 0xf6, 0x59, 0xcd, 0x26, 0xcf, 0x96, 0x6f, 0xcc, 0x12, 0xe3, 0xf3, 0xc3, 0x6c, 0xc4, 0xa0, - 0xcc, 0x73, 0x48, 0x2b, 0x63, 0x41, 0x4e, 0x3d, 0xbf, 0xd9, 0x23, 0xe3, 0x2a, 0x1b, 0xbc, - 0x55, 0x91, 0x90, 0xf9, 0xde, 0x83, 0xad, 0xaa, 0x90, 0x69, 0xe9, 0xcd, 0x08, 0x74, 0xb4, - 0x50, 0x81, 0x2f, 0xe5, 0x5b, 0xa2, 0xc6, 0xe5, 0x5d, 0x4a, 0xe5, 0x87, 0x1d, 0x6d, 0x61, - 0x69, 0xc4, 0x6d, 0xf5, 0x9d, 0x49, 0x36, 0x99, 0x22, 0xf4, 0x18, 0x83, 0x0f, 0x7d, 0x2e, - 0x02, 0x38, 0xbb, 0xb3, 0x34, 0xff, 0xa7, 0x0c, 0xad, 0x13, 0xa9, 0x80, 0xbb, 0x5b, 0x3e, - 0x33, 0x2d, 0xfb, 0x94, 0xf2, 0x25, 0x04, 0x68, 0xef, 0x9c, 0x55, 0x36, 0x9d, 0x2c, 0x0a, - 0x53, 0xfb, 0x08, 0x8a, 0xd6, 0x80, 0x5a, 0x58, 0x54, 0xb9, 0x73, 0xf8, 0x21, 0x3b, 0xfe, - 0x72, 0x02, 0xa2, 0x93, 0xb8, 0x09, 0x08, 0x92, 0x40, 0x0e, 0x0f, 0xda, 0xbf, 0x63, 0x1c, - 0x8b, 0xa1, 0x82, 0x4c, 0x89, 0x98, 0x34, 0x01, 0xa3, 0x04, 0xb5, 0xf6, 0xf4, 0x79, 0xc2, - 0xab, 0xd6, 0x15, 0x09, 0x1c, 0xf4, 0x16, 0x3a, 0x0c, 0xbe, 0xba, 0x73, 0x43, 0x91, 0x24, - 0xfe, 0x0b, 0x16, 0xd6, 0xe4, 0xb2, 0xd4, 0xab, 0xb8, 0xa2, 0xfd, 0xba, 0x61, 0xca, 0xef, - 0xef, 0x33, 0x01, 0x14, 0x0f, 0x08, 0xe0, 0x5e, 0xb4, 0xb0, 0x8c, 0x24, 0xf5, 0xd4, 0x3c, - 0x09, 0x16, 0x3a, 0xee, 0x9f, 0x3b, 0x58, 0xe3, 0x53, 0x1a, 0xd9, 0x60, 0x45, 0xc2, 0x90, - 0x05, 0xae, 0xd8, 0xd6, 0xf2, 0x5d, 0x51, 0x0a, 0x11, 0x37, 0x53, 0x7a, 0x35, 0xa9, 0x65, - 0xa0, 0x36, 0xfe, 0x61, 0x58, 0x06, 0xfa, 0x1b, 0x66, 0x25, 0x6b, 0x64, 0x39, 0xb8, 0x61, - 0x5f, 0x61, 0xd1, 0x02, 0xf7, 0x12, 0x2c, 0x1a, 0x16, 0x1c, 0xd6, 0xd7, 0x1c, 0xd8, 0x02, - 0x44, 0x23, 0xc2, 0x3e, 0xbf, 0x2b, 0x18, 0xb3, 0x8f, 0x94, 0x0e, 0xe0, 0xba, 0x74, 0x01, - 0xbf, 0xb6, 0x71, 0x95, 0x7f, 0x04, 0xf8, 0xa8, 0x6b, 0x39, 0x96, 0x39, 0xf7, 0x6b, 0x47, - 0x39, 0x13, 0xa4, 0x33, 0x12, 0x09, 0x0e, 0x0f, 0xa9, 0x9e, 0xb2, 0x51, 0x5c, 0x94, 0x68, - 0x55, 0x79, 0x34, 0x7d, 0x58, 0x81, 0x06, 0x1e, 0x3e, 0x8c, 0x08, 0x43, 0xaa, 0x16, 0x88, - 0xa0, 0x9d, 0xa1, 0xfc, 0x54, 0xfe, 0x40, 0xdb, 0xdf, 0x25, 0xa2, 0x05, 0x6d, 0xcd, 0xfd, - 0x47, 0xe4, 0xfc, 0x0c, 0x82, 0xe2, 0x87, 0x74, 0x74, 0x90, 0x5f, 0x3d, 0xa2, 0x17, 0x3b, - 0x2b, 0x29, 0x3c, 0x6d, 0x39, 0x87, 0x0c, 0xad, 0x13, 0x20, 0x39, 0x28, 0xdb, 0xcf, 0xde, - 0xcc, 0x03, 0x02, 0xf3, 0xf0, 0xc9, 0x94, 0xe3, 0xd4, 0xff, 0xd8, 0x0b, 0xe5, 0x6a, 0xec, - 0x9e, 0xf5, 0x03, 0x5d, 0xc4, 0x8e, 0x5e, 0x8d, 0x29, 0x2a, 0x94, 0xaf, 0xf6, 0x35, 0x8b, - 0xc5, 0xda, 0x60, 0x1e, 0x67, 0x20, 0x93, 0x38, 0xdd, 0xbc, 0x07, 0x93, 0xff, 0x35, 0x08, - 0x4b, 0x53, 0x71, 0x1d, 0x1b, 0xfd, 0x05, 0xad, 0x17, 0xdd, 0xac, 0xc1, 0xaa, 0x66, 0x9e, - 0x61, 0x78, 0xc7, 0xa1, 0x67, 0x33, 0x09, 0xbe, 0x18, 0x4e, 0xf8, 0xb8, 0x05, 0x32, 0xe2, - 0x52, 0x5a, 0x9b, 0x42, 0xea, 0x6e, 0x2e, 0x01, 0x6a, 0x5b, 0x82, 0xd1, 0xf0, 0xa2, 0xdd, - 0xa2, 0xf8, 0xe8, 0x47, 0xc8, 0x98, 0x67, 0x72, 0xe0, 0x9f, 0x48, 0xb1, 0xa8, 0xd1, 0x50, - 0x93, 0x03, 0xb1, 0x13, 0xb4, 0x69, 0x37, 0xda, 0x39, 0x88, 0x79, 0x6e, 0xfb, 0x96, 0xbc, - 0x5c, 0xc9, 0x1e, 0xa1, 0xc7, 0x28, 0x22, 0x9c, 0xe1, 0x4e, 0x6a, 0x74, 0x4b, 0x52, 0xf7, - 0x7d, 0x4f, 0xdd, 0x76, 0xc7, 0x88, 0xce, 0xa9, 0x8e, 0x6c, 0x16, 0xa1, 0x9d, 0x35, 0x73, - 0xfe, 0xcb, 0x27, 0xc6, 0xbf, 0xdf, 0x94, 0xb5, 0xb3, 0x40, 0x06, 0x11, 0x5d, 0x23, 0x36, - 0x65, 0x05, 0xeb, 0xc1, 0xec, 0xfa, 0xbd, 0x43, 0xf5, 0x71, 0xd6, 0xdc, 0x17, 0xeb, 0x1e, - 0xa4, 0x8f, 0x56, 0x4b, 0x0c, 0xb7, 0x81, 0xbb, 0xa2, 0x84, 0x7c, 0x54, 0xf0, 0xb3, 0x7e, - 0xf0, 0x3a, 0x69, 0xac, 0xe5, 0xca, 0xaf, 0x30, 0x39, 0xb3, 0xe6, 0xdd, 0x0e, 0x13, 0x0b, - 0xf3, 0x7f, 0xc4, 0x35, 0xa0, 0x59, 0xc5, 0xfb, 0xe8, 0xec, 0x0e, 0x26, 0x82, 0x2e, 0x3b, - 0xc2, 0xde, 0xeb, 0x0f, 0xaf, 0x48, 0x04, 0x2e, 0xac, 0xcc, 0x9b, 0xf6, 0x3c, 0xb7, 0xec, - 0xa5, 0x37, 0x0d, 0x4f, 0x94, 0xe1, 0x68, 0x2d, 0xa5, 0x6e, 0x4c, 0x76, 0x21, 0x97, 0x66, - 0x16, 0x3e, 0x79, 0x4e, 0x96, 0x7e, 0x2f, 0x11, 0xcb, 0x8d, 0x2b, 0x40, 0xed, 0xa7, 0x97, - 0xdb, 0x6d, 0xe6, 0x37, 0x8b, 0x25, 0x00, 0xa2, 0x22, 0x81, 0xd7, 0x76, 0x09, 0xf7, 0x17, - 0x3d, 0xb9, 0xec, 0x7b, 0x6a, 0x00, 0x9b, 0x89, 0xb6, 0xf9, 0xb4, 0x58, 0x52, 0x51, 0xd5, - 0xed, 0xa8, 0x3a, 0x5f, 0x94, 0x27, 0x96, 0x87, 0x8d, 0x41, 0xef, 0x7f, 0xdf, 0xd1, 0xd7, - 0xba, 0xb3, 0x00, 0xb1, 0xb3, 0xd8, 0xe2, 0x3a, 0x20, 0x0c, 0xf6, 0x17, 0xfa, 0x60, 0xa0, - 0xb4, 0x55, 0x75, 0x57, 0x69, 0x2e, 0x6d, 0x27, 0x94, 0x31, 0x3d, 0x35, 0x37, 0x05, 0xc0, - 0x50, 0x3a, 0x02, 0x0f, 0xdb, 0x7f, 0x7f, 0x7e, 0xea, 0x8c, 0xda, 0x09, 0x6f, 0x7b, 0xfe, - 0x80, 0x96, 0x85, 0x31, 0xb1, 0xfa, 0x19, 0xe2, 0x91, 0x2a, 0x7c, 0xfa, 0x2c, 0x9c, 0x3e, - 0xea, 0x74, 0x35, 0x9f, 0x0d, 0xe1, 0x34, 0x4f, 0x2a, 0x35, 0x40, 0x1d, 0xb9, 0xb7, 0x2d, - 0x10, 0xfe, 0xfd, 0xf9, 0xa6, 0xbd, 0xe4, 0xa1, 0xf9, 0xbc, 0x4f, 0x01, 0x3c, 0xac, 0x75, - 0xe6, 0x0e, 0xc1, 0x4e, 0xc9, 0x18, 0xcb, 0xd1, 0x69, 0xb8, 0xb4, 0xa2, 0x78, 0xed, 0xb5, - 0x95, 0x72, 0xaa, 0xb2, 0x3a, 0x60, 0xcd, 0x5c, 0xb6, 0xaf, 0x4f, 0x44, 0xae, 0x03, 0xad, - 0xdf, 0x8e, 0x64, 0xa0, 0x26, 0x32, 0xc9, 0xe6, 0x42, 0x9b, 0x10, 0x95, 0x99, 0x69, 0xe8, - 0xe6, 0xa2, 0x72, 0x7c, 0x20, 0x19, 0x4c, 0xbf, 0x4d, 0x1f, 0x82, 0xb7, 0xe1, 0x8e, 0xbf, - 0x25, 0x25, 0x92, 0xc4, 0x55, 0x96, 0xb6, 0xd2, 0xc6, 0xdb, 0x93, 0x2c, 0x6d, 0x4b, 0x8b, - 0x4a, 0x60, 0x96, 0xd9, 0xd5, 0xff, 0xb2, 0x18, 0xbe, 0x91, 0x9a, 0x97, 0x57, 0xea, 0xa0, - 0x86, 0x3b, 0x38, 0x3a, 0xed, 0x41, 0x13, 0xd1, 0x4b, 0xbc, 0x09, 0x1b, 0xb9, 0x16, 0x3b, - 0xaa, 0x67, 0xaf, 0xdf, 0x64, 0x1f, 0xef, 0xd4, 0xd4, 0x14, 0x98, 0xa9, 0x2c, 0x8e, 0xe8, - 0x90, 0x29, 0xd0, 0xe5, 0x3c, 0xa4, 0xfe, 0xa4, 0xc8, 0xdc, 0x03, 0x81, 0x64, 0x4f, 0x6c, - 0xca, 0x82, 0x96, 0xa3, 0x61, 0x1c, 0x3a, 0x0c, 0x82, 0x9e, 0x6c, 0x8b, 0xc2, 0x95, 0xc0, - 0x6a, 0x69, 0xf0, 0xef, 0x93, 0x89, 0x19, 0xfd, 0xa8, 0x36, 0x81, 0x9f, 0xbf, 0x5c, 0xd8, - 0x71, 0x60, 0x55, 0xd9, 0x23, 0xd0, 0x78, 0x80, 0x33, 0xae, 0x87, 0xfa, 0xe1, 0xa6, 0x6e, - 0x19, 0x2a, 0xcf, 0xe3, 0x68, 0x33, 0xde, 0x96, 0x0b, 0x1c, 0x53, 0x9b, 0xd1, 0x1a, 0x38, - 0x95, 0xd5, 0x45, 0xa6, 0xee, 0x64, 0xe9, 0x29, 0x88, 0xc8, 0xc2, 0x23, 0x14, 0x4e, 0xad, - 0xa2, 0xb1, 0xa5, 0xbc, 0x46, 0x86, 0xec, 0xef, 0x3b, 0x28, 0x0e, 0x41, 0x8a, 0xfb, 0xaa, - 0x60, 0x96, 0xe7, 0xe7, 0x60, 0x3b, 0xc8, 0x52, 0x4c, 0xab, 0xbf, 0xe0, 0x88, 0x20, 0x45, - 0x02, 0xdc, 0x35, 0x24, 0x15, 0x8b, 0xb9, 0xa3, 0xf8, 0xa5, 0xb2, 0x49, 0x0a, 0x43, 0xe3, - 0x08, 0xb7, 0xf8, 0x89, 0xb2, 0xd9, 0xc1, 0xd2, 0xc0, 0x61, 0x4c, 0x11, 0xe7, 0x44, 0xb1, - 0xa6, 0xc7, 0x4c, 0x8c, 0x09, 0xe4, 0x40, 0x74, 0x6e, 0xd6, 0x70, 0x3e, 0x7a, 0xa4, 0x37, - 0x6b, 0xcc, 0xab, 0x6b, 0x5d, 0x86, 0x44, 0xf6, 0xfe, 0xd2, 0x4d, 0x40, 0xf0, 0xc0, 0x89, - 0x66, 0x17, 0x2c, 0x8a, 0x43, 0x29, 0xd6, 0x91, 0x69, 0x8f, 0x87, 0x8a, 0xdf, 0xec, 0x2c, - 0xbf, 0x02, 0xc4, 0xe1, 0x26, 0x07, 0x26, 0x34, 0x5d, 0x60, 0x5b, 0x38, 0x0c, 0xaf, 0xa2, - 0xba, 0xe6, 0xd4, 0x42, 0xed, 0x62, 0xe5, 0x51, 0xce, 0xb5, 0x71, 0xb8, 0x9a, 0x20, 0x10, - 0x54, 0x2b, 0x32, 0x08, 0xca, 0x89, 0x67, 0xc9, 0xf9, 0x29, 0x5d, 0x66, 0x18, 0xf7, 0x4b, - 0x5d, 0x9b, 0x7d, 0xae, 0x0c, 0x38, 0x74, 0x0c, 0x15, 0xd4, 0x55, 0x3d, 0x53, 0x9f, 0x05, - 0x4c, 0x7f, 0x59, 0xb8, 0x09, 0x35, 0x49, 0xc4, 0x68, 0xfd, 0x52, 0xdc, 0x2d, 0x9e, 0x1f, - 0x27, 0xa8, 0x72, 0xb4, 0xfc, 0xcf, 0x7e, 0x9c, 0xca, 0xf6, 0x38, 0x2a, 0x75, 0x99, 0x39, - 0xd5, 0x84, 0x34, 0xd7, 0x52, 0x32, 0xb9, 0x19, 0x4a, 0x10, 0xd9, 0xa0, 0x07, 0xd9, 0xd5, - 0xdd, 0xf1, 0x4f, 0xcb, 0x90, 0xdf, 0x97, 0x8f, 0x46, 0x34, 0xc7, 0xa7, 0x9e, 0x0b, 0x24, - 0xef, 0x22, 0x0a, 0xf8, 0xf9, 0x9d, 0xad, 0x73, 0x32, 0x98, 0x42, 0xf4, 0x4f, 0xcc, 0x64, - 0x5d, 0xc2, 0x20, 0x00, 0x81, 0x4c, 0x8c, 0x6c, 0x15, 0xd9, 0x7e, 0x31, 0xa5, 0x5d, 0x26, - 0x74, 0x32, 0xcf, 0xef, 0x2a, 0xc3, 0xc3, 0x03, 0x1c, 0x36, 0xc2, 0xbe, 0x9d, 0x50, 0x81, - 0xed, 0xe5, 0x50, 0xc9, 0x23, 0x85, 0x2e, 0xb6, 0x00, 0x40, 0x9c, 0x84, 0x76, 0xfc, 0x97, - 0x16, 0x8e, 0x84, 0x88, 0x6d, 0x92, 0x3e, 0x0c, 0x2a, 0x90, 0x67, 0x24, 0x8f, 0x09, 0x54, - 0x9c, 0x6e, 0x75, 0x1a, 0x38, 0x79, 0xf5, 0x0c, 0xbf, 0x67, 0xdf, 0x8c, 0x1e, 0xb7, 0x26, - 0x61, 0x14, 0x3e, 0xb4, 0x5d, 0x18, 0xe5, 0x85, 0x59, 0xda, 0xf0, 0x0e, 0xf5, 0x6a, 0xb7, - 0xb9, 0x55, 0x1e, 0x1a, 0x2e, 0x6f, 0x70, 0xc7, 0xec, 0x41, 0xb6, 0x8d, 0xb0, 0xb8, 0x8b, - 0xf2, 0xf8, 0x5e, 0x7c, 0x02, 0xf4, 0xd8, 0x84, 0x33, 0x1f, 0xfe, 0x16, 0xe6, 0xda, 0x96, - 0xc1, 0x33, 0x9d, 0x6e, 0xcc, 0x60, 0xf4, 0x40, 0x03, 0xe1, 0xb9, 0x26, 0x9d, 0x68, 0x7f, - 0xd8, 0xc5, 0x78, 0x63, 0x38, 0xc7, 0xe8, 0x6d, 0xda, 0x72, 0x53, 0x5e, 0x88, 0x20, 0x01, - 0xab, 0x67, 0x82, 0xb0, 0x9c, 0xae, 0x52, 0x55, 0x42, 0xaa, 0xe4, 0x80, 0x02, 0x9e, 0xb9, - 0xc9, 0x2f, 0x64, 0x97, 0x17, 0xb7, 0x75, 0xea, 0x37, 0x3f, 0xcd, 0x78, 0xe0, 0x92, 0x0c, - 0xdc, 0x4e, 0x95, 0xf7, 0xa1, 0x9b, 0x36, 0x53, 0xad, 0x5e, 0xe9, 0xcf, 0xa1, 0x95, 0x8c, - 0x59, 0x8d, 0x62, 0x54, 0xa1, 0x1e, 0x2c, 0x3f, 0x19, 0xc9, 0x45, 0xab, 0x98, 0xd0, 0xfb, - 0xa3, 0x29, 0x31, 0xca, 0xcf, 0xab, 0xa0, 0x1b, 0xb6, 0xab, 0xb6, 0x6e, 0x5d, 0x12, 0x22, - 0xd5, 0x74, 0xe0, 0x7c, 0x2b, 0x1c, 0xf5, 0xdf, 0x00, 0xc7, 0x5a, 0x35, 0x03, 0x7c, 0x14, - 0xec, 0x69, 0x02, 0x20, 0xc7, 0x76, 0x8f, 0x37, 0xb6, 0x0c, 0x84, 0x66, 0xd4, 0x47, 0xf5, - 0xb2, 0x91, 0xb5, 0x70, 0xfe, 0x8f, 0xbb, 0x55, 0xae, 0xe4, 0x83, 0x21, 0xd7, 0xc4, 0xb7, - 0xec, 0x9e, 0x67, 0xb8, 0xd6, 0x45, 0xb3, 0xd4, 0xe8, 0xad, 0x0d, 0xa3, 0x36, 0x36, 0xaf, - 0x06, 0xc9, 0x80, 0x0f, 0x4d, 0x6c, 0x31, 0xcd, 0x58, 0xe3, 0x2c, 0x2f, 0x53, 0xd1, 0xa9, - 0x42, 0xfd, 0xcb, 0x25, 0x57, 0x3e, 0x34, 0x1e, 0x31, 0x59, 0x96, 0xcc, 0xf2, 0x7d, 0x9a, - 0xae, 0x46, 0x36, 0x9c, 0x7e, 0x03, 0x4e, 0xa8, 0x02, 0x94, 0x87, 0x6f, 0x77, 0x8c, 0xfe, - 0xd4, 0x2f, 0xb3, 0x2e, 0x9a, 0xcc, 0x24, 0x17, 0x0b, 0xa3, 0x19, 0x50, 0x7f, 0x48, 0x7d, - 0x15, 0x36, 0x17, 0xb6, 0xf4, 0xde, 0xd8, 0xc9, 0xf3, 0xce, 0x60, 0x81, 0x69, 0xb2, 0xfd, - 0xce, 0x57, 0xe3, 0x33, 0xd7, 0x1a, 0x8e, 0x16, 0xf2, 0xee, 0x7f, 0xa6, 0x41, 0x26, 0x57, - 0xb6, 0xce, 0xa0, 0x10, 0x49, 0xee, 0x63, 0x1e, 0xba, 0x6c, 0xd3, 0x31, 0xc9, 0x8a, 0xe6, - 0xc1, 0x56, 0x4b, 0x01, 0x22, 0xcc, 0x89, 0x89, 0x88, 0xb9, 0xb3, 0xa8, 0xbe, 0x19, 0xdc, - 0x84, 0x33, 0x26, 0x03, 0x2d, 0x0b, 0x7f, 0xfd, 0x3e, 0x85, 0x75, 0x5c, 0x71, 0x54, 0x51, - 0x07, 0x53, 0xe7, 0xfe, 0x99, 0x02, 0x51, 0xa5, 0xf0, 0xb2, 0xb8, 0x3e, 0x67, 0xcd, 0x20, - 0x5d, 0x29, 0xee, 0xc9, 0x2e, 0xe9, 0x7c, 0xb0, 0x48, 0x9f, 0xa9, 0x37, 0x59, 0x07, 0x7c, - 0x85, 0x8c, 0x82, 0xc8, 0xa1, 0x1e, 0x04, 0x89, 0x06, 0xcf, 0xef, 0xcd, 0xd3, 0xc4, 0xad, - 0xdd, 0xff, 0xbb, 0x38, 0x3b, 0xad, 0x4f, 0x7f, 0xc1, 0x2d, 0xa9, 0xd3, 0x2f, 0x2b, 0x58, - 0x21, 0x44, 0xeb, 0x39, 0x74, 0xd9, 0xd9, 0x84, 0x31, 0x39, 0xe6, 0x82, 0xde, 0x06, 0x82, - 0x00, 0xf7, 0xc2, 0xd7, 0x41, 0xda, 0x24, 0x2e, 0xb2, 0xca, 0xd0, 0xa7, 0x66, 0x27, 0xa2, - 0xfa, 0xd5, 0xc7, 0x98, 0xc9, 0x84, 0x24, 0x32, 0x1e, 0x86, 0x10, 0xf0, 0xc1, 0xdc, 0x83, - 0x12, 0x2a, 0x8e, 0xde, 0x5d, 0x7e, 0x2a, 0x63, 0x84, 0x80, 0x66, 0x66, 0xcb, 0x04, 0x07, - 0x79, 0xb0, 0xe8, 0x54, 0x84, 0xf2, 0x44, 0x55, 0xd5, 0x49, 0xad, 0xeb, 0x00, 0x8d, 0xca, - 0x2c, 0x38, 0xa5, 0x30, 0x54, 0xe6, 0x9a, 0xa3, 0x11, 0x39, 0x4a, 0xd3, 0xb3, 0x1e, 0xc3, - 0x34, 0xcc, 0x95, 0x6c, 0x57, 0xe1, 0x1d, 0x26, 0x8b, 0x04, 0xca, 0x4f, 0x98, 0x21, 0xac, - 0xfe, 0xd5, 0x02, 0xdd, 0x49, 0x48, 0x8d, 0xd4, 0xbe, 0x2c, 0xa7, 0x91, 0x1d, 0xd0, 0x54, - 0x64, 0x25, 0x04, 0xd2, 0x26, 0x4c, 0x4f, 0xc5, 0xdb, 0x1a, 0x15, 0x8b, 0x7c, 0x81, 0xe9, - 0xd9, 0xdb, 0x80, 0x1d, 0x1d, 0xee, 0x7d, 0xa0, 0x58, 0x70, 0xcf, 0xcb, 0xe9, 0xdc, 0x5f, - 0x9c, 0x83, 0xe0, 0xe6, 0xb5, 0x0e, 0x7b, 0x55, 0xe5, 0xe2, 0xcb, 0x23, 0x51, 0x42, 0xa4, - 0x18, 0x03, 0x24, 0xbb, 0x98, 0x63, 0xe0, 0xbf, 0x0b, 0xb8, 0x20, 0xfa, 0x93, 0x69, 0x3a, - 0xad, 0xb1, 0x17, 0x6e, 0x3a, 0x30, 0x33, 0x14, 0x67, 0x76, 0x01, 0x3b, 0xec, 0x97, 0x23, - 0x4b, 0x47, 0x23, 0x12, 0x10, 0x0c, 0x53, 0x44, 0xe3, 0xdf, 0x75, 0xbc, 0x54, 0xa7, 0xfa, - 0xf3, 0x79, 0xee, 0x18, 0x94, 0x77, 0x82, 0xc3, 0xbb, 0xfa, 0x7b, 0x2a, 0xd0, 0xd2, 0xec, - 0x46, 0xd9, 0x4a, 0xf0, 0x57, 0xe6, 0x86, 0x33, 0x2c, 0xbc, 0x74, 0x61, 0xb4, 0xc1, 0x12, - 0x28, 0xe6, 0x28, 0xf7, 0xf8, 0x18, 0xe5, 0x00, 0xbb, 0x71, 0x28, 0x71, 0x9d, 0xc0, 0x27, - 0x23, 0x81, 0x61, 0x15, 0x66, 0xd7, 0xc9, 0xc9, 0xfc, 0xb2, 0x7b, 0xd9, 0x89, 0x62, 0x4e, - 0x77, 0x7c, 0xb5, 0xc5, 0x3b, 0xe8, 0xcd, 0x09, 0xf8, 0xee, 0xfe, 0xd6, 0x1c, 0x0b, 0xe0, - 0x70, 0x10, 0xdb, 0x5f, 0xd4, 0x75, 0x25, 0xae, 0x91, 0xb6, 0x03, 0xa3, 0xc6, 0x03, 0x7b, - 0x1e, 0xe7, 0x29, 0xe0, 0xe2, 0xd2, 0x2d, 0xa7, 0xeb, 0x54, 0x18, 0xb2, 0x4a, 0x0e, 0xa0, - 0xa9, 0xba, 0x4e, 0x91, 0x95, 0x1d, 0x8a, 0xaa, 0x35, 0xa1, 0x72, 0x58, 0x99, 0xe5, 0x35, - 0xf7, 0x74, 0x2d, 0x7a, 0xcb, 0x9c, 0xa2, 0x6e, 0xf2, 0x7c, 0xfd, 0xc7, 0x27, 0xd9, 0xe4, - 0x7c, 0x03, 0xa0, 0x87, 0xbf, 0x48, 0xb5, 0xc9, 0x34, 0x8d, 0x76, 0xd1, 0x70, 0xce, 0xb3, - 0x48, 0x21, 0x92, 0xf0, 0xa8, 0x8c, 0x04, 0x66, 0x26, 0x50, 0x7f, 0xce, 0xcc, 0x79, 0x60, - 0x60, 0x1b, 0x56, 0x1b, 0xe8, 0xab, 0xed, 0xaa, 0x87, 0x72, 0xe2, 0x0f, 0x7b, 0xa0, 0xf5, - 0x24, 0x76, 0x90, 0x8b, 0xfc, 0x0b, 0xdf, 0x22, 0x08, 0x03, 0x7d, 0x10, 0x5e, 0x75, 0xc6, - 0x5b, 0x07, 0xdc, 0xba, 0x69, 0x0e, 0x01, 0xc9, 0xcd, 0x43, 0x2e, 0xde, 0xa8, 0x73, 0x19, - 0xb8, 0xbd, 0xf5, 0xb4, 0x00, 0xd1, 0x7c, 0xb0, 0xd4, 0x74, 0x3f, 0x21, 0x74, 0xc1, 0x50, - 0x37, 0xc7, 0xfd, 0x9e, 0x5c, 0xdc, 0xe9, 0x45, 0x86, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x66, 0xf0, 0x72, 0x6d, 0xf7, 0x79, 0x95, 0xfe, 0x01, 0x66, 0x40, 0x3b, 0xc7, - 0xf4, 0x51, 0x43, 0x6b, 0x76, 0xa6, 0x8b, 0x1f, 0xa3, 0x04, 0xbe, 0x50, 0x3e, 0x28, 0xbb, - 0xa2, 0x36, 0x35, 0x25, 0x55, 0x22, 0xa4, 0xe8, 0x17, 0x41, 0x25, 0xa3, 0x7a, 0x8b, 0x8b, - 0xc8, 0xcc, 0xd5, 0x38, 0x01, 0xc8, 0x0a, 0xda, 0x60, 0x83, 0x7b, 0x54, 0x76, 0x70, 0x81, - 0x55, 0xdd, 0x29, 0x77, 0xc8, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0xb7, 0x99, 0x2f, 0xdd, 0xad, 0xb5, 0x5c, 0x00, 0xf6, 0x42, 0xaf, 0xa2, 0xe0, 0xc1, 0x08, + 0x11, 0x8f, 0x2e, 0x2f, 0x94, 0xdc, 0x2c, 0x4f, 0x2b, 0xeb, 0xe1, 0xd3, 0x2b, 0x5b, 0x1c, + 0x2a, 0xb4, 0xb2, 0x44, 0xb4, 0xb3, 0xdf, 0x61, 0x1a, 0x07, 0x24, 0xaa, 0xb5, 0x37, 0x85, + 0xf7, 0x94, 0xd8, 0xbc, 0x64, 0x51, 0x0b, 0xfd, 0xa2, 0xf5, 0x54, 0x62, 0x1d, 0xd4, 0x6d, + 0xd2, 0x2f, 0x90, 0x12, 0xbe, 0x91, 0xbb, 0xba, 0x3c, 0xbc, 0xa3, 0xcf, 0xff, 0x71, 0x2c, + 0x0c, 0x7e, 0x26, 0xdf, 0x09, 0x55, 0x74, 0x57, 0xfe, 0xcc, 0xbe, 0x1d, 0x7f, 0xf0, 0x4d, + 0x1c, 0x3e, 0x1a, 0x20, 0x78, 0x8b, 0xd1, 0x6e, 0x44, 0xf9, 0x36, 0x15, 0xa2, 0x86, 0x26, + 0xa3, 0xd3, 0x74, 0x91, 0x6e, 0x9d, 0xda, 0x8f, 0xe9, 0x1c, 0x53, 0x3b, 0x74, 0x0d, 0x66, + 0xae, 0x33, 0x98, 0x15, 0x17, 0x47, 0x46, 0x19, 0x30, 0x13, 0x5e, 0x6f, 0x46, 0xf4, 0x11, + 0x25, 0xb4, 0x36, 0x04, 0xb0, 0x53, 0xb9, 0x80, 0xae, 0x87, 0x33, 0x87, 0x4f, 0xe5, 0x30, + 0x5b, 0xff, 0x8b, 0xad, 0x01, 0xa2, 0x39, 0x02, 0x9a, 0x02, 0x9d, 0x5c, 0x79, 0xbd, 0x72, + 0xda, 0x02, 0xaa, 0x3c, 0xd3, 0x75, 0x91, 0xa9, 0x68, 0x22, 0xde, 0x38, 0x0f, 0x68, 0x3b, + 0x66, 0x12, 0x8c, 0x82, 0x9a, 0xc5, 0x02, 0xbf, 0x63, 0x95, 0x32, 0xba, 0x0c, 0xf3, 0x4e, + 0xa6, 0xb9, 0x2c, 0x7e, 0x04, 0x1b, 0xc1, 0xf4, 0x60, 0x84, 0x3f, 0x6d, 0x0a, 0xa7, 0x4a, + 0x52, 0x94, 0xc4, 0xb6, 0xc5, 0x84, 0xbe, 0x80, 0x3a, 0x6e, 0xec, 0x92, 0xef, 0x0e, 0xdb, + 0x68, 0x44, 0xec, 0xad, 0x8b, 0x86, 0xbc, 0xe8, 0x79, 0x7c, 0x87, 0xff, 0x25, 0xfa, 0x47, + 0xe1, 0x94, 0xc1, 0xc3, 0x8e, 0xe9, 0x08, 0x88, 0xde, 0x85, 0x95, 0x60, 0xc9, 0xac, 0x2f, + 0xe7, 0xaf, 0x33, 0xe9, 0xdc, 0x34, 0x1d, 0xc6, 0xc0, 0x3f, 0xf1, 0xe5, 0x49, 0x88, 0x16, + 0x73, 0x39, 0xa1, 0xcc, 0xb1, 0xc8, 0xb4, 0x01, 0xc1, 0xb9, 0x32, 0x60, 0x30, 0xd6, 0x51, + 0xbf, 0x47, 0x32, 0xf5, 0x94, 0x06, 0x01, 0xcb, 0xd9, 0x40, 0xd7, 0x14, 0x51, 0x89, 0xc7, + 0x05, 0x49, 0x30, 0x89, 0xd7, 0x68, 0x4d, 0xff, 0x0a, 0xc9, 0x62, 0x4c, 0x1b, 0xbf, 0x55, + 0xff, 0x78, 0x7e, 0x01, 0x09, 0x43, 0xb8, 0xfb, 0x39, 0x39, 0x4b, 0xcb, 0x93, 0x35, 0x4e, + 0xf7, 0xce, 0x6e, 0xd0, 0xe1, 0x4a, 0x63, 0xef, 0xef, 0x0b, 0xec, 0x1a, 0xe3, 0xdf, 0x52, + 0xf4, 0x1e, 0x0b, 0xf1, 0x8b, 0x4e, 0xc5, 0xe7, 0x9d, 0x7d, 0xdc, 0x3a, 0x32, 0xd8, 0x12, + 0x45, 0x98, 0x73, 0x0f, 0x89, 0xff, 0x02, 0x56, 0xf1, 0x32, 0x82, 0x15, 0x92, 0x40, 0x5d, + 0xab, 0xaa, 0x16, 0x0f, 0xd5, 0x28, 0x4e, 0x0c, 0xb7, 0x7a, 0x3c, 0xe5, 0x76, 0x6f, 0x8e, + 0x41, 0x98, 0xb4, 0x31, 0x0b, 0x3f, 0x8d, 0x0e, 0x47, 0x01, 0x73, 0x78, 0x93, 0x03, 0x42, + 0xf7, 0x16, 0xe3, 0x63, 0xa8, 0x22, 0x1e, 0x5f, 0xc1, 0x0f, 0x4b, 0x66, 0x3c, 0x36, 0x4f, + 0xca, 0x12, 0x4e, 0xd2, 0x0f, 0xcf, 0xe7, 0x3b, 0xde, 0x2e, 0x02, 0xe5, 0xbe, 0xb0, 0x1e, + 0x65, 0x6e, 0xf5, 0xc3, 0xd1, 0x3e, 0x98, 0xca, 0xd3, 0x74, 0x8d, 0x5a, 0xa9, 0x6e, 0x9b, + 0x96, 0x4a, 0x06, 0xd6, 0x32, 0xd5, 0x4d, 0x3c, 0x6a, 0xa5, 0x27, 0xb0, 0x93, 0x16, 0x6f, + 0x51, 0xf2, 0x9b, 0x35, 0xc8, 0xa1, 0xe1, 0xd9, 0xec, 0xbe, 0x7f, 0x11, 0x80, 0x26, 0x03, + 0x3f, 0x25, 0xe6, 0x1b, 0xa4, 0x62, 0x35, 0x73, 0x97, 0x23, 0xb6, 0x32, 0x47, 0x2c, 0xe1, + 0x68, 0xed, 0xd0, 0x9c, 0x66, 0xec, 0xb9, 0x7f, 0x55, 0x95, 0xb4, 0x60, 0x2a, 0x86, 0x5d, + 0x40, 0x9b, 0xae, 0xfd, 0xf7, 0x7d, 0xf8, 0x43, 0x7f, 0x19, 0x9c, 0xa4, 0x5b, 0x22, 0xad, + 0xd2, 0x96, 0x12, 0xf5, 0x68, 0x44, 0xb1, 0x83, 0x50, 0x96, 0x31, 0x40, 0x80, 0x6a, 0x32, + 0xde, 0x9b, 0xdb, 0xaa, 0x6c, 0xe5, 0x2e, 0x8b, 0x6d, 0xa0, 0x9d, 0x75, 0x5b, 0x09, 0x62, + 0x88, 0x42, 0xb2, 0x27, 0x48, 0x0f, 0x5c, 0xb5, 0xe5, 0x2c, 0x83, 0xe1, 0x39, 0x9b, 0xdd, + 0x62, 0x4a, 0x19, 0xc1, 0x52, 0x73, 0x97, 0x8c, 0xf4, 0xe0, 0xe1, 0xc0, 0x63, 0xab, 0x85, + 0x20, 0xda, 0xc5, 0x13, 0xe3, 0xc8, 0x81, 0x4d, 0x8a, 0xae, 0xc1, 0x47, 0xcf, 0x77, 0x58, + 0x34, 0x77, 0x7b, 0xc6, 0x83, 0x55, 0x88, 0x1c, 0x73, 0x36, 0x50, 0x8a, 0x2b, 0x0f, 0xef, + 0x1f, 0x31, 0x2e, 0x59, 0xad, 0x3e, 0x02, 0xae, 0xc1, 0x9f, 0xa5, 0xe1, 0xba, 0x07, 0xa3, + 0xbc, 0xa1, 0x04, 0x95, 0x45, 0xfc, 0x01, 0x89, 0x78, 0x94, 0x66, 0x27, 0x0e, 0x83, 0x4a, + 0xf0, 0x1e, 0x27, 0x7b, 0x24, 0x88, 0xf9, 0x64, 0x0b, 0xe9, 0xf2, 0x6a, 0x7f, 0xbb, 0xd1, + 0x8b, 0x03, 0xcf, 0x4a, 0x11, 0xce, 0xea, 0x41, 0xbd, 0x36, 0x55, 0x11, 0xf6, 0x6c, 0xb0, + 0xb6, 0x1e, 0xcd, 0xfb, 0x2d, 0x3d, 0x09, 0x9e, 0xa0, 0x65, 0x63, 0xee, 0xf0, 0x14, 0xa1, + 0x92, 0x81, 0x17, 0x58, 0x33, 0xb2, 0xe0, 0x05, 0x03, 0xf3, 0xad, 0xba, 0x05, 0x2b, 0x43, + 0xe2, 0xc4, 0x5b, 0xd1, 0x60, 0xe0, 0xe8, 0x9d, 0xdf, 0x79, 0x82, 0xe3, 0x77, 0x06, 0x5e, + 0xfe, 0x6c, 0x48, 0x7e, 0x29, 0xb8, 0x33, 0xfb, 0x53, 0xac, 0xd2, 0x1c, 0xd3, 0x15, 0x6c, + 0x2e, 0x87, 0x10, 0x6d, 0xe0, 0x7b, 0xbc, 0x7b, 0x49, 0x49, 0xe4, 0x90, 0x7f, 0xfb, 0xf6, + 0xba, 0xbf, 0x6a, 0xc4, 0x64, 0xe9, 0x51, 0xb1, 0x2d, 0x55, 0xe4, 0x8f, 0x71, 0xdb, 0xcf, + 0x6b, 0x80, 0x30, 0x4b, 0xc5, 0xbb, 0xf5, 0x91, 0x80, 0x01, 0x1f, 0x62, 0x53, 0xda, 0xac, + 0xca, 0xc7, 0xfe, 0xb6, 0x97, 0x1a, 0x9f, 0xf4, 0xc5, 0x85, 0x61, 0xd6, 0xf9, 0x56, 0x1a, + 0xbc, 0xfe, 0xdf, 0x57, 0x0a, 0x28, 0xf9, 0x0d, 0x4a, 0x49, 0xfc, 0xf0, 0xde, 0x16, 0x6d, + 0x6b, 0xfd, 0xbe, 0xb9, 0x20, 0xf5, 0xf4, 0x30, 0x16, 0x55, 0x15, 0x79, 0x10, 0xb4, 0xdf, + 0x16, 0x1f, 0xa3, 0x2a, 0xdc, 0x76, 0x2b, 0xb8, 0x06, 0x51, 0x67, 0x89, 0xba, 0xee, 0x9e, + 0x3d, 0x5c, 0xb5, 0xc4, 0x4a, 0x6e, 0x64, 0x75, 0x30, 0xf7, 0x46, 0x79, 0xfe, 0xd5, 0x81, + 0x24, 0xf3, 0x1f, 0xd3, 0x0f, 0x13, 0xcb, 0x33, 0xee, 0x14, 0xcf, 0xc4, 0xc7, 0xac, 0x4a, + 0x12, 0x71, 0x76, 0xb1, 0x1d, 0x45, 0x59, 0x3b, 0xad, 0xea, 0x2c, 0x24, 0x59, 0x8e, 0xad, + 0xfc, 0x7c, 0xdc, 0xe6, 0xb0, 0xfd, 0x6d, 0x9c, 0x23, 0xc3, 0x00, 0x2e, 0xd1, 0x5a, 0xee, + 0x7e, 0x46, 0x3d, 0x7e, 0xca, 0xe5, 0xa7, 0x95, 0xbf, 0xd5, 0xd1, 0xab, 0xe6, 0x23, 0x25, + 0x14, 0x50, 0xe3, 0x13, 0x86, 0x82, 0xca, 0x5d, 0x6d, 0x23, 0xb8, 0x56, 0x6a, 0xd1, 0xf6, + 0x7e, 0x83, 0xeb, 0xe6, 0xe8, 0x40, 0x93, 0xfd, 0x12, 0x04, 0x92, 0x40, 0x7f, 0x3f, 0xeb, + 0xcc, 0x93, 0x00, 0x4b, 0x0b, 0xdd, 0x7b, 0x3b, 0x4a, 0xfb, 0x39, 0x54, 0xd9, 0x10, 0xb9, + 0x34, 0x91, 0x53, 0xe4, 0xde, 0x70, 0xea, 0x74, 0xfa, 0x57, 0x66, 0x3d, 0x2a, 0xc6, 0x1d, + 0xec, 0x23, 0x44, 0x8e, 0x16, 0xf4, 0x83, 0x9e, 0x4a, 0x7b, 0xf1, 0xf2, 0xbc, 0x26, 0x2f, + 0xeb, 0x54, 0x3d, 0xc7, 0xa6, 0x26, 0x3f, 0x78, 0xe0, 0xd6, 0x7f, 0xd2, 0xb2, 0x8c, 0xbb, + 0x1f, 0x8d, 0xf9, 0x6c, 0x42, 0x4b, 0xa4, 0x80, 0xdb, 0x12, 0x98, 0x46, 0x29, 0x36, 0x43, + 0xd6, 0xd5, 0xf0, 0x8b, 0x7a, 0x6c, 0xd4, 0x51, 0x9b, 0x5e, 0xe2, 0xc7, 0xda, 0x7d, 0xbf, + 0x08, 0xa6, 0x81, 0x75, 0x15, 0xe6, 0xe8, 0x72, 0x08, 0xdb, 0x52, 0xbf, 0x5b, 0x59, 0x69, + 0xeb, 0x5a, 0x28, 0xe1, 0x58, 0x04, 0x3a, 0x4f, 0xf1, 0xe1, 0xc7, 0x80, 0x05, 0x16, 0xda, + 0x01, 0xe4, 0xdc, 0xc3, 0x0b, 0x95, 0x74, 0xbb, 0x3b, 0x28, 0x9f, 0xc6, 0xb7, 0x67, 0x12, + 0x28, 0x24, 0xe6, 0xbe, 0x74, 0x16, 0xce, 0x59, 0x4d, 0xe6, 0xd6, 0xc6, 0x6e, 0x52, 0x4b, + 0x86, 0x39, 0xbf, 0x33, 0xf4, 0x29, 0x9f, 0x3e, 0xdf, 0x3f, 0xe6, 0x83, 0xde, 0xca, 0xf5, + 0x18, 0x83, 0x67, 0x6f, 0xd5, 0x60, 0xbe, 0x03, 0x4f, 0xf8, 0x37, 0x36, 0xbf, 0xf6, 0x1c, + 0x0e, 0x6b, 0x9e, 0x99, 0xd6, 0x92, 0x40, 0xdd, 0x49, 0x15, 0x04, 0x33, 0x34, 0xac, 0x27, + 0xdb, 0xd4, 0x66, 0xdf, 0xc6, 0x61, 0xcf, 0x5f, 0x7d, 0x4f, 0xfa, 0x88, 0xa7, 0xd1, 0x00, + 0xe1, 0x64, 0x27, 0xf0, 0xa0, 0xba, 0x20, 0x66, 0xe6, 0x55, 0x22, 0x65, 0x03, 0xb3, 0x93, + 0xbc, 0xaa, 0x9c, 0x95, 0x09, 0x94, 0x84, 0xc5, 0xde, 0x1f, 0xab, 0x78, 0x27, 0xfd, 0x8b, + 0xf0, 0x69, 0xff, 0xbe, 0xab, 0xcf, 0xa8, 0xca, 0x3e, 0x1a, 0xdf, 0x7d, 0x19, 0x92, 0x35, + 0x37, 0x44, 0x30, 0xad, 0xc1, 0xe4, 0x71, 0xc8, 0xc3, 0x40, 0xd2, 0x17, 0xee, 0x0a, 0x17, + 0x49, 0xc7, 0x1a, 0x35, 0xa8, 0x75, 0xb1, 0x33, 0xcf, 0x5b, 0x58, 0x3e, 0x51, 0xbf, 0xd7, + 0x23, 0x42, 0x29, 0xba, 0x6b, 0x4d, 0xd6, 0x1c, 0xda, 0x12, 0x9e, 0x25, 0x42, 0xe5, 0x6d, + 0xa1, 0xd0, 0x17, 0x6f, 0x00, 0xb4, 0x22, 0x3c, 0x91, 0x26, 0x9b, 0x4e, 0x57, 0x2d, 0x98, + 0xcf, 0xbb, 0x26, 0x17, 0xf3, 0xd6, 0x58, 0xa5, 0x78, 0xe2, 0x8d, 0x8f, 0x72, 0xc9, 0xae, + 0xbf, 0x36, 0x7c, 0xa8, 0xca, 0x4c, 0x41, 0x53, 0x18, 0x4d, 0xbf, 0x72, 0xa2, 0xbf, 0x10, + 0x7f, 0x1d, 0xe7, 0xef, 0x5c, 0x60, 0x3f, 0xe3, 0x2c, 0xef, 0xd5, 0x50, 0x6f, 0x0c, 0x89, + 0x9d, 0x5a, 0x5a, 0x2a, 0xee, 0xec, 0xcb, 0x12, 0x9d, 0x97, 0x07, 0x2b, 0x62, 0x9e, 0x1a, + 0x8d, 0x52, 0xdb, 0xb9, 0xf1, 0x54, 0x9f, 0x5d, 0x40, 0x97, 0x0a, 0xb6, 0xc1, 0x65, 0x30, + 0xcb, 0xb4, 0xad, 0xca, 0x53, 0xb8, 0x8b, 0x8f, 0xdc, 0xd1, 0x79, 0x55, 0x3f, 0x5c, 0xd2, + 0xe9, 0x23, 0xf5, 0x16, 0x64, 0x7e, 0xd2, 0x0a, 0x2b, 0x4d, 0x1b, 0x43, 0xab, 0x0b, 0xd6, + 0x60, 0x1c, 0x94, 0xbe, 0xd9, 0x09, 0xe2, 0x4c, 0x36, 0x89, 0xb7, 0xdc, 0x05, 0xca, 0x85, + 0x47, 0x11, 0x5c, 0x43, 0x64, 0x63, 0x31, 0x20, 0xdd, 0x4e, 0x97, 0x5a, 0x69, 0xd5, 0x20, + 0xa7, 0x93, 0x95, 0x1f, 0x7a, 0xc9, 0x7e, 0xb6, 0xf9, 0xec, 0x75, 0x0f, 0xe6, 0xa3, 0x3e, + 0x97, 0x5b, 0x7b, 0xf4, 0xab, 0xcd, 0x84, 0x92, 0xb7, 0xec, 0xd9, 0xc3, 0x5c, 0xf6, 0x97, + 0x18, 0x3f, 0x8a, 0xe9, 0x54, 0x28, 0xd2, 0x01, 0x0d, 0x0b, 0xc6, 0x58, 0xb5, 0xf9, 0x3c, + 0x71, 0x82, 0x0d, 0xa7, 0x98, 0x2a, 0xb8, 0x1c, 0xb8, 0xdc, 0x8b, 0xd3, 0x92, 0x34, 0xf6, + 0xcc, 0xe6, 0xf8, 0x2e, 0x0a, 0xcc, 0x3f, 0x56, 0x37, 0xa6, 0x99, 0x42, 0xd8, 0x28, 0x32, + 0xa1, 0xcf, 0x68, 0xcc, 0x73, 0xdd, 0xb4, 0xc0, 0x29, 0x36, 0x03, 0xda, 0x8e, 0x3f, 0xa2, + 0x5f, 0x3d, 0xef, 0x0c, 0xd5, 0xd8, 0x61, 0x44, 0xd9, 0x31, 0xec, 0xa4, 0x35, 0xfd, 0x69, + 0x10, 0x78, 0xc8, 0x1c, 0x0b, 0x34, 0x27, 0xe8, 0x7c, 0xdb, 0x77, 0xff, 0x9e, 0x96, 0x2e, + 0x6d, 0x83, 0x66, 0x5c, 0x6a, 0x63, 0x61, 0x79, 0xd5, 0xee, 0xb7, 0x75, 0xe8, 0x88, 0xc7, + 0x97, 0xc2, 0xce, 0x46, 0xbe, 0x19, 0xfb, 0x1b, 0x1c, 0xd9, 0x64, 0x92, 0x75, 0x6a, 0x0e, + 0xd5, 0x41, 0xc1, 0xc1, 0xfc, 0x55, 0x65, 0x6e, 0x03, 0x4f, 0x4c, 0xfa, 0xc5, 0x9e, 0xc8, + 0x1a, 0xfb, 0x35, 0x60, 0xb1, 0xe0, 0x74, 0xad, 0xda, 0x5f, 0x56, 0x8c, 0xb3, 0xfc, 0xf3, + 0x46, 0x68, 0xcc, 0x19, 0xb2, 0x9d, 0x8d, 0xb3, 0x81, 0x11, 0x98, 0x87, 0x48, 0xce, 0xd8, + 0x3c, 0x5e, 0x91, 0xca, 0xc5, 0xa5, 0x13, 0xd0, 0x6f, 0x35, 0x7f, 0xce, 0x3e, 0xc5, 0xab, + 0x3f, 0xa2, 0x0d, 0x6b, 0x0d, 0xad, 0xe6, 0x34, 0xad, 0xc4, 0x9a, 0xd2, 0x90, 0xb1, 0xa2, + 0xf6, 0xb7, 0x57, 0x6f, 0xfb, 0x7a, 0xaf, 0xfc, 0xaa, 0x6c, 0xfe, 0x0c, 0x4f, 0xac, 0x4d, + 0x8e, 0xcc, 0x37, 0x76, 0xe8, 0x68, 0x4d, 0x2f, 0x07, 0x02, 0xdb, 0x8b, 0x41, 0x90, 0xf0, + 0x97, 0x27, 0x1c, 0xfe, 0xa6, 0xeb, 0x53, 0xfd, 0xd8, 0xf6, 0x5d, 0xc9, 0x62, 0x46, 0x88, + 0xeb, 0xeb, 0x23, 0x0a, 0xd2, 0xf9, 0xb1, 0x92, 0xdc, 0x9b, 0x59, 0xf5, 0xfa, 0x2f, 0xce, + 0xfb, 0x12, 0xb8, 0x2e, 0xf1, 0x29, 0x72, 0x4e, 0xf1, 0x4e, 0xe3, 0x27, 0xd8, 0xee, 0xe0, + 0x9a, 0x1d, 0x50, 0xbe, 0x9a, 0xc3, 0xb2, 0x4c, 0x7a, 0x07, 0xc8, 0xa6, 0x43, 0x2c, 0x26, + 0x78, 0x58, 0xd1, 0xc3, 0x0c, 0xeb, 0x2e, 0x22, 0xcc, 0x41, 0x30, 0x0b, 0x6f, 0x80, 0x63, + 0x16, 0xad, 0xe9, 0xfd, 0x6a, 0xb7, 0xa5, 0xca, 0x22, 0x8c, 0xc8, 0x13, 0xfd, 0xe0, 0x1c, + 0xb0, 0x5d, 0x79, 0x5d, 0x6b, 0xee, 0xb5, 0x32, 0x2e, 0x88, 0x84, 0xf7, 0x17, 0xba, 0xf7, + 0xb0, 0x4a, 0x62, 0xd6, 0x4b, 0x74, 0x77, 0x44, 0x6e, 0xbb, 0xcf, 0x6a, 0x9a, 0x1c, 0x87, + 0xbe, 0x27, 0x1b, 0x62, 0x92, 0x48, 0x6a, 0x9e, 0x6e, 0x79, 0xfc, 0x69, 0xf9, 0x30, 0xf0, + 0xa1, 0xb2, 0x00, 0xe5, 0x47, 0xf6, 0x34, 0x40, 0x35, 0x3f, 0x8a, 0x34, 0x35, 0xdf, 0x4d, + 0x53, 0xb0, 0xa9, 0xbc, 0x50, 0x73, 0x0f, 0x02, 0x99, 0x05, 0x25, 0x7b, 0x7e, 0x92, 0x97, + 0xb5, 0x18, 0xc7, 0xec, 0x1f, 0x47, 0x70, 0x1e, 0x65, 0xc5, 0x84, 0x24, 0x40, 0x62, 0x90, + 0x5e, 0xd0, 0x9b, 0x36, 0xb0, 0x10, 0x07, 0x5e, 0x98, 0xe1, 0x84, 0x2f, 0x8e, 0x86, 0x53, + 0x38, 0x96, 0x30, 0xd3, 0xd2, 0x73, 0x16, 0xca, 0xb5, 0x96, 0xaf, 0x23, 0x82, 0x5a, 0xa3, + 0x36, 0x80, 0x4f, 0x36, 0x50, 0x49, 0x72, 0x39, 0x4d, 0x88, 0x7d, 0x5d, 0xb8, 0x31, 0x5e, + 0x37, 0x5d, 0xaf, 0x7e, 0x98, 0x4b, 0xfd, 0xae, 0x65, 0x1b, 0x39, 0x13, 0x27, 0xa1, 0x97, + 0xe3, 0xc4, 0xc1, 0x81, 0x70, 0xae, 0x0d, 0x32, 0xe5, 0x9c, 0xa6, 0xcb, 0x9a, 0xd3, 0x20, + 0xd6, 0xf1, 0x92, 0x38, 0xce, 0xfc, 0xa6, 0x99, 0x8c, 0xd1, 0x37, 0x16, 0xe9, 0x37, 0xd6, + 0x65, 0xfc, 0x2f, 0x6d, 0xe9, 0xde, 0x4c, 0xb5, 0xf5, 0x50, 0x47, 0xb1, 0x85, 0x6b, 0xca, + 0xa4, 0x82, 0x6c, 0x16, 0xf8, 0x8f, 0x39, 0x10, 0x6d, 0x46, 0x8c, 0xf4, 0x91, 0xa5, 0x3b, + 0x58, 0xaa, 0xce, 0x36, 0x79, 0xbb, 0x3a, 0xe9, 0xb2, 0x86, 0xac, 0x51, 0x7f, 0x0a, 0x34, + 0x84, 0x81, 0x65, 0x56, 0x6d, 0xd3, 0xd1, 0x0a, 0xbd, 0x9e, 0xee, 0x6f, 0x8f, 0x37, 0xbf, + 0x79, 0x85, 0xf9, 0x0b, 0x6a, 0x0a, 0x89, 0x39, 0xa1, 0x4c, 0x91, 0xd4, 0xc5, 0xb2, 0xfc, + 0x3e, 0x97, 0xe7, 0x71, 0xc5, 0xb4, 0xd3, 0x5a, 0x44, 0x39, 0x40, 0x2c, 0x36, 0xd6, 0xfd, + 0x47, 0x9b, 0x44, 0xc8, 0xe3, 0x96, 0xd8, 0x95, 0xca, 0xe2, 0x02, 0xa1, 0xba, 0xfb, 0x89, + 0x87, 0x95, 0x0e, 0x49, 0xa0, 0x0e, 0xdd, 0xbc, 0xab, 0x7e, 0xb1, 0x21, 0x49, 0x55, 0x8f, + 0x20, 0xd4, 0x51, 0xb5, 0x70, 0x94, 0x3b, 0xed, 0x14, 0x92, 0xda, 0xe6, 0xec, 0x97, 0x9e, + 0x16, 0xf0, 0x6f, 0x8e, 0x20, 0x11, 0x7d, 0x94, 0x92, 0x28, 0x9d, 0xff, 0xb3, 0x42, 0x78, + 0x44, 0x5c, 0x8d, 0x26, 0x5e, 0x88, 0x09, 0x42, 0xe3, 0xeb, 0x56, 0x3e, 0xf2, 0xbb, 0x89, + 0x3d, 0x4b, 0xfb, 0x14, 0xf0, 0x8b, 0x97, 0x0a, 0xa3, 0x2f, 0xa2, 0xe6, 0xea, 0xdd, 0xac, + 0x48, 0x4f, 0xcb, 0x30, 0xf2, 0x14, 0x24, 0x8e, 0x20, 0x95, 0x4e, 0x2d, 0x1f, 0xb7, 0x6d, + 0xed, 0x90, 0x25, 0x93, 0xda, 0xd1, 0xa1, 0x4f, 0xbd, 0x26, 0xcc, 0x36, 0x48, 0x24, 0xe9, + 0xf9, 0xb7, 0xec, 0xd9, 0x8e, 0x64, 0x8c, 0xa0, 0xdb, 0x69, 0x3f, 0x7b, 0xbb, 0x8e, 0xc7, + 0x94, 0xad, 0x3b, 0x21, 0xd7, 0xb5, 0x88, 0x19, 0x29, 0x7a, 0x15, 0x46, 0x5d, 0x42, 0x17, + 0xe5, 0x33, 0xf2, 0x0e, 0x58, 0xbb, 0x3e, 0x1f, 0x1c, 0xad, 0x86, 0x4f, 0xd2, 0x97, 0x3d, + 0x75, 0x48, 0xd4, 0xdb, 0x9d, 0x71, 0xa3, 0x94, 0x1e, 0xbe, 0x2f, 0xf3, 0x82, 0x48, 0x16, + 0x4e, 0xcd, 0x5f, 0x81, 0x7a, 0x57, 0x95, 0x45, 0xff, 0x27, 0xbe, 0xdc, 0xd5, 0x68, 0xb7, + 0xff, 0x1e, 0x50, 0xbe, 0x1d, 0xf6, 0x8a, 0x6d, 0xe2, 0xda, 0xb5, 0x0f, 0xf2, 0xf7, 0x06, + 0xa7, 0x51, 0x3f, 0x0b, 0xc3, 0xf5, 0x23, 0x41, 0xa5, 0x8b, 0xfe, 0x86, 0xd4, 0x04, 0xe2, + 0x36, 0xce, 0xe2, 0xa6, 0xf6, 0x75, 0xd5, 0x43, 0xf6, 0x61, 0x24, 0x00, 0xa2, 0x13, 0xdc, + 0x87, 0x03, 0xd0, 0x09, 0x58, 0x66, 0xc4, 0x00, 0xc4, 0x86, 0xdf, 0xcf, 0x23, 0xea, 0xbe, + 0xe4, 0xcd, 0x64, 0xef, 0x02, 0x75, 0x35, 0xcc, 0x55, 0xfe, 0x35, 0x95, 0xb2, 0x22, 0x63, + 0xaf, 0xe3, 0x4e, 0x10, 0x27, 0x90, 0x45, 0x8f, 0xa8, 0xb4, 0x8f, 0x30, 0xe9, 0x5a, 0x1f, + 0xdf, 0xd6, 0x90, 0x9b, 0x30, 0x1c, 0xdf, 0xdb, 0x65, 0x37, 0x71, 0x02, 0xb4, 0x12, 0xf2, + 0x94, 0x24, 0x32, 0x81, 0x50, 0x93, 0x21, 0xb0, 0xdc, 0xdf, 0xb7, 0xa6, 0xfe, 0x0b, 0xe8, + 0xfc, 0x42, 0x78, 0x15, 0x9d, 0xd8, 0xe5, 0xf6, 0xfd, 0x7d, 0xb7, 0x12, 0xce, 0xb2, 0x93, + 0x98, 0x09, 0x33, 0x66, 0x13, 0x49, 0xc1, 0x0d, 0x54, 0x79, 0x5e, 0x3c, 0x90, 0x66, 0xc9, + 0x23, 0x9b, 0x28, 0xe1, 0x5f, 0xb3, 0x96, 0x1b, 0x65, 0x1f, 0xcb, 0xb5, 0x5c, 0xc3, 0x08, + 0xef, 0xb3, 0xe9, 0x48, 0x5d, 0x2f, 0x12, 0x8e, 0x21, 0x17, 0xc4, 0x0c, 0x02, 0xe2, 0x43, + 0xcd, 0xc8, 0x6a, 0x90, 0xd5, 0x0c, 0xf3, 0x33, 0xc0, 0xa2, 0x3a, 0x80, 0xd7, 0x73, 0x8d, + 0xf0, 0x4b, 0x7c, 0xaf, 0x90, 0x0e, 0x0e, 0xa1, 0x51, 0xb0, 0x44, 0x2a, 0x39, 0x9a, 0xbf, + 0xcb, 0x4a, 0x27, 0x43, 0xfb, 0x9d, 0xd8, 0x34, 0xde, 0x55, 0xe4, 0x0d, 0x29, 0x00, 0x8b, + 0x8e, 0xf9, 0xbb, 0x7b, 0xe1, 0x62, 0x56, 0xb2, 0x70, 0xfc, 0x7b, 0x96, 0xac, 0x32, 0x7b, + 0xa5, 0x2b, 0xce, 0xb2, 0x12, 0x49, 0xd3, 0x26, 0x14, 0x6a, 0xed, 0x0b, 0x4c, 0x34, 0xa4, + 0x3d, 0xf4, 0x95, 0x0b, 0xc9, 0x94, 0xf3, 0x4c, 0xdd, 0x9c, 0xa0, 0xf0, 0xb0, 0x65, 0x9d, + 0xaf, 0x7e, 0xdd, 0xf8, 0x66, 0x3e, 0x98, 0xb4, 0xc1, 0x63, 0x59, 0xab, 0x48, 0x85, 0x9f, + 0xd3, 0xda, 0x0a, 0x03, 0xb7, 0x01, 0x4f, 0xfd, 0xa5, 0x0d, 0xef, 0x00, 0xda, 0x89, 0x09, + 0xab, 0xfa, 0x31, 0x9d, 0x4e, 0xe4, 0xe4, 0xfc, 0x03, 0xae, 0xa2, 0x8b, 0xb8, 0xb8, 0xae, + 0xa5, 0x21, 0x6c, 0xbe, 0xae, 0x99, 0x1c, 0x04, 0xb8, 0x60, 0xbd, 0x9d, 0x74, 0x17, 0x75, + 0xfb, 0x53, 0x6f, 0x74, 0x1b, 0x77, 0x3a, 0xb4, 0x16, 0x66, 0x8b, 0xe3, 0x02, 0x59, 0x85, + 0xf7, 0x49, 0xc2, 0x80, 0x06, 0xc4, 0x32, 0x27, 0x1a, 0x08, 0x58, 0x71, 0x5f, 0x0f, 0xa6, + 0xf2, 0x4b, 0xbc, 0x18, 0x9e, 0x6e, 0xba, 0x3b, 0xc2, 0xcc, 0xb2, 0x24, 0xae, 0x55, 0x88, + 0x0d, 0x1b, 0x11, 0xae, 0x02, 0x93, 0x1a, 0xdd, 0xc4, 0x41, 0xa3, 0xb4, 0xd9, 0x21, 0xc0, + 0x2b, 0x06, 0x8d, 0xe9, 0x3c, 0xa6, 0x79, 0xa6, 0x96, 0xa4, 0x08, 0x17, 0xbe, 0x38, 0x51, + 0xca, 0x7e, 0xd0, 0x55, 0xff, 0x1e, 0xcf, 0xf3, 0xd0, 0xc2, 0x07, 0x44, 0x28, 0xe7, 0xa7, + 0xfc, 0xea, 0x99, 0x30, 0x17, 0xbe, 0xb1, 0x1a, 0xe2, 0x1d, 0x33, 0x93, 0xbf, 0x39, 0x89, + 0x32, 0x1a, 0x49, 0x0a, 0xb6, 0xba, 0x78, 0x11, 0x30, 0xdf, 0xdb, 0x54, 0xe1, 0x43, 0xe7, + 0x92, 0xbe, 0x26, 0xe3, 0xd9, 0x01, 0xe3, 0x4c, 0xf5, 0xa4, 0x96, 0x18, 0x24, 0x11, 0x92, + 0x60, 0x85, 0x00, 0x01, 0x05, 0xf4, 0x1f, 0x1e, 0x05, 0x2e, 0x4c, 0x18, 0x50, 0xaa, 0x6b, + 0x6c, 0x41, 0xd8, 0xa6, 0xb3, 0x33, 0x0f, 0x9b, 0x39, 0x0b, 0x91, 0x88, 0x86, 0x21, 0x9f, + 0xbe, 0x2a, 0xa4, 0x6f, 0xf9, 0xbe, 0x2d, 0x94, 0x35, 0xb3, 0x40, 0x08, 0xce, 0x30, 0x81, + 0xb0, 0x3c, 0xc0, 0x90, 0x08, 0x4d, 0x98, 0xc7, 0xc2, 0xbe, 0x69, 0x03, 0x22, 0xa0, 0xe4, + 0x53, 0xb6, 0xb4, 0xca, 0x20, 0x72, 0x79, 0x88, 0xa3, 0xb7, 0x27, 0x0b, 0xda, 0x38, 0xbb, + 0xbc, 0x59, 0x9a, 0x16, 0x1a, 0x1a, 0x18, 0xd9, 0x08, 0x43, 0xa9, 0xad, 0x62, 0xf9, 0xad, + 0xd0, 0x12, 0x39, 0xa8, 0xb0, 0xe5, 0xd7, 0x44, 0x8b, 0xef, 0xf4, 0x1d, 0xff, 0x8f, 0x58, + 0x27, 0x4c, 0x3d, 0xbd, 0x40, 0xc4, 0xaa, 0x1e, 0x02, 0x50, 0x4c, 0x9d, 0xb2, 0x7a, 0x51, + 0x07, 0x59, 0x8f, 0x30, 0x5c, 0x3f, 0x37, 0xa3, 0x60, 0xed, 0xae, 0x83, 0xb6, 0xbb, 0xa7, + 0x98, 0xcf, 0x31, 0x99, 0x8e, 0x27, 0x67, 0x54, 0x82, 0x72, 0xc3, 0xd7, 0x9b, 0x20, 0xc2, + 0xb0, 0x99, 0xd1, 0x0d, 0x78, 0x38, 0x9d, 0x17, 0x4d, 0xdb, 0x82, 0x9e, 0xb4, 0x1b, 0xb6, + 0x67, 0x1f, 0xf0, 0x5b, 0xe7, 0xac, 0xff, 0xee, 0xbe, 0x15, 0x27, 0x7f, 0x6c, 0xdd, 0x50, + 0x9a, 0x9a, 0x7f, 0x93, 0x0c, 0xbb, 0x01, 0x75, 0xa8, 0x8d, 0xb8, 0x91, 0x0b, 0xed, 0x1a, + 0x93, 0xac, 0x41, 0x9e, 0xa9, 0xd3, 0x30, 0xc8, 0x3d, 0xe1, 0xbd, 0x38, 0x8c, 0x5b, 0xbc, + 0x9c, 0x44, 0x19, 0xde, 0x0c, 0xb7, 0x1f, 0xf8, 0xbc, 0x34, 0x9a, 0x9a, 0x57, 0x85, 0xd5, + 0xf3, 0xb7, 0x19, 0x67, 0x5a, 0xdd, 0xc8, 0x57, 0x6d, 0x84, 0xef, 0x0f, 0x81, 0x97, 0x0d, + 0x0a, 0xc1, 0xd4, 0x30, 0xc4, 0x9a, 0xc5, 0x48, 0x58, 0x7f, 0x5c, 0x1b, 0x65, 0x9f, 0x89, + 0xc0, 0x48, 0x41, 0xee, 0x51, 0xb1, 0x06, 0xd7, 0x24, 0x27, 0x4e, 0xb3, 0x4a, 0xe6, 0x95, + 0xb7, 0x5a, 0x20, 0xe3, 0xfb, 0x0b, 0x31, 0x15, 0x9e, 0xf5, 0x0d, 0xb6, 0x10, 0x41, 0x04, + 0xb2, 0x26, 0x55, 0x08, 0xed, 0xd6, 0xac, 0x2e, 0xe4, 0x00, 0x21, 0x19, 0xe0, 0x7e, 0xdf, + 0xd4, 0xd5, 0x9f, 0x98, 0x6f, 0x1f, 0x2c, 0xd1, 0x8c, 0x71, 0x0b, 0x9f, 0xdf, 0xe7, 0xdf, + 0x73, 0x1f, 0xb6, 0x41, 0x15, 0x1f, 0x5b, 0x97, 0xea, 0x3b, 0xe1, 0x22, 0x38, 0xd9, 0x26, + 0xfd, 0x1d, 0x4f, 0x02, 0x90, 0x55, 0x24, 0x2b, 0x3a, 0x00, 0x64, 0x9c, 0x53, 0xe1, 0x0d, + 0x20, 0x46, 0xd6, 0xc8, 0xa1, 0xda, 0x27, 0x07, 0x2e, 0xac, 0x0c, 0xdb, 0xfe, 0x40, 0x1e, + 0x7a, 0xdf, 0xd2, 0x59, 0xec, 0xcf, 0xc3, 0x70, 0xb1, 0xd1, 0x05, 0x47, 0x6d, 0x88, 0x18, + 0x5f, 0x90, 0xd6, 0x52, 0xd7, 0x3c, 0xb0, 0x35, 0x1e, 0x1a, 0xca, 0x1b, 0xe2, 0x79, 0x43, + 0x68, 0x64, 0x46, 0x1d, 0x72, 0xce, 0x06, 0x5a, 0x12, 0xb8, 0xb4, 0x11, 0x1a, 0x9e, 0x9a, + 0x28, 0x07, 0xa3, 0xc4, 0x56, 0x06, 0x51, 0x90, 0x80, 0x5e, 0x34, 0x7a, 0xd2, 0xbe, 0x02, + 0x98, 0x9f, 0x45, 0x01, 0xae, 0x04, 0xca, 0x08, 0x7f, 0x78, 0x86, 0x8c, 0x4f, 0x61, 0xee, + 0x82, 0x21, 0x5f, 0x73, 0x6a, 0xfe, 0x64, 0x5b, 0x89, 0xa9, 0x24, 0x36, 0x70, 0xa1, 0x15, + 0xd4, 0x04, 0x7d, 0xa9, 0x0e, 0x78, 0x98, 0x4c, 0xe5, 0x1d, 0x9b, 0x08, 0x23, 0x2a, 0x4f, + 0x2b, 0xaf, 0xfc, 0x13, 0x09, 0x14, 0xed, 0xf5, 0x36, 0x70, 0x4c, 0xff, 0x20, 0x0b, 0x0a, + 0xb7, 0x35, 0xaf, 0x88, 0xd6, 0x95, 0xd4, 0x85, 0xf9, 0x09, 0xa9, 0x47, 0x3b, 0x64, 0x9d, + 0x67, 0x30, 0xe4, 0x85, 0x56, 0x35, 0x2f, 0xf5, 0xf4, 0xa4, 0xb1, 0xb1, 0xe9, 0xc1, 0x26, + 0x4d, 0x31, 0x3c, 0xdd, 0x2e, 0x15, 0x16, 0x13, 0xdf, 0x78, 0x00, 0x74, 0xf6, 0x36, 0xbb, + 0x7d, 0x93, 0xbd, 0x1a, 0x25, 0x24, 0x27, 0x57, 0xf6, 0xec, 0x62, 0x57, 0x4e, 0x54, 0x85, + 0xc3, 0x39, 0x77, 0x94, 0x17, 0x06, 0x06, 0x99, 0x60, 0xc1, 0xac, 0x98, 0xfb, 0xab, 0xfc, + 0xe6, 0x83, 0x3f, 0x73, 0xcc, 0x13, 0x26, 0xbc, 0xb9, 0xcf, 0xed, 0xf6, 0x24, 0x7e, 0x83, + 0x00, 0x20, 0x6c, 0x94, 0x96, 0x6b, 0x11, 0x73, 0xe8, 0x32, 0x08, 0xe2, 0xa2, 0x96, 0x6e, + 0x23, 0xf6, 0xf6, 0x9e, 0x08, 0x2d, 0xc0, 0x89, 0xe2, 0x71, 0xdc, 0x97, 0xc7, 0x88, 0xed, + 0x1a, 0xf4, 0xac, 0xc4, 0x01, 0xbc, 0xf0, 0x44, 0x44, 0x57, 0x7a, 0x40, 0xcc, 0xd2, 0x74, + 0x6f, 0x6d, 0x92, 0x47, 0xfc, 0x06, 0x36, 0x51, 0x0e, 0xe0, 0x8e, 0xb0, 0x2d, 0x66, 0x05, + 0x5b, 0x29, 0xe5, 0x81, 0x91, 0xc2, 0x86, 0x0c, 0x30, 0xcd, 0x0c, 0x25, 0xfb, 0x1c, 0xd8, + 0x46, 0xd2, 0xb2, 0x3a, 0x26, 0x36, 0x31, 0x09, 0x24, 0x81, 0xff, 0x30, 0x55, 0x79, 0xd5, + 0x1b, 0x3b, 0x6e, 0xbe, 0xa6, 0x41, 0x8d, 0x95, 0xee, 0xaa, 0x06, 0xca, 0xa2, 0x85, 0xf0, + 0xca, 0xd8, 0x89, 0xcd, 0x95, 0x41, 0x3d, 0x8f, 0xd2, 0xa7, 0xc4, 0xa8, 0x30, 0x49, 0x89, + 0x0c, 0xc9, 0xa1, 0x9e, 0x53, 0xe7, 0xca, 0xdb, 0x33, 0x94, 0x79, 0xbe, 0x9a, 0x6e, 0xa3, + 0xa9, 0x52, 0xa0, 0xe7, 0x72, 0x9e, 0x94, 0xcf, 0x61, 0x49, 0x55, 0xda, 0x7d, 0x69, 0xe5, + 0xff, 0xcc, 0xde, 0x17, 0x35, 0x96, 0xce, 0xd6, 0x8f, 0x0f, 0x64, 0x1b, 0x13, 0xab, 0x29, + 0x77, 0x6c, 0x3e, 0x96, 0x02, 0xc9, 0xbc, 0x8e, 0xf9, 0xdd, 0x3e, 0x3d, 0xf7, 0xe7, 0x6a, + 0x9e, 0x58, 0x54, 0x88, 0xf5, 0xb1, 0x20, 0x71, 0xf1, 0x5d, 0x64, 0x4e, 0xa2, 0xab, 0x1e, + 0x01, 0x53, 0x76, 0x67, 0x47, 0x78, 0x34, 0xe4, 0x46, 0x50, 0x38, 0x33, 0x0d, 0xb3, 0x62, + 0x0a, 0x4e, 0x3b, 0x40, 0x5c, 0x52, 0xa9, 0xe7, 0x27, 0x77, 0xb4, 0xad, 0x6c, 0x45, 0x8b, + 0x68, 0xdc, 0x26, 0xea, 0x4c, 0x83, 0x5a, 0x86, 0x76, 0x19, 0x02, 0xc0, 0xa1, 0x14, 0xd8, + 0x33, 0x58, 0x6c, 0x2c, 0x78, 0x9c, 0xda, 0x6f, 0x64, 0xbd, 0x47, 0x7f, 0xe7, 0x43, 0x05, + 0x4b, 0x1f, 0x74, 0xb3, 0x23, 0x11, 0xd3, 0x35, 0xd8, 0x9a, 0x19, 0xeb, 0xcc, 0xcf, 0x86, + 0x56, 0xd3, 0x8a, 0xfb, 0x48, 0x45, 0x87, 0xfa, 0x5b, 0x8b, 0xa7, 0xe7, 0xb0, 0x67, 0x6b, + 0xf1, 0x4c, 0x69, 0x8c, 0x52, 0xda, 0x37, 0xc1, 0x2b, 0x91, 0x50, 0xb4, 0xa8, 0x11, 0xcd, + 0x41, 0xaf, 0xd4, 0xea, 0xed, 0xc9, 0x00, 0x6c, 0x3a, 0x67, 0xe3, 0xbc, 0x0b, 0x80, 0xd4, + 0x04, 0xc2, 0x7c, 0x8d, 0xa7, 0x64, 0x28, 0x49, 0x12, 0xcc, 0x60, 0x7a, 0xe6, 0xdf, 0x5b, + 0xdb, 0x77, 0xe8, 0x4d, 0x69, 0xba, 0xcb, 0x08, 0x04, 0x6a, 0x03, 0xbb, 0x63, 0x05, 0x53, + 0xb6, 0x86, 0x72, 0x06, 0x49, 0x20, 0x4b, 0x47, 0x59, 0xe2, 0x0d, 0x7f, 0xf7, 0xfc, 0xb7, + 0x82, 0x78, 0xf9, 0x60, 0xcf, 0x4f, 0x83, 0x27, 0xdb, 0x11, 0x59, 0x51, 0xfc, 0x18, 0x8f, + 0xb8, 0xfc, 0xc4, 0xb0, 0xf2, 0x3c, 0x8b, 0x71, 0xc3, 0x4e, 0x5f, 0x89, 0x3d, 0x51, 0x4c, + 0xe1, 0xd6, 0x26, 0x4f, 0xb4, 0xe5, 0xe4, 0xec, 0x2c, 0x64, 0x47, 0x4f, 0x3f, 0x3f, 0x31, + 0xc3, 0xaf, 0x8b, 0xb2, 0x90, 0x77, 0xd6, 0xe9, 0xb9, 0x37, 0x8d, 0x32, 0x18, 0xa6, 0x2b, + 0x9c, 0x60, 0xe8, 0xc7, 0x91, 0x82, 0xa1, 0x2a, 0x2b, 0x37, 0x1c, 0x29, 0x1e, 0xfe, 0x4d, + 0x5b, 0xe1, 0x0f, 0x5a, 0xfa, 0x00, 0x55, 0xc0, 0xa1, 0x69, 0x3c, 0x1a, 0x39, 0xa1, 0x5f, + 0x6d, 0x09, 0x76, 0x9d, 0x72, 0x7d, 0x98, 0x4d, 0x9e, 0x60, 0x9e, 0xb6, 0x7f, 0x8a, 0xea, + 0x4f, 0xd0, 0xf5, 0x7b, 0xf4, 0xf3, 0x94, 0xc3, 0x70, 0xde, 0xf2, 0xa6, 0x82, 0xe3, 0x82, + 0x3b, 0x68, 0x62, 0x30, 0x36, 0x51, 0x8e, 0x18, 0xc0, 0x29, 0x21, 0x95, 0x16, 0x13, 0x9d, + 0x3a, 0x31, 0xae, 0x6d, 0xa8, 0x72, 0x8d, 0xf1, 0x75, 0x4d, 0xc1, 0x9f, 0xf8, 0x34, 0x41, + 0xb2, 0xed, 0x62, 0x56, 0xde, 0x08, 0x92, 0x72, 0x9a, 0xd4, 0x86, 0xbd, 0xc8, 0xca, 0x03, + 0x2b, 0x4b, 0xaa, 0x87, 0x3b, 0xb4, 0x19, 0x03, 0x09, 0x89, 0x07, 0x06, 0xb0, 0x3d, 0x50, + 0x89, 0x83, 0x7e, 0x72, 0x00, 0xd7, 0x88, 0x23, 0x82, 0x42, 0xa8, 0xe9, 0x0e, 0xc1, 0x2a, + 0xb7, 0x54, 0x4a, 0x9a, 0x83, 0x52, 0xe1, 0x59, 0x12, 0x38, 0xf6, 0x95, 0xc4, 0xfb, 0x9b, + 0xe6, 0xee, 0xa9, 0x75, 0xa6, 0xa9, 0x14, 0xc3, 0xbd, 0x17, 0x51, 0x80, 0x59, 0x0c, 0x30, + 0x39, 0x9d, 0xfc, 0x6c, 0x96, 0x6e, 0x0b, 0xed, 0x90, 0x55, 0xd1, 0xa7, 0x77, 0x41, 0xb9, + 0xe2, 0xd6, 0x3b, 0x6b, 0x0e, 0xd8, 0xb8, 0x32, 0xf7, 0xfa, 0xe7, 0x13, 0x13, 0xdc, 0x7a, + 0x97, 0xc8, 0x5d, 0x52, 0x2b, 0xcc, 0x29, 0xcb, 0xd1, 0x39, 0x7d, 0xdc, 0x87, 0x54, 0xd7, + 0x1c, 0x9a, 0x88, 0x6c, 0x40, 0xe2, 0x5d, 0xb8, 0x9e, 0x0b, 0x0d, 0x99, 0xa8, 0x23, 0x8a, + 0x17, 0x88, 0x7e, 0x01, 0x91, 0x7b, 0xfc, 0x21, 0xb9, 0x82, 0x5f, 0x76, 0xef, 0x1e, 0xfd, + 0xb1, 0x11, 0xa2, 0x7a, 0x24, 0x65, 0x2e, 0x05, 0x3d, 0xc6, 0x5b, 0xf5, 0x49, 0x49, 0x60, + 0x24, 0xae, 0x64, 0xca, 0xbc, 0xc9, 0x65, 0x25, 0xdd, 0xeb, 0xa2, 0x43, 0x1e, 0x1f, 0x3a, + 0xfc, 0xba, 0x36, 0x74, 0xe0, 0x05, 0x03, 0xdf, 0x89, 0xbe, 0xf5, 0x29, 0x42, 0xd7, 0x5b, + 0x3f, 0x8b, 0x16, 0x64, 0x1d, 0x98, 0x7f, 0x3d, 0xf3, 0xa5, 0x0e, 0xcb, 0x28, 0x86, 0xc6, + 0x5b, 0xce, 0x7d, 0xd6, 0x16, 0xba, 0x75, 0x3a, 0x9b, 0xf6, 0x36, 0x70, 0x63, 0x1f, 0x61, + 0x1c, 0x72, 0x6c, 0x27, 0x0d, 0x2f, 0x43, 0x71, 0xb5, 0xc0, 0xeb, 0x8a, 0x2e, 0x4d, 0xd8, + 0x01, 0x59, 0x4b, 0x12, 0x70, 0x76, 0xde, 0xb6, 0x0c, 0xf0, 0x74, 0x56, 0xc2, 0x1d, 0x43, + 0x61, 0x0c, 0x38, 0x22, 0x0a, 0x85, 0x35, 0x59, 0x5b, 0x40, 0xd9, 0x9b, 0x46, 0x5f, 0x10, + 0x9f, 0x0a, 0xad, 0x0f, 0x0d, 0x83, 0x0e, 0xb6, 0xcd, 0xa5, 0xdf, 0x21, 0x7c, 0x10, 0x1c, + 0x62, 0x24, 0xb9, 0xd9, 0x89, 0xf2, 0x01, 0x64, 0x3a, 0x75, 0xb8, 0x34, 0x8f, 0x9d, 0xd8, + 0x9e, 0x0a, 0x7f, 0x93, 0x68, 0x60, 0xa1, 0x02, 0xa1, 0x52, 0xf0, 0x6f, 0x23, 0xc1, 0x06, + 0x41, 0xc1, 0x90, 0xcf, 0xfd, 0x69, 0xe4, 0x16, 0xb0, 0xf9, 0x29, 0x35, 0x70, 0x34, 0x49, + 0x07, 0xb4, 0x87, 0x62, 0x6f, 0x8d, 0x13, 0x6d, 0xe4, 0x57, 0xef, 0x43, 0x68, 0xf8, 0x6f, + 0x2e, 0x29, 0xe6, 0x65, 0x94, 0x67, 0x2c, 0x3a, 0x6d, 0x57, 0x4e, 0xfb, 0x00, 0x55, 0x85, + 0xed, 0x5e, 0x6b, 0xa0, 0x7a, 0x07, 0xad, 0x91, 0x32, 0xea, 0xb3, 0x6b, 0xcf, 0x4c, 0xe7, + 0x16, 0x36, 0xee, 0xcf, 0x62, 0x12, 0x68, 0x7c, 0x5d, 0xb8, 0xad, 0xbb, 0x8a, 0x87, 0x02, + 0x8e, 0xe7, 0xfc, 0x2e, 0xd4, 0x06, 0x0c, 0x4c, 0x0f, 0x31, 0x48, 0x75, 0xda, 0xd3, 0x22, + 0xfd, 0x20, 0x39, 0x48, 0xda, 0xfb, 0x1f, 0x36, 0x51, 0x04, 0x7b, 0x5c, 0x4c, 0xd1, 0xaa, + 0xe6, 0x0b, 0x0b, 0xa1, 0x01, 0xff, 0x5d, 0x59, 0x82, 0xa5, 0x82, 0x1a, 0x83, 0x0e, 0x32, + 0x0c, 0x04, 0xce, 0x93, 0xc9, 0xd2, 0xd4, 0x9b, 0x93, 0x8c, 0x7d, 0x6c, 0x7f, 0x72, 0xfd, + 0x14, 0x36, 0x89, 0x3f, 0x5f, 0x3e, 0xad, 0xa0, 0xfc, 0x66, 0x61, 0x23, 0x12, 0x46, 0xe0, + 0xf9, 0xe4, 0x63, 0xd8, 0x35, 0x54, 0x53, 0xe2, 0x83, 0x56, 0x93, 0x12, 0x37, 0xb3, 0xce, + 0xd8, 0x3d, 0xcf, 0x4e, 0x03, 0x24, 0xb6, 0xab, 0x16, 0x1a, 0xd6, 0x27, 0xa0, 0xd6, 0x82, + 0x26, 0x2b, 0xf6, 0xa1, 0x33, 0x75, 0x19, 0x01, 0xdc, 0x4a, 0x97, 0x6d, 0x1e, 0x32, 0xb0, + 0x3b, 0x5f, 0x9c, 0x04, 0xdd, 0xf1, 0x5e, 0x1f, 0x5b, 0xa9, 0x32, 0x1f, 0x16, 0x68, 0x03, + 0x26, 0x07, 0xb8, 0x52, 0xd6, 0x3d, 0x7b, 0xd6, 0x91, 0xa7, 0xfa, 0x24, 0x26, 0x48, 0x93, + 0xba, 0x3b, 0x13, 0x3a, 0x3c, 0xe8, 0x96, 0xe9, 0x22, 0x30, 0x51, 0x51, 0xba, 0xae, 0x48, + 0xdd, 0x0e, 0xa1, 0x32, 0x11, 0xcb, 0x5f, 0x8e, 0x45, 0x8e, 0xff, 0xf8, 0x0b, 0x9b, 0x02, + 0x98, 0x72, 0x7c, 0xa8, 0x45, 0x87, 0x4f, 0x77, 0xc3, 0xed, 0x2a, 0x2a, 0xe8, 0xb0, 0x3c, + 0x67, 0x7e, 0xcf, 0xb0, 0x64, 0x6e, 0xa3, 0x67, 0x25, 0xa3, 0xa7, 0x3f, 0xca, 0x9d, 0x59, + 0xd0, 0xb7, 0xc6, 0xfa, 0xde, 0xe6, 0x99, 0x49, 0x23, 0x0f, 0xf5, 0x6c, 0x34, 0x33, 0xa4, + 0x96, 0x94, 0xcd, 0xa2, 0x22, 0xf9, 0x89, 0x42, 0x20, 0xb3, 0xbf, 0x1a, 0xa5, 0x84, 0x14, + 0xb5, 0xd2, 0x6f, 0x0d, 0xa4, 0x17, 0x32, 0x95, 0x3e, 0x63, 0xeb, 0xb8, 0x19, 0xce, 0xe5, + 0x07, 0x50, 0x80, 0xae, 0xca, 0xb6, 0xa5, 0xbd, 0xa1, 0x02, 0xd6, 0x9a, 0x0a, 0xa6, 0x01, + 0x25, 0x08, 0x59, 0x2f, 0xda, 0x14, 0xb8, 0x80, 0x6e, 0xe3, 0xaf, 0x7f, 0x62, 0x2f, 0xcc, + 0x88, 0x27, 0x3a, 0x0e, 0xca, 0xf4, 0xfe, 0x3e, 0x01, 0x98, 0xc9, 0x80, 0x2d, 0x8b, 0x0a, + 0xa8, 0x90, 0x35, 0x0c, 0x13, 0x06, 0xb6, 0x31, 0xe8, 0x91, 0x8c, 0x80, 0x6c, 0x4d, 0xd9, + 0xcc, 0x5a, 0x8c, 0x3b, 0x27, 0xee, 0x37, 0xaa, 0xb2, 0x56, 0xbc, 0x5b, 0x98, 0x7b, 0x42, + 0xd6, 0xba, 0xf2, 0x7e, 0x0b, 0x20, 0xbf, 0xbf, 0xe7, 0xba, 0xa8, 0xc6, 0xf6, 0x0f, 0x21, + 0x62, 0x5c, 0x98, 0x53, 0x64, 0x62, 0x2b, 0xb9, 0x12, 0xb4, 0x91, 0x5b, 0xd9, 0x96, 0x02, + 0xd3, 0x8a, 0x0d, 0xee, 0x49, 0xb1, 0xd8, 0x59, 0x81, 0x92, 0x1f, 0x43, 0x4d, 0x44, 0x86, + 0x34, 0x95, 0x14, 0xd4, 0x01, 0x76, 0xdc, 0x55, 0x2d, 0x70, 0x2a, 0xc4, 0x16, 0x10, 0x7a, + 0x18, 0x48, 0x2e, 0x1f, 0x8c, 0x69, 0x93, 0x84, 0x65, 0xee, 0xde, 0x8f, 0x0e, 0x64, 0xb8, + 0xbc, 0xe3, 0xf8, 0x8e, 0x37, 0xfb, 0x8e, 0x6e, 0x3d, 0x0d, 0x2d, 0x8d, 0x36, 0xee, 0xc2, + 0x7a, 0xee, 0xd1, 0x93, 0x52, 0xfd, 0x8c, 0x22, 0x82, 0xe6, 0xe5, 0xa0, 0x92, 0xed, 0x85, + 0xa6, 0xdb, 0xaf, 0xeb, 0x69, 0x21, 0xca, 0x04, 0x21, 0xbe, 0xe3, 0x89, 0x1f, 0xfc, 0x5f, + 0xdd, 0x78, 0xc9, 0x70, 0x63, 0xf9, 0x5a, 0xc5, 0xe8, 0x72, 0x22, 0xef, 0x35, 0x1f, 0xe7, + 0xe7, 0x2b, 0xfd, 0xbc, 0xac, 0x1b, 0x3a, 0xb5, 0x48, 0xf4, 0x79, 0xeb, 0x81, 0xa2, 0x25, + 0x35, 0x2e, 0x2c, 0xba, 0x3b, 0x75, 0x63, 0xdc, 0xa9, 0x2c, 0x71, 0x56, 0x9b, 0x4c, 0x16, + 0x4a, 0x97, 0x19, 0xc7, 0x9e, 0x3a, 0x16, 0x5b, 0x31, 0xbc, 0xb6, 0xc8, 0x02, 0x94, 0x60, + 0x77, 0x2a, 0x3a, 0x44, 0x51, 0xb5, 0x6c, 0x69, 0xce, 0x27, 0x6c, 0x1c, 0x10, 0xcd, 0x38, + 0xdc, 0x43, 0xe5, 0xcb, 0xd5, 0xc1, 0xc7, 0x59, 0x03, 0x22, 0xa5, 0x6a, 0x16, 0x92, 0x7c, + 0x2b, 0xd5, 0x8b, 0x26, 0x27, 0xf7, 0x58, 0x59, 0x60, 0xba, 0x71, 0x82, 0x70, 0x38, 0x02, + 0x7e, 0x21, 0xa8, 0xdc, 0x94, 0xf8, 0x5b, 0x90, 0x13, 0xc2, 0x5f, 0xd4, 0xb7, 0x65, 0x2c, + 0x9a, 0xac, 0x56, 0xca, 0x1f, 0x17, 0x7b, 0x54, 0xd3, 0x45, 0xf2, 0xcf, 0x7e, 0x66, 0x5d, + 0xf6, 0xb0, 0xfe, 0xde, 0x0d, 0x80, 0xbf, 0xb1, 0x9c, 0x4d, 0x81, 0xd1, 0x9d, 0x53, 0x10, + 0x83, 0x16, 0x73, 0x2e, 0xaa, 0x0c, 0x3f, 0x1b, 0x07, 0xab, 0x98, 0x9d, 0x98, 0x0a, 0x0a, + 0xca, 0xaa, 0x45, 0x2d, 0x3f, 0xd3, 0x5c, 0x53, 0x9b, 0x49, 0x2b, 0x1d, 0x0a, 0x45, 0xaa, + 0x64, 0x08, 0xe1, 0xf0, 0xf9, 0xa2, 0x46, 0x9f, 0x8b, 0x11, 0x0e, 0x32, 0x5d, 0xd0, 0x17, + 0x44, 0x34, 0xbd, 0x14, 0x4b, 0x1d, 0x36, 0x17, 0x8c, 0xf4, 0xa2, 0x02, 0xa9, 0x2d, 0x2e, + 0x7a, 0xf0, 0xb0, 0xc3, 0x52, 0x0d, 0x41, 0xc9, 0xa7, 0xd5, 0x68, 0x17, 0xeb, 0x5c, 0x3e, + 0xfd, 0x5f, 0x76, 0xc8, 0x2b, 0xf4, 0x0c, 0x92, 0xcc, 0x51, 0x58, 0x0c, 0x90, 0xd6, 0x6e, + 0x38, 0x93, 0x10, 0xc1, 0x80, 0x09, 0x85, 0xea, 0xb1, 0xf2, 0x82, 0x27, 0xf8, 0x31, 0x4b, + 0x47, 0x81, 0x56, 0xad, 0x4e, 0xbe, 0x36, 0xed, 0xd7, 0x58, 0x37, 0xca, 0x34, 0xc3, 0x23, + 0xd7, 0xbf, 0x6c, 0xba, 0x3d, 0x2f, 0xc1, 0x39, 0xc3, 0x24, 0xd9, 0x59, 0x2d, 0xf4, 0x25, + 0x35, 0x2a, 0xb7, 0xf6, 0x89, 0xbd, 0x72, 0xac, 0xbc, 0x7a, 0x9c, 0x55, 0xd1, 0xf8, 0xef, + 0x5a, 0xe9, 0x9e, 0xe2, 0x50, 0xdd, 0x60, 0xe7, 0x1d, 0xc5, 0xc7, 0x3d, 0x48, 0x5c, 0x7e, + 0x75, 0x78, 0x37, 0x15, 0x20, 0xb0, 0xa1, 0x43, 0x19, 0x5e, 0x1d, 0x7b, 0x7c, 0xde, 0x82, + 0x66, 0x2d, 0x94, 0xe9, 0x32, 0xb7, 0xb5, 0xe2, 0x4f, 0x20, 0xb4, 0xc8, 0x1d, 0xa6, 0x0a, + 0xa5, 0xa6, 0x39, 0xae, 0x2f, 0x3f, 0x66, 0x83, 0xc2, 0x8d, 0xa2, 0x61, 0x72, 0x4f, 0xe1, + 0x9b, 0xe2, 0xf5, 0xea, 0x0f, 0x1b, 0x98, 0xa4, 0x97, 0xfd, 0xb2, 0x7d, 0x87, 0x10, 0xef, + 0x8e, 0xa2, 0x6d, 0x7e, 0x80, 0x28, 0x26, 0x3f, 0x21, 0xa3, 0xef, 0x4a, 0x53, 0xeb, 0x94, + 0x25, 0x76, 0xa6, 0xdf, 0x3f, 0xfd, 0xe2, 0x14, 0xe3, 0x5a, 0x63, 0x20, 0xe2, 0xbe, 0xe2, + 0xbe, 0x67, 0x77, 0x9b, 0x7a, 0x71, 0xef, 0x98, 0x25, 0x7b, 0xd8, 0x0f, 0x35, 0x52, 0xc3, + 0x15, 0x23, 0x73, 0x5a, 0x25, 0x69, 0x9b, 0x38, 0xc2, 0x27, 0x03, 0x82, 0xe3, 0x05, 0xcd, + 0x65, 0x9f, 0x49, 0x56, 0xb6, 0x48, 0x08, 0xa8, 0xbc, 0x50, 0x03, 0x67, 0xcc, 0x83, 0x97, + 0x16, 0x36, 0xb6, 0x8d, 0xe9, 0xed, 0xbd, 0xd5, 0x85, 0xdf, 0x27, 0xa9, 0xaa, 0x3a, 0x45, + 0x7a, 0x05, 0x7a, 0x8d, 0xfb, 0x68, 0xf9, 0xf6, 0xdf, 0xda, 0xd3, 0xaf, 0x2f, 0x52, 0x52, + 0x3c, 0xbb, 0x9b, 0xc9, 0xd7, 0xb7, 0xde, 0xc6, 0x6a, 0xc1, 0xaa, 0x40, 0x16, 0xac, 0x8b, + 0xda, 0xee, 0x78, 0x81, 0xcc, 0x04, 0xfe, 0x2e, 0x15, 0x4e, 0xf4, 0x1a, 0xd0, 0x55, 0x31, + 0xb1, 0xb6, 0x78, 0x86, 0x41, 0x65, 0x51, 0x37, 0x86, 0x97, 0x37, 0x35, 0xf1, 0xed, 0x41, + 0xd0, 0xac, 0x18, 0xfe, 0xad, 0xd7, 0x6b, 0xf3, 0xbd, 0x3a, 0x1c, 0x99, 0xd9, 0xf9, 0x1d, + 0x9f, 0x1a, 0x8f, 0x50, 0xdd, 0x0d, 0x27, 0x0f, 0x25, 0x05, 0x46, 0x52, 0x68, 0xd1, 0xfc, + 0x6f, 0x65, 0xf1, 0x91, 0xe4, 0x25, 0x01, 0x01, 0x8d, 0xb4, 0x19, 0x58, 0xbf, 0xa6, 0xb2, + 0xff, 0x4c, 0x41, 0x31, 0xe1, 0xf6, 0x65, 0xe6, 0x3a, 0x24, 0x41, 0x6a, 0xb4, 0xc2, 0x9b, + 0x92, 0x52, 0x7d, 0x2e, 0x50, 0x1a, 0x80, 0x57, 0x2c, 0x5d, 0xa3, 0xb0, 0x39, 0x58, 0x86, + 0xf2, 0xe4, 0x4e, 0xd1, 0xed, 0x35, 0x00, 0xb2, 0x62, 0x06, 0x3d, 0x1a, 0x92, 0x39, 0x72, + 0x74, 0xd9, 0xba, 0x7d, 0xff, 0xa4, 0x36, 0xd8, 0x00, 0x88, 0x84, 0xd0, 0x5a, 0xdc, 0x35, + 0x6c, 0x8d, 0xd7, 0xe0, 0xa0, 0x08, 0x5e, 0x33, 0xf9, 0xfc, 0xd5, 0x4a, 0xef, 0x14, 0xda, + 0x7c, 0xaf, 0xb2, 0x94, 0xd6, 0x9f, 0x0f, 0x0b, 0x16, 0x0b, 0x7e, 0xd4, 0x33, 0xee, 0x1e, + 0xc0, 0xea, 0x28, 0x73, 0x0e, 0xa2, 0xfb, 0x38, 0x6b, 0x0f, 0xbb, 0x4e, 0xac, 0x5d, 0xc9, + 0x89, 0xa1, 0xf0, 0x11, 0xee, 0x46, 0x5f, 0x39, 0xa6, 0xed, 0xf3, 0xd0, 0x06, 0x2c, 0xd3, + 0xb7, 0x45, 0x61, 0xfd, 0xb0, 0x01, 0xa0, 0x36, 0x50, 0xda, 0x57, 0x18, 0xb9, 0xc7, 0x9f, + 0xe9, 0x38, 0xbf, 0x5f, 0x3e, 0xe9, 0xbe, 0x39, 0xc4, 0x99, 0xa1, 0xb9, 0x07, 0x75, 0x84, + 0x52, 0x78, 0x55, 0xdf, 0x47, 0xb7, 0x55, 0xbf, 0x67, 0x02, 0xbf, 0x80, 0x9e, 0x0f, 0xc7, + 0x72, 0x58, 0xc8, 0x6a, 0x78, 0xa3, 0x08, 0x1f, 0x67, 0x4e, 0x16, 0xb0, 0x00, 0xbd, 0xdc, + 0xab, 0xfc, 0xc7, 0xb7, 0xb6, 0xc8, 0x53, 0xc6, 0xc7, 0x9f, 0x3e, 0x81, 0x5b, 0xfb, 0x01, + 0x0e, 0xeb, 0x89, 0xe6, 0x7b, 0xb7, 0xa5, 0x15, 0xb5, 0xbc, 0xb0, 0xc6, 0xe7, 0x94, 0xd4, + 0x8b, 0xa5, 0x19, 0xd3, 0xbb, 0x2b, 0xb0, 0x10, 0xed, 0xab, 0x40, 0xc4, 0xe2, 0x63, 0x49, + 0x31, 0x04, 0x01, 0x7b, 0x08, 0x72, 0x3d, 0x71, 0xe6, 0xc6, 0xed, 0xe1, 0x0d, 0xbc, 0xf5, + 0x44, 0xd5, 0x23, 0xb2, 0x00, 0xce, 0x7a, 0x93, 0xf5, 0x60, 0xcf, 0xa0, 0x86, 0x3e, 0x64, + 0x6b, 0x11, 0xd9, 0xea, 0x1b, 0x16, 0x94, 0xb4, 0x16, 0x27, 0xa9, 0xcc, 0x03, 0x0b, 0xa8, + 0x35, 0x78, 0xf1, 0x4c, 0x9d, 0xfd, 0x93, 0x53, 0x9c, 0xd3, 0xeb, 0x78, 0xef, 0x31, 0xa1, + 0x98, 0x76, 0x45, 0x4c, 0x97, 0xba, 0x00, 0xb6, 0x44, 0xd9, 0x43, 0x13, 0x8a, 0x88, 0x62, + 0x3a, 0x67, 0x88, 0xf2, 0xb8, 0x37, 0xea, 0x58, 0xe3, 0xa5, 0x7a, 0x23, 0x67, 0x82, 0xd1, + 0xb1, 0x54, 0xa7, 0x55, 0x79, 0x2b, 0xe8, 0x1b, 0x08, 0x5c, 0xd2, 0xa8, 0x2a, 0x7b, 0x60, + 0x04, 0xe5, 0x4c, 0xd8, 0x06, 0x59, 0x36, 0xe8, 0x04, 0xd2, 0x22, 0xce, 0x01, 0x13, 0xb0, + 0xe4, 0x1d, 0xe2, 0xf5, 0xba, 0xec, 0x95, 0x54, 0xd0, 0xc4, 0x30, 0xcd, 0x31, 0x8f, 0x62, + 0x4b, 0x67, 0xb9, 0x07, 0x38, 0x18, 0x6c, 0xd7, 0xfe, 0x47, 0x0f, 0x0f, 0x20, 0x5d, 0xc9, + 0xfb, 0xca, 0xfa, 0xc3, 0x0d, 0x05, 0x55, 0x87, 0xc2, 0x53, 0x43, 0x4c, 0x20, 0x28, 0xa0, + 0xbb, 0x00, 0xc6, 0x87, 0x47, 0x10, 0xb5, 0x33, 0xe7, 0xba, 0x24, 0x1b, 0x1e, 0x68, 0xd9, + 0x22, 0xb9, 0x39, 0x2f, 0xf6, 0xcc, 0x4a, 0x6d, 0xbf, 0x2a, 0x57, 0x8c, 0x51, 0x2e, 0x33, + 0x6c, 0x63, 0x10, 0x06, 0xdd, 0x29, 0x34, 0x5a, 0x98, 0xfe, 0x1a, 0x9b, 0x00, 0x0a, 0x37, + 0x8b, 0x08, 0x77, 0xf3, 0x74, 0xd1, 0x52, 0x66, 0xd1, 0xe9, 0x3e, 0xaa, 0xba, 0x06, 0x71, + 0x0f, 0x10, 0xca, 0xe2, 0x1c, 0x4b, 0x53, 0xda, 0xeb, 0xaa, 0x56, 0xa7, 0x06, 0x0a, 0xdf, + 0xc7, 0xf4, 0x61, 0xbe, 0xe7, 0x48, 0xe2, 0x47, 0xac, 0xe0, 0x1d, 0xbe, 0x84, 0x55, 0xeb, + 0x7f, 0xc4, 0x0d, 0x08, 0x7e, 0xf7, 0x16, 0xee, 0xb1, 0x6e, 0x49, 0xfa, 0xa6, 0xbd, 0x8f, + 0x8e, 0x76, 0x6e, 0x16, 0x02, 0x8b, 0x92, 0xc1, 0x4c, 0x31, 0x01, 0xbf, 0x5b, 0x85, 0x14, + 0x3e, 0xff, 0x26, 0x2f, 0xa3, 0x00, 0x1b, 0xad, 0x28, 0xea, 0x1d, 0xd3, 0xd5, 0x86, 0x16, + 0x0a, 0x7c, 0x01, 0x11, 0xf4, 0x47, 0x85, 0x24, 0x4b, 0x0e, 0x5e, 0x95, 0xf3, 0x0b, 0x30, + 0x1b, 0x5f, 0x02, 0xef, 0xe6, 0x54, 0xf3, 0x34, 0xd7, 0xb2, 0x13, 0x18, 0xd0, 0x03, 0x21, + 0xee, 0x9f, 0x3a, 0xd7, 0xa0, 0x39, 0x66, 0xc8, 0x6f, 0x2a, 0x8b, 0x1a, 0x96, 0x74, 0x9a, + 0xbb, 0xc7, 0x8e, 0x64, 0x45, 0xa7, 0x18, 0xf9, 0x64, 0x0a, 0x78, 0x7d, 0xa3, 0x68, 0x03, + 0x29, 0xf1, 0x2e, 0xbd, 0x22, 0xca, 0xba, 0x50, 0x7f, 0xf8, 0x2f, 0x04, 0xf1, 0x27, 0xd4, + 0x03, 0xee, 0x84, 0xed, 0x7c, 0x67, 0x36, 0x1d, 0x14, 0x00, 0x4e, 0x3b, 0x91, 0x94, 0x0f, + 0xee, 0x7c, 0x65, 0x18, 0xd3, 0x67, 0xe1, 0x58, 0x86, 0xd3, 0x61, 0xb3, 0xf8, 0x79, 0x81, + 0xc5, 0xc6, 0xd7, 0x8b, 0xa2, 0x98, 0x76, 0xca, 0x59, 0xee, 0xaa, 0x0c, 0xeb, 0x2a, 0xab, + 0x6f, 0xec, 0xde, 0x7c, 0xca, 0x01, 0x3c, 0x6d, 0xe2, 0x93, 0x21, 0x13, 0x28, 0x27, 0x94, + 0x6b, 0xa5, 0xc3, 0x66, 0xfe, 0x70, 0x73, 0x6e, 0xbd, 0x8e, 0xb1, 0x5e, 0x60, 0x07, 0x3c, + 0x3c, 0x74, 0xb2, 0x99, 0x3c, 0x50, 0xfb, 0x01, 0xc9, 0x1e, 0x98, 0x6d, 0xa3, 0xc7, 0x7f, + 0x72, 0x23, 0xb2, 0x40, 0x74, 0x0b, 0x7d, 0x29, 0x50, 0xe7, 0x7d, 0x9c, 0xeb, 0xb9, 0xdc, + 0xd7, 0x61, 0x2a, 0x6e, 0x0a, 0x5b, 0x09, 0xee, 0xc7, 0xc9, 0xa4, 0xd6, 0x99, 0x13, 0x1f, + 0x2e, 0x3f, 0x09, 0xec, 0x54, 0xb9, 0xfc, 0x54, 0xac, 0x2b, 0xa0, 0xf3, 0x9c, 0x5f, 0x28, + 0x2b, 0xd4, 0xad, 0xc2, 0x14, 0x58, 0xeb, 0x5f, 0xbb, 0x59, 0xa7, 0xcb, 0x71, 0xb6, 0xb2, + 0x2b, 0x83, 0xcf, 0x71, 0x95, 0xa3, 0x04, 0xda, 0xb1, 0xcc, 0x44, 0x8b, 0x13, 0x70, 0x29, + 0x99, 0xee, 0x16, 0x95, 0x5a, 0x08, 0x04, 0xf3, 0x06, 0x6b, 0x71, 0x3a, 0xff, 0x00, 0xf1, + 0x54, 0xa1, 0x7e, 0x36, 0xe0, 0x78, 0x9b, 0x38, 0xfc, 0xb1, 0xc5, 0x5a, 0x06, 0xc6, 0x1f, + 0x99, 0xd4, 0x14, 0xae, 0x49, 0x05, 0x0e, 0x74, 0x3d, 0x29, 0x0e, 0x27, 0x59, 0x1f, 0x34, + 0x2f, 0x9e, 0x67, 0xdc, 0x38, 0xce, 0xb7, 0xa2, 0x3c, 0x5e, 0x6c, 0x15, 0x1b, 0x62, 0x73, + 0x82, 0x4c, 0x2c, 0xce, 0x9b, 0xfe, 0x1b, 0xc2, 0x08, 0x56, 0x37, 0xff, 0x08, 0xc9, 0x26, + 0x76, 0x2d, 0xc6, 0x25, 0xe9, 0xcf, 0xd6, 0x30, 0xe5, 0xfb, 0xdb, 0xf6, 0x94, 0xdd, 0xfb, + 0x9e, 0x8d, 0x36, 0xdf, 0xd4, 0x31, 0xb7, 0x47, 0xe9, 0xa4, 0xaf, 0x0d, 0x13, 0x65, 0xaa, + 0x1b, 0x7d, 0x0b, 0x6b, 0x99, 0x93, 0x74, 0xb2, 0x0c, 0xb5, 0x12, 0xd0, 0xfb, 0xa9, 0x44, + 0xa2, 0x30, 0x75, 0xfd, 0xe9, 0x44, 0xbc, 0xb1, 0x44, 0x88, 0x87, 0xbc, 0x6b, 0xa6, 0x0e, + 0xd3, 0xbd, 0x1e, 0xf7, 0x5e, 0x56, 0x95, 0x87, 0xff, 0x41, 0xd7, 0xfa, 0x8d, 0x61, 0x3e, + 0x44, 0x3a, 0x11, 0x7e, 0xe7, 0x73, 0xee, 0xb2, 0x67, 0x3f, 0x92, 0xd5, 0xd7, 0x35, 0x67, + 0x1c, 0x0e, 0x34, 0xc2, 0xbd, 0x1b, 0xa3, 0x7d, 0x99, 0x11, 0x26, 0x12, 0x12, 0x90, 0x03, + 0x43, 0xf0, 0x93, 0x8e, 0x95, 0x27, 0x52, 0x54, 0x5d, 0x17, 0x36, 0xec, 0x81, 0x3c, 0x78, + 0x53, 0x54, 0x20, 0x0d, 0x26, 0x8c, 0xba, 0xc3, 0x5f, 0x36, 0xe1, 0xe0, 0xce, 0x17, 0x9e, + 0x33, 0xa5, 0x5c, 0xd5, 0xe3, 0x45, 0xea, 0x0a, 0x64, 0xae, 0x88, 0x54, 0x8d, 0xfa, 0x8b, + 0x9e, 0x7c, 0xbc, 0x27, 0xbe, 0x02, 0x2e, 0x06, 0x7e, 0xdc, 0x6a, 0xd8, 0xea, 0x2e, 0xc8, + 0x8c, 0x83, 0x05, 0x02, 0x41, 0x41, 0x10, 0x9a, 0x90, 0xb0, 0xc7, 0x46, 0xbc, 0x98, 0xdd, + 0xda, 0x09, 0x57, 0x0b, 0xa0, 0xeb, 0xd4, 0x0b, 0x0a, 0x60, 0xa3, 0x3b, 0x6d, 0xa4, 0xa1, + 0xbd, 0xda, 0xa4, 0x06, 0xe1, 0x42, 0x1a, 0x91, 0xc1, 0xab, 0xf1, 0x9a, 0xc8, 0xe5, 0x7e, + 0x0c, 0xd0, 0x34, 0x0a, 0x04, 0x7d, 0x67, 0x25, 0xcb, 0x35, 0xa5, 0x61, 0x57, 0x68, 0x15, + 0xc1, 0x31, 0x22, 0x21, 0x91, 0xf6, 0xc6, 0x43, 0xea, 0x3f, 0x51, 0xa3, 0x28, 0xa3, 0xc1, + 0x23, 0x37, 0xd9, 0xa2, 0xaa, 0x8e, 0xf5, 0x79, 0x11, 0x87, 0x4a, 0x24, 0x57, 0x92, 0x93, + 0xd6, 0xc1, 0x8d, 0x17, 0x7f, 0x7c, 0x64, 0xc7, 0xd7, 0xb2, 0xec, 0x65, 0x69, 0x0f, 0xfa, + 0x91, 0xec, 0x9a, 0x09, 0x95, 0x28, 0xc1, 0x36, 0xff, 0x25, 0xb7, 0x29, 0x1a, 0x01, 0xdb, + 0x46, 0x2c, 0x93, 0x79, 0x97, 0xdd, 0x11, 0x5e, 0x27, 0xab, 0x4b, 0x5f, 0x23, 0x37, 0xbc, + 0xc0, 0x85, 0xde, 0x53, 0x56, 0x7e, 0x39, 0x0c, 0xea, 0x2e, 0xd9, 0xba, 0x8e, 0xf0, 0x1a, + 0x15, 0xfa, 0x08, 0xe7, 0xef, 0x24, 0x9d, 0xec, 0x09, 0x2d, 0x98, 0x4e, 0xe6, 0x8d, 0x6f, + 0x03, 0xa1, 0x7e, 0xf3, 0xcb, 0x78, 0x9f, 0xdb, 0x8b, 0xb2, 0x73, 0x93, 0x2c, 0xdd, 0x62, + 0xec, 0x93, 0x18, 0x7e, 0xda, 0x3e, 0xba, 0x1e, 0x9d, 0x33, 0xb3, 0x71, 0xb9, 0x5f, 0xef, + 0xbb, 0x6d, 0x49, 0x45, 0x17, 0xca, 0xc0, 0x8e, 0x63, 0x4b, 0x29, 0xf1, 0xbb, 0x77, 0x81, + 0x21, 0x49, 0x60, 0xf3, 0x06, 0x39, 0x0f, 0x03, 0x81, 0x85, 0x22, 0xb5, 0xae, 0xcc, 0xf8, + 0x29, 0x06, 0x54, 0x30, 0x18, 0x65, 0xe6, 0x9d, 0x4c, 0xf6, 0x55, 0x9b, 0x55, 0x40, 0x75, + 0xed, 0x34, 0x18, 0x99, 0xf4, 0xc9, 0x0b, 0xe5, 0xe2, 0xcf, 0xca, 0x01, 0xc7, 0xfb, 0x8d, + 0x56, 0xf9, 0xe6, 0xc4, 0xbf, 0x57, 0xf2, 0x15, 0xa0, 0x4f, 0x35, 0x15, 0x27, 0xd3, 0xee, + 0xe8, 0x8e, 0x9d, 0x12, 0xe0, 0x72, 0x4a, 0x82, 0x23, 0x0b, 0x0d, 0x95, 0x50, 0x59, 0x07, + 0x20, 0xaf, 0x54, 0xab, 0xb4, 0xe0, 0x11, 0x1b, 0xdb, 0xd3, 0x35, 0x4c, 0x0c, 0x52, 0x6e, + 0xf8, 0xef, 0xc3, 0x86, 0x47, 0x4d, 0x8f, 0x98, 0x53, 0xbe, 0x05, 0x37, 0x90, 0xfa, 0x4b, + 0xea, 0x6b, 0x1d, 0x4d, 0xd8, 0x04, 0xe7, 0xe1, 0x3d, 0x93, 0xe0, 0x4e, 0x77, 0x2c, 0x11, + 0x28, 0x84, 0xcb, 0xf2, 0xcc, 0x73, 0xb6, 0xa5, 0x34, 0x97, 0x32, 0xad, 0x1f, 0x8e, 0x3f, + 0x44, 0x02, 0x54, 0x96, 0x70, 0xd0, 0x69, 0x12, 0xe0, 0xf9, 0xf4, 0xf0, 0x26, 0x68, 0x70, + 0x4a, 0xda, 0x12, 0xcf, 0x3b, 0xec, 0x95, 0x73, 0x18, 0xaf, 0xd5, 0x1c, 0x47, 0x15, 0x22, + 0x26, 0x87, 0xc8, 0x8f, 0xe7, 0x37, 0xa8, 0x2c, 0x67, 0xd4, 0xd4, 0x8e, 0xf2, 0xf2, 0xf1, + 0xbe, 0xbf, 0xcc, 0x17, 0xa2, 0xab, 0x70, 0x79, 0x57, 0x36, 0x76, 0x9e, 0xb0, 0x4c, 0xb1, + 0x6d, 0x1f, 0x6e, 0xba, 0xc8, 0x5c, 0x57, 0xe1, 0xf2, 0xaa, 0x91, 0x34, 0x6b, 0xe5, 0x3a, + 0xaf, 0x3d, 0x2c, 0x34, 0xf5, 0x90, 0xde, 0xa5, 0xb2, 0xe0, 0x67, 0x74, 0x8d, 0xc5, 0x31, + 0x73, 0x52, 0x4c, 0x10, 0x4b, 0x6e, 0x30, 0x71, 0xa1, 0x65, 0x91, 0xd3, 0x2f, 0x07, 0xc5, + 0x98, 0xc9, 0x91, 0xbc, 0x00, 0xf4, 0x4e, 0xc9, 0x3d, 0xcb, 0x3f, 0xd5, 0x9b, 0x2c, 0x72, + 0x24, 0xcd, 0x38, 0x7e, 0x43, 0x2c, 0x2d, 0x1b, 0x1e, 0xda, 0x23, 0x4a, 0x05, 0xe0, 0x1b, + 0x9c, 0x42, 0xc8, 0x42, 0x54, 0xff, 0x43, 0x89, 0xb4, 0x05, 0xf8, 0x2c, 0x65, 0x5c, 0x69, + 0x32, 0x15, 0xbc, 0xca, 0xbe, 0xf4, 0x6a, 0x1f, 0xdb, 0xfd, 0x85, 0x70, 0x9b, 0x4e, 0x98, + 0xb5, 0x61, 0xa5, 0xde, 0xe7, 0x17, 0x0d, 0xa6, 0xe3, 0x45, 0x93, 0x2b, 0xdb, 0x26, 0x89, + 0xe5, 0x7f, 0x9f, 0x9b, 0x92, 0x5a, 0x59, 0x0a, 0x0a, 0x1c, 0xe7, 0x42, 0x15, 0x9c, 0x14, + 0xa9, 0xf5, 0xa4, 0xc2, 0x0b, 0x63, 0x40, 0xe6, 0x19, 0x75, 0x87, 0xdd, 0xbe, 0xdf, 0xfd, + 0xac, 0xd3, 0x75, 0x61, 0x03, 0x44, 0x0d, 0x3a, 0xc6, 0xc8, 0x2c, 0x28, 0x7c, 0xef, 0xb3, + 0x4b, 0xe3, 0xe4, 0xbe, 0xdc, 0x29, 0xb7, 0x34, 0xe1, 0x6d, 0xfa, 0xb1, 0x2a, 0xe0, 0xd9, + 0x6e, 0xbd, 0x22, 0x9a, 0x49, 0x5b, 0x47, 0x95, 0x5f, 0x80, 0xfd, 0xe1, 0x27, 0x3a, 0x7a, + 0x70, 0xfd, 0x57, 0xde, 0xff, 0x19, 0x58, 0xbc, 0xe7, 0xc2, 0x5c, 0x59, 0xb0, 0x49, 0x41, + 0x3f, 0x1c, 0xd0, 0x77, 0xcb, 0x6c, 0xfc, 0x0e, 0xff, 0xb8, 0x74, 0x48, 0x41, 0xcc, 0xc1, + 0x3b, 0x2f, 0x89, 0x77, 0xcd, 0x60, 0x29, 0x01, 0xf1, 0x0a, 0x35, 0xb2, 0xb0, 0xeb, 0x5c, + 0xea, 0xa2, 0x4c, 0xa6, 0x8c, 0x09, 0xeb, 0xa3, 0xe7, 0xfc, 0xec, 0x5c, 0x4a, 0x36, 0x4b, + 0xdc, 0x85, 0x18, 0x5a, 0xbf, 0x47, 0xdf, 0x15, 0x66, 0x6a, 0x44, 0x5f, 0xa7, 0xbf, 0x74, + 0x33, 0xd5, 0xfa, 0xa2, 0xff, 0xc2, 0x8e, 0x5f, 0x99, 0x5d, 0x9f, 0xb8, 0x2a, 0x16, 0x11, + 0x57, 0x12, 0x78, 0x1c, 0x07, 0x33, 0xd1, 0xb2, 0xad, 0x9c, 0x77, 0x05, 0xeb, 0x3e, 0xc2, + 0xbb, 0x76, 0xd4, 0x06, 0x02, 0x4a, 0x29, 0x72, 0x98, 0x85, 0x8e, 0xe5, 0x98, 0x12, 0xe5, + 0xf6, 0x69, 0x7f, 0xa5, 0x0d, 0x97, 0x36, 0x1a, 0x87, 0xf8, 0xda, 0x61, 0x24, 0xa2, 0xb6, + 0xe0, 0xf0, 0x46, 0x70, 0x72, 0x5c, 0x2d, 0xc2, 0x0b, 0xc5, 0xa4, 0x53, 0xf4, 0x6c, 0x0d, + 0x15, 0xba, 0x50, 0x64, 0xfe, 0x07, 0x5c, 0x3b, 0x3d, 0xe4, 0xad, 0x09, 0xfe, 0x21, 0x33, + 0x07, 0xac, 0xf9, 0x59, 0xbc, 0x2d, 0x13, 0x98, 0xed, 0x94, 0x63, 0x18, 0xeb, 0xf0, 0x55, + 0xa5, 0xab, 0xcd, 0x45, 0x7d, 0xdc, 0x2c, 0x72, 0xc8, 0xe7, 0x37, 0x46, 0x8b, 0x73, 0xb9, + 0xd9, 0x37, 0x39, 0xec, 0x24, 0x51, 0xa7, 0xeb, 0xf1, 0xaf, 0xe6, 0xce, 0x00, 0xb9, 0x50, + 0xce, 0xc1, 0xa7, 0xde, 0xd6, 0x3d, 0x8a, 0x30, 0xb3, 0xbc, 0x42, 0xea, 0x35, 0x4f, 0xfc, + 0xf4, 0x27, 0x2e, 0x1c, 0xc0, 0xe4, 0x35, 0x74, 0x72, 0x4a, 0xdd, 0xec, 0xc7, 0xb2, 0x77, + 0x5a, 0x46, 0xeb, 0x99, 0xff, 0x91, 0xb5, 0xe4, 0xf9, 0xff, 0x5a, 0xea, 0x40, 0x98, 0x25, + 0x72, 0x1e, 0x2a, 0x7c, 0x6b, 0xd7, 0xe8, 0x22, 0xea, 0x54, 0xec, 0xb4, 0x00, 0x5f, 0x72, + 0xe1, 0xf5, 0xea, 0x29, 0xf2, 0x32, 0x90, 0x35, 0xb1, 0xac, 0x81, 0x49, 0x70, 0xfa, 0xad, + 0xde, 0x39, 0x9b, 0xbe, 0x60, 0x7d, 0x2c, 0x8d, 0xa4, 0x72, 0xfb, 0xc9, 0xf4, 0x2e, 0x91, + 0x6a, 0x0a, 0x26, 0xb7, 0x9d, 0x9e, 0xa8, 0x58, 0xa8, 0x62, 0xfe, 0x65, 0xea, 0x96, 0x9f, + 0x39, 0xf6, 0x62, 0x27, 0xba, 0x64, 0xa6, 0x30, 0x7f, 0x78, 0x66, 0x81, 0xe6, 0x97, 0x2b, + 0x6a, 0x7f, 0xa9, 0xe3, 0x25, 0x6c, 0x0c, 0x08, 0x12, 0x3b, 0xd7, 0xb8, 0xc8, 0xce, 0xd7, + 0x94, 0x72, 0x97, 0x5c, 0x7e, 0x3c, 0x7d, 0x98, 0xfe, 0x44, 0x39, 0xa3, 0x4c, 0xa2, 0xf9, + 0x3c, 0xa8, 0x5e, 0xff, 0xc7, 0xd0, 0xa6, 0x64, 0x4c, 0x0e, 0x39, 0xa5, 0x43, 0xb6, 0xcf, + 0xe8, 0x71, 0x26, 0x56, 0x92, 0xb2, 0x27, 0x2a, 0xc1, 0x19, 0x4d, 0x9f, 0xdc, 0x80, 0xce, + 0x54, 0x1c, 0x44, 0xdc, 0x57, 0xde, 0x6c, 0xb4, 0xcc, 0x5a, 0xfd, 0x37, 0x97, 0x2a, 0x26, + 0x13, 0x91, 0xe8, 0x68, 0x65, 0x2b, 0x5f, 0xfb, 0xf5, 0x2f, 0x99, 0xef, 0xa3, 0x60, 0x7b, + 0xfe, 0xa9, 0x5e, 0x6e, 0xde, 0x91, 0x4c, 0x54, 0x58, 0x6b, 0xf7, 0x7f, 0x99, 0xb4, 0x19, + 0xb7, 0x78, 0x2f, 0xb1, 0xdd, 0x1e, 0xef, 0x16, 0x4a, 0xc6, 0x99, 0x39, 0x5b, 0x0f, 0xee, + 0xf0, 0x0d, 0x92, 0xef, 0x21, 0x3f, 0x3d, 0xcf, 0x9c, 0x38, 0xb6, 0xf7, 0xdc, 0x09, 0xf8, + 0x0a, 0x3d, 0x73, 0x11, 0x92, 0x2c, 0xc0, 0xfc, 0x04, 0x32, 0x60, 0x5a, 0xbf, 0x15, 0xf0, + 0xaa, 0x14, 0x5f, 0xca, 0xe7, 0xc7, 0xde, 0x27, 0x2b, 0x39, 0x5d, 0x3a, 0x68, 0x3b, 0x3d, + 0x62, 0xa3, 0x38, 0x55, 0x08, 0xcb, 0x23, 0x26, 0xee, 0x61, 0xe0, 0x17, 0xb5, 0x3b, 0xfe, + 0x01, 0xf9, 0x77, 0xcc, 0xf5, 0xfc, 0xe4, 0x11, 0x3e, 0xe3, 0x9b, 0x4d, 0x80, 0x6b, 0xba, + 0x3e, 0xec, 0xb9, 0x9c, 0xd8, 0x5b, 0xa6, 0x38, 0xfc, 0x5c, 0x42, 0x07, 0xa4, 0xc8, 0x1a, + 0xd9, 0x75, 0x1e, 0xc0, 0x19, 0x6e, 0xee, 0x6b, 0xbd, 0x2e, 0xdc, 0xef, 0xa1, 0xb7, 0x31, + 0x0a, 0xdb, 0x60, 0x2c, 0x30, 0xd0, 0x98, 0x50, 0x44, 0xba, 0xe5, 0x8d, 0x36, 0xa7, 0xfb, + 0x9d, 0xa6, 0x73, 0x97, 0x2a, 0x3f, 0xde, 0x78, 0x1a, 0xf2, 0xdd, 0x67, 0x2f, 0xd2, 0x21, + 0x23, 0x4d, 0x1d, 0x01, 0x15, 0x9b, 0xc1, 0xb4, 0xfb, 0x3e, 0x7d, 0x98, 0x05, 0x11, 0x16, + 0xc3, 0xe1, 0x08, 0xfd, 0x84, 0xbf, 0x0d, 0xbd, 0x83, 0x61, 0x91, 0xbf, 0x91, 0x77, 0x39, + 0xe4, 0x5a, 0xed, 0x7d, 0x15, 0x0d, 0xd2, 0x67, 0xa8, 0x7f, 0xd0, 0x80, 0xf4, 0x11, 0xeb, + 0xdb, 0x25, 0x2c, 0xfd, 0xfa, 0xb6, 0x76, 0xf9, 0x3e, 0x5f, 0x44, 0xb8, 0xb5, 0x7a, 0xa9, + 0x71, 0x65, 0x01, 0xda, 0xa0, 0x48, 0xd6, 0x5c, 0x47, 0x58, 0x64, 0xf0, 0xa4, 0xf4, 0x25, + 0x8a, 0x87, 0x18, 0xe1, 0xd3, 0x17, 0xea, 0x3e, 0xd2, 0x4f, 0x02, 0xe1, 0x73, 0xb5, 0x3e, + 0x67, 0xd1, 0x15, 0x41, 0x7a, 0x41, 0x91, 0x3c, 0xf6, 0x84, 0x38, 0x09, 0xee, 0x6e, 0x8e, + 0x6f, 0x2f, 0x36, 0xdf, 0x6f, 0xc8, 0xd7, 0xa1, 0x11, 0xce, 0x1e, 0xa0, 0x16, 0x15, 0xb0, + 0xb6, 0xec, 0x7d, 0x91, 0x85, 0xe8, 0x72, 0x14, 0x58, 0x12, 0x36, 0x94, 0xa0, 0x06, 0x7a, + 0xd6, 0x2e, 0x54, 0x51, 0xfe, 0x5c, 0x78, 0xf3, 0x34, 0x48, 0xef, 0x63, 0xc7, 0x54, 0x28, + 0xc4, 0x54, 0x44, 0x5e, 0xcd, 0x32, 0x64, 0xff, 0xfa, 0xab, 0x59, 0x4d, 0x45, 0x71, 0x62, + 0x49, 0x5f, 0xb8, 0xd7, 0x72, 0x2b, 0x88, 0x49, 0xed, 0x3a, 0x2a, 0x28, 0x33, 0x1c, 0x9e, + 0x2d, 0x3c, 0x25, 0x3b, 0x4c, 0xeb, 0xad, 0x33, 0x29, 0xa5, 0x92, 0xac, 0x75, 0x67, 0x6f, + 0x06, 0xeb, 0x5a, 0xa2, 0x70, 0x49, 0x68, 0xe9, 0x25, 0xdd, 0xc9, 0x36, 0xab, 0xf8, 0x1c, + 0xf5, 0x45, 0x65, 0x02, 0x27, 0x19, 0x15, 0xa7, 0x78, 0x4d, 0x6e, 0xec, 0x4d, 0x72, 0x08, + 0x93, 0x16, 0x68, 0x9e, 0xf3, 0x61, 0x59, 0xc4, 0xda, 0xb9, 0xb6, 0xef, 0x7e, 0x7d, 0x82, + 0xa3, 0x2f, 0xe6, 0xd0, 0xe7, 0x08, 0x69, 0xd0, 0xe6, 0x01, 0x7d, 0x26, 0x04, 0x1c, 0xfb, + 0xb2, 0x3f, 0x08, 0xc7, 0xe6, 0x32, 0x2b, 0x27, 0x9c, 0x82, 0x81, 0x7d, 0xca, 0x03, 0xa9, + 0xfb, 0xf0, 0x0e, 0xf3, 0xc7, 0x98, 0x4c, 0x39, 0x9b, 0xa3, 0x53, 0x6d, 0x45, 0x1b, 0x87, + 0xdc, 0x11, 0x43, 0x7d, 0xd7, 0xca, 0x9f, 0x3c, 0xad, 0xbc, 0xcd, 0xec, 0x63, 0xb7, 0x52, + 0xfc, 0x8d, 0xe3, 0x5b, 0x7d, 0x62, 0x87, 0x4a, 0x6f, 0x18, 0xb4, 0x62, 0xbd, 0xa2, 0xdc, + 0xfe, 0x7e, 0x6f, 0x67, 0x0a, 0x88, 0xcb, 0x5b, 0xf4, 0x3c, 0x0a, 0x82, 0x08, 0x0d, 0xc3, + 0xab, 0x5b, 0x07, 0x1f, 0x3d, 0x61, 0xec, 0xbb, 0xbd, 0x2c, 0x7a, 0x23, 0x14, 0xa3, 0xde, + 0x85, 0x57, 0x39, 0xb7, 0x8d, 0xb9, 0x7e, 0x84, 0x49, 0x35, 0x9c, 0x16, 0x26, 0x20, 0x4b, + 0xf4, 0x5d, 0x04, 0x82, 0xd2, 0xa7, 0x91, 0xd4, 0x67, 0xbf, 0x23, 0x78, 0x83, 0x3e, 0x3e, + 0xf1, 0x3e, 0xee, 0x0b, 0xbd, 0x7a, 0x7b, 0x60, 0x9a, 0xec, 0x58, 0x14, 0x41, 0x1c, 0x60, + 0x29, 0x6e, 0x9a, 0x07, 0x45, 0xf5, 0xf1, 0xf7, 0xda, 0x93, 0x18, 0x48, 0x03, 0xdb, 0xee, + 0x3a, 0xa8, 0x8c, 0x31, 0xd1, 0x2c, 0xa3, 0xbf, 0x44, 0x5d, 0xac, 0xdf, 0x1d, 0x42, 0x2c, + 0x9e, 0x22, 0x19, 0x6d, 0x42, 0x8e, 0xe7, 0xfb, 0xba, 0x43, 0x39, 0x26, 0x26, 0xbe, 0xde, + 0x80, 0xba, 0x2d, 0xe1, 0x31, 0x44, 0x16, 0xaa, 0x5e, 0xd8, 0xfa, 0x07, 0x4f, 0xb7, 0x25, + 0xaa, 0xf7, 0x8c, 0xda, 0x07, 0xb6, 0x18, 0x29, 0x4d, 0x1c, 0x3f, 0xca, 0x6c, 0x05, 0x5a, + 0xdb, 0xa8, 0x5b, 0xbc, 0x2c, 0x9c, 0x0b, 0x9d, 0xbb, 0xde, 0x18, 0x68, 0x22, 0x5d, 0x0f, + 0x9f, 0x0f, 0x35, 0x67, 0x51, 0x21, 0x62, 0xbf, 0xa7, 0x57, 0xb5, 0xab, 0x0e, 0x23, 0x23, + 0x35, 0xc2, 0xd3, 0xdc, 0x11, 0x03, 0x0c, 0x59, 0xfc, 0xbc, 0xd4, 0x68, 0xd7, 0x04, 0x56, + 0xc8, 0x60, 0x57, 0xff, 0x1d, 0x4e, 0xce, 0xd0, 0x0e, 0x7d, 0x1d, 0xf1, 0x75, 0xd8, 0xe4, + 0x05, 0x1b, 0xbd, 0xa9, 0xae, 0x25, 0x9f, 0xa3, 0x26, 0xb6, 0x54, 0x43, 0xdd, 0x2b, 0xed, + 0x7d, 0xde, 0x4a, 0xb0, 0x96, 0xfe, 0x15, 0x53, 0xa3, 0x93, 0xba, 0x22, 0xf6, 0xb6, 0x2d, + 0x44, 0x86, 0xe8, 0x31, 0xd3, 0x8c, 0x54, 0x83, 0xd8, 0x6d, 0x34, 0x9b, 0x37, 0x22, 0xbd, + 0x0e, 0x00, 0xbc, 0x4e, 0x2a, 0x2f, 0x76, 0x7a, 0xfe, 0x36, 0x27, 0x13, 0xd9, 0x5a, 0x45, + 0xd4, 0x10, 0xac, 0x51, 0x37, 0xfc, 0x7a, 0x54, 0x62, 0xf7, 0xa7, 0x51, 0x35, 0xb5, 0xe0, + 0xb9, 0x4f, 0xbe, 0x88, 0xf1, 0x7f, 0x53, 0x45, 0x9a, 0x56, 0xe6, 0x4a, 0x17, 0x03, 0x48, + 0xf5, 0x91, 0x5e, 0x12, 0x40, 0xa7, 0xb9, 0xf0, 0x96, 0x37, 0xa6, 0xfd, 0xdb, 0x5b, 0x2f, + 0xb6, 0x18, 0x76, 0x19, 0x62, 0x78, 0x8d, 0xe5, 0x25, 0x37, 0x3f, 0xb1, 0x59, 0x3f, 0xe5, + 0x84, 0x32, 0x8a, 0x29, 0x6d, 0xe8, 0x9d, 0xaa, 0x52, 0x06, 0xbf, 0x17, 0xb8, 0x41, 0x90, + 0x2d, 0x12, 0x15, 0x30, 0x42, 0x83, 0xcf, 0x21, 0x3d, 0x43, 0x41, 0xbb, 0x20, 0xba, 0xc2, + 0x94, 0x1f, 0x57, 0x09, 0xa2, 0xa8, 0xd0, 0xef, 0xc3, 0x30, 0xeb, 0x8f, 0xb1, 0xe7, 0x04, + 0x68, 0x6c, 0xa2, 0x17, 0x70, 0xac, 0x1b, 0x4f, 0xde, 0x9f, 0x43, 0x02, 0xf6, 0x3b, 0xc7, + 0x6b, 0x69, 0x60, 0x6e, 0x49, 0xd3, 0xda, 0x5c, 0xe0, 0x34, 0xcf, 0xe8, 0xc3, 0x90, 0x4a, + 0xfa, 0x00, 0x7b, 0x94, 0xae, 0x23, 0x1b, 0x52, 0x1d, 0xf3, 0x7c, 0xd5, 0x76, 0x48, 0x64, + 0xa1, 0x48, 0xc7, 0x37, 0x9b, 0x56, 0x63, 0x8d, 0xe7, 0xf6, 0x9e, 0xdc, 0x68, 0x76, 0x76, + 0x06, 0xda, 0x5e, 0x3d, 0xcf, 0x66, 0xff, 0x17, 0xa9, 0xc8, 0x7b, 0xe0, 0x22, 0xa7, 0x76, + 0x89, 0x58, 0x98, 0x8c, 0x23, 0x8d, 0x17, 0x21, 0xd4, 0x0e, 0xb4, 0x2f, 0xea, 0x4a, 0xcc, + 0x92, 0x3c, 0xfc, 0xde, 0xfa, 0xaa, 0xd5, 0x2f, 0x9f, 0x3f, 0x81, 0xb9, 0x33, 0x1c, 0x3f, + 0x47, 0xb3, 0xc0, 0x44, 0x41, 0x68, 0x93, 0x29, 0xed, 0x79, 0x69, 0x2f, 0xa5, 0x78, 0x9c, + 0x2e, 0x59, 0xa5, 0xb0, 0x64, 0xa9, 0xaf, 0x5b, 0x12, 0x69, 0x3b, 0x09, 0x15, 0x0f, 0xcf, + 0x8e, 0xc5, 0x77, 0x43, 0x37, 0xa6, 0xf9, 0xe5, 0xf1, 0x09, 0x30, 0x2f, 0xd7, 0xba, 0x20, + 0xd6, 0x2a, 0x82, 0x11, 0x51, 0xff, 0x72, 0x4c, 0x62, 0xfb, 0x09, 0x9f, 0xad, 0x2d, 0x52, + 0xa2, 0x87, 0x15, 0x65, 0x48, 0xad, 0x57, 0x78, 0x46, 0x78, 0x09, 0xa9, 0xba, 0x08, 0xd3, + 0xc4, 0x6d, 0xe9, 0xbc, 0xcd, 0x29, 0x5b, 0x52, 0x44, 0x4c, 0x50, 0x02, 0x5e, 0xb0, 0xee, + 0x05, 0x07, 0xcf, 0xab, 0xb9, 0x59, 0x6f, 0xf4, 0x0e, 0x3d, 0x6a, 0x44, 0x70, 0xfb, 0x0f, + 0x6b, 0xfc, 0xf1, 0x81, 0x33, 0x30, 0x30, 0xe6, 0x24, 0x2f, 0x87, 0x11, 0xd9, 0x0a, 0x81, + 0xd4, 0x24, 0x2c, 0x2d, 0x89, 0xf9, 0xb0, 0xe9, 0x2f, 0x1a, 0x48, 0xdf, 0xd4, 0x31, 0xd9, + 0xc9, 0x55, 0x3c, 0x62, 0x7d, 0xb8, 0x8a, 0x6c, 0x33, 0x35, 0xbc, 0x4a, 0x8f, 0x9f, 0x6c, + 0x43, 0x02, 0xfa, 0xb9, 0x21, 0x27, 0x0c, 0x53, 0x1f, 0xa6, 0x39, 0x48, 0x8a, 0xf9, 0x07, + 0x79, 0x83, 0xa1, 0x65, 0x4a, 0x0f, 0xbf, 0xd7, 0x23, 0x19, 0xc7, 0xea, 0xbd, 0xa9, 0xce, + 0xdf, 0x98, 0xe8, 0x0c, 0x01, 0x94, 0x3d, 0x84, 0x7e, 0xe2, 0xf9, 0xdb, 0x02, 0xc5, 0xf8, + 0x89, 0x72, 0x1d, 0x13, 0x75, 0xa5, 0xb5, 0xbd, 0x7c, 0xf2, 0xfd, 0x71, 0x8b, 0x98, 0x06, + 0xe4, 0xde, 0xc1, 0xc5, 0x2b, 0x3b, 0x66, 0xba, 0xb6, 0x2e, 0x60, 0x0e, 0x5b, 0xb9, 0xcf, + 0xb5, 0x30, 0x3b, 0x87, 0x4f, 0xa8, 0xfb, 0xfc, 0x98, 0x6c, 0xf1, 0x17, 0x42, 0xf1, 0x09, + 0x8d, 0x82, 0xbd, 0x34, 0xf5, 0x51, 0x93, 0x5d, 0x12, 0x5a, 0x14, 0x59, 0xde, 0x31, 0x9c, + 0x5f, 0x16, 0xdf, 0x7f, 0x8d, 0x40, 0xea, 0x42, 0x05, 0x87, 0x97, 0xde, 0x32, 0x89, 0xb1, + 0x94, 0xf2, 0x91, 0x61, 0x19, 0xf2, 0xe1, 0x79, 0xf9, 0x3e, 0x14, 0xfd, 0x00, 0xb8, 0x3d, + 0x0c, 0x99, 0x22, 0xb8, 0xae, 0x03, 0x49, 0x78, 0x76, 0xdf, 0x3e, 0xb5, 0x10, 0x6d, 0xc1, + 0x65, 0x88, 0x00, 0x61, 0x20, 0x79, 0xef, 0x46, 0x79, 0x54, 0x22, 0x45, 0xcf, 0x39, 0xa4, + 0x35, 0xb8, 0xee, 0x01, 0xdf, 0x59, 0xf7, 0x2a, 0xd5, 0xfd, 0x6b, 0x85, 0x02, 0x08, 0xde, + 0xb1, 0x9e, 0xae, 0xff, 0x19, 0xc3, 0xb8, 0x6f, 0x6b, 0x4c, 0x19, 0xf9, 0xb0, 0x94, 0x7f, + 0x08, 0x38, 0x0a, 0xc6, 0x72, 0x69, 0xb7, 0x1a, 0xc2, 0xaa, 0x71, 0x9c, 0x4a, 0x82, 0x01, + 0xee, 0x57, 0xdb, 0xa0, 0x48, 0xb8, 0xd3, 0xb2, 0x50, 0x77, 0x71, 0x89, 0x80, 0x1f, 0x56, + 0x81, 0x41, 0xb7, 0x03, 0x93, 0x6f, 0x63, 0x0b, 0xff, 0x37, 0x42, 0x08, 0x56, 0xbf, 0x96, + 0x6b, 0xb6, 0xb5, 0xfa, 0x11, 0x4e, 0x92, 0xa0, 0xf3, 0xf5, 0x3d, 0x3b, 0x18, 0x8f, 0xf9, + 0x22, 0xa4, 0x25, 0xb8, 0xb4, 0x0e, 0xc5, 0x5c, 0xc1, 0x3e, 0x38, 0x9c, 0x61, 0x25, 0x98, + 0x6f, 0x48, 0x4e, 0x7b, 0xb8, 0x73, 0xd1, 0xf5, 0x76, 0xe3, 0xd0, 0x42, 0xaa, 0x41, 0xdd, + 0x27, 0x1d, 0x24, 0x75, 0xcb, 0xca, 0x4c, 0xbd, 0x1a, 0x71, 0x5b, 0x42, 0x6b, 0x97, 0x87, + 0x5c, 0x73, 0x1a, 0xa3, 0x95, 0x34, 0xf2, 0x4e, 0xba, 0x1e, 0x71, 0xe1, 0x6b, 0xee, 0xd7, + 0x39, 0x29, 0xed, 0xeb, 0xd9, 0x74, 0xc2, 0xd4, 0x51, 0x8e, 0x20, 0xff, 0x11, 0x3e, 0x10, + 0x74, 0x1d, 0x7b, 0xcb, 0xbc, 0x77, 0xcd, 0x1e, 0x4e, 0x0d, 0x02, 0x8c, 0x2e, 0x29, 0x38, + 0x22, 0xb5, 0x10, 0xac, 0x4d, 0xb7, 0xa7, 0x67, 0xaf, 0xc0, 0xcf, 0x2b, 0x94, 0x95, 0x6f, + 0x9f, 0x56, 0xa2, 0x5e, 0xbf, 0xb2, 0x32, 0x2a, 0x81, 0x0f, 0x06, 0x58, 0xdc, 0x43, 0x02, + 0x7d, 0xaa, 0xf7, 0x8b, 0x22, 0x2a, 0x1c, 0x75, 0xca, 0xa6, 0x62, 0x9b, 0x28, 0x83, 0xb3, + 0xc4, 0xe7, 0x85, 0xbf, 0x54, 0xe5, 0xac, 0x3e, 0xcc, 0x39, 0x57, 0x5d, 0xc0, 0xd4, 0x21, + 0xca, 0x49, 0xec, 0x24, 0xdf, 0x1a, 0xf2, 0x07, 0xbf, 0x96, 0xcf, 0x62, 0xb5, 0xce, 0xa8, + 0x02, 0xfe, 0x95, 0x4b, 0xae, 0x0d, 0xd8, 0xd5, 0xec, 0x8e, 0x88, 0x8c, 0xdd, 0x11, 0x16, + 0x73, 0x25, 0x98, 0xab, 0x57, 0xac, 0x8b, 0x8f, 0xf3, 0x2b, 0xad, 0xf3, 0x4c, 0x9a, 0x86, + 0x92, 0x60, 0x29, 0x6d, 0x50, 0xb0, 0xf6, 0x49, 0xc8, 0x07, 0x32, 0x21, 0x6d, 0x8d, 0xe6, + 0x9d, 0xcf, 0xd4, 0x3c, 0x3d, 0x05, 0x68, 0x6e, 0xa5, 0xdf, 0xb5, 0x11, 0x3b, 0x83, 0x81, + 0x5b, 0x4b, 0x31, 0x3a, 0x07, 0x58, 0xc5, 0xcd, 0x01, 0xad, 0xee, 0x09, 0x2e, 0xc4, 0x22, + 0x34, 0x6d, 0xa2, 0xbc, 0x79, 0xa4, 0x83, 0xe3, 0x39, 0x23, 0xf5, 0x0d, 0xe7, 0xbc, 0x81, + 0xc7, 0x66, 0xd9, 0x9b, 0xf2, 0xe7, 0x90, 0xe9, 0x1e, 0x9b, 0x6b, 0xf7, 0x87, 0x8e, 0x6c, + 0xed, 0xcf, 0x65, 0x7b, 0x5d, 0x93, 0x14, 0xca, 0xa2, 0x9b, 0x95, 0xb2, 0x89, 0x15, 0x3c, + 0x52, 0xc0, 0xcc, 0x47, 0x47, 0x62, 0xb2, 0xef, 0xb7, 0x82, 0xf9, 0x04, 0x1b, 0x6f, 0x83, + 0xef, 0x15, 0xe3, 0x12, 0x1e, 0xd9, 0xe0, 0x39, 0xf0, 0xec, 0x84, 0x8c, 0xb9, 0xe2, 0x38, + 0x29, 0xe2, 0x0a, 0x9a, 0x38, 0x3f, 0xb5, 0x06, 0x8a, 0x70, 0x82, 0xaf, 0xe6, 0x3d, 0x95, + 0x7b, 0x8c, 0x7f, 0xf1, 0x16, 0xa5, 0xeb, 0xc5, 0xb1, 0xb8, 0xf7, 0x93, 0x1e, 0x85, 0xb3, + 0x91, 0x99, 0xec, 0x50, 0x90, 0x21, 0xda, 0xa3, 0x27, 0xb7, 0x09, 0xe4, 0x95, 0x05, 0xca, + 0x7e, 0x0e, 0x03, 0x13, 0xbb, 0x84, 0xfc, 0x0a, 0xdc, 0x45, 0xa9, 0xad, 0x0d, 0x44, 0x1a, + 0x0e, 0x50, 0xe5, 0xd2, 0x27, 0x28, 0xa5, 0x3c, 0x22, 0x07, 0xec, 0x78, 0xcf, 0xaa, 0x86, + 0x1b, 0x5e, 0xf2, 0x32, 0x43, 0x2b, 0x1b, 0x3f, 0xf4, 0x74, 0x87, 0xf3, 0x1c, 0xfa, 0x93, + 0x0b, 0x0a, 0x3a, 0x52, 0xc8, 0x9e, 0x82, 0x32, 0x47, 0xa5, 0x1a, 0xe9, 0xbe, 0xe1, 0x20, + 0x1c, 0xaf, 0x28, 0x94, 0xdc, 0x94, 0x13, 0xff, 0x18, 0xbd, 0x69, 0xe2, 0xf9, 0x74, 0x64, + 0x9c, 0x02, 0x03, 0x4f, 0x69, 0xed, 0x9b, 0xe7, 0xe9, 0x02, 0xbe, 0xe5, 0x58, 0xd2, 0xfa, + 0xad, 0x3a, 0xbc, 0x02, 0x6a, 0x03, 0x37, 0x94, 0x23, 0x0f, 0x58, 0xb9, 0x23, 0x85, 0x1e, + 0x10, 0x9f, 0x7c, 0xe8, 0x16, 0x73, 0xd0, 0x56, 0x59, 0x44, 0x6b, 0x67, 0xad, 0x16, 0xb5, + 0xec, 0x6a, 0xf0, 0xa4, 0xe4, 0xa2, 0x2f, 0xbd, 0xcb, 0x9a, 0x3e, 0x20, 0xd7, 0x36, 0x7c, + 0x13, 0xa7, 0x2a, 0x14, 0x3b, 0x7b, 0x6a, 0x02, 0x82, 0xae, 0xdf, 0xae, 0x72, 0x7a, 0xcc, + 0x3b, 0xe8, 0xb1, 0xb8, 0x38, 0xf5, 0xd1, 0x30, 0x66, 0x05, 0x9c, 0xaa, 0xbf, 0xf4, 0xd8, + 0x47, 0xf0, 0x0b, 0xd9, 0xd5, 0x58, 0x80, 0x31, 0xa0, 0xac, 0x6c, 0xc7, 0xb5, 0xd9, 0x98, + 0xc7, 0xcd, 0xd9, 0x5f, 0x12, 0xb8, 0xfa, 0xdd, 0xb6, 0x3d, 0x7f, 0x93, 0x28, 0x1a, 0x76, + 0x31, 0x6c, 0x22, 0xdd, 0xfc, 0x45, 0x1f, 0xc4, 0x91, 0x2b, 0x8a, 0xc1, 0x25, 0xdb, 0x43, + 0x0b, 0x29, 0xfb, 0x95, 0xc9, 0x5c, 0x0b, 0x4f, 0x2c, 0xc9, 0x42, 0x28, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0x96, 0x10, 0x6c, 0xbd, 0x4a, 0x38, 0x8a, 0x6c, 0xce, 0xb1, 0xd6, 0x28, + 0x13, 0x18, 0xe0, 0xf9, 0xa2, 0xda, 0xb5, 0x75, 0xa9, 0xcd, 0xd5, 0xda, 0xe9, 0xa3, 0x34, + 0x60, 0xef, 0x15, 0xbc, 0xcd, 0x86, 0x14, 0x88, 0xe7, 0x34, 0x1c, 0x61, 0x65, 0x62, 0xc7, + 0x77, 0x14, 0xd2, 0xb5, 0x4d, 0x79, 0x86, 0x16, 0x71, 0xab, 0x32, 0x78, 0xba, 0xcf, 0xa5, + 0xd4, 0x1d, 0x14, 0xed, 0x16, 0x2c, 0x11, 0x83, 0x83, 0xeb, 0xc7, 0x92, 0x85, 0x83, 0x1c, + 0x3a, 0x7e, 0xdd, 0x8b, 0x2e, 0xfc, 0xcc, 0x4b, 0xee, 0xf4, 0x49, 0xd2, 0x69, 0x3d, 0x07, + 0x3e, 0x09, 0xec, 0x84, 0x88, 0xe9, 0x25, 0xe4, 0xee, 0xb6, 0x57, 0x83, 0x74, 0x88, 0xc7, + 0x35, 0x57, 0x88, 0x7f, 0xc4, 0xc8, 0x8c, 0x95, 0x69, 0x7a, 0xbf, 0x58, 0xb4, 0xd9, 0x5c, + 0x57, 0xf3, 0x27, 0x24, 0xce, 0x69, 0x59, 0xf7, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x47, 0xc6, 0xd3, 0xfc, 0xbe, 0xa6, 0xce, 0xa1, 0xef, 0x53, 0x01, 0x50, + 0x43, 0x9c, 0xde, 0x78, 0x7f, 0x28, 0xad, 0x6e, 0x86, 0x1b, 0xfc, 0x8a, 0x21, 0x0a, 0x88, + 0x5e, 0xcc, 0x24, 0x3f, 0x91, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xac, + 0xc9, 0xf4, 0x27, 0xf2, 0xb3, 0x32, 0xfb, 0x97, 0xf4, 0x9e, 0x28, 0xf6, 0x9b, 0x3c, 0xf7, + 0x60, 0x05, 0x5f, 0xe9, 0x08, 0xde, 0xc3, 0x5d, 0xf8, 0x50, 0xa1, 0x16, 0x91, 0xba, 0x39, + 0x19, 0x72, 0xef, 0x6e, 0x10, 0xf6, 0xbb, 0x32, 0xb7, 0x96, 0x76, 0x2a, 0x46, 0x20, 0xc9, + 0x95, 0x80, 0x98, 0x74, 0xfb, 0x90, 0x6a, 0x5e, 0x9e, 0x16, 0x93, 0x08, 0xc0, 0x92, 0x54, + 0xf1, 0x2a, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x53, + 0xb9, 0x5b, 0x83, 0xa9, 0xd5, 0x6e, 0xe0, 0xc0, 0x27, 0x25, 0x27, 0x0c, 0x33, 0x64, 0xd7, + 0x6f, 0x96, 0x00, 0x7f, 0x47, 0x54, 0x6e, 0x09, 0x29, 0xa2, 0xab, 0xbf, 0xe8, 0x38, 0x1c, + 0x33, 0xe4, 0xd7, 0xff, 0xb2, 0xe0, 0xc0, 0x4e, 0x83, 0xf4, 0xe8, 0x0f, 0x95, 0x13, 0x7d, + 0xc3, 0x74, 0xa8, 0x61, 0xf8, 0x1e, 0xbd, 0x37, 0x11, 0x84, 0x7d, 0x6c, 0xac, 0x72, 0x42, + 0x53, 0xcf, 0x04, 0xa6, 0xe5, 0x64, 0x8a, 0xf2, 0x59, 0x8f, 0x87, 0x41, 0x6a, 0x17, 0xe8, + 0xfc, 0x8e, 0xef, 0x75, 0x83, 0xb1, 0xa5, 0x63, 0xef, 0x60, 0x4f, 0x27, 0xbd, 0x3e, 0xba, + 0xb7, 0x5a, 0xc0, 0x8d, 0xac, 0x3d, 0xac, 0xbf, 0xd5, 0x8c, 0xac, 0x90, 0x01, 0x87, 0x9f, + 0xbe, 0xeb, 0xe7, 0x99, 0x80, 0xc1, 0x28, 0xdb, 0xb3, 0x39, 0x3d, 0x94, 0x17, 0x97, 0x99, + 0xcf, 0x7c, 0x7a, 0x28, 0x4c, 0x91, 0x1d, 0x9d, 0x62, 0xb1, 0x1c, 0x79, 0x63, 0x18, 0x0b, + 0x06, 0x26, 0xcf, 0xb2, 0x83, 0x17, 0x33, 0xe7, 0xf6, 0x57, 0x9b, 0xc3, 0xc0, 0x44, 0x49, + 0x02, 0x94, 0x92, 0xdc, 0x56, 0x54, 0xf7, 0x03, 0xa6, 0x81, 0x52, 0xc3, 0xc6, 0x82, 0xfd, + 0x8e, 0xc1, 0x39, 0xfe, 0x5f, 0xf5, 0x9c, 0x77, 0xd4, 0xd4, 0xec, 0x34, 0xd5, 0xbb, 0xa8, + 0xb1, 0x0f, 0x3d, 0x4c, 0x36, 0x84, 0x54, 0x63, 0x8a, 0xad, 0x86, 0x9f, 0xcf, 0x2a, 0x6d, + 0x11, 0xb0, 0x5f, 0xcd, 0x7a, 0x09, 0x3d, 0xae, 0xd7, 0x21, 0xd9, 0xa9, 0xaf, 0x78, 0x5b, + 0x16, 0x31, 0x1f, 0x7e, 0x12, 0x05, 0x85, 0x2d, 0xf4, 0x64, 0x34, 0xa1, 0x99, 0x01, 0xdb, + 0x60, 0x38, 0xd3, 0x0d, 0xa3, 0xf1, 0x2d, 0xc6, 0x5b, 0xec, 0xe8, 0xe8, 0x04, 0x38, 0x88, + 0xfd, 0x05, 0xf0, 0xd0, 0xae, 0xd9, 0x14, 0x2a, 0xc3, 0x7b, 0x3d, 0x3a, 0x3f, 0xe7, 0x03, + 0x3f, 0x04, 0x25, 0x18, 0xa0, 0x17, 0xbb, 0x8f, 0x3a, 0x36, 0xfd, 0x93, 0x12, 0x53, 0x0f, + 0xfe, 0x32, 0x07, 0xb1, 0x4d, 0x02, 0x7c, 0xd0, 0x6c, 0xe0, 0xde, 0x46, 0xd9, 0x4b, 0x86, + 0xca, 0xf4, 0xf7, 0x73, 0xbc, 0x36, 0xfa, 0x8e, 0xcf, 0x12, 0x52, 0x5e, 0x46, 0x4b, 0xa2, + 0x45, 0x6c, 0xab, 0x94, 0x97, 0x4e, 0x02, 0x2b, 0xdc, 0x1f, 0x37, 0x8e, 0xc6, 0x51, 0xf6, + 0x4b, 0x07, 0xb4, 0xbc, 0xa9, 0x10, 0xd6, 0x18, 0xb9, 0x53, 0x29, 0x74, 0x3a, 0x32, 0x67, + 0x5e, 0x83, 0x2b, 0x6c, 0x48, 0x05, 0x3f, 0xce, 0xfa, 0xd2, 0xa0, 0xe5, 0x9d, 0x25, 0x85, + 0xda, 0x4f, 0x08, 0xc0, 0x75, 0x60, 0x55, 0xca, 0x30, 0xc4, 0xa2, 0xe7, 0x90, 0x04, 0xbe, + 0x05, 0x95, 0xa5, 0x96, 0x49, 0x98, 0xb6, 0x71, 0xd6, 0x9a, 0xcd, 0x28, 0xe4, 0xcc, 0x9f, + 0x2d, 0x9d, 0xa2, 0x5a, 0xb5, 0x30, 0xc0, 0xe5, 0x51, 0x03, 0x0f, 0x7f, 0xc1, 0x82, 0x75, + 0x31, 0x18, 0xd9, 0xe7, 0xe2, 0x92, 0x6d, 0x5a, 0x39, 0x20, 0x0d, 0x01, 0x70, 0xc5, 0x1c, + 0xa8, 0xf7, 0x0a, 0xbf, 0x62, 0xb9, 0x24, 0xb8, 0x6e, 0x9d, 0xa2, 0x66, 0x21, 0xdc, 0x2b, + 0xc0, 0xbf, 0x8f, 0xa9, 0x81, 0x4e, 0x58, 0x2c, 0xb4, 0x33, 0x8f, 0xf3, 0xe0, 0x94, 0xaa, + 0xb2, 0x91, 0xc6, 0x66, 0x0d, 0xf4, 0xde, 0x35, 0x0c, 0xb7, 0x85, 0x6c, 0x33, 0xd2, 0xd5, + 0x49, 0x04, 0xb9, 0xff, 0x67, 0x82, 0xea, 0xb4, 0x0b, 0x7b, 0xeb, 0x2e, 0xa0, 0x48, 0x10, + 0x22, 0x9f, 0x67, 0xc8, 0x89, 0x3b, 0x2d, 0x7b, 0x80, 0xc8, 0x67, 0xa3, 0x32, 0x7e, 0x0c, + 0xbb, 0xa8, 0x7b, 0xfe, 0x73, 0x50, 0xe4, 0xcd, 0x21, 0x90, 0x75, 0xa3, 0xd8, 0x03, 0x93, + 0x85, 0xc4, 0x68, 0xf4, 0xd7, 0x63, 0x7e, 0x79, 0x4a, 0x6a, 0x5d, 0x22, 0xcb, 0xa4, 0x0d, + 0x07, 0x60, 0xa9, 0x2b, 0xda, 0x43, 0x68, 0x94, 0x31, 0x61, 0xe3, 0xa4, 0x0f, 0x4c, 0x3b, + 0x2e, 0x2c, 0x6c, 0xc0, 0xe0, 0x95, 0x68, 0x9d, 0x14, 0x95, 0xa7, 0x4e, 0x59, 0x09, 0x40, + 0x8f, 0xa2, 0xd8, 0x1d, 0xdf, 0x5b, 0xb0, 0x48, 0xcf, 0x0f, 0xb8, 0x39, 0xdc, 0x82, 0x88, + 0xb1, 0xc9, 0x87, 0x5e, 0xb9, 0x45, 0x1d, 0x19, 0x51, 0x3f, 0x4d, 0x97, 0x4c, 0x01, 0xc7, + 0xb5, 0x40, 0x40, 0x39, 0xed, 0x81, 0x41, 0xae, 0x4c, 0x59, 0x66, 0x47, 0x28, 0x1f, 0x30, + 0x8f, 0x32, 0x88, 0x3c, 0x46, 0xa5, 0xf3, 0xf7, 0x55, 0x5f, 0x8c, 0xb1, 0x87, 0x73, 0x28, + 0xcd, 0xde, 0xd6, 0xb7, 0x69, 0x9a, 0xec, 0xb1, 0x98, 0xdd, 0x56, 0x2b, 0xb0, 0xea, 0xf7, + 0x7d, 0x12, 0x41, 0x88, 0x3a, 0x0e, 0x67, 0x2a, 0xef, 0x3a, 0x7c, 0x63, 0x82, 0x90, 0x0b, + 0x58, 0x9a, 0x0a, 0xc0, 0xf3, 0x12, 0x87, 0x67, 0x00, 0x47, 0xb3, 0x69, 0x8c, 0x62, 0x4f, + 0xe0, 0x6e, 0x6a, 0xa1, 0xa9, 0x3c, 0x2d, 0xf2, 0xf6, 0x9e, 0x63, 0x40, 0xd3, 0xfa, 0x90, + 0x58, 0xd1, 0x7d, 0xfc, 0x73, 0xcc, 0x93, 0x3f, 0x90, 0x01, 0x38, 0x11, 0xc9, 0xc2, 0xb2, + 0xa0, 0x78, 0x8d, 0xa9, 0xd0, 0xe1, 0x5d, 0xb8, 0x0b, 0x50, 0x12, 0xdc, 0x5c, 0xef, 0x02, + 0xb7, 0xbe, 0x74, 0xb8, 0x48, 0x55, 0x2f, 0x1c, 0xaa, 0xea, 0x6f, 0x4a, 0x19, 0xb5, 0x4f, + 0x9b, 0xa6, 0x4b, 0xf2, 0x74, 0x8d, 0x4f, 0x9b, 0xb7, 0x34, 0xef, 0xeb, 0x16, 0xb1, 0x3c, + 0x4d, 0x7f, 0x2f, 0x32, 0x38, 0x73, 0x0c, 0x7f, 0x84, 0x33, 0x37, 0x25, 0x82, 0x74, 0x50, + 0x41, 0xc3, 0x4a, 0xb9, 0xf6, 0xb7, 0xc9, 0xf9, 0xb3, 0x38, 0x21, 0x08, 0x2e, 0xd9, 0xc8, + 0x41, 0x9c, 0x0a, 0x8d, 0xe9, 0x05, 0x24, 0xdb, 0x29, 0xb6, 0xbf, 0xed, 0xfb, 0xbe, 0x81, + 0x9b, 0x0a, 0x58, 0x55, 0xa5, 0x05, 0x77, 0x76, 0x9a, 0x74, 0x09, 0x87, 0xa3, 0xa5, 0x1d, + 0x26, 0x5e, 0xed, 0x65, 0x20, 0x36, 0xae, 0x86, 0xbb, 0x6f, 0xc6, 0x34, 0x47, 0x3f, 0x49, + 0x95, 0x62, 0x7e, 0x65, 0x19, 0x33, 0xd1, 0x7a, 0xc1, 0x32, 0x36, 0xe3, 0x7f, 0xa7, 0x52, + 0x08, 0xd8, 0x0e, 0x54, 0x07, 0x67, 0x50, 0xd3, 0xf7, 0xac, 0x02, 0x6c, 0x1b, 0xe3, 0xed, + 0xa2, 0xd2, 0xed, 0x61, 0x06, 0x4a, 0xc4, 0x50, 0x44, 0xb1, 0x9d, 0x6b, 0xfb, 0x7d, 0x17, + 0x40, 0x58, 0x76, 0xc9, 0x69, 0xa0, 0x29, 0x40, 0xe9, 0x85, 0x23, 0x3f, 0x73, 0x8d, 0xeb, + 0x68, 0x3d, 0xde, 0x19, 0x86, 0x19, 0x77, 0xfe, 0x4d, 0x09, 0x71, 0x4e, 0x39, 0x51, 0xc6, + 0xc0, 0xe3, 0xee, 0x65, 0x32, 0xd3, 0x70, 0x77, 0x89, 0x8d, 0x62, 0x9c, 0x94, 0x4e, 0x48, + 0xc8, 0x79, 0x98, 0xa6, 0x5a, 0x83, 0xcb, 0x5d, 0x6e, 0xa2, 0x5c, 0x86, 0xb8, 0x3c, 0xf7, + 0x0d, 0x8b, 0xf0, 0xd9, 0xf5, 0x05, 0xc0, 0x1a, 0x14, 0xdb, 0x56, 0x80, 0xae, 0x81, 0x3d, + 0xfe, 0xea, 0xc1, 0x0b, 0xc5, 0x7b, 0xe6, 0x48, 0x5f, 0x0e, 0x46, 0xf6, 0x9b, 0xb6, 0xc3, + 0x1b, 0xb1, 0xf7, 0x21, 0x44, 0x3f, 0x25, 0x53, 0xb2, 0x1e, 0xa1, 0xca, 0x81, 0x86, 0x79, + 0x03, 0x14, 0xa0, 0x97, 0x6a, 0xbb, 0x21, 0xdf, 0x5a, 0x26, 0x27, 0xf6, 0x2e, 0xac, 0x08, + 0xa2, 0x02, 0x1e, 0x4c, 0xb6, 0xa6, 0x62, 0x93, 0xc5, 0xed, 0xc9, 0x90, 0xfc, 0x14, 0x48, + 0xe8, 0xe0, 0x69, 0x3c, 0xf6, 0x21, 0x1c, 0x91, 0x2d, 0xc1, 0xc7, 0xcf, 0xbf, 0x39, 0x56, + 0x36, 0x6e, 0xdc, 0x19, 0x8e, 0x82, 0xc1, 0xdf, 0x5f, 0xe8, 0xab, 0x81, 0x64, 0x88, 0x60, + 0xcc, 0x3e, 0x09, 0x81, 0x70, 0x2e, 0xee, 0x97, 0x65, 0x1c, 0xdb, 0x1e, 0xab, 0x6d, 0xe6, + 0xa9, 0x13, 0x66, 0x12, 0x90, 0x28, 0xfc, 0x5c, 0x09, 0xcf, 0xfd, 0xba, 0x62, 0x85, 0xe9, + 0xcf, 0x30, 0xc5, 0x39, 0xd4, 0xe1, 0xf3, 0x46, 0x8f, 0xaa, 0x97, 0xcb, 0xde, 0xfd, 0xaa, + 0xd4, 0x10, 0x03, 0x2f, 0x4e, 0x54, 0x4f, 0xf3, 0xc7, 0xb2, 0x00, 0xd5, 0x5b, 0x3e, 0x1e, + 0x33, 0xbc, 0xda, 0x5b, 0xbf, 0xdf, 0x22, 0x92, 0x7b, 0xfe, 0x60, 0xb8, 0x4c, 0x99, 0xa5, + 0xc3, 0x87, 0xd4, 0x50, 0xa1, 0x02, 0x1f, 0x44, 0x70, 0xbc, 0xf7, 0xfe, 0xe6, 0x19, 0x79, + 0x4c, 0x59, 0x07, 0x8f, 0x23, 0xff, 0x3e, 0x4e, 0xf9, 0xdf, 0xbc, 0x74, 0xc9, 0x15, 0x4c, + 0x29, 0x22, 0x61, 0x35, 0xa7, 0x9e, 0xe3, 0x51, 0x0b, 0xad, 0x41, 0xdb, 0xb3, 0x63, 0x26, + 0x9e, 0xc3, 0xee, 0x3e, 0x8d, 0xdd, 0xa4, 0x68, 0xca, 0x03, 0x22, 0xa4, 0x3c, 0x7c, 0xc8, + 0x7e, 0x12, 0x36, 0xa9, 0x18, 0x8a, 0x08, 0xa4, 0x05, 0x72, 0x23, 0x18, 0xdf, 0x22, 0xe8, + 0xc8, 0x56, 0x6b, 0x95, 0xb9, 0x6f, 0xf8, 0x3c, 0xe9, 0x7d, 0x7e, 0x5e, 0xe2, 0x5c, 0xfa, + 0x61, 0x55, 0x07, 0x2c, 0xd5, 0xf6, 0xa1, 0xa4, 0xeb, 0xc2, 0x10, 0x9e, 0xb4, 0xbf, 0x9b, + 0x5b, 0xc4, 0x1b, 0xe5, 0xcf, 0xed, 0x4a, 0x01, 0x63, 0x02, 0xa5, 0xbc, 0x37, 0x3b, 0x8d, + 0xbf, 0x84, 0x51, 0x18, 0x44, 0x15, 0x63, 0xd6, 0x1c, 0x4b, 0xfd, 0x42, 0x17, 0xac, 0x1c, + 0x01, 0x55, 0x85, 0x36, 0x4f, 0x56, 0xe7, 0x26, 0x72, 0x34, 0xc8, 0x92, 0x4a, 0xc1, 0xa2, + 0x01, 0x54, 0x53, 0xa7, 0x62, 0x98, 0x55, 0x5b, 0xa0, 0x5c, 0x94, 0xbd, 0x85, 0x91, 0x14, + 0x51, 0xc8, 0xcb, 0xd8, 0xf2, 0xa5, 0x8b, 0x30, 0xe6, 0x7c, 0x7e, 0x24, 0x69, 0x8c, 0x21, + 0x25, 0x2e, 0x8c, 0x7e, 0xea, 0x45, 0x06, 0xed, 0x08, 0x8e, 0x13, 0xa4, 0x0d, 0xa2, 0x62, + 0x3a, 0x16, 0xda, 0xc1, 0x2f, 0xc4, 0x2d, 0x1f, 0xd6, 0xb9, 0x29, 0xf7, 0x8f, 0xdc, 0x56, + 0x16, 0x6c, 0x73, 0x64, 0x87, 0x57, 0x0a, 0xaa, 0xaf, 0xad, 0xd3, 0x3d, 0x8e, 0xe7, 0xc3, + 0xca, 0xe1, 0x14, 0x94, 0x65, 0x38, 0xe2, 0x9e, 0xe5, 0x67, 0xd0, 0x04, 0xfd, 0xf6, 0xbf, + 0xbf, 0x25, 0x18, 0x09, 0x21, 0x48, 0xe9, 0x04, 0x16, 0x57, 0xc1, 0x1e, 0xff, 0x07, 0x81, + 0x65, 0xfc, 0x80, 0xfd, 0xef, 0xd2, 0x82, 0xa9, 0xd5, 0x56, 0x1d, 0xb2, 0x7d, 0x35, 0xcd, + 0x87, 0x8a, 0xd9, 0xa8, 0x59, 0x16, 0xf0, 0x26, 0x94, 0x11, 0xee, 0x58, 0x9c, 0xdd, 0xf7, + 0xf6, 0x67, 0xef, 0xf3, 0x0b, 0xfa, 0xbe, 0x53, 0xdb, 0xa5, 0xf6, 0x04, 0xa7, 0x2b, 0x5d, + 0x1a, 0x18, 0xba, 0x27, 0x4d, 0x0d, 0x75, 0x04, 0xe8, 0x50, 0x8a, 0x10, 0x2c, 0x3f, 0xf0, + 0x3f, 0xcd, 0x41, 0x10, 0xed, 0xd1, 0xec, 0x98, 0xce, 0x8f, 0xa6, 0xcf, 0x41, 0x80, 0x5a, + 0x1a, 0xd0, 0x6f, 0xdb, 0x1a, 0x62, 0x9b, 0x3d, 0x69, 0x57, 0x67, 0xe8, 0xb1, 0x82, 0x63, + 0xc8, 0x20, 0xd6, 0x3a, 0x2f, 0x3d, 0x4b, 0x0c, 0xdd, 0x46, 0x5f, 0x9a, 0x52, 0x30, 0xb3, + 0xbd, 0xe3, 0x3e, 0x2a, 0xc8, 0x8d, 0xee, 0x72, 0x8d, 0x72, 0xca, 0xb5, 0xb2, 0x03, 0x58, + 0x2c, 0xb2, 0x96, 0x0f, 0xde, 0x44, 0x4c, 0x17, 0x34, 0x3a, 0xd5, 0xf0, 0x27, 0x65, 0xb3, + 0x8e, 0xba, 0xe6, 0xf9, 0xed, 0x8f, 0x38, 0x54, 0xcf, 0x99, 0xd5, 0x8e, 0xfb, 0xfd, 0x75, + 0x14, 0xc7, 0xd7, 0x5e, 0x47, 0x22, 0x23, 0x95, 0x0f, 0x9c, 0x79, 0x0d, 0xe9, 0x74, 0x59, + 0xff, 0xe7, 0x38, 0x23, 0x38, 0x8f, 0xfd, 0x02, 0x07, 0xe0, 0xd0, 0x64, 0x49, 0x9f, 0x23, + 0x8b, 0x4e, 0xc9, 0xcb, 0x66, 0xb8, 0x32, 0x74, 0x3d, 0x35, 0x6d, 0x76, 0x5e, 0x52, 0xaa, + 0x19, 0x6c, 0x56, 0xd7, 0x8f, 0xe4, 0x87, 0xd5, 0x5a, 0x3f, 0xa2, 0x0d, 0x24, 0xe1, 0x49, + 0x40, 0x9d, 0x93, 0xf4, 0x0d, 0x2d, 0xad, 0x30, 0x1a, 0x91, 0x63, 0xc1, 0xe4, 0x96, 0xab, + 0xc4, 0xac, 0x79, 0x2c, 0x4a, 0x5e, 0xd9, 0x25, 0x86, 0x0c, 0x74, 0x65, 0xf5, 0x5c, 0x2e, + 0x61, 0x40, 0x96, 0x00, 0x93, 0xef, 0x8d, 0x57, 0x77, 0x7d, 0x13, 0xf9, 0x1f, 0xc7, 0x04, + 0x3e, 0xc2, 0x9c, 0x41, 0xb1, 0xe2, 0xd6, 0x2d, 0x92, 0x64, 0x5b, 0xfa, 0xc7, 0x48, 0xd0, + 0x26, 0x67, 0xb6, 0x0b, 0x36, 0xb9, 0x42, 0x3e, 0x10, 0xf3, 0x27, 0xaf, 0xaf, 0x75, 0x45, + 0x42, 0x61, 0xd0, 0x06, 0xe9, 0x21, 0x0b, 0x18, 0xac, 0x16, 0xba, 0x1c, 0x47, 0x38, 0xa4, + 0x51, 0x2e, 0x1d, 0x51, 0xb8, 0xfa, 0x8d, 0x87, 0xfb, 0x96, 0x75, 0x6b, 0x54, 0xb6, 0x3e, + 0xcd, 0x75, 0x16, 0xcb, 0x09, 0xb0, 0x71, 0xff, 0x5a, 0xa4, 0xed, 0x4b, 0x7e, 0x0e, 0xe4, + 0xe7, 0xe4, 0xd4, 0x88, 0xbf, 0x9b, 0xc0, 0xb0, 0x9a, 0xca, 0xee, 0x38, 0x85, 0x0c, 0x88, + 0x18, 0x00, 0x58, 0x55, 0xaa, 0x37, 0x2a, 0x81, 0xef, 0xb9, 0x45, 0x8d, 0xcb, 0x15, 0xc4, + 0x30, 0x56, 0xdf, 0x2f, 0x8b, 0xe3, 0xb7, 0xb7, 0x07, 0xc8, 0xa6, 0x43, 0x2c, 0x26, 0x78, + 0x58, 0xd1, 0xc3, 0x0c, 0xeb, 0x2e, 0x22, 0xcc, 0x41, 0x30, 0x0b, 0x6f, 0x80, 0x63, 0x16, + 0xad, 0xe9, 0xfd, 0x6a, 0xb7, 0xa5, 0xca, 0x22, 0x8c, 0xc8, 0x13, 0xfd, 0xe0, 0x1c, 0x3d, + 0xa7, 0x1c, 0x78, 0xa9, 0x2d, 0x56, 0x43, 0xe7, 0x90, 0x5b, 0x81, 0xf4, 0x03, 0x77, 0xfb, + 0xf1, 0xca, 0x31, 0x58, 0xe1, 0x14, 0x17, 0x66, 0x77, 0xde, 0x7e, 0xf5, 0x23, 0xe1, 0x9c, + 0x0a, 0x4e, 0x68, 0x42, 0xfc, 0xf0, 0xe4, 0xdc, 0x9a, 0x0a, 0x1a, 0xc3, 0xe8, 0x51, 0xac, + 0x92, 0x3d, 0xcf, 0x50, 0x8b, 0x6c, 0xae, 0xfe, 0xdd, 0xc5, 0x5f, 0x4c, 0x11, 0x4b, 0x24, + 0x0e, 0x47, 0x0c, 0x40, 0x9e, 0xf2, 0x9a, 0xc4, 0x4e, 0x13, 0x9e, 0xb9, 0x94, 0xb5, 0xf1, + 0x2a, 0x93, 0xcc, 0x4c, 0x44, 0xdf, 0xd0, 0x18, 0xd2, 0x75, 0x2c, 0x49, 0x89, 0xe2, 0x13, + 0x81, 0x6e, 0x65, 0xe2, 0xb4, 0xa4, 0x60, 0x80, 0xe6, 0xf1, 0xbe, 0x7f, 0xe9, 0xaf, 0x71, + 0x2b, 0xf3, 0x0d, 0x2b, 0x0e, 0xba, 0xae, 0x9d, 0x4d, 0xe1, 0x91, 0xc4, 0x90, 0x51, 0x7c, + 0xe6, 0x48, 0x5d, 0x7f, 0x02, 0x71, 0x85, 0xc2, 0xc4, 0xb0, 0x38, 0x2f, 0x87, 0x57, 0x75, + 0xcc, 0x77, 0xbf, 0xb3, 0x88, 0x79, 0xb5, 0x3f, 0x41, 0x45, 0xd1, 0x1f, 0x8f, 0x72, 0x8c, + 0x1c, 0xea, 0x3a, 0xbe, 0x96, 0x42, 0x75, 0x7f, 0x9c, 0x46, 0x45, 0xde, 0x33, 0x00, 0xbe, + 0x50, 0xbc, 0xf5, 0xe1, 0x30, 0xa4, 0xae, 0x5d, 0x6d, 0x39, 0x37, 0x48, 0xe5, 0x61, 0x20, + 0x4c, 0xe0, 0x08, 0x60, 0xa3, 0x8d, 0xdf, 0xaf, 0xeb, 0x56, 0x0c, 0xf7, 0x21, 0x4c, 0x8b, + 0x91, 0x6a, 0x89, 0x51, 0x81, 0xde, 0x67, 0x3c, 0xf3, 0x2d, 0x17, 0x90, 0xd2, 0x1f, 0x55, + 0x6f, 0x73, 0x49, 0x36, 0xc1, 0xde, 0xe6, 0x13, 0x69, 0xec, 0x37, 0x08, 0x8c, 0x2b, 0xd0, + 0xa6, 0xb7, 0xcb, 0x1e, 0x50, 0x50, 0x55, 0x43, 0x69, 0x9b, 0x2f, 0x59, 0xe9, 0x86, 0x23, + 0x32, 0x2a, 0x4f, 0x78, 0xa8, 0x8b, 0xe9, 0x9f, 0x11, 0xf4, 0xd0, 0x0a, 0x32, 0x4b, 0x2d, + 0x3c, 0x45, 0x79, 0x13, 0xcf, 0x26, 0x5c, 0x0e, 0xe4, 0x71, 0x17, 0x36, 0x04, 0xb9, 0x39, + 0xc2, 0xe9, 0x88, 0xa9, 0xbe, 0xa5, 0xfa, 0x8d, 0xe1, 0xcb, 0x58, 0xef, 0xf9, 0xf2, 0x89, + 0x1c, 0xa3, 0x15, 0x8b, 0x73, 0x1e, 0x61, 0xdc, 0xef, 0xe7, 0xe6, 0x76, 0x42, 0xef, 0x8a, + 0xf4, 0x7a, 0xe3, 0x42, 0xde, 0x7d, 0xfd, 0xa7, 0xbc, 0x56, 0xe3, 0x9d, 0x3c, 0x4a, 0x6a, + 0x96, 0x7f, 0xfd, 0xb2, 0xb1, 0xc8, 0x9a, 0xa8, 0x35, 0x26, 0x0f, 0x99, 0x90, 0x22, 0x8c, + 0xda, 0x11, 0x37, 0xff, 0x1c, 0xf7, 0x19, 0x0a, 0xe7, 0x9b, 0x33, 0x33, 0x76, 0xe0, 0xdf, + 0x0e, 0xd9, 0x3d, 0x0f, 0x1d, 0x1a, 0xe2, 0x44, 0xe8, 0x7f, 0x6a, 0xc8, 0x2d, 0xc4, 0x62, + 0x82, 0x58, 0x20, 0xb1, 0x87, 0x9d, 0xb7, 0x6e, 0xbb, 0x29, 0x3f, 0x14, 0x03, 0x25, 0x27, + 0xc0, 0xa1, 0xbf, 0xaf, 0xe4, 0xad, 0x97, 0xac, 0x30, 0x9c, 0x7e, 0x3e, 0x38, 0x15, 0xa3, + 0xc5, 0x6c, 0xc6, 0x7c, 0x46, 0x0c, 0x4c, 0xd9, 0xa4, 0xef, 0xf0, 0x18, 0x31, 0x62, 0xf4, + 0x70, 0xf8, 0xeb, 0xa9, 0x74, 0xf1, 0x7c, 0x4f, 0x06, 0x01, 0x76, 0x27, 0x7b, 0x5b, 0xcf, + 0xa3, 0xa2, 0x78, 0x8f, 0xa9, 0xcc, 0x8a, 0xdc, 0x57, 0x81, 0xfc, 0x58, 0xcf, 0x54, 0x61, + 0x63, 0x57, 0xc2, 0x68, 0x55, 0x19, 0x56, 0x39, 0xcd, 0xc5, 0xbf, 0xa7, 0x34, 0x2e, 0xe8, + 0x14, 0x01, 0x87, 0xeb, 0x0b, 0x5d, 0x16, 0x7d, 0xd3, 0xbe, 0x52, 0x57, 0xc3, 0xce, 0x96, + 0xb1, 0x49, 0xea, 0x61, 0xd0, 0x65, 0xf1, 0x39, 0x76, 0x8b, 0xdc, 0x32, 0x7c, 0xbd, 0x32, + 0x59, 0xd7, 0xb2, 0x2d, 0xce, 0xb5, 0x32, 0x2e, 0x8a, 0xe5, 0x28, 0xfa, 0xb9, 0x49, 0x9b, + 0x91, 0x78, 0x35, 0x83, 0x74, 0x99, 0xce, 0x40, 0x87, 0xbe, 0x49, 0xb1, 0x8f, 0x99, 0x82, + 0x83, 0x7f, 0x9a, 0x2b, 0x01, 0x30, 0x7c, 0xec, 0xe3, 0x82, 0x9e, 0x60, 0x12, 0x21, 0xa4, + 0x47, 0x10, 0xba, 0x7b, 0xd5, 0x73, 0xc5, 0x17, 0x26, 0x84, 0x3c, 0x63, 0xe4, 0x93, 0x21, + 0x82, 0x31, 0x8b, 0x17, 0x87, 0xfa, 0xa6, 0x81, 0x24, 0xb7, 0x2b, 0x5a, 0xd5, 0x9a, 0xcb, + 0x58, 0x45, 0xb6, 0xf6, 0xfd, 0xfd, 0x49, 0x42, 0x14, 0xe2, 0x4a, 0x51, 0xe9, 0x62, 0xf3, + 0xb6, 0xcb, 0xb8, 0xea, 0x9a, 0x98, 0x50, 0x0c, 0x3e, 0x8e, 0x1d, 0x42, 0x31, 0x51, 0xf8, + 0x5f, 0x51, 0xec, 0x13, 0x0d, 0x95, 0x1e, 0xc3, 0x24, 0xe2, 0x3b, 0xb2, 0x38, 0xba, 0x4e, + 0xb4, 0xbf, 0x96, 0x84, 0xb8, 0xd0, 0x0d, 0x16, 0xa7, 0xa2, 0xdb, 0x38, 0x7c, 0x8e, 0x0d, + 0x1b, 0xa0, 0x86, 0x29, 0x26, 0xd7, 0xdd, 0xb2, 0x8b, 0xb9, 0xee, 0x2d, 0x56, 0x40, 0x63, + 0x31, 0x09, 0xbb, 0x1f, 0xd6, 0x1c, 0xf4, 0x96, 0x99, 0xa0, 0xad, 0xa6, 0xaa, 0xf8, 0x82, + 0xa0, 0xe3, 0x37, 0x48, 0x0a, 0x37, 0xa1, 0x56, 0xab, 0xf6, 0xa2, 0x1b, 0xcc, 0x64, 0x6b, + 0xc3, 0xde, 0x36, 0xbb, 0x0e, 0x0b, 0x4b, 0x38, 0xe5, 0xfe, 0x2d, 0x7b, 0x18, 0x71, 0xdc, + 0x1e, 0xdd, 0x57, 0x2d, 0xfd, 0x6e, 0xfd, 0x09, 0xca, 0x10, 0x83, 0x6c, 0xaa, 0xb4, 0xf0, + 0x61, 0x42, 0xaa, 0x33, 0xfa, 0xc3, 0x94, 0xdb, 0x56, 0xba, 0x03, 0x19, 0xb8, 0x6c, 0x26, + 0xa4, 0x5d, 0x00, 0xb8, 0xba, 0xfe, 0xe2, 0x25, 0x33, 0xbb, 0xab, 0x1d, 0x84, 0xa6, 0x91, + 0x0f, 0xab, 0xe6, 0x4b, 0x7f, 0x83, 0x3c, 0xc1, 0x98, 0xf4, 0x7d, 0x89, 0xbf, 0xc8, 0x88, + 0x79, 0x5e, 0x22, 0xc1, 0x49, 0x8c, 0x7a, 0x13, 0x32, 0xe4, 0x4d, 0xc9, 0x4c, 0x63, 0xeb, + 0xc2, 0xe1, 0x36, 0x65, 0x24, 0x71, 0x44, 0xed, 0xec, 0xd4, 0x52, 0x03, 0x7e, 0xa7, 0xdf, + 0x44, 0xa4, 0x9b, 0xe2, 0x17, 0x43, 0x5c, 0x01, 0x9a, 0x8a, 0x7c, 0xc4, 0x04, 0xd2, 0xe1, + 0x37, 0x6c, 0xba, 0x6a, 0x56, 0xa4, 0x19, 0x05, 0x4a, 0x75, 0x3f, 0x3f, 0xee, 0xed, 0x45, + 0x65, 0x86, 0x1d, 0x1d, 0x5a, 0x7d, 0x35, 0x61, 0x8d, 0x98, 0x86, 0x31, 0x81, 0xe6, 0xd0, + 0x94, 0x47, 0x0a, 0x8e, 0xb3, 0x78, 0xa5, 0x39, 0xbe, 0x3c, 0x18, 0x1c, 0xff, 0x1c, 0x36, + 0x22, 0xc6, 0xe7, 0x71, 0xb2, 0x34, 0x4d, 0xf2, 0x2e, 0xb1, 0x93, 0x11, 0x38, 0xdd, 0xd4, + 0xc6, 0x9b, 0xd5, 0x53, 0x07, 0x61, 0xbd, 0x31, 0x19, 0xbb, 0xd9, 0x1f, 0x9c, 0x6a, 0xac, + 0x13, 0xa2, 0x61, 0x37, 0x8e, 0x1f, 0x22, 0x9a, 0xa0, 0x14, 0x0c, 0x09, 0xd6, 0xa8, 0x1c, + 0x08, 0x05, 0x24, 0x18, 0x18, 0x6d, 0xa1, 0x73, 0x45, 0x1d, 0x77, 0xfb, 0x91, 0xa5, 0x83, + 0xb0, 0x70, 0x53, 0x90, 0x4b, 0x4c, 0x36, 0x85, 0xf4, 0x9f, 0x98, 0x61, 0xa9, 0x1e, 0x80, + 0x0f, 0x30, 0x79, 0x3c, 0xc9, 0xad, 0xb0, 0x94, 0x1a, 0x0a, 0x14, 0xab, 0xcd, 0x76, 0x3b, + 0x8f, 0x3b, 0xe9, 0x6e, 0x3f, 0x31, 0x38, 0x98, 0xd6, 0xb8, 0xd6, 0x8e, 0xab, 0x4f, 0x38, + 0xc4, 0x55, 0xdd, 0x59, 0xf8, 0x72, 0x17, 0x71, 0x1a, 0x6b, 0x04, 0x1b, 0x83, 0x1f, 0x56, + 0x9e, 0x57, 0x38, 0xe0, 0xe0, 0x41, 0x4f, 0x14, 0x77, 0x9a, 0x25, 0x3a, 0x8e, 0x0a, 0xad, + 0x60, 0x8a, 0x7c, 0xb5, 0x4a, 0x90, 0x1c, 0x56, 0x30, 0xff, 0x98, 0x04, 0x32, 0xa4, 0xf8, + 0xe5, 0xe7, 0x0c, 0x01, 0xb3, 0x28, 0x3a, 0xc4, 0xa2, 0xca, 0x5e, 0x0a, 0x4c, 0xe8, 0x89, + 0x9e, 0xdc, 0xc5, 0xca, 0xc7, 0x0b, 0x53, 0x92, 0x96, 0x90, 0x18, 0x02, 0x77, 0x50, 0xee, + 0xaf, 0x61, 0x93, 0xcb, 0xee, 0x10, 0x84, 0xff, 0x05, 0x00, 0xec, 0x99, 0x41, 0xa0, 0xa5, + 0xfc, 0xad, 0x0f, 0xdd, 0x40, 0x29, 0xa6, 0xeb, 0x8d, 0x97, 0x24, 0xa8, 0x71, 0x4d, 0xd8, + 0x5a, 0xcf, 0x3d, 0x99, 0x25, 0x1a, 0x28, 0x85, 0xa8, 0xc9, 0xcc, 0x03, 0x16, 0xe3, 0xbd, + 0x33, 0x92, 0x52, 0xeb, 0x0b, 0x39, 0xcb, 0x22, 0x8d, 0xdf, 0x04, 0x9f, 0x70, 0x32, 0xf8, + 0x2a, 0xa1, 0x57, 0x16, 0x43, 0x81, 0x99, 0x3e, 0x4c, 0xa1, 0xd2, 0x33, 0x82, 0xa7, 0x6e, + 0xfe, 0x5f, 0x34, 0x0c, 0x43, 0xd1, 0x33, 0x24, 0x4e, 0x7e, 0x98, 0x84, 0x1b, 0x33, 0x68, + 0x9f, 0xc6, 0xea, 0xa4, 0x2e, 0xb9, 0x3e, 0x3d, 0x1a, 0x45, 0xbe, 0xe1, 0x3e, 0x85, 0xeb, + 0x56, 0xd9, 0x37, 0x9e, 0xdb, 0x3c, 0x11, 0x6b, 0x0a, 0xcb, 0x0d, 0x2a, 0x12, 0x6f, 0xf0, + 0x10, 0xbc, 0xdc, 0xd3, 0x6c, 0x2f, 0x05, 0x95, 0xce, 0x53, 0x4d, 0x5d, 0x11, 0x2c, 0xe3, + 0xe4, 0xfa, 0x1f, 0x98, 0xe0, 0xef, 0x35, 0xcb, 0xbe, 0xc1, 0x21, 0xa8, 0xf3, 0x16, 0x06, + 0x72, 0x8e, 0x74, 0xad, 0xe9, 0xca, 0x9c, 0x43, 0x37, 0x12, 0xa1, 0xad, 0xc6, 0xe0, 0x1d, + 0x8a, 0x23, 0xaf, 0x7e, 0xe2, 0x2d, 0x88, 0xe6, 0xbd, 0xc4, 0xf9, 0xbf, 0x02, 0x34, 0xf8, + 0xc0, 0x36, 0x2c, 0x6c, 0x79, 0x52, 0xad, 0xa4, 0x12, 0x6d, 0x29, 0xde, 0x89, 0x0e, 0xc3, + 0xf2, 0xb2, 0xc3, 0xf4, 0x07, 0xcf, 0x34, 0xba, 0xdc, 0x72, 0x58, 0xaa, 0x83, 0x8b, 0x82, + 0x9b, 0x9b, 0x87, 0x76, 0x2d, 0x7c, 0x82, 0x9b, 0xfb, 0x3e, 0xc1, 0xcb, 0x52, 0x5e, 0xb3, + 0x91, 0xdd, 0x29, 0xd2, 0x67, 0x22, 0x4a, 0xd9, 0x8e, 0x43, 0x30, 0x24, 0x48, 0xf4, 0x5d, + 0xe1, 0x24, 0x2f, 0x5a, 0x7c, 0xbb, 0xaa, 0x74, 0xd7, 0xb7, 0x34, 0x9b, 0xbd, 0xa1, 0x93, + 0x3e, 0x9c, 0x14, 0x8a, 0x50, 0xbd, 0xf3, 0x74, 0x6a, 0xf2, 0x4d, 0xb9, 0xf4, 0x3c, 0xbc, + 0xd2, 0xf7, 0x91, 0x08, 0xe0, 0x9b, 0x97, 0xd3, 0xed, 0x7c, 0x85, 0x7a, 0xaf, 0xaf, 0x88, + 0x80, 0xeb, 0x77, 0xd8, 0x35, 0x87, 0x4f, 0x50, 0x6d, 0xff, 0x03, 0xf7, 0x4d, 0xa2, 0xf2, + 0x22, 0xdb, 0x17, 0x05, 0x00, 0xb5, 0xa1, 0xd2, 0xf7, 0xd2, 0xfb, 0xa1, 0xf0, 0x8e, 0xc5, + 0xe4, 0xf0, 0xd6, 0x13, 0xf0, 0xcd, 0xa6, 0x44, 0x25, 0xd4, 0x6a, 0x41, 0xa6, 0xb6, 0x06, + 0x93, 0xae, 0xc1, 0x3b, 0x3b, 0x34, 0x16, 0x37, 0x7c, 0x3e, 0x7e, 0x16, 0xca, 0xc1, 0xd9, + 0xd1, 0x67, 0x34, 0x59, 0x6a, 0x6f, 0x68, 0xe5, 0x28, 0x69, 0xfd, 0x53, 0x41, 0xf7, 0x3d, + 0x17, 0x28, 0x70, 0xc7, 0x23, 0x00, 0x2a, 0x1c, 0x06, 0x9d, 0x2c, 0x7c, 0x73, 0xf1, 0xe3, + 0xfb, 0xb3, 0xae, 0x77, 0xdb, 0x8d, 0x7d, 0x57, 0x2c, 0xa1, 0x92, 0x13, 0x55, 0xd9, 0x2d, + 0x27, 0xe8, 0x4b, 0x83, 0x63, 0x54, 0x86, 0xd1, 0x86, 0xdd, 0xcc, 0x1f, 0x5d, 0x08, 0x08, + 0xae, 0x21, 0x21, 0xb9, 0xec, 0x36, 0x79, 0x21, 0xbe, 0x5f, 0xed, 0x04, 0x92, 0xfd, 0xee, + 0x8f, 0xa2, 0x6f, 0x8d, 0x70, 0xa5, 0xf4, 0xe4, 0x10, 0xd4, 0xaa, 0x8b, 0xd7, 0x12, 0x30, + 0xc0, 0xba, 0xb5, 0xef, 0x87, 0x59, 0xc1, 0x39, 0xb0, 0xcd, 0x82, 0x45, 0xe8, 0xf8, 0x84, + 0x5b, 0x72, 0xd8, 0xc0, 0x13, 0x95, 0x30, 0x18, 0x54, 0xb5, 0x05, 0x6d, 0x05, 0x36, 0x43, + 0xbd, 0xd5, 0x4e, 0xcb, 0x2f, 0xd6, 0x58, 0x08, 0x36, 0x1d, 0xc9, 0xd0, 0xa5, 0xd8, 0xc6, + 0x9b, 0xd2, 0x4f, 0xdd, 0xab, 0xff, 0xec, 0xa3, 0x42, 0x69, 0x94, 0xde, 0xa4, 0x83, 0xdb, + 0x9c, 0x2c, 0x0f, 0x5f, 0xfe, 0x3f, 0xa6, 0xef, 0x59, 0xb8, 0x28, 0x97, 0x3c, 0x78, 0x44, + 0xce, 0x7e, 0x37, 0xe8, 0xd3, 0x1f, 0x61, 0x4a, 0x4e, 0xa8, 0xf4, 0xa7, 0xf1, 0x1f, 0x0c, + 0x0e, 0xe2, 0x67, 0xdc, 0x94, 0x1f, 0xe5, 0xb1, 0xf8, 0xad, 0x3c, 0x07, 0x1f, 0xcb, 0xa5, + 0xcb, 0xc2, 0xb6, 0x51, 0xa9, 0x63, 0x42, 0xe9, 0xa8, 0x5e, 0xfa, 0xdf, 0x03, 0xd4, 0x25, + 0xb5, 0xbf, 0xfd, 0xb6, 0xaf, 0x70, 0xb7, 0x91, 0x9e, 0x5c, 0xb5, 0xfb, 0xec, 0x1f, 0x73, + 0x2f, 0xca, 0xa5, 0xc1, 0x70, 0x8d, 0x09, 0x51, 0xa6, 0xe7, 0x29, 0xc3, 0xa6, 0x18, 0x0d, + 0xb3, 0x7d, 0xbe, 0x14, 0x90, 0xac, 0xfb, 0xce, 0xad, 0xe8, 0xe4, 0x39, 0xc0, 0x24, 0xee, + 0x33, 0x83, 0x0e, 0x61, 0x24, 0x02, 0xe5, 0x9c, 0x2f, 0x7a, 0x45, 0x74, 0xa0, 0x68, 0x89, + 0x19, 0xe6, 0x55, 0x32, 0xbe, 0x82, 0x8f, 0x34, 0x88, 0xc3, 0x24, 0x12, 0x96, 0x0a, 0x5e, + 0x03, 0xf2, 0xfe, 0x6c, 0xcc, 0x3a, 0x07, 0x86, 0x60, 0x70, 0x04, 0xe3, 0xa5, 0x48, 0x2d, + 0x2a, 0x2b, 0xac, 0x96, 0x8e, 0x31, 0x73, 0x37, 0x67, 0x68, 0x3f, 0x90, 0xb9, 0xf1, 0x51, + 0xfc, 0x28, 0xf0, 0x2f, 0xe8, 0xe2, 0x13, 0xc3, 0x12, 0xea, 0x04, 0x58, 0x42, 0x6b, 0x20, + 0x62, 0x22, 0x03, 0x4c, 0x75, 0x1c, 0x57, 0xc7, 0x3c, 0x13, 0x2c, 0x78, 0xf7, 0x14, 0x19, + 0x7f, 0x13, 0x8a, 0x6a, 0x26, 0x4b, 0xa6, 0x6b, 0x5f, 0xee, 0x87, 0xb9, 0x64, 0x8e, 0xf0, + 0xd2, 0x10, 0x29, 0x3d, 0x46, 0x3f, 0xe6, 0xe8, 0xc6, 0xd9, 0x09, 0x49, 0x00, 0x4d, 0xfb, + 0xb2, 0x3b, 0x4e, 0xe4, 0x04, 0x6c, 0x1d, 0x1d, 0x72, 0x01, 0x10, 0x88, 0x6d, 0xaf, 0x14, + 0x55, 0x82, 0x11, 0xa9, 0xab, 0x56, 0x7b, 0x9f, 0x9d, 0xb9, 0xf0, 0xf6, 0xbf, 0x0d, 0x2f, + 0x9c, 0x39, 0x16, 0x1a, 0x93, 0x99, 0xec, 0xf2, 0x36, 0x6b, 0xc8, 0x21, 0xf5, 0x8f, 0xac, + 0xd4, 0x8e, 0x77, 0x47, 0x89, 0x45, 0xc2, 0xa6, 0x26, 0x99, 0x5c, 0xc0, 0x7d, 0x87, 0xe2, + 0x2a, 0x85, 0x9e, 0x08, 0xbc, 0x03, 0x70, 0xe0, 0x61, 0x2d, 0x0b, 0x69, 0xa3, 0x18, 0x2d, + 0x7f, 0x2f, 0x5b, 0x23, 0x53, 0x07, 0x65, 0x59, 0x46, 0x0e, 0x81, 0xdd, 0xa9, 0x22, 0xff, + 0x25, 0x1a, 0x1e, 0x62, 0xdd, 0xac, 0x3f, 0x27, 0xe9, 0xa4, 0x1b, 0xd1, 0xe8, 0x58, 0x55, + 0xfa, 0x46, 0x46, 0xde, 0x0b, 0xd8, 0xf9, 0x73, 0x79, 0x19, 0x5f, 0xf0, 0x9a, 0x1d, 0x54, + 0xdf, 0xd8, 0x82, 0x3e, 0x8c, 0xb0, 0xa3, 0x81, 0x28, 0x11, 0xfb, 0x20, 0xad, 0xa1, 0xa7, + 0x51, 0x86, 0x85, 0x1a, 0x2c, 0x69, 0x5f, 0x0e, 0x6f, 0x5a, 0x12, 0x88, 0x9e, 0xee, 0xdd, + 0x9a, 0xce, 0x07, 0xa1, 0xbf, 0x8c, 0x83, 0xd5, 0xa0, 0x07, 0x08, 0x33, 0xfe, 0x64, 0xa3, + 0x9d, 0xe1, 0xca, 0xcb, 0xcf, 0xcf, 0xca, 0xc1, 0xe3, 0x01, 0x20, 0xac, 0xd2, 0xa1, 0xcb, + 0x9b, 0x31, 0xa2, 0x0e, 0x6d, 0xf2, 0xe5, 0x4b, 0xbd, 0xad, 0x4c, 0x87, 0x49, 0x1f, 0xd8, + 0x0d, 0x28, 0x37, 0xe3, 0x74, 0x2f, 0x8e, 0xbb, 0xd0, 0x5e, 0x53, 0x87, 0x3d, 0x4a, 0xc9, + 0xe2, 0x56, 0x18, 0xd2, 0xf2, 0x35, 0x94, 0xa2, 0x94, 0xa8, 0xc8, 0xd1, 0xbb, 0x94, 0xa4, + 0x11, 0x7b, 0xde, 0xc3, 0xd2, 0xe4, 0x4d, 0x5c, 0x65, 0x50, 0xad, 0xf4, 0xde, 0x3c, 0x1d, + 0x90, 0xb8, 0xde, 0x77, 0xc8, 0x68, 0x07, 0x4e, 0x19, 0x68, 0x5c, 0xca, 0xeb, 0xb1, 0xe6, + 0x90, 0x58, 0x0a, 0x55, 0x21, 0xd0, 0x7a, 0x71, 0xd0, 0xf0, 0xbc, 0x9b, 0x8b, 0x59, 0x3d, + 0x4a, 0x6c, 0x2b, 0xf4, 0x80, 0x3b, 0xf0, 0x7d, 0x80, 0xf4, 0x6a, 0x56, 0xfd, 0xe5, 0x50, + 0xa7, 0xf8, 0x07, 0xdc, 0x05, 0xa9, 0x3c, 0x33, 0xd1, 0x36, 0x21, 0xbb, 0xd6, 0x76, 0xdd, + 0x3e, 0x85, 0x62, 0x54, 0x85, 0x47, 0xdf, 0xee, 0x3e, 0x04, 0xef, 0x2b, 0x23, 0xec, 0x03, + 0xe2, 0x59, 0x21, 0x65, 0xa5, 0xe4, 0x09, 0x09, 0x2c, 0xfd, 0x2b, 0x41, 0x5b, 0x1b, 0x05, + 0x4b, 0x46, 0xf8, 0x50, 0x24, 0xb0, 0x9e, 0x0a, 0x60, 0xe2, 0xf7, 0x88, 0xd5, 0xb1, 0xd6, + 0xb8, 0x93, 0x52, 0x2b, 0x45, 0x14, 0x0f, 0x93, 0x0e, 0x86, 0xca, 0x42, 0x6e, 0x6e, 0xe2, + 0x14, 0x67, 0xe0, 0x04, 0x11, 0xdf, 0xff, 0x23, 0x7e, 0xf2, 0x75, 0x99, 0x23, 0x37, 0x45, + 0x8c, 0xf9, 0x58, 0x1d, 0xbc, 0x9f, 0xf3, 0xa7, 0xc9, 0x67, 0x0b, 0x4a, 0xa7, 0x03, 0x61, + 0xc1, 0x78, 0x24, 0x9e, 0x7c, 0x17, 0x70, 0xcb, 0xf9, 0xd2, 0xf0, 0x22, 0x9f, 0xc8, 0x92, + 0xfe, 0xa9, 0x11, 0xf7, 0xec, 0xf6, 0x53, 0xad, 0x49, 0x96, 0xc5, 0x99, 0x07, 0xd9, 0xd5, + 0xd4, 0x35, 0x00, 0x1f, 0x92, 0x4f, 0xb1, 0x9d, 0x13, 0x91, 0xd6, 0x61, 0x70, 0x23, 0x2a, + 0x06, 0xb7, 0xb9, 0xe2, 0x61, 0xf4, 0xa5, 0x56, 0x12, 0x1b, 0xae, 0x96, 0x72, 0xd9, 0x2d, + 0x31, 0xb4, 0x65, 0xd5, 0x46, 0x98, 0x77, 0x7a, 0xb4, 0xa2, 0x09, 0x5b, 0xa5, 0xae, 0xa1, + 0xfe, 0xfa, 0x94, 0xc5, 0x38, 0x88, 0xcb, 0xe3, 0x65, 0x48, 0x5f, 0x02, 0x88, 0x60, 0x1f, + 0x07, 0x36, 0xec, 0x80, 0xc8, 0x1f, 0x41, 0x0b, 0x41, 0x0a, 0xb0, 0x37, 0xd6, 0x31, 0x49, + 0x7c, 0x23, 0x3b, 0x2e, 0xe9, 0xae, 0x62, 0xf6, 0xd2, 0x85, 0xf1, 0xe9, 0x45, 0x79, 0x6d, + 0x2f, 0xd3, 0x29, 0x05, 0x50, 0xa8, 0xa0, 0xa5, 0xa9, 0xb9, 0xef, 0xd1, 0xec, 0xa9, 0x41, + 0x5f, 0xd9, 0x01, 0x55, 0x8b, 0x26, 0xd4, 0xdf, 0x28, 0x31, 0xc2, 0x7e, 0xcc, 0xa9, 0xc6, + 0x2f, 0xe2, 0xf6, 0xa3, 0x62, 0x00, 0x6a, 0x83, 0x66, 0x38, 0xa5, 0xef, 0x51, 0xc9, 0x10, + 0xb0, 0x0a, 0x52, 0x2d, 0xed, 0xa2, 0x75, 0x28, 0x23, 0xe0, 0xe0, 0x61, 0xac, 0xf1, 0x6a, + 0x62, 0x14, 0x43, 0xa4, 0x53, 0x03, 0xa4, 0x23, 0x8a, 0x91, 0x3d, 0x60, 0xea, 0xf3, 0x87, + 0xac, 0x21, 0x0e, 0xc2, 0x69, 0x70, 0x8b, 0xc7, 0x3a, 0xf9, 0x83, 0xcd, 0xe2, 0xad, 0x88, + 0x16, 0xc2, 0x65, 0x55, 0xb8, 0xcc, 0x57, 0x32, 0xa2, 0x1a, 0xe6, 0x62, 0xf1, 0x91, 0x60, + 0x8d, 0x85, 0xf4, 0x7c, 0xf9, 0x73, 0xf7, 0xb0, 0x6a, 0xa6, 0x49, 0xe2, 0x04, 0x71, 0xd0, + 0x16, 0xc8, 0x2d, 0x8f, 0xfa, 0x0f, 0x8a, 0x54, 0xff, 0xb1, 0x8a, 0x28, 0x85, 0xff, 0x6e, + 0x06, 0xcd, 0x50, 0x01, 0x9d, 0x17, 0x3a, 0x46, 0x7b, 0x74, 0xb6, 0xda, 0xf7, 0x58, 0x02, + 0xfc, 0x3d, 0x5e, 0x6e, 0x56, 0xbb, 0xd3, 0x10, 0x8d, 0x7a, 0xfa, 0x85, 0xc3, 0x16, 0xff, + 0x6d, 0x22, 0x4d, 0x4d, 0x95, 0x00, 0x21, 0xcb, 0x78, 0x3f, 0x47, 0xf2, 0xee, 0x02, 0x49, + 0x95, 0xf3, 0x5d, 0x56, 0x84, 0x8c, 0xed, 0x55, 0x25, 0x12, 0xff, 0xc9, 0x1d, 0xb8, 0xcb, + 0x06, 0xfa, 0xce, 0x0b, 0x41, 0x87, 0xf9, 0x0c, 0x86, 0xc4, 0x46, 0x91, 0xcd, 0xe9, 0xa3, + 0x25, 0xdd, 0x92, 0x22, 0x88, 0xd9, 0x19, 0x17, 0xbb, 0xf9, 0x38, 0x0e, 0xe7, 0xd4, 0x55, + 0xc1, 0xcf, 0x00, 0xf7, 0xec, 0x31, 0x5e, 0x75, 0x17, 0x01, 0xd7, 0xc5, 0x16, 0x2c, 0x39, + 0x7e, 0x49, 0x4d, 0x27, 0x88, 0x81, 0xc5, 0x1a, 0xb1, 0xb4, 0x7f, 0x15, 0x6e, 0xb9, 0x81, + 0xca, 0xf3, 0x6b, 0xf6, 0x34, 0xbc, 0xbb, 0x41, 0xc0, 0x90, 0xe8, 0x00, 0xdf, 0x07, 0x81, + 0x35, 0x39, 0x05, 0x24, 0xe9, 0x87, 0x93, 0xc2, 0x34, 0xe1, 0xd5, 0xbd, 0x63, 0x3a, 0x55, + 0x66, 0x42, 0xd0, 0x60, 0xe9, 0x46, 0x1c, 0xf6, 0x4c, 0x3e, 0xb1, 0x20, 0x9f, 0xeb, 0x5a, + 0xba, 0x96, 0x7d, 0x6b, 0x7f, 0xc0, 0x64, 0x9d, 0xb8, 0xe7, 0x32, 0xfc, 0xe0, 0x7f, 0x1f, + 0x20, 0xa6, 0xc0, 0x40, 0x6f, 0xba, 0x75, 0x0f, 0x23, 0xe6, 0x33, 0xb1, 0x3e, 0x1b, 0x68, + 0x5b, 0x10, 0x2a, 0x25, 0xfe, 0xe1, 0xdc, 0x79, 0x51, 0x7e, 0x6d, 0x26, 0xea, 0x5b, 0x20, + 0xf6, 0xd0, 0x6f, 0xd4, 0x30, 0x63, 0x44, 0x33, 0x9a, 0xf8, 0x21, 0x35, 0x9e, 0xe2, 0x92, + 0xe2, 0x36, 0x37, 0x69, 0xe6, 0x1c, 0xc4, 0xbe, 0xae, 0x91, 0x87, 0x10, 0x37, 0x77, 0xb6, + 0xe7, 0x07, 0x61, 0x9a, 0xd8, 0x6e, 0xd1, 0x4b, 0x58, 0x4b, 0x8b, 0x16, 0x01, 0x45, 0x16, + 0x84, 0xfd, 0xf9, 0x79, 0x26, 0xbe, 0x5b, 0x20, 0xe5, 0xdf, 0xf3, 0xc2, 0xeb, 0x85, 0x1d, + 0xfd, 0xca, 0x49, 0xd1, 0x6b, 0x86, 0x9b, 0x3e, 0x74, 0xa6, 0x59, 0xc6, 0xb1, 0x65, 0x16, + 0xca, 0x45, 0x3f, 0xee, 0x2d, 0x28, 0x76, 0x89, 0x76, 0x3b, 0x95, 0xc2, 0x5c, 0x32, 0x64, + 0x5a, 0x15, 0x32, 0x16, 0x1a, 0xb9, 0xf6, 0x19, 0x99, 0x95, 0x41, 0x8f, 0x6c, 0x16, 0xd9, + 0x6a, 0x37, 0x00, 0x7a, 0xc5, 0x6c, 0x2a, 0x2d, 0x04, 0x33, 0xb8, 0x3a, 0xac, 0x90, 0x69, + 0xe1, 0xe8, 0x07, 0xc3, 0xcc, 0x85, 0x1e, 0x27, 0x3e, 0x7f, 0x50, 0xdd, 0x31, 0xec, 0x1f, + 0xda, 0x20, 0x87, 0x0d, 0xce, 0xf7, 0x1a, 0x21, 0x47, 0x69, 0x15, 0x90, 0xa9, 0x68, 0x15, + 0x32, 0x52, 0x21, 0xdc, 0xc7, 0xd1, 0x64, 0x12, 0xdb, 0x57, 0xbc, 0x38, 0xec, 0xdd, 0xd3, + 0x54, 0x61, 0xbb, 0xb4, 0xba, 0x1a, 0x2d, 0xab, 0x68, 0x56, 0x29, 0x06, 0x3c, 0x74, 0xec, + 0x61, 0x4a, 0x9c, 0xc5, 0x4d, 0xe6, 0x55, 0x2e, 0x89, 0xa4, 0xa6, 0x4d, 0xcb, 0xd0, 0x6f, + 0x70, 0x02, 0xa1, 0x3f, 0xd9, 0x29, 0xd8, 0x3b, 0x43, 0xb2, 0xd2, 0x6a, 0x72, 0x90, 0x9c, + 0x22, 0xfd, 0xb3, 0x59, 0x5a, 0xb8, 0xb1, 0xff, 0x49, 0xfc, 0x10, 0xa5, 0xf0, 0xe0, 0x59, + 0xc3, 0x43, 0x61, 0x1e, 0x43, 0xcc, 0x85, 0x8b, 0xd2, 0x37, 0x0b, 0xae, 0x9f, 0xf0, 0xd5, + 0x76, 0xb9, 0x5c, 0x0d, 0x55, 0x9b, 0x6d, 0x92, 0x88, 0xb4, 0x9e, 0xe3, 0xef, 0x0f, 0x21, + 0x81, 0x51, 0x5c, 0x91, 0x97, 0xec, 0xc0, 0x16, 0xfe, 0x32, 0xcd, 0x06, 0x08, 0x2a, 0x37, + 0xfa, 0xbb, 0xa4, 0xdd, 0xf3, 0x29, 0xf1, 0x25, 0xc2, 0x12, 0xf6, 0xa1, 0x4b, 0xaa, 0x3c, + 0xb3, 0x1b, 0x7b, 0xcd, 0xf5, 0xca, 0xfb, 0x7f, 0xfa, 0xce, 0x71, 0x61, 0x1a, 0x0e, 0xef, + 0x7e, 0x51, 0xde, 0x73, 0x97, 0x3d, 0x67, 0xcf, 0xbe, 0x24, 0x44, 0xb7, 0x59, 0x4d, 0xe3, + 0xb0, 0x90, 0xd9, 0x43, 0xfa, 0x39, 0xb7, 0xcf, 0x78, 0x83, 0x5b, 0xcc, 0x20, 0xd9, 0x5b, + 0x35, 0xda, 0xd4, 0x28, 0xff, 0xd5, 0x9e, 0x22, 0x0d, 0x2f, 0xbe, 0x32, 0xe6, 0x02, 0xdb, + 0xa4, 0x24, 0xd6, 0x6c, 0x9c, 0x85, 0x8c, 0x16, 0xd7, 0x55, 0x0a, 0xd2, 0x52, 0x47, 0x82, + 0x38, 0x59, 0x37, 0xb7, 0x21, 0x2d, 0x2d, 0x44, 0x35, 0x0a, 0xea, 0x27, 0x9f, 0xbe, 0x18, + 0xaf, 0x7f, 0x65, 0x77, 0xba, 0x7e, 0x9b, 0x6d, 0xd4, 0xdf, 0xfc, 0xb1, 0x6f, 0x80, 0x34, + 0x3a, 0xa4, 0x42, 0xa4, 0x02, 0x34, 0x80, 0xd5, 0x7d, 0xb2, 0xd0, 0xe4, 0x29, 0x98, 0xee, + 0x64, 0x2e, 0x5f, 0x1b, 0x49, 0xed, 0x51, 0xb1, 0x16, 0x69, 0x77, 0xd7, 0x41, 0x29, 0x57, + 0x3a, 0x8a, 0x45, 0x2b, 0xc9, 0x45, 0x01, 0x35, 0x5a, 0x16, 0x6d, 0x63, 0x4e, 0x1c, 0x47, + 0x7d, 0x0f, 0x18, 0x93, 0x69, 0x39, 0xbf, 0xc8, 0xce, 0x6f, 0x4c, 0x57, 0x12, 0xb0, 0x9d, + 0xbd, 0x41, 0x4d, 0xb8, 0x4d, 0xf1, 0x9c, 0x19, 0x16, 0x7f, 0x75, 0x12, 0xaa, 0xa4, 0xbc, + 0xc3, 0x47, 0x0a, 0x97, 0x46, 0x5b, 0x2e, 0x86, 0x23, 0xe2, 0x15, 0xfc, 0x5d, 0x19, 0xa6, + 0x3a, 0xf2, 0xb3, 0x1e, 0x17, 0x56, 0x5e, 0x46, 0x98, 0xe7, 0x06, 0x79, 0xc6, 0x0c, 0x84, + 0x1d, 0x0c, 0xad, 0x2a, 0xb9, 0x9f, 0xd1, 0x78, 0xbf, 0x38, 0x49, 0x2a, 0x73, 0x4b, 0xb5, + 0x52, 0xee, 0x4b, 0x0a, 0x48, 0xc3, 0x44, 0xc6, 0xf2, 0x04, 0xff, 0x67, 0x0b, 0x30, 0x18, + 0xa6, 0x05, 0xbd, 0xe9, 0x03, 0x4e, 0x8c, 0x18, 0x4d, 0xc6, 0x7c, 0x8f, 0x22, 0xb7, 0x3c, + 0xed, 0xca, 0x28, 0x07, 0xea, 0xc7, 0xce, 0x54, 0x47, 0xb4, 0x97, 0x7d, 0x15, 0x0c, 0x21, + 0x81, 0xdf, 0x0c, 0x10, 0x8f, 0x24, 0xb8, 0x77, 0xfa, 0x6f, 0xf7, 0x8f, 0xb2, 0xf0, 0x0e, + 0xe1, 0xaa, 0xea, 0xc1, 0x85, 0x9a, 0x93, 0xf8, 0x68, 0x92, 0x1c, 0x3d, 0x53, 0xd0, 0x74, + 0x27, 0x1c, 0xa4, 0x4d, 0xac, 0xf9, 0xf6, 0xc2, 0x4a, 0xd0, 0x35, 0x93, 0x24, 0xaa, 0xf0, + 0x80, 0x97, 0x6f, 0x91, 0xfb, 0x49, 0x39, 0x7c, 0xcb, 0xf1, 0xf0, 0x20, 0x2e, 0xc2, 0xb3, + 0xff, 0xdd, 0x94, 0x19, 0x72, 0xe5, 0x6f, 0x73, 0x54, 0xbf, 0x54, 0x7a, 0x3c, 0x78, 0x7f, + 0x96, 0xd4, 0x74, 0x1c, 0x0b, 0xd7, 0x16, 0x59, 0xfc, 0xa8, 0x65, 0x8a, 0x07, 0xfc, 0x05, + 0xf7, 0x7b, 0xb8, 0x07, 0x0c, 0x11, 0x20, 0xb7, 0x8f, 0xb1, 0xa2, 0x1e, 0x3f, 0xcc, 0x5e, + 0x9a, 0x9d, 0x09, 0xe0, 0x29, 0x9e, 0x9e, 0x37, 0xb6, 0x3d, 0x33, 0xec, 0x7c, 0x42, 0x7a, + 0xda, 0xe4, 0xf7, 0x69, 0x82, 0xe8, 0xca, 0x2b, 0xd0, 0x95, 0xf9, 0x94, 0xea, 0xa7, 0x09, + 0xc4, 0xac, 0xde, 0x8f, 0x10, 0x17, 0xf7, 0x41, 0xe9, 0xef, 0x92, 0x43, 0x19, 0x7b, 0xff, + 0x08, 0x30, 0xcf, 0xbc, 0x1b, 0x13, 0xb8, 0x6f, 0x39, 0x12, 0xb5, 0x57, 0x55, 0xda, 0xb8, + 0xda, 0x47, 0x10, 0x7b, 0xbe, 0x32, 0x4a, 0x1b, 0x83, 0xa7, 0x6d, 0x52, 0xd2, 0xef, 0x04, + 0x42, 0x1e, 0x73, 0xd2, 0x83, 0x15, 0x90, 0x77, 0xe3, 0xd9, 0xbd, 0x22, 0x19, 0xf0, 0x7a, + 0x69, 0x81, 0x38, 0x6f, 0x47, 0xa8, 0x8e, 0x9a, 0x21, 0xc1, 0x5e, 0x9b, 0x76, 0x31, 0xa6, + 0x34, 0x9b, 0x0d, 0x37, 0x94, 0x4b, 0xd8, 0xff, 0x5d, 0xb8, 0x10, 0xc5, 0x42, 0x01, 0xef, + 0xe6, 0x8e, 0x8a, 0x3e, 0xd7, 0x28, 0xcc, 0xa4, 0xf7, 0x7f, 0x17, 0x9a, 0xb6, 0x24, 0x42, + 0xc4, 0x4e, 0x43, 0x66, 0xd3, 0xbc, 0xde, 0xde, 0x93, 0x95, 0x67, 0x21, 0x3a, 0xf1, 0x70, + 0x00, 0x9b, 0xf7, 0x4c, 0xbf, 0xca, 0x0c, 0x4a, 0x03, 0xce, 0x57, 0x37, 0x49, 0x8b, 0x16, + 0xa4, 0x9a, 0x8f, 0x17, 0x0f, 0x6c, 0x89, 0x2d, 0x6d, 0x49, 0xa6, 0x75, 0x00, 0x71, 0x98, + 0xc6, 0x40, 0x3e, 0xa8, 0x6c, 0x0a, 0x28, 0xf1, 0x6f, 0xb3, 0xec, 0x24, 0x43, 0xd3, 0x9c, + 0x8d, 0x0e, 0xb1, 0xe4, 0xec, 0x78, 0x98, 0xa5, 0x19, 0xc5, 0x32, 0x6a, 0x67, 0x34, 0xa3, + 0x43, 0x2b, 0x57, 0xcc, 0x2c, 0x8e, 0xb0, 0xa0, 0x36, 0x7f, 0x6c, 0x20, 0x6c, 0xfd, 0x70, + 0x76, 0xd1, 0x63, 0x1a, 0x53, 0x20, 0xf4, 0x27, 0x5f, 0x9b, 0xaf, 0x75, 0xc1, 0x01, 0x61, + 0x03, 0xbb, 0x66, 0x8b, 0x67, 0x70, 0x20, 0xe6, 0x13, 0x43, 0x6e, 0x97, 0x88, 0x00, 0x80, + 0x1d, 0x6a, 0x8c, 0x60, 0x99, 0x94, 0x49, 0xdd, 0xcb, 0xbf, 0xd2, 0x9b, 0x6b, 0x91, 0x25, + 0x21, 0xa5, 0x53, 0x73, 0xd9, 0xdb, 0x7b, 0x35, 0x38, 0xfd, 0x56, 0x3e, 0x5c, 0x11, 0xcb, + 0x20, 0xf5, 0xe3, 0x10, 0x16, 0xed, 0x9d, 0x0c, 0xff, 0xc5, 0x9a, 0x96, 0x3f, 0x78, 0x8f, + 0x8b, 0xe4, 0x6a, 0xa9, 0xf6, 0x54, 0x1f, 0xba, 0xd6, 0xba, 0x18, 0xbc, 0x3a, 0xdf, 0xd3, + 0x9c, 0xcc, 0x22, 0xd4, 0x97, 0x39, 0x8c, 0x38, 0x9d, 0xb4, 0xb8, 0x3e, 0xa0, 0xa3, 0x07, + 0xa3, 0xef, 0xa3, 0xa0, 0xea, 0xad, 0x6a, 0xf8, 0x1a, 0xfb, 0xf1, 0x51, 0x0f, 0xe6, 0x7b, + 0x18, 0x41, 0xed, 0xda, 0x5e, 0xba, 0xad, 0x87, 0xd5, 0x50, 0x84, 0x82, 0xca, 0x04, 0x44, + 0xb0, 0x37, 0xca, 0x3c, 0xe0, 0xe5, 0x19, 0x78, 0x9f, 0x2e, 0x7c, 0x27, 0x1a, 0x83, 0x1f, + 0xb6, 0x02, 0x95, 0xa1, 0x99, 0x26, 0x40, 0x9c, 0x93, 0x63, 0x2e, 0x0f, 0x29, 0xfe, 0x17, + 0x5c, 0x42, 0x2f, 0xfb, 0xfb, 0xc7, 0x8d, 0x5f, 0x2a, 0x0a, 0x6b, 0xbd, 0x45, 0x8e, 0x76, + 0x9f, 0x3a, 0x58, 0xb1, 0x2f, 0xa4, 0xfa, 0x96, 0xae, 0x30, 0x9f, 0x1c, 0x06, 0x6d, 0xf8, + 0xd1, 0xc9, 0x19, 0xbe, 0xb1, 0xe3, 0x03, 0x3d, 0x79, 0xee, 0xaa, 0xe0, 0x1d, 0xea, 0x46, + 0xb6, 0xc6, 0x37, 0x3c, 0x03, 0x56, 0xdd, 0x66, 0x38, 0xa4, 0xe8, 0x13, 0xa0, 0x5e, 0xad, + 0xcb, 0xa1, 0xff, 0x49, 0x6b, 0x78, 0x59, 0x1a, 0x43, 0xfd, 0x9e, 0x5f, 0x31, 0x69, 0x8e, + 0xa8, 0x1d, 0x54, 0x51, 0xe9, 0x37, 0x62, 0xa4, 0x33, 0x4f, 0x19, 0x40, 0x88, 0xa1, 0x0d, + 0x5e, 0x32, 0x37, 0xd3, 0x1c, 0xd0, 0xa5, 0x93, 0x7e, 0xdc, 0x2e, 0xa8, 0xca, 0x85, 0xb5, + 0x63, 0x65, 0x04, 0x2e, 0xf8, 0xad, 0x4c, 0x3a, 0x9e, 0x0e, 0x0a, 0x7b, 0x2a, 0xdb, 0xa1, + 0xac, 0xbb, 0x1a, 0xff, 0x22, 0xb9, 0xb8, 0xc8, 0x1a, 0x43, 0x6b, 0xc1, 0xad, 0xf3, 0x65, + 0xd4, 0x53, 0xc0, 0x90, 0x45, 0x6c, 0x9b, 0x97, 0x66, 0x27, 0x16, 0x94, 0x1d, 0x9e, 0xd5, + 0x3b, 0xc4, 0x6e, 0xa1, 0x5e, 0x20, 0x0a, 0x7b, 0x7b, 0x43, 0x77, 0x05, 0x4b, 0x4e, 0x54, + 0xe0, 0x5a, 0x87, 0x92, 0xfb, 0x57, 0x8d, 0xce, 0xbd, 0x3b, 0xc9, 0x17, 0x82, 0x00, 0xac, + 0xf2, 0x01, 0x90, 0xd4, 0x23, 0x91, 0x00, 0xf4, 0x14, 0xe5, 0x51, 0x5d, 0x0a, 0xf7, 0x9b, + 0xdd, 0x17, 0x7d, 0xa7, 0xfc, 0x8f, 0xc7, 0xfd, 0x38, 0xd6, 0x12, 0xee, 0xf7, 0x0f, 0xbd, + 0x2b, 0x5f, 0xfd, 0x0b, 0x1d, 0x85, 0x48, 0x9b, 0x1b, 0x01, 0x47, 0x63, 0x54, 0x8c, 0xae, + 0x4d, 0xe6, 0xe5, 0x53, 0x8c, 0x11, 0x66, 0x4a, 0x3c, 0x5a, 0x2d, 0xb0, 0x7b, 0x62, 0x90, + 0x0e, 0xba, 0x77, 0x92, 0xa7, 0x4c, 0xb4, 0xdd, 0x26, 0x72, 0xd1, 0x78, 0x32, 0xd5, 0xc2, + 0x74, 0x6d, 0xe3, 0x51, 0x0b, 0x09, 0xf0, 0x0b, 0xd2, 0x80, 0x51, 0xc0, 0xb9, 0xba, 0x59, + 0x33, 0x26, 0x1b, 0x87, 0x61, 0x5f, 0x93, 0x4a, 0x9c, 0x01, 0x9c, 0x02, 0x67, 0x15, 0x5c, + 0x73, 0xbf, 0xd5, 0x0a, 0xad, 0x8d, 0x78, 0xc9, 0x69, 0x00, 0xe6, 0xc1, 0x79, 0xfb, 0x83, + 0xa2, 0x22, 0xb8, 0x0e, 0x30, 0xb8, 0x7f, 0xc0, 0xee, 0xb9, 0xb9, 0xb5, 0x7c, 0x5d, 0xfb, + 0x08, 0x1a, 0x87, 0xce, 0x51, 0xbf, 0x6c, 0x90, 0x85, 0xbc, 0xe3, 0x74, 0xf6, 0xfe, 0xf6, + 0x5a, 0x08, 0x69, 0x7b, 0x22, 0xd7, 0x0a, 0x37, 0xb4, 0xfb, 0xc5, 0xe0, 0x66, 0x49, 0x20, + 0x70, 0x98, 0xfe, 0x18, 0xdd, 0xff, 0x7f, 0x70, 0x72, 0x3c, 0xa8, 0x7d, 0xe5, 0x45, 0xed, + 0x3b, 0x02, 0x9b, 0x0c, 0x57, 0xba, 0x9f, 0x6c, 0x37, 0x70, 0x9d, 0x70, 0x69, 0x7f, 0x98, + 0xf1, 0xc9, 0xcb, 0x23, 0xa3, 0xba, 0x4e, 0xeb, 0x84, 0x81, 0x6e, 0x26, 0xe3, 0x39, 0x3c, + 0xed, 0xdb, 0xc4, 0xf6, 0x7a, 0xf2, 0x41, 0x79, 0xc7, 0x78, 0x2d, 0xb5, 0xf8, 0xe3, 0xc6, + 0xd9, 0xad, 0x70, 0xa2, 0x61, 0x8d, 0x17, 0xbe, 0x99, 0x52, 0xfe, 0x46, 0xe8, 0x4c, 0x09, + 0x72, 0x5a, 0x08, 0x5f, 0x6b, 0x0a, 0x3b, 0x16, 0xcb, 0xef, 0xb7, 0x53, 0x14, 0x0d, 0x64, + 0xdd, 0x33, 0x64, 0x4a, 0x85, 0x18, 0xa0, 0xf9, 0x19, 0x6c, 0xc5, 0x22, 0x7e, 0x24, 0xe8, + 0xe2, 0x3f, 0x11, 0x71, 0xe9, 0x4a, 0x19, 0x3b, 0x21, 0x32, 0xdc, 0x21, 0xdb, 0x99, 0x26, + 0x0c, 0xdd, 0xa9, 0x7a, 0x54, 0x01, 0xf3, 0x1a, 0x39, 0xf1, 0x88, 0xdc, 0x0e, 0xc3, 0x85, + 0xd8, 0x14, 0xf1, 0xf2, 0x8a, 0x38, 0xe6, 0xf3, 0xce, 0x1c, 0x1f, 0x6e, 0xf2, 0xf9, 0xa4, + 0x83, 0x2a, 0xa7, 0x95, 0xaf, 0xf1, 0x52, 0xf8, 0x03, 0xf4, 0x42, 0x2d, 0xd5, 0x4c, 0x63, + 0x78, 0x33, 0x7a, 0x36, 0x70, 0xed, 0xf9, 0xda, 0x81, 0x40, 0x8b, 0xd2, 0xa4, 0x90, 0x45, + 0x7a, 0x23, 0xae, 0x05, 0x94, 0x17, 0x34, 0x51, 0xc6, 0x43, 0xa8, 0x93, 0x7f, 0xf1, 0xe0, + 0x86, 0x69, 0xa8, 0x57, 0x74, 0x95, 0xaf, 0x97, 0xd1, 0x40, 0xdf, 0xde, 0xea, 0x87, 0x9e, + 0xda, 0xeb, 0x74, 0xd3, 0xc7, 0x3c, 0x01, 0x1f, 0xe2, 0x30, 0x0a, 0x9a, 0x82, 0x29, 0xbf, + 0xf9, 0x97, 0x63, 0x0f, 0xdd, 0x98, 0x48, 0x2b, 0x3a, 0xa2, 0x2e, 0xb3, 0x7a, 0x17, 0x19, + 0xd2, 0xed, 0x3c, 0x58, 0x4d, 0x07, 0xab, 0x30, 0x0b, 0x62, 0xc4, 0x4a, 0x9b, 0x02, 0x4a, + 0xb2, 0x44, 0xfb, 0x4a, 0xb7, 0xba, 0x2e, 0x93, 0x25, 0xab, 0x8e, 0xe5, 0x5c, 0x3c, 0x11, + 0xc9, 0x46, 0x30, 0xd8, 0x85, 0x9f, 0x5d, 0x9d, 0x94, 0x2e, 0x4d, 0x50, 0x29, 0x65, 0xb9, + 0xbe, 0xd5, 0x9c, 0x25, 0xab, 0x9f, 0x84, 0x85, 0xf8, 0xaa, 0x88, 0x65, 0x63, 0xf1, 0x12, + 0x26, 0xaa, 0x00, 0x7c, 0x7c, 0x35, 0xbb, 0xe7, 0xf6, 0x47, 0xaa, 0x14, 0x7b, 0x6f, 0x0d, + 0x9f, 0x74, 0x37, 0x2a, 0xb6, 0xb2, 0xec, 0x73, 0xeb, 0x20, 0xba, 0xe3, 0x63, 0xb5, 0xd6, + 0x90, 0x2b, 0x72, 0x19, 0x67, 0xdd, 0xbf, 0x9b, 0x9f, 0x4a, 0x27, 0x2e, 0xd7, 0x3a, 0x24, + 0xe1, 0xaf, 0xd7, 0x54, 0x29, 0x92, 0x5c, 0xab, 0xa9, 0x36, 0x61, 0xfc, 0x84, 0x83, 0xfa, + 0xcb, 0x08, 0x0a, 0x67, 0x54, 0xab, 0xdc, 0x9c, 0xdb, 0x9d, 0x4d, 0xbe, 0x84, 0x95, 0xd2, + 0x21, 0x3f, 0x6a, 0xf9, 0x6f, 0x86, 0xb1, 0x35, 0x27, 0xec, 0x02, 0x6c, 0x5b, 0xd4, 0x30, + 0xbb, 0x8e, 0x25, 0x5e, 0xf9, 0x3f, 0xec, 0x15, 0x87, 0x57, 0xf3, 0x53, 0x62, 0x47, 0x2c, + 0xb9, 0x20, 0x00, 0x59, 0x83, 0x67, 0xec, 0x7c, 0x2e, 0x01, 0x34, 0x92, 0x48, 0x23, 0xe3, + 0x3a, 0x7b, 0x81, 0x29, 0x88, 0x33, 0x51, 0xf8, 0xe0, 0xef, 0xc1, 0xfe, 0xeb, 0xd1, 0x19, + 0x64, 0x18, 0x6a, 0xfe, 0x12, 0xe2, 0xdb, 0x58, 0xd6, 0x40, 0x7e, 0xab, 0x14, 0x45, 0xe2, + 0x1a, 0xa7, 0x32, 0x50, 0xec, 0x7e, 0xdd, 0x0b, 0x9d, 0x84, 0xe3, 0x47, 0x61, 0x35, 0x75, + 0xd0, 0x0f, 0x1a, 0xd6, 0x37, 0x0e, 0x32, 0x2f, 0x67, 0x97, 0xa4, 0x76, 0xa0, 0xcd, 0x3e, + 0xc8, 0x4a, 0xd3, 0xe3, 0xa7, 0x94, 0x84, 0x97, 0x32, 0xcc, 0x47, 0xb4, 0x2e, 0xf0, 0x66, + 0x77, 0x6c, 0x41, 0x9f, 0x11, 0x29, 0x98, 0x27, 0x01, 0x3e, 0x27, 0x2a, 0xf7, 0x7d, 0x21, + 0x41, 0xac, 0xac, 0x53, 0xcc, 0x16, 0x40, 0x0b, 0xd7, 0x91, 0xd1, 0x51, 0x35, 0xe7, 0x04, + 0x42, 0x7a, 0x1a, 0xa5, 0x98, 0xd4, 0xb0, 0xcb, 0x8e, 0xdd, 0x33, 0xf0, 0x34, 0xc4, 0xe8, + 0xd6, 0x3e, 0xb7, 0x63, 0x6c, 0x28, 0xc7, 0xcb, 0x2e, 0x84, 0x94, 0xd5, 0xf2, 0x65, 0x80, + 0xc0, 0xc1, 0x85, 0x18, 0x63, 0x96, 0x66, 0xca, 0xb2, 0x23, 0x61, 0x4b, 0x12, 0x5e, 0xe9, + 0x19, 0x85, 0x30, 0x76, 0xeb, 0xe4, 0xe2, 0x97, 0x15, 0x16, 0x2a, 0x0e, 0xff, 0x13, 0x87, + 0x91, 0x7f, 0x3d, 0x5a, 0xd6, 0x14, 0xf8, 0x72, 0x59, 0xc4, 0x3e, 0x86, 0xe7, 0x95, 0x12, + 0xc3, 0xd4, 0x94, 0x8e, 0xbf, 0x6e, 0xf2, 0xee, 0x30, 0x68, 0x85, 0x33, 0x16, 0xef, 0xd1, + 0xbe, 0xac, 0xe7, 0x84, 0x08, 0xc4, 0xea, 0x68, 0x09, 0x8c, 0x59, 0xee, 0x99, 0x0d, 0xeb, + 0x00, 0x2e, 0x9c, 0x40, 0xf0, 0xb1, 0x46, 0x64, 0xf0, 0x61, 0x5e, 0x62, 0x98, 0x0b, 0x90, + 0x15, 0x26, 0x07, 0x89, 0x89, 0xaf, 0xc9, 0xc3, 0x4b, 0xed, 0xae, 0x67, 0x8f, 0x94, 0x8f, + 0xd1, 0x61, 0xf9, 0x1f, 0x71, 0xe0, 0x63, 0x8a, 0x01, 0x6e, 0xff, 0xa3, 0x9a, 0x8a, 0xdf, + 0x81, 0x3d, 0x40, 0x55, 0x01, 0xa6, 0x64, 0x7b, 0xcf, 0x0d, 0x56, 0xb7, 0xe8, 0xfc, 0xb2, + 0xd2, 0xe5, 0x25, 0x76, 0x54, 0x17, 0x0a, 0xe8, 0x76, 0x47, 0x64, 0x93, 0xfe, 0x88, 0x9f, + 0x9d, 0xb1, 0xba, 0x2e, 0x10, 0x7b, 0x32, 0x56, 0x59, 0x57, 0x98, 0x6e, 0x2f, 0xaf, 0x4e, + 0x39, 0xb3, 0xbb, 0x1a, 0xbe, 0xbf, 0x04, 0x10, 0x08, 0xc2, 0x57, 0xd9, 0x84, 0x1b, 0xab, + 0x73, 0x21, 0x3d, 0x04, 0x8b, 0xf4, 0x48, 0xf9, 0xff, 0x40, 0xb6, 0xce, 0x5d, 0x95, 0xd0, + 0xea, 0xe7, 0xa9, 0x2a, 0x66, 0xb4, 0x98, 0xd1, 0x98, 0x3d, 0xd4, 0xc7, 0xa7, 0x35, 0x90, + 0x93, 0xae, 0xa3, 0x72, 0xaa, 0xac, 0xf2, 0xcf, 0x4a, 0xd8, 0x8d, 0x20, 0xd6, 0x62, 0xba, + 0xdb, 0xf0, 0xdd, 0x04, 0xec, 0x3f, 0x9c, 0x84, 0x7f, 0xef, 0x27, 0x21, 0x60, 0x4d, 0x95, + 0x46, 0x5a, 0x64, 0x72, 0xc5, 0x2a, 0xcd, 0x6c, 0x4b, 0xd2, 0xbf, 0x87, 0x79, 0xa8, 0x46, + 0x40, 0xe8, 0x09, 0xd8, 0x48, 0x67, 0x33, 0x6c, 0x56, 0xf3, 0xa6, 0xb7, 0x3d, 0x3a, 0x1b, + 0xb9, 0xc0, 0x8a, 0x65, 0xfc, 0xb6, 0xad, 0x0a, 0xc4, 0xe5, 0xc4, 0x0b, 0xc2, 0x11, 0x28, + 0x17, 0x8a, 0x26, 0x45, 0xbd, 0xe4, 0x25, 0x56, 0x6c, 0x22, 0x08, 0x34, 0x24, 0x49, 0xe9, + 0x1f, 0xe7, 0xa1, 0xcc, 0xf9, 0xe3, 0xd5, 0xcc, 0x6f, 0xdf, 0xac, 0x90, 0x23, 0xa2, 0xa4, + 0x52, 0xeb, 0x01, 0xab, 0x17, 0xab, 0x1e, 0x33, 0x80, 0xad, 0xf8, 0x8e, 0xe2, 0x4c, 0xfc, + 0xbd, 0x53, 0x1d, 0x49, 0xe6, 0x01, 0xea, 0x7c, 0xf2, 0xfa, 0x8a, 0x4e, 0x59, 0x0f, 0x5c, + 0x36, 0x32, 0xd1, 0x92, 0xa8, 0xe0, 0x0b, 0x5c, 0x59, 0xfb, 0xb7, 0x44, 0x23, 0x65, 0x75, + 0x5b, 0x6f, 0x51, 0x85, 0x0e, 0x14, 0xd6, 0x2e, 0x9d, 0xf2, 0xa5, 0x19, 0xcc, 0xef, 0x5f, + 0x6b, 0x10, 0x86, 0x94, 0x80, 0xa1, 0xd9, 0x9b, 0xec, 0x34, 0x2f, 0x5a, 0x95, 0xab, 0x9d, + 0xbe, 0xa1, 0x51, 0x7f, 0x3a, 0x2c, 0x1f, 0xae, 0x7e, 0x00, 0xc5, 0x02, 0x6d, 0x81, 0x04, + 0x13, 0x05, 0xea, 0x64, 0xaf, 0xcc, 0x35, 0x82, 0x54, 0xd6, 0x54, 0x32, 0xc3, 0xf7, 0x2d, + 0x66, 0x31, 0xa7, 0x21, 0xe5, 0xdd, 0x59, 0x0f, 0x14, 0x30, 0x2d, 0x64, 0xa6, 0xd5, 0xd8, + 0x58, 0xfc, 0x6a, 0x9b, 0x30, 0x44, 0xa4, 0xac, 0x8c, 0xae, 0x9f, 0xb2, 0x59, 0x29, 0x2f, + 0xc4, 0xa1, 0x8f, 0xab, 0x4b, 0x69, 0x9c, 0xbe, 0xcd, 0xda, 0x20, 0x13, 0x16, 0xf5, 0xf4, + 0x85, 0x05, 0x97, 0x4e, 0x59, 0xd5, 0x65, 0x16, 0xb2, 0x87, 0x07, 0x11, 0xf1, 0x34, 0x68, + 0x84, 0x5e, 0x36, 0x70, 0x99, 0x0e, 0x6f, 0xfb, 0x22, 0x45, 0x5c, 0xbf, 0x11, 0x37, 0x3a, + 0x41, 0xa9, 0xd6, 0x00, 0xd1, 0xeb, 0x53, 0x82, 0x3d, 0x19, 0xac, 0xe0, 0x0c, 0x4f, 0x4d, + 0x16, 0x70, 0x66, 0x20, 0x6f, 0xa8, 0xa8, 0x8b, 0x91, 0x2a, 0x8f, 0xc8, 0xaf, 0x72, 0x1e, + 0xa1, 0x90, 0xe9, 0xa1, 0x82, 0x53, 0x30, 0xf1, 0x62, 0xd3, 0xac, 0x31, 0xac, 0xf7, 0x90, + 0x8c, 0x76, 0x44, 0xa5, 0x73, 0x9b, 0x1d, 0xfc, 0x22, 0x1f, 0xf7, 0x1a, 0x70, 0x7f, 0x34, + 0x2d, 0x02, 0x14, 0x25, 0xee, 0x7e, 0x73, 0xd9, 0xb1, 0xf4, 0x57, 0xfb, 0x0f, 0x08, 0x5f, + 0x90, 0x85, 0x9a, 0x84, 0xcd, 0xc4, 0xa4, 0xf9, 0xce, 0x0b, 0xe0, 0x03, 0xd3, 0x3e, 0xb0, + 0x4f, 0x6e, 0xb3, 0x3a, 0xbc, 0xff, 0x15, 0x43, 0x25, 0xdb, 0x50, 0x34, 0x8e, 0xc0, 0x16, + 0x6e, 0xa8, 0x6f, 0x55, 0x4e, 0xe2, 0xc8, 0x3a, 0xfd, 0x1b, 0x54, 0x2f, 0x8c, 0xa9, 0x27, + 0x76, 0x58, 0xc3, 0x90, 0x70, 0x1a, 0x95, 0x59, 0xdf, 0x79, 0x55, 0xed, 0xcf, 0x89, 0x19, + 0x8b, 0x20, 0x10, 0xa5, 0x53, 0xc3, 0x99, 0x94, 0xd9, 0x42, 0x77, 0x2e, 0x07, 0x9a, 0x3e, + 0xd6, 0xb9, 0xf5, 0x0f, 0xbe, 0xc7, 0xc3, 0x15, 0x4f, 0x09, 0xda, 0x4d, 0xe8, 0xd8, 0x0c, + 0xd4, 0x97, 0x37, 0xd0, 0xbe, 0x43, 0x65, 0x18, 0x4e, 0xf8, 0x59, 0xb2, 0x9f, 0x8c, 0x2d, + 0xeb, 0xbe, 0xff, 0x3c, 0xc6, 0x85, 0x12, 0x30, 0xa3, 0x0b, 0x78, 0xbc, 0x4a, 0x9a, 0x9c, + 0x50, 0x83, 0xba, 0x77, 0xd1, 0xf3, 0xab, 0x21, 0xf3, 0x98, 0x36, 0xd5, 0x81, 0x0e, 0xd1, + 0xc5, 0x67, 0x38, 0x11, 0x79, 0xf4, 0xad, 0xe1, 0xa8, 0x4f, 0x78, 0x27, 0xc8, 0x42, 0x0a, + 0x8a, 0xa8, 0x35, 0x88, 0xdb, 0xc9, 0x99, 0x8d, 0x68, 0x16, 0x3a, 0x5b, 0xb9, 0x00, 0x95, + 0xa4, 0x54, 0x7e, 0x06, 0x75, 0x7c, 0x83, 0xce, 0x1e, 0x7a, 0xdc, 0xd8, 0xe8, 0x33, 0x84, + 0xd6, 0x01, 0x0f, 0x05, 0xf5, 0x23, 0x5d, 0x57, 0x24, 0xf8, 0x29, 0x63, 0x93, 0xd5, 0x2c, + 0xaa, 0xfb, 0x1a, 0x7d, 0xab, 0x36, 0x03, 0x9e, 0xee, 0xc3, 0x6c, 0x12, 0x3b, 0x2e, 0x11, + 0x3b, 0x7d, 0xb2, 0x1e, 0x0b, 0x7c, 0x41, 0x73, 0x51, 0x49, 0x2e, 0xf1, 0xda, 0x97, 0xe1, + 0x1b, 0x8c, 0xcd, 0xf5, 0x1a, 0x43, 0x72, 0xad, 0x2b, 0x1e, 0x99, 0x60, 0xc1, 0x57, 0x99, + 0xf3, 0x91, 0x35, 0x31, 0xef, 0x8a, 0xe1, 0x55, 0xcc, 0xaa, 0x10, 0x24, 0x53, 0x10, 0xe0, + 0x95, 0x60, 0x5c, 0x0c, 0x66, 0xf9, 0x69, 0x61, 0xa0, 0xa8, 0x44, 0x25, 0x79, 0x93, 0x21, + 0xe0, 0x27, 0x27, 0x00, 0x2a, 0x00, 0x5a, 0x4e, 0x6d, 0x5a, 0xee, 0x81, 0xc5, 0xd3, 0xae, + 0xc9, 0x8d, 0xa6, 0x2c, 0x11, 0xcf, 0xb3, 0x77, 0xe0, 0xe0, 0x58, 0xb6, 0x43, 0x6e, 0x1b, + 0x24, 0x77, 0x92, 0x19, 0x41, 0xad, 0x0e, 0x93, 0x9c, 0xdf, 0xee, 0x77, 0x56, 0x7d, 0x3f, + 0x3e, 0xce, 0x78, 0xf3, 0xc0, 0x4a, 0x2f, 0xb5, 0x3d, 0x76, 0xe9, 0x69, 0xf1, 0x3d, 0xdd, + 0x61, 0x46, 0x9d, 0xa9, 0xc2, 0x24, 0xce, 0xe8, 0x33, 0x42, 0xa3, 0xb0, 0xbd, 0x5d, 0xb3, + 0x5c, 0xac, 0xab, 0x94, 0x0b, 0x03, 0x50, 0x13, 0xa4, 0x67, 0xeb, 0xb3, 0xa5, 0x59, 0x37, + 0x73, 0x4c, 0x53, 0x0d, 0x86, 0x47, 0xdd, 0x48, 0x4c, 0xba, 0x16, 0xbb, 0xae, 0x7f, 0x97, + 0xf4, 0x50, 0x1e, 0x39, 0x70, 0xcf, 0xa4, 0xae, 0x5f, 0xa8, 0x9d, 0x5e, 0x19, 0xca, 0x49, + 0xd3, 0xf2, 0x86, 0xc4, 0x01, 0x19, 0x72, 0x3d, 0x53, 0x3d, 0xa9, 0x61, 0x25, 0x93, 0x36, + 0x57, 0xf9, 0x3a, 0x21, 0x92, 0xb1, 0xd9, 0xe5, 0xef, 0x66, 0xa4, 0x67, 0x5a, 0xa3, 0xb3, + 0x06, 0x33, 0x39, 0x69, 0x99, 0xc4, 0x53, 0x42, 0x6e, 0x78, 0x22, 0x90, 0x73, 0xc3, 0x37, + 0x8a, 0x13, 0x40, 0xc6, 0x30, 0xd2, 0x59, 0xcf, 0x52, 0xf2, 0x03, 0x02, 0x6f, 0xfc, 0x86, + 0x46, 0x44, 0x4d, 0x20, 0xf4, 0xa5, 0x1a, 0x6e, 0xe3, 0x8f, 0xd0, 0x0d, 0xde, 0x1d, 0x7f, + 0x02, 0x07, 0x3c, 0x8c, 0xd1, 0xc8, 0xd8, 0xeb, 0xa1, 0xd1, 0x4c, 0xb0, 0x24, 0x11, 0xde, + 0x92, 0x3c, 0x77, 0xe0, 0x1e, 0xef, 0x03, 0xe4, 0xc3, 0x0b, 0x52, 0x2e, 0x9d, 0xc9, 0xe7, + 0xa2, 0xc9, 0x7c, 0x1e, 0x49, 0x65, 0x9c, 0xcf, 0x4d, 0xe1, 0xe4, 0xdb, 0xf4, 0xfa, 0x46, + 0x60, 0x74, 0xfa, 0x16, 0xcf, 0x97, 0x52, 0xcd, 0xac, 0x72, 0x2d, 0xf6, 0xbc, 0xe4, 0x60, + 0x4c, 0x72, 0xe7, 0x19, 0x11, 0x1b, 0x31, 0x17, 0x71, 0xad, 0xe7, 0x94, 0xd2, 0xf9, 0xf2, + 0x34, 0x9d, 0x3e, 0x91, 0x40, 0x89, 0x7f, 0x31, 0xcc, 0x80, 0x43, 0xe1, 0x3d, 0x2a, 0xd0, + 0x94, 0xde, 0xee, 0xe7, 0x5b, 0x4c, 0x31, 0x08, 0x00, 0xee, 0x7c, 0xbe, 0x09, 0x56, 0x0b, + 0xe8, 0x5f, 0x5c, 0x00, 0x50, 0x6c, 0x61, 0x19, 0x69, 0x7a, 0xc7, 0xc8, 0x9e, 0xf6, 0x35, + 0x89, 0x33, 0x0b, 0xd7, 0xe7, 0x4e, 0xcc, 0x63, 0x68, 0x2d, 0xd7, 0xe8, 0xd1, 0x5a, 0xe0, + 0x0d, 0x8a, 0xac, 0xe7, 0xda, 0xaf, 0xb1, 0x7f, 0x63, 0x96, 0xa7, 0x2e, 0xa5, 0x99, 0x62, + 0x43, 0xce, 0x57, 0xc3, 0x83, 0xc0, 0x0c, 0x26, 0x4a, 0x07, 0xe4, 0x27, 0x45, 0x53, 0xdb, + 0x94, 0x6f, 0xe6, 0xd5, 0xce, 0xc9, 0x92, 0x39, 0x81, 0x06, 0xc5, 0xc4, 0xea, 0x06, 0x3e, + 0xbc, 0x37, 0x2a, 0xfb, 0x68, 0xc5, 0x84, 0x10, 0x12, 0x6e, 0x29, 0xf6, 0x17, 0x23, 0xa0, + 0x9c, 0xe9, 0xf1, 0xbc, 0x5a, 0xac, 0x06, 0x47, 0x3a, 0xa6, 0xd5, 0x2d, 0x77, 0xc1, 0xb5, + 0x1c, 0x01, 0x13, 0xfb, 0x8d, 0xb5, 0x1c, 0xbe, 0x6b, 0xbb, 0xc1, 0x3a, 0x1e, 0xf9, 0xc8, + 0x37, 0x99, 0x4d, 0x24, 0x17, 0x65, 0xe9, 0x1d, 0xf1, 0x7e, 0xef, 0xc2, 0xe9, 0x8a, 0x2f, + 0xc8, 0x02, 0xfa, 0xea, 0xf9, 0x77, 0x44, 0x7a, 0xa8, 0x33, 0x64, 0xf8, 0x09, 0x2e, 0xbb, + 0x38, 0x95, 0x0c, 0x96, 0x00, 0x91, 0x4d, 0x7f, 0x20, 0xd6, 0xdf, 0x6c, 0xbd, 0x2b, 0xd8, + 0xb4, 0xb3, 0xb4, 0x01, 0x8a, 0xa6, 0x2e, 0x1e, 0xa3, 0x55, 0x0a, 0xc7, 0x69, 0x47, 0x3b, + 0x12, 0x03, 0xab, 0x66, 0x21, 0xb0, 0x9b, 0xce, 0x61, 0x64, 0x9d, 0xb1, 0xa5, 0x57, 0x42, + 0x31, 0xe9, 0x26, 0x65, 0x56, 0x35, 0xa0, 0xdf, 0xe0, 0xbe, 0x4d, 0x97, 0x91, 0x07, 0xb2, + 0xa3, 0xc6, 0x46, 0x47, 0x96, 0x2f, 0x39, 0x75, 0xcc, 0x7e, 0xa6, 0x83, 0xdb, 0xa6, 0x66, + 0xd6, 0x72, 0xfb, 0x53, 0x80, 0x5c, 0x46, 0xe4, 0x2c, 0x28, 0x1f, 0x23, 0x1d, 0xbd, 0x1b, + 0x71, 0x4e, 0xa3, 0xb6, 0x4d, 0x6e, 0x10, 0x87, 0x35, 0x5e, 0xf2, 0x68, 0x45, 0x43, 0x86, + 0xb7, 0xef, 0xe5, 0x36, 0x6a, 0x3e, 0xba, 0xa7, 0xee, 0x6b, 0x12, 0xba, 0xcd, 0xf1, 0x90, + 0xba, 0xd8, 0x8c, 0x62, 0xc7, 0xbb, 0x64, 0xf6, 0x2e, 0xf1, 0x38, 0x45, 0x63, 0x06, 0x32, + 0x7b, 0x1e, 0x18, 0x6d, 0x46, 0xe7, 0x37, 0x66, 0x81, 0xc3, 0xb4, 0x7a, 0x82, 0xd9, 0xcf, + 0x2d, 0x7b, 0xb1, 0x3c, 0x96, 0x50, 0x54, 0x63, 0x1e, 0x95, 0xa6, 0xb6, 0x3f, 0x18, 0x57, + 0xcb, 0xc0, 0x15, 0x3c, 0x3f, 0x8e, 0x99, 0x19, 0xfb, 0x06, 0x79, 0xce, 0x1c, 0x5f, 0xf9, + 0x13, 0x9f, 0xf5, 0xe2, 0xb7, 0x8a, 0x71, 0xcd, 0xa8, 0x0d, 0x8b, 0xce, 0x05, 0x90, 0x28, + 0x39, 0xd8, 0x6c, 0x62, 0x3c, 0xa9, 0xff, 0x20, 0xb6, 0xfc, 0x17, 0x86, 0x62, 0xf5, 0x93, + 0x37, 0xca, 0xa5, 0xab, 0xdb, 0x80, 0x60, 0xc2, 0xce, 0xac, 0x07, 0x96, 0xb7, 0x6d, 0xd9, + 0xc6, 0x2c, 0x45, 0x05, 0xff, 0x0f, 0xc6, 0x60, 0xf0, 0x5b, 0x3c, 0x47, 0x9d, 0x2f, 0x4d, + 0x10, 0x6f, 0x27, 0xbb, 0xe2, 0xab, 0xa8, 0xe0, 0xba, 0x81, 0xa0, 0x4f, 0x39, 0x94, 0x05, + 0x86, 0x59, 0xc2, 0x23, 0x9c, 0x2d, 0xc5, 0x75, 0xeb, 0xae, 0x6f, 0x38, 0xa9, 0x81, 0x98, + 0xce, 0x19, 0xfc, 0x5a, 0x04, 0xc2, 0xb7, 0x3a, 0x43, 0x8e, 0xe1, 0x1c, 0x33, 0xb0, 0x9a, + 0x62, 0xff, 0x83, 0xd3, 0x91, 0x12, 0xe9, 0xff, 0xe4, 0xc9, 0x1c, 0x8c, 0x89, 0x25, 0x2a, + 0x00, 0x75, 0x31, 0xcc, 0x42, 0x3c, 0x92, 0x19, 0xdd, 0xe8, 0x32, 0x72, 0xb5, 0xd3, 0x56, + 0x5d, 0xc9, 0x22, 0x23, 0x54, 0x4f, 0xb2, 0x0b, 0x23, 0xdb, 0xc3, 0x6b, 0x6e, 0x63, 0x49, + 0x38, 0xeb, 0xb9, 0xcb, 0x36, 0x10, 0x5d, 0xbd, 0x6b, 0xfb, 0xda, 0xf2, 0xbd, 0x2d, 0x1b, + 0xde, 0x5f, 0xcd, 0x41, 0x58, 0xa3, 0xfa, 0xc1, 0x9c, 0x1f, 0x64, 0x0f, 0x50, 0x4c, 0x09, + 0x70, 0x74, 0x49, 0x69, 0x66, 0x75, 0x60, 0x4a, 0x54, 0x4e, 0x7b, 0x66, 0x91, 0x56, 0xbc, + 0x50, 0x4c, 0x04, 0xfb, 0x8b, 0x3c, 0x23, 0xa3, 0x7e, 0x8b, 0xb0, 0x2c, 0x57, 0x1e, 0xd7, + 0xd9, 0xa5, 0x1d, 0x90, 0x39, 0x08, 0xc9, 0x40, 0xd5, 0xa7, 0x6c, 0x1e, 0x11, 0x6c, 0x20, + 0x3f, 0x63, 0x8a, 0x31, 0xfc, 0x0d, 0xc5, 0xc6, 0x70, 0xb2, 0xd4, 0x92, 0x1b, 0x10, 0x5a, + 0xf0, 0x20, 0x82, 0xe0, 0x73, 0x52, 0x40, 0x3d, 0x10, 0xc6, 0xca, 0xa4, 0x42, 0x67, 0x53, + 0xea, 0x54, 0x81, 0xa5, 0xc7, 0xa8, 0x07, 0xbe, 0xf4, 0x65, 0xe8, 0x1e, 0x9d, 0x3e, 0xd7, + 0x2c, 0xb1, 0x25, 0x81, 0xfd, 0xd4, 0x12, 0xf5, 0xb2, 0x75, 0x07, 0x23, 0x3d, 0x88, 0xaf, + 0x79, 0x90, 0x7c, 0x61, 0xa4, 0xd7, 0x9b, 0xc2, 0xc9, 0x11, 0xe4, 0x95, 0xcb, 0x23, 0x02, + 0xb0, 0x15, 0x32, 0x10, 0x54, 0x94, 0x4f, 0x97, 0x16, 0x1b, 0x4c, 0xf4, 0x24, 0xf7, 0x2f, + 0x62, 0x84, 0xd7, 0xa2, 0x64, 0xd1, 0x95, 0x8f, 0xeb, 0x19, 0x28, 0x72, 0x44, 0xdd, 0x74, + 0x77, 0x2e, 0x55, 0x36, 0x27, 0x1f, 0xcf, 0x77, 0x56, 0xce, 0xa3, 0x28, 0xc8, 0x90, 0xf5, + 0x56, 0x21, 0x86, 0x63, 0xe1, 0xd7, 0x5d, 0xb7, 0x34, 0x41, 0x70, 0x48, 0x2b, 0xed, 0x63, + 0x09, 0x85, 0x3f, 0x89, 0x46, 0x1b, 0x20, 0x31, 0xfa, 0x7c, 0x27, 0x0e, 0xe5, 0xcd, 0x74, + 0xe5, 0x39, 0xbd, 0xba, 0x0f, 0xf3, 0xd4, 0xee, 0xc5, 0x72, 0x7f, 0xed, 0x6a, 0x42, 0xca, + 0x44, 0x2f, 0x6d, 0xd2, 0x99, 0xb0, 0xf3, 0x10, 0x3e, 0x3d, 0x12, 0x92, 0xf6, 0x56, 0x81, + 0x59, 0x61, 0x33, 0x4e, 0x70, 0x4a, 0x90, 0x3e, 0x54, 0x5b, 0x66, 0x78, 0x4b, 0x7a, 0x30, + 0xc4, 0xf0, 0xa2, 0xe5, 0x07, 0xa0, 0x80, 0xad, 0x40, 0x0f, 0x06, 0xc5, 0x56, 0x01, 0x0b, + 0x8e, 0xd0, 0x63, 0x17, 0x40, 0xd3, 0x48, 0x47, 0x6a, 0x46, 0x4a, 0x5a, 0xb7, 0xc9, 0xb1, + 0xad, 0x40, 0x64, 0x8d, 0x0a, 0xd7, 0xe4, 0x9d, 0x5d, 0xca, 0x8a, 0x92, 0x33, 0xe1, 0xf9, + 0x93, 0x4f, 0x60, 0x36, 0x6a, 0x19, 0x50, 0xd2, 0xb6, 0x31, 0xca, 0x03, 0x74, 0x0a, 0x0b, + 0x29, 0xb5, 0x7c, 0x9f, 0x9a, 0xb5, 0x39, 0x93, 0x9d, 0x79, 0x35, 0xbc, 0x4f, 0x98, 0x3e, + 0x94, 0xab, 0x07, 0xad, 0x4a, 0xcf, 0xb7, 0x19, 0xe5, 0x1b, 0x2c, 0xe6, 0x9e, 0xc0, 0xb6, + 0xc7, 0x8f, 0x61, 0x3e, 0x95, 0x1f, 0xae, 0x7d, 0x23, 0x8e, 0x3b, 0x1b, 0xc3, 0x07, 0x05, + 0x92, 0x27, 0xad, 0xbf, 0x7a, 0x26, 0x90, 0xbe, 0xda, 0xb7, 0xf5, 0x9b, 0xf3, 0xe3, 0xe3, + 0x80, 0xdc, 0xf0, 0x4b, 0x55, 0x1a, 0x3a, 0x84, 0x07, 0xf7, 0xe6, 0xc0, 0x25, 0x8c, 0xd0, + 0xb9, 0xe9, 0x0d, 0x11, 0x49, 0xe3, 0x80, 0x3f, 0x8e, 0xa8, 0xba, 0xc1, 0x37, 0xb4, 0x50, + 0xe3, 0x4f, 0x64, 0xf2, 0x68, 0xab, 0x53, 0x92, 0xc0, 0x35, 0x92, 0x36, 0x23, 0x8a, 0x34, + 0x4a, 0xc6, 0x5b, 0x75, 0x7f, 0x17, 0x0c, 0xf0, 0x43, 0x2f, 0xad, 0x20, 0xea, 0xa1, 0xc0, + 0x24, 0x09, 0x35, 0x7e, 0x37, 0x02, 0x5e, 0xe8, 0xe5, 0x4e, 0x0d, 0x45, 0xe4, 0x55, 0x34, + 0xda, 0x96, 0x2b, 0x96, 0x4d, 0xbf, 0xbe, 0xab, 0x61, 0xed, 0x2b, 0x3d, 0x41, 0x19, 0xfc, + 0xef, 0xaf, 0xf8, 0xa9, 0xac, 0x60, 0xf9, 0xce, 0x24, 0x92, 0x98, 0x57, 0x4f, 0x7a, 0x21, + 0x71, 0xcb, 0x05, 0x26, 0x04, 0xaa, 0x72, 0x5b, 0x9e, 0xad, 0x4c, 0x30, 0x5f, 0xb7, 0x28, + 0x33, 0xc6, 0xf7, 0x69, 0x27, 0x81, 0xe3, 0xa1, 0x61, 0x77, 0x65, 0x90, 0x95, 0xa9, 0xf9, + 0xf0, 0x1c, 0x13, 0x23, 0x43, 0x4f, 0x6f, 0x1b, 0x96, 0x1c, 0xf2, 0x95, 0xb1, 0xb3, 0xcd, + 0x81, 0xec, 0x11, 0x45, 0x61, 0xda, 0x56, 0x82, 0x57, 0x7a, 0x92, 0x49, 0xba, 0x0e, 0xcc, + 0xda, 0x4d, 0xb4, 0xa5, 0x78, 0x01, 0xb6, 0x65, 0xe9, 0x51, 0xa8, 0x65, 0x81, 0x8d, 0x02, + 0x04, 0x31, 0x7e, 0x51, 0xd9, 0xc8, 0x02, 0x1f, 0xc6, 0xc5, 0x01, 0x32, 0x12, 0xc5, 0x31, + 0xfd, 0x7f, 0xfa, 0x81, 0xf0, 0x7e, 0x8e, 0xea, 0x0d, 0xbe, 0xec, 0xc5, 0x3b, 0x5e, 0x42, + 0x20, 0x5a, 0x3c, 0x9d, 0x2a, 0xa3, 0xf4, 0x4c, 0x60, 0x66, 0xd8, 0xeb, 0x9f, 0x76, 0xf0, + 0x68, 0xda, 0xb7, 0x22, 0x04, 0xe3, 0x9d, 0xda, 0xab, 0x3a, 0xa3, 0xaf, 0xb6, 0x79, 0xab, + 0x39, 0x33, 0xb6, 0xa6, 0x66, 0x68, 0x25, 0x64, 0x68, 0xfc, 0xa0, 0x27, 0x7c, 0xe5, 0x8f, + 0xcb, 0x9f, 0x1b, 0xe4, 0x9d, 0x38, 0x1e, 0x9d, 0x6c, 0xfb, 0x13, 0x21, 0x7b, 0x38, 0xa3, + 0x4c, 0xeb, 0xca, 0x31, 0xae, 0xa6, 0xc9, 0x97, 0x7b, 0x2a, 0xdc, 0xe9, 0xd0, 0xa2, 0xd2, + 0x90, 0xc4, 0x6d, 0x3e, 0x5a, 0x28, 0x3a, 0xe2, 0x05, 0x90, 0x2d, 0x97, 0xd6, 0x16, 0xb5, + 0xd9, 0xa1, 0x27, 0x68, 0xc1, 0x1a, 0x11, 0x1f, 0x7e, 0x58, 0x39, 0x64, 0x0c, 0xbe, 0x2c, + 0x4c, 0x72, 0xb3, 0x6a, 0x58, 0xb6, 0xb8, 0xda, 0xc0, 0x01, 0x85, 0x86, 0x59, 0x39, 0x93, + 0x81, 0x6c, 0xa2, 0x6b, 0xea, 0xa2, 0x20, 0x0c, 0x3d, 0xce, 0xbf, 0x19, 0x43, 0xde, 0x5c, + 0x5d, 0x9e, 0x88, 0x01, 0x26, 0x17, 0x36, 0x66, 0x2a, 0x61, 0x8d, 0x9a, 0x56, 0xd6, 0xf9, + 0x13, 0x29, 0xfa, 0x61, 0x8a, 0xf8, 0xa6, 0x3a, 0x8c, 0x55, 0x89, 0x35, 0xfe, 0x16, 0x85, + 0x99, 0x83, 0xcb, 0x48, 0x71, 0x91, 0xdc, 0xbe, 0x5c, 0x30, 0xa7, 0x94, 0x8c, 0xe1, 0xc1, + 0xdd, 0x93, 0x47, 0x0e, 0xd6, 0xe1, 0x63, 0x53, 0x00, 0xa7, 0x7b, 0x89, 0x99, 0xde, 0x30, + 0xe2, 0x2f, 0xa4, 0x10, 0x96, 0xe8, 0x79, 0x49, 0xef, 0xcf, 0x18, 0x78, 0x3e, 0x90, 0xe8, + 0x42, 0x71, 0x79, 0xf5, 0x42, 0x4c, 0x87, 0x0f, 0xa2, 0xdf, 0xaf, 0xf3, 0x21, 0x7f, 0x22, + 0x48, 0xe7, 0x79, 0x9d, 0xbc, 0x6c, 0x29, 0xdc, 0xa6, 0xc1, 0x1a, 0xfb, 0x68, 0x33, 0x10, + 0x38, 0x3d, 0x0e, 0xf8, 0x8a, 0xf0, 0xbc, 0xfd, 0x9b, 0x79, 0xb1, 0xaf, 0xbc, 0x43, 0x6d, + 0x9a, 0x06, 0xee, 0x9d, 0xcf, 0xa0, 0x59, 0x3c, 0x44, 0xba, 0x10, 0x2d, 0x6e, 0xdb, 0x13, + 0x90, 0x0b, 0x82, 0x86, 0x35, 0x7a, 0x03, 0x28, 0x7e, 0x68, 0xe8, 0xc7, 0xa7, 0x7b, 0x5f, + 0xbf, 0x13, 0x92, 0x92, 0x47, 0x6b, 0xfc, 0x26, 0x50, 0xfb, 0xa3, 0x47, 0x91, 0x44, 0x31, + 0x7a, 0xb6, 0x6f, 0x27, 0x86, 0x88, 0x90, 0x96, 0x60, 0x1b, 0x96, 0xdf, 0x4d, 0xb1, 0xfc, + 0x62, 0xea, 0x59, 0xf9, 0xe2, 0x85, 0xc0, 0x53, 0x84, 0xb9, 0xf0, 0x63, 0x53, 0xc2, 0x9a, + 0xaf, 0xcb, 0x7b, 0x05, 0x7c, 0x85, 0x7f, 0xb0, 0x70, 0x6f, 0xce, 0x9c, 0x4f, 0xa5, 0x38, + 0x9a, 0x57, 0x50, 0x00, 0x75, 0x84, 0xd6, 0x20, 0x5e, 0x56, 0x19, 0x07, 0xac, 0x89, 0x59, + 0x6d, 0x15, 0x1a, 0x61, 0x05, 0xb8, 0x9b, 0x6f, 0xa4, 0x2b, 0xb1, 0x65, 0x55, 0x62, 0xa8, + 0x00, 0x46, 0xd9, 0x25, 0xaf, 0xb1, 0xef, 0x46, 0x5b, 0x30, 0x5d, 0xd3, 0x3a, 0xb6, 0x9a, + 0xde, 0x26, 0xb8, 0xa2, 0x8a, 0xf1, 0x6d, 0xa7, 0x52, 0xa3, 0xd6, 0x21, 0x69, 0xf3, 0x62, + 0x19, 0xdb, 0xaf, 0x50, 0x02, 0x6b, 0x23, 0x7f, 0xdf, 0xbe, 0xec, 0x97, 0x15, 0xba, 0x82, + 0x93, 0xe2, 0x94, 0x6c, 0x0d, 0x55, 0x3b, 0xc9, 0x20, 0xa1, 0xd8, 0x1b, 0x78, 0x93, 0x31, + 0x95, 0x49, 0x40, 0xc0, 0x6a, 0x43, 0x09, 0xa9, 0x0c, 0xd5, 0xec, 0x1b, 0xc3, 0xb1, 0xbf, + 0xa9, 0xa4, 0xa7, 0xb4, 0x6a, 0xb1, 0xe0, 0xd7, 0x6f, 0x2a, 0xa5, 0x15, 0x0f, 0xd3, 0xa1, + 0xa2, 0xf4, 0xde, 0x77, 0x01, 0x79, 0x8b, 0x52, 0xc8, 0x8f, 0x1b, 0x72, 0x2f, 0xb4, 0xc5, + 0x0b, 0x5c, 0xa1, 0x32, 0x86, 0x06, 0xa1, 0x8c, 0x12, 0xb1, 0x41, 0x61, 0xce, 0xc2, 0xa0, + 0x2f, 0xd7, 0xef, 0x7c, 0xcd, 0x81, 0x8e, 0x1f, 0x29, 0xfd, 0x3e, 0x83, 0x8b, 0x1d, 0xd3, + 0x4d, 0x40, 0xa9, 0xf1, 0xa5, 0x39, 0xba, 0xa4, 0x00, 0xc7, 0x6e, 0xbb, 0x0e, 0xdd, 0xa3, + 0xe3, 0x86, 0x37, 0xd4, 0xf1, 0x18, 0x55, 0x77, 0xdb, 0xa8, 0x6f, 0x5f, 0xbf, 0x90, 0x16, + 0x69, 0x0f, 0x52, 0xe3, 0x05, 0x2e, 0x5c, 0x56, 0x0f, 0xf3, 0x55, 0x1a, 0xd0, 0xc3, 0x3c, + 0x46, 0x9b, 0x37, 0x46, 0xc7, 0x7c, 0xc7, 0x2c, 0x58, 0x8b, 0x48, 0xb9, 0x68, 0x26, 0x8a, + 0x0d, 0xd8, 0x9c, 0xba, 0x45, 0xc7, 0xb9, 0x87, 0xb0, 0xe2, 0xa5, 0xb3, 0xf7, 0x51, 0xf9, + 0xb8, 0x58, 0xcd, 0xdd, 0xe2, 0x7a, 0xba, 0xac, 0x97, 0xf7, 0x88, 0x76, 0xa8, 0x17, 0xe9, + 0x3f, 0xc0, 0x4b, 0x83, 0x97, 0x49, 0xef, 0x7c, 0x0d, 0x0e, 0xb2, 0xdd, 0x2f, 0x8f, 0x92, + 0xd8, 0x0c, 0x10, 0x38, 0xfd, 0x42, 0x1c, 0xaf, 0x67, 0x36, 0xe8, 0xce, 0x16, 0x0b, 0x46, + 0xcf, 0xc9, 0x68, 0xd0, 0x6e, 0x91, 0x52, 0xc2, 0x0b, 0x24, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0xf9, 0x8a, 0x6b, 0xa4, 0xf4, 0x1f, 0xe5, 0x59, 0xe6, 0x2a, 0x16, 0xff, 0x5a, 0x24, 0x01, + 0x63, 0xc8, 0x75, 0x7b, 0xac, 0xd7, 0x32, 0x0b, 0x4a, 0x5e, 0x52, 0x45, 0x75, 0x39, 0x2a, + 0xc4, 0x13, 0xeb, 0xf1, 0x7e, 0x42, 0x84, 0xe3, 0x9c, 0x8a, 0x61, 0x84, 0xfa, 0x59, 0x2d, + 0x1a, 0x6d, 0x2b, 0xf9, 0x9b, 0x9c, 0x76, 0xc4, 0x44, 0x28, 0x8f, 0x2b, 0xda, 0x42, 0x65, + 0x89, 0xc0, 0x1b, 0x1c, 0x91, 0x86, 0x08, 0x5c, 0xbd, 0x6a, 0x57, 0x4a, 0x6a, 0x02, 0xf4, + 0x11, 0x4a, 0x20, 0x7b, 0x40, 0x6c, 0xb4, 0x22, 0x21, 0x02, 0x93, 0xc4, 0xf4, 0xf6, 0xc7, + 0x65, 0x0b, 0x23, 0xd6, 0xd1, 0xb4, 0x80, 0x93, 0x48, 0x94, 0x82, 0x32, 0x79, 0xbf, 0xd1, + 0xe9, 0x70, 0x77, 0x16, 0x3f, 0x17, 0x98, 0x56, 0x23, 0x1a, 0x7b, 0x75, 0x18, 0x63, 0x89, + 0x0a, 0x32, 0x64, 0x23, 0x38, 0xc1, 0x07, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x47, 0xc6, 0xd3, 0xfc, 0xbe, 0xa6, 0xce, 0xa1, 0xef, 0x53, 0x01, 0x50, 0x43, + 0x9c, 0xde, 0x78, 0x7f, 0x28, 0xad, 0x6e, 0x86, 0x1b, 0xfc, 0x8a, 0x21, 0x0a, 0x88, 0x5e, + 0xcc, 0x24, 0x3f, 0x91, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xe3, 0xee, + 0xfb, 0xee, 0xea, 0x3a, 0x4d, 0x2d, 0xfd, 0xc2, 0xef, 0x69, 0xcb, 0x7d, 0x66, 0x28, 0xea, + 0xae, 0x75, 0xdd, 0x90, 0x40, 0x97, 0x7f, 0x40, 0x58, 0x9f, 0x62, 0x99, 0x43, 0x2a, 0x40, + 0x80, 0x6e, 0x29, 0x9b, 0x5f, 0x30, 0x26, 0xe4, 0xed, 0x16, 0xd4, 0x96, 0x8e, 0x32, 0xa1, + 0xd6, 0x52, 0x7f, 0x1d, 0x92, 0xe6, 0x6e, 0x2e, 0x1e, 0xc3, 0x42, 0x22, 0x2c, 0x54, 0xbc, + 0x08, 0x00, ], ]; diff --git a/zebra-test/src/vectors/zsa.rs b/zebra-test/src/vectors/zsa.rs index f4caefb4afd..e6d2546a97a 100644 --- a/zebra-test/src/vectors/zsa.rs +++ b/zebra-test/src/vectors/zsa.rs @@ -6,10 +6,10 @@ use hex::FromHex; use lazy_static::lazy_static; lazy_static! { -pub static ref ZSA_WORKFLOW_BLOCKS: [Vec; 3] = - [ - "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f02c71c7ffa660028b5f3bc0b0bedf9b76a829ce8f2ef82c2c69ab6948bc9fd00a80000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000001000000000000000000000000000006000080f8694a1277777777000000001c1d1c000000000002000adfbfe7961473dc7f8ffd411b3e2eeb005a37342e6081d5121f18f5648c8480adb28949796e09a38118152905839afc125618be1fdaf921d188488b607f2544e12a249ab310f17a9349bfe463c7de09d2b822ab0efa88b6d32f77d7c38793192b944aeec0ca94918390dbe44c50e706407692e348ed9b7cedd231941a673722ef1e7e74888672b2b2d08c97a9ac114b7039feffbeb8bbe197db4a0bca8d395cd40551c1d5d788acc2ad09eddda73a5948de2d9e2d82aa638dad6f5dc61042d6850b926d944f29f17e96eca84684252c97ce4382f2642e54208929a4b37954e8e386c677f2aee3e8f4f4aee9f76a87d868fa2210445c09b927b842485918c869a23be8213ae21937a8ca83406fab193cecfd3fcf3b1c698e8057a6c87c059dc6f4ccb30af8e608a7c04088cf3ca32ab20cd780da9443606b092c8b5d85c9a76433c0993e3eee385884ce1f3890abf95462c49bed01a3a5c09df98cb7082e9770bdee196f8b968003f5cc76d82bf575f01da3ed40e44b3b15721f4a9dd5ecd14fb71a42b24ccb7d7e6a3bc10b53ebcb7e0ec6ace91dbc19801eff0c76ec0c10602bca2cfce9f3e79536a25143d351ed2894b4eb4e549960f212f0787057ab1ac8b249c3d3ff8652cb3fb17d7656d50c5e6833b056feb26855332f60e7b8d1ebba32df63d8561fd7d209a1e5adb9853bb5b5d6a41bf1ec52d348023e945bc02e8d6ae8d5b6c7a9225991cca4aa0b41861f237b3bf545220799f152767c7fdcc693a989057e119c18a96007c69c8fe5751a4258ec3f0f99c1aea8dbbaf4df9953ccf6b42cf2f4265011ca89ec7b9ef2c6e9410886291054f50db6310b225ddf32f9db26416da6ca9ef6e3198db36ebab9802517aeaf628d41358fd141dda8fab32fcded20707abc3d00191e0b2690a1e2fa044814191323155fb21e3da8798e0bafef8c2da4c73f967504f51e716cf87117f90fd028df17f3ea26aebeda7f5b3192cd5f4855044e9a41bbfb817074ca1680a458338b191a9619dd337bd0335cb1896d79c79cce10e454b58fecb1cf10da9f53129bbf3cae2bde82007ed98505f16922b6ae53a3a709c2e01ff7e529925d6069807c06bb0c73abf8d463b2a944a97d150935cc76e1ae1f8f95159a928a5afbf76d54544a771fd4bc482ca522274b94c87b4f1c7cc3399709b5572c5133bc945cca63bad59b454ee301e3582f09c5c31f326a59705a2b534d8e9a79835bf767ea563b0aa74d3301c40a303f6fc04ba0f3807c5decb6743aabfed1a092f88975820c324e2229829462e4985e299c2415eccbdbb4ff26789b74e91db286e6a4af023e8a18e826e930d9d4ac8d92cd8a1098d0705852cda367ba067e723ace9ea8b9502e20e6519dc72b1cb477c4f3091ae4d20eb7401acac77d923eaf5de00ecbb61baa3aca9044f3e66262245aa9f3dce1d02a88e8c26b34e3c27b4e4e5f91cb633c9b6e098063d052dd6883d4c2b153c739ef78c5f375c640ff747adc1110de2f9d011118f3208bee2f3af9990d56ecddab1cfde0c053020b1116afdec7a3303fffe6f6880072482f95aa3115724814aa5fad017e3b7637f3dba509f1e371c9b87a275cfceb68aa5317dbac0e1959367d124935c76631b8aeb532d99c393374f214af2d6a3a5bf4071d97b6ad39b5b2ec03f1feb520ce467808eb2cedb3ec933c20322bcd4511b838de111f9faafb5d45ffd8edbb1fe8f0928d535ab9809b4cbf588af635419b10f7ad9f4418c766d88526215b74518cb6554e833ada2dea5e57776a09541d76ba545f8a727bbe7722912cf00da4a48a462a5b7b13c88941762462142f97e8da2b358435c9cb53d24b6443ea2e1bdaaf6ce58dbd0bcc598cf170a193e14e76ca8bde66ccc786bd330c6ce61db5f202b01c7faf185877e3614c1a1b4484cae6dbef080142f8c45e3e48485746fd3505bba099ae7b37b96e22b2cfe6a0dea5b017974126259d5055a28ad510b3b7116c27287fb7e635f1918d5a9ca2529b1741c9e86c59ddf11c3f70a56fac7c9607eb9bb36612494ed1ae819c092cfff73b7c9c5d3e8680dbe73f92b749c84363c374d80632fc488d0b7d35f25ecac1c151ad8427d7a4eacf24fa6937fd5c416776654bcfae92d999b51c49d76bd53a9d5600b40915acab5d31f0ea3f7a68adccbb72cb454164beb35819af0e9e06ecb40e96c9c2aa8018883301f65cfbaa7ea894737d49b44aa5d76c4b26bbb6de7126bf785fc2a8760ce1664150be0b6828659513561b52906e6a4782732749897a41ffce670736ce0baf5730fce9bcb50a44e1e9bba166f4812ecfdbc2ddd8483405cd2bc68ac179177e1713220348da35c7b2a30c9ad9670d99a53a3c4c4a611fcefe9e39024732d6996568f2fd8eca433a41664b070000000000000000ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82ffde01c599a33ae69b9dcc093a546efd4cdc2c8daa0479ccdc63123cbd0622fa54f8c15ce9a049727b659c998b2fc935ddfae5788c51772e00dd8fafb91e7b9e7b9d4a34efad77ea3f54eaf8bb5bfd4c5d5ec6761689042ec6b1639e79d2628e712669e32f33d058707141549b0a0fc31d9fe4a633871d1ca48096cd8272f735a0838bc1a440947547ce52183863bf080eba73bb36f5130d7dc8676be2e28d00714dc36ccc580d88f6d878357e7121a811a03eb12faddcb75c9c3703ccc4afdaa85101244e619f565a5635e6b8c856fda2edfc27b5c06a711730beb1c361a6a916fd713ba64385734b8563775d66adace055205c6cf9a6c90faca0629e7b93511d0e51e3405210bc3d3c590ead6671e57af44a9418a5d3c6369d5b6d294032f1592c601c2782f5e5fb7ef820f548a7e21661944982f5b04f8722ebf42456df6748a2f9ba2b816bfdfe1432f6c4911daec2b75802d43000403272e1de73bfd625b9742b8970133c0599a17cb7fd7984d6a3da82e845e179ea888019c6d86016cbef610a7a0e3409f0a2bac1181ce62a22fe3fdad2708225ec503077caf354dc5c12f6fad975509172383e2f87405fc7c387b1de333f435426fa3b8a524cea377f3c24690918a4ea2dbf4940ded498169b9b85adcd9d37175ac43897abea5d629775f4f9792d2ece6ff69dec38e38d0c1c9e40dd2967aa103a20a148290a9b89ea82e1bb5235bfd29d260862365933e19f81eb19be2c775707433d66c15f68e5bb8a578a925f20e9d1bc34132c5a214ade50ff48489b89cb674fd3a9c787d0ab539849aa19486e3d4081d4f361517f45fa35168e0432fbb69251a6a7e8f5d33b30564338f693e636d04203502588b4e9128744f49005a77e5de0f79e06053c01e82f4bc29f0bdaf3292c300030eb758fe2a7e98f41f0db618ecb99924e25084b0e69da78bb4918b365b8c613ff5e033d4994e176b5abe710fa552b3e5e21f59a33e4e0aad74c0504c2eeffcf213301b35d9b0bd3c7d140c849012b1fa7ee177e994366b9b278afd94f6bf9a65bbd1cfcf5f3525512e5b257f6a5cd61c43ff2c695cd9571d8d0e24bff92a5ace203d9a643b7c52d794b3a6a2f0cdc6c8c1527e51b32847935dd0c12b1f1aef49cc40d4318b5b067ab9d238e7dc4a8903d8ed224c15ed66b11043fb6ca6109587b6210027df615ef57125d696d0de758be6e4b1693e260589e441ebb020177a4bc7c577a7f2c7d415e00fe93cf1436bf13f738f0cb7d0448074f1436457dfdc03217b585d133dd44928779072129072c0cf0ad9ff3fdbc686f12d219313ceb77e01846f030d631c8014987081a1e3659239e009105143ff3fd3d999fb10e1a1b8f0adce31db881d5da746138462e5a1b45d47862fff760d3b1ae1de946257f2f0edd1bb911495fe1a24ec3a7cd5285e5bb25ac1d206d2f926f9dfd574758a6eb2ee5faed26e5a8e07dbeb11ba4dcfad69d93cc718fca7658b97384a243589699547d476887de967e325ba5e3b982b079eddf83998849579a849dbd3f2f487eaf9242512899756352f3680f334e0585bd43a3439bd62404297912e545e7c18e0c2e19714752b7525bebea1d83222648bc9457ff3fed4c91b1fabc6c88b5c3805dde0267f72a0abba1715fcbacce4253881625026ec2e240e8bb98c5316d28d361a91a1a572caa057492fec8d5e8d8b51f5890515186f7c97ba4a3810f40e9916567ea7a1980fd806d295c73a8b1243b538c373f531994507ae50889cddbe473a8dac128c98eeaa965cb0cdec2dce36fae175334b1dccd48839b7d28292a7c753cf23990d111e518a4260631d5a99a28f3bfd01db75d8271d08556abef553106fdc472ae97b5f4d2d3741a5104d06560d85f48d3e3acb040c3264d37f370f2acbff61ed733f655d8815983c7e78942131b41645f1ddcb24711ef39dede1317c4d7dd9b01f77066b9f3714b5f09dbb35e8341188e4384bad7238d9ef7d73e2055bb9e6706a90348ae9e5057780666f3642d7a18085e115e5ea3447fdd013a7d976d00e39edee09b271286c1a325161d3d6eac566cb86c5af3d287b5a56dcc48faec1d8342bf3c5436ccf03c0b47cb880aa7001e2c5464a406e24dfd9d021e62558e3cc9ae3228f03ddab021d5519fb426551e0a39ad08f68229662f16b79b7653b8f827a8527f1dc556a02f9e3c7d0f3872467a60340dbb0641d91d6956a33f5c905069ac39e67b40fc8d5dc617e00e89dd926bac628eb187ca1d0c41972b73b628f18159633c6d4697893bab32cb760a193b57034804a66381e62bebd6b729294bb14a113c5750a2bbdb57d40ec9e37ce7f3a486b920bf2972779b88d4ffd3136e2c10286682a4c413ed2991ce333060be5e348dde9eaded10e4cfc84ab1b157713936149239477a0b5a437574a45f24843ec4a525a71813c05c2524b92c893cb6aa0dda8df21d550371f5ac622038baef7071007a31cc486158ca1a8ec2a0c274ea26100fcfa5a3991b6f79384ae487975207d2b0b068df60c7bd63c014d13d2b5215ba7be1802b78742cee248c07cb00f3d5472dde9f85a1a9a323125a3cca08fe5c8d89f73c3fb600a4a3c7f28f12ccdac1e911c8d62242deb1ceb63eb40ffad0ae8845cc9efe69e9f5a7d2cb9910306e16b529d8e16e235e8e54eb84859d4346bfbfbefd453f9a4c8f4cc5c6c80a616433dbbcbb512651578d1d2736f513afa0fc68b401b53086d4a32d2a73100b59f8c07c06f43d17d2021fdc15410e22b5911b3572d5f7996703e97d24699da3fe7714ce74a1daa802609cc631db787abb71504d8c016cb7f5973c0d5f91899bbb100b97d4063ca590d15f176612d2e8779f89132428c6a17ce0dcab8ca081b9d891d3d0cd0bc755a193c5d5180d28d917ea7c5121c702e7c66a58b5499ba4fae3336a2040c986afd2f44d92047b338db4b6b3b6c176d88c641a6d9b4d4749654d55785002b3201ba3eb86562adf07f94b3e39bb3304a2d022a872ae74cbf27f0194c5c73037bca2d3daf1150aee2f81991aecca23660de5072568652037ce13944ec9d75f7cf424607e36233008df0a9707913985b837c631288ac62c253c9cc1586706b9e8238bb0d3d14fcfad900dff65772b36ca252d9f81450ec29d6be025262bc1104a1643c099b3bae8914c8c78cf39d09907d725a52f3ef3a9981c2dec6cccb88017805cf2163e8909eb0822c34d2b42ed08af78dbae9484e7e4faaf2a40b0762f23b491a2ccbdb5cdb4df184b2b70cd39b0fd39b8a50e4cc527f4c6169e79e9c1cca54900a1624e198a0214d8013c017a2dad0aea1521269505213c1c873cb5531b6dcaf1c5430d741514e49e7f3c0f7bea8c9e3ecddacc99e2a8e729f8a0e9c87687f11158aaa9a7159ca567598add54fdb1a58eb08da87154c59bb9214e9d63fc280ce2fe1300b12d4b805d2d992a5e5f74b04e6b41ef9e4f364aaf3f90aad6435d7662d5639882f9edf5dc7ae1e5623fb1cfd9578fbe00cf82353ecf865d9ea24b5d5050e6f7609205b2ef209c57df854ab27f2dbf047e69666ecb731f0b11e540edc105301dd9b915fb4fb1d96f4f8b99b9c42f55f99cedb22638167927766642f0c1f6c4038d4ebc8dfacf6a3ea59532d6275fa5947cc80f44650719be2802f83f62b86776c7a8ac0b92305c69583eb7b1457e21760890e8b9f42f0043af46d07f82f8aab3168ea992bb165dc7396aef85646148b9e9fa88735bcc4f2f94d70fe02200480795aed487d24810b4875284d8e51e25493075e17b7f9f319da50e339a61412cee460382cef9feefa131bb3038360535c5593039fe5fa3795bdff94b1d41e0538536a9e6de8e4a9228d65bdc5cf6868680f452599112cbb3750f9f167ed33017d61dc6b6b374d87384d3a81e74289bd5253ebd20edd58d54bd3711fed8b2273d5c39ab91cfa21b2d3a901891eff40eefd70b8d0d55c1c33a9bbbf2e0dfa2430c736a18addf449dbaa6ed37f04b5a921f945bca6bda7cc75fe47f4c8395918236dbd810406e684aec3eca46c8079dc76defdd90c746859df26c661e746260ec99f15b3bcef2d4eba263d6563f305d522b58f2a39d9f420625b2da43f7dab24c63ac0cd79078a56156ddb4a295057c02dfd02bb52511d08547ec1c0be7a7a1ffdeb550551cf0170e89d9ccf024e862eb9df3458bede7e0bc7060860bcefe43e526edc7ed295f331d5167705f7f32da9721abf972e7eb1235344776ac19bc23e6b916d3a5e54f6863dfe0f46b17800ca77c07f80f0fbe0b2a39fdd2e0107e53148182c577a60a52ce377947c1c44f9264db8fe29b5d9943ec70997fbd1759539f1c5c279f645b68a856d58571bd99d0589f444f239f194c9e73e1606f8affd027a78fec78b8ce11a3871e416307c4357e761b6836be85570d3f155e9d19db103d148cf9dd8b51faabd6157e5e80c9b78e19501489fb6fabc2c1b7de2d9f480006f0b5858eae39893f9ec8a36ed92f2d6e64a31a7c1b13dfa8540d3176e2d451b09237feca9752c8e14b48eee5dec0cc314a00cf41303c8af57c727140be157376f5182e5bd20ef43bfb73077f388b2152c79b40c7bd7360aa0da790677535a1e1ea76528a51b5ea8ceecf9babab979606945dc154ab3269d729996e6f7ed843e8207cd7893e5f8be32fecbcae63474a8f3d3e66f5ad3be91ebd42319d4d4e81377d3531f4bbb7279ba63403c9d827875d7c244a9e7a7c83818af42fee45603039becb40982e1ec43e71c919a409cebd605b865e99936dac09953b4be63ee592eb0f1bc6c8a0fb156bde6c4e05df97253dfa07ad950253f18e0bde6eb9baaad215c785a73750c6f30b36acff3e760abd513258e60d80770b4116cc7f925f34b286649676697b49fecdc8e99c6fe3311d34fcc8c4cc1f066ce680bbf9c9fc32722c858204e9f8201dab9bd6639830830e9a24830a2dfc02f767eea40019df8d41f2e0f63562cdbe55f71b136d52a61b271a24e5992a123f08babf356fd83468d20ecb634bb0ad02be4af5fa5163445cf5ae233804ea209f5c279c726db78f1c81974fb8cabc783e54ee537c9bc3c83370bba589e1389bb1e63ecf59250dcc2752fe0e1081cffb2e7f4c62d44e54a46480a809d383e81106a1b06165f419a8f3502cc7fef7c9067599af2f049fac6ee80b15122555362f7419ab7f3379cf9f27503c503eacc8e94bde23efcd0257fca4da1ac39ad5f580174c42860c91be20a8b1b95c2ccd2a51466da013a02d728d54c168eb50c064b30da49f272f08ca19099058805f91afce70776194f24a151fe36c2619df9fab6760554cbb58781514f131f1ec127a06d98e5ce4ba82fcf1165937ed258ddc9ace565827b6b8cc009b87b083119fc093a106d5f5c679e7a145b619e34f69ac0531a9d7e17ece8e335b66f14fa874dafa045603e127954d89dfcc0994581a48f54fec32d4228831dabe01d0d9f887f4604e975326e8cda35e2151a452be21a4f7117740e70bfb98cbbdaba32795fae8150ab9be24746faf5c8a9ab253cf34f2807e30a238a3ce2aa5de2691371c49b1475e62444947f632da3da60786d0f1f52a8ddb0f69bb293540830f10cf70b3d84609d16fb1c6285a4ca9ab615ea8b0aa6274317dc9c06fba50e001d00fb9db760fe6e4e751a720bb33cfa914fd5ccd5a5e5ee325805cabfbdbfdbe82a45aa53570a50fc22573e6bbf7fb641f16d01f44b9176f965b1ae610b0bf2a73fa1125b14bded8008d3d1617951e19f225d0698241746b651e003fafa16764506610fd92caf131e8c278fece483410fc3e2c6f2cc76d4a9b66028ff3aa83d4a074cce66ef035e8f2186d2ff9ed2615b0c451c8564b812f225feecf9cbbb2de6238dc4c8770a0e17feb7cb02217da98318414257c4dbf3022d8f1e5ad79fea78168c8f1771affdf4597994697e6cece2e6bfc7219d3018e3ac49549e37b8a57e0e69ef51c8944a3ed215f36c15a2883aceab247dac03ef5a82f235fea559e6b42cccd5eafc30066a3a3173bcf2f7ad34004071bd080e69c7ad3f514c62c928e63457afd2973142069ea68111c6820af10202db0396474cb2a78e1a7121ec04900d9f4ebbadf3d306273afaeaaaaf0d882dbd511146f009b748c2e093f02baac204a3b4ebd4bee5aedc3935775b9d01cab2723ce0c06ccfd5e2a8a2c8fc467c9a06ff3964e96e104890097d00a99811114179536be5457dc37864f4b5f848d27d28a6143b90bc2ae09b218e867fbd6791404ccb662fb779119b8cd2472d1f9e360ccc37f39f2019c79f365c813fd80faf189985f1704016f096acfc6bc0b674fb117ba7eab0f4138791416638ba365c546180b8d5662bfe157f3f63430198548216d7cec0ec8724ebde55883b2c384cbb67b2d7179362f9114dbbe561c8acb3d40ccde56ea66cd7c832b299a96f3a0e0aebb57e9246068d5fbdb126e6a149f7ef2214c35f30409f1b44de792cd741df0cf48f273f6dcafd69547fde219908a75b3b594f45a382ffda619f7e1378df37a8b2a25aad273329002ef931a95a0a7b670dba6dcfc08119783f60b84aba6ba878de6158e689ab051e5ed1743f6fe28a3c061198e7a49d08a68271205e4151c49264929d9ba38dcb2559f45658ce96b2c232cdf40e63bd8828794ef664543bc2f700a65d7c86f218a9b76ad0391906f4480f5563b434403e35eca1079d8c1f906a271ffa21d669a27883108ee78a4fceaa056c0bd5aa4496ec5f37b2dab8b19abc88c61ec5891759c6fb2263f534df3d7116d6874f42d8bc3a1ff9383a68ef3955295b5478c28308c79ab25ae9ca31544427a2cde901ea588ba872f37cedac395f6661ec659f1bcde925f6a82502b32fbb07d4356efda64e82c35356f9abaf5d3f0abbcbf0b0fcc2191501aeb7b59b21e00858b19492aaab25c62afc3b0cecd3d7746eb6cb1edb0cdc569602791a17911802c9f5ccca92717ac661cfd4d4dd8bcdec75492a64bdd2150c2235e7d87759e137b213cb3ab4e275a99e4ac77fda073e2870b6486ba384c44b4f59b382847a5d0a4f87198a996e639f51246014a0d9751db9f85bcbea056a7609332bb1e7ffee3baf262a346e45697d9c97c5ef099e109251368b5a807e6b69c1247e8430d2ac2261aab0ef2a0f695c22086b86fee0adb6bdc8a14af3d02ea0effac0f6f55e8203503b48deb8c8673b92c499284b935abd06352b391c253e35870f024bcbec4332f578a74d4ab0be09e73e3cbf5e1ed7e53eceeeff4ec26941dec578ce3a33f701bb540da65f810e7f4df368804cfcb6078c99d45e4f15ee1d1ad6831c3e6e01102e6ebeed1f86940de0759b256594c9f91041716bd57ea464e77cca292090f612bd7daf20e9b534bacf13ca7d940c90fa9c18b188fbcc17e282edb1156cf5c1351a9f118dcbc5cc720c5c6dad1ccfd04f1beab7817561e86442665b841c97150d10395fd842b54d025a221d81f05c820474e492341a0c6dff31f4a38ee089082f7bfb17b9d8c8355dc76bcefcf0c7692ece39649e85ddf7e395f1baf893eb960d8e1374e84a1d32fc1924ec5808c1255b34946db13ada6163b368754820d519197aceb746d33f556f9932aa775b5547d4b42ab6433e4adfea54bbd7d173e622229660e74ec486937fba081cbb26de3ce7f6f76e070cf54315f18b03675cee1c06fc765f145b7fe4fd12f897c83e21c299fb9614533e163564b9d3090cb00f253029a3a4042e2047cead0dcd42969685de183ded532773056cebbe0242e9bdbf079eb9c8b0a64df4833ad35fc40a317e99070683255e7087a0896b20e0b483410f9e4913bf36cd028555302162a6c6152803b31b8dede9717b80947efaa233f6324941e0714473c92da512fbec873e4b745505a5e691e2f1b6dc2e98d1cacf4c1a42dff6e360909bb82027b6ad070f34ea2d1bea39653da363b2dd14633f5d0f11cc1617ab8239e9832b162b2bc18d8703a39a21ac2ce9b1f23395225f6b34671d5e7679459e7f86391c80e2e3c350220f3f3cb40e575fd8afae3bbe1104246b092e405bb740e213734a5a171aeb6d82b185973a797cf3f17d77cee462e4f3032d053044aa6d8060928f6227bee4a2ad6f7cc6bf49df364cc75fdb9c9aefda07130967032ecb5a29b38bafd4e6755e2427585746460d696c9481db581ccd583311b68da1e80fc45b330e7fc6744105cf7f329effa8d05e5f04f891e6a45c0f620a1c516f22c796523a325d03aa141674b2d257074a20a7b14308310c73ccefa815f73715282cb467a763532504523a1b1fdcf2ed3af8381fa967e02294195a9d0eb43a1f5413be08d6e9ac6e95ebddb34f6962bb64dbde6e94bf734cca4cd1d70feb5b3525d1a4f8551facc79b5f00732cb252e9df686627a56b80b13fd033cf279cfc12ae321a0fa58da9df8da8e6f9f64214e40c22334f13bf1f6da122b4673deedbff3f98958b53af0f4b40158d79e63778123cc6dfd55f43f4bce42f318b0ac418dac56dd9436e78bb527c37dfc28180fed5c439f952931b29e271d83b633effe9809a6399282048357028ab1b540cc0510ee6b19a63643714857fe51c2b1b2963b7964cb602861e81eb52348453e9bc497c447e8a8eb73c79f3997ba17f35f32121ac7b0172845bd8caed56a79285e97d17aa467312c4d10b8bce1d18e416c383b128ded04fd1724a29cd8fe9377ead625ae91efff1a562e03d382e4b4621b28f717ac6fa928dac4a086aea4e122d59f28c961ace3dea0bfc79eb62a5702870bb86a8d82e6284b39f61d2c39b7d99eb65f319cce48af91a9028a48cae8c3c08134f7285c9e7161a570947fab3497f00476f9ede57415cf5889ec18501783af4c371a24560a3046a2683741e851ec1c34fe45c777ed5cb03dfb8ae6648a1224bfbc723f1a69a9edc5ef37147baa1a84b199be1dd645dcc0fba7ca9e8365309f3669b6d1d2e8a47e21d34d1405e6530e0d200dd9997ad72de1e70e660dcf53a6bc4bccd999214ef9206af79b44915e9956f8a019919290066728eb9ae5ccf073eefa4b9f771f584c03648cccfbc1823d118326d7488e2fdb2319df94a593ab0bb34c9970d038dddf2c174631f7b73eba3e6fdae9edee2ead25e57f4c498c32a567c546f089930cabc63db6421a25915714aeef8d9ccd320237cb0e4d302fe1c964c4aaa604714105a1228fe5ad6ca7f42fb2e07c7d6b0bae5f3b320f59e9821d0f66b702e0bef73c4f3d891454e90599f033a96da7df2faf22455f49e28b10ca126096573ceb1d4154791bd607ab67ddc372cdc3da2957e67ce2c599d50b90710895a934fe744c3cb75b1836eed5ac9a549c28930a6388a7c993c7d5a5aa302ee7bf08d177548ecd98c65152d6197286f52b57a3f918218fda1241e28c86201d6e3b6ca12d8e6756223bf9b19387c321db1a0ea2fdcb7a7705f7e8c81a998368a1cdb7788be5629a43704d8e91662b3e1a5ab205f85a27a139a5dd5e40cab92e6dcadb5be50ca3343905fd10ba97df8aa658634c914db6389809d9b18f59fbe371733e5ae1fb35f0f6230a2394119aca72cb11db8a0d0c82a0313562b97528fb50b99f21e3c4097366b763b0325a2f8875b32cd4beadb07925be74aa54aa89f9b52eb1394e1863899f04d7fb451fdb81fc4360a3320dc2a24b3b2c0fd463d9906b0797c3215595d59e5350da3a8cd519d51e76904a80d73a163b384fa68002516c7d7efb1f14aee9258b3aab9c5033b8d929430ef742cc88665799fb1207f2c8d333db1ac85d4c15235103d28b3769df98a763426546b21a8eb0f67872edc8c9d448b8c70d6f7af172d13c3aac5d4ae5bfc8ca9c891e501f2c473eac63cdc16a96b0f74cffb89211a411b0e6b4a0d794b5be83a7cdde651573a142789aaa6aaf76c7f6ba4851d1eedce7feb5f7a2c1179e351a6d97620395b96850238967e8264f581ba4ad4dc85933c874e30fa3adf74901f6ece0504879356a835eb019e12e5761f5555f63c91142c59cb32515de844c0284a31d5e148b694c53e3c69378a1c2880e893fce50f5ebb5b46b7ddc8753e7104f5effea9b0c36e3720469c3f20b8d97cd39c06cecf7881d20032be0f23ed939613cb0dc5ac81ece654aaf5ec36ba427cda4a0031328afc840ffda24b1829153682cbee0da142cfac74394c073def27b4b38f5cdc1c7b699d281d1fd41ac559410cba3330d16c74c8d035ef0210c8dd151a3850db594502d1d50c2959301c384da313611e361e71e937a5d1799d1a45398ce25b1111c86177152676d64393e6ed1f11821c1fb5dca4cddce3a3b1e28975d80dca762c79210222f6771d20ac64da695035d00dae321be393b17008e5f0037f4c1733e4a9f17ce275a85fb44ba59edf9e20403843b11863e4db333233314661bfaf853d6269b187bbb6c0eb0f510d4912645056813ad34cf3bfe5277c589a0314bae0aa802cff46b510c6c76938cb84e921f7b4cf4200da1a82942a807a2075c0f7dfebf768b54b2e308dc49488c4080d6c71c0bf8d773d5de3cd112c588a8ffe11d7a17534a6c7fef432c380ccf252a10d8cd1fa13a5cea6e546349923de83cceee44f2981984fef7144be4e72ea0c149458a7aa6648c9f658622c00be9d0074d3b0d498e475c8e4bfdc9ed4ce81d3aba532aabf7e18d5097ce37505c2dfe9df59a6bb30fe45d62c8a1f2b065ca8bf74f81bc3da5ea3bc5fe855ed0f0104574554480151238458b0d0dd6d493ec964a7462117237ea214ab8bb54b5a7d9e005f5606865f5c7c04adb7149725e02ae803000000000000c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945862d09879b6ff8bdded4f70af68cd3e81dc71a4c671032da6cd9224a5c6c1a660aa1393872b9170453d05c1f40ee3bcb8f727b3e196cbb9c72e7f12ea97080f67e003c99764d0dda139b3165da5dc4bf9700c6a563fcd0543f549e7b19d4cc4caf777c3aac4386f3bb692fd45d7197df5894f1c9545709c9c2255a3b6ed950385ba5a7c9c5fe91bfc671695898f78518380e34231b3e36a49b641cb3e940beec0062", - "040000007d24b5bfe1999a3b21189a3c4d4867784bc2105a0196aba2ba6fd1c9a63e22e1be3fd8ef559f3e7d94c5da9f3ffdb276804f413014d8bf07fe14907d6a37659320e538c79c0033eb2537c88a69d77f048cf4cc4fadd09c9bbb91b4d965ac8f2e0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000002000000000000000000000000000006000080f8694a1277777777000000001c1d1c000000000002ef753da29c8538cbe9669c722c10bec5663e07d101f0a6c3f1f86440a7b00dbe374e5118632c4075f9e84b6c62791de12f1ec0e70e7d415d61c6639d786b1a0c0289051e9e5ef26a5dcbceee48051ae1ee91d70e02022fcf954f3d1190186523ec4cb0ad65db85d28e247bc1daf3fa5b111983e5d328166df852374f3efa9430f7e7d5ef94c51c82437ac68d11f78c190ff7314fdfe4fe007c0be3aeae7bc1094c0be2db5c7d2b24faddb22ac70bfa8499783f312f0bec068f8c09483f7b7edb6e63753d60feb460e2ea1f683740eded3d994f602670d174d38dd95b2a151d0b1d5f2592bd522084eba11fe9f8fb1eac057b84bde9119816ff74790db723529e8713c8daf25996fad08f2a78ceff248ccc91a83402b94311946343866a6dace2226d246cb8226f2bf7555640d4891457a7f6bb6c85962a5e482ec760b6d6483a15f6b44108c2096492765fea12c37da638a7add8d0b74b1bbeb5784c3712349881b78d229a682f024cb21c0c3961704a71ebd54be06a17f44b1fb1926844f14c3a9eceb626fcacc77ddb138846bb40f28daaf7e431d5d09d6f2be928bd09b03f6ee2302cf572c781cda2167d7d8e9b1f4667c8b3f7621c0cf85aeb45462eebe743a33bebb34a9d118cb2d4a69d2038d591e3266e77e122f9fb889ab83325e5d2ab3bea0e85e10cfdd1508d3233ede0b9de84634972e6d3cbcf9325407c43fba5c9dd30a70aece3ac6ac3d5598fd2dd29907584b85398cf21879b4e9ca3c2066e65fad046e788e56fd4a9098b5a4b0fbbe12c0f7c0b5caffbbfa69e4289c9cca89ffb3158dabeb2952a6af2bac251010a3644c01918e0198b835da28e26f694ca21d897785240d0477cadd8bd03bad34639189525c02fea6172168722cf2ae9a6b51412b4f9b24495b9b2852cf045c1acc6d97dd0d6746dd116cf8bbce3258c862e1fb18a4e91d9118c5741a38d6a7aed613910b11cb881cb6d1437669ad853512778ced215ff5b460a47cbfd30e86f9eec227fc123262d73f45d71e66f17492af0457191e797ac9fe6149f4b3cd631dce8f9844bf16588f55003371165f0e48562a11799c33c5b4e4dd390b3943fddf0162c033f0751530acaf5ac2530f320c157c498452ac5012adbde2cc19339fe82e1ee6245dcea9f587a40f3b78600de1209ef9eb6a903d267a95742c856aab1829fc8974731e49b6e8f674eefa81b23026d0bcb1d770c31a60232798a8828fecba930b51b80ae6b98645be3c5b80b195828dfab3bf8763ae660dbe4f02ed5b52abb301b18f3ebf8f1f81b8feeeed620809673472aedf9d70ac86268b7a162d0f46c0ff6bf52bf5dd289a9f34c19632198cf15730427971369cebadb6e943a6d8dfa84f83f2f6451e9d155449f6ff1b41f538eb760edccc3697ef679a586c8295afff2cd8de2ddcaabecdd1c0b41e8db2790ca35e263372e2aadc2b579fcd47d74bcfa188dabae48a78eb8e32e403a3f4bbf86b8535c568a332e0b64de3b3ba0e75a2ce01deefb1b1faa6fc59cf602d1359180616258847d458d03990f158398018e63abf87086caacdeeabf6daf6965d184bf8dac33b1c5af2223168e023a2f5021874300012761f400e35e341e3b54683442a1bbf7907060b54181d27021ea69caefe8326414462f03c44eacac9f26c8a37a8eae78c76dbe19d33f6b198e8a2f4d77a2d50bdc9785518a1e210fea6451bc05e85bd106737ad37e9c96105db1b9bb09bd7cecc45960de0bd6d803913fa43935a8c17de7bf573089ec323b1aba8f6eaf0603b91e53c540305cefe8361dfe47b787257add20569bcb7aad355d93dfe9d28443da5662fd1030a8e251fef553877edd1e1559bba63ebcec258035548d037eb34276f4b256b22631489e8f7201c86537a53502b6f9b4ae7c2a7272459a4df0d203b7399ca1bae6b5260566332b955e342132535e527fa207f8ec9b0bcf9442b7794160497121720d2fd698e3eee28fa34de2321afe580958dd133b1dd2b36afa84dbd004c4a571afa48466d3b7915c84753186b5a3e7b724a8fb8e411f8732b963fe81bbaa48b247330eec8a0897ebd64a25032e8aa4c987ff8153bb447308bb3cf5ab699504746794711928457df6e10d689d81cd6a846123375f5c46ed603f14b0ac6c9729075873179c3bae9740c273d0ec9e1ce060285211c4e60fbd2801cae6c7337570601712fb81abfc25d9a43464541e13bc42b02f01f8ec78a7e5dd3e84fa9576891397106427a6ef262e11f24a55af39caf98130c69bb042475834753518d2f67f66c04d81c574eaf7d8b83bb029f037c4999159186e170752880638619096dd852f29994be72f3a6922a97610fa11085d4288214fe131d2243929d40dd5915a6789c77a499f43489ec2a0b7ad37e7b5070000000000000000dcdeed4e7121d043c65c8049da787baf0bb29c59b75e9608dc59b97fb001c92ffde01cdc9b9d97951e4247bb513ff71eff5413fda3522232fb7d7bc48429bf301c3bbf60c1e5346e6b2412ec70d7ec4091384f5a9cd1feddbf9b02fa15e591c1f86bb9ee9b65bccc11ed903646e771b8d252e63306498d3b325c7cf46dd9e4f8e1e385bd5631b11f427848e7fa3bb78f8f97d090ff15457ddb0030fa9a8332dd2ed68ec267909771b6ee3edd3370ba34516a4a7171680d2d912e2fa4c966942b231609e3a4f5860f35991d117445464ebf6049e31d0b0eacd23a11122c2cce82c6f72a160e131c588770bc6df3888503df8add4f1285f1417543f380479052a2bf8597f56b0d5587578c3b896ed7bf0e057b9a39ca8ee3b1abc2bb967bf5fd7064150871024113211114f203ce5f150e30ff55747a6ecd17a342b77fc7c41ba70e1a216112048b26bea002606abde584d49e7cd633b7a5391290e7808978100e2d5f955cda22772bf642aa0e3b4e8f30edc8c9e6dc1d4952160377205a83730dc58516ad5d5f1b121f397aa2d43f47ff7a09b602b9c61958a3317d2316b9c8db14e40a53e88f1744655a81b850ed7c9388c5388da56e36ed67ec15e15b52cac4bf47a088df916d2c70c9bb348640cb429cbed26810d8fe2218424a6c63f1dfb5bfd3277bc64dd12ae6c088d7f55c4804f6c8bcfd6332bf4d6edbce09574a9c64d3fdb1e41c4d17a403646efc749f7ca43eaf94b014dd269c833ac3e19bc7442ab86b815a9eaa9efa44d01e69c77f73f600c5a911f6e50b5713d079c855ddcc2ba6462077f5d170cda9bf0eb8e477095aad7cd5c081864b328a9cefe21b44b53ae46d38a66f6aeded011536310c3bc0dcf64d2dd0c9015c6c2f83d36d146f9bc9f5a627dca73c5e092953815715ce9ad107d5450b84d449e0e93bf16a4e03d8b15d8b938216cd6c0bc08ccbba0658391f8d8cccfcecf77a85778b9904105bce80cd8c15e38114a80fb6e6870fbc92af588a905da1de9cd58d7c288e7cf406ef916c27b1b4b61fac457fa6390d7a7b6c14256c7a87fd510806be27244e778173f993bf86ff5cbe48b85178c8ba1d529a974a00995ccaf42b64d4e714fb5df79980d79492002f7e220dceb7a14769cff9c1dba91247cb300eb8bfcfc3a85e360266fc4b9f328ba12a6098aeebc67e4fc9aae6762defa078251a0d9653cdbec24fbe31ffa3ef322e6ba7c7114d0f642b72c7ea2688505047248fb18b8321959dec8693a1ab349c16770aaf10889e46d8d8f508f3233a69c9a820b88fce5d5ed044b9cd7420f456459d3ae87a23cc72d3d9c770f94c82224d95426e10107ceb351676c1dea9f252470ec81a9825bf0c2b4a3342ffd702cdb306a351ef3bdb56539da5022b878e08549a6ec8d8773b44c19281da0e307614f72a30e46b73f8db627c4ae9f530c0ea6ea523a6b857f96acdf37b42808ffd31fccef667f92d7ae7ee853233308d0e6a61fb0f78f1d0ee35278788dc3f7585fff3688ce16d40da875b756b2cf4aa33875e01404fe7c74614f184a5eb458acd986abc580f0cf2517110b9f1239615194055de68c7925573faef91ec11706d27b7b672b42b323c32b25a796e795baa58a7dcf5e19a46f21b27bb14e2db080ea704f7a1d15c2ff114964a65bb7429a216ff96939999a743316b073d63cf87ec39d924f6e7658f325dd6a77c9921b2b21f49a22b1d96155d1dc9a206a9d521a5b3372c397556febe9495bbad48c1d9a50f0578bf5e0fdaf8d0276c1fbcd0eda0a5b72ced1fcddd7f6dc0df854aae139d42527db885aaed6998cfe1daef4865a39fccbf57673eae767a975e43f1b198185b1e37a7d1afe476cc35602f148cfee549147584f19255d6cb3e31def73cef31e3adff8184109cffcb6aba6e268367a2f1d803604aefe48404ec5b431c13dbb14374dc9e118736b43f342a3c93f57c707f58dab5f2359f88b48eb85c37d052105bdabb93a8e1f2866330f5548252ffbfd62b448fdeb777168701bdc6136a22bcc048e3679f6098c00ca7151267a4bb1c6561685f5f6fba0d1976a6b7999257a1e4d5155020b124f65e43dc06da593c7fdd96c6fd84afe493d2ade3624fd7672fc0fa7c77d97bea5be3c865655cc77440c7d28ea2cff6eb9bcf85780f2ff0e4215c8c18f63012aa4067fc1524e81c1b9d2e08975b0305c2a1add51a9471c9181835d923cf51b854cc659616fc1932e4997b2b3b737e661945abeb0d9b1fe3c113c2b2a8b371d8630927bcc23c21faff67fc6680ea0b3468b8a0279e3e160629bfccc7f1aac37b5aba4e275cb9cb8ada5c99361c70125a45c0536a9467343dbf1a22610ee2da7ab15fb8d3c5680cc447458f81523ee75668a3f75302693169b7a20349c35b77ef8e99cd3c8b852e4d1871972415de7b9bc9859697d7eab02e559f03cd57fae9e5d3d692e617a2cfbdc34eee3c9db4efdad6f1fb19a7c4907db5173f80ec204fe16919bcca832722c58273f8fb67f69e5d8b24c285aa1a74581f0f9d1fc11b42f578a1eafe7a7dc2c6f11065697d3207585344122314bcd914733132cd0bf5a661eb329dae384c0a85f559932a49d31facb17189716a38b20e3f0c0f30ab4686e79cfe9ad03c00fb0d726991869b6c89ea25da9450c3d6cc5bba1bb17c7a3c38962361890e3f7e24ce94253f63e12dcff3e2c3d045ad05f45ad9349575c7ccd0cd82fdf1e083c56dfed867382a4cf758decef9c05bea3138ca4507b7f638edbfe8f1512911ec00d4379fa996b4d64060078b95064cc81e92aff21e4b30d0b848a8d8d5ceab8f665e686881a79bb390d75f94c593be007bcd38d10de1e750df1a9256375c15e2bed4da66082248abb6d6660ec9ef6351125c245527c3b13e22d77ab516f2457d890f9dd5a6c8d0a21a4d626a5fcfc4bc3a427b5d3581830e070fc6b4c0ac8038bfa1aa52b12b0329410b6b8d0d78407817ec0cd708eaa5215921b14e113e8ceee38318fe47f3cf5a58c1ab86a6eb7734170e55b5002ab3a48cefe62fc6c897aeae4ef82eee968be5b59bf329cca3d03ad5dd38dc287eeda31de96cfb4ee94eca046b1d9e83632f1ce043b7c65782940b60bc0f9f35cde82d5623c83c6d3540139ba820af7bdada01c22a2531b1e3171e6befc5b8289868ccceedb49fe28a32bee69055d5e167eeaeb320832e0da67d6f536b7ea5226e86420f72ee68978a460d1a5f5d0f22e7b3fb59f68489f757581bb4fa107c14829bf5b93ee95f76a84c2f08514f73aa5c062585b57b02de19dd4039afc4480d8666cef6de93ea111a934295350433ecb4d7cd9957a0cc739439bd5308449d3ab744b76f429b3997611e9edfcc49f021f65645ac5524ddbc8fe9f49d8820633ea37d9e9dd5bfef0912fdc1ba80500df637ca3701122f543e99df4f528519c6233fe9cc94e5d2591124212b6a7711cb083018647b0e7200811aa58b82b5fbb10d347fb64ddf7ecc1e526d69bf7d0bf9ac4287ac42db1e4e1d9037ed3d9624cd19c590c460c87c71e7c5055cf0b78318761a5e5b8ea36978ac18275470e04d8e3da440cc7fda0b2fb7857bc2a0bda4843a60d21c3bfaaf7e32f16de155a161e01392be4ef0ab5df2bf0b18a0aaddcc364acf987c625c20fcb90b22e3a0bd6fdd161780a58517012cbfd7086a042f1e13b3f337ed2dfb4f66635d188287bfdadc3bab7a139c3ed8d784c2773836618e440f2f5ecabb712c9116a0d8536419ce663402b427556e899d12be13a588c66565c60fa3ee42f5b21cd3a8febc2b906eb91a778baf31aceeb53acb3556007cd7752fcda896c3a4a41cee337e5e63a5bd7d3d9be234295ccc93a1cd3b4c171f3a7210306901bcaabea6776909baa057ec840813de6ca414318b10d18787403f9ae1a57d671cecb824163683d2e8f3d40cd916a9e6d63aaf5f69dac13bf6cbcf9562a915febaf7d95e8fdc956018e42276703719e4f0d7c698051290d59531e034f884fe7794175006fa69b6b09897979881187a31d33c3728eb87e0562213ae81f502108314c35d590b02b4484caf58925d3f9620e89d5e4272be9fc2bcd587d337de2b815b64ebb3dc542dda0e64ff6d6037fff10941f565cb6814ac3058945d4fdd79c3f97819906551441b1914a4b6c4346a34d7d05315eeffa813cf95b83767317386bc21f1456ccf52cc983777764c02dd9c5ebf3940c19c8d4cd2c1e6366935211884e8aee011aac2fddcb0646cfb290d3f7ac0ea8fd1ec20b57f67a28a470673c4c202eb57409ca729c4ffadcb1828daed09ec1223d758548e477e7e06f8d9015df9a40b964438b2c59261a8527d0755b468601d381e60826627dad42f680f33a83027246eaa154ae2cf04ce7cfd0eae34735da1ecd1b408f4d41a9278115695b16a248cb697366105585a863b4629f6a6899d77dca911091f73e33a812f5baa98b3460edecd6cf2bda734810a7412943426e8d8e00e24afacc681379b92978ec8e049f34b22de5488e9ab25a7bd135ddcb766dcc95ee688268ef957b83130c6869bcf0bf43d606209c5071b00e32a20cd6da4bd4cc5492f435a62561348e3769093639c533570f22b9ecda5aa7c2773753211c68672101694fa491eaec2005a9cc439f773801afe423675efc54e302fdb5e09b895316e7ac8898343bcdd91ad238211e3318ddfe0d86c5ae1c6d83d791c52d9b35496b8ed9978a1c7b5dd00bc6c9697f39247238c2042258025121816660ef0c53a49995cd9b45ba1712d45695472b69d6757e56c572c0f290ad6225d35ca5e5f564ad2c3ac7fb0aa41ac346ec3036adaab5000b9c58d8861aed031b0e627a1e665c36dfceebc558f59df5b6235ee823de9d185d171a9237a20811d9b5e4efe508fb9907d25b6849dedff9e8d71fd0b2cff2f8ea8cc1a7e98b204295f267dae98a6476d99f9eb73499fc918e2db191b9decac79eef1b046e9958c32ff1c8bca28c125b2b2340f980219d5cc979eeabf2b2dadec09e43ea4bb67b136dd30cfcda9dbb611d899e5c3656d46bca5b43affc771c9eb1697b10936d6922c17baf10888d8fc10b4a891d4bfe5ead9136c4f79215c61d4796897fb39834f0440db29202211d82d2b16e69d9398fe33e22959a4310d274c67a4dc9ae6acf72abd13a1afb5fc319c3d5ae89933158c91ffc851e5e5fc854b102a047a0d30211afda1cb548d279fc894f1002c3721e3229519b560f0a71bb648149bc763b3401b9ad57704139a85d936bd0879a820f90be6ea7d78b6fe1679d336dcc2f776a3373e473ab5ee54f5e0a8df6114fd0e2d88ed6e7035d232eae1e4d785b417a43e06bdf7bfc3509bb4ad808d39ca785673436a1009dcce6cd055f10439de64652c31dcac2b65ec47264fec73581f8598f8c318bc0f8d0eb929e7c4d6e5f012238e01e19b1fd6b54feb463912e6557b65741ff8919434e44e04e41a5caadb74f3cc0254541c06faa480499326b7146499b55a2fced4dd416d5a31779c8de5dea938385217832cbc605788ff4fa96e24fdc3875b52769db18abdc76a687974925a52081043864ee8e39574d7f27fac30650eabb1fe70d5d7bab946b234d1b8ee449f08654ac868a22839924b9e7b94175e60c5b575263089b525f40d6f76570d2740095a43696a90f486332f45f4f6ee2d1d55d4b3f2311637a9e73f921a56ea0529104573b25b2c48307adcbe3b2232cc04933dae07c34c491099c57dd7e4b393fe34db10623bb35b74ce92f8b1892d24b9fd88eb7cfc3d1791b0bc3bddebcf42592093e6ffde9f40766ad3c21a67caed25b8b250946ec46773565fdcc6305803362274e612308b8b767423afffdb27239f3b9bcb8e70bf0ee68cc8a1af4e59f6972d7c90b182d862066d1b83ec044b259b398840cc736ece77dac61d07e4b338083a97146137dce132a2a8a0255d1c5aea80b5e0095b6181dbdf1fa23317c74c0e25cb86b08c4136065729777527f49f407256d36049e4c236201174b312e80090376a2113d62058b659f63de5b8695e52fd178c573ae0e14f205cb2fd929c9f09079930738deea7a2090288911af17e157d6c9ea4bc04f6264c81e4f3b5b087fd17a7c0b7eb631c1d1476ddce8be398fb7f576f3f01f98b823b7e8eca7cb3831c0ed3c036219c94ecf5a0c2d112f788d73a432394247fc0244de10e28d4577ecc084c521f0007f3a6215a549abb3091e59c6d6cd674c8e5775acd276c980033df3c2143be0589f65da81bfab1dff81e6783f814980bed3cf47e51dda6424ff43c2a82e966c7ec5b197a73cc580919db591cc522f87a561ca46753679b8d26110d1667bbcc24706633f219617f620958cfc35c1d70e034c0555bf76d9d854f8e5a0a973b88cd6096e5f3d2a72f3196f4bd42b32d6849fd37d10df37225b0cfe05c1005ff528c59352ad6e319f77da2ddf1c94b8b7e7c7a25c7cd15121540f31ec51725e71924c3616257756be8d404b53cb3091c6c3a11940c44cc8808426305550f35f9a4c5322222e661561bdecd8ace024f4c2fffeb3bc1bfa7f69454f6699d36dc42f35d78130f04b39ef392c5969a4d8de6d5271ee7a32af3f311386857fc0c21d053bae00a066ada63a28fd84b0fae439f1060a7b633ea07813863162195125e00d9c2aa7f25c11c981794cc97718f22e3cdbd21701d6f6f5fc25885be6330ac8b8266bd64a227535648a926a002345e224cb6bb4ec6767c1f1511c2c1753def927f97f9fd620c27eae292cca484472b6fe5d68aa58d3fbc772153043073308ec7c0a37c5355c0bdd43179025aa0e8d492353849fd7accf1a0acb7507f11281ab671d69ceaabbf539eae572f0015426f5e9a57e8c4d4d92216a93027572c11172cfb505e590e4d5899aa663a5ea32d5cc163ebef26c92908e15fe3c0705d06e32504c7901bebbbe7de2bb3f5ec28dd50299d941b24242ea0e151d747e129357f4fd6c98876dd0779fe40a7cd386f198150b43d5fced11d2906915937905f104a9ab5f0d05ddf227110e72a6c80a7878e559b5d8b1fd632e851633256254a22608358228feba5055a91dcfa6f702d55b8a463f0e0dd4af11872694e1b38ce25e8f8b4ec993d38223eba5dbc585fdd5ba53b179c20a278181fe3a0d13a7feb333941b59748b2b06b2c51d6c52d0a8bdcf833628cc30787d9d16c0991bb5a523a92da788563800133ac376a6feb09a8ce1de5c1ac1ce128272cdacb42b9592611e34bb0848a05f3c69e274b33481fd2b351ce7562413c2b2eee4cde66944b64103734d44e69b9187d0c98ee204f539c59b2374eef044e731b1bb3d06465f37d16634579e24f7ba512a29204e0e3fe7d89809914e41b7ad8d17e5ac11af5246b2192c833af76bad3906f95683240ea619360d9a0ad9e7e97777e2797180447e13067cdd4efb5ee7429fc5b97e80d3f9b8396b8d2df51ac47b434ee0109b0eaa22f854d4de4ada9dcc003a4a8e147ceed375d607922b59a50312813519571e2a526774b1241513f77d2b53d3d435f141c55eddad14021ccc542ac37aea8e24b9331fcceaa35dec147c114e181e9a6800f1748c3aa1b425d532da7ed19bf10ec5304900d6f685acba0fed0d7bde86d5d5dab0fe046efe66fe78b886d24c097fa252a7a9151e7ba2cf15798d1cdc07904c8f32c1853b8e79be4d344b6d8820005ff2e11ceaa7833e1de67fa3f64637bf20963bea0a981ee810562a0b8b2dd532e01140421a975d2e7f39c3988e99e5cc8116cd9462e2f405121dea5a03616d7fcad17ba0956b84671d94c524efaa13b6b0bcc15b98b6433619bbfc9736d5432fc5237b9a018b716c2e08e4eac57d2b7c33ffd813816a0b01f7d09a5afa082e1d10a327247e0f086f3360dd6b9b736903a518390b887a6dd2f5cfa65322e5fe6dd801ce6ff44388ecfcc02ab12c562f55484cbda45465049da5aba32131491f3bfd92a1f9e85fef13e622e06445252fe64b42680ba24d09d0cf28c9f517a24ac14322d57761c1d53491940ce65df7c1ce7b6f766409f66f6ab4a9b455df1de0316ea2281d48f8f2bfa74f001509e7d2222b7931453759b1cb0ef887335e62bf97aeb1fae49095be74c11f89ae74297e22a342f60ff851f43c1e695080527747f9326097ef0a6838a1f46daab1f109c4e921beb2ea1cb6a334dedc57e55e58469aea61a185933a8a4c5fcb5366487d36541c46f12d8b830ab05c415cdafeb875eb2031e154fdde2d07437c0297ba56e4416cab08544013b2728a42ac6daac513c436f3e07dc6aeee0957297b17c242e221c41187df1fe919602d84805486c0dfe8ba108bc4c5b95c300bf121307d465a3b69f99fece83b1ddba11e3a8ebde80cedaa52c7b5acc9d0417064415bfb6d8ff6ff46444a62619c9321171883977194fddaa0fb059c29139fea48955b1ceddae3ac8051923472d23f06773f49e6624a8f2ba23b36a6c574d85b40f701d705c983ad5bce01bb2d031617bf8b2769ffc90d2ef086be32b2e84cad752afdee010c8e26ee09ea95e963b57e93188d4af84a71a5224e383a0dde184ed343fc59f77620045b9d6cffdb1a89ef0d5cb7e853810f24523a211f2a2fc19a49729d02fbc51b9674783ed4c7c0ef070c6b47413681ee65934cbc65777f92d13f01879a5851ca57501b5cd016cce8e9902f4379997d5c75b3558161552ebe9eb325a3ee76fe87bfde3d2cb44fb9009bcf14ea07900a9e120367d6a0253fba1b57f388efab647bcbad82a4ef8b5a7158c3d0ddfd134e568c937375a9df0304080a5ae883ec3661b176c272c7dd87aa40f209c9fef9d07bd102818b55f3e7a8c0e06dad914acae44f9023a04395e12b1d41b7d425634c748713a709547376cff51e864654c3b24b19d294b99c5e61abbc2f270163995512a5d042d94e1df1b49bc9f2fc814d7409f97758487ea49b276ce60ba980b9e2df67e1a186a18ea60ac743f45714b80eeb90cc06d7158f6cf09c54a858fef698ffe7032c22de1618bfd90bbe8dd7db0aba29f53abf0aca67e1471bee1c871bf3595f423213645b9dd88a4153c7dee3845194b496abcc0104997fc89eebd4fc72c5ca73cb5789cbbec9cdd9cb0cf9117718041860fb2073fb3842c45cd1a8e44a295b3166e1ab0a5a18aaf22575454d4d3750aa838944d1f5caf671d9402cf331785d83c50c29b2e49d402ce4ba32516fe1b37c463359d7cb780d3561ac8c6ecf1626d33aa1b482f343086e740be27175fbe1cc6ff2f798b9cc96e2d88baa6d80b0e443374cdc7f11cda7def2a1875595f6980d0779641c9777632f7a5aebeb48f3e9d01c187695217de185ea6c99cd47b321c53c26a83cd2f749612ca143a2a3a594c2e80c1ec90d98564f2a69e579f9713c20af6a559f541514a7514b8fd88165be486e825c3de6899e97f9e39a1654e51ed9690cefd5e225602e68480e9f2346b3f8d61268dc5f6add54484b7f4bf8fe086110f74183a0bc2515056f9a0bad6f4dbbd848d80df7a24d5d92a6b6b2b16fabc0486028a13b67a2bbe17f9812ccf6692327e78a5dfeb56feb6dda38c9ff2360062cf7128f357ab4b395b26880fdf80dd889ab809da70b1f58f5c1005a3e054f9c40691c287163f445610bdf0f14e6cb73e0eac5ab2fa5a9db4a9774c135e92200c27a34aaa2f3b9e2d568d28ae69652f1a351636492a590f79df0d4f9d589ba0651aa572a6cf9070a873ce75a200506ca74339dafbf0da6add65d5b5594b5b49bb0b63b398b44ff5f996115ce0d1b6f220b7b7b20049f5fc9f26e4fd8b7668578c4dda8365a9e79db99378091b3572473747ca3b4104e7b7bb1bc22988df73cc1e6fdb242c78804b4334550788a3e6a50a17fd8a0985f2449eb8554bc28c989cc1d9755aac8b33482d2c70525e102b4518f7aed260cbc6d6e7317a22e92b776183ccd105ac9bfbed1bbf0da4be0c0203a390cb9b488ed0aaa098ba8d5ebb9659fbf19b8cbc1b4d78edae8f5f272d2bf0303fdedd0e3de90ec360fced0ebbc85d612a9c396ba66cde481b92efc7ac9a1381dea34d170791896ea030cfce7234a0a2d2301bc79043aa7dfed6f3ea7bbe28a344a274fd9b9670b70cd74379a6fa1849a26609f1ef892c0073b7db34f09b8631af1884552a234f7f37263e04c61418b602bddc8561c0e097c5767fdeddc5deabac6308e5ae1c41565baa4d0bb33718486f3c655245f26b26a12becdc95a31819afa5729cbf3127bca5596f9d409301a32e80a3b7ec270b9387e88e9e1422b9ac903aab06f29970b50673222a3460acc1ed2a6ed45d10d3b42887d803e880f39141ce63b8d3fcaf49d87a9ec7f9720808aeaf8eab0ab37ab690f97cbc125be08fd6cd41df957059878d19b106b39e06bf30cc9d3c85f25de650f4afd295dc11025f9a72a5e46422d88c01972e22bf024fe61e0dfb824df1bf44d1f77db0118127ae48e2a145d82bcb537cc4be81e7bbe0e1d3e19b56537e7bee8931d4fc38a03d1c387079b64590d1f775566cf0a16ca2bbad3409c29ca616d8f91040a3ef52bd0b7fb2dea0b65f0841a03fcf8d25a6d7a0904a74ca61835e3e0734e4addddd167cbe9d3ccc89a0965191fd70065b0fc48f450ebd036f9c15039393ebd191a982fff506847cb3de8eed4cb8074da6076302b1e7623cbf5bb1ac4d6af09fad853100eb1aeb302717031608283897f3edb7e5b7f5768a363eb2bfe951b6a9c470d9abfad6ebabd17dadc0ec021684726a3f7daceb4acfed42084e70c8e721034f481300", - "04000000821ccb50796e05b15fde182e6e3170ad072e8c43cd976e191b214cc0b1bd9957f972fed3d6ea50bc8dc07827d9314a989ff91fdf51efc2506c098a000b9675c3e2ce3df4527cec45858a7a5313b87d0ee29b8e001768bc64da9b0416a06ec0210a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac0000000003000000000000000000000000000006000080f8694a1277777777000000001c1d1c0000000000025ffd47baa3f5a5b90eeff3e0779f2d3563860fd5b9d7666cc06abf31b105a8140643a0cc5b44e881a3eead60361c59cc283f1fad00138eb02268408b29029232df48832e00e32157fd299f16bfd4482cc933ab2ff4cb953b162c8998e03a4d05bb13c472eb737e2e3cff834999cb5438003c74df6993c0579033e56a1fade81706ac0a77b99cb933f66906bfd2a2402c8739f844ee72d34ba50a1e1e9486a73e4c7a063267570a483bac82673d954ab903345b291266f89526184c5633a54bfaebc05f6cea64c403025806e65d8e89cbb0ca967dbefb653063a35597715c488891d19d68a5b7f0b74ca44b7552aea2308e325c71f7199ed497deb6c755c6727993f4d218e3128bbef26bd03941a19b344e8e629d81f15559abb7f6881ef7c688146640b02a0e5a9a78e8c587006eccd05bb1d5ee2ab8d1c743391970a0cfe2da89d18fbb51bf3d6b9fb9aa1818619406b89b53200b86d8b3094e46a01a67d63ff2b113b266cd38203f05bd01cce4e4f39a0072baf5f582315a98575332523e967e353cc3ef8d1df1d26dd79e5375cf9bd93f804e4d709004967bc70b3ae79bd7a9cb67cd273bf3df4e1218ec3f67dd9254b589fc73d5ce565e106eb6c6621a5c2438fe784eb5d95efff8e3b008a63bb1c329c5bba077bc756f875acc5d0eb0d02d67f2aa04738c8c625b56c82cab932b05ae2e50092322887318df508180080e1c7b80cf66894cac8de85931e7fedef575e2f7146ecc4658ae936a722548c527593bfdc59acb58ab6c4f360bc0ef75e3bd171c1c730a51749bc95bc2ab4eb7cc3792e107c31239e3711f35b3094c207d73cb0ceea7643d175cf97ae6d8d221f48fd048236449a28b497b36ed3c817c161d4ea89b7bae5170dfc9c33b3b08f0a38e964eabde9f4020eac2a7b480b9dbc7111d67b45997fb94f4244cb8bfefd0d6326a9da5203ad489ebb4e66f382a5bf82e9011e8d3a44cd8b6eaa60662d20be380bb5f474e5f8d70585cef0c5e490254ae896caa9bdc42b85c4fc0cdaace29679ade3adb96628241c509aa1adf1bdd633850f4df4b24765fc4dda5feddcaa6de3a55d58978cd71c9fdc5bfc77b33506ff8b198dbb4ba4cf3d6d4da3db5b76cfdb26379050cec5d43ecc5edb79d046e56ce8582078f6dae1f9802665db37c5285ab13076b7910c0d230f090375c46e44b0f142d540e32b8020f271de3f8ffcd2a9c8cbc1a7f5db56852ec2e9078731d724824ef0db06e8eebd7f111b7326a751086cde390eb42268a8dd44b7b9b1362a594858308abe397b2abc43a57612f98d027afbe7a5d3035c418bc32f556c8564c0901f9aa322de146697139f8801fe1f4836a800dd0eb2033d3b1c79b4f1b630b85a57a009c887eb4faaa0ae71aa5a1b9ce1dedecd5a9aeee985941c39fd28e2412193dbcd3a941c7d20e6ae310ed6082184c17dd2fca5fb27a1985843a6d92bfbea1c0ca8f7aa583e0336cb786cf38b893deef8f5d9a7ad8b096013090ce9224270c5ca0ed72961b44a2749eb99c23089258895392fc65c6181e59bdf0284a08b6bbcac67a394d3b73185f1c454ac279da8c360bd816131add0e86431a2f4bd018bf1e558bb79761851f9b6b1c198ece4e6ea28d4650ca1f5fbf1401306709d11c65829df6ff7b6a4b8bb55921ec2a3bd146728b717f31681c355cdcbd551e6f310a85ec235ba6014dd384c0118d9aec510c0ff524cc07a525b4e80cd1d2d51649cc6889b2240672cf91d9270ce131b10e839c5ba8dd5ae0bdfc943f9052aaf4e838cd0ad9074d845312f17f33a1333c5e580f48dd93b4c013ce245e807acc8e9bc89429027b3e782bd1054c1ed0b81c6f5b54184e7c0c3289dda890f9d5c21cbf13660d4a5634777d00944d6e9a91a560a7422b354fa46282871b9f29bf0dc7cba8547b19c53c16c5e9cf9986701d8d15ac5893d6f5827bb02e0eae3f589f4fcf153515406a1804d2cf8f62d765eb65e09d16c6dd3acca553ff0083ca089e62fa06898a1859d224d8f823f01ff17a2a53d2e27ba6eb1ace30b7f9a97049c581b912645ca1337d449fef95b61cee2b825716f8db4defd52709f08214e1be87c2a1fdce6c3225c10e72b0e8137dd99e2080a033af6eeb1ab4734cd25b822c7b6ab2060774df62fce9bdc9d238b679514b336dda53a630aaa419af1b4df7489bf0fa054c82bbcdded5f01eba9137164a023f495ddaaa883bc42edcc05c2361488731d9352278c9f9075197db5e29a1c87add4cadfe063c6a072f6e1fa9f8b1ddb2a5e46c7b3120627845eb9891cd09b299270c63f0147376065b406b531dbb2283bfbbd7f793de7f627685263d89308ac3896d62920ac548a7f97681b9c0b48671dbe6b6cdff66b3c80dd90b7f5aea8f2616a57f0c47f2375f070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c4e5f35dd019ce932c8d81f52f6ac4b4c7ad62d1513e1c5c445d10faaf17053387812744aea4097a7d1707dd944080558fe3569fccc6920fcc5edee87764c76b69c14f4fd2f140a5aa80078ac3bafab06214182cd9e26ab213ef6a424b4752d8b8b2b693f46bdd24a46bea270af5a4ff7fa74189ebcb1163d359d3dbfa7042509689bc397969857751feed4314241810eeccfd63998768b5a811277d852abb5a1e88196c0e6f98596ff2ecb67af89c3dd6568a4fc2e495559d85d9a043c117615fdc8135207ea0cac2c99648e6047226055013ba411abbe71fed3f3fb678bf99ac4d44d51224662036ac1be7e71d203934498d1f0489bd4e9f8463ce20e381a31cab6da793065a53353682f60fa162048ec3c278685200128c45ed315900a3111b2a3f36810bf78e75a36765a59b3e618177b61f6a90944e0e5973a573c9f048f17f1acb7a5e29889ceaa14f78ffcdbf9b83a3a8ee5233dde72047074853d78a6b7f5de7b73d0b861dfdedb8f2719ac647a67161803b611e5b80338be8f0012bbcbf1f5f05558b742a7d4271865a4e3c1fe55489ced6624aa329fedced737980ebcccee2210078dc20db162ee0da6d8f12d6293b9079bcd29416068e738f129991e084f498a98b41c4c7a8430ab26e0e06ed6115ff86611a29893b50c4190322ab26aa6a3ea878671fadb3b77b694dfb541dfd52d8e199569c800b003931def1aa79159208545edab077606d0f61947a571b6e7c0551002d739157c6f5fc1fd81a2e7172e9f480f0499f9162ff55146ea147508098c2ae0c723d8f113a9fc8db656a25264b4d4f1ff86acaa7498f351934e3fd113c2f8e45488360a40b0cd1e8be9ef9c323cad2df8c077fdb1ca88159d3339818c557e4ce14e8efa0a60f9ec0e474f05cf1478643238fe22a7ea8c74c555d37bb9555e9e733e07cbd25a3446847a3ed44d0390261cae0a92841eb6c49b20dba2869f3cdd0f33754e813f8b270d8d7c8c7a605541067e929ee330f34ee19f5de779bd0d74c4f82d97e0d794afac96f3184bf7456e8a6a1ae576889b198fe9d619425b3378e2b8cc97caae0497a3730f2adc1642f039a99b7df9d68e080e9ae10dfb93da507276b50644d8a963a0f381f5f2970725ce544f384ef4797e5cf686a0e242621501b3b5b58caeb4ce31d8dc19de210ac4744180a3698c1ccd5b68ba48edd1d242764e287d1b22262ca260c8e5d4c031a798684aaa48b739b19ea140db60fcc23cd4849deb5c3b3137331f2504ac002856a0e2a18bc613f2de3b0b615335755d9a7de9cf27d1ab273b93c87e0c03af4414f1586512fba9bba193ae17f636dbc8f2957bf28f31b2f7f53d3e4dd6f1ce49137a89a55549f23445de2650e4f1c00b22c6396c08a49e803505406be93b90080bc7e1317a4040810726d775090a6b8ff2ced7e1d150b21d3990d64cd3f943db519722fb8b4bc68656188e109fa6670235ff5f2261e4819b0a3ba1d15be9a6b39a07f579923924d4fecf753ff918356801b662ed3071753bc110adf8ace113d4bd09634b88a48095caa9ba92b2dc5bf8a59a2b7964861493ab25fc0e588f29bf7dc2b08fc95b27d8673685d313551aa6869ddf013253c6ccca39ca9bd71e3f31c77efb8b7a8a5d05afee6d24c027e0ceab5b3159632de281253ec3bbdffea8a9e761b4f1ee56047dbacbbf7d3c88240d18e4d2f625e24d2fd4922f81cd50895c276a738557723711934ea1705ef98a29d87527af74fabf3bee87f2813ded83917d8ebc2890f9dd3fe5d988aca61f771aba9df9455e22fff03e8565feafdb0619706f36b9dca969747e4061be9248ac3a23add9452f9830849e3e72c8a1b13873ed3759589e03f800f9209df6ff23edfedf91fb8eb35db90a1e31305ba079f6cfd6751c036a050c091081a7cd92f6a0b9099e3deba523218be28c11da50788de3f60ee17d78cb8d9f210365f94a9b938f37a5f4aa1c1637c596a04ac232242d6725b6b49b12208d10a47d8264c2346b598935fe0f43eb56e0361eea0a8a631562defff77b502e1cf0359bd42f1bf330664217a637476406e402ab0bcdada496cc5527f74b911a96d7b4b927a80fd918255830fcda63832500e53c4b5cdb90bc83099b65f18f4b84561aa54c7d2d969aa3464eaa220c59669baf9d7e08216d3b33c39f5573c41411f1a0a10c43eab6cb39be9baae5f828ce41e50352863a60c4575a4863482939f2d3e2db6414b0cf533468ca0f547d02030ec80c58632311a48ffe647a6ff5bf0defddee45927b9c888a8307ea592a3037261215036fd0b441aa141c7356d91031919b2f8e2f92af9134b9e42df419bd91cb582984da871da855643b4ff5bb4c5cd16a773c99688817fdd76b7faa1b0b1341de20e35209ab6a1016197fe373807f9e406214c7b9c0ae7aa8e4412c7330f88d053056363d0cb4ffe3c34b05727144ba6e418ff0c5236ff9a4bb716986c86694990d1887982d0d8c1caa1c471c793cea11b5fda1d346da4caa12e74f36a0fd8af52d743b9aabb1262ca1295342cef187f3fb13c1e565f7bb85863f86f93dddeb2613dc2aa2db4259e9c086ae837c4e8655a7e37a6e3801c6811718bf76704804fe276aaefa402ffbb5394227225f69e1adcc7556936bac642048dd86b35effc30b0723034ad8fac787a99022903d8b074cf8fdadb8ed3b8cbf75006acebf1d110534f3f533ae921c0b78ce67452adc26124ae25dd9bfaba7d4914b379360a812813d3f5743f889a442d4b6d437b1558b97e15a5db16296f36cf499417a484b4eed0ad96a626149a4d847df37d7a88f7e1773f89a26ff26e90b930fc2a8494cd6170479e0457a55b481b045dddf6e7362c99ab049d097d3251431e61242c819b4d22f70db675f50a7dea683a71b66f7f91c6ecb99c019d207a6edb7ca4f9ffeab7e29aaa723bb87f14efb2fdce5eca874cbe2e6f8a1801d1f7faad249cd9bbe72913f121b8ac6fe1446a0b182d661b0d8594f52e971955322c9c6595840aee5178518853df56c9676206ebaba2aa04f8a20960e2b5cc3be71681e85d686ee75cb2a39cb9b6eb6b0933f34a49487839995931a1c0c4f804c1f9dbc45c9996811926a0e8f9cddda2e7d6c946d70ccb58717660a1c8bbc7bdf868849de9198995148b210c81081f7515983e9e7cb807dad9da48aab614439811826d84a1f97515f915109383260e314f80fbf1f5606509db8f2103ea1788570dd8d452a8b2dd13fbf1538fa9cf2e9c9fa3d12362fa93d496d1d770c71516c794fa7a442c2fb0395afc70d900847ca74b989a9e400d3fd4c5ca81c2211c856126b72a296513fb401aeed0892efad767e23594b6c4da91e8e45779c76c6c94cd9a02d0adf3b9ded9bed2520064891d9fa14d4e26a311910148f057bfa59684b73813264a2a901d4f953040e2a277a15089841f12882b2e069f913787a37f7f9671be7747f7abce6a97e16183d03c5ca8f71f38824c0b2e197b57f5aab474201cfe23f90ca1e7a4f11e3733b1dcefd8652a7cf727c5ee648caaca370a20ef0e658334520c38d3c78870a9b3824ae09f4d0452dc5adfe57192007c4ee608e8594e7bcb5a8983004f2f0271b1a129b5c0f9a9a5435c9116c86bc33b1a2cca7b104cccd8e96a31618aa869f011056e5b876f257bf9557381e4e812ff830ed34ae2bfaab746c49e65b0811dab906967440a6850c570aa0a80f3bfe70996d14a1a9a3b356562a2bed99c40acaf107eae6809d0adfd64bbeb5045ba87073ed5714a13839906f11a0263fa078420606787ee1d0c1fd90dd8cd8f2f1c796604d54826d472df55ab8d72d20fafad1ae39c3dbf0d54c1b38d84e8ad9dccf402c27448364a7c30c169367386b9795f27e0b0b56b00facc89636a1b1391ca960f8e0fac566eadfe44aabdb359c9efa8d3d331b2b6105d5403730d9d180a6c65658565a1723d858425a078e6cd8d9a73c3e1fff7f57c2e12ba17ffa065efdefb1b78bd8f9221aaa227eb21bc4dec5d0d01011711bce5dfb699f2810f2fa15d955c9b71934b28e2bc0b1e37b075515690f870ca8324ffbb1ccce79a1fc706e78bbb465bc37034cd5d5dc6c390f1b41cbfb94256b64253f2f43657968313cb6908d8061db87209cf3da1050bb8a757dc765243e42590255037bfbec6701406049e81a5326d5f423a0f189ff94c32a333221882636fd5b98cdc9c14731eb93e9e3564b3b93ea155faf3eabafa21126a0d52c8c3b514080698bee3bba11f5ae26b5d20fc7f0ab3319bc5d6b5ff6d63a781cf1d02c570ad8d007a7c27e495437a2f6fa86f38e9343363ff315ebd95e23d57414a50dd97bb934b3ac9bc5b5cb6742c2f50d746590cdbec2cc2c025a1b6abcac53171c04ee700a6ea6096d462801d172680cdd919b21c80d7b0730642cdd53f10b420799c09b8e03e5a0ce59f1870fd90a5ea31dba28da6d43b278b39f0edd2d9fc82929e2f41d737dd9ad010c1bc06ecac08030713bbf9abd30e7f7bea89bf50f8020530dea34e2127c58e35d9268c1e7267cb00bfa9ebdbd929d5eb0f686d8927f28cd8e2d6487a99523fb8704f426d68d27fd8e843b880d5e1830d94c66537c36263e231c78baee3d32836658aa0cfa222377bed6912e61c6bf920e28421062dd1df2ca1fd3524ad599ed2ebf7ea512b7326e2b86a2724c74977cbcde823d5f1128c8061a4e6edd0e180ff55de5b77f37cf6c7b50f1be0b4d1d8b6ea176e14ef03593024fa9a801677a3ce854d53fb7dd0041f47c5c466a1ca103238ff5648bf52fccc159b34e16196d3e91ab6a92571211f3154ab9b44e25d546c0539e2c59b428d36e5c2cd272ed254500c49a6d09984e221fac248325ad848c01ade7319a3520c83cad8fade9995048fc2e377b91a0522200c1d3d38e54ce2315dba3d792c12d6759f17eef0edb7d502572f6e3f1bbddf2002e2807afe73cbcc481572ed55f11b920e0d25bfa52f10c00c175605eaeac91308d0512e298a055e05de156f0d633c3a0c73525e62d7e5c61edb032139f9aa7d55902a0fda39066fd662b782f4405041e3f54f29781b264c4194d1464335fea1e618ba2a6e5ba4b62c8a5f0d694254379ef615bbe3a66d75cc329f68aeeed52693d63a0f66f794d700f72d2edc303a6e57ae7f4c0987da01d7de8c60c263ffc64c01a92dc1f4d066e525ef07c602af211d442c45e23c1f78b9060a95f3f102b3557dd3fdf5e673b02a23f81d91639a936a656c0c877ea8ba7d235c78a91b09ee51db1e5e9919cac5febcbd39cb70c95ac9efb1c547e9a7f88399e5362dac5136b3fb3581cefb79994c01f07ce2434d891d7831fefbef2bc7983e7dbd9dcd83d8de60d0c68536e8fd5ea14f5d33b27fd3e2ba87cce7f94d9421210fc1989758efcfd4bb6ab8dac93be06477bf57c02840a3a6c7252a91bd612007b1e0568b0829ab2d41347594017d337f06db94c11c35ded31fa365b0874cbee6000b9ab06eecddaca8d0c8fc064e4ec96efdd9e2b6cc3992bc48220f8f1f6ef697063d0c46a617246641a73c6c3ab3d26bfaf8706dfd89adbee69abdd9f198419b0ea1e8510de1b92c616ee2eb2725334bbfee90c13fb8742087c0c70cde18a8576166601332aa002a347e65452e2a2237cee6705cec7a1e2425fa6044339b63bf5a047ba52a49ed6bd1e88e4d6ffce458480df30afaf3ac08037e0dbe7a6cc95c7842909db75c6d8e1731eefbe358d7773c71b1aeeb77c102780d48018f417edc1429ee3f3d18cdba62e6b0b4488684967e79520b4a1ba5a8df08f892253e1fed1915cdd201e87d75c6d1d2554a99a341e487a1654eda35019c7c38c86f5c75020f7f9619a61150d213b99b756924f5f9895e71f49d172a31028270f39dcc1ddf929992a516e4c270ac591674e6ba2c13dd06e0b506041e8942778deca31ddc84f4262ff4ad4d81e531cf16d4d041f3911441c12c77ed92459409ab65ed1949920a684e729d0904593d7a42ffbceed454a9cd23eb7e1742bbf6effde398f122a8443e86c272fdb97ef9455f33ec1161b73013800c40bda9d301d96758c6de69d103c430ee0192f74956b3d73cdf3cff36850d0192633385b19d546bc8f0b1f9e3524757f2d4245646a218b78e6a9f4e289b7882910167b2cca4ac0b90203e5ccf084ca174b16b6c0570f6d9c4e5f08815017f92a4aedd6d5cc3f40a4b9384a77405efb4b87a15caf74bc5d04197ca425592c0900484b814b3d1926954716e1df3b7017a22951344fdf52496f797562f397be1a3ef6bab299a518e7ccda7e5fdd166a6c3e94debb1930febcdc609b93dea783be0d009656909f18ed83eeac7cfdb0a5954dc8b9d604db26c6904d8ce0abbef49d005d2b718f92cb54a7adad0d106a0400ba35808525068312f938a58963d7266f1829495bce11d4c0c05073ff5a72bb508eee9fcf3bcaeba833bd03edd36a49272a1bd479d2408c272e3badb2ff2e6e036aae1ed1667b8bfd538889f705c624b93f37293759a9bc6b57833ea34b0973dfa3171bd9c81715bdcdd39a1a5a16645532b276af5eb53fa910f837f367301e75c8eaaf25dc6842212f5a43b71a6f76c92d600408f82c64dadddd2e72075a070e7e62baabb69fd006132d441c4f184c5d0f869993de13d03ae69b61956f37f191f05b24d242c23bcee76e5ae1726a296b1b15bae2365e9379db640dfeda8d9c7d12a653252a104891a78fd4aa3971af9731c00ee4e0c2f2a4e4fc6e50d67ab75024acfde2fcba159829904f9b27982f2e251f941d897bcec7ce91edf7156cb1754e27813c59d3bfae136b5fdc4ec32e7f17f5d4c4d078f68e91ead670d0cbb30054f2e90fcdf204ac0b99c8c435d932c10ba9267de7a61d791731e0d39b6927f8d8c4b395e03f239d84b717021375480b2c36e3b110777eda7b9e67fbeadb56cbd75ae21d5bbe2f95bd5a2d21ec1a5a403c619e55e46f332c9f98368823f03e4bbf12041f138dcdf2423400dd940062381e75ed02772618afbcf1bcdd949e34afa5bdd0c25b0addc12c1bff4e7faf0a1608d0a36b250d7997bb5711e1b6c74fbf391bff697982fa2b388f1c1934483517257f23bc65aa0e32b5631cb27606e552c49d8376d70c7dbd53570b8d92ea893d3c7b1bc8f62c174ac33faf08269b8d173605aa9a18d81fdbec0e392a6b0910443c504165eee0571388028e1512b8384f60cfcdaf2ea17b7e9c1be172676062a02de0409faeb6f0594e0fb6e696d6605dcf8a5be6115589e2322d7c838bb06f7908aab838bd06e720a051d07233bc7bda3bf1dd16820777d5f57d15d8ce486c9c0081681824871c37c137be3355e8587d12417caa506e3c14caf7a1e9f2d94d6c15e4fc132b2a62f4fef4d12d118ba9d39313a212980dd0f4d7a177cee3ed87f02812f6c2546004e10249c06aaa49a01657c7c7d2ef5c155310e2b69bf2e2b5ac3beea29add230e49ab31149447760e2c54745a77fc33127beb384adea5efd15e17aec6db9af767f1c1d5d7b2cb07c3b193acf0ab44c5804ae5c3e382538cbafa1ddfc31f1448eaea7b0a7504e9fc5256e4dfff39ee61145fe246856fc4fa93d22154068a45c9c12234f6e4aa3748b0a5418e4992a22eb18bb8033793715318370834424065bd4cab694acffa6f0448a61844d4328eb406b72b3c9b2b610b5eb50007bdfc74c7feade19a2459ac4b21856868aa06a2d175589dc86345b311df552ab8a56a724630d565e4ba55a1abb0946a0a8d6e2bc453d4dcebf1159c82b98816c8584ef251cacd77c3ffa104ffbaa96a90d876145fa73fc5fff5f5570a6d8d1580e1c4cce5b5f8e8a5d2b1d20b41b4009c79ebfd4a8e1636f6f93f12593f0532d565ccdf90ed011e0ab0fcb3db28f10535ef5e93f59851db610641feb3bba4190f3074e4257bdfed4f05a52c98c380a471bb3b952488283be1f14fcad4a3d219765b4b2b3421d5ef845f6c7b9ad6af6b66a75ef0c03ab4f2c5150c078068943d1e89d298524d9e9cc5b20c3bd03d89d7a6d3cf30b02e17516e0001b071b92a35d245e0c596071fb8dc53e53159eead8cf86441e0348a0a951d4a2ce30274b423bf3cef4e5969077107e166199d2c5714e25e2e0bbd8db356fcdcfb3d3b8b04066c193c83903ab0f0eb18d2faa428f3104af484d07a96e43ec593a5a9bc6d9c2176535fd5727a3acb3ab4b2e9e9a570f06455bf2b68cbe461743af5466bf7f8050f5c7710b8cd086922c098d4c9c26e53708c5523c0739705505aac79ef65781f226761215eec4cb44f8317b2fffdb15dec242532c0cc8db35c117a35278c54034cdb69bb5df20b8cc8f1eff23bb6e8b929a130e44e0b0812e937fc89b3de0a13afe080628083e386b703ff58a07fb599b66605d12342bcd8fbe69ef239f3ec30bb2fba014ab66bd3344d60786edcd434fd3a19f46353cc0c7901e051405544028bb9dbb1ba427c4b6e6b5a3ec8a593f0832d6a61692d72bc6faf044ee5664b1a7b5a3d38fd1a1b436b833287a162ae7851085a1f63bae8f2fe18b09c603ff33bf0b5ddd6cee3a4b4275348c9835ef59b44f2db1f828f77d0b7d8df70487c91205dd731d9d516d9cb6fd88080f45312c10edc4cb8729c7e71fc9fa87808bf3a3099918984a60eccb1ce433aef537927236f3e0f59fc922b0ff7d0b39fa53f7c19b5048f8fd2e9a3cbdb8e6d7d156b697bd7242355bce57cb3d94d16a5f9adc607288f3ec2641d42eb3303e0344ffe4e4cad5d58be766687da989e8448a5cc7c1ca4ddb0e6cb4f4d22104b1d32f6dc3632fa7012ed5e9d5a2111dcfb62c7666e1bedb86bd966f9caadc2ba81da0488c78352f7d3ad94f35fb75a12272754630a20e42a38a52c4934c5d3bea8631f590e31ac72b485478b7d8ba786e2bbdcff8d22a0082034283aad9f28adf92604124062230891d81f71872c135d234bcb76e82dcfaa6969b84c9171805683b4a419f41a830bd88a76618ae387e3a69254ee920a1375d8362b4e038a2e2b4a98b1c181ae9e5f24b19b07c5d46bd50d0e1e37502646eceabe404904f3813c243675a8322f853d45614c7d56fb8667badf80b87b10ca9d2363e37281fbebfaa303a7366de81d92fdb81edae1f057fd933523dd0a0b88f33140db7acf9131d23420c2b976156d2bfd785e9c8c7c7a520abf8b58d204ef04b5f5f9424c5f305ec6d97f582627a9f7b1d124dbbe6bbd4a36340292b70be4278a0bf1833f90bec6598d3a85fd10c37d2c7fccb02e440deaf2f191492c242d84f09ec1e0a034843a5fffa7c63cca1be0c6c378ce3ca56bde144d25b52412b27185ea5d4a3f4764ee54f0bc70c489f6d81e8a9c7208638f9a3a0bac5ff8b857a74cf8363d05ee1d8f3a166cd50701e0fe692879ce79a3d691424066b749abc3e738d5647bb844731b409cde36b48e420348197710106d7cc0d216cdc677b81c4300b93de75630c4b3e117cf10b678e538db372b2304f314a19d41b5534d9213d408155635a716fe42fa7a03ad90cf8866c124e99a66405883e8bb6f9a502937e18db7c266d8cdd119d12c7121c580f83c2be68d9a65744d77e15c337fe898e1b2fadd3b48b4e03d08d4cbb2bd50f567c1913084eeb5dd249c81b71a1d3a20e2c0d6a8fb7f2099c60904310e9416d9b34407ab6d32fe2bba4cfcf688c5c92b34fa937b7c5345fc8724085c893a5ee567bf6e3b2c1adae130a72f2a3a16d8920cd7e6b93ddd1352a13b1505cc0cf4b00a3ae34a00cb2f85591672068027403537fd0721374d5936ac968952ce66bdf64318c927bb6c184a880fa15e384a3112b78c3969161d05b00c431ff94c55f794c150ff7bcb35265782fbc6ef4903632144809ddbbe3d801f67d840f06a15f966775826cc19fd1f431d9b2dc8b552ba3b28eb47a6b96a038432ce40c84eec8854e48d1172af6aa5719778915b64cbf2bdfd1df50cc32b2736181d4664ed8bfae97f49c20e30bf9c4ea8e67b53fe74afb41c63b12c30eae8c890a5ca1bebc6ea3d553f500b755430896246cf8f4577b3975759e150ec920229f0909348a612900466b5d66e5e2d331d6d9aafabb50bdab70c93cb2d3f6647ff3e399e06946844e96897d74d22795ed647aef1526ccf5dace92d9f5578c19b0d4747d50ab9442ccbd04807a28a35e0df84cd1d4e9c8dc025717871bf8a9f9495ea8d6f6d1687cb1b3c2a6ccb25924ea8c6ad9dc62bd510325df9f6c52c391218b8fb35468e6a855878f17f6d83f866cffa34a2d1f3c21e17cf28514bc1b80740721f43424681e4b421367c296b90a75a116d59c3bc06aa93cf2d809158a67ce2ae3ce452706f919af9669e0f7ed795a3c0316b4ad876d292063107e29e7374826e95233a7e66a89cc7fb4a6d96487f2f2fb1d68df0c0092201b68d49a7d03461d3fd5927b89fe693bbdd3cd201155aef2f533edd651b1802f530b807760dfe1b4385c3ed4000f6a8118b0a3df4c412e79944e444fe063d340f4871ba816c772ce322db4e55348b6e5046b1e6cdb665ef7731e4dc58c93a21102ead248952e94d44bd8357a49f2641bb636285ea307eebf48939441ee1e31a03adf3198df993b59a995d271e9b851fdeac457d6355f9c207292515c0ac2b3801c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce9458607000000000000009ff3604b2c9238c3575aaba36bf28511d83a0aaf443d53981899c20be308112327ed070500b374e359a90435a60363235ca445da700abc2c3b962e89ddae24040006000080f8694a1277777777000000001c1d1c00000000000234ba607b674dd1faf18173ab52cb86ada65b24659b7ab0db262a4d46ef6307813610d535a38b024b19e566c3d73cb49c5dc6a73457c658fa61aa19c9a669d70823c009c26d2c4c5949f83ffb187b8d03a7e05970d87668b9ebb172e5b44c4f300bffbdba179aceb954a3d6da0cc8e9f59587e9a4ab1e9578466bc9eb508b791bc0497d33ffab8b845eed45ec6d6d9072da6064b0afe5eca2b8e3caa4801e04990e2ce95ee1594a1f922a2ad1e0550fa5268c2e1486785a68ad25200e0d1a1fff176fbd7f928197be17c9ea0d4b2f1987cb4c5d4e62ddd8001803e1672d2509ce5607d0ada2ebfd792a4eada56d50babab5b04f4999d97a78f2fc35e1ff001aef6c11bca252ab1f6959508604fd29f29642562b862c9d326655c735e7e9ff0e5b539d819b0ff9b7594947225abffd69d94748a59b5e4798eb4f0d9f41848da1acc1c42ba1af1a4e69227887f00de8aad96af6043998f72164b95e9157ef40f3253d38dd577c636fb694a49fbbeb14a153d3615454c5ed2913c49454efa45880b7e81c288c34793ab18eb68dddb3b5eb8c6f9ef4889d0fb8d3a2dd58164e5edb536fc705b63b194f2dcf384c026004d3aff29e11cdd17ac5c71c26d30ef20b5c157fa9c1c4b33d9bb95cc5882bd36d990fb12700baf432d820f66283742ef447d962088dddc54a21b162d0ed191f12d4b335b4227aef5583bd2a7639a275dd3c6397d11baf62a2983eb982d0d4e5bc64f8bdfb72a5b7f99c81c4af1395d153c9535ae61358ea5fd933e1ca35dfb4344a3a096236e9c777626575f9773f1ed0e64c7e67616b36b48d9f481453f8815d4e48601961cce17d7e5cb37be71839a205a208fd7d35652247b32d384453f30376c2b0dde5d64285c86ea396bf919978de33d5959c7a2bf9fb5e15da56ba2b11b805789d994dd44b5b39952d90bb9cbe0209c63123cec7ff2f2da1c1ebc0930b0e3a03b90dd6e58bf83187e7b71a9a5264fbbfeb90c57647c5d6de4752ccdf657a95007a21a6d8e4910ae99c90e98bef3ba13ae57614499747369bae218a8fcbdf074b48a5f374f74e769d02af067b82283116764abbd30fdc9923a3995d144bf1033ab26d3197ab184748b4992bfb51b0ea22cf3bb574236f2209a2e1391f153b706d5b7640e8a23778332fbdcb1e35cdee0bdfa55c35b02b793b6f2fb01893363d01388391479aee427cc977bef4cdd250e78a7f0f39e711aeb13be5f9a895792dae2657ac2789d2f0a5b0b7a9093fdafe072883f6842e377b05a046488db93fc23002a40a7315e284aa164b2e144cd5ffc6afc8584eb5d52b21b48a924e257b72a180792eb6f8f0a5220c0db0fdf5f5d0a0aecdde7f194e88369ee5d2efda82edf85e8d20b69680c677a4ed53eb33475b9beca2c560386cceb4ddfbd30292b111c37530ae6ee207b87fe5b67b5a90943e2a3c43c66eb8f9b1b006fe008f9da8791e71915349b9a9652d9c508adab7668438eafbfb46288de70ea1f96a32d36ea48e0dfc3fbafa1ea69d28f2b3b1e291a02823229ab70510e1fc102e5df0f6160c7af5ce67e8a6dbdf5e486d285f2b4ebcfcf2c10426ec94e0886edbcc0727b0703ee6ba3a1f7d4a5ceab9386123e531cab919407eba95c72314e0237e4208e22981b912ed9c2b4cac88a8592fb62d648846bf411b886a6b89b83ad03210cf072b00019dc6d0e541b6bb9a22ac9b3603ac0ede0b27cf0998333446344fa2cb44350f9dbc5d557cbdb74d335c6bb398ecd2eef9686763c1f21a34970e810a8eff7b37947fd455ada6010eb00ed5f1f92395ff7d1fa77b05beac74c53db704530f54a5947187366dedae6d48386d68c303b5eeac6e4848607890ad4c4ec6fe25251b4727e8cd22d8fc8972840fc8d5887ce647ad628b298e15f9cdd49b917887e0f8e8ebe0312fd04f3871c68f402f8dcfee60e81283a66f1725ce579861c999ede9f9e2d976a83253ea608b66ccd6ac83359bae0d060adb0f5573ca385446cf54f14fa3231830ba0243fd574aa8ab787ef0150be0cb9c38970043d6fe200fbb6d03158f33f5e3a811887ca482b83122242d228451449593c8dfb33190298e873d49c01b8d0b9ce8851e60e65308325bf3a934054fcc53e791fb117dec249e9836d466ec94188df94077762d8c12e8cfcbac6a9af9741395ee566c26f9e5ef21d7e08a0453fd22ed3228f9118bf2606e87e0e0d1e495075f348b16701162640d2b805fd4d2d3890cd6bfd5afb790ee9163e30d55f8015ee86b07d063dd0398366e4cea8379c951160896d3374b1c39093954117d7e3840715e3018b917c6ddf9c47869bb01a71793b2d414c252cf62e9d781e29137f59978d39b8ff60d45540bdd2dfc73dd0bacb811267b486783e9e9a0d0d5a2a161e082adaa070000000000000000c099e097f2395a8b9005d009285daeb45a1d7b6803b4ca77f140f451a575d518fde01c02f3f899fc0cfbb1beb2f0a6b1364b43fbfd5e372a1b64b90685c1b0750cf93993917608f18aca5ec561fec653860b83841a345f03b0e9ad5360c2616b8b511f973cb8eaa583b1e65825fb0cde26316a897f759b9c79d96d4bcaec217948791d524ca3ba26457a5b6f5278171729abc58fcfc844a5e2e9ff048bb334bd46692d97beb0e892e144acb380a1a2810048d5b4226ce2b4f9bd020ae4b26ef3d03419236d3862dde808d4fbc7187da8d7a63c5154c369f26a905f355469a0db4e562de2ead4d75b8693256748db27c5d041f6bd93bc97c7cf7a6f2c2966c29817bc398cf4a61ff5c81b66a7c725dc820e24ccbb2402b16e8a5a9e0d676193924ecb3a48bed2157a84205b689c5f673b45f5cf8589d2e048366b6e3ef58a6cfab7781e90d5f0f2922fa407d0882daf4644908abfbc5da2bc90c09be46ecd7667947d00094c2024142dc31a072b758c2b4c5306e458256fda993ea15295f970f480cd333f986e7f633ba84f8981266e9db3b78a3fa87052a648fa99c4dcb5d1420da4bac5c6ffe822276ffdd6de43f39987e9ffb1562c8e136ec163623c1ef0b957bfb67cd4af92e6433d2b3c757be0b74d7053fee3d1833bea1b076b4e2e878b68be8b661b0c54f6cf9e3bec410ee0a65c0371b4cee0f3cf196d88ac4ef5ca02a42e352785e77307367dbdeb20cc0aaf0be2f72ddb4b12cb9d1e7ed530eeef35a44daf8d80446626e90ff4d6705317ddea944a45e094901680b89133957343b5209a0146722d0d494c9fa805231b072740b15fdb7a1e0dba39015437cb2e61f0cca0179c0128c874cdcb3e4c377925a097d46a2ea86ebcb2aaac4e69b8d93f3f813fa110857017ec1126b0f48e1b61ef1ee9f2d3288a1ba037b28294d381855a9db1a44f6aa83f17773222761fad2add32acb500f060e76600b50779934496796f4c86114c123c55b42ce44d600055e9e249fe7d5f1a80f54d49e5b0dfd71518a7669538471b5e759dfb425c51d742df88cd4237000e0989d5e554f698d0112bd61a33a307b36b22a76aa8e2938e884191321c09c1d90a5678e903a5b76446698e5031233ad87218bf81d1f49cac719c2b27afcc4a191daca45a1c9f51425cf48008a1a569e2adae4627c233bbd024ef0f7c3973ba5bbf9fa0704e111223cce823d50b5d91fc0d805e0bc51daf91f0375b6feb67ed3a729933f275fdde5f8c1885cb9275fbfe2796b9cb4dc5d3eedd1044ffe62bb5a4f20c0969ecce5a0233c5a7740f9f18ba0a6c9a38ffe4b0e5377e6e84e659ece4b09a516f1f5e158f633a18b527ae8cb2813b6fc27f5108a7230bb2ccd25f9934b0899ce9c8cb3d5afa146791b52509aa6f78f02904882b0730d1a8630eb2c3e408aed611ab9cdede995bd2ab2940dcb74cbad21b1a8c27bcdd2b3758c61e5c0d271dda23139fdfa17fe97f19358fd6e4e6efcf71996b359eaea79979375a010436dc45f4ab138d7426f806450b624c14febce156041a32539494b096a3210d114d203df26b1cc826fa2946f53b2521ddeffc30550bb2d26dbd6900c912852b1741e76aa7f77b6c4aaafd16760429d5ce5d3cecaa3e1ff1d3399dd2e4bb0123d668b63b61bed7b097daf5a4710e82dcae3e2db6fd652bcfa527938559d83ae86982f26cffd2be75bb6f842883ac73819dc831dac60616f3c85011bc5139d67254cee29b964ab71fce45fba367356f2122a61544345df6d07f423d13bb32c328125323ff62ec30d67cfafde6eb20c8bf832b8a51e3de2726ba66fb6a0224da5f79286ab7861dac4d7fcc85c62f85fe476216c55ee4e5ebb7ecd3f642c547ec45844ec95586eac20c1834a5abb0ab3901c50deeee97ebd64d9980c53e0b8ff88e2273331b1484adc54fd459eaed17ade204477a17b54cfac56fd8d05f3ff4edc2e473295817cc00ab5c34806f1e370a9f97dc474e0d4e6955f915cd6d2069df587eb0650c72b4d2454142230623070f6d21be2bdd0173bb0a959990d9d250e47a2148b42030900e9e7014806e22ae690eafac7a2b3fbf45d6b51dfecbbd21993a12e057c82425533990c8b5c238a6d329c4c41387bd693ec77f1d6d200f17a86063111051f7090c2bfa3ed2a58ea8d22015a2cff83e127edc0383eac49c3b6caf9b5e0ab4abe911658ab63925d60842f70fe83f9ce4258bb79b6311bff08b231078eb8eff59e9dbc955af596ea7acd15fa8b8e1ba88e110ac383eeecca4340797afebeca8fa7c5839a3a306d4bb8004cdcd0372d83cf4e2214394cc2a09252971cd530af7802ac06d57fa0784500c40581efce6bcc497fae84e8bbdfaac727bac1cc0d49c0fadd64639c6c839f6b3e4735074e5f2cd2b5fe6fc9cc34152d723f1e1ef3fede91d41cf39a8207ad69044d14925961ca8b535362da356e419de13adc49ddf8708b82e6ba3b5609ae6110f28333601eed005b94b0d31699c8a687ae732b7d7bb263081cdabb462241911bba94585d0e20c9b41f4d8d5565e70bf351ea95382544864f4a960b8850fd5095213c2bb602338ab2a3f9b1fd97e8d42f68f2f943441ded01beb76f463997f1709e92c9e6df0341cc64ce46bee5ae1ccf0037b77ea00edf62f5f545d16bd063bd9097ef8eaa34d9dd1cb7b2d7f080fe56d14e4eb521da00c7c1d19c13e934601f963f80fe122c184cbc0047fd38cc0a7b4389debb41f44c7cccb596c41936e2fc672796877e1f0d013df6aa65a8d39c60e49eaaaf4bbcab70fa97a0b864aad214ba57bf5ba65abe585e52fec23b33a8fec951699fa4ef19e4af9e7c237248e1f4a71e6166133b2f1b6949d70f072170002b3d38dfaccb3843e641e85bedcde02e289d94ab76f935ced360b5b4abcd503d274923c222d757f8436e97156e067037c7c984ebb22b836bde9b5aefd12b6f079dbab91f69bd904facc456154ca3a1730b6fc7095af42e8e20d0b94ee3c797049971d28d583d5d1d7b539e8794a7710c2de9d2a9db9e6842f7a6a410b9df0f16fdf6bb58c35ca3a7d44b965f04e5e0391f7ab9789ca3f88973b59f50cf46f0d472e4cf49cd81c1b05d8640d625d601155db952b3544d54e5742be75a4bc9cf0d1084bc141b76cbb06290971fa526001e135397dfaadbb5865bb00fc424700901c4e50c7aa4db925b9b7fb0d8631b311fb820bceed1f83a6c166f78819a059017c7e7bc0b134aafbcb063ed15ff67f165441f7015d9a3514ad604c82e400703302c8e2e2bfbf738ef380e6f690392712d64c59fca62f638f2dd8edbb842a7ceafc4926febecfe42d5327af88fa21a9320d1f590803f35b2ecae7e605f0aaf99504537de024e600435f4963aae484cc3f6620243c307ad03f87bbb60696bf1b66409b143dd80362b48e74627ba790e700b4a6d10a4961fd6e4d954af5e585e44a02dc9137a9f2c5b2f09c5edd52924a0f62e0db46f2eb9c15ce3e9940f16a4c7c4be030c02182b2aef10f01de089f380e8afe59f6ace4c9f34738d041cfa61e19a64156a675832d16f4ee54526e0b7c39a8f48dbba330e8ef36b5564d263060c90009a367bfc4a9d1fa7e7903d0de3b2a68de720b8bf070f456306084485cb3858e98004be70aea72b6d0200def4f340ec415fdd2bcaf28eb60a1c2854fe016de38232c721b6d3f3325a101b77ded810b660a83f31c46a5f13a5a08aa6df7da23d0eba9fcbb45ff299761741ca950e12f2f1881946ed0c16f62139d03b430d1dedc3e7f7c68f2bd50993adeeeaad42315b36e0e592b42f1caa568156ea7aaba4072425cc227be504ae30f50335793483ae94a208efe33d61a1bd8cf95db05914e3b732a6c2ea57180dd5421a85a94ca2a97c80a41c04484c5552bd6489ca235c28d773a4d5122d93fbbcfcf8707b88f3d2604da1a47cee05bb3a9fce7528905b5a279a51b44a72a7bfcc9d1769db1813e161dee4387ebefb87805c1bc133b7cf56d549d165356bd3c24b4fd4cbb7a920cca8bd5e43b14557d48c1131a5ec93b3dd64a8d0791d9e50f4f501a5c858f2110418e110a74f7469c1b2ecb54c929d4c08927ff36c4106d696b6758823b235b2a0704d52ad4da79b09c140c266153e7e54ffe69776b2fb97ae8d605c37142c40bd45690f4207e4d3905cc0e69f548c9ec024a2ddddff639d148577de8be4a322d756efa88eaa2e92f2edf13a664924d341a8f95760db3d00329c8f882c24ced3ae07c89e35d51b7e11b0d1e53270bb0523ddde6e95ef8a0c05d2d2b6ba7c6ec169202e6102335e193e302b8c460ed998878abfb1db24e1797d1e7605e13598923a088f38ee8d824d556ebca3d36311acdc402555cc962cdd10936bb4e1ece2e39a6078516e98169fc31fabca7a0edacc689d6a5b4fe2475c0c73ce3d8510bb903260e1e381fc5fa6ea920c8bd2a8ec145eb778f9891d840ba5a3f08b0f6dd3f07e753899c30fe2b565e821fefe44cadf2117d358a2447b0d8ce48f742325b7d358a96536be71ba650ebc36783be0ecd540fb04bdd6a4cc39073df2b9a5ed9b23a4e2cd9ffdbc2967e690188dfc052f21bc49e9c81be87d12b4ea1a770e108d50de901bbb0d046c50a4228254aa095f0cef9d608b0ef50208b0eed938cc7d136207105030c72580f3d5c707b62090a29415e32af9066217272ea6cd498b5c1a81d06314c21406328037ddfa23222cc84c3afbf8cd1c3762faf04352bc37910971404fd446bc4beaa71b98135724118a1dc65ffb937d5310fe1f40c307095f0d3314199773a33bd6e2c89405f48bf12d6651d789e66f1820cdabb6107bdb309b937d8e0f513fef644f96b702e509903ce203c95a10ec4c9f4a71e75c9495038b423de361a86cea19cc2cb4f1f1874e672b2b2e97ee9462090f0639864e95331262a4a560c9948f3c74db29b1d979b7648a7a18536d7f6d8d2fd422f7070756835185866ac588a4daa8094185982d0879768320c5a05a95f1a761a9042efb4e291395bcfe4924fd4df12b131c3520fa984499532946adcfe20cd2fa56d8d44296926284e91509bf8ae72338c28b93974700af04d3ca38f55824ad9f52bd0e6b05f2c7bd8d324b4bfd657855c8cd458baea1bac09386c4444cff7594a870650c1e524230b2a26d865605eee5a016efeedc957effda3d1c145ad66982ad9188bb80c2d1546650750c7e79416c80d7ac102b47bc7798048489afde2f8461a9162997824253047f3d0b0148160aca7c533bdb6710281b42e64ab5eb5194a78d4244e601b67451ddf954d429fa006f25e09ef2a78388c6dca6228f17e3fe61510038f162626435783cba9d6809fb7b50fc1bcfb6231466454b5925c32d04c02e5bac1903df02e8b2ef25e64fb78d7daba63afe4bce774148ae824c62d778d88b6d6c7723cd5d56278b36058f492e4dcd6cb898414f521d9a21cde732aceb5a62adb996f1e18d950a982f9fee6c02750b13965ee93d80751116df1a5884ee24d05f0a74a3faee0198fa1f42bc5241dcdc623ab172dacf6108535f92e0279b9ceb96395073a5b009395aaf3ce8df09add65b351f341d2600351d24d3474f7d123fa7e51f017b0a0b90c4cdcc5db57927d8e87319914fb60ca897c7642e0e323376070cd6f05fec5e74c88c3175010761c7f1ac3c00e263611050c29a932af6cc7908eea6d1e2cefe518c6092cbf7fe7a6c5b0b821aadf6f4c504a1de79e723b5c17bd68d634d7b18b4b9955b37d765c464dcaaab31b9613567d37640e3b7ba9c2abc9b8ad3fbe2ee8b62b4ec7223792f76658bccff7069454442873c81104f5859de761160347deb9e1390544369afd02640ad5f6868e92c2d576a13808199a53fcff7863344ece1634086ca08e72b8d8dad0c11744ca5889437dc482375b6371f12853a22b37ee12ac0bf851194eca88f4e711d6c010135c46cac6c4b6d4d22ded888f4306369c5e7b716720ddcfd1550760b2674eae607713c5696f43d84af2d853505636f0aa30d128cd5ea230bff5a9322b0f38fc998eb902fa2e66a5cdf573b67faf264bd8aee6a7baaa4607ca070939347511a3e7fcc1c2aed75942bf4b02a7a3680f21e60ba2c3fb198e823ef8742241a5193df74d2fd25e4d28080588ed992440022cac1c026a3bf2c1de232751ee2c56381cc320b8511846093b8c82c3b69bee0a5703ebce82d93c99555970e5f192bf4c1438ef3d583f40e8b4042138963b862055a0a8b1df6cad65b82d57850dc251e50508dcf9d58c60b4d6d5f706b10bbb25717263300d3b432ccb759ddbd52e5dc847469dbe7db86ed6d35997f93f8cc939ea38e0eefecedb429e6ed8b028a6ba59954ad0b1345816bb14ef04d6d922770d40b19adfd065256ac351479ec65435951bb014a5fdee04be55231894b9390a28c7823bcb54409faa06f1c3da22ec89f0f9421fa9a33bc840a1362863b549360829e94a149010328b366b45d94e44b03182eb30c63fc967159c1df1386350c53d8f249a1d5cf7529434d61cf0085c59fd02171e5af8f1c82f63d8fbabf8f07622899eb8d01eca1fc6e242d202799005db7e6d26f734d6963a81ab2cf54936440914330b0a7a64f4c785c0958d72e82720124629c630ebe6c2fa7efa9e2272c234db67c5049db7b62f7e1eb3bbbdbfb842fa3df06ac020f84fac21207504412516cf601b65700c971606725d4fc31c4ef15a6635efde36696e339f2cfd775184233eba170149c0d215428706551ada80a5e9509949d22eeb0ff390d1d172b7033c153fadbd3f158b87cb300dea6364874ae86b93e5863f46d3fa2a0c507b4c382a46e0f953854689ce9b7f2a30945ac9ab4848297b833b4fedd6f839ef106a7028f1469d0950628256fec62aa432d6c0a85c3c4f5a6b792c12992a84ce000e6c1aeb6bd6c354960d9a741e0ef483a723762006e291f5950075e35b4223c471cd23733b1dddf91eeca80a4535db48fea257297e0b02eeeeb3da56c2b7acc338240f0e1eff611efae168d566dcb55b9a9d569539031fc4100eb6ca194a369c1330395dfc82e506d8669ae0b80d185a1f037fea20a2cc16da225b6e3ebe2dea684a032dd222dc5df9679f927887e0323e2be5c6b5db8b45640bc9fa099432d28c833a00b04697cd0817b118b78aa4a1ed51dcfe3fc69560b06c859284c8581b6ba223af7d55a3c623400aa0a30fbf3756e3d167100f5739ec9f7fcab49e5164b08b3628f9de44f0e7fd887a88b54305cd1c57a7b9b4ae5547dc617b4aa616b02fd638f4d030b7d9394929abe4264653c79bab88d1210197fe186b41c32c4ffe2827174edabc9cb926173a4afcfdc16e9386d2c2867d9d07d014161ba69169d51d61056d0e3d4c6f7e2fd93d244df132e72f560569889d635cd192f7c6c75fa777570aa806c5c9ec31b9432ad8070eb1474e9d685eb85116aef47ec47eb621c33a38301ae2348233d3b49ac13e64c70d4c4d594927cf3508f8ca6c040e71c95963820d7a70f22fe3120ad893234799be5de84d096b5b8961cdf8b09a52eefb994f433ee5b57ed74f1eda8d6894d2d19fd1faec1d6f34aa175e4b3a8298159f8a6e4130c3d2100d2c9ba994be1e20367f5d587d34ad6c2b00078ae1fc589c77ef3c3d2f0819eeccff1e7b686308122d9d8504b39be1bc01425d29147ad7e24db8c1c132b955ab073d37fc1a83a12d4155f747ffb33779b2f58e4c862d97bfee479631188a1c888ae437b39bf9f197fda0ce1708be825c4eb5bcf8c419b7f44d1be60c224b70e8536ba3f0eb79d6255438988b420f80a81c2f986a8abc2a7c60bf54f0027e1c190c4a8711fbc8551441c6640130372c515be3f22cb10fb9b53223096821a135a309f40922d5cbc2acd57e0d7cbec9d47837ae1465312424a77c6be3451090277f17d6225a0d634455659903b1bc51e79c1330a70d6139e9d7fac08e5928f23d2c10c6268ebbfda4cc45948a33a263f672a523125d188f64c9c01b2ef801686f5fd26321808e96e07433968d05a44864eddc2d190155cd3266c23778dd1cf843a779f77919c8e7a5560dfebc817d703f3eeaa802c613992e5ee2ba6ae90600125b1aa07f04902c524d3cf57e1461d9895461117ec413fb3537752d755737738bebbe1135afa71db91e93f33771d16ab3134f0d6d588dfe23ec6661698421c010d43df3dd7e9c422f8b1e34ad0953e9fe8d7ce81f4b0a62334f5229c6b11fbf5889642660619a2c1f0e98fc561836f62f61861712455a193e54e7c4fe6f1052296ee852b33ded957545dea80dc5f0c97cbda1d7a6a74ae0f482a59e8cb33bb42522b6652eae4ffa1184a2de0e215a662edc4731a0e6042a69f93fa68cc9088fca3e3d8473d5aaabc62ee5956144fd68eacf289eabfe35e6112e919837b82d7084db1a4cfd8e1a86c4ea3b90b890aac23156b50e21f293d0091cb71822592ff9c0493c1dbfd67640a5da51820cbdf5b86bdfcf47065c715bdf265190284a0b73ae525c70e05f0b35f67f8d8652f31cb650c02195c931546a32dc64207c2e0bc73fc8158e7188e8dcb8e258236356ebe5e35361b0bd759fc8652773690a2908ccc0ebd47a889f3ab783f4f3cf12738b7b2323680c69eb1f28688820c02c601f93ccb28717da6b6e5ac20fbaf7fb283784370fd30fed3aa8e0b485027dda030449a6abeb922c705c903a2f349dfb075b9ce0c18e90df690fad3177e02ee6ef19ce602f6cf463ca06a38203017ebfd02519b5b607a11718243b01084656792f3bec57956232f1c5f6ea03fe34bed97e55a8ab67741617263ab232293b19fac40daa9688655da4d37882b0b21980dd5201b4fcef42e0c038e8033a024c787ec218988b08396e9a621ac4374b10bd13d521b52f0afccb3efa4681e8f6ca1fd2152142c89c09aa954cf4c5e4073fdc99cb6cd151458b59552f0ac5f61888679ffc3711d4b806e756a77f31c993ec9239927414ec4fe996e7fc498cecacc56b30440add6f71b02bc34f3705681e7e19cd3722febf38b6ecc25398bb9b527c77fce532371b2463d4fd5a8d0f1dbf97b95eb59acf0281d7805f99e519aa4efb65699a2b2ed89cc8af53bc305bc1a4f750a953086fab18a36eace7e0311de9a6d400042c17846ede3f280a7ab4dda32bbf364fad1722b5bbdc0bab21aba5e4f43b243b2165258d04633957684ae38ab2b101914a21dc1bdc31423f7748d0e36ba5d3201552a2aa76507dc1d4b4d92c4f16329c00c167765ee4f340a281f1f3d73478bd1a0d31ad5bc40969f7ae3cfed770c1b9eea1d75b8b655bfb6932610eec0d5ab113b12dd78802355c2cc8e71427ddbed5ce2cf37d454fe788c09772ce1668b9d120d1cf5f9b0503b193b2378df3b292666df3df011ec6b94271a61fae493f6f92a7308f733d9a12fd7b5596db6a6285d44ea2a0ad64d329ceeff2296a403a730c2a18881d32ebfd93d502d54021471ab8f9473af265b6e42c1fb98c1767a92d5613e29d270a27af9fa8a71f666fe1766d071813b2156e912182a7aa914439c96ab469a576c17510f1617b4536f69c2ded22c1d50d7482cb7fbcde67af59ea734f3742a0e375c7e0210ae4ecff0f818f71b270d49137e46a6ab38afffc1e24cbbd1719870d3e86dc6ff5d1bd5411bb64dd569d593e4c248415f7d59339ff83a749b6a05dd86280bab71b975247de7eb838de56281ca26849ecb8e86cf7bf9a0cae3d93acb75b4af9a46f93c830ccb8c922facef21700878b23cd313fedda6ab91908b77f5142bd60e02deb87c4a2e80b25fc7c51982d1a700fc827a45cf4114305bbb485f8a04e9a4c576365222319432630051ceea8dbcbd0513366fe622b7c15b9c5b9c7697fa7ee201eae4aad0423bb61b96652b3f1e19a5670bad143d6d8b90a9472a2f0177fae07a68dce0172384663be8e4099ec3c154e81a0a2a42363569f8f4030ab4bba6ecede9447835cd97adce8f030e3abf7fe531c9b63a81a5285bf7b45c1f3599a59c5a6ecb70cd6a747b61245e673243b55bf0bf824bc01b754810a19812c082b2252e891d98896999590ce20c9cf78be0e86967f099849b7613ac45084d0c4b7490389500f296efcc38e69fccacd8a9cb3df706bc09c399886164afd22de21676d0fdb93fee1efaf2d363e2ee83295c2bfcdfd4bcce1f0197c9052a92b3ad4032d871562d7c46a0d7deb229244414be672c0dd9a0de1cdd818b8b498ecbf1c786d53e82bb1dfa187d22b4bae3179d56ca4fdd6f8f2d4c81df80726dfcf243829c33d23b77b8d039b0d169c5613ecde639a30eec12dbd364bdca747e8bbf610033c8a02b1f2763aa9a63806d07364d24228d7ba621133ec01c79059f65c54748703fc60eecc810382fbd160a8df4dcd47aa57f640f5ffd74a1f94f9a56156f7c0c6e34fdd6e43a5a0ac46b71474140fb8f16c10aab75678875f19fa82dad79a6cd284c78488aee66c5279d16acb21b8db2df30327783b64335934d7db219dc6846d9199329fa8f8e8a949863b39c03bbf8d83850920f4e87f41bc8f14c5fe3541444af632f5df9866dcae93493fae87809f16ee551bac8c4ddd0bce15ff7be0e573cd46fbac5fc7f4b764f46fd3bb09ab24bbbd9c38ee0f648386d892a90165e2acc2e5057c7aef96648ae013178932d6eab4b60d94555a7f380201c9cd432edea87319b8bdf5b400d17cb0d4743f2174c15037c7fd9e5cdce945860300000000000000af3ce8279bc3e39954527b6314ce47076c97b16c3577c2e7ef014a9f62bb1e248ebb21fb1ca0aea57f0a3df15877c9de9751b1767d705d511fb67eec61dfd42f00" - ].map(|hex| >::from_hex(hex).expect("Block bytes are in valid hex representation")); + pub static ref ZSA_WORKFLOW_BLOCKS: [Vec; 3] = [ + "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f0277a3c364bbcfffcebbfd7dbfafce1b511f5383649e84bba9c598f7657cd73f840000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000100000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102a2ff8960630dce65b22a0f76907140d17fd2c4c6046c71bcf6a733ad7a5fcf273813c86092c0e3182ddc16bfd9c2bf7285afa4353ffd559956f96f8d5b4f4f2313e7bd689d1c16203fef2205ae6ecf774cf27a2ef1e8f2b35b1eeab4dc6b5d0826527f08127c5a32a88e3b26f5b6ab99466831a4f8475b42463589c82adb1b2e62dcd87c5082075e90adda78559a4b24f5e3bd01af74a08402aae8e8741ac8a33ea8291b2fc8cca7f3da7abfe174ebb2f4739c6b002fa92ce21b4ff82364df00b80914cf1fc14caf3e1167c42549599f2beb086f13784c6f4cd1b669e5b4d5d6297d4e21a4522364fb5d40af01c2cea0665e01a6d688737880708f5171d20738d63765547f466c8450490353c3be38ead6a969c060106c206e9651593abc2a31812c7ebc539711f5c715829a007928fea28a5a7fec3535b1fd432ff10fcb4234f26a31b40d986f1acd299d837aaeb8679d5aabe55d48db849dde1228edbf58f0c112b7b8d88b5b6ea7d5aff19bd5052e61ae769f08274a823c9ceafaeb5e0c25df1e1d85cd09ac98e5dcfe93f030c14bca992228a080e2972c2d9a62f8740b276d961b1dd35760c15a875d202a683f80363e10422bee4205fd5ff844ea7dc5f85d7ff65fffdca20f561477c63670130c747c472b7e78948607b46813a3ff23713c1ef5242bd2ffe7da348e7dcd50ead0efe615b83c504fcba6a269f845860086ea0a4fbdc6fc3bca86108130e23e0718cbe243fe03149be581959985b625988bc69a05dea38799c808b73d31f56dda38908e5757daf3102bf9c16add05b0573aaa12deff608f70891471a8c7de008226e0d283be8f6e689d606572a6b9a0e16b10d956cd3c79f6051a2e3db3188ea4b7bfe9475a949d9e2fb9ac9082e96476f46c8d5924afcaccf68029d03b606dd56124656da348eae76908b5850a527b255fe76146fb511aac1d009621de6da7ca342c026122a3a1d4a43b126e7973a74baf788b5add8a5dd37db6b9f2838682d1a03b536c418519ea002d64645245724c4d7bf845ac47ba0f101b9cc7c9ae706114fb82f16523c067adafa04c98eb7be87361f42ae60b519d05d42d8a437be36fdaa7e86b2d9b58442958b3c4787dc81eca15ee846bcb5132b9d5a0afdd1a08ef417b7e26fb6a9995e43e4b8cb2b1f9c8a9f283f6fa03745ac675886b14b8bd5be66bab0f8b30d52edcaf76f8285bf25583048ba10e5f80b9f541de0ff62905e9d2dc195b3a5b039bb263cf21b8f244dd0f96a1e580e24fa31e46db5f1d5fb455ca57b50b1dcebe0504ddf3bdaf06bfe117a5b51678cd762dbf709f752f6ec9873c04ab1ca6e3f0acca73fb4baf1fa2b379bbccdcfa13d983b05dd541a80b3795a489c83a1f7dd7dcb5fa31bf2b3f554dd490dac8b2f95451ba7ba7c109f024817e2b64732fd51af3a041159d958944e75d268adf9bb638a4a51b3dbebb5b5b20bce21cf07250d068e6aca397d95de7bd4ad287bc3798c8aabd57802d2d55ef15e54621ff0cb1e83660281e2c7a6c1c4e2971fd4d3409e40b58bef5ddf96e2f11e70ae893f2539ab2a3c047102e08551660c886ba44cfe98a39d11cfd7edbfbaae0a1a0fc692d5e45d5c0e0837212ab058e1c010edcd5d6a5ca4981ba80db990af2e41eafaa209ee3aadfa0ba3047f129461785577a10c81db945521fa7a6386b6c07f6a319a7e5b74dbbf29cd0e59f9be5aedb764d7593b4c44ba74ba25aba1445ffbe1cd636128917ead385dfaf084991c2fa416f44cf8d6f9bb29155ffddfcf5119d0db3dbe3cf134d478768c607d6f118df2aead2c95557a3aef7fbb4336108ac45e18b8c871ee65b1d75ff5aba13a6a6b366ebc98e8d39fd3f98506f7c84990c28c74789bd80b0070fcc649cca179ebe954cb5b44b0d3f6249c4751877f0a4031016c915c834e7df81756e10a441833fe0b75087bf63e1b76c1ea3bcde997025d9189f7d1c50ac6323fb8d57fabfecb7076950dda510f0acaeacbf14bdb335489c0f56cc67d51274d21734bd1a1bedcf7e98a0881cb1ebd38ad67c61900143731eb7e1ca81eba25d7a67d4abeab48ae063e7d84f2b1ab12ad3938cc43d194d8221b78efd31c972512dd92c704bcf749337208d3ac33af186fc87798242cafa31929b6a50b2c8b6be32baee7beb2ffca22212fced56595855ed701dda8c8e14c2cc555bd55fd5a0fbce67b24f8bdd0a11141ace9773b49de5e24336f9990173c57feafcbb29b3a7707aa857310128a801058bfff8e71e5dbd0245d3640f9d9265b88b41d3f8f22f300c030b98cd73bc96a10e2fdaa9a27c2a42b95c90fcdee72e07ac44865acb7c2db42d1f38fb05055a29cb51c91bcde85393c14fed882b94b6ef496a04e318f1c1ffbbde5c5d7e8b55ea0337bd01a69907ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82ffde01c742f816fd3d4577b25b0596a11a98fa80ed8a5d6514569a205978f6d1e62530b22ace45576c2d3c4cb48a14557dbd0db404660ad168d22be245816224bb57b3a325c24b06c7076f8a4761fbac194e96a5dcec14c19f432bc0286bca0364981a48a72cbffd7184306ba0103ad72a027b018138eaa811f88c8494f4a9a5e3cc3a41b073d97daa4db8ed3b3db9343a48cfaec7354cc4ef39b7c9cfd273415c05a1fbdd19fe1a058a3bb6b671fece03026efc5bc71e91d8f938b6ca46c8f6c9580a1b02c9971add1995d43ba6f09e7f20b0f54355cd0c39be7d233ea9c4296a8ca0c1a12457db2d2d1164c17e73fc9b3ef735c5fbe4fd6d36b9994b545af622552844c55bcaf70af05920a65323206da4b8a2656035bb886c267903baf9cf53409a71a8aa6c48432c0213bedef247db020c08fa6267ba4836af30f1053133a5676aff95aa67de32ff028755bac570d1aa875acd98f0ed735fa24efa3526f18374396d4cb46650c66119db6f8a3eebd6ca20d16aa1933d0fd5b849e51d9ea0edc5635c412df8d5183ec5824041dcc7cc5427593c997a33a6e2efd6fb71101d2affb841e7872e42bcc2cdcae31d991d20cf983bd88953944850f92f9a329ae4f43569e71c20d71ebaca83780f3244ca8285e734f126fabdcf8ed4ac1063fca3d6bae27cd387759e515b7299159c0513490ca6b5f2926f81aa5e4b7d016a50501c4060cc8db9681a302ca6cf848a4b4b855009e13265e422c45a3027c756b1a4fc979b4bb2802cf032a4e025109c4d25023612589ac7bb54a1e90d38dd60f347d7eb29390b4223cb912a80727b688291e8a17090dcd04dc4e9af03ea412b06d4239f300518650233290df9e070116ae1233d595fcac06cc8869e223a5655ca8b17c1cb264b4b2997498a0fd20f2862708d1bf1f96b8714236ac8ce9bb558e22460bbc1eab124d73547a5055899539f29ff25f66a72cdc8528ee77de6793fcee62ef211857f494372c55371147595407d3540461c2002d29b14e6d164ecce50cf39d2a370fb9455a73dc1072498c3bb2b35346da9be1229923d34ac3f9935d6ab494081d38ad437c514dec7d08d37f53b029f4c6eeb5f06e7860ab48bb8bbae2770637a31dd57f8735c9a9dd32e20d57d3ab2ecca9de98a59ddb9a7bf2817b0f73f62082e9fa8b9047da395cdfa7d577e8e874b28ad1ddd37d9e1309699a0199b5a054018fd051a175859ab286575202d5518fc16e72b124240f2564cea47332087711804ad5c79e536efafa3ebc65676acc28fcc364046344b437071d8b739fdc2722ad66a4d716d545e0e72392ccb87c488fd12ad01d41107b84d1d4023d3ca9dec9890585b47289d2fdacbb70d6c0ea3eb850721e8f43e54f184f5329cd318ad8100ff7d7654a694dff05306b073caeab126635a7c98828c05cd3ecc5a31fe14b1f20474715b2a422fb8aeb6dd4c2452c9740740d8598f101b8bda65cd789c57c0818eea93794193b7dd98dbe48b1564487c6baa00849e97048ec05bcd415f2b018a5fa4a8b9cfd9768a8c4c751521965c873e5b9e3f4e9d021a0f291848a75ab9f0a59f79a8e7b577525bfc8c741d759e8f076fe200019f7e2b89e037974afce5f019fd9ebca0d81d5f30e74e1f755c938e2783632b0caf961ff5754f640ce99e39cb572a527d1e514e883d3a02e7f27cc01c7f50f395c282bec3743947965f3ab868501ce9a66fff6c529851b5cfb1c3cdacd2b14d8fa4b8ebb8c2c10da86fd05ade39e8a347735a678bb84fbd120ff8083f353da614746473f55ca04f1566b72acbe76bfbaaeb77759d01d87c8908101a3023c38221f0ddd2b8163be8d4320bbbacaa64f819e5333e9adbb37d80b00d5c73766940affff85c965d829655c8f8386bf80e2b1f2d4ac6ac1cca0d887a42e9718ce598561ba106d180dcd805978c519a354a84c5911f3b765bad79b6d40cb0968cb0e7d0f166557ad557c000509b839c72eb1028c3344934aabf05b4ac70bf1264025a6b1ed5be2225693e120aa1e01650a64e0dc7fe017718c8dfa04b0c9596ebc25348ac4869a2e15f7446405ab894ba590a6e255f7de3d24d636944796db61ab391de28ff3abea0a49104128688e1d56753bbe62a8e1dc1bc53a63a2ea3ea0fe3aa83b614e9f4e9bf1b3037f0f90adeda7e3da64e842a2c04a0e50a1d17644d96d243ecaa240b6d4be0db40d0711a7772c9645be5d2930b343ee6002c8e8592f15a405354b070d6ca3a38a76979bd2fa9b73730bdd379ecd86e1bc314ada63df86176aae61e4685c071299ac4597a4d914855d98b6953cf61ceedfee6119b8b11b282523b1173a1bb7807568f7b3d691c33f287a3bdadb55c493db4d8d733153d85cd1b3133b891b995ee44e9993f5c61b832b9a49f716cb5db316c7a689186d2b1843c4637bd06f8aa99eb01b2a6483c9796ad4aeab3be6757309958076410d6074adc681ff3cf08a5e8a41ab246c36fa11e75895751d3f1ec1a50ccea73fde458a529285cae9239228725c050f01c26982b7e701bc19b6d62502ed1775733b7fe59abd623eb24b2eb997f9e10dc2ee5130bef77a341f9326f67e9760b860965d7d0c43b8713cc8d588e42cc42181c2e509fd4a801f69ee396f918e8ec203f03a7ac335d5eb9e7726dc18a45e2ae9f7df60d0f15511c481ba90d9f93b62c703426dabe5d71377cd3f64570fa820b49193ea811a87c14b63456095a982f4a902c219a16f586c9169ad14a233352aa613537628f57ef98655677cab2511e51f574c85b98e7f48c5dfb17582ebf61710023d58f2f51365ab055204b395ba22c94721fbe4a2d36f16c5560b013b24383c55a8462e8c17b6741658ecfa2b111d978de5d39531ea9348d8238b8c91a505d8be0b2e98797b67ac3aac00f47d5e797ea393ff8e9339100c60c4d88c6314190db8459d6a3fda778fd490abaf12e4af8269912a07a5a76baaee16f0066eb52ea8d27118b66418542561b3037550a1e45c4517a0d4ddddc745079fbc3ccc2e370ef0228d783380f658628c8638562d3a088e162db4b0794a3f6dfc067971cf0e566257fe5e7c01f34bc90925329048a64021b99e1e0911bb4c00ab58bcd6b434aaab7f740081cc2101e863f989e4d3831de276dfb3b6b88d880c2405b673652afe49c995fa3446da29b3547fe7f6410fc4eeb2c7a5fedb660a318c1bbde4a52038f76e708a2429b5827c8ad074ef716f94683014bb4dfccbbcc5148cd3c2743f4b000f7d807521f25ba6a83dda4ca4ac7e49292dc3715c698f425f12d42ba10a2e2f4ad8dd9bbc6f7395bbfd282b798e643b7b6f10aded7c14de6a9c752c0918f7cf72e8da82f1bdaedd25e5c2ffd6e6fa2603a1290dbdce5862f74d78d49b36797ba73f6bc5800632bfc79f1a740b2e7de716a491410b55c34c4891004aec134eaf5552642552a39de1a962cb54882bd07d037712f725bd2f0d4dc7200d9f0349fd0a864006d826042114bbaee4b26409c7a2a2d772067e30d24a1ee3bb55394c8a8dae11b4b6585f1505e0dc6e0227020e7940a277fa6588401825fcb6bc056e9e2adf5cb860caae4dd49a626630c7b5b836bf0823c09780c3d4163364f019f72a44e04bfc5537d7388abf532f132caf8a2a4aad46ea37d56074fda205a52f9ab3aceba244b247152b7df5e90a70174f0425ac487157a845de84db2200ff3914ee1bd3b70e02530a82b497a1ab4e37bc783afdbe961c1cf61f1dd8ca66f70d7912e372e519788cd4389cd8113a147c079ca214a27e55890517f6d52ffac83e1ce30a31931bee79f1d9a040ba7f725186285a7dd238e61b4ffdf0a93e92f6370a3ff318317dcd2c21c3ca1ebcebcf239268ee5b1e514807c9f909f797f049161245db076c0cde8ba0d9d2f84b6992966a2b2ce24f8186cb6fa80d682359ac1f52fd998835bc9ecea6d9a268357efc2dfb1646061cac40b590360d48fe7c9334663f9110f31621363dd78e39640f8cbbd349cda0b3ac24a8d4dab435e77fbc27a0d4dd9a9718745888e22ca8f8f0737705abd5843317ae8e84a593505f6d7328bfd1858f18ce04df6775df468f419d4efde965a6b6bbbf1cc5efc02f5017c91c231ecb21419597141fe2ded1eadcad6846680a701444199733dc987556e37030cc79460833cb3393d10c28eac8c82fe8049b54ccf08e44060a7842388294d900f9360fea35ddd4d79823cfc59946044b417fc849134fc80c30c2bb9eabec4e0567083c996585b3b0ba0f145ce51705c08f847ddfb5a702dd33cbb302148aed1f0a00e6efc0d0fc9f69ba8be6eb666251d79150e6753b491761d34499437ae82c2a125987259522c6e767d7bc34d50f0bab103c7a8631c09c96db0da4f392551cc4dccac3496feb6f8e48d18a836d3b24aa6edf1530e36bcc8749b6a027c7950b94f548b7f9d9e0c4f442fbd6582fad3de180924df9b12ddf74124b3705ab07250deffc12cfb5df201098ed40b8699aabadd99d719e8077030839b67516be6424bdab583f9b560d430e23bd871830cb22ad6017b3cd388e3f953d49ebe5b0dc31d70d9ebe76678e93676548bc63887bdf4930b9e3b1f8baace7d7898578b44e2810906cda4763df23c58bd4c961bd3a207b58f29ca339dcb9006f61bdfb2d8604bdcf6a2765216ddbd51278aa93d51e7888fd3f48f4232ed844d83053ce9a2b24dfd32a888c7a2a22e34c395de59a48ad9e4c2c231f46ab8b4b398b7af4c6200986b4e2b76a692f9758d7f2484929d9d426963b4e7afc83cc57a473f213883a2c0321508042ada0974d814471fd2035adfdb276c239fb022e06b8c60dbc20463a2d9a503ecfc8997db3ad3b418a76427a9112dccc929adb7d7f96f936f4ff682f349dac9e90f5f0137aef9fbcfb55e2d90afcdf89cf22974e2fb12ae9bdbcb317577e5acdd09b9f4a50a079d81df814995fdb5f6fcc973942960ebe9389acf80fdd9f362e977972b176c6c60d7075a17a69f71582d634b121a7cf84221568522a412cb45a3fec7371299e21a21dd30d3f79ea4d1a319189d796ca081e85c8703f0ca40c0074f6384313e414f1be32d3d9318e0ef9669804749c8261037e91252662fe3d00bb6ba89fe8956435b8b0921d616bcb36e16d1e030e661c9b84e8d42ebd56188be53e0d73d6ae74601358386e7857522dbb0e7d830c4a89469733fa1871d61b57abd0c6d7553814affc3d05ee78300fe17b181c672935ab2c312224215056880f4ed24855f04d249a8217200d2f605058401a560141fb7c018d5e21124880fa2c5757cbeda13589009ba7d88f34df269aa5f17d0e15722dd561ec263d79e8fb679c9e15748a78681d0b01947d3e0c188049890e11ddf96bcd1eaeda188f03f6467f0e910e70e4448101f5fbaafd54e57bef17c2068b545d897b3b0402f33d7782639eacadad62cf8f54fd8f818984a21744f339136a6f4260cbbded0d2ff06821cec3519b580da06d271ed1724344bd7d1b2ef8544ddd6d51d4b0c531c2b3a8c6fe58f98b299ce78c156bb6d39b0046196c97668bfbea341ba8fd1833cbb99840816b639acff5910f91121e95e41bd6f16f1413f23fec512b13aa2e29ae67980fd119e08a73b8919ba6cc11ef1eea54a2842eab3cd198a9a1f67751066fef6c767fccb12496c609637e66da8d50ad8acfa1a3ce00309be759cfb3c825b522831f76b3a430cca00cc798d15e9f61d51acfac0101ded370858648426f1f2bd33dacf5c73418d6be1af10d55e6ce31ccc569ce6ef18d314f5fc67e20b701f2301bde1f72402cd798a443e8243bfe5d7a32b5fc0ce091ff37ee5b8abea7052044a394f9db1784d4bb3be437d9b5e8ab4aaffe9a8d38107ff14f592ff24a040198f7e05f963fed6c50344c6c7d8144d86b88435ac5e81320f351991ad8cf22e6648cd7496aa08253cade6d5520747d4fe563f4568d85a2c416799a1e48fa3370fd61e17859363ae697d634c5fdc56d4b739502ac436d9483fa6ba7461f6c1d7fb640a9d4d092483f2e7f74ca2c5a37648689c81a0db22ba2b7ebdee5e3833fac4cc27881d1ae46842e4c930a6588a2da269bfb89abc3dd07850f252745c30f067921f1c8f7625ef228725ddb1b1c1ca2228863e5a5459d068894e60e87d508637fcb7c8a76344df92aa5290b8992bfed9714c1c000e93304b39b1b3697681fa0a88d4ea1df334a19e38e180d8cfd58e189bd15bb8f32237dd5bb1f35b6f7051e2063ad81658422d8eaefe681257f2e69e734a7e4077f2665f1ccd669c8a72b87878308d38d8435ff407120c6edf0edd55279e559f6f9ec8e6f07cfa68f33271a073d5cdc421473e468cdfd20e59abcb97db0efc674ab9d4ea68c6a0dca3b38a6d02585c3296b953b28cedcd39e30503a2c1b0f5e7b389e1d8649264d9a5f01f0623e75b524bd642bd765897fbe378b446fb9347ea7e877cbcc162457d3f435b3bfbcb9a54e86c0d666d737e7f608a8390eac1ce8cab7b8f8888609cc279d0ba9e5160075504f22f7cc08d307d0ba5c8c16705fa8d4d0ee7935ea0c3d5c1035898ad9bea0d1e300e88961729ca63397252994f10ade528ac6d4cd01f0729e18a2517f6b173d62e10ff033231892d23372c303f3666b194a4d0f1c30bb54312a9dd5b20746e21226bfad804c9e6e5587a0fd475a9b0bc6568852ec0d402c6d3b10a58e01ed05f009f6bb9300be57749a1562014f5af7576e0c059616ef1bfa0137c76c2dcaf05dd19063ccecb9260190fbf5f7807f1e57dba007662f5bb45b129483e9cdefe973ee3ffcd0d962fb97ee6e85f9c99528fb00726942d63839d70ab2a516c6230eb1fcb81a9da2dca561b84f9939b03b27d16f5d1067d79e322d049a3ea587692091d63553b31f68fc00620b2241901d7b401355e6798e85e3d311ae3b43c5b2a2371d56c59a9b06370e47fe1e506e307e28f77ded15be85519c1e9cea65507538310cf435f65c3c28a4d4dc7b6bef573354a273a305721f30931e249429c48f06e298f9e6cb164045ff26a25041de30c987e08672232b83c035207e7ff19a59a4d1949bc1a55854b73eb88123d9fc4e6d7e83c17792574d2436009fc72af85ac544092d904fe0bd094790641d1cb209e6ca3a7c1c88e97c4f373f910912cab500cad5a139e522b4f6b2a283dfa673a221660a7d4f833e1234cd1517675538ed32f71af0d821649f7e86bd14bd84ad8537cdb87f781795952e1106a5719f95c027da3c6c5daccf3e16d0a4edd69f98df869f9f7d7f41580bbc8200939764f56731ce1b892a0c8bb511757012598bf1a61ba3d7ff35f2702c1afa356d2b5bd334bf7325954e69223a70e9d5a43b7ff58e37c4bf0395d2bef8f12634ed0af02550eb7b0079664132dfb206803f172709418cdf7185a22aafb95b7c174dcb55af2945cb1f6dc173b4b3ace1c623712e3e3aebc551f522ea8cbf49ed112966bb281e60dee44e4ad0497ba489dbec36ff797fa49d7797890a9814e45d166e885187b8840c97c8184cf4a6ec4eaf8bedb1e026d6725ece4339d439b1362a1711ed7b876dd973ac52065ff2fb715cf306edb83a2144e6925e7c41410cef00b75fe21aa93e8e8344acbed670559a4f70a0ff173166b8afe6e8c712bc58ac3a10647fe5d1a7aee04f75c5f19a235cec4dc68ad969573da2a76c9c17d0863030ac1b90715c44ef348a028c82c9bd193d45234ce67c4e521540dd4a3f33a854024858823b193f0b945fcd56fcef89214e2b30736b36da974da0e136b979b8ec217ca5f22616d2faf86c5c857c4b0ee9c34093385aae05b849dc957eca44f77b0419d89b5479fd92e3af00a8b73b5df7b921cfc32d3f7509acaed599fbba02673220f58a0fbf25ed435f4cdf72da033d38cf43e5bbb5c21d4f997574ba25f9b83eba7ffc523d301824659f0a55ebf64a0d47bd2b6f4174272514667e578fd24f3a0f65f6d9ca1f072e967b60501f080c48b9f3bb203081e87e416284108e800e02646b6968dc0171db2909fbc65b72e9a086ee66dd22c0b1b32919195de2120211de22996cd2478a1881d8b275c4234687903b8bbf3545ed00368da88c3ada482472ba5b079e656686603debf75be6e770a2fe59dc6bc642e537cd0d55b29a692e3aba99a99617c4a14297860b0ad8aa72641cfae8842689641de7a79d6ef11d1e8e0b4d50edf2133b35da83567bb9ba6c8d857edca269f93848637a71b131943e7de3a9d13aa6bf39385c4b784df25d18b2e2851538d5961325083313dea0e61f264faa85a95c2b92842fb34179827d95544c5ecf68686fede2f796dcd6fc0204dde1105ffcaa4fd3f16c1a36a2364f0ec6eb75262c0501d183f7f0ee583be306024a36131101e4e624a22067ad9439e40a3c4d65ee220a8097ca372a2d4f9d22a390097ddfde007e97172160bee326f60e711142aa8a2fffae58e9a66a506211b3b9b173731f574ef346a487dc44bddb47fd7dec71a3c5362407fd69d991b024282f839773e9d9450aeca49755795d376d984b086186e9f2d05c1b0521b6d431b241e66a8026b0630ee80d549669ee5ed4c69bcb560b2919df40696826048708f61742ddf6f90ea3d5419bbc03a74a1a056d12a5e2d33a0665f4f5ad067ddd17f9a13ee32b4a8ee7562bedff560e429a715216428188a94d8eea990afedaec3e58cd294bb394672665a7ce79aaf4c0b35d4f12212b4ed5883b6bf2b2b67f05223f3d64d0d9955c44bfcf728da216ac733b6d55db5bf813e6f1b12c530e149513a299b27b5ae97926fb1e24b8c842a4d79da85832dd51b826add0f9e785f77200059841adb6102321820d09003fe4d02b181adfaf192564c6cb62d1852e91e5235f1c67acc7583ceedeac0323496b87bde74cbdb3c20a7319e371dd2cf2346f033333ea9db5f34a222c6741b06fd6bff4c6d716a387e1107c95bddde12dc5803d0666a734cb67c6be3d7cbdc3c9373dc8c889339a96db013517235adb4affad10f3dae3abe632af4684821a1e51b4a762d8068f5ae3424ce5bcd6b898bd77172ac18aca07c8ae53afe857c885a3e0fbd1ef9ceea9411695e813c0efbec06e65ba822a07c362457ff5e7f173399872b4d182a801ba6ef88430b1ad684caf28b739ba379b95d56fbfc2568c1f53d1c739f93288d3b5dda68e99fbcc5ef8f6277f170d4ae0d39e58f8add9ab31db904815c922f459d55764e12cf9fb880c5353c03d162739bdb8c8d874c5c10c6707536c4a55129675a64eca5d3c010f65e00d1f35ecf7a04a498d1b5e444a896ab3fe798cea6fc1b2ef5bd3a7a8600fe2887df1161cb6f83ff4fa94b37906a94f2d2add9a1aa17b0c3f2b2be03fe1598d594fde2ec005db41e554b4593dfb766fd366df69a8b443d7c5681dc1fb068a4b450c43809d895a9440197d5fc9df550dacaf0d70bc069b292efd92559fd373040b2c6e96a8e43ec0647fdfbde5b85bc4ae422d7076b046cd263bb027636e0b5d7e54e3364fa412533eccef6dd6d5c2198fb975cacd89f4e7887d62778e888434eb1c522c1ad335e8400401fe0bbd34574733cf5e4c7c50b104fccc0cf26fb05ef5ebd426c859c574dbbc06dd0960b916b20400d8361ad8969153009afc1006fbe36b0d80372f48fcba350a73f720b03e6c822bab6faab59f3b506bd2af4409a6dfbf08ac68da3a89e9a260160c28c868650cc26e4f2488e56e29e15ded3532e4d97e7287a6f8e8ba508d26174e67e556c8c68ce540c0f50dfcc87a58e9d6183cb1e506bf527aa3e45319c0e2a32f38f42d7453415c0f99aaf5cafa5c9076256b4a88d5047adbbb7dcb2cf37bad183982f4d6c2319208c7aad46d85e9c26b1cfcc330e0a69300688c4acd32f6dc33f7215dc151150147dae2b5c35ec0d83fd2b3ad6562a9b4d085b11cde126098bf5ffd9c921cd52c2fbba6f2faa73d00dd8bc2f9785ab50efccfa959788ef8da1ec36f5e3315d9b0f57d9f1d69effca84b486e816a5930d7f04bfe406d8438e8dde21fa2a129d5f44d9bb295e40bc2db710d85781e4faf910a13e44696c52b262d551a906f8eba19a4bbd51e7e37af016c30f89fa571a075f997a873f66a93c545ff2b125f5d03e3247493d6dfdd1cdef5307046b88019744f2b23d4f85310d17d375d136782ad31edd902098e743853c67738bddca3855a279784250e4856a241f01327c9488fc7a1618a429c43a4f6ba1ae12c02ed9bbf4ef905fae987231165c02399ceff808d014854dfa3a66cf1b6dbfb5c68381a3b5b4061f0e15798ea703d9279ef9b66b87c80d105449197813163c928f4b79d602ccfc541a8dff238b11255abfa04af1d953c616a1586de94ebb9180b834b917b8ec6932806735ff1bfd0c4b37ffe1676682d82ba9a4b4b5c220497df0baf310ed402f437f0f639b8d31220f7c66b06a1d97a698a15192e6c4b37df85c1172200000000acc8d23a887cbf7be146db10dfaf7e99c394fd6f215e9c236aec521efa9f2403fc33000335121c9f39f4702f34ee9b079215362fa8d50098374852443899cf0d4fe60aa420202852a5bb019b444c161ea6fb91472fcf60ceaa0c1b3111a4bea0ba3238a615772264d44a6447412b0d2e7c916d1fc2b9abc078d6a247dd90413d00000000000000000008df299d0c2ec594e58b66ed6082dd86839e02a7e39e61882f029de595122a81992b3c78218f2f9a7a9b14a53ad6d7a66d5e91b83e64acf921272e8a0c06ec0701045745544802cc36601959213b6b0cdb96a75c17c3a668a97f0d6a8c5ce164a518ea9ba9a50ea75191fd861b0ff10e62b0000000000000000047c6d3fcbea6cea1ef530150439cde787f28ad6e861bfc8a210a885ecc243f910cf708248d8c7a767ea822c7bfe644631224c027897bd3c55c5c4fb764a79b2ff2d6c13f2a7f5cbe9707d26d7d7ee1397f6358d324a24d55cf3c5d5992528f4f2e7737d14decf060bd7be5a896d18fca116c6a15be55f04a351fa3dd4c1e5a420fb8226555e678e9e6f41fe80300000000000047c6d3fcbea6cea1ef530150439cde787f28ad6e861bfc8a210a885ecc243f91bbdf187efea2ae6a9090cf97c682c897c105c3f94c6a4d291668e3f24db61b1137758feaaaa99b1d18093c24ad369e43a2f9341113c4d2af873df5b0427b76c200d5e50ae1b41c0a64b43bf7b230207f12ee69ae9ba16fd653911e1166eadcf78c53115e512a15ade568aef3140478a92b612f91cf622490ebd82230bbc4a21130583ddbe385c01c68669b1b6c1da6e9d40a17ed21dca5962d25974c9b5d5cfa26", + "040000001183ac9df4a70bb97b198366e50b570c5cddc16fab0ed1d8031b6717aa61f9a46d07c8f627f0329ffc7353da1b2bd5ef58b9d2bfbe63793d6cc38c1c13344bbdffeb2e6ba29e2211d3779fdd4f0fd08c54ab63136425b35a2f5dfa36dc1218460a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000200000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000001021415f56a0290cb829352a0053f3173d99ec2a607ca29820276aba6020e29c02f5bb0a2b80a56b387a575529e00085546a130438f1c0b63321ef933086fbc802a24c8e2332caeabe6837cdd5bc3a221330b602e172fb712084eb4a5ea674dc696f2c915237c89cec983ae159ae839ca480529a663944ee11ad80952f38af4e63b353dbc0af1aea41f7b57e5bee68d35f90994143a2821f60d3fcea72fa5f9d61c5cd20d769fb813f5271c3272e5528d9712dd023a34550f239b1c4a5bf8919ae0b8edf0f1aeb840bbb3d5cf5f5a2b415db9bce4e87aaaa37968468969bf8a8ff2bc5ce8d15c3d604e24ef315fe1f57fa3bc05cecc902fcbe9334093b5a963b86fc88b8a797f2fd18d14d42122d66d3377fec273149601004120ff10c5a7bcaadc22f193a499c88f3ad5b5eeaff2765c28b73661333435a480164e6d84695d825816ccca01350b3f877384690fc47ab53b8aad4c5cf94bfae10033d7b05419f1697b41314d9575ab0428e89f056a67c84f7515264eae379c59893b5e0883a4d16106ec6070ef1cdf8b50e508f390c911c719dcb6d132140cb4f7a0f8f8504540d7d8ef5fa0fac6f4c3464c02cf0630810fd16cd301757ea2a617768a00acc53cd6ea2d9effc731a41d9d7df3a0f66004b883e8c6eab85f15a4f5a7fb49027e53b05d90fc598e0ac003a652dc9242f537fd76d73d34ee1231f4060b254bd049573ebfa98659a40d004e42848c383aad6b8ce424e9b80266db51ba39aaf6b5ead6c8697fd65cba7e4b2edf53d1f7b6f5b6367d9e7efa3e7980d29d67a0a136848b08dd258d9bfc1304d0d7f9845fddce072f4d5188ed3bda7c9c3082659bfba91fd562106e4d0fe8cc196fae5fe05481f366d17ac5a5d12952fa42067778d92101db05bcea16118f4b15bc5fb60cb2ce9a2d32bee6e3dc041f0fe98e683e09367e83a8b03ba187ba2a28c57afb4f596752fd8e1b8fae46ae691ed89cc475ce9cf839467c0b273e44b1d4dde8f1966c97b89dd533b0cdea2a8419cd716fb9c2fe40245434b54a7e41b29b31191ab61590f568d2a1d00f87fb327ac24efa2c86e669f867fc1cd279c99815d7351890d8732d43f8174a720ab59f0513a1145d35fc8ef8e969c80fa7c0c25d97d0409203c866f170ace4ab21040ca98e7df256a5805aaa6a0eba8b9eab1ed39d26974fc25587d6dc5ec6762ac87112aa9af554641f614e5da8d8323172be5e995a0efbaac67ed9c98dfdaa79ca33dd78c6bd3ba3dddc03d9176b96bde21078a6f547d81383393c5be73a2b4a70c0990d34dd91429430984990df86045c0cc92a0b4d2080db5c4a2dfe43164351c419ffb05482d7a8c0fc170426970054f0d8e320f9af0dd7dd3a67a2f90ecadc31327159bf15b379bef01ef23da1fc69ee8b944ef82870a7222be179f18c6957c1ba2b44a0e00e5da83ba8fb4a7c8a389e02f8ff63aba84854e2e50fdc95d9c45a7a6b44b86dde4a97936e32a277374cd3eee970a1fdfc5cd0c91cace306d882d670d84a59325a246757e5669e5ac3172919b5b61a883be73e4b9c1d79e85594b2e3dcd14a1e40f05efa084d4abba3a70980a7fbb76e5151ad582ab239327af07fe1f7fb102d1ccc926f835caa3d63dccddec199c7f5f42383abffb9ed40839537ef4563757468c0db3ee6bce614929ea4bda98c417eeac0eb4dbfa1822a106f456ac4b27080f9e33b72b845c8d10ae4d7e711f5f6eb6847a6af0bc99fe2de971b6bfd13a3f239212ec893f8edaa8444a07578ab9fb427d7a73530a313a6ccaaa6da164dc2c41fdec0eb767a8fb4355b5cc4552951a3558d88ad89505509afbf6df81baa3b6db7ff5e834909a6f80e0bc84513c8fe396199fa843205682f781741440499751289592a73860429cc18539062d2b91f03afe18640b892b9193f1cf5c4b0109c7df89518c56d71a4a80dc1affa9f8c0b84c0735e069d68fca5a4ed9b2c8c9c2e4a1e3d10d3f593c149c60bae24ac10f2433ee94b96fa76b7dc4360a3785b6c84f4e21af684bb460513ef0575948acfeb2f49b5645c3284c893f53f3f632f398f8f2721c20bd3e0ff6f2193aa57f85722077bbc55164353d965592891186467a1fcb3f05833f6cc307a168cef2e08e1555adab383d19ccb8d33014ebbd4cbb1ff19d8779eecb1bfc617e03551d442f26c414e16601c71b649dfc8a4c6399adc2b669c88c8dbbe5836acee78f677f158d396743852b1df91827c606b8010b3b1d4f28042e03f83fccbb4323a347b1a8aa2cef3d69a4c968002f621f3ef84d0243dc4f7aca64b14ab4fb70b0a3776527bc834a2f4ad6bd15f37f373e556107bac46d79d548c60bf73c77478a6b051ea7f6f39548cb8a03865779b1a9467003febd83e09b209ba8877b044f1a14392074ed797cfc4d2b7fc0b4f14dd38a412a84ccd919fd375b0abf3252051d1cf0433fde01cf8570b7f0d1a30e724dbfdea133da6ff2f7aab50a930f476caccf6271d7e1e97c9e64d48a2b0b415d5f5aa42ce90c58143d34564ba180bd2aa76cd5f17b4aebe9d59510a0c46df4e82aea90fbb1bf712c2f98953055ff47b6f09ff8fd48efeaecd8440d7d63747a2662a3b4b9392f4c24ae49cb7f9382988916ce6b6a6995593b6c5f12c72bb6ee3b9178cfef49f3cdbcc6731fafabccf3249e58bd5ab3fde0a56bd12fe92df6ec1b377cf1f1dc6efffe6d134f5a7780720b3e6b126b69ab603990718a5a9e2dd7b141573268217ac22ae94fb634151d176bedd19871ae3cb9759d4ae08e3441d0b49158cdeca19c7de382fe194e45d6c73bdbb48237d09b024403898febd3be065d2e7c422152a2a3e5d6eb7f677c2df63e1188b6fc28c608e2ce69eb900c4d0c2698cf9d0bde5e7c18b60f3a2234b5d310a65ac098fa9f0b936e87dddfc62bde02ea5b84a038118edeb0cfafd4a8536d60434ff3cd20171b78cd92acaf557e6d8a3623cca95dccb2fb84fd4c6733daed910f04a4a7568e4ab7d3cd3921a9325f3471d405b9c2a96c4bba6a01172c42a8fb966cdc0c2311006427050c39317ada11e2c3cba8a9c56782c792dcba7ebb9dee5c3a9036cc44783a99c246c788cbf39ba1784146f9c0583bb9eeb1035861d2c21684589d4df70880070c0c162da9272d1cc5940c91b4cf124565a884d5e591614bcdcf1b4811b9730b8c6122d6846315da97178b7529dc31ef33fb5391f57637e3a45551e2a3c912b96e93b3bcf01894356b650db34594e3d1947b7c29c534de4473a26564567337ba71cfb39267598c30f79cee3cd461937a6216ffa73efc6830ce43081bad8057fa8bb73d627319eca678c5a3dac8b717aba32f0efda1dbfba8ce4ba131d9a2183e718b6d182e525fc37a67d9d09b87870116d24f434c132e046c5d759791926fadf2eb6c3d1a15dd92364c2c57323e5981a892c645f421b9842b8ad212d87347dc495346088adae0caa8b68b14a0c36af30554f0d1743208aa5b0dfb3743d1a9a29a0138c9846c3f4a65d7a93c24dea5cc51a4a7e458c0fc71ad21e8498b39851580f5fbac3fb499e93795909e5c5785d5989fe971b8bd4bac8cfc4f1a3f7007242add32542c6c82b69f07d82dd896c330564270d83f6440b6b843799ae08a4b9da4721c6ce18ec1c9a9ce6dc7dd4f5930076e25d48d8f971473fb017e3823536aa7a68feeedb372eefa3354827d0073b70d9fa7752e9f24104f6079c961485a77c084db59e1d252a84c19817977b52359f7492bf73dd1fa99aefc9ec015189d6c15a38daabd4010a1f0d9d2a5fc95bf1b56562423f89747150726798446413cf157238c2a6c04f041e49ed7579f8ab254cc3302e83ffaf8ed1ceab29c39400e48a2cb3334f752c7f11e9f7f21b8b8f16a71833aeb49f9e4be416e22718282acc7c5be0b29abfa95a16fcdf9c18df2fedd35c083a11f3a3b54d42b37b4c9f08c43e4fd37ecee985a5f7e5096a62a7d11d491e8c8d11d2dd0d412f696275e185a8230da5e87beea5b01f006ac43f249df595a92f53f21f8952a936d37b2fab287d323b217bfc05ab4e3f1e08cab35553fe41f838f26126d6636bb1c053a0e431b8fe94c604d4e83308f9ab27c0eef9184523f0375c90af4bc3de7a4ebd317ca02a7c6864e7b556774e752c336b2dca3dcbab7c7010a672223a5fe0d1acd78c20abbc8ba627914da0b90e0c34271fb921ae345179a2edc925cc5d05132216b4838f87232d04f151259e31f7aead8dd273b7b45e0f7c60f6bda5fcd34667b37b8e8f6530b5a4b34c56433d73bcbcffbf00ecda3371bfe75f10a46543d7bd98a41184b290a046eae6cfb8a8783bbe42a4710f153a3d063b855ee6973e25a09f822141256b4867dbf45b9f8268bad73b7d18dfcdb2f2c7aa547b94184f9df2491c9100175e6feb634393d13c6e54d754160ec0bf21ea3bf84900da219e2689c59e8da93f3a44ecfc4c16d05115bc47dd1b6689183d569edb713347a34c7fa1bf71180f9792f13c13ebeca3782938240aae6ce6206213d49d34612e4fc5aa7d6c2e0de7590256495d74e10413f8957ff639227279313ccd763338a6cf35e771f9bf9d8c97c7539e6910dfec3d620c0e27ac0db971ddcb6c0e17559ea25f72379ce1b3f85444681143cd3609e16eace08ccb6c9a0c419e324a07bb0207144487007729832028dc6fcb482b44a0ebfffdafbf49076d4889146da499d5a6d894f0702402cd462a972bd45d59eb3818e2c374a398d9e80eb068ebf8f89b0fdb206b3621ae1ba33c5183e923f50e9acc8217023716f5a0f1c670c04e6c020fc74a9bdcc2850a03717120dff8fdc2e0330ce400e975ea057d94c30ff814a2c5278ce9e79d960f4c11edf6d2caf8740941bf54f02a3648648fadd18928450d66e1e7b78fa7060f763b724b42007bd5e2bc2a156ccf0140098b87d0fd7c21c865be90e298e407a40a7fe34c35f00e16d71d6ae45649d5305f04d65d6c6643c0062d46cb5b88225bcc0472376ff0dcbb4f4e4d8bfc51ee5727982e1c600dc75ea35b98294e34254f119be0311e9da4217ccd144a76def07892716181e1bdf1a67c4f215f4e7c1b33ae16123393a3abe3edf22aefd9da85c2eb0aea04abfb5a79391511b5113e05c0019f73ad5efaf53fddf37c82b5da4219f26b5d9de5b57cb87caf3b3c9a24004595682782a8be814d37613ae65b748b023280a0cfc6eada41131d58533c9a1faea02daa0872c09c75b8deaca013a8412c4bef949a2d1104ae229557a7f6f722827b61d6ce6375e962b71abcff9debe8c3c972288abd67c639d186f52ae66e09197e7970a81a3750863020f4fd5e4561f1c548612738ce11a76d5b59a0220d1a8b53edaa14374b744ca333061b105404ad92180e254d43f3c8a0ba5c29e8b0097f9faa56b78f86bef00baa2806fb7082bc984840ae536bed85c69d69e6464c2f575a1c5665ab58489c3a8fb614f7a630fc9b718ec70f12dd21f514fcab2c68038760e4a94ff75f94c53e61b498d727ce1228fd3f6208f0874c24074fa2ac2122ac1110c11a05029c0a7f41ed112093e1b5e3fddd79fb9756125d9b9e0863460e89db052618056b8573a83ed75a0fb656c79d5aef50e6d95e90fa134d7f5b0433c6268f77308108b68f9a8238f110880f79605522ee13a6d620b3e2d8e72dce3e71922966b0060b37a7fa1c17d333b90845b56d42b30630eab219f8616acfd7155a0433746d0707f047ea6d8b264f07ba14a06832c6258cda633cd0d13cd1fa011be47ba3af6ec73f94419c178689b605bb8dd4edcbaeb9df35ecfdb524b3ab1059fae3b007fac7de8f7ca7bdbacfde6bd360a4e08ddd651e65ebf7dd47e05a234e6d9fc8814d13a1cd721e2e484b240843fa95ddb1380f95e025ebbebae5b303b02a4570ddcb5ba3c13b02625c9007741c67607104ed277a899b774ac4a0ff30355d546ae84d5eb335f8973fa2ac429b46cd5023480896005d5a29c027de7c3f460a483a83a3eabf6b0840087cea1a5fdbcbf6748cbfab55f1a9c83281c6211c437af4c067f638ed45869ff2b2a78fcf4c6dc5ac3f5765dd5a4203747910820269fbc4a72a3eed857443070da550b11213c49916591126ce62cae46638a02f30013e74433fa28df6b8fe88b484d6217fdec16f0a1a6c473376aaebdd25bc5a210eff401e57bd9725f34903a5073a8a71fa1f5a31149355ab81a7a6d9fd2b860fe5be491fe1fd379c7494a081e0bab02bafd0694f907f4863ae788b9d858fbd2fd5a875246942f6d4813cbe57cd7d4c829fd2a51ac926d07751abd61d2924ed05aa5e14e80a2f250732c38f3b50064c0811daf24f2fcf4195ccdda467e639163d1fb791cdfdbd31505bbbee95da5363a288d70b5ceb53c14c7dfbf8fc544702304efc14d0d15af117030f5f7eccac31d65107bf9bff138421d5c30f1c41a1d0281cb9d029d90688c3d8921a80f1ff533fa2965a912a2f695d2ece2b4b60e8770c4b210179264e8d0754bff27fae9d67d7670d705aa6aba2755969687e3a013118398dae43784d446b9ad8c9efcd5a63b7244e75ea2a19786a4f28263772e48e0aec60a39d8407801187a120bc1dad938d302e3bbcfe9549398c2bd1f6c3c8510810435788b84373590c32083555b760c0996f2274ea1ef32e2c36b18c37a8962c62444f7c67c0c2167264e903e34d608acf747017b481ccf2c252b7798d9e471a8339dba17a9a96dd1d0cdf5c8b3a71619f576c84c07d53e4b8e279b5546fde24f60bc645b5fb52925ae3d2e18053141b5def2c75bee41ec44920273b539d3e338ae696216af0828b1d841033e9d938d8b281f7ecf4df2789ac3cb6cc6206f72599d5ddabc027a023fcf9917154ca6fc2ffb6ce172dd2acae5fed737d30ab321faa29e1ade06cb2f88edb5429d8716fd53a7699388397beda81090733ab8219356b54b7797f91aeda1aaef0b94f0ede862f4dbee95b8daac8da19d05bea95f60fc213c33a1d59df57a6f398188f346122015b82734b1e4394411306da56702700e49ca68040e87c49dde1445697124510e120d3529c5b35fbc43ee5e898328f394b84f52cf6115395acc5125d556fff3b34d673e3f82b98e68eb091a6ba668d39a304b7798389daf588fe2f4a28dd2b40f734f2ad0d5a03fbcd6174345fce22392fd19f2cd4c62159e4be946798327bdbb3bbdbb06a0c7e2f02724580736b8936b3395c7864fced19e2306b9b59ac18a92d5456c45c584f600b13ff09f8c59d3e8faa7f29eab6e43817953328ee8121c39e01e8072a72e8c706bfa510b329273d9aa1219bc5e5a24cc5bea482c1b3d3d2d5fc7dc4fd0e360c4dfda13aa5a6f4219fe58f9c74e120337b172e70974c7c6deddb3a6cff706a9f25944860f3b9a0391b2d4907deecf3f74f0731a06850bd1d2a2a1ca5d6f7ddf44795cf5868963c1ee95ceaba7123bfaef21b4448479c3d0aed5c5e401584cfdb6fce9a0803b420265e06ab05a7cb5c24c72f5665204f1a5a6cd70fa73e33300b93f3ae54f31ed61f18f4afefb0d778316fc5ff6853fca5c2732d858c84c50379ea240bdb8ddd02360fd0d59efcf338ffc2b7e35189376c8b4cca684c2c59a766cc28b36c4b078639f97541e6e0125ec32b82318ceb53d12f6b7912db8bd6c50deecfb338883b1b136953df47c4fe6dda53d22a6a5b826f66fba5d51c70498e2bdb60e5d9bb28b629278e157a40c5bd151dc2ee80e51ba0c2d03a01e06b55201a43520c5863c0b5067f34e790465b28df5be05bbde734dc02d34733deacf1108640240aca469c722a5f21228a7c001e11e00d78e4c397b8a3be51f0e128589deff09c3dbee1a30512d8bdab45805f5730ee2ab25249581164fe9e9b00370eac582aba51c5440ee72430de62a6578afe0755def3dd25c62a4cbfe610c14672ae6d6a305a7c06470e1296c7a84e07e8c3a5e5de1d315e9248fcaf093f85943de3d6796561ad076000141964dfda699856aaea494036d6a62e9c1158568eb302d77abb9f4864bf0748218567b6f8897c3705f78259c8b16c6b0596f088800366bd2f22ffe957ee352d1bacabcc269f8c9f186a5ca677229f66d4c9d8c5403221a988305b3ec8cbbe1c0e85c322afee4e0bdeeca00ad4e2e15d6afd158b9659d73843cbd82501050b6d0ed9f758f047c43af1c0c461aa3df3382b10d5b52e0ec8b91eb78ee522561bc51816c5674ccea07b0c5ff59faf2853f32ce511c91b6a923f55bad8a5eef6e8112f722260bd8451d1479071ff8b833747d726807637142db1d67283e6c8cd88560b24a12d450f5e4639c031852ef98613e14c348b99ee20a8ae3374b77858289d18f77d3a6faa1cb73f981535b7b471dd8cd3ec7fad96afa882b99e79699f827a1deff7df7371e54e53f6b5e3b34c9fe3bb3d191bcd8d7e70a55b76c5c7dbf8443cc62b47059b3a81c2d8dbdf4eb232fab4c1bf5dff0393326b0f1ad09ce5ff1b32c5724863952e926c5b3efedb9bf4323615a9c18f41f0bc10118c209071f19c210631c2ee8625e687ad4cefaea67920621b37979bba948426b4b3cf002c7edf250ec83a705c201d6fd246cb293b689e908a4d5da6b7d08e0e9ef8e1db5d5743141be88f4a26feef78717d97fbe2abcc409602a5cc0842ebc974521270c4ace63bc65a3d412e8ffe0f226212944136b4df7ae5e40e467f5e4b776da06e67f3812c1eed539c8c28b71a72d15c37001f5a0194248246e95e01e34655a242f6bd4133902502a38bf2b1fc42b91ce191a0c4343054cd003f6e286fb79c6258a3ecab08102d70857c7d0926667e5f5d11afd8c731c5fdbc6c6ef7c3dd63f89faeb23d1b13333b277f059bb142c25f203eadb61359323fd49af9052253444b998bcba709fb7cc281f323b83c8ddf8491a27b894df59929b537dfcd50970de43122aef227d1094c956181a83ca42d9069e5d2e4e041fc8b7178880e7bf882541ecd59931b9d519e2886a927f7e31d84ad41931904b260312ca3e1415acfdb676322a42406c0e2da8988236a21589611da66c316164ffc31c474f804bcf0fc5fd9b4395500c100373c690dad73bf2d0b68182c99dfe9650a5728da15bf7f2dab52ad5097147ed604fbebe9a3305262213bab9a9757e62621a637d251245e549eafbfbab00c0b21e89eed4e1713a4410d2b6ac33581cba457954219a33c260a8ce3645350211e35981d4fa04e6972078e4d7c4eef30268639dc809b5daba8c47b0fb9edd505ee73567a586edc1af7dad20abc3387ce4f7c801999f4523cb8fb921902f8173e252b1863b50f7a6fb4355ee833be5da74f6bffeae29e5af42c064c61db251919aa723e184a103a7eec415e8e2805550cc93fe0e51d67efdddebd6f7c66abea1f05b00404f571f48ac63a24d3b0acb468bf18bad643e411fb42a8d28d9e8c9a27b93dde916bec0bb70acef65a359cfb589fc605dc4c585709121919f1cae708348027a553826791a2e0e96bbc020781ad0257796865fd837e52dca03f5c50930088ce3d1459f01d1a4d5960fa9ed3df1bad7c773bd5fef6049329446c64e7b70f83c43010464e18aaf47fffba4ca12272f4089137ce54732554d8f3900ee3023c07a85f1f56ea4cb75dbd9d693ec6bc4625bbd29bf64bb7619cfbbb07b165c93f80b090ce500192eb1ae170972edde1be6c85e28a4f7f3898069025229d88950725909f7926d12045222225e1ae9c3cd06d091ce6ce2c843f790caadf5b16220b4c5809d0886b55aaf0b90c5e2bc2aa1aa759b6c7650af6280a06f4eb8a7986034748db3baaf5b3ffe043eb8188ac8ec8f630862d1141cae2fc58d70b4241de3b1d951f6cca3472e23858cffd923e37ca89a2f0f7e30298b008fcb0e2d2a6cc33caaa2082fabae2a323b353130dfd9bfc234cf7010c7519b32a33244d0f632f1315fbcf770c4f3976b3cdeacebd1599652d76785ee8bb2e23bd441f2a49cbff377a2fe6dee9aac20e5e55ca3ac022a5c40faa15f5fed076bc88cd35a1eb5414107b276dab78d7059e26f1fb1c95b59bc855c5d642ddcff6853a33c841ef43f73f1643fa15186666b7d5fbb6bd4ed59df3ed0c2a896316cb4a491722763f62280bf2e5539b734d70303b047ba2aab7dd02f1ec68a84d2fa90ad588bf31fd981a3d100a8d97c3d42d5b2a33e58ca9371e229a81bc6aa958d8c482e9ae08e5829405e2652225a077b2bbbeccc4cfe85ef7b3d41f3f88189838aa82a170731135ea1009b7abd751e24881e8774b535fb054210dff0f01a73a5a21bcb907873b073a2d84258c136ddf37735df5252333d1512fa3208eac2e33795898334ad47818f8074fbe8b99b2d6d90810f9f1ee610a083d59bcdd79d52b7e8d70421dcf7842811c00fc9f43fd906e51e5cc6fe9aa85ae44487cc840f9edf9f6b28041f187b0780927e39f63f73ffcc50a512d111f36d5c0696e885ac1fa331f54f7a990e20db314593b61e03f57e7da2cd6d098bcafa6afb4efe281c5d4069300ad89268ce3fb10ab03bad5d0fc33ee56014f8df7902400d6f3a998d6d3e3ead6e7de8ba313ad125db6825d564c7f00491cd705bdf01fd7ab064bd219b80febd4bfea48dd3adc126dfe78be6a593bfe9ffd1ec3a3d0d88bdaad7ff976d8dbd0358cb3927ee44305a7033ef9ea066973b34b6738aba0c457fbc8e99ce31a9cfcff26f099b34f2e380c7d353adcb1e416a39f6bbeccd28c3e7dc8a7f1c94100f69aa5c92f66265813daaf33be5bfa42f14d4c0296f92c38790eb16dda5b2cd73b8a744d2843a5a63994f28b6d8ce0b9f3ce2c40432a665976f2691a7e6c9e20972d916011b4b7a528edb0272dd6e6550227ff94fa390d8fabc25161ff56f4c088315371b5146ff502e5be2178d499579e01c2ce44358ee169d3247b86d53a57c81d939efa25ca9b1259f974e503b06481e14fefe7013fef222e1348173d9fd55a24012c9d5d6610226c8169d53b0d93e30e21d03691a6901cf695b19739f124a81e3d559f2d8cb50d2df7d31c7fa5a6c1d06314d6807623192d53c3a112a7f7ef4bad5103e91243371ae2adf0f6c7f228201fec78a4a85ed2750ec96daf63a8f8a9df69e68d986013dac0c5aa42e5491064e0a535f7f7e49b514c2fd6d00c22324c4c748c1f62d406076fabe61b68972be3486868d5aca678239caa8a735ccdc388e46c19f27ea5198f0401b46bca86b42f90d0cc6be5a0b8035d3e4b6d61c26577b6bf8816bc4d2af8be2d8e1509c014ac055a9e1db0baca19ba05af3d29401da23c357ed5ad53017456c6953b4ec450a3a09d4d66f87652234785dd19d3635541fb51460602683ea765405472026aa4899771ef8b767d58bf728b866bcae48e94b8e6852ac3141bb3779ce71b565edf3b976442bdf8e7107abe859528d9bd2f37080b92f0ae27052b556345222373406972f4aab921c059ed81217b80fe3a50570a750e1d36b004f56e3076913df5cc1b05c7a409f290badaf280e8d0a9705e2c5e4f2050309f00bcfff82d7aa88158fbf96f840265d974d22076e97effb9334f6cb1d399d7959ecf0331bf2d2ecb7411221e97a59c4487d1dbeb2e07513ce5b30676f3e17b7139df1ccc61c87278fe74b304650f493929353f856124ae3493bd638a809717801a47fa2142a66eadc8ba74f90333df220570d9709b582360e69a0ac29bf3283c0ba1ec60186477e28657af159198e97efc5c59584ad909d70b303cccc98170a8299b3a671d6cce17e035cd9ed2da3fd90b04ea8bb0b08b651afe630b87b1c0a5361c0d3ecb721a8540b322e584eb04aa1a79a72bec68945855ab5b98dd3ec66c0484f0f366cc3fadf450dfa4a3982a02d8e54370e0dcec6921419eacb988aac6008eeda5b3da78590a15a55949c7bac569ab455955527d3f475489fa8b8a77b826f6bd62385d75dc267867bfd33e25468f2640539eecdf3df798e54a9ae656c61f9eaef031ff5e494541c38faf6973928c0e4afd40fb6382eec61cc1536c1c2295d1921110cffef583d65f323f8dd5072a7d3060f47dd4428a39472587edbc443f3d16dec3689e7936a5d67d28aa643da5e1749cf78ce249448f2af160e378a486110920385e1f23ac6253e5bcafe4bae58bed19d2cf8eab417f1e44e9294ce50633c2151a11e8e21a3d863471d0c09b761a0a99ce6e6c955c849bfe870833008e337b0a0e5cea8f35fb254e8483287b02b59bb19bf7cbce46ea0964755767e821ccfab0a55468b59ac8ec4811e38599ed5be11f6fbf3e98dc332094d0de85288adfbfb91bb5d5047d788496874e05bca6c759debe65410d66319c2ea78eb2ce0b3332e71f4e445e50ee6066a6e0dae2b83fb8ccd595ef2bb38cd3a9caa0b656a5332a2a0bac9862c4ce5af96b06d053f77c11eabfa699e7e394a17a90aa4857b8398dd9f5bd4e82537d32e4cf5063142e129eaf05f62c5f3f02c7004a151112b628fd215ade3bb9d37e01bf4c07a22159caa0a7f17f48318dbaa85a08b19944386bf12e61fe75f4060db38513c8a1ad35e8d5aaf36d2425e44aea339fe670e90d0765656389c13751da4fad8618cc6b3bff7a25c96f157a09261f784b06b40995239d1449619b3a1e7097edc771116d0e815e866aeeec19a0a0d72c4cfe261e0cae3fb33200ccd564227394dac1211cedf47b618f625fc35b50f608b12bf5c00014e8618d60342ff791e7a1b1d90b66a61a83be21a6bdcc62195ba0d260ddf9942f3b1fc5e5c6d75a1bcee91737aa34d649ffbdd5814acbcdfbf6bef72b4657a755c9dfda3ea51031c66834c47e981bbff4a733c26befac02d16af4bf9b9e162a0b1ebc8b991604fdea38f437feb8ed7f45cce7039e14058bd4b7e887dd81d20ffa726afa9c650d9eea838a5054a3a4027f0579914b1e55ab7ca0741ba36c202f000000009375efe3ffc03f7a2f5b891a08e61a37c759c36781c908ee93b9bfab3600e71865b097b7e90695d8a9922a80062e93869b7ec9a02ad13e69852060d1ce098f27ebbac326c2c96d3074faa2fec849435a147817ab9843353636c7cacf59f9281c6ae6b84a772b71b4ee321f2ffa62f130a26541e69d21a1a50c980a4c728a2d320000000000000000007747e5a62c4fa5c934e802d36882478592d959745642a9c6ef996d83fbd1fa3c42c2ab2859039181b018ede264a22dcb235443affb4b97104aa30729a9a7c81e00", + "040000006dd66d19a570a9a09090141659bf85ed886b6da9ea095a5315e30b965fb25bab3a71c489ea21f05dc844fe6813f1bb446f36277ef9030658417ffc603e8ce6dcdacd52948027a582b3c11b4707f476f942b34ff77ef463b2a72a400cf6a8092b0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000300000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102b7992fddadb55c00f642afa2e0c108118f2e2f94dc2c4f2bebe1d32b5b1c2ab4b244b4b3df611a0724aab53785f794d8bc64510bfda2f554621dd46dd22f9012be91bbba3cbca3cfff712c0c7e26df09557457feccbe1d7ff04d1c3e1a20788bd16e44f93615a28626a3d374916e9dda8fe91c533b740d66ae3398151747461930135e6f46f41125b43604b053b980ae8733874fe5305bff8bad01a239029a029d5c79bd72da02aa3cd37591a96822de380f683b66128c829ac502bf639532ba0cf34ea6b92c7e041bc1f460843f6d0aa74a5294c4b6c584be803a6eec92ef0edb6844ecad8b86bce8797c87ff25fa47e194c1c38ee90888de859560c9ac2fe7af33e9dc341dc6c03ff1e54988167339a1ccb1c8b401c1b9326030d651bf4732f5940601cbd940d7145189c705493089d7684dff0ac9624c1bbf55ff787e010943b8fb39394bcb93354ef7ce6ed0e14a63efef0bec1ae3df52f41e0bf18b4ec5e79d7ddc3a32d8124598730f89ff0256f132821592405dabaa160fd5284e0cb77a3ce5766f8e4198b4310b3f8d0e47017378930342f716e363a8221e5fc10f4b663c364fca124ed20fcfe73bde2e02e5beb01e656ef5c3d13e98cad3748d5aa96e9b964a06d632d54d3c6aa527b093166f51f29b35c8a1e1d9ecbe7f118026033f25e61ba46235739723b632472ce168edd09c66ecb97f5595b4602a865d409baefdf77df8437f199ca45b22add29612f56844b18350963140806a32de9bdbaa6ce52e8b6da09d755b09628842b227480f5cb5e52c83e1399bdd624a19c15273978cf4e0e1c063ab8520dac513e3c8814d8aaec147cf775834777bc68355881c7336508a2b0fef1f312e59ad3e02aec19fa5e1ba07a3bca1049545fc0189789466270e834af01e277b2488f9640be9f26a7fbbd18b03cf4a11ceea41bd365511f66cb0b61ecdfb2d3d099ea06563eef014a19281175833b2e00503f3adba052b43e2c45bd160e0e89ddf7982e377065efe6c487e29b833fb53acd21cd3156c2e87106de07bbc7b4949e4907ffbf6babf6ac464e951b12d55e48f71dbcf6b80304bc5bbf59180011f6253daaccac7feb6971a9ff4c58561d6f9561abcfedf570a28f90d4a49fcf0de166d6bfdbeb920f5f4301655157910b4df161fa32adc762bb806516789baee9e3d5cb5c44a6e647530f74679fed58124f31fd30f13cb33ee14cfc4c7ac4a127176b11d45593badea2c24598eadfc7cdce6b0fd6d9c23c3002ed15aee7e463d7ecae5a795bfd5d1abe623251450e3138682ca5d6d23b8566ad1f67e83ebe6e84093fd120492407f3febcc93004b0bdd7b3b4afb3954d910b9349153e4de70ea74fa57663d2ac61dec23448e16f4839e4a7bf1f2bc262feb543dc7a6263f78e0d67fd2b28cbb1f8df96c424ba480db129846293643d6d5f08b7a6cd4519b5ee2c7da7dbf08a6817515e6e87208db52bf5b5969eb5a28e158043a4ff1e1c7800516da01e4dcc30b9574bb3b289fc6b767122824e6be7416ce594de6d6c66e524b8639bf33f4299f3edf3fe683decaf51883676fd560be034ff83736bff61c0e6b9e99d69240dd4915043334ac27dbd466dfc661cf5f7d4ffa88a7d100e16427f0a0ba2066e655226503b393bcaa9c95099484c5de1fab7827fd8bf069ffbeabcfa8ca3e1adf7d199235374430adc1e471c8c340d217ee0a1749c71a35a875b133cf5b583e51bfd7234229ba6b4dd61cda129e2542e56da1d0176f00b4223c91269b4e572d98cfbb2617f3d658a578e28d8f72c9aebf367ca8ca4c4153184dbf72a2bf107f1de7ef5c603fe32cefd5506f0c899d5a5a2aeeeccb129d97072b629e1a8d52dbb9f1549f5d40970ab6c16530cbb4adca53b88b8fdcd179553f5cd2e923f516647ed20a2b4d1b43ab0bd6601c94bed909e24c3689b7dc05ca8547115c4364633120dd4e975a69d520a793951f7ac97eb6f9ec750fe6a33e975b7bf4abcd8492b7ecd9c35cf697183f8ae95428d2010d0bc658b5f93c71820da7982ab81cb8dc8bd39234f6cce6f82e0acc3f5637a69942d82832a1cf68cc73ddb4c0293603da8e3fa25f3def0cd5d86144d931eca435fd691078c81c0b3427e87cdb77ff9e962e6d83665c6a636179d5eeb775e888c797c2ce46be19fb1b1cd96492756a0ed541c1c1fc55656e034f4cfac59ec81afb3560b1e074adda5f568cb3fcf34668cc19b29d8db38111988748ced83c5e91cac5a513d06f357fce3ec5ab3fa20d6b0dade634adc49ad290b1a2f6b7576ffb7aaffcaa6cfe0c4fac4d8ecc3776e8684d2f0702db8b4190f097271cfea6eb53fdd8f65dc9624688ebeb230ad2f9b192dc9b59f5fa2fcefb12b82ef129724ef14ee327d8eee09a1d50be9ac3b24c7a07c8a6432c267858d1c30ceb2e22cc41300b6f806316ade9fd6ab7a5ca228cc813fde01cb05d795d6beeb5322e8884f717baf7b04a62d64b7477446ebbcf6a9a1c87be271b6292486a9e6e79fc69f930f0a1b200e547f63440353f8a3435df4d53b0a9bc50730f029905257b7e9297b518c7ec1f47701e65c584244062905ed09b36b010075e98e1842f8e8653389630d3d27316cab596af23825aa336804f36504972394d887d5db8315e375daf7e984bfdae651b391327a197e3c4c18170ae0d32e59ca6cb9ad320d6f19238cefca6998cd13716e937d665fc2f6de9de4cb5f55047b1856bcaa4826c16f88f39106d468cf491a53b58aace3679bb3ae9b286ac517f0a34848165566dd3d10abd9eee6f8f37bf7985f90b6a0a8939a14c91d4c5b2fc3e97e771c5b4d35a4439402c36d6fd479b44c8e396d895cae202a1bafb8987950e49a00eddbcab7eb12149558f20d451b570943bed1492dae6ec979e16f06f8e20117d9492289dffb34278445c8d265e880942e3eb563ef2bb893d4bfb14f08b970aa32fa2e6eaddac484fcb30f214248e20954e2d1fb76ded902593dad1a14fbd26cc364824e9f9b7ecd98e648ca0db693f7bbb8ec794ad3b21d7b58819297a15465d4217e533f20e58bb3e1f1cad864fd2973d7548d4db9d71a3941ebe2ff38248164ecd5f817a579545ff27bedcd568b7ff1e50be1df68a6de2dab50ff2f706a7513f0bc3f52341a58bfe86d404e236cee2a6f675d543f6612400a213dc8703d0095866c400c486dfcf23eabee4cd64ef027535cc55fe3595b22263afe34e102790458fa8b48f30e95a1fdfd6909b301cdfdb65377102b412f294243281509321b0dcdfb7a6fe0be8fc4278159dd8e5f6fd7db712ceb293980933661349c10d54795e3c9066c9239b28e15fb3961b651fcbb55cc308efb3e9485d2f128e2117c40c02e243cdc86a90d50cf333c0a23a80d7738df04b7caf900e0ea151b0442a399abfcb4a2743fb9dd834de55e40d29008b8ef9bb7be16256b270fc7b96ac327ba52bceb21249d326146aed0b4c34a43df4950bc994f34cdd9ca0f0b0659daf7eddf8663e98b4c16359ab48859fd3da0a03b7014ffda50def00da8909abfa319d4ee4e4fc03aea28bb8b8aea5216cbeae991c04b860bd9d741775fb536f741b773ab416668be3025985f749c28006c432271a0858715f0fa6f24bbc189e6eba3bc2ccb224ae55880d1b11ae02931addc441a3b4d921c02b068de93ca679a696a40817be3851ca7ed055ff1ecff3d0c2074428e7a7fcea993017beb11ae21d3393bf3989321a490ab6ba781130dfdb54e143e792be26e3d901e34cf5a496182411926085000105f41f1e052e4c1850aa6b6c41d8a6b3330f9b390b918886219fbe2aa46ff9be2d9435b34008ce3081b03cc090084d98c7c2be690322a0e453b6b4ca20727988a3b7270bda38bbbc599a161a1a18d90843a9ad62f9add01239a8b0e5d7448beff41dff8f58274c3dbd40c4aa1e02504c9db27a5107598f305c3f37a360edae83b6bba798cf31998e2767548272c3d79b20c2b099d10d78389d174ddb829eb41bb6671ff05be7acffeebe15277f6cdd509a9a7f930cbb0175a88db8910bed1a93ac419ea9d330c83de1bd388c5bbc9c4419de0cb71ff8bc349a9a5785d5f3b719675addc8576d84ef0f81970d0ac1d430c49ac548587f5c1b659f89c04841ee51b106d724274eb34ae695b75a20e3fb0b31159ef50db6104104b2265508edd6ac2ee4002119e07edfd4d59f986f1f2cd18c710b9fdfe7df731fb641151f5b97ea3be12238d926fd1d4f029055242b3a00649c53e10d2046d6c8a1da27072eac0cdbfe401e7adfd259eccfc370b1d105476d88185f90d652d73cb0351e1aca1be279436864461d72ce065a12b8b4111a9e9a2807a3c456065190805e347ad2be02989f4501ae04ca087f78868c4f61ee82215f736afe645b89a9243670a115d4047da90e78984ce51d9b08232a4f2baffc130914edf536704cff200b0ab735af88d695d485f909a9473b649d6730e48556352ff5f4a4b1b1e9c1264d313cdd2e151613df780074f636bb7d93bd1a25242757f6ec62574e5485c33977941706069960c1ac98fbabfce6833f73cc1326bcb9cfedf6247e8300206c94966b1173e83208e2a2966e23f6f69e082dc089e271dc97c788ed1af4acc401bcf04444577a40ccd2746f6d9247fc0636510ee08eb02d66055b29e58191c2860c30cd0c25fb1cd846d2b23a263631092481ff305579d51b3b6ebea6418d95eeaa06caa285f0cad889cd95413d8fd2a7c4a83049890cc9a19e53e7cadb339479be9a6ea3a952a0e7729e94cf614955da7d69e5ffccde173596ced68f0f641b13ab29776c3e9602c9bc8ef9dd3e3df7e76a9e585488f5b12071f15d644ea2ab1e01537667477834e4465038330db3620a4e3b405c52a9e72777b4ad6c458b68dc26ea4c835a86761902c0a114d833586c2c789cda6f64bd477fe743054b1f74b32311d335d89a19ebcccf8656d38afb484587fa5b8ba7e7b0676bf14c698c52da37c12b9150b4a811cd41afd4eaedc9006c3a67e3bc0b80d404c27c8da764284912cc607ae6df5bdb77e84d69bacb08046a03bb630553b686720649204b4759e20d7ff7fcb78278f960cf4f8327db115951fc188fb8fcc4b0f23c8b71c34e5f893d514ce1d6264fb4e5e4ec2c64474f3f3f31c3af8bb29077d6e9b9378d3218a62b9c60e8c79182a12a2b371c291efe4d5be10f5afa0055c0a1693c1a39a15f6d09769d727d984d9e609eb67f8aea4fd0f57bf4f394c370def2a682e3823b68623036518e18c029219516139d3a31ae6da8728df1754dc19ff83441b2ed6256de0892729ad486bdc8ca032b4baa873bb4190309890706b03d5089837e7200d788238242a8e90ec12ab7544a9a8352e1591238f695c4fb9be6eea975a6a914c3bd175180590c30399dfc6c966e0bed9055d1a77741b9e2d63b6b0ed8b832f7fae71313dc7a97c85d522bcc29cbd1397ddc8754d71c9a886c40e25db89e0b0d99a8238a17887e01917bfc21b9825f76ef1efdb111a27a24652e053dc65bf549496024ae64cabcc96525ddeba2431e1f3afcba3674e00503df89bef52942d75b3f8b16641d987f3df3a50ecb2886c65bce7dd616ba753a9bf63670631f611c726c270d2f4371b5c0eb8a2e4dd801594b127076deb60cf07456c21d43610c38220a8535595b40d99b465f109f0aad0f0d830eb6cda5df217c101c6224b9d989f201643a75b8348f9dd89e0a7f936860a102a152f06f23c10641c190cffd69e416b0f9293570344907b487626f8d136de457ef4368f86f2e29e66594672c3a6d574efb005585ed5e6ba07a07ad9132eab36bcf4ce71636eecf6212687c5db8adbb8a87028ee7fc2ed4060c4c0f314875dad322fd203948dafb1f3651047b5c4cd1aae60b0ba101ff5d5982a5821a830e320c04ce93c9d2d49b938c7d6c7f72fd1436893f5f3eada0fc6661231246e0f9e463d8355453e28356931237b3ced83dcf4e0324b6ab161ad627a0d682262bf6a133751901dc4a976d1e32b03b5f9c04ddf15e1f5ba9321f1668032607b852d63d7bd691a7fa24264893ba3b133a3ce896e922305151baae48dd0ea13211cb5f8e458efff80b9b0298727ca845874f77c3ed2a2ae8b03c677ecfb0646ea36725a3a73fca9d59d0b7c6fadee69949230ff56c3433a49694cda222f9894220b3bf1aa58414b5d26f0da41732953e63ebb819cee5075080aecab6a5bda102d69a0aa6012508592fda14b8806ee3af7f622fcc88273a0ecaf4fe3e0198c9802d8b0aa890350c1306b631e8918c806c4dd9cc5a8c3b27ee37aab256bc5b987b42d6baf27e0b20bfbfe7baa8c6f60f21625c985364622bb912b4915bd99602d38a0dee49b1d85981921f434d4486349514d40176dc552d702ac416107a18482e1f8c69938465eede8f0e64b8bce3f88e37fb8e6e3d0d2d8d36eec27aeed19352fd8c2282e6e5a092ed85a6dbafeb6921ca0421bee3891ffc5fdd78c97063f95ac5e87222ef351fe7e72bfdbcac1b3ab548f479eb81a225352e2cba3b7563dca92c71569b4c164a9719c79e3a165b31bcb6c8029460772a3a4451b56c69ce276c1c10cd38dc43e5cbd5c1c7590322a56a16927c2bd58b2627f7585960ba71827038027e21a8dc94f85b9013c25fd4b7652c9aac56ca1f177b54d345f2cf7e665df6b0fede0d80bfb19c4d81d19d53108316732eaa0c3f1b07ab989d980a0acaaa452d3fd35c539b492b1d0a45aa6408e1f0f9a2469f8b110e325dd0174434bd144b1d36178cf4a202a92d2e7af0b0c3520d41c9a7d56817eb5c3efd5f76c82bf40c92cc51580c90d66e389310c1800985eab1f28227f8314b478156ad4ebe36edd75837ca34c323d7bf6cba3d2fc139c324d9592df425352ab7f689bd72acbc7a9c55d1f8ef5ae99ee250dd60e71dc5c73d485c7e7578371520b0a143195e1d7b7cde82662d94e932b7b5e24f20b4c81da60aa5a639ae2f3f6683c28da261724fe19be2f5ea0f1b98a497fdb27d8710ef8ea26d7e8028263f21a3ef4a53eb942576a6df3ffde214e35a6320e2bee2be67779b7a71ef98257bd80f3552c31523735a25699b38c2270382e305cd659f4956b64808a8bc500367cc83971636b68de9edbdd585df27a9aa3a457a057a8dfb68f9f6dfdad3af2f52523cbb9bc9d7b7dec66ac1aa4016ac8bdaee7881cc04fe2e154ef41ad05531b1b678864165513786973735f1ed41d0ac18feadd76bf3bd3a1c99d9f91d9f1a8f50dd0d270f2505465268d1fc6f65f191e42501018db41958bfa6b2ff4c4131e1f665e63a24416ab4c29b92527d2e501a80572c5da3b0395886f2e44ed1ed3500b262063d1a92397274d9ba7dffa436d8008884d05adc356c8dd7e0a0085e33f9fcd54aef14da7cafb294d69f0f0b160b7ed433ee1ec0ea28730ea2fb386b0fbb4eac5dc989a1f011ee465f39a6edf3d0062cd3b74561fdb001a03650da5718b9c79fe938bf5f3ee9be39c499a1b9077584527855df47b755bf6702bf809e0fc77258c86a78a3081f674e16b000bddcabfcc7b7b6c853c6c79f3e815bfb010eeb89e67bb7a515b5bcb0c6e794d48ba519d3bb2bb010edab40c4e263493104017b08723d71e6c6ede10dbcf544d523b200ce7a93f560cfa0863e646b11d9ea1b1694b41627a9cc030ba83578f14c9dfd93539cd3eb78ef31a19876454c97ba00b644d943138a88623a6788f2b837ea58e3a57a236782d1b154a755792be81b085cd2a82a7b6004e54cd8065936e804d222ce0113b0e41de2f5baec9554d0c430cd318f624b67b90738186cd7fe470f0f205dc9fbcafac30d055587c253434c2028a0bb00c6874710b533e7ba241b1e68d922b9392ff6cc4a6dbf2a578c512e336c631006dd29345a98fe1a9b000a378b0877f374d15266d1e93eaaba06710f10cae21c4b53daebaa56a7060adfc7f461bee748e247ace01dbe8455eb7fc40d087ef716eeb16e49faa6bd8f8e766e16028b92c14c3101bf5b85143eff262fa3001bad28ea1dd3d586160a7c0111f44785244b0e5e95f30b301b5f02efe654f334d7b21318d00321ee9f3ad7a03966c86f2a8b1a96749abbc78e6445a718f9640a787da3680329f12ebd22caba507ff82f04f127d403ee84ed7c67361d14004e3b91940fee7c6518d367e15886d361b3f87981c5c6d78ba29876ca59eeaa0ceb2aab6fecde7cca013c6de29321132827946ba5c366fe70736ebd8eb15e60073c3c74b2993c50fb01c91e986da3c77f7223b240740b7d2950e77d9cebb9dcd7612a6e0a5b09eec7c9a4d699131f2e3f09ec54b9fc54ac2ba0f39c5f282bd4adc21458eb5fbb59a7cb71b6b22b83cf7195a304dab1cc448b13702999ee16955a0804f3066b713aff00f154a17e36e0789b38fcb1c55a06c61f99d414ae49050e743d290e27591f342f9e67dc38ceb7a23c5e6c151b6273824c2cce9bfe1bc2085637ff08c926762dc625e9cfd630e5fbdbf694ddfb9e8d36dfd431b747e9a4af0d1365aa1b7d0b6b999374b20cb512d0fba944a23075fde944bcb1448887bc6ba60ed3bd1ef75e569587ff41d7fa8d613e443a117ee773eeb2673f92d5d735671c0e34c2bd1ba37d9911261212900343f0938e952752545d1736ec813c785354200d268cbac35f36e1e0ce179e33a55cd5e345ea0a64ae88548dfa8b9e7cbc27be022e067edc6ad8ea2ec88c8305024141109a90b0c746bc98ddda09570ba0ebd40b0a60a33b6da4a1bddaa406e1421a91c1abf19ac8e57e0cd0340a047d6725cb35a561576815c131222191f6c643ea3f51a328a3c12337d9a2aa8ef57911874a24579293d6c18d177f7c64c7d7b2ec65690ffa91ec9a099528c136ff25b7291a01db462c937997dd115e27ab4b5f2337bcc085de53567e390cea2ed9ba8ef01a15fa08e7ef249dec092d984ee68d6f03a17ef3cb789fdb8bb273932cdd62ec93187eda3eba1e9d33b371b95fefbb6d494517cac08e634b29f1bb7781214960f306390f03818522b5aeccf8290654301865e69d4cf6559b554075ed341899f4c90be5e2cfca01c7fb8d56f9e6c4bf57f215a04f351527d3eee88e9d12e0724a82230b0d9550590720af54abb4e0111bdbd3354c0c526ef8efc386474d8f9853be053790fa4bea6b1d4dd804e7e13d93e04e772c112884cbf2cc73b6a5349732ad1f8e3f4402549670d06912e0f9f4f02668704ada12cf3bec957318afd51c4715222687c88fe737a82c67d4d48ef2f2f1bebfcc17a2ab70795736769eb04cb16d1f6ebac85c57e1f2aa91346be53aaf3d2c34f590dea5b2e067748dc53173524c104b6e3071a16591d32f07c598c991bc00f44ec93dcb3fd59b2c7224cd387e432c2d1b1eda234a05e01b9c42c84254ff4389b405f82c655c693215bccabef46a1fdbfd85709b4e98b561a5dee7170da6e345932bdb2689e57f9f9b925a590a0a1ce742159c14a9f5a4c20b6340e6197587ddbedffdacd3756103440d3ac6c82c287cefb34be3e4bedc29b734e16dfab12ae0d96ebd229a495b47955f80fde1273a7a70fd57deff1958bce7c25c59b049413f1cd077cb6cfc0effb8744841ccc13b2f8977cd602901f10a35b2b0eb5ceaa24ca68c09eba3e7fcec5c4a364bdc85185abf47df15666a445fa7bf7433d5faa2ffc28e5f995d9fb82a16115712781c0733d1b2ad9c7705eb3ec2bb76d406024a297298858ee59812e5f6697fa50d97361a87f8da6124a2b6e0f04670725c2dc20bc5a453f46c0d15ba5064fe075c3b3de4ad09fe213307acf959bc2d1398ed946318ebf055a5abcd457ddc2c72c8e737468b73b9d93739ec2451a7ebf1afe6ce00b950cec1a7ded63d8a30b3bc42ea354ffcf4272e1cc0e43574724addecc7b2775a46eb99ff91b5e4f9ff5aea409825721e2a7c6bd7e822ea54ecb4005f72e1f5ea29f2329035b1ac814970faadde399bbe607d2c8da472fbc9f42e916a0a26b79d9ea858a862fe65ea969f39f66227ba64a6307f786681e6972b6a7fa9e3256c0c08123bd7b8c8ced79472975c7e3c7d98fe4439a34ca2f93ca85effc7d0a6644c0e39a543b6cfe871265692b2272ac1194d9fdc80ce541c44dc57de6cb4cc5afd37972a261391e868652b5ffbf52f99efa3607bfea95e6ede914c54586bf77f99b419b7782fb1dd1eef164ac699395b0feef00d92ef213f3dcf9c38b6f7dc09f80a3d7311922cc0fc0432605abf15f0aa145fcae7c7de272b395d3a683b3d62a3385508cb2326ee61e017b53bfe01f977ccf5fce4113ee39b4d806bba3eecb99cd85ba638fc5c4207a4c81ad9751ec0196eee6bbd2edcefa1b7310adb602c30d0985044bae58d36a7fb9da673972a3fde781af2dd672fd221234d1d01159bc1b4fb3e7d98051116c3e108fd84bf0dbd836191bf917739e45aed7d150dd267a87fd080f411ebdb252cfdfab676f93e5f44b8b57aa9716501daa048d65c475864f0a4f4258a8718e1d317ea3ed24f02e173b53e67d115417a41913cf6843809ee6e8e6f2f36df6fc8d7a111ce1ea01615b0b6ec7d9185e8721458123694a0067ad62e5451fe5c78f33448ef63c75428c454445ecd3264fffaab594d457162495fb8d7722b8849ed3a2a28331c9e2d3c253b4cebad3329a592ac75676f06eb5aa2704968e925ddc936abf81cf5456502271915a7784d6eec4d72089316689ef36159c4dab9b6ef7e7d82a32fe6d0e70869d0e6017d26041cfbb23f08c7e6322b279c82817dca03a9fbf00ef3c7984c399ba3536d451b87dc11437dd7ca9f3cadbccdec63b752fc8de35b7d62874a6f18b462bda2dcfe7e6f670a88cb5bf43c0a82080dc3ab5b071f3d61ecbbbd2c7a2314a3de855739b78db97e8449359c1626204bf45d0482d2a791d467bf2378833e3ef13eee0bbd7a7b609aec5814411c60296e9a0745f5f1f7da93184803dbee3aa88c31d12ca3bf445dacdf1d422c9e22196d428ee7fbba43392626bede80ba2de1314416aa5ed8fa074fb725aaf78cda07b618294d1c3fca6c055adba85bbc2c9c0b9dbbde1868225d0f9f0f3567512162bfa757b5ab0e232335c2d3dc11030c59fcbcd468d70456c86057ff1d4eced00e7d1df175d8e4051bbda9ae259fa326b65443dd2bed7dde4ab096fe1553a393ba22f6b62d4486e831d38c5483d86d349b3722bd0e00bc4e2a2f767afe362713d95a45d410ac5137fc7a5462f7a75135b5e0b94fbe88f17f53459a56e64a170348f5915e1240a7b9f09637a6fddb5b2fb618761962788de525373fb1593fe584328a296de89daa5206bf17b841902d1215304283cf213d4341bb20bac2941f5709a2a8d0efc330eb8fb1e704686ca21770ac1b4fde9f4302f63bc76b69606e49d3da5ce034cfe8c3904afa007b94ae231b521df37cd5764864a148c7379b56638de7f69edc68767606da5e3dcf66ff17a9c87be022a7768958988c238d1721d40eb42fea4acc923cfcdefaaad52f9f3f81b9331c3f47b3c04441689329ed79692fa5789c2e59a5b064a9af5b12693b09150fcf8ec5774337a6f9e5f109302fd7ba20d62a821151ff724c62fb099fad2d52a287156548ad5778467809a9ba08d3c46de9bccd295b52444c50025eb0ee0507cfabb9596ff40e3d6a4470fb0f6bfcf181333030e6242f8711d90a81d4242c2d89f9b0e92f1a48dfd431d9c9553c627db88a6c3335bc4a8f9f6c4302fab921270c531fa639488af9077983a1654a0fbfd72319c7eabda9cedf98e80c01943d847ee2f9db02c5f889721d1375a5b5bd7cf2fd718b9806e4dec1c52b3b66bab62e600e5bb9cfb5303b874fa8fbfc986cf11742f1098d82bd34f551935d125a1459de319c5f16df7f8d40ea42058797de3289b194f2916119f2e179f93e14fd00b83d0c9922b8ae03497876df3eb5106dc1658800612079ef4679542245cf39a435b8ee01df59f72ad5fd6b850208deb19eaeff19c3b86f6b4c19f9b0947f08380ac67269b71ac2aa719c4a8201ee57dba048b8d3b250777189801f568141b703936f630bff37420856bf966bb6b5fa114e92a0f3f53d3b188ff922a425b8b40ec55cc13e389c6125986f484e7bb873d1f576e3d042aa41dd271d2475cbca4cbd1a715b426b97875c731aa39534f24eba1e71e16beed73929edebd974c2d4518e20ff113e10741d7bcbbc77cd1e4e0d028c2e293822b510ac4db7a767afc0cf2b94956f9f56a25ebfb2322a810f0658dc43027daaf78b222a1c75caa6629b2883b3c4e785bf54e5ac3ecc39575dc0d421ca49ec24df1af207bf96cf62b5cea802fe954bae0dd8d5ec8e888cdd1116732598ab57ac8b8ff32badf34c9a869260296d50b0f649c80732216d8de69dcfd43c3d05686ea5dfb5113b83815b4b313a0758c5cd01adee092ec422346da2bc79a483e33923f50de7bc81c766d99bf2e790e91e9b6bf7878e6cedcf657b5d9314caa29b95b289153c52c0cc474762b2efb782f9041b6f83ef15e3121ed9e039f0ec848cb9e23829e20a9a383fb5068a7082afe63d957b8c7ff116a5ebc5b1b8f7931e85b39199ec509021daa327b709e49505ca7e0e0313bb84fc0adc45a9ad0d441a0e50e5d22728a53c2207ec78cfaa861b5ef232432b1b3ff47487f31cfa930b0a3a52c89e823247a51ae9bee1201caf2894dc9413ff18bd69e2f974649c02034f69ed9be7e902bee558d2faad3abc026a033794230f58b923851e109f7ce81673d05659446b67ad16b5ec6af0a4e4a22fbdcb9a3e20d7367c13a72a143b7b6a0282aedfae727acc3be8b1b838f5d13066059caabff4d847f00bd9d5588031a0ac6cc7b5d998c7cdd95f12b8faddb63d7f93281a76316c22ddfc451fc4912b8ac125db430b29fb95c95c0b4f2cc942280000000000fe96106cbd4a388a6cceb1d6281318e0f9a2dab575a9cdd5dae9a33460ef15bccd861488e7341c616562c77714d2b54d79861671ab3278bacfa5d41d14ed162c118383ebc79285831c3a7edd8b2efccc4beef449d2693d073e09ec8488e925e4eeb657837488c73557887fc4c88c95697abf58b4d95c57f32724ce6959f72200000000000000000147c6d3fcbea6cea1ef530150439cde787f28ad6e861bfc8a210a885ecc243f910700000000000000f1acc9f427f2b332fb97f49e28f69b3cf760055fe908dec35df850a11691ba391972ef6e10f6bb32b796762a4620c995809874fb906a5e9e169308c09254f12a000600008077777777d80a1977000000001c1d1c0000000000010253b95b83a9d56ee0c02725270c3364d76f96007f47546e0929a2abbfe8381c33e4d7ffb2e0c04e83f4e80f95137dc374a861f81ebd3711847d6cac724253cf04a6e5648af2598f87416a17e8fc8eef7583b1a563ef604f27bd3ebab75ac08dac3dacbfd58cac9001879fbeebe79980c128dbb3393d94179799cf7c7a284c911d9d62b11c7963180b0626cfb2831733e7f6579bc3c04449029492dc5654f703a68152c3c682fd8ec139fe5ff59c77d4d4ec34d5bba8b10f3d4c368454638aad869fcf2a6d11b05fcd7a093daed721d9a9af785b16311f7e1205852df46434a19901db6038d30da3f12dc65bece8e8043888fd05f0d0aed9142ac37b3d3a3fe7033f042518a017bb8f3a36fd9312530ffe3207b14d027cd06ce0de46d94b86caf4f773bc36fa8ecf12525e464ba2456cab94974e022bdc1f378ec651f64b07b4bca910d618b95329743a32675e832b6c48053fcefad2a0e59d2585da4f08c0756055ca30c4a2e79004be0595a5964998b671d69acd28e4cc9f2d9da25ab530c0e551030f7fc182753118d9e7e2926d5a39200d0170c51ca8f70abf62b924b86e9da26621dc2bc0bf8fa9814e582cb4338ff3e094aab291c6660df4de350cb7856c33d2d54904b9ff6782eab40b7beb2ea04810229f67c8893b2d7b80c867a3327e0cbba87bfe7350e4cd219075a3d8039385c468f4d7637e794a6a5d22cba40d0760a92bda4368943161e3a40f4c3b2e2c6cc0e095689d1495a74e5909408fa2d81ddf5bb048cf0fb839dc8288b1c9875eb9451d19513f4d974c01c7b5404039ed8141ae4c596647281f308f32883c46a5f3f7555f8cb1877328cdded6b7699aecb198dd562bb0eaf77d1241883a0e672aef3a7c6382900b589a0ac0f31287670047b3698c624fe06e6aa1a93c2df2f69e6340d3fa9058d17dfc73cc933f90013811c9c2b2a0788da9d0e15db80b5012dc5cef02b7be74b848552f1caaea6f4a19b54f9ba64bf2748d4f9bb734efeb16b13c4d7f2f3238730c7f8433372582745041c34ab9f6b7c9f9b33821082ed9c8419c0a8de90524db29b6bfedfbbe819b0a5855a50577769a740987a3a51d265eed652036ae86bb6fc634473f4995627e651933d17ac13236e37fa75208d80e54076750d3f7ac026c1be3eda2d2ed61064ac45044b19d6bfb7d17405876c969a02940e985233f738deb683dde19861977fe4d09714e3951c6c0e3ee6532d37077898d629c944e48c87998a65a83cb5d6ea25c86b83cf70d8bf0d9f505c01a14db5680ae813dfeeac10bc57be6485f0e46f69bb6c31bb1f721443f2553b21ea1ca8186790314a0976abb21df5a2627f62eac08a2021e4cb6a66293c5edc990fc1448e8e0693cf6211c912dc1c7cfbf3956366edc198e82c1df5fe8ab81648860cc3e0981702eee97651cdb1eab6de6a91366129028fc5c09cffdba6285e9cf30c539d4e1f3468faa97cbdefdaad410032f4e544ff3c7b200d55b3e1e33bcda5bbfdf22927bfe60b84c99a5c387d450a1021f4470bcf7fee619794c59078f23ff3e4ef9dfbc74c9154c29226135a79ee3510bad41dbb363269ec3ee3e8ddda468ca0322a43c7cc87e1236a9188a08a405722318df22e8c8566b95b96ff83ce97d7e5ee25cfa6155072cd5f6a1a4ebc2109eb4bf9b5bc41be5cfed4a016302a5bc373b8dbf845118441563d61c4bfd4217ac1c015585364f56e7267234c8924ac1a2015453a76298555ba05c94bd85911451c8cbd8f2a58b30e67c7e24698c21252e8c7eea4506ed088e13a40da2623a16dac12fc42d1fd6b929f78fdc56166c736487570aaaafadd33d8ee7c3cae114946538e29ee567d004fdf6bfbf2518092148e9041657c11eff078165fc80fdefd282a9d5561db27d35cd878ad9a85916f0269411ee589cddf7f667eff30bfabe53dba5f604a72b5d1a18ba274d0d7504e8508a102c3ff03fcd4110edd1ec98ce8fa6cf41805a1ad06fdb1a629b3d695767e8b18263c820d63a2f3d4b0cdd465f9a5230b3bde33e2ac88dee728d72cab5b203582cb2960fde444c17343ad5f02765b38ebae6f9ed8f3854cf99d58efbfd7514c7d75e472223950f9c790de97459ffe73823388ffd0207e0d064499f238b4ec9cb66b832743d356d765e52aa196c56d78fe487d55a3fa20d24e149409d93f40d2dad301a9163c1e496abc4ac792c4a5ed925860c7465f55c2e6140960093ef8d57777d13f91fc7043ec29c41b1e2d62d92645bfac748d02667b60b36b9423e10f327afaf75454261d006e9210b18ac16ba1c4738a4512e1d51b8fa8d87fb96756b54b63ecd7516cb09b071ff5aa4ed4b7e0ee4e7e4d488bf9bc0b09acaee38850c8818005855aa372a81efb9458dcb15c43056df2f8be3b7b707c8a6432c267858d1c30ceb2e22cc41300b6f806316ade9fd6ab7a5ca228cc813fde01c3da71c78a92d5643e7905b81f40377fbf1ca3158e114176677de7ef523e19c0a4e6842fcf0e4dc9a0a1ac3e851ac923dcf508b6caefeddc55f4c114b240e470c409ef29ac44e139eb994b5f12a93cc4c44dfd018d2752c4989e213816e65e2b4a46080e6f1be7fe9af712bf30d2b0ebaae9d4de191c490517ce6485d7f027185c2c4b0382f875775cc77bfb38879b53f4145d11f8f728c1cea3abe9642757f9c4645de3300be50bcf5e130a4ae5d6d393748e561204ce00860a38ddfafeb560cf7214c8b916a895181de673cf32d1790d21f556f734936c1dee61369ec37088c2bd0a6b7cb1e50505543699b2f59e98623322a4f78a88be99f11f4d00a324b2d3c457913cf265c0ee471173604b939c2e988a9bea5fa8de1cb58eff9f2891ca3158b731e61dcefe7e67642ef8af47ae342de7dfda7bc56e39d3c4a6a967ffdb2b1c89aa835260f9990228cda1137ff1cf7190ae79b333376e0df0ed93d0f1d1ae244e87f6ac82dc462825820b1879db76ebb293f14032527c0a1bfafe4ad97ac309c7e3e3815a3c56cc67c460c4cd9a4eff0183162f470f8eba974f17c4f060176277b5bcfa3a2788fa9cc8adc5781fc58cf54616357c26855195639cdc5bfa7342ee8140187eb0b5d167dd3be5257c3ce96b149ea61d065f139768bdc327cbd3259d7b22dceb5322e8ae528fab9499b917835837499ce4087be49b18f9982837f9a2b01307cece3829e601221a44710ba7bd573c51726843c63e4932182318b1787faa68124b72b5ad59acb5845b6f6fdfd494214e24a51e962f3b6cbb8ea9a98500c3e8e1d423151f85f51ec130d951ec324e23bb238ba4eb4bf9684b8d00d16a7a2db387c8e0d1ba0862926d7ddb28bb9ee2d5640633109bb1fd61cf49699a0ada6aaf882a0e337480a37a156abf6a21bcc646bc3de36bb0e0b4b38e5fe2d7b1871dc1edd572dfd6efd09ca10836caab4f06142aa33fac394db56ba0319b86c26a45d00b8bafee22533bbab1d84a6910fabe64b7f833cc198f47d89bfc888795e22c1498c7a1332e44dc94c63ebc2e13665247144edecd452037ea7df44a49be217435c019a8a7cc404d2e1376cba6a56a419054a753f3feeed4565861d1d5a7d35618d98863181e6d094470a8eb378a539be3c181cff1c3622c6e771b2344df22eb1931138ddd4c69bd5530761bd3119bbd91f9c6aac13a261378e1f229aa0140c09d6a81c08052418186da173451d77fb91a583b07053904b4c3685f49f9861a91e800f30793cc9adb0941a0a14abcd763b8f3be96e3f313898d6b8d68eab4f38c455dd59f87217711a6b041b831f569e5738e0e0414f14779a253a8e0aad608a7cb54a901c5630ff980432a4f8e5e70c01b3283ac4a2ca5e0a4ce8899edcc5cac70b5392969018027750eeaf6193cbee1084ff0500ec9941a0a5fcad0fdd4029a6eb8d9724a8714dd85acf3d99251a2885a8c9cc0316e3bd339252eb0b39cb228ddf049f7032f82aa157164381993e4ca1d23382a76efe5f340c43d133244e7e98841b33689fc6eaa42eb93e3d1a45bee13e85eb56d9379edb3c116b0acb0d2a126ff010bcdcd36c2f0595ce534d5d112ce3e4fa1f98e0ef35cbbec121a8f31606728e74ade9ca9c433712a1adc6e01d8a23af7ee22d88e6bdc4f9bf0234f8c0362c6c7952ada4126d29de890ec3f2b2c3f407cf34badc7258aa838b829b9b87762d7c829bfb3ec1cb525eb391dd29d267224ad98e43302448f45de1242f5a7cbbaa74d7b7349bbda1933e9c148a50bdf3746af24db9f43cbcd2f79108e09b97d3ed7c857aafaf8880eb77d835874f506dff03f74da2f222db170500b5a1d2f7d2fba1f08ec5e4f0d613f0cda64425d46a41a6b60693aec13b3b3416377c3e7e16cac1d9d16734596a6f68e52869fd5341f73d172870c723002a1c069d2c7c73f1e3fbb3ae77db8d7d572ca1921355d92d27e84b83635486d186ddcc1f5d0808ae2121b9ec367921be5fed0492fdee8fa26f8d70a5f4e410d4aa8bd71230c0bab5ef8759c139b0cd8245e8f8845b72d8c01395301854b5056d053643bdd54ecb2fd65808361dc9d0a5d8c69bd24fddabffeca3426994dea483db9c2c0f5ffe3fa6ef59b828973c7844ce7e37e8d31f614a4ea8f4a7f11f0c0ee267dc941fe5b1f8ad3c071fcba5cbc2b651a96342e9a85efadf03d425b5bffdb6af70b7919e5cb5fbec1f732fcaa5c1708d0951a6e729c3a6180db37dbe1490acfbceade8e439c024ee33830e612402e59c2f7a4574a0688919e65532be828f3488c32412960a5e03f2fe6ccc3a0786607004e3a5482d2a2bac968e31733767683f90b9f151fc28f02fe8e213c312ea0458426b206222034c751c57c73c132c78f714197f138a6a264ba66b5fee87b9648ef0d210293d463fe6e8c6d90949004dfbb23b4ee4046c1d1d720110886daf14558211a9ab567b9f9db9f0f6bf0d2f9c39161a9399ecf2366bc821f58facd48e77478945c2a626995cc07d87e22a859e08bc0370e0612d0b69a3182d7f2f5b2353076559460e81dda922ff251a1e62ddac3f27e9a41bd1e85855fa4646de0bd8f97379195ff09a1d54dfd8823e8cb0a3812811fb20ada1a75186851a2c695f0e6f5a12889eeedd9ace07a1bf8c83d5a0070833fe64a39de1cacbcfcfcac1e30120acd2a1cb9b31a20e6df2e54bbdad4c87491fd80d2837e3742f8ebbd05e53873d4ac9e25618d2f23594a294a8c8d1bb94a4117bdec3d2e44d5c6550adf4de3c1d90b8de77c868074e19685ccaebb1e690580a5521d07a71d0f0bc9b8b593d4a6c2bf4803bf07d80f46a56fde550a7f807dc05a93c33d13621bbd676dd3e8562548547dfee3e04ef2b23ec03e2592165a5e409092cfd2b415b1b054b46f85024b09e0a60e2f788d5b1d6b893522b45140f930e86ca426e6ee21467e00411dfff237ef275992337458cf9581dbc9ff3a7c9670b4aa70361c178249e7c1770cbf9d2f0229fc892fea911f7ecf653ad4996c59907d9d5d435001f924fb19d1391d66170232a06b7b9e261f4a556121bae9672d92d31b465d54698777ab4a2095ba5aea1fefa94c53888cbe365485f0288601f0736ec80c81f410b410ab037d631497c233b2ee9ae62f6d285f1e945796d2fd3290550a8a0a5a9b9efd1eca9415fd901558b26d4df2831c27ecca9c62fe2f6a362006a836638a5ef51c910b00a522deda2752823e0e061acf16a621443a45303a4238a913d60eaf387ac210ec269708bc73af983cde2ad8816c26555b8cc5732a21ae662f191608d85f47cf973f7b06aa649e20471d016c82d8ffa0f8a54ffb18a2885ff6e06cd50019d173a467b74b6daf75802fc3d5e6e56bbd3108d7afa85c316ff6d224d4d950021cb783f47f2ee024995f35d56848ced552512ffc91db8cb06face0b4187f90c86c44691cde9a325dd922288d91917bbf9380ee7d455c1cf00f7ec315e751701d7c5162c397e494d278881c51ab1b47f156eb981caf36bf634bcbb41c090e800df078135390524e98793c234e1d5bd633a556642d060e9461cf64c3eb1209feb5aba967d6b7fc0649db8e732fce07f1f20a6c0406fba750f23e633b13e1b685b102a25fee1dc79517e6d26ea5b20f6d06fd4306344339af821359ee292e2363769e61cc4beae9187103777b6e707619ad86ed14b584b8b1601451684fdf97926be5b20e5dff3c2eb851dfdca49d16b869b3e74a659c6b16516ca453fee2d287689763b95c25c32645a1532161ab9f6199995418f6c16d96a37007ac56c2a2d0433b83aac9069e1e807c3cc851e273e7f50dd31ec1fda20870dcef71a2147691590a96815325221dcc7d16412db57bc38ecddd35461bbb4ba1a2dab685629063c74ec614a9cc54de6552e89a4a64dcbd06f7002a13fd929d83b43b2d26a72909c22fdb3595ab8b1ff49fc10a5f0e059c343611e43cc858bd2370bae9ff0d576b95c0d559b6d9288b49ee3ef0f2181515c9197ecc016fe32cd06082a37fabba4ddf329f125c212f6a14baa3cb31b7bcdf5cafb7fface71611a0eef7e51de73973d67cfbe2444b7594de3b090d943fa39b7cf78835bcc20d95b35dad428ffd59e220d2fbe32e602dba424d66c9c858c16d7550ad2524782385937b7212d2d44350aea279fbe18af7f6577ba7e9b6dd4dffcb16f80343aa442a4023480d57db2d0e42998ee642e5f1b49ed51b1166977d74129573a8a452bc94501355a166d634e1c477d0f18936939bfc8ce6f4c5712b09dbd414db84df19c19167f7512aaa4bcc3470a97465b2e8623e215fc5d19a63af2b31e17565e4698e70679c60c841d0cad2ab99fd178bf38492a734bb552ee4b0a48c344c6f204ff670b3018a605bde9034e8c184dc67c8f22b73cedca2807eac7ce5447b4977d150c2181df0c108f24b877fa6ff78fb2f00ee1aaeac1859a93f868921c3d53d074271ca44dacf9f6c24ad0359324aaf080976f91fb49397ccbf1f0202ec2b3ffdd941972e56f7354bf547a3c787f96d4741c0bd71659fca8658a07fc05f77bb8070c1120b78fb1a21e3fcc5e9a9d09e0299e9e37b63d33ec7c427adae4f76982e8ca2bd095f994eaa709c4acde8f1017f741e9ef9243197bff0830cfbc1b13b86f3912b55755dab8da47107bbe324a1b83a76d52d2ef04421e73d283159077e3d9bd2219f07a6981386f47a88e9a21c15e9b7631a6349b0d37944bd8ff5db810c54201efe68e8a3ed728cca4f77f179ab62442c44e4366d3bcdede939567213af170009bf74cbfca0c4a03ce5737498b16a49a8f170f6c892d6d49a675007198c6403ea86c0a28f16fb3ec2443d39c8d0eb1e4ec7898a519c5326a6734a3432b57cc2c8eb0a0367f6c206cfd7076d1631a5320f4275f9baf75c1016103bb668b677020e613436e978800801d6a8c60999449ddcbbfd29b6b912521a55373d9db7b3538fd563e5c11cb20f5e31016ed9d0cffc59a963f788f8be46aa9f6541fbad6ba18bc3adfd39ccc22d497398c389db4b83ea0a307a3efa3a0eaad6af81afbf1510fe67b1841edda5ebaad87d5508482ca0444b037ca3ce0e519789f2e7c271a831fb60295a19926409c93632e0f29fe175c422ffbfbc78d5f2a0a6bbd458e769f3a58b12fa4fa96ae309f1c066df8d1c919beb1e3033d79eeaae01dea46b6c6373c0356dd6638a4e813a05eadcba1ff496b78591a43fd9e5f31698ea81d5451e93762a4334f194088a10d5e3237d31cd0a5937edc2ea8ca85b56365042ef8ad4c3a9e0e0a7b2adba1acbb1aff22b9b8c81a436bc1adf365d453c090456c9b97662716941d9ed53bc46ea15e200a7b7b4377054b4e54e05a8792fb578dcebd3bc9178200acf20190d4239100f414e5515d0af79bdd177da7fc8fc7fd38d612eef70fbd2b5ffd0b1d85489b1b014763548cae4de6e5538c11664a3c5a2db07b62900eba7792a74cb4dd2672d17832d5c2746de3510b09f00bd28051c0b9ba5933261b87615f934a9c019c0267155c73bfd50aad8d78c96900e6c179fb83a222b80e30b87fc0eeb9b9b57c5dfb081a87ce51bf6c9085bce374f6fef65a08697b22d70a37b4fbc5e06649207098fe18ddff7f70723ca87de545ed3b029b0c57ba9f6c37709d70697f98f1c9cb23a3ba4eeb84816e26e3393ceddbc4f67af24179c7782db5f8e3c6d9ad70a2618d17be9952fe46e84c09725a085f6b0a3b16cbefb753140d64dd33644a8518a0f9196cc5227e24e8e23f1171e94a193b2132dc21db99260cdda97a5401f31a39f188dc0ec385d814f1f28a38e6f3ce1c1f6ef2f9a4832aa795aff152f803f4422dd54c6378337a3670edf9da81408bd2a490457a23ae0594173451c643a8937ff1e08669a8577495af97d140dfdeea879edaeb74d3c73c011fe2300a9a8229bff997630fdd98482b3aa22eb37a1719d2ed3c584d07ab300b62c44a9b024ab244fb4ab7ba2e9325ab8ee55c3c11c94630d8859f5d9d942e4d502965b9bed59c25ab9f8485f8aa886563f11226aa007c7c35bbe7f647aa147b6f0d9f74372ab6b2ec73eb20bae363b5d6902b721967ddbf9b9f4a272ed73a24e1afd75429925caba93661fc8483facb080a6754abdc9cdb9d4dbe8495d2213f6af96f86b13527ec026c5bd430bb8e255ef93fec158757f35362472cb92000598367ec7c2e0134924823e33a7b8129883351f8e0efc1feebd11964186afe12e2db58d6407eab1445e21aa73250ec7edd0b9d84e347613575d00f1ad6370e322f6797a476a0cd3ec84ad3e3a794849732cc47b42ef066776c419f11299827013e272af77d2141acac53cc16400bd791d15135e704427a1aa598d4b0cb8edd33f034c4e8d63eb7636c28c7cb2e8494d5f26580c0c18518639666cab223614b125ee919853076ebe4e29715162a0eff1387917f3d5ad614f87259c43e86e79512c3d4948ebf6ef2ee3068853316efd1beace78408c4ea68098c59ee990deb002e9c40f0b14664f0615e62980b901526078989afc9c34bedae678f948fd161f91f71e0638a016effa39a8adf813d405501a6647bcf0d56b7e8fcb2d2e5257654170ae876476493fe889f9db1ba2e107b32565957986e2faf4e39b3bb1abebf041008c257d9841bab73213d048bf448f9ff40b6ce5d95d0eae7a92a66b498d1983dd4c7a7359093aea372aaacf2cf4ad88d20d662badbf0dd04ec3f9c847fef2721604d95465a6472c52acd6c4bd2bf8779a84640e809d84867336c56f3a6b73d3a1bb9c08a65fcb6ad0ac4e5c40bc21128178a2645bde425566c2208342449e91fe7a1ccf9e3d5cc6fdfac9023a2a452eb01ab17ab1e3380adf88ee24cfcbd531d49e601ea7cf2fa8a4e590f5c3632d192a8e00b5c59fbb7442365755b6f51850e14d62e9df2a519ccef5f6b10869480a1d99bec342f5a95ab9dbea1517f3a2c1fae7e00c5026d81041305ea64afcc358254d65432c3f72d6631a721e5dd590f14302d64a6d5d858fc6a9b3044a4ac8cae9fb259292fc4a18fab4b699cbecdda201316f5f48505974e59d56516b2870711f13468845e3670990e6ffb22455cbf11373a41a9d600d1eb53823d19ace00c4f4d167066206fa8a88b912a8fc8af721ea190e9a1825330f162d3ac31acf7908c7644a5739b1dfc221ff71a707f342d021425ee7e73d9b1f457fb0f085f90859a84cdc4a4f9ce0be003d33eb04f6eb33abcff154325db50348ec0166ea86f554ee2c83afd1b542f8ca9277658c390701a9559df7955edcf89198b2010a553c39994d942772e079a3ed6b9f50fbec7c3154f09da4de8d80cd49737d0be4365184ef859b29f8c2debbeff3cc6851230a30b78bc4a9a9c5083ba77d1f3ab21f39836d5810ed1c567381179f4ade1a84f7827c8420a8aa83588dbc9998d68163a5bb90095a4547e06757c83ce1e7adcd8e83384d6010f05f5235d5724f8296393d52caafb1a7dab36039eeec36c123b2e113b7db21e0b7c417351492ef1da97e11b8ccdf51a4372ad2b1e9960c15799f3913531ef8ae155ccaa10245310e095605c0c66f96961a0a84425799321e02727002a005a4e6d5aee81c5d3aec98da62c11cfb377e0e058b6436e1b2477921941ad0e939cdfee77567d3f3ece78f3c04a2fb53d76e969f13ddd61469da9c224cee83342a3b0bd5db35cacab940b035013a467ebb3a55937734c530d8647dd484cba16bbae7f97f4501e3970cfa4ae5fa89d5e19ca49d3f286c40119723d533da96125933657f93a2192b1d9e5ef66a4675aa3b30633396999c453426e78229073c3378a1340c630d259cf52f203026ffc8646444d20f4a51a6ee38fd00dde1d7f02073c8cd1c8d8eba1d14cb02411de923c77e01eef03e4c30b522e9dc9e7a2c97c1e49659ccf4de1e4dbf4fa466074fa16cf9752cdac722df6bce4604c72e719111b311771ade794d2f9f2349d3e9140897f31cc8043e13d2ad094deeee75b4c310800ee7cbe09560be85f5c00506c6119697ac7c89ef63589330bd7e74ecc63682dd7e8d15ae00d8aace7daafb17f6396a72ea5996243ce57c383c00c264a07e4274553db946fe6d5cec992398106c5c4ea063ebc372afb68c58410126e29f61723a09ce9f1bc5aac06473aa6d52d77c1b51c0113fb8db51cbe6bbbc13a1ef9c837994d241765e91df17eefc2e98a2fc802faeaf977447aa83364f8092ebb38950c9600914d7f20d6df6cbd2bd8b4b3b4018aa62e1ea3550ac769473b1203ab6621b09bce61649db1a5574231e926655635a0dfe0be4d979107b2a3c64647962f3975cc7ea683dba666d672fb53805c46e42c281f231dbd1b714ea3b64d6e1087355ef268454386b7efe5366a3ebaa7ee6b12bacdf190bad88c62c7bb64f62ef138456306327b1e186d46e7376681c3b47a82d9cf2d7bb13c965054631e95a6b63f1857cbc0153c3f8e9919fb0679ce1c5ff9139ff5e2b78a71cda80d8bce05902839d86c623ca9ff20b6fc178662f59337caa5abdb8060c2ceac0796b76dd9c62c4505ff0fc660f05b3c479d2f4d106f27bbe2aba8e0ba81a04f3994058659c2239c2dc575ebae6f38a98198ce19fc5a04c2b73a438ee11c33b09a62ff83d39112e9ffe4c91c8c89252a007531cc423c9219dde83272b5d3565dc92223544fb20b23dbc36b6e634938ebb9cb36105dbd6bfbdaf2bd2d1bde5fcd4158a3fac19c1f640f504c09707449696675604a544e7b669156bc504c04fb8b3c23a37e8bb02c571ed7d9a51d903908c940d5a76c1e116c203f638a31fc0dc5c670b2d4921b105af02082e07352403d10c6caa4426753ea5481a5c7a807bef465e81e9d3ed72cb12581fdd412f5b27507233d88af79907c61a4d79bc2c911e495cb2302b015321054944f97161b4cf424f72f6284d7a264d1958feb19287244dd74772e5536271fcf7756cea328c890f556218663e1d75db7344170482bed6309853f89461b2031fa7c270ee5cd74e539bdba0ff3d4eec5727fed6a42ca442f6dd299b0f3103e3d1292f656815961334e704a903e545b66784b7a30c4f0a2e507a080ad400f06c556010b8ed0631740d348476a464a5ab7c9b1ad40648d0ad7e49d5dca8a9233e1f9934f60366a1950d2b631ca03740a0b29b57c9f9ab539939d7935bc4f983e94ab07ad4acfb719e51b2ce69ec0b6c78f613e951fae7d238e3b1bc307059227adbf7a2690bedab7f59bf3e3e380dcf04b551a3a8407f7e6c0258cd0b9e90d1149e3803f8ea8bac137b450e34f64f268ab5392c0359236238a344ac65b757f170cf0432fad20eaa1c02409357e37025ee8e54e0d45e45534da962b964dbfbeab61ed2b3d4119fcefaff8a9ac60f9ce249298574f7a2171cb052604aa725b9ead4c305fb72833c6f7692781e3a16177659095a9f9f01c1323434f6f1b961cf295b1b3cd81ec114561da5682577a9249ba0eccda4db4a57801b665e951a865818d0204317e51d9c8021fc6c5013212c531fd7ffa81f07e8eea0dbeecc53b5e42205a3c9d2aa3f44c6066d8eb9f76f068dab72204e39ddaab3aa3afb679ab3933b6a66668256468fca0277ce58fcb9f1be49d381e9d6cfb13217b38a34cebca31aea6c9977b2adce9d0a2d290c46d3e5a283ae205902d97d616b5d9a12768c11a111f7e5839640cbe2c4c72b36a58b6b8dac0018586593993816ca26beaa2200c3dcebf1943de5c5d9e8801261736662a618d9a56d6f91329fa618af8a63a8c558935fe16859983cb487191dcbe5c30a7948ce1c1dd93470ed6e1635300a77b8999de30e22fa41096e87949efcf18783e90e8427179f5424c870fa2dfaff3217f2248e7799dbc6c29dca6c11afb683310383d0ef88af0bcfd9b79b1afbc436d9a06ee9dcfa0593c44ba102d6edb13900b8286357a03287e68e8c7a77b5fbf139292476bfc2650fba3479144317ab66f2786889096601b96df4db1fc62ea59f9e285c05384b9f06353c29aafcb7b057c857fb0706fce9c4fa5389a5750007584d6205e561907ac89596d151a6105b89b6fa42bb1655562a80046d925afb1ef465b305dd33ab69ade26b8a28af16da752a3d62169f36219dbaf50026b237fdfbeec9715ba8293e2946c0d553bc920a1d81b789331954940c06a4309a90cd5ec1bc3b1bfa9a4a7b46ab1e0d76f2aa5150fd3a1a2f4de7701798b52c88f1b722fb4c50b5ca1328606a18c12b14161cec2a02fd7ef7ccd818e1f29fd3e838b1dd34d40a9f1a539baa400c76ebb0edda3e38637d4f1185577dba86f5fbf9016690f52e3052e5c560ff3551ad0c33c469b3746c77cc72c588b48b968268a0dd89cba45c7b987b0e2a5b3f751f9b858cddde27abaac97f78876a817e93fc04b839749ef7c0d0eb2dd2f8f92d80c1038fd421caf6736e8ce160b46cfc968d06e9152c20b243c00000000f98a6ba4f41fe559e62a16ff5a240163c8757bacd7320b4a5e524575392ac413ebf17e4284e39c8a6184fa592d1a6d2bf99b9c76c444288f2bda426589c01b1c9186085cbd6a574a6a02f4114a207b406cb422210293c4f4f6c7650b23d6d1b480934894823279bfd1e97077163f179856231a7b751863890a32642338c1072e00000000000000000147c6d3fcbea6cea1ef530150439cde787f28ad6e861bfc8a210a885ecc243f910200000000000000f7e3eefbeeea3a4d2dfdc2ef69cb7d6628eaae75dd9040977f40589f6299432a40806e299b5f3026e4ed16d4968e32a1d6527f1d92e66e2e1ec342222c54bc0800" + ] + .map(|hex| >::from_hex(hex).expect("Block bytes are in valid hex representation")); } From 9a992353fc971f79c5f3c483c27721997eb5bda1 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 24 Feb 2025 13:27:15 +0100 Subject: [PATCH 158/230] Update Nu7 consensus branch id in rpc test snapshot --- .../methods/tests/snapshots/get_blockchain_info@mainnet_10.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap index 9ec46ee6a75..9fadb83a0fb 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap @@ -71,7 +71,7 @@ expression: info "activationheight": 2726400, "status": "pending" }, - "77777777": { + "77190ad8": { "name": "NU7", "activationheight": 3111000, "status": "pending" From 77350506be10f3ebbb6f0fb0134207071a68fe1c Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 25 Feb 2025 14:41:03 +0100 Subject: [PATCH 159/230] Make changes according to #17 PR review (partially) --- zebra-chain/src/orchard/action.rs | 1 - zebra-chain/src/orchard/orchard_flavor_ext.rs | 9 ++-- zebra-chain/src/orchard/shielded_data.rs | 46 ++++--------------- zebra-chain/src/orchard_zsa.rs | 2 +- zebra-chain/src/orchard_zsa/burn.rs | 13 ++---- zebra-chain/src/orchard_zsa/issuance.rs | 8 +--- zebra-chain/src/transaction.rs | 8 ++-- zebra-consensus/src/primitives/halo2/tests.rs | 18 ++++---- 8 files changed, 32 insertions(+), 73 deletions(-) diff --git a/zebra-chain/src/orchard/action.rs b/zebra-chain/src/orchard/action.rs index 4f256408f11..c8161246efb 100644 --- a/zebra-chain/src/orchard/action.rs +++ b/zebra-chain/src/orchard/action.rs @@ -94,7 +94,6 @@ impl ZcashDeserialize for Action { // https://zips.z.cash/protocol/protocol.pdf#concretesym but fixed to // 580 bytes in https://zips.z.cash/protocol/protocol.pdf#outputencodingandconsensus // See [`note::EncryptedNote::zcash_deserialize`]. - // FIXME: don't mention about 580 here as this should work for OrchardZSA too? enc_ciphertext: V::EncryptedNote::zcash_deserialize(&mut reader)?, // Type is `Sym.C`, i.e. `𝔹^Y^{\[N\]}`, i.e. arbitrary-sized byte arrays // https://zips.z.cash/protocol/protocol.pdf#concretesym but fixed to diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index f8ce25d0ed5..a9255d33ef8 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -19,7 +19,6 @@ use crate::orchard_zsa::burn::BurnItem; /// A trait representing compile-time settings of Orchard Shielded Protocol used in /// the transactions `V5` and `V6`. pub trait OrchardFlavorExt: Clone + Debug { - /// A type representing an encrypted note for this protocol version. /// A type representing an encrypted note for this protocol version. type EncryptedNote: Clone + Debug @@ -59,26 +58,26 @@ pub struct OrchardZSA; pub struct NoBurn; impl ZcashSerialize for NoBurn { - fn zcash_serialize(&self, mut _writer: W) -> Result<(), io::Error> { + fn zcash_serialize(&self, _writer: W) -> Result<(), io::Error> { Ok(()) } } impl ZcashDeserialize for NoBurn { - fn zcash_deserialize(mut _reader: R) -> Result { + fn zcash_deserialize(_reader: R) -> Result { Ok(Self) } } impl OrchardFlavorExt for OrchardVanilla { - type Flavor = orchard_flavor::OrchardVanilla; type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; + type Flavor = orchard_flavor::OrchardVanilla; type BurnType = NoBurn; } #[cfg(feature = "tx-v6")] impl OrchardFlavorExt for OrchardZSA { - type Flavor = orchard_flavor::OrchardZSA; type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; + type Flavor = orchard_flavor::OrchardZSA; type BurnType = Vec; } diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index b766f86acab..82124b4a143 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -20,13 +20,7 @@ use crate::{ }, }; -use super::OrchardFlavorExt; - -#[cfg(not(feature = "tx-v6"))] -use super::OrchardVanilla; - -#[cfg(feature = "tx-v6")] -use super::OrchardZSA; +use super::{OrchardFlavorExt, OrchardVanilla}; /// A bundle of [`Action`] descriptions and signature data. #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] @@ -79,7 +73,8 @@ impl ShieldedData { self.actions.actions() } - /// FIXME: add a doc comment + /// Return an iterator for the [`ActionCommon`] copy of the Actions in this + /// transaction, in the order they appear in it. pub fn action_commons(&self) -> impl Iterator + '_ { self.actions.actions().map(|action| action.into()) } @@ -214,19 +209,15 @@ impl AuthorizedAction { } } -// TODO: FIXME: Consider moving it to transaction.rs as it's not used here. Or move its usage here from transaction.rs. -/// A struct that contains values of several fields of an `Action` struct. -/// Those fields are used in other parts of the code that call the `orchard_actions()` method of the `Transaction`. -/// The goal of using `ActionCommon` is that it's not a generic, unlike `Action`, so it can be returned from Transaction methods -/// (the fields of `ActionCommon` do not depend on the generic parameter `Version` of `Action`). +/// Non-generic fields of an `Action` used in `Transaction` methods. pub struct ActionCommon { - /// A reference to the value commitment to the net value of the input note minus the output note. - pub cv: super::commitment::ValueCommitment, - /// A reference to the nullifier of the input note being spent. + /// A value commitment to net value of the input note minus the output note + pub cv: ValueCommitment, + /// The nullifier of the input note being spent. pub nullifier: super::note::Nullifier, - /// A reference to the randomized validating key for `spendAuthSig`. + /// The randomized validating key for spendAuthSig, pub rk: reddsa::VerificationKeyBytes, - /// A reference to the x-coordinate of the note commitment for the output note. + /// The x-coordinate of the note commitment for the output note. pub cm_x: pallas::Base, } @@ -241,14 +232,6 @@ impl From<&Action> for ActionCommon { } } -/* -struct AssertBlockSizeLimit; - -impl AssertBlockSizeLimit { - const OK: () = assert!(N < (1 << 16), "must be less than 2^16"); -} -*/ - /// The maximum number of orchard actions in a valid Zcash on-chain transaction V5. /// /// If a transaction contains more actions than can fit in maximally large block, it might be @@ -277,16 +260,7 @@ impl TrustedPreallocate for Action { impl TrustedPreallocate for Signature { fn max_allocation() -> u64 { - // Each signature must have a corresponding action. - #[cfg(not(feature = "tx-v6"))] - let result = Action::::max_allocation(); - - // TODO: FIXME: Check this: V6 is used as it provides the max size of the action. - // So it's used even for V5 - is this correct? - #[cfg(feature = "tx-v6")] - let result = Action::::max_allocation(); - - result + Action::::max_allocation() } } diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index 9806850daf9..1921629541f 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -1,4 +1,4 @@ -//! Orchard ZSA related functionality. +//! OrchardZSA related functionality. pub mod burn; pub mod issuance; diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index 04c878feb49..03f75f5dba7 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -12,12 +12,12 @@ use orchard::note::AssetBase; use super::serialize::ASSET_BASE_SIZE; -// Sizes of the serialized values for types in bytes (used for TrustedPreallocate impls) +// The size of the Amount type, in bytes const AMOUNT_SIZE: u64 = 8; -// FIXME: is this a correct way to calculate (simple sum of sizes of components)? + const BURN_ITEM_SIZE: u64 = ASSET_BASE_SIZE + AMOUNT_SIZE; -/// Represents an Orchard ZSA burn item. +/// Represents an OrchardZSA burn item. #[derive(Clone, Debug, PartialEq, Eq)] pub struct BurnItem(AssetBase, Amount); @@ -43,9 +43,6 @@ impl ZcashDeserialize for BurnItem { impl TrustedPreallocate for BurnItem { fn max_allocation() -> u64 { - // FIXME: is this a correct calculation way? - // The longest Vec we receive from an honest peer must fit inside a valid block. - // Since encoding the length of the vec takes at least one byte, we use MAX_BLOCK_BYTES - 1 (MAX_BLOCK_BYTES - 1) / BURN_ITEM_SIZE } } @@ -56,7 +53,6 @@ impl serde::Serialize for BurnItem { where S: serde::Serializer, { - // FIXME: return custom error with a meaningful description? (self.0.to_bytes(), &self.1).serialize(serializer) } } @@ -67,11 +63,8 @@ impl<'de> serde::Deserialize<'de> for BurnItem { where D: serde::Deserializer<'de>, { - // FIXME: consider another implementation (explicit specifying of [u8; 32] may not look perfect) let (asset_base_bytes, amount) = <([u8; 32], Amount)>::deserialize(deserializer)?; - // FIXME: return custom error with a meaningful description? Ok(BurnItem( - // FIXME: duplicates the body of AssetBase::zcash_deserialize? Option::from(AssetBase::from_bytes(&asset_base_bytes)) .ok_or_else(|| serde::de::Error::custom("Invalid orchard_zsa AssetBase"))?, amount, diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index 9d31276072c..a761342955b 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -1,4 +1,4 @@ -//! Orchard ZSA issuance related functionality. +//! OrchardZSA issuance related functionality. use std::{fmt::Debug, io}; @@ -33,9 +33,8 @@ use super::serialize::ASSET_BASE_SIZE; #[derive(Clone, Debug, PartialEq, Eq)] pub struct IssueData(IssueBundle); -// Sizes of the serialized values for types in bytes (used for TrustedPreallocate impls) +// Sizes of the types, in bytes // FIXME: are those values correct (43, 32 etc.)? -//const ISSUANCE_VALIDATING_KEY_SIZE: u64 = 32; const ADDRESS_SIZE: u64 = 43; const NULLIFIER_SIZE: u64 = 32; const NOTE_VALUE_SIZE: u64 = 4; @@ -166,9 +165,6 @@ impl ZcashDeserialize for Note { impl TrustedPreallocate for Note { fn max_allocation() -> u64 { - // FIXME: is this a correct calculation way? - // The longest Vec we receive from an honest peer must fit inside a valid block. - // Since encoding the length of the vec takes at least one byte, we use MAX_BLOCK_BYTES - 1 (MAX_BLOCK_BYTES - 1) / NOTE_SIZE } } diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index f42d8876a91..c9741e62dd6 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -229,9 +229,9 @@ pub enum Transaction { outputs: Vec, /// The sapling shielded data for this transaction, if any. sapling_shielded_data: Option>, - /// The ZSA orchard shielded data for this transaction, if any. + /// The OrchardZSA shielded data for this transaction, if any. orchard_shielded_data: Option>, - /// The ZSA issuance data for this transaction, if any. + /// The OrchardZSA issuance data for this transaction, if any. orchard_zsa_issue_data: Option, }, } @@ -1040,11 +1040,11 @@ impl Transaction { /// Access the [`orchard::Flags`] in this transaction, if there is any, /// regardless of version. pub fn orchard_flags(&self) -> Option { - // FIXME: remove this line with_shielded_data!(self, |data: impl orchard::ShieldedDataCommon| data.flags) orchard_shielded_data_field!(self, flags) } - /// FIXME: add doc + /// Access the [`orchard::tree::Root`] in this transaction, if there is any, + /// regardless of version. pub fn orchard_shared_anchor(&self) -> Option { orchard_shielded_data_field!(self, shared_anchor) } diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 4c0e6b8afa8..284b157ca7a 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -40,7 +40,7 @@ fn generate_test_vectors() { let anchor_bytes = [0; 32]; let note_value = 10; - let shielded_data: Vec> = (1..=4) + let shielded_data: Vec> = (1..=4) .map(|num_recipients| { let mut builder = Builder::new( BundleType::Transactional { @@ -71,7 +71,7 @@ fn generate_test_vectors() { .apply_signatures(rng, [0; 32], &[]) .unwrap(); - zebra_chain::orchard::ShieldedData:: { + ShieldedData:: { flags, value_balance: note_value.try_into().unwrap(), shared_anchor: anchor_bytes.try_into().unwrap(), @@ -150,10 +150,9 @@ async fn verify_generated_halo2_proofs() { .clone() .iter() .map(|bytes| { - let maybe_shielded_data: Option> = - bytes - .zcash_deserialize_into() - .expect("a valid orchard::ShieldedData instance"); + let maybe_shielded_data: Option> = bytes + .zcash_deserialize_into() + .expect("a valid orchard::ShieldedData instance"); maybe_shielded_data.unwrap() }) .collect(); @@ -218,10 +217,9 @@ async fn correctly_err_on_invalid_halo2_proofs() { .clone() .iter() .map(|bytes| { - let maybe_shielded_data: Option> = - bytes - .zcash_deserialize_into() - .expect("a valid orchard::ShieldedData instance"); + let maybe_shielded_data: Option> = bytes + .zcash_deserialize_into() + .expect("a valid orchard::ShieldedData instance"); maybe_shielded_data.unwrap() }) .collect(); From 25a44a2fd314fdaa120c3e86a692d158035ed83e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 25 Feb 2025 15:25:26 +0100 Subject: [PATCH 160/230] Derive Copy, Clone, Debug, Eq, PartialEq for EncryptedNote instead of explicit imlps as const generic are stabilized --- zebra-chain/src/orchard/note/ciphertexts.rs | 29 +-------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index 68f92dc667d..33ab9b4f660 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -9,30 +9,9 @@ use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize} /// A ciphertext component for encrypted output notes. /// /// Corresponds to the Orchard 'encCiphertext's -#[derive(Deserialize, Serialize)] +#[derive(Deserialize, Serialize, Copy, Clone, Debug, Eq, PartialEq)] pub struct EncryptedNote(#[serde(with = "BigArray")] pub(crate) [u8; N]); -// These impls all only exist because of array length restrictions. -// TODO: use const generics https://github.com/ZcashFoundation/zebra/issues/2042 - -impl Copy for EncryptedNote {} - -impl Clone for EncryptedNote { - fn clone(&self) -> Self { - *self - } -} - -impl fmt::Debug for EncryptedNote { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.debug_tuple("EncryptedNote") - .field(&hex::encode(&self.0[..])) - .finish() - } -} - -impl Eq for EncryptedNote {} - impl From<[u8; N]> for EncryptedNote { fn from(bytes: [u8; N]) -> Self { EncryptedNote(bytes) @@ -45,12 +24,6 @@ impl From> for [u8; N] { } } -impl PartialEq for EncryptedNote { - fn eq(&self, other: &Self) -> bool { - self.0[..] == other.0[..] - } -} - impl ZcashSerialize for EncryptedNote { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { writer.write_all(&self.0[..])?; From 600571d841ea20e0129fd8086ea8a9c8f2dcbda9 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 25 Feb 2025 15:47:09 +0100 Subject: [PATCH 161/230] Make changes according to #17 PR review --- zebra-chain/src/orchard/orchard_flavor_ext.rs | 6 +++--- zebra-chain/src/orchard_zsa/issuance.rs | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index a9255d33ef8..c396c10d2f1 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -39,13 +39,13 @@ pub trait OrchardFlavorExt: Clone + Debug { type BurnType: Clone + Debug + Default + ZcashDeserialize + ZcashSerialize; } -/// A structure representing a tag for Orchard protocol variant used for the transaction version `V5`. +/// A structure representing a tag for Orchard protocol variant used for the transaction version 5. #[derive(Clone, Debug, PartialEq, Eq, Serialize)] #[cfg_attr(any(test, feature = "proptest-impl"), derive(Arbitrary))] pub struct OrchardVanilla; -/// A structure representing a tag for Orchard protocol variant used for the transaction version `V6` -/// (which ZSA features support). +/// A structure representing a tag for Orchard protocol variant used for the transaction version 6 +/// (which support for ZSAs). #[cfg(feature = "tx-v6")] #[derive(Clone, Debug, PartialEq, Eq, Serialize)] #[cfg_attr(any(test, feature = "proptest-impl"), derive(Arbitrary))] diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index a761342955b..abbdfb5a2e2 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -189,8 +189,7 @@ impl ZcashDeserialize for IssueAction { impl TrustedPreallocate for IssueAction { fn max_allocation() -> u64 { - // FIXME: impl correct calculation - 10 + (MAX_BLOCK_BYTES - 1) / 3 } } From 3ac784a16b41c61addbf15665bd1958ea9e3c6ab Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 26 Feb 2025 15:17:08 +0100 Subject: [PATCH 162/230] Fix wrong resolving of merge conflict in the previous commit --- zebra-chain/src/orchard/orchard_flavor_ext.rs | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index 8f8e423e9a0..c1422547409 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -65,29 +65,9 @@ pub struct OrchardVanilla; #[cfg_attr(any(test, feature = "proptest-impl"), derive(Arbitrary))] pub struct OrchardZSA; -/// A special marker type indicating the absence of a burn field in Orchard ShieldedData for `V5` transactions. -/// Useful for unifying ShieldedData serialization and deserialization implementations across various -/// Orchard protocol variants (i.e. various transaction versions). -#[derive(Default, Clone, Debug, PartialEq, Eq, Serialize)] -pub struct NoBurn; - -impl ZcashSerialize for NoBurn { - fn zcash_serialize(&self, _writer: W) -> Result<(), io::Error> { - Ok(()) - } -} - -impl ZcashDeserialize for NoBurn { - fn zcash_deserialize(_reader: R) -> Result { - Ok(Self) - } -} - impl OrchardFlavorExt for OrchardVanilla { type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; - type Flavor = orchard_flavor::OrchardVanilla; - #[cfg(feature = "tx-v6")] type BurnType = NoBurn; } @@ -95,7 +75,6 @@ impl OrchardFlavorExt for OrchardVanilla { #[cfg(feature = "tx-v6")] impl OrchardFlavorExt for OrchardZSA { type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; - type Flavor = orchard_flavor::OrchardZSA; - type BurnType = Vec; + type BurnType = Burn; } From 757a789a7b407267d14ef766e669776d4768e242 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 26 Feb 2025 15:23:35 +0100 Subject: [PATCH 163/230] Minor fix in FIXME comment --- zebra-chain/src/orchard_zsa/issuance.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index abbdfb5a2e2..70de9658d8a 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -34,7 +34,7 @@ use super::serialize::ASSET_BASE_SIZE; pub struct IssueData(IssueBundle); // Sizes of the types, in bytes -// FIXME: are those values correct (43, 32 etc.)? +// FIXME: import from orchard const ADDRESS_SIZE: u64 = 43; const NULLIFIER_SIZE: u64 = 32; const NOTE_VALUE_SIZE: u64 = 4; From bfe8f6f56408c0f8d18fadfe842e0a24e1d0263a Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 26 Feb 2025 15:46:37 +0100 Subject: [PATCH 164/230] Minor spelling fixes in comments --- zebra-chain/src/orchard_zsa.rs | 2 +- zebra-chain/src/orchard_zsa/tests.rs | 2 +- zebra-chain/src/orchard_zsa/tests/vectors.rs | 2 +- zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index dd2d0652732..abfd8952f2a 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -4,7 +4,7 @@ #[cfg(any(test, feature = "proptest-impl"))] pub(crate) mod arbitrary; -/// FIXME: feature = "proptest-impl" and pub are needed to access test vectors from another crates, +/// FIXME: feature = "proptest-impl" and pub are needed to access test vectors from other crates, /// remove it then #[cfg(any(test, feature = "proptest-impl"))] pub mod tests; diff --git a/zebra-chain/src/orchard_zsa/tests.rs b/zebra-chain/src/orchard_zsa/tests.rs index 2a757269874..6d78193546a 100644 --- a/zebra-chain/src/orchard_zsa/tests.rs +++ b/zebra-chain/src/orchard_zsa/tests.rs @@ -2,5 +2,5 @@ #[cfg(test)] mod blocks; -/// FIXME: pub is needed to access test vectors from another crates, remove it then +/// FIXME: pub is needed to access test vectors from other crates, remove it then pub mod vectors; diff --git a/zebra-chain/src/orchard_zsa/tests/vectors.rs b/zebra-chain/src/orchard_zsa/tests/vectors.rs index 0f7c4eceb48..b893aa78dff 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors.rs @@ -1,4 +1,4 @@ mod blocks; -// FIXME: pub is needed to access test vectors from another crates, change it to pub(crate) then +// FIXME: pub is needed to access test vectors from other crates, change it to pub(crate) then pub use blocks::BLOCKS; diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs index 324f270c04d..e2c32f1a79e 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs @@ -1,4 +1,4 @@ -/// FIXME: pub is needed to access test vectors from another crates, change it to pub(crate) then +/// FIXME: pub is needed to access test vectors from other crates, change it to pub(crate) then pub const BLOCKS: [&[u8]; 4] = [ // Genesis block &[], From 850ebf2760b48f0ad2b0f054aa0d35763fbbc4cf Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 26 Feb 2025 17:08:06 +0100 Subject: [PATCH 165/230] Fix compilation error in tests --- zebra-chain/src/transaction/arbitrary.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 4c26019f8b4..91d0bd0fd4e 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -1023,7 +1023,7 @@ pub fn transaction_to_fake_min_v5( }, v5 @ V5 { .. } => v5.clone(), #[cfg(feature = "tx-v6")] - V6 => panic!("V6 transactions are not supported in this test!"), + _v6 @ V6 { .. } => panic!("V6 transactions are not supported in this test!"), } } From fa16948cf8549776112742d63b83f880c135d684 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 26 Feb 2025 17:14:03 +0100 Subject: [PATCH 166/230] Fix clippy warning --- zebra-chain/src/transaction/serialize.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index 0989e82e091..9b29b7063ec 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -415,6 +415,7 @@ impl ZcashSerialize for Option> { impl ZcashSerialize for orchard::ShieldedData { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { // Exactly one action group for NU7 + #[allow(clippy::unwrap_used)] CompactSizeMessage::try_from(1) .expect("1 should convert to CompactSizeMessage") .zcash_serialize(&mut writer)?; From 1e407d4a830d8fad5a7ea377c20afa7002f99355 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 27 Feb 2025 10:51:08 +0100 Subject: [PATCH 167/230] Fix clippy warning (2) --- zebra-chain/src/transaction/serialize.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index 9b29b7063ec..4341094b88b 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -415,7 +415,7 @@ impl ZcashSerialize for Option> { impl ZcashSerialize for orchard::ShieldedData { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { // Exactly one action group for NU7 - #[allow(clippy::unwrap_used)] + #[allow(clippy::unwrap_in_result)] CompactSizeMessage::try_from(1) .expect("1 should convert to CompactSizeMessage") .zcash_serialize(&mut writer)?; From ccaa026b88b35f2aca9b4e313e62e013e6d9efdb Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 27 Feb 2025 11:37:07 +0100 Subject: [PATCH 168/230] Fix clippy warning (3) --- zebra-chain/src/transaction/serialize.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index 4341094b88b..6efc0171fb7 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -412,10 +412,10 @@ impl ZcashSerialize for Option> { // FIXME: Try to avoid duplication with OrchardVanilla version #[cfg(feature = "tx-v6")] +#[allow(clippy::unwrap_in_result)] impl ZcashSerialize for orchard::ShieldedData { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { // Exactly one action group for NU7 - #[allow(clippy::unwrap_in_result)] CompactSizeMessage::try_from(1) .expect("1 should convert to CompactSizeMessage") .zcash_serialize(&mut writer)?; From 1cb52c3fba9698984d4f9ea92bc66c70a003cce1 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 15 Mar 2025 09:37:13 +0100 Subject: [PATCH 169/230] Refactor burn serialization to use read_burn, write_burn functions from librustzcash --- zebra-chain/src/orchard_zsa/burn.rs | 85 +++++++++++++++-------------- 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index ade77cf48ee..028c8aa8282 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -4,20 +4,16 @@ use std::io; use halo2::pasta::pallas; +use orchard::{note::AssetBase, value::NoteValue}; + +use zcash_primitives::transaction::components::orchard::{read_burn, write_burn}; + use crate::{ amount::Amount, - block::MAX_BLOCK_BYTES, orchard::ValueCommitment, - serialization::{ - ReadZcashExt, SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashSerialize, - }, + serialization::{ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize}, }; -use orchard::{note::AssetBase, value::NoteValue}; - -// The size of the serialized AssetBase in bytes (used for TrustedPreallocate impls) -pub(super) const ASSET_BASE_SIZE: u64 = 32; - impl ZcashSerialize for AssetBase { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { writer.write_all(&self.to_bytes()) @@ -31,11 +27,7 @@ impl ZcashDeserialize for AssetBase { } } -// The size of the Amount type, in bytes -const AMOUNT_SIZE: u64 = 8; - -const BURN_ITEM_SIZE: u64 = ASSET_BASE_SIZE + AMOUNT_SIZE; - +// FIXME: use Amount insstead of Amount, remove both TryFrom<...> after that /// Represents an OrchardZSA burn item. #[derive(Clone, Debug, PartialEq, Eq)] pub struct BurnItem(AssetBase, Amount); @@ -49,32 +41,21 @@ impl TryFrom<(AssetBase, NoteValue)> for BurnItem { } } -impl ZcashSerialize for BurnItem { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - let BurnItem(asset_base, amount) = self; - - asset_base.zcash_serialize(&mut writer)?; - amount.zcash_serialize(&mut writer)?; - - Ok(()) - } -} - -impl ZcashDeserialize for BurnItem { - fn zcash_deserialize(mut reader: R) -> Result { - Ok(Self( - AssetBase::zcash_deserialize(&mut reader)?, - Amount::zcash_deserialize(&mut reader)?, +impl TryFrom for (AssetBase, NoteValue) { + type Error = std::io::Error; + + fn try_from(item: BurnItem) -> Result { + Ok(( + item.0, + NoteValue::from_raw( + i64::from(item.1) + .try_into() + .map_err(|_| std::io::Error::from(std::io::ErrorKind::InvalidData))?, + ), )) } } -impl TrustedPreallocate for BurnItem { - fn max_allocation() -> u64 { - (MAX_BLOCK_BYTES - 1) / BURN_ITEM_SIZE - } -} - impl serde::Serialize for BurnItem { fn serialize(&self, serializer: S) -> Result where @@ -111,6 +92,12 @@ impl From for ValueCommitment { } } +impl AsRef<[BurnItem]> for NoBurn { + fn as_ref(&self) -> &[BurnItem] { + &[] + } +} + impl ZcashSerialize for NoBurn { fn zcash_serialize(&self, mut _writer: W) -> Result<(), io::Error> { Ok(()) @@ -145,14 +132,32 @@ impl From for ValueCommitment { } } +impl AsRef<[BurnItem]> for Burn { + fn as_ref(&self) -> &[BurnItem] { + &self.0 + } +} + impl ZcashSerialize for Burn { - fn zcash_serialize(&self, writer: W) -> Result<(), io::Error> { - self.0.zcash_serialize(writer) + fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { + write_burn( + &mut writer, + &self + .0 + .iter() + .map(|item| item.clone().try_into()) + .collect::, _>>()?, + ) } } impl ZcashDeserialize for Burn { - fn zcash_deserialize(reader: R) -> Result { - Ok(Burn(Vec::::zcash_deserialize(reader)?)) + fn zcash_deserialize(mut reader: R) -> Result { + Ok(Burn( + read_burn(&mut reader)? + .into_iter() + .map(|item| item.try_into()) + .collect::, _>>()?, + )) } } From f3d5da97bd099364868e7e003901f4a65319b339 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 15 Mar 2025 09:38:32 +0100 Subject: [PATCH 170/230] Remove TrustedPreallocate impl and size constants from orchard_zsa::issuance module as they are not used (librutzcash serialization is used) --- zebra-chain/src/orchard_zsa/issuance.rs | 44 +++++-------------------- 1 file changed, 8 insertions(+), 36 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index fad8aeceb02..229ac523778 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -2,25 +2,19 @@ use std::{fmt::Debug, io}; -use halo2::pasta::pallas; - // For pallas::Base::from_repr only use group::ff::PrimeField; -use zcash_primitives::transaction::components::issuance::{read_v6_bundle, write_v6_bundle}; +use halo2::pasta::pallas; use orchard::{ - issuance::{IssueAction, IssueBundle, Signed}, + issuance::{IssueBundle, Signed}, note::ExtractedNoteCommitment, - Note, }; -use crate::{ - block::MAX_BLOCK_BYTES, - serialization::{SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashSerialize}, -}; +use zcash_primitives::transaction::components::issuance::{read_v6_bundle, write_v6_bundle}; -use super::burn::ASSET_BASE_SIZE; +use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize}; /// Wrapper for `IssueBundle` used in the context of Transaction V6. This allows the implementation of /// a Serde serializer for unit tests within this crate. @@ -55,35 +49,13 @@ impl IssueData { } } -// Sizes of the types, in bytes -// FIXME: import from orchard -const ADDRESS_SIZE: u64 = 43; -const NULLIFIER_SIZE: u64 = 32; -const NOTE_VALUE_SIZE: u64 = 4; -const RANDOM_SEED_SIZE: u64 = 32; -// FIXME: is this a correct way to calculate (simple sum of sizes of components)? -const NOTE_SIZE: u64 = - ADDRESS_SIZE + NOTE_VALUE_SIZE + ASSET_BASE_SIZE + NULLIFIER_SIZE + RANDOM_SEED_SIZE; - -impl TrustedPreallocate for Note { - fn max_allocation() -> u64 { - (MAX_BLOCK_BYTES - 1) / NOTE_SIZE - } -} - -impl TrustedPreallocate for IssueAction { - fn max_allocation() -> u64 { - (MAX_BLOCK_BYTES - 1) / 3 - } -} - impl ZcashSerialize for Option { fn zcash_serialize(&self, writer: W) -> Result<(), io::Error> { write_v6_bundle(self.as_ref().map(|issue_data| &issue_data.0), writer) } } -// FIXME: We can't split IssueData out of Option deserialization, +// We can't split IssueData out of Option deserialization, // because the counts are read along with the arrays. impl ZcashDeserialize for Option { fn zcash_deserialize(reader: R) -> Result { @@ -91,10 +63,10 @@ impl ZcashDeserialize for Option { } } -#[cfg(any(test, feature = "proptest-impl"))] +#[cfg(any(test, feature = "proptest-impl", feature = "elasticsearch"))] impl serde::Serialize for IssueData { - fn serialize(&self, serializer: S) -> Result { + fn serialize(&self, _serializer: S) -> Result { // TODO: FIXME: implement Serde serialization here - "(IssueData)".serialize(serializer) + unimplemented!("Serde serialization for IssueData not implemented"); } } From 1c1943530ad9e85114b2f6f761e94f8a272a9273 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 15 Mar 2025 09:41:38 +0100 Subject: [PATCH 171/230] Switch to updated version of orchard and librustzcash crates in Cargo.toml, which add PartialEq and Eq derives to orchard flavor marker types --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 16 ++++++++-------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1b596d3bf85..b4d5fc74fed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" dependencies = [ "blake2b_simd", "byteorder", @@ -1407,7 +1407,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" dependencies = [ "blake2b_simd", ] @@ -2878,7 +2878,7 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchard" version = "0.8.0" -source = "git+https://github.com/QED-it/orchard?branch=zsa1#3dbdbc52c6e2ffeca015ae6eb80ad7f1c870384d" +source = "git+https://github.com/QED-it/orchard?rev=3394cfc1ac156f9cc7e8507467cd2ac792ce20bd#3394cfc1ac156f9cc7e8507467cd2ac792ce20bd" dependencies = [ "aes", "bitvec", @@ -5815,7 +5815,7 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" version = "0.3.2" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" dependencies = [ "bech32", "bs58", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "zcash_client_backend" version = "0.12.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" dependencies = [ "base64 0.21.7", "bech32", @@ -5866,7 +5866,7 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" dependencies = [ "byteorder", "nonempty", @@ -5875,7 +5875,7 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" dependencies = [ "blake2b_simd", "byteorder", @@ -5885,7 +5885,7 @@ dependencies = [ [[package]] name = "zcash_keys" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" dependencies = [ "bech32", "blake2b_simd", @@ -5922,14 +5922,14 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.15.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" dependencies = [ "aes", "bip0039", "blake2b_simd", "byteorder", "document-features", - "equihash 0.2.0 (git+https://github.com/QED-it/librustzcash?branch=zsa1)", + "equihash 0.2.0 (git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq)", "ff", "fpe", "group", @@ -5983,7 +5983,7 @@ dependencies = [ [[package]] name = "zcash_protocol" version = "0.1.1" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" dependencies = [ "document-features", "memuse", @@ -6524,7 +6524,7 @@ dependencies = [ [[package]] name = "zip321" version = "0.0.0" -source = "git+https://github.com/QED-it/librustzcash?branch=zsa1#6e5a4130f5e7fbd6f195d89d34ed9669686f7635" +source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" dependencies = [ "base64 0.21.7", "nom", diff --git a/Cargo.toml b/Cargo.toml index 60ada1bd222..b17f40b9146 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -108,11 +108,11 @@ halo2_proofs = { version = "0.3.0", git = "https://github.com/QED-it/halo2", bra halo2_gadgets = { version = "0.3.0", git = "https://github.com/QED-it/halo2", branch = "zsa1" } zcash_note_encryption = { version = "0.4.0", git = "https://github.com/QED-it/zcash_note_encryption", branch = "zsa1" } sapling-crypto = { version = "0.1.3", git = "https://github.com/QED-it/sapling-crypto", branch = "zsa1" } -orchard = { version = "0.8.0", git = "https://github.com/QED-it/orchard", branch = "zsa1" } -zcash_primitives = { version = "0.15.0", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } -zcash_protocol = { version = "0.1.1", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } -zcash_address = { version = "0.3.2", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } -zcash_encoding = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } -zcash_history = { version = "0.4.0", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } -zcash_client_backend = { version = "0.12.1", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } -zcash_keys = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "zsa1" } +orchard = { version = "0.8.0", git = "https://github.com/QED-it/orchard", rev = "3394cfc1ac156f9cc7e8507467cd2ac792ce20bd" } +zcash_primitives = { version = "0.15.0", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } +zcash_protocol = { version = "0.1.1", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } +zcash_address = { version = "0.3.2", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } +zcash_encoding = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } +zcash_history = { version = "0.4.0", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } +zcash_client_backend = { version = "0.12.1", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } +zcash_keys = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } From e480c7a9167cea278fffa39463990d15a5a7d629 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 15 Mar 2025 09:44:04 +0100 Subject: [PATCH 172/230] Update orchard_flavor_ext module to re-use OrchardVanilla and OrchardZSA marker types from orchard, rename OrchardFlavorExt to ShieldedDataFlavor and rest of the code according those changes --- zebra-chain/src/orchard.rs | 2 +- zebra-chain/src/orchard/action.rs | 12 ++-- zebra-chain/src/orchard/arbitrary.rs | 18 ++--- zebra-chain/src/orchard/note/ciphertexts.rs | 4 +- zebra-chain/src/orchard/orchard_flavor_ext.rs | 72 ++++++++----------- zebra-chain/src/orchard/shielded_data.rs | 60 ++++++++-------- zebra-chain/src/orchard_zsa.rs | 2 +- zebra-chain/src/transaction/arbitrary.rs | 16 ++--- zebra-consensus/src/primitives/halo2.rs | 12 ++-- zebra-consensus/src/primitives/halo2/tests.rs | 7 +- .../src/service/non_finalized_state/chain.rs | 6 +- 11 files changed, 98 insertions(+), 113 deletions(-) diff --git a/zebra-chain/src/orchard.rs b/zebra-chain/src/orchard.rs index a44aa4ae2ec..c137e23527d 100644 --- a/zebra-chain/src/orchard.rs +++ b/zebra-chain/src/orchard.rs @@ -23,7 +23,7 @@ pub use address::Address; pub use commitment::{CommitmentRandomness, NoteCommitment, ValueCommitment}; pub use keys::Diversifier; pub use note::{EncryptedNote, Note, Nullifier, WrappedNoteKey}; -pub use orchard_flavor_ext::{OrchardFlavorExt, OrchardVanilla}; +pub use orchard_flavor_ext::{OrchardVanilla, ShieldedDataFlavor}; pub use shielded_data::{AuthorizedAction, Flags, ShieldedData}; pub(crate) use shielded_data::ActionCommon; diff --git a/zebra-chain/src/orchard/action.rs b/zebra-chain/src/orchard/action.rs index c8161246efb..56dea3e94d5 100644 --- a/zebra-chain/src/orchard/action.rs +++ b/zebra-chain/src/orchard/action.rs @@ -11,7 +11,7 @@ use super::{ commitment::{self, ValueCommitment}, keys, note::{self, Nullifier}, - OrchardFlavorExt, + ShieldedDataFlavor, }; /// An Action description, as described in the [Zcash specification §7.3][actiondesc]. @@ -22,7 +22,7 @@ use super::{ /// /// [actiondesc]: https://zips.z.cash/protocol/nu5.pdf#actiondesc #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] -pub struct Action { +pub struct Action { /// A value commitment to net value of the input note minus the output note pub cv: commitment::ValueCommitment, /// The nullifier of the input note being spent. @@ -36,14 +36,14 @@ pub struct Action { /// encrypted private key in `out_ciphertext`. pub ephemeral_key: keys::EphemeralPublicKey, /// A ciphertext component for the encrypted output note. - pub enc_ciphertext: V::EncryptedNote, + pub enc_ciphertext: FL::EncryptedNote, /// A ciphertext component that allows the holder of a full viewing key to /// recover the recipient diversified transmission key and the ephemeral /// private key (and therefore the entire note plaintext). pub out_ciphertext: note::WrappedNoteKey, } -impl ZcashSerialize for Action { +impl ZcashSerialize for Action { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { self.cv.zcash_serialize(&mut writer)?; writer.write_all(&<[u8; 32]>::from(self.nullifier)[..])?; @@ -56,7 +56,7 @@ impl ZcashSerialize for Action { } } -impl ZcashDeserialize for Action { +impl ZcashDeserialize for Action { fn zcash_deserialize(mut reader: R) -> Result { // # Consensus // @@ -94,7 +94,7 @@ impl ZcashDeserialize for Action { // https://zips.z.cash/protocol/protocol.pdf#concretesym but fixed to // 580 bytes in https://zips.z.cash/protocol/protocol.pdf#outputencodingandconsensus // See [`note::EncryptedNote::zcash_deserialize`]. - enc_ciphertext: V::EncryptedNote::zcash_deserialize(&mut reader)?, + enc_ciphertext: FL::EncryptedNote::zcash_deserialize(&mut reader)?, // Type is `Sym.C`, i.e. `𝔹^Y^{\[N\]}`, i.e. arbitrary-sized byte arrays // https://zips.z.cash/protocol/protocol.pdf#concretesym but fixed to // 80 bytes in https://zips.z.cash/protocol/protocol.pdf#outputencodingandconsensus diff --git a/zebra-chain/src/orchard/arbitrary.rs b/zebra-chain/src/orchard/arbitrary.rs index 89618e451ad..c1593f84f63 100644 --- a/zebra-chain/src/orchard/arbitrary.rs +++ b/zebra-chain/src/orchard/arbitrary.rs @@ -10,14 +10,14 @@ use reddsa::{orchard::SpendAuth, Signature, SigningKey, VerificationKey, Verific use proptest::{array, collection::vec, prelude::*}; use super::{ - keys::*, note, tree, Action, AuthorizedAction, Flags, NoteCommitment, OrchardFlavorExt, + keys::*, note, tree, Action, AuthorizedAction, Flags, NoteCommitment, ShieldedDataFlavor, ValueCommitment, }; -impl Arbitrary for Action -// FIXME: define the constraint in OrchardFlavorExt? +impl Arbitrary for Action +// FIXME: define the constraint in ShieldedDataFlavor? where - ::Strategy: 'static, + ::Strategy: 'static, { type Parameters = (); @@ -25,7 +25,7 @@ where ( any::(), any::(), - any::(), + any::(), any::(), ) .prop_map(|(nullifier, rk, enc_ciphertext, out_ciphertext)| Self { @@ -59,15 +59,15 @@ impl Arbitrary for note::Nullifier { type Strategy = BoxedStrategy; } -impl Arbitrary for AuthorizedAction -// FIXME: define the constraint in OrchardFlavorExt? +impl Arbitrary for AuthorizedAction +// FIXME: define the constraint in ShieldedDataFlavor? where - ::Strategy: 'static, + ::Strategy: 'static, { type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - (any::>(), any::()) + (any::>(), any::()) .prop_map(|(action, spend_auth_sig)| Self { action, spend_auth_sig: spend_auth_sig.0, diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index 33ab9b4f660..b6754c5f0f1 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -99,7 +99,7 @@ impl ZcashDeserialize for WrappedNoteKey { } #[cfg(test)] -use crate::orchard::OrchardFlavorExt; +use crate::orchard::{OrchardVanilla, ShieldedDataFlavor}; #[cfg(test)] use proptest::prelude::*; @@ -107,7 +107,7 @@ use proptest::prelude::*; proptest! { #[test] - fn encrypted_ciphertext_roundtrip(ec in any::>()) { + fn encrypted_ciphertext_roundtrip(ec in any::<::EncryptedNote>()) { let _init_guard = zebra_test::init(); let mut data = Vec::new(); diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/orchard_flavor_ext.rs index e31c8c0d910..ec3bc24cb58 100644 --- a/zebra-chain/src/orchard/orchard_flavor_ext.rs +++ b/zebra-chain/src/orchard/orchard_flavor_ext.rs @@ -4,10 +4,12 @@ use std::fmt::Debug; use serde::{de::DeserializeOwned, Serialize}; -#[cfg(any(test, feature = "proptest-impl"))] -use proptest_derive::Arbitrary; +use orchard::{domain::OrchardDomainCommon, orchard_flavor::OrchardFlavor}; + +pub use orchard::orchard_flavor::OrchardVanilla; -use orchard::{domain::OrchardDomainCommon, orchard_flavor}; +#[cfg(feature = "tx-v6")] +pub use orchard::orchard_flavor::OrchardZSA; use crate::{ orchard::ValueCommitment, @@ -15,25 +17,29 @@ use crate::{ }; #[cfg(feature = "tx-v6")] -use crate::orchard_zsa::{Burn, NoBurn}; +use crate::orchard_zsa::{Burn, BurnItem, NoBurn}; use super::note; -#[cfg(not(any(test, feature = "proptest-impl")))] -pub trait TestArbitrary {} - -#[cfg(not(any(test, feature = "proptest-impl")))] -impl TestArbitrary for T {} - +// When testing or with the proptest-impl feature, enforce Arbitrary. #[cfg(any(test, feature = "proptest-impl"))] -pub trait TestArbitrary: proptest::prelude::Arbitrary {} +mod test_arbitrary { + use proptest::prelude::Arbitrary; -#[cfg(any(test, feature = "proptest-impl"))] -impl TestArbitrary for T {} + pub trait TestArbitrary: Arbitrary {} + impl TestArbitrary for T {} +} -/// A trait representing compile-time settings of Orchard Shielded Protocol used in -/// the transactions `V5` and `V6`. -pub trait OrchardFlavorExt: Clone + Debug { +// Otherwise, no extra requirement. +#[cfg(not(any(test, feature = "proptest-impl")))] +mod test_arbitrary { + pub trait TestArbitrary {} + impl TestArbitrary for T {} +} + +/// A trait representing compile-time settings of ShieldedData of Orchard Shielded Protocol +/// used in the transactions `V5` and `V6`. +pub trait ShieldedDataFlavor: OrchardFlavor { /// A type representing an encrypted note for this protocol version. type EncryptedNote: Clone + Debug @@ -43,47 +49,29 @@ pub trait OrchardFlavorExt: Clone + Debug { + Serialize + ZcashDeserialize + ZcashSerialize - + TestArbitrary; - - /// Specifies the Orchard protocol flavor from `orchard` crate used by this implementation. - type Flavor: orchard_flavor::OrchardFlavor; - - /// The size of the encrypted note for this protocol version. - const ENCRYPTED_NOTE_SIZE: usize = Self::Flavor::ENC_CIPHERTEXT_SIZE; + + test_arbitrary::TestArbitrary; /// A type representing a burn field for this protocol version. #[cfg(feature = "tx-v6")] + // FIXME: try to get rid type BurnType: Clone + Debug + Default + ZcashDeserialize + ZcashSerialize + Into - + TestArbitrary; + + AsRef<[BurnItem]> + + test_arbitrary::TestArbitrary; } -/// A structure representing a tag for Orchard protocol variant used for the transaction version 5. -#[derive(Clone, Debug, PartialEq, Eq, Serialize)] -#[cfg_attr(any(test, feature = "proptest-impl"), derive(Arbitrary))] -pub struct OrchardVanilla; - -/// A structure representing a tag for Orchard protocol variant used for the transaction version 6 -/// (which support for ZSAs). -#[cfg(feature = "tx-v6")] -#[derive(Clone, Debug, PartialEq, Eq, Serialize)] -#[cfg_attr(any(test, feature = "proptest-impl"), derive(Arbitrary))] -pub struct OrchardZSA; - -impl OrchardFlavorExt for OrchardVanilla { - type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; - type Flavor = orchard_flavor::OrchardVanilla; +impl ShieldedDataFlavor for OrchardVanilla { + type EncryptedNote = note::EncryptedNote<{ Self::ENC_CIPHERTEXT_SIZE }>; #[cfg(feature = "tx-v6")] type BurnType = NoBurn; } #[cfg(feature = "tx-v6")] -impl OrchardFlavorExt for OrchardZSA { - type EncryptedNote = note::EncryptedNote<{ Self::ENCRYPTED_NOTE_SIZE }>; - type Flavor = orchard_flavor::OrchardZSA; +impl ShieldedDataFlavor for OrchardZSA { + type EncryptedNote = note::EncryptedNote<{ Self::ENC_CIPHERTEXT_SIZE }>; type BurnType = Burn; } diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index cd871985b3a..292ebe34266 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -20,11 +20,15 @@ use crate::{ }, }; -use super::{OrchardFlavorExt, OrchardVanilla}; +use super::{OrchardVanilla, ShieldedDataFlavor}; /// A bundle of [`Action`] descriptions and signature data. #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] -pub struct ShieldedData { +#[serde(bound( + serialize = "FL::EncryptedNote: serde::Serialize, FL::BurnType: serde::Serialize", + deserialize = "FL::BurnType: serde::Deserialize<'de>" +))] +pub struct ShieldedData { /// The orchard flags for this transaction. /// Denoted as `flagsOrchard` in the spec. pub flags: Flags, @@ -39,7 +43,7 @@ pub struct ShieldedData { pub proof: Halo2Proof, /// The Orchard Actions, in the order they appear in the transaction. /// Denoted as `vActionsOrchard` and `vSpendAuthSigsOrchard` in the spec. - pub actions: AtLeastOne>, + pub actions: AtLeastOne>, /// A signature on the transaction `sighash`. /// Denoted as `bindingSigOrchard` in the spec. pub binding_sig: Signature, @@ -47,10 +51,10 @@ pub struct ShieldedData { #[cfg(feature = "tx-v6")] /// Assets intended for burning /// Denoted as `vAssetBurn` in the spec (ZIP 230). - pub burn: V::BurnType, + pub burn: FL::BurnType, } -impl fmt::Display for ShieldedData { +impl fmt::Display for ShieldedData { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let mut fmter = f.debug_struct("orchard::ShieldedData"); @@ -66,10 +70,10 @@ impl fmt::Display for ShieldedData { } } -impl ShieldedData { +impl ShieldedData { /// Iterate over the [`Action`]s for the [`AuthorizedAction`]s in this /// transaction, in the order they appear in it. - pub fn actions(&self) -> impl Iterator> { + pub fn actions(&self) -> impl Iterator> { self.actions.actions() } @@ -138,9 +142,9 @@ impl ShieldedData { } } -impl AtLeastOne> { +impl AtLeastOne> { /// Iterate over the [`Action`]s of each [`AuthorizedAction`]. - pub fn actions(&self) -> impl Iterator> { + pub fn actions(&self) -> impl Iterator> { self.iter() .map(|authorized_action| &authorized_action.action) } @@ -150,21 +154,23 @@ impl AtLeastOne> { /// /// Every authorized Orchard `Action` must have a corresponding `SpendAuth` signature. #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] -pub struct AuthorizedAction { +#[serde(bound = "FL::EncryptedNote: serde::Serialize")] +pub struct AuthorizedAction { /// The action description of this Action. - pub action: Action, + pub action: Action, /// The spend signature. pub spend_auth_sig: Signature, } -impl AuthorizedAction { +impl AuthorizedAction { + // FIXME: change the comments below to fit both OrchardVanilla and OrchardZSA (refs to specs, 820 bytes etc.) /// The size of a single Action /// /// Actions are 5 * 32 + ENCRYPTED_NOTE_SIZE + 80 bytes so the total size of each Action is 820 bytes. /// [7.5 Action Description Encoding and Consensus][ps] /// - /// [ps]: - pub const ACTION_SIZE: u64 = 5 * 32 + (V::ENCRYPTED_NOTE_SIZE as u64) + 80; + /// [ps]: + pub const ACTION_SIZE: u64 = 5 * 32 + (FL::ENC_CIPHERTEXT_SIZE as u64) + 80; /// The size of a single `Signature`. /// @@ -185,29 +191,21 @@ impl AuthorizedAction { // a valid max allocation can never exceed this size pub const ACTION_MAX_ALLOCATION: u64 = (MAX_BLOCK_BYTES - 1) / Self::AUTHORIZED_ACTION_SIZE; - // To be but we ensure ACTION_MAX_ALLOCATION is less than 2^16 on compile time - // (this is a workaround, as static_assertions::const_assert! doesn't work for generics, - // see TrustedPreallocate for Action) + // Ensure ACTION_MAX_ALLOCATION is less than 2^16 on compile time const _ACTION_MAX_ALLOCATION_OK: u64 = (1 << 16) - Self::ACTION_MAX_ALLOCATION; - /* FIXME: remove this - const ACTION_MAX_ALLOCATION_OK: () = assert!( - Self::ACTION_MAX_ALLOCATION < 1, //(1 << 16), - "must be less than 2^16" - ); - */ /// Split out the action and the signature for V5 transaction /// serialization. - pub fn into_parts(self) -> (Action, Signature) { + pub fn into_parts(self) -> (Action, Signature) { (self.action, self.spend_auth_sig) } // Combine the action and the spend auth sig from V5 transaction /// deserialization. pub fn from_parts( - action: Action, + action: Action, spend_auth_sig: Signature, - ) -> AuthorizedAction { + ) -> AuthorizedAction { AuthorizedAction { action, spend_auth_sig, @@ -227,8 +225,8 @@ pub struct ActionCommon { pub cm_x: pallas::Base, } -impl From<&Action> for ActionCommon { - fn from(action: &Action) -> Self { +impl From<&Action> for ActionCommon { + fn from(action: &Action) -> Self { Self { cv: action.cv, nullifier: action.nullifier, @@ -243,7 +241,7 @@ impl From<&Action> for ActionCommon { /// If a transaction contains more actions than can fit in maximally large block, it might be /// valid on the network and in the mempool, but it can never be mined into a block. So /// rejecting these large edge-case transactions can never break consensus. -impl TrustedPreallocate for Action { +impl TrustedPreallocate for Action { fn max_allocation() -> u64 { // # Consensus // @@ -259,8 +257,8 @@ impl TrustedPreallocate for Action { // https://users.rust-lang.org/t/how-do-i-static-assert-a-property-of-a-generic-u32-parameter/76307)? // The following expression doesn't work for generics, so a workaround with _ACTION_MAX_ALLOCATION_OK in // AuthorizedAction impl is used instead: - // static_assertions::const_assert!(AuthorizedAction::::ACTION_MAX_ALLOCATION < (1 << 16)); - AuthorizedAction::::ACTION_MAX_ALLOCATION + // static_assertions::const_assert!(AuthorizedAction::::ACTION_MAX_ALLOCATION < (1 << 16)); + AuthorizedAction::::ACTION_MAX_ALLOCATION } } diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index abfd8952f2a..69ed9b86f90 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -12,5 +12,5 @@ pub mod tests; mod burn; mod issuance; -pub(crate) use burn::{Burn, NoBurn}; +pub(crate) use burn::{Burn, BurnItem, NoBurn}; pub(crate) use issuance::IssueData; diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 91d0bd0fd4e..4394e588c91 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -137,7 +137,7 @@ impl Transaction { /// Helper function to generate the common transaction fields. /// This function is generic over the Orchard shielded data type. - fn v5_v6_strategy_common( + fn v5_v6_strategy_common( ledger_state: LedgerState, ) -> impl Strategy< Value = ( @@ -147,7 +147,7 @@ impl Transaction { Vec, Vec, Option>, - Option>, + Option>, ), > + 'static { ( @@ -157,7 +157,7 @@ impl Transaction { transparent::Input::vec_strategy(&ledger_state, MAX_ARBITRARY_ITEMS), vec(any::(), 0..MAX_ARBITRARY_ITEMS), option::of(any::>()), - option::of(any::>()), + option::of(any::>()), ) .prop_map( move |( @@ -781,11 +781,11 @@ impl Arbitrary for sapling::TransferData { type Strategy = BoxedStrategy; } -impl Arbitrary for orchard::ShieldedData +impl Arbitrary for orchard::ShieldedData // FIXME: remove the following lines -// FIXME: define the constraint in OrchardFlavorExt? +// FIXME: define the constraint in orchard::ShieldedDataFlavor? //where -// ::Strategy: 'static, +// ::Strategy: 'static, { type Parameters = (); @@ -796,12 +796,12 @@ impl Arbitrary for orchard::ShieldedData any::(), any::(), vec( - any::>(), + any::>(), 1..MAX_ARBITRARY_ITEMS, ), any::(), #[cfg(feature = "tx-v6")] - any::(), + any::(), ) .prop_map(|props| { #[cfg(not(feature = "tx-v6"))] diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index e42fadd22ca..ea07b79a253 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -19,7 +19,7 @@ use tower::{util::ServiceFn, Service}; use tower_batch_control::{Batch, BatchControl}; use tower_fallback::Fallback; -use zebra_chain::orchard::{OrchardFlavorExt, OrchardVanilla, OrchardZSA}; +use zebra_chain::orchard::{OrchardVanilla, OrchardZSA, ShieldedData, ShieldedDataFlavor}; use crate::BoxError; @@ -78,10 +78,10 @@ pub type ItemVerifyingKey = VerifyingKey; // FIXME: Check if the Orchard code (called from the zebra-consensus) checks burn as a part of bidning signature lazy_static::lazy_static! { /// The halo2 proof verifying key for Orchard Vanilla - pub static ref VERIFYING_KEY_VANILLA: ItemVerifyingKey = ItemVerifyingKey::build::<::Flavor>(); + pub static ref VERIFYING_KEY_VANILLA: ItemVerifyingKey = ItemVerifyingKey::build::(); /// The halo2 proof verifying key for Orchard ZSA - pub static ref VERIFYING_KEY_ZSA: ItemVerifyingKey = ItemVerifyingKey::build::<::Flavor>(); + pub static ref VERIFYING_KEY_ZSA: ItemVerifyingKey = ItemVerifyingKey::build::(); } // === TEMPORARY BATCH HALO2 SUBSTITUTE === @@ -136,8 +136,8 @@ impl BatchVerifier { // === END TEMPORARY BATCH HALO2 SUBSTITUTE === -impl From<&zebra_chain::orchard::ShieldedData> for Item { - fn from(shielded_data: &zebra_chain::orchard::ShieldedData) -> Item { +impl From<&ShieldedData> for Item { + fn from(shielded_data: &ShieldedData) -> Item { use orchard::{circuit, note, primitives::redpallas, tree, value}; let anchor = tree::Anchor::from_bytes(shielded_data.shared_anchor.into()).unwrap(); @@ -199,7 +199,7 @@ type VerificationContext = Fallback< ServiceFn BoxFuture<'static, Result<(), BoxError>>>, >; -pub(crate) trait OrchardVerifier: OrchardFlavorExt { +pub(crate) trait OrchardVerifier: ShieldedDataFlavor { const ZSA_ENABLED: bool; fn get_verifying_key() -> &'static ItemVerifyingKey; diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 0450cbac49e..2a379dc96f3 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -18,7 +18,7 @@ use orchard::{ use rand::rngs::OsRng; use zebra_chain::{ - orchard::{OrchardFlavorExt, OrchardVanilla, ShieldedData}, + orchard::{OrchardVanilla, ShieldedData}, serialization::{ZcashDeserializeInto, ZcashSerialize}, }; @@ -27,7 +27,7 @@ use crate::primitives::halo2::*; // TODO: Add support for OrchardZSA (see OrchardVanilla and AssetBase::native() usage below) #[allow(dead_code, clippy::print_stdout)] fn generate_test_vectors() { - let proving_key = ProvingKey::build::<::Flavor>(); + let proving_key = ProvingKey::build::(); let rng = OsRng; @@ -62,8 +62,7 @@ fn generate_test_vectors() { .unwrap(); } - let bundle: Bundle<_, i64, ::Flavor> = - builder.build(rng).unwrap().0; + let bundle: Bundle<_, i64, OrchardVanilla> = builder.build(rng).unwrap().0; let bundle = bundle .create_proof(&proving_key, rng) diff --git a/zebra-state/src/service/non_finalized_state/chain.rs b/zebra-state/src/service/non_finalized_state/chain.rs index d0ce3eee904..80d3f042237 100644 --- a/zebra-state/src/service/non_finalized_state/chain.rs +++ b/zebra-state/src/service/non_finalized_state/chain.rs @@ -2076,11 +2076,11 @@ where } } -impl UpdateWith>> for Chain { +impl UpdateWith>> for Chain { #[instrument(skip(self, orchard_shielded_data))] fn update_chain_tip_with( &mut self, - orchard_shielded_data: &Option>, + orchard_shielded_data: &Option>, ) -> Result<(), ValidateContextError> { if let Some(orchard_shielded_data) = orchard_shielded_data { // We do note commitment tree updates in parallel rayon threads. @@ -2101,7 +2101,7 @@ impl UpdateWith>> #[instrument(skip(self, orchard_shielded_data))] fn revert_chain_with( &mut self, - orchard_shielded_data: &Option>, + orchard_shielded_data: &Option>, _position: RevertPosition, ) { if let Some(orchard_shielded_data) = orchard_shielded_data { From a11f356a59bad019df65cd21021341f02a7cdcd3 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 15 Mar 2025 09:46:16 +0100 Subject: [PATCH 173/230] Rename orchard_flavor_ext module to shielded_data_flavor --- zebra-chain/src/orchard.rs | 6 +++--- .../{orchard_flavor_ext.rs => shielded_data_flavor.rs} | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename zebra-chain/src/orchard/{orchard_flavor_ext.rs => shielded_data_flavor.rs} (100%) diff --git a/zebra-chain/src/orchard.rs b/zebra-chain/src/orchard.rs index c137e23527d..290ddb4931a 100644 --- a/zebra-chain/src/orchard.rs +++ b/zebra-chain/src/orchard.rs @@ -6,7 +6,7 @@ mod action; mod address; mod commitment; mod note; -mod orchard_flavor_ext; +mod shielded_data_flavor; mod sinsemilla; #[cfg(any(test, feature = "proptest-impl"))] @@ -23,10 +23,10 @@ pub use address::Address; pub use commitment::{CommitmentRandomness, NoteCommitment, ValueCommitment}; pub use keys::Diversifier; pub use note::{EncryptedNote, Note, Nullifier, WrappedNoteKey}; -pub use orchard_flavor_ext::{OrchardVanilla, ShieldedDataFlavor}; pub use shielded_data::{AuthorizedAction, Flags, ShieldedData}; +pub use shielded_data_flavor::{OrchardVanilla, ShieldedDataFlavor}; pub(crate) use shielded_data::ActionCommon; #[cfg(feature = "tx-v6")] -pub use orchard_flavor_ext::OrchardZSA; +pub use shielded_data_flavor::OrchardZSA; diff --git a/zebra-chain/src/orchard/orchard_flavor_ext.rs b/zebra-chain/src/orchard/shielded_data_flavor.rs similarity index 100% rename from zebra-chain/src/orchard/orchard_flavor_ext.rs rename to zebra-chain/src/orchard/shielded_data_flavor.rs From 6b76eb6eaa030c17946fe41a640630dad2db9c5e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 17 Mar 2025 08:16:38 +0100 Subject: [PATCH 174/230] Fix several comments --- zebra-chain/src/orchard_zsa.rs | 6 +++--- zebra-chain/src/orchard_zsa/burn.rs | 2 +- zebra-chain/src/transaction/serialize.rs | 10 +++------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index 69ed9b86f90..3d66c6d6cc6 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -1,11 +1,11 @@ //! OrchardZSA related functionality. -// FIXME: remove pub(crate) later if possible +// TODO: FIXME: remove pub(crate) later if possible #[cfg(any(test, feature = "proptest-impl"))] pub(crate) mod arbitrary; -/// FIXME: feature = "proptest-impl" and pub are needed to access test vectors from other crates, -/// remove it then +/// TODO: FIXME: feature = "proptest-impl" and pub are needed to access test vectors from +/// other crates, remove it later if possible #[cfg(any(test, feature = "proptest-impl"))] pub mod tests; diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index 028c8aa8282..3e6b91ce857 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -27,7 +27,7 @@ impl ZcashDeserialize for AssetBase { } } -// FIXME: use Amount insstead of Amount, remove both TryFrom<...> after that +// FIXME: use NoteValue instead of Amount, remove both TryFrom<...> after that /// Represents an OrchardZSA burn item. #[derive(Clone, Debug, PartialEq, Eq)] pub struct BurnItem(AssetBase, Amount); diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index 6efc0171fb7..fdecf4e3fef 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -860,10 +860,8 @@ impl ZcashSerialize for Transaction { orchard_shielded_data, orchard_zsa_issue_data, } => { - // FIXME: fix spec or use another link as the current version of the PDF - // doesn't contain V6 description. // Transaction V6 spec: - // https://zips.z.cash/protocol/protocol.pdf#txnencoding + // https://zips.z.cash/zip-0230#transaction-format // Denoted as `nVersionGroupId` in the spec. writer.write_u32::(TX_V6_VERSION_GROUP_ID)?; @@ -898,7 +896,7 @@ impl ZcashSerialize for Transaction { // `proofsOrchard`, `vSpendAuthSigsOrchard`, and `bindingSigOrchard`. orchard_shielded_data.zcash_serialize(&mut writer)?; - // TODO: FIXME: add ref to spec + // TODO: FIXME: add a comment and ref to spec orchard_zsa_issue_data.zcash_serialize(&mut writer)?; } } @@ -1160,10 +1158,8 @@ impl ZcashDeserialize for Transaction { // FIXME: implement a proper deserialization for V6 #[cfg(feature = "tx-v6")] (6, true) => { - // FIXME: fix spec or use another link as the current version of the PDF - // doesn't contain V6 description. // Transaction V6 spec: - // https://zips.z.cash/protocol/protocol.pdf#txnencoding + // https://zips.z.cash/zip-0230#transaction-format // Denoted as `nVersionGroupId` in the spec. let id = limited_reader.read_u32::()?; From 7313610c78123164120c9e0b65213d992f1ba8ce Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 17 Mar 2025 09:12:14 +0100 Subject: [PATCH 175/230] Use NoiteValue instead of Amount ffor BurnItem --- zebra-chain/src/orchard/commitment.rs | 6 +-- zebra-chain/src/orchard_zsa/burn.rs | 64 ++++++++++++++------------- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/zebra-chain/src/orchard/commitment.rs b/zebra-chain/src/orchard/commitment.rs index 2e6ea3ed32d..0724a2e9d1b 100644 --- a/zebra-chain/src/orchard/commitment.rs +++ b/zebra-chain/src/orchard/commitment.rs @@ -14,7 +14,7 @@ use halo2::{ use lazy_static::lazy_static; use rand_core::{CryptoRng, RngCore}; -use orchard::note::AssetBase; +use orchard::{note::AssetBase, value::NoteValue}; use crate::{ amount::Amount, @@ -255,8 +255,8 @@ impl ValueCommitment { /// Generate a new `ValueCommitment` from an existing `rcv on a `value` (ZSA version). #[cfg(feature = "tx-v6")] #[allow(non_snake_case)] - pub fn with_asset(rcv: pallas::Scalar, value: Amount, asset: &AssetBase) -> Self { - let v = pallas::Scalar::from(value); + pub fn with_asset(rcv: pallas::Scalar, value: NoteValue, asset: &AssetBase) -> Self { + let v = pallas::Scalar::from(value.inner()); let V_zsa = asset.cv_base(); Self::from(V_zsa * v + *R * rcv) } diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index 3e6b91ce857..e1fffd45002 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -27,32 +27,39 @@ impl ZcashDeserialize for AssetBase { } } -// FIXME: use NoteValue instead of Amount, remove both TryFrom<...> after that -/// Represents an OrchardZSA burn item. -#[derive(Clone, Debug, PartialEq, Eq)] -pub struct BurnItem(AssetBase, Amount); +// FIXME: Define BurnItem (or, even Burn/NoBurn) in Orchard and reuse it here? +/// Orchard ZSA burn item. +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub struct BurnItem(AssetBase, NoteValue); + +impl BurnItem { + /// Returns [`AssetBase`] being burned. + pub fn asset(&self) -> AssetBase { + self.0 + } -// Convert from burn item type used in `orchard` crate -impl TryFrom<(AssetBase, NoteValue)> for BurnItem { - type Error = crate::amount::Error; + /// Returns the amount being burned. + pub fn amount(&self) -> NoteValue { + self.1 + } - fn try_from(item: (AssetBase, NoteValue)) -> Result { - Ok(Self(item.0, item.1.inner().try_into()?)) + /// Returns the raw [`u64`] amount being burned. + pub fn raw_amount(&self) -> u64 { + self.1.inner() } } -impl TryFrom for (AssetBase, NoteValue) { - type Error = std::io::Error; +// Convert from burn item type used in `orchard` crate +impl From<(AssetBase, NoteValue)> for BurnItem { + fn from(item: (AssetBase, NoteValue)) -> Self { + Self(item.0, item.1) + } +} - fn try_from(item: BurnItem) -> Result { - Ok(( - item.0, - NoteValue::from_raw( - i64::from(item.1) - .try_into() - .map_err(|_| std::io::Error::from(std::io::ErrorKind::InvalidData))?, - ), - )) +// Convert to burn item type used in `orchard` crate +impl From for (AssetBase, NoteValue) { + fn from(item: BurnItem) -> Self { + (item.0, item.1) } } @@ -61,7 +68,7 @@ impl serde::Serialize for BurnItem { where S: serde::Serializer, { - (self.0.to_bytes(), &self.1).serialize(serializer) + (self.0.to_bytes(), &self.1.inner()).serialize(serializer) } } @@ -70,11 +77,12 @@ impl<'de> serde::Deserialize<'de> for BurnItem { where D: serde::Deserializer<'de>, { - let (asset_base_bytes, amount) = <([u8; 32], Amount)>::deserialize(deserializer)?; + let (asset_base_bytes, amount) = <([u8; 32], u64)>::deserialize(deserializer)?; Ok(BurnItem( + // FIXME: duplicates the body of AssetBase::zcash_deserialize? Option::from(AssetBase::from_bytes(&asset_base_bytes)) .ok_or_else(|| serde::de::Error::custom("Invalid orchard_zsa AssetBase"))?, - amount, + NoteValue::from_raw(amount), )) } } @@ -142,11 +150,7 @@ impl ZcashSerialize for Burn { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { write_burn( &mut writer, - &self - .0 - .iter() - .map(|item| item.clone().try_into()) - .collect::, _>>()?, + &self.0.iter().map(|item| (*item).into()).collect::>(), ) } } @@ -156,8 +160,8 @@ impl ZcashDeserialize for Burn { Ok(Burn( read_burn(&mut reader)? .into_iter() - .map(|item| item.try_into()) - .collect::, _>>()?, + .map(|item| item.into()) + .collect(), )) } } From b36a941c9dde2d6a04b1ce352741809b10456d22 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 17 Mar 2025 10:20:24 +0100 Subject: [PATCH 176/230] Fix compilation error --- zebra-chain/src/orchard_zsa/arbitrary.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/orchard_zsa/arbitrary.rs b/zebra-chain/src/orchard_zsa/arbitrary.rs index 0dc89ce7080..431b501ab8a 100644 --- a/zebra-chain/src/orchard_zsa/arbitrary.rs +++ b/zebra-chain/src/orchard_zsa/arbitrary.rs @@ -24,7 +24,7 @@ impl Arbitrary for BurnItem { // FIXME: should we filter/protect from including native assets into burn here? BundleArb::::arb_asset_to_burn() .prop_filter_map("Conversion to Amount failed", |(asset_base, value)| { - BurnItem::try_from((asset_base, value)).ok() + BurnItem::from((asset_base, value)).ok() }) .boxed() } From 543b7a6a2d13874059f8593d28f8d87f51133e49 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 17 Mar 2025 10:26:53 +0100 Subject: [PATCH 177/230] Fix compilation error (2) --- zebra-chain/src/orchard_zsa/arbitrary.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/arbitrary.rs b/zebra-chain/src/orchard_zsa/arbitrary.rs index 431b501ab8a..8970a3acb66 100644 --- a/zebra-chain/src/orchard_zsa/arbitrary.rs +++ b/zebra-chain/src/orchard_zsa/arbitrary.rs @@ -23,9 +23,7 @@ impl Arbitrary for BurnItem { // instead of filtering non-convertable values // FIXME: should we filter/protect from including native assets into burn here? BundleArb::::arb_asset_to_burn() - .prop_filter_map("Conversion to Amount failed", |(asset_base, value)| { - BurnItem::from((asset_base, value)).ok() - }) + .prop_map(|(asset_base, value)| BurnItem::from((asset_base, value))) .boxed() } From e80bc80d01049b58241bb24ad218112230c1d8da Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 2 Apr 2025 15:50:17 +0200 Subject: [PATCH 178/230] Refactor zebra-chain/src/transaction/serialize.rs (add comments, reduce code duplication) --- zebra-chain/src/transaction/serialize.rs | 61 ++++++++---------------- 1 file changed, 19 insertions(+), 42 deletions(-) diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index fdecf4e3fef..a8adc753206 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -11,7 +11,7 @@ use reddsa::{orchard::Binding, orchard::SpendAuth, Signature}; use crate::{ amount, block::MAX_BLOCK_BYTES, - orchard::{OrchardVanilla, OrchardZSA}, + orchard::{OrchardVanilla, OrchardZSA, ShieldedDataFlavor}, parameters::{OVERWINTER_VERSION_GROUP_ID, SAPLING_VERSION_GROUP_ID, TX_V5_VERSION_GROUP_ID}, primitives::{Halo2Proof, ZkSnarkProof}, serialization::{ @@ -328,7 +328,10 @@ impl ZcashDeserialize for Option> { } } -impl ZcashSerialize for Option> { +impl ZcashSerialize for Option> +where + orchard::ShieldedData: ZcashSerialize, +{ fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { match self { None => { @@ -387,35 +390,12 @@ impl ZcashSerialize for orchard::ShieldedData { } } -// FIXME: Try to avoid duplication with OrchardVanilla version -#[cfg(feature = "tx-v6")] -impl ZcashSerialize for Option> { - fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - match self { - None => { - // Denoted as `nActionsOrchard` in the spec. - zcash_serialize_empty_list(writer)?; - - // We don't need to write anything else here. - // "The fields flagsOrchard, valueBalanceOrchard, anchorOrchard, sizeProofsOrchard, - // proofsOrchard , and bindingSigOrchard are present if and only if nActionsOrchard > 0." - // `§` note of the second table of https://zips.z.cash/protocol/protocol.pdf#txnencoding - } - Some(orchard_shielded_data) => { - orchard_shielded_data.zcash_serialize(&mut writer)?; - } - } - - Ok(()) - } -} - // FIXME: Try to avoid duplication with OrchardVanilla version #[cfg(feature = "tx-v6")] #[allow(clippy::unwrap_in_result)] impl ZcashSerialize for orchard::ShieldedData { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { - // Exactly one action group for NU7 + // Denoted as `nActionGroupsOrchard` in the spec (ZIP 230) (must be one for V6/NU7). CompactSizeMessage::try_from(1) .expect("1 should convert to CompactSizeMessage") .zcash_serialize(&mut writer)?; @@ -440,7 +420,7 @@ impl ZcashSerialize for orchard::ShieldedData { // Denoted as `sizeProofsOrchard` and `proofsOrchard` in the spec. self.proof.zcash_serialize(&mut writer)?; - // Timelimit must be zero for NU7 + // Denoted as `nAGExpiryHeight` in the spec (ZIP 230) (must be zero for V6/NU7). writer.write_u32::(0)?; // Denoted as `vSpendAuthSigsOrchard` in the spec. @@ -540,15 +520,15 @@ impl ZcashDeserialize for Option> { #[cfg(feature = "tx-v6")] impl ZcashDeserialize for Option> { fn zcash_deserialize(mut reader: R) -> Result { - // FIXME: add a comment - let num_action_groups: usize = (&mut reader) + // Denoted as `nActionGroupsOrchard` in the spec (ZIP 230) (must be one for V6/NU7). + let n_action_groups: usize = (&mut reader) .zcash_deserialize_into::()? .into(); - if num_action_groups == 0 { + if n_action_groups == 0 { return Ok(None); - } else if num_action_groups != 1 { + } else if n_action_groups != 1 { return Err(SerializationError::Parse( - "A V6 transaction must contain exactly one action group", + "V6 transaction must contain exactly one action group", )); } @@ -577,12 +557,10 @@ impl ZcashDeserialize for Option> { // https://zips.z.cash/protocol/protocol.pdf#halo2encoding let proof: Halo2Proof = (&mut reader).zcash_deserialize_into()?; - // FIXME: add a comment - let timelimit = reader.read_u32::()?; - if timelimit != 0 { - return Err(SerializationError::Parse( - "Timelimit field must be set to zero", - )); + // Denoted as `nAGExpiryHeight` in the spec (ZIP 230) (must be zero for V6/NU7). + let n_ag_expiry_height = reader.read_u32::()?; + if n_ag_expiry_height != 0 { + return Err(SerializationError::Parse("nAGExpiryHeight for V6/NU7")); } // Denoted as `vSpendAuthSigsOrchard` in the spec. @@ -596,7 +574,7 @@ impl ZcashDeserialize for Option> { // Denoted as `valueBalanceOrchard` in the spec. let value_balance: amount::Amount = (&mut reader).zcash_deserialize_into()?; - // TODO: FIXME: add a proper comment + // Denoted as `vAssetBurn` in the spec (ZIP 230). let burn = (&mut reader).zcash_deserialize_into()?; // Denoted as `bindingSigOrchard` in the spec. @@ -896,7 +874,7 @@ impl ZcashSerialize for Transaction { // `proofsOrchard`, `vSpendAuthSigsOrchard`, and `bindingSigOrchard`. orchard_shielded_data.zcash_serialize(&mut writer)?; - // TODO: FIXME: add a comment and ref to spec + // OrchardZSA Issuance Fields. orchard_zsa_issue_data.zcash_serialize(&mut writer)?; } } @@ -1155,7 +1133,6 @@ impl ZcashDeserialize for Transaction { orchard_shielded_data, }) } - // FIXME: implement a proper deserialization for V6 #[cfg(feature = "tx-v6")] (6, true) => { // Transaction V6 spec: @@ -1199,7 +1176,7 @@ impl ZcashDeserialize for Transaction { // `proofsOrchard`, `vSpendAuthSigsOrchard`, and `bindingSigOrchard`. let orchard_shielded_data = (&mut limited_reader).zcash_deserialize_into()?; - // TODO: FIXME: add ref to spec + // OrchardZSA Issuance Fields. let orchard_zsa_issue_data = (&mut limited_reader).zcash_deserialize_into()?; Ok(Transaction::V6 { From 0f8ed6f0737f0869b7811014af3469e913369e68 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 18 Apr 2025 10:20:29 +0200 Subject: [PATCH 179/230] Add support of V6 to remove_orchard_conflicts proptest function in zebrad --- zebrad/src/components/mempool/storage/tests/prop.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/zebrad/src/components/mempool/storage/tests/prop.rs b/zebrad/src/components/mempool/storage/tests/prop.rs index 3b7fd40467c..6f492422a38 100644 --- a/zebrad/src/components/mempool/storage/tests/prop.rs +++ b/zebrad/src/components/mempool/storage/tests/prop.rs @@ -722,12 +722,11 @@ impl SpendConflictTestInput { .. } => Self::remove_orchard_actions_with_conflicts(orchard_shielded_data, &conflicts), - // FIXME: implement for V6 #[cfg(feature = "tx-v6")] Transaction::V6 { - orchard_shielded_data: _, + orchard_shielded_data, .. - } => {} + } => Self::remove_orchard_actions_with_conflicts(orchard_shielded_data, &conflicts), // No Spends Transaction::V1 { .. } @@ -742,8 +741,8 @@ impl SpendConflictTestInput { /// present in the `conflicts` set. /// /// This may clear the entire shielded data. - fn remove_orchard_actions_with_conflicts( - maybe_shielded_data: &mut Option>, + fn remove_orchard_actions_with_conflicts( + maybe_shielded_data: &mut Option>, conflicts: &HashSet, ) { if let Some(shielded_data) = maybe_shielded_data.take() { From 0c6aee6085e178641d6228b30eff078bcfca7eb2 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 18 Apr 2025 10:29:10 +0200 Subject: [PATCH 180/230] Fix to resolve some review comment for #37 --- zebra-chain/src/orchard/action.rs | 10 ++-- zebra-chain/src/orchard/arbitrary.rs | 13 +++--- zebra-chain/src/orchard/note/ciphertexts.rs | 2 +- zebra-chain/src/orchard/shielded_data.rs | 46 +++++++++---------- .../src/orchard/shielded_data_flavor.rs | 4 +- zebra-chain/src/orchard_zsa/arbitrary.rs | 2 +- zebra-chain/src/orchard_zsa/burn.rs | 6 +-- zebra-chain/src/parameters/transaction.rs | 2 +- zebra-chain/src/transaction/arbitrary.rs | 14 +++--- zebra-chain/src/transaction/serialize.rs | 4 +- zebra-consensus/src/primitives/halo2.rs | 2 +- .../src/service/non_finalized_state/chain.rs | 6 +-- .../components/mempool/storage/tests/prop.rs | 16 ++++++- 13 files changed, 70 insertions(+), 57 deletions(-) diff --git a/zebra-chain/src/orchard/action.rs b/zebra-chain/src/orchard/action.rs index 56dea3e94d5..f9e9ad9c0ec 100644 --- a/zebra-chain/src/orchard/action.rs +++ b/zebra-chain/src/orchard/action.rs @@ -22,7 +22,7 @@ use super::{ /// /// [actiondesc]: https://zips.z.cash/protocol/nu5.pdf#actiondesc #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] -pub struct Action { +pub struct Action { /// A value commitment to net value of the input note minus the output note pub cv: commitment::ValueCommitment, /// The nullifier of the input note being spent. @@ -36,14 +36,14 @@ pub struct Action { /// encrypted private key in `out_ciphertext`. pub ephemeral_key: keys::EphemeralPublicKey, /// A ciphertext component for the encrypted output note. - pub enc_ciphertext: FL::EncryptedNote, + pub enc_ciphertext: Flavor::EncryptedNote, /// A ciphertext component that allows the holder of a full viewing key to /// recover the recipient diversified transmission key and the ephemeral /// private key (and therefore the entire note plaintext). pub out_ciphertext: note::WrappedNoteKey, } -impl ZcashSerialize for Action { +impl ZcashSerialize for Action { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { self.cv.zcash_serialize(&mut writer)?; writer.write_all(&<[u8; 32]>::from(self.nullifier)[..])?; @@ -56,7 +56,7 @@ impl ZcashSerialize for Action { } } -impl ZcashDeserialize for Action { +impl ZcashDeserialize for Action { fn zcash_deserialize(mut reader: R) -> Result { // # Consensus // @@ -94,7 +94,7 @@ impl ZcashDeserialize for Action { // https://zips.z.cash/protocol/protocol.pdf#concretesym but fixed to // 580 bytes in https://zips.z.cash/protocol/protocol.pdf#outputencodingandconsensus // See [`note::EncryptedNote::zcash_deserialize`]. - enc_ciphertext: FL::EncryptedNote::zcash_deserialize(&mut reader)?, + enc_ciphertext: Flavor::EncryptedNote::zcash_deserialize(&mut reader)?, // Type is `Sym.C`, i.e. `𝔹^Y^{\[N\]}`, i.e. arbitrary-sized byte arrays // https://zips.z.cash/protocol/protocol.pdf#concretesym but fixed to // 80 bytes in https://zips.z.cash/protocol/protocol.pdf#outputencodingandconsensus diff --git a/zebra-chain/src/orchard/arbitrary.rs b/zebra-chain/src/orchard/arbitrary.rs index c1593f84f63..cede4a8c647 100644 --- a/zebra-chain/src/orchard/arbitrary.rs +++ b/zebra-chain/src/orchard/arbitrary.rs @@ -14,10 +14,9 @@ use super::{ ValueCommitment, }; -impl Arbitrary for Action -// FIXME: define the constraint in ShieldedDataFlavor? +impl Arbitrary for Action where - ::Strategy: 'static, + ::Strategy: 'static, { type Parameters = (); @@ -25,7 +24,7 @@ where ( any::(), any::(), - any::(), + any::(), any::(), ) .prop_map(|(nullifier, rk, enc_ciphertext, out_ciphertext)| Self { @@ -59,15 +58,15 @@ impl Arbitrary for note::Nullifier { type Strategy = BoxedStrategy; } -impl Arbitrary for AuthorizedAction +impl Arbitrary for AuthorizedAction // FIXME: define the constraint in ShieldedDataFlavor? where - ::Strategy: 'static, + ::Strategy: 'static, { type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - (any::>(), any::()) + (any::>(), any::()) .prop_map(|(action, spend_auth_sig)| Self { action, spend_auth_sig: spend_auth_sig.0, diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index b6754c5f0f1..b7376442920 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -9,7 +9,7 @@ use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize} /// A ciphertext component for encrypted output notes. /// /// Corresponds to the Orchard 'encCiphertext's -#[derive(Deserialize, Serialize, Copy, Clone, Debug, Eq, PartialEq)] +#[derive(Deserialize, Serialize, Clone, Debug, Eq, PartialEq)] pub struct EncryptedNote(#[serde(with = "BigArray")] pub(crate) [u8; N]); impl From<[u8; N]> for EncryptedNote { diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index 292ebe34266..317f4d36ac8 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -25,10 +25,10 @@ use super::{OrchardVanilla, ShieldedDataFlavor}; /// A bundle of [`Action`] descriptions and signature data. #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] #[serde(bound( - serialize = "FL::EncryptedNote: serde::Serialize, FL::BurnType: serde::Serialize", - deserialize = "FL::BurnType: serde::Deserialize<'de>" + serialize = "Flavor::EncryptedNote: serde::Serialize, Flavor::BurnType: serde::Serialize", + deserialize = "Flavor::BurnType: serde::Deserialize<'de>" ))] -pub struct ShieldedData { +pub struct ShieldedData { /// The orchard flags for this transaction. /// Denoted as `flagsOrchard` in the spec. pub flags: Flags, @@ -43,7 +43,7 @@ pub struct ShieldedData { pub proof: Halo2Proof, /// The Orchard Actions, in the order they appear in the transaction. /// Denoted as `vActionsOrchard` and `vSpendAuthSigsOrchard` in the spec. - pub actions: AtLeastOne>, + pub actions: AtLeastOne>, /// A signature on the transaction `sighash`. /// Denoted as `bindingSigOrchard` in the spec. pub binding_sig: Signature, @@ -51,10 +51,10 @@ pub struct ShieldedData { #[cfg(feature = "tx-v6")] /// Assets intended for burning /// Denoted as `vAssetBurn` in the spec (ZIP 230). - pub burn: FL::BurnType, + pub burn: Flavor::BurnType, } -impl fmt::Display for ShieldedData { +impl fmt::Display for ShieldedData { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let mut fmter = f.debug_struct("orchard::ShieldedData"); @@ -70,10 +70,10 @@ impl fmt::Display for ShieldedData { } } -impl ShieldedData { +impl ShieldedData { /// Iterate over the [`Action`]s for the [`AuthorizedAction`]s in this /// transaction, in the order they appear in it. - pub fn actions(&self) -> impl Iterator> { + pub fn actions(&self) -> impl Iterator> { self.actions.actions() } @@ -142,9 +142,9 @@ impl ShieldedData { } } -impl AtLeastOne> { +impl AtLeastOne> { /// Iterate over the [`Action`]s of each [`AuthorizedAction`]. - pub fn actions(&self) -> impl Iterator> { + pub fn actions(&self) -> impl Iterator> { self.iter() .map(|authorized_action| &authorized_action.action) } @@ -154,15 +154,15 @@ impl AtLeastOne> { /// /// Every authorized Orchard `Action` must have a corresponding `SpendAuth` signature. #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] -#[serde(bound = "FL::EncryptedNote: serde::Serialize")] -pub struct AuthorizedAction { +#[serde(bound = "Flavor::EncryptedNote: serde::Serialize")] +pub struct AuthorizedAction { /// The action description of this Action. - pub action: Action, + pub action: Action, /// The spend signature. pub spend_auth_sig: Signature, } -impl AuthorizedAction { +impl AuthorizedAction { // FIXME: change the comments below to fit both OrchardVanilla and OrchardZSA (refs to specs, 820 bytes etc.) /// The size of a single Action /// @@ -170,7 +170,7 @@ impl AuthorizedAction { /// [7.5 Action Description Encoding and Consensus][ps] /// /// [ps]: - pub const ACTION_SIZE: u64 = 5 * 32 + (FL::ENC_CIPHERTEXT_SIZE as u64) + 80; + pub const ACTION_SIZE: u64 = 5 * 32 + (Flavor::ENC_CIPHERTEXT_SIZE as u64) + 80; /// The size of a single `Signature`. /// @@ -196,16 +196,16 @@ impl AuthorizedAction { /// Split out the action and the signature for V5 transaction /// serialization. - pub fn into_parts(self) -> (Action, Signature) { + pub fn into_parts(self) -> (Action, Signature) { (self.action, self.spend_auth_sig) } // Combine the action and the spend auth sig from V5 transaction /// deserialization. pub fn from_parts( - action: Action, + action: Action, spend_auth_sig: Signature, - ) -> AuthorizedAction { + ) -> AuthorizedAction { AuthorizedAction { action, spend_auth_sig, @@ -225,8 +225,8 @@ pub struct ActionCommon { pub cm_x: pallas::Base, } -impl From<&Action> for ActionCommon { - fn from(action: &Action) -> Self { +impl From<&Action> for ActionCommon { + fn from(action: &Action) -> Self { Self { cv: action.cv, nullifier: action.nullifier, @@ -241,7 +241,7 @@ impl From<&Action> for ActionCommon { /// If a transaction contains more actions than can fit in maximally large block, it might be /// valid on the network and in the mempool, but it can never be mined into a block. So /// rejecting these large edge-case transactions can never break consensus. -impl TrustedPreallocate for Action { +impl TrustedPreallocate for Action { fn max_allocation() -> u64 { // # Consensus // @@ -257,8 +257,8 @@ impl TrustedPreallocate for Action { // https://users.rust-lang.org/t/how-do-i-static-assert-a-property-of-a-generic-u32-parameter/76307)? // The following expression doesn't work for generics, so a workaround with _ACTION_MAX_ALLOCATION_OK in // AuthorizedAction impl is used instead: - // static_assertions::const_assert!(AuthorizedAction::::ACTION_MAX_ALLOCATION < (1 << 16)); - AuthorizedAction::::ACTION_MAX_ALLOCATION + // static_assertions::const_assert!(AuthorizedAction::::ACTION_MAX_ALLOCATION < (1 << 16)); + AuthorizedAction::::ACTION_MAX_ALLOCATION } } diff --git a/zebra-chain/src/orchard/shielded_data_flavor.rs b/zebra-chain/src/orchard/shielded_data_flavor.rs index ec3bc24cb58..b58375e3fd5 100644 --- a/zebra-chain/src/orchard/shielded_data_flavor.rs +++ b/zebra-chain/src/orchard/shielded_data_flavor.rs @@ -65,13 +65,13 @@ pub trait ShieldedDataFlavor: OrchardFlavor { } impl ShieldedDataFlavor for OrchardVanilla { - type EncryptedNote = note::EncryptedNote<{ Self::ENC_CIPHERTEXT_SIZE }>; + type EncryptedNote = note::EncryptedNote<{ OrchardVanilla::ENC_CIPHERTEXT_SIZE }>; #[cfg(feature = "tx-v6")] type BurnType = NoBurn; } #[cfg(feature = "tx-v6")] impl ShieldedDataFlavor for OrchardZSA { - type EncryptedNote = note::EncryptedNote<{ Self::ENC_CIPHERTEXT_SIZE }>; + type EncryptedNote = note::EncryptedNote<{ OrchardZSA::ENC_CIPHERTEXT_SIZE }>; type BurnType = Burn; } diff --git a/zebra-chain/src/orchard_zsa/arbitrary.rs b/zebra-chain/src/orchard_zsa/arbitrary.rs index 8970a3acb66..bc3990fedb2 100644 --- a/zebra-chain/src/orchard_zsa/arbitrary.rs +++ b/zebra-chain/src/orchard_zsa/arbitrary.rs @@ -1,4 +1,4 @@ -//! Randomised data generation for Orchard ZSA types. +//! Randomised data generation for OrchardZSA types. use proptest::prelude::*; diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index e1fffd45002..bac80c6b791 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -1,4 +1,4 @@ -//! Orchard ZSA burn related functionality. +//! OrchardZSA burn related functionality. use std::io; @@ -28,7 +28,7 @@ impl ZcashDeserialize for AssetBase { } // FIXME: Define BurnItem (or, even Burn/NoBurn) in Orchard and reuse it here? -/// Orchard ZSA burn item. +/// OrchardZSA burn item. #[derive(Copy, Clone, Debug, PartialEq, Eq)] pub struct BurnItem(AssetBase, NoteValue); @@ -118,7 +118,7 @@ impl ZcashDeserialize for NoBurn { } } -/// Orchard ZSA burn items (assets intended for burning) +/// OrchardZSA burn items (assets intended for burning) #[derive(Default, Clone, Debug, PartialEq, Eq, Serialize)] pub struct Burn(Vec); diff --git a/zebra-chain/src/parameters/transaction.rs b/zebra-chain/src/parameters/transaction.rs index 0380fe0b5fa..bcc44cb4f6e 100644 --- a/zebra-chain/src/parameters/transaction.rs +++ b/zebra-chain/src/parameters/transaction.rs @@ -14,7 +14,7 @@ pub const TX_V5_VERSION_GROUP_ID: u32 = 0x26A7_270A; /// The version group ID for version 6 transactions. /// -/// Orchard ZSA transactions must use transaction version 6 and this version +/// OrchardZSA transactions must use transaction version 6 and this version /// group ID. // TODO: FIXME: use a proper value! #[cfg(feature = "tx-v6")] diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 4394e588c91..565e1f5946a 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -137,7 +137,7 @@ impl Transaction { /// Helper function to generate the common transaction fields. /// This function is generic over the Orchard shielded data type. - fn v5_v6_strategy_common( + fn v5_v6_strategy_common( ledger_state: LedgerState, ) -> impl Strategy< Value = ( @@ -147,7 +147,7 @@ impl Transaction { Vec, Vec, Option>, - Option>, + Option>, ), > + 'static { ( @@ -157,7 +157,7 @@ impl Transaction { transparent::Input::vec_strategy(&ledger_state, MAX_ARBITRARY_ITEMS), vec(any::(), 0..MAX_ARBITRARY_ITEMS), option::of(any::>()), - option::of(any::>()), + option::of(any::>()), ) .prop_map( move |( @@ -781,11 +781,11 @@ impl Arbitrary for sapling::TransferData { type Strategy = BoxedStrategy; } -impl Arbitrary for orchard::ShieldedData +impl Arbitrary for orchard::ShieldedData // FIXME: remove the following lines // FIXME: define the constraint in orchard::ShieldedDataFlavor? //where -// ::Strategy: 'static, +// ::Strategy: 'static, { type Parameters = (); @@ -796,12 +796,12 @@ impl Arbitrary for orchard::ShieldedD any::(), any::(), vec( - any::>(), + any::>(), 1..MAX_ARBITRARY_ITEMS, ), any::(), #[cfg(feature = "tx-v6")] - any::(), + any::(), ) .prop_map(|props| { #[cfg(not(feature = "tx-v6"))] diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index a8adc753206..fff5ab4cc1c 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -328,9 +328,9 @@ impl ZcashDeserialize for Option> { } } -impl ZcashSerialize for Option> +impl ZcashSerialize for Option> where - orchard::ShieldedData: ZcashSerialize, + orchard::ShieldedData: ZcashSerialize, { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { match self { diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index ea07b79a253..098ab42cc6b 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -80,7 +80,7 @@ lazy_static::lazy_static! { /// The halo2 proof verifying key for Orchard Vanilla pub static ref VERIFYING_KEY_VANILLA: ItemVerifyingKey = ItemVerifyingKey::build::(); - /// The halo2 proof verifying key for Orchard ZSA + /// The halo2 proof verifying key for OrchardZSA pub static ref VERIFYING_KEY_ZSA: ItemVerifyingKey = ItemVerifyingKey::build::(); } diff --git a/zebra-state/src/service/non_finalized_state/chain.rs b/zebra-state/src/service/non_finalized_state/chain.rs index 80d3f042237..662a450d1c9 100644 --- a/zebra-state/src/service/non_finalized_state/chain.rs +++ b/zebra-state/src/service/non_finalized_state/chain.rs @@ -2076,11 +2076,11 @@ where } } -impl UpdateWith>> for Chain { +impl UpdateWith>> for Chain { #[instrument(skip(self, orchard_shielded_data))] fn update_chain_tip_with( &mut self, - orchard_shielded_data: &Option>, + orchard_shielded_data: &Option>, ) -> Result<(), ValidateContextError> { if let Some(orchard_shielded_data) = orchard_shielded_data { // We do note commitment tree updates in parallel rayon threads. @@ -2101,7 +2101,7 @@ impl UpdateWith>, + orchard_shielded_data: &Option>, _position: RevertPosition, ) { if let Some(orchard_shielded_data) = orchard_shielded_data { diff --git a/zebrad/src/components/mempool/storage/tests/prop.rs b/zebrad/src/components/mempool/storage/tests/prop.rs index 6f492422a38..5c347aba2c6 100644 --- a/zebrad/src/components/mempool/storage/tests/prop.rs +++ b/zebrad/src/components/mempool/storage/tests/prop.rs @@ -446,7 +446,21 @@ enum SpendConflictTestInput { conflict: SpendConflictForTransactionV5, }, - // FIXME: add V6 test + + /// Test V6 transactions to include OrchardZSA nullifier conflicts. + V6 { + #[proptest( + strategy = "Transaction::v6_strategy(LedgerState::default()).prop_map(DisplayToDebug)" + )] + first: DisplayToDebug, + + #[proptest( + strategy = "Transaction::v6_strategy(LedgerState::default()).prop_map(DisplayToDebug)" + )] + second: DisplayToDebug, + + conflict: SpendConflictForTransactionV6, + }, } impl SpendConflictTestInput { From 50f1ef86bcd7440a642066f1f0c17bec087e8de6 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 18 Apr 2025 11:05:33 +0200 Subject: [PATCH 181/230] Update comments and rename some modules according to #37 review notes --- zebra-consensus/src/lib.rs | 2 +- zebra-consensus/src/{zsa.rs => orchard_zsa.rs} | 0 zebra-consensus/src/{zsa => orchard_zsa}/tests.rs | 2 -- zebra-network/src/constants.rs | 1 - zebrad/Cargo.toml | 1 - 5 files changed, 1 insertion(+), 5 deletions(-) rename zebra-consensus/src/{zsa.rs => orchard_zsa.rs} (100%) rename zebra-consensus/src/{zsa => orchard_zsa}/tests.rs (96%) diff --git a/zebra-consensus/src/lib.rs b/zebra-consensus/src/lib.rs index c61a1fe408d..d2e0eb46357 100644 --- a/zebra-consensus/src/lib.rs +++ b/zebra-consensus/src/lib.rs @@ -66,4 +66,4 @@ pub use router::RouterError; /// A boxed [`std::error::Error`]. pub type BoxError = Box; -mod zsa; +mod orchard_zsa; diff --git a/zebra-consensus/src/zsa.rs b/zebra-consensus/src/orchard_zsa.rs similarity index 100% rename from zebra-consensus/src/zsa.rs rename to zebra-consensus/src/orchard_zsa.rs diff --git a/zebra-consensus/src/zsa/tests.rs b/zebra-consensus/src/orchard_zsa/tests.rs similarity index 96% rename from zebra-consensus/src/zsa/tests.rs rename to zebra-consensus/src/orchard_zsa/tests.rs index dbea27190bb..4a6e32e0942 100644 --- a/zebra-consensus/src/zsa/tests.rs +++ b/zebra-consensus/src/orchard_zsa/tests.rs @@ -1,5 +1,3 @@ -// FIXME: consider merging it with router/tests.rs - use std::sync::Arc; use color_eyre::eyre::Report; diff --git a/zebra-network/src/constants.rs b/zebra-network/src/constants.rs index cc44c868da0..d9615131542 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -407,7 +407,6 @@ lazy_static! { /// Testnet network upgrades. // TODO: Change `Nu5` to `Nu6` after NU6 activation. // TODO: Move the value here to a field on `testnet::Parameters` (#8367) - // TODO: FIXME: Change `Nu...` to `Nu7` after NU7 activation? pub static ref INITIAL_MIN_NETWORK_PROTOCOL_VERSION: HashMap = { let mut hash_map = HashMap::new(); diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index fc1c8d4a889..503eb371f5b 100644 --- a/zebrad/Cargo.toml +++ b/zebrad/Cargo.toml @@ -52,7 +52,6 @@ features = [ [features] # In release builds, don't compile debug logging code, to improve performance. -#default = ["release_max_level_info", "progress-bar", "getblocktemplate-rpcs"] default = ["release_max_level_info", "progress-bar", "getblocktemplate-rpcs", "tx-v6"] # Default features for official ZF binary release builds From aeff48bb60600b7fc64a4973f1eaf33534d85e8c Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 18 Apr 2025 17:42:19 +0200 Subject: [PATCH 182/230] More updates according to #37 review notes --- zebra-chain/src/transaction/serialize.rs | 37 +++++-------------- zebra-chain/src/transaction/txid.rs | 3 +- .../block/subsidy/funding_streams/tests.rs | 1 - zebra-consensus/src/transaction.rs | 2 - 4 files changed, 11 insertions(+), 32 deletions(-) diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index fff5ab4cc1c..b75f2c1bf2b 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -9,9 +9,9 @@ use hex::FromHex; use reddsa::{orchard::Binding, orchard::SpendAuth, Signature}; use crate::{ - amount, block::MAX_BLOCK_BYTES, orchard::{OrchardVanilla, OrchardZSA, ShieldedDataFlavor}, + orchard_zsa::NoBurn, parameters::{OVERWINTER_VERSION_GROUP_ID, SAPLING_VERSION_GROUP_ID, TX_V5_VERSION_GROUP_ID}, primitives::{Halo2Proof, ZkSnarkProof}, serialization::{ @@ -390,7 +390,7 @@ impl ZcashSerialize for orchard::ShieldedData { } } -// FIXME: Try to avoid duplication with OrchardVanilla version +// TODO: FIXME: Try to avoid duplication with OrchardVanilla version #[cfg(feature = "tx-v6")] #[allow(clippy::unwrap_in_result)] impl ZcashSerialize for orchard::ShieldedData { @@ -468,7 +468,7 @@ impl ZcashDeserialize for Option> { let flags: orchard::Flags = (&mut reader).zcash_deserialize_into()?; // Denoted as `valueBalanceOrchard` in the spec. - let value_balance: amount::Amount = (&mut reader).zcash_deserialize_into()?; + let value_balance: Amount = (&mut reader).zcash_deserialize_into()?; // Denoted as `anchorOrchard` in the spec. // Consensus: type is `{0 .. 𝑞_ℙ − 1}`. See [`orchard::tree::Root::zcash_deserialize`]. @@ -505,7 +505,7 @@ impl ZcashDeserialize for Option> { Ok(Some(orchard::ShieldedData:: { flags, value_balance, - burn: Default::default(), + burn: NoBurn, shared_anchor, proof, actions, @@ -535,14 +535,6 @@ impl ZcashDeserialize for Option> { // Denoted as `nActionsOrchard` and `vActionsOrchard` in the spec. let actions: Vec> = (&mut reader).zcash_deserialize_into()?; - // # Consensus - // - // > Elements of an Action description MUST be canonical encodings of the types given above. - // - // https://zips.z.cash/protocol/protocol.pdf#actiondesc - // - // Some Action elements are validated in this function; they are described below. - // Denoted as `flagsOrchard` in the spec. // Consensus: type of each flag is 𝔹, i.e. a bit. This is enforced implicitly // in [`Flags::zcash_deserialized`]. @@ -560,19 +552,17 @@ impl ZcashDeserialize for Option> { // Denoted as `nAGExpiryHeight` in the spec (ZIP 230) (must be zero for V6/NU7). let n_ag_expiry_height = reader.read_u32::()?; if n_ag_expiry_height != 0 { - return Err(SerializationError::Parse("nAGExpiryHeight for V6/NU7")); + return Err(SerializationError::Parse( + "nAGExpiryHeight must be zero for NU7", + )); } // Denoted as `vSpendAuthSigsOrchard` in the spec. - // Consensus: this validates the `spendAuthSig` elements, whose type is - // SpendAuthSig^{Orchard}.Signature, i.e. - // B^Y^{[ceiling(ℓ_G/8) + ceiling(bitlength(𝑟_G)/8)]} i.e. 64 bytes - // See [`Signature::zcash_deserialize`]. let sigs: Vec> = zcash_deserialize_external_count(actions.len(), &mut reader)?; // Denoted as `valueBalanceOrchard` in the spec. - let value_balance: amount::Amount = (&mut reader).zcash_deserialize_into()?; + let value_balance: Amount = (&mut reader).zcash_deserialize_into()?; // Denoted as `vAssetBurn` in the spec (ZIP 230). let burn = (&mut reader).zcash_deserialize_into()?; @@ -838,9 +828,6 @@ impl ZcashSerialize for Transaction { orchard_shielded_data, orchard_zsa_issue_data, } => { - // Transaction V6 spec: - // https://zips.z.cash/zip-0230#transaction-format - // Denoted as `nVersionGroupId` in the spec. writer.write_u32::(TX_V6_VERSION_GROUP_ID)?; @@ -874,7 +861,8 @@ impl ZcashSerialize for Transaction { // `proofsOrchard`, `vSpendAuthSigsOrchard`, and `bindingSigOrchard`. orchard_shielded_data.zcash_serialize(&mut writer)?; - // OrchardZSA Issuance Fields. + // A bundle of OrchardZSA issuance fields denoted in the spec as `nIssueActions`, + // `vIssueActions`, `ik`, and `issueAuthSig`. orchard_zsa_issue_data.zcash_serialize(&mut writer)?; } } @@ -1237,11 +1225,6 @@ pub const MIN_TRANSPARENT_TX_V4_SIZE: u64 = MIN_TRANSPARENT_TX_SIZE + 4; /// v5 transactions also have an expiry height and a consensus branch ID. pub const MIN_TRANSPARENT_TX_V5_SIZE: u64 = MIN_TRANSPARENT_TX_SIZE + 4 + 4; -/// The minimum transaction size for v6 transactions. -/// -/// FIXME: uncomment this and specify a proper value and description. -//pub const MIN_TRANSPARENT_TX_V6_SIZE: u64 = MIN_TRANSPARENT_TX_V5_SIZE; - /// No valid Zcash message contains more transactions than can fit in a single block /// /// `tx` messages contain a single transaction, and `block` messages are limited to the maximum diff --git a/zebra-chain/src/transaction/txid.rs b/zebra-chain/src/transaction/txid.rs index f876407bde6..2b1f9d5b050 100644 --- a/zebra-chain/src/transaction/txid.rs +++ b/zebra-chain/src/transaction/txid.rs @@ -43,10 +43,9 @@ impl<'a> TxIdBuilder<'a> { Ok(Hash(hash_writer.finish())) } - // FIXME: fix spec refs below for V6 /// Compute the Transaction ID for transactions V5 to V6. /// In this case it's the hash of a tree of hashes of specific parts of the - /// transaction, as specified in ZIP-244 and ZIP-225. + /// transaction, as specified in ZIP-244 and ZIP-225 for Txv5 and ZIP-246 for TxV6. fn txid_v5_to_v6(self) -> Result { // The v5 txid (from ZIP-244) is computed using librustzcash. Convert the zebra // transaction to a librustzcash transaction. diff --git a/zebra-consensus/src/block/subsidy/funding_streams/tests.rs b/zebra-consensus/src/block/subsidy/funding_streams/tests.rs index 5cb8b3bc5f9..91faa923c93 100644 --- a/zebra-consensus/src/block/subsidy/funding_streams/tests.rs +++ b/zebra-consensus/src/block/subsidy/funding_streams/tests.rs @@ -8,7 +8,6 @@ use crate::block::subsidy::general::block_subsidy; use super::*; /// Checks that the Mainnet funding stream values are correct. -// FIXME: Would this work after Nu7 activation? #[test] fn test_funding_stream_values() -> Result<(), Report> { let _init_guard = zebra_test::init(); diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index 8c5a6d69c92..0fa9e56a9f7 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -857,8 +857,6 @@ where orchard_shielded_data, &shielded_sighash, )?)) - // FIXME: Do we need to verify IssueBundle here in a some way? - // FIXME: Do we need to verify burns (separately or inside verify_orchard_shielded_data)? } /// Verifies if a V6 `transaction` is supported by `network_upgrade`. From c0f9e90d76780c6adf93bf20536c44ed8e8e721e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 19 Apr 2025 21:33:32 +0200 Subject: [PATCH 183/230] Add OrchardZSA version of encrypted_ciphertext_roundtrip test --- zebra-chain/src/orchard/note/ciphertexts.rs | 60 +++++++++++++-------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index b7376442920..5e78d7724a9 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -99,36 +99,52 @@ impl ZcashDeserialize for WrappedNoteKey { } #[cfg(test)] -use crate::orchard::{OrchardVanilla, ShieldedDataFlavor}; - -#[cfg(test)] -use proptest::prelude::*; -#[cfg(test)] -proptest! { - - #[test] - fn encrypted_ciphertext_roundtrip(ec in any::<::EncryptedNote>()) { - let _init_guard = zebra_test::init(); - +mod tests { + use crate::{ + orchard::{OrchardVanilla, OrchardZSA, ShieldedDataFlavor, WrappedNoteKey}, + serialization::{ZcashDeserialize, ZcashSerialize}, + }; + + use proptest::prelude::*; + + fn roundtrip_encrypted_note(note: &EncryptedNote) -> EncryptedNote + where + EncryptedNote: ZcashSerialize + ZcashDeserialize, + { let mut data = Vec::new(); + note.zcash_serialize(&mut data) + .expect("EncryptedNote should serialize"); + EncryptedNote::zcash_deserialize(&data[..]) + .expect("randomized EncryptedNote should deserialize") + } - ec.zcash_serialize(&mut data).expect("EncryptedNote should serialize"); + proptest! { + #[test] + fn encrypted_ciphertext_roundtrip_orchard_vanilla(ec in any::<::EncryptedNote>()) { + let _init_guard = zebra_test::init(); + let ec2 = roundtrip_encrypted_note(&ec); + prop_assert_eq![ec, ec2]; + } - let ec2 = EncryptedNote::zcash_deserialize(&data[..]).expect("randomized EncryptedNote should deserialize"); - prop_assert_eq![ec, ec2]; - } + #[test] + fn encrypted_ciphertext_roundtrip_orchard_zsa(ec in any::<::EncryptedNote>()) { + let _init_guard = zebra_test::init(); + let ec2 = roundtrip_encrypted_note(&ec); + prop_assert_eq![ec, ec2]; + } - #[test] - fn out_ciphertext_roundtrip(oc in any::()) { - let _init_guard = zebra_test::init(); + #[test] + fn out_ciphertext_roundtrip(oc in any::()) { + let _init_guard = zebra_test::init(); - let mut data = Vec::new(); + let mut data = Vec::new(); - oc.zcash_serialize(&mut data).expect("WrappedNoteKey should serialize"); + oc.zcash_serialize(&mut data).expect("WrappedNoteKey should serialize"); - let oc2 = WrappedNoteKey::zcash_deserialize(&data[..]).expect("randomized WrappedNoteKey should deserialize"); + let oc2 = WrappedNoteKey::zcash_deserialize(&data[..]).expect("randomized WrappedNoteKey should deserialize"); - prop_assert_eq![oc, oc2]; + prop_assert_eq![oc, oc2]; + } } } From d82151d63205735b1d5f8aa1c1f501a9238be215 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 20 Apr 2025 00:25:34 +0200 Subject: [PATCH 184/230] Fix a couple of comments and orchard_zsa/tests items visibility according to #37 review remarks --- zebra-chain/src/orchard/shielded_data.rs | 11 ++++++----- zebra-chain/src/orchard_zsa/tests.rs | 9 +++------ .../orchard_zsa/tests/{blocks.rs => issue_blocks.rs} | 0 zebra-chain/src/orchard_zsa/tests/vectors.rs | 5 ++--- .../tests/vectors/{blocks.rs => issue_blocks.rs} | 3 +-- 5 files changed, 12 insertions(+), 16 deletions(-) rename zebra-chain/src/orchard_zsa/tests/{blocks.rs => issue_blocks.rs} (100%) rename zebra-chain/src/orchard_zsa/tests/vectors/{blocks.rs => issue_blocks.rs} (99%) diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index 317f4d36ac8..c18a5dbe21e 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -185,10 +185,11 @@ impl AuthorizedAction { /// Each serialized `Action` has a corresponding `Signature`. pub const AUTHORIZED_ACTION_SIZE: u64 = Self::ACTION_SIZE + Self::SPEND_AUTH_SIG_SIZE; - /// The maximum number of actions in the transaction. - // Since a serialized Vec uses at least one byte for its length, - // and the signature is required, - // a valid max allocation can never exceed this size + /// The maximum number of actions allowed in a transaction. + /// + /// A serialized `Vec` requires at least one byte for its length, + /// and each action must include a signature. Therefore, the maximum allocation + /// is constrained by these factors and cannot exceed this calculated size. pub const ACTION_MAX_ALLOCATION: u64 = (MAX_BLOCK_BYTES - 1) / Self::AUTHORIZED_ACTION_SIZE; // Ensure ACTION_MAX_ALLOCATION is less than 2^16 on compile time @@ -213,7 +214,7 @@ impl AuthorizedAction { } } -/// Non-generic fields of an `Action` used in `Transaction` methods. +/// The common field used both in Vanilla actions and ZSA actions. pub struct ActionCommon { /// A value commitment to net value of the input note minus the output note pub cv: ValueCommitment, diff --git a/zebra-chain/src/orchard_zsa/tests.rs b/zebra-chain/src/orchard_zsa/tests.rs index 6d78193546a..29dcc9b64e9 100644 --- a/zebra-chain/src/orchard_zsa/tests.rs +++ b/zebra-chain/src/orchard_zsa/tests.rs @@ -1,6 +1,3 @@ -/// FIXME: refactor orchard_zsa/tests (possibly move vectors to zebra-tests), remove cfg(test) here etc. -#[cfg(test)] -mod blocks; - -/// FIXME: pub is needed to access test vectors from other crates, remove it then -pub mod vectors; +/// FIXME: refactor orchard_zsa/tests (possibly use vectors from zebra-tests instead of redefining them here). +mod issue_blocks; +mod vectors; diff --git a/zebra-chain/src/orchard_zsa/tests/blocks.rs b/zebra-chain/src/orchard_zsa/tests/issue_blocks.rs similarity index 100% rename from zebra-chain/src/orchard_zsa/tests/blocks.rs rename to zebra-chain/src/orchard_zsa/tests/issue_blocks.rs diff --git a/zebra-chain/src/orchard_zsa/tests/vectors.rs b/zebra-chain/src/orchard_zsa/tests/vectors.rs index b893aa78dff..61e7b45fe88 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors.rs @@ -1,4 +1,3 @@ -mod blocks; +mod issue_blocks; -// FIXME: pub is needed to access test vectors from other crates, change it to pub(crate) then -pub use blocks::BLOCKS; +pub(crate) use issue_blocks::BLOCKS; diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs similarity index 99% rename from zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs rename to zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs index ad396377ace..9050790da14 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs @@ -1,5 +1,4 @@ -/// FIXME: pub is needed to access test vectors from other crates, change it to pub(crate) then -pub const BLOCKS: [&[u8]; 4] = [ +pub(crate) const BLOCKS: [&[u8]; 4] = [ // Genesis block &[], // Issuance block From 55c5c4b70018f04a0f1ae02b9d06ff4e0746e5a4 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 21 Apr 2025 07:57:23 +0200 Subject: [PATCH 185/230] Additional fixes according #37 review comments --- zebra-chain/src/orchard/shielded_data.rs | 16 +++--- zebra-chain/src/orchard_zsa.rs | 7 +-- zebra-chain/src/orchard_zsa/arbitrary.rs | 8 --- zebra-chain/src/orchard_zsa/burn.rs | 12 ++--- zebra-chain/src/orchard_zsa/issuance.rs | 2 +- zebra-chain/src/parameters/network/testnet.rs | 1 - .../src/primitives/zcash_note_encryption.rs | 50 ++++++++++--------- zebra-chain/src/transaction.rs | 10 ++-- zebra-chain/src/transaction/arbitrary.rs | 13 ++--- zebra-chain/src/transaction/tests/vectors.rs | 4 +- zebra-consensus/src/block/tests.rs | 4 +- .../components/mempool/storage/tests/prop.rs | 11 ++++ 12 files changed, 66 insertions(+), 72 deletions(-) diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index c18a5dbe21e..db5931fd4ff 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -115,15 +115,17 @@ impl ShieldedData { /// pub fn binding_verification_key(&self) -> reddsa::VerificationKeyBytes { let cv: ValueCommitment = self.actions().map(|action| action.cv).sum(); - let cv_balance: ValueCommitment = - ValueCommitment::new(pallas::Scalar::zero(), self.value_balance); + let cv_balance = ValueCommitment::new(pallas::Scalar::zero(), self.value_balance); - #[cfg(not(feature = "tx-v6"))] - let key_bytes: [u8; 32] = (cv - cv_balance).into(); + // For TX-V6 assign a proper value commitment to the burn + // otherwise use a zero value commitment + let burn_value_commitment = if cfg!(feature = "tx-v6") { + self.burn.clone().into() + } else { + ValueCommitment::new(pallas::Scalar::zero(), Amount::zero()) + }; - // FIXME: use asset to create ValueCommitment here for burns and above for value_balance? - #[cfg(feature = "tx-v6")] - let key_bytes: [u8; 32] = (cv - cv_balance - self.burn.clone().into()).into(); + let key_bytes: [u8; 32] = (cv - cv_balance - burn_value_commitment).into(); key_bytes.into() } diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index 3d66c6d6cc6..5d08cc63cf9 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -1,13 +1,10 @@ //! OrchardZSA related functionality. -// TODO: FIXME: remove pub(crate) later if possible #[cfg(any(test, feature = "proptest-impl"))] -pub(crate) mod arbitrary; +mod arbitrary; -/// TODO: FIXME: feature = "proptest-impl" and pub are needed to access test vectors from -/// other crates, remove it later if possible #[cfg(any(test, feature = "proptest-impl"))] -pub mod tests; +mod tests; mod burn; mod issuance; diff --git a/zebra-chain/src/orchard_zsa/arbitrary.rs b/zebra-chain/src/orchard_zsa/arbitrary.rs index bc3990fedb2..95091114260 100644 --- a/zebra-chain/src/orchard_zsa/arbitrary.rs +++ b/zebra-chain/src/orchard_zsa/arbitrary.rs @@ -4,7 +4,6 @@ use proptest::prelude::*; use orchard::{bundle::testing::BundleArb, issuance::testing::arb_signed_issue_bundle}; -// FIXME: consider using another value, i.e. define MAX_BURN_ITEMS constant for that use crate::transaction::arbitrary::MAX_ARBITRARY_ITEMS; use super::{ @@ -16,12 +15,6 @@ impl Arbitrary for BurnItem { type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - // FIXME: move arb_asset_to_burn out of BundleArb in orchard - // as it does not depend on flavor (we pinned it here OrchardVanilla - // just for certainty, as there's no difference, which flavor to use) - // FIXME: consider to use BurnItem(asset_base, value.try_into().expect("Invalid value for Amount")) - // instead of filtering non-convertable values - // FIXME: should we filter/protect from including native assets into burn here? BundleArb::::arb_asset_to_burn() .prop_map(|(asset_base, value)| BurnItem::from((asset_base, value))) .boxed() @@ -34,7 +27,6 @@ impl Arbitrary for NoBurn { type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - // FIXME: consider using this instead, for clarity: any::<()>().prop_map(|_| NoBurn).boxed() Just(Self).boxed() } diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index bac80c6b791..01cce6a8bdb 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -27,7 +27,7 @@ impl ZcashDeserialize for AssetBase { } } -// FIXME: Define BurnItem (or, even Burn/NoBurn) in Orchard and reuse it here? +// TODO: FIXME: Define BurnItem (or, even Burn/NoBurn) in Orchard and reuse it here? /// OrchardZSA burn item. #[derive(Copy, Clone, Debug, PartialEq, Eq)] pub struct BurnItem(AssetBase, NoteValue); @@ -79,7 +79,6 @@ impl<'de> serde::Deserialize<'de> for BurnItem { { let (asset_base_bytes, amount) = <([u8; 32], u64)>::deserialize(deserializer)?; Ok(BurnItem( - // FIXME: duplicates the body of AssetBase::zcash_deserialize? Option::from(AssetBase::from_bytes(&asset_base_bytes)) .ok_or_else(|| serde::de::Error::custom("Invalid orchard_zsa AssetBase"))?, NoteValue::from_raw(amount), @@ -87,15 +86,14 @@ impl<'de> serde::Deserialize<'de> for BurnItem { } } -/// A special marker type indicating the absence of a burn field in Orchard ShieldedData for `V5` transactions. -/// Useful for unifying ShieldedData serialization and deserialization implementations across various -/// Orchard protocol variants (i.e. various transaction versions). +/// A special marker type indicating the absence of a burn field in Orchard ShieldedData for `V5` +/// transactions. It is unifying handling and serialization of ShieldedData across various Orchard +/// protocol variants. #[derive(Default, Clone, Debug, PartialEq, Eq, Serialize)] pub struct NoBurn; impl From for ValueCommitment { fn from(_burn: NoBurn) -> ValueCommitment { - // FIXME: is there a simpler way to get zero ValueCommitment? ValueCommitment::new(pallas::Scalar::zero(), Amount::zero()) } } @@ -128,12 +126,12 @@ impl From> for Burn { } } -// FIXME: consider conversion from reference to Burn instead, to avoid using `clone` when it's called impl From for ValueCommitment { fn from(burn: Burn) -> ValueCommitment { burn.0 .into_iter() .map(|BurnItem(asset, amount)| { + // The trapdoor for the burn which is public is always zero. ValueCommitment::with_asset(pallas::Scalar::zero(), amount, &asset) }) .sum() diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index 229ac523778..e275fea2d4b 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -38,7 +38,7 @@ impl IssueData { pub(crate) fn note_commitments(&self) -> impl Iterator + '_ { self.0.actions().iter().flat_map(|action| { action.notes().iter().map(|note| { - // FIXME: Make `ExtractedNoteCommitment::inner` public in `orchard` (this would + // TODO: FIXME: Make `ExtractedNoteCommitment::inner` public in `orchard` (this would // eliminate the need for the workaround of converting `pallas::Base` from bytes // here), or introduce a new public method in `orchard::issuance::IssueBundle` to // retrieve note commitments directly from `orchard`. diff --git a/zebra-chain/src/parameters/network/testnet.rs b/zebra-chain/src/parameters/network/testnet.rs index f6153c8b304..dc1b4c83e28 100644 --- a/zebra-chain/src/parameters/network/testnet.rs +++ b/zebra-chain/src/parameters/network/testnet.rs @@ -787,7 +787,6 @@ impl Network { /// Returns post-Canopy funding streams for this network at the provided height pub fn funding_streams(&self, height: Height) -> &FundingStreams { - // FIXME: Would this work after Nu7 activation? if NetworkUpgrade::current(self, height) < NetworkUpgrade::Nu6 { self.pre_nu6_funding_streams() } else { diff --git a/zebra-chain/src/primitives/zcash_note_encryption.rs b/zebra-chain/src/primitives/zcash_note_encryption.rs index 1b6673d5e11..1e19fe7c5ae 100644 --- a/zebra-chain/src/primitives/zcash_note_encryption.rs +++ b/zebra-chain/src/primitives/zcash_note_encryption.rs @@ -15,27 +15,7 @@ use orchard::{ use zcash_primitives::transaction::OrchardBundle; -fn orchard_bundle_decrypts_successfully( - bundle: &Bundle, -) -> bool { - for act in bundle.actions() { - if zcash_note_encryption::try_output_recovery_with_ovk( - &orchard::domain::OrchardDomain::for_action(act), - &orchard::keys::OutgoingViewingKey::from([0u8; 32]), - act, - act.cv_net(), - &act.encrypted_note().out_ciphertext, - ) - .is_none() - { - return false; - } - } - - true -} - -/// Returns true if all Sapling or Orchard outputs, if any, decrypt successfully with +/// Returns true if **all** Sapling or Orchard outputs decrypt successfully with /// an all-zeroes outgoing viewing key. /// /// # Panics @@ -76,10 +56,34 @@ pub fn decrypts_successfully(transaction: &Transaction, network: &Network, heigh } if let Some(bundle) = alt_tx.orchard_bundle() { - if !match bundle { + let is_decrypted_successfully = match bundle { OrchardBundle::OrchardVanilla(bundle) => orchard_bundle_decrypts_successfully(bundle), OrchardBundle::OrchardZSA(bundle) => orchard_bundle_decrypts_successfully(bundle), - } { + }; + + if is_decrypted_successfully { + return false; + } + } + + true +} + +/// Used internally to avoid code duplication when decrypting both OrchardVanilla and +/// OrchardZSA bundles, since they wrap different types but share identical behavior. +fn orchard_bundle_decrypts_successfully( + bundle: &Bundle, +) -> bool { + for act in bundle.actions() { + if zcash_note_encryption::try_output_recovery_with_ovk( + &orchard::domain::OrchardDomain::for_action(act), + &orchard::keys::OutgoingViewingKey::from([0u8; 32]), + act, + act.cv_net(), + &act.encrypted_note().out_ciphertext, + ) + .is_none() + { return false; } } diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 5a96cc530af..afb13462851 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -210,7 +210,6 @@ pub enum Transaction { /// The orchard data for this transaction, if any. orchard_shielded_data: Option>, }, - // FIXME: implement V6 properly (now it's just a copy of V5) /// A `version = 6` transaction , OrchardZSA, Orchard, Sapling and transparent, but not Sprout. #[cfg(feature = "tx-v6")] V6 { @@ -1019,20 +1018,17 @@ impl Transaction { // orchard - /// Iterate over the [`orchard::Action`]s in this transaction, if there are any, - /// regardless of version. + /// Iterate over the [`orchard::Action`]s in this transaction. pub fn orchard_actions(&self) -> Box + '_> { orchard_shielded_data_iter!(self, orchard::ShieldedData::action_commons) } - /// Access the [`orchard::Nullifier`]s in this transaction, if there are any, - /// regardless of version. + /// Access the [`orchard::Nullifier`]s in this transaction. pub fn orchard_nullifiers(&self) -> Box + '_> { orchard_shielded_data_iter!(self, orchard::ShieldedData::nullifiers) } - /// Access the note commitments in this transaction, if there are any, - /// regardless of version. + /// Access the note commitments in this transaction. pub fn orchard_note_commitments(&self) -> Box + '_> { match self { Transaction::V1 { .. } diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 565e1f5946a..f85f54bd8e8 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -781,12 +781,7 @@ impl Arbitrary for sapling::TransferData { type Strategy = BoxedStrategy; } -impl Arbitrary for orchard::ShieldedData -// FIXME: remove the following lines -// FIXME: define the constraint in orchard::ShieldedDataFlavor? -//where -// ::Strategy: 'static, -{ +impl Arbitrary for orchard::ShieldedData { type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { @@ -953,7 +948,7 @@ impl Arbitrary for VerifiedUnminedTx { /// Convert `trans` into a fake v5 transaction, /// converting sapling shielded data from v4 to v5 if possible. -pub fn transaction_to_fake_min_v5( +pub fn transaction_to_fake_v5( trans: &Transaction, network: &Network, height: block::Height, @@ -1023,7 +1018,7 @@ pub fn transaction_to_fake_min_v5( }, v5 @ V5 { .. } => v5.clone(), #[cfg(feature = "tx-v6")] - _v6 @ V6 { .. } => panic!("V6 transactions are not supported in this test!"), + _ => panic!(" other transaction versions are not supported"), } } @@ -1107,7 +1102,7 @@ pub fn fake_v5_transactions_for_network<'b>( blocks: impl DoubleEndedIterator + 'b, ) -> impl DoubleEndedIterator + 'b { transactions_from_blocks(blocks) - .map(move |(height, transaction)| transaction_to_fake_min_v5(&transaction, network, height)) + .map(move |(height, transaction)| transaction_to_fake_v5(&transaction, network, height)) } /// Generate an iterator over ([`block::Height`], [`Arc`]). diff --git a/zebra-chain/src/transaction/tests/vectors.rs b/zebra-chain/src/transaction/tests/vectors.rs index 0d42b483d7f..9e0af8adf63 100644 --- a/zebra-chain/src/transaction/tests/vectors.rs +++ b/zebra-chain/src/transaction/tests/vectors.rs @@ -371,7 +371,7 @@ fn fake_v5_round_trip_for_network(network: Network) { .transactions .iter() .map(AsRef::as_ref) - .map(|t| arbitrary::transaction_to_fake_min_v5(t, &network, Height(*height))) + .map(|t| arbitrary::transaction_to_fake_v5(t, &network, Height(*height))) .map(Into::into) .collect(); @@ -516,7 +516,7 @@ fn fake_v5_librustzcash_round_trip_for_network(network: Network) { .transactions .iter() .map(AsRef::as_ref) - .map(|t| arbitrary::transaction_to_fake_min_v5(t, &network, Height(*height))) + .map(|t| arbitrary::transaction_to_fake_v5(t, &network, Height(*height))) .map(Into::into) .collect(); diff --git a/zebra-consensus/src/block/tests.rs b/zebra-consensus/src/block/tests.rs index 7f42801a4ff..e6eb6f2c4b9 100644 --- a/zebra-consensus/src/block/tests.rs +++ b/zebra-consensus/src/block/tests.rs @@ -14,7 +14,7 @@ use zebra_chain::{ }, parameters::NetworkUpgrade, serialization::{ZcashDeserialize, ZcashDeserializeInto}, - transaction::{arbitrary::transaction_to_fake_min_v5, LockTime, Transaction}, + transaction::{arbitrary::transaction_to_fake_v5, LockTime, Transaction}, work::difficulty::{ParameterDifficulty as _, INVALID_COMPACT_DIFFICULTY}, }; use zebra_script::CachedFfiTransaction; @@ -664,7 +664,7 @@ fn merkle_root_fake_v5_for_network(network: Network) -> Result<(), Report> { .transactions .iter() .map(AsRef::as_ref) - .map(|t| transaction_to_fake_min_v5(t, &network, Height(*height))) + .map(|t| transaction_to_fake_v5(t, &network, Height(*height))) .map(Into::into) .collect(); diff --git a/zebrad/src/components/mempool/storage/tests/prop.rs b/zebrad/src/components/mempool/storage/tests/prop.rs index 5c347aba2c6..874d21a76ca 100644 --- a/zebrad/src/components/mempool/storage/tests/prop.rs +++ b/zebrad/src/components/mempool/storage/tests/prop.rs @@ -485,6 +485,16 @@ impl SpendConflictTestInput { conflict.clone().apply_to(&mut first); conflict.apply_to(&mut second); + (first, second) + } + SpendConflictTestInput::V6 { + mut first, + mut second, + conflict, + } => { + conflict.clone().apply_to(&mut first); + conflict.apply_to(&mut second); + (first, second) } }; @@ -512,6 +522,7 @@ impl SpendConflictTestInput { let (mut first, mut second) = match self { SpendConflictTestInput::V4 { first, second, .. } => (first, second), SpendConflictTestInput::V5 { first, second, .. } => (first, second), + SpendConflictTestInput::V6 { first, second, .. } => (first, second), }; Self::remove_transparent_conflicts(&mut first, &mut second); From f5a6f8404f9d513359912f55dffd72cd0e5870c8 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 21 Apr 2025 08:52:36 +0200 Subject: [PATCH 186/230] Add support of V6 to property tests for mempool storage in zebrad --- .../components/mempool/storage/tests/prop.rs | 44 +++++++++++++++++-- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/zebrad/src/components/mempool/storage/tests/prop.rs b/zebrad/src/components/mempool/storage/tests/prop.rs index 874d21a76ca..11efd783362 100644 --- a/zebrad/src/components/mempool/storage/tests/prop.rs +++ b/zebrad/src/components/mempool/storage/tests/prop.rs @@ -448,6 +448,7 @@ enum SpendConflictTestInput { }, /// Test V6 transactions to include OrchardZSA nullifier conflicts. + #[cfg(feature = "tx-v6")] V6 { #[proptest( strategy = "Transaction::v6_strategy(LedgerState::default()).prop_map(DisplayToDebug)" @@ -487,6 +488,7 @@ impl SpendConflictTestInput { (first, second) } + #[cfg(feature = "tx-v6")] SpendConflictTestInput::V6 { mut first, mut second, @@ -522,6 +524,7 @@ impl SpendConflictTestInput { let (mut first, mut second) = match self { SpendConflictTestInput::V4 { first, second, .. } => (first, second), SpendConflictTestInput::V5 { first, second, .. } => (first, second), + #[cfg(feature = "tx-v6")] SpendConflictTestInput::V6 { first, second, .. } => (first, second), }; @@ -801,7 +804,16 @@ enum SpendConflictForTransactionV4 { enum SpendConflictForTransactionV5 { Transparent(Box), Sapling(Box>), - Orchard(Box), + Orchard(Box>), +} + +/// A spend conflict valid for V6 transactions. +#[cfg(feature = "tx-v6")] +#[derive(Arbitrary, Clone, Debug)] +enum SpendConflictForTransactionV6 { + Transparent(Box), + Sapling(Box>), + Orchard(Box>), } /// A conflict caused by spending the same UTXO. @@ -824,11 +836,10 @@ struct SaplingSpendConflict { fallback_shielded_data: DisplayToDebug>, } -// FIXME: make it a generic to support V6 /// A conflict caused by revealing the same Orchard nullifier. #[derive(Arbitrary, Clone, Debug)] -struct OrchardSpendConflict { - new_shielded_data: DisplayToDebug>, +struct OrchardSpendConflict { + new_shielded_data: DisplayToDebug>, } impl SpendConflictForTransactionV4 { @@ -879,6 +890,31 @@ impl SpendConflictForTransactionV5 { } } +#[cfg(feature = "tx-v6")] +impl SpendConflictForTransactionV6 { + /// Apply a spend conflict to a V6 transaction. + /// + /// Changes the `transaction_v6` to include the spend that will result in a conflict. + pub fn apply_to(self, transaction_v6: &mut Transaction) { + let (inputs, sapling_shielded_data, orchard_shielded_data) = match transaction_v6 { + Transaction::V6 { + inputs, + sapling_shielded_data, + orchard_shielded_data, + .. + } => (inputs, sapling_shielded_data, orchard_shielded_data), + _ => unreachable!("incorrect transaction version generated for test"), + }; + + use SpendConflictForTransactionV6::*; + match self { + Transparent(transparent_conflict) => transparent_conflict.apply_to(inputs), + Sapling(sapling_conflict) => sapling_conflict.apply_to(sapling_shielded_data), + Orchard(orchard_conflict) => orchard_conflict.apply_to(orchard_shielded_data), + } + } +} + impl TransparentSpendConflict { /// Apply a transparent spend conflict. /// From 08ed883dec4528ed55049b4fad6e49a19fecca4d Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 21 Apr 2025 11:06:15 +0200 Subject: [PATCH 187/230] Add comments according to #37 review --- zebra-chain/src/transaction.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index afb13462851..9cf1b5aff50 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -53,8 +53,8 @@ use crate::{ value_balance::{ValueBalance, ValueBalanceError}, }; -// FIXME: doc this -// Move down +// Macro to iterate Orchard shielded data via mapper (avoids repeating the +// same long match block). Empty for Tx V1–V4. macro_rules! orchard_shielded_data_iter { ($self:expr, $mapper:expr) => { match $self { @@ -78,8 +78,8 @@ macro_rules! orchard_shielded_data_iter { }; } -// FIXME: doc this -// Move down +// Macro to to get an Orchard shielded data field (avoids repeating the +// same long match block). Empty for Tx V1–V4. macro_rules! orchard_shielded_data_field { ($self:expr, $field:ident) => { match $self { @@ -103,8 +103,8 @@ macro_rules! orchard_shielded_data_field { }; } -// FIXME: -// Define the macro for including the V6 pattern +// Define the macro to include the V6 variant. +// Needed only with the `tx-v6` feature to avoid duplicating code. #[cfg(feature = "tx-v6")] macro_rules! tx_v5_and_v6 { { $($fields:tt)* } => { @@ -112,6 +112,7 @@ macro_rules! tx_v5_and_v6 { }; } +/// Same as above, without the V6 arm. #[cfg(not(feature = "tx-v6"))] macro_rules! tx_v5_and_v6 { { $($fields:tt)* } => { From 3338ef091a676f0e04f04ec174d88f4d93056e18 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 21 Apr 2025 11:06:59 +0200 Subject: [PATCH 188/230] Add v6_strategy to zebra-chain/src/transaction/arbitrary code --- zebra-chain/src/transaction/arbitrary.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index f85f54bd8e8..d49cc36a5f7 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -875,13 +875,19 @@ impl Arbitrary for Transaction { NetworkUpgrade::Blossom | NetworkUpgrade::Heartwood | NetworkUpgrade::Canopy => { Self::v4_strategy(ledger_state) } - // FIXME: should v6_strategy be included here? - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => prop_oneof![ + #[cfg(not(feature = "tx-v6"))] + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => prop_oneof![ Self::v4_strategy(ledger_state.clone()), Self::v5_strategy(ledger_state) ] .boxed(), - // FIXME: process NetworkUpgrade::Nu7 properly, with v6 strategy + #[cfg(feature = "tx-v6")] + NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => prop_oneof![ + Self::v4_strategy(ledger_state.clone()), + Self::v5_strategy(ledger_state.clone()), + Self::v6_strategy(ledger_state) + ] + .boxed(), } } From a6519ff1fbbe52a6c390722204eb31393ab68b6f Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 21 Apr 2025 11:07:19 +0200 Subject: [PATCH 189/230] Fix compilation errors --- zebrad/src/components/mempool/storage/tests/prop.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/zebrad/src/components/mempool/storage/tests/prop.rs b/zebrad/src/components/mempool/storage/tests/prop.rs index 11efd783362..eaf99bb8ad9 100644 --- a/zebrad/src/components/mempool/storage/tests/prop.rs +++ b/zebrad/src/components/mempool/storage/tests/prop.rs @@ -838,7 +838,8 @@ struct SaplingSpendConflict { /// A conflict caused by revealing the same Orchard nullifier. #[derive(Arbitrary, Clone, Debug)] -struct OrchardSpendConflict { +#[proptest(no_bound)] +struct OrchardSpendConflict { new_shielded_data: DisplayToDebug>, } @@ -1001,7 +1002,7 @@ impl SaplingSpendConflict { } } -impl OrchardSpendConflict { +impl OrchardSpendConflict { /// Apply a Orchard spend conflict. /// /// Ensures that a transaction's `orchard_shielded_data` has a nullifier used to represent a @@ -1010,10 +1011,7 @@ impl OrchardSpendConflict { /// the new action is inserted in the transaction. /// /// The transaction will then conflict with any other transaction with the same new nullifier. - pub fn apply_to( - self, - orchard_shielded_data: &mut Option>, - ) { + pub fn apply_to(self, orchard_shielded_data: &mut Option>) { if let Some(shielded_data) = orchard_shielded_data.as_mut() { shielded_data.actions.first_mut().action.nullifier = self.new_shielded_data.actions.first().action.nullifier; From 22f7ccc718b8c1737411a11c076b177ebe5a23e2 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 21 Apr 2025 15:50:43 +0200 Subject: [PATCH 190/230] Fix a mistake in zebra-chain/src/primitives/zcash_note_encryption --- zebra-chain/src/primitives/zcash_note_encryption.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/primitives/zcash_note_encryption.rs b/zebra-chain/src/primitives/zcash_note_encryption.rs index 1e19fe7c5ae..d76d8f802ad 100644 --- a/zebra-chain/src/primitives/zcash_note_encryption.rs +++ b/zebra-chain/src/primitives/zcash_note_encryption.rs @@ -61,7 +61,7 @@ pub fn decrypts_successfully(transaction: &Transaction, network: &Network, heigh OrchardBundle::OrchardZSA(bundle) => orchard_bundle_decrypts_successfully(bundle), }; - if is_decrypted_successfully { + if !is_decrypted_successfully { return false; } } From b58c8b29eb51c57dce44a7b9690ae8d185515f89 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 21 Apr 2025 15:53:28 +0200 Subject: [PATCH 191/230] Fix compilation warnings --- zebra-chain/src/orchard_zsa.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index 5d08cc63cf9..74fda4202a5 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -3,7 +3,7 @@ #[cfg(any(test, feature = "proptest-impl"))] mod arbitrary; -#[cfg(any(test, feature = "proptest-impl"))] +#[cfg(test)] mod tests; mod burn; From 837395e85dfffab459202f6343eac62f64db7673 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 21 Apr 2025 16:52:37 +0200 Subject: [PATCH 192/230] Comment out v6_strategy usage in zebra-chain/src/transaction/arbitrary.rs as it causes several tests to fail --- zebra-chain/src/transaction/arbitrary.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index d49cc36a5f7..74829f5e573 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -885,7 +885,9 @@ impl Arbitrary for Transaction { NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => prop_oneof![ Self::v4_strategy(ledger_state.clone()), Self::v5_strategy(ledger_state.clone()), - Self::v6_strategy(ledger_state) + // FIXME: uncommenting this causes several tests in zebra-state (e.g., + // finalized_equals_pushed_genesis) to fail. + //Self::v6_strategy(ledger_state) ] .boxed(), } From adcc967c3b45d10366e9bae179cec90e9976cab2 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 21 Apr 2025 17:55:55 +0200 Subject: [PATCH 193/230] Fix cargo fmt issue --- zebra-state/src/service/non_finalized_state/chain.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/zebra-state/src/service/non_finalized_state/chain.rs b/zebra-state/src/service/non_finalized_state/chain.rs index 662a450d1c9..0bb9d52929a 100644 --- a/zebra-state/src/service/non_finalized_state/chain.rs +++ b/zebra-state/src/service/non_finalized_state/chain.rs @@ -2076,7 +2076,9 @@ where } } -impl UpdateWith>> for Chain { +impl UpdateWith>> + for Chain +{ #[instrument(skip(self, orchard_shielded_data))] fn update_chain_tip_with( &mut self, From 5de8fbd7629b9d161a4887fda2a419eea724cbd9 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 23 Apr 2025 22:36:26 +0200 Subject: [PATCH 194/230] Fix and return support of Nu7/V6 (i.e. a call of v6_strategy) to Transaction::arbitrary_with function in zebra-chain/src/transaction/arbitrary.rs --- zebra-chain/src/transaction/arbitrary.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 74829f5e573..d9f2bbeb417 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -875,19 +875,16 @@ impl Arbitrary for Transaction { NetworkUpgrade::Blossom | NetworkUpgrade::Heartwood | NetworkUpgrade::Canopy => { Self::v4_strategy(ledger_state) } - #[cfg(not(feature = "tx-v6"))] NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 => prop_oneof![ Self::v4_strategy(ledger_state.clone()), Self::v5_strategy(ledger_state) ] .boxed(), #[cfg(feature = "tx-v6")] - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => prop_oneof![ + NetworkUpgrade::Nu7 => prop_oneof![ Self::v4_strategy(ledger_state.clone()), Self::v5_strategy(ledger_state.clone()), - // FIXME: uncommenting this causes several tests in zebra-state (e.g., - // finalized_equals_pushed_genesis) to fail. - //Self::v6_strategy(ledger_state) + Self::v6_strategy(ledger_state) ] .boxed(), } From 672d4a81a1926ac31ae34d6821429adaca761fce Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 24 Apr 2025 16:11:27 +0200 Subject: [PATCH 195/230] Ensure orchard_shielded_data can not be None for V6 in v6_strategy of zebra-chain/src/transaction/arbitrary.rs --- zebra-chain/src/transaction/arbitrary.rs | 26 ++++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index d9f2bbeb417..517419f8aeb 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -233,13 +233,11 @@ impl Transaction { pub fn v6_strategy(ledger_state: LedgerState) -> BoxedStrategy { Self::v5_v6_strategy_common::(ledger_state) .prop_flat_map(|common_fields| { - // FIXME: Can IssueData present in V6 transaction without orchard::ShieldedData? - // If no, we possibly need to use something like prop_filter_map to filter wrong - // combnations (orchard_shielded_data: None, orchard_zsa_issue_data: Some) option::of(any::()) .prop_map(move |issue_data| (common_fields.clone(), issue_data)) }) - .prop_map( + .prop_filter_map( + "orchard_shielded_data can not be None for V6", |( ( network_upgrade, @@ -251,15 +249,17 @@ impl Transaction { orchard_shielded_data, ), orchard_zsa_issue_data, - )| Transaction::V6 { - network_upgrade, - lock_time, - expiry_height, - inputs, - outputs, - sapling_shielded_data, - orchard_shielded_data, - orchard_zsa_issue_data, + )| { + orchard_shielded_data.is_some().then(|| Transaction::V6 { + network_upgrade, + lock_time, + expiry_height, + inputs, + outputs, + sapling_shielded_data, + orchard_shielded_data, + orchard_zsa_issue_data, + }) }, ) .boxed() From 7df9054d1061be0051a999b9ef44586623d6cbb7 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 25 Apr 2025 12:29:37 +0200 Subject: [PATCH 196/230] Fix doc comment for ACTION_SIZE in orchard::ShieldedData --- zebra-chain/src/orchard/shielded_data.rs | 24 +++++++++++++++++++----- zebra-consensus/src/primitives/halo2.rs | 1 - zebra-consensus/src/transaction.rs | 1 - 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index db5931fd4ff..9260cccb52e 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -165,13 +165,27 @@ pub struct AuthorizedAction { } impl AuthorizedAction { - // FIXME: change the comments below to fit both OrchardVanilla and OrchardZSA (refs to specs, 820 bytes etc.) - /// The size of a single Action + /// The size of a single Action description. /// - /// Actions are 5 * 32 + ENCRYPTED_NOTE_SIZE + 80 bytes so the total size of each Action is 820 bytes. - /// [7.5 Action Description Encoding and Consensus][ps] + /// Computed as: + /// ```text + /// 5 × 32 (fields for nullifier, output commitment, etc.) + /// + ENC_CIPHERTEXT_SIZE (580 bytes for OrchardVanilla / Nu5–Nu6, + /// 612 bytes for OrchardZSA / Nu7) + /// + 80 (authentication tag) + /// = 820 bytes (OrchardVanilla) + /// = 852 bytes (OrchardZSA) + /// ``` /// - /// [ps]: + /// - For OrchardVanilla (Nu5/Nu6), ENC_CIPHERTEXT_SIZE = 580; see + /// [§ 7.5 Action Description Encoding and Consensus][nu5_pdf] and + /// [ZIP-0225 § “Orchard Action Description”][zip225]. + /// - For OrchardZSA (Nu7), ENC_CIPHERTEXT_SIZE = 612; see + /// [ZIP-0230 § “OrchardZSA Action Description”][zip230]. + /// + /// [nu5_pdf]: https://zips.z.cash/protocol/nu5.pdf#actionencodingandconsen + /// [zip225]: https://zips.z.cash/zip-0225#orchard-action-description-orchardaction + /// [zip230]: https://zips.z.cash/zip-0230#orchardzsa-action-description-orchardzsaaction pub const ACTION_SIZE: u64 = 5 * 32 + (Flavor::ENC_CIPHERTEXT_SIZE as u64) + 80; /// The size of a single `Signature`. diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index 098ab42cc6b..6671babe580 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -75,7 +75,6 @@ pub type BatchVerifyingKey = ItemVerifyingKey; /// This is the key used to verify individual items. pub type ItemVerifyingKey = VerifyingKey; -// FIXME: Check if the Orchard code (called from the zebra-consensus) checks burn as a part of bidning signature lazy_static::lazy_static! { /// The halo2 proof verifying key for Orchard Vanilla pub static ref VERIFYING_KEY_VANILLA: ItemVerifyingKey = ItemVerifyingKey::build::(); diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index 0fa9e56a9f7..90ba7726efc 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -414,7 +414,6 @@ where sapling_shielded_data, orchard_shielded_data, )?, - // FIXME: implement proper V6 verification #[cfg(feature = "tx-v6")] Transaction::V6 { sapling_shielded_data, From f0710918c7e0401b171b0bb651312d62d58a63d6 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 26 Apr 2025 10:09:07 +0200 Subject: [PATCH 197/230] Move burn field inside action group in serialization functions for OrchardZSA --- zebra-chain/src/transaction/serialize.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index b75f2c1bf2b..64e1f229246 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -423,15 +423,15 @@ impl ZcashSerialize for orchard::ShieldedData { // Denoted as `nAGExpiryHeight` in the spec (ZIP 230) (must be zero for V6/NU7). writer.write_u32::(0)?; + // Denoted as `vAssetBurn` in the spec (ZIP 230). + self.burn.zcash_serialize(&mut writer)?; + // Denoted as `vSpendAuthSigsOrchard` in the spec. zcash_serialize_external_count(&sigs, &mut writer)?; // Denoted as `valueBalanceOrchard` in the spec. self.value_balance.zcash_serialize(&mut writer)?; - // Denoted as `vAssetBurn` in the spec (ZIP 230). - self.burn.zcash_serialize(&mut writer)?; - // Denoted as `bindingSigOrchard` in the spec. self.binding_sig.zcash_serialize(&mut writer)?; @@ -557,6 +557,9 @@ impl ZcashDeserialize for Option> { )); } + // Denoted as `vAssetBurn` in the spec (ZIP 230). + let burn = (&mut reader).zcash_deserialize_into()?; + // Denoted as `vSpendAuthSigsOrchard` in the spec. let sigs: Vec> = zcash_deserialize_external_count(actions.len(), &mut reader)?; @@ -564,9 +567,6 @@ impl ZcashDeserialize for Option> { // Denoted as `valueBalanceOrchard` in the spec. let value_balance: Amount = (&mut reader).zcash_deserialize_into()?; - // Denoted as `vAssetBurn` in the spec (ZIP 230). - let burn = (&mut reader).zcash_deserialize_into()?; - // Denoted as `bindingSigOrchard` in the spec. let binding_sig: Signature = (&mut reader).zcash_deserialize_into()?; From a3ca27142c0bc395410cf8adb0ded5cdae791c5e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 28 Apr 2025 16:02:10 +0200 Subject: [PATCH 198/230] Update zebra-consensus/src/primitives/halo2/tests to add OrchardZSA tests --- zebra-chain/src/orchard/note/ciphertexts.rs | 10 +- .../src/orchard/shielded_data_flavor.rs | 1 + zebra-chain/src/orchard_zsa/burn.rs | 21 ++++ zebra-consensus/src/primitives/halo2/tests.rs | 104 +++++++++++++----- zebra-test/src/vectors.rs | 6 +- ...xt => orchard-shielded-data-vanilla-1.txt} | 0 ...xt => orchard-shielded-data-vanilla-2.txt} | 0 ...xt => orchard-shielded-data-vanilla-3.txt} | 0 ...xt => orchard-shielded-data-vanilla-4.txt} | 0 .../vectors/orchard-shielded-data-zsa-1.txt | 1 + .../vectors/orchard-shielded-data-zsa-2.txt | 1 + .../vectors/orchard-shielded-data-zsa-3.txt | 1 + .../vectors/orchard-shielded-data-zsa-4.txt | 1 + ...ta.rs => orchard_shielded_data_vanilla.rs} | 28 ++--- .../src/vectors/orchard_shielded_data_zsa.rs | 34 ++++++ 15 files changed, 161 insertions(+), 47 deletions(-) rename zebra-test/src/vectors/{orchard-shielded-data-1.txt => orchard-shielded-data-vanilla-1.txt} (100%) rename zebra-test/src/vectors/{orchard-shielded-data-2.txt => orchard-shielded-data-vanilla-2.txt} (100%) rename zebra-test/src/vectors/{orchard-shielded-data-3.txt => orchard-shielded-data-vanilla-3.txt} (100%) rename zebra-test/src/vectors/{orchard-shielded-data-4.txt => orchard-shielded-data-vanilla-4.txt} (100%) create mode 100644 zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt create mode 100644 zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt create mode 100644 zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt create mode 100644 zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt rename zebra-test/src/vectors/{orchard_shielded_data.rs => orchard_shielded_data_vanilla.rs} (57%) create mode 100644 zebra-test/src/vectors/orchard_shielded_data_zsa.rs diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index 5e78d7724a9..ae9fddfba8e 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -14,7 +14,7 @@ pub struct EncryptedNote(#[serde(with = "BigArray")] pub(crate) impl From<[u8; N]> for EncryptedNote { fn from(bytes: [u8; N]) -> Self { - EncryptedNote(bytes) + Self(bytes) } } @@ -24,6 +24,14 @@ impl From> for [u8; N] { } } +impl TryFrom<&[u8]> for EncryptedNote { + type Error = std::array::TryFromSliceError; + + fn try_from(bytes: &[u8]) -> Result { + Ok(Self(bytes.try_into()?)) + } +} + impl ZcashSerialize for EncryptedNote { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { writer.write_all(&self.0[..])?; diff --git a/zebra-chain/src/orchard/shielded_data_flavor.rs b/zebra-chain/src/orchard/shielded_data_flavor.rs index b58375e3fd5..3bd3a9f73dd 100644 --- a/zebra-chain/src/orchard/shielded_data_flavor.rs +++ b/zebra-chain/src/orchard/shielded_data_flavor.rs @@ -49,6 +49,7 @@ pub trait ShieldedDataFlavor: OrchardFlavor { + Serialize + ZcashDeserialize + ZcashSerialize + + for<'a> TryFrom<&'a [u8], Error = std::array::TryFromSliceError> + test_arbitrary::TestArbitrary; /// A type representing a burn field for this protocol version. diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index 01cce6a8bdb..3422393d2f7 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -92,6 +92,16 @@ impl<'de> serde::Deserialize<'de> for BurnItem { #[derive(Default, Clone, Debug, PartialEq, Eq, Serialize)] pub struct NoBurn; +impl From<&[(AssetBase, NoteValue)]> for NoBurn { + fn from(bundle_burn: &[(AssetBase, NoteValue)]) -> Self { + assert!( + bundle_burn.is_empty(), + "Burn must be empty for OrchardVanilla" + ); + Self + } +} + impl From for ValueCommitment { fn from(_burn: NoBurn) -> ValueCommitment { ValueCommitment::new(pallas::Scalar::zero(), Amount::zero()) @@ -126,6 +136,17 @@ impl From> for Burn { } } +impl From<&[(AssetBase, NoteValue)]> for Burn { + fn from(bundle_burn: &[(AssetBase, NoteValue)]) -> Self { + Self( + bundle_burn + .iter() + .map(|bundle_burn_item| BurnItem::from(*bundle_burn_item)) + .collect(), + ) + } +} + impl From for ValueCommitment { fn from(burn: Burn) -> ValueCommitment { burn.0 diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 2a379dc96f3..0c0128e666f 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -18,29 +18,34 @@ use orchard::{ use rand::rngs::OsRng; use zebra_chain::{ - orchard::{OrchardVanilla, ShieldedData}, - serialization::{ZcashDeserializeInto, ZcashSerialize}, + orchard::{ShieldedData, ShieldedDataFlavor}, + serialization::{ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize}, }; use crate::primitives::halo2::*; -// TODO: Add support for OrchardZSA (see OrchardVanilla and AssetBase::native() usage below) +// FIXME: Where is this function called from? #[allow(dead_code, clippy::print_stdout)] -fn generate_test_vectors() { - let proving_key = ProvingKey::build::(); +fn generate_test_vectors() +where + Flavor::BurnType: for<'a> From<&'a [(AssetBase, NoteValue)]>, + ShieldedData: ZcashSerialize, +{ + let proving_key = ProvingKey::build::(); let rng = OsRng; let sk = SpendingKey::from_bytes([7; 32]).unwrap(); let recipient = FullViewingKey::from(&sk).address_at(0u32, Scope::External); + // FIXME: Add ENABLE_ZSA for OrchardZSA? let flags = zebra_chain::orchard::Flags::ENABLE_SPENDS | zebra_chain::orchard::Flags::ENABLE_OUTPUTS; let anchor_bytes = [0; 32]; let note_value = 10; - let shielded_data: Vec> = (1..=4) + let shielded_data: Vec> = (1..=4) .map(|num_recipients| { let mut builder = Builder::new( BundleType::Transactional { @@ -56,13 +61,14 @@ fn generate_test_vectors() { None, recipient, NoteValue::from_raw(note_value), + // FIXME: Use another AssetBase for OrchardZSA? AssetBase::native(), None, ) .unwrap(); } - let bundle: Bundle<_, i64, OrchardVanilla> = builder.build(rng).unwrap().0; + let bundle: Bundle<_, i64, Flavor> = builder.build(rng).unwrap().0; let bundle = bundle .create_proof(&proving_key, rng) @@ -70,7 +76,7 @@ fn generate_test_vectors() { .apply_signatures(rng, [0; 32], &[]) .unwrap(); - ShieldedData:: { + ShieldedData:: { flags, value_balance: note_value.try_into().unwrap(), shared_anchor: anchor_bytes.try_into().unwrap(), @@ -81,13 +87,18 @@ fn generate_test_vectors() { .actions() .iter() .map(|a| { - let action = zebra_chain::orchard::Action:: { + let action = zebra_chain::orchard::Action:: { cv: a.cv_net().to_bytes().try_into().unwrap(), nullifier: a.nullifier().to_bytes().try_into().unwrap(), rk: <[u8; 32]>::from(a.rk()).into(), cm_x: pallas::Base::from_repr(a.cmx().into()).unwrap(), ephemeral_key: a.encrypted_note().epk_bytes.try_into().unwrap(), - enc_ciphertext: a.encrypted_note().enc_ciphertext.0.into(), + enc_ciphertext: a + .encrypted_note() + .enc_ciphertext + .as_ref() + .try_into() + .unwrap(), out_ciphertext: a.encrypted_note().out_ciphertext.into(), }; zebra_chain::orchard::shielded_data::AuthorizedAction { @@ -99,9 +110,8 @@ fn generate_test_vectors() { .try_into() .unwrap(), binding_sig: <[u8; 64]>::from(bundle.authorization().binding_signature()).into(), - // FIXME: use a proper value when implementing V6 #[cfg(feature = "tx-v6")] - burn: Default::default(), + burn: bundle.burn().as_slice().into(), } }) .collect(); @@ -114,9 +124,9 @@ fn generate_test_vectors() { } } -async fn verify_orchard_halo2_proofs( +async fn verify_orchard_halo2_proofs( verifier: &mut V, - shielded_data: Vec>, + shielded_data: Vec>, ) -> Result<(), V::Error> where V: tower::Service, @@ -140,17 +150,17 @@ where Ok(()) } -// FIXME: add OrchardZSA support -#[tokio::test(flavor = "multi_thread")] -async fn verify_generated_halo2_proofs() { +async fn verify_generated_halo2_proofs(shielded_data_test_vectors: &[&[u8]]) +where + Option>: ZcashDeserialize, +{ let _init_guard = zebra_test::init(); // These test vectors are generated by `generate_test_vectors()` function. - let shielded_data = zebra_test::vectors::ORCHARD_SHIELDED_DATA - .clone() + let shielded_data = shielded_data_test_vectors .iter() .map(|bytes| { - let maybe_shielded_data: Option> = bytes + let maybe_shielded_data: Option> = bytes .zcash_deserialize_into() .expect("a valid orchard::ShieldedData instance"); maybe_shielded_data.unwrap() @@ -168,7 +178,7 @@ async fn verify_generated_halo2_proofs() { tower::service_fn( (|item: Item| { ready( - item.verify_single(OrchardVanilla::get_verifying_key()) + item.verify_single(V::get_verifying_key()) .map_err(Halo2Error::from), ) }) as fn(_) -> _, @@ -181,9 +191,24 @@ async fn verify_generated_halo2_proofs() { .is_ok()); } -async fn verify_invalid_orchard_halo2_proofs( +#[tokio::test(flavor = "multi_thread")] +async fn verify_generated_halo2_proofs_vanilla() { + verify_generated_halo2_proofs::( + &zebra_test::vectors::ORCHARD_SHIELDED_DATA_VANILLA, + ) + .await +} + +#[cfg(feature = "tx-v6")] +#[tokio::test(flavor = "multi_thread")] +async fn verify_generated_halo2_proofs_zsa() { + verify_generated_halo2_proofs::(&zebra_test::vectors::ORCHARD_SHIELDED_DATA_ZSA) + .await +} + +async fn verify_invalid_orchard_halo2_proofs( verifier: &mut V, - shielded_data: Vec>, + shielded_data: Vec>, ) -> Result<(), V::Error> where V: tower::Service, @@ -196,6 +221,7 @@ where sd.flags.remove(zebra_chain::orchard::Flags::ENABLE_SPENDS); sd.flags.remove(zebra_chain::orchard::Flags::ENABLE_OUTPUTS); + // FIXME: What about zebra_chain::orchard::Flags::ENABLE_ZSA? tracing::trace!(?sd); @@ -212,17 +238,18 @@ where Ok(()) } -// FIXME: add OrchardZSA support -#[tokio::test(flavor = "multi_thread")] -async fn correctly_err_on_invalid_halo2_proofs() { +async fn correctly_err_on_invalid_halo2_proofs( + shielded_data_test_vectors: &[&[u8]], +) where + Option>: ZcashDeserialize, +{ let _init_guard = zebra_test::init(); // These test vectors are generated by `generate_test_vectors()` function. - let shielded_data = zebra_test::vectors::ORCHARD_SHIELDED_DATA - .clone() + let shielded_data = shielded_data_test_vectors .iter() .map(|bytes| { - let maybe_shielded_data: Option> = bytes + let maybe_shielded_data: Option> = bytes .zcash_deserialize_into() .expect("a valid orchard::ShieldedData instance"); maybe_shielded_data.unwrap() @@ -240,7 +267,7 @@ async fn correctly_err_on_invalid_halo2_proofs() { tower::service_fn( (|item: Item| { ready( - item.verify_single(OrchardVanilla::get_verifying_key()) + item.verify_single(V::get_verifying_key()) .map_err(Halo2Error::from), ) }) as fn(_) -> _, @@ -254,3 +281,20 @@ async fn correctly_err_on_invalid_halo2_proofs() { .is_err() ); } + +#[tokio::test(flavor = "multi_thread")] +async fn correctly_err_on_invalid_halo2_proofs_vanilla() { + correctly_err_on_invalid_halo2_proofs::( + &zebra_test::vectors::ORCHARD_SHIELDED_DATA_VANILLA, + ) + .await +} + +#[cfg(feature = "tx-v6")] +#[tokio::test(flavor = "multi_thread")] +async fn correctly_err_on_invalid_halo2_proofs_zsa() { + correctly_err_on_invalid_halo2_proofs::( + &zebra_test::vectors::ORCHARD_SHIELDED_DATA_ZSA, + ) + .await +} diff --git a/zebra-test/src/vectors.rs b/zebra-test/src/vectors.rs index 7937b19ba7f..d81357781f2 100644 --- a/zebra-test/src/vectors.rs +++ b/zebra-test/src/vectors.rs @@ -5,12 +5,14 @@ use lazy_static::lazy_static; mod block; mod orchard_note_encryption; -mod orchard_shielded_data; +mod orchard_shielded_data_vanilla; +mod orchard_shielded_data_zsa; mod zsa; pub use block::*; pub use orchard_note_encryption::*; -pub use orchard_shielded_data::*; +pub use orchard_shielded_data_vanilla::*; +pub use orchard_shielded_data_zsa::*; pub use zsa::*; /// A testnet transaction test vector diff --git a/zebra-test/src/vectors/orchard-shielded-data-1.txt b/zebra-test/src/vectors/orchard-shielded-data-vanilla-1.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-1.txt rename to zebra-test/src/vectors/orchard-shielded-data-vanilla-1.txt diff --git a/zebra-test/src/vectors/orchard-shielded-data-2.txt b/zebra-test/src/vectors/orchard-shielded-data-vanilla-2.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-2.txt rename to zebra-test/src/vectors/orchard-shielded-data-vanilla-2.txt diff --git a/zebra-test/src/vectors/orchard-shielded-data-3.txt b/zebra-test/src/vectors/orchard-shielded-data-vanilla-3.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-3.txt rename to zebra-test/src/vectors/orchard-shielded-data-vanilla-3.txt diff --git a/zebra-test/src/vectors/orchard-shielded-data-4.txt b/zebra-test/src/vectors/orchard-shielded-data-vanilla-4.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-4.txt rename to zebra-test/src/vectors/orchard-shielded-data-vanilla-4.txt diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt new file mode 100644 index 00000000000..12363c3fbe6 --- /dev/null +++ b/zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt @@ -0,0 +1 @@ +0102f64ff84dc5109439101084de0077bb5ce08cb8f7cc68dcaeb862179b2fafcaa0968c7f9a8f21ac5986f13f005d7f3888290bc9b09caf7fc937253ab8e59d541c884084913092d7f3c97de44c7013ed95739af1607cca7222df84331dd737c6bef03bb7758d4ed04f62cf540420e404f37cdf167dcf12cd94213dd734a398251f1073231c5188c49f9d331eecb08514deb3eb7b8b7f03865f1ce4166ef2d3df00dcaeb4c186cfc297bddff71146c1eb17c345d45c90462ed27f8b07dfb07ba8c915f6ac50c03769398927c8a56e9d4aec36231b658508c219cea5966b42b955703443b2ad6ef9706c8c7f27c87eb015388b740087fc43a8b9b4bde0197e9ad108b71fdd55ff2a840b1517090ad48aff6cf4226c9cec54d87499f1a17f7187d91ed5cb55e3d6a6c6e1d0c135393ac610583df0e8a97588e8b09d46a1428578689a9128638d855c495572c6ae058636e67c8374a46119e7bf8737c2d0d562fda2980b7b3f408473ce4c9665b6d06fed171200bd4b61eb16f4917c8c7fc4b3228f709d58532b5f37f3b74eeee515f0086978bd4a36805a44d03a7a179874cdc23d70199bb537739c651b679f674dd8a000b3d463c970a25d0231737056a65250da25202ab2314593130e2beec80a3ac32c767546d8c3a610d4025b4a0bce356bc9045686bcf144f90af1f3b30c7ae4b55a5e8ac881ffe0119918eadc29ddf285b1a13cc52d99a2c6bfde2583d86871a97ed0594501196ff313fcd98cd561f71180519ee06e1f0cfc8e47b4e2c6d7bdd16589a270c5814cc678d849947f101a158c2b1449a52daf00c515a820866b0e7dd0019e57038418e4b2b06131f8494d740dc974275cdb735b79bd2722a48e738fef702d00e11e0246d4e7eac4548d30f3fde472dc126338410ee5899b5e273b9b026e871da9d8b7cb6bfa444f8ddd34e11450f87923cc26535a0b3d2daa8848b9670e06e95cda7f219c8cb330e78ff24ce56c23d8582e20a20166d58041a0e41138e820e7332a154885684fc77d2e7936438a93c056898d8f1353bae27282f07a41d74a3a7b0163e57c762e996422c5acf87ffab7b1e2edb2d47f5b28968ed3d0b3dbda06c9bceda461f5998089ed43b5b0bfa0fba0f2933d02df6ae05962cead52f8aa2220723aa92f739b89d2aaf3744b93f2ef6a49781e9a044ffaa9ff31ae6f60ba5e405c87614c2c4541ad303ec310b64a61ca1aa66b618dab775c912736d1753f11d2bd74a4ff803e0eed8bff89e007ba98adefc3efe574b158a911655843390ed16b07dcedc4e4a5f0a8d167f8266990a138000be7e2c14004e101feacc5646dca08b8376c3e0052018ea057a8a9d5e24eab98c701bb68409a7f3e87fe27815a54bc1f892e1d069ccb3d6afd4bb4eff17973f0dd50127cafe1008dcee7aaa3e2673413686d41beb8cfe6265a2637a2995854ad3d0ea8f45cd897a3d1c5a157eea343808b55f34f6bd6dc401692173bbf1aac151ddacd9c48f2f3b24ca3ed3be1c33b3229397d1d9ebd27b7f4b6909b25fda99948a1f1098d1fa7bdb71d7ff76a6f4bd90893c28ac01d3e2efa6a6aa70973997d33201c686c6a46c5435f303b681c3b102d11b0aae0f6079361367fbd57b3d50c04dd84cbccd03b9ae8cca7ace3c274ab777c98e5bd2688c0994d9a713136037c44153cc81334977f559166be70b340f4cb4a4868140772e45caa683e788205fba9ffc7da98a1abf0d3f9bd44a74df9fb99458c514f7c46a82ceeb59d7f3f3bfbb7bab7af288dda9191de867583a6ee6dfdd363f7362b95fa35ca0c11561b3f42b032d7fb64947d2168b1a8d64b6d5d8e1d97e44ee23ccd7f40813b3fcc83af3f08af9ee109446c58864d25057a30e1caf9e47468a5e95782a924eab5b0ddd924c1765b9bccaacf68bc1864f480d0fea8312499a826cbb6d9f25e53221c08c9d3ce7a7c4e4398cbc4d4c24401bd9aaa05f8c595769546307107436e130c8b6b0a516edd467cf469de144a960786518b016c28b0d28674a4c33b2c147e03932d6d4e63ee94c761cf8297b2d2b674b92a7f1c91238be150176add70b889ace671fdc3a555501e244fc0ff923b8137f65d8b33ece914d0b44f1aef0c66fe203b3caa7a5e36ffba77ff28970dc68493529037a0b2063b8fed97db90501b14a6632af91ab764f10d3af67a9c2cddea55cdbae5b3479d1e29fdfffcd330e184983af64fc385bc74b0f143abbf678246caa336caf4338cee7aa7fe8d6ad482e0826e44fcd866e6627b6b94c519a6cb7e38917fb1fb2db6fde0804f2c05fe5b0fc5d527b751085ad03d5d7be72ad2505fa036ae16facffbd72b4bb085f164a5db64b9812b59c4c66c11ba2271a337dec20430cb5fd69be8a153426bb140ad805a92b31246997de350030000000000000000000000000000000000000000000000000000000000000000fde01c8da8d396bb2c91aa1c53d4fc0b4deabccffa42bc5c5182fc0c35992fe1230cb6de698088179caad1190147b03a376902de3ab7a9823f0e5e82f38c2edb2dfead6e762e875633d4a1996799fa16aa81b83b84a3fddfe6398bceca7eaa21cdad24b58c1c818e6fe9cceea1708da88d646231ce8d5e497a52b61f9823128904411a57ee2898166d24b9a4615f4058f885dabd6fc084380d8acb5ff5667212a73e2869cc85ff2ece0404cf0d619c988e23f584f48d2f68ac87f5ec7094611c1cfd953160ed460c799d1d06f8eb06e6aa25c1191047a9a263a41061f2ec9f0e2b1bad8afc5aba631e098ec4496e903bbd86903951baaba90654d8f70ffa916269b01284b78637028cccf43fc213a2f911ff36b3ef863b67a4f508bc4caa2a44d37ca372b70c88f7003f238c8e6ba280c0c64be9a5c2ecdd7a58f7d6cc3e571d408c9dc86f08b1748159ac2ed652448b91cd91a1c4b57bba5b3a1803f85004a01f3f85ff96e5b8a7df4697bf83bab65da6cfb674a909540683d40a5ec2f0cde58fba281f7ac21c1c6d4fa5dde12aa9363e851cf0377eebcc601663ce7aadd2651ac6880e0dfb0f3ac08049b24fd53098187c10f6fa328d0ac4b276b2f944ba4487fbaf6a7a104e4d28138b0051efcf0d25327a410b4a528904c4ec336085f59c46990d4a08f51cce3d2c7c9a8cae3d73c64d04d69be7ec31bf27cca0900c0fa40f5136bf7336fec68439974402e9c4d19c14b56207543ca2064f0e286d77c535dfd282e4366a4e7a72cee84931d8e2b23d5c877f69d737612213cb853de7e923c738a325cd18d477a1992a49f824364dd49377addc23d489aae0744f84f11191e8b719901d67b93a55d53eefc73a53f226198ac264f2d4cf7a9803189ba8b93341ea87673f49f0fd8a1541cb55317d38ef932eb7ecba93ed0f63e2835a1c021b5ab334a49a285db22c6d86f6b5ce1cf1dab2e02054056e125f7c4529d0d6e1fcf9af8182103ff1d69e1cc11551a61c2af4bdf64f3c739e859fe04d89d3e77a735a3814a9d1f17425bd2e1e9599f3f4cab6199ea1532dc9a1c6df31241c42c01768bf8f57102c56f4aeead066c9cccef794cb76db261cc905c6c88d4962491f7ab1b039c15a206b64067a8c835a0c5bbd702f0ee6879b7e4a6b7f70550ee54afc119e3d2c26143d9b258354803916f0014c5e3d97884beb5b7732972f7524e4530a16166b230b2ea57a8412be3a897e6a803cb5e2e55f11f36da23f39b189a18226398543edfc75246772fb91a40931231d917685bb84abafee6cc8f3a57b27a05fe2a1c99a16f6d0428e91eb4e9f33158e2acecdc618174a15575214b1ff8778386b9347d9e2703d5f9eddb3dfd8e0e572b38a95b3272e9352ac335a57f52ae96deb9aab5b27dc8c6f9596a6e0e95cb4cc60c73594a8d0fb22e9e46b67b6c3be5cb318fa2fab1c2b170e6bd993b2c5635c8c20eb728b2c212b1ade7f91ecde128d6883e5ea6de88651bca91311142c694e8fe056c6288af6619089096e6afc0cb3d72746225ce8a68da610b6f90c6f0feaa0418b8ad6c3ab9ac72202a38ac65125ef2324939b0d151a9c975686b8dc18f4c6b6d38f0ff4a05f51d5a59f6c151f55159a0bbe8047b5574a15cdcc1845ea12b09940a6130f6de1a53d79249e1bc779ac2a1d59a81450c328a067f99533fa2aff175361dd0a5d920dea1c076539ccc8b2b4a32d97915df8f7ce9187db77062aba6063daecf1f8bfb1067715450a9dcf7f89717e80e1bb7ab5d6b1e32176c46345c5a6850a01622efa03d5ae32aaaccbd611be8016981e95770878ead086f25679fd24d6905a4f6f34bef7f65006c7c4a02da6707da8deb2d8604b4194e7b9d09f6161b45893c2d2271878ee02c69e037f04334b0b8ff4885eb304de8455929138ac3a91e46e5fef4fe10881ab47dba9fe080f5a98f6ea529ee8f92aca48e375c2ebac85d2a13f3899a31f7fe9260d7af11f519c2d37558ef21786e79ace098793f6659c25e879cc399afa636bbe45825125fd9f08304e5973234bebc60f88d26b2a9ae3e992e0b0c451b5e6a2779d41a935c91e764e0e560a5b8483085bc58d3aee3e8361a2f6939874a8a60f965cca82995979df8c2ba675980391cba7e56ee06e0a0b12d99b67ede68787293e80367fb7cd259339032606ecb830024cebb03c6133a0f6c954460b7b72c1dc4e96b7eb28d48974011708c434b6acf1288392cbf4a496e0bdd02594b7f00a08bf9e13598e80ff7202a7d9effbb05044b008ca1ee5a95233f97d1ae56ddabfb8715fa4690a8e820e037bc10b9b4e487c8da70d29ad5bab643afed386cf4c6e7c73a9a194b1e8285adf04271754386de5ff4368d92729721e68d2f78113c5ccb2b7549133b2f3422e22bfb7bb765b0093fd3a285681b8a67579e103b665ab068fb69c31822444481c205fceeb7bed25b31aada1aaadcc8d293fb7a4c9adeeb26e8631aa6e3f1ce038474ea1ef5541e6b8cc87ed766cab922f20005f651c2f2a0dab1e52b11bac4b6758b0aee2ff13e9127a27797307ed2aa6ebbd0d7a4a383081faa9d87b2f99172967f2299be5eb2133cda4e23bace6f9bd1bbb1fef7529977e79b57305186af7919b179587392294c5a79deba1eb666a0af8352d163f39008ddb0d798b119abd911887534769ce7843f4b04d5f5df5f9a664bebec403c71a8e5f61558802d71c57d58fc2ddb597940002107cbbac9efff99244993915af70b2b84cd69c1cdfbefabfdcb827b475ce2fa250b7ae63c11330f3d12462611842e23d98e7c438dc3c5b2ce7abf0d2fb78d93853ba60026097552392768a8f1f5b2b7bd6f67e36ac1a9c24d1bfbb35e03553ba70adc593f43153be1c34b6b84f6a1d6b5d024516f1841146ef0d5777866c1ca4a6b65a6dd39266675e741c2d4decc167d69521003738524900db7a1c12ee53d2d47e8e036b5facae6edfa342f9668004f120fe377298fd21e6902370ab7151b168ba26f7631aa3d0aea9fe5ae06345af248341138532d08c94df599dcfc8b45f81fb81b44f1a560dfef2d652735393f74dac73043a697b84e8607975a741f8ce030a208ff17444117cc0a281736cbbee4bdfcd057a5d99b1467a53fa8812bdcb29f58ee4bb5db9649acd123f86fc7758e3d4e83ed1c285cae0f41ac5830ef455fd956a3782a363d52dc40b2ea5dfb97ad507561acb7219c239f85586b9ad16b162618a7986c6d50cbe63322c7666dafff33d0f01ca7e0b7446cd5cf9cebe2df22535d68429c01ecf9248a68b563da4649aa97716473832335c839af03298befdf6188d626bc6c15a95a135e776c0e3b3e31f81031df372caecd35b657ef177f3c25345901f36faa12946fdbe8c9e9d18e96c922b07adf282b20d6048db94179499e86a6ac4b9a77818fec15c77d5e8885037f7032dd97b1a0540b818396f3e54cd69d7fee624bb20f6517ffe1ef25637747a36390e761d50b36f17e8e13a80f69e477d4f978402a0f2701a11174e92c8ba147415e256a66a7fac0dc391de6adc86f35b8fb635e8ee4372de57bffaea503e351609b9a6b3c8e802fb0757996f9683a51e0fcf90d21edf87dfc97dbcba117759b9348e6cb26f8072453698ce8a5c7d6330b0cf05ba6b1c4a5c50b104b5db84fa560859702da6376682315f04b9d6c78f32599d4207152753abf6e4acb3496430783029f4ab96f8d5a8f9849ed712a47137d0b787a9b06737e37ec0d296c167626b1b0a0249d247d99bdca80b57aba8d9a3fb66c462a25391a0869c1d1e4a8b06890670be5e76a33d65fd72e1ddf8fe9d29868a9283f3b8000d07545adde0ee56c9320eb12bf6deb5bcd7d12dd44cf7023e40903877ee85376a2e093c9cdd14c1c629d778b317aefb0161d0ad3d2afd885330def6a54a7bcd2fc52160cbaa1f54e30a0c6ccd39ece0aba64e924967816ce83e2a10df7b39d074519a28b247f8de4a14db6eaf37858344f849aaf8ee6ae343d1e35c043f6e5feec4720b18b30b2f563794f8009e9ed757a57eba4109ecef5f50d79980c3d934d27df884096f3bae9c043776465e8717593d3f2af0da8fcc0d373f2400f653922e5bd69748e1da0d7b0716f862919ecf275b57504087f7329920814f69525fc78d0e9a4c24d6fbafff037088d316a430f26b59edad495848af45afd17ef4ffd83162b6c461f19d8a9a364676950993303c651713c6d38d731af77f7aecbd77234dcdccc179e87458d92d844163587511d7cbf12778ce64361747fb5b5b44edc41330b96c654864cf9b34743491e3566cf9836c6858a3b3e9a1de64d1d45a1db0e352cfdb870a2d46a4188c5d407d9175b96f033bb02122fd8de0f2007d377e6954361dd4718125ac7014cae2a7869f2ba25f989d92d7252d91337233af189f0df4a25f46a15563cce43dd330fb88275772b231fbb8bb5ca4d66d48b783058e41b16a0dde1e8cf6347730f1ba5dedac8d280d662e7936d4209a002b0111956e05c945084c09313d102827eae0f309f29f0fd5207d0938709c64567ae7b3b3e506cbef38a52e6eed3bbd1e7849ecab54967e967a810c273fc756d960b18ba1f0640a38841c0383be9b2c3d91220ba0349fbee462df23b064d1e32d4b687f82bf6f10531fec8bae653e1f382813f4ed8a970c282a9493d92d2335297d8a5ae39e01eabae08582da356df32fddb2d998bb9e932e6156a8558cc4f6a70f7aab5fb5027e3cd1aad964549b411e73f3ec92bd47f638a12622b949ac37ccaf992566e5496fdd5ccbfcd58bcdb01d4a504ca467dfe05943df2c29d580fa15e46a743569990d75bcac23c00109543610b7cccecbd12382b4b81240cc29dbeba81a4c19be8c2292e4888abdc198b82d3dd22ee172dd744e1d0675b9da2e8b0a0a47eb3477243824719227508e8713289fb33b701b28279e0d93b27e6a0984074eacf5bb470f00dcfcb7ddb72d511326649bbff5496d0cca565e7e37f1da82801d726433574bdd062c77339d84a1ad3c670a6b3b8097ad502ef33a7720ac977c01e7cef0ba1fa754a6ea4bb0f184782d9f68a60a7fa9455d3bf6ffc031867a61226f38aebf70537e21677def751ba12cd9f2104f16fc1fe577f90f28a966a155def039cb238c17c2345c8f901df2cc0e215c55902a55ddd2b556a4944dab32525febc965059739fc035118a0bce44d14e59efcfac28fc2975ade22123a6c028aaa6ce4e2fcd3496da033c1f7ef888d250afae83871f11094e0826650b8075f40985e6da80ad369f44449fcffd763081ed892e07264c3e6e1934a4a87b89b10fbf752aaa62d1382e0383e699897ba3f0e4edcd0fa6034c165c67882d3e913624174d045b79eb3b872cf2aa3319eb1180bb9476427544109cecfa742b8c7743b954efde438e9314fd7ba342c6d368394263dc65037e476b2e41c645c5626afad7d66549a33b015a1a453975c980f09441f9603eb45beeda17ae9e6806287cc5845a877a2e63f6b3feed34ff8f6a0dd42042aa0e352056fcec0841d7aad7851d82ee71470c8e5bc96d0440ee220054d3f0c658dd94a7363929563826dd3d214b852f08a86faeb38670aff50452fed33783f327b9c8e874c4f469e699d3701342003614c5a902e9716c1832870339c8ce92ccf60234596e9139c89cec76524ca078e238345c8160fdfc50519c64a8302a22d6a71118e10ed9104b6768f76a510bc97149d21ab35c06d632683b40032a62e3d0bdbdf2490351f69af43c11d3dc74da660618dc86b1a8d5b76343eeb55585326e8213c879d13e8381d3fcd2eec29a9f60fddb94d57e4ca2a51f6b2e9e4a7a628a800de73e9f07201ec902dd21250390a4be41698ec9a0459aa7722016e672e30b1624f0aa70e90a3ca6d5f2c0f9fd3043ff36cf1afec0715a8a05ed7d1862521b29cd2e24de828785f8e9a012ce65efef1c5fb18c65948bea4e2db9e06a7371bcf0d970cfbc7450214c322833558ca9b0efd80cf5e1c0a7d2bf2313628ddb61d328a28a5fb1fc2034c66d4902fbb84027c310f43a84f7ee386c3eebefff231188ea6c70926ad0faa6efe4c908321f75763896083f06d693cfa45febe6230101f26738f8f500bc26b68eee3363d35a5f20fcbf14fb784624fe5b088cf6b585d25f6a6cf81c604ef2e0f5cbc8faa01cd1a35abeda3284748e77d0828750166c600dc3e2e428fa66035f4f506ee1114d7a2116aa538c3b3219cc56cb4e7d97e553a03a9625f88f9bb09dd379eff8a96ddfdd0c5a189dbb13c705961302d42029d0b02b5206bc03f513e5b1478b18bc3dc6dbc9d13c14f0edbce075c6c68eac168166df8dfbfec5649c1b210e939b6c93ebfc6da419f72781532a884c6d6f603e320a13425a6f4e43608673c284bf4f01a103023a2645f25f2d1389f16b77b014520032e25a8d71d6b028fe7e20f53b6fae1e0635a6084af7b92b25ad3db525329354d0140a25de264c8d4624429808bb47e8254a061b294c7cba6fdc07b9fd8671cae0369ab29f9cd1bbf490b4721c6e00ee53a811271cc7d330bb18dace703f234c7901d6e8f0aef55f26f3e1b0f9d183b356e686af13cf80dc9298be00a62c0220121bb74c321d4dc1cb0f61abe09d992db9bea3dfe5e2c58b202fa479ef16b21939b3021e0df91a4a7559a48430113ad230c506a1706cee7f743e39a7cc3bc3742be1a65bb7c67efea1d478405681fd823c3140a67ba8d2fd26f7cf49d6f2537eb484bba4796aac19514cd17bc6ffcc0ac7a92c3b69e8e524a6bc9fea3dffc2c45aefb52c3f8b1aa4dce3a6c9ace8112189a8cd538e36934cd600ae2b787b10b22b0b533e60e00545a833ae84bbd52d1a64966f9ce5eeb16536ccc6297575e3e8d007b78a82032d117ff4b27c03e587d5fd5f8253499d6879464c4d2b8d6780699af6625aa41068587f9cf105c94bbb4eb7d03dcb16674ba10d7227053a05a026ae036ba2e68927d45bb83bf0b5648a9809a346127384addd1b18690b1229c1b560f38b0434444314bc25005b2ba7cd62ba4518d306c2a5d772397714638c12f78cec13340f870a168a125bc31e44993e1b00fa5f315164e57978dd4eb1787263b9ce75ba3ba239a894c15465b509c58012963a55776308874d8b0fc9548c5149dd0159c642685946a2550b4a0288dec6b756132620c3a7a4e247df3b9c4c5130ede90fd992c628009417f235407aa2ef7acfb4d131e259fed4801d0c18d6928ce700de833b34f11c2c8d3c2cc12fdb66630f23aba5da65f7d5a23005afd27075351324fb463159364514deff78f3a64fa9b665aab0e6e40f02d37af25ce9f210425105cf6071f3b22d37861bffd626dd106b5a0db3cac1d9c7aa4ffd511951972f5b469c3d7d59b3e526eb327e18594357618998f053528d7eaf2fb685b300b79cc9fa8cfe40f7cde73413bb384627d838055af86c049cd4524c35bd47dcc3516c1fc4c9d1b339ec33d5ed8967be25cd02d5eb4b2ca9fd4f19789e84b05d13ae7df4caa4a58cf7ce7dab1f7540a417d9aa3541272c3d4d1b37627b3180069336064ee87e3ddb04d3d29228025a485014b8c862345e888b7562dae6f0061090aa95813e474686ee063e5ec6283f885cbe98faf2f7d169888f0c90866a0694f0ef69d2e99569128af4d66e653d5e2ce6fc564fa4c824acff822f2ff5424d51b17db5dc06676ca626897d657c7f320f423cc28cd549a1387962220be8acb0de92cd2324abe211db3f34d4691c700a5a06b3d5fe53762c5c9287a5da2e9ca29b901cebe1d8db459cd3d19023fcc38094b5f55804028220142c6b1d6e11e1c127724c5743d5d19bb0e72eb5693e64fd95a5856c858c5a6e1f5e61c2e83e6220fb23ab1479947b01220116ebd4fd33a812c7ef61c3aa2caddd604923a3b994d4e542a3de3fae043c663e83cc2476e1e50e22ee1a27c1763100c6b50a6a50ac117292ef0e6dffbb8bbaf91f8db8088b9b4d9b776060eb2cfb8743159f1d540c3b9f53430e885095bb91b4a1b9a1a807f6f7ee046aa638e391b2e0abd8151e645cfec2dfb78d79cce947219772188da2ea74004510fa4a0c7806c339c56633f6a87d427d6d9f1f3e92c4181d538bc55f0c2a6486017dd3142edc226b534059505b35b20d2f13e38f392a4b1cf429c87603e67a09879e4e13551081f4beaec7677fbaa36a8e602033e2651bef0eb9f005a809d7f419e1d4755c3c206f8f63cbd69efe50d69af36fb9368075e83b4240e204d7f30c41f55161ead300ca933bb98b8c21424191302b86750f2a53dd2221a59cc0e8da30b865bee386fc1d6456dcafc21f2221bf961efe3a33b3e1c66e13386e9fb5f9ad96ebb8f7088aaa35f0087497c7c24b88859e88a2cc8dc86886bec3e965c159464a53ee1e1681a26368ef63d0b3d189a7cb8b955402070b3928559d3147f0ea73931fe6a8e18063cda1c6cd95b311dc58969de5f8a9d9f7c54fa4fc5213236f5835871a5903afd070055200075e63611f95052343234191902898a12ffba42181547248f190e58ce8a48c8d4348e0c1ab5d9b6e08ca6aebc98609f133b668b7305119da83fbfb6ba060eebaf649a2e8872c4e543336a2beddf1566e0c68d324b8793f970888b263f0282d58b1a4438eb5817b3ca4996c4936119d4b83bf0c2df2597e3ebcf55c107b9eff67eff5f2099132f90c7ae1912314f00ec26ef449d2a3b61700dfb487e51fd210e889f19157746ae9ce72035fd61de04c1f2fbd5ba6b98dde7474e459f7a93aea5fd19a33119c794d19a0689d5e20e94a50b26d82c810250d49c4afe06dbdf7e4c4d295d3e5c5d3e473f62fd7fb01a1fde3035728c0d1505256246b3efd5aa75ebc0bd903a8cc3e16ae17aa40c535d964f7445e8dd6ef1c2ec32f38b689931b3b6ef1e0738344458ca24305b42a63af5bc808948f37203a84edc8bb9405b5331e8fa04ab1d6d8a08927899ec080d7ee7574cdbe05568b7c2f4c595f8c8aea4a41d6267d51825f4df1330266f1495493d5ae6a1c004fe14693c397c148c0d6e63479ba0cb18532bebd7f8f50992a930755382c1961237a61af15645d70364feb48e3cfde38e9fc6ca90d9c30302bf17044dac3cd979f80922a2d469977f2ec1c047b413453c1cd9c05ddcb39bf88e66fa6a680d4caead72051e2cdcba19b8a29cb2c26e6613c7f3920cef1ff504043e85911fe72eaf053a2889a635a43310e6795a2e1434398d24f6b6acc68e9508db5d343285eab0c63b020a41e2cfc9f1da88093bbfc9235837c67b11c4d5bfa210c1a507a695a109d88bee060de8f99c66d722c66cd51eeaa696a0e4ca3bb10558e91f752fc25d3baf1160723e70e063f5b8dfe0c3092b119be79a7dc9ccb83e423dcd8f4b6a509f8f6bcd94b5802d363f67e50c29a60534a8ab42fc0ea7797b0de625c0920cd54502ee3bd6d5586732cf345ea3b970bfe0d4078c6674ab0c0d941603c21d4c4e983bbd42cea6a588801126a28e23881004e73c48166ae267a23706289f74e41c39e4c7ea6c0f805fc09c3e0a1197c33bda3ba04f0b441c45c85526dea6abad0336fec3d112988ba82536fe8f2e85a0b33a09ad8b52cd884ca4182711c7d6de7a8d596fa92a5ef5f4e4abc66d8f383d1d883aa44b5109df452e710791b953f93d6be6173bc9ef191618e601cfa6d01a99da2eced5e26752e4b1e2da2dbcc64ab64e50425f1075ad36f92621575e1614b8b714effcfd7597df89ae6f6cab61c01d3ac40d5dcf318bcae224d1370135b502531e5d5f6862b26dc71e0a2c3cb66d96f67079f25f64231b7ec27acf3dd263bc0d2cdaff914ecc23a43dee19ec4799426faf5945ca2fae34dd62756d3d5f3114ee21643e5e96597e6da14f278e57951dc6152be20e6f349e4bbf28e254ef2b1d44bd036827df815e8454050bf176b1b0094779e1274f26564538f000a67cd2aac7e2d2bf7a3a66a3f0e9c832aa6447baa8d204f6c817f584508e8b5df1b5e39998984ed0af41ed728832ad12df439e9cbcc4d9ff35121a39cffdd9afc8fe5625a5944d775498b5553d934065af87a336c03c20d9a9803d5cbd57b02fefe7f53d9574c7fb75183e7728a5426c8f3588e975f1a54f59fc21d5324a39fd3148c5acf4931ed3d2a6787d3b7ae80d7cfafae1079ebc2a37fab898d134961ee0dbd9a182fd1b46f1233a177acad1a848a5ae0442f9da3bf1aece48986627a4bccd7385fb4de9f739939e63e8e53ade2c6fc69c086cb63b39b63c787ea39c21e13c272e989909cadf6884f380ac213feed2142020498f4ca7b9523b4f9ea9b1a802a99ec0c4a3bff5759bb1ea3a2f896932bee61d747606e845d194250887625d006628cc02c88cb2147abbdfdccd9d7616332145d2c46c2e7d29eb3c92eff6423a093e8cc9e76135af267d85d8e0e14b5cea77eb48f4ac789b170349b41b3ad543381e00000000d561d02384b2fd9e55783eb92aa96b4c014903d84b62eb9e600983740cf981a5b4db7b15c1bd7b372ef13e2f64bfe620d4d69453b8705140065aa14e9cab481761df6f00a2064f1a4d507a12750ff7f69367c12e7fb8e1929960d52507307111a1767c01ba5d4d8ff3270bf56518f867fe57226b830dad596aaf9f831534b02f0a0000000000000000407cf0408e2d1a842a1f35929176d35185aaba2a06e8a1e3cdece6e37b806c832a537d7d08a39df3ebf49e122f2e90cb2c1cf8626d9c2dc8d1659a526685dd18 diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt new file mode 100644 index 00000000000..5e0828fa21b --- /dev/null +++ b/zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt @@ -0,0 +1 @@ +0102c0d3e81a23d2e0765b4447d991c1cbf224af1c2cc599f58af1180e00465b832b08151ed10e3b2ae0d1a852f4477002bc75c60b7f2bd4ded791ab56a720ba3309784a19ed4751466048f949d6e625b26c50472fb8b017cb8a3e3658b5dac8b238ac976af60038213367ef3a405826c97f14d27a90dc1836983c06089c6ba4210cbe8d85d633efd26560456b8c2edc0b90bab4aa9a141d8cf1dddff75b6a43213b786d2583cd4aa2a3fc9680446ebbff1ad8cdf6a2a34cb263d63c54d8694ac0c29a739ff8b7548c4b5f9498b16263d37d30564ce42499240adf384b422a50b651bbf579ad9a9c7842616ba6c485e254ad50664686f7eadaa6d3611683051c0f5a24da47bcb31ac923eef443d7d65e6e2c10b783a0d2b6d016c15d793389ee6f4e39f4faf20c34ae91823908b5f7339c10e8d9796e99adbae52f41e15a4261a719435b510c90f9a09edc01cdbe431b0606f78060bbf53ed7ed82db9f8185341480c17a2f4325766a3b87763323d920a3acfb1fb926fcc5ad41bda1d50fdc8449732cbf9f6bbec87fde63b8fed08ebc7aedd923b5a8f9a18450b44f083ceda69049adfba1ca3fb9fc5ee805f8ba30955e7420f07d2e5a2137116779f86ba6841cdb53032104db4fd4bab9e933472f55f4bc665258699918f136f15b2de84a3f43a9f80c908831946fc80d013e27e230e2dd471fb06f6756d13389902a55a9a931754b7cc6cca87b9bc867388c224de2165301520031b468b999a84122bd06e784fa811870048c46c11231505830a52bd8b4263cd54e48641fbfea480ecca80d1901ab63db9094a826960dc80986dd711c5940e3d9b0e711898064dab11f6198a809a99ba642a652a8e179d780c33dd51286fc64e0acd7a41ea387803ec26118324a006a2308a34fa119840bb191ba7e5727946db46de4021a405188a98c14956719f68b67b395b9c4488c0e1eb6d3a299f46e97908c0287cb62f0eaaec505d892284232fc3a3e022f58d03774b179cc1bce6cc5c033d051e4fece33b9abc21497d4616af7f99824bacdc6477eb1824ee4fbe798784a46c8001e73084932df28d4346162d1a138e09d0e42979f1726b66f37a0851d30253e70bdafbb60c26937452eb2968796f76fd12803dfee2c23971d55883e41ee5293c3d4d95d9ed0499439252b06123a9d7852b1cd41f43937ffeab28f08389360ee0507f6d78293859769689195c343f9ef56602096f8c166729c125660612b59e0c6064092a34bf05b3c445bc05000c212c77183e306a45d91524bbf9ba8273503025376f2123b123317cfbfd0e8ca8cd2a86624dae1fb6fe921dd3cac5c027e9e9422f18a83cb9c4e4b5543a755b7a21d4f25b1f6390b7eec076416dd2f08be8edd426a8a8159fe10218c004ace71b03edb23b6ba6e2474f0631ca29f171e38a26bf5a0a6e698cb9d4fc87a088150f79bee0bb36e8b51201d648fdd105851ee93a46edc7c1aee3eb165937b48f8f20f94bb9ee17a7cfce41bbb0b7b68ecf90b0a16595f929e6856ec4060c01bc25509032e2562370f848948c824ef267fe8a84bf118f278686e8e74c474fd09f8e3d27001acd237d14af37e0fc8781818940a94e9e4c5a584d9aea2f547fde687b104c59ace3d9c9258b0aa83462f32c78ef3194c71cb631e2180edd2802eeff007ad1b84cd31e23ac44302c656c45c438e896e733e9808863d6ea7ea8c911c0afb3f19b526918ca9e253f96c56da5ce0bf4af158f66662b5e4af907e7accd141edbc3d7be4bed074a085d2ad0d45f5379ba67c8ee2768bb6a99c8cff9360f7717a0ee7fbdb52f4722c76a418b4e33c7b984a6d221966a28fad570c23868fb5e43195b1892a7386e3a6c23a312e3c5ec913abafb84bc259ad9d510cf9be8a8a24741ca58c51fe3614965a3cc13b9c665d2aaa31ab82c425756cc5fb3e52351df85e416f129cfc05add79c079ce8ac86fd38b67e7925085c682c4d150d3811ef546aecaeb4e49933f5f4145da11e3a6d4a18325d021fe2b0aa0c5b4131cd3dddda220b40db1955ce2bab995088897c73b0869bd826b2da7abf76db268d347ceec85bd43f48398e37e583dc19d1081818249fd74a29b5eefde4d6f646c3e06a0c69cf86912b452d02ae20e546da59bb5dbca0d784596395ef4156d41529a3e3a3a7404f648f2018cd7341b259b87c473e7c98af06f65d6a38b3afede17b2b60cffbf3d3fb98bfd3a96a05dc6aaf27b007070915290e4d9acf1801688e0c76700d17e741daddfdd614c3931ecc2e0ae45816d51452a27c748c74cc9bb84d5a13f46c723a7c31d03dcfeb693cdbd2e91f23f980378ac6d85ecc739d3b8eb08f6bea07afb88d91ded89331f22cfffe6e4b8fa22719ab2021cb038930b1115245d6147887dd73d29f030000000000000000000000000000000000000000000000000000000000000000fde01c391ad0635ba16608329be9f343a3fdb2a99432900192df00743e0c442b83812616474e4eff5164e011fcfaacc35d475e800ee53eb6f60ee1393bc6c5098a660a9e8c295e432247ac35dff4c5e57c6f218eee247412b219b12d944c4eaa95f89233cc920ab30dc28a7adc22e01da2d30e825d5f56e9b4b3397ae0ac99d0432e2453b2d84ff4056bd5d56fcb227da9da9a80b490d24af30dd0b0c868a31cc258232b74c12e7a0999bb92ecb4b3b4ffb6e595c96ab248147c4c1e5f1bf9fb2d6801cd25ed99af610690ab89f1b98da34e9554cd9738d9bbbb222537deaf16c49b163b5ea37028fe4b734ab0b0780de513391e672f13a589e4a252caa25607c89029b426124764ece778f352f9e9ccb556f65dbf44ee0de7a6c53ad9dedb7187b9853292a528b6f00e5e6ef0487f30ac7c7d0978658e1ba02e137eefa324862d3191494d469e02eff1e9133d41bbc94ccf1eb8fd6032da18589e48dbdccbafb3801ac1e039af6f64c07a94c72091ae901c989d838ab6c7cf83cf7e1a738163d6f73108a498d71729dd2f831b6240c526028eb5c355aaec20d2657a8490b57f6154b42b89a3d05b9ebde340603e6df883ed8e019401bc6d69df3582e741b4381dfc23231a576bda3ce3bb3444e9265a0d42d27f8d77bdcb5e8d2b6afec303da7716bef579f0181be83f97842ec750b4ace59d8299c581a10348aaec6777dfe9c257023877494020be3c502284f6b573e0fedde1cc7dc22fd041914abc490fa1fc96057fb85471bad007245252044a1c283b2a63ebc59284f611c3df6d2222a6081119f39af470cd6f4b97d92403cb8bd111c3cdda915e6ef0d00eae332e7c2f006c06de3378de3bcb215d016b0316fc27b9542ec2b4107ee5e25864757fb0f0230b271eff57cb053e9f0c8c46d022a25b86c00102e4a7cea0b71aaabbe6e11d719c37b5a1b844c377a6e4bca78fb82ad0fc7596d824469cfcdf7e264d3e15d15cc0927e877e31ba8c6543cd5ca35246dfd3e51bdd6761df7ee0609af12748ef03dc8b3cfac955f2da4c9b3547f8f189ffa1f2543a137a9a4534159216720a01d8ff0b5b716c8d7a98b6676d3a6af508b81e83656abfa20c210095aa19ac39ea68500fc021de9630eb369b44d8d325948fbe7c94f137c319a4b2d59ec5eea50a1e09a2683bc1d5b1a806cbd3d85d4a5d04560974ab6950d5041ec1574f888eb6ea7e09b0e9b338fd7946d9288d3103709895325b86bfc1ff34fab6973b095b834421a74e2928eb633679a6b90b3ad38b8ef75725528b70f19d3d151410bb32f5d536854db062919ed00d4bbc838b1e30aebb1a258d7c40a44f1a86f029b9c8a1c80c85e18e1d3f6011861b40ab42c8b31dc3ab13c0ab917b17ad70c19b8a08357598bf8a2fcdd29f81d35626b0a3dc5fadc9fca185ef12645dd608170d3782541a92bef898cac8d15c9de2281018b6d70349b6646fab7d8d637337f1b6df228965b70fa14764a4bb3d921fd136c8f4f774e0a06f9663ef83f567b8397c7edaf2e5029f5c235dd1b62f6bd8e4ba0e8f1b12e57d43ab71f494cdf71075abd03deb329619e56e7ea0425106c2ece9819946f620c37d3ec793ce9eaaa58c8e8976b611dd8759f579074ab694a6e216355f2f4a3e6f7dd6991c14a4368a27556a2388813ba5e84b3a95f151129fe7fd0e5427d1af1d75f6ebcd9c2fc0710473b3b5e6a51c29ee660bf43b0264153ef79b807707f01c64eb2a2ededdfb9590eac78c8d548b0a66ddce59a7ae8dcf719d3e18935051e89c66c2bbcd297b6726153c6e75c959bbfb073839db17b134502c28a4ff4fc9d36e461d34cb10a86ffda70496a013c83c24574e49e0d3393733dbb717af5505426e79a57603bba8d4a463c3ca6891e6b1bcca3709ed884c73ad18b40916c1bc0667368d909123e5f54a1cdbb2007fb698742dd32f13c22fe372d088c8f9005ba64f1061dde9a40be0bda86225a0230ca8db60a3e6eaf4be0c5a7ba1e6e116d3c3c57b4f7747f0981f8ec57d30186cd2310938e77a0239fd77e32cea6a0bc12448ed619a6a54bd4c12234b5333828d141a6de4e6ce1dcd9ee9aa410a6036b3ffbb0d88e17538c171bcf12e0b701d8b9037539be52fa0abf1087476f7e0153658736a6bfac3bd94ac6b28f1356b607bfea6b67c016830234a17c462cb3355caea8015e5ee3d5a6134584d9bcb13885371881727dd24ec2eb553545ba19697fa89c3416467622ac7b52a8afb9874f29bf7a53eba05e462edff09108429fefef678aee9457be5e8a456f66df62c4a8b50f3b72d6fd315cba6907c04d058033c9da6fa25c1b6976653ca394e29e2ddff093aa8ec6394553d30a7d3ba843beb920b59383cc7f56ad1d0e1bb1bdc0ef54d0fc8224cc3bb096665183bd4daa12d674f12709ddee918501fb5b0cb278b0f133cfa1ada3449ab884913e55629bac5c79913cf0bdcd0202978569f3937805814761a08cd4d4ccdd58a13073ae597679b69c89f570cb6add0e90d1be7fe67c0c9987e0d2cda6cdb599476c15e5f822ed60b0d33e0c3e0d0203ccb09282771df2801f52f666354aa8edc22fda3825d095f2cf2204f91540c1caccb930aeb10dd1fff66019e2b48e7b95fa7f0cc9e50ad52d10053f3f41e853869816afff327ce5c43421e5f6eec3f6d99ffb8942f47afd9188db334b1438e63a24ffd29e21737aae3751fe859dc2483df69a4967a4e10b0cf3f53c641999faac9f0fb891529c037acdf2b5e1070d20a54e35031c5f0a584b4f2efbce8c1c20d9648866912280b5a12613d4039434d4316584a0a8a509adb3bc413b9360a307a3941c661c99cd0e19095384461c465dffd1e86cad638690f4f18c86307d1dda2e985bb1feb09315fadbe0ff485801224435708551d3e511130b1fc5fd7a02f95fd98706ca81d35e49a2c155078bf1e7eaae6a89cd6cc7f0460a500a23812c3bf24e52764d4fbec95ecfd2e202ebf77afabc99ad041e65c6302ff423fac42f0f7a19078383d4eb99f8f032f4b661f1cfd3cb1747572d3a20c4dc0e041d3e678a659a603efb19576301833361d73cead609e4406edf18bf4cac8a127e8256961a8fa853339b9229d44381b2bb282610348055b58256143c2a0ccd5fb492f2448a9ebe4d376baa886a6d6fa2f0dc552801f8d5fe3fd8f7d0a58f1139c49bd3924345a875062d048d21e8d2031274630e1d73b1184f5b72a6504624cc666bc11b28dee5c3d53d9697c4051040e8c9479cb242a3c9688800e59d1ff32cfc4f0beedf418c3e97bc63b5022cdac17ed6944dff9749ddf01eb4ec9ed1b260ea1d568b9519c7376f284d972a4971437360847c42bc24d03aea97067b78e394509d54969b09009875313164f94b9c50d8e8ad100dfd618c21d978b7fd0c1ca73bb2e3feb0e01e6e71cf8134ca48c3b1d97bec4281cf1de99b7b185971dbe3eee426252fdbd26e4b8f04672d7cca39b198103eb91ee33dd12a456dc675ed51144ba738180aed03745bff3b9d066bb8a3963bdfe0717a893b2eea4f0f6a07e3a09c14148e2b607727e2c085ac226bb81015d813afd69db860029a7f655dcf8c345c242bb04378c671536f37299afb36c1b71eb917be095db17cf8e46cba1277449570586d1cb18c27cc7663be33e3a7507fdee5f509b57231f129ebe215765b84221b7ceb91d4ef6eb9bfd3e88ee52a011cf6ad1b04717ac89fae14896151dd84ed580792410cd1bddc6d5a379be22df14e66a2d2901c86b1937f7f53a6a1be228f43aefaed2ca4c5bfca1a75b8104f43c4200fd852ccae9882d2e87708e81f91b1e285839a7c40c794701558a03707b198ab21d8212b9c9a6a6d33433ac9255989655cee634a31626655f39f5258fbf39b407c849adcd3777e6280cf2fdc83f7bc8a79b942bae9f7f3108a88782f6ad2bc7487059824b73d1c6efbe1e639b5ea44560e71d0f89793f9518042200fdbd2cacb9552f1ddd324d54b015f000af62234064495725bf0757546da5ec28d33231398aa4760f4d0bde119282f2f3582e7cbdc3531b6e9ab1e2439f1c8146fbe81d11349fca0c9be2466d25637551def7e8c2c978250b939fd986d9666be895371050b136e94f8f560e6370be89ecced114057074d89a811ee50a3c31e179270c178a3c64deea1c7beddae6b22f1a2a032af6d2aa4acadb5a9665d28752dc40ed131ff38d482aee38b950803277284d373430d13a993f17451257c2509a8ace3b2a5afcfba55cde71915efef3da46782008c69c1788b1ce3c7a43a7616a56f26c1ee31adb88de1066e9cf24da758856c30e214f322973587c6833d52e62f063d52b0e8affb02cf41b762121982b360df0502703e3bc43f2c054a533cb7f6aea6c2744291c93a764d875f7fde5f313df46b122ab64fbe510905a4dce930d684e19012f024e8bddfdab0ee0c24c2447e64a046080431e5a3f7cd6415b5cab2f46073fa484dc8abba70bc8af3c977d5168bc0e5ecb7b10c5a1795478e1f2d4f569342e12fc73f39f81f8c45bc1508b51b8e3a6f7ed8a6a51ad106010c8b73cdcdcbc1782bdb20fe3cce9caf98b877025334f360dc35247de79cbe4b5377f4669ef0122a3ec80d3e36ea50616bc00f7d23ccb987badcb1ed64bd620948647b312e6b922ce32b500fc7b95b83ca060562a2a0f5b814d45beba99317df08b1df67234ea2051cc99c3d47263f90cedbbd21508da1d19d9e13ff2d003b3799d6a888d15191aa2d752005bf8c4ce4563f55a981b3c58318900c570648bb3a6e43d732a88472bb46eec8fdcf105e562f3adc44a97af571c59089253bf53e4232255043d7325334edeb2c88bd2569c974ac5c853a9cfa053af43debed581630f57e26127049a3fd09ba3007bc59796d31734ff3aec71a75374025f55a86b4f92080fd93d42e72d22c44197315d96894cc64d9cbe1e770a1bdb8d8c02acb7b04e62af28b19dfe31c3c652259533ed86e447ecf3754f5ec9c2f12c3f12e9fb85e11afcf542ff6c146d87cd4e6fecea87715617df040be12515d4da0758d29c1d40b82f53edf21a173750d739a479a6cb60c2ee7a04ef00e0eeec002fc1f030df1f50fd9bb63eb01c82974a46ff1a5034c6e08be9f03e2bb8d4287406c5fe197923a1fd69cc5af91870e05b3fadea1090edf36e6f98490a9c9a658ac81319620ac520d504104f13312c48ba85de9f569ad17ec8cef0d76e4a3f62eaa352f5166dff092c07a251682e90fbc473f91785fb1fbe13b602cb261c454d634d7bec631d9f88b30d98a45b00b64049c96bc81283e115512f589f38ff78c231b11163fddd13f04d5de1f64b103429a80da898c488453e72e45fdead99dbd8be655740ae23241deac7c52831150a35373bb5a2aa3838581a0aececeda1b046c4b2275f6c2ce9df53924d3c200130b3ff7eb692eab9370851b46573ead17f7194b1da5c9d7020cc68ee0dcbaf3e1122fbfcc43bb3de6abfd874cbd5ed41d947d25bfee525e31027637d12d1c10de464a4aace6db1b26f20e7e56e42c59d42eb3528e871f92f43992b63b927ac1b0ef94fa5b6e98ab6bed338e9f06e4feaf53210be534675371f6333120d21f717cf191d45b320556f8c0c7ddec10141031fb06b6c2dc23ba640e2f1aa0b7bdf2caed99867286bd570b81a6f67faa024fb82b2929e0eb95317f0b5653c4c4f010861550f2c1e05d9c76c4ae01b3b0579b6d8e4415cc1fe8b9251c33e8ca223fa17c29831395bf14d34181d53e7befb931121dfde343d3fe980b4b7a3cf00302d11589161e536bc19c90dcbccf6078d05881a9b74b593347b4b1187c96df33c5103fa55c0a8ece7100612adc8b7ac0a2c2dcf523868811e098b0763384733ba302d31929585e7f3deef0d202f477a007f5621f3527a3235bb2c72e720c7f7ebd331f609ac10882fc14bff89dc499e73674d853429ad6a25d55e70122055dd32653c4999448db211bd55cdb712bfd21aa8f40eae413163e187d6b97d102b78c6463f685f1ca7bd8c27cf2e711395fa178575d630edd8213a99ca4fab0f8c9fedf51b38761207fc8afc906b86b5ed08be1b2804d976d98a4749973ba94a3c35b9bf27ce36a56c56468d9ba45737b58a7fe89fed5c8e57a4bbe020bb31364aaf297e0b7ecd4301ca626439363c3442c525a0502d8fa6a3aa66d8adaacd05e3e8b3240cd69f20422c4e16cce67f898c0452b9b8dd054cf7619f42f6082ad8833b27683bce2202707c05235c92a65e6084c8e7b9549561a87774d8523b1e3319a8cc6331e7df566a532ce37b99c7ec8d08082e15fe3a2c58004e4bc9eea2ce0f6e47d633ca03b923341a811a433f7ccdafe9672367dec2687d2da13787df261aa4fd3e32f4e477f25ccda98903a12db04f790a9d01af7bb2debe287fd185b01da5865e3cc40331ca29895d25dbb62001f8400d45e95874327381aadc470e844b2f7b3610e37262775ba02e56010a0fbd670487859ef6ee652edfe610347c9004fdd08a326041ca3676eb595db3f4ce3d8df2ed31c20ddfa25de7fcf0e0246cdcadbf241968b1cfaee33aae54962af0aca3529184ccc5e88c106c0498f7bb0ce7c75c5f1a332eed6fba2350205cbaa0980e14a770f25482022987212b78dbae08433be414f3031ec20ab198bbb9dab14fbc93d1f9a6c4980b1c5aac385727d857fa6ef12f0e2e1e8c422fe56277ea80ba616446f613331e6b254b05863f431cb7c1c9993b57ae9c1e77b3fee12b2f47a68f7b1273d3a1fb8c6b083878c007e31322c5530c3d0aa81560bbe0f193a39cba2c10f8295138737aa95247b4fc926a71d1d7283446322c60965a6f8c64d45b740d7d8b69ef5a20b1eb6eb6643bf88a39d9f3e222a02f147cd4381e6e24426511d3b1393a08cbd99aa4ff7b85c44317dddf4e2d1ab0a3f75eeb1504d5276c8833a731977963bf934210052856a3ee973aa8bcb13b8195ac43d19b17a52b3ea5a4a7ed87f0d230a1ccc5b53355e2d275699b5a561cab7fb37017e3da263df4cf2f4186a7edf07ef37545d2d8a01ace9369a4ffda2b0493159b66555c425a917dc69d0b06ca22251ab7423023a9f8be7f2a657cdf11e5ee66fe9a9a3effa7d038d8e318116d377421c015ed55eae6df154d46a5c815523a7e28d4ec72caff69eb2d986a6a2125b86149069faf3e8f38e32f6ef55321d977a6b11aaa5f5ac276ff00b194a134dca40225f88b7103b8fab356c986970d412dc85555fa956f24c83c8ae2023e309d7d1e18f3e6a3492d4dfde774662639697d68cb1514d42431bdf12ac985952e12c9b00c9d4084496cc983dd672dec1194ef5b15453b659756285845b448b5787e927ff10e411ed27bd8ad6683b5170148392ead356992c7a38f547f20fb933de5c0e3cd139b7e51ca3d5e6a0b2e8e3f84eda0fdfb9bd25533a7dc21a0d8c8f59e7d88e62543888e63e1abef4837a63f60d5a1db4625903d122500f225ad0730299c3bd89f57b56ee2e5fbfbaf2c891d164cb53f2ca2994391c4f8319b7b7a225d5d5804b3d7296b24b6fba0b67afe0f301a4403b9a80bd1f18fbf483c1f0dfb609d3002ba1359da018da4e90b88ec1adf8a18daf345cb24a504d24c31fe18d3eca33d4a6bbbae6a735c28a26f797f0c3859c684a23f59271e2e00a24791692cee1250f4be96c1f5e9c6560114d2043d6026527efae84aa6cd1f93853d17df9e6bb61803cf04d0a1fabdbcb13471bf3bc7c95af91d25a328eac04a1d336b433b6395840c48c5b1dd2d541a58b7c7b305c5f30f1631e2fdd39855b2033846abdc9ce3087da03c42bc60a0489414aab833f1fd9d2421da1b18858e120829df85f747ec5b9bd70f30d19fbaf7b449c96316aa328af0630df86f78ac516892c8c894715df875ce28c7684346b30ee64ef3131159ce77cf7bdff3f7e8a58189b98274ce6799c521160128927311868c0fc020ae3816bd61523eb8dee75137620dfd182a4005bc734e47d89a825930d020230167630916bae1882d3ae555751c142f92851fa66f40e9394ffcc8d27a13ff2e15aab37a337fd5a5d24522cf0b62fb77e947628c0d49b297eb073a94ea25b78d3513d71d791fd6f2d5b1e1672842dcb776194848ffc789da622375c954771d112dfc844b27357c60e1a9e51d2eb959b39b18e98522bfd4336bd0a78a32e3a566129c187b393433c5ac84bef76138fc4ee261b905f2194aeb260ce74cf8bca21715d8b99cee2fc7a46ec47001225ba0ddbb0e68ab751cc5dd0e988aca3bcfb09327ef27178738268b0f1ba1eb35ee9b7d44b540a165772693d9301dc919786a202da270cb562c70c1b6c986c8bdf12cb48a0242a1cef7366b5743c8a20a754594344dc9f2b3fdfe5d82fad81e21075f7dafcf2e39fdbbfe0446dce1ac19af5412395f0bd3d524e51a4c9c1e21d39bb3b000b988bb739bbc2457b891158af1284732ab7b3aa780a14002753f13121ea0a1cc64c9ef9273eb0d7031b72d723177260174fbd9ef2400b3f7f0f7118bbf0a979e04e758c3826c90c14d992ea041191c24234a523a19bebd3944cd62e11f10e9539795e5d37f7c01183cf03a2abe1ccc07ff006cddcc10d1f03d9425e7bdf31d9da922fbd03a7f1228211937238cc4703e9101a042201afb325931fde5c6f7c47ec621f41952aa8e2006c4f592e2302e3ad568ec320673049dfc0fb8d5f086d59859d62808e00a19cf412e31b080afcc20edc9eeb4678840a7ebb7295ea0e683c62768f39e47cf006be8033c486b08563ee77a757456cfbe2415c3ba0d47575f08346b20efa6a87d5402819d4213a0450e23f10be58e9dd76671ecc1107f3c5acda5269724673e8ec191b9f1a7ddf19f172c47211ab56cd0eecdff512426d78bbcc2f38f97d1eb70578789c8180070de3ae2a8d26a9e6e4539e3b4de3716d7f150fb7d39feec0ef78a587edfc727c93126d68c168b4886095bcc9163bc2dd3deee855294149cf2b5625fd1b9e5e9958011f2c0dc8cd84230b34858d889fa054bc404fa004812edc8d92f28a292ccc37c09165aa28d08263ae434bb30033a71d9ea0dd5de189e94c10d2790cc6ce7d4e19f4f810fc05166c32bae0fb69d84a9dc5b0d35f8148171857d991bf36af5cc0a22b18bdee2ef84505741d7085d88106ed11d253ddb3977a34cfbd305f367c849065104906bf57a0935b3c60f5ee51b675b6228de64b3ffb62a3391b9dc645c6828c2b47ec28c91cc99239a744f3719091ad0e03427451792035122d4843732cf3da30d58469bff7116514331628df235ffb877a939d440080ba12cc2a2ce32353381738883419e97d4ccd07fcb3dc63ebdbfa139757b3b95381fe7ce6a1553e81518b423838462f01316b0f775a9b3151b32c65aaeade672e6daaf88ac79be2228000abf961e78d5782aeefb57098f908845ad15a95d5e701fd1d89defa05b8f340dab5522f0b9df89b0b2eb2ef64a28b8359d4b84ef3f9c8f5cf512ce9b857f9042dd6956ee757891b014680aecbaa6783fd285d7b84f1fcc7a61c901f1f6a317658faf151be4af79018383b87d316b461d52d18bd7b59b6a2b89c848ee14a283f9a4508431154539c9dea95904e145b8fb6d4f0c45056893960c4d3f6d3f5388b85d87adcc3bd8665be2196b6ee821d231cb396657fdf9d1969dc3518a3241a943d6f1dd440f38690e075fc479b86a4514acea896089865705c82e48df8f023c34f81f38f2e30ff036565801466557f164088040647347dff36b0c374535262f68bfbc2ac296ddf1c8d9257eb4732cda98c5c792ca6b9dbc8b0dc5f64407fe9f59ac0fe03a19ff3930eafd6a8ce45e1b89f846fffd76f40dbcb09b1114f338360c102befebf95a168ac30f5052b7e3c38354c3d7a033e7ccf0902e0ca6b5bc04593410ebdf55d7d7591a635fa2ef6f5f5c2e15c48ff9f27f6552b4bdf2a9a0ac08dc67276d20d7007e650f21306d3661a1f093fa239a82071279a4656de667a3ada00909d3031f03926158a63de852e6c8ddb3fd59a838ee56a646117cbc2997553beaaf2f4b689a6a7759912a9d6096b210d4d790cc0dec27bf9d431b418fbe6f5913ca2cc66cf4c52e8c36bb20f753fe606b2d5958c37f083311e200b21b25727aba247c715658fc6a6b54da44f1e38dea39bb2f0a3907ce7b18c1d3a4480506bb180724e6b08ea6809bff871f660846c147e7deb8c626d25a5262cdb0c83accf359e427efe244bbbc5ffb854e09a1d4066c2458ebff504eed61ecebf839ad2a905c065b5d95ae85e631ff7a28706fda307ea46b2ca3abeb055e4aa60a11ac4c8033e0693ea4522e4e6d56113f08ce94b1b904e05045a52f4fadd0f00b86a87a826f9ba29983a5201909a8885d76669528a5b03ce0bf29937263b6acb2b4135f168fed4ed8ee44f99311e53001e7a1ef2dfbd8d143acfbce3f39be1af603140000000051ebbfcaaf16bc6b1d666f39a7f768d5fee06e0c2f747ac739b5d947f8a35e2e6b2131c051684a6efab72a5b9ad8b33e15444a0bd4f052f12fe537339f823b1d7a981d810d60e67568424b1bed3dbb73b3bf3eca30bb3200f36f5c372ae4ae2d49db18cc0183afdec7f248c08a784550800ac02e089252d267b2c4a319cb37010a000000000000000047ac23f6678881dce4554bf264f4fac76a0b5996a1b63ef4e06553a160633704958cf3b3e452950c42fe386cf228de085b321668c0f1563d71e1d4a1a4cec432 diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt new file mode 100644 index 00000000000..21f67fd8537 --- /dev/null +++ b/zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt @@ -0,0 +1 @@ +01033ecb3f9c050a473407a33a2e0c48d66c98f3e9ad8e1c86aa6c2477eed5134c07267dac2bf10a0d87561d6bc6b8e12bdf1af184cbf6043323e9af1e0367212a3afee93d5c718f01e33743a3d0dfc412c9bb6aa239729ec10d8de978f6e69591388277fa188e2eb49bdc922ddb8d6930cff879c34dde4b72e8fb18ba29d8eb1c362e1fbdd19c90b44daa224bba3c973ebe8418c570be825b252ed31cb25a0af7276244abb51477d6603bffc084ef5a9ae21a467178cc5ec0c52c21d7df00571379fca31fea67d75a7aa33dc255e9af4e841bc851c438450805d44191d94cb796ff6037ca993e12bcca63fbd66ded2e16628ebc38d8babe6dea6bbcf516700069558552bf43c525685987258b1fc8bbe2c1b06c6493ef7166fcab5825e3a8809d84edd346077e40529bb2adf6aca16b6d1c39e5615e4550b298b01d504440b9f5270659d4dac606b57b602b43ce3e863ad6580f2e9ce2c2cfea16d38582d7bc134993f1ea0f5f1484ea6b37f9fe441555a536b0836650b435e83e2c2e69bd6751c3e5ef499b662b112403422077e2ef745cb30617810f8d98a2015cd8972e64d738ec4c8bdeb591eaa22d39328e6917cd9cd4256612aa38f4e8066aa545a37cfe55adf340faf291dd58c75ecfd66282aa2e032f74802aa815d34e96f55234da149c5b59bbd370ac5610f1b5e64c7012dbce55a59b1259b8ef88712a09f9cab3141fbb52bdd0d582fdf1ce7916ba42cb9370721863e1ea1fc0d803d0479994e7fe921f5f1ccc8a46e04cc836bc678e24714138caa815d8c1a462b97571a56ebaec36046c7260d28b4b8ceacbe5f16ac2b2abbda9437a0cf33967c306c69bcf392e25bf934aa55399995876451c3cf08e768d2b70827202a47a3ac4c83210d80e16c23a28c49d61e98904dc326ab317d1df2f11ba13bd11232bdc5f6e96ff079711a5710deda75a92b4ca66ec04cf4ac81cef3891059cc14c5f7a0548afdf74298f53f4ff38f5110d0abae93315329d09e2be123ac239cf7de6a8dcd0c108889733fd000d18ecf6bc8c9d98c2fd3d8f684d45a2152652fd6e68c3389ce1abd1dc21bb99efa0cb0df767eb312d39bb2d99e30b986cb94b3b32c1c828f737ca6421c93659f1445d5df9a7e73094fd32b9367103635d4f5571d7688f2231c6aa6c923c3a51788cc317d68f8076f5b0070c5da908ac202d16befc37f5aa4812767537297ae9a6799a3b0868ba199e6eca4cb7ddfc0cdc3daacd1c2338b4bcfa408eb51ec8882b11e0ddb125de13632e4e391907683d846800e1735479b572aa25d4af90c3f38d6b0e535a899e126f6c66fbb22c080b670280f308e05fd24449f60d46e3bfd9544deee4c1caab6651bab6858347b1678c2d38daaa87ef9cd3c7c18b11e2df5fd588b78597e57129bdffcfca1dbe5c0f2554163ccb442c1da86705e26e757a67b65f24adac34167dc30f1ae8b05c8a335d25b87f094780c0b541c8d589bd19094c2680d9a2bff177855de95c0c28526d8232b1c6a09995788412b9c00ab63769723dc76f5ab52872b7777855f74173679302ffaa690ed034ec8b8e79dfed6d1521ae95880e489962824b33eb3bc12ee5085d46902c2597f2668d58144cfb746085cc20e604ab01a21b30bf504931b4a3d13109f4e1d233fa544f54152aaffd8fcf5b5a9ba01dd2297d47a8b03999d8d4da58cdb25bbb68691f25673dd68f9cb3fe86b54902452c0cea041d213a7439b55f6635a52a3fce11167893d0bd2b3989bba0e44e6448220f9d191ae4f6d0e67fc3e5ff882cae024fc7b1450b325ad1c61ef03ad021cf0d919fa097bdd04c63aed31f586c10708732978354e1e1bbf6391b45df8b280a85840ada1211a4d72e978ad7c68135b79e02ab3f001a08324abba4ec1c3aa1ed1e0477b78efa90e83c7c54e6f1fdaaf30c667162869789a13c17479fee2441d254f35f24f884350f9ed805673e8dbe23501b6a04482aa4724116b410e3919519114c8ac26fe4e5eb2ad6f2a924522d8e29cedba1f866f57bcdf773136245c2cc93e8e56f95c9e4d559009b37804b16bfca4dee41a0c3ff9f7feb29d2f2ad819379e80a8ac62e7712890d691db376dc4f38ecf924dff03a7bd41be85210f7c73f8dbc6b5474c19efe530790b6b0b84dc5bab63b52478233a7ab1a7eb97d0ae68ae95de60a9af4b5d4055750ecefd13f5fbda721be420d24f6b024b37190e23b0bfebee696c2bea72bf79ec038ffc92a849bd1f5f17c0a25fa3b260e6bc322e2fce3434615e8a20757c36ffe59b34e6f18a0809a516f9ad63b9d7419fcb1a30776357cc284cd37e9588c0943c4dd923979bcf0124928445a0b2862bed3edd8fcb862c3fb2cf5b7b48fb094ba7bc916dc447b480e9227550101552c6f999056afedee0ada451116fd2db584897cca6d8f9aa86726fec504ac3ab470806a14ef4966baa8e7e94aef09da3f51fed45c3c74116fe0636c48e93d4d3345dca870d7d79307edace1c35a8ee7bb62e55f65a3b8a72686a3e103f4af479b47ef658566b70694523740a1e074967cdfdf6b2805f6b94a79dacefb5b9b46d6971f7104cdb18a3c2268e3297cc8676dc9ad44a724294ab50ae6c9df047b836535296612fd10b1b10fdd7ec91595a0af0c4bb51c977e961cb8cf56fe1f100e05c0689e2675a0f9a40d0d6d92eedc1e7faa983e11724edf5fb3d4fc45f41e61965ab471fe069790753b1102f61b6167d646fc19ba405adda131317b1f2d1ceb5798c5742473771ee2b871ba6d9eee55437fd5d9c0d59f1367c882897420ba25788bb4d263f481027898b25f865273230c91b72c6c0cb60349530b4c59ed5592e73b8e88d650d31f5cb40b7ef602ec3da2e1c9d1fe88502aed7ca08539233f1a7a184d49e75ed7e7f8778b459afb3bb10b7d71215e47eef5dc5c7379837c366c39d75bc4885669d52957170421441fb5c5d07090949e662f8ca0830d37cba5c281bde4db823890ef4c494121c3f1c8b67ab1ad2c258feecdc6651423266b2ed1f52b3cfcae2bfda9ba756ad48872f31e070ccfcb1c3670d62fd615997ed2feb145b265cad6cfaa07102a6c80b0015a1205667c038c7c724dbb2d4a1a380888355b953e7441fa6c73cddfb2ed4b4ad35b50394b5f534e5283276c8558cf514042d66d2deae8e27209e786ade59c1cbd802b8ccbec0a520978a3542b0bd2a780428623cbbbc4458f17f23168dab11a857f415351f6514797662e3582afaf2a7dab7435a90db97d9fda8d0ea13e8f61bcb3e56d7f7f55041d0b09714ae67fee4275cff57385cba3c0f9e2f0c21d4a592998bb46c7884542d14a625de8abff6e38cef252bdaaabecb8331100d1e6849d73eeb19344388497c4e7e79ec4915e7a0a0f8d2c7b3323a0f52426df6be1fde9846c076c89265ad79c1a296ab67f0a501698eb6a4a185e3eb6bad089f9f6dacd8e3f6926914135db2dfa5e415b7750b732bbcf557d5180e0394dcf7d6bed8a94f88fc5feccfd77cca58caac9ee01aad223b8899ed68bb38665d779ec470121968a7151ec98816ef5d572d155faf59b767d4f29e648c6ab1341f4f5405f2dc8eec81e0bfcdd8da9db2ba8c2b972adb1030000000000000000000000000000000000000000000000000000000000000000fdc025e0684a163d606c7b82c9a23d9c03f84c562f031f0e61339f93eeb316a044e50a0169a7bbb648844083152701cc2ea58b6cd97f2b8bf5f8b02bbe84c1a783201f68aa291a998e48f32ae0507c11ed7a968c75260f40398bc020779901526f812500127a9c5842d815e9c75e40fdd9bd37c9ae73ca91c9ee1f54cc8f7aa5d57c984821a7c35253f287fbadc4e2d9cd816d765a3fd45bb23a8fe24b3c55a5729dbafa1a667a1a1bb9fd0e0e910570f9f0ee3085f32bf627b5f4fe544684f9363e22d45ca0c3ee06405f9a8f5cb749c1a1e9eb760c13d51a79213b87d96530c35933f7dda4dc8ea36b7963b8d0cdc57026cc28b9a1f514be4d4fbd477adc07942f349a2c567fa4046e6cbd3170c89d12b281b74c021d005c0b5208bf750f478a3d06a15f53e40b3bd72b00ae9b061bf8419e347f5d1fa9dd46655070365212b784b382a8aa202ff887849978a29d018f054ca40df602752cf6fa7dd73a3766ff1c1e10335e20e10e99daee9d6d867e802b477965bffb8069f36ad6f4b3681854be095b279a81183c15ba1e0d68564ba3da48cd6f2b8a328ac7c8e108b69bab76acbb724bd015e1bf55c8999b82d6d56f3c49a90079e9f45aa6414af0b1c2519e5b0fd2fd3631fc4d779c26f50b12332ad9526eeb3a32827489e424494c1d5c049b31455e10d9367af27210362db6a7ded0fa9ebb8d95657433cba7c46b5b99e1aa1ef6fb74893f2f37c22894270556a24a6fc30a04fc78ad9e1f9b1673e91b7626933607282ed07d658ae3f09a8fbe816b9fc507e569605964eb07a0f6f2b13e16239decaec033ae41eb065782340daa3af797aa47f3f5352ed79dfe698ebfd8ad8bac7a315ead576d0eb619dd59ee52a9de31c00c5f1aea30dc6e097110f89ca89973d90ff624e28fe3f9b405b9a11c937744d183cf5e81a9ca9761e97ca5b3589820e89d4301088d9bb97c51ee30bd177c4e48201b805c5996d21bb2d5d400fea7197b8fd378723941086b31ceadc0dcbd8297e4e51c06e5ebd4f0586a066baf2689f72769deb2e7ffc99a50c0ea323ce4df7eaa62114af75791773487dbaeb6b21510d60526d7eae80b816fee3c34a0f8399a6e3c4816cc34058c40e3eb457daeb18e24ea9906cc32ef62fba9d70569a15f7903ae8c0fced7c9a072ea3cb0eda47357935a6278c397c337f0ee83d702f0034c98898364f8ed62416a569c10238966c5e933ff8fafaae66d5d28270451189b4c3b1f743f905e0f76b2bfacb031b056e216f52db2b609e91934376e70b19b6cbef243296f5f84dc0b0b5305c2542fc741f8fd3e2c0c4623471f4ee628ec8119f05121792a6ac83669c2aaebb96c21c0b4e8f1a7824654450fcd34e748444aa411f94f7bef249be9e4326c1075b4b1762a249c9420da9ec86ef2f35a2900a3dc735477330288a89d426d5917b44db2304973fdb84a9ae42117a71b580e1b021d748a6e90ed40440c7fd1f5981f0a1d33dcf9707e822303f0100093256abc54ff5770f6e54776644fcc36ec0a0b6a8d3f38de12825420ac8c7b09aa8e915c36df6a70b2888ad7d7ffaee0dccf032b22433dd135bec38666ee69e88edb9e9874aba156b4f9368a4a722f51276bfa061e2bac04f387a3204f9b9d568fef55a87507ff82203708e1309fe0b7350d0d91369e223d393df88692e29c17fbdbcc6510b4ee4d188ae9d8842b6f6db55a1a53a7996cc0ea6c849c0803385d24f1a644f36472b05243d1cf2f643ef0951fa668ba5fcc413da4ca82fa0a2dc25021a1f3ff28777b39e9bd691b9e1965a6a3dba581e4f0594ab20d0a8cc2e4aee2bc5befeb1c30bc7a72cda223c9d8243cd613ac0c73b46264ba86babfc61d613562a8d07aab3acc544536565decf207f48b9e80a9131661d32da7e685517ed8cca533cf0770917c233dc88da69c706d373d1bda25e370be6d547df2f90d951ca577f92351121c128d5715c38edde63bb753cde09bbd841580ae77ab6c265a6e44f8b146160136827728a7d7e97bb09bfa008041361139258c5fc4a3175cd4a5418fee1a406766a98929e466769e7ce441fe4fe23e7624048255b93a6460ac952509d1a9780ee6d765894b2d933439813f9dc3cea06314fa1e6eb41e7d637f2d7e8de66d7fb607bb8d76974af25699995b9b76c3b2693b100bb4a3b485ae4646640a38ae00eac21189a1ecc3b0970e4a0b0e77032182413b98d90d901f868d6c5a7073b51f36cabc6bee5a39719e5af48542220e21b7ce7270a4aabb3efc81ae38d8d67c6d7f1bb86c5f75764fb10cbdcc8166c1147905e460ac882dd3c2c99bce400d0a05841a1e9b33c99cbfe19671939ab9039ea721e38464f6ece78a355dd044ac9a9257a2cd4819131800bed781ca0146b788a4f4499a5e7cd9ef7ccfbfd2a43616154160525eed26cd567ffccc8b94392239def81dfdde05ee188644a43f032ce934f1e5aa3d366762c4544061d4a08090a3632054557f654bfb5531eb8ea39f47094278a60be0c2fc8dfb75986849483a80cd2cab19fae31837febc6b447c1d7dbe493ec160c7e1eb49cff802890d85c086a6196edf89a7f6fb1c0711cc612e0c9d355f7e8d3545e89d5fe217755fd71e2edccd4abba6649f749f04052ba7b1f0cf5d6efe1955173151ad68e0529cffd290f70c0244175c3d2984b3361fa7e1ba5b307a54f4c9d3995961355b8b8076779724559ad2ece71ac38bd7556d859812f761bce887b10c203c10f8ef6d7cccd1b6d4cc51c6d28a0c9745f2343734e15dd6c083795b88612ec7f8315cbceaabd22b1e0c495738e9c6c68aa846a21c208c4c4a5f11dbbe1ba377e80cede1831e17b90f6ecc66a7af394869b8ff7ef7dcda378bfd215ec1326c0235d7f30ed097fb36be07cd34ae51d9a8401642275a15ab89dd9fe352531b499689d134eafc302137b3fa6afdb507429cea3ac7ebea28b29d991dc27d05a6ed2cffae4e409c40dd279da4431b75c69756473271c9b1d864bc1622325449381a0e2e7bf0df2c204294db7702ec699b3f8319e71c0dfbea029df67a0acea9b9aa9a82e13d9e7450b701d3fc6b10d126e89a73a8f3cad06de3053789d1ebe7ccdf44109ca4aaff3636a8d704a6d823b2454b7ec88692aa59b8b98b86474f2afa549bdc6cb530af07191511544f1e3657a0d4a6e58cb14e9e9223bff4d1d10a264a222ad3e1f2b7481500a067b5867d21591a23baa9178ad3f6e00c1c44b3df47bd25802e6c8c6fadd5b2bd66ad6d6354845a28462f4e91355679ee558ce4ec05ef88dce4e94d27f73119f07e6ec7d88301a3ef5bde0370dd5968722a9f84d825c7367dfc725cf3e410b344f15d8892bd3f2e17d9488b5c39bac17d8ba801f52e68ea17be1feb287406007289fd15565be196af389dbc04a92d489845849f9c772f0b8aaf193ba4405904714bc6193a24b9661be0bd210088ec44f1896b5386ce553736bf3d32a4834f3e2c06e9748d587f8652ae6a4d3868c64f24720689dc5b4f3b155679501464930bfa0a9be1c0ed00174d0e7394669e2fe88d2423a4522536238c9a42196eec463653903f48125d35411114afa4b9dd1887636f58defd5bd66a2760316e92969a202d9755e26262c6658e48b41498196fe5e1cc9981a679204633a142cf0038b33cf2d7371f0efcf8577941fbbd42066f250e21e7d8300f82be62cf739dd230141981b8505f7dcf66859586300e111a1b176201ade72f12141a9053acba13a51d322d4db7dbba49cd64672868567c4710962610b336d56fe44fc9a18d1b043c023ad81f5dfe811bcbea23b552a93c2d9c113fb9538cc5f6f69770f592b645ebec27204a7c270715855e14130334d2d7fec738c15741ce8b165ca761c35b55d9820517d236ccc29366d7ae5881d583ef626a07aa06aa89583bc9a05b4efb6c5b6d3293a95d1f4b036b6d7a6d21e1e15e9c658396c8cb77e98e311f99ac5a1f0e553000aa32c829c95218ccb0d60d01c6a5e4088476b7b094af08d65a33b55581b910207170001314afa5849db216526c837e408acbb5be863c2600cc83a1ce07d222d21c1b475f9a81415bd3f0001c2374c3fd13f8497783e5c6afe3bc42de8a41120d932faf35830c979e49b920bdcc3a8233777dae7a4cc5907aabe73ba8e9fd2308b108ea944d0c8aaabf905708e88e20994fdb1bd71fe256b7da5efb1f2e711daf43191b1cbed6d0dc139d7945169997f0204304f22e4c86dd1d1736b4cb381009b449ab4578cd27f37935ee47c18edb8ca6d18536c6d1df763a3463d1dbc73e423aefb341c2ff0182e5de75a00521fe0bdbd15295315a8be0fb3fc294253c29157d8cc4265e286db98bb565d415c1e17c523e4e6cf5b6cda8b4cd6edf02581ed50fcd41c8bc1a5b9c1356ec441d062581d5dbc4d06e6dd03dce240ff4b39f0073ce2f35fcd084a1819fcc77b692968a39cc8242cabb3bcf01fb12e452f94f33d14c33dfede581664f0cc0d25528569a0c92973ec82889c222909f41dcd0791e63ed8a5d9cb6dc449ddaf052e7955ba1ef4924299d1c11890c35185910f64a20b2f96e54cc3c72601b6874eab0aff4c4d6f30e05240618bb7c3b7d39daf51c2b13cc1ed1824ebf8129d509ed8b18c7f72c5be4f84773c0b0da565e7728b97c291e69598e4097b762ed756ff4e5fb1b6e379fc94fb88bcfbcd525a3fa956b701f8771dc76c18ed921c266d3e7a310b9b5868adfa35408d9bed1b8f509883abe1a9e6faad714d237ffd2886722b8ef0e1fb1eb1edc66b489cb3e0d7d359815ed2cca26640cf802411b0f348fde0aa0644ce4edd7b836044c5b0c7b07b6b81d7a31ba8b1103d2351305fe6cef6c8e3b3d8f2916409990d3c108a992497734c14711932e00c9180f3d463e0806b04080ca273783e58dff34df056420ebb9536fd627b495825bed62ec717df774366661c840ee6d22f9a7f248d6d6edc1796713552413edf5bbac49ac1e2042608f5ee810cfcd25c7f4c7f4bb2f0a267198b260b2215188d0f86d1c3f8f9bf5c74a411772ef0dacea1216428592ef1ace3c7d617c264cbceb8003868ba7388a684c1a06f885ace859dfe2d2f6de2c7065f88ac3460e372c09962c51961d1b164b4c9db4696322d4b37dd94b2344ad08cdada66e550deda1e0b43daa6f53dfa89bce5f4bdc583233cf3b14da98e79306ba352b9e4726e9d2cf8fcb53d891c79cd541cbda9e9f33b4da9e81a51b958f5cb4a7210bda251004619b293c2ae7b460861f0918f9485e6e3ca6761eb686f464aa43ea480833406bdbb74064e455ff74ec1dd4499da4793c29ecf6cb02bcb988cec581d9dd375607c573523a6fd5c69a96a008c57db76d2e2ff5be3f4b771faf48bbdfff132070f042f876b3c1f944bfd60dcc318cbce58469a04e3baa963fa388b867da1c0d64fcb055f22ad492c035912b7dd009ab892eedd27ed4995d1d1f0646cf8fac287b4ab0b5b4ceab49a0fbfe00cd8ca44dbd0f6519be4602991b0d70e929976c0740c0a39019db5a1737cc45e185e75608683b65c6f3ddf3cca45ad9ea112cba38612f676e26d9b637d3f6fb622feefb2b87f0202f05d1a372bd946fe0997a812fb70780ac557c9f4f626f12eb00ff3ad084a9540d7206404a658689dd4ecd86399b4085b9e1c8d01a5b76b29fb30996acb4a5ae2eb6af86dc7f6fed200061211e3e76cefbc2b6de2913f12a1a5e978629a28d09145ebb16403d2fe058457ad9050bf8b0bbabb4ad19f6fde34ff0b816e35a807686419aea973a885aab2ee1253d383e97e932707614d08e9bdc0b0a0882e68098a655a06a6ac60193230f98421c1359d5e0083294ef1a0ffc1ee16169ce14c3e64329bf70357c7df36938895e18d3ff3a6073925799692bfca1495b3bb34000563f715895041ba0e18177930305d5f4df915133a0e955d184c1ce1170e6c150a8d932a7b203535ca66a4d324501ff50609ce6ffb29a8a53cc483cf77e9da4258917fd27fec72c0fd928e366452b65ad473f69954a8113a8d1474f808691f0abf79b3b9e22187fae251e66e2a00c57d666bc48598d9ef35af98cc02a93e170fe213a0b08974907098e053f714a1fce7de3a4e968f2e316bc147be64bf1ce6fede5bee9918a764d9985c16bc3b62ea3480ca717a8e4cc35591b0dc2a8d94826f1cb454949de8177dd31e06233b724197e54f084834d4925131805ae0bd92a1e9356a367f0118a6f5ddf7e7cda8601971a10bc8351b7021ea8ed5efaec03bb09c943e4f3c737694b45be449bc679366476f8af0bfbb010196c17c89101c1ad2e8f8268b4f22be9fe063a3e96d4d007c52ecbf86b1635814ad57295d8394d0746f5d0d7900e0c0b2e49ee9675ec7e105d78ef86e1f3a8c42f6bfdd789d62014e954c462aba2405a6181e557b269b935f50bbbf9e7a4655e19172c63c7e9bdd1f626f935a77c43ec80e78f97c0b8e1378829a6637bf94c4c1b0c95c6f74488854bf6ef29d7e07ab7f8f5149826f6663f1c03130ced8fe4ac5ab522a195ca77086b996903379f744f9af148f15f64f6049eb9ced7bd364eb073917e1f2be6ddac4fb5240350391401e3ce8ed42fdb60335748d5cd7a6604ee9e3ccf2ee60a088b94cc3e584b7323057efc3a0d256b8d2fd2300debebf7440379810c7430e571d916322f68f66edcd35540da0835d4403a2da40fa7acdbf05f93a00d59c60672fb20f0b4d8e28d982d3fef205b15a60b38b7ac3ba179bdb988083ca7d32016afc89fe4a49d7372da3b46b73bb7867a50317ccd3f987e624df3d3d085e02ada3795908bc8b3493b66bcb6a89a4572939c12e889de5d4aafe26eecec99d251efb2a7e5518132f2fe91d57c92783adc63da1aad4a1f75608ce524bca847a60a449ec04ad5f413dbf30298b977d472c5cd6c28fc82a9882f58d71d4d7696a23c96a2544c94107ff90d6f0a199f79b81be2042552513381ddb7e50d22f96a175dc3fbaaab26df1928480e2a1949cc57d6c65131f902ff78763208b41a7daa448cac014ae88f6c701bb48621e4b595cbd65e3d3fa43f41fe4a6244ef521bba01275912f7340ec7d392ab97f7aff52ac8b4cf5e31d03d3f9a1e2ff38c49b249fccc5daa2940f506e52432c3221c6330cb1488c9387aacbd0c5723c556ce1031bb0f29af1d689bee2ea3be6eed8bba0819273ac92595a8870ae6cdd7fa5909ff692e0b68093f5cf4145fe9841ed3c90f289eb4801fdae8a3725eb9b2987838049448ca7765b86764a642e416f1d8f4856c3ddf6704b53cd36e0cfb4e1a2f49948cf759db7287cd1cbc79080d48cad32b663e7efe20335e7e3d449ba9dd8b7fbe8240053769eb6682391bd089478f7553be1f43f608518bb2a10ef4041ee3120fd337fd59bffcf164d6311dc9c9aa57b084b441ca170eb8147905b71cca0b4a0be331f112fffa1fc4518aac96c3eb29366a69a7ca207511b34e7765b5cad9caab145dc0ea8693c5e5dcd683c54e3eb3981dc3d3ae1503f706dad2871ff3d66135243b21d408a39746eb4e8020d8a838c8c65be70e308fd4171300973b3d476d474c52df08d74e383b0e640cfc5dca90ed0ac0430e193de618861e91f754ce8a74d0a14a184ecd5cf635261485d4c216ee86b9ec54138bb1c92ef4ad4ba2ab3ac3fc26bd864688718b8be60ff0fbc017df489df494013e9049fc598d3514cddf09c12c9a451c5eff7572bf49eb65b4194b0f2a8b3d303d82e0c97083ffc59b723987434c7a836a1aa5dcd8141e65722329e76cc52e0b50133e9d324adc0309b9c0454a41a37ecea3ad876c62ae642dd4c4e7b071701bebb5c9b8511c5df3d513f54ef644d300cac190f2ed04a2ee1f6d3bb0ac640e224ed7be5e918286f267ad420eeefc184af7c2392137a1d3d460a09fa39f7d7633aa7225c9010ae905e7111a2313c5bb3b0c1b6e8b38691605cb674f339029c82f1ceba0423cd827d9c01275c6fbe98dc45b8d683a45b78fa099f75c0be81f7827d320014eeba685e45b968517ebe5ffa0e53b45e95ce61eb1446b2eb89d6c8920bb6ab5513d0ef03bf8bf7da0a7e8d96e8584b8e908c3c18c456cec3003cdf510d09f3a351287c8c23c71d41bf43e79a66240747161361dce3aa9fdc817c48f3751d29304912845b4a50604783b39cbfcd30968a3a9f5422cf25995a745936004fa11794e891eab29551c343e61af630c45519ec05739b2c126b393d08a8f843835a1e8f27056a22a57e05f0c67c14d96f9c4821331d0793feb7d175dae0dc934bef36879d15df34da94881b081f8d1165fd3d0195f5d0009708b0f64523bde1c4bbf57d73b29f4d9cb0e5e791811f4bda1b2ed8a99092c016de4fb93598a1b3867ae2d2736cf3b8e9c1d31a67d2f13f3c03da5ae2b0947c59f981f3b8e1f8c31a24ec32e0aa4157cd25aa4f5d808bad7946b7dd296485e0cc17dea96bae4c133d403d628578633c2c166022e73ecc781ffd8429b235e8c3adfbefe0b5a669e27123e7e09d945403e08fe6f081f26b3e87f7f8a88361aaeb4304d7063ee8d73360e51831ec09d4dbf56f9f7ef4910b781ce7fa58e7eaece47a06dccec766b7533b0c80b3dbfb0c1c5a2156b15dbb73eb36b6033196770039f746faacf6dea3f042eb68a17a816bb149063e4292c36f4cc5fb49ec53e5a449832f5013c6531b939fa8c6f7ac751c666e2dc179f0b183094ce5231f33766b834d69c614855e39e2312d4dc52056af8502c1ce52078ced2158d58d18893298e6b7aa51a85cbed9e323f395d43b3ddd9b2f675ce14a1cb6d854e8e276dd04b0daace482f1ab9340712678b0a46cbfe46b95808b972b98d31d5ea56a2974fda312563f02ace7a5ae12a9c0addf7ef68b0e681c4f82deb36f2844aae53629e345676bd37fbdfea16562afb86931d25fded9935976e87a413d692da58293cac9a75e1e46f6f833ce9521eb43b86b36752a18031f82a4f5ff19c2531aafbfc4076ca2996f8a569faa2bd38868b0e724fb0a5467586c02a4e64c3284e6a2ce7ef4b78437c484951f178883779fbfffeb693cae3dcd0bcafe3c9a5f1f1f862a62ed968c7076e3fabfdab5d10ccb05aa71f16bd6c876ec97b1cdfe0bfb434484a9a0032cd4baf4a0c59429434b596ead02cfc54b3ebbba327e14a060afea79d7403aef71f5e290bb0d6ceee177fbb25c62ca84c51d1c53f56719dfe488759be6dfd18c48156aef91fe2036130689f375d62db8bc69aaed49211346eb81beeec067cd2559ec4f65fe062228929407d084577ca1cf0016c4d649e8e219e33024bcfa2814af492f5599d5b2adf26e7d9e33e36275f96e3e8aa8bd1978c6c67f5cc61d327b20d9987044e8a750305e53d36401427eb93c6e28efacff5a3046e91d54c0151f8105aa4c7edba78bc2e764e73de413dd760278b42a84934c6b6d27d8d2d981e866efff0999452d8863cfa9df86559ced63376ddafb54cea265c490f07734119fdde16a267bf5885900948730b5783f823103d228379cdb58c632323731e37fb0a5aff6118720362f01bb749aea564cbdd6b5e40cf22cf2c4389149974936d29caeaa58a37d18ab2d802ab8d10d0590d17909d7033bb12f3380e4ae183ab8dfba5d9983d43e1f5a8db3be3d99f4f8f78031d335f13bddfda0fe80d45f85209001f1c8132b797ffe57a35717669520a7d7f91749d590325da8fc52d3e6f50ab7118a575730966cc7a603c1407ecbd48526c27a8ea4ae4c7b7dedaa027e2e83ff8774eaa2533daef2c7129c8fad971f70dd8e5dad1d6e5d90d0468779fc27b9a0f95be5e608d7bcd52472815a2249ab50785c3fd4cba5adba240d2e4376b669aa297521e12b18032b6691a587251a11b5af12e507c34a33694606e80ebbd55df4a791f068061f59b4dd319885b4955e7e20fdaf40efd3758298d493b3cc65f4e253e27e47257938e9cfd00ff651dd870c2d49e402b35729482b4c10aa0cf0037808f7dc45fd8da1f580d20045b5f56270962b258eef63f6d97aec609f7048e43ac779eaf571116bb591223ab6233822d3c3cd8173d2f46f30ec27715b4fe92b90eac5294965ad0f2ee6e2c011c605aec6868c05c7d6c2523cdd5e28f74086fc7c0ead66b621cc05845f8049b51174d93b20c1edc12e8bf241f4b9860b65a688ebe47d6eea3db3060391d02c17f72d151e83311314f0580d852754a9658795dc97b81fbe40e7ad09bf3ac20680f45f638e3aaa5a6e0f3143ca2b3c7f3c4ffaeb1e6b5abcf00bd20a4a7ef248dc26b9796d7fabebb454df3f4307126efd8e25f66df3a54baed20e62f3c6035fe2f5add42a911b544903ac4c643b30131f948f53c5c34ff4a17fe53d0a26622cb9fa69bb929cc88c92776ec6ecfbb01453a36c2c66bb21e0a40186b16ef15325ef6d61ea5686861fba74ee80dc95532b438cac40a9fd739cee4b4e782ebe01a2dc47fddbf38ce1073ea89030b86d04bd2350fa929c830ac7bc5b6564b999d0c4721227f923294db92518250cf08b433679e0ca73a93b8db97c548c928136e28d5e8791f2e9ae1de58699afa3837ef0e74971a7b5a50d49fcc77a80939a7d11978dac1fa460c8a9602dee7920b76837daf85ff4b6c89c001ebc73d1209846221c3ce67ec363a60e68a5e855dee8dddd2c284b1d4d8bed60cb2d076ff774cda1e17e8192f4e693ee926a1b5a7e62bb754946ea31861218d0be42c0a1443ee7a1c74cc32c7b94622d60acf3251be1b64f04d9f9ce35a44032277e655dffe36ea15525511e3f16e9e996295bffcb7204a933b35633613270fd87cd306a71a42460cd56b56abf609cc4e2060933b5398848f8de25c1839e08c36e2baa70a0214623e71730faa3d68fde37f6bb3bb420028b5090b17d17002c3a19ec3ecc758802020bd3a21ee1773e6a6973fd3815774f4133263dbd28f16bba6c03c5dd2641610055d2dee0a69077cafbc5f1fc672409277d15a60ea33da04bd75bb3f7a2519a6249b8cd4c481ce8e75cfe94922677036bd82e3075df31a4693886cb411b2465220f5b419a4e2e300e2637983131365726af4fd314de3d91e3f217e3cf3364e05260fa92c8c79ac111e90a159c384a9dd5ffd0d34e1325c0cf302af0b634cfc3b173f07f51791b80fdbf8031404c9ccdce2c74cb9b1a05ca2250e49e9ba9fd7a32423f4a35cf5065d0b8ca5a1b476c7ecaa42c9712790eee74b2da3ca1fbda536206116a00311f79d44ab53f9a92647951825daf4113b3c97117a2fcbb668b04b2aa18e051924b723cfdc2ddb04fd327bf760c317425099a17f3be488f5be0cf63e4263b31ebeca75600ec32ce1fc17fc4b16a4307e9e2bf1f5fe5c468392c92326c12c5a1fdb2853eeeb6513e8181ecd9c83043f4d4ff014bceba807ae25de3a295cdef24738a3849c7504d37ec3b64f09edbb83dba696091e0cad01526fac510450ce21da714635b9c6515ff0ce15abdc2b12f3b7359ffe765093e67dc67bf3097c03eea5801c363775be754384c533fb877d1c34be3c38126796e4546ae92d14ea011c6c84a793c89a860bd3c3b180358cccf0f71143bfe875dee91ad10e190d93df5bd08b9964505d548192e0ad8a84dbf5312645de3ab0c0bfa607cf49863d9c3711e6f4a79f14abc9cb001e442803a59d0bf905acf12fc9016ce180741131a06aead169c1656cf2e61258f6584a224fa0ec15219a36b0adff31acfb890c0d7347f7d1e2fe9aa7c84167de740d854df1914591ab396d79e424b6552ad18a26211937f897ed25d1e5e79ac4bb07e1d01786d6160581ec142ced76828e4c162daef9a16d1af478c48c235ed79eebea74f2f8bae7d8bd47abe79514bc87de3e17b7d1621252095eb62df2ec57bad6eca46c6f1f07217cdcec89e0e9af6b0ab918e9edba3d133af5a1e39bf748d36135114807d47f01f361b46c207ad98aac2616f1db71f0cbf30e408e41a74678531b03e034d7b4ed95ec047a279f54455c110b63c76e4362f47b9ba4dbd1a0ee8259f3b6f85518d09178bebaabdbfad3dbda3593cf2551b97ac48d324d47571b52ea63189bb54d54bd968741926e66450e6a0f0be87755d48e5b12f7cfa11a1aab65b4b3c3955790f0bb901ecc63469742c61d0779aed22450bf021acfc2d7526f43c3d61151e968418af46f7e5c1801f7df16adcd87932d282264b63bcf3d82316f35b773a42983953dec9b09fbf93418c72c2ed56c2914ee02a14cbd17664c47114ab673b8e983de17a4312b6462ba3044045ba9ae9cfef599898e3b4bc5d7084c72787f3f5a7dcd7fea8b191e6c029ad92691ae499b18a10570ead25a3e5c754eb3cb355d8b0e8100d4997c0ef9f02bd13ff1120611c179dc00796d644f94597587d3fd9c5d14f45165101eb74f7c94b319a61d6426083417e83c6f76903be1a671a79b1e3c638e19b1700fb68f3f8fcb39cc9efc51c9cf83bec0ef56cead140ac0a7ef400d1141deb5a2d9528b305380103c6180017eb5c7f48c887ce0e2d21acea30d7ab022861e1350b469e74818482e1d168705708a38d97a8cb741d39c0c828992aa91467b81c6d7eeea3c58a004307f50096866a0a85f00990de2bb6879fa592ad18f9ccdd03697d5a4f4d81fcba76e04ae34b13860cf10a0c2e010c9767a0949838c50fea1b09d0239c3be185f8313071c5bdca84c33898f9ab493d1da4cae8f44e0c5ceacc6b6ecdc825dd297912bd578da9e8cd0a5e07f60e4b9317c0c6afc806603147e4c6b02eccc795d1a3c8a6c7077686487dfb59a3d240bcb96263e99dc737ef5ec974bd95a0e8910d78962eba6adf1d81a45510f63cec7d258133532e599c015194e0a3106e33f2863062dab059f77333b00923a1acdbce5e68b3e6275f21c26c0503cb97ebe2b80ac02dd283f37e189630a68570aaed35e205f74fc2737dc2403748382d7ebadb2ec98d17a766ccd8753756fe1a8abb3c19036634af0e6b5b062a2f5d8981fb8e796aaee756d56c2e279de8f56653d9be68baadb05725597059567d6beaa1f25af523d4e5b2f6a90a2241a496c003883bdd84219de6fb1dfb6601be8fafbba8a73241dc533a3b808a5126e8d3b14b523d97e37221d7725bc97b6a6ee51242fb942f804402a1331a4424411e0f641a80e7503380c4c9f34806f9f0310e55b59bab3123b21c67c3502106809269d0ae2a4ab79ca340193f0733e89a21bae1cc8b2dda80cdef07d97d30f01ac875a7b7119b521dd322f540abb39a925fa3fbcbb65f50fb01cf6074098f12c469437070b5ae513c562f52e19269c749fe68d71583edcf89d2bd2db1e03d46db8775337cd219cf94318cbeeb33507aba9fe6a67d3e0761038bd5b380b66342b913e936bc77a26d6efb91172fc462ee18a77a0ae2705eb0fb7b9a2b934af28be6c2e9a961febfe12258d7e0ec6e85e158c445d2830ddcd9b8ccf6d17715813b43b9feff08f4e8554cf49ffbeeb155d16f133bb12564347ec03df34c1dd2b09d732690adf14fc65f80e78cc047b124bd3d51a4a8f067d27e61d0807aac7f70b88a3dbb1f17bc9452b479fd19b6f9cd634d03ff99045ff5d0db477afd4536038bbb6894763b923e3af9eb26930a26404e9c8486562e2d6d3541aecffe6f2e4a2ba27468e66a37104e1e33dadc77e26f2e9824dd6831189f0712e000000005dffee918824d76de0bded93b95c2a1b60bfc65fc62e0f3b5bc63931cb955eabac75c5abc684a55b2c6a2f76bb89e304ad00d40174b82188ee286acdd26e110eb10e4653b13bbc7db646d3f3e2392b66b570cd7da3b5e0b5dfbb727323fea6b40e1834bdd431f925caac4465ba8892e80dbfbfa6b4b12939a43e289afcb09d0c99740a1543c3f804fe941957a007b044205bb5bf70a1a2e5724f6da8fd23782402b8e10134db47d4a091c1d26e717b38d3ab7250a10a1b1696aaf34d7962ab2d0a0000000000000000c2556442cef83ef408f2d9faf4b75e60bac0e05b88a662331854c754f20e28129505845a3061c26773a55beadb8b1c74847416dc48d2f99f810988820fc2dc3d diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt new file mode 100644 index 00000000000..ed5efc3c53e --- /dev/null +++ b/zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt @@ -0,0 +1 @@ +0104b4218e2d32270720146a7c76a4d1ab1564acd3ca1f8f0ba0ba7bc96bbcd8500dbbc0f12aef29a8e393fafcc85f26a45e3a015c61f0a306f88770e2981341332659a87059dda189d896d6f0a22d6c331d2012094fc0ef5077dccbfae57bf659b095bb6958e926bfff912f66dcac8ac682bced678da09a755aed0f54f4557234013f75de160d1830a3affbe4168eae1718fc0edcf925844cbb75f50d7cc27ec4974f4abc41257bbbf0143e5c9f9329fa63a70cb34fbbc7ae001ce184d035470032a10891edb6f5749c8b2d87943e766d8557331c0217f52a4bd980d5bad46b6d24b660bd441dcd0ccd68cf7a0b247771386798c555471b0bc15e2f2ba30402b4edd1bf488792977190e99cabf0d4ccb518afda1d4dea5b053fc022b07f4e0677cc042599d5485c779a1a634fb4119a1ef77aedb8331857f02f128fb6c662ce065e9dac4bc30781155cb72f1fc8182976ce697b8ea1c561a4de07f261527c9ba6fe0d1a4f73c5cb532c7df54cad1d848cc104d36b965b7d6bb357ecbb30edbf34b7297594dc3511e51d31d9fea1fc8f25a87de6ed069e01499216796bf214508c6d75589a485094cab2eb61ac73074cc8071fefb24a50d33d9f27f72c5d1fa906ce12058493f78535a02830e61a67a747c3dfcf2c557e73658fdfe5d82869faed26c2370f9f3445dcee43252d76b4185bda1ac675a9320eccb40ce1e50b4c7a8aaef73a101aa24f8f76e5d300896f7eb13a68caa1cc88cab4dbe68039da62dd2439c56b85a8df6c67c8bcb43fd0740b1c55c9de5bd08bf91f539250286191b0c1eb105876a84755876afeb2ca7036fb2e4191afb682be903a45ef4f6b8b5790965c9dc5e052534c2d143fa5b4602c32643104557cb46069a78e6df003fa0858248f53892d1d70724eed8b603edfdc4b87b6fa438692d7e0376bd262c7f443f5ab239954c2ea667b64530411a5dacb7d27aa629bda918dad052b833c1b9f05f895547e4b13f29320a6b71000a823b7f403cac4b23a3e75c5f8628d005d74cd3e520a5ca884dcf108be40d628174fd1410ef64c6a520f25a10c1dd39da962381b2d85227565558825a0670260aa267f90c169a1d1601f426668adae318fe7473706f579068efb8a1b92667a869c708954764649406d3c75326b53370929f9f270b0cc2d92fb254cd97659e671dc96c1fcfa3182f95c8ea4b2e55f28a64a1d3172cd76d52355ee7583a961b99f6d2878ffad15716d83b90a22ae5590c5eb47e024b871849bc99a0598b3cb97b94a213b31cbf6ca1fa8028e8aa639a52bfd50a8f1800587a61b94c815f6c52c4bc6e174257f9a33f76186dedef54f846bb24d838d7a66ae20fbbd5d92a5e336c91a2bd90794df64d75e2ff77651c0bcc20d3d8f2fdde84d3fa11ef412d89ff8e6c46a403f15654b6b9006db79563a99ba18c551c7aace73878edaf7d46d2a17956d9d77566fe33aee511bfb656dd0e25ec25153520c92d005f546e1d21aca64f9abbb1ad42b7f91315b7ba325b72ea393abc3305cfb01b0610ee3ecf398e40a1efe51f496207637401b566adc8c79755fe4aef4085c0410c8012ba4c9e924560572023f4c7ea06ba38ec442c23a98c323e9372401b3c7ed41f1c0cd650ff2e5c5e0f16b538c71043e449da1e5fdedcaf81e6eb5b5e6bc2d41cea188685a8b3421bcdcd44bb79af61908278a3a25f64610096f2dfbf70e5e8eb778264e6e0b4a92e7e1af1569f8cd0350f5a329230d9b402ee2a56f78ca1bd0807747592c3f72443e67cd094fbf5b7eccbaed5a5cd7d19c71ff3e014c5428851697bf02dc43fa5900f78b260d418444b888b57d7a639c2e117e6ba85190e0b6ffbbb1582d24b168bb7f41301829636d24eb4583c81a515c7aff6e7831c120b2bf49ada2be1cb167f3a5098effdb1e28840aeb8bc9b5955cc2fef9d093b1577900faad8269e69abcb7b34bb3a67c69256f2d98bfc6a20d37fe544e3c31496e73b132475fda4489250013f06b8c169f338ed8bd17469e14d97e2513e877df17df60336426c4749c93ab9afeb27e49d9fd0152e6b3b5cc26bf7fdd1afb443d5189ccffd779f6c50ab160ed63f88407d426943c1870daf628cc48906adc1d8ed969d3f6929726200411eab1c76af5909ee3c29659d77b4e96bc252fb25e8ea43de63d32837cc74ece212b97d6879b976346867c95db0d7e945f2357c77eaaa3cbffd7021b9d0781dc9197f360afd671135b1bf225a4ad9f2443995ce183e19d040698642912d84aa90907218c1a612e2210687ce218a6c220ccf9138916cf166b3350b2f6b92ec2e1f5043135c6bb4c9795f5cfb6a62c41b9cdb55108cce8c563ed029daf71d84c464a7db384fe9ea3ce9ac65d9d280ad05266692a5f0171bbafa3d52f5234cd7962aad8d705be814b54fc6ccb3724bb6154db525a9a038c9e42b80944645b419f291e726dfb0dd3afb6f279f8767e4596f04eea7d4540ebb2478fe84d2bd1432cb899ad8a530797a39d0f6ada2fcf9f2f047f3240a751813a49bc62194a95e4ac502f1715e8c5c3142e648b93e8bffee0455c06e4bd5b3ff04f9c1991613eb21964e6c854dca09e0ddb992fd91d4940b4eb79ab35c558886e5d48015a662cda9bcd721e7277e3b1718103dfe5610fd0710d56d719202d69e0ed805985e417f22f513fac60b192f56cae05144210ac7e441a0aa683407572bdc50a4076e3a2158fb697be00c2b0f891ce0e6224ce403ec47851848233b15a350018a4a4c1f037f4ece9b19a6f63edde425821a6147aecc70a8c7c10745e1af1feb962c70df72c5cd6a71982b8c5f86f2e32f7e2d337ab529bacbdf6b186372ab57194f8b2f5fc046a317aee2dd3efd1681f105cb9686869c7d8e1e8ea3306ae78021999cfacf089ec1981422e5f8e0202633520b8a3b976aa65a391044becbefd892504e0e303e023702a00553ce336b97b4b683071b0dc466051677e1433b4fde3674cb2036ae0b8a310b718f3f4fd7a7e65912e3169f2ebcadea1d1f18b534f42e52396042d4f01612825dc4220a75b47c46e2ac37bd23d378f697106ad26e1b94cfd9ffed6ff9fdff1b1cac8c894fe831ab963d97d0b3ef728bb66a6ca3c78bac737dae26d49fff940daec55e525f01816c3cae0c84c4fe76d45669d2534d06e9186b329e98d0952cdc228f0c6305377c8736fbd963784c266330b031c293b09b832b2d3b026150c984e0db111e4f76e906ef270a0538bd5d4840423e46b82274970340e57b6b9faeea8346c161b52770822b440e825eecd88c4c461bf9435e6ce2be3033e1f9cda4b1296849206771b1f06f4575779812423fd7206df83f19831ce2ae1c73ad5a789b462e6feee505f60eea2ccc3d274d55d2018520e2f243ee0b1815065283a622d7693f7059b03c744a1535eb78773964aaa7da447fd79b5f64aa6dd218464d0a068e763344192585c3e33c17a79f978cd66d2f988572697ea7a9d1035f4e77c99d1391fb77f673f534f90a56ca4acbe34a75b0ea99a0c6236494d4fe1fde67c78dddfd664729af37c6bba192836987820be802baa920e9441d2c0705690e6cce1132f674b2cece349b82d49f1fb84d268e77a2d5830ae9bf910477419abe6f3b11be344895fc11dfdd4a88030c19bdc74af3ec066410dbec6dde62121c6f211d4c6a03517188a809e8ddbd918424956a838cebb0f5215d3114157c2cb4996c403094f69db9a9cbec7a0776a44586ba83ab25b7cfbdda45bd3a645522724962835289dd2ca3e337d073eb90ad222884fd62ebfc614cbc1bdc12607b6bd213b0e4bda3829c4560c211241484900aa67ef83a957cd402a4ac1ea86a72a30604a926f4ab1091ab93b87c02d919515df55501dfa2922ab12d991cfe2669f8d5072e94328ac2dff6af005bf56c41f820fce61a04665741438f6a8313b2e5b65a45d6e2d9f992f5a69109bb24db0ad1bc145a8bdf48818d5abeda7bc3447aa8c6ca057235ba879104da0e460aa43816730331fe98f0f4f7b1a7db32c622d21b273fd95657acf356c9cb2372f2fcf68c6ec366c957efc54e8327d84c25cfc133de7849c58bc09e4cff5ab24aad405221f69da27c7630fb46bcfeb856d6da9237902d161385ce0a280209a94a10d6cb6f91cfe38c631d63163c740941fe847aebb862a76133fac2a52a0db378985902511b0cc0e5579243350de3be0335d80149ee7900bd9238d41fd07976ace70023d4c89122a8f2ca97bb6616475d004b8242ceb01f4241477e5dd2394f2923056927ec5c955b8e161758f16a92640aa7e931a0108cb1fb93788214866fbfc666a1f8528125966956a5289e3572fc321539f6f4e42f7219c40ea21f2ad6dad3332a377d99d638d8da0e71d236e1e3866ffdba178811296d1c080d73c371b45bb5c5c9f4d86abae81af2ea89d62390df0a548f5879a6e418f42acfd5663936be6949292e44598ce91e35d71bf3f2301dc8d83617b7489562b997aadb7060120ae15b6da3abdc0c58565054b1a754218857aedc5f928652cd5c1fa53b1ea91d20be8fbb33371c6a6ef5bb2dd591919ee38b82794e5ca8721f9ab4d78ea9b19caa153c0813ebe9461e5b0059c93d12f0eb7ceb186225feff85c11077856d451f234ba58c28a3ed3f8d91dfb538baad12557dd2bb70daf26e2a611d5eaad226fe68fd5bc94999aced4c73aa43f3358df18ee283e51dbab837ab1b09683de526441bea0b929d03c0c2dc4e1acbeb0bb3afae5c560cea6437844378065fa183e032d572f9ed0db6daf46af776e28333681f7f2ade9df8f7cb09802f794959a030000000000000000000000000000000000000000000000000000000000000000fda02e7dacc52e92cd44fd3ebcfad1af54696a193aabd37353987ed996d1da7a31eda11484bc9542396baa21bb9cfa39cde73dbddee5a989edaa901c7e1d59c69568297f42e251856b99dfce07ecdb9a0980d0a1a7e8631486448c5cf2eee6ff805e9a21e7749f029d37fbf33608afcc6093a5c1cd11a2585c4df8cde0a3714a38ca229c8a57d5293421117814793a0f551d037eb919a26f9a81f770f163ea3d5256b7c148af6882111f71a860065bf867473ee751261d2c58090beb904f3580d44a23ea140e31fe90f90c79b2f1fb4d8860f0cff9532bb841f744bbdd9b8bc6cc9790a7c3d5b1e509ee23b15d7ed417bb549645e63725c177e8390e76048c83850881f3f1349ee0859ed5e40874674d3f625168c0829c938ec10f7375989b7993e2abffaa0e539df8d46621b21c5391706d7713e12bd4b5a8bda826fd6b4758ae3b8497de97e912cd7c9169b0ceba7a9de3bfafd38fe68d1ac6fcbbdb8ac054536127366126c38e1b36c6180a302686a99bdcb3975d130c43b1cbc17e40813bddd9aceedc2121c26ebdae47cd6e574f5cafc5144f54f8ee4f659f2f3877b40fd9a29580480b44e5945a88561fb507ef5a26233b84aee132efd47ecf866c93ea01a3bd6f94d9761eaa57d1e1d0428a2146ee08b081ee3d1ff83916c92b7ff2a9fe07abf4f822c614eb1e0f1425ad760b58b0b3b8507149f1505fd65c379ab66aa7b18d31dcf29336aba69bc02293f4b0eab08fcbfc6112b99ef8391738037992730021a274a141917ce7a1d27cb17fbdd1fcfe7a78c6f656395e4cae8fb39872748a838a94c46f342be94c35d71841dd543b09907a86873214bc47ac89827b816a31b3bdf03d6734f0d7b2d25bb354738d0fde86d7ee0ec581dc664ad89ed47ae918071a346b263fe4597d689834c31adb460270b541bf61f15d2e7acb397cbf9663331d96bb2426e31588b4da32772b79ca4570dd5f3080d1438f5c22ddab9d98a19568270212d97fe2985d72b690ef6e86acb2da45a30b906c9530246d1f30c19eb1cfbc64dc405608a8bec1acdfcfaa544f6386f96d377202b9e9a0bdfb5cf35eabf33c06dfc70644838f902ec65bfe90004c076e57f25b08c597fb54e62ea21784eee73527a0f4f20e9f14772bb5fcb5eb55b54bcec5990f5889e64ee56f0a5b3bdf2edb3fa6b99d9a579c57f7c40c34ac51d524a8a811ae028ad17c0c0cb56c233c8d01275a2d3a3f134f955383231007a4b756d5c6c474fb50d44d824d0ea7936e7be0df12473f701e2623b4329681970bfce8b10f21407d13423fb427720a05ea8b94ca552b5a52732bc8cdaf0acdb672d40eae29d57f90d56c319b518fb721eb0031b8a58a0c76742aed49f566dab86b6efb955f14273f6f613a0474a21229b83431bb678473dba07e93a305b819f392f468b9e5744fb9e901efba3d3c65387a30946170c453037059d87ef5274e1d13a2e1f6f10c413fce33dcaa23ccb69bda7bd8014fb020e4d4105faa12d3225e4c99db2444e9e0ba6831b3a19fd0bca592207c5dedfa50981e6d9d31304846ea963b30bebe5da360df1a6a25c844c9af9787385f0037677279b6a5dc9194489b078597444f165cd62eb4cfe58f488cae37c3ff803df8a7c8d0e0a63846cb4ee64fee716c4bfa58ec406283f938152d85286bb417be2204c0e101ca03e92531730c56b65600dafd8dc55a969295f69a1c3932e7a355ff050629883fd2d643fe0e4681be3cefb2a39c6ddd75fd53149c8b5dcd5edf78f32deadb4e07236583658349292f0d54cfdabe32d57f206f0400207def2b32d62d532f4d95c9fb0e498463fcd98f1b18f1467cc8a3ce96a9d2560e2f296a985fd9cf3c4ed750ad3c306d9925de11c311da93a3eab918d9796072254fb261a234017b5d79f03c5245233029bcb249691e36d167617bf43066547c33210b045004317b6c4b4d239c6ab0fc972d2a2667c5e3e7e3c55294b239043d268dcdba30966ae442936b1ed456af578cbffcafec14d6710c965f4f91ff9983863769e14f298eb43d0738334b50336e51b773c2b6ac3ed654b656fa105216b9a0bf67469b3ba5a882065c7b60cb4b2cfb27f868ad1b867a1222490d04a06b0892f2574d8072ac1b9e7b0a565798e01e0d1d93e9e1c95857e54a41c72d6b96830aa8893b52478f490c7b7a64a443bfdbfe8c10d53fe75ce422726d4c860946f63beee5dbab3413dc232195ec46de416adb875d6d482eace910c576830f452c1e23a351a55e240f06772a404a83c9c7fe3d7dd5bd4b9d28be0d4ec9bfd3fe8769b8344dd189b2fc0c40282ca9b08953564249de486088879bb7b62e8c14d7698e8232f1597260e3656635dbb25b9e181f6012badf2de8eb234762ca02c250067631182799953f586a370ed80f036d6d58c82acf0f3b44542499480b5f40dd307d06c0ec8da041caa5b840bf7ffe30f1f1db59b440469faabcc55bf5411dc8aa748bcfb3f1b6f5fd828e5317fc0b1b1fd1ba3ba43b2381c9c781d8dddd658e17ea3dd0cf5aa22dc7ed3722cb77a07ad974040b85a6d4a50bd2b6253e97ccc56024a9cc457beb19773d539fee57dfe94e1854ad51fcc6e7dfbcbcc58ff295d1c41f86976ee35f18d7c5d633ba7f08c5438808375764257f33465dffb21e7daaf6648d28e9b1be2da9b126c8fd7677b68d75e2858e00349c7e24e6674e50592541a792048a563555300c732fb1b3ba2c2e27482cdfd3dd13f85bc862ce704ba06c9a23e6ba5363ffdf921f51f01e697e037bec2079a070de828e7875315c3243ec1abe84357440e0b9567644f39e951ca37f24a482eeee356bb6684a96c11173af5f348011ddb2b78c37f3557b34c4a9f9b31f0f398c45f108d58ec0dbe74d439df8b91401b201c02417f38501ba93b7add869ad6190845f4feb769ce80113ea31ac90a6738bed3af6930b5429592bb503daff4fc7f8c3c597f71d7772f610b4c6979d501687ec38b0d0c9bb0bcae313173839c05302207887759690ac30fa8e99590e35ea49641746e7027e1b14955def5cb3528714e4f793a7818aeb93d7ba2d311e3bdeb00d423fccd029ffc3570a6e28f8deb2502a830e54a2e63d97ce4c348ab78ef0848720191450a2c6f3ca57a7bbe1f01ca1e4a162c4f531f2a0d52514922df9ad7e354b0eaae325a962334c84e881c9260d8045ac9e9b5bf90301bd49aaa1e0cc3c1aaf7b781b7d0c1b469ed0e730b9fc435360c0a5f8e7c86386e5c60780816d89e04fcae475d3cac71ccd4d6911dae10a664333cbd7c10f3496347995a2c9dd5981ddf1958f25a7a6bb3a1c62e81ca906ca28f7d56dbf4222ec05e43f05e32aca02d11bc47c5961c85923f9984406b002f457c4d99a6338d7283d7dbe1621b9ac814778d28d1f1bb54ec1cccc932029c7bbc57b0a9a87525e3a0fb7b81f41a24343480db9b4f0457939b1d0a5d6fcee753eed402c0e01f59ca89d8fec314150554dd5a1d98da715fa31a2e8a899d1f82c5abcb9f961b57cbbe64b7b38adeaa449c9732ba8fe7cd2e5b5d2c89335892cd46fcc1506775efc467ae42232098a3ad7ad344306a42f9012d2bdeb0e8f7b022ef9662df76237a9801349da34b9be97fecf29d00c547f3c177d65e4d4babbd16dbbfeac4d1020cf21256e43259316da96e85a984e0c094d746a410cafb84bc017bb1c92c2593d8faedcb4dfcd3e0c7edecca1471c0690c04c562db0c142135bc64d1cd355a9d2586e3466fe75885e5271832c94a67f602c111d951787a5979efbcd3a4db59ce641efb4f788f832f7fd84fd30071a0981fe5e4f6e2fbe067cf0b4a316368e37b758ef1916711900b149f52497cc24155e6faba0701598598d6176c2813c96c1f43e6f175af46221f9d3c19b1b33043e7bf2390fcfc6374074b32af7989d06ac296d097e641c4f9fc56b4f22d93ba026b014b1788ca561a1d9cb21157670b43266afbba0a2bd570d1e6119b949bfc84631605adb26165d67c179da538ace0b86b757dc69d5113dba00cec3d0f25bf05bb52fbbd161f7c29eda090198b66dd21652d978921edfe2a519f97eb258a0211b03b3d0205331e65edd50ac3fe04987ecacb4a7d7fc5ddb14a825302343c9521a14ff3b08e8386253523eb36607d1a27632158adaf788272482f8ae7cd5427503be65d9428eabcfedf443954237ffb075798b694473b990a6631cdf8d8c37d03779900824bd76f6e4e5e17d28148cdfea14c2d91d0e8277013d78fcda78332efd7850084578dfdedc4c9962d6dd94eabb7baa5e979fc9f8190a30755ff6accfee6c1e7fdab54285880c631f0f2c25bdb562e85328eef7a3895f0e63fa05d9b76e12e257f7f45a3e1435a7c772fb5540e5d9021a788fe33a00f299be431e61eca215a46357dbad795a37fd6ab7eea69efc42b33b29eb189036787bb5274cec989addb17982b95ae0c650818fa631980677977aecae6b126b220358e4dba660151ac6337210ceb1f288834afe0008b050c51f2fc22384159a046ff324bbd7574c4e7d017e596f5f2ec78dca7293b46dbe2f6f5e064ca3c9bd18efbbbb716511d672b71e1194f219fd7d709198ed2a41dfb4d592e26bcf93d3343dd4445e37cca638cb81ddafc7f7f59dfeab54d092c05b80449b66cf6e31773f58cdfa0a499e53286f508916f2345582b317738ea768a047ed3136975c3b0b2c7ff175e8fa9a85c3a5f5075919048cbfdb75cb4ad883897989d12c60d1c6e91af93fd0c35691474e235738d98b70ece3615c43ff41ac0076a89c66bec91fe631365524da413f966611400702f0d36520ffa59b98c4fa293f94eedc10c3816516671ea3af832a3afb61542e1be6e5cf1477c7932161b0cff811a2434af3e25c2e6f6a81882e9c4712da43cb8e98ab0d233ee4824d8b9d0ccc0d7679235af45f1f412b4fd9e9e3222407147a5878254cb485e0e7fae6243c53d6f45f611112912062530f732b5c9fed47518079c55535c716df1984de9c7354858ea81cc4f4f502d176b6c2bddd52c9b3e83418e543859223b225353156d84c19ee2f87bdba4d0ae2dd2b56048b4cfdd4690b1db98061b70aa58d18d224090eec6e222c7ef31703afc95fe4424d55a879908d9c66ad9a2dbd0e476f27f6245061705ef3c4ca6d19799f9f53cb0210e77a6f8c9b8969a3448522859c379fb2577540964c6ee8c71d1d92077df0844a39c121784b699f860066673631d8e97310e43d618f2ba8fc23620c24c507b12a4c3cbea030d1652bc39c5a216c7d5c297e512765f229fdc905ef9aa91b551e04ba99dca9e199c043e0135227821e282bc2e28cc4a487ee6d11c8f3a3cb322a7e41795199b2ba96e7c79a753a7e3a21ecdd6fcdad110dc6f73df079359c88f83d70b9d359b2a35415a5bc10b9c250cbc7e25fa6cd0359577d25275e13e2826d87fc1daa89f0b26f788135458319164ffac594bce3b46d5b3f284ab258e86eed08f2dddcacc69605153425b8c30a47565756a47e0d6cc48b25028dcdd8c8a9578caae6161b9a186cf0e5406b02f5b3f5659f22a129fa2f4b703ad884bf7f9cb101fbbc55629862ffd7d31df1bfca2de9cf889f895ddab26b840ecc492d70ecc787c2fbe90d01e86245917cbcbc4b35ce5b61a24fadfb7a77593a3aae1cfd553ef4235da87df7718cc3b24eee4f5dca81e1decdbc22520024dd0273522cb7c86aa908e36e76bcbaefe7d7fb7a71a853927c6030e69d3cf1b39a24cbd97b79ae58972b3a9bf9839e75681d07f4ad7b3719b4103f93d5cc1c8e613956114d0b816af2bcf0b76d854e0eb23be6c745c064dc9731fb2ae95f545a00217480284ae74efecf2f346114ad637fc9ac3e1501fc5bdf35dd1a0b7f17512013d3ca5d1a0c5c66309cc8e73706c135a987694bc0b2a95cfd935dbdc165c8ed319b33b3b1ad50f43ea3e52043fab10e0d5cc048ccad37cf05da61416d190a3c2755273e5739079c050e9cb7073b24f0625ddad6571db849525ee4011cac454237c70522a3be53819ea1655bba4ad686f6458fc2c52d584252d6105dde0ef6d50b222471ee229645ffa96927d5c0960b7beb46721b5ca7fd1c7c11f83e842e403ab2ec883bfa3eca7798a0b0ff550c9d17d0ecbe295ec17b8a28e730f194ea751f8ff8e7449f255b4a2ab9b08a0cd18791dc6bdac729a96f84e94b5e241a92130198ef081abc70a5e91b33620b54d4d6423081c91133ea525a7c703bda57a089128ed360b0b49cb974c6b04731b014703952de74808f8e75d4a01bd52b1e668a221751c25c53f4005ede6acc843c2f1aff59a1318d076038a1ff7394259d8a8103f98376279869dd71c1de35dd170b3ccd34d76e904338448dd36a09a9f7d503343204e43974e468104ddacfa9b70506d0a0ba2a430098458dc3da4641f6e7ef3704784cdd3f93353d658a0d419e0ff2a27dab07f1bc250e3e022d4813f7081902d074f3f54dbbe3354f1004e3938fd0255d3c950dccf851f5146f1719f100001f09bec0532e4d4e7d7c23637d8e574356f59abb535d00e24b7774fd80e049671051e5f73c0c596b1cb7b3dfcdf35ec4c83aefe38df662d95bde75388a1493000b79a09b60540b3feb0875861b6aa0ffad5714b0196f94b38917f51a578f4b30386d621311095277a35bfa0831590d56f09fc853c1b3d8fa9b1c0dc2f82ed82537866a88d66fa0e5fe8459a4b64b9719404cf6d16a4fe3c89dc4526135a5e689088848919e6281245f75f2d890fb6cd7a28c02de7ef0b0c02c11a15b1f4e9f6e099994061f69182046710412186f96adc0305e105d115df11e4dd41ac502189030a36f9a96d239d400301aab36e743e1c0e74c13ee5522b69be88f7f624872df3014b30bd65384ffaa60b398cb2d39d8e4fa06947f6cab238857b9c7855fbb4c2bdd6ae8e561dd8fb9604ad6e8b7f212a4e4c05a5cf9c0b2451544043bb0ae3609927ac8f3c98d70911d06ac7b8d0396969cbc18a4227b912868fd13a3afb463352d56aeaa31baa2072a1ff6c967661903f9bb6ee09e1ddf25878b8cf182b6111a3df165bdd8b2ddd506bf759daf45bc1cc8da19fa8096906b3305a3ab73d71e1f0ea88894ab64d50363a4cb3461af833619fee8b3284ba604706883090ad6872db2568f6e6921e77b4fb2a598d81aa516ad9451ed667ff7b9c73d56fdd2c5e321dc816a5c1d867f488ae4c9313fde6dccc9aaae253ab7b58500aaa338380cc031ad72f4bc1f40551def8675f99aa35d110b9193f556be7e0964c79ad901c55325dd288d37bea8458291d9c71e1ed9b82512d85aca6e388360e7d33d0e83e29836847cf42b4b1d2bd813695b5773bc1157ee902fc31c8306742593a23443148b27c7bdb9256e43f96510d559707402ce15f1c47c0d646554c4e3265660f2a8482c3d3242e948d9686f1106b3b15f515297eb4f6b99500d285aaabf700a1bb38e04bf729ea025bf0fc207405920404ea87e95853a412b6fc3fc84451d93b2e83307a1a2a193f0f66a2d085af7c4ac9d9952ac42e175a53fec484d2eaf8b9b1ba43ae52551bb134c9850af202e768a6c40d616d5b344a1045eb4d677f7b43012f42b819d6f58ef96dfc36eb63aa086480950047189df816b0242cf353a9c46c8171166bb8beb79b8c9e37409d8bf4808b9789f2c5d38645fc8614116653ae43bd00346978c3d54be2bbb3760730212de714fa81a022934516385c11ca987bdd1e30d06f2da0613d90627f495455908fe303a5b051220d80bbeccf4d782bfb950fc17f7466aff0d75cd69f20e8ecf0c1d2b31bc91f1e8f42314d6218f9a9ba68ded0788cad67d267d9623d2dc414feb2ff41e52ef133a6165a4d1c2705419e4dfc6007498efd62e8f9e306a8ff58f1c83c6d79ab73f96f91e11ce1f2a3c88a42bf43652e2b07b089db8e026b1d68bbef2e2c58ae32f106070adf869a1c886a45d662a808deb5e5a8e44246a4e7ac386e66b1d6e47b8cb7d1ccc0d790371f862c684320c7652373230be6fd28c51733ad3ae0c155200f15e62c6e2047b90f036fafe03c1cc3ce74659cdd64acbbf081928f3705bd37ce58786480b6016011fb948a937906455330f0b1e4e1b9bbcafe048c7bf3ecf3bf9122f16b4e348b717b5b9722e53495f4b48cbec6cc2a235bbac30ebd9f106b2363467cc41e9755244a93c8f03f7fb9257cdbbb9ae321577dde1558db439698513d865b9280f73eba3bd4f500eb26f756eb51baab6b29cb1f2c69518f2d5d21c2606a1abf4861f65a3a50749054961543d065c5e5f8978f875c6d679b999e8dbdc7169a44fe82603b2b7e9873516d9e56d67b4cf94a7f4f6d41498c6d7ca8fd5356f8962f57d96d2afcd3e3e03ee87ffcf0175ba7af2a081a4e27de6b56c6449b8c57826fc1c27e4df42053715c1fa0679bd22e6e31813c57738f35831f2701c98345574dce924c02581eee1326c1f3d1205241e62040396533b2319ef0ca654100d5042c0c5c8fd36ba6ed6340cabbe9e987028436c2d7db27c62927b50874a9fb3d7e28144180b282dbd812a25454c7e83916111a8765d8168233558950bbc725bf05735a77a45067cef72015d6774b9cc137653334151210675a6f36b734985b7a72a8eec9b30c7a8aeff29734c0fa3de5ce3aaed8eaf90d603ba17b218cc5faa902a86fdae9781aeab8501e197c3946e14bb0fceb863757233a757cddbf20489332290493540d97adc000778dd3d3d3eec8c008d2e059530166790c0ae83bb3928e02fb18bad3a5bc80c31528d863be5e7398d0c36c653ab728644c0ecefe683e72d7eaadc21a3e15e4518004d859252700796023345761bbcb119df86a8edf45fd21382c304b00e145200df1e3d80997f009f5fcad1415841e8a5ae5ff6259a2be8425035c772aac9171f5febfbb558252db42e1445e16443e68b06f1ee5ebd846f29c1af3103f280cd2ab51178a5b7fe561775502eedcc86b5b8e1ad3e43c6e20fae14b131a8b0b5d930498359efe13f026a5ce58edde9c95999cb77dc721c3a8850c8bdc42fb8c873184e9b9750e7a64f2a6e4348144cebcdaf19fa48837d8a113ac618be363e5f650ba9f005af5e280f012e53a7f748c29b9a24b6135bca5bf52ad722706deb2f910894af4d24f92a5475fe604ab7159bd49bf0c388ecf81587a2a2c4f2551fd68419039ab2ec83e2b8d8dd3891622688cd8187e4f6570c2220a9cb2892e166aabb32db1ad8c19ad34eeead9fcf519f74ef284716a56e0e2f98586f8428afcb9a5e389804b1aacb671c781929daa2b142d76eb8f42d17219a53b72717429e143570176d0afaf573ee562296c832149ba5622dcf7f933fadfe7c599d8801854a2ee11c39729f9a36e94680c3f10d6916b3d436712905c4c88496f9134e0cc911ee4b21d7bff8f5d4e8f9b9aedf48ebdc23457d2d233b9acd885ec250395c56599b57248684bfd1808a090da5afc93889aa281e86449baffed5ab8c573afb30a72e99192fc2e61f6d7b6e10e700cca7c8c55edd466ebccbc294fff3bd7daa00b5c4e10c28224737f5039b7cf3199f412fe91aee54f65ebe8f7c0d28ce172335b511d33bd1537a2f600130fe4d705f858d42d8fb562def49f63581ff64e916c2caf53322ac3f7720e574217993a3c83920ab6c7a597e8bd616b86e2c26cf2db1fc668210138254d8d827205629aa310d9598c7ea1d03e2182a81dbd52525a46fa842f23d9b005e4a9c085f8995d56aa02e86d90cdfc08f92aa1552006e27539a7c815d1ad57eddfc9d3761463849cf167b17a14f7ef901b3148eca44271eedc3e25ffb1c8006493f36e45d1f837bc6cdc339add644d1084fa18f7a670127c716797e853c4c4bc4a4630bfc610e4dddc09d64c34c828741b1d6b76b7ff2215eb202c2001eae004796ca1d5d6ea6fb760b9e1b95da7a8502cb7d70954ea263dfae2e5b25334c777a6759597b3744b7ae6ebea45bca90dd73940cbaf9f762c8cc674074371dafc6258841f9d3505a7d48dba55c02d436771537fb81789cd1dd63eaa1dc77165fc14ea2f3cbb7ca03d70386dcb32326dd1d218d9edb4a3e60c1a72aea03993c56a5e30246e23a6d452923fdce421cae6b6f1086406b37010c23c1d177d90e30c17704d19ec3357ce55a1f81d974627cd02a5c9e1189d73e2edee431dc36451e9a0cd88b36b3192f03428a6706022f8741ae86ec5fc1811386678568ef278807362dd6c794958b8764f6808840c184a97cc717f22eef201213eef7b11521f80f5d36d6a68ff21ed775628fbef4bf66a98f22b8562a9367b2fa207bc9b8f7971bd50b7f1985e7aa94133e829c29d4d4efb72bb606e3003b69b615852cff442e3d4d1a29785057f9984806bf49c45df40081a740f4a77d7fd77ef74126c461b60f63598f859b3242f5d50d2e02e679cb82177641c0dea7cfcead60f3f62a12a029862278bc3f055616142af68fb4e518561684be4dee8bd8955ba298d6e5ed8d07782daaf1526a52a3b199ba0bd0567c3a5d389d26d570d9fdbb4aed74dcaa1c0ecd660f886625d7a4b49f1d7925ff8068df58005a9c0668f182538b376601223e2e0f1760a4c64313c51a21cbb49c375d698c79f31d9c60a81b77cf28b6db981a715ca48b14cd95bb539e747b588851d46f1a1e29e6dead20d5ed63f70d148a075d70b7aa691de88755e755d24dd088fbc1f2d8383767a48bb6c953a1fd00d019b71994b17705538b0932d3b5283f8d8c84cb2605aa3dbcbbfbd3418677759a09eea08b2a967f0813e27e725fcc814b70cd3ea3a5d376aca030193fe52e446f13ca9bbe0b06b47e65ba1c22d78e3b35a177d785d46c062a88f24195cd8663ae21718e169916b79019bfd1cccf26c1b0170088b3407c906b7c84734895ce5b8c0cd03349d0ef2d623554ec768cf45c6a7eb581bb4c1fdecf57773ae13320a69b30718c20fdf93cb93b9dfe64df0c20103318f93dc51c4fb68a2a0e9a2fab12243639025614f3448b4ce6e8db513dcc9ab94cb94f9a85b83ac9a1ea23d40fb8a40ff4de0c0f591f4c82665a941306e145ef32c40e6bc1b7a1819b0efb10b8e2670e21db4195329b9e2729e0c8c76c23c2702450758db02074c3216f4c3440657516c4d222f6f564c9c09883a8782e8e6048acd28e684bc5d760e7fbacbbc00fdb1bb293667180276db2e8d112112741328d39295f4917543558121292a94ec0f71ace85592641386ad7f6a34c7cb4ba4db16bf14776bf2fd1c73f0155e8cc462418de580812276696865ea15e3daabf1a447476aac8bc7628fcc1fd8bfef26b4522df4523223e0603ee47a3378193473104476354b01834b368df51d28371a33715e7a3bdbd93b87947b782292fd403f6150742229da40cf3cdc4d55ae6d56a37237881e6f5e254a748dd04dc1806709fe106db8d54941b974f7b6960cf5b1d3429b8371a252cd3d1a2f53746921276b0bed3ed487d1e8829672d49b45b16a88c2e288dc13b0e799c4533b3d62071a25667121c5fe367d712fe5e0e818e6e417405d7abfd3c541feeadb27ff48d28a2105cd6536a7bed76d8283cafbeaeefa9d20d1972f28327f02220ea60ab0d1901b6de09ed855136815d1d3fe6fd951d76352c795c7114cb3e007f53fe68bbdae52a4cb233a61360cfd8b9f26be93fc665c929cc7fe43c51fb590a5947d11fde613331952c55eb5fe752e94b15179844077b1736c67ae4e1a28224928bc6d47bfa11727dcbca821fe5af6584bbb8940540b013f32d668606cb432150d00572d76afc491c315b0b4aa25e799df7c69218c10a33bb18a03c7b03c1bf3dab2f8ef355195df0f818acf9b5c266098aa0e1bed063190fb2ac963dacff6d89ccf5868720734f994241417337eaf6013d621dfe4ca30aeed0f1d303dd2f0941036c8d2841c4485286195825a42689ca519727b6f21502acaea0cb533b424016e534aa5c84819dd062a63dacebf88b2f4e987f50ab9f0cad4635be6fc3b3e8b41db41832b970afb2a8f64574e986d206397b215f8f4c1e3b4ef7edb31f1b2b9fe6537cee12079191857f36de8ce71c36ac49c8f19b4d0d0f3c286c6912ccf2375006f06db05622f55f684e1603da62e63424d7daf1653cf8336a8efeb8efdeef640e02489e5534b973a5655729e28b26ae5814beb7623ff46e67c0fffdf884b0fb714ca4ce66119af7948d5745fd719be740481fe6440830d0e08e682e5c975f7e16ed2431bb8671527a6c941eb35e1fd5df69c73c3f1eb658b25a6fbcc4f7dfeb1f0f1a977272aefe4ba4413c1b1c2a5c56be7e67e3249cd3e81eed79a6bb7f4c3ccc824afc1fa9898db36cc54f349c991273b01f4039c75aa7c8de89986a3909d3c75bc8b20aeb1073a2eec67eb301965f32bb4a8804473e09139d681274b0a9a72096fe5ab42d6bde125bea04152f35077756bcc816079da5e361378da1787199dce7e0dc014ec5979570dab511ed044628bfc03e265776d934eb5513d8de396e5b7b30fcbd48abeda807df8dd48a0de66425b28a3bf265377153697382ff7cb3768dd8620be1fb5909adee4bfa1632ef1df62a4822c11fc8dd3aa12920374cbbbbc81a7fc1093f4ee1f8865f1414d46e4283f2510d393687c7b89a8c492d44006bb70215f8da652eb480c1e919953aaa914912161b617b336789e4d1a144d34fb91bb2e2dfbc5219f6d0d95965137c2130294d59225a1f7ce86873a85c3aa3d79959775260e9d72f7ce93ed3312953059987c87e112e1579664138ae7a5b4e972759fcac3cff7757bc740e2d362c014db56ad0f4148e4f6f1751a8585cd410c7c04738bb3d0b3bcc75d1e69dd739e78a405722a11b9a7799aac72de6f321ee972e7ee07c1b070bedba2bc3b01c218148359877cc3e3e61e537dc421c6ecf842792239464dcccef8f531348dcb4c3a0435f3cb4e60444c5e0e0514b1e9603e55ec8aefebcef77286b6d45a8b943bd35a0e18f61703e776e4994952a3da52579024f2438371b625d2c7ab23c896028fc15ca3742872b7942a94a530ec48cd667054f93c6481de840330a936adbd38e64e435082a2409bdeb1f641eac31212ff58146793f262e425c02ad2b954bec3ced25631052cd11749acae9c3e5a76bf813426b68af83f974bf6fc37344627718337bd7a0a2f009087800bcd163e316d3680f7999a89e022ad66af0d7184d6caa65700bcd78bc2670cdcf6d597fa71e289010f9d9afbb4797069c2c0be1d32e846daf36dc34da387736302dd24e3bf6eed6071d4d3663fdfeb14965339257f5dae2b7659e29a0336637ce0b76c9296a3ac96d2299b501e64fdb4cbe7978e95e2098410858db121cb48bc244cba2565195f1d590ae2ae5bb452b57f08186525f74d15c0b2c3a092494ab7f02a41d3e42ab367e1cb648cb4a6239f62d8742b9630017bb37268d7a0e239fba461a89485ba0cc0138b58aceea2d7787e1e4595c8f190d4fe813749125b2724161eada1abb22f8d38430a97b65cc13788aba7b0eeb2cbfee82c56905091bc071fc5e0a37672d075dc6fa4fea8087eefb41ec5dc6941935cff06fe49d2d5b9d704b796202c6d1b2285973704e080ef2bffbc0a925030201c1a4f0d93e1390e0b34819513651145e45c3821302dd25fc7eba838f8bdc53f5afd34f857301bc07d8be9a8f0ef93cc720296d21fd8ebc758f2aa6c250624c20a14ae67f8c15e143b0f06d4d49d4a6e3fbf3f488c7a114f96a557612813bfa0aa68a2d17802116cc26278babd0a548c86baa541803b573f2e3557c9fd0f18dd3fc0a6b825f22fdbe54241fa609d5c820f874535e8c388dac154528e9d59ec768d4b7717bef1d8a401c86142e6620dc4832737766ef01d750f7bcc830784c3991ca02ef92ef2ac5069298d00e0a3106e39bbdce02ecd784d8dd1081ca715a07ecda81dd5a832cbe9573db892c1028320f3d8cabdf6ef29d848372717c847eee43cd50ca01d00afcd7f92521ebaf1c9ee7aa14922c0a7ceb28acc4ab377e7bbeb12364eaed0919a619a7b826b3dc88600ac010680b0187e219d0200129aeae04b6cb1c96428d2406928208fb2d1aa42cd9bcd6408e737f99bf9edd1cb4c7ad4027492ddac9b53f504ea9630fade4198d94b42903a600a8232ab9b1a6338e9175a7ba687d38142874ef5d2232463d038c0bf7bd4334b573088899ebabb951362456fc3a9bb544192a4ff8eb38e0056ad0886b5204e6b8528ee19cce735140084778e9eaf7de72233438ca50d8abf83f0d0b876b866b3a2ad605c8f3003e3605383e93e141128a096b003b3875ba2ca931a9526c1aae4a4ff8a8c518a55a7160704459edc8400507228e3a595c1ebbeb858ce07b7546e8fb81302fca41ade32570f65063284e582cfedf6e2b06031a44c3a32576e04ddbf0694a3f710f42d7a8f6769b39a158892a380ceb897ba8274ec8430a2bf7a74b0ce25cb1c4c94d1fe1a49fe44aa9376305f33e2c7abaddbf0e644a22c82ad1c66806bf5803295f2becfa27b47d98bbff3b954e72f244b54dd82990774eee84198e74bf218cc72a7d2bc12ea0201645a90061dea78a04b48153924429d56e26b48ade3b2f4afa5ede7be8751693a1f3022c7ba0d3aec0c0958a61cf3dad2015de752c64f8adb23064a3b9e3f77f5d2e3504112b55f3852ce2b450412d36c74df06135761e4ba8eee24985637aef6c618514ba5c8e756b916502f5a00a5a1ff34ab744434e72bd0b5675f77d25701d0f4107617f8c547dc2253039b196b9d3b03487a73f3480acde5e4dc6c9f1ec0e46f01403c80aa59b837dc16b0e96dee322de0516901d3840f0641b1ff43909cd86543d246a244ec03f4bf04331cb363e9c21544b054802905472561f70901d667388138faa53b95c25c310735c9caaf421d8b7731007b9736c455175d76050a1513e32761e1e0b644a5ae967814100632b6a20340a644be1883af6620baf772133d70a4e30fdd9ee44f91be3d896c350945ada19d2a9cdd62cea68c0cd7d42bedac723c0e8af1f6609a83e6d1c0fec6a308f29dfe10d28304be8ab3ed315d73c05222b0830c3259616def7f81be4799ff9ce21f638446d538bb1ead90869023ecf390f0f812daa897c775b62458632e3096be2d02c0db628e244946aea3879f5b714170f4b10db86abed4b1279767455a307e70e5d220e110394f74cab1efe7affd60ae8d35a23ed20849dd9e95c5ab90fdb23fc1789d3087bbf76f90ea13b7758592ca79abfbbede1be367af756f7fef57473129a7afd97d6a0c9854c87e75b9dbd20cbc7c0e0139043275d504d1488b14058b91d8c4ecb4a7cf08b4d1861e82c5b33ad66c71d56822ff2b86d0f72750283b1d3f95919f7deac4ef6f3bffd9a7bab2904dabd6b54fe03b35d286c178440be2fc8effaaad655d0b33d98454c17e9081605bff13e9a1b8e6a2f42713b3159bcd52e8813ed0a71ee16700f3cb5a6291a328c06b2d9d29da41664bd40523c3c4257f1f121192ac16be996fcfeec655e04010d6d83d0b09f4d0e3e313e4e8a29867d2816c168f7a6606189919ae07b7de103b13e814c874f56b0a39e020430adb6a230624fa6391ac9378e9fa09a7868f727ad04e0d8864fe7f1d0d7afd9178b07161814c0d6bfdc1f75a0d07d53e25ffe2573abd78f73629ce621673fc17945f3bb259a59214c02d607f8fb7cbf24b4960ddc590b95e7f2355ed7ee76a7d711ce85f19be168328492b56b52c63a7f630d2774da3188c9305badaa55f62525392083a16075dd074a8162ff9452dc3b6a26b059c8559b27559943aeabb4d8eb2c2ecbf7201dd8ec0d169139ffcdea4bb27601788e5ff7539e9d12b87799af72c9b3eae1a69884e6b39adc332c892e9f5dd820924d9ced170c3566ebef1fb2ea9f8d5e214328b9bab969bff320131f46666baace4c300d69b68b3244c98e40d63eefe2dcf75d7540331677c4eb61b2287606863042d9b3c529c43dffa4b29c0902e211f48fcac62b15371bfd13bf44be259d0dfa6774cc35ce8dcef4784648d7c4545669039099251124e750332003acadde17c1f42248049cb726cc2e1ae2161e890518d969237eb3a9a15f4dbe14d47d331a8998f946e7cfc314738004da997f4b596de71e41f563c144fe5b2acbe9c7c684f6024f47836cf1b4d70cbbc71eed0ede8812d195a25ad7b246a9ee4a48338d1cdbdaca3e5219ca64d6368bd03f9abca0251b1d9071c06469c958d924c6a4468af6dba755fc630d0278c0fd6de474e9bf591f2ef901cd7d5519932b20fe2466319b6438b5ce754efc222e4eb64460aea358efcfc1d05d815d33934392383e629d0e62594ce03f2437e4761258c44aa40bdf6a9cbdb046de786008daefa57acc882bdb313ffc6fc6a8630e3ed9a89a812697e34f646e63b4acb5a5c0686dd2e4b033328e8695a7741a262565f27a7a5d8e693f48854ee4851dbb0b2b8d8d88f88eaba5c2f8f5f4c2a74cc749d5c8af93031392004d19561095cfa6c1b46786259ec37aed34c7ae047bba7fae4b9c07a5804a2bfbd49f842e3b4302313ff0c9be193535a7470775078148f316b2f90247cb95f37a279aed403fba855277358c6a3a4b47080ef9890bc56435780ab3fa36ed7fe3544d47497fa4827bd54189c2b5a23e72a75e3fbfb2cd7049b9881f60563221f382b8083da479e847fa958845b723300bb93417f2ea97597d6d3b29ac3d36f1a6f8271f64731d21c5f66249ef59138ae77c245083e2aaa617496411704878526bc100fbce7b3702c799a4412df63758f0744a7647f171eed14f200563cf7c38cb2745d20e5de7b81d57238ee9f32ada5e7dc5a0e59d7d22d5f02f6a73df352237b5ea03e932ab66597f858b5d262f0000000022999e98706e4d97993173900743091984643d7a7900566702e48df0d193ac8982c7bd25b8ab4bfda8f8554a6931795edbe2ec16347b00f187770bb062475f3c10620bedab4ebb9d1c53a9c50568323e212033f3ecdf9ab1c558617fa878a3889ccc71d7ca93e697dedcbf8c89dc9fe767d3056619cbfd6445e81f548bed7f16a6c5456fea34727bebc87816871c4479fd4054dfcf7e6a0937c553ff8b7f703ded65db30d500680bd715b30fd0fb36de9aeb2e9a5c1ec5f24d11d0f85e4970386127c337b84ca7d127b511434eeb11d5f81f827aea5e85af47a1de346d68e9b3f6e372304c455d9d5a391e5ca7df8415ba5e4f200d8a19409a377ace44fcdc0c0a0000000000000000823a79c70baa9c94d837330cd2da43a411c6321595f80792bafdbfa075d7688474403f13afbb91a37193c2f1db56f6195cc29b7bf1d41e0c12ac6d6419e59007 diff --git a/zebra-test/src/vectors/orchard_shielded_data.rs b/zebra-test/src/vectors/orchard_shielded_data_vanilla.rs similarity index 57% rename from zebra-test/src/vectors/orchard_shielded_data.rs rename to zebra-test/src/vectors/orchard_shielded_data_vanilla.rs index b117cdd007a..938a70882c9 100644 --- a/zebra-test/src/vectors/orchard_shielded_data.rs +++ b/zebra-test/src/vectors/orchard_shielded_data_vanilla.rs @@ -1,4 +1,4 @@ -//! Orchard shielded data (with Actions) test vectors +//! OrchardVanilla shielded data (with Actions) test vectors //! //! Generated by `zebra_chain::primitives::halo2::tests::generate_test_vectors()` //! @@ -12,23 +12,23 @@ use hex::FromHex; use lazy_static::lazy_static; lazy_static! { - pub static ref ORCHARD_SHIELDED_DATA: Vec<&'static [u8]> = [ - ORCHARD_SHIELDED_DATA_1_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_3_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_3_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_4_BYTES.as_ref(), + pub static ref ORCHARD_SHIELDED_DATA_VANILLA: Vec<&'static [u8]> = [ + ORCHARD_SHIELDED_DATA_VANILLA_1_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_VANILLA_3_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_VANILLA_3_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_VANILLA_4_BYTES.as_ref(), ] .to_vec(); - pub static ref ORCHARD_SHIELDED_DATA_1_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-1.txt").trim()) + pub static ref ORCHARD_SHIELDED_DATA_VANILLA_1_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-vanilla-1.txt").trim()) .expect("Orchard shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_2_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-2.txt").trim()) + pub static ref ORCHARD_SHIELDED_DATA_VANILLA_2_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-vanilla-2.txt").trim()) .expect("Orchard shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_3_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-3.txt").trim()) + pub static ref ORCHARD_SHIELDED_DATA_VANILLA_3_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-vanilla-3.txt").trim()) .expect("Orchard shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_4_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-4.txt").trim()) + pub static ref ORCHARD_SHIELDED_DATA_VANILLA_4_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-vanilla-4.txt").trim()) .expect("Orchard shielded data bytes are in valid hex representation"); } diff --git a/zebra-test/src/vectors/orchard_shielded_data_zsa.rs b/zebra-test/src/vectors/orchard_shielded_data_zsa.rs new file mode 100644 index 00000000000..2d276e2f23a --- /dev/null +++ b/zebra-test/src/vectors/orchard_shielded_data_zsa.rs @@ -0,0 +1,34 @@ +//! OrchardZSA shielded data (with Actions) test vectors +//! +//! Generated by `zebra_chain::primitives::halo2::tests::generate_zsa_test_vectors()` +//! +//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` +//! instances, care should be used when using them to test functionality beyond +//! verifying a standalone Orchard Acton Halo2 proof. + +#![allow(missing_docs)] + +use hex::FromHex; +use lazy_static::lazy_static; + +lazy_static! { + pub static ref ORCHARD_SHIELDED_DATA_ZSA: Vec<&'static [u8]> = [ + ORCHARD_SHIELDED_DATA_ZSA_1_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_ZSA_3_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_ZSA_3_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_ZSA_4_BYTES.as_ref(), + ] + .to_vec(); + pub static ref ORCHARD_SHIELDED_DATA_ZSA_1_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-zsa-1.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_SHIELDED_DATA_ZSA_2_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-zsa-2.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_SHIELDED_DATA_ZSA_3_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-zsa-3.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_SHIELDED_DATA_ZSA_4_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-zsa-4.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); +} From 8a32389cf0dfcbf5fda0f7042bc91edf8cf618b0 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 28 Apr 2025 16:02:25 +0200 Subject: [PATCH 199/230] Fix cargo clippy warning --- zebra-chain/src/transaction/arbitrary.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index 517419f8aeb..f2df6221297 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -250,7 +250,7 @@ impl Transaction { ), orchard_zsa_issue_data, )| { - orchard_shielded_data.is_some().then(|| Transaction::V6 { + orchard_shielded_data.is_some().then_some(Transaction::V6 { network_upgrade, lock_time, expiry_height, From ef1882dc107d3077147671b5c75e3d62382e446c Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 30 Apr 2025 10:13:12 +0200 Subject: [PATCH 200/230] Update orchard and librustzcash versions --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 16 ++++++++-------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b4d5fc74fed..a55b28eb2a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" +source = "git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4#e88964e248c9038e757771b8225c47ac8772abc4" dependencies = [ "blake2b_simd", "byteorder", @@ -1407,7 +1407,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" +source = "git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4#e88964e248c9038e757771b8225c47ac8772abc4" dependencies = [ "blake2b_simd", ] @@ -2878,7 +2878,7 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchard" version = "0.8.0" -source = "git+https://github.com/QED-it/orchard?rev=3394cfc1ac156f9cc7e8507467cd2ac792ce20bd#3394cfc1ac156f9cc7e8507467cd2ac792ce20bd" +source = "git+https://github.com/QED-it/orchard?rev=831ca109705a409bc3d3b82e76245e45dd0f0812#831ca109705a409bc3d3b82e76245e45dd0f0812" dependencies = [ "aes", "bitvec", @@ -5815,7 +5815,7 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" version = "0.3.2" -source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" +source = "git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4#e88964e248c9038e757771b8225c47ac8772abc4" dependencies = [ "bech32", "bs58", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "zcash_client_backend" version = "0.12.1" -source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" +source = "git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4#e88964e248c9038e757771b8225c47ac8772abc4" dependencies = [ "base64 0.21.7", "bech32", @@ -5866,7 +5866,7 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" +source = "git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4#e88964e248c9038e757771b8225c47ac8772abc4" dependencies = [ "byteorder", "nonempty", @@ -5875,7 +5875,7 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" +source = "git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4#e88964e248c9038e757771b8225c47ac8772abc4" dependencies = [ "blake2b_simd", "byteorder", @@ -5885,7 +5885,7 @@ dependencies = [ [[package]] name = "zcash_keys" version = "0.2.0" -source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" +source = "git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4#e88964e248c9038e757771b8225c47ac8772abc4" dependencies = [ "bech32", "blake2b_simd", @@ -5922,14 +5922,14 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.15.0" -source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" +source = "git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4#e88964e248c9038e757771b8225c47ac8772abc4" dependencies = [ "aes", "bip0039", "blake2b_simd", "byteorder", "document-features", - "equihash 0.2.0 (git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq)", + "equihash 0.2.0 (git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4)", "ff", "fpe", "group", @@ -5983,7 +5983,7 @@ dependencies = [ [[package]] name = "zcash_protocol" version = "0.1.1" -source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" +source = "git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4#e88964e248c9038e757771b8225c47ac8772abc4" dependencies = [ "document-features", "memuse", @@ -6524,7 +6524,7 @@ dependencies = [ [[package]] name = "zip321" version = "0.0.0" -source = "git+https://github.com/QED-it/librustzcash?branch=pub-burn-read-write-orchard-flavors-eq#a84cfc2daf04d500178daf9a6fd4b2846882c7a6" +source = "git+https://github.com/QED-it/librustzcash?rev=e88964e248c9038e757771b8225c47ac8772abc4#e88964e248c9038e757771b8225c47ac8772abc4" dependencies = [ "base64 0.21.7", "nom", diff --git a/Cargo.toml b/Cargo.toml index b17f40b9146..47664809374 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -108,11 +108,11 @@ halo2_proofs = { version = "0.3.0", git = "https://github.com/QED-it/halo2", bra halo2_gadgets = { version = "0.3.0", git = "https://github.com/QED-it/halo2", branch = "zsa1" } zcash_note_encryption = { version = "0.4.0", git = "https://github.com/QED-it/zcash_note_encryption", branch = "zsa1" } sapling-crypto = { version = "0.1.3", git = "https://github.com/QED-it/sapling-crypto", branch = "zsa1" } -orchard = { version = "0.8.0", git = "https://github.com/QED-it/orchard", rev = "3394cfc1ac156f9cc7e8507467cd2ac792ce20bd" } -zcash_primitives = { version = "0.15.0", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } -zcash_protocol = { version = "0.1.1", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } -zcash_address = { version = "0.3.2", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } -zcash_encoding = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } -zcash_history = { version = "0.4.0", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } -zcash_client_backend = { version = "0.12.1", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } -zcash_keys = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", branch = "pub-burn-read-write-orchard-flavors-eq" } +orchard = { version = "0.8.0", git = "https://github.com/QED-it/orchard", rev = "831ca109705a409bc3d3b82e76245e45dd0f0812" } +zcash_primitives = { version = "0.15.0", git = "https://github.com/QED-it/librustzcash", rev = "e88964e248c9038e757771b8225c47ac8772abc4" } +zcash_protocol = { version = "0.1.1", git = "https://github.com/QED-it/librustzcash", rev = "e88964e248c9038e757771b8225c47ac8772abc4" } +zcash_address = { version = "0.3.2", git = "https://github.com/QED-it/librustzcash", rev = "e88964e248c9038e757771b8225c47ac8772abc4" } +zcash_encoding = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", rev = "e88964e248c9038e757771b8225c47ac8772abc4" } +zcash_history = { version = "0.4.0", git = "https://github.com/QED-it/librustzcash", rev = "e88964e248c9038e757771b8225c47ac8772abc4" } +zcash_client_backend = { version = "0.12.1", git = "https://github.com/QED-it/librustzcash", rev = "e88964e248c9038e757771b8225c47ac8772abc4" } +zcash_keys = { version = "0.2.0", git = "https://github.com/QED-it/librustzcash", rev = "e88964e248c9038e757771b8225c47ac8772abc4" } From 86272d5347b936166f87217a44c9b2a2ab547c67 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 30 Apr 2025 11:05:19 +0200 Subject: [PATCH 201/230] Fix order of fields for OrchardZS serialization/deserialization to be the same as in librustzcash --- zebra-chain/src/transaction/serialize.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index 64e1f229246..599d8ab4cc9 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -417,15 +417,15 @@ impl ZcashSerialize for orchard::ShieldedData { // Denoted as `anchorOrchard` in the spec. self.shared_anchor.zcash_serialize(&mut writer)?; - // Denoted as `sizeProofsOrchard` and `proofsOrchard` in the spec. - self.proof.zcash_serialize(&mut writer)?; - // Denoted as `nAGExpiryHeight` in the spec (ZIP 230) (must be zero for V6/NU7). writer.write_u32::(0)?; // Denoted as `vAssetBurn` in the spec (ZIP 230). self.burn.zcash_serialize(&mut writer)?; + // Denoted as `sizeProofsOrchard` and `proofsOrchard` in the spec. + self.proof.zcash_serialize(&mut writer)?; + // Denoted as `vSpendAuthSigsOrchard` in the spec. zcash_serialize_external_count(&sigs, &mut writer)?; @@ -544,11 +544,6 @@ impl ZcashDeserialize for Option> { // Consensus: type is `{0 .. 𝑞_ℙ − 1}`. See [`orchard::tree::Root::zcash_deserialize`]. let shared_anchor: orchard::tree::Root = (&mut reader).zcash_deserialize_into()?; - // Denoted as `sizeProofsOrchard` and `proofsOrchard` in the spec. - // Consensus: type is `ZKAction.Proof`, i.e. a byte sequence. - // https://zips.z.cash/protocol/protocol.pdf#halo2encoding - let proof: Halo2Proof = (&mut reader).zcash_deserialize_into()?; - // Denoted as `nAGExpiryHeight` in the spec (ZIP 230) (must be zero for V6/NU7). let n_ag_expiry_height = reader.read_u32::()?; if n_ag_expiry_height != 0 { @@ -560,6 +555,11 @@ impl ZcashDeserialize for Option> { // Denoted as `vAssetBurn` in the spec (ZIP 230). let burn = (&mut reader).zcash_deserialize_into()?; + // Denoted as `sizeProofsOrchard` and `proofsOrchard` in the spec. + // Consensus: type is `ZKAction.Proof`, i.e. a byte sequence. + // https://zips.z.cash/protocol/protocol.pdf#halo2encoding + let proof: Halo2Proof = (&mut reader).zcash_deserialize_into()?; + // Denoted as `vSpendAuthSigsOrchard` in the spec. let sigs: Vec> = zcash_deserialize_external_count(actions.len(), &mut reader)?; From b4e7fdd87eec7bdb37880426c9aa1f2f957bd2cd Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 1 May 2025 14:08:10 +0200 Subject: [PATCH 202/230] Update test vectors (with ones that contain burn inside AG) --- .../orchard_zsa/tests/vectors/issue_blocks.rs | 6582 ++++++++++------- .../vectors/orchard_shielded_data_vanilla.rs | 2 +- .../src/vectors/orchard_shielded_data_zsa.rs | 2 +- zebra-test/src/vectors/zsa.rs | 10 +- 4 files changed, 4045 insertions(+), 2551 deletions(-) diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs index 9050790da14..44d0c26662c 100644 --- a/zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs +++ b/zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs @@ -1,13 +1,12 @@ -pub(crate) const BLOCKS: [&[u8]; 4] = [ +pub(crate) const BLOCKS: [&[u8]; 6] = [ // Genesis block &[], - // Issuance block &[ 0x04, 0x00, 0x00, 0x00, 0x27, 0xe3, 0x01, 0x34, 0xd6, 0x20, 0xe9, 0xfe, 0x61, 0xf7, 0x19, 0x93, 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, 0x76, - 0xf9, 0x0e, 0xd8, 0x11, 0x9f, 0x02, 0x77, 0xa3, 0xc3, 0x64, 0xbb, 0xcf, 0xff, 0xce, 0xbb, - 0xfd, 0x7d, 0xbf, 0xaf, 0xce, 0x1b, 0x51, 0x1f, 0x53, 0x83, 0x64, 0x9e, 0x84, 0xbb, 0xa9, - 0xc5, 0x98, 0xf7, 0x65, 0x7c, 0xd7, 0x3f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf9, 0x0e, 0xd8, 0x11, 0x9f, 0x02, 0x7f, 0x60, 0x43, 0xd9, 0x27, 0xd7, 0x2f, 0x8b, 0x5d, + 0xf9, 0x98, 0x4f, 0xdd, 0x36, 0xd2, 0xe2, 0xe1, 0xfd, 0x1f, 0xf8, 0xf7, 0xee, 0x04, 0xa2, + 0xb7, 0xda, 0x93, 0x06, 0xc1, 0x45, 0x51, 0xc4, 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, 0xf2, 0xfa, 0x49, 0x4d, 0x3f, 0xa6, 0x0c, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, @@ -111,665 +110,666 @@ pub(crate) const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0xa2, 0xff, 0x89, 0x60, 0x63, 0x0d, 0xce, 0x65, 0xb2, 0x2a, 0x0f, 0x76, 0x90, 0x71, 0x40, - 0xd1, 0x7f, 0xd2, 0xc4, 0xc6, 0x04, 0x6c, 0x71, 0xbc, 0xf6, 0xa7, 0x33, 0xad, 0x7a, 0x5f, - 0xcf, 0x27, 0x38, 0x13, 0xc8, 0x60, 0x92, 0xc0, 0xe3, 0x18, 0x2d, 0xdc, 0x16, 0xbf, 0xd9, - 0xc2, 0xbf, 0x72, 0x85, 0xaf, 0xa4, 0x35, 0x3f, 0xfd, 0x55, 0x99, 0x56, 0xf9, 0x6f, 0x8d, - 0x5b, 0x4f, 0x4f, 0x23, 0x13, 0xe7, 0xbd, 0x68, 0x9d, 0x1c, 0x16, 0x20, 0x3f, 0xef, 0x22, - 0x05, 0xae, 0x6e, 0xcf, 0x77, 0x4c, 0xf2, 0x7a, 0x2e, 0xf1, 0xe8, 0xf2, 0xb3, 0x5b, 0x1e, - 0xea, 0xb4, 0xdc, 0x6b, 0x5d, 0x08, 0x26, 0x52, 0x7f, 0x08, 0x12, 0x7c, 0x5a, 0x32, 0xa8, - 0x8e, 0x3b, 0x26, 0xf5, 0xb6, 0xab, 0x99, 0x46, 0x68, 0x31, 0xa4, 0xf8, 0x47, 0x5b, 0x42, - 0x46, 0x35, 0x89, 0xc8, 0x2a, 0xdb, 0x1b, 0x2e, 0x62, 0xdc, 0xd8, 0x7c, 0x50, 0x82, 0x07, - 0x5e, 0x90, 0xad, 0xda, 0x78, 0x55, 0x9a, 0x4b, 0x24, 0xf5, 0xe3, 0xbd, 0x01, 0xaf, 0x74, - 0xa0, 0x84, 0x02, 0xaa, 0xe8, 0xe8, 0x74, 0x1a, 0xc8, 0xa3, 0x3e, 0xa8, 0x29, 0x1b, 0x2f, - 0xc8, 0xcc, 0xa7, 0xf3, 0xda, 0x7a, 0xbf, 0xe1, 0x74, 0xeb, 0xb2, 0xf4, 0x73, 0x9c, 0x6b, - 0x00, 0x2f, 0xa9, 0x2c, 0xe2, 0x1b, 0x4f, 0xf8, 0x23, 0x64, 0xdf, 0x00, 0xb8, 0x09, 0x14, - 0xcf, 0x1f, 0xc1, 0x4c, 0xaf, 0x3e, 0x11, 0x67, 0xc4, 0x25, 0x49, 0x59, 0x9f, 0x2b, 0xeb, - 0x08, 0x6f, 0x13, 0x78, 0x4c, 0x6f, 0x4c, 0xd1, 0xb6, 0x69, 0xe5, 0xb4, 0xd5, 0xd6, 0x29, - 0x7d, 0x4e, 0x21, 0xa4, 0x52, 0x23, 0x64, 0xfb, 0x5d, 0x40, 0xaf, 0x01, 0xc2, 0xce, 0xa0, - 0x66, 0x5e, 0x01, 0xa6, 0xd6, 0x88, 0x73, 0x78, 0x80, 0x70, 0x8f, 0x51, 0x71, 0xd2, 0x07, - 0x38, 0xd6, 0x37, 0x65, 0x54, 0x7f, 0x46, 0x6c, 0x84, 0x50, 0x49, 0x03, 0x53, 0xc3, 0xbe, - 0x38, 0xea, 0xd6, 0xa9, 0x69, 0xc0, 0x60, 0x10, 0x6c, 0x20, 0x6e, 0x96, 0x51, 0x59, 0x3a, - 0xbc, 0x2a, 0x31, 0x81, 0x2c, 0x7e, 0xbc, 0x53, 0x97, 0x11, 0xf5, 0xc7, 0x15, 0x82, 0x9a, - 0x00, 0x79, 0x28, 0xfe, 0xa2, 0x8a, 0x5a, 0x7f, 0xec, 0x35, 0x35, 0xb1, 0xfd, 0x43, 0x2f, - 0xf1, 0x0f, 0xcb, 0x42, 0x34, 0xf2, 0x6a, 0x31, 0xb4, 0x0d, 0x98, 0x6f, 0x1a, 0xcd, 0x29, - 0x9d, 0x83, 0x7a, 0xae, 0xb8, 0x67, 0x9d, 0x5a, 0xab, 0xe5, 0x5d, 0x48, 0xdb, 0x84, 0x9d, - 0xde, 0x12, 0x28, 0xed, 0xbf, 0x58, 0xf0, 0xc1, 0x12, 0xb7, 0xb8, 0xd8, 0x8b, 0x5b, 0x6e, - 0xa7, 0xd5, 0xaf, 0xf1, 0x9b, 0xd5, 0x05, 0x2e, 0x61, 0xae, 0x76, 0x9f, 0x08, 0x27, 0x4a, - 0x82, 0x3c, 0x9c, 0xea, 0xfa, 0xeb, 0x5e, 0x0c, 0x25, 0xdf, 0x1e, 0x1d, 0x85, 0xcd, 0x09, - 0xac, 0x98, 0xe5, 0xdc, 0xfe, 0x93, 0xf0, 0x30, 0xc1, 0x4b, 0xca, 0x99, 0x22, 0x28, 0xa0, - 0x80, 0xe2, 0x97, 0x2c, 0x2d, 0x9a, 0x62, 0xf8, 0x74, 0x0b, 0x27, 0x6d, 0x96, 0x1b, 0x1d, - 0xd3, 0x57, 0x60, 0xc1, 0x5a, 0x87, 0x5d, 0x20, 0x2a, 0x68, 0x3f, 0x80, 0x36, 0x3e, 0x10, - 0x42, 0x2b, 0xee, 0x42, 0x05, 0xfd, 0x5f, 0xf8, 0x44, 0xea, 0x7d, 0xc5, 0xf8, 0x5d, 0x7f, - 0xf6, 0x5f, 0xff, 0xdc, 0xa2, 0x0f, 0x56, 0x14, 0x77, 0xc6, 0x36, 0x70, 0x13, 0x0c, 0x74, - 0x7c, 0x47, 0x2b, 0x7e, 0x78, 0x94, 0x86, 0x07, 0xb4, 0x68, 0x13, 0xa3, 0xff, 0x23, 0x71, - 0x3c, 0x1e, 0xf5, 0x24, 0x2b, 0xd2, 0xff, 0xe7, 0xda, 0x34, 0x8e, 0x7d, 0xcd, 0x50, 0xea, - 0xd0, 0xef, 0xe6, 0x15, 0xb8, 0x3c, 0x50, 0x4f, 0xcb, 0xa6, 0xa2, 0x69, 0xf8, 0x45, 0x86, - 0x00, 0x86, 0xea, 0x0a, 0x4f, 0xbd, 0xc6, 0xfc, 0x3b, 0xca, 0x86, 0x10, 0x81, 0x30, 0xe2, - 0x3e, 0x07, 0x18, 0xcb, 0xe2, 0x43, 0xfe, 0x03, 0x14, 0x9b, 0xe5, 0x81, 0x95, 0x99, 0x85, - 0xb6, 0x25, 0x98, 0x8b, 0xc6, 0x9a, 0x05, 0xde, 0xa3, 0x87, 0x99, 0xc8, 0x08, 0xb7, 0x3d, - 0x31, 0xf5, 0x6d, 0xda, 0x38, 0x90, 0x8e, 0x57, 0x57, 0xda, 0xf3, 0x10, 0x2b, 0xf9, 0xc1, - 0x6a, 0xdd, 0x05, 0xb0, 0x57, 0x3a, 0xaa, 0x12, 0xde, 0xff, 0x60, 0x8f, 0x70, 0x89, 0x14, - 0x71, 0xa8, 0xc7, 0xde, 0x00, 0x82, 0x26, 0xe0, 0xd2, 0x83, 0xbe, 0x8f, 0x6e, 0x68, 0x9d, - 0x60, 0x65, 0x72, 0xa6, 0xb9, 0xa0, 0xe1, 0x6b, 0x10, 0xd9, 0x56, 0xcd, 0x3c, 0x79, 0xf6, - 0x05, 0x1a, 0x2e, 0x3d, 0xb3, 0x18, 0x8e, 0xa4, 0xb7, 0xbf, 0xe9, 0x47, 0x5a, 0x94, 0x9d, - 0x9e, 0x2f, 0xb9, 0xac, 0x90, 0x82, 0xe9, 0x64, 0x76, 0xf4, 0x6c, 0x8d, 0x59, 0x24, 0xaf, - 0xca, 0xcc, 0xf6, 0x80, 0x29, 0xd0, 0x3b, 0x60, 0x6d, 0xd5, 0x61, 0x24, 0x65, 0x6d, 0xa3, - 0x48, 0xea, 0xe7, 0x69, 0x08, 0xb5, 0x85, 0x0a, 0x52, 0x7b, 0x25, 0x5f, 0xe7, 0x61, 0x46, - 0xfb, 0x51, 0x1a, 0xac, 0x1d, 0x00, 0x96, 0x21, 0xde, 0x6d, 0xa7, 0xca, 0x34, 0x2c, 0x02, - 0x61, 0x22, 0xa3, 0xa1, 0xd4, 0xa4, 0x3b, 0x12, 0x6e, 0x79, 0x73, 0xa7, 0x4b, 0xaf, 0x78, - 0x8b, 0x5a, 0xdd, 0x8a, 0x5d, 0xd3, 0x7d, 0xb6, 0xb9, 0xf2, 0x83, 0x86, 0x82, 0xd1, 0xa0, - 0x3b, 0x53, 0x6c, 0x41, 0x85, 0x19, 0xea, 0x00, 0x2d, 0x64, 0x64, 0x52, 0x45, 0x72, 0x4c, - 0x4d, 0x7b, 0xf8, 0x45, 0xac, 0x47, 0xba, 0x0f, 0x10, 0x1b, 0x9c, 0xc7, 0xc9, 0xae, 0x70, - 0x61, 0x14, 0xfb, 0x82, 0xf1, 0x65, 0x23, 0xc0, 0x67, 0xad, 0xaf, 0xa0, 0x4c, 0x98, 0xeb, - 0x7b, 0xe8, 0x73, 0x61, 0xf4, 0x2a, 0xe6, 0x0b, 0x51, 0x9d, 0x05, 0xd4, 0x2d, 0x8a, 0x43, - 0x7b, 0xe3, 0x6f, 0xda, 0xa7, 0xe8, 0x6b, 0x2d, 0x9b, 0x58, 0x44, 0x29, 0x58, 0xb3, 0xc4, - 0x78, 0x7d, 0xc8, 0x1e, 0xca, 0x15, 0xee, 0x84, 0x6b, 0xcb, 0x51, 0x32, 0xb9, 0xd5, 0xa0, - 0xaf, 0xdd, 0x1a, 0x08, 0xef, 0x41, 0x7b, 0x7e, 0x26, 0xfb, 0x6a, 0x99, 0x95, 0xe4, 0x3e, - 0x4b, 0x8c, 0xb2, 0xb1, 0xf9, 0xc8, 0xa9, 0xf2, 0x83, 0xf6, 0xfa, 0x03, 0x74, 0x5a, 0xc6, - 0x75, 0x88, 0x6b, 0x14, 0xb8, 0xbd, 0x5b, 0xe6, 0x6b, 0xab, 0x0f, 0x8b, 0x30, 0xd5, 0x2e, - 0xdc, 0xaf, 0x76, 0xf8, 0x28, 0x5b, 0xf2, 0x55, 0x83, 0x04, 0x8b, 0xa1, 0x0e, 0x5f, 0x80, - 0xb9, 0xf5, 0x41, 0xde, 0x0f, 0xf6, 0x29, 0x05, 0xe9, 0xd2, 0xdc, 0x19, 0x5b, 0x3a, 0x5b, - 0x03, 0x9b, 0xb2, 0x63, 0xcf, 0x21, 0xb8, 0xf2, 0x44, 0xdd, 0x0f, 0x96, 0xa1, 0xe5, 0x80, - 0xe2, 0x4f, 0xa3, 0x1e, 0x46, 0xdb, 0x5f, 0x1d, 0x5f, 0xb4, 0x55, 0xca, 0x57, 0xb5, 0x0b, - 0x1d, 0xce, 0xbe, 0x05, 0x04, 0xdd, 0xf3, 0xbd, 0xaf, 0x06, 0xbf, 0xe1, 0x17, 0xa5, 0xb5, - 0x16, 0x78, 0xcd, 0x76, 0x2d, 0xbf, 0x70, 0x9f, 0x75, 0x2f, 0x6e, 0xc9, 0x87, 0x3c, 0x04, - 0xab, 0x1c, 0xa6, 0xe3, 0xf0, 0xac, 0xca, 0x73, 0xfb, 0x4b, 0xaf, 0x1f, 0xa2, 0xb3, 0x79, - 0xbb, 0xcc, 0xdc, 0xfa, 0x13, 0xd9, 0x83, 0xb0, 0x5d, 0xd5, 0x41, 0xa8, 0x0b, 0x37, 0x95, - 0xa4, 0x89, 0xc8, 0x3a, 0x1f, 0x7d, 0xd7, 0xdc, 0xb5, 0xfa, 0x31, 0xbf, 0x2b, 0x3f, 0x55, - 0x4d, 0xd4, 0x90, 0xda, 0xc8, 0xb2, 0xf9, 0x54, 0x51, 0xba, 0x7b, 0xa7, 0xc1, 0x09, 0xf0, - 0x24, 0x81, 0x7e, 0x2b, 0x64, 0x73, 0x2f, 0xd5, 0x1a, 0xf3, 0xa0, 0x41, 0x15, 0x9d, 0x95, - 0x89, 0x44, 0xe7, 0x5d, 0x26, 0x8a, 0xdf, 0x9b, 0xb6, 0x38, 0xa4, 0xa5, 0x1b, 0x3d, 0xbe, - 0xbb, 0x5b, 0x5b, 0x20, 0xbc, 0xe2, 0x1c, 0xf0, 0x72, 0x50, 0xd0, 0x68, 0xe6, 0xac, 0xa3, - 0x97, 0xd9, 0x5d, 0xe7, 0xbd, 0x4a, 0xd2, 0x87, 0xbc, 0x37, 0x98, 0xc8, 0xaa, 0xbd, 0x57, - 0x80, 0x2d, 0x2d, 0x55, 0xef, 0x15, 0xe5, 0x46, 0x21, 0xff, 0x0c, 0xb1, 0xe8, 0x36, 0x60, - 0x28, 0x1e, 0x2c, 0x7a, 0x6c, 0x1c, 0x4e, 0x29, 0x71, 0xfd, 0x4d, 0x34, 0x09, 0xe4, 0x0b, - 0x58, 0xbe, 0xf5, 0xdd, 0xf9, 0x6e, 0x2f, 0x11, 0xe7, 0x0a, 0xe8, 0x93, 0xf2, 0x53, 0x9a, - 0xb2, 0xa3, 0xc0, 0x47, 0x10, 0x2e, 0x08, 0x55, 0x16, 0x60, 0xc8, 0x86, 0xba, 0x44, 0xcf, - 0xe9, 0x8a, 0x39, 0xd1, 0x1c, 0xfd, 0x7e, 0xdb, 0xfb, 0xaa, 0xe0, 0xa1, 0xa0, 0xfc, 0x69, - 0x2d, 0x5e, 0x45, 0xd5, 0xc0, 0xe0, 0x83, 0x72, 0x12, 0xab, 0x05, 0x8e, 0x1c, 0x01, 0x0e, - 0xdc, 0xd5, 0xd6, 0xa5, 0xca, 0x49, 0x81, 0xba, 0x80, 0xdb, 0x99, 0x0a, 0xf2, 0xe4, 0x1e, - 0xaf, 0xaa, 0x20, 0x9e, 0xe3, 0xaa, 0xdf, 0xa0, 0xba, 0x30, 0x47, 0xf1, 0x29, 0x46, 0x17, - 0x85, 0x57, 0x7a, 0x10, 0xc8, 0x1d, 0xb9, 0x45, 0x52, 0x1f, 0xa7, 0xa6, 0x38, 0x6b, 0x6c, - 0x07, 0xf6, 0xa3, 0x19, 0xa7, 0xe5, 0xb7, 0x4d, 0xbb, 0xf2, 0x9c, 0xd0, 0xe5, 0x9f, 0x9b, - 0xe5, 0xae, 0xdb, 0x76, 0x4d, 0x75, 0x93, 0xb4, 0xc4, 0x4b, 0xa7, 0x4b, 0xa2, 0x5a, 0xba, - 0x14, 0x45, 0xff, 0xbe, 0x1c, 0xd6, 0x36, 0x12, 0x89, 0x17, 0xea, 0xd3, 0x85, 0xdf, 0xaf, - 0x08, 0x49, 0x91, 0xc2, 0xfa, 0x41, 0x6f, 0x44, 0xcf, 0x8d, 0x6f, 0x9b, 0xb2, 0x91, 0x55, - 0xff, 0xdd, 0xfc, 0xf5, 0x11, 0x9d, 0x0d, 0xb3, 0xdb, 0xe3, 0xcf, 0x13, 0x4d, 0x47, 0x87, - 0x68, 0xc6, 0x07, 0xd6, 0xf1, 0x18, 0xdf, 0x2a, 0xea, 0xd2, 0xc9, 0x55, 0x57, 0xa3, 0xae, - 0xf7, 0xfb, 0xb4, 0x33, 0x61, 0x08, 0xac, 0x45, 0xe1, 0x8b, 0x8c, 0x87, 0x1e, 0xe6, 0x5b, - 0x1d, 0x75, 0xff, 0x5a, 0xba, 0x13, 0xa6, 0xa6, 0xb3, 0x66, 0xeb, 0xc9, 0x8e, 0x8d, 0x39, - 0xfd, 0x3f, 0x98, 0x50, 0x6f, 0x7c, 0x84, 0x99, 0x0c, 0x28, 0xc7, 0x47, 0x89, 0xbd, 0x80, - 0xb0, 0x07, 0x0f, 0xcc, 0x64, 0x9c, 0xca, 0x17, 0x9e, 0xbe, 0x95, 0x4c, 0xb5, 0xb4, 0x4b, - 0x0d, 0x3f, 0x62, 0x49, 0xc4, 0x75, 0x18, 0x77, 0xf0, 0xa4, 0x03, 0x10, 0x16, 0xc9, 0x15, - 0xc8, 0x34, 0xe7, 0xdf, 0x81, 0x75, 0x6e, 0x10, 0xa4, 0x41, 0x83, 0x3f, 0xe0, 0xb7, 0x50, - 0x87, 0xbf, 0x63, 0xe1, 0xb7, 0x6c, 0x1e, 0xa3, 0xbc, 0xde, 0x99, 0x70, 0x25, 0xd9, 0x18, - 0x9f, 0x7d, 0x1c, 0x50, 0xac, 0x63, 0x23, 0xfb, 0x8d, 0x57, 0xfa, 0xbf, 0xec, 0xb7, 0x07, - 0x69, 0x50, 0xdd, 0xa5, 0x10, 0xf0, 0xac, 0xae, 0xac, 0xbf, 0x14, 0xbd, 0xb3, 0x35, 0x48, - 0x9c, 0x0f, 0x56, 0xcc, 0x67, 0xd5, 0x12, 0x74, 0xd2, 0x17, 0x34, 0xbd, 0x1a, 0x1b, 0xed, - 0xcf, 0x7e, 0x98, 0xa0, 0x88, 0x1c, 0xb1, 0xeb, 0xd3, 0x8a, 0xd6, 0x7c, 0x61, 0x90, 0x01, - 0x43, 0x73, 0x1e, 0xb7, 0xe1, 0xca, 0x81, 0xeb, 0xa2, 0x5d, 0x7a, 0x67, 0xd4, 0xab, 0xea, - 0xb4, 0x8a, 0xe0, 0x63, 0xe7, 0xd8, 0x4f, 0x2b, 0x1a, 0xb1, 0x2a, 0xd3, 0x93, 0x8c, 0xc4, - 0x3d, 0x19, 0x4d, 0x82, 0x21, 0xb7, 0x8e, 0xfd, 0x31, 0xc9, 0x72, 0x51, 0x2d, 0xd9, 0x2c, - 0x70, 0x4b, 0xcf, 0x74, 0x93, 0x37, 0x20, 0x8d, 0x3a, 0xc3, 0x3a, 0xf1, 0x86, 0xfc, 0x87, - 0x79, 0x82, 0x42, 0xca, 0xfa, 0x31, 0x92, 0x9b, 0x6a, 0x50, 0xb2, 0xc8, 0xb6, 0xbe, 0x32, - 0xba, 0xee, 0x7b, 0xeb, 0x2f, 0xfc, 0xa2, 0x22, 0x12, 0xfc, 0xed, 0x56, 0x59, 0x58, 0x55, - 0xed, 0x70, 0x1d, 0xda, 0x8c, 0x8e, 0x14, 0xc2, 0xcc, 0x55, 0x5b, 0xd5, 0x5f, 0xd5, 0xa0, - 0xfb, 0xce, 0x67, 0xb2, 0x4f, 0x8b, 0xdd, 0x0a, 0x11, 0x14, 0x1a, 0xce, 0x97, 0x73, 0xb4, - 0x9d, 0xe5, 0xe2, 0x43, 0x36, 0xf9, 0x99, 0x01, 0x73, 0xc5, 0x7f, 0xea, 0xfc, 0xbb, 0x29, - 0xb3, 0xa7, 0x70, 0x7a, 0xa8, 0x57, 0x31, 0x01, 0x28, 0xa8, 0x01, 0x05, 0x8b, 0xff, 0xf8, - 0xe7, 0x1e, 0x5d, 0xbd, 0x02, 0x45, 0xd3, 0x64, 0x0f, 0x9d, 0x92, 0x65, 0xb8, 0x8b, 0x41, - 0xd3, 0xf8, 0xf2, 0x2f, 0x30, 0x0c, 0x03, 0x0b, 0x98, 0xcd, 0x73, 0xbc, 0x96, 0xa1, 0x0e, - 0x2f, 0xda, 0xa9, 0xa2, 0x7c, 0x2a, 0x42, 0xb9, 0x5c, 0x90, 0xfc, 0xde, 0xe7, 0x2e, 0x07, - 0xac, 0x44, 0x86, 0x5a, 0xcb, 0x7c, 0x2d, 0xb4, 0x2d, 0x1f, 0x38, 0xfb, 0x05, 0x05, 0x5a, - 0x29, 0xcb, 0x51, 0xc9, 0x1b, 0xcd, 0xe8, 0x53, 0x93, 0xc1, 0x4f, 0xed, 0x88, 0x2b, 0x94, - 0xb6, 0xef, 0x49, 0x6a, 0x04, 0xe3, 0x18, 0xf1, 0xc1, 0xff, 0xbb, 0xde, 0x5c, 0x5d, 0x7e, - 0x8b, 0x55, 0xea, 0x03, 0x37, 0xbd, 0x01, 0xa6, 0x99, 0x07, 0xae, 0x29, 0x35, 0xf1, 0xdf, + 0x90, 0x63, 0x00, 0x0c, 0x87, 0xd7, 0x14, 0x54, 0x92, 0xf9, 0xde, 0xd4, 0xd3, 0x7b, 0x4f, + 0xfd, 0xee, 0x76, 0x9a, 0x1c, 0x41, 0xb0, 0xe1, 0x7d, 0x62, 0x2c, 0xce, 0x77, 0xf1, 0x22, + 0xd7, 0x0d, 0xdb, 0x74, 0xfb, 0x50, 0xc5, 0xc3, 0x66, 0x66, 0x48, 0x24, 0x76, 0xbf, 0x5e, + 0x8e, 0x19, 0x0d, 0xcd, 0x8f, 0x5e, 0xd2, 0x80, 0xaf, 0x20, 0x9b, 0x3f, 0x67, 0x9d, 0x4d, + 0xc0, 0x6a, 0x21, 0x35, 0x08, 0x77, 0x4e, 0x2f, 0x7f, 0xa8, 0x2d, 0xff, 0x9a, 0x98, 0x58, + 0x66, 0x91, 0x90, 0x85, 0x52, 0x3b, 0x13, 0xb0, 0xaf, 0x4f, 0x53, 0x49, 0x75, 0x22, 0x84, + 0x68, 0xfe, 0xb6, 0x2c, 0xb1, 0x25, 0x75, 0x68, 0x1e, 0x61, 0x01, 0x28, 0x4f, 0x0f, 0xba, + 0x56, 0x28, 0xe2, 0xea, 0x53, 0x1e, 0x9d, 0xad, 0x53, 0xd8, 0x64, 0xc8, 0x54, 0xe4, 0x19, + 0xe4, 0xc5, 0xb9, 0x1f, 0xb7, 0xb3, 0x5d, 0x00, 0x59, 0x75, 0x72, 0xf9, 0x8d, 0xb1, 0xbb, + 0x9f, 0x30, 0x49, 0xdb, 0xb9, 0xa0, 0x8d, 0x40, 0x3e, 0xfd, 0x82, 0x4d, 0x9d, 0x11, 0x8a, + 0x68, 0x49, 0x31, 0x91, 0xe0, 0x59, 0xca, 0x00, 0xb2, 0x98, 0x22, 0x52, 0xa2, 0xff, 0xe5, + 0xc3, 0x91, 0x8a, 0x79, 0x17, 0x1c, 0x29, 0x44, 0x81, 0xfa, 0x26, 0x7e, 0x83, 0x27, 0x28, + 0x58, 0x59, 0x2d, 0x58, 0x90, 0x88, 0x4f, 0xeb, 0x90, 0x75, 0x23, 0x47, 0xf3, 0x3c, 0xfc, + 0x94, 0x43, 0xe7, 0x0a, 0x9f, 0x30, 0xd6, 0x15, 0x06, 0x52, 0xeb, 0x2b, 0xb0, 0x43, 0x27, + 0xee, 0x72, 0xb9, 0xc5, 0xe4, 0x24, 0x62, 0xd4, 0xd2, 0xbd, 0x92, 0x72, 0x5d, 0xf5, 0x0c, + 0xe2, 0x67, 0xc1, 0x58, 0x8d, 0x29, 0xb0, 0x8b, 0x25, 0xa7, 0x19, 0x73, 0x8e, 0x83, 0x6f, + 0x9c, 0x26, 0xee, 0x47, 0xce, 0x39, 0x45, 0xf9, 0xb6, 0x27, 0xc4, 0xb9, 0xd3, 0xbc, 0x8a, + 0xe7, 0x55, 0xd8, 0xb7, 0x8b, 0x84, 0x0f, 0x1f, 0xcd, 0x05, 0x5c, 0xd1, 0x79, 0xaf, 0x2a, + 0xe0, 0x63, 0x7f, 0x49, 0xfc, 0xc4, 0x4c, 0xc9, 0x75, 0xab, 0xb4, 0x78, 0xfb, 0xd9, 0x92, + 0x2c, 0x15, 0xe9, 0x46, 0xe6, 0x81, 0xff, 0x6a, 0xa6, 0x4a, 0xc7, 0x27, 0x5d, 0x58, 0xc7, + 0x81, 0x1c, 0x3d, 0x87, 0xc4, 0xe4, 0x8d, 0xc9, 0x7e, 0x35, 0xca, 0x68, 0x78, 0x02, 0x18, + 0xe2, 0x56, 0xf8, 0xbd, 0x7d, 0x9c, 0x16, 0x77, 0xbf, 0xf6, 0xd7, 0x5f, 0x66, 0x3d, 0x24, + 0x80, 0x2a, 0x7b, 0x43, 0x3f, 0x44, 0x61, 0xd6, 0x86, 0xe1, 0xa0, 0xfd, 0x3d, 0x21, 0x4b, + 0x81, 0xb1, 0x39, 0x8f, 0x8f, 0x79, 0xd0, 0x62, 0xc4, 0xe9, 0x23, 0x81, 0x74, 0x1c, 0x3f, + 0x96, 0xf3, 0xe8, 0x1f, 0x45, 0x5c, 0x96, 0xd0, 0x5a, 0x62, 0x39, 0x85, 0xe3, 0x9c, 0x1d, + 0x16, 0x36, 0x19, 0x28, 0x42, 0x42, 0x86, 0x48, 0x3b, 0x40, 0xcc, 0x9b, 0x12, 0x49, 0x03, + 0x2d, 0xad, 0x9b, 0xf9, 0x2a, 0x56, 0x3b, 0xcd, 0x97, 0x8c, 0x32, 0x9e, 0xde, 0x5e, 0xb5, + 0xc7, 0x93, 0x3f, 0x93, 0x7b, 0x6f, 0x2b, 0x73, 0x50, 0x7c, 0x8e, 0xd0, 0xa2, 0xd4, 0xca, + 0x97, 0x22, 0x81, 0xed, 0x79, 0xbf, 0xe3, 0x67, 0xb4, 0x74, 0xb6, 0xfc, 0x89, 0xa2, 0x9f, + 0x20, 0xc9, 0x13, 0xa7, 0xe4, 0x22, 0x87, 0x07, 0x4a, 0x18, 0x5e, 0xa8, 0x3f, 0xca, 0x9d, + 0x0d, 0xb7, 0x96, 0xcc, 0xe2, 0xcc, 0xa0, 0x7f, 0x3c, 0xd3, 0x79, 0xeb, 0xa7, 0xef, 0xda, + 0xbf, 0x86, 0xa5, 0x94, 0xe6, 0x74, 0x3b, 0x0f, 0x30, 0xd3, 0x31, 0x5d, 0xae, 0xdd, 0x2a, + 0xfe, 0x28, 0x94, 0x22, 0xcc, 0x0a, 0x5b, 0x73, 0xc3, 0xe8, 0x37, 0xdc, 0x2e, 0xfb, 0x59, + 0x75, 0xe4, 0xfa, 0x81, 0x83, 0xfb, 0xe6, 0x8b, 0x56, 0x88, 0xbd, 0x82, 0x74, 0x72, 0xc4, + 0x12, 0x48, 0xba, 0xcd, 0xe9, 0x76, 0xd8, 0xf1, 0x67, 0x00, 0xb4, 0xf6, 0xc9, 0xd6, 0xc8, + 0x3a, 0xfc, 0x13, 0x4e, 0x37, 0x66, 0xb7, 0xaf, 0xdd, 0x85, 0xbe, 0x2e, 0x37, 0x3f, 0x98, + 0xa7, 0xef, 0x0d, 0x2a, 0xe1, 0x9e, 0x98, 0xbf, 0xab, 0x76, 0xf3, 0x36, 0x28, 0x88, 0xf3, + 0xe8, 0x19, 0x17, 0xb2, 0x22, 0x36, 0xc6, 0xea, 0xe7, 0xc7, 0x9e, 0xd9, 0x48, 0x94, 0x10, + 0x90, 0x3b, 0xfb, 0xac, 0xf7, 0x7b, 0xc1, 0xf0, 0xde, 0x11, 0x69, 0x2c, 0xae, 0x02, 0x89, + 0xc7, 0x86, 0xea, 0x3e, 0xb0, 0x8f, 0x7f, 0xc6, 0x52, 0x14, 0x6d, 0x25, 0x29, 0xd0, 0x21, + 0x78, 0x01, 0xe2, 0xda, 0xb9, 0xd6, 0x7c, 0x13, 0xcd, 0xba, 0xdd, 0x18, 0x9f, 0xa3, 0x02, + 0xfb, 0xd4, 0x02, 0xc4, 0xbe, 0xfe, 0x58, 0x23, 0xe7, 0x0a, 0x80, 0x2d, 0xd9, 0xc7, 0x12, + 0x39, 0x6c, 0x20, 0x02, 0x8f, 0x4f, 0x7c, 0x94, 0xa4, 0x94, 0x09, 0xb1, 0x69, 0xfa, 0x46, + 0xa7, 0x56, 0x9f, 0xe2, 0x89, 0xd7, 0x18, 0x9a, 0xdb, 0x3e, 0x5e, 0x9d, 0x9d, 0xc6, 0x39, + 0x03, 0xae, 0xd8, 0x28, 0xec, 0xc3, 0xec, 0x01, 0x44, 0xb5, 0x95, 0x92, 0xa6, 0xa8, 0x8c, + 0x58, 0x95, 0x77, 0xb9, 0x76, 0xb7, 0xc7, 0x81, 0xb3, 0xb4, 0x3e, 0xba, 0x30, 0x41, 0x30, + 0xbf, 0x38, 0x97, 0x17, 0x84, 0xc7, 0xca, 0xf8, 0xe5, 0x99, 0x4d, 0x2a, 0xe5, 0x9e, 0xed, + 0xe5, 0xba, 0x22, 0x0d, 0x7c, 0x43, 0x37, 0x8b, 0x49, 0x2e, 0x69, 0xc0, 0xd7, 0xb0, 0x64, + 0x45, 0xa4, 0x91, 0x74, 0xb6, 0xaa, 0x27, 0xd0, 0x8d, 0xc1, 0x86, 0xb7, 0xbb, 0x5e, 0xc6, + 0xb6, 0xb6, 0xe3, 0xb9, 0x41, 0x85, 0xd5, 0xd1, 0x0a, 0x07, 0x88, 0x7b, 0x5f, 0x66, 0xf9, + 0x99, 0x1a, 0xad, 0xc2, 0x39, 0xb5, 0x78, 0x42, 0x6e, 0xbb, 0x61, 0xb8, 0x5a, 0xd4, 0x0b, + 0xd8, 0x0a, 0xef, 0x5c, 0x47, 0x07, 0x96, 0x3c, 0x2d, 0x2d, 0x9b, 0x79, 0xdd, 0x9c, 0xc4, + 0x16, 0xa5, 0x97, 0xaa, 0x83, 0xc4, 0xe7, 0x4c, 0xde, 0xbd, 0xa0, 0x3d, 0x6b, 0x7a, 0x1c, + 0xd0, 0x23, 0x8e, 0x88, 0x16, 0x1d, 0x8b, 0xa5, 0x79, 0x98, 0x73, 0x35, 0x99, 0x8f, 0xe3, + 0x9a, 0x90, 0x94, 0x88, 0x45, 0x5b, 0x11, 0x93, 0x7e, 0x11, 0xd7, 0x51, 0xf4, 0x25, 0xce, + 0x7c, 0xde, 0xe7, 0x3e, 0x8a, 0x99, 0x04, 0x2f, 0x03, 0xee, 0xc4, 0xb4, 0xc0, 0x03, 0x29, + 0xda, 0x7d, 0xd9, 0x0b, 0x75, 0xac, 0x89, 0x18, 0x92, 0x42, 0x05, 0xcb, 0x98, 0x34, 0x6c, + 0x5a, 0xb5, 0x40, 0x96, 0xe7, 0xa9, 0x1c, 0x9f, 0x44, 0xc4, 0xb2, 0x1a, 0x88, 0x5d, 0x36, + 0x81, 0x32, 0x21, 0x54, 0x6d, 0xa0, 0x60, 0x9b, 0xe8, 0x57, 0x26, 0x0b, 0xd6, 0x91, 0xdf, + 0xf2, 0x47, 0xd8, 0x67, 0xf2, 0x24, 0xab, 0x98, 0x01, 0x5a, 0xae, 0x15, 0x3e, 0xc3, 0x02, + 0x48, 0xe1, 0x5b, 0x5c, 0x0b, 0x2a, 0x07, 0x31, 0x49, 0x6c, 0xf0, 0x51, 0x8d, 0x9c, 0x63, + 0x20, 0x2f, 0x93, 0xd9, 0xf2, 0x02, 0x30, 0x22, 0xd3, 0xfd, 0x3c, 0x83, 0xec, 0x46, 0x5a, + 0xd3, 0x69, 0x5d, 0x0e, 0x0d, 0x1e, 0xa0, 0xfb, 0x4e, 0xaf, 0x9d, 0xd8, 0xf6, 0xf9, 0x29, + 0x19, 0xba, 0x14, 0x61, 0xe2, 0xd6, 0xe8, 0x0f, 0x5d, 0x89, 0xe6, 0xb9, 0xb6, 0xd5, 0x24, + 0x1b, 0xff, 0xe1, 0xd9, 0x16, 0x04, 0xc0, 0x2e, 0x13, 0x59, 0x2e, 0xf1, 0x0a, 0x4b, 0x87, + 0x61, 0x2f, 0x82, 0xce, 0x32, 0xb5, 0x05, 0x50, 0xf0, 0xc4, 0x6e, 0xb4, 0xcd, 0x6d, 0x08, + 0x11, 0x52, 0xb2, 0x12, 0x3b, 0x0a, 0xe6, 0x17, 0xe7, 0x4a, 0x6f, 0x31, 0xf8, 0x72, 0x1e, + 0x8f, 0xcd, 0xde, 0xe4, 0x9e, 0x4c, 0x92, 0x69, 0x51, 0x7f, 0xe5, 0x5d, 0x7e, 0x36, 0x44, + 0x07, 0xb9, 0xfe, 0xc4, 0xfb, 0x22, 0x71, 0x15, 0x85, 0xc5, 0x35, 0xbd, 0x6a, 0x3a, 0x65, + 0x66, 0x34, 0xcf, 0x03, 0x4e, 0x30, 0xd4, 0xbe, 0xd6, 0xe1, 0x4c, 0x56, 0xae, 0x98, 0x64, + 0x6a, 0x3f, 0xc4, 0x2b, 0xc4, 0x90, 0x6e, 0xb0, 0x2c, 0xc8, 0x0a, 0xfd, 0xc9, 0xc5, 0xcd, + 0x82, 0x4c, 0xa2, 0x27, 0x72, 0x56, 0x7d, 0x8a, 0xec, 0x88, 0xc3, 0xb4, 0xfd, 0xc9, 0x1d, + 0x34, 0x13, 0x3e, 0x8b, 0xb2, 0xa2, 0x78, 0x7c, 0x4f, 0xdd, 0xb3, 0xe5, 0x06, 0x5f, 0xab, + 0x30, 0x6c, 0xaf, 0x68, 0x6f, 0x26, 0x84, 0x63, 0x5a, 0xab, 0x39, 0x23, 0x2c, 0x71, 0xd9, + 0x21, 0x13, 0x58, 0xeb, 0x24, 0x91, 0xae, 0x39, 0xd0, 0xc5, 0x46, 0x4e, 0xfc, 0x0a, 0xe9, + 0x7b, 0x16, 0x68, 0x21, 0x95, 0x6d, 0x3c, 0x3e, 0x70, 0xac, 0xc7, 0x87, 0x1b, 0x3d, 0x3c, + 0x7a, 0x00, 0xe5, 0x4e, 0x09, 0x74, 0x23, 0x6f, 0xc1, 0x24, 0x3c, 0xaa, 0x57, 0xe0, 0x4d, + 0x1d, 0xdc, 0x3c, 0x42, 0xd6, 0x7e, 0x23, 0x60, 0x78, 0x30, 0xaf, 0xf5, 0x54, 0x0a, 0x80, + 0x6c, 0x6a, 0xbc, 0x26, 0x21, 0x03, 0x5f, 0x7e, 0x42, 0x80, 0xc7, 0xcd, 0x0e, 0xaf, 0x70, + 0xdb, 0x3e, 0x88, 0xd8, 0x4d, 0xa0, 0x95, 0xe0, 0xc1, 0xa4, 0xd0, 0xd6, 0x27, 0x28, 0xc2, + 0xf8, 0xa9, 0x39, 0xac, 0x27, 0x4f, 0xcd, 0xdc, 0x14, 0x42, 0xb9, 0x99, 0x3b, 0xd8, 0xb7, + 0xf1, 0xa9, 0x65, 0xb3, 0x1a, 0xf2, 0x06, 0x37, 0xc7, 0x89, 0xd9, 0x3a, 0xa5, 0xe0, 0x9f, + 0xa6, 0xee, 0xb4, 0xb5, 0x53, 0x93, 0xf6, 0x8c, 0xd9, 0xbc, 0x1a, 0x8c, 0x67, 0xf6, 0xd4, + 0x84, 0xb9, 0xc2, 0x13, 0x4a, 0x25, 0x47, 0x8e, 0x1f, 0xd2, 0x8e, 0x09, 0x60, 0xff, 0xcf, + 0x8e, 0x36, 0x49, 0x2e, 0x4b, 0x12, 0xf0, 0xc7, 0x87, 0xfb, 0x16, 0xe8, 0x0d, 0x7d, 0x0e, + 0x92, 0xab, 0x94, 0xa3, 0x4e, 0x53, 0xc1, 0xb1, 0xc0, 0xb6, 0x3d, 0xb5, 0x57, 0xe5, 0x4c, + 0x8e, 0x0c, 0x91, 0x90, 0x73, 0xff, 0x23, 0x66, 0xc8, 0x3a, 0x4c, 0xa9, 0xb0, 0x7b, 0x63, + 0x91, 0x72, 0xdc, 0x6d, 0xf0, 0xb6, 0x60, 0x2b, 0x3e, 0x89, 0x77, 0xec, 0x3b, 0xec, 0xf6, + 0xb7, 0x16, 0xc5, 0x5f, 0xcd, 0xba, 0xea, 0x99, 0x34, 0x94, 0xe5, 0x0b, 0x49, 0xa9, 0xdc, + 0x8e, 0x7c, 0x09, 0x11, 0x89, 0x42, 0x43, 0x2e, 0xa3, 0xc5, 0xa0, 0x36, 0xd4, 0x26, 0x79, + 0x28, 0xf2, 0x39, 0x30, 0x72, 0xdc, 0x37, 0x34, 0xdd, 0x84, 0x1e, 0x0c, 0x37, 0xcb, 0x2d, + 0x50, 0xfe, 0x2f, 0x75, 0xc5, 0xdc, 0x77, 0xff, 0x9e, 0x15, 0x40, 0xa5, 0x2b, 0x13, 0x69, + 0x67, 0x86, 0x23, 0x12, 0xde, 0x74, 0xaf, 0x70, 0x71, 0xd4, 0xf1, 0x7d, 0xe6, 0x77, 0x75, + 0xad, 0xf8, 0x7f, 0x1e, 0x54, 0x01, 0x61, 0xa4, 0xea, 0xef, 0x19, 0x1a, 0x93, 0xae, 0xf5, + 0xda, 0xa5, 0xff, 0x7d, 0x42, 0xe3, 0x6f, 0xcb, 0x31, 0xdd, 0x1e, 0xdd, 0x73, 0xba, 0x82, + 0x9b, 0x32, 0xa6, 0xd0, 0xee, 0x48, 0x87, 0x8b, 0xd6, 0xff, 0x3e, 0xf4, 0x72, 0xf4, 0x8e, + 0x9e, 0x8b, 0xc1, 0xf4, 0x79, 0xc3, 0x4f, 0x3d, 0x55, 0x09, 0x28, 0x8f, 0x31, 0x81, 0xa4, + 0x9a, 0x8f, 0x3d, 0x77, 0x71, 0xc5, 0xcd, 0x07, 0x65, 0x33, 0x92, 0x4d, 0xc6, 0x7b, 0x96, + 0xda, 0x72, 0x1e, 0xc8, 0xa1, 0x9a, 0x85, 0xf9, 0x03, 0xc2, 0xa2, 0xeb, 0xa2, 0x1c, 0x01, + 0x46, 0x52, 0x6d, 0xff, 0x8a, 0x8b, 0xe7, 0x78, 0x31, 0xf5, 0x58, 0xbe, 0x21, 0x4c, 0x43, + 0xef, 0xa2, 0x9e, 0xd6, 0xe9, 0xbe, 0x6a, 0x2d, 0x8e, 0x71, 0x2a, 0x74, 0x5b, 0xdc, 0xd0, + 0xf9, 0xbc, 0xe7, 0x0f, 0x99, 0x7d, 0xa5, 0x92, 0x8c, 0xee, 0x67, 0x75, 0x16, 0x41, 0x68, + 0xbb, 0x34, 0x3d, 0x26, 0x13, 0x82, 0x1b, 0x48, 0x14, 0xa1, 0x19, 0x8d, 0xf3, 0x2c, 0xda, + 0xb2, 0xda, 0x48, 0xc0, 0x18, 0x8d, 0xfe, 0xea, 0xce, 0xf9, 0x16, 0x47, 0x25, 0x29, 0x50, + 0x3d, 0x8a, 0x63, 0xc4, 0xb2, 0x09, 0x21, 0x33, 0xc3, 0x17, 0x70, 0xd7, 0x9a, 0xc9, 0x22, + 0x97, 0x64, 0x17, 0xba, 0x6a, 0x2d, 0x92, 0xb4, 0x10, 0x8c, 0xa7, 0xae, 0x49, 0x6e, 0x03, + 0x9a, 0x7e, 0xf3, 0x8d, 0xeb, 0x19, 0xd2, 0x2e, 0x11, 0x16, 0xe9, 0x2e, 0x9c, 0xdd, 0x0a, + 0x37, 0x1b, 0x27, 0x22, 0x6e, 0x6d, 0xcf, 0xb1, 0x4e, 0xf5, 0x85, 0x5a, 0xda, 0xf2, 0x94, + 0x9d, 0x1e, 0x76, 0x4c, 0x6f, 0x83, 0xbd, 0x7e, 0x42, 0x59, 0xdf, 0xcf, 0x4d, 0x18, 0x31, + 0xe2, 0xd9, 0xb8, 0x01, 0x45, 0x12, 0x8e, 0xbb, 0xcb, 0x02, 0x59, 0xe3, 0xca, 0xe8, 0xac, + 0x97, 0x32, 0x04, 0xfb, 0x2b, 0xbd, 0xc5, 0xe9, 0xd9, 0x67, 0xc6, 0xf7, 0xe5, 0xe4, 0xc6, + 0xf0, 0xc1, 0x39, 0xb4, 0xa0, 0x7a, 0xa6, 0xb6, 0x34, 0x30, 0xff, 0x51, 0x1c, 0x22, 0x3c, + 0x64, 0x93, 0x3f, 0x5f, 0xd8, 0xea, 0x36, 0x7d, 0x48, 0x29, 0xc6, 0x39, 0x38, 0xa2, 0xee, + 0x54, 0xb3, 0x46, 0x93, 0x83, 0x82, 0x4b, 0xab, 0x48, 0x07, 0xae, 0x29, 0x35, 0xf1, 0xdf, 0xd8, 0xa2, 0x4a, 0xed, 0x7c, 0x70, 0xdf, 0x7d, 0xe3, 0xa6, 0x68, 0xeb, 0x7a, 0x49, 0xb1, - 0x31, 0x98, 0x80, 0xdd, 0xe2, 0xbb, 0xd9, 0x03, 0x1a, 0xe5, 0xd8, 0x2f, 0xfd, 0xe0, 0x1c, - 0x74, 0x2f, 0x81, 0x6f, 0xd3, 0xd4, 0x57, 0x7b, 0x25, 0xb0, 0x59, 0x6a, 0x11, 0xa9, 0x8f, - 0xa8, 0x0e, 0xd8, 0xa5, 0xd6, 0x51, 0x45, 0x69, 0xa2, 0x05, 0x97, 0x8f, 0x6d, 0x1e, 0x62, - 0x53, 0x0b, 0x22, 0xac, 0xe4, 0x55, 0x76, 0xc2, 0xd3, 0xc4, 0xcb, 0x48, 0xa1, 0x45, 0x57, - 0xdb, 0xd0, 0xdb, 0x40, 0x46, 0x60, 0xad, 0x16, 0x8d, 0x22, 0xbe, 0x24, 0x58, 0x16, 0x22, - 0x4b, 0xb5, 0x7b, 0x3a, 0x32, 0x5c, 0x24, 0xb0, 0x6c, 0x70, 0x76, 0xf8, 0xa4, 0x76, 0x1f, - 0xba, 0xc1, 0x94, 0xe9, 0x6a, 0x5d, 0xce, 0xc1, 0x4c, 0x19, 0xf4, 0x32, 0xbc, 0x02, 0x86, - 0xbc, 0xa0, 0x36, 0x49, 0x81, 0xa4, 0x8a, 0x72, 0xcb, 0xff, 0xd7, 0x18, 0x43, 0x06, 0xba, - 0x01, 0x03, 0xad, 0x72, 0xa0, 0x27, 0xb0, 0x18, 0x13, 0x8e, 0xaa, 0x81, 0x1f, 0x88, 0xc8, - 0x49, 0x4f, 0x4a, 0x9a, 0x5e, 0x3c, 0xc3, 0xa4, 0x1b, 0x07, 0x3d, 0x97, 0xda, 0xa4, 0xdb, - 0x8e, 0xd3, 0xb3, 0xdb, 0x93, 0x43, 0xa4, 0x8c, 0xfa, 0xec, 0x73, 0x54, 0xcc, 0x4e, 0xf3, - 0x9b, 0x7c, 0x9c, 0xfd, 0x27, 0x34, 0x15, 0xc0, 0x5a, 0x1f, 0xbd, 0xd1, 0x9f, 0xe1, 0xa0, - 0x58, 0xa3, 0xbb, 0x6b, 0x67, 0x1f, 0xec, 0xe0, 0x30, 0x26, 0xef, 0xc5, 0xbc, 0x71, 0xe9, - 0x1d, 0x8f, 0x93, 0x8b, 0x6c, 0xa4, 0x6c, 0x8f, 0x6c, 0x95, 0x80, 0xa1, 0xb0, 0x2c, 0x99, - 0x71, 0xad, 0xd1, 0x99, 0x5d, 0x43, 0xba, 0x6f, 0x09, 0xe7, 0xf2, 0x0b, 0x0f, 0x54, 0x35, - 0x5c, 0xd0, 0xc3, 0x9b, 0xe7, 0xd2, 0x33, 0xea, 0x9c, 0x42, 0x96, 0xa8, 0xca, 0x0c, 0x1a, - 0x12, 0x45, 0x7d, 0xb2, 0xd2, 0xd1, 0x16, 0x4c, 0x17, 0xe7, 0x3f, 0xc9, 0xb3, 0xef, 0x73, - 0x5c, 0x5f, 0xbe, 0x4f, 0xd6, 0xd3, 0x6b, 0x99, 0x94, 0xb5, 0x45, 0xaf, 0x62, 0x25, 0x52, - 0x84, 0x4c, 0x55, 0xbc, 0xaf, 0x70, 0xaf, 0x05, 0x92, 0x0a, 0x65, 0x32, 0x32, 0x06, 0xda, - 0x4b, 0x8a, 0x26, 0x56, 0x03, 0x5b, 0xb8, 0x86, 0xc2, 0x67, 0x90, 0x3b, 0xaf, 0x9c, 0xf5, - 0x34, 0x09, 0xa7, 0x1a, 0x8a, 0xa6, 0xc4, 0x84, 0x32, 0xc0, 0x21, 0x3b, 0xed, 0xef, 0x24, - 0x7d, 0xb0, 0x20, 0xc0, 0x8f, 0xa6, 0x26, 0x7b, 0xa4, 0x83, 0x6a, 0xf3, 0x0f, 0x10, 0x53, - 0x13, 0x3a, 0x56, 0x76, 0xaf, 0xf9, 0x5a, 0xa6, 0x7d, 0xe3, 0x2f, 0xf0, 0x28, 0x75, 0x5b, - 0xac, 0x57, 0x0d, 0x1a, 0xa8, 0x75, 0xac, 0xd9, 0x8f, 0x0e, 0xd7, 0x35, 0xfa, 0x24, 0xef, - 0xa3, 0x52, 0x6f, 0x18, 0x37, 0x43, 0x96, 0xd4, 0xcb, 0x46, 0x65, 0x0c, 0x66, 0x11, 0x9d, - 0xb6, 0xf8, 0xa3, 0xee, 0xbd, 0x6c, 0xa2, 0x0d, 0x16, 0xaa, 0x19, 0x33, 0xd0, 0xfd, 0x5b, - 0x84, 0x9e, 0x51, 0xd9, 0xea, 0x0e, 0xdc, 0x56, 0x35, 0xc4, 0x12, 0xdf, 0x8d, 0x51, 0x83, - 0xec, 0x58, 0x24, 0x04, 0x1d, 0xcc, 0x7c, 0xc5, 0x42, 0x75, 0x93, 0xc9, 0x97, 0xa3, 0x3a, - 0x6e, 0x2e, 0xfd, 0x6f, 0xb7, 0x11, 0x01, 0xd2, 0xaf, 0xfb, 0x84, 0x1e, 0x78, 0x72, 0xe4, - 0x2b, 0xcc, 0x2c, 0xdc, 0xae, 0x31, 0xd9, 0x91, 0xd2, 0x0c, 0xf9, 0x83, 0xbd, 0x88, 0x95, - 0x39, 0x44, 0x85, 0x0f, 0x92, 0xf9, 0xa3, 0x29, 0xae, 0x4f, 0x43, 0x56, 0x9e, 0x71, 0xc2, - 0x0d, 0x71, 0xeb, 0xac, 0xa8, 0x37, 0x80, 0xf3, 0x24, 0x4c, 0xa8, 0x28, 0x5e, 0x73, 0x4f, - 0x12, 0x6f, 0xab, 0xdc, 0xf8, 0xed, 0x4a, 0xc1, 0x06, 0x3f, 0xca, 0x3d, 0x6b, 0xae, 0x27, - 0xcd, 0x38, 0x77, 0x59, 0xe5, 0x15, 0xb7, 0x29, 0x91, 0x59, 0xc0, 0x51, 0x34, 0x90, 0xca, - 0x6b, 0x5f, 0x29, 0x26, 0xf8, 0x1a, 0xa5, 0xe4, 0xb7, 0xd0, 0x16, 0xa5, 0x05, 0x01, 0xc4, - 0x06, 0x0c, 0xc8, 0xdb, 0x96, 0x81, 0xa3, 0x02, 0xca, 0x6c, 0xf8, 0x48, 0xa4, 0xb4, 0xb8, - 0x55, 0x00, 0x9e, 0x13, 0x26, 0x5e, 0x42, 0x2c, 0x45, 0xa3, 0x02, 0x7c, 0x75, 0x6b, 0x1a, - 0x4f, 0xc9, 0x79, 0xb4, 0xbb, 0x28, 0x02, 0xcf, 0x03, 0x2a, 0x4e, 0x02, 0x51, 0x09, 0xc4, - 0xd2, 0x50, 0x23, 0x61, 0x25, 0x89, 0xac, 0x7b, 0xb5, 0x4a, 0x1e, 0x90, 0xd3, 0x8d, 0xd6, - 0x0f, 0x34, 0x7d, 0x7e, 0xb2, 0x93, 0x90, 0xb4, 0x22, 0x3c, 0xb9, 0x12, 0xa8, 0x07, 0x27, - 0xb6, 0x88, 0x29, 0x1e, 0x8a, 0x17, 0x09, 0x0d, 0xcd, 0x04, 0xdc, 0x4e, 0x9a, 0xf0, 0x3e, - 0xa4, 0x12, 0xb0, 0x6d, 0x42, 0x39, 0xf3, 0x00, 0x51, 0x86, 0x50, 0x23, 0x32, 0x90, 0xdf, - 0x9e, 0x07, 0x01, 0x16, 0xae, 0x12, 0x33, 0xd5, 0x95, 0xfc, 0xac, 0x06, 0xcc, 0x88, 0x69, - 0xe2, 0x23, 0xa5, 0x65, 0x5c, 0xa8, 0xb1, 0x7c, 0x1c, 0xb2, 0x64, 0xb4, 0xb2, 0x99, 0x74, - 0x98, 0xa0, 0xfd, 0x20, 0xf2, 0x86, 0x27, 0x08, 0xd1, 0xbf, 0x1f, 0x96, 0xb8, 0x71, 0x42, - 0x36, 0xac, 0x8c, 0xe9, 0xbb, 0x55, 0x8e, 0x22, 0x46, 0x0b, 0xbc, 0x1e, 0xab, 0x12, 0x4d, - 0x73, 0x54, 0x7a, 0x50, 0x55, 0x89, 0x95, 0x39, 0xf2, 0x9f, 0xf2, 0x5f, 0x66, 0xa7, 0x2c, - 0xdc, 0x85, 0x28, 0xee, 0x77, 0xde, 0x67, 0x93, 0xfc, 0xee, 0x62, 0xef, 0x21, 0x18, 0x57, - 0xf4, 0x94, 0x37, 0x2c, 0x55, 0x37, 0x11, 0x47, 0x59, 0x54, 0x07, 0xd3, 0x54, 0x04, 0x61, - 0xc2, 0x00, 0x2d, 0x29, 0xb1, 0x4e, 0x6d, 0x16, 0x4e, 0xcc, 0xe5, 0x0c, 0xf3, 0x9d, 0x2a, - 0x37, 0x0f, 0xb9, 0x45, 0x5a, 0x73, 0xdc, 0x10, 0x72, 0x49, 0x8c, 0x3b, 0xb2, 0xb3, 0x53, - 0x46, 0xda, 0x9b, 0xe1, 0x22, 0x99, 0x23, 0xd3, 0x4a, 0xc3, 0xf9, 0x93, 0x5d, 0x6a, 0xb4, - 0x94, 0x08, 0x1d, 0x38, 0xad, 0x43, 0x7c, 0x51, 0x4d, 0xec, 0x7d, 0x08, 0xd3, 0x7f, 0x53, - 0xb0, 0x29, 0xf4, 0xc6, 0xee, 0xb5, 0xf0, 0x6e, 0x78, 0x60, 0xab, 0x48, 0xbb, 0x8b, 0xba, - 0xe2, 0x77, 0x06, 0x37, 0xa3, 0x1d, 0xd5, 0x7f, 0x87, 0x35, 0xc9, 0xa9, 0xdd, 0x32, 0xe2, - 0x0d, 0x57, 0xd3, 0xab, 0x2e, 0xcc, 0xa9, 0xde, 0x98, 0xa5, 0x9d, 0xdb, 0x9a, 0x7b, 0xf2, - 0x81, 0x7b, 0x0f, 0x73, 0xf6, 0x20, 0x82, 0xe9, 0xfa, 0x8b, 0x90, 0x47, 0xda, 0x39, 0x5c, - 0xdf, 0xa7, 0xd5, 0x77, 0xe8, 0xe8, 0x74, 0xb2, 0x8a, 0xd1, 0xdd, 0xd3, 0x7d, 0x9e, 0x13, - 0x09, 0x69, 0x9a, 0x01, 0x99, 0xb5, 0xa0, 0x54, 0x01, 0x8f, 0xd0, 0x51, 0xa1, 0x75, 0x85, - 0x9a, 0xb2, 0x86, 0x57, 0x52, 0x02, 0xd5, 0x51, 0x8f, 0xc1, 0x6e, 0x72, 0xb1, 0x24, 0x24, - 0x0f, 0x25, 0x64, 0xce, 0xa4, 0x73, 0x32, 0x08, 0x77, 0x11, 0x80, 0x4a, 0xd5, 0xc7, 0x9e, - 0x53, 0x6e, 0xfa, 0xfa, 0x3e, 0xbc, 0x65, 0x67, 0x6a, 0xcc, 0x28, 0xfc, 0xc3, 0x64, 0x04, - 0x63, 0x44, 0xb4, 0x37, 0x07, 0x1d, 0x8b, 0x73, 0x9f, 0xdc, 0x27, 0x22, 0xad, 0x66, 0xa4, - 0xd7, 0x16, 0xd5, 0x45, 0xe0, 0xe7, 0x23, 0x92, 0xcc, 0xb8, 0x7c, 0x48, 0x8f, 0xd1, 0x2a, - 0xd0, 0x1d, 0x41, 0x10, 0x7b, 0x84, 0xd1, 0xd4, 0x02, 0x3d, 0x3c, 0xa9, 0xde, 0xc9, 0x89, - 0x05, 0x85, 0xb4, 0x72, 0x89, 0xd2, 0xfd, 0xac, 0xbb, 0x70, 0xd6, 0xc0, 0xea, 0x3e, 0xb8, - 0x50, 0x72, 0x1e, 0x8f, 0x43, 0xe5, 0x4f, 0x18, 0x4f, 0x53, 0x29, 0xcd, 0x31, 0x8a, 0xd8, - 0x10, 0x0f, 0xf7, 0xd7, 0x65, 0x4a, 0x69, 0x4d, 0xff, 0x05, 0x30, 0x6b, 0x07, 0x3c, 0xae, - 0xab, 0x12, 0x66, 0x35, 0xa7, 0xc9, 0x88, 0x28, 0xc0, 0x5c, 0xd3, 0xec, 0xc5, 0xa3, 0x1f, - 0xe1, 0x4b, 0x1f, 0x20, 0x47, 0x47, 0x15, 0xb2, 0xa4, 0x22, 0xfb, 0x8a, 0xeb, 0x6d, 0xd4, - 0xc2, 0x45, 0x2c, 0x97, 0x40, 0x74, 0x0d, 0x85, 0x98, 0xf1, 0x01, 0xb8, 0xbd, 0xa6, 0x5c, - 0xd7, 0x89, 0xc5, 0x7c, 0x08, 0x18, 0xee, 0xa9, 0x37, 0x94, 0x19, 0x3b, 0x7d, 0xd9, 0x8d, - 0xbe, 0x48, 0xb1, 0x56, 0x44, 0x87, 0xc6, 0xba, 0xa0, 0x08, 0x49, 0xe9, 0x70, 0x48, 0xec, - 0x05, 0xbc, 0xd4, 0x15, 0xf2, 0xb0, 0x18, 0xa5, 0xfa, 0x4a, 0x8b, 0x9c, 0xfd, 0x97, 0x68, - 0xa8, 0xc4, 0xc7, 0x51, 0x52, 0x19, 0x65, 0xc8, 0x73, 0xe5, 0xb9, 0xe3, 0xf4, 0xe9, 0xd0, - 0x21, 0xa0, 0xf2, 0x91, 0x84, 0x8a, 0x75, 0xab, 0x9f, 0x0a, 0x59, 0xf7, 0x9a, 0x8e, 0x7b, - 0x57, 0x75, 0x25, 0xbf, 0xc8, 0xc7, 0x41, 0xd7, 0x59, 0xe8, 0xf0, 0x76, 0xfe, 0x20, 0x00, - 0x19, 0xf7, 0xe2, 0xb8, 0x9e, 0x03, 0x79, 0x74, 0xaf, 0xce, 0x5f, 0x01, 0x9f, 0xd9, 0xeb, - 0xca, 0x0d, 0x81, 0xd5, 0xf3, 0x0e, 0x74, 0xe1, 0xf7, 0x55, 0xc9, 0x38, 0xe2, 0x78, 0x36, - 0x32, 0xb0, 0xca, 0xf9, 0x61, 0xff, 0x57, 0x54, 0xf6, 0x40, 0xce, 0x99, 0xe3, 0x9c, 0xb5, - 0x72, 0xa5, 0x27, 0xd1, 0xe5, 0x14, 0xe8, 0x83, 0xd3, 0xa0, 0x2e, 0x7f, 0x27, 0xcc, 0x01, - 0xc7, 0xf5, 0x0f, 0x39, 0x5c, 0x28, 0x2b, 0xec, 0x37, 0x43, 0x94, 0x79, 0x65, 0xf3, 0xab, - 0x86, 0x85, 0x01, 0xce, 0x9a, 0x66, 0xff, 0xf6, 0xc5, 0x29, 0x85, 0x1b, 0x5c, 0xfb, 0x1c, - 0x3c, 0xda, 0xcd, 0x2b, 0x14, 0xd8, 0xfa, 0x4b, 0x8e, 0xbb, 0x8c, 0x2c, 0x10, 0xda, 0x86, - 0xfd, 0x05, 0xad, 0xe3, 0x9e, 0x8a, 0x34, 0x77, 0x35, 0xa6, 0x78, 0xbb, 0x84, 0xfb, 0xd1, - 0x20, 0xff, 0x80, 0x83, 0xf3, 0x53, 0xda, 0x61, 0x47, 0x46, 0x47, 0x3f, 0x55, 0xca, 0x04, - 0xf1, 0x56, 0x6b, 0x72, 0xac, 0xbe, 0x76, 0xbf, 0xba, 0xae, 0xb7, 0x77, 0x59, 0xd0, 0x1d, - 0x87, 0xc8, 0x90, 0x81, 0x01, 0xa3, 0x02, 0x3c, 0x38, 0x22, 0x1f, 0x0d, 0xdd, 0x2b, 0x81, - 0x63, 0xbe, 0x8d, 0x43, 0x20, 0xbb, 0xba, 0xca, 0xa6, 0x4f, 0x81, 0x9e, 0x53, 0x33, 0xe9, - 0xad, 0xbb, 0x37, 0xd8, 0x0b, 0x00, 0xd5, 0xc7, 0x37, 0x66, 0x94, 0x0a, 0xff, 0xff, 0x85, - 0xc9, 0x65, 0xd8, 0x29, 0x65, 0x5c, 0x8f, 0x83, 0x86, 0xbf, 0x80, 0xe2, 0xb1, 0xf2, 0xd4, - 0xac, 0x6a, 0xc1, 0xcc, 0xa0, 0xd8, 0x87, 0xa4, 0x2e, 0x97, 0x18, 0xce, 0x59, 0x85, 0x61, - 0xba, 0x10, 0x6d, 0x18, 0x0d, 0xcd, 0x80, 0x59, 0x78, 0xc5, 0x19, 0xa3, 0x54, 0xa8, 0x4c, - 0x59, 0x11, 0xf3, 0xb7, 0x65, 0xba, 0xd7, 0x9b, 0x6d, 0x40, 0xcb, 0x09, 0x68, 0xcb, 0x0e, - 0x7d, 0x0f, 0x16, 0x65, 0x57, 0xad, 0x55, 0x7c, 0x00, 0x05, 0x09, 0xb8, 0x39, 0xc7, 0x2e, - 0xb1, 0x02, 0x8c, 0x33, 0x44, 0x93, 0x4a, 0xab, 0xf0, 0x5b, 0x4a, 0xc7, 0x0b, 0xf1, 0x26, - 0x40, 0x25, 0xa6, 0xb1, 0xed, 0x5b, 0xe2, 0x22, 0x56, 0x93, 0xe1, 0x20, 0xaa, 0x1e, 0x01, - 0x65, 0x0a, 0x64, 0xe0, 0xdc, 0x7f, 0xe0, 0x17, 0x71, 0x8c, 0x8d, 0xfa, 0x04, 0xb0, 0xc9, - 0x59, 0x6e, 0xbc, 0x25, 0x34, 0x8a, 0xc4, 0x86, 0x9a, 0x2e, 0x15, 0xf7, 0x44, 0x64, 0x05, - 0xab, 0x89, 0x4b, 0xa5, 0x90, 0xa6, 0xe2, 0x55, 0xf7, 0xde, 0x3d, 0x24, 0xd6, 0x36, 0x94, - 0x47, 0x96, 0xdb, 0x61, 0xab, 0x39, 0x1d, 0xe2, 0x8f, 0xf3, 0xab, 0xea, 0x0a, 0x49, 0x10, - 0x41, 0x28, 0x68, 0x8e, 0x1d, 0x56, 0x75, 0x3b, 0xbe, 0x62, 0xa8, 0xe1, 0xdc, 0x1b, 0xc5, - 0x3a, 0x63, 0xa2, 0xea, 0x3e, 0xa0, 0xfe, 0x3a, 0xa8, 0x3b, 0x61, 0x4e, 0x9f, 0x4e, 0x9b, - 0xf1, 0xb3, 0x03, 0x7f, 0x0f, 0x90, 0xad, 0xed, 0xa7, 0xe3, 0xda, 0x64, 0xe8, 0x42, 0xa2, - 0xc0, 0x4a, 0x0e, 0x50, 0xa1, 0xd1, 0x76, 0x44, 0xd9, 0x6d, 0x24, 0x3e, 0xca, 0xa2, 0x40, - 0xb6, 0xd4, 0xbe, 0x0d, 0xb4, 0x0d, 0x07, 0x11, 0xa7, 0x77, 0x2c, 0x96, 0x45, 0xbe, 0x5d, - 0x29, 0x30, 0xb3, 0x43, 0xee, 0x60, 0x02, 0xc8, 0xe8, 0x59, 0x2f, 0x15, 0xa4, 0x05, 0x35, - 0x4b, 0x07, 0x0d, 0x6c, 0xa3, 0xa3, 0x8a, 0x76, 0x97, 0x9b, 0xd2, 0xfa, 0x9b, 0x73, 0x73, - 0x0b, 0xdd, 0x37, 0x9e, 0xcd, 0x86, 0xe1, 0xbc, 0x31, 0x4a, 0xda, 0x63, 0xdf, 0x86, 0x17, - 0x6a, 0xae, 0x61, 0xe4, 0x68, 0x5c, 0x07, 0x12, 0x99, 0xac, 0x45, 0x97, 0xa4, 0xd9, 0x14, - 0x85, 0x5d, 0x98, 0xb6, 0x95, 0x3c, 0xf6, 0x1c, 0xee, 0xdf, 0xee, 0x61, 0x19, 0xb8, 0xb1, - 0x1b, 0x28, 0x25, 0x23, 0xb1, 0x17, 0x3a, 0x1b, 0xb7, 0x80, 0x75, 0x68, 0xf7, 0xb3, 0xd6, - 0x91, 0xc3, 0x3f, 0x28, 0x7a, 0x3b, 0xda, 0xdb, 0x55, 0xc4, 0x93, 0xdb, 0x4d, 0x8d, 0x73, - 0x31, 0x53, 0xd8, 0x5c, 0xd1, 0xb3, 0x13, 0x3b, 0x89, 0x1b, 0x99, 0x5e, 0xe4, 0x4e, 0x99, - 0x93, 0xf5, 0xc6, 0x1b, 0x83, 0x2b, 0x9a, 0x49, 0xf7, 0x16, 0xcb, 0x5d, 0xb3, 0x16, 0xc7, - 0xa6, 0x89, 0x18, 0x6d, 0x2b, 0x18, 0x43, 0xc4, 0x63, 0x7b, 0xd0, 0x6f, 0x8a, 0xa9, 0x9e, - 0xb0, 0x1b, 0x2a, 0x64, 0x83, 0xc9, 0x79, 0x6a, 0xd4, 0xae, 0xab, 0x3b, 0xe6, 0x75, 0x73, - 0x09, 0x95, 0x80, 0x76, 0x41, 0x0d, 0x60, 0x74, 0xad, 0xc6, 0x81, 0xff, 0x3c, 0xf0, 0x8a, - 0x5e, 0x8a, 0x41, 0xab, 0x24, 0x6c, 0x36, 0xfa, 0x11, 0xe7, 0x58, 0x95, 0x75, 0x1d, 0x3f, - 0x1e, 0xc1, 0xa5, 0x0c, 0xce, 0xa7, 0x3f, 0xde, 0x45, 0x8a, 0x52, 0x92, 0x85, 0xca, 0xe9, - 0x23, 0x92, 0x28, 0x72, 0x5c, 0x05, 0x0f, 0x01, 0xc2, 0x69, 0x82, 0xb7, 0xe7, 0x01, 0xbc, - 0x19, 0xb6, 0xd6, 0x25, 0x02, 0xed, 0x17, 0x75, 0x73, 0x3b, 0x7f, 0xe5, 0x9a, 0xbd, 0x62, - 0x3e, 0xb2, 0x4b, 0x2e, 0xb9, 0x97, 0xf9, 0xe1, 0x0d, 0xc2, 0xee, 0x51, 0x30, 0xbe, 0xf7, - 0x7a, 0x34, 0x1f, 0x93, 0x26, 0xf6, 0x7e, 0x97, 0x60, 0xb8, 0x60, 0x96, 0x5d, 0x7d, 0x0c, - 0x43, 0xb8, 0x71, 0x3c, 0xc8, 0xd5, 0x88, 0xe4, 0x2c, 0xc4, 0x21, 0x81, 0xc2, 0xe5, 0x09, - 0xfd, 0x4a, 0x80, 0x1f, 0x69, 0xee, 0x39, 0x6f, 0x91, 0x8e, 0x8e, 0xc2, 0x03, 0xf0, 0x3a, - 0x7a, 0xc3, 0x35, 0xd5, 0xeb, 0x9e, 0x77, 0x26, 0xdc, 0x18, 0xa4, 0x5e, 0x2a, 0xe9, 0xf7, - 0xdf, 0x60, 0xd0, 0xf1, 0x55, 0x11, 0xc4, 0x81, 0xba, 0x90, 0xd9, 0xf9, 0x3b, 0x62, 0xc7, - 0x03, 0x42, 0x6d, 0xab, 0xe5, 0xd7, 0x13, 0x77, 0xcd, 0x3f, 0x64, 0x57, 0x0f, 0xa8, 0x20, - 0xb4, 0x91, 0x93, 0xea, 0x81, 0x1a, 0x87, 0xc1, 0x4b, 0x63, 0x45, 0x60, 0x95, 0xa9, 0x82, - 0xf4, 0xa9, 0x02, 0xc2, 0x19, 0xa1, 0x6f, 0x58, 0x6c, 0x91, 0x69, 0xad, 0x14, 0xa2, 0x33, - 0x35, 0x2a, 0xa6, 0x13, 0x53, 0x76, 0x28, 0xf5, 0x7e, 0xf9, 0x86, 0x55, 0x67, 0x7c, 0xab, - 0x25, 0x11, 0xe5, 0x1f, 0x57, 0x4c, 0x85, 0xb9, 0x8e, 0x7f, 0x48, 0xc5, 0xdf, 0xb1, 0x75, - 0x82, 0xeb, 0xf6, 0x17, 0x10, 0x02, 0x3d, 0x58, 0xf2, 0xf5, 0x13, 0x65, 0xab, 0x05, 0x52, - 0x04, 0xb3, 0x95, 0xba, 0x22, 0xc9, 0x47, 0x21, 0xfb, 0xe4, 0xa2, 0xd3, 0x6f, 0x16, 0xc5, - 0x56, 0x0b, 0x01, 0x3b, 0x24, 0x38, 0x3c, 0x55, 0xa8, 0x46, 0x2e, 0x8c, 0x17, 0xb6, 0x74, - 0x16, 0x58, 0xec, 0xfa, 0x2b, 0x11, 0x1d, 0x97, 0x8d, 0xe5, 0xd3, 0x95, 0x31, 0xea, 0x93, - 0x48, 0xd8, 0x23, 0x8b, 0x8c, 0x91, 0xa5, 0x05, 0xd8, 0xbe, 0x0b, 0x2e, 0x98, 0x79, 0x7b, - 0x67, 0xac, 0x3a, 0xac, 0x00, 0xf4, 0x7d, 0x5e, 0x79, 0x7e, 0xa3, 0x93, 0xff, 0x8e, 0x93, - 0x39, 0x10, 0x0c, 0x60, 0xc4, 0xd8, 0x8c, 0x63, 0x14, 0x19, 0x0d, 0xb8, 0x45, 0x9d, 0x6a, - 0x3f, 0xda, 0x77, 0x8f, 0xd4, 0x90, 0xab, 0xaf, 0x12, 0xe4, 0xaf, 0x82, 0x69, 0x91, 0x2a, - 0x07, 0xa5, 0xa7, 0x6b, 0xaa, 0xee, 0x16, 0xf0, 0x06, 0x6e, 0xb5, 0x2e, 0xa8, 0xd2, 0x71, - 0x18, 0xb6, 0x64, 0x18, 0x54, 0x25, 0x61, 0xb3, 0x03, 0x75, 0x50, 0xa1, 0xe4, 0x5c, 0x45, - 0x17, 0xa0, 0xd4, 0xdd, 0xdd, 0xc7, 0x45, 0x07, 0x9f, 0xbc, 0x3c, 0xcc, 0x2e, 0x37, 0x0e, - 0xf0, 0x22, 0x8d, 0x78, 0x33, 0x80, 0xf6, 0x58, 0x62, 0x8c, 0x86, 0x38, 0x56, 0x2d, 0x3a, - 0x08, 0x8e, 0x16, 0x2d, 0xb4, 0xb0, 0x79, 0x4a, 0x3f, 0x6d, 0xfc, 0x06, 0x79, 0x71, 0xcf, - 0x0e, 0x56, 0x62, 0x57, 0xfe, 0x5e, 0x7c, 0x01, 0xf3, 0x4b, 0xc9, 0x09, 0x25, 0x32, 0x90, - 0x48, 0xa6, 0x40, 0x21, 0xb9, 0x9e, 0x1e, 0x09, 0x11, 0xbb, 0x4c, 0x00, 0xab, 0x58, 0xbc, - 0xd6, 0xb4, 0x34, 0xaa, 0xab, 0x7f, 0x74, 0x00, 0x81, 0xcc, 0x21, 0x01, 0xe8, 0x63, 0xf9, - 0x89, 0xe4, 0xd3, 0x83, 0x1d, 0xe2, 0x76, 0xdf, 0xb3, 0xb6, 0xb8, 0x8d, 0x88, 0x0c, 0x24, - 0x05, 0xb6, 0x73, 0x65, 0x2a, 0xfe, 0x49, 0xc9, 0x95, 0xfa, 0x34, 0x46, 0xda, 0x29, 0xb3, - 0x54, 0x7f, 0xe7, 0xf6, 0x41, 0x0f, 0xc4, 0xee, 0xb2, 0xc7, 0xa5, 0xfe, 0xdb, 0x66, 0x0a, - 0x31, 0x8c, 0x1b, 0xbd, 0xe4, 0xa5, 0x20, 0x38, 0xf7, 0x6e, 0x70, 0x8a, 0x24, 0x29, 0xb5, - 0x82, 0x7c, 0x8a, 0xd0, 0x74, 0xef, 0x71, 0x6f, 0x94, 0x68, 0x30, 0x14, 0xbb, 0x4d, 0xfc, - 0xcb, 0xbc, 0xc5, 0x14, 0x8c, 0xd3, 0xc2, 0x74, 0x3f, 0x4b, 0x00, 0x0f, 0x7d, 0x80, 0x75, - 0x21, 0xf2, 0x5b, 0xa6, 0xa8, 0x3d, 0xda, 0x4c, 0xa4, 0xac, 0x7e, 0x49, 0x29, 0x2d, 0xc3, - 0x71, 0x5c, 0x69, 0x8f, 0x42, 0x5f, 0x12, 0xd4, 0x2b, 0xa1, 0x0a, 0x2e, 0x2f, 0x4a, 0xd8, - 0xdd, 0x9b, 0xbc, 0x6f, 0x73, 0x95, 0xbb, 0xfd, 0x28, 0x2b, 0x79, 0x8e, 0x64, 0x3b, 0x7b, - 0x6f, 0x10, 0xad, 0xed, 0x7c, 0x14, 0xde, 0x6a, 0x9c, 0x75, 0x2c, 0x09, 0x18, 0xf7, 0xcf, - 0x72, 0xe8, 0xda, 0x82, 0xf1, 0xbd, 0xae, 0xdd, 0x25, 0xe5, 0xc2, 0xff, 0xd6, 0xe6, 0xfa, - 0x26, 0x03, 0xa1, 0x29, 0x0d, 0xbd, 0xce, 0x58, 0x62, 0xf7, 0x4d, 0x78, 0xd4, 0x9b, 0x36, - 0x79, 0x7b, 0xa7, 0x3f, 0x6b, 0xc5, 0x80, 0x06, 0x32, 0xbf, 0xc7, 0x9f, 0x1a, 0x74, 0x0b, - 0x2e, 0x7d, 0xe7, 0x16, 0xa4, 0x91, 0x41, 0x0b, 0x55, 0xc3, 0x4c, 0x48, 0x91, 0x00, 0x4a, - 0xec, 0x13, 0x4e, 0xaf, 0x55, 0x52, 0x64, 0x25, 0x52, 0xa3, 0x9d, 0xe1, 0xa9, 0x62, 0xcb, - 0x54, 0x88, 0x2b, 0xd0, 0x7d, 0x03, 0x77, 0x12, 0xf7, 0x25, 0xbd, 0x2f, 0x0d, 0x4d, 0xc7, - 0x20, 0x0d, 0x9f, 0x03, 0x49, 0xfd, 0x0a, 0x86, 0x40, 0x06, 0xd8, 0x26, 0x04, 0x21, 0x14, - 0xbb, 0xae, 0xe4, 0xb2, 0x64, 0x09, 0xc7, 0xa2, 0xa2, 0xd7, 0x72, 0x06, 0x7e, 0x30, 0xd2, - 0x4a, 0x1e, 0xe3, 0xbb, 0x55, 0x39, 0x4c, 0x8a, 0x8d, 0xae, 0x11, 0xb4, 0xb6, 0x58, 0x5f, - 0x15, 0x05, 0xe0, 0xdc, 0x6e, 0x02, 0x27, 0x02, 0x0e, 0x79, 0x40, 0xa2, 0x77, 0xfa, 0x65, - 0x88, 0x40, 0x18, 0x25, 0xfc, 0xb6, 0xbc, 0x05, 0x6e, 0x9e, 0x2a, 0xdf, 0x5c, 0xb8, 0x60, - 0xca, 0xae, 0x4d, 0xd4, 0x9a, 0x62, 0x66, 0x30, 0xc7, 0xb5, 0xb8, 0x36, 0xbf, 0x08, 0x23, - 0xc0, 0x97, 0x80, 0xc3, 0xd4, 0x16, 0x33, 0x64, 0xf0, 0x19, 0xf7, 0x2a, 0x44, 0xe0, 0x4b, - 0xfc, 0x55, 0x37, 0xd7, 0x38, 0x8a, 0xbf, 0x53, 0x2f, 0x13, 0x2c, 0xaf, 0x8a, 0x2a, 0x4a, - 0xad, 0x46, 0xea, 0x37, 0xd5, 0x60, 0x74, 0xfd, 0xa2, 0x05, 0xa5, 0x2f, 0x9a, 0xb3, 0xac, - 0xeb, 0xa2, 0x44, 0xb2, 0x47, 0x15, 0x2b, 0x7d, 0xf5, 0xe9, 0x0a, 0x70, 0x17, 0x4f, 0x04, - 0x25, 0xac, 0x48, 0x71, 0x57, 0xa8, 0x45, 0xde, 0x84, 0xdb, 0x22, 0x00, 0xff, 0x39, 0x14, - 0xee, 0x1b, 0xd3, 0xb7, 0x0e, 0x02, 0x53, 0x0a, 0x82, 0xb4, 0x97, 0xa1, 0xab, 0x4e, 0x37, - 0xbc, 0x78, 0x3a, 0xfd, 0xbe, 0x96, 0x1c, 0x1c, 0xf6, 0x1f, 0x1d, 0xd8, 0xca, 0x66, 0xf7, - 0x0d, 0x79, 0x12, 0xe3, 0x72, 0xe5, 0x19, 0x78, 0x8c, 0xd4, 0x38, 0x9c, 0xd8, 0x11, 0x3a, - 0x14, 0x7c, 0x07, 0x9c, 0xa2, 0x14, 0xa2, 0x7e, 0x55, 0x89, 0x05, 0x17, 0xf6, 0xd5, 0x2f, - 0xfa, 0xc8, 0x3e, 0x1c, 0xe3, 0x0a, 0x31, 0x93, 0x1b, 0xee, 0x79, 0xf1, 0xd9, 0xa0, 0x40, - 0xba, 0x7f, 0x72, 0x51, 0x86, 0x28, 0x5a, 0x7d, 0xd2, 0x38, 0xe6, 0x1b, 0x4f, 0xfd, 0xf0, - 0xa9, 0x3e, 0x92, 0xf6, 0x37, 0x0a, 0x3f, 0xf3, 0x18, 0x31, 0x7d, 0xcd, 0x2c, 0x21, 0xc3, - 0xca, 0x1e, 0xbc, 0xeb, 0xcf, 0x23, 0x92, 0x68, 0xee, 0x5b, 0x1e, 0x51, 0x48, 0x07, 0xc9, - 0xf9, 0x09, 0xf7, 0x97, 0xf0, 0x49, 0x16, 0x12, 0x45, 0xdb, 0x07, 0x6c, 0x0c, 0xde, 0x8b, - 0xa0, 0xd9, 0xd2, 0xf8, 0x4b, 0x69, 0x92, 0x96, 0x6a, 0x2b, 0x2c, 0xe2, 0x4f, 0x81, 0x86, - 0xcb, 0x6f, 0xa8, 0x0d, 0x68, 0x23, 0x59, 0xac, 0x1f, 0x52, 0xfd, 0x99, 0x88, 0x35, 0xbc, - 0x9e, 0xce, 0xa6, 0xd9, 0xa2, 0x68, 0x35, 0x7e, 0xfc, 0x2d, 0xfb, 0x16, 0x46, 0x06, 0x1c, - 0xac, 0x40, 0xb5, 0x90, 0x36, 0x0d, 0x48, 0xfe, 0x7c, 0x93, 0x34, 0x66, 0x3f, 0x91, 0x10, - 0xf3, 0x16, 0x21, 0x36, 0x3d, 0xd7, 0x8e, 0x39, 0x64, 0x0f, 0x8c, 0xbb, 0xd3, 0x49, 0xcd, - 0xa0, 0xb3, 0xac, 0x24, 0xa8, 0xd4, 0xda, 0xb4, 0x35, 0xe7, 0x7f, 0xbc, 0x27, 0xa0, 0xd4, - 0xdd, 0x9a, 0x97, 0x18, 0x74, 0x58, 0x88, 0xe2, 0x2c, 0xa8, 0xf8, 0xf0, 0x73, 0x77, 0x05, - 0xab, 0xd5, 0x84, 0x33, 0x17, 0xae, 0x8e, 0x84, 0xa5, 0x93, 0x50, 0x5f, 0x6d, 0x73, 0x28, - 0xbf, 0xd1, 0x85, 0x8f, 0x18, 0xce, 0x04, 0xdf, 0x67, 0x75, 0xdf, 0x46, 0x8f, 0x41, 0x9d, - 0x4e, 0xfd, 0xe9, 0x65, 0xa6, 0xb6, 0xbb, 0xbf, 0x1c, 0xc5, 0xef, 0xc0, 0x2f, 0x50, 0x17, - 0xc9, 0x1c, 0x23, 0x1e, 0xcb, 0x21, 0x41, 0x95, 0x97, 0x14, 0x1f, 0xe2, 0xde, 0xd1, 0xea, - 0xdc, 0xad, 0x68, 0x46, 0x68, 0x0a, 0x70, 0x14, 0x44, 0x19, 0x97, 0x33, 0xdc, 0x98, 0x75, - 0x56, 0xe3, 0x70, 0x30, 0xcc, 0x79, 0x46, 0x08, 0x33, 0xcb, 0x33, 0x93, 0xd1, 0x0c, 0x28, - 0xea, 0xc8, 0xc8, 0x2f, 0xe8, 0x04, 0x9b, 0x54, 0xcc, 0xf0, 0x8e, 0x44, 0x06, 0x0a, 0x78, - 0x42, 0x38, 0x82, 0x94, 0xd9, 0x00, 0xf9, 0x36, 0x0f, 0xea, 0x35, 0xdd, 0xd4, 0xd7, 0x98, - 0x23, 0xcf, 0xc5, 0x99, 0x46, 0x04, 0x4b, 0x41, 0x7f, 0xc8, 0x49, 0x13, 0x4f, 0xc8, 0x0c, - 0x30, 0xc2, 0xbb, 0x9e, 0xab, 0xec, 0x4e, 0x05, 0x67, 0x08, 0x3c, 0x99, 0x65, 0x85, 0xb3, - 0xb0, 0xba, 0x0f, 0x14, 0x5c, 0xe5, 0x17, 0x05, 0xc0, 0x8f, 0x84, 0x7d, 0xdf, 0xb5, 0xa7, - 0x02, 0xdd, 0x33, 0xcb, 0xb3, 0x02, 0x14, 0x8a, 0xed, 0x1f, 0x0a, 0x00, 0xe6, 0xef, 0xc0, - 0xd0, 0xfc, 0x9f, 0x69, 0xba, 0x8b, 0xe6, 0xeb, 0x66, 0x62, 0x51, 0xd7, 0x91, 0x50, 0xe6, - 0x75, 0x3b, 0x49, 0x17, 0x61, 0xd3, 0x44, 0x99, 0x43, 0x7a, 0xe8, 0x2c, 0x2a, 0x12, 0x59, - 0x87, 0x25, 0x95, 0x22, 0xc6, 0xe7, 0x67, 0xd7, 0xbc, 0x34, 0xd5, 0x0f, 0x0b, 0xab, 0x10, - 0x3c, 0x7a, 0x86, 0x31, 0xc0, 0x9c, 0x96, 0xdb, 0x0d, 0xa4, 0xf3, 0x92, 0x55, 0x1c, 0xc4, - 0xdc, 0xca, 0xc3, 0x49, 0x6f, 0xeb, 0x6f, 0x8e, 0x48, 0xd1, 0x8a, 0x83, 0x6d, 0x3b, 0x24, - 0xaa, 0x6e, 0xdf, 0x15, 0x30, 0xe3, 0x6b, 0xcc, 0x87, 0x49, 0xb6, 0xa0, 0x27, 0xc7, 0x95, - 0x0b, 0x94, 0xf5, 0x48, 0xb7, 0xf9, 0xd9, 0xe0, 0xc4, 0xf4, 0x42, 0xfb, 0xd6, 0x58, 0x2f, - 0xad, 0x3d, 0xe1, 0x80, 0x92, 0x4d, 0xf9, 0xb1, 0x2d, 0xdf, 0x74, 0x12, 0x4b, 0x37, 0x05, - 0xab, 0x07, 0x25, 0x0d, 0xef, 0xfc, 0x12, 0xcf, 0xb5, 0xdf, 0x20, 0x10, 0x98, 0xed, 0x40, - 0xb8, 0x69, 0x9a, 0xab, 0xad, 0xd9, 0x9d, 0x71, 0x9e, 0x80, 0x77, 0x03, 0x08, 0x39, 0xb6, - 0x75, 0x16, 0xbe, 0x64, 0x24, 0xbd, 0xab, 0x58, 0x3f, 0x9b, 0x56, 0x0d, 0x43, 0x0e, 0x23, - 0xbd, 0x87, 0x18, 0x30, 0xcb, 0x22, 0xad, 0x60, 0x17, 0xb3, 0xcd, 0x38, 0x8e, 0x3f, 0x95, - 0x3d, 0x49, 0xeb, 0xe5, 0xb0, 0xdc, 0x31, 0xd7, 0x0d, 0x9e, 0xbe, 0x76, 0x67, 0x8e, 0x93, - 0x67, 0x65, 0x48, 0xbc, 0x63, 0x88, 0x7b, 0xdf, 0x49, 0x30, 0xb9, 0xe3, 0xb1, 0xf8, 0xba, - 0xac, 0xe7, 0xd7, 0x89, 0x85, 0x78, 0xb4, 0x4e, 0x28, 0x10, 0x90, 0x6c, 0xda, 0x47, 0x63, - 0xdf, 0x23, 0xc5, 0x8b, 0xd4, 0xc9, 0x61, 0xbd, 0x3a, 0x20, 0x7b, 0x58, 0xf2, 0x9c, 0xa3, - 0x39, 0xdc, 0xb9, 0x00, 0x6f, 0x61, 0xbd, 0xfb, 0x2d, 0x86, 0x04, 0xbd, 0xcf, 0x6a, 0x27, - 0x65, 0x21, 0x6d, 0xdb, 0xd5, 0x12, 0x78, 0xaa, 0x93, 0xd5, 0x1e, 0x78, 0x88, 0xfd, 0x3f, - 0x48, 0xf4, 0x23, 0x2e, 0xd8, 0x44, 0xd8, 0x30, 0x53, 0xce, 0x9a, 0x2b, 0x24, 0xdf, 0xd3, - 0x2a, 0x88, 0x8c, 0x7a, 0x2a, 0x22, 0xe3, 0x4c, 0x39, 0x5d, 0xe5, 0x9a, 0x48, 0xad, 0x9e, - 0x4c, 0x2c, 0x23, 0x1f, 0x46, 0xab, 0x8b, 0x4b, 0x39, 0x8b, 0x7a, 0xf4, 0xc6, 0x20, 0x09, - 0x86, 0xb4, 0xe2, 0xb7, 0x6a, 0x69, 0x2f, 0x97, 0x58, 0xd7, 0xf2, 0x48, 0x49, 0x29, 0xd9, - 0xd4, 0x26, 0x96, 0x3b, 0x4e, 0x7a, 0xfc, 0x83, 0xcc, 0x57, 0xa4, 0x73, 0xf2, 0x13, 0x88, - 0x3a, 0x2c, 0x03, 0x21, 0x50, 0x80, 0x42, 0xad, 0xa0, 0x97, 0x4d, 0x81, 0x44, 0x71, 0xfd, - 0x20, 0x35, 0xad, 0xfd, 0xb2, 0x76, 0xc2, 0x39, 0xfb, 0x02, 0x2e, 0x06, 0xb8, 0xc6, 0x0d, - 0xbc, 0x20, 0x46, 0x3a, 0x2d, 0x9a, 0x50, 0x3e, 0xcf, 0xc8, 0x99, 0x7d, 0xb3, 0xad, 0x3b, - 0x41, 0x8a, 0x76, 0x42, 0x7a, 0x91, 0x12, 0xdc, 0xcc, 0x92, 0x9a, 0xdb, 0x7d, 0x7f, 0x96, - 0xf9, 0x36, 0xf4, 0xff, 0x68, 0x2f, 0x34, 0x9d, 0xac, 0x9e, 0x90, 0xf5, 0xf0, 0x13, 0x7a, - 0xef, 0x9f, 0xbc, 0xfb, 0x55, 0xe2, 0xd9, 0x0a, 0xfc, 0xdf, 0x89, 0xcf, 0x22, 0x97, 0x4e, - 0x2f, 0xb1, 0x2a, 0xe9, 0xbd, 0xbc, 0xb3, 0x17, 0x57, 0x7e, 0x5a, 0xcd, 0xd0, 0x9b, 0x9f, - 0x4a, 0x50, 0xa0, 0x79, 0xd8, 0x1d, 0xf8, 0x14, 0x99, 0x5f, 0xdb, 0x5f, 0x6f, 0xcc, 0x97, - 0x39, 0x42, 0x96, 0x0e, 0xbe, 0x93, 0x89, 0xac, 0xf8, 0x0f, 0xdd, 0x9f, 0x36, 0x2e, 0x97, - 0x79, 0x72, 0xb1, 0x76, 0xc6, 0xc6, 0x0d, 0x70, 0x75, 0xa1, 0x7a, 0x69, 0xf7, 0x15, 0x82, - 0xd6, 0x34, 0xb1, 0x21, 0xa7, 0xcf, 0x84, 0x22, 0x15, 0x68, 0x52, 0x2a, 0x41, 0x2c, 0xb4, - 0x5a, 0x3f, 0xec, 0x73, 0x71, 0x29, 0x9e, 0x21, 0xa2, 0x1d, 0xd3, 0x0d, 0x3f, 0x79, 0xea, - 0x4d, 0x1a, 0x31, 0x91, 0x89, 0xd7, 0x96, 0xca, 0x08, 0x1e, 0x85, 0xc8, 0x70, 0x3f, 0x0c, - 0xa4, 0x0c, 0x00, 0x74, 0xf6, 0x38, 0x43, 0x13, 0xe4, 0x14, 0xf1, 0xbe, 0x32, 0xd3, 0xd9, - 0x31, 0x8e, 0x0e, 0xf9, 0x66, 0x98, 0x04, 0x74, 0x9c, 0x82, 0x61, 0x03, 0x7e, 0x91, 0x25, - 0x26, 0x62, 0xfe, 0x3d, 0x00, 0xbb, 0x6b, 0xa8, 0x9f, 0xe8, 0x95, 0x64, 0x35, 0xb8, 0xb0, - 0x92, 0x1d, 0x61, 0x6b, 0xcb, 0x36, 0xe1, 0x6d, 0x1e, 0x03, 0x0e, 0x66, 0x1c, 0x9b, 0x84, - 0xe8, 0xd4, 0x2e, 0xbd, 0x56, 0x18, 0x8b, 0xe5, 0x3e, 0x0d, 0x73, 0xd6, 0xae, 0x74, 0x60, - 0x13, 0x58, 0x38, 0x6e, 0x78, 0x57, 0x52, 0x2d, 0xbb, 0x0e, 0x7d, 0x83, 0x0c, 0x4a, 0x89, - 0x46, 0x97, 0x33, 0xfa, 0x18, 0x71, 0xd6, 0x1b, 0x57, 0xab, 0xd0, 0xc6, 0xd7, 0x55, 0x38, - 0x14, 0xaf, 0xfc, 0x3d, 0x05, 0xee, 0x78, 0x30, 0x0f, 0xe1, 0x7b, 0x18, 0x1c, 0x67, 0x29, - 0x35, 0xab, 0x2c, 0x31, 0x22, 0x24, 0x21, 0x50, 0x56, 0x88, 0x0f, 0x4e, 0xd2, 0x48, 0x55, - 0xf0, 0x4d, 0x24, 0x9a, 0x82, 0x17, 0x20, 0x0d, 0x2f, 0x60, 0x50, 0x58, 0x40, 0x1a, 0x56, - 0x01, 0x41, 0xfb, 0x7c, 0x01, 0x8d, 0x5e, 0x21, 0x12, 0x48, 0x80, 0xfa, 0x2c, 0x57, 0x57, - 0xcb, 0xed, 0xa1, 0x35, 0x89, 0x00, 0x9b, 0xa7, 0xd8, 0x8f, 0x34, 0xdf, 0x26, 0x9a, 0xa5, - 0xf1, 0x7d, 0x0e, 0x15, 0x72, 0x2d, 0xd5, 0x61, 0xec, 0x26, 0x3d, 0x79, 0xe8, 0xfb, 0x67, - 0x9c, 0x9e, 0x15, 0x74, 0x8a, 0x78, 0x68, 0x1d, 0x0b, 0x01, 0x94, 0x7d, 0x3e, 0x0c, 0x18, - 0x80, 0x49, 0x89, 0x0e, 0x11, 0xdd, 0xf9, 0x6b, 0xcd, 0x1e, 0xae, 0xda, 0x18, 0x8f, 0x03, - 0xf6, 0x46, 0x7f, 0x0e, 0x91, 0x0e, 0x70, 0xe4, 0x44, 0x81, 0x01, 0xf5, 0xfb, 0xaa, 0xfd, - 0x54, 0xe5, 0x7b, 0xef, 0x17, 0xc2, 0x06, 0x8b, 0x54, 0x5d, 0x89, 0x7b, 0x3b, 0x04, 0x02, - 0xf3, 0x3d, 0x77, 0x82, 0x63, 0x9e, 0xac, 0xad, 0xad, 0x62, 0xcf, 0x8f, 0x54, 0xfd, 0x8f, - 0x81, 0x89, 0x84, 0xa2, 0x17, 0x44, 0xf3, 0x39, 0x13, 0x6a, 0x6f, 0x42, 0x60, 0xcb, 0xbd, - 0xed, 0x0d, 0x2f, 0xf0, 0x68, 0x21, 0xce, 0xc3, 0x51, 0x9b, 0x58, 0x0d, 0xa0, 0x6d, 0x27, - 0x1e, 0xd1, 0x72, 0x43, 0x44, 0xbd, 0x7d, 0x1b, 0x2e, 0xf8, 0x54, 0x4d, 0xdd, 0x6d, 0x51, - 0xd4, 0xb0, 0xc5, 0x31, 0xc2, 0xb3, 0xa8, 0xc6, 0xfe, 0x58, 0xf9, 0x8b, 0x29, 0x9c, 0xe7, - 0x8c, 0x15, 0x6b, 0xb6, 0xd3, 0x9b, 0x00, 0x46, 0x19, 0x6c, 0x97, 0x66, 0x8b, 0xfb, 0xea, - 0x34, 0x1b, 0xa8, 0xfd, 0x18, 0x33, 0xcb, 0xb9, 0x98, 0x40, 0x81, 0x6b, 0x63, 0x9a, 0xcf, - 0xf5, 0x91, 0x0f, 0x91, 0x12, 0x1e, 0x95, 0xe4, 0x1b, 0xd6, 0xf1, 0x6f, 0x14, 0x13, 0xf2, - 0x3f, 0xec, 0x51, 0x2b, 0x13, 0xaa, 0x2e, 0x29, 0xae, 0x67, 0x98, 0x0f, 0xd1, 0x19, 0xe0, - 0x8a, 0x73, 0xb8, 0x91, 0x9b, 0xa6, 0xcc, 0x11, 0xef, 0x1e, 0xea, 0x54, 0xa2, 0x84, 0x2e, - 0xab, 0x3c, 0xd1, 0x98, 0xa9, 0xa1, 0xf6, 0x77, 0x51, 0x06, 0x6f, 0xef, 0x6c, 0x76, 0x7f, - 0xcc, 0xb1, 0x24, 0x96, 0xc6, 0x09, 0x63, 0x7e, 0x66, 0xda, 0x8d, 0x50, 0xad, 0x8a, 0xcf, - 0xa1, 0xa3, 0xce, 0x00, 0x30, 0x9b, 0xe7, 0x59, 0xcf, 0xb3, 0xc8, 0x25, 0xb5, 0x22, 0x83, - 0x1f, 0x76, 0xb3, 0xa4, 0x30, 0xcc, 0xa0, 0x0c, 0xc7, 0x98, 0xd1, 0x5e, 0x9f, 0x61, 0xd5, - 0x1a, 0xcf, 0xac, 0x01, 0x01, 0xde, 0xd3, 0x70, 0x85, 0x86, 0x48, 0x42, 0x6f, 0x1f, 0x2b, - 0xd3, 0x3d, 0xac, 0xf5, 0xc7, 0x34, 0x18, 0xd6, 0xbe, 0x1a, 0xf1, 0x0d, 0x55, 0xe6, 0xce, - 0x31, 0xcc, 0xc5, 0x69, 0xce, 0x6e, 0xf1, 0x8d, 0x31, 0x4f, 0x5f, 0xc6, 0x7e, 0x20, 0xb7, - 0x01, 0xf2, 0x30, 0x1b, 0xde, 0x1f, 0x72, 0x40, 0x2c, 0xd7, 0x98, 0xa4, 0x43, 0xe8, 0x24, - 0x3b, 0xfe, 0x5d, 0x7a, 0x32, 0xb5, 0xfc, 0x0c, 0xe0, 0x91, 0xff, 0x37, 0xee, 0x5b, 0x8a, - 0xbe, 0xa7, 0x05, 0x20, 0x44, 0xa3, 0x94, 0xf9, 0xdb, 0x17, 0x84, 0xd4, 0xbb, 0x3b, 0xe4, - 0x37, 0xd9, 0xb5, 0xe8, 0xab, 0x4a, 0xaf, 0xfe, 0x9a, 0x8d, 0x38, 0x10, 0x7f, 0xf1, 0x4f, - 0x59, 0x2f, 0xf2, 0x4a, 0x04, 0x01, 0x98, 0xf7, 0xe0, 0x5f, 0x96, 0x3f, 0xed, 0x6c, 0x50, - 0x34, 0x4c, 0x6c, 0x7d, 0x81, 0x44, 0xd8, 0x6b, 0x88, 0x43, 0x5a, 0xc5, 0xe8, 0x13, 0x20, - 0xf3, 0x51, 0x99, 0x1a, 0xd8, 0xcf, 0x22, 0xe6, 0x64, 0x8c, 0xd7, 0x49, 0x6a, 0xa0, 0x82, - 0x53, 0xca, 0xde, 0x6d, 0x55, 0x20, 0x74, 0x7d, 0x4f, 0xe5, 0x63, 0xf4, 0x56, 0x8d, 0x85, - 0xa2, 0xc4, 0x16, 0x79, 0x9a, 0x1e, 0x48, 0xfa, 0x33, 0x70, 0xfd, 0x61, 0xe1, 0x78, 0x59, - 0x36, 0x3a, 0xe6, 0x97, 0xd6, 0x34, 0xc5, 0xfd, 0xc5, 0x6d, 0x4b, 0x73, 0x95, 0x02, 0xac, - 0x43, 0x6d, 0x94, 0x83, 0xfa, 0x6b, 0xa7, 0x46, 0x1f, 0x6c, 0x1d, 0x7f, 0xb6, 0x40, 0xa9, - 0xd4, 0xd0, 0x92, 0x48, 0x3f, 0x2e, 0x7f, 0x74, 0xca, 0x2c, 0x5a, 0x37, 0x64, 0x86, 0x89, - 0xc8, 0x1a, 0x0d, 0xb2, 0x2b, 0xa2, 0xb7, 0xeb, 0xde, 0xe5, 0xe3, 0x83, 0x3f, 0xac, 0x4c, - 0xc2, 0x78, 0x81, 0xd1, 0xae, 0x46, 0x84, 0x2e, 0x4c, 0x93, 0x0a, 0x65, 0x88, 0xa2, 0xda, - 0x26, 0x9b, 0xfb, 0x89, 0xab, 0xc3, 0xdd, 0x07, 0x85, 0x0f, 0x25, 0x27, 0x45, 0xc3, 0x0f, - 0x06, 0x79, 0x21, 0xf1, 0xc8, 0xf7, 0x62, 0x5e, 0xf2, 0x28, 0x72, 0x5d, 0xdb, 0x1b, 0x1c, - 0x1c, 0xa2, 0x22, 0x88, 0x63, 0xe5, 0xa5, 0x45, 0x9d, 0x06, 0x88, 0x94, 0xe6, 0x0e, 0x87, - 0xd5, 0x08, 0x63, 0x7f, 0xcb, 0x7c, 0x8a, 0x76, 0x34, 0x4d, 0xf9, 0x2a, 0xa5, 0x29, 0x0b, - 0x89, 0x92, 0xbf, 0xed, 0x97, 0x14, 0xc1, 0xc0, 0x00, 0xe9, 0x33, 0x04, 0xb3, 0x9b, 0x1b, - 0x36, 0x97, 0x68, 0x1f, 0xa0, 0xa8, 0x8d, 0x4e, 0xa1, 0xdf, 0x33, 0x4a, 0x19, 0xe3, 0x8e, - 0x18, 0x0d, 0x8c, 0xfd, 0x58, 0xe1, 0x89, 0xbd, 0x15, 0xbb, 0x8f, 0x32, 0x23, 0x7d, 0xd5, - 0xbb, 0x1f, 0x35, 0xb6, 0xf7, 0x05, 0x1e, 0x20, 0x63, 0xad, 0x81, 0x65, 0x84, 0x22, 0xd8, - 0xea, 0xef, 0xe6, 0x81, 0x25, 0x7f, 0x2e, 0x69, 0xe7, 0x34, 0xa7, 0xe4, 0x07, 0x7f, 0x26, - 0x65, 0xf1, 0xcc, 0xd6, 0x69, 0xc8, 0xa7, 0x2b, 0x87, 0x87, 0x83, 0x08, 0xd3, 0x8d, 0x84, - 0x35, 0xff, 0x40, 0x71, 0x20, 0xc6, 0xed, 0xf0, 0xed, 0xd5, 0x52, 0x79, 0xe5, 0x59, 0xf6, - 0xf9, 0xec, 0x8e, 0x6f, 0x07, 0xcf, 0xa6, 0x8f, 0x33, 0x27, 0x1a, 0x07, 0x3d, 0x5c, 0xdc, - 0x42, 0x14, 0x73, 0xe4, 0x68, 0xcd, 0xfd, 0x20, 0xe5, 0x9a, 0xbc, 0xb9, 0x7d, 0xb0, 0xef, - 0xc6, 0x74, 0xab, 0x9d, 0x4e, 0xa6, 0x8c, 0x6a, 0x0d, 0xca, 0x3b, 0x38, 0xa6, 0xd0, 0x25, - 0x85, 0xc3, 0x29, 0x6b, 0x95, 0x3b, 0x28, 0xce, 0xdc, 0xd3, 0x9e, 0x30, 0x50, 0x3a, 0x2c, - 0x1b, 0x0f, 0x5e, 0x7b, 0x38, 0x9e, 0x1d, 0x86, 0x49, 0x26, 0x4d, 0x9a, 0x5f, 0x01, 0xf0, - 0x62, 0x3e, 0x75, 0xb5, 0x24, 0xbd, 0x64, 0x2b, 0xd7, 0x65, 0x89, 0x7f, 0xbe, 0x37, 0x8b, - 0x44, 0x6f, 0xb9, 0x34, 0x7e, 0xa7, 0xe8, 0x77, 0xcb, 0xcc, 0x16, 0x24, 0x57, 0xd3, 0xf4, - 0x35, 0xb3, 0xbf, 0xbc, 0xb9, 0xa5, 0x4e, 0x86, 0xc0, 0xd6, 0x66, 0xd7, 0x37, 0xe7, 0xf6, - 0x08, 0xa8, 0x39, 0x0e, 0xac, 0x1c, 0xe8, 0xca, 0xb7, 0xb8, 0xf8, 0x88, 0x86, 0x09, 0xcc, - 0x27, 0x9d, 0x0b, 0xa9, 0xe5, 0x16, 0x00, 0x75, 0x50, 0x4f, 0x22, 0xf7, 0xcc, 0x08, 0xd3, - 0x07, 0xd0, 0xba, 0x5c, 0x8c, 0x16, 0x70, 0x5f, 0xa8, 0xd4, 0xd0, 0xee, 0x79, 0x35, 0xea, - 0x0c, 0x3d, 0x5c, 0x10, 0x35, 0x89, 0x8a, 0xd9, 0xbe, 0xa0, 0xd1, 0xe3, 0x00, 0xe8, 0x89, - 0x61, 0x72, 0x9c, 0xa6, 0x33, 0x97, 0x25, 0x29, 0x94, 0xf1, 0x0a, 0xde, 0x52, 0x8a, 0xc6, - 0xd4, 0xcd, 0x01, 0xf0, 0x72, 0x9e, 0x18, 0xa2, 0x51, 0x7f, 0x6b, 0x17, 0x3d, 0x62, 0xe1, - 0x0f, 0xf0, 0x33, 0x23, 0x18, 0x92, 0xd2, 0x33, 0x72, 0xc3, 0x03, 0xf3, 0x66, 0x6b, 0x19, - 0x4a, 0x4d, 0x0f, 0x1c, 0x30, 0xbb, 0x54, 0x31, 0x2a, 0x9d, 0xd5, 0xb2, 0x07, 0x46, 0xe2, - 0x12, 0x26, 0xbf, 0xad, 0x80, 0x4c, 0x9e, 0x6e, 0x55, 0x87, 0xa0, 0xfd, 0x47, 0x5a, 0x9b, - 0x0b, 0xc6, 0x56, 0x88, 0x52, 0xec, 0x0d, 0x40, 0x2c, 0x6d, 0x3b, 0x10, 0xa5, 0x8e, 0x01, - 0xed, 0x05, 0xf0, 0x09, 0xf6, 0xbb, 0x93, 0x00, 0xbe, 0x57, 0x74, 0x9a, 0x15, 0x62, 0x01, - 0x4f, 0x5a, 0xf7, 0x57, 0x6e, 0x0c, 0x05, 0x96, 0x16, 0xef, 0x1b, 0xfa, 0x01, 0x37, 0xc7, - 0x6c, 0x2d, 0xca, 0xf0, 0x5d, 0xd1, 0x90, 0x63, 0xcc, 0xec, 0xb9, 0x26, 0x01, 0x90, 0xfb, - 0xf5, 0xf7, 0x80, 0x7f, 0x1e, 0x57, 0xdb, 0xa0, 0x07, 0x66, 0x2f, 0x5b, 0xb4, 0x5b, 0x12, - 0x94, 0x83, 0xe9, 0xcd, 0xef, 0xe9, 0x73, 0xee, 0x3f, 0xfc, 0xd0, 0xd9, 0x62, 0xfb, 0x97, - 0xee, 0x6e, 0x85, 0xf9, 0xc9, 0x95, 0x28, 0xfb, 0x00, 0x72, 0x69, 0x42, 0xd6, 0x38, 0x39, - 0xd7, 0x0a, 0xb2, 0xa5, 0x16, 0xc6, 0x23, 0x0e, 0xb1, 0xfc, 0xb8, 0x1a, 0x9d, 0xa2, 0xdc, - 0xa5, 0x61, 0xb8, 0x4f, 0x99, 0x39, 0xb0, 0x3b, 0x27, 0xd1, 0x6f, 0x5d, 0x10, 0x67, 0xd7, - 0x9e, 0x32, 0x2d, 0x04, 0x9a, 0x3e, 0xa5, 0x87, 0x69, 0x20, 0x91, 0xd6, 0x35, 0x53, 0xb3, - 0x1f, 0x68, 0xfc, 0x00, 0x62, 0x0b, 0x22, 0x41, 0x90, 0x1d, 0x7b, 0x40, 0x13, 0x55, 0xe6, - 0x79, 0x8e, 0x85, 0xe3, 0xd3, 0x11, 0xae, 0x3b, 0x43, 0xc5, 0xb2, 0xa2, 0x37, 0x1d, 0x56, - 0xc5, 0x9a, 0x9b, 0x06, 0x37, 0x0e, 0x47, 0xfe, 0x1e, 0x50, 0x6e, 0x30, 0x7e, 0x28, 0xf7, - 0x7d, 0xed, 0x15, 0xbe, 0x85, 0x51, 0x9c, 0x1e, 0x9c, 0xea, 0x65, 0x50, 0x75, 0x38, 0x31, - 0x0c, 0xf4, 0x35, 0xf6, 0x5c, 0x3c, 0x28, 0xa4, 0xd4, 0xdc, 0x7b, 0x6b, 0xef, 0x57, 0x33, - 0x54, 0xa2, 0x73, 0xa3, 0x05, 0x72, 0x1f, 0x30, 0x93, 0x1e, 0x24, 0x94, 0x29, 0xc4, 0x8f, - 0x06, 0xe2, 0x98, 0xf9, 0xe6, 0xcb, 0x16, 0x40, 0x45, 0xff, 0x26, 0xa2, 0x50, 0x41, 0xde, - 0x30, 0xc9, 0x87, 0xe0, 0x86, 0x72, 0x23, 0x2b, 0x83, 0xc0, 0x35, 0x20, 0x7e, 0x7f, 0xf1, - 0x9a, 0x59, 0xa4, 0xd1, 0x94, 0x9b, 0xc1, 0xa5, 0x58, 0x54, 0xb7, 0x3e, 0xb8, 0x81, 0x23, - 0xd9, 0xfc, 0x4e, 0x6d, 0x7e, 0x83, 0xc1, 0x77, 0x92, 0x57, 0x4d, 0x24, 0x36, 0x00, 0x9f, - 0xc7, 0x2a, 0xf8, 0x5a, 0xc5, 0x44, 0x09, 0x2d, 0x90, 0x4f, 0xe0, 0xbd, 0x09, 0x47, 0x90, - 0x64, 0x1d, 0x1c, 0xb2, 0x09, 0xe6, 0xca, 0x3a, 0x7c, 0x1c, 0x88, 0xe9, 0x7c, 0x4f, 0x37, - 0x3f, 0x91, 0x09, 0x12, 0xca, 0xb5, 0x00, 0xca, 0xd5, 0xa1, 0x39, 0xe5, 0x22, 0xb4, 0xf6, - 0xb2, 0xa2, 0x83, 0xdf, 0xa6, 0x73, 0xa2, 0x21, 0x66, 0x0a, 0x7d, 0x4f, 0x83, 0x3e, 0x12, - 0x34, 0xcd, 0x15, 0x17, 0x67, 0x55, 0x38, 0xed, 0x32, 0xf7, 0x1a, 0xf0, 0xd8, 0x21, 0x64, - 0x9f, 0x7e, 0x86, 0xbd, 0x14, 0xbd, 0x84, 0xad, 0x85, 0x37, 0xcd, 0xb8, 0x7f, 0x78, 0x17, - 0x95, 0x95, 0x2e, 0x11, 0x06, 0xa5, 0x71, 0x9f, 0x95, 0xc0, 0x27, 0xda, 0x3c, 0x6c, 0x5d, - 0xac, 0xcf, 0x3e, 0x16, 0xd0, 0xa4, 0xed, 0xd6, 0x9f, 0x98, 0xdf, 0x86, 0x9f, 0x9f, 0x7d, - 0x7f, 0x41, 0x58, 0x0b, 0xbc, 0x82, 0x00, 0x93, 0x97, 0x64, 0xf5, 0x67, 0x31, 0xce, 0x1b, - 0x89, 0x2a, 0x0c, 0x8b, 0xb5, 0x11, 0x75, 0x70, 0x12, 0x59, 0x8b, 0xf1, 0xa6, 0x1b, 0xa3, - 0xd7, 0xff, 0x35, 0xf2, 0x70, 0x2c, 0x1a, 0xfa, 0x35, 0x6d, 0x2b, 0x5b, 0xd3, 0x34, 0xbf, - 0x73, 0x25, 0x95, 0x4e, 0x69, 0x22, 0x3a, 0x70, 0xe9, 0xd5, 0xa4, 0x3b, 0x7f, 0xf5, 0x8e, - 0x37, 0xc4, 0xbf, 0x03, 0x95, 0xd2, 0xbe, 0xf8, 0xf1, 0x26, 0x34, 0xed, 0x0a, 0xf0, 0x25, - 0x50, 0xeb, 0x7b, 0x00, 0x79, 0x66, 0x41, 0x32, 0xdf, 0xb2, 0x06, 0x80, 0x3f, 0x17, 0x27, - 0x09, 0x41, 0x8c, 0xdf, 0x71, 0x85, 0xa2, 0x2a, 0xaf, 0xb9, 0x5b, 0x7c, 0x17, 0x4d, 0xcb, - 0x55, 0xaf, 0x29, 0x45, 0xcb, 0x1f, 0x6d, 0xc1, 0x73, 0xb4, 0xb3, 0xac, 0xe1, 0xc6, 0x23, - 0x71, 0x2e, 0x3e, 0x3a, 0xeb, 0xc5, 0x51, 0xf5, 0x22, 0xea, 0x8c, 0xbf, 0x49, 0xed, 0x11, - 0x29, 0x66, 0xbb, 0x28, 0x1e, 0x60, 0xde, 0xe4, 0x4e, 0x4a, 0xd0, 0x49, 0x7b, 0xa4, 0x89, - 0xdb, 0xec, 0x36, 0xff, 0x79, 0x7f, 0xa4, 0x9d, 0x77, 0x97, 0x89, 0x0a, 0x98, 0x14, 0xe4, - 0x5d, 0x16, 0x6e, 0x88, 0x51, 0x87, 0xb8, 0x84, 0x0c, 0x97, 0xc8, 0x18, 0x4c, 0xf4, 0xa6, - 0xec, 0x4e, 0xaf, 0x8b, 0xed, 0xb1, 0xe0, 0x26, 0xd6, 0x72, 0x5e, 0xce, 0x43, 0x39, 0xd4, - 0x39, 0xb1, 0x36, 0x2a, 0x17, 0x11, 0xed, 0x7b, 0x87, 0x6d, 0xd9, 0x73, 0xac, 0x52, 0x06, - 0x5f, 0xf2, 0xfb, 0x71, 0x5c, 0xf3, 0x06, 0xed, 0xb8, 0x3a, 0x21, 0x44, 0xe6, 0x92, 0x5e, - 0x7c, 0x41, 0x41, 0x0c, 0xef, 0x00, 0xb7, 0x5f, 0xe2, 0x1a, 0xa9, 0x3e, 0x8e, 0x83, 0x44, - 0xac, 0xbe, 0xd6, 0x70, 0x55, 0x9a, 0x4f, 0x70, 0xa0, 0xff, 0x17, 0x31, 0x66, 0xb8, 0xaf, - 0xe6, 0xe8, 0xc7, 0x12, 0xbc, 0x58, 0xac, 0x3a, 0x10, 0x64, 0x7f, 0xe5, 0xd1, 0xa7, 0xae, - 0xe0, 0x4f, 0x75, 0xc5, 0xf1, 0x9a, 0x23, 0x5c, 0xec, 0x4d, 0xc6, 0x8a, 0xd9, 0x69, 0x57, - 0x3d, 0xa2, 0xa7, 0x6c, 0x9c, 0x17, 0xd0, 0x86, 0x30, 0x30, 0xac, 0x1b, 0x90, 0x71, 0x5c, - 0x44, 0xef, 0x34, 0x8a, 0x02, 0x8c, 0x82, 0xc9, 0xbd, 0x19, 0x3d, 0x45, 0x23, 0x4c, 0xe6, - 0x7c, 0x4e, 0x52, 0x15, 0x40, 0xdd, 0x4a, 0x3f, 0x33, 0xa8, 0x54, 0x02, 0x48, 0x58, 0x82, - 0x3b, 0x19, 0x3f, 0x0b, 0x94, 0x5f, 0xcd, 0x56, 0xfc, 0xef, 0x89, 0x21, 0x4e, 0x2b, 0x30, - 0x73, 0x6b, 0x36, 0xda, 0x97, 0x4d, 0xa0, 0xe1, 0x36, 0xb9, 0x79, 0xb8, 0xec, 0x21, 0x7c, - 0xa5, 0xf2, 0x26, 0x16, 0xd2, 0xfa, 0xf8, 0x6c, 0x5c, 0x85, 0x7c, 0x4b, 0x0e, 0xe9, 0xc3, - 0x40, 0x93, 0x38, 0x5a, 0xae, 0x05, 0xb8, 0x49, 0xdc, 0x95, 0x7e, 0xca, 0x44, 0xf7, 0x7b, - 0x04, 0x19, 0xd8, 0x9b, 0x54, 0x79, 0xfd, 0x92, 0xe3, 0xaf, 0x00, 0xa8, 0xb7, 0x3b, 0x5d, - 0xf7, 0xb9, 0x21, 0xcf, 0xc3, 0x2d, 0x3f, 0x75, 0x09, 0xac, 0xae, 0xd5, 0x99, 0xfb, 0xba, - 0x02, 0x67, 0x32, 0x20, 0xf5, 0x8a, 0x0f, 0xbf, 0x25, 0xed, 0x43, 0x5f, 0x4c, 0xdf, 0x72, - 0xda, 0x03, 0x3d, 0x38, 0xcf, 0x43, 0xe5, 0xbb, 0xb5, 0xc2, 0x1d, 0x4f, 0x99, 0x75, 0x74, - 0xba, 0x25, 0xf9, 0xb8, 0x3e, 0xba, 0x7f, 0xfc, 0x52, 0x3d, 0x30, 0x18, 0x24, 0x65, 0x9f, - 0x0a, 0x55, 0xeb, 0xf6, 0x4a, 0x0d, 0x47, 0xbd, 0x2b, 0x6f, 0x41, 0x74, 0x27, 0x25, 0x14, - 0x66, 0x7e, 0x57, 0x8f, 0xd2, 0x4f, 0x3a, 0x0f, 0x65, 0xf6, 0xd9, 0xca, 0x1f, 0x07, 0x2e, - 0x96, 0x7b, 0x60, 0x50, 0x1f, 0x08, 0x0c, 0x48, 0xb9, 0xf3, 0xbb, 0x20, 0x30, 0x81, 0xe8, - 0x7e, 0x41, 0x62, 0x84, 0x10, 0x8e, 0x80, 0x0e, 0x02, 0x64, 0x6b, 0x69, 0x68, 0xdc, 0x01, - 0x71, 0xdb, 0x29, 0x09, 0xfb, 0xc6, 0x5b, 0x72, 0xe9, 0xa0, 0x86, 0xee, 0x66, 0xdd, 0x22, - 0xc0, 0xb1, 0xb3, 0x29, 0x19, 0x19, 0x5d, 0xe2, 0x12, 0x02, 0x11, 0xde, 0x22, 0x99, 0x6c, - 0xd2, 0x47, 0x8a, 0x18, 0x81, 0xd8, 0xb2, 0x75, 0xc4, 0x23, 0x46, 0x87, 0x90, 0x3b, 0x8b, - 0xbf, 0x35, 0x45, 0xed, 0x00, 0x36, 0x8d, 0xa8, 0x8c, 0x3a, 0xda, 0x48, 0x24, 0x72, 0xba, - 0x5b, 0x07, 0x9e, 0x65, 0x66, 0x86, 0x60, 0x3d, 0xeb, 0xf7, 0x5b, 0xe6, 0xe7, 0x70, 0xa2, - 0xfe, 0x59, 0xdc, 0x6b, 0xc6, 0x42, 0xe5, 0x37, 0xcd, 0x0d, 0x55, 0xb2, 0x9a, 0x69, 0x2e, - 0x3a, 0xba, 0x99, 0xa9, 0x96, 0x17, 0xc4, 0xa1, 0x42, 0x97, 0x86, 0x0b, 0x0a, 0xd8, 0xaa, - 0x72, 0x64, 0x1c, 0xfa, 0xe8, 0x84, 0x26, 0x89, 0x64, 0x1d, 0xe7, 0xa7, 0x9d, 0x6e, 0xf1, - 0x1d, 0x1e, 0x8e, 0x0b, 0x4d, 0x50, 0xed, 0xf2, 0x13, 0x3b, 0x35, 0xda, 0x83, 0x56, 0x7b, - 0xb9, 0xba, 0x6c, 0x8d, 0x85, 0x7e, 0xdc, 0xa2, 0x69, 0xf9, 0x38, 0x48, 0x63, 0x7a, 0x71, - 0xb1, 0x31, 0x94, 0x3e, 0x7d, 0xe3, 0xa9, 0xd1, 0x3a, 0xa6, 0xbf, 0x39, 0x38, 0x5c, 0x4b, - 0x78, 0x4d, 0xf2, 0x5d, 0x18, 0xb2, 0xe2, 0x85, 0x15, 0x38, 0xd5, 0x96, 0x13, 0x25, 0x08, - 0x33, 0x13, 0xde, 0xa0, 0xe6, 0x1f, 0x26, 0x4f, 0xaa, 0x85, 0xa9, 0x5c, 0x2b, 0x92, 0x84, - 0x2f, 0xb3, 0x41, 0x79, 0x82, 0x7d, 0x95, 0x54, 0x4c, 0x5e, 0xcf, 0x68, 0x68, 0x6f, 0xed, - 0xe2, 0xf7, 0x96, 0xdc, 0xd6, 0xfc, 0x02, 0x04, 0xdd, 0xe1, 0x10, 0x5f, 0xfc, 0xaa, 0x4f, - 0xd3, 0xf1, 0x6c, 0x1a, 0x36, 0xa2, 0x36, 0x4f, 0x0e, 0xc6, 0xeb, 0x75, 0x26, 0x2c, 0x05, - 0x01, 0xd1, 0x83, 0xf7, 0xf0, 0xee, 0x58, 0x3b, 0xe3, 0x06, 0x02, 0x4a, 0x36, 0x13, 0x11, - 0x01, 0xe4, 0xe6, 0x24, 0xa2, 0x20, 0x67, 0xad, 0x94, 0x39, 0xe4, 0x0a, 0x3c, 0x4d, 0x65, - 0xee, 0x22, 0x0a, 0x80, 0x97, 0xca, 0x37, 0x2a, 0x2d, 0x4f, 0x9d, 0x22, 0xa3, 0x90, 0x09, - 0x7d, 0xdf, 0xde, 0x00, 0x7e, 0x97, 0x17, 0x21, 0x60, 0xbe, 0xe3, 0x26, 0xf6, 0x0e, 0x71, - 0x11, 0x42, 0xaa, 0x8a, 0x2f, 0xff, 0xae, 0x58, 0xe9, 0xa6, 0x6a, 0x50, 0x62, 0x11, 0xb3, - 0xb9, 0xb1, 0x73, 0x73, 0x1f, 0x57, 0x4e, 0xf3, 0x46, 0xa4, 0x87, 0xdc, 0x44, 0xbd, 0xdb, - 0x47, 0xfd, 0x7d, 0xec, 0x71, 0xa3, 0xc5, 0x36, 0x24, 0x07, 0xfd, 0x69, 0xd9, 0x91, 0xb0, - 0x24, 0x28, 0x2f, 0x83, 0x97, 0x73, 0xe9, 0xd9, 0x45, 0x0a, 0xec, 0xa4, 0x97, 0x55, 0x79, - 0x5d, 0x37, 0x6d, 0x98, 0x4b, 0x08, 0x61, 0x86, 0xe9, 0xf2, 0xd0, 0x5c, 0x1b, 0x05, 0x21, - 0xb6, 0xd4, 0x31, 0xb2, 0x41, 0xe6, 0x6a, 0x80, 0x26, 0xb0, 0x63, 0x0e, 0xe8, 0x0d, 0x54, - 0x96, 0x69, 0xee, 0x5e, 0xd4, 0xc6, 0x9b, 0xcb, 0x56, 0x0b, 0x29, 0x19, 0xdf, 0x40, 0x69, - 0x68, 0x26, 0x04, 0x87, 0x08, 0xf6, 0x17, 0x42, 0xdd, 0xf6, 0xf9, 0x0e, 0xa3, 0xd5, 0x41, - 0x9b, 0xbc, 0x03, 0xa7, 0x4a, 0x1a, 0x05, 0x6d, 0x12, 0xa5, 0xe2, 0xd3, 0x3a, 0x06, 0x65, - 0xf4, 0xf5, 0xad, 0x06, 0x7d, 0xdd, 0x17, 0xf9, 0xa1, 0x3e, 0xe3, 0x2b, 0x4a, 0x8e, 0xe7, - 0x56, 0x2b, 0xed, 0xff, 0x56, 0x0e, 0x42, 0x9a, 0x71, 0x52, 0x16, 0x42, 0x81, 0x88, 0xa9, - 0x4d, 0x8e, 0xea, 0x99, 0x0a, 0xfe, 0xda, 0xec, 0x3e, 0x58, 0xcd, 0x29, 0x4b, 0xb3, 0x94, - 0x67, 0x26, 0x65, 0xa7, 0xce, 0x79, 0xaa, 0xf4, 0xc0, 0xb3, 0x5d, 0x4f, 0x12, 0x21, 0x2b, - 0x4e, 0xd5, 0x88, 0x3b, 0x6b, 0xf2, 0xb2, 0xb6, 0x7f, 0x05, 0x22, 0x3f, 0x3d, 0x64, 0xd0, - 0xd9, 0x95, 0x5c, 0x44, 0xbf, 0xcf, 0x72, 0x8d, 0xa2, 0x16, 0xac, 0x73, 0x3b, 0x6d, 0x55, - 0xdb, 0x5b, 0xf8, 0x13, 0xe6, 0xf1, 0xb1, 0x2c, 0x53, 0x0e, 0x14, 0x95, 0x13, 0xa2, 0x99, - 0xb2, 0x7b, 0x5a, 0xe9, 0x79, 0x26, 0xfb, 0x1e, 0x24, 0xb8, 0xc8, 0x42, 0xa4, 0xd7, 0x9d, - 0xa8, 0x58, 0x32, 0xdd, 0x51, 0xb8, 0x26, 0xad, 0xd0, 0xf9, 0xe7, 0x85, 0xf7, 0x72, 0x00, - 0x05, 0x98, 0x41, 0xad, 0xb6, 0x10, 0x23, 0x21, 0x82, 0x0d, 0x09, 0x00, 0x3f, 0xe4, 0xd0, - 0x2b, 0x18, 0x1a, 0xdf, 0xaf, 0x19, 0x25, 0x64, 0xc6, 0xcb, 0x62, 0xd1, 0x85, 0x2e, 0x91, - 0xe5, 0x23, 0x5f, 0x1c, 0x67, 0xac, 0xc7, 0x58, 0x3c, 0xee, 0xde, 0xac, 0x03, 0x23, 0x49, - 0x6b, 0x87, 0xbd, 0xe7, 0x4c, 0xbd, 0xb3, 0xc2, 0x0a, 0x73, 0x19, 0xe3, 0x71, 0xdd, 0x2c, - 0xf2, 0x34, 0x6f, 0x03, 0x33, 0x33, 0xea, 0x9d, 0xb5, 0xf3, 0x4a, 0x22, 0x2c, 0x67, 0x41, - 0xb0, 0x6f, 0xd6, 0xbf, 0xf4, 0xc6, 0xd7, 0x16, 0xa3, 0x87, 0xe1, 0x10, 0x7c, 0x95, 0xbd, - 0xdd, 0xe1, 0x2d, 0xc5, 0x80, 0x3d, 0x06, 0x66, 0xa7, 0x34, 0xcb, 0x67, 0xc6, 0xbe, 0x3d, - 0x7c, 0xbd, 0xc3, 0xc9, 0x37, 0x3d, 0xc8, 0xc8, 0x89, 0x33, 0x9a, 0x96, 0xdb, 0x01, 0x35, - 0x17, 0x23, 0x5a, 0xdb, 0x4a, 0xff, 0xad, 0x10, 0xf3, 0xda, 0xe3, 0xab, 0xe6, 0x32, 0xaf, - 0x46, 0x84, 0x82, 0x1a, 0x1e, 0x51, 0xb4, 0xa7, 0x62, 0xd8, 0x06, 0x8f, 0x5a, 0xe3, 0x42, - 0x4c, 0xe5, 0xbc, 0xd6, 0xb8, 0x98, 0xbd, 0x77, 0x17, 0x2a, 0xc1, 0x8a, 0xca, 0x07, 0xc8, - 0xae, 0x53, 0xaf, 0xe8, 0x57, 0xc8, 0x85, 0xa3, 0xe0, 0xfb, 0xd1, 0xef, 0x9c, 0xee, 0xa9, - 0x41, 0x16, 0x95, 0xe8, 0x13, 0xc0, 0xef, 0xbe, 0xc0, 0x6e, 0x65, 0xba, 0x82, 0x2a, 0x07, - 0xc3, 0x62, 0x45, 0x7f, 0xf5, 0xe7, 0xf1, 0x73, 0x39, 0x98, 0x72, 0xb4, 0xd1, 0x82, 0xa8, - 0x01, 0xba, 0x6e, 0xf8, 0x84, 0x30, 0xb1, 0xad, 0x68, 0x4c, 0xaf, 0x28, 0xb7, 0x39, 0xba, - 0x37, 0x9b, 0x95, 0xd5, 0x6f, 0xbf, 0xc2, 0x56, 0x8c, 0x1f, 0x53, 0xd1, 0xc7, 0x39, 0xf9, - 0x32, 0x88, 0xd3, 0xb5, 0xdd, 0xa6, 0x8e, 0x99, 0xfb, 0xcc, 0x5e, 0xf8, 0xf6, 0x27, 0x7f, - 0x17, 0x0d, 0x4a, 0xe0, 0xd3, 0x9e, 0x58, 0xf8, 0xad, 0xd9, 0xab, 0x31, 0xdb, 0x90, 0x48, - 0x15, 0xc9, 0x22, 0xf4, 0x59, 0xd5, 0x57, 0x64, 0xe1, 0x2c, 0xf9, 0xfb, 0x88, 0x0c, 0x53, - 0x53, 0xc0, 0x3d, 0x16, 0x27, 0x39, 0xbd, 0xb8, 0xc8, 0xd8, 0x74, 0xc5, 0xc1, 0x0c, 0x67, - 0x07, 0x53, 0x6c, 0x4a, 0x55, 0x12, 0x96, 0x75, 0xa6, 0x4e, 0xca, 0x5d, 0x3c, 0x01, 0x0f, - 0x65, 0xe0, 0x0d, 0x1f, 0x35, 0xec, 0xf7, 0xa0, 0x4a, 0x49, 0x8d, 0x1b, 0x5e, 0x44, 0x4a, - 0x89, 0x6a, 0xb3, 0xfe, 0x79, 0x8c, 0xea, 0x6f, 0xc1, 0xb2, 0xef, 0x5b, 0xd3, 0xa7, 0xa8, - 0x60, 0x0f, 0xe2, 0x88, 0x7d, 0xf1, 0x16, 0x1c, 0xb6, 0xf8, 0x3f, 0xf4, 0xfa, 0x94, 0xb3, - 0x79, 0x06, 0xa9, 0x4f, 0x2d, 0x2a, 0xdd, 0x9a, 0x1a, 0xa1, 0x7b, 0x0c, 0x3f, 0x2b, 0x2b, - 0xe0, 0x3f, 0xe1, 0x59, 0x8d, 0x59, 0x4f, 0xde, 0x2e, 0xc0, 0x05, 0xdb, 0x41, 0xe5, 0x54, - 0xb4, 0x59, 0x3d, 0xfb, 0x76, 0x6f, 0xd3, 0x66, 0xdf, 0x69, 0xa8, 0xb4, 0x43, 0xd7, 0xc5, - 0x68, 0x1d, 0xc1, 0xfb, 0x06, 0x8a, 0x4b, 0x45, 0x0c, 0x43, 0x80, 0x9d, 0x89, 0x5a, 0x94, - 0x40, 0x19, 0x7d, 0x5f, 0xc9, 0xdf, 0x55, 0x0d, 0xac, 0xaf, 0x0d, 0x70, 0xbc, 0x06, 0x9b, - 0x29, 0x2e, 0xfd, 0x92, 0x55, 0x9f, 0xd3, 0x73, 0x04, 0x0b, 0x2c, 0x6e, 0x96, 0xa8, 0xe4, - 0x3e, 0xc0, 0x64, 0x7f, 0xdf, 0xbd, 0xe5, 0xb8, 0x5b, 0xc4, 0xae, 0x42, 0x2d, 0x70, 0x76, - 0xb0, 0x46, 0xcd, 0x26, 0x3b, 0xb0, 0x27, 0x63, 0x6e, 0x0b, 0x5d, 0x7e, 0x54, 0xe3, 0x36, - 0x4f, 0xa4, 0x12, 0x53, 0x3e, 0xcc, 0xef, 0x6d, 0xd6, 0xd5, 0xc2, 0x19, 0x8f, 0xb9, 0x75, - 0xca, 0xcd, 0x89, 0xf4, 0xe7, 0x88, 0x7d, 0x62, 0x77, 0x8e, 0x88, 0x84, 0x34, 0xeb, 0x1c, - 0x52, 0x2c, 0x1a, 0xd3, 0x35, 0xe8, 0x40, 0x04, 0x01, 0xfe, 0x0b, 0xbd, 0x34, 0x57, 0x47, - 0x33, 0xcf, 0x5e, 0x4c, 0x7c, 0x50, 0xb1, 0x04, 0xfc, 0xcc, 0x0c, 0xf2, 0x6f, 0xb0, 0x5e, - 0xf5, 0xeb, 0xd4, 0x26, 0xc8, 0x59, 0xc5, 0x74, 0xdb, 0xbc, 0x06, 0xdd, 0x09, 0x60, 0xb9, - 0x16, 0xb2, 0x04, 0x00, 0xd8, 0x36, 0x1a, 0xd8, 0x96, 0x91, 0x53, 0x00, 0x9a, 0xfc, 0x10, - 0x06, 0xfb, 0xe3, 0x6b, 0x0d, 0x80, 0x37, 0x2f, 0x48, 0xfc, 0xba, 0x35, 0x0a, 0x73, 0xf7, - 0x20, 0xb0, 0x3e, 0x6c, 0x82, 0x2b, 0xab, 0x6f, 0xaa, 0xb5, 0x9f, 0x3b, 0x50, 0x6b, 0xd2, - 0xaf, 0x44, 0x09, 0xa6, 0xdf, 0xbf, 0x08, 0xac, 0x68, 0xda, 0x3a, 0x89, 0xe9, 0xa2, 0x60, - 0x16, 0x0c, 0x28, 0xc8, 0x68, 0x65, 0x0c, 0xc2, 0x6e, 0x4f, 0x24, 0x88, 0xe5, 0x6e, 0x29, - 0xe1, 0x5d, 0xed, 0x35, 0x32, 0xe4, 0xd9, 0x7e, 0x72, 0x87, 0xa6, 0xf8, 0xe8, 0xba, 0x50, - 0x8d, 0x26, 0x17, 0x4e, 0x67, 0xe5, 0x56, 0xc8, 0xc6, 0x8c, 0xe5, 0x40, 0xc0, 0xf5, 0x0d, - 0xfc, 0xc8, 0x7a, 0x58, 0xe9, 0xd6, 0x18, 0x3c, 0xb1, 0xe5, 0x06, 0xbf, 0x52, 0x7a, 0xa3, - 0xe4, 0x53, 0x19, 0xc0, 0xe2, 0xa3, 0x2f, 0x38, 0xf4, 0x2d, 0x74, 0x53, 0x41, 0x5c, 0x0f, - 0x99, 0xaa, 0xf5, 0xca, 0xfa, 0x5c, 0x90, 0x76, 0x25, 0x6b, 0x4a, 0x88, 0xd5, 0x04, 0x7a, - 0xdb, 0xbb, 0x7d, 0xcb, 0x2c, 0xf3, 0x7b, 0xad, 0x18, 0x39, 0x82, 0xf4, 0xd6, 0xc2, 0x31, - 0x92, 0x08, 0xc7, 0xaa, 0xd4, 0x6d, 0x85, 0xe9, 0xc2, 0x6b, 0x1c, 0xfc, 0xc3, 0x30, 0xe0, - 0xa6, 0x93, 0x00, 0x68, 0x8c, 0x4a, 0xcd, 0x32, 0xf6, 0xdc, 0x33, 0xf7, 0x21, 0x5d, 0xc1, - 0x51, 0x15, 0x01, 0x47, 0xda, 0xe2, 0xb5, 0xc3, 0x5e, 0xc0, 0xd8, 0x3f, 0xd2, 0xb3, 0xad, - 0x65, 0x62, 0xa9, 0xb4, 0xd0, 0x85, 0xb1, 0x1c, 0xde, 0x12, 0x60, 0x98, 0xbf, 0x5f, 0xfd, - 0x9c, 0x92, 0x1c, 0xd5, 0x2c, 0x2f, 0xbb, 0xa6, 0xf2, 0xfa, 0xa7, 0x3d, 0x00, 0xdd, 0x8b, - 0xc2, 0xf9, 0x78, 0x5a, 0xb5, 0x0e, 0xfc, 0xcf, 0xa9, 0x59, 0x78, 0x8e, 0xf8, 0xda, 0x1e, - 0xc3, 0x6f, 0x5e, 0x33, 0x15, 0xd9, 0xb0, 0xf5, 0x7d, 0x9f, 0x1d, 0x69, 0xef, 0xfc, 0xa8, - 0x4b, 0x48, 0x6e, 0x81, 0x6a, 0x59, 0x30, 0xd7, 0xf0, 0x4b, 0xfe, 0x40, 0x6d, 0x84, 0x38, - 0xe8, 0xdd, 0xe2, 0x1f, 0xa2, 0xa1, 0x29, 0xd5, 0xf4, 0x4d, 0x9b, 0xb2, 0x95, 0xe4, 0x0b, - 0xc2, 0xdb, 0x71, 0x0d, 0x85, 0x78, 0x1e, 0x4f, 0xaf, 0x91, 0x0a, 0x13, 0xe4, 0x46, 0x96, - 0xc5, 0x2b, 0x26, 0x2d, 0x55, 0x1a, 0x90, 0x6f, 0x8e, 0xba, 0x19, 0xa4, 0xbb, 0xd5, 0x1e, - 0x7e, 0x37, 0xaf, 0x01, 0x6c, 0x30, 0xf8, 0x9f, 0xa5, 0x71, 0xa0, 0x75, 0xf9, 0x97, 0xa8, - 0x73, 0xf6, 0x6a, 0x93, 0xc5, 0x45, 0xff, 0x2b, 0x12, 0x5f, 0x5d, 0x03, 0xe3, 0x24, 0x74, - 0x93, 0xd6, 0xdf, 0xdd, 0x1c, 0xde, 0xf5, 0x30, 0x70, 0x46, 0xb8, 0x80, 0x19, 0x74, 0x4f, - 0x2b, 0x23, 0xd4, 0xf8, 0x53, 0x10, 0xd1, 0x7d, 0x37, 0x5d, 0x13, 0x67, 0x82, 0xad, 0x31, - 0xed, 0xd9, 0x02, 0x09, 0x8e, 0x74, 0x38, 0x53, 0xc6, 0x77, 0x38, 0xbd, 0xdc, 0xa3, 0x85, - 0x5a, 0x27, 0x97, 0x84, 0x25, 0x0e, 0x48, 0x56, 0xa2, 0x41, 0xf0, 0x13, 0x27, 0xc9, 0x48, - 0x8f, 0xc7, 0xa1, 0x61, 0x8a, 0x42, 0x9c, 0x43, 0xa4, 0xf6, 0xba, 0x1a, 0xe1, 0x2c, 0x02, - 0xed, 0x9b, 0xbf, 0x4e, 0xf9, 0x05, 0xfa, 0xe9, 0x87, 0x23, 0x11, 0x65, 0xc0, 0x23, 0x99, - 0xce, 0xff, 0x80, 0x8d, 0x01, 0x48, 0x54, 0xdf, 0xa3, 0xa6, 0x6c, 0xf1, 0xb6, 0xdb, 0xfb, - 0x5c, 0x68, 0x38, 0x1a, 0x3b, 0x5b, 0x40, 0x61, 0xf0, 0xe1, 0x57, 0x98, 0xea, 0x70, 0x3d, - 0x92, 0x79, 0xef, 0x9b, 0x66, 0xb8, 0x7c, 0x80, 0xd1, 0x05, 0x44, 0x91, 0x97, 0x81, 0x31, - 0x63, 0xc9, 0x28, 0xf4, 0xb7, 0x9d, 0x60, 0x2c, 0xcf, 0xc5, 0x41, 0xa8, 0xdf, 0xf2, 0x38, - 0xb1, 0x12, 0x55, 0xab, 0xfa, 0x04, 0xaf, 0x1d, 0x95, 0x3c, 0x61, 0x6a, 0x15, 0x86, 0xde, - 0x94, 0xeb, 0xb9, 0x18, 0x0b, 0x83, 0x4b, 0x91, 0x7b, 0x8e, 0xc6, 0x93, 0x28, 0x06, 0x73, - 0x5f, 0xf1, 0xbf, 0xd0, 0xc4, 0xb3, 0x7f, 0xfe, 0x16, 0x76, 0x68, 0x2d, 0x82, 0xba, 0x9a, - 0x4b, 0x4b, 0x5c, 0x22, 0x04, 0x97, 0xdf, 0x0b, 0xaf, 0x31, 0x0e, 0xd4, 0x02, 0xf4, 0x37, - 0xf0, 0xf6, 0x39, 0xb8, 0xd3, 0x12, 0x20, 0xf7, 0xc6, 0x6b, 0x06, 0xa1, 0xd9, 0x7a, 0x69, - 0x8a, 0x15, 0x19, 0x2e, 0x6c, 0x4b, 0x37, 0xdf, 0x85, 0xc1, 0x17, 0x22, 0x00, 0x00, 0x00, - 0x00, 0xac, 0xc8, 0xd2, 0x3a, 0x88, 0x7c, 0xbf, 0x7b, 0xe1, 0x46, 0xdb, 0x10, 0xdf, 0xaf, - 0x7e, 0x99, 0xc3, 0x94, 0xfd, 0x6f, 0x21, 0x5e, 0x9c, 0x23, 0x6a, 0xec, 0x52, 0x1e, 0xfa, - 0x9f, 0x24, 0x03, 0xfc, 0x33, 0x00, 0x03, 0x35, 0x12, 0x1c, 0x9f, 0x39, 0xf4, 0x70, 0x2f, - 0x34, 0xee, 0x9b, 0x07, 0x92, 0x15, 0x36, 0x2f, 0xa8, 0xd5, 0x00, 0x98, 0x37, 0x48, 0x52, - 0x44, 0x38, 0x99, 0xcf, 0x0d, 0x4f, 0xe6, 0x0a, 0xa4, 0x20, 0x20, 0x28, 0x52, 0xa5, 0xbb, - 0x01, 0x9b, 0x44, 0x4c, 0x16, 0x1e, 0xa6, 0xfb, 0x91, 0x47, 0x2f, 0xcf, 0x60, 0xce, 0xaa, - 0x0c, 0x1b, 0x31, 0x11, 0xa4, 0xbe, 0xa0, 0xba, 0x32, 0x38, 0xa6, 0x15, 0x77, 0x22, 0x64, - 0xd4, 0x4a, 0x64, 0x47, 0x41, 0x2b, 0x0d, 0x2e, 0x7c, 0x91, 0x6d, 0x1f, 0xc2, 0xb9, 0xab, - 0xc0, 0x78, 0xd6, 0xa2, 0x47, 0xdd, 0x90, 0x41, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0xdf, 0x29, 0x9d, 0x0c, 0x2e, 0xc5, 0x94, 0xe5, 0x8b, 0x66, 0xed, - 0x60, 0x82, 0xdd, 0x86, 0x83, 0x9e, 0x02, 0xa7, 0xe3, 0x9e, 0x61, 0x88, 0x2f, 0x02, 0x9d, - 0xe5, 0x95, 0x12, 0x2a, 0x81, 0x99, 0x2b, 0x3c, 0x78, 0x21, 0x8f, 0x2f, 0x9a, 0x7a, 0x9b, - 0x14, 0xa5, 0x3a, 0xd6, 0xd7, 0xa6, 0x6d, 0x5e, 0x91, 0xb8, 0x3e, 0x64, 0xac, 0xf9, 0x21, - 0x27, 0x2e, 0x8a, 0x0c, 0x06, 0xec, 0x07, 0x01, 0x04, 0x57, 0x45, 0x54, 0x48, 0x02, 0xcc, - 0x36, 0x60, 0x19, 0x59, 0x21, 0x3b, 0x6b, 0x0c, 0xdb, 0x96, 0xa7, 0x5c, 0x17, 0xc3, 0xa6, - 0x68, 0xa9, 0x7f, 0x0d, 0x6a, 0x8c, 0x5c, 0xe1, 0x64, 0xa5, 0x18, 0xea, 0x9b, 0xa9, 0xa5, - 0x0e, 0xa7, 0x51, 0x91, 0xfd, 0x86, 0x1b, 0x0f, 0xf1, 0x0e, 0x62, 0xb0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xc6, 0xd3, 0xfc, 0xbe, 0xa6, 0xce, 0xa1, 0xef, 0x53, - 0x01, 0x50, 0x43, 0x9c, 0xde, 0x78, 0x7f, 0x28, 0xad, 0x6e, 0x86, 0x1b, 0xfc, 0x8a, 0x21, - 0x0a, 0x88, 0x5e, 0xcc, 0x24, 0x3f, 0x91, 0x0c, 0xf7, 0x08, 0x24, 0x8d, 0x8c, 0x7a, 0x76, - 0x7e, 0xa8, 0x22, 0xc7, 0xbf, 0xe6, 0x44, 0x63, 0x12, 0x24, 0xc0, 0x27, 0x89, 0x7b, 0xd3, - 0xc5, 0x5c, 0x5c, 0x4f, 0xb7, 0x64, 0xa7, 0x9b, 0x2f, 0xf2, 0xd6, 0xc1, 0x3f, 0x2a, 0x7f, - 0x5c, 0xbe, 0x97, 0x07, 0xd2, 0x6d, 0x7d, 0x7e, 0xe1, 0x39, 0x7f, 0x63, 0x58, 0xd3, 0x24, - 0xa2, 0x4d, 0x55, 0xcf, 0x3c, 0x5d, 0x59, 0x92, 0x52, 0x8f, 0x4f, 0x2e, 0x77, 0x37, 0xd1, - 0x4d, 0xec, 0xf0, 0x60, 0xbd, 0x7b, 0xe5, 0xa8, 0x96, 0xd1, 0x8f, 0xca, 0x11, 0x6c, 0x6a, - 0x15, 0xbe, 0x55, 0xf0, 0x4a, 0x35, 0x1f, 0xa3, 0xdd, 0x4c, 0x1e, 0x5a, 0x42, 0x0f, 0xb8, - 0x22, 0x65, 0x55, 0xe6, 0x78, 0xe9, 0xe6, 0xf4, 0x1f, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x47, 0xc6, 0xd3, 0xfc, 0xbe, 0xa6, 0xce, 0xa1, 0xef, 0x53, 0x01, 0x50, 0x43, - 0x9c, 0xde, 0x78, 0x7f, 0x28, 0xad, 0x6e, 0x86, 0x1b, 0xfc, 0x8a, 0x21, 0x0a, 0x88, 0x5e, - 0xcc, 0x24, 0x3f, 0x91, 0xbb, 0xdf, 0x18, 0x7e, 0xfe, 0xa2, 0xae, 0x6a, 0x90, 0x90, 0xcf, - 0x97, 0xc6, 0x82, 0xc8, 0x97, 0xc1, 0x05, 0xc3, 0xf9, 0x4c, 0x6a, 0x4d, 0x29, 0x16, 0x68, - 0xe3, 0xf2, 0x4d, 0xb6, 0x1b, 0x11, 0x37, 0x75, 0x8f, 0xea, 0xaa, 0xa9, 0x9b, 0x1d, 0x18, - 0x09, 0x3c, 0x24, 0xad, 0x36, 0x9e, 0x43, 0xa2, 0xf9, 0x34, 0x11, 0x13, 0xc4, 0xd2, 0xaf, - 0x87, 0x3d, 0xf5, 0xb0, 0x42, 0x7b, 0x76, 0xc2, 0x00, 0xd5, 0xe5, 0x0a, 0xe1, 0xb4, 0x1c, - 0x0a, 0x64, 0xb4, 0x3b, 0xf7, 0xb2, 0x30, 0x20, 0x7f, 0x12, 0xee, 0x69, 0xae, 0x9b, 0xa1, - 0x6f, 0xd6, 0x53, 0x91, 0x1e, 0x11, 0x66, 0xea, 0xdc, 0xf7, 0x8c, 0x53, 0x11, 0x5e, 0x51, - 0x2a, 0x15, 0xad, 0xe5, 0x68, 0xae, 0xf3, 0x14, 0x04, 0x78, 0xa9, 0x2b, 0x61, 0x2f, 0x91, - 0xcf, 0x62, 0x24, 0x90, 0xeb, 0xd8, 0x22, 0x30, 0xbb, 0xc4, 0xa2, 0x11, 0x30, 0x58, 0x3d, - 0xdb, 0xe3, 0x85, 0xc0, 0x1c, 0x68, 0x66, 0x9b, 0x1b, 0x6c, 0x1d, 0xa6, 0xe9, 0xd4, 0x0a, - 0x17, 0xed, 0x21, 0xdc, 0xa5, 0x96, 0x2d, 0x25, 0x97, 0x4c, 0x9b, 0x5d, 0x5c, 0xfa, 0x26, + 0x31, 0x98, 0x80, 0xdd, 0xe2, 0xbb, 0xd9, 0x03, 0x1a, 0xe5, 0xd8, 0x2f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfd, 0xe0, 0x1c, 0x1c, 0xe7, 0x83, 0x2f, 0xe7, 0xad, 0xd3, 0xbc, 0x1f, 0xd8, + 0x85, 0x95, 0x8f, 0xc5, 0xfa, 0x16, 0x97, 0xa0, 0x33, 0x6a, 0x45, 0x04, 0xeb, 0xac, 0x5d, + 0x68, 0x32, 0x37, 0xa8, 0x51, 0x01, 0x83, 0xf2, 0x9c, 0x22, 0xde, 0xfb, 0x60, 0x7c, 0x48, + 0x81, 0x6c, 0x49, 0x70, 0x4d, 0x3c, 0xe3, 0x88, 0xea, 0x27, 0xbb, 0xc7, 0x76, 0x5a, 0x43, + 0x96, 0x1f, 0xba, 0x35, 0x4a, 0xf0, 0x95, 0xdc, 0x99, 0x84, 0xdd, 0x6b, 0x89, 0x2f, 0x22, + 0x32, 0x56, 0x34, 0x7a, 0x3a, 0x59, 0x08, 0x3a, 0xed, 0x6d, 0xe7, 0x0d, 0xd3, 0x27, 0xa9, + 0x5e, 0x0f, 0x3d, 0xd1, 0x53, 0x1d, 0x01, 0xf8, 0x74, 0x82, 0x9d, 0x80, 0x95, 0x24, 0x28, + 0x83, 0xe0, 0x60, 0x45, 0xc1, 0x18, 0x6a, 0xb0, 0x81, 0x24, 0xb5, 0xdd, 0x0b, 0x5e, 0xc8, + 0x6c, 0x6b, 0xdd, 0x12, 0xf5, 0x71, 0x3f, 0xb6, 0xce, 0x12, 0x5c, 0x02, 0x03, 0xd9, 0x19, + 0x1b, 0xc6, 0x3a, 0x1d, 0xe8, 0x97, 0x69, 0x8f, 0x59, 0x06, 0x0b, 0x12, 0x4c, 0xd8, 0x1b, + 0x8c, 0xea, 0x5e, 0x2a, 0x02, 0x65, 0x77, 0xeb, 0xae, 0x2e, 0xdf, 0x3e, 0x23, 0x82, 0x03, + 0xb6, 0x70, 0x33, 0x1c, 0x0c, 0xb3, 0x2a, 0x22, 0x9e, 0x26, 0x33, 0x05, 0x48, 0x4d, 0x7f, + 0x3e, 0xf8, 0x96, 0xc4, 0xe0, 0x3b, 0xad, 0x52, 0xbe, 0xe2, 0x25, 0x02, 0x96, 0x69, 0x8b, + 0x47, 0xbe, 0xa4, 0xf6, 0x03, 0x42, 0xa2, 0x3e, 0x0a, 0xb9, 0x08, 0xa3, 0xc0, 0x94, 0x54, + 0x3f, 0xbe, 0xff, 0x20, 0x74, 0x8c, 0x3e, 0x75, 0xb7, 0xcf, 0x97, 0x55, 0x81, 0x33, 0x88, + 0xd5, 0xd8, 0x87, 0x1f, 0x86, 0x2b, 0xd4, 0x44, 0xe3, 0x46, 0x9e, 0x9e, 0x72, 0x30, 0x23, + 0x21, 0xbf, 0x35, 0x11, 0x4d, 0xc6, 0xc8, 0x34, 0x1c, 0x83, 0x8f, 0x96, 0x2d, 0xeb, 0xbe, + 0xeb, 0xf9, 0x72, 0x7a, 0x13, 0x2e, 0xa1, 0xa0, 0x3a, 0x01, 0x41, 0xd6, 0x96, 0x5b, 0xf1, + 0x52, 0xfc, 0xaa, 0x6d, 0x18, 0xef, 0x7c, 0x24, 0xe3, 0x21, 0x03, 0xcb, 0xeb, 0xd9, 0xc1, + 0xc8, 0x7f, 0x06, 0x01, 0xda, 0x6e, 0x4f, 0x07, 0xaf, 0x42, 0x61, 0x5a, 0x0b, 0x2d, 0x41, + 0xae, 0xbf, 0xe0, 0x2e, 0x1c, 0x2f, 0xfa, 0xac, 0xed, 0x5c, 0x3d, 0x99, 0x6c, 0x8f, 0xea, + 0x94, 0x7a, 0xdf, 0x79, 0x75, 0xc4, 0xd6, 0x41, 0x9b, 0x20, 0xaa, 0x0c, 0x80, 0x4b, 0x86, + 0x75, 0x30, 0xbc, 0x1d, 0x1d, 0x61, 0x03, 0xee, 0x6a, 0x66, 0x74, 0x53, 0x0f, 0xed, 0x4b, + 0x4a, 0x12, 0x89, 0xd4, 0x37, 0x69, 0x02, 0xfc, 0x5e, 0xd3, 0x33, 0x92, 0x11, 0x1c, 0x32, + 0x3f, 0x6e, 0x73, 0xa0, 0x7b, 0xa0, 0x4c, 0x69, 0xf8, 0xe4, 0x21, 0x4b, 0xe8, 0x07, 0x4e, + 0x76, 0x12, 0x4e, 0x84, 0x99, 0x0d, 0x53, 0x09, 0x1a, 0x4b, 0x95, 0xa9, 0xd4, 0x82, 0xa0, + 0xb2, 0x44, 0x7d, 0x91, 0x12, 0x55, 0xbb, 0x3f, 0x31, 0x2c, 0x70, 0x61, 0x51, 0xd8, 0xa8, + 0x7d, 0x28, 0x4a, 0xaa, 0x0e, 0x4e, 0x24, 0xc0, 0x59, 0xc0, 0x7f, 0x49, 0x52, 0xd3, 0xfb, + 0x03, 0x08, 0xac, 0xbb, 0xe1, 0x51, 0x38, 0x42, 0xcf, 0x78, 0x81, 0x15, 0x90, 0x80, 0xf1, + 0x0b, 0xd0, 0xf1, 0x69, 0x16, 0x9d, 0x0c, 0x0c, 0x12, 0x67, 0x70, 0xa9, 0xb7, 0x98, 0x5f, + 0x0a, 0xed, 0x26, 0x2b, 0xa2, 0x74, 0x9b, 0x2c, 0x9a, 0x23, 0x7f, 0xaf, 0xef, 0xda, 0xac, + 0x68, 0xb8, 0x75, 0x6c, 0x2a, 0x62, 0x8f, 0x5b, 0xf2, 0xb7, 0xbd, 0xd8, 0x04, 0xd2, 0x3e, + 0x2a, 0x8b, 0x9e, 0xb7, 0x0d, 0xd3, 0x85, 0x86, 0xc8, 0x42, 0xd7, 0xa0, 0xe3, 0xc7, 0x1d, + 0xcb, 0xe5, 0xe6, 0x51, 0x34, 0x33, 0x75, 0xad, 0xde, 0x02, 0xe5, 0x50, 0x11, 0x07, 0x33, + 0x95, 0x38, 0xb0, 0xe2, 0xdc, 0x45, 0xa9, 0xcb, 0x2e, 0xb8, 0x83, 0x1a, 0xd7, 0x7b, 0xb6, + 0x1d, 0x03, 0x59, 0xad, 0x4c, 0x1a, 0x2d, 0xc3, 0x1b, 0x29, 0xa8, 0x50, 0xa3, 0x1d, 0x7e, + 0x72, 0xd0, 0x0b, 0x97, 0x8d, 0xe4, 0xb5, 0x70, 0xa9, 0xa4, 0xe4, 0xa4, 0x03, 0x15, 0x6c, + 0xdf, 0x35, 0x11, 0x54, 0x97, 0x59, 0x75, 0xd4, 0x24, 0xbd, 0x99, 0x33, 0x41, 0x50, 0x81, + 0xcd, 0xca, 0x5e, 0xeb, 0x41, 0x1c, 0x4a, 0x72, 0x3b, 0x6a, 0x2d, 0x19, 0xab, 0x96, 0xd3, + 0xa9, 0xff, 0x27, 0x3d, 0x5e, 0x92, 0x3d, 0x15, 0x84, 0x25, 0x31, 0x9c, 0xce, 0x5c, 0x63, + 0xc6, 0xee, 0x3a, 0xdb, 0xc5, 0xb3, 0x6e, 0x05, 0x59, 0x74, 0x72, 0x66, 0x9d, 0x4b, 0xb4, + 0x8a, 0x29, 0x22, 0x71, 0xa1, 0x0a, 0x85, 0xff, 0x72, 0x74, 0xa7, 0x4e, 0x5a, 0x96, 0xe2, + 0x23, 0xd0, 0x70, 0x5c, 0x08, 0xda, 0x72, 0x04, 0x25, 0xe9, 0x8e, 0xf2, 0x70, 0xf9, 0x07, + 0xa2, 0x00, 0x85, 0xba, 0xbb, 0x3f, 0x64, 0x2b, 0xf6, 0x7d, 0xd8, 0xeb, 0x3f, 0xda, 0x67, + 0x59, 0x2b, 0x6d, 0xee, 0x43, 0x60, 0x89, 0x5e, 0x22, 0x71, 0x37, 0x83, 0x89, 0x9e, 0xc9, + 0xfe, 0x37, 0xf8, 0x61, 0xe7, 0x3c, 0xd5, 0x26, 0x1a, 0x0b, 0xe0, 0x4a, 0xf4, 0x40, 0xb5, + 0xf3, 0x5f, 0xce, 0xfd, 0x34, 0x5b, 0xba, 0x49, 0xa0, 0x2f, 0x7e, 0x75, 0x4b, 0xd5, 0x27, + 0x6e, 0x34, 0x3a, 0x8f, 0x1f, 0x08, 0x1f, 0x7e, 0x90, 0x42, 0x95, 0xa1, 0x2f, 0x57, 0xd8, + 0xb0, 0x92, 0x7b, 0xe3, 0x22, 0xb3, 0x53, 0x68, 0xc4, 0x63, 0x52, 0x54, 0x15, 0xe5, 0xfc, + 0x01, 0xe4, 0x3c, 0x70, 0x64, 0x33, 0x12, 0x58, 0xef, 0x89, 0x5a, 0x5f, 0x0f, 0x23, 0xbd, + 0xc7, 0xb2, 0x09, 0x5c, 0x2d, 0x27, 0x01, 0x1b, 0xf1, 0x7d, 0xbe, 0x37, 0xec, 0xa6, 0x6d, + 0x44, 0xef, 0x56, 0x5a, 0xb7, 0xcf, 0x92, 0x80, 0xa6, 0x46, 0x51, 0xa3, 0x96, 0x35, 0xb0, + 0x42, 0xac, 0x1b, 0x74, 0xbb, 0xbf, 0xcf, 0x79, 0x2e, 0x92, 0xca, 0xda, 0xba, 0x08, 0x67, + 0x7a, 0x83, 0x6f, 0x10, 0xbb, 0x0d, 0x1a, 0xcb, 0xf1, 0x31, 0x8c, 0x7b, 0x39, 0xdf, 0xed, + 0x8b, 0x7c, 0xa0, 0xd6, 0x4a, 0x24, 0xca, 0x09, 0xd7, 0x17, 0xdc, 0x61, 0x8e, 0x03, 0x68, + 0x18, 0xea, 0x11, 0xc7, 0x43, 0xaa, 0x6e, 0x6a, 0x2f, 0xbb, 0xdd, 0x0c, 0x42, 0xf7, 0xc5, + 0x91, 0x22, 0x39, 0x2b, 0xb9, 0x05, 0x15, 0xb4, 0x25, 0xb6, 0x2c, 0xcc, 0x85, 0xb3, 0x11, + 0xd8, 0x80, 0xcf, 0x24, 0xe6, 0x21, 0xf1, 0x00, 0xcd, 0xb8, 0x55, 0x2c, 0x4e, 0x02, 0x36, + 0x05, 0x83, 0x67, 0x6a, 0xe3, 0x3c, 0xd3, 0x14, 0xbf, 0x49, 0xa5, 0xb6, 0x97, 0x9e, 0x6a, + 0x7f, 0xc3, 0x79, 0x75, 0x9b, 0xf1, 0xdc, 0x9a, 0xc5, 0x1b, 0x62, 0xc8, 0xb1, 0x85, 0x1b, + 0x87, 0xa5, 0x8a, 0xc9, 0xfd, 0x2a, 0x9f, 0x30, 0xa6, 0x1e, 0x7d, 0x96, 0x54, 0x6c, 0xe5, + 0x3f, 0x84, 0x76, 0xb5, 0x75, 0x77, 0x7a, 0x53, 0x34, 0x84, 0x77, 0x7f, 0xa4, 0xad, 0x9d, + 0x92, 0x1a, 0xa5, 0x89, 0xf4, 0xd8, 0x80, 0xde, 0x9c, 0x28, 0xc9, 0x3c, 0x26, 0xe6, 0xd4, + 0x28, 0x4a, 0x3c, 0xe6, 0x4d, 0xdd, 0x45, 0x44, 0x90, 0xf7, 0x3c, 0x9d, 0xb8, 0xf4, 0xf1, + 0xf4, 0x9e, 0x9c, 0xc9, 0x39, 0x40, 0x5d, 0x63, 0x5f, 0x6b, 0xa3, 0xbe, 0x25, 0x11, 0xc2, + 0xc1, 0x46, 0x2d, 0x65, 0x90, 0x5d, 0x8f, 0x2f, 0x40, 0xfb, 0x82, 0xd1, 0x12, 0x14, 0x1f, + 0xd9, 0x59, 0x1b, 0xf8, 0x8e, 0xc9, 0x8f, 0x82, 0xae, 0xe3, 0xe7, 0xd0, 0xa8, 0xc0, 0x15, + 0x6b, 0xba, 0xd0, 0x6f, 0xd3, 0xee, 0xab, 0x3d, 0xa0, 0x41, 0xba, 0x47, 0xc5, 0x72, 0xb3, + 0xbe, 0x65, 0xba, 0xe5, 0x32, 0x89, 0x3a, 0xe1, 0xb6, 0x9d, 0x3e, 0x37, 0xa0, 0x55, 0xc0, + 0x2e, 0x99, 0x4e, 0x84, 0x29, 0xab, 0xa5, 0xdd, 0x5b, 0x45, 0x53, 0x35, 0x14, 0x4c, 0x63, + 0xd6, 0xeb, 0xc6, 0x17, 0x14, 0x23, 0xf2, 0xdd, 0x8a, 0xc6, 0x00, 0xe6, 0x48, 0xd3, 0x45, + 0x12, 0x92, 0x9d, 0x7f, 0xb6, 0x6b, 0x5f, 0xdb, 0x19, 0xf0, 0x04, 0xc7, 0xe7, 0x5e, 0x5e, + 0x1d, 0x5e, 0x7a, 0xf2, 0x9a, 0x5a, 0xcc, 0x9b, 0x87, 0xc8, 0x56, 0x3c, 0x97, 0xb1, 0xc4, + 0xcf, 0xc8, 0x48, 0x67, 0x6b, 0x1a, 0x38, 0xac, 0x76, 0xef, 0x4a, 0xb4, 0x41, 0xf9, 0x23, + 0x53, 0x25, 0xdc, 0x14, 0x16, 0x91, 0x1b, 0xf0, 0x7e, 0xd7, 0xc5, 0x98, 0xf6, 0xfc, 0x1c, + 0x16, 0xb7, 0xd4, 0xa9, 0x24, 0x89, 0xb5, 0x82, 0x1f, 0x71, 0x51, 0xa1, 0x1c, 0xe2, 0xdf, + 0xe0, 0x4d, 0x95, 0xd6, 0x61, 0xa5, 0xcf, 0x28, 0x4b, 0x4b, 0xbf, 0x83, 0xba, 0xee, 0x51, + 0x65, 0xa3, 0xce, 0xba, 0x10, 0x3d, 0x36, 0xd1, 0x5f, 0xc1, 0xa9, 0x73, 0x92, 0x29, 0xe2, + 0x17, 0x89, 0x21, 0x05, 0x81, 0xf9, 0x20, 0x63, 0x23, 0xcf, 0x03, 0x52, 0x6e, 0x2a, 0xa3, + 0x8f, 0x61, 0x4b, 0xb5, 0x98, 0x53, 0x12, 0x8d, 0xd6, 0x88, 0xb7, 0x11, 0xaf, 0xaf, 0x15, + 0x98, 0x6e, 0x89, 0xca, 0xc8, 0xb4, 0xb9, 0x3b, 0x1e, 0xe2, 0x4d, 0x55, 0xbc, 0x40, 0x74, + 0x3a, 0x47, 0x83, 0x74, 0x6c, 0xaf, 0x4f, 0x5b, 0xca, 0xd2, 0x00, 0x36, 0x37, 0x85, 0xc7, + 0x54, 0xd6, 0xaf, 0x2d, 0xd5, 0xd5, 0x19, 0xa4, 0x15, 0x12, 0x23, 0x14, 0x8e, 0x4f, 0x5c, + 0x89, 0x70, 0x3d, 0xfd, 0x20, 0x9d, 0x8a, 0x38, 0xb5, 0xbc, 0x55, 0xc5, 0xf1, 0xf6, 0x44, + 0xe6, 0xe0, 0x71, 0xbd, 0xd8, 0xf6, 0x59, 0x71, 0x41, 0xc3, 0x75, 0x30, 0xb7, 0xef, 0x9e, + 0x51, 0x3c, 0x49, 0xf9, 0xb7, 0xb0, 0xe0, 0xc7, 0x43, 0x83, 0x09, 0x31, 0xae, 0x29, 0x58, + 0xc7, 0x3b, 0x14, 0xab, 0x1f, 0x35, 0xe2, 0x61, 0x82, 0x98, 0xdb, 0x2c, 0x43, 0x7c, 0x95, + 0xd6, 0xd4, 0xb1, 0x3c, 0x41, 0xb4, 0xbd, 0xb5, 0x1f, 0x13, 0xc1, 0x81, 0x37, 0x62, 0xe2, + 0x13, 0xe1, 0x86, 0x55, 0x38, 0x2d, 0x67, 0x0f, 0x55, 0xd9, 0x7b, 0x2e, 0xd8, 0x3c, 0x69, + 0x54, 0x88, 0xef, 0xe5, 0x83, 0x1e, 0xc8, 0x26, 0x56, 0xc6, 0xd4, 0x2b, 0xaa, 0x15, 0x43, + 0x88, 0xd4, 0xe2, 0x12, 0xfb, 0x5c, 0x98, 0x0b, 0x87, 0x47, 0x6e, 0x62, 0xf4, 0xd8, 0xe8, + 0x43, 0x02, 0xf2, 0x3c, 0x54, 0xb9, 0x5b, 0x7b, 0x1b, 0x74, 0xe0, 0xe4, 0x42, 0x19, 0xda, + 0xbb, 0x8e, 0x8b, 0x4d, 0x48, 0x30, 0xa7, 0x49, 0x4b, 0x62, 0x7e, 0x1f, 0x6e, 0x62, 0xa6, + 0x34, 0xb8, 0x6d, 0xc8, 0x21, 0xdb, 0xae, 0xf4, 0xe3, 0xe3, 0xb5, 0x3e, 0x69, 0xad, 0x67, + 0x0f, 0x15, 0x88, 0xf2, 0xae, 0xbd, 0xb7, 0x02, 0x82, 0x80, 0x98, 0x50, 0x80, 0x60, 0xb5, + 0x3c, 0xca, 0x72, 0xfa, 0x8c, 0x92, 0x88, 0x1a, 0x20, 0xa8, 0x52, 0xeb, 0x13, 0x15, 0xc2, + 0x43, 0x9e, 0xc8, 0x9f, 0xa1, 0x83, 0xe6, 0x7a, 0x81, 0xc6, 0x59, 0x0d, 0xd5, 0x1a, 0x74, + 0x35, 0x53, 0xfa, 0x48, 0xfa, 0x9f, 0x10, 0x49, 0x5c, 0x62, 0x49, 0xc7, 0xbb, 0xc5, 0x1e, + 0xd0, 0x8e, 0x70, 0x3c, 0xe7, 0x10, 0x3e, 0x28, 0xb1, 0x2a, 0x26, 0x3f, 0xbe, 0x66, 0x46, + 0x6a, 0xd6, 0x6c, 0x11, 0xbd, 0x9c, 0x66, 0xc2, 0x74, 0x94, 0xb9, 0x81, 0x5e, 0x16, 0x00, + 0xbc, 0xb2, 0xe4, 0x24, 0x8a, 0x51, 0x4a, 0x42, 0x1b, 0xd0, 0xb0, 0x36, 0x3d, 0x88, 0x88, + 0xad, 0x8c, 0x9c, 0x36, 0x05, 0xb0, 0x05, 0xa5, 0x1e, 0x77, 0xaf, 0x8a, 0x3a, 0xe4, 0x00, + 0x9f, 0x34, 0xa2, 0x4e, 0xe2, 0x42, 0xa6, 0x0c, 0xf5, 0xc0, 0xb2, 0x86, 0x0c, 0x71, 0x5c, + 0xc5, 0x63, 0x37, 0xfe, 0x99, 0x83, 0xa8, 0x93, 0xbe, 0x43, 0xfe, 0x75, 0xc8, 0x79, 0x97, + 0xd6, 0xef, 0xf3, 0xe8, 0x7c, 0xa3, 0x49, 0x23, 0xfb, 0x39, 0x99, 0x3d, 0xbf, 0xdd, 0xca, + 0x1d, 0x98, 0x61, 0xb9, 0x31, 0x4b, 0xf4, 0x20, 0xdf, 0xef, 0x04, 0xb0, 0xed, 0xd9, 0xfc, + 0x9a, 0x5b, 0x6d, 0x7e, 0xce, 0xdb, 0xb7, 0xd6, 0x69, 0xa5, 0xcd, 0xb5, 0x04, 0x5f, 0x9a, + 0x72, 0x17, 0xf8, 0x3c, 0x62, 0xe3, 0xea, 0xab, 0x4f, 0xca, 0xeb, 0x34, 0x70, 0x62, 0xb0, + 0x28, 0x57, 0xe7, 0xc0, 0x73, 0xee, 0xe8, 0x27, 0xe0, 0xf1, 0xa9, 0xc3, 0x7f, 0x4f, 0xc3, + 0xa9, 0x14, 0xb2, 0xf5, 0x83, 0xf5, 0x63, 0x2a, 0x2f, 0xb9, 0x74, 0xaa, 0x64, 0xf0, 0x82, + 0x45, 0xc7, 0x06, 0xad, 0x94, 0xe2, 0x9f, 0x7b, 0x8d, 0x1b, 0x8b, 0x5a, 0x42, 0x3b, 0xc3, + 0xb5, 0xb4, 0xdd, 0x91, 0x06, 0xd1, 0xfa, 0x78, 0x7a, 0x9d, 0x5d, 0x6f, 0x64, 0xf3, 0x27, + 0x3f, 0x37, 0x58, 0x60, 0x0f, 0xf3, 0x9b, 0x6f, 0xf0, 0x69, 0x0d, 0x7f, 0x4d, 0xde, 0x70, + 0x1a, 0xa0, 0x4e, 0x66, 0x4c, 0x9c, 0x3f, 0x62, 0x26, 0x22, 0x73, 0x67, 0x04, 0xa5, 0x23, + 0xf7, 0x8b, 0xcf, 0xad, 0x7e, 0x88, 0x2c, 0xec, 0x28, 0x18, 0x3b, 0xf1, 0x53, 0x16, 0x37, + 0x0d, 0xbd, 0x4f, 0x31, 0x64, 0xbd, 0xb1, 0x22, 0x4f, 0x49, 0xa2, 0x71, 0x21, 0xe5, 0x7f, + 0x7c, 0xbb, 0x7f, 0x8a, 0x28, 0x65, 0x0f, 0xd2, 0x58, 0x9c, 0xd1, 0x09, 0xac, 0x10, 0x40, + 0x19, 0x4c, 0x44, 0xbc, 0xb8, 0x47, 0x9d, 0x65, 0x58, 0x00, 0xca, 0xc9, 0xfe, 0x82, 0x71, + 0x7e, 0x94, 0x96, 0xbf, 0x32, 0xe8, 0xd3, 0xe3, 0xa4, 0xb5, 0xfa, 0x78, 0x26, 0xf4, 0xcc, + 0x86, 0x87, 0x8f, 0xd4, 0xef, 0x98, 0x57, 0x64, 0x0c, 0x59, 0xb6, 0x0b, 0xa7, 0x27, 0x6a, + 0xf3, 0xe4, 0x49, 0x67, 0x9f, 0xa7, 0x89, 0x39, 0xdc, 0x59, 0x0c, 0x1f, 0xc3, 0x92, 0xb8, + 0x54, 0xc7, 0xe8, 0xc4, 0x52, 0x81, 0x08, 0xbd, 0xa4, 0xe4, 0xa0, 0xc1, 0x4d, 0x27, 0xad, + 0xff, 0x03, 0xc0, 0x42, 0x9b, 0xda, 0xbb, 0xe2, 0xdf, 0x42, 0x49, 0x31, 0x1d, 0x5f, 0x7a, + 0x7e, 0xc3, 0x5f, 0x02, 0x3b, 0x16, 0x6f, 0x7d, 0xe5, 0xa1, 0xa5, 0x21, 0x61, 0x5d, 0xb0, + 0x37, 0x6c, 0xc1, 0x23, 0x7e, 0xc9, 0x02, 0xa4, 0xf7, 0x66, 0x24, 0xa8, 0xa5, 0xc6, 0x5a, + 0x29, 0x3d, 0x4e, 0xf3, 0x34, 0x44, 0x29, 0xaa, 0xdb, 0x48, 0x26, 0x33, 0xbc, 0xcd, 0xcb, + 0xe1, 0x16, 0x0d, 0xcd, 0x09, 0x8b, 0x71, 0xde, 0xb8, 0x41, 0x53, 0x06, 0x80, 0x83, 0xcc, + 0x69, 0x76, 0xcb, 0x9f, 0xdb, 0x46, 0xdb, 0xe2, 0x26, 0xfa, 0x58, 0x79, 0x70, 0xfd, 0xb4, + 0xfb, 0x14, 0xb0, 0x77, 0x20, 0xde, 0x20, 0xca, 0xe8, 0x00, 0x01, 0x4c, 0x66, 0xda, 0x83, + 0x35, 0x30, 0xb8, 0x4d, 0x7f, 0x5f, 0x19, 0x77, 0xf7, 0x48, 0x13, 0x50, 0x77, 0x15, 0xdd, + 0xa0, 0x07, 0x1e, 0x84, 0x5f, 0x9c, 0x29, 0x1f, 0xcc, 0x4f, 0xa4, 0x51, 0x3b, 0x24, 0xaf, + 0x47, 0x00, 0x0d, 0x23, 0x0d, 0x72, 0xee, 0x0a, 0x42, 0xc0, 0xa3, 0x56, 0xc1, 0xf9, 0x6f, + 0xca, 0x44, 0xb3, 0x13, 0x39, 0x6c, 0x97, 0x4b, 0x08, 0x49, 0xaa, 0x95, 0xd0, 0x06, 0x25, + 0x62, 0xd0, 0xfb, 0xb3, 0x1d, 0x47, 0xaf, 0x78, 0xe4, 0xe8, 0x57, 0xcd, 0xbb, 0x43, 0xf2, + 0x01, 0x4e, 0xba, 0xa8, 0xcf, 0x79, 0x60, 0x67, 0x86, 0x3b, 0x04, 0x44, 0xbf, 0x7a, 0x3a, + 0x20, 0x78, 0x16, 0xc5, 0xeb, 0x8d, 0xac, 0x79, 0x2d, 0x15, 0xa0, 0x1f, 0x7c, 0xe0, 0xbd, + 0x48, 0xa5, 0xa3, 0x68, 0x7c, 0xbd, 0x8b, 0xed, 0xd3, 0x64, 0xd1, 0x76, 0x10, 0x65, 0x61, + 0x49, 0x3b, 0xb8, 0xe8, 0x3f, 0x63, 0xbc, 0x67, 0xfd, 0x07, 0xf8, 0xb1, 0x1f, 0xcf, 0x3b, + 0xf9, 0x9b, 0x2a, 0x1d, 0xaa, 0xc1, 0xa0, 0x01, 0xee, 0x09, 0xd6, 0xf8, 0xd3, 0x97, 0x3c, + 0x62, 0x3b, 0x88, 0x38, 0x98, 0x8b, 0x4f, 0xaa, 0xa1, 0xd9, 0x15, 0x12, 0x33, 0xff, 0x1c, + 0xb8, 0x9e, 0x94, 0x7c, 0xcf, 0x32, 0x2d, 0x59, 0xb0, 0x01, 0x1f, 0xbc, 0x1b, 0xf6, 0x6f, + 0x5a, 0x28, 0x67, 0xc0, 0xa3, 0x53, 0x85, 0xd5, 0x54, 0x63, 0xcb, 0x7f, 0xd0, 0x1d, 0xb5, + 0x93, 0x2b, 0x9a, 0x16, 0x3e, 0xe6, 0xcc, 0x11, 0xef, 0x0d, 0x19, 0xe0, 0x9e, 0x2d, 0xde, + 0x42, 0x45, 0x57, 0x1f, 0xa0, 0x1b, 0x86, 0x24, 0x92, 0x6e, 0x27, 0xa9, 0xba, 0xe5, 0x27, + 0xa2, 0x7d, 0xbf, 0xa1, 0xfe, 0xc4, 0xc5, 0x68, 0x7a, 0x61, 0x93, 0xa5, 0x33, 0x64, 0x69, + 0xff, 0x40, 0xfe, 0x03, 0xeb, 0x03, 0x38, 0x88, 0x9d, 0xad, 0xd8, 0x6d, 0x84, 0xa6, 0x38, + 0x1b, 0x2f, 0x65, 0xcd, 0xb3, 0xb6, 0x88, 0x0e, 0xe6, 0x7d, 0xe0, 0x85, 0x72, 0xd6, 0xfa, + 0xe5, 0xc5, 0xdf, 0x6b, 0x2e, 0xc4, 0xe1, 0x21, 0x6a, 0x59, 0x99, 0xcb, 0x3c, 0x2b, 0xbd, + 0xff, 0xac, 0xb1, 0x57, 0xd1, 0xe9, 0x40, 0x61, 0xb4, 0xeb, 0x98, 0x5d, 0x15, 0x3b, 0x88, + 0x40, 0xc5, 0x37, 0x46, 0x3e, 0x8a, 0x15, 0xe5, 0x53, 0x32, 0x15, 0x52, 0x2f, 0x1d, 0x4a, + 0xb7, 0x4f, 0x09, 0xa2, 0x1b, 0x1e, 0x9c, 0x85, 0x16, 0x88, 0xc2, 0x13, 0x1f, 0x7d, 0xa8, + 0x4c, 0x95, 0xf3, 0x90, 0xee, 0xba, 0xe3, 0x5d, 0xbd, 0xfe, 0x1e, 0x28, 0xd5, 0xd0, 0x75, + 0x5d, 0x41, 0x97, 0x07, 0x31, 0x7e, 0xa4, 0x5d, 0x75, 0xe8, 0x8c, 0x40, 0xd5, 0xdf, 0x34, + 0x31, 0x6f, 0xcc, 0x7f, 0x59, 0xde, 0x8a, 0xf8, 0x2e, 0x1c, 0xb0, 0xba, 0x3e, 0x10, 0xff, + 0x17, 0x75, 0xb8, 0xd6, 0xf6, 0xba, 0x21, 0x41, 0xa1, 0xf8, 0x3b, 0x21, 0xb5, 0x77, 0xaf, + 0xea, 0x55, 0x4f, 0x70, 0x9f, 0xb4, 0xc3, 0x73, 0xf6, 0xdb, 0xc6, 0x6a, 0x4e, 0x97, 0xc3, + 0x1a, 0x50, 0x01, 0x29, 0x68, 0x4d, 0x73, 0x15, 0x87, 0x46, 0x33, 0x45, 0x3e, 0x7a, 0xc8, + 0xc1, 0x0f, 0x63, 0xae, 0x47, 0x08, 0xb2, 0x83, 0x61, 0xc7, 0x72, 0x72, 0x5a, 0x11, 0x0f, + 0xd3, 0xe6, 0x26, 0xb0, 0x20, 0xd8, 0xb5, 0xb3, 0x82, 0x0f, 0xaf, 0x67, 0xe0, 0x2e, 0x3f, + 0xeb, 0x9d, 0x13, 0xba, 0x99, 0xf4, 0x0b, 0x6a, 0xe8, 0x34, 0xce, 0x75, 0x88, 0x1c, 0x44, + 0xd8, 0x12, 0x4f, 0x3f, 0x23, 0x4c, 0xd0, 0x03, 0xd5, 0xcd, 0xda, 0x11, 0x6a, 0x21, 0x8c, + 0x3d, 0xfd, 0x10, 0x19, 0x69, 0x0b, 0x31, 0xec, 0x25, 0x46, 0xb0, 0xbe, 0x26, 0x60, 0xae, + 0xea, 0x3b, 0x11, 0xd3, 0x75, 0xcc, 0x19, 0xca, 0x2c, 0x57, 0xfb, 0x3c, 0xa8, 0x17, 0xa5, + 0x3d, 0xd3, 0x35, 0x7c, 0xd5, 0xf0, 0xb7, 0x2c, 0x3a, 0x06, 0xdf, 0xfe, 0xe3, 0x2e, 0xe6, + 0x13, 0xeb, 0x53, 0xa0, 0xf6, 0x79, 0x66, 0x21, 0x08, 0xf4, 0x20, 0x02, 0xea, 0x24, 0xbf, + 0x40, 0xc2, 0xdb, 0x02, 0x6d, 0xc5, 0x95, 0x71, 0x0d, 0x23, 0xbd, 0x9e, 0xf5, 0x71, 0xdd, + 0x37, 0x13, 0x49, 0x55, 0x08, 0x3c, 0x25, 0xab, 0x96, 0x8d, 0x23, 0xba, 0xe8, 0x1d, 0x22, + 0xc3, 0xa1, 0x6f, 0x10, 0xf3, 0xd7, 0x5c, 0xfd, 0x7e, 0xac, 0x83, 0x37, 0x22, 0x6d, 0xda, + 0x95, 0x54, 0x09, 0x3d, 0xb1, 0xc6, 0x02, 0x61, 0x93, 0x1c, 0x27, 0x8b, 0x11, 0x84, 0x67, + 0x96, 0xd5, 0x6a, 0x47, 0x7f, 0x45, 0x4e, 0xe0, 0x40, 0x53, 0x26, 0x87, 0x09, 0xb9, 0x35, + 0xb1, 0x98, 0xff, 0xa0, 0x96, 0xdc, 0xe5, 0xc9, 0xd3, 0xbb, 0x1b, 0xbb, 0xd8, 0xfc, 0x19, + 0xa3, 0x8d, 0x52, 0x96, 0x03, 0x88, 0x1a, 0x9d, 0x44, 0x9f, 0x52, 0x26, 0x50, 0xae, 0xfa, + 0x9e, 0x05, 0x30, 0xd9, 0x2f, 0x27, 0x12, 0xc6, 0x12, 0x2b, 0xc8, 0x74, 0x58, 0x7f, 0xc8, + 0x0c, 0x29, 0xbe, 0xee, 0xe0, 0xc2, 0xf5, 0x32, 0x60, 0x7c, 0xc6, 0x3a, 0xa8, 0xa9, 0x14, + 0x13, 0xbb, 0xc3, 0x51, 0xa2, 0xa3, 0x55, 0xb4, 0x0b, 0x3f, 0xad, 0x78, 0x71, 0x97, 0x6b, + 0x6a, 0x46, 0x49, 0x1c, 0xa9, 0x46, 0x07, 0xf2, 0x7b, 0x20, 0x18, 0xaf, 0x66, 0xa8, 0xd6, + 0xe4, 0x29, 0xb8, 0x95, 0x5a, 0x68, 0xe1, 0x0f, 0x35, 0x85, 0x66, 0x6b, 0x40, 0x00, 0x52, + 0x48, 0xf3, 0x9f, 0xa2, 0x74, 0x02, 0x0d, 0x57, 0xf7, 0x6a, 0xf5, 0x2e, 0x86, 0x0f, 0x60, + 0x04, 0xf2, 0x0b, 0x33, 0x17, 0x4e, 0x16, 0xb1, 0x84, 0xd3, 0x9f, 0x90, 0xad, 0x5c, 0x56, + 0x3d, 0xa4, 0x4b, 0xe6, 0xa5, 0x26, 0xde, 0x1b, 0x25, 0x8a, 0x20, 0x64, 0x9f, 0xe5, 0xb0, + 0x84, 0xb5, 0x46, 0x41, 0x73, 0x85, 0xed, 0xe6, 0xef, 0x19, 0xab, 0x67, 0x70, 0xdd, 0x56, + 0x58, 0x3d, 0x2f, 0x3d, 0x36, 0x90, 0x1a, 0xab, 0x37, 0x1a, 0x34, 0x1c, 0x1f, 0xbf, 0x11, + 0x92, 0x99, 0x50, 0x84, 0x5b, 0x05, 0xb8, 0x33, 0xda, 0xbf, 0xf5, 0x60, 0x8b, 0x2b, 0x03, + 0x46, 0xd8, 0xf4, 0x1f, 0xfb, 0x24, 0xb2, 0xbe, 0x31, 0x87, 0xcd, 0x2c, 0xa8, 0x6d, 0x06, + 0xe8, 0xad, 0xae, 0xdd, 0x3f, 0x3e, 0x9c, 0xa9, 0xf6, 0xe1, 0xcb, 0xb8, 0x5b, 0xf6, 0xc3, + 0x4e, 0xb3, 0xdc, 0xdd, 0x99, 0x31, 0xed, 0xf2, 0x31, 0x2e, 0x43, 0x48, 0x48, 0x1d, 0x3b, + 0xa4, 0x8a, 0x33, 0xee, 0x57, 0xa3, 0x14, 0xc7, 0x71, 0x96, 0xfd, 0x28, 0xb6, 0x35, 0x46, + 0x96, 0x3d, 0xa0, 0xc3, 0xed, 0xb7, 0x42, 0x93, 0x4e, 0x33, 0xda, 0xed, 0x72, 0xcb, 0xd8, + 0x0b, 0x1f, 0xf3, 0x3a, 0x71, 0x6e, 0x22, 0xfc, 0xff, 0x53, 0xb9, 0x3b, 0x87, 0x91, 0x23, + 0x8a, 0x92, 0xf6, 0x20, 0x70, 0xa6, 0xc8, 0xf7, 0x4d, 0x3c, 0x16, 0x11, 0x6c, 0x1f, 0x97, + 0x43, 0xbf, 0x10, 0x0e, 0x0f, 0xe3, 0xe1, 0xdf, 0xd5, 0x12, 0xe6, 0x0f, 0xb0, 0x75, 0xf1, + 0x93, 0xb3, 0xd1, 0x00, 0xf8, 0x32, 0x7a, 0x8b, 0x70, 0x11, 0xb1, 0xa1, 0x2c, 0x51, 0x9e, + 0xc9, 0x02, 0xd7, 0x18, 0x3a, 0x09, 0x95, 0x8a, 0xdb, 0xb4, 0x91, 0xa9, 0xe9, 0xde, 0x00, + 0x70, 0xfc, 0x68, 0x5b, 0x39, 0x63, 0xf1, 0x61, 0x71, 0x12, 0xaa, 0x4e, 0xdd, 0x1a, 0x4b, + 0xd3, 0x5b, 0xb4, 0x59, 0xad, 0x12, 0x1e, 0x34, 0x85, 0x12, 0x30, 0xf7, 0x89, 0x13, 0xc5, + 0x9a, 0xc8, 0xd7, 0x66, 0xb8, 0x4a, 0xb5, 0x10, 0xf6, 0x57, 0x25, 0x7a, 0x10, 0x9d, 0xe2, + 0x29, 0xdd, 0xb3, 0x0b, 0x3d, 0xb0, 0x25, 0xf6, 0x20, 0x60, 0x4d, 0xf2, 0x50, 0x74, 0x1b, + 0x4e, 0xb7, 0x57, 0xf6, 0xa0, 0xb6, 0xd2, 0xa0, 0xba, 0x2c, 0xee, 0x7a, 0xc1, 0x04, 0x68, + 0x00, 0xea, 0xe0, 0x51, 0x92, 0x43, 0x38, 0x0c, 0x40, 0x4a, 0x13, 0x37, 0x66, 0xb6, 0x85, + 0x99, 0x72, 0x36, 0xbf, 0xc7, 0x3e, 0x33, 0x17, 0xe2, 0xda, 0x32, 0xc9, 0xf4, 0x49, 0xae, + 0xce, 0xbb, 0xd0, 0x2c, 0x28, 0xc5, 0xe6, 0x22, 0x26, 0xae, 0xec, 0x14, 0x0e, 0x4c, 0x38, + 0xda, 0xbc, 0x0c, 0x6a, 0xe4, 0xd6, 0xfb, 0xd5, 0xae, 0xda, 0xb7, 0xab, 0xe0, 0xd2, 0xb0, + 0xb0, 0xc7, 0x53, 0x33, 0x67, 0xdb, 0x3a, 0xb3, 0x9c, 0xa1, 0x27, 0xf6, 0x88, 0xef, 0x34, + 0xaa, 0x4a, 0x61, 0xbf, 0x2c, 0xd2, 0xca, 0x5a, 0x0f, 0x59, 0x8b, 0x80, 0x09, 0xe5, 0x61, + 0x0e, 0xfb, 0x05, 0xda, 0x12, 0x49, 0x5c, 0x0b, 0xf0, 0x2e, 0xec, 0x37, 0xfb, 0x85, 0x7f, + 0x7d, 0x19, 0x43, 0xf8, 0xf7, 0x60, 0x93, 0xa2, 0x7b, 0x42, 0x2a, 0x91, 0x0f, 0x49, 0x04, + 0xcf, 0xb8, 0x36, 0xf6, 0x2d, 0x7a, 0xc2, 0x95, 0x76, 0x0a, 0xb9, 0xf2, 0x58, 0x7f, 0x60, + 0xe8, 0x3d, 0x40, 0x28, 0x54, 0xe9, 0xa3, 0x55, 0x0a, 0x19, 0x0f, 0x59, 0xfb, 0xcc, 0x5c, + 0x94, 0xe6, 0xf6, 0xbc, 0xf9, 0xe9, 0xd7, 0x52, 0x7e, 0xf7, 0xe6, 0xc4, 0xaf, 0xb1, 0x3b, + 0x92, 0x8f, 0xd2, 0xfb, 0xba, 0x2a, 0xe0, 0x08, 0xf1, 0x9d, 0xa2, 0xd3, 0x85, 0x88, 0x1d, + 0xfe, 0xce, 0x30, 0xa3, 0xc9, 0x43, 0x39, 0x09, 0xba, 0xe0, 0x80, 0xe0, 0x1f, 0x09, 0xe9, + 0x87, 0xa0, 0x59, 0xf3, 0x68, 0xd7, 0x71, 0x22, 0x46, 0x83, 0x91, 0x59, 0xec, 0x18, 0x33, + 0x45, 0xe5, 0xa8, 0x60, 0x7e, 0x86, 0x0b, 0xf1, 0x94, 0x81, 0x34, 0xd1, 0xab, 0x79, 0x1c, + 0x24, 0x46, 0x09, 0x4d, 0x01, 0x2e, 0x14, 0xe1, 0xa8, 0x2f, 0xa5, 0xd9, 0x51, 0x06, 0xc0, + 0xc9, 0x62, 0x6d, 0xf1, 0xe7, 0xe5, 0x6c, 0xb7, 0xe6, 0xcb, 0xcf, 0xbe, 0xa9, 0x65, 0xf6, + 0x4c, 0xc4, 0x25, 0x53, 0x19, 0xef, 0xf0, 0x9b, 0xcc, 0x40, 0xab, 0x3c, 0xcc, 0x72, 0x94, + 0xac, 0x36, 0x97, 0x01, 0xac, 0x1f, 0x08, 0x3b, 0x61, 0x5e, 0x53, 0x2d, 0x13, 0xea, 0x80, + 0x9e, 0xb6, 0x89, 0x67, 0xb0, 0x31, 0xff, 0xf2, 0xb0, 0x53, 0x6b, 0x78, 0x1e, 0x08, 0x68, + 0x8a, 0x51, 0xde, 0x36, 0x29, 0xd4, 0xc8, 0xe3, 0xe2, 0x99, 0x87, 0xb4, 0xdd, 0xbc, 0xce, + 0xa4, 0x1b, 0x70, 0x60, 0xed, 0x9f, 0x63, 0x5d, 0xa1, 0x06, 0x14, 0x5b, 0xbd, 0x4d, 0xd2, + 0x04, 0x5f, 0x22, 0x15, 0x54, 0x6e, 0xdf, 0xe7, 0x12, 0x05, 0xf5, 0xa1, 0x39, 0xbf, 0x5e, + 0x9a, 0xf5, 0xb6, 0x8d, 0x4c, 0x34, 0xac, 0xc1, 0x93, 0x07, 0xd2, 0x3b, 0x79, 0x71, 0xda, + 0x98, 0xec, 0x2e, 0xbc, 0x82, 0x82, 0xae, 0xab, 0xba, 0x8f, 0x1a, 0x46, 0xaf, 0x4b, 0xaf, + 0x00, 0x27, 0x6a, 0xa0, 0xe9, 0xe5, 0xc2, 0x12, 0x86, 0x5d, 0x76, 0x36, 0x87, 0x33, 0x5e, + 0x1e, 0xc2, 0xd6, 0xc8, 0x13, 0xa5, 0x16, 0xbb, 0x2f, 0x2b, 0x79, 0x05, 0x61, 0x00, 0xb0, + 0x74, 0x88, 0xce, 0x2f, 0xd5, 0x08, 0x9b, 0xe2, 0x96, 0xea, 0xd4, 0x2c, 0xe3, 0x45, 0xef, + 0x58, 0xf7, 0x35, 0x43, 0xab, 0x10, 0x2e, 0xd7, 0x9e, 0x42, 0x65, 0x21, 0xfe, 0xa6, 0x0d, + 0xcc, 0xe4, 0x7e, 0x49, 0x81, 0x80, 0xee, 0x94, 0xf1, 0xe6, 0x9b, 0xf8, 0x62, 0xc9, 0xe0, + 0x14, 0xad, 0x60, 0xf6, 0x04, 0x18, 0x19, 0xf0, 0x11, 0x07, 0x81, 0x28, 0x03, 0xc9, 0x86, + 0xe5, 0x47, 0xa5, 0xfb, 0x74, 0x4d, 0xd7, 0x66, 0xb9, 0x2e, 0x22, 0xca, 0x86, 0x21, 0xb5, + 0x61, 0x90, 0xab, 0x1a, 0x70, 0x19, 0xeb, 0x9e, 0x28, 0x81, 0x14, 0xc4, 0xc4, 0x50, 0xd0, + 0x8a, 0x95, 0xda, 0x72, 0x82, 0x27, 0x82, 0x39, 0xf7, 0xfa, 0x07, 0x3a, 0x8c, 0xe4, 0x44, + 0x50, 0x6a, 0xe1, 0x71, 0xe0, 0xdc, 0xd5, 0x4d, 0x18, 0x61, 0x36, 0x2f, 0x12, 0x95, 0x7b, + 0x36, 0x6b, 0x92, 0xdc, 0xb0, 0x48, 0x00, 0x17, 0xc6, 0xa3, 0x97, 0xb2, 0x75, 0x06, 0xc5, + 0x52, 0x38, 0xe1, 0x65, 0x63, 0x55, 0x78, 0x67, 0x04, 0x48, 0x9f, 0xb5, 0x4b, 0xf1, 0x25, + 0x7e, 0x90, 0xa2, 0x46, 0xf9, 0x2e, 0xad, 0x45, 0x51, 0x66, 0xc4, 0x21, 0x7b, 0x61, 0x06, + 0x82, 0xa6, 0x44, 0x65, 0x14, 0xa1, 0xb5, 0x9d, 0x5f, 0xac, 0xfc, 0x70, 0x41, 0xd4, 0xe6, + 0x39, 0x04, 0x6e, 0x60, 0x26, 0x20, 0x97, 0x55, 0x7c, 0xec, 0x24, 0xc5, 0x96, 0x29, 0xb8, + 0x91, 0x22, 0x9e, 0x71, 0x4d, 0xb7, 0x9a, 0x80, 0xe8, 0x30, 0xaf, 0x7f, 0xa7, 0xa2, 0x11, + 0x2e, 0x60, 0xff, 0x1f, 0xb9, 0x57, 0x41, 0xf3, 0x9c, 0x51, 0xd3, 0x7c, 0x3b, 0xe2, 0x41, + 0xe9, 0x99, 0x0b, 0xf1, 0x4c, 0x32, 0x5e, 0x55, 0x84, 0x83, 0xf6, 0x54, 0x08, 0xba, 0x25, + 0xc4, 0xcf, 0x85, 0xe1, 0x01, 0x22, 0xcd, 0x5c, 0xba, 0x60, 0x10, 0xdb, 0x48, 0x79, 0x30, + 0xee, 0xd9, 0xbe, 0xda, 0xc4, 0xd5, 0x33, 0x82, 0x5c, 0x65, 0x7a, 0xac, 0x9c, 0xb7, 0x09, + 0x92, 0x0f, 0x6c, 0x9a, 0x53, 0x7b, 0x76, 0x19, 0x4e, 0xab, 0x8c, 0x33, 0x0f, 0xcc, 0x78, + 0x91, 0xe2, 0x42, 0x07, 0xf5, 0xca, 0x76, 0x98, 0x0d, 0x94, 0xbd, 0x1b, 0x6d, 0xb4, 0x16, + 0x92, 0xee, 0x6b, 0xee, 0x11, 0x75, 0x44, 0xe9, 0x86, 0x20, 0xde, 0x43, 0x90, 0xda, 0x01, + 0x9b, 0x63, 0x75, 0x7b, 0xc7, 0x8e, 0xa7, 0xd0, 0xe2, 0x7c, 0x2f, 0xc6, 0xb9, 0x2d, 0x8c, + 0x03, 0x66, 0xe2, 0x3f, 0xf1, 0xd5, 0xa3, 0x81, 0x30, 0xe5, 0x18, 0x33, 0x40, 0xa9, 0x05, + 0xce, 0xfe, 0xd2, 0xbd, 0x33, 0x2d, 0x44, 0x3c, 0x6f, 0xc6, 0xc3, 0xf4, 0x60, 0x1b, 0xd3, + 0xe4, 0x92, 0x7b, 0x40, 0x38, 0x8c, 0x00, 0xc8, 0x42, 0xc9, 0x3d, 0x01, 0xac, 0x36, 0x5b, + 0xb6, 0x27, 0x2f, 0x28, 0xad, 0x28, 0xec, 0xdb, 0xc0, 0x5d, 0xc2, 0xe4, 0xf6, 0x11, 0x75, + 0xcd, 0x36, 0xf5, 0xfa, 0x5a, 0x47, 0x71, 0xe0, 0xdf, 0xb6, 0xe1, 0x3c, 0xc2, 0xba, 0x91, + 0x0e, 0x28, 0xf1, 0x1f, 0xa1, 0x37, 0x28, 0xbf, 0x2d, 0xc5, 0x7e, 0x27, 0x9e, 0xc6, 0x7f, + 0x80, 0x46, 0x18, 0x7b, 0xdb, 0x99, 0xca, 0xbe, 0xb0, 0xc3, 0xc0, 0x08, 0xc6, 0xef, 0x26, + 0xca, 0x38, 0x2f, 0x99, 0x40, 0xe0, 0xb0, 0x27, 0x71, 0xfa, 0x6c, 0x2f, 0x69, 0xf1, 0x11, + 0x6b, 0xaa, 0xc1, 0xad, 0xed, 0xfa, 0xe6, 0xff, 0x68, 0xdc, 0x8c, 0xb2, 0x49, 0xc1, 0x12, + 0xce, 0x6f, 0x9a, 0x62, 0x08, 0xcf, 0x1f, 0xb4, 0xc4, 0x18, 0x39, 0x95, 0x32, 0x6d, 0xd6, + 0x90, 0xbc, 0x45, 0x31, 0xde, 0x9a, 0xc8, 0x5a, 0x0b, 0xe2, 0xf6, 0xb0, 0x79, 0x5b, 0x6f, + 0x9b, 0xc7, 0x00, 0xb7, 0x62, 0x8c, 0x27, 0x2f, 0x24, 0x5d, 0xe3, 0x21, 0x0d, 0x89, 0xfb, + 0x7b, 0x55, 0x2a, 0x73, 0x16, 0x72, 0x77, 0x96, 0x75, 0xec, 0xe0, 0x96, 0x3c, 0x28, 0x35, + 0xba, 0x8c, 0x6e, 0xce, 0x9c, 0xc4, 0xe5, 0x5b, 0x2d, 0x07, 0x74, 0x89, 0xcc, 0x8a, 0x83, + 0x55, 0x8a, 0x12, 0x61, 0xa4, 0x52, 0xdc, 0xe0, 0x31, 0x7c, 0xb8, 0xef, 0x4e, 0x86, 0x42, + 0xf3, 0xd1, 0x30, 0x90, 0x30, 0x5a, 0xd3, 0x45, 0x90, 0x6b, 0x18, 0x0e, 0x50, 0xde, 0xce, + 0x88, 0x68, 0x30, 0xf7, 0xa3, 0x49, 0xe3, 0x47, 0x7a, 0x0f, 0x10, 0xdf, 0x57, 0xa8, 0x1a, + 0x5f, 0x89, 0x5e, 0x8c, 0x04, 0x30, 0x85, 0xd3, 0x31, 0xcd, 0x1b, 0xec, 0x20, 0xf7, 0xb8, + 0x79, 0x28, 0x71, 0x91, 0x27, 0x76, 0xbe, 0x3e, 0xf4, 0xb8, 0xb4, 0x11, 0xca, 0x9c, 0xd9, + 0xa9, 0xdb, 0xd9, 0x2d, 0x1f, 0x66, 0xc9, 0x0b, 0x23, 0xd3, 0x5b, 0x1d, 0x0c, 0xad, 0x3a, + 0xcb, 0xff, 0xab, 0x51, 0x41, 0xb5, 0x17, 0x13, 0x36, 0x75, 0x32, 0x89, 0x27, 0x4d, 0x89, + 0x7c, 0x24, 0x49, 0xe9, 0x31, 0x6c, 0x3d, 0x19, 0xfe, 0xcd, 0x86, 0xe4, 0x54, 0xa5, 0x1c, + 0x82, 0x0c, 0x08, 0x0c, 0xee, 0xf6, 0x42, 0x15, 0x65, 0xd4, 0x81, 0x79, 0x25, 0x01, 0xb5, + 0x82, 0x19, 0x0d, 0x96, 0x07, 0x76, 0xcc, 0x5c, 0x6b, 0xcc, 0x3f, 0x6a, 0x33, 0xa9, 0x2e, + 0x21, 0x3f, 0x7c, 0x2e, 0x93, 0x2d, 0x8f, 0x15, 0x13, 0xd1, 0xd2, 0xbc, 0x31, 0xcd, 0xb0, + 0xc9, 0x55, 0x0e, 0xa2, 0x1f, 0xb9, 0xd5, 0xdb, 0x1a, 0xcb, 0x01, 0xea, 0xa8, 0x04, 0xc5, + 0x94, 0xf9, 0x87, 0x77, 0x65, 0x2a, 0x7a, 0xf2, 0x71, 0x84, 0xe4, 0xad, 0xa6, 0x12, 0x20, + 0x1c, 0x80, 0xf1, 0x8d, 0x1c, 0xbd, 0x5f, 0x9a, 0x4a, 0x53, 0x54, 0x44, 0x93, 0x4b, 0x72, + 0xf6, 0x26, 0x2d, 0x58, 0x2a, 0xc5, 0x80, 0x2b, 0xc1, 0x7c, 0x10, 0x6b, 0xcc, 0x4a, 0x53, + 0xeb, 0x4a, 0xf6, 0x33, 0x4e, 0xc1, 0xee, 0xc6, 0x02, 0xbe, 0xf4, 0x03, 0x66, 0xd9, 0x1f, + 0x4b, 0x4d, 0xf4, 0x77, 0xf2, 0xb3, 0xb6, 0xbe, 0x21, 0x11, 0xe0, 0xe6, 0x22, 0x3c, 0x5f, + 0x43, 0x81, 0x1c, 0xcb, 0xb3, 0xc3, 0x1f, 0x8f, 0x4c, 0x21, 0x38, 0x92, 0x73, 0x77, 0x52, + 0x1c, 0xee, 0x99, 0x54, 0xa4, 0x93, 0x34, 0x05, 0x96, 0xfa, 0x04, 0x31, 0xfb, 0x95, 0x3e, + 0x7e, 0xe3, 0xc0, 0xa1, 0x5b, 0x37, 0xf4, 0x75, 0x92, 0xfc, 0x4c, 0xef, 0x4b, 0x47, 0xc7, + 0x59, 0xd6, 0x27, 0x8b, 0x4f, 0xe5, 0xbe, 0x65, 0x19, 0xc9, 0x92, 0x7e, 0x9c, 0x08, 0xf6, + 0xe8, 0x9c, 0x6f, 0xf9, 0x9c, 0xa6, 0x9c, 0x9f, 0x89, 0xe2, 0x71, 0x33, 0xb5, 0x21, 0x97, + 0x52, 0x0b, 0x87, 0x3c, 0x57, 0x8a, 0xde, 0x66, 0x96, 0x2b, 0xc1, 0x8d, 0x07, 0x26, 0xdb, + 0x27, 0x16, 0x71, 0xbf, 0xbe, 0x8c, 0x21, 0xc1, 0x6e, 0xce, 0xd0, 0x67, 0x5a, 0x58, 0xff, + 0x14, 0x97, 0xcb, 0x00, 0xe2, 0x39, 0x48, 0x1a, 0xdc, 0x46, 0x56, 0x53, 0x7b, 0x80, 0x83, + 0x0b, 0x37, 0x26, 0x4e, 0x7f, 0x1b, 0x50, 0xe3, 0x78, 0x0f, 0x32, 0xea, 0x57, 0xc9, 0x12, + 0x5c, 0x73, 0xf0, 0x7e, 0x33, 0xcb, 0x30, 0xa5, 0x1e, 0xc6, 0xc4, 0xdc, 0x98, 0xc4, 0xf9, + 0x33, 0x7d, 0x62, 0x15, 0x2b, 0xa5, 0x44, 0xee, 0xbe, 0x4d, 0x7a, 0x8e, 0xae, 0xf7, 0x23, + 0xab, 0x85, 0x57, 0x0d, 0x54, 0x9f, 0xb9, 0x06, 0x87, 0xf3, 0xb4, 0x78, 0x2f, 0x76, 0x47, + 0x98, 0x8c, 0xa3, 0xe9, 0x7b, 0x67, 0x36, 0xbd, 0xbd, 0x7c, 0xfb, 0x10, 0x39, 0x34, 0x05, + 0xa8, 0x61, 0x18, 0xcc, 0xc4, 0x15, 0xa1, 0x6e, 0x76, 0x14, 0x23, 0x08, 0x28, 0x43, 0x07, + 0x28, 0x61, 0x8d, 0xa3, 0x1e, 0x37, 0x79, 0x2f, 0x04, 0x3e, 0x37, 0x77, 0x04, 0x90, 0x52, + 0xd5, 0x89, 0x57, 0xa3, 0x52, 0xe5, 0x4c, 0x16, 0xb3, 0xd9, 0x3c, 0x85, 0x95, 0x22, 0x0a, + 0x2e, 0x83, 0x22, 0xf2, 0xda, 0x66, 0x9f, 0x11, 0xbe, 0x38, 0x17, 0x95, 0x5f, 0x1a, 0x35, + 0x0d, 0x35, 0x91, 0xac, 0x81, 0xd7, 0xe6, 0x27, 0x01, 0x5b, 0x06, 0x53, 0xcf, 0xf1, 0xea, + 0xe9, 0x64, 0xf8, 0x9a, 0xcf, 0xa4, 0x16, 0x63, 0xa8, 0x33, 0xe6, 0x52, 0x35, 0x62, 0x7e, + 0xb6, 0x7d, 0x30, 0x73, 0x8f, 0x17, 0x0d, 0xa1, 0x34, 0xde, 0x1d, 0x58, 0x49, 0x99, 0x97, + 0x31, 0x5a, 0x32, 0x9d, 0xcb, 0x52, 0xfe, 0xdc, 0x30, 0x17, 0x1f, 0x94, 0x8f, 0x6f, 0x23, + 0xa2, 0xbe, 0x30, 0xb4, 0x93, 0x98, 0xa2, 0x16, 0x2f, 0x46, 0x9e, 0xb1, 0x61, 0xe7, 0x52, + 0xfa, 0xa4, 0x87, 0xc5, 0x33, 0xe0, 0xac, 0x6a, 0xae, 0x88, 0xc6, 0xd7, 0xed, 0x64, 0x89, + 0x2a, 0x0a, 0xe4, 0xaf, 0xbc, 0x2b, 0x30, 0xac, 0xe3, 0x6c, 0xa7, 0xdd, 0xf4, 0xf1, 0x33, + 0x4b, 0x67, 0x31, 0x64, 0x15, 0x99, 0xb0, 0xd2, 0x54, 0x0c, 0x4f, 0xef, 0x4a, 0xe6, 0xd9, + 0xc0, 0xb8, 0x1c, 0x2d, 0x35, 0x6b, 0x98, 0x17, 0x83, 0x60, 0xb8, 0x53, 0xa5, 0x01, 0xdc, + 0x18, 0x66, 0x34, 0x3e, 0x81, 0xfc, 0xcf, 0xe0, 0xe9, 0x9b, 0x10, 0x42, 0xd1, 0x0a, 0x38, + 0xef, 0x3a, 0x5c, 0xb2, 0x04, 0x34, 0x11, 0x8e, 0x16, 0xeb, 0x23, 0x24, 0x44, 0x46, 0xae, + 0x69, 0xbc, 0xc1, 0xa1, 0xe6, 0x99, 0xcb, 0x59, 0x81, 0xc2, 0x06, 0x68, 0x95, 0x78, 0xa9, + 0xa2, 0xb3, 0xf6, 0xaa, 0x3c, 0xa3, 0x7f, 0x1e, 0x09, 0x34, 0x6f, 0xa2, 0xf4, 0xf7, 0x69, + 0x5a, 0x6b, 0x8f, 0x70, 0x87, 0xe9, 0x76, 0x3f, 0x52, 0xd0, 0x6d, 0xe4, 0x20, 0x8a, 0x4c, + 0xc0, 0x2e, 0x92, 0x80, 0x18, 0x83, 0xf8, 0x9e, 0xcd, 0x39, 0x62, 0x48, 0xdb, 0x5f, 0x0d, + 0x2e, 0xf5, 0x27, 0xa7, 0x5d, 0x92, 0x42, 0x16, 0xfc, 0xae, 0x8c, 0x76, 0x17, 0x8c, 0x0b, + 0x7c, 0x27, 0xf6, 0x18, 0x33, 0x1f, 0xac, 0x02, 0x1e, 0x6c, 0x9a, 0x3a, 0x9e, 0x58, 0x5d, + 0x1c, 0x16, 0x0f, 0x53, 0xeb, 0x39, 0xeb, 0xf4, 0xb1, 0xb3, 0xd8, 0x4d, 0x97, 0xb2, 0xcb, + 0x9d, 0x0f, 0x61, 0x6e, 0x9b, 0x2a, 0xe1, 0x0b, 0xb9, 0xe5, 0x92, 0x58, 0x0f, 0x27, 0x91, + 0x8e, 0x4a, 0x17, 0xbe, 0x25, 0x70, 0xf5, 0xe4, 0x28, 0x3a, 0xa8, 0x42, 0x01, 0x89, 0xf7, + 0x21, 0x37, 0x60, 0x6e, 0x2b, 0xe0, 0xa9, 0xe2, 0xca, 0x81, 0xfb, 0x23, 0x12, 0xca, 0xa0, + 0x20, 0x87, 0x47, 0x00, 0x5f, 0xfe, 0xa8, 0x81, 0xf8, 0xa4, 0x4a, 0xdd, 0x38, 0x30, 0x3e, + 0x7d, 0x08, 0x0e, 0x4b, 0xe3, 0x0b, 0x44, 0x27, 0x1a, 0xeb, 0x4f, 0xeb, 0x37, 0x10, 0x1c, + 0x20, 0x1d, 0x0f, 0x85, 0x04, 0xe7, 0x11, 0x32, 0x4e, 0xcd, 0x3b, 0x4d, 0xee, 0x9d, 0x69, + 0x34, 0x8c, 0x22, 0x65, 0x6b, 0x7e, 0xdc, 0x5f, 0x68, 0xb2, 0x36, 0x03, 0x02, 0x73, 0x89, + 0x0e, 0x9c, 0xad, 0x41, 0x25, 0x8e, 0x14, 0x45, 0xec, 0x93, 0x4f, 0x9b, 0x4b, 0x2b, 0x27, + 0x92, 0x36, 0x5b, 0x52, 0xd0, 0xb4, 0x4b, 0xbc, 0xcb, 0xc7, 0x21, 0x49, 0x4a, 0x56, 0x71, + 0xa6, 0x0e, 0xd4, 0xfa, 0x28, 0x9e, 0x20, 0x3c, 0x68, 0xab, 0x3c, 0x4b, 0x88, 0xac, 0x36, + 0xf9, 0xad, 0xc9, 0x1a, 0x4a, 0x6c, 0x8c, 0xc4, 0xc5, 0x2f, 0xeb, 0x2e, 0xb3, 0x4b, 0x64, + 0x66, 0x7a, 0x74, 0xc3, 0xbc, 0xdc, 0xd6, 0xe4, 0x38, 0xe2, 0x0d, 0x2b, 0x6c, 0x49, 0x95, + 0x00, 0xf4, 0x88, 0xed, 0xc8, 0x72, 0x16, 0x51, 0x33, 0xfa, 0xdb, 0x4f, 0xb7, 0x71, 0x3a, + 0x49, 0xde, 0x17, 0xf6, 0x0c, 0xa4, 0xd7, 0x80, 0x91, 0x8f, 0x3c, 0xfe, 0x19, 0xca, 0x14, + 0x47, 0xf8, 0x37, 0x61, 0xee, 0x18, 0x08, 0x43, 0x6e, 0x31, 0x0f, 0xb7, 0xcc, 0x32, 0xdb, + 0x06, 0x5c, 0x59, 0x23, 0xa4, 0x53, 0x7d, 0x23, 0x3b, 0xe2, 0xf3, 0x31, 0x1a, 0x5e, 0xa4, + 0x16, 0xc6, 0xbf, 0x28, 0x08, 0x50, 0x64, 0x7c, 0x65, 0x0a, 0xc0, 0x18, 0x35, 0x35, 0x1e, + 0xed, 0xe8, 0x16, 0x51, 0x1e, 0xdf, 0x33, 0xe5, 0x9f, 0x46, 0x7d, 0x09, 0x36, 0xaf, 0x21, + 0xa4, 0xca, 0xd0, 0xdf, 0x6f, 0xbd, 0xd6, 0x71, 0x1e, 0x19, 0x8d, 0x89, 0x61, 0x15, 0xcc, + 0x3d, 0xcf, 0xac, 0x09, 0x48, 0x52, 0x2e, 0x23, 0x1b, 0x34, 0xe4, 0x7d, 0xcf, 0xd0, 0x5b, + 0x92, 0x1d, 0xf4, 0x97, 0xb1, 0x90, 0xaf, 0x5d, 0x62, 0x1c, 0x59, 0xc9, 0x4c, 0x34, 0xbd, + 0x40, 0x5c, 0x9b, 0xe0, 0x0b, 0x6d, 0xd7, 0x2c, 0xde, 0x87, 0xe9, 0x3e, 0xa3, 0x13, 0x03, + 0x9c, 0x01, 0x63, 0x33, 0x35, 0x04, 0x4f, 0xfa, 0x8b, 0xde, 0xa2, 0x0d, 0x3b, 0x8c, 0xa5, + 0xdb, 0x2c, 0x45, 0x16, 0xb5, 0xa5, 0x95, 0x12, 0xd0, 0x9d, 0x28, 0x1b, 0x18, 0x77, 0x22, + 0xc8, 0xa5, 0xc9, 0xeb, 0xdb, 0x20, 0x64, 0x87, 0x12, 0x29, 0x64, 0x03, 0x54, 0xe9, 0xae, + 0xa1, 0x65, 0xdd, 0xda, 0xfd, 0xdf, 0xee, 0x4d, 0xfc, 0x10, 0x01, 0xd3, 0x82, 0x29, 0xe5, + 0x1a, 0xb7, 0xfc, 0x33, 0x46, 0x0b, 0x4b, 0x17, 0x20, 0x30, 0x0a, 0xed, 0xe7, 0x97, 0x3a, + 0x8c, 0x94, 0x0e, 0x6f, 0xf2, 0x97, 0x22, 0x5d, 0x53, 0xbf, 0xaa, 0x68, 0x80, 0xb2, 0xb4, + 0xc0, 0xac, 0x26, 0x16, 0x68, 0xee, 0xf9, 0xd6, 0x82, 0x3d, 0xd5, 0xb0, 0xc6, 0x21, 0x5d, + 0x16, 0xc0, 0x0d, 0xf5, 0x61, 0xe9, 0xc4, 0xab, 0xaa, 0xd3, 0xef, 0x0d, 0xa8, 0x4d, 0xdd, + 0x59, 0x9d, 0x56, 0x69, 0x1d, 0xd1, 0xb1, 0x21, 0xa6, 0x12, 0x0c, 0x34, 0x08, 0xbd, 0xcd, + 0xd9, 0x72, 0xf7, 0x7d, 0x20, 0x7d, 0x38, 0x29, 0x83, 0xb0, 0xa0, 0x44, 0x64, 0x7c, 0xd2, + 0xb8, 0x6c, 0x91, 0xb8, 0xbf, 0x19, 0x42, 0x6c, 0x57, 0x42, 0xb7, 0x37, 0x8e, 0x2f, 0x21, + 0xc0, 0xf0, 0x9b, 0xff, 0x86, 0x69, 0xf6, 0xb0, 0xbf, 0x61, 0x87, 0xd4, 0x4c, 0x3b, 0xd1, + 0xe5, 0x0d, 0xfb, 0x65, 0xaf, 0xf3, 0xaa, 0x88, 0xad, 0x00, 0xc2, 0xe1, 0x27, 0x35, 0xee, + 0x38, 0x43, 0x47, 0x37, 0x9d, 0x2b, 0x48, 0xab, 0x3f, 0x0b, 0x36, 0xf7, 0x12, 0xe0, 0xc1, + 0xbc, 0xa9, 0x69, 0x8d, 0x29, 0xf1, 0x79, 0x24, 0xf0, 0x34, 0x3f, 0xc5, 0x73, 0xa1, 0x11, + 0x59, 0x81, 0x16, 0x10, 0x36, 0xb7, 0x1f, 0x96, 0xed, 0x96, 0x59, 0xb5, 0x2e, 0xaf, 0xb7, + 0x79, 0x4f, 0xf9, 0xa0, 0x5b, 0x42, 0xf5, 0xb9, 0x6a, 0xa5, 0x30, 0xe4, 0x5f, 0x18, 0x92, + 0xf4, 0x9d, 0xcd, 0xe6, 0x2e, 0xe8, 0x24, 0xab, 0x3d, 0xd0, 0xfd, 0x9c, 0x51, 0x1b, 0xd8, + 0xed, 0xa0, 0xd6, 0x0e, 0xda, 0x75, 0x3c, 0xd5, 0xd4, 0x44, 0xc0, 0x29, 0x4a, 0xac, 0x61, + 0x7b, 0x6c, 0x64, 0x53, 0xce, 0x8b, 0x22, 0x74, 0xb0, 0xcb, 0xc5, 0xbe, 0xb6, 0x8e, 0x27, + 0x61, 0x89, 0x7b, 0x1e, 0x2a, 0xc6, 0x12, 0xd8, 0xe6, 0xf8, 0x60, 0x58, 0x30, 0x11, 0x3b, + 0xc8, 0x00, 0xc9, 0x1b, 0xdc, 0x4d, 0x4c, 0x89, 0x39, 0x4d, 0x33, 0xc2, 0x5f, 0x64, 0x65, + 0xd8, 0x13, 0xa4, 0x53, 0xbf, 0x89, 0xeb, 0x3f, 0x0b, 0xaf, 0x3b, 0x83, 0x85, 0x66, 0x65, + 0xa3, 0x3d, 0x1e, 0x0a, 0x29, 0x1b, 0x52, 0x7d, 0x6b, 0x57, 0x04, 0x22, 0x1b, 0x5b, 0x34, + 0x3a, 0x6f, 0xcb, 0x70, 0xf5, 0x61, 0xcb, 0x49, 0x6b, 0x72, 0x7f, 0xbf, 0xf0, 0x7e, 0x48, + 0xb5, 0x6c, 0xc9, 0x24, 0xef, 0x51, 0xb3, 0x45, 0x94, 0x49, 0xfb, 0x52, 0x11, 0xc0, 0x2f, + 0xf0, 0x81, 0xc9, 0x06, 0x45, 0xca, 0x39, 0x2d, 0x5e, 0x7a, 0x13, 0xf1, 0x31, 0x60, 0xac, + 0xb5, 0xb5, 0x3e, 0xd2, 0x0b, 0x8e, 0x01, 0x39, 0x0c, 0xc4, 0xd1, 0xd7, 0xea, 0x95, 0x33, + 0xb2, 0xe7, 0xa2, 0x1e, 0x9c, 0xca, 0xf0, 0x46, 0x1f, 0x1d, 0x55, 0x62, 0xc1, 0xae, 0x28, + 0xc0, 0x4c, 0x13, 0x80, 0x83, 0xf4, 0xeb, 0xd1, 0x1f, 0x75, 0xe3, 0x29, 0x8b, 0x23, 0x21, + 0xa2, 0x03, 0x95, 0xd3, 0xfc, 0x68, 0x5d, 0x8c, 0x49, 0x86, 0xea, 0xac, 0xc4, 0xe9, 0x7d, + 0x64, 0x81, 0x14, 0x9a, 0xed, 0x04, 0x0e, 0x07, 0x23, 0x9c, 0x05, 0x1d, 0x76, 0x13, 0x79, + 0xfa, 0xec, 0xbb, 0x3c, 0x33, 0x56, 0xba, 0x37, 0x35, 0x83, 0x53, 0xb2, 0x04, 0xbb, 0xe9, + 0x67, 0x65, 0xbc, 0xd4, 0xb9, 0x37, 0x54, 0x70, 0xfa, 0xc0, 0x59, 0x07, 0xfc, 0xee, 0xc5, + 0xd9, 0x4c, 0xb1, 0x19, 0x52, 0x27, 0xe0, 0x2f, 0x7b, 0x66, 0x00, 0x5f, 0x9a, 0x76, 0xad, + 0x9c, 0xe1, 0xfb, 0xae, 0x70, 0x97, 0xb0, 0xba, 0x82, 0x4c, 0x9e, 0x41, 0x5f, 0x82, 0xb0, + 0x81, 0x2a, 0x3b, 0xc6, 0xd6, 0xae, 0x38, 0x24, 0xdd, 0x1d, 0x04, 0x83, 0x7c, 0xa3, 0x90, + 0x47, 0xcc, 0x27, 0xd5, 0x7d, 0xd5, 0x65, 0x5f, 0x2d, 0x52, 0xe1, 0xb2, 0x8f, 0xf2, 0x4a, + 0xf7, 0x01, 0xc9, 0x3a, 0x16, 0x9b, 0xbd, 0xe2, 0x20, 0x1b, 0x4e, 0xf3, 0x6e, 0xf3, 0x61, + 0xf1, 0x11, 0x83, 0x8e, 0x2a, 0x59, 0xb2, 0xf1, 0xff, 0x32, 0x41, 0x0c, 0x91, 0xbe, 0x4b, + 0x2c, 0xa0, 0xd4, 0xd4, 0x34, 0xa7, 0x0c, 0x0d, 0x03, 0xd8, 0xca, 0x0d, 0xb8, 0xc9, 0xcb, + 0x7b, 0x27, 0xef, 0x07, 0x43, 0xc8, 0xa0, 0x57, 0x9d, 0x6c, 0x4d, 0xf5, 0xa7, 0x66, 0x44, + 0x63, 0x7b, 0xee, 0x0d, 0x45, 0xff, 0xc4, 0xff, 0x83, 0xa1, 0xff, 0x77, 0x9f, 0x22, 0xe4, + 0x9e, 0x65, 0x55, 0x0b, 0x60, 0xc2, 0x79, 0xae, 0xef, 0x6a, 0xeb, 0x89, 0xc1, 0xff, 0x6a, + 0x8c, 0xff, 0x8a, 0xe5, 0xeb, 0x64, 0x5e, 0x9e, 0x15, 0xd6, 0x94, 0x35, 0x0a, 0xc0, 0xf7, + 0x12, 0x7e, 0xcf, 0x63, 0x2f, 0x21, 0x87, 0x59, 0xea, 0xfc, 0x04, 0xa9, 0x88, 0xa3, 0xd2, + 0x3d, 0x13, 0x47, 0xa4, 0x4b, 0x6f, 0xb1, 0xf7, 0x9a, 0x2a, 0x40, 0xe4, 0x1f, 0x44, 0x1b, + 0xb8, 0x78, 0x23, 0x85, 0x6b, 0x22, 0x1e, 0x7c, 0xde, 0x36, 0x52, 0xa6, 0x2b, 0x82, 0x4d, + 0x5f, 0x64, 0xb0, 0x85, 0x70, 0x32, 0x0f, 0x77, 0x29, 0xb5, 0x00, 0xe1, 0x38, 0x25, 0x2a, + 0x62, 0x20, 0xda, 0x68, 0x11, 0x70, 0x7c, 0x09, 0x7d, 0xee, 0x8d, 0x29, 0x12, 0x35, 0x11, + 0xa2, 0x36, 0xf0, 0x30, 0x38, 0x15, 0x33, 0xcd, 0x52, 0x33, 0xb1, 0xd2, 0xb1, 0x9d, 0xa4, + 0x7c, 0xfe, 0xfd, 0x49, 0x17, 0x94, 0x30, 0xb7, 0x0b, 0xce, 0x17, 0x96, 0x98, 0x88, 0xc2, + 0xc0, 0x2b, 0x75, 0xd0, 0x7b, 0xf8, 0x4d, 0xe6, 0x4d, 0xc9, 0x1f, 0xba, 0xa6, 0xcf, 0x91, + 0x05, 0x2d, 0x40, 0x00, 0x1b, 0xf8, 0x3c, 0xdd, 0x18, 0xe8, 0x86, 0x0b, 0x35, 0x27, 0xd9, + 0xf7, 0x28, 0x95, 0xff, 0x0c, 0x39, 0x8d, 0x49, 0x45, 0xdd, 0xd5, 0x69, 0xc2, 0xc5, 0x68, + 0xbb, 0xce, 0x30, 0x25, 0x06, 0xb5, 0xbf, 0xaa, 0xaa, 0x9e, 0x24, 0xf4, 0x35, 0xe7, 0x3c, + 0x23, 0x67, 0x30, 0xbe, 0xdd, 0x4b, 0x89, 0x40, 0xbc, 0xcc, 0xe1, 0xcd, 0xaa, 0x2a, 0xbd, + 0x38, 0x86, 0x46, 0x47, 0x4e, 0x3d, 0x9c, 0x0a, 0xfd, 0x61, 0xe2, 0x8a, 0x1e, 0xbb, 0xc8, + 0x3a, 0xc8, 0x4e, 0xd6, 0x44, 0x03, 0x9a, 0x7e, 0xa3, 0xaa, 0x27, 0x0e, 0xac, 0x6f, 0x46, + 0xf2, 0x1f, 0xba, 0xed, 0xd4, 0x9c, 0xe2, 0x1f, 0xe1, 0x33, 0x06, 0x0e, 0x41, 0x6b, 0x03, + 0xe2, 0x80, 0x59, 0xd7, 0x53, 0xb0, 0x25, 0xf0, 0xc2, 0xb9, 0xf2, 0x5e, 0x6f, 0xe1, 0x46, + 0xbf, 0x9f, 0x58, 0x95, 0x60, 0x83, 0xe1, 0xba, 0xab, 0x33, 0x57, 0x04, 0x93, 0x57, 0x3b, + 0x9d, 0x05, 0x10, 0x4e, 0xc9, 0xbd, 0x27, 0x64, 0x79, 0x3d, 0x65, 0x5b, 0xb0, 0x33, 0xc6, + 0x46, 0xaf, 0x6f, 0xf8, 0xf8, 0xbb, 0x26, 0x8d, 0x35, 0xc4, 0x3a, 0xcf, 0x61, 0x42, 0x06, + 0xbd, 0x4f, 0x56, 0x35, 0xde, 0x33, 0x4a, 0xe2, 0x76, 0x8e, 0x86, 0x21, 0xf2, 0x44, 0x57, + 0xbd, 0x6c, 0xc3, 0xf8, 0x1a, 0x50, 0xc8, 0xff, 0xf8, 0x71, 0x03, 0x74, 0x15, 0xbd, 0x54, + 0x3e, 0x55, 0x15, 0xdf, 0x44, 0x25, 0x3f, 0x93, 0xae, 0x05, 0x24, 0x1c, 0xde, 0xec, 0x2e, + 0xca, 0x35, 0xeb, 0x29, 0x08, 0xab, 0x07, 0xdc, 0xee, 0x8c, 0x79, 0x5c, 0xf0, 0xa7, 0x44, + 0x2c, 0xa1, 0x21, 0x34, 0x49, 0xa5, 0xc0, 0x32, 0x82, 0x47, 0x8b, 0xf0, 0xc0, 0x75, 0x5f, + 0xd7, 0xf6, 0x2c, 0xa1, 0x40, 0xa3, 0x03, 0x86, 0x7e, 0xbc, 0xef, 0xfc, 0x63, 0x1e, 0x8d, + 0xb2, 0x24, 0x9c, 0x2c, 0x8a, 0x98, 0x06, 0x03, 0x3a, 0x20, 0x1f, 0x6e, 0x59, 0xbe, 0xcf, + 0x38, 0x2c, 0xcd, 0x51, 0x67, 0xad, 0x5d, 0x1d, 0x7a, 0x3d, 0xe1, 0x04, 0x92, 0xc6, 0xbd, + 0xa8, 0x91, 0x21, 0xbb, 0x8b, 0x07, 0x5e, 0x3b, 0x6a, 0x5d, 0x1b, 0x09, 0xf6, 0xad, 0x97, + 0x2c, 0x06, 0x05, 0xf1, 0xfe, 0x16, 0x10, 0xc3, 0x8f, 0x42, 0xab, 0x22, 0x62, 0x53, 0x41, + 0xb4, 0x1c, 0x25, 0x2b, 0xe0, 0xfa, 0x80, 0xc9, 0xd0, 0x82, 0xf5, 0x6f, 0xee, 0x06, 0x69, + 0xd7, 0xd4, 0xeb, 0x97, 0x62, 0xaf, 0x0f, 0xd8, 0x27, 0xe5, 0x45, 0xac, 0x5c, 0xb6, 0xb2, + 0x25, 0x57, 0x15, 0x40, 0xf2, 0xe6, 0x82, 0x0a, 0xd7, 0x93, 0x11, 0xed, 0x2f, 0xe5, 0x7e, + 0x30, 0xd1, 0x22, 0x39, 0x77, 0x1d, 0x79, 0xad, 0x47, 0x57, 0x76, 0x47, 0x06, 0x8a, 0xe6, + 0xec, 0x7f, 0xa3, 0x60, 0x2e, 0x86, 0x37, 0x9f, 0x7c, 0x56, 0x70, 0x9f, 0x82, 0x2d, 0xb6, + 0x8b, 0x5d, 0x35, 0x44, 0x0e, 0x85, 0x55, 0x09, 0xa2, 0xb8, 0x6e, 0xbf, 0x86, 0xdc, 0xaa, + 0xe2, 0x20, 0xa8, 0x9b, 0x6f, 0x7d, 0xea, 0x85, 0xfe, 0x1f, 0xa5, 0xcf, 0x2d, 0x54, 0xea, + 0x4b, 0x24, 0x2e, 0xdf, 0x1a, 0x0b, 0x3c, 0x1a, 0x0b, 0x04, 0xb3, 0x98, 0xe8, 0xa6, 0x7c, + 0x3e, 0xbd, 0x09, 0x3e, 0x44, 0x29, 0xc9, 0x55, 0x46, 0x05, 0xe2, 0xf4, 0x36, 0x04, 0x49, + 0x42, 0x0a, 0x5f, 0xb5, 0xae, 0xbc, 0x15, 0x8d, 0x80, 0xee, 0x10, 0x34, 0x9d, 0x23, 0xe9, + 0xd6, 0x81, 0x96, 0xce, 0xbb, 0xed, 0xbd, 0x98, 0xaf, 0xd1, 0x66, 0x70, 0xb6, 0x62, 0x31, + 0xf0, 0xf7, 0xdd, 0x9c, 0x0a, 0x44, 0x04, 0xda, 0x2d, 0xb7, 0xa0, 0x01, 0x72, 0xff, 0x4f, + 0x48, 0xb4, 0x86, 0x18, 0x3b, 0x2c, 0xc8, 0xd4, 0x9b, 0x12, 0x6a, 0xcb, 0xf5, 0xe0, 0x4a, + 0xf0, 0xa1, 0x6b, 0x36, 0x29, 0x18, 0x75, 0xc1, 0x87, 0xca, 0x2a, 0x65, 0xae, 0xb2, 0x40, + 0x72, 0x91, 0x67, 0x67, 0x4c, 0xf5, 0xe2, 0x6c, 0x2e, 0xb9, 0xf8, 0x46, 0x46, 0x05, 0x27, + 0x9f, 0x47, 0xb5, 0x7e, 0xf7, 0x58, 0x4b, 0xa7, 0xb6, 0x66, 0x2f, 0x22, 0x1c, 0xea, 0xd6, + 0xf8, 0x98, 0x25, 0x74, 0x8a, 0xe7, 0xbf, 0x4a, 0x22, 0xd5, 0x47, 0x15, 0xdb, 0x9f, 0xa8, + 0x06, 0x09, 0xbe, 0x51, 0x75, 0xc3, 0x0a, 0x50, 0x02, 0x5e, 0x54, 0xd1, 0x1b, 0xa2, 0x2a, + 0xc4, 0xcb, 0x17, 0xfc, 0xa2, 0xec, 0x16, 0x01, 0x84, 0xe6, 0xba, 0xca, 0xa6, 0xe4, 0x9a, + 0x83, 0x66, 0x97, 0x10, 0x65, 0x11, 0xa1, 0xe6, 0x5c, 0x67, 0x9c, 0xf2, 0x40, 0xb1, 0x28, + 0xce, 0x19, 0x74, 0xb4, 0x28, 0x12, 0xeb, 0x02, 0x10, 0x5b, 0xcc, 0x59, 0x22, 0x6f, 0xaa, + 0x7f, 0x08, 0x5a, 0xdf, 0x7b, 0x7e, 0xf5, 0xd0, 0xb2, 0xd5, 0xd8, 0x8f, 0x59, 0x56, 0x3e, + 0x3d, 0x2e, 0xdb, 0x1a, 0xa9, 0xae, 0x25, 0x3f, 0xda, 0x7e, 0x66, 0x99, 0x6f, 0x24, 0x26, + 0xd5, 0x2c, 0xe0, 0xd3, 0x6d, 0x5e, 0x38, 0xc0, 0x7b, 0x94, 0x55, 0x18, 0x51, 0xf4, 0xf1, + 0x05, 0x7e, 0x10, 0xbe, 0xab, 0x07, 0x8c, 0x85, 0xc6, 0xe1, 0xfd, 0x86, 0xb2, 0x20, 0x0e, + 0xee, 0x73, 0x45, 0xf0, 0xe9, 0x71, 0x30, 0x61, 0xe0, 0x06, 0x0b, 0x63, 0x33, 0xe9, 0x1f, + 0xcb, 0x76, 0x21, 0xd5, 0x73, 0x33, 0xd8, 0x0e, 0xee, 0xf0, 0x3e, 0x91, 0x2c, 0x2d, 0xa7, + 0x98, 0x5a, 0x7d, 0xbc, 0x39, 0x3a, 0xa5, 0x97, 0xab, 0xd6, 0x7b, 0x82, 0x40, 0xa3, 0xe7, + 0x23, 0x30, 0x48, 0x8a, 0xaf, 0x26, 0xb5, 0x3d, 0x67, 0x1f, 0xe2, 0xef, 0xfe, 0xe1, 0xdb, + 0x16, 0x7f, 0x74, 0x75, 0x94, 0xde, 0x4d, 0xe8, 0x0b, 0xc1, 0xf0, 0xfd, 0x5b, 0x17, 0x86, + 0xd2, 0x76, 0xfe, 0x31, 0xd8, 0xa6, 0x31, 0x55, 0x6a, 0xd4, 0x08, 0x0d, 0x76, 0x74, 0xb6, + 0x9f, 0x1c, 0xda, 0x24, 0x03, 0x28, 0x0f, 0xe1, 0xeb, 0x96, 0x2b, 0xef, 0x00, 0x3d, 0x4d, + 0xf6, 0x1c, 0xba, 0x3d, 0xd9, 0x06, 0xab, 0xa9, 0xc0, 0x1e, 0x56, 0x44, 0xdc, 0xba, 0x01, + 0xdd, 0x79, 0x06, 0x11, 0xda, 0x5b, 0xc4, 0x6e, 0xe2, 0x4e, 0x2b, 0xa2, 0x6a, 0x4a, 0xba, + 0xf8, 0xec, 0x1c, 0x78, 0xac, 0x48, 0xe0, 0xc5, 0xeb, 0x9c, 0x30, 0x79, 0xf8, 0x02, 0xca, + 0x0d, 0xfc, 0x65, 0x50, 0xba, 0x41, 0x0b, 0x8d, 0x76, 0x88, 0x55, 0x06, 0xb2, 0x7e, 0xfe, + 0xb3, 0xbc, 0xa5, 0x92, 0xc2, 0x47, 0x5d, 0xef, 0x2d, 0xbd, 0x4f, 0x5d, 0x7e, 0xd4, 0x83, + 0x6a, 0xbf, 0x08, 0x6c, 0xe8, 0xb2, 0x3d, 0x61, 0x77, 0x01, 0x27, 0x5a, 0x8d, 0x45, 0x20, + 0x85, 0x04, 0x3d, 0x8b, 0x30, 0xbf, 0x66, 0xe0, 0x73, 0x94, 0x71, 0xbc, 0x43, 0x2a, 0x15, + 0x5f, 0x24, 0x9f, 0x1c, 0x1c, 0x58, 0xe4, 0xfa, 0x37, 0xa0, 0x2a, 0xe6, 0x53, 0xb0, 0xec, + 0x71, 0xe2, 0x2b, 0x9f, 0xcd, 0x3d, 0x9a, 0x00, 0x03, 0x7b, 0xcf, 0xcb, 0xae, 0x7c, 0x01, + 0x06, 0xd6, 0xd1, 0x3d, 0xc6, 0x0f, 0xad, 0x3f, 0x73, 0x4e, 0xbd, 0xcc, 0x0d, 0x3f, 0xe9, + 0xc2, 0x90, 0x31, 0x71, 0x6c, 0x74, 0x6b, 0x52, 0xbf, 0x7c, 0x9d, 0xb5, 0xa0, 0x9c, 0xfe, + 0x19, 0xbd, 0x9f, 0x0b, 0x87, 0xcd, 0x12, 0xf8, 0xa6, 0xc5, 0xe3, 0x61, 0x53, 0xe0, 0xbf, + 0x55, 0x87, 0xc9, 0x59, 0xf3, 0x63, 0x66, 0x18, 0x86, 0x43, 0x62, 0x19, 0x50, 0x78, 0xc5, + 0x91, 0x50, 0x23, 0x25, 0x86, 0x42, 0x83, 0xcc, 0xd1, 0xeb, 0xb0, 0x71, 0xba, 0xca, 0x04, + 0xa5, 0x0f, 0x40, 0x69, 0xf1, 0xea, 0xea, 0x8d, 0x8d, 0x2a, 0xf4, 0x9e, 0x76, 0xf2, 0x9e, + 0x88, 0x10, 0x8d, 0xf9, 0x04, 0xd5, 0x9a, 0x66, 0x31, 0x68, 0x6b, 0xe5, 0xad, 0xfc, 0xa4, + 0x85, 0x71, 0x44, 0x2a, 0x01, 0xcd, 0xb1, 0xa3, 0xde, 0x6d, 0xe1, 0x74, 0xfa, 0x94, 0x96, + 0xe9, 0xca, 0x50, 0xd2, 0xdb, 0x06, 0x5e, 0x61, 0xd8, 0x2c, 0x16, 0xef, 0x01, 0x43, 0x81, + 0x25, 0xa9, 0x6e, 0x63, 0x00, 0xde, 0x69, 0xc3, 0x09, 0x67, 0xc5, 0x85, 0x45, 0xaa, 0x8f, + 0x96, 0xfb, 0x66, 0x72, 0x59, 0x59, 0xeb, 0x0b, 0xfe, 0xb9, 0x9a, 0x54, 0xe7, 0x28, 0x67, + 0x40, 0xbd, 0xef, 0xc1, 0x61, 0x11, 0x5a, 0x40, 0x45, 0x56, 0xa1, 0xdd, 0x03, 0x81, 0xf7, + 0x72, 0xb7, 0xab, 0x8c, 0x1f, 0x7f, 0x1d, 0xdc, 0x0c, 0xc0, 0xac, 0x78, 0x26, 0x19, 0xfa, + 0xd5, 0x70, 0xaa, 0x15, 0x90, 0xeb, 0x43, 0x94, 0x55, 0xa6, 0x42, 0xcd, 0x31, 0x22, 0xb0, + 0xed, 0xfe, 0x93, 0x22, 0xa1, 0x93, 0x60, 0xa9, 0x81, 0x93, 0xbc, 0x75, 0xe4, 0xb8, 0xd2, + 0xba, 0xba, 0xf0, 0x76, 0x40, 0x99, 0xf3, 0x6e, 0x3d, 0xfb, 0xce, 0x75, 0x1a, 0x8f, 0xda, + 0xc6, 0x84, 0xca, 0x46, 0xb0, 0x94, 0x5b, 0xa5, 0x93, 0xb6, 0xb1, 0x85, 0x14, 0xd3, 0x95, + 0x42, 0xa8, 0x03, 0xa3, 0x30, 0x5b, 0x55, 0xb8, 0xf7, 0xc3, 0xc5, 0xad, 0xb4, 0xe5, 0x16, + 0x37, 0x9d, 0xb8, 0xea, 0x45, 0x70, 0x02, 0x0e, 0x95, 0xd6, 0x9a, 0xfb, 0xe1, 0x65, 0xe6, + 0x55, 0x96, 0x36, 0xd9, 0xbb, 0x9d, 0x29, 0x36, 0xff, 0x32, 0x72, 0xd7, 0x57, 0xd3, 0x93, + 0x93, 0x7b, 0xa4, 0xee, 0x4e, 0xdc, 0xc3, 0x29, 0xe1, 0x74, 0x26, 0xa7, 0xb5, 0xab, 0x99, + 0xaa, 0xcb, 0xd8, 0x04, 0xe4, 0x53, 0xf1, 0x47, 0xbc, 0x04, 0x39, 0x02, 0x2a, 0x3c, 0x78, + 0xb5, 0xf4, 0xdf, 0x3f, 0x0c, 0xc2, 0x4e, 0xa8, 0x99, 0x3b, 0xc9, 0x8f, 0xa7, 0xe5, 0xb4, + 0xd6, 0x28, 0xd3, 0x6e, 0xca, 0xa6, 0x62, 0x31, 0xf2, 0xc6, 0x12, 0x83, 0x7b, 0x8c, 0x37, + 0x04, 0xac, 0x12, 0x86, 0x2a, 0x67, 0xdf, 0x91, 0x27, 0x88, 0x5a, 0x8b, 0x4c, 0xe8, 0xf0, + 0x6d, 0x7d, 0xd0, 0xd8, 0xd2, 0xd2, 0x5e, 0x6a, 0x9f, 0x77, 0xed, 0x21, 0x78, 0x69, 0xad, + 0x2d, 0x46, 0x1c, 0x26, 0x05, 0x9d, 0x68, 0x9e, 0x4e, 0xd9, 0x77, 0x48, 0x90, 0xe1, 0x8d, + 0xfe, 0x00, 0x7e, 0xd3, 0xae, 0x55, 0xf8, 0x62, 0xab, 0xd7, 0xe4, 0xb0, 0xa5, 0x30, 0x18, + 0xc9, 0xc1, 0x81, 0x29, 0xec, 0x69, 0x83, 0x49, 0x1c, 0x8f, 0xc9, 0xbf, 0xb2, 0x6c, 0xf5, + 0xbd, 0xdd, 0xdb, 0x1f, 0xd8, 0xdb, 0x5b, 0xa1, 0x7b, 0x8a, 0xe0, 0xcb, 0xae, 0xed, 0x5f, + 0xf5, 0x53, 0xdb, 0x2f, 0x07, 0x84, 0xcb, 0xcd, 0x76, 0x42, 0x96, 0x99, 0xe3, 0x49, 0x0c, + 0x01, 0xa2, 0x09, 0x0c, 0xba, 0x4b, 0x23, 0x0f, 0xba, 0x32, 0x58, 0xd7, 0xe5, 0xcb, 0x18, + 0xed, 0xc5, 0x42, 0x7c, 0x10, 0x61, 0x20, 0x6a, 0x1a, 0x5c, 0x3d, 0xc8, 0x1e, 0x56, 0x81, + 0x77, 0x72, 0x16, 0xec, 0x66, 0xcf, 0xbb, 0xa4, 0x2b, 0x7b, 0x50, 0x6c, 0xe9, 0x26, 0x64, + 0xdb, 0x7b, 0xfa, 0x51, 0xa9, 0x32, 0x3e, 0xea, 0x01, 0x69, 0xc4, 0xcb, 0x0e, 0x83, 0xf7, + 0x56, 0xd3, 0xea, 0x98, 0x04, 0x61, 0x31, 0x3e, 0x39, 0xd2, 0x08, 0xef, 0x70, 0xdc, 0x01, + 0x17, 0x22, 0xeb, 0xf2, 0x84, 0xf7, 0x5f, 0x07, 0xcd, 0xe3, 0x22, 0xba, 0x23, 0xf2, 0x11, + 0x81, 0x5e, 0x4b, 0x61, 0x6f, 0x09, 0x26, 0x52, 0xf9, 0x49, 0xe3, 0x69, 0x18, 0x8a, 0x81, + 0x56, 0x13, 0xf8, 0x26, 0x8a, 0x13, 0x38, 0xfc, 0x8f, 0x93, 0x2e, 0x4b, 0x84, 0x57, 0x39, + 0x56, 0x49, 0x83, 0x55, 0x54, 0x17, 0xac, 0x7b, 0x01, 0x70, 0xeb, 0x03, 0x6b, 0xb8, 0x04, + 0x79, 0xcc, 0xdc, 0x3e, 0x98, 0x67, 0xac, 0xe0, 0x60, 0x4f, 0x06, 0xda, 0x01, 0x63, 0x21, + 0x03, 0x14, 0x02, 0xb2, 0x1a, 0xd4, 0xad, 0xe2, 0x01, 0xe2, 0x08, 0xee, 0xd7, 0x20, 0x04, + 0xc5, 0x9b, 0xa0, 0xfc, 0x73, 0x16, 0xc3, 0x2e, 0x37, 0x35, 0xba, 0x7c, 0x8c, 0x0d, 0xfa, + 0x32, 0x2c, 0xce, 0xf8, 0x9e, 0x50, 0xb9, 0x84, 0xbb, 0x02, 0x05, 0x71, 0x70, 0x2c, 0x2e, + 0xc6, 0xf0, 0x8d, 0x04, 0x71, 0xe7, 0x2a, 0xcb, 0xc1, 0xd1, 0x95, 0x20, 0xef, 0x5c, 0x9a, + 0x11, 0x0b, 0x95, 0x3a, 0xe6, 0x6c, 0xcb, 0x42, 0x78, 0xdd, 0x29, 0x1b, 0x08, 0xaf, 0x46, + 0x21, 0xd3, 0xbd, 0x4d, 0x51, 0xe8, 0x46, 0x04, 0xf6, 0x31, 0x5b, 0x9c, 0xc5, 0x2e, 0xd6, + 0x8f, 0x48, 0xf6, 0xfb, 0x51, 0x33, 0x27, 0x18, 0xb3, 0xbc, 0x5e, 0x00, 0x6a, 0xca, 0x5b, + 0x50, 0xb1, 0xbd, 0x10, 0x6a, 0xc2, 0xfc, 0xd3, 0x00, 0xc7, 0x7a, 0xce, 0x75, 0x17, 0xb7, + 0xba, 0xdc, 0x33, 0xce, 0x9b, 0x5f, 0x03, 0x02, 0xe7, 0x52, 0xcc, 0x1e, 0x3f, 0x02, 0x17, + 0xcb, 0x1f, 0xe7, 0x9e, 0x42, 0x02, 0xcd, 0x36, 0x14, 0xda, 0x5c, 0xad, 0x5c, 0xe9, 0x5a, + 0xc1, 0xc2, 0x20, 0x38, 0xdf, 0x2e, 0x69, 0x05, 0x82, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe7, 0x7c, 0x5f, 0xe5, 0x82, 0x96, 0x89, 0x98, 0x9e, 0x07, 0x36, 0x35, + 0x3b, 0xc0, 0xff, 0xd6, 0xb6, 0x9f, 0xd0, 0x51, 0x2b, 0x5a, 0xa1, 0xd5, 0x29, 0x21, 0x67, + 0xba, 0x63, 0xdc, 0x57, 0x19, 0xc9, 0x78, 0xbe, 0x1c, 0xd9, 0xca, 0xbd, 0xb5, 0xc7, 0x57, + 0xbe, 0x48, 0xc0, 0x25, 0xe5, 0xef, 0xbe, 0x17, 0x93, 0x7c, 0x24, 0x50, 0x43, 0x32, 0xec, + 0x6d, 0xcd, 0xcf, 0xac, 0x80, 0xe2, 0x3a, 0x01, 0xce, 0x2c, 0x6d, 0x87, 0xd0, 0x18, 0x4c, + 0x17, 0x99, 0xa2, 0x54, 0xed, 0x03, 0x04, 0x7c, 0xf5, 0x7a, 0x3b, 0xfd, 0x49, 0xb8, 0xa4, + 0x43, 0x8d, 0x49, 0x6d, 0x74, 0x1c, 0xf5, 0xac, 0xa6, 0xbd, 0x02, 0xcc, 0x36, 0x60, 0x19, + 0x59, 0x21, 0x3b, 0x6b, 0x0c, 0xdb, 0x96, 0xa7, 0x5c, 0x17, 0xc3, 0xa6, 0x68, 0xa9, 0x7f, + 0x0d, 0x6a, 0x8c, 0x5c, 0xe1, 0x64, 0xa5, 0x18, 0xea, 0x9b, 0xa9, 0xa5, 0x0e, 0xa7, 0x51, + 0x91, 0xfd, 0x86, 0x1b, 0x0f, 0xf1, 0x0e, 0x62, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5f, 0xd2, 0x81, 0x52, 0x14, 0x44, 0x95, 0x7b, 0xab, 0x12, 0xf4, 0x71, 0x04, + 0xf5, 0xff, 0x29, 0x56, 0x20, 0xfd, 0x17, 0xdb, 0xdb, 0x79, 0x9f, 0x81, 0x3f, 0x97, 0x3e, + 0x1e, 0xae, 0xd4, 0x16, 0x2b, 0xdd, 0x8d, 0x72, 0xb0, 0x3b, 0x4e, 0x2f, 0x27, 0x9a, 0x05, + 0xde, 0xe9, 0x9e, 0x05, 0xf6, 0x8f, 0x38, 0xa4, 0xb1, 0xd7, 0xf6, 0x95, 0x2c, 0xfa, 0xfd, + 0xca, 0x67, 0x5f, 0xaf, 0xbb, 0x0a, 0x65, 0xf0, 0xdb, 0x75, 0xa3, 0x31, 0xb2, 0xc0, 0x4f, + 0x82, 0xfe, 0xd8, 0x1c, 0x6e, 0xdc, 0x02, 0x91, 0xac, 0xe5, 0xed, 0xb0, 0x79, 0x4c, 0x28, + 0x5a, 0x53, 0x38, 0xf2, 0x0c, 0x89, 0x11, 0x95, 0xbc, 0x1e, 0x9d, 0x71, 0x34, 0xd3, 0xc0, + 0x5c, 0x62, 0xb2, 0x51, 0xcc, 0xb3, 0xab, 0x84, 0x73, 0xcb, 0x5d, 0xaf, 0xc7, 0xb1, 0x9f, + 0x3b, 0x67, 0x50, 0xe4, 0x1b, 0xf2, 0x4c, 0x6a, 0xd8, 0x82, 0x80, 0x2a, 0x60, 0xd8, 0x8a, + 0x2f, 0xb0, 0xfd, 0x64, 0x20, 0x95, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, + 0xd2, 0x81, 0x52, 0x14, 0x44, 0x95, 0x7b, 0xab, 0x12, 0xf4, 0x71, 0x04, 0xf5, 0xff, 0x29, + 0x56, 0x20, 0xfd, 0x17, 0xdb, 0xdb, 0x79, 0x9f, 0x81, 0x3f, 0x97, 0x3e, 0x1e, 0xae, 0xd4, + 0x16, 0x91, 0xc9, 0x48, 0x45, 0x0f, 0x08, 0x44, 0xa9, 0xea, 0xa6, 0x05, 0x03, 0x56, 0x7d, + 0xd7, 0xc8, 0x7e, 0xd6, 0x64, 0xdb, 0x62, 0x36, 0xc4, 0x36, 0x85, 0x75, 0xd4, 0xbe, 0xad, + 0xe9, 0x74, 0x18, 0x56, 0xf5, 0xe3, 0x28, 0xf9, 0xba, 0x28, 0xc3, 0x26, 0x10, 0x20, 0x76, + 0x62, 0xb9, 0x63, 0x82, 0x81, 0x87, 0x8e, 0x43, 0xa3, 0x1d, 0x3f, 0x2d, 0xe4, 0xe4, 0x40, + 0xd6, 0xa7, 0x92, 0xa0, 0x1a, 0x00, 0xec, 0xd3, 0x72, 0x28, 0xb0, 0x0c, 0x89, 0x73, 0xda, + 0x40, 0x03, 0x37, 0x30, 0x05, 0x87, 0xf4, 0x89, 0x97, 0x46, 0x59, 0x59, 0xef, 0xe0, 0x9a, + 0xc5, 0xe0, 0x12, 0xe1, 0x4f, 0x51, 0xeb, 0x24, 0x03, 0xe7, 0x8f, 0x9a, 0xa4, 0x04, 0x83, + 0x44, 0xa4, 0x51, 0x19, 0xdc, 0x45, 0xeb, 0xfb, 0x2f, 0xdd, 0x18, 0x06, 0x66, 0x2a, 0xee, + 0x64, 0x5a, 0x85, 0xd9, 0x95, 0x1b, 0x71, 0x4a, 0x42, 0xad, 0xa3, 0x9d, 0x7b, 0x26, 0x8d, + 0xb0, 0xdb, 0x11, 0x87, 0x84, 0x84, 0x6e, 0xfe, 0x57, 0x1b, 0x2f, 0xec, 0xa1, 0x2d, 0x5d, + 0xbb, 0x15, 0xad, 0x28, 0xd2, 0x3c, 0x93, 0x39, 0x87, 0x60, 0x7f, 0xa4, ], - // Transfer block &[ - 0x04, 0x00, 0x00, 0x00, 0x11, 0x83, 0xac, 0x9d, 0xf4, 0xa7, 0x0b, 0xb9, 0x7b, 0x19, 0x83, - 0x66, 0xe5, 0x0b, 0x57, 0x0c, 0x5c, 0xdd, 0xc1, 0x6f, 0xab, 0x0e, 0xd1, 0xd8, 0x03, 0x1b, - 0x67, 0x17, 0xaa, 0x61, 0xf9, 0xa4, 0x6d, 0x07, 0xc8, 0xf6, 0x27, 0xf0, 0x32, 0x9f, 0xfc, - 0x73, 0x53, 0xda, 0x1b, 0x2b, 0xd5, 0xef, 0x58, 0xb9, 0xd2, 0xbf, 0xbe, 0x63, 0x79, 0x3d, - 0x6c, 0xc3, 0x8c, 0x1c, 0x13, 0x34, 0x4b, 0xbd, 0xff, 0xeb, 0x2e, 0x6b, 0xa2, 0x9e, 0x22, - 0x11, 0xd3, 0x77, 0x9f, 0xdd, 0x4f, 0x0f, 0xd0, 0x8c, 0x54, 0xab, 0x63, 0x13, 0x64, 0x25, - 0xb3, 0x5a, 0x2f, 0x5d, 0xfa, 0x36, 0xdc, 0x12, 0x18, 0x46, 0x0a, 0x10, 0x4a, 0x4d, 0x0f, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x5a, 0x15, 0x08, 0x38, 0x10, 0x6c, 0xf1, 0xbb, 0x14, 0x31, + 0xcf, 0x7a, 0x7a, 0x41, 0xbd, 0xd2, 0x6a, 0xa0, 0x18, 0x0e, 0xa7, 0x0a, 0x37, 0x25, 0x87, + 0x39, 0xc1, 0x91, 0x51, 0x71, 0x62, 0x1f, 0xc8, 0xb7, 0x40, 0x00, 0xa4, 0x59, 0x47, 0x00, + 0x86, 0x1a, 0x5e, 0x1a, 0x9e, 0xab, 0xc5, 0x21, 0x77, 0x2e, 0x8c, 0x06, 0x75, 0x23, 0x8b, + 0x3d, 0x87, 0xc4, 0x73, 0x43, 0x02, 0x4d, 0x84, 0x97, 0xe9, 0xa7, 0x82, 0x6a, 0xa3, 0xd4, + 0xe1, 0xe0, 0xe4, 0x8e, 0x32, 0xe7, 0x60, 0x79, 0x9f, 0x2a, 0x3f, 0xe2, 0x20, 0x2d, 0x90, + 0xd4, 0x3e, 0xa5, 0x89, 0xa8, 0xa3, 0x89, 0x4d, 0xed, 0x5f, 0x0a, 0x10, 0x4a, 0x4d, 0x0f, 0x0f, 0x0f, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -871,639 +871,638 @@ pub(crate) const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x14, 0x15, 0xf5, 0x6a, 0x02, 0x90, 0xcb, 0x82, 0x93, 0x52, 0xa0, 0x05, 0x3f, 0x31, 0x73, - 0xd9, 0x9e, 0xc2, 0xa6, 0x07, 0xca, 0x29, 0x82, 0x02, 0x76, 0xab, 0xa6, 0x02, 0x0e, 0x29, - 0xc0, 0x2f, 0x5b, 0xb0, 0xa2, 0xb8, 0x0a, 0x56, 0xb3, 0x87, 0xa5, 0x75, 0x52, 0x9e, 0x00, - 0x08, 0x55, 0x46, 0xa1, 0x30, 0x43, 0x8f, 0x1c, 0x0b, 0x63, 0x32, 0x1e, 0xf9, 0x33, 0x08, - 0x6f, 0xbc, 0x80, 0x2a, 0x24, 0xc8, 0xe2, 0x33, 0x2c, 0xae, 0xab, 0xe6, 0x83, 0x7c, 0xdd, - 0x5b, 0xc3, 0xa2, 0x21, 0x33, 0x0b, 0x60, 0x2e, 0x17, 0x2f, 0xb7, 0x12, 0x08, 0x4e, 0xb4, - 0xa5, 0xea, 0x67, 0x4d, 0xc6, 0x96, 0xf2, 0xc9, 0x15, 0x23, 0x7c, 0x89, 0xce, 0xc9, 0x83, - 0xae, 0x15, 0x9a, 0xe8, 0x39, 0xca, 0x48, 0x05, 0x29, 0xa6, 0x63, 0x94, 0x4e, 0xe1, 0x1a, - 0xd8, 0x09, 0x52, 0xf3, 0x8a, 0xf4, 0xe6, 0x3b, 0x35, 0x3d, 0xbc, 0x0a, 0xf1, 0xae, 0xa4, - 0x1f, 0x7b, 0x57, 0xe5, 0xbe, 0xe6, 0x8d, 0x35, 0xf9, 0x09, 0x94, 0x14, 0x3a, 0x28, 0x21, - 0xf6, 0x0d, 0x3f, 0xce, 0xa7, 0x2f, 0xa5, 0xf9, 0xd6, 0x1c, 0x5c, 0xd2, 0x0d, 0x76, 0x9f, - 0xb8, 0x13, 0xf5, 0x27, 0x1c, 0x32, 0x72, 0xe5, 0x52, 0x8d, 0x97, 0x12, 0xdd, 0x02, 0x3a, - 0x34, 0x55, 0x0f, 0x23, 0x9b, 0x1c, 0x4a, 0x5b, 0xf8, 0x91, 0x9a, 0xe0, 0xb8, 0xed, 0xf0, - 0xf1, 0xae, 0xb8, 0x40, 0xbb, 0xb3, 0xd5, 0xcf, 0x5f, 0x5a, 0x2b, 0x41, 0x5d, 0xb9, 0xbc, - 0xe4, 0xe8, 0x7a, 0xaa, 0xa3, 0x79, 0x68, 0x46, 0x89, 0x69, 0xbf, 0x8a, 0x8f, 0xf2, 0xbc, - 0x5c, 0xe8, 0xd1, 0x5c, 0x3d, 0x60, 0x4e, 0x24, 0xef, 0x31, 0x5f, 0xe1, 0xf5, 0x7f, 0xa3, - 0xbc, 0x05, 0xce, 0xcc, 0x90, 0x2f, 0xcb, 0xe9, 0x33, 0x40, 0x93, 0xb5, 0xa9, 0x63, 0xb8, - 0x6f, 0xc8, 0x8b, 0x8a, 0x79, 0x7f, 0x2f, 0xd1, 0x8d, 0x14, 0xd4, 0x21, 0x22, 0xd6, 0x6d, - 0x33, 0x77, 0xfe, 0xc2, 0x73, 0x14, 0x96, 0x01, 0x00, 0x41, 0x20, 0xff, 0x10, 0xc5, 0xa7, - 0xbc, 0xaa, 0xdc, 0x22, 0xf1, 0x93, 0xa4, 0x99, 0xc8, 0x8f, 0x3a, 0xd5, 0xb5, 0xee, 0xaf, - 0xf2, 0x76, 0x5c, 0x28, 0xb7, 0x36, 0x61, 0x33, 0x34, 0x35, 0xa4, 0x80, 0x16, 0x4e, 0x6d, - 0x84, 0x69, 0x5d, 0x82, 0x58, 0x16, 0xcc, 0xca, 0x01, 0x35, 0x0b, 0x3f, 0x87, 0x73, 0x84, - 0x69, 0x0f, 0xc4, 0x7a, 0xb5, 0x3b, 0x8a, 0xad, 0x4c, 0x5c, 0xf9, 0x4b, 0xfa, 0xe1, 0x00, - 0x33, 0xd7, 0xb0, 0x54, 0x19, 0xf1, 0x69, 0x7b, 0x41, 0x31, 0x4d, 0x95, 0x75, 0xab, 0x04, - 0x28, 0xe8, 0x9f, 0x05, 0x6a, 0x67, 0xc8, 0x4f, 0x75, 0x15, 0x26, 0x4e, 0xae, 0x37, 0x9c, - 0x59, 0x89, 0x3b, 0x5e, 0x08, 0x83, 0xa4, 0xd1, 0x61, 0x06, 0xec, 0x60, 0x70, 0xef, 0x1c, - 0xdf, 0x8b, 0x50, 0xe5, 0x08, 0xf3, 0x90, 0xc9, 0x11, 0xc7, 0x19, 0xdc, 0xb6, 0xd1, 0x32, - 0x14, 0x0c, 0xb4, 0xf7, 0xa0, 0xf8, 0xf8, 0x50, 0x45, 0x40, 0xd7, 0xd8, 0xef, 0x5f, 0xa0, - 0xfa, 0xc6, 0xf4, 0xc3, 0x46, 0x4c, 0x02, 0xcf, 0x06, 0x30, 0x81, 0x0f, 0xd1, 0x6c, 0xd3, - 0x01, 0x75, 0x7e, 0xa2, 0xa6, 0x17, 0x76, 0x8a, 0x00, 0xac, 0xc5, 0x3c, 0xd6, 0xea, 0x2d, - 0x9e, 0xff, 0xc7, 0x31, 0xa4, 0x1d, 0x9d, 0x7d, 0xf3, 0xa0, 0xf6, 0x60, 0x04, 0xb8, 0x83, - 0xe8, 0xc6, 0xea, 0xb8, 0x5f, 0x15, 0xa4, 0xf5, 0xa7, 0xfb, 0x49, 0x02, 0x7e, 0x53, 0xb0, - 0x5d, 0x90, 0xfc, 0x59, 0x8e, 0x0a, 0xc0, 0x03, 0xa6, 0x52, 0xdc, 0x92, 0x42, 0xf5, 0x37, - 0xfd, 0x76, 0xd7, 0x3d, 0x34, 0xee, 0x12, 0x31, 0xf4, 0x06, 0x0b, 0x25, 0x4b, 0xd0, 0x49, - 0x57, 0x3e, 0xbf, 0xa9, 0x86, 0x59, 0xa4, 0x0d, 0x00, 0x4e, 0x42, 0x84, 0x8c, 0x38, 0x3a, - 0xad, 0x6b, 0x8c, 0xe4, 0x24, 0xe9, 0xb8, 0x02, 0x66, 0xdb, 0x51, 0xba, 0x39, 0xaa, 0xf6, - 0xb5, 0xea, 0xd6, 0xc8, 0x69, 0x7f, 0xd6, 0x5c, 0xba, 0x7e, 0x4b, 0x2e, 0xdf, 0x53, 0xd1, - 0xf7, 0xb6, 0xf5, 0xb6, 0x36, 0x7d, 0x9e, 0x7e, 0xfa, 0x3e, 0x79, 0x80, 0xd2, 0x9d, 0x67, - 0xa0, 0xa1, 0x36, 0x84, 0x8b, 0x08, 0xdd, 0x25, 0x8d, 0x9b, 0xfc, 0x13, 0x04, 0xd0, 0xd7, - 0xf9, 0x84, 0x5f, 0xdd, 0xce, 0x07, 0x2f, 0x4d, 0x51, 0x88, 0xed, 0x3b, 0xda, 0x7c, 0x9c, - 0x30, 0x82, 0x65, 0x9b, 0xfb, 0xa9, 0x1f, 0xd5, 0x62, 0x10, 0x6e, 0x4d, 0x0f, 0xe8, 0xcc, - 0x19, 0x6f, 0xae, 0x5f, 0xe0, 0x54, 0x81, 0xf3, 0x66, 0xd1, 0x7a, 0xc5, 0xa5, 0xd1, 0x29, - 0x52, 0xfa, 0x42, 0x06, 0x77, 0x78, 0xd9, 0x21, 0x01, 0xdb, 0x05, 0xbc, 0xea, 0x16, 0x11, - 0x8f, 0x4b, 0x15, 0xbc, 0x5f, 0xb6, 0x0c, 0xb2, 0xce, 0x9a, 0x2d, 0x32, 0xbe, 0xe6, 0xe3, - 0xdc, 0x04, 0x1f, 0x0f, 0xe9, 0x8e, 0x68, 0x3e, 0x09, 0x36, 0x7e, 0x83, 0xa8, 0xb0, 0x3b, - 0xa1, 0x87, 0xba, 0x2a, 0x28, 0xc5, 0x7a, 0xfb, 0x4f, 0x59, 0x67, 0x52, 0xfd, 0x8e, 0x1b, - 0x8f, 0xae, 0x46, 0xae, 0x69, 0x1e, 0xd8, 0x9c, 0xc4, 0x75, 0xce, 0x9c, 0xf8, 0x39, 0x46, - 0x7c, 0x0b, 0x27, 0x3e, 0x44, 0xb1, 0xd4, 0xdd, 0xe8, 0xf1, 0x96, 0x6c, 0x97, 0xb8, 0x9d, - 0xd5, 0x33, 0xb0, 0xcd, 0xea, 0x2a, 0x84, 0x19, 0xcd, 0x71, 0x6f, 0xb9, 0xc2, 0xfe, 0x40, - 0x24, 0x54, 0x34, 0xb5, 0x4a, 0x7e, 0x41, 0xb2, 0x9b, 0x31, 0x19, 0x1a, 0xb6, 0x15, 0x90, - 0xf5, 0x68, 0xd2, 0xa1, 0xd0, 0x0f, 0x87, 0xfb, 0x32, 0x7a, 0xc2, 0x4e, 0xfa, 0x2c, 0x86, - 0xe6, 0x69, 0xf8, 0x67, 0xfc, 0x1c, 0xd2, 0x79, 0xc9, 0x98, 0x15, 0xd7, 0x35, 0x18, 0x90, - 0xd8, 0x73, 0x2d, 0x43, 0xf8, 0x17, 0x4a, 0x72, 0x0a, 0xb5, 0x9f, 0x05, 0x13, 0xa1, 0x14, - 0x5d, 0x35, 0xfc, 0x8e, 0xf8, 0xe9, 0x69, 0xc8, 0x0f, 0xa7, 0xc0, 0xc2, 0x5d, 0x97, 0xd0, - 0x40, 0x92, 0x03, 0xc8, 0x66, 0xf1, 0x70, 0xac, 0xe4, 0xab, 0x21, 0x04, 0x0c, 0xa9, 0x8e, - 0x7d, 0xf2, 0x56, 0xa5, 0x80, 0x5a, 0xaa, 0x6a, 0x0e, 0xba, 0x8b, 0x9e, 0xab, 0x1e, 0xd3, - 0x9d, 0x26, 0x97, 0x4f, 0xc2, 0x55, 0x87, 0xd6, 0xdc, 0x5e, 0xc6, 0x76, 0x2a, 0xc8, 0x71, - 0x12, 0xaa, 0x9a, 0xf5, 0x54, 0x64, 0x1f, 0x61, 0x4e, 0x5d, 0xa8, 0xd8, 0x32, 0x31, 0x72, - 0xbe, 0x5e, 0x99, 0x5a, 0x0e, 0xfb, 0xaa, 0xc6, 0x7e, 0xd9, 0xc9, 0x8d, 0xfd, 0xaa, 0x79, - 0xca, 0x33, 0xdd, 0x78, 0xc6, 0xbd, 0x3b, 0xa3, 0xdd, 0xdc, 0x03, 0xd9, 0x17, 0x6b, 0x96, - 0xbd, 0xe2, 0x10, 0x78, 0xa6, 0xf5, 0x47, 0xd8, 0x13, 0x83, 0x39, 0x3c, 0x5b, 0xe7, 0x3a, - 0x2b, 0x4a, 0x70, 0xc0, 0x99, 0x0d, 0x34, 0xdd, 0x91, 0x42, 0x94, 0x30, 0x98, 0x49, 0x90, - 0xdf, 0x86, 0x04, 0x5c, 0x0c, 0xc9, 0x2a, 0x0b, 0x4d, 0x20, 0x80, 0xdb, 0x5c, 0x4a, 0x2d, - 0xfe, 0x43, 0x16, 0x43, 0x51, 0xc4, 0x19, 0xff, 0xb0, 0x54, 0x82, 0xd7, 0xa8, 0xc0, 0xfc, - 0x17, 0x04, 0x26, 0x97, 0x00, 0x54, 0xf0, 0xd8, 0xe3, 0x20, 0xf9, 0xaf, 0x0d, 0xd7, 0xdd, - 0x3a, 0x67, 0xa2, 0xf9, 0x0e, 0xca, 0xdc, 0x31, 0x32, 0x71, 0x59, 0xbf, 0x15, 0xb3, 0x79, - 0xbe, 0xf0, 0x1e, 0xf2, 0x3d, 0xa1, 0xfc, 0x69, 0xee, 0x8b, 0x94, 0x4e, 0xf8, 0x28, 0x70, - 0xa7, 0x22, 0x2b, 0xe1, 0x79, 0xf1, 0x8c, 0x69, 0x57, 0xc1, 0xba, 0x2b, 0x44, 0xa0, 0xe0, - 0x0e, 0x5d, 0xa8, 0x3b, 0xa8, 0xfb, 0x4a, 0x7c, 0x8a, 0x38, 0x9e, 0x02, 0xf8, 0xff, 0x63, - 0xab, 0xa8, 0x48, 0x54, 0xe2, 0xe5, 0x0f, 0xdc, 0x95, 0xd9, 0xc4, 0x5a, 0x7a, 0x6b, 0x44, - 0xb8, 0x6d, 0xde, 0x4a, 0x97, 0x93, 0x6e, 0x32, 0xa2, 0x77, 0x37, 0x4c, 0xd3, 0xee, 0xe9, - 0x70, 0xa1, 0xfd, 0xfc, 0x5c, 0xd0, 0xc9, 0x1c, 0xac, 0xe3, 0x06, 0xd8, 0x82, 0xd6, 0x70, - 0xd8, 0x4a, 0x59, 0x32, 0x5a, 0x24, 0x67, 0x57, 0xe5, 0x66, 0x9e, 0x5a, 0xc3, 0x17, 0x29, - 0x19, 0xb5, 0xb6, 0x1a, 0x88, 0x3b, 0xe7, 0x3e, 0x4b, 0x9c, 0x1d, 0x79, 0xe8, 0x55, 0x94, - 0xb2, 0xe3, 0xdc, 0xd1, 0x4a, 0x1e, 0x40, 0xf0, 0x5e, 0xfa, 0x08, 0x4d, 0x4a, 0xbb, 0xa3, - 0xa7, 0x09, 0x80, 0xa7, 0xfb, 0xb7, 0x6e, 0x51, 0x51, 0xad, 0x58, 0x2a, 0xb2, 0x39, 0x32, - 0x7a, 0xf0, 0x7f, 0xe1, 0xf7, 0xfb, 0x10, 0x2d, 0x1c, 0xcc, 0x92, 0x6f, 0x83, 0x5c, 0xaa, - 0x3d, 0x63, 0xdc, 0xcd, 0xde, 0xc1, 0x99, 0xc7, 0xf5, 0xf4, 0x23, 0x83, 0xab, 0xff, 0xb9, - 0xed, 0x40, 0x83, 0x95, 0x37, 0xef, 0x45, 0x63, 0x75, 0x74, 0x68, 0xc0, 0xdb, 0x3e, 0xe6, - 0xbc, 0xe6, 0x14, 0x92, 0x9e, 0xa4, 0xbd, 0xa9, 0x8c, 0x41, 0x7e, 0xea, 0xc0, 0xeb, 0x4d, - 0xbf, 0xa1, 0x82, 0x2a, 0x10, 0x6f, 0x45, 0x6a, 0xc4, 0xb2, 0x70, 0x80, 0xf9, 0xe3, 0x3b, - 0x72, 0xb8, 0x45, 0xc8, 0xd1, 0x0a, 0xe4, 0xd7, 0xe7, 0x11, 0xf5, 0xf6, 0xeb, 0x68, 0x47, - 0xa6, 0xaf, 0x0b, 0xc9, 0x9f, 0xe2, 0xde, 0x97, 0x1b, 0x6b, 0xfd, 0x13, 0xa3, 0xf2, 0x39, - 0x21, 0x2e, 0xc8, 0x93, 0xf8, 0xed, 0xaa, 0x84, 0x44, 0xa0, 0x75, 0x78, 0xab, 0x9f, 0xb4, - 0x27, 0xd7, 0xa7, 0x35, 0x30, 0xa3, 0x13, 0xa6, 0xcc, 0xaa, 0xa6, 0xda, 0x16, 0x4d, 0xc2, - 0xc4, 0x1f, 0xde, 0xc0, 0xeb, 0x76, 0x7a, 0x8f, 0xb4, 0x35, 0x5b, 0x5c, 0xc4, 0x55, 0x29, - 0x51, 0xa3, 0x55, 0x8d, 0x88, 0xad, 0x89, 0x50, 0x55, 0x09, 0xaf, 0xbf, 0x6d, 0xf8, 0x1b, - 0xaa, 0x3b, 0x6d, 0xb7, 0xff, 0x5e, 0x83, 0x49, 0x09, 0xa6, 0xf8, 0x0e, 0x0b, 0xc8, 0x45, - 0x13, 0xc8, 0xfe, 0x39, 0x61, 0x99, 0xfa, 0x84, 0x32, 0x05, 0x68, 0x2f, 0x78, 0x17, 0x41, - 0x44, 0x04, 0x99, 0x75, 0x12, 0x89, 0x59, 0x2a, 0x73, 0x86, 0x04, 0x29, 0xcc, 0x18, 0x53, - 0x90, 0x62, 0xd2, 0xb9, 0x1f, 0x03, 0xaf, 0xe1, 0x86, 0x40, 0xb8, 0x92, 0xb9, 0x19, 0x3f, - 0x1c, 0xf5, 0xc4, 0xb0, 0x10, 0x9c, 0x7d, 0xf8, 0x95, 0x18, 0xc5, 0x6d, 0x71, 0xa4, 0xa8, - 0x0d, 0xc1, 0xaf, 0xfa, 0x9f, 0x8c, 0x0b, 0x84, 0xc0, 0x73, 0x5e, 0x06, 0x9d, 0x68, 0xfc, - 0xa5, 0xa4, 0xed, 0x9b, 0x2c, 0x8c, 0x9c, 0x2e, 0x4a, 0x1e, 0x3d, 0x10, 0xd3, 0xf5, 0x93, - 0xc1, 0x49, 0xc6, 0x0b, 0xae, 0x24, 0xac, 0x10, 0xf2, 0x43, 0x3e, 0xe9, 0x4b, 0x96, 0xfa, - 0x76, 0xb7, 0xdc, 0x43, 0x60, 0xa3, 0x78, 0x5b, 0x6c, 0x84, 0xf4, 0xe2, 0x1a, 0xf6, 0x84, - 0xbb, 0x46, 0x05, 0x13, 0xef, 0x05, 0x75, 0x94, 0x8a, 0xcf, 0xeb, 0x2f, 0x49, 0xb5, 0x64, - 0x5c, 0x32, 0x84, 0xc8, 0x93, 0xf5, 0x3f, 0x3f, 0x63, 0x2f, 0x39, 0x8f, 0x8f, 0x27, 0x21, - 0xc2, 0x0b, 0xd3, 0xe0, 0xff, 0x6f, 0x21, 0x93, 0xaa, 0x57, 0xf8, 0x57, 0x22, 0x07, 0x7b, - 0xbc, 0x55, 0x16, 0x43, 0x53, 0xd9, 0x65, 0x59, 0x28, 0x91, 0x18, 0x64, 0x67, 0xa1, 0xfc, - 0xb3, 0xf0, 0x58, 0x33, 0xf6, 0xcc, 0x30, 0x7a, 0x16, 0x8c, 0xef, 0x2e, 0x08, 0xe1, 0x55, - 0x5a, 0xda, 0xb3, 0x83, 0xd1, 0x9c, 0xcb, 0x8d, 0x33, 0x01, 0x4e, 0xbb, 0xd4, 0xcb, 0xb1, - 0xff, 0x19, 0xd8, 0x77, 0x9e, 0xec, 0xb1, 0xbf, 0xc6, 0x17, 0xe0, 0x35, 0x51, 0xd4, 0x42, - 0xf2, 0x6c, 0x41, 0x4e, 0x16, 0x60, 0x1c, 0x71, 0xb6, 0x49, 0xdf, 0xc8, 0xa4, 0xc6, 0x39, - 0x9a, 0xdc, 0x2b, 0x66, 0x9c, 0x88, 0xc8, 0xdb, 0xbe, 0x58, 0x36, 0xac, 0xee, 0x78, 0xf6, - 0x77, 0xf1, 0x58, 0xd3, 0x96, 0x74, 0x38, 0x52, 0xb1, 0xdf, 0x91, 0x82, 0x7c, 0x60, 0x6b, - 0x80, 0x10, 0xb3, 0xb1, 0xd4, 0xf2, 0x80, 0x42, 0xe0, 0x3f, 0x83, 0xfc, 0xcb, 0xb4, 0x32, - 0x3a, 0x34, 0x7b, 0x1a, 0x8a, 0xa2, 0xce, 0xf3, 0xd6, 0x9a, 0x4c, 0x96, 0x80, 0x02, 0xf6, - 0x21, 0xf3, 0xef, 0x84, 0xd0, 0x24, 0x3d, 0xc4, 0xf7, 0xac, 0xa6, 0x4b, 0x14, 0xab, 0x4f, - 0xb7, 0x0b, 0x0a, 0x37, 0x76, 0x52, 0x7b, 0xc8, 0x34, 0xa2, 0xf4, 0xad, 0x6b, 0xd1, 0x5f, - 0x37, 0xf3, 0x73, 0xe5, 0x56, 0x10, 0x7b, 0xac, 0x46, 0xd7, 0x9d, 0x54, 0x8c, 0x60, 0xbf, - 0x73, 0xc7, 0x74, 0x78, 0xa6, 0xb0, 0x51, 0xea, 0x7f, 0x6f, 0x39, 0x54, 0x8c, 0xb8, 0xa0, - 0x38, 0x65, 0x77, 0x9b, 0x1a, 0x94, 0x67, 0x00, 0x3f, 0xeb, 0xd8, 0x3e, 0x09, 0xb2, 0x09, - 0xba, 0x88, 0x77, 0xb0, 0x44, 0xf1, 0xa1, 0x43, 0x92, 0x07, 0x4e, 0xd7, 0x97, 0xcf, 0xc4, - 0xd2, 0xb7, 0xfc, 0x0b, 0x4f, 0x14, 0xdd, 0x38, 0xa4, 0x12, 0xa8, 0x4c, 0xcd, 0x91, 0x9f, - 0xd3, 0x75, 0xb0, 0xab, 0xf3, 0x25, 0x20, 0x51, 0xd1, 0xcf, 0x04, 0x33, 0xfd, 0xe0, 0x1c, - 0xf8, 0x57, 0x0b, 0x7f, 0x0d, 0x1a, 0x30, 0xe7, 0x24, 0xdb, 0xfd, 0xea, 0x13, 0x3d, 0xa6, - 0xff, 0x2f, 0x7a, 0xab, 0x50, 0xa9, 0x30, 0xf4, 0x76, 0xca, 0xcc, 0xf6, 0x27, 0x1d, 0x7e, - 0x1e, 0x97, 0xc9, 0xe6, 0x4d, 0x48, 0xa2, 0xb0, 0xb4, 0x15, 0xd5, 0xf5, 0xaa, 0x42, 0xce, - 0x90, 0xc5, 0x81, 0x43, 0xd3, 0x45, 0x64, 0xba, 0x18, 0x0b, 0xd2, 0xaa, 0x76, 0xcd, 0x5f, - 0x17, 0xb4, 0xae, 0xbe, 0x9d, 0x59, 0x51, 0x0a, 0x0c, 0x46, 0xdf, 0x4e, 0x82, 0xae, 0xa9, - 0x0f, 0xbb, 0x1b, 0xf7, 0x12, 0xc2, 0xf9, 0x89, 0x53, 0x05, 0x5f, 0xf4, 0x7b, 0x6f, 0x09, - 0xff, 0x8f, 0xd4, 0x8e, 0xfe, 0xae, 0xcd, 0x84, 0x40, 0xd7, 0xd6, 0x37, 0x47, 0xa2, 0x66, - 0x2a, 0x3b, 0x4b, 0x93, 0x92, 0xf4, 0xc2, 0x4a, 0xe4, 0x9c, 0xb7, 0xf9, 0x38, 0x29, 0x88, - 0x91, 0x6c, 0xe6, 0xb6, 0xa6, 0x99, 0x55, 0x93, 0xb6, 0xc5, 0xf1, 0x2c, 0x72, 0xbb, 0x6e, - 0xe3, 0xb9, 0x17, 0x8c, 0xfe, 0xf4, 0x9f, 0x3c, 0xdb, 0xcc, 0x67, 0x31, 0xfa, 0xfa, 0xbc, - 0xcf, 0x32, 0x49, 0xe5, 0x8b, 0xd5, 0xab, 0x3f, 0xde, 0x0a, 0x56, 0xbd, 0x12, 0xfe, 0x92, - 0xdf, 0x6e, 0xc1, 0xb3, 0x77, 0xcf, 0x1f, 0x1d, 0xc6, 0xef, 0xff, 0xe6, 0xd1, 0x34, 0xf5, - 0xa7, 0x78, 0x07, 0x20, 0xb3, 0xe6, 0xb1, 0x26, 0xb6, 0x9a, 0xb6, 0x03, 0x99, 0x07, 0x18, - 0xa5, 0xa9, 0xe2, 0xdd, 0x7b, 0x14, 0x15, 0x73, 0x26, 0x82, 0x17, 0xac, 0x22, 0xae, 0x94, - 0xfb, 0x63, 0x41, 0x51, 0xd1, 0x76, 0xbe, 0xdd, 0x19, 0x87, 0x1a, 0xe3, 0xcb, 0x97, 0x59, - 0xd4, 0xae, 0x08, 0xe3, 0x44, 0x1d, 0x0b, 0x49, 0x15, 0x8c, 0xde, 0xca, 0x19, 0xc7, 0xde, - 0x38, 0x2f, 0xe1, 0x94, 0xe4, 0x5d, 0x6c, 0x73, 0xbd, 0xbb, 0x48, 0x23, 0x7d, 0x09, 0xb0, - 0x24, 0x40, 0x38, 0x98, 0xfe, 0xbd, 0x3b, 0xe0, 0x65, 0xd2, 0xe7, 0xc4, 0x22, 0x15, 0x2a, - 0x2a, 0x3e, 0x5d, 0x6e, 0xb7, 0xf6, 0x77, 0xc2, 0xdf, 0x63, 0xe1, 0x18, 0x8b, 0x6f, 0xc2, - 0x8c, 0x60, 0x8e, 0x2c, 0xe6, 0x9e, 0xb9, 0x00, 0xc4, 0xd0, 0xc2, 0x69, 0x8c, 0xf9, 0xd0, - 0xbd, 0xe5, 0xe7, 0xc1, 0x8b, 0x60, 0xf3, 0xa2, 0x23, 0x4b, 0x5d, 0x31, 0x0a, 0x65, 0xac, - 0x09, 0x8f, 0xa9, 0xf0, 0xb9, 0x36, 0xe8, 0x7d, 0xdd, 0xfc, 0x62, 0xbd, 0xe0, 0x2e, 0xa5, - 0xb8, 0x4a, 0x03, 0x81, 0x18, 0xed, 0xeb, 0x0c, 0xfa, 0xfd, 0x4a, 0x85, 0x36, 0xd6, 0x04, - 0x34, 0xff, 0x3c, 0xd2, 0x01, 0x71, 0xb7, 0x8c, 0xd9, 0x2a, 0xca, 0xf5, 0x57, 0xe6, 0xd8, - 0xa3, 0x62, 0x3c, 0xca, 0x95, 0xdc, 0xcb, 0x2f, 0xb8, 0x4f, 0xd4, 0xc6, 0x73, 0x3d, 0xae, - 0xd9, 0x10, 0xf0, 0x4a, 0x4a, 0x75, 0x68, 0xe4, 0xab, 0x7d, 0x3c, 0xd3, 0x92, 0x1a, 0x93, - 0x25, 0xf3, 0x47, 0x1d, 0x40, 0x5b, 0x9c, 0x2a, 0x96, 0xc4, 0xbb, 0xa6, 0xa0, 0x11, 0x72, - 0xc4, 0x2a, 0x8f, 0xb9, 0x66, 0xcd, 0xc0, 0xc2, 0x31, 0x10, 0x06, 0x42, 0x70, 0x50, 0xc3, - 0x93, 0x17, 0xad, 0xa1, 0x1e, 0x2c, 0x3c, 0xba, 0x8a, 0x9c, 0x56, 0x78, 0x2c, 0x79, 0x2d, - 0xcb, 0xa7, 0xeb, 0xb9, 0xde, 0xe5, 0xc3, 0xa9, 0x03, 0x6c, 0xc4, 0x47, 0x83, 0xa9, 0x9c, - 0x24, 0x6c, 0x78, 0x8c, 0xbf, 0x39, 0xba, 0x17, 0x84, 0x14, 0x6f, 0x9c, 0x05, 0x83, 0xbb, - 0x9e, 0xeb, 0x10, 0x35, 0x86, 0x1d, 0x2c, 0x21, 0x68, 0x45, 0x89, 0xd4, 0xdf, 0x70, 0x88, - 0x00, 0x70, 0xc0, 0xc1, 0x62, 0xda, 0x92, 0x72, 0xd1, 0xcc, 0x59, 0x40, 0xc9, 0x1b, 0x4c, - 0xf1, 0x24, 0x56, 0x5a, 0x88, 0x4d, 0x5e, 0x59, 0x16, 0x14, 0xbc, 0xdc, 0xf1, 0xb4, 0x81, - 0x1b, 0x97, 0x30, 0xb8, 0xc6, 0x12, 0x2d, 0x68, 0x46, 0x31, 0x5d, 0xa9, 0x71, 0x78, 0xb7, - 0x52, 0x9d, 0xc3, 0x1e, 0xf3, 0x3f, 0xb5, 0x39, 0x1f, 0x57, 0x63, 0x7e, 0x3a, 0x45, 0x55, - 0x1e, 0x2a, 0x3c, 0x91, 0x2b, 0x96, 0xe9, 0x3b, 0x3b, 0xcf, 0x01, 0x89, 0x43, 0x56, 0xb6, - 0x50, 0xdb, 0x34, 0x59, 0x4e, 0x3d, 0x19, 0x47, 0xb7, 0xc2, 0x9c, 0x53, 0x4d, 0xe4, 0x47, - 0x3a, 0x26, 0x56, 0x45, 0x67, 0x33, 0x7b, 0xa7, 0x1c, 0xfb, 0x39, 0x26, 0x75, 0x98, 0xc3, - 0x0f, 0x79, 0xce, 0xe3, 0xcd, 0x46, 0x19, 0x37, 0xa6, 0x21, 0x6f, 0xfa, 0x73, 0xef, 0xc6, - 0x83, 0x0c, 0xe4, 0x30, 0x81, 0xba, 0xd8, 0x05, 0x7f, 0xa8, 0xbb, 0x73, 0xd6, 0x27, 0x31, - 0x9e, 0xca, 0x67, 0x8c, 0x5a, 0x3d, 0xac, 0x8b, 0x71, 0x7a, 0xba, 0x32, 0xf0, 0xef, 0xda, - 0x1d, 0xbf, 0xba, 0x8c, 0xe4, 0xba, 0x13, 0x1d, 0x9a, 0x21, 0x83, 0xe7, 0x18, 0xb6, 0xd1, - 0x82, 0xe5, 0x25, 0xfc, 0x37, 0xa6, 0x7d, 0x9d, 0x09, 0xb8, 0x78, 0x70, 0x11, 0x6d, 0x24, - 0xf4, 0x34, 0xc1, 0x32, 0xe0, 0x46, 0xc5, 0xd7, 0x59, 0x79, 0x19, 0x26, 0xfa, 0xdf, 0x2e, - 0xb6, 0xc3, 0xd1, 0xa1, 0x5d, 0xd9, 0x23, 0x64, 0xc2, 0xc5, 0x73, 0x23, 0xe5, 0x98, 0x1a, - 0x89, 0x2c, 0x64, 0x5f, 0x42, 0x1b, 0x98, 0x42, 0xb8, 0xad, 0x21, 0x2d, 0x87, 0x34, 0x7d, - 0xc4, 0x95, 0x34, 0x60, 0x88, 0xad, 0xae, 0x0c, 0xaa, 0x8b, 0x68, 0xb1, 0x4a, 0x0c, 0x36, - 0xaf, 0x30, 0x55, 0x4f, 0x0d, 0x17, 0x43, 0x20, 0x8a, 0xa5, 0xb0, 0xdf, 0xb3, 0x74, 0x3d, - 0x1a, 0x9a, 0x29, 0xa0, 0x13, 0x8c, 0x98, 0x46, 0xc3, 0xf4, 0xa6, 0x5d, 0x7a, 0x93, 0xc2, - 0x4d, 0xea, 0x5c, 0xc5, 0x1a, 0x4a, 0x7e, 0x45, 0x8c, 0x0f, 0xc7, 0x1a, 0xd2, 0x1e, 0x84, - 0x98, 0xb3, 0x98, 0x51, 0x58, 0x0f, 0x5f, 0xba, 0xc3, 0xfb, 0x49, 0x9e, 0x93, 0x79, 0x59, - 0x09, 0xe5, 0xc5, 0x78, 0x5d, 0x59, 0x89, 0xfe, 0x97, 0x1b, 0x8b, 0xd4, 0xba, 0xc8, 0xcf, - 0xc4, 0xf1, 0xa3, 0xf7, 0x00, 0x72, 0x42, 0xad, 0xd3, 0x25, 0x42, 0xc6, 0xc8, 0x2b, 0x69, - 0xf0, 0x7d, 0x82, 0xdd, 0x89, 0x6c, 0x33, 0x05, 0x64, 0x27, 0x0d, 0x83, 0xf6, 0x44, 0x0b, - 0x6b, 0x84, 0x37, 0x99, 0xae, 0x08, 0xa4, 0xb9, 0xda, 0x47, 0x21, 0xc6, 0xce, 0x18, 0xec, - 0x1c, 0x9a, 0x9c, 0xe6, 0xdc, 0x7d, 0xd4, 0xf5, 0x93, 0x00, 0x76, 0xe2, 0x5d, 0x48, 0xd8, - 0xf9, 0x71, 0x47, 0x3f, 0xb0, 0x17, 0xe3, 0x82, 0x35, 0x36, 0xaa, 0x7a, 0x68, 0xfe, 0xee, - 0xdb, 0x37, 0x2e, 0xef, 0xa3, 0x35, 0x48, 0x27, 0xd0, 0x07, 0x3b, 0x70, 0xd9, 0xfa, 0x77, - 0x52, 0xe9, 0xf2, 0x41, 0x04, 0xf6, 0x07, 0x9c, 0x96, 0x14, 0x85, 0xa7, 0x7c, 0x08, 0x4d, - 0xb5, 0x9e, 0x1d, 0x25, 0x2a, 0x84, 0xc1, 0x98, 0x17, 0x97, 0x7b, 0x52, 0x35, 0x9f, 0x74, - 0x92, 0xbf, 0x73, 0xdd, 0x1f, 0xa9, 0x9a, 0xef, 0xc9, 0xec, 0x01, 0x51, 0x89, 0xd6, 0xc1, - 0x5a, 0x38, 0xda, 0xab, 0xd4, 0x01, 0x0a, 0x1f, 0x0d, 0x9d, 0x2a, 0x5f, 0xc9, 0x5b, 0xf1, - 0xb5, 0x65, 0x62, 0x42, 0x3f, 0x89, 0x74, 0x71, 0x50, 0x72, 0x67, 0x98, 0x44, 0x64, 0x13, - 0xcf, 0x15, 0x72, 0x38, 0xc2, 0xa6, 0xc0, 0x4f, 0x04, 0x1e, 0x49, 0xed, 0x75, 0x79, 0xf8, - 0xab, 0x25, 0x4c, 0xc3, 0x30, 0x2e, 0x83, 0xff, 0xaf, 0x8e, 0xd1, 0xce, 0xab, 0x29, 0xc3, - 0x94, 0x00, 0xe4, 0x8a, 0x2c, 0xb3, 0x33, 0x4f, 0x75, 0x2c, 0x7f, 0x11, 0xe9, 0xf7, 0xf2, - 0x1b, 0x8b, 0x8f, 0x16, 0xa7, 0x18, 0x33, 0xae, 0xb4, 0x9f, 0x9e, 0x4b, 0xe4, 0x16, 0xe2, - 0x27, 0x18, 0x28, 0x2a, 0xcc, 0x7c, 0x5b, 0xe0, 0xb2, 0x9a, 0xbf, 0xa9, 0x5a, 0x16, 0xfc, - 0xdf, 0x9c, 0x18, 0xdf, 0x2f, 0xed, 0xd3, 0x5c, 0x08, 0x3a, 0x11, 0xf3, 0xa3, 0xb5, 0x4d, - 0x42, 0xb3, 0x7b, 0x4c, 0x9f, 0x08, 0xc4, 0x3e, 0x4f, 0xd3, 0x7e, 0xce, 0xe9, 0x85, 0xa5, - 0xf7, 0xe5, 0x09, 0x6a, 0x62, 0xa7, 0xd1, 0x1d, 0x49, 0x1e, 0x8c, 0x8d, 0x11, 0xd2, 0xdd, - 0x0d, 0x41, 0x2f, 0x69, 0x62, 0x75, 0xe1, 0x85, 0xa8, 0x23, 0x0d, 0xa5, 0xe8, 0x7b, 0xee, - 0xa5, 0xb0, 0x1f, 0x00, 0x6a, 0xc4, 0x3f, 0x24, 0x9d, 0xf5, 0x95, 0xa9, 0x2f, 0x53, 0xf2, - 0x1f, 0x89, 0x52, 0xa9, 0x36, 0xd3, 0x7b, 0x2f, 0xab, 0x28, 0x7d, 0x32, 0x3b, 0x21, 0x7b, - 0xfc, 0x05, 0xab, 0x4e, 0x3f, 0x1e, 0x08, 0xca, 0xb3, 0x55, 0x53, 0xfe, 0x41, 0xf8, 0x38, - 0xf2, 0x61, 0x26, 0xd6, 0x63, 0x6b, 0xb1, 0xc0, 0x53, 0xa0, 0xe4, 0x31, 0xb8, 0xfe, 0x94, - 0xc6, 0x04, 0xd4, 0xe8, 0x33, 0x08, 0xf9, 0xab, 0x27, 0xc0, 0xee, 0xf9, 0x18, 0x45, 0x23, - 0xf0, 0x37, 0x5c, 0x90, 0xaf, 0x4b, 0xc3, 0xde, 0x7a, 0x4e, 0xbd, 0x31, 0x7c, 0xa0, 0x2a, - 0x7c, 0x68, 0x64, 0xe7, 0xb5, 0x56, 0x77, 0x4e, 0x75, 0x2c, 0x33, 0x6b, 0x2d, 0xca, 0x3d, - 0xcb, 0xab, 0x7c, 0x70, 0x10, 0xa6, 0x72, 0x22, 0x3a, 0x5f, 0xe0, 0xd1, 0xac, 0xd7, 0x8c, - 0x20, 0xab, 0xbc, 0x8b, 0xa6, 0x27, 0x91, 0x4d, 0xa0, 0xb9, 0x0e, 0x0c, 0x34, 0x27, 0x1f, - 0xb9, 0x21, 0xae, 0x34, 0x51, 0x79, 0xa2, 0xed, 0xc9, 0x25, 0xcc, 0x5d, 0x05, 0x13, 0x22, - 0x16, 0xb4, 0x83, 0x8f, 0x87, 0x23, 0x2d, 0x04, 0xf1, 0x51, 0x25, 0x9e, 0x31, 0xf7, 0xae, - 0xad, 0x8d, 0xd2, 0x73, 0xb7, 0xb4, 0x5e, 0x0f, 0x7c, 0x60, 0xf6, 0xbd, 0xa5, 0xfc, 0xd3, - 0x46, 0x67, 0xb3, 0x7b, 0x8e, 0x8f, 0x65, 0x30, 0xb5, 0xa4, 0xb3, 0x4c, 0x56, 0x43, 0x3d, - 0x73, 0xbc, 0xbc, 0xff, 0xbf, 0x00, 0xec, 0xda, 0x33, 0x71, 0xbf, 0xe7, 0x5f, 0x10, 0xa4, - 0x65, 0x43, 0xd7, 0xbd, 0x98, 0xa4, 0x11, 0x84, 0xb2, 0x90, 0xa0, 0x46, 0xea, 0xe6, 0xcf, - 0xb8, 0xa8, 0x78, 0x3b, 0xbe, 0x42, 0xa4, 0x71, 0x0f, 0x15, 0x3a, 0x3d, 0x06, 0x3b, 0x85, - 0x5e, 0xe6, 0x97, 0x3e, 0x25, 0xa0, 0x9f, 0x82, 0x21, 0x41, 0x25, 0x6b, 0x48, 0x67, 0xdb, - 0xf4, 0x5b, 0x9f, 0x82, 0x68, 0xba, 0xd7, 0x3b, 0x7d, 0x18, 0xdf, 0xcd, 0xb2, 0xf2, 0xc7, - 0xaa, 0x54, 0x7b, 0x94, 0x18, 0x4f, 0x9d, 0xf2, 0x49, 0x1c, 0x91, 0x00, 0x17, 0x5e, 0x6f, - 0xeb, 0x63, 0x43, 0x93, 0xd1, 0x3c, 0x6e, 0x54, 0xd7, 0x54, 0x16, 0x0e, 0xc0, 0xbf, 0x21, - 0xea, 0x3b, 0xf8, 0x49, 0x00, 0xda, 0x21, 0x9e, 0x26, 0x89, 0xc5, 0x9e, 0x8d, 0xa9, 0x3f, - 0x3a, 0x44, 0xec, 0xfc, 0x4c, 0x16, 0xd0, 0x51, 0x15, 0xbc, 0x47, 0xdd, 0x1b, 0x66, 0x89, - 0x18, 0x3d, 0x56, 0x9e, 0xdb, 0x71, 0x33, 0x47, 0xa3, 0x4c, 0x7f, 0xa1, 0xbf, 0x71, 0x18, - 0x0f, 0x97, 0x92, 0xf1, 0x3c, 0x13, 0xeb, 0xec, 0xa3, 0x78, 0x29, 0x38, 0x24, 0x0a, 0xae, - 0x6c, 0xe6, 0x20, 0x62, 0x13, 0xd4, 0x9d, 0x34, 0x61, 0x2e, 0x4f, 0xc5, 0xaa, 0x7d, 0x6c, - 0x2e, 0x0d, 0xe7, 0x59, 0x02, 0x56, 0x49, 0x5d, 0x74, 0xe1, 0x04, 0x13, 0xf8, 0x95, 0x7f, - 0xf6, 0x39, 0x22, 0x72, 0x79, 0x31, 0x3c, 0xcd, 0x76, 0x33, 0x38, 0xa6, 0xcf, 0x35, 0xe7, - 0x71, 0xf9, 0xbf, 0x9d, 0x8c, 0x97, 0xc7, 0x53, 0x9e, 0x69, 0x10, 0xdf, 0xec, 0x3d, 0x62, - 0x0c, 0x0e, 0x27, 0xac, 0x0d, 0xb9, 0x71, 0xdd, 0xcb, 0x6c, 0x0e, 0x17, 0x55, 0x9e, 0xa2, - 0x5f, 0x72, 0x37, 0x9c, 0xe1, 0xb3, 0xf8, 0x54, 0x44, 0x68, 0x11, 0x43, 0xcd, 0x36, 0x09, - 0xe1, 0x6e, 0xac, 0xe0, 0x8c, 0xcb, 0x6c, 0x9a, 0x0c, 0x41, 0x9e, 0x32, 0x4a, 0x07, 0xbb, - 0x02, 0x07, 0x14, 0x44, 0x87, 0x00, 0x77, 0x29, 0x83, 0x20, 0x28, 0xdc, 0x6f, 0xcb, 0x48, - 0x2b, 0x44, 0xa0, 0xeb, 0xff, 0xfd, 0xaf, 0xbf, 0x49, 0x07, 0x6d, 0x48, 0x89, 0x14, 0x6d, - 0xa4, 0x99, 0xd5, 0xa6, 0xd8, 0x94, 0xf0, 0x70, 0x24, 0x02, 0xcd, 0x46, 0x2a, 0x97, 0x2b, - 0xd4, 0x5d, 0x59, 0xeb, 0x38, 0x18, 0xe2, 0xc3, 0x74, 0xa3, 0x98, 0xd9, 0xe8, 0x0e, 0xb0, - 0x68, 0xeb, 0xf8, 0xf8, 0x9b, 0x0f, 0xdb, 0x20, 0x6b, 0x36, 0x21, 0xae, 0x1b, 0xa3, 0x3c, - 0x51, 0x83, 0xe9, 0x23, 0xf5, 0x0e, 0x9a, 0xcc, 0x82, 0x17, 0x02, 0x37, 0x16, 0xf5, 0xa0, - 0xf1, 0xc6, 0x70, 0xc0, 0x4e, 0x6c, 0x02, 0x0f, 0xc7, 0x4a, 0x9b, 0xdc, 0xc2, 0x85, 0x0a, - 0x03, 0x71, 0x71, 0x20, 0xdf, 0xf8, 0xfd, 0xc2, 0xe0, 0x33, 0x0c, 0xe4, 0x00, 0xe9, 0x75, - 0xea, 0x05, 0x7d, 0x94, 0xc3, 0x0f, 0xf8, 0x14, 0xa2, 0xc5, 0x27, 0x8c, 0xe9, 0xe7, 0x9d, - 0x96, 0x0f, 0x4c, 0x11, 0xed, 0xf6, 0xd2, 0xca, 0xf8, 0x74, 0x09, 0x41, 0xbf, 0x54, 0xf0, - 0x2a, 0x36, 0x48, 0x64, 0x8f, 0xad, 0xd1, 0x89, 0x28, 0x45, 0x0d, 0x66, 0xe1, 0xe7, 0xb7, - 0x8f, 0xa7, 0x06, 0x0f, 0x76, 0x3b, 0x72, 0x4b, 0x42, 0x00, 0x7b, 0xd5, 0xe2, 0xbc, 0x2a, - 0x15, 0x6c, 0xcf, 0x01, 0x40, 0x09, 0x8b, 0x87, 0xd0, 0xfd, 0x7c, 0x21, 0xc8, 0x65, 0xbe, - 0x90, 0xe2, 0x98, 0xe4, 0x07, 0xa4, 0x0a, 0x7f, 0xe3, 0x4c, 0x35, 0xf0, 0x0e, 0x16, 0xd7, - 0x1d, 0x6a, 0xe4, 0x56, 0x49, 0xd5, 0x30, 0x5f, 0x04, 0xd6, 0x5d, 0x6c, 0x66, 0x43, 0xc0, - 0x06, 0x2d, 0x46, 0xcb, 0x5b, 0x88, 0x22, 0x5b, 0xcc, 0x04, 0x72, 0x37, 0x6f, 0xf0, 0xdc, - 0xbb, 0x4f, 0x4e, 0x4d, 0x8b, 0xfc, 0x51, 0xee, 0x57, 0x27, 0x98, 0x2e, 0x1c, 0x60, 0x0d, - 0xc7, 0x5e, 0xa3, 0x5b, 0x98, 0x29, 0x4e, 0x34, 0x25, 0x4f, 0x11, 0x9b, 0xe0, 0x31, 0x1e, - 0x9d, 0xa4, 0x21, 0x7c, 0xcd, 0x14, 0x4a, 0x76, 0xde, 0xf0, 0x78, 0x92, 0x71, 0x61, 0x81, - 0xe1, 0xbd, 0xf1, 0xa6, 0x7c, 0x4f, 0x21, 0x5f, 0x4e, 0x7c, 0x1b, 0x33, 0xae, 0x16, 0x12, - 0x33, 0x93, 0xa3, 0xab, 0xe3, 0xed, 0xf2, 0x2a, 0xef, 0xd9, 0xda, 0x85, 0xc2, 0xeb, 0x0a, - 0xea, 0x04, 0xab, 0xfb, 0x5a, 0x79, 0x39, 0x15, 0x11, 0xb5, 0x11, 0x3e, 0x05, 0xc0, 0x01, - 0x9f, 0x73, 0xad, 0x5e, 0xfa, 0xf5, 0x3f, 0xdd, 0xf3, 0x7c, 0x82, 0xb5, 0xda, 0x42, 0x19, - 0xf2, 0x6b, 0x5d, 0x9d, 0xe5, 0xb5, 0x7c, 0xb8, 0x7c, 0xaf, 0x3b, 0x3c, 0x9a, 0x24, 0x00, - 0x45, 0x95, 0x68, 0x27, 0x82, 0xa8, 0xbe, 0x81, 0x4d, 0x37, 0x61, 0x3a, 0xe6, 0x5b, 0x74, - 0x8b, 0x02, 0x32, 0x80, 0xa0, 0xcf, 0xc6, 0xea, 0xda, 0x41, 0x13, 0x1d, 0x58, 0x53, 0x3c, - 0x9a, 0x1f, 0xae, 0xa0, 0x2d, 0xaa, 0x08, 0x72, 0xc0, 0x9c, 0x75, 0xb8, 0xde, 0xac, 0xa0, - 0x13, 0xa8, 0x41, 0x2c, 0x4b, 0xef, 0x94, 0x9a, 0x2d, 0x11, 0x04, 0xae, 0x22, 0x95, 0x57, - 0xa7, 0xf6, 0xf7, 0x22, 0x82, 0x7b, 0x61, 0xd6, 0xce, 0x63, 0x75, 0xe9, 0x62, 0xb7, 0x1a, - 0xbc, 0xff, 0x9d, 0xeb, 0xe8, 0xc3, 0xc9, 0x72, 0x28, 0x8a, 0xbd, 0x67, 0xc6, 0x39, 0xd1, - 0x86, 0xf5, 0x2a, 0xe6, 0x6e, 0x09, 0x19, 0x7e, 0x79, 0x70, 0xa8, 0x1a, 0x37, 0x50, 0x86, - 0x30, 0x20, 0xf4, 0xfd, 0x5e, 0x45, 0x61, 0xf1, 0xc5, 0x48, 0x61, 0x27, 0x38, 0xce, 0x11, - 0xa7, 0x6d, 0x5b, 0x59, 0xa0, 0x22, 0x0d, 0x1a, 0x8b, 0x53, 0xed, 0xaa, 0x14, 0x37, 0x4b, - 0x74, 0x4c, 0xa3, 0x33, 0x06, 0x1b, 0x10, 0x54, 0x04, 0xad, 0x92, 0x18, 0x0e, 0x25, 0x4d, - 0x43, 0xf3, 0xc8, 0xa0, 0xba, 0x5c, 0x29, 0xe8, 0xb0, 0x09, 0x7f, 0x9f, 0xaa, 0x56, 0xb7, - 0x8f, 0x86, 0xbe, 0xf0, 0x0b, 0xaa, 0x28, 0x06, 0xfb, 0x70, 0x82, 0xbc, 0x98, 0x48, 0x40, - 0xae, 0x53, 0x6b, 0xed, 0x85, 0xc6, 0x9d, 0x69, 0xe6, 0x46, 0x4c, 0x2f, 0x57, 0x5a, 0x1c, - 0x56, 0x65, 0xab, 0x58, 0x48, 0x9c, 0x3a, 0x8f, 0xb6, 0x14, 0xf7, 0xa6, 0x30, 0xfc, 0x9b, - 0x71, 0x8e, 0xc7, 0x0f, 0x12, 0xdd, 0x21, 0xf5, 0x14, 0xfc, 0xab, 0x2c, 0x68, 0x03, 0x87, - 0x60, 0xe4, 0xa9, 0x4f, 0xf7, 0x5f, 0x94, 0xc5, 0x3e, 0x61, 0xb4, 0x98, 0xd7, 0x27, 0xce, - 0x12, 0x28, 0xfd, 0x3f, 0x62, 0x08, 0xf0, 0x87, 0x4c, 0x24, 0x07, 0x4f, 0xa2, 0xac, 0x21, - 0x22, 0xac, 0x11, 0x10, 0xc1, 0x1a, 0x05, 0x02, 0x9c, 0x0a, 0x7f, 0x41, 0xed, 0x11, 0x20, - 0x93, 0xe1, 0xb5, 0xe3, 0xfd, 0xdd, 0x79, 0xfb, 0x97, 0x56, 0x12, 0x5d, 0x9b, 0x9e, 0x08, - 0x63, 0x46, 0x0e, 0x89, 0xdb, 0x05, 0x26, 0x18, 0x05, 0x6b, 0x85, 0x73, 0xa8, 0x3e, 0xd7, - 0x5a, 0x0f, 0xb6, 0x56, 0xc7, 0x9d, 0x5a, 0xef, 0x50, 0xe6, 0xd9, 0x5e, 0x90, 0xfa, 0x13, - 0x4d, 0x7f, 0x5b, 0x04, 0x33, 0xc6, 0x26, 0x8f, 0x77, 0x30, 0x81, 0x08, 0xb6, 0x8f, 0x9a, - 0x82, 0x38, 0xf1, 0x10, 0x88, 0x0f, 0x79, 0x60, 0x55, 0x22, 0xee, 0x13, 0xa6, 0xd6, 0x20, - 0xb3, 0xe2, 0xd8, 0xe7, 0x2d, 0xce, 0x3e, 0x71, 0x92, 0x29, 0x66, 0xb0, 0x06, 0x0b, 0x37, - 0xa7, 0xfa, 0x1c, 0x17, 0xd3, 0x33, 0xb9, 0x08, 0x45, 0xb5, 0x6d, 0x42, 0xb3, 0x06, 0x30, - 0xea, 0xb2, 0x19, 0xf8, 0x61, 0x6a, 0xcf, 0xd7, 0x15, 0x5a, 0x04, 0x33, 0x74, 0x6d, 0x07, - 0x07, 0xf0, 0x47, 0xea, 0x6d, 0x8b, 0x26, 0x4f, 0x07, 0xba, 0x14, 0xa0, 0x68, 0x32, 0xc6, - 0x25, 0x8c, 0xda, 0x63, 0x3c, 0xd0, 0xd1, 0x3c, 0xd1, 0xfa, 0x01, 0x1b, 0xe4, 0x7b, 0xa3, - 0xaf, 0x6e, 0xc7, 0x3f, 0x94, 0x41, 0x9c, 0x17, 0x86, 0x89, 0xb6, 0x05, 0xbb, 0x8d, 0xd4, - 0xed, 0xcb, 0xae, 0xb9, 0xdf, 0x35, 0xec, 0xfd, 0xb5, 0x24, 0xb3, 0xab, 0x10, 0x59, 0xfa, - 0xe3, 0xb0, 0x07, 0xfa, 0xc7, 0xde, 0x8f, 0x7c, 0xa7, 0xbd, 0xba, 0xcf, 0xde, 0x6b, 0xd3, - 0x60, 0xa4, 0xe0, 0x8d, 0xdd, 0x65, 0x1e, 0x65, 0xeb, 0xf7, 0xdd, 0x47, 0xe0, 0x5a, 0x23, - 0x4e, 0x6d, 0x9f, 0xc8, 0x81, 0x4d, 0x13, 0xa1, 0xcd, 0x72, 0x1e, 0x2e, 0x48, 0x4b, 0x24, - 0x08, 0x43, 0xfa, 0x95, 0xdd, 0xb1, 0x38, 0x0f, 0x95, 0xe0, 0x25, 0xeb, 0xbe, 0xba, 0xe5, - 0xb3, 0x03, 0xb0, 0x2a, 0x45, 0x70, 0xdd, 0xcb, 0x5b, 0xa3, 0xc1, 0x3b, 0x02, 0x62, 0x5c, - 0x90, 0x07, 0x74, 0x1c, 0x67, 0x60, 0x71, 0x04, 0xed, 0x27, 0x7a, 0x89, 0x9b, 0x77, 0x4a, - 0xc4, 0xa0, 0xff, 0x30, 0x35, 0x5d, 0x54, 0x6a, 0xe8, 0x4d, 0x5e, 0xb3, 0x35, 0xf8, 0x97, - 0x3f, 0xa2, 0xac, 0x42, 0x9b, 0x46, 0xcd, 0x50, 0x23, 0x48, 0x08, 0x96, 0x00, 0x5d, 0x5a, - 0x29, 0xc0, 0x27, 0xde, 0x7c, 0x3f, 0x46, 0x0a, 0x48, 0x3a, 0x83, 0xa3, 0xea, 0xbf, 0x6b, - 0x08, 0x40, 0x08, 0x7c, 0xea, 0x1a, 0x5f, 0xdb, 0xcb, 0xf6, 0x74, 0x8c, 0xbf, 0xab, 0x55, - 0xf1, 0xa9, 0xc8, 0x32, 0x81, 0xc6, 0x21, 0x1c, 0x43, 0x7a, 0xf4, 0xc0, 0x67, 0xf6, 0x38, - 0xed, 0x45, 0x86, 0x9f, 0xf2, 0xb2, 0xa7, 0x8f, 0xcf, 0x4c, 0x6d, 0xc5, 0xac, 0x3f, 0x57, - 0x65, 0xdd, 0x5a, 0x42, 0x03, 0x74, 0x79, 0x10, 0x82, 0x02, 0x69, 0xfb, 0xc4, 0xa7, 0x2a, - 0x3e, 0xed, 0x85, 0x74, 0x43, 0x07, 0x0d, 0xa5, 0x50, 0xb1, 0x12, 0x13, 0xc4, 0x99, 0x16, - 0x59, 0x11, 0x26, 0xce, 0x62, 0xca, 0xe4, 0x66, 0x38, 0xa0, 0x2f, 0x30, 0x01, 0x3e, 0x74, - 0x43, 0x3f, 0xa2, 0x8d, 0xf6, 0xb8, 0xfe, 0x88, 0xb4, 0x84, 0xd6, 0x21, 0x7f, 0xde, 0xc1, - 0x6f, 0x0a, 0x1a, 0x6c, 0x47, 0x33, 0x76, 0xaa, 0xeb, 0xdd, 0x25, 0xbc, 0x5a, 0x21, 0x0e, - 0xff, 0x40, 0x1e, 0x57, 0xbd, 0x97, 0x25, 0xf3, 0x49, 0x03, 0xa5, 0x07, 0x3a, 0x8a, 0x71, - 0xfa, 0x1f, 0x5a, 0x31, 0x14, 0x93, 0x55, 0xab, 0x81, 0xa7, 0xa6, 0xd9, 0xfd, 0x2b, 0x86, - 0x0f, 0xe5, 0xbe, 0x49, 0x1f, 0xe1, 0xfd, 0x37, 0x9c, 0x74, 0x94, 0xa0, 0x81, 0xe0, 0xba, - 0xb0, 0x2b, 0xaf, 0xd0, 0x69, 0x4f, 0x90, 0x7f, 0x48, 0x63, 0xae, 0x78, 0x8b, 0x9d, 0x85, - 0x8f, 0xbd, 0x2f, 0xd5, 0xa8, 0x75, 0x24, 0x69, 0x42, 0xf6, 0xd4, 0x81, 0x3c, 0xbe, 0x57, - 0xcd, 0x7d, 0x4c, 0x82, 0x9f, 0xd2, 0xa5, 0x1a, 0xc9, 0x26, 0xd0, 0x77, 0x51, 0xab, 0xd6, - 0x1d, 0x29, 0x24, 0xed, 0x05, 0xaa, 0x5e, 0x14, 0xe8, 0x0a, 0x2f, 0x25, 0x07, 0x32, 0xc3, - 0x8f, 0x3b, 0x50, 0x06, 0x4c, 0x08, 0x11, 0xda, 0xf2, 0x4f, 0x2f, 0xcf, 0x41, 0x95, 0xcc, - 0xdd, 0xa4, 0x67, 0xe6, 0x39, 0x16, 0x3d, 0x1f, 0xb7, 0x91, 0xcd, 0xfd, 0xbd, 0x31, 0x50, - 0x5b, 0xbb, 0xee, 0x95, 0xda, 0x53, 0x63, 0xa2, 0x88, 0xd7, 0x0b, 0x5c, 0xeb, 0x53, 0xc1, - 0x4c, 0x7d, 0xfb, 0xf8, 0xfc, 0x54, 0x47, 0x02, 0x30, 0x4e, 0xfc, 0x14, 0xd0, 0xd1, 0x5a, - 0xf1, 0x17, 0x03, 0x0f, 0x5f, 0x7e, 0xcc, 0xac, 0x31, 0xd6, 0x51, 0x07, 0xbf, 0x9b, 0xff, - 0x13, 0x84, 0x21, 0xd5, 0xc3, 0x0f, 0x1c, 0x41, 0xa1, 0xd0, 0x28, 0x1c, 0xb9, 0xd0, 0x29, - 0xd9, 0x06, 0x88, 0xc3, 0xd8, 0x92, 0x1a, 0x80, 0xf1, 0xff, 0x53, 0x3f, 0xa2, 0x96, 0x5a, - 0x91, 0x2a, 0x2f, 0x69, 0x5d, 0x2e, 0xce, 0x2b, 0x4b, 0x60, 0xe8, 0x77, 0x0c, 0x4b, 0x21, - 0x01, 0x79, 0x26, 0x4e, 0x8d, 0x07, 0x54, 0xbf, 0xf2, 0x7f, 0xae, 0x9d, 0x67, 0xd7, 0x67, - 0x0d, 0x70, 0x5a, 0xa6, 0xab, 0xa2, 0x75, 0x59, 0x69, 0x68, 0x7e, 0x3a, 0x01, 0x31, 0x18, - 0x39, 0x8d, 0xae, 0x43, 0x78, 0x4d, 0x44, 0x6b, 0x9a, 0xd8, 0xc9, 0xef, 0xcd, 0x5a, 0x63, - 0xb7, 0x24, 0x4e, 0x75, 0xea, 0x2a, 0x19, 0x78, 0x6a, 0x4f, 0x28, 0x26, 0x37, 0x72, 0xe4, - 0x8e, 0x0a, 0xec, 0x60, 0xa3, 0x9d, 0x84, 0x07, 0x80, 0x11, 0x87, 0xa1, 0x20, 0xbc, 0x1d, - 0xad, 0x93, 0x8d, 0x30, 0x2e, 0x3b, 0xbc, 0xfe, 0x95, 0x49, 0x39, 0x8c, 0x2b, 0xd1, 0xf6, - 0xc3, 0xc8, 0x51, 0x08, 0x10, 0x43, 0x57, 0x88, 0xb8, 0x43, 0x73, 0x59, 0x0c, 0x32, 0x08, - 0x35, 0x55, 0xb7, 0x60, 0xc0, 0x99, 0x6f, 0x22, 0x74, 0xea, 0x1e, 0xf3, 0x2e, 0x2c, 0x36, - 0xb1, 0x8c, 0x37, 0xa8, 0x96, 0x2c, 0x62, 0x44, 0x4f, 0x7c, 0x67, 0xc0, 0xc2, 0x16, 0x72, - 0x64, 0xe9, 0x03, 0xe3, 0x4d, 0x60, 0x8a, 0xcf, 0x74, 0x70, 0x17, 0xb4, 0x81, 0xcc, 0xf2, - 0xc2, 0x52, 0xb7, 0x79, 0x8d, 0x9e, 0x47, 0x1a, 0x83, 0x39, 0xdb, 0xa1, 0x7a, 0x9a, 0x96, - 0xdd, 0x1d, 0x0c, 0xdf, 0x5c, 0x8b, 0x3a, 0x71, 0x61, 0x9f, 0x57, 0x6c, 0x84, 0xc0, 0x7d, - 0x53, 0xe4, 0xb8, 0xe2, 0x79, 0xb5, 0x54, 0x6f, 0xde, 0x24, 0xf6, 0x0b, 0xc6, 0x45, 0xb5, - 0xfb, 0x52, 0x92, 0x5a, 0xe3, 0xd2, 0xe1, 0x80, 0x53, 0x14, 0x1b, 0x5d, 0xef, 0x2c, 0x75, - 0xbe, 0xe4, 0x1e, 0xc4, 0x49, 0x20, 0x27, 0x3b, 0x53, 0x9d, 0x3e, 0x33, 0x8a, 0xe6, 0x96, - 0x21, 0x6a, 0xf0, 0x82, 0x8b, 0x1d, 0x84, 0x10, 0x33, 0xe9, 0xd9, 0x38, 0xd8, 0xb2, 0x81, - 0xf7, 0xec, 0xf4, 0xdf, 0x27, 0x89, 0xac, 0x3c, 0xb6, 0xcc, 0x62, 0x06, 0xf7, 0x25, 0x99, - 0xd5, 0xdd, 0xab, 0xc0, 0x27, 0xa0, 0x23, 0xfc, 0xf9, 0x91, 0x71, 0x54, 0xca, 0x6f, 0xc2, - 0xff, 0xb6, 0xce, 0x17, 0x2d, 0xd2, 0xac, 0xae, 0x5f, 0xed, 0x73, 0x7d, 0x30, 0xab, 0x32, - 0x1f, 0xaa, 0x29, 0xe1, 0xad, 0xe0, 0x6c, 0xb2, 0xf8, 0x8e, 0xdb, 0x54, 0x29, 0xd8, 0x71, - 0x6f, 0xd5, 0x3a, 0x76, 0x99, 0x38, 0x83, 0x97, 0xbe, 0xda, 0x81, 0x09, 0x07, 0x33, 0xab, - 0x82, 0x19, 0x35, 0x6b, 0x54, 0xb7, 0x79, 0x7f, 0x91, 0xae, 0xda, 0x1a, 0xae, 0xf0, 0xb9, - 0x4f, 0x0e, 0xde, 0x86, 0x2f, 0x4d, 0xbe, 0xe9, 0x5b, 0x8d, 0xaa, 0xc8, 0xda, 0x19, 0xd0, - 0x5b, 0xea, 0x95, 0xf6, 0x0f, 0xc2, 0x13, 0xc3, 0x3a, 0x1d, 0x59, 0xdf, 0x57, 0xa6, 0xf3, - 0x98, 0x18, 0x8f, 0x34, 0x61, 0x22, 0x01, 0x5b, 0x82, 0x73, 0x4b, 0x1e, 0x43, 0x94, 0x41, - 0x13, 0x06, 0xda, 0x56, 0x70, 0x27, 0x00, 0xe4, 0x9c, 0xa6, 0x80, 0x40, 0xe8, 0x7c, 0x49, - 0xdd, 0xe1, 0x44, 0x56, 0x97, 0x12, 0x45, 0x10, 0xe1, 0x20, 0xd3, 0x52, 0x9c, 0x5b, 0x35, - 0xfb, 0xc4, 0x3e, 0xe5, 0xe8, 0x98, 0x32, 0x8f, 0x39, 0x4b, 0x84, 0xf5, 0x2c, 0xf6, 0x11, - 0x53, 0x95, 0xac, 0xc5, 0x12, 0x5d, 0x55, 0x6f, 0xff, 0x3b, 0x34, 0xd6, 0x73, 0xe3, 0xf8, - 0x2b, 0x98, 0xe6, 0x8e, 0xb0, 0x91, 0xa6, 0xba, 0x66, 0x8d, 0x39, 0xa3, 0x04, 0xb7, 0x79, - 0x83, 0x89, 0xda, 0xf5, 0x88, 0xfe, 0x2f, 0x4a, 0x28, 0xdd, 0x2b, 0x40, 0xf7, 0x34, 0xf2, - 0xad, 0x0d, 0x5a, 0x03, 0xfb, 0xcd, 0x61, 0x74, 0x34, 0x5f, 0xce, 0x22, 0x39, 0x2f, 0xd1, - 0x9f, 0x2c, 0xd4, 0xc6, 0x21, 0x59, 0xe4, 0xbe, 0x94, 0x67, 0x98, 0x32, 0x7b, 0xdb, 0xb3, - 0xbb, 0xdb, 0xb0, 0x6a, 0x0c, 0x7e, 0x2f, 0x02, 0x72, 0x45, 0x80, 0x73, 0x6b, 0x89, 0x36, - 0xb3, 0x39, 0x5c, 0x78, 0x64, 0xfc, 0xed, 0x19, 0xe2, 0x30, 0x6b, 0x9b, 0x59, 0xac, 0x18, - 0xa9, 0x2d, 0x54, 0x56, 0xc4, 0x5c, 0x58, 0x4f, 0x60, 0x0b, 0x13, 0xff, 0x09, 0xf8, 0xc5, - 0x9d, 0x3e, 0x8f, 0xaa, 0x7f, 0x29, 0xea, 0xb6, 0xe4, 0x38, 0x17, 0x95, 0x33, 0x28, 0xee, - 0x81, 0x21, 0xc3, 0x9e, 0x01, 0xe8, 0x07, 0x2a, 0x72, 0xe8, 0xc7, 0x06, 0xbf, 0xa5, 0x10, - 0xb3, 0x29, 0x27, 0x3d, 0x9a, 0xa1, 0x21, 0x9b, 0xc5, 0xe5, 0xa2, 0x4c, 0xc5, 0xbe, 0xa4, - 0x82, 0xc1, 0xb3, 0xd3, 0xd2, 0xd5, 0xfc, 0x7d, 0xc4, 0xfd, 0x0e, 0x36, 0x0c, 0x4d, 0xfd, - 0xa1, 0x3a, 0xa5, 0xa6, 0xf4, 0x21, 0x9f, 0xe5, 0x8f, 0x9c, 0x74, 0xe1, 0x20, 0x33, 0x7b, - 0x17, 0x2e, 0x70, 0x97, 0x4c, 0x7c, 0x6d, 0xed, 0xdb, 0x3a, 0x6c, 0xff, 0x70, 0x6a, 0x9f, - 0x25, 0x94, 0x48, 0x60, 0xf3, 0xb9, 0xa0, 0x39, 0x1b, 0x2d, 0x49, 0x07, 0xde, 0xec, 0xf3, - 0xf7, 0x4f, 0x07, 0x31, 0xa0, 0x68, 0x50, 0xbd, 0x1d, 0x2a, 0x2a, 0x1c, 0xa5, 0xd6, 0xf7, - 0xdd, 0xf4, 0x47, 0x95, 0xcf, 0x58, 0x68, 0x96, 0x3c, 0x1e, 0xe9, 0x5c, 0xea, 0xba, 0x71, - 0x23, 0xbf, 0xae, 0xf2, 0x1b, 0x44, 0x48, 0x47, 0x9c, 0x3d, 0x0a, 0xed, 0x5c, 0x5e, 0x40, - 0x15, 0x84, 0xcf, 0xdb, 0x6f, 0xce, 0x9a, 0x08, 0x03, 0xb4, 0x20, 0x26, 0x5e, 0x06, 0xab, - 0x05, 0xa7, 0xcb, 0x5c, 0x24, 0xc7, 0x2f, 0x56, 0x65, 0x20, 0x4f, 0x1a, 0x5a, 0x6c, 0xd7, - 0x0f, 0xa7, 0x3e, 0x33, 0x30, 0x0b, 0x93, 0xf3, 0xae, 0x54, 0xf3, 0x1e, 0xd6, 0x1f, 0x18, - 0xf4, 0xaf, 0xef, 0xb0, 0xd7, 0x78, 0x31, 0x6f, 0xc5, 0xff, 0x68, 0x53, 0xfc, 0xa5, 0xc2, - 0x73, 0x2d, 0x85, 0x8c, 0x84, 0xc5, 0x03, 0x79, 0xea, 0x24, 0x0b, 0xdb, 0x8d, 0xdd, 0x02, - 0x36, 0x0f, 0xd0, 0xd5, 0x9e, 0xfc, 0xf3, 0x38, 0xff, 0xc2, 0xb7, 0xe3, 0x51, 0x89, 0x37, - 0x6c, 0x8b, 0x4c, 0xca, 0x68, 0x4c, 0x2c, 0x59, 0xa7, 0x66, 0xcc, 0x28, 0xb3, 0x6c, 0x4b, - 0x07, 0x86, 0x39, 0xf9, 0x75, 0x41, 0xe6, 0xe0, 0x12, 0x5e, 0xc3, 0x2b, 0x82, 0x31, 0x8c, - 0xeb, 0x53, 0xd1, 0x2f, 0x6b, 0x79, 0x12, 0xdb, 0x8b, 0xd6, 0xc5, 0x0d, 0xee, 0xcf, 0xb3, - 0x38, 0x88, 0x3b, 0x1b, 0x13, 0x69, 0x53, 0xdf, 0x47, 0xc4, 0xfe, 0x6d, 0xda, 0x53, 0xd2, - 0x2a, 0x6a, 0x5b, 0x82, 0x6f, 0x66, 0xfb, 0xa5, 0xd5, 0x1c, 0x70, 0x49, 0x8e, 0x2b, 0xdb, - 0x60, 0xe5, 0xd9, 0xbb, 0x28, 0xb6, 0x29, 0x27, 0x8e, 0x15, 0x7a, 0x40, 0xc5, 0xbd, 0x15, - 0x1d, 0xc2, 0xee, 0x80, 0xe5, 0x1b, 0xa0, 0xc2, 0xd0, 0x3a, 0x01, 0xe0, 0x6b, 0x55, 0x20, - 0x1a, 0x43, 0x52, 0x0c, 0x58, 0x63, 0xc0, 0xb5, 0x06, 0x7f, 0x34, 0xe7, 0x90, 0x46, 0x5b, - 0x28, 0xdf, 0x5b, 0xe0, 0x5b, 0xbd, 0xe7, 0x34, 0xdc, 0x02, 0xd3, 0x47, 0x33, 0xde, 0xac, - 0xf1, 0x10, 0x86, 0x40, 0x24, 0x0a, 0xca, 0x46, 0x9c, 0x72, 0x2a, 0x5f, 0x21, 0x22, 0x8a, - 0x7c, 0x00, 0x1e, 0x11, 0xe0, 0x0d, 0x78, 0xe4, 0xc3, 0x97, 0xb8, 0xa3, 0xbe, 0x51, 0xf0, - 0xe1, 0x28, 0x58, 0x9d, 0xef, 0xf0, 0x9c, 0x3d, 0xbe, 0xe1, 0xa3, 0x05, 0x12, 0xd8, 0xbd, - 0xab, 0x45, 0x80, 0x5f, 0x57, 0x30, 0xee, 0x2a, 0xb2, 0x52, 0x49, 0x58, 0x11, 0x64, 0xfe, - 0x9e, 0x9b, 0x00, 0x37, 0x0e, 0xac, 0x58, 0x2a, 0xba, 0x51, 0xc5, 0x44, 0x0e, 0xe7, 0x24, - 0x30, 0xde, 0x62, 0xa6, 0x57, 0x8a, 0xfe, 0x07, 0x55, 0xde, 0xf3, 0xdd, 0x25, 0xc6, 0x2a, - 0x4c, 0xbf, 0xe6, 0x10, 0xc1, 0x46, 0x72, 0xae, 0x6d, 0x6a, 0x30, 0x5a, 0x7c, 0x06, 0x47, - 0x0e, 0x12, 0x96, 0xc7, 0xa8, 0x4e, 0x07, 0xe8, 0xc3, 0xa5, 0xe5, 0xde, 0x1d, 0x31, 0x5e, - 0x92, 0x48, 0xfc, 0xaf, 0x09, 0x3f, 0x85, 0x94, 0x3d, 0xe3, 0xd6, 0x79, 0x65, 0x61, 0xad, - 0x07, 0x60, 0x00, 0x14, 0x19, 0x64, 0xdf, 0xda, 0x69, 0x98, 0x56, 0xaa, 0xea, 0x49, 0x40, - 0x36, 0xd6, 0xa6, 0x2e, 0x9c, 0x11, 0x58, 0x56, 0x8e, 0xb3, 0x02, 0xd7, 0x7a, 0xbb, 0x9f, - 0x48, 0x64, 0xbf, 0x07, 0x48, 0x21, 0x85, 0x67, 0xb6, 0xf8, 0x89, 0x7c, 0x37, 0x05, 0xf7, - 0x82, 0x59, 0xc8, 0xb1, 0x6c, 0x6b, 0x05, 0x96, 0xf0, 0x88, 0x80, 0x03, 0x66, 0xbd, 0x2f, - 0x22, 0xff, 0xe9, 0x57, 0xee, 0x35, 0x2d, 0x1b, 0xac, 0xab, 0xcc, 0x26, 0x9f, 0x8c, 0x9f, - 0x18, 0x6a, 0x5c, 0xa6, 0x77, 0x22, 0x9f, 0x66, 0xd4, 0xc9, 0xd8, 0xc5, 0x40, 0x32, 0x21, - 0xa9, 0x88, 0x30, 0x5b, 0x3e, 0xc8, 0xcb, 0xbe, 0x1c, 0x0e, 0x85, 0xc3, 0x22, 0xaf, 0xee, - 0x4e, 0x0b, 0xde, 0xec, 0xa0, 0x0a, 0xd4, 0xe2, 0xe1, 0x5d, 0x6a, 0xfd, 0x15, 0x8b, 0x96, - 0x59, 0xd7, 0x38, 0x43, 0xcb, 0xd8, 0x25, 0x01, 0x05, 0x0b, 0x6d, 0x0e, 0xd9, 0xf7, 0x58, - 0xf0, 0x47, 0xc4, 0x3a, 0xf1, 0xc0, 0xc4, 0x61, 0xaa, 0x3d, 0xf3, 0x38, 0x2b, 0x10, 0xd5, - 0xb5, 0x2e, 0x0e, 0xc8, 0xb9, 0x1e, 0xb7, 0x8e, 0xe5, 0x22, 0x56, 0x1b, 0xc5, 0x18, 0x16, - 0xc5, 0x67, 0x4c, 0xce, 0xa0, 0x7b, 0x0c, 0x5f, 0xf5, 0x9f, 0xaf, 0x28, 0x53, 0xf3, 0x2c, - 0xe5, 0x11, 0xc9, 0x1b, 0x6a, 0x92, 0x3f, 0x55, 0xba, 0xd8, 0xa5, 0xee, 0xf6, 0xe8, 0x11, - 0x2f, 0x72, 0x22, 0x60, 0xbd, 0x84, 0x51, 0xd1, 0x47, 0x90, 0x71, 0xff, 0x8b, 0x83, 0x37, - 0x47, 0xd7, 0x26, 0x80, 0x76, 0x37, 0x14, 0x2d, 0xb1, 0xd6, 0x72, 0x83, 0xe6, 0xc8, 0xcd, - 0x88, 0x56, 0x0b, 0x24, 0xa1, 0x2d, 0x45, 0x0f, 0x5e, 0x46, 0x39, 0xc0, 0x31, 0x85, 0x2e, - 0xf9, 0x86, 0x13, 0xe1, 0x4c, 0x34, 0x8b, 0x99, 0xee, 0x20, 0xa8, 0xae, 0x33, 0x74, 0xb7, - 0x78, 0x58, 0x28, 0x9d, 0x18, 0xf7, 0x7d, 0x3a, 0x6f, 0xaa, 0x1c, 0xb7, 0x3f, 0x98, 0x15, - 0x35, 0xb7, 0xb4, 0x71, 0xdd, 0x8c, 0xd3, 0xec, 0x7f, 0xad, 0x96, 0xaf, 0xa8, 0x82, 0xb9, - 0x9e, 0x79, 0x69, 0x9f, 0x82, 0x7a, 0x1d, 0xef, 0xf7, 0xdf, 0x73, 0x71, 0xe5, 0x4e, 0x53, - 0xf6, 0xb5, 0xe3, 0xb3, 0x4c, 0x9f, 0xe3, 0xbb, 0x3d, 0x19, 0x1b, 0xcd, 0x8d, 0x7e, 0x70, - 0xa5, 0x5b, 0x76, 0xc5, 0xc7, 0xdb, 0xf8, 0x44, 0x3c, 0xc6, 0x2b, 0x47, 0x05, 0x9b, 0x3a, - 0x81, 0xc2, 0xd8, 0xdb, 0xdf, 0x4e, 0xb2, 0x32, 0xfa, 0xb4, 0xc1, 0xbf, 0x5d, 0xff, 0x03, - 0x93, 0x32, 0x6b, 0x0f, 0x1a, 0xd0, 0x9c, 0xe5, 0xff, 0x1b, 0x32, 0xc5, 0x72, 0x48, 0x63, - 0x95, 0x2e, 0x92, 0x6c, 0x5b, 0x3e, 0xfe, 0xdb, 0x9b, 0xf4, 0x32, 0x36, 0x15, 0xa9, 0xc1, - 0x8f, 0x41, 0xf0, 0xbc, 0x10, 0x11, 0x8c, 0x20, 0x90, 0x71, 0xf1, 0x9c, 0x21, 0x06, 0x31, - 0xc2, 0xee, 0x86, 0x25, 0xe6, 0x87, 0xad, 0x4c, 0xef, 0xae, 0xa6, 0x79, 0x20, 0x62, 0x1b, - 0x37, 0x97, 0x9b, 0xba, 0x94, 0x84, 0x26, 0xb4, 0xb3, 0xcf, 0x00, 0x2c, 0x7e, 0xdf, 0x25, - 0x0e, 0xc8, 0x3a, 0x70, 0x5c, 0x20, 0x1d, 0x6f, 0xd2, 0x46, 0xcb, 0x29, 0x3b, 0x68, 0x9e, - 0x90, 0x8a, 0x4d, 0x5d, 0xa6, 0xb7, 0xd0, 0x8e, 0x0e, 0x9e, 0xf8, 0xe1, 0xdb, 0x5d, 0x57, - 0x43, 0x14, 0x1b, 0xe8, 0x8f, 0x4a, 0x26, 0xfe, 0xef, 0x78, 0x71, 0x7d, 0x97, 0xfb, 0xe2, - 0xab, 0xcc, 0x40, 0x96, 0x02, 0xa5, 0xcc, 0x08, 0x42, 0xeb, 0xc9, 0x74, 0x52, 0x12, 0x70, - 0xc4, 0xac, 0xe6, 0x3b, 0xc6, 0x5a, 0x3d, 0x41, 0x2e, 0x8f, 0xfe, 0x0f, 0x22, 0x62, 0x12, - 0x94, 0x41, 0x36, 0xb4, 0xdf, 0x7a, 0xe5, 0xe4, 0x0e, 0x46, 0x7f, 0x5e, 0x4b, 0x77, 0x6d, - 0xa0, 0x6e, 0x67, 0xf3, 0x81, 0x2c, 0x1e, 0xed, 0x53, 0x9c, 0x8c, 0x28, 0xb7, 0x1a, 0x72, - 0xd1, 0x5c, 0x37, 0x00, 0x1f, 0x5a, 0x01, 0x94, 0x24, 0x82, 0x46, 0xe9, 0x5e, 0x01, 0xe3, - 0x46, 0x55, 0xa2, 0x42, 0xf6, 0xbd, 0x41, 0x33, 0x90, 0x25, 0x02, 0xa3, 0x8b, 0xf2, 0xb1, - 0xfc, 0x42, 0xb9, 0x1c, 0xe1, 0x91, 0xa0, 0xc4, 0x34, 0x30, 0x54, 0xcd, 0x00, 0x3f, 0x6e, - 0x28, 0x6f, 0xb7, 0x9c, 0x62, 0x58, 0xa3, 0xec, 0xab, 0x08, 0x10, 0x2d, 0x70, 0x85, 0x7c, - 0x7d, 0x09, 0x26, 0x66, 0x7e, 0x5f, 0x5d, 0x11, 0xaf, 0xd8, 0xc7, 0x31, 0xc5, 0xfd, 0xbc, - 0x6c, 0x6e, 0xf7, 0xc3, 0xdd, 0x63, 0xf8, 0x9f, 0xae, 0xb2, 0x3d, 0x1b, 0x13, 0x33, 0x3b, - 0x27, 0x7f, 0x05, 0x9b, 0xb1, 0x42, 0xc2, 0x5f, 0x20, 0x3e, 0xad, 0xb6, 0x13, 0x59, 0x32, - 0x3f, 0xd4, 0x9a, 0xf9, 0x05, 0x22, 0x53, 0x44, 0x4b, 0x99, 0x8b, 0xcb, 0xa7, 0x09, 0xfb, - 0x7c, 0xc2, 0x81, 0xf3, 0x23, 0xb8, 0x3c, 0x8d, 0xdf, 0x84, 0x91, 0xa2, 0x7b, 0x89, 0x4d, - 0xf5, 0x99, 0x29, 0xb5, 0x37, 0xdf, 0xcd, 0x50, 0x97, 0x0d, 0xe4, 0x31, 0x22, 0xae, 0xf2, - 0x27, 0xd1, 0x09, 0x4c, 0x95, 0x61, 0x81, 0xa8, 0x3c, 0xa4, 0x2d, 0x90, 0x69, 0xe5, 0xd2, - 0xe4, 0xe0, 0x41, 0xfc, 0x8b, 0x71, 0x78, 0x88, 0x0e, 0x7b, 0xf8, 0x82, 0x54, 0x1e, 0xcd, - 0x59, 0x93, 0x1b, 0x9d, 0x51, 0x9e, 0x28, 0x86, 0xa9, 0x27, 0xf7, 0xe3, 0x1d, 0x84, 0xad, - 0x41, 0x93, 0x19, 0x04, 0xb2, 0x60, 0x31, 0x2c, 0xa3, 0xe1, 0x41, 0x5a, 0xcf, 0xdb, 0x67, - 0x63, 0x22, 0xa4, 0x24, 0x06, 0xc0, 0xe2, 0xda, 0x89, 0x88, 0x23, 0x6a, 0x21, 0x58, 0x96, - 0x11, 0xda, 0x66, 0xc3, 0x16, 0x16, 0x4f, 0xfc, 0x31, 0xc4, 0x74, 0xf8, 0x04, 0xbc, 0xf0, - 0xfc, 0x5f, 0xd9, 0xb4, 0x39, 0x55, 0x00, 0xc1, 0x00, 0x37, 0x3c, 0x69, 0x0d, 0xad, 0x73, - 0xbf, 0x2d, 0x0b, 0x68, 0x18, 0x2c, 0x99, 0xdf, 0xe9, 0x65, 0x0a, 0x57, 0x28, 0xda, 0x15, - 0xbf, 0x7f, 0x2d, 0xab, 0x52, 0xad, 0x50, 0x97, 0x14, 0x7e, 0xd6, 0x04, 0xfb, 0xeb, 0xe9, - 0xa3, 0x30, 0x52, 0x62, 0x21, 0x3b, 0xab, 0x9a, 0x97, 0x57, 0xe6, 0x26, 0x21, 0xa6, 0x37, - 0xd2, 0x51, 0x24, 0x5e, 0x54, 0x9e, 0xaf, 0xbf, 0xba, 0xb0, 0x0c, 0x0b, 0x21, 0xe8, 0x9e, - 0xed, 0x4e, 0x17, 0x13, 0xa4, 0x41, 0x0d, 0x2b, 0x6a, 0xc3, 0x35, 0x81, 0xcb, 0xa4, 0x57, - 0x95, 0x42, 0x19, 0xa3, 0x3c, 0x26, 0x0a, 0x8c, 0xe3, 0x64, 0x53, 0x50, 0x21, 0x1e, 0x35, - 0x98, 0x1d, 0x4f, 0xa0, 0x4e, 0x69, 0x72, 0x07, 0x8e, 0x4d, 0x7c, 0x4e, 0xef, 0x30, 0x26, - 0x86, 0x39, 0xdc, 0x80, 0x9b, 0x5d, 0xab, 0xa8, 0xc4, 0x7b, 0x0f, 0xb9, 0xed, 0xd5, 0x05, - 0xee, 0x73, 0x56, 0x7a, 0x58, 0x6e, 0xdc, 0x1a, 0xf7, 0xda, 0xd2, 0x0a, 0xbc, 0x33, 0x87, - 0xce, 0x4f, 0x7c, 0x80, 0x19, 0x99, 0xf4, 0x52, 0x3c, 0xb8, 0xfb, 0x92, 0x19, 0x02, 0xf8, - 0x17, 0x3e, 0x25, 0x2b, 0x18, 0x63, 0xb5, 0x0f, 0x7a, 0x6f, 0xb4, 0x35, 0x5e, 0xe8, 0x33, - 0xbe, 0x5d, 0xa7, 0x4f, 0x6b, 0xff, 0xea, 0xe2, 0x9e, 0x5a, 0xf4, 0x2c, 0x06, 0x4c, 0x61, - 0xdb, 0x25, 0x19, 0x19, 0xaa, 0x72, 0x3e, 0x18, 0x4a, 0x10, 0x3a, 0x7e, 0xec, 0x41, 0x5e, - 0x8e, 0x28, 0x05, 0x55, 0x0c, 0xc9, 0x3f, 0xe0, 0xe5, 0x1d, 0x67, 0xef, 0xdd, 0xde, 0xbd, - 0x6f, 0x7c, 0x66, 0xab, 0xea, 0x1f, 0x05, 0xb0, 0x04, 0x04, 0xf5, 0x71, 0xf4, 0x8a, 0xc6, - 0x3a, 0x24, 0xd3, 0xb0, 0xac, 0xb4, 0x68, 0xbf, 0x18, 0xba, 0xd6, 0x43, 0xe4, 0x11, 0xfb, - 0x42, 0xa8, 0xd2, 0x8d, 0x9e, 0x8c, 0x9a, 0x27, 0xb9, 0x3d, 0xde, 0x91, 0x6b, 0xec, 0x0b, - 0xb7, 0x0a, 0xce, 0xf6, 0x5a, 0x35, 0x9c, 0xfb, 0x58, 0x9f, 0xc6, 0x05, 0xdc, 0x4c, 0x58, - 0x57, 0x09, 0x12, 0x19, 0x19, 0xf1, 0xca, 0xe7, 0x08, 0x34, 0x80, 0x27, 0xa5, 0x53, 0x82, - 0x67, 0x91, 0xa2, 0xe0, 0xe9, 0x6b, 0xbc, 0x02, 0x07, 0x81, 0xad, 0x02, 0x57, 0x79, 0x68, - 0x65, 0xfd, 0x83, 0x7e, 0x52, 0xdc, 0xa0, 0x3f, 0x5c, 0x50, 0x93, 0x00, 0x88, 0xce, 0x3d, - 0x14, 0x59, 0xf0, 0x1d, 0x1a, 0x4d, 0x59, 0x60, 0xfa, 0x9e, 0xd3, 0xdf, 0x1b, 0xad, 0x7c, - 0x77, 0x3b, 0xd5, 0xfe, 0xf6, 0x04, 0x93, 0x29, 0x44, 0x6c, 0x64, 0xe7, 0xb7, 0x0f, 0x83, - 0xc4, 0x30, 0x10, 0x46, 0x4e, 0x18, 0xaa, 0xf4, 0x7f, 0xff, 0xba, 0x4c, 0xa1, 0x22, 0x72, - 0xf4, 0x08, 0x91, 0x37, 0xce, 0x54, 0x73, 0x25, 0x54, 0xd8, 0xf3, 0x90, 0x0e, 0xe3, 0x02, - 0x3c, 0x07, 0xa8, 0x5f, 0x1f, 0x56, 0xea, 0x4c, 0xb7, 0x5d, 0xbd, 0x9d, 0x69, 0x3e, 0xc6, - 0xbc, 0x46, 0x25, 0xbb, 0xd2, 0x9b, 0xf6, 0x4b, 0xb7, 0x61, 0x9c, 0xfb, 0xbb, 0x07, 0xb1, - 0x65, 0xc9, 0x3f, 0x80, 0xb0, 0x90, 0xce, 0x50, 0x01, 0x92, 0xeb, 0x1a, 0xe1, 0x70, 0x97, - 0x2e, 0xdd, 0xe1, 0xbe, 0x6c, 0x85, 0xe2, 0x8a, 0x4f, 0x7f, 0x38, 0x98, 0x06, 0x90, 0x25, - 0x22, 0x9d, 0x88, 0x95, 0x07, 0x25, 0x90, 0x9f, 0x79, 0x26, 0xd1, 0x20, 0x45, 0x22, 0x22, - 0x25, 0xe1, 0xae, 0x9c, 0x3c, 0xd0, 0x6d, 0x09, 0x1c, 0xe6, 0xce, 0x2c, 0x84, 0x3f, 0x79, - 0x0c, 0xaa, 0xdf, 0x5b, 0x16, 0x22, 0x0b, 0x4c, 0x58, 0x09, 0xd0, 0x88, 0x6b, 0x55, 0xaa, - 0xf0, 0xb9, 0x0c, 0x5e, 0x2b, 0xc2, 0xaa, 0x1a, 0xa7, 0x59, 0xb6, 0xc7, 0x65, 0x0a, 0xf6, - 0x28, 0x0a, 0x06, 0xf4, 0xeb, 0x8a, 0x79, 0x86, 0x03, 0x47, 0x48, 0xdb, 0x3b, 0xaa, 0xf5, - 0xb3, 0xff, 0xe0, 0x43, 0xeb, 0x81, 0x88, 0xac, 0x8e, 0xc8, 0xf6, 0x30, 0x86, 0x2d, 0x11, - 0x41, 0xca, 0xe2, 0xfc, 0x58, 0xd7, 0x0b, 0x42, 0x41, 0xde, 0x3b, 0x1d, 0x95, 0x1f, 0x6c, - 0xca, 0x34, 0x72, 0xe2, 0x38, 0x58, 0xcf, 0xfd, 0x92, 0x3e, 0x37, 0xca, 0x89, 0xa2, 0xf0, - 0xf7, 0xe3, 0x02, 0x98, 0xb0, 0x08, 0xfc, 0xb0, 0xe2, 0xd2, 0xa6, 0xcc, 0x33, 0xca, 0xaa, - 0x20, 0x82, 0xfa, 0xba, 0xe2, 0xa3, 0x23, 0xb3, 0x53, 0x13, 0x0d, 0xfd, 0x9b, 0xfc, 0x23, - 0x4c, 0xf7, 0x01, 0x0c, 0x75, 0x19, 0xb3, 0x2a, 0x33, 0x24, 0x4d, 0x0f, 0x63, 0x2f, 0x13, - 0x15, 0xfb, 0xcf, 0x77, 0x0c, 0x4f, 0x39, 0x76, 0xb3, 0xcd, 0xea, 0xce, 0xbd, 0x15, 0x99, - 0x65, 0x2d, 0x76, 0x78, 0x5e, 0xe8, 0xbb, 0x2e, 0x23, 0xbd, 0x44, 0x1f, 0x2a, 0x49, 0xcb, - 0xff, 0x37, 0x7a, 0x2f, 0xe6, 0xde, 0xe9, 0xaa, 0xc2, 0x0e, 0x5e, 0x55, 0xca, 0x3a, 0xc0, - 0x22, 0xa5, 0xc4, 0x0f, 0xaa, 0x15, 0xf5, 0xfe, 0xd0, 0x76, 0xbc, 0x88, 0xcd, 0x35, 0xa1, - 0xeb, 0x54, 0x14, 0x10, 0x7b, 0x27, 0x6d, 0xab, 0x78, 0xd7, 0x05, 0x9e, 0x26, 0xf1, 0xfb, - 0x1c, 0x95, 0xb5, 0x9b, 0xc8, 0x55, 0xc5, 0xd6, 0x42, 0xdd, 0xcf, 0xf6, 0x85, 0x3a, 0x33, - 0xc8, 0x41, 0xef, 0x43, 0xf7, 0x3f, 0x16, 0x43, 0xfa, 0x15, 0x18, 0x66, 0x66, 0xb7, 0xd5, - 0xfb, 0xb6, 0xbd, 0x4e, 0xd5, 0x9d, 0xf3, 0xed, 0x0c, 0x2a, 0x89, 0x63, 0x16, 0xcb, 0x4a, - 0x49, 0x17, 0x22, 0x76, 0x3f, 0x62, 0x28, 0x0b, 0xf2, 0xe5, 0x53, 0x9b, 0x73, 0x4d, 0x70, - 0x30, 0x3b, 0x04, 0x7b, 0xa2, 0xaa, 0xb7, 0xdd, 0x02, 0xf1, 0xec, 0x68, 0xa8, 0x4d, 0x2f, - 0xa9, 0x0a, 0xd5, 0x88, 0xbf, 0x31, 0xfd, 0x98, 0x1a, 0x3d, 0x10, 0x0a, 0x8d, 0x97, 0xc3, - 0xd4, 0x2d, 0x5b, 0x2a, 0x33, 0xe5, 0x8c, 0xa9, 0x37, 0x1e, 0x22, 0x9a, 0x81, 0xbc, 0x6a, - 0xa9, 0x58, 0xd8, 0xc4, 0x82, 0xe9, 0xae, 0x08, 0xe5, 0x82, 0x94, 0x05, 0xe2, 0x65, 0x22, - 0x25, 0xa0, 0x77, 0xb2, 0xbb, 0xbe, 0xcc, 0xc4, 0xcf, 0xe8, 0x5e, 0xf7, 0xb3, 0xd4, 0x1f, - 0x3f, 0x88, 0x18, 0x98, 0x38, 0xaa, 0x82, 0xa1, 0x70, 0x73, 0x11, 0x35, 0xea, 0x10, 0x09, - 0xb7, 0xab, 0xd7, 0x51, 0xe2, 0x48, 0x81, 0xe8, 0x77, 0x4b, 0x53, 0x5f, 0xb0, 0x54, 0x21, - 0x0d, 0xff, 0x0f, 0x01, 0xa7, 0x3a, 0x5a, 0x21, 0xbc, 0xb9, 0x07, 0x87, 0x3b, 0x07, 0x3a, - 0x2d, 0x84, 0x25, 0x8c, 0x13, 0x6d, 0xdf, 0x37, 0x73, 0x5d, 0xf5, 0x25, 0x23, 0x33, 0xd1, - 0x51, 0x2f, 0xa3, 0x20, 0x8e, 0xac, 0x2e, 0x33, 0x79, 0x58, 0x98, 0x33, 0x4a, 0xd4, 0x78, - 0x18, 0xf8, 0x07, 0x4f, 0xbe, 0x8b, 0x99, 0xb2, 0xd6, 0xd9, 0x08, 0x10, 0xf9, 0xf1, 0xee, - 0x61, 0x0a, 0x08, 0x3d, 0x59, 0xbc, 0xdd, 0x79, 0xd5, 0x2b, 0x7e, 0x8d, 0x70, 0x42, 0x1d, - 0xcf, 0x78, 0x42, 0x81, 0x1c, 0x00, 0xfc, 0x9f, 0x43, 0xfd, 0x90, 0x6e, 0x51, 0xe5, 0xcc, - 0x6f, 0xe9, 0xaa, 0x85, 0xae, 0x44, 0x48, 0x7c, 0xc8, 0x40, 0xf9, 0xed, 0xf9, 0xf6, 0xb2, - 0x80, 0x41, 0xf1, 0x87, 0xb0, 0x78, 0x09, 0x27, 0xe3, 0x9f, 0x63, 0xf7, 0x3f, 0xfc, 0xc5, - 0x0a, 0x51, 0x2d, 0x11, 0x1f, 0x36, 0xd5, 0xc0, 0x69, 0x6e, 0x88, 0x5a, 0xc1, 0xfa, 0x33, - 0x1f, 0x54, 0xf7, 0xa9, 0x90, 0xe2, 0x0d, 0xb3, 0x14, 0x59, 0x3b, 0x61, 0xe0, 0x3f, 0x57, - 0xe7, 0xda, 0x2c, 0xd6, 0xd0, 0x98, 0xbc, 0xaf, 0xa6, 0xaf, 0xb4, 0xef, 0xe2, 0x81, 0xc5, - 0xd4, 0x06, 0x93, 0x00, 0xad, 0x89, 0x26, 0x8c, 0xe3, 0xfb, 0x10, 0xab, 0x03, 0xba, 0xd5, - 0xd0, 0xfc, 0x33, 0xee, 0x56, 0x01, 0x4f, 0x8d, 0xf7, 0x90, 0x24, 0x00, 0xd6, 0xf3, 0xa9, - 0x98, 0xd6, 0xd3, 0xe3, 0xea, 0xd6, 0xe7, 0xde, 0x8b, 0xa3, 0x13, 0xad, 0x12, 0x5d, 0xb6, - 0x82, 0x5d, 0x56, 0x4c, 0x7f, 0x00, 0x49, 0x1c, 0xd7, 0x05, 0xbd, 0xf0, 0x1f, 0xd7, 0xab, - 0x06, 0x4b, 0xd2, 0x19, 0xb8, 0x0f, 0xeb, 0xd4, 0xbf, 0xea, 0x48, 0xdd, 0x3a, 0xdc, 0x12, - 0x6d, 0xfe, 0x78, 0xbe, 0x6a, 0x59, 0x3b, 0xfe, 0x9f, 0xfd, 0x1e, 0xc3, 0xa3, 0xd0, 0xd8, - 0x8b, 0xda, 0xad, 0x7f, 0xf9, 0x76, 0xd8, 0xdb, 0xd0, 0x35, 0x8c, 0xb3, 0x92, 0x7e, 0xe4, - 0x43, 0x05, 0xa7, 0x03, 0x3e, 0xf9, 0xea, 0x06, 0x69, 0x73, 0xb3, 0x4b, 0x67, 0x38, 0xab, - 0xa0, 0xc4, 0x57, 0xfb, 0xc8, 0xe9, 0x9c, 0xe3, 0x1a, 0x9c, 0xfc, 0xff, 0x26, 0xf0, 0x99, - 0xb3, 0x4f, 0x2e, 0x38, 0x0c, 0x7d, 0x35, 0x3a, 0xdc, 0xb1, 0xe4, 0x16, 0xa3, 0x9f, 0x6b, - 0xbe, 0xcc, 0xd2, 0x8c, 0x3e, 0x7d, 0xc8, 0xa7, 0xf1, 0xc9, 0x41, 0x00, 0xf6, 0x9a, 0xa5, - 0xc9, 0x2f, 0x66, 0x26, 0x58, 0x13, 0xda, 0xaf, 0x33, 0xbe, 0x5b, 0xfa, 0x42, 0xf1, 0x4d, - 0x4c, 0x02, 0x96, 0xf9, 0x2c, 0x38, 0x79, 0x0e, 0xb1, 0x6d, 0xda, 0x5b, 0x2c, 0xd7, 0x3b, - 0x8a, 0x74, 0x4d, 0x28, 0x43, 0xa5, 0xa6, 0x39, 0x94, 0xf2, 0x8b, 0x6d, 0x8c, 0xe0, 0xb9, - 0xf3, 0xce, 0x2c, 0x40, 0x43, 0x2a, 0x66, 0x59, 0x76, 0xf2, 0x69, 0x1a, 0x7e, 0x6c, 0x9e, - 0x20, 0x97, 0x2d, 0x91, 0x60, 0x11, 0xb4, 0xb7, 0xa5, 0x28, 0xed, 0xb0, 0x27, 0x2d, 0xd6, - 0xe6, 0x55, 0x02, 0x27, 0xff, 0x94, 0xfa, 0x39, 0x0d, 0x8f, 0xab, 0xc2, 0x51, 0x61, 0xff, - 0x56, 0xf4, 0xc0, 0x88, 0x31, 0x53, 0x71, 0xb5, 0x14, 0x6f, 0xf5, 0x02, 0xe5, 0xbe, 0x21, - 0x78, 0xd4, 0x99, 0x57, 0x9e, 0x01, 0xc2, 0xce, 0x44, 0x35, 0x8e, 0xe1, 0x69, 0xd3, 0x24, - 0x7b, 0x86, 0xd5, 0x3a, 0x57, 0xc8, 0x1d, 0x93, 0x9e, 0xfa, 0x25, 0xca, 0x9b, 0x12, 0x59, - 0xf9, 0x74, 0xe5, 0x03, 0xb0, 0x64, 0x81, 0xe1, 0x4f, 0xef, 0xe7, 0x01, 0x3f, 0xef, 0x22, - 0x2e, 0x13, 0x48, 0x17, 0x3d, 0x9f, 0xd5, 0x5a, 0x24, 0x01, 0x2c, 0x9d, 0x5d, 0x66, 0x10, - 0x22, 0x6c, 0x81, 0x69, 0xd5, 0x3b, 0x0d, 0x93, 0xe3, 0x0e, 0x21, 0xd0, 0x36, 0x91, 0xa6, - 0x90, 0x1c, 0xf6, 0x95, 0xb1, 0x97, 0x39, 0xf1, 0x24, 0xa8, 0x1e, 0x3d, 0x55, 0x9f, 0x2d, - 0x8c, 0xb5, 0x0d, 0x2d, 0xf7, 0xd3, 0x1c, 0x7f, 0xa5, 0xa6, 0xc1, 0xd0, 0x63, 0x14, 0xd6, - 0x80, 0x76, 0x23, 0x19, 0x2d, 0x53, 0xc3, 0xa1, 0x12, 0xa7, 0xf7, 0xef, 0x4b, 0xad, 0x51, - 0x03, 0xe9, 0x12, 0x43, 0x37, 0x1a, 0xe2, 0xad, 0xf0, 0xf6, 0xc7, 0xf2, 0x28, 0x20, 0x1f, - 0xec, 0x78, 0xa4, 0xa8, 0x5e, 0xd2, 0x75, 0x0e, 0xc9, 0x6d, 0xaf, 0x63, 0xa8, 0xf8, 0xa9, - 0xdf, 0x69, 0xe6, 0x8d, 0x98, 0x60, 0x13, 0xda, 0xc0, 0xc5, 0xaa, 0x42, 0xe5, 0x49, 0x10, - 0x64, 0xe0, 0xa5, 0x35, 0xf7, 0xf7, 0xe4, 0x9b, 0x51, 0x4c, 0x2f, 0xd6, 0xd0, 0x0c, 0x22, - 0x32, 0x4c, 0x4c, 0x74, 0x8c, 0x1f, 0x62, 0xd4, 0x06, 0x07, 0x6f, 0xab, 0xe6, 0x1b, 0x68, - 0x97, 0x2b, 0xe3, 0x48, 0x68, 0x68, 0xd5, 0xac, 0xa6, 0x78, 0x23, 0x9c, 0xaa, 0x8a, 0x73, - 0x5c, 0xcd, 0xc3, 0x88, 0xe4, 0x6c, 0x19, 0xf2, 0x7e, 0xa5, 0x19, 0x8f, 0x04, 0x01, 0xb4, - 0x6b, 0xca, 0x86, 0xb4, 0x2f, 0x90, 0xd0, 0xcc, 0x6b, 0xe5, 0xa0, 0xb8, 0x03, 0x5d, 0x3e, - 0x4b, 0x6d, 0x61, 0xc2, 0x65, 0x77, 0xb6, 0xbf, 0x88, 0x16, 0xbc, 0x4d, 0x2a, 0xf8, 0xbe, - 0x2d, 0x8e, 0x15, 0x09, 0xc0, 0x14, 0xac, 0x05, 0x5a, 0x9e, 0x1d, 0xb0, 0xba, 0xca, 0x19, - 0xba, 0x05, 0xaf, 0x3d, 0x29, 0x40, 0x1d, 0xa2, 0x3c, 0x35, 0x7e, 0xd5, 0xad, 0x53, 0x01, - 0x74, 0x56, 0xc6, 0x95, 0x3b, 0x4e, 0xc4, 0x50, 0xa3, 0xa0, 0x9d, 0x4d, 0x66, 0xf8, 0x76, - 0x52, 0x23, 0x47, 0x85, 0xdd, 0x19, 0xd3, 0x63, 0x55, 0x41, 0xfb, 0x51, 0x46, 0x06, 0x02, - 0x68, 0x3e, 0xa7, 0x65, 0x40, 0x54, 0x72, 0x02, 0x6a, 0xa4, 0x89, 0x97, 0x71, 0xef, 0x8b, - 0x76, 0x7d, 0x58, 0xbf, 0x72, 0x8b, 0x86, 0x6b, 0xca, 0xe4, 0x8e, 0x94, 0xb8, 0xe6, 0x85, - 0x2a, 0xc3, 0x14, 0x1b, 0xb3, 0x77, 0x9c, 0xe7, 0x1b, 0x56, 0x5e, 0xdf, 0x3b, 0x97, 0x64, - 0x42, 0xbd, 0xf8, 0xe7, 0x10, 0x7a, 0xbe, 0x85, 0x95, 0x28, 0xd9, 0xbd, 0x2f, 0x37, 0x08, - 0x0b, 0x92, 0xf0, 0xae, 0x27, 0x05, 0x2b, 0x55, 0x63, 0x45, 0x22, 0x23, 0x73, 0x40, 0x69, - 0x72, 0xf4, 0xaa, 0xb9, 0x21, 0xc0, 0x59, 0xed, 0x81, 0x21, 0x7b, 0x80, 0xfe, 0x3a, 0x50, - 0x57, 0x0a, 0x75, 0x0e, 0x1d, 0x36, 0xb0, 0x04, 0xf5, 0x6e, 0x30, 0x76, 0x91, 0x3d, 0xf5, - 0xcc, 0x1b, 0x05, 0xc7, 0xa4, 0x09, 0xf2, 0x90, 0xba, 0xda, 0xf2, 0x80, 0xe8, 0xd0, 0xa9, - 0x70, 0x5e, 0x2c, 0x5e, 0x4f, 0x20, 0x50, 0x30, 0x9f, 0x00, 0xbc, 0xff, 0xf8, 0x2d, 0x7a, - 0xa8, 0x81, 0x58, 0xfb, 0xf9, 0x6f, 0x84, 0x02, 0x65, 0xd9, 0x74, 0xd2, 0x20, 0x76, 0xe9, - 0x7e, 0xff, 0xb9, 0x33, 0x4f, 0x6c, 0xb1, 0xd3, 0x99, 0xd7, 0x95, 0x9e, 0xcf, 0x03, 0x31, - 0xbf, 0x2d, 0x2e, 0xcb, 0x74, 0x11, 0x22, 0x1e, 0x97, 0xa5, 0x9c, 0x44, 0x87, 0xd1, 0xdb, - 0xeb, 0x2e, 0x07, 0x51, 0x3c, 0xe5, 0xb3, 0x06, 0x76, 0xf3, 0xe1, 0x7b, 0x71, 0x39, 0xdf, - 0x1c, 0xcc, 0x61, 0xc8, 0x72, 0x78, 0xfe, 0x74, 0xb3, 0x04, 0x65, 0x0f, 0x49, 0x39, 0x29, - 0x35, 0x3f, 0x85, 0x61, 0x24, 0xae, 0x34, 0x93, 0xbd, 0x63, 0x8a, 0x80, 0x97, 0x17, 0x80, - 0x1a, 0x47, 0xfa, 0x21, 0x42, 0xa6, 0x6e, 0xad, 0xc8, 0xba, 0x74, 0xf9, 0x03, 0x33, 0xdf, - 0x22, 0x05, 0x70, 0xd9, 0x70, 0x9b, 0x58, 0x23, 0x60, 0xe6, 0x9a, 0x0a, 0xc2, 0x9b, 0xf3, - 0x28, 0x3c, 0x0b, 0xa1, 0xec, 0x60, 0x18, 0x64, 0x77, 0xe2, 0x86, 0x57, 0xaf, 0x15, 0x91, - 0x98, 0xe9, 0x7e, 0xfc, 0x5c, 0x59, 0x58, 0x4a, 0xd9, 0x09, 0xd7, 0x0b, 0x30, 0x3c, 0xcc, - 0xc9, 0x81, 0x70, 0xa8, 0x29, 0x9b, 0x3a, 0x67, 0x1d, 0x6c, 0xce, 0x17, 0xe0, 0x35, 0xcd, - 0x9e, 0xd2, 0xda, 0x3f, 0xd9, 0x0b, 0x04, 0xea, 0x8b, 0xb0, 0xb0, 0x8b, 0x65, 0x1a, 0xfe, - 0x63, 0x0b, 0x87, 0xb1, 0xc0, 0xa5, 0x36, 0x1c, 0x0d, 0x3e, 0xcb, 0x72, 0x1a, 0x85, 0x40, - 0xb3, 0x22, 0xe5, 0x84, 0xeb, 0x04, 0xaa, 0x1a, 0x79, 0xa7, 0x2b, 0xec, 0x68, 0x94, 0x58, - 0x55, 0xab, 0x5b, 0x98, 0xdd, 0x3e, 0xc6, 0x6c, 0x04, 0x84, 0xf0, 0xf3, 0x66, 0xcc, 0x3f, - 0xad, 0xf4, 0x50, 0xdf, 0xa4, 0xa3, 0x98, 0x2a, 0x02, 0xd8, 0xe5, 0x43, 0x70, 0xe0, 0xdc, - 0xec, 0x69, 0x21, 0x41, 0x9e, 0xac, 0xb9, 0x88, 0xaa, 0xc6, 0x00, 0x8e, 0xed, 0xa5, 0xb3, - 0xda, 0x78, 0x59, 0x0a, 0x15, 0xa5, 0x59, 0x49, 0xc7, 0xba, 0xc5, 0x69, 0xab, 0x45, 0x59, - 0x55, 0x52, 0x7d, 0x3f, 0x47, 0x54, 0x89, 0xfa, 0x8b, 0x8a, 0x77, 0xb8, 0x26, 0xf6, 0xbd, - 0x62, 0x38, 0x5d, 0x75, 0xdc, 0x26, 0x78, 0x67, 0xbf, 0xd3, 0x3e, 0x25, 0x46, 0x8f, 0x26, - 0x40, 0x53, 0x9e, 0xec, 0xdf, 0x3d, 0xf7, 0x98, 0xe5, 0x4a, 0x9a, 0xe6, 0x56, 0xc6, 0x1f, - 0x9e, 0xae, 0xf0, 0x31, 0xff, 0x5e, 0x49, 0x45, 0x41, 0xc3, 0x8f, 0xaf, 0x69, 0x73, 0x92, - 0x8c, 0x0e, 0x4a, 0xfd, 0x40, 0xfb, 0x63, 0x82, 0xee, 0xc6, 0x1c, 0xc1, 0x53, 0x6c, 0x1c, - 0x22, 0x95, 0xd1, 0x92, 0x11, 0x10, 0xcf, 0xfe, 0xf5, 0x83, 0xd6, 0x5f, 0x32, 0x3f, 0x8d, - 0xd5, 0x07, 0x2a, 0x7d, 0x30, 0x60, 0xf4, 0x7d, 0xd4, 0x42, 0x8a, 0x39, 0x47, 0x25, 0x87, - 0xed, 0xbc, 0x44, 0x3f, 0x3d, 0x16, 0xde, 0xc3, 0x68, 0x9e, 0x79, 0x36, 0xa5, 0xd6, 0x7d, - 0x28, 0xaa, 0x64, 0x3d, 0xa5, 0xe1, 0x74, 0x9c, 0xf7, 0x8c, 0xe2, 0x49, 0x44, 0x8f, 0x2a, - 0xf1, 0x60, 0xe3, 0x78, 0xa4, 0x86, 0x11, 0x09, 0x20, 0x38, 0x5e, 0x1f, 0x23, 0xac, 0x62, - 0x53, 0xe5, 0xbc, 0xaf, 0xe4, 0xba, 0xe5, 0x8b, 0xed, 0x19, 0xd2, 0xcf, 0x8e, 0xab, 0x41, - 0x7f, 0x1e, 0x44, 0xe9, 0x29, 0x4c, 0xe5, 0x06, 0x33, 0xc2, 0x15, 0x1a, 0x11, 0xe8, 0xe2, - 0x1a, 0x3d, 0x86, 0x34, 0x71, 0xd0, 0xc0, 0x9b, 0x76, 0x1a, 0x0a, 0x99, 0xce, 0x6e, 0x6c, - 0x95, 0x5c, 0x84, 0x9b, 0xfe, 0x87, 0x08, 0x33, 0x00, 0x8e, 0x33, 0x7b, 0x0a, 0x0e, 0x5c, - 0xea, 0x8f, 0x35, 0xfb, 0x25, 0x4e, 0x84, 0x83, 0x28, 0x7b, 0x02, 0xb5, 0x9b, 0xb1, 0x9b, - 0xf7, 0xcb, 0xce, 0x46, 0xea, 0x09, 0x64, 0x75, 0x57, 0x67, 0xe8, 0x21, 0xcc, 0xfa, 0xb0, - 0xa5, 0x54, 0x68, 0xb5, 0x9a, 0xc8, 0xec, 0x48, 0x11, 0xe3, 0x85, 0x99, 0xed, 0x5b, 0xe1, - 0x1f, 0x6f, 0xbf, 0x3e, 0x98, 0xdc, 0x33, 0x20, 0x94, 0xd0, 0xde, 0x85, 0x28, 0x8a, 0xdf, - 0xbf, 0xb9, 0x1b, 0xb5, 0xd5, 0x04, 0x7d, 0x78, 0x84, 0x96, 0x87, 0x4e, 0x05, 0xbc, 0xa6, - 0xc7, 0x59, 0xde, 0xbe, 0x65, 0x41, 0x0d, 0x66, 0x31, 0x9c, 0x2e, 0xa7, 0x8e, 0xb2, 0xce, - 0x0b, 0x33, 0x32, 0xe7, 0x1f, 0x4e, 0x44, 0x5e, 0x50, 0xee, 0x60, 0x66, 0xa6, 0xe0, 0xda, - 0xe2, 0xb8, 0x3f, 0xb8, 0xcc, 0xd5, 0x95, 0xef, 0x2b, 0xb3, 0x8c, 0xd3, 0xa9, 0xca, 0xa0, - 0xb6, 0x56, 0xa5, 0x33, 0x2a, 0x2a, 0x0b, 0xac, 0x98, 0x62, 0xc4, 0xce, 0x5a, 0xf9, 0x6b, - 0x06, 0xd0, 0x53, 0xf7, 0x7c, 0x11, 0xea, 0xbf, 0xa6, 0x99, 0xe7, 0xe3, 0x94, 0xa1, 0x7a, - 0x90, 0xaa, 0x48, 0x57, 0xb8, 0x39, 0x8d, 0xd9, 0xf5, 0xbd, 0x4e, 0x82, 0x53, 0x7d, 0x32, - 0xe4, 0xcf, 0x50, 0x63, 0x14, 0x2e, 0x12, 0x9e, 0xaf, 0x05, 0xf6, 0x2c, 0x5f, 0x3f, 0x02, - 0xc7, 0x00, 0x4a, 0x15, 0x11, 0x12, 0xb6, 0x28, 0xfd, 0x21, 0x5a, 0xde, 0x3b, 0xb9, 0xd3, - 0x7e, 0x01, 0xbf, 0x4c, 0x07, 0xa2, 0x21, 0x59, 0xca, 0xa0, 0xa7, 0xf1, 0x7f, 0x48, 0x31, - 0x8d, 0xba, 0xa8, 0x5a, 0x08, 0xb1, 0x99, 0x44, 0x38, 0x6b, 0xf1, 0x2e, 0x61, 0xfe, 0x75, - 0xf4, 0x06, 0x0d, 0xb3, 0x85, 0x13, 0xc8, 0xa1, 0xad, 0x35, 0xe8, 0xd5, 0xaa, 0xf3, 0x6d, - 0x24, 0x25, 0xe4, 0x4a, 0xea, 0x33, 0x9f, 0xe6, 0x70, 0xe9, 0x0d, 0x07, 0x65, 0x65, 0x63, - 0x89, 0xc1, 0x37, 0x51, 0xda, 0x4f, 0xad, 0x86, 0x18, 0xcc, 0x6b, 0x3b, 0xff, 0x7a, 0x25, - 0xc9, 0x6f, 0x15, 0x7a, 0x09, 0x26, 0x1f, 0x78, 0x4b, 0x06, 0xb4, 0x09, 0x95, 0x23, 0x9d, - 0x14, 0x49, 0x61, 0x9b, 0x3a, 0x1e, 0x70, 0x97, 0xed, 0xc7, 0x71, 0x11, 0x6d, 0x0e, 0x81, - 0x5e, 0x86, 0x6a, 0xee, 0xec, 0x19, 0xa0, 0xa0, 0xd7, 0x2c, 0x4c, 0xfe, 0x26, 0x1e, 0x0c, - 0xae, 0x3f, 0xb3, 0x32, 0x00, 0xcc, 0xd5, 0x64, 0x22, 0x73, 0x94, 0xda, 0xc1, 0x21, 0x1c, - 0xed, 0xf4, 0x7b, 0x61, 0x8f, 0x62, 0x5f, 0xc3, 0x5b, 0x50, 0xf6, 0x08, 0xb1, 0x2b, 0xf5, - 0xc0, 0x00, 0x14, 0xe8, 0x61, 0x8d, 0x60, 0x34, 0x2f, 0xf7, 0x91, 0xe7, 0xa1, 0xb1, 0xd9, - 0x0b, 0x66, 0xa6, 0x1a, 0x83, 0xbe, 0x21, 0xa6, 0xbd, 0xcc, 0x62, 0x19, 0x5b, 0xa0, 0xd2, - 0x60, 0xdd, 0xf9, 0x94, 0x2f, 0x3b, 0x1f, 0xc5, 0xe5, 0xc6, 0xd7, 0x5a, 0x1b, 0xce, 0xe9, - 0x17, 0x37, 0xaa, 0x34, 0xd6, 0x49, 0xff, 0xbd, 0xd5, 0x81, 0x4a, 0xcb, 0xcd, 0xfb, 0xf6, - 0xbe, 0xf7, 0x2b, 0x46, 0x57, 0xa7, 0x55, 0xc9, 0xdf, 0xda, 0x3e, 0xa5, 0x10, 0x31, 0xc6, - 0x68, 0x34, 0xc4, 0x7e, 0x98, 0x1b, 0xbf, 0xf4, 0xa7, 0x33, 0xc2, 0x6b, 0xef, 0xac, 0x02, - 0xd1, 0x6a, 0xf4, 0xbf, 0x9b, 0x9e, 0x16, 0x2a, 0x0b, 0x1e, 0xbc, 0x8b, 0x99, 0x16, 0x04, - 0xfd, 0xea, 0x38, 0xf4, 0x37, 0xfe, 0xb8, 0xed, 0x7f, 0x45, 0xcc, 0xe7, 0x03, 0x9e, 0x14, - 0x05, 0x8b, 0xd4, 0xb7, 0xe8, 0x87, 0xdd, 0x81, 0xd2, 0x0f, 0xfa, 0x72, 0x6a, 0xfa, 0x9c, - 0x65, 0x0d, 0x9e, 0xea, 0x83, 0x8a, 0x50, 0x54, 0xa3, 0xa4, 0x02, 0x7f, 0x05, 0x79, 0x91, - 0x4b, 0x1e, 0x55, 0xab, 0x7c, 0xa0, 0x74, 0x1b, 0xa3, 0x6c, 0x20, 0x2f, 0x00, 0x00, 0x00, - 0x00, 0x93, 0x75, 0xef, 0xe3, 0xff, 0xc0, 0x3f, 0x7a, 0x2f, 0x5b, 0x89, 0x1a, 0x08, 0xe6, - 0x1a, 0x37, 0xc7, 0x59, 0xc3, 0x67, 0x81, 0xc9, 0x08, 0xee, 0x93, 0xb9, 0xbf, 0xab, 0x36, - 0x00, 0xe7, 0x18, 0x65, 0xb0, 0x97, 0xb7, 0xe9, 0x06, 0x95, 0xd8, 0xa9, 0x92, 0x2a, 0x80, - 0x06, 0x2e, 0x93, 0x86, 0x9b, 0x7e, 0xc9, 0xa0, 0x2a, 0xd1, 0x3e, 0x69, 0x85, 0x20, 0x60, - 0xd1, 0xce, 0x09, 0x8f, 0x27, 0xeb, 0xba, 0xc3, 0x26, 0xc2, 0xc9, 0x6d, 0x30, 0x74, 0xfa, - 0xa2, 0xfe, 0xc8, 0x49, 0x43, 0x5a, 0x14, 0x78, 0x17, 0xab, 0x98, 0x43, 0x35, 0x36, 0x36, - 0xc7, 0xca, 0xcf, 0x59, 0xf9, 0x28, 0x1c, 0x6a, 0xe6, 0xb8, 0x4a, 0x77, 0x2b, 0x71, 0xb4, - 0xee, 0x32, 0x1f, 0x2f, 0xfa, 0x62, 0xf1, 0x30, 0xa2, 0x65, 0x41, 0xe6, 0x9d, 0x21, 0xa1, - 0xa5, 0x0c, 0x98, 0x0a, 0x4c, 0x72, 0x8a, 0x2d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77, 0x47, 0xe5, 0xa6, 0x2c, 0x4f, 0xa5, 0xc9, 0x34, 0xe8, 0x02, 0xd3, - 0x68, 0x82, 0x47, 0x85, 0x92, 0xd9, 0x59, 0x74, 0x56, 0x42, 0xa9, 0xc6, 0xef, 0x99, 0x6d, - 0x83, 0xfb, 0xd1, 0xfa, 0x3c, 0x42, 0xc2, 0xab, 0x28, 0x59, 0x03, 0x91, 0x81, 0xb0, 0x18, - 0xed, 0xe2, 0x64, 0xa2, 0x2d, 0xcb, 0x23, 0x54, 0x43, 0xaf, 0xfb, 0x4b, 0x97, 0x10, 0x4a, - 0xa3, 0x07, 0x29, 0xa9, 0xa7, 0xc8, 0x1e, 0x00, + 0x77, 0x42, 0x8e, 0x76, 0xd2, 0x26, 0x31, 0x00, 0xd0, 0x8f, 0x73, 0xd9, 0xe1, 0x2b, 0x48, + 0x04, 0x94, 0xf1, 0xa3, 0x61, 0xb1, 0x49, 0x7a, 0x85, 0xd1, 0xca, 0xc1, 0x68, 0xb7, 0x6e, + 0x14, 0x9e, 0x9d, 0x16, 0xda, 0x0b, 0x28, 0x02, 0x5e, 0x80, 0x4f, 0xdb, 0xcb, 0x28, 0x3f, + 0x93, 0x2d, 0x1a, 0xa8, 0xcc, 0x19, 0x00, 0x25, 0x05, 0x94, 0x05, 0x24, 0xfb, 0x43, 0xbb, + 0xe7, 0x8d, 0x04, 0x03, 0x38, 0x93, 0x55, 0x0a, 0x22, 0xb3, 0xcf, 0xa9, 0xea, 0x4a, 0xd9, + 0xa1, 0x91, 0x61, 0x45, 0x14, 0x55, 0xd1, 0x66, 0x9c, 0x90, 0x21, 0xc9, 0xf8, 0x77, 0xdb, + 0xc4, 0x64, 0x12, 0x59, 0xad, 0x25, 0x03, 0x33, 0xe2, 0x1e, 0x26, 0x20, 0xc8, 0x91, 0x4b, + 0x6e, 0x28, 0xbc, 0xb1, 0xa2, 0x14, 0xa1, 0x9a, 0x39, 0x1c, 0xf3, 0x71, 0xe0, 0x89, 0x33, + 0x73, 0x97, 0xf7, 0x53, 0x59, 0x51, 0x44, 0x1b, 0x6b, 0x52, 0x90, 0x32, 0x52, 0x5a, 0x70, + 0xd9, 0x75, 0xfa, 0x5d, 0x7c, 0x22, 0xe7, 0x8f, 0xb5, 0x05, 0x9f, 0xae, 0x45, 0x39, 0x12, + 0x02, 0xf0, 0x0a, 0x68, 0x98, 0x03, 0xf9, 0x08, 0xde, 0xab, 0xaf, 0x1b, 0xdb, 0xa8, 0x0c, + 0xde, 0x34, 0x09, 0xe6, 0x05, 0xae, 0xe9, 0x87, 0xa7, 0x54, 0xce, 0x80, 0x5f, 0x2f, 0xc0, + 0x08, 0xdf, 0xf1, 0x70, 0x23, 0xef, 0x9b, 0xcd, 0x75, 0x97, 0x2b, 0x85, 0xec, 0xf6, 0x41, + 0xa2, 0x45, 0xf6, 0xa6, 0xb1, 0xe8, 0x41, 0x4b, 0xa0, 0xa3, 0x3d, 0xb1, 0xb0, 0xf0, 0xc4, + 0xce, 0xad, 0x6a, 0xc8, 0x7a, 0x32, 0xcf, 0xe9, 0x32, 0x87, 0x73, 0xfe, 0x73, 0x57, 0x28, + 0x4f, 0x0c, 0x0f, 0xa8, 0x9c, 0x33, 0x72, 0x33, 0x26, 0x89, 0x27, 0x85, 0xe8, 0x95, 0x4b, + 0x6b, 0x17, 0x5a, 0x5b, 0x9d, 0x80, 0xb2, 0x8a, 0xb2, 0x06, 0x53, 0x29, 0x6b, 0x13, 0x2b, + 0x0a, 0x8e, 0xc7, 0xc5, 0xfe, 0x1e, 0xe4, 0xcb, 0x5e, 0xf5, 0x82, 0x24, 0x45, 0x17, 0x3b, + 0x8b, 0xbf, 0x26, 0xe7, 0x5f, 0x81, 0x18, 0xf7, 0xf2, 0xe8, 0xb3, 0x4c, 0x00, 0x1f, 0xae, + 0xda, 0xf9, 0xc3, 0x41, 0xf4, 0x26, 0x91, 0xa0, 0xb0, 0x96, 0x43, 0x91, 0x06, 0x7b, 0xb0, + 0x26, 0xa2, 0x74, 0x39, 0x22, 0xe5, 0xa7, 0x2b, 0xef, 0x90, 0x06, 0xc0, 0x56, 0x56, 0xa9, + 0xe8, 0x81, 0x4c, 0x9d, 0x98, 0xea, 0x80, 0x56, 0x68, 0x1f, 0xcb, 0xcf, 0xda, 0x9a, 0xad, + 0xb5, 0x59, 0xd0, 0xe5, 0x7c, 0x88, 0xb7, 0x74, 0x95, 0x67, 0x0a, 0xff, 0x62, 0x72, 0x82, + 0x0b, 0x4a, 0xf9, 0xea, 0xce, 0xef, 0x3a, 0x8b, 0x65, 0x9c, 0xf0, 0x1e, 0x18, 0x59, 0xb2, + 0xd0, 0x82, 0x5a, 0x03, 0x9d, 0xff, 0xbc, 0x96, 0x18, 0xee, 0xa2, 0x65, 0x31, 0x67, 0xfd, + 0xe9, 0xaa, 0x70, 0x0f, 0x8e, 0xa3, 0x76, 0xa7, 0xde, 0xe1, 0x0a, 0x0e, 0x3d, 0x24, 0xe6, + 0xdf, 0x07, 0xae, 0x33, 0x06, 0x3a, 0xe5, 0x4d, 0xe5, 0xf2, 0x45, 0xa9, 0xa9, 0x0f, 0x7b, + 0x5d, 0x67, 0xc4, 0xa0, 0xa2, 0xd9, 0x49, 0x43, 0xa8, 0x18, 0x31, 0x46, 0x5a, 0x5c, 0xb6, + 0x40, 0xc4, 0xf4, 0x32, 0xf5, 0xe9, 0xef, 0xe6, 0xb0, 0x24, 0x9f, 0x33, 0x3b, 0x2c, 0xb7, + 0xf6, 0x65, 0x4b, 0x73, 0x48, 0x3c, 0xf2, 0xe0, 0x81, 0x53, 0x6d, 0xc0, 0x3a, 0xaf, 0x65, + 0x9f, 0xff, 0x9e, 0xf1, 0x8f, 0x87, 0xca, 0x47, 0x01, 0xb3, 0x7d, 0x62, 0xcf, 0x9f, 0x4e, + 0x9e, 0x0d, 0xc2, 0x24, 0xa2, 0x92, 0x23, 0xcd, 0x41, 0xdd, 0x22, 0x97, 0x95, 0x12, 0x3c, + 0xdf, 0x29, 0xe4, 0xc8, 0x2f, 0x16, 0xb1, 0x63, 0x17, 0x93, 0x33, 0xba, 0xe1, 0x7c, 0xc1, + 0x45, 0x19, 0x10, 0xb5, 0x44, 0x2e, 0xf9, 0xf4, 0xfe, 0x61, 0x24, 0x07, 0xc2, 0x8e, 0xa3, + 0x20, 0x37, 0xcb, 0xcd, 0x4d, 0xdc, 0xff, 0x9a, 0x3d, 0xe9, 0x20, 0x18, 0x6a, 0xd4, 0x41, + 0x43, 0x00, 0x07, 0xe4, 0xc0, 0x96, 0x39, 0xb0, 0xa5, 0x47, 0x39, 0xdd, 0x9d, 0x12, 0xba, + 0x4f, 0x0f, 0x8b, 0x5c, 0x65, 0x3f, 0xbe, 0xf6, 0x33, 0x26, 0x45, 0xf6, 0x36, 0xbd, 0xd6, + 0x97, 0x96, 0x14, 0xa0, 0x6a, 0xb1, 0x4c, 0x88, 0x86, 0x93, 0x43, 0xf8, 0x2b, 0x3d, 0xb5, + 0x96, 0x39, 0xce, 0x05, 0x3e, 0xbf, 0x3c, 0x39, 0x1b, 0x74, 0x55, 0x54, 0xa2, 0xe3, 0x75, + 0xb6, 0xe7, 0x2e, 0x91, 0x2a, 0xbf, 0xc5, 0x0b, 0x5c, 0x5f, 0xc4, 0xa3, 0xb0, 0xec, 0x42, + 0xff, 0x5b, 0xa3, 0x31, 0x73, 0x81, 0x82, 0x59, 0x0c, 0x57, 0xe6, 0x01, 0x57, 0x23, 0xd1, + 0x3a, 0x66, 0xf5, 0xc5, 0x32, 0xdb, 0xbe, 0x0c, 0xd9, 0xd0, 0x67, 0xd8, 0xb9, 0x2f, 0xf2, + 0x32, 0xa4, 0x44, 0x26, 0x3a, 0x34, 0x98, 0x03, 0x85, 0x3a, 0xbf, 0xc6, 0x28, 0x97, 0x3e, + 0xc6, 0x02, 0x4b, 0x65, 0xc3, 0xe7, 0x04, 0x86, 0x89, 0xed, 0x09, 0xa5, 0x2c, 0x12, 0x2b, + 0xd7, 0x80, 0x32, 0x34, 0xd3, 0xd8, 0x76, 0x8e, 0x7c, 0xa8, 0x60, 0x6e, 0xc6, 0x74, 0xf8, + 0xdd, 0x1e, 0x29, 0x45, 0x0f, 0xf8, 0xff, 0x43, 0xfa, 0xf8, 0x89, 0xd9, 0xfe, 0x25, 0x9b, + 0xc4, 0xc8, 0xab, 0xf2, 0xd3, 0xf4, 0x03, 0xa9, 0x5f, 0x00, 0xdf, 0xf7, 0x9c, 0x78, 0x6e, + 0xd4, 0x76, 0xff, 0xf2, 0xb6, 0x6f, 0x01, 0x53, 0x65, 0x28, 0xe7, 0x57, 0xe4, 0x47, 0xf1, + 0x0b, 0x05, 0x3c, 0x81, 0x48, 0x2e, 0x6d, 0x8e, 0xb2, 0xa7, 0x4f, 0xe0, 0xcf, 0x29, 0x24, + 0x9a, 0x64, 0x39, 0x6f, 0x52, 0xd5, 0xd3, 0x23, 0x48, 0x7f, 0x6c, 0x6d, 0xda, 0x51, 0xbc, + 0x3e, 0xa9, 0x5b, 0xd4, 0xf9, 0x09, 0x52, 0x28, 0x8c, 0x38, 0x9e, 0x75, 0x62, 0xc8, 0x7e, + 0xa0, 0x1b, 0x28, 0x0e, 0x46, 0x69, 0xd3, 0xbc, 0xe3, 0x1b, 0xda, 0xb9, 0xb9, 0x9a, 0xaa, + 0x5b, 0x1c, 0x6b, 0x9c, 0xfd, 0xdb, 0x25, 0xdd, 0x06, 0x7d, 0xd3, 0xc7, 0x37, 0x36, 0xe6, + 0x5b, 0xf6, 0xf2, 0xdb, 0x6b, 0x90, 0x49, 0x15, 0x09, 0xab, 0x57, 0x84, 0x4b, 0x26, 0x42, + 0xf5, 0x3a, 0xd4, 0x42, 0xff, 0xe4, 0x10, 0x7d, 0x8f, 0x7b, 0x9d, 0x5c, 0xb4, 0x79, 0x5e, + 0x3b, 0x83, 0x31, 0x6d, 0x08, 0x39, 0x8f, 0x6c, 0xb8, 0x0d, 0x66, 0xbf, 0x60, 0x83, 0xb6, + 0x55, 0xa0, 0xcf, 0x4b, 0x21, 0xc7, 0xb4, 0x3f, 0x1b, 0x97, 0xb4, 0x9c, 0x54, 0x7f, 0x28, + 0xd8, 0x24, 0x96, 0xe0, 0xbb, 0x70, 0x80, 0x47, 0xc5, 0x69, 0x0e, 0x62, 0x9a, 0xd6, 0x56, + 0x5c, 0x0d, 0x73, 0x45, 0x2d, 0xaa, 0xf2, 0x18, 0x1c, 0x78, 0xe7, 0x6d, 0x51, 0x29, 0xa8, + 0x82, 0xbf, 0xfd, 0x39, 0x64, 0x93, 0x7c, 0x50, 0x7d, 0xed, 0xa5, 0x71, 0x56, 0xc9, 0xc9, + 0x2d, 0xbf, 0xd7, 0xe8, 0x1f, 0xf3, 0x79, 0x45, 0xbb, 0xa2, 0xf8, 0x8c, 0x47, 0x10, 0x69, + 0x3b, 0x23, 0xf1, 0x42, 0xca, 0x1a, 0x8c, 0x90, 0xf9, 0x5c, 0x37, 0x32, 0x4c, 0xc3, 0xb3, + 0x52, 0xe1, 0xaf, 0x16, 0xb3, 0xf8, 0x9c, 0x28, 0xbd, 0xcb, 0x41, 0x83, 0x70, 0x34, 0x6d, + 0xd0, 0x97, 0x15, 0x80, 0xea, 0x7d, 0x57, 0x1d, 0x49, 0x08, 0x80, 0xc3, 0x32, 0xa0, 0x61, + 0x62, 0x33, 0xd3, 0xc7, 0x21, 0x96, 0x78, 0x97, 0x02, 0xd5, 0x06, 0x72, 0x0c, 0x41, 0x7b, + 0x04, 0x05, 0xff, 0x35, 0x2d, 0xc0, 0x97, 0xbc, 0xbf, 0xac, 0x30, 0xaa, 0x22, 0x05, 0x5d, + 0x21, 0x0e, 0x94, 0xc3, 0x44, 0x28, 0xfe, 0x2c, 0x30, 0x36, 0x13, 0xeb, 0xca, 0xcc, 0xb3, + 0x8f, 0xaf, 0xab, 0x15, 0xac, 0xc6, 0x2a, 0x6d, 0x86, 0xfb, 0x65, 0x57, 0xbe, 0x63, 0x9e, + 0x33, 0xb9, 0xaa, 0x1f, 0x56, 0x06, 0x28, 0x85, 0xa0, 0xd5, 0xcb, 0x63, 0x90, 0xf8, 0x98, + 0xdf, 0xd5, 0x92, 0x05, 0x3a, 0x72, 0xc9, 0xc6, 0x4a, 0xf4, 0xd2, 0x6f, 0x44, 0xab, 0x10, + 0xdb, 0x8e, 0xd7, 0xed, 0xc2, 0x2e, 0x1a, 0x77, 0x41, 0x93, 0x30, 0xe5, 0x01, 0x97, 0x44, + 0x09, 0xef, 0x77, 0xce, 0x6c, 0x1e, 0x5c, 0xa7, 0x03, 0xee, 0xa1, 0x04, 0x71, 0x42, 0x3c, + 0x61, 0x11, 0x44, 0x37, 0xe7, 0xff, 0x64, 0x9a, 0xdd, 0x0b, 0x6d, 0x53, 0x89, 0x34, 0x16, + 0x9b, 0x07, 0x27, 0x39, 0xe7, 0x9a, 0xe8, 0x89, 0x0f, 0x12, 0x72, 0xb2, 0xc5, 0xd4, 0x64, + 0x62, 0x8a, 0xe7, 0x3d, 0x3b, 0xce, 0xc6, 0x93, 0xb8, 0x6b, 0x3e, 0x8b, 0xa1, 0x5f, 0x15, + 0x39, 0x18, 0xf5, 0xad, 0x43, 0xb9, 0x65, 0x8c, 0xfd, 0xc3, 0x6f, 0xda, 0x8a, 0x0c, 0xa0, + 0xa0, 0xf0, 0xc7, 0x9a, 0xe7, 0xcb, 0x49, 0x98, 0xb4, 0x14, 0x3e, 0x11, 0x10, 0x52, 0x8f, + 0xce, 0x4c, 0xe5, 0x1b, 0x18, 0x2d, 0xee, 0x8c, 0xf0, 0x13, 0xf0, 0xac, 0x15, 0x9f, 0x15, + 0xd0, 0x09, 0x85, 0xf3, 0xbd, 0xf5, 0xfd, 0xc1, 0xbf, 0xf9, 0xca, 0xfd, 0x6d, 0xb2, 0xb8, + 0x6c, 0xf8, 0xfc, 0x62, 0x49, 0xac, 0x97, 0x5a, 0xcf, 0x77, 0xf0, 0x5a, 0x6b, 0x54, 0xa4, + 0xce, 0xc7, 0x11, 0xb4, 0x3e, 0x12, 0x9e, 0xdc, 0xab, 0x0f, 0x29, 0x83, 0x23, 0xe8, 0xc9, + 0xb5, 0xd2, 0xef, 0x45, 0x34, 0xcf, 0x66, 0x79, 0x06, 0x67, 0xdc, 0x5f, 0x10, 0x9c, 0xdb, + 0xf7, 0xd7, 0x4d, 0xfe, 0xba, 0x3e, 0x45, 0x05, 0xce, 0x6a, 0xa8, 0xd6, 0x7f, 0xda, 0x31, + 0x91, 0xd5, 0x1e, 0x69, 0x22, 0x3c, 0xe8, 0xcd, 0x19, 0xf9, 0x82, 0xa1, 0xda, 0xf7, 0xd2, + 0x7d, 0x11, 0x7e, 0x32, 0x03, 0x3a, 0x10, 0x60, 0x8b, 0x7b, 0x50, 0x23, 0x50, 0x0b, 0xf9, + 0xa6, 0x0b, 0x6a, 0xd3, 0x06, 0x75, 0x94, 0x89, 0x46, 0xec, 0x70, 0x90, 0xdc, 0x61, 0xd1, + 0x54, 0x20, 0x09, 0x16, 0xbe, 0x15, 0x10, 0xfb, 0x30, 0x43, 0x72, 0xa1, 0x25, 0xf6, 0xa6, + 0xf9, 0x6c, 0x1a, 0x88, 0xd6, 0x95, 0xd5, 0xa4, 0x7e, 0x56, 0x4e, 0x50, 0x71, 0xf1, 0xaf, + 0x9a, 0xa1, 0xd7, 0x88, 0xf9, 0x5a, 0x41, 0xff, 0x70, 0x1d, 0x17, 0xcc, 0xb3, 0x6f, 0x7d, + 0xc7, 0x52, 0xf7, 0x4f, 0xeb, 0x77, 0x81, 0x5b, 0xa2, 0xca, 0x3e, 0xcb, 0x4c, 0xcf, 0x83, + 0x53, 0x5e, 0x44, 0xcf, 0x09, 0xdf, 0x32, 0x03, 0x4c, 0x98, 0x7a, 0x63, 0x39, 0x01, 0xd8, + 0xc3, 0x39, 0x4c, 0x21, 0x1c, 0x19, 0x3a, 0x5e, 0x93, 0x26, 0x53, 0x85, 0x43, 0x85, 0xb1, + 0x7b, 0x8e, 0x4d, 0xda, 0x86, 0xbb, 0xf5, 0x55, 0x4b, 0xc0, 0x39, 0x76, 0x11, 0x33, 0x19, + 0x08, 0x82, 0xe3, 0x6c, 0x0f, 0x16, 0xef, 0xf7, 0x03, 0xc4, 0xb6, 0xe5, 0xdc, 0xc3, 0x25, + 0xeb, 0xe0, 0x4c, 0x6a, 0x4f, 0x2b, 0xa3, 0x3c, 0x4e, 0x3a, 0x7a, 0x72, 0x6d, 0xf7, 0xf7, + 0xe7, 0xfb, 0x2c, 0x58, 0x3b, 0xa7, 0xca, 0x26, 0x56, 0x33, 0xbc, 0x5f, 0x43, 0xcb, 0xb6, + 0xc8, 0xe4, 0xc8, 0x3b, 0xf3, 0xba, 0xd7, 0x4e, 0xf8, 0x3e, 0x47, 0x6d, 0x08, 0x46, 0xa4, + 0xac, 0xd4, 0xca, 0x93, 0xce, 0x56, 0x48, 0x0e, 0x3d, 0x8a, 0x85, 0x39, 0x8c, 0x8b, 0x9c, + 0x0f, 0x96, 0x2c, 0xb2, 0x56, 0xd7, 0x7e, 0xd9, 0x38, 0xad, 0xd6, 0x71, 0x86, 0xa4, 0xe2, + 0xdc, 0xad, 0xb0, 0x94, 0x48, 0xfd, 0x85, 0xc6, 0x49, 0xec, 0x4d, 0x3a, 0xbc, 0xfb, 0x90, + 0x80, 0x0b, 0x92, 0x37, 0xf7, 0xd6, 0x6e, 0x10, 0x45, 0x03, 0xd6, 0x43, 0x9f, 0x4b, 0x24, + 0x3c, 0x49, 0x41, 0xd4, 0x41, 0x9e, 0xfa, 0x4c, 0xa9, 0x40, 0x03, 0xa4, 0x36, 0x53, 0x01, + 0x6e, 0xcf, 0x9f, 0x85, 0x4c, 0xa7, 0x69, 0x59, 0xf4, 0x60, 0xaf, 0xfc, 0xbc, 0x17, 0x62, + 0x9b, 0x47, 0x71, 0x56, 0x4c, 0xd3, 0xf1, 0x9a, 0x08, 0xbd, 0x35, 0x4f, 0x11, 0x27, 0xa2, + 0xcc, 0x7e, 0x8b, 0x34, 0x34, 0xa7, 0x6a, 0x2b, 0x96, 0x1d, 0xfa, 0xc9, 0x1e, 0x67, 0xed, + 0x3c, 0xb2, 0xe2, 0xa9, 0x88, 0x05, 0x3e, 0xbf, 0x72, 0x17, 0x9e, 0x64, 0xc9, 0x2f, 0xb7, + 0x82, 0x94, 0x98, 0xbe, 0xcf, 0x40, 0x6d, 0xed, 0x41, 0x01, 0x61, 0x66, 0xc8, 0xf1, 0xf1, + 0xca, 0x97, 0xa7, 0xa1, 0xf8, 0x51, 0x07, 0x59, 0xdb, 0x1c, 0x92, 0xc6, 0x18, 0xa8, 0x82, + 0xdc, 0x5d, 0xe4, 0xbe, 0x10, 0x22, 0x8e, 0x65, 0x8f, 0xea, 0x55, 0x3a, 0xed, 0xb0, 0x2e, + 0xd3, 0x3e, 0xd5, 0x11, 0x9b, 0xa6, 0x33, 0x35, 0x88, 0x91, 0x67, 0x1e, 0xa3, 0xab, 0xf2, + 0x78, 0xe2, 0x15, 0x95, 0x36, 0x8d, 0x3a, 0xf1, 0x37, 0xf1, 0xa0, 0x35, 0x6e, 0xdf, 0x4e, + 0x46, 0x8d, 0x6a, 0x71, 0xe7, 0xfe, 0xab, 0x02, 0x60, 0x39, 0x38, 0x00, 0xd8, 0x05, 0x7e, + 0x27, 0xae, 0x46, 0x84, 0x71, 0xb5, 0x37, 0xcf, 0x7e, 0x03, 0xc3, 0x2a, 0xde, 0xb8, 0x76, + 0x21, 0x85, 0x8d, 0xcd, 0x44, 0xf3, 0xe4, 0x32, 0xd2, 0x07, 0xc1, 0x46, 0x05, 0x14, 0xc0, + 0xa5, 0xc0, 0x79, 0x37, 0x9f, 0x5b, 0x8b, 0x79, 0x35, 0x2d, 0x78, 0x86, 0xb6, 0x06, 0x82, + 0x6f, 0x97, 0xf1, 0xe5, 0xdc, 0x84, 0x02, 0x02, 0x21, 0x54, 0xf8, 0x26, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfd, 0xe0, 0x1c, 0x5f, 0x5b, 0x7f, 0x01, 0xd9, 0xf6, 0xbb, 0x2b, 0xbc, 0xe9, + 0x3a, 0xc4, 0xa2, 0xf7, 0xc1, 0x15, 0x65, 0x39, 0x4b, 0x68, 0x4a, 0x5d, 0x48, 0x17, 0xf0, + 0x9d, 0xbd, 0x77, 0x15, 0x8d, 0x07, 0xbb, 0x95, 0xa5, 0x63, 0xd9, 0xca, 0x60, 0xdf, 0xd5, + 0xef, 0x73, 0x4c, 0x70, 0xc9, 0xf2, 0x37, 0x04, 0xf8, 0x77, 0x8f, 0x87, 0x23, 0xc8, 0x0c, + 0x48, 0xe8, 0xf4, 0xe7, 0xb6, 0x39, 0x4d, 0xba, 0x2a, 0xef, 0xa2, 0xc7, 0x10, 0xea, 0x55, + 0x84, 0xde, 0x33, 0x42, 0xd6, 0x46, 0xe8, 0xd5, 0x76, 0xb8, 0x24, 0x2c, 0x2a, 0x61, 0x49, + 0xea, 0xe2, 0xf2, 0xe7, 0x44, 0x8c, 0xf1, 0x6f, 0xc2, 0x74, 0xa5, 0xa1, 0xe4, 0xe8, 0x24, + 0x84, 0x9f, 0xaa, 0xad, 0xde, 0x11, 0x34, 0xc2, 0x81, 0x75, 0x8b, 0xba, 0xec, 0x71, 0x4e, + 0xbb, 0x08, 0x45, 0x26, 0x64, 0x7d, 0xce, 0x64, 0xb9, 0x79, 0xf3, 0x2a, 0x84, 0x3c, 0x69, + 0x1d, 0xec, 0x4e, 0x8b, 0x23, 0x3d, 0xe6, 0xd0, 0xce, 0x19, 0xa6, 0xad, 0xb4, 0x83, 0xda, + 0x78, 0x40, 0x3b, 0xb1, 0x69, 0xef, 0x1f, 0xd1, 0xe7, 0x11, 0xe7, 0x24, 0x24, 0x63, 0x9e, + 0x2a, 0xf8, 0xa1, 0x07, 0x26, 0x48, 0x10, 0x24, 0x8f, 0x14, 0xaa, 0x93, 0x1e, 0x35, 0x7d, + 0x99, 0x75, 0x30, 0x2a, 0x04, 0xf0, 0x63, 0xbb, 0x34, 0xad, 0xed, 0xd2, 0x32, 0xfe, 0xe2, + 0xee, 0x23, 0x39, 0xc3, 0xeb, 0xab, 0xbb, 0x2f, 0x27, 0x3a, 0x03, 0x42, 0xf4, 0xa4, 0xae, + 0x99, 0x73, 0x97, 0x64, 0xec, 0xa9, 0xc8, 0x7c, 0xed, 0xab, 0x34, 0x4d, 0xa5, 0x1c, 0x90, + 0xec, 0xc3, 0x7f, 0xa2, 0x01, 0x65, 0x2f, 0xf7, 0xb9, 0x20, 0xdb, 0x00, 0x00, 0xd2, 0xd9, + 0xf8, 0x82, 0x26, 0xa2, 0x28, 0xdc, 0xfd, 0x43, 0x2b, 0x65, 0x9a, 0x6c, 0x57, 0x79, 0x8b, + 0x44, 0xce, 0x78, 0x91, 0xa7, 0x9a, 0x68, 0x38, 0xf9, 0xd4, 0xe9, 0x8c, 0x91, 0x8e, 0x0c, + 0x81, 0x44, 0x9a, 0xc0, 0xb7, 0xd2, 0xa0, 0x08, 0x17, 0xbe, 0x55, 0xf9, 0xdd, 0x38, 0xf0, + 0x90, 0xe4, 0x76, 0x05, 0x8b, 0x49, 0x06, 0x8f, 0xaa, 0x10, 0x43, 0x13, 0xd9, 0x1a, 0xa0, + 0x24, 0xf0, 0xe4, 0x0e, 0x50, 0xa0, 0xde, 0xcf, 0x81, 0x60, 0x3f, 0xc9, 0xbe, 0x9b, 0x3c, + 0x0d, 0x95, 0x6c, 0xa6, 0xeb, 0x6f, 0x74, 0x45, 0x47, 0x3b, 0xbe, 0x83, 0xe1, 0x33, 0x7a, + 0xf0, 0x74, 0x3c, 0x70, 0x01, 0xc1, 0xcd, 0x1f, 0x4a, 0x6d, 0x66, 0xc6, 0x7f, 0x17, 0x30, + 0x61, 0x9a, 0xe6, 0x31, 0x0b, 0x14, 0xcf, 0x8d, 0xb4, 0x6a, 0x93, 0x1c, 0xc5, 0xc7, 0xa5, + 0xe0, 0x2b, 0x32, 0x88, 0x21, 0x9d, 0x86, 0x93, 0xaf, 0xae, 0x97, 0x9e, 0xda, 0xf3, 0xe7, + 0x45, 0x81, 0x84, 0xcb, 0x67, 0xa0, 0xd8, 0x35, 0xd4, 0x40, 0xf6, 0xdc, 0xc7, 0x24, 0x66, + 0x6e, 0x3d, 0x88, 0x79, 0xd6, 0x3d, 0x9b, 0xf9, 0x77, 0x1b, 0xe9, 0xa8, 0x63, 0xde, 0x20, + 0xab, 0x9e, 0xe3, 0x01, 0xf6, 0xe2, 0x91, 0x0f, 0xf0, 0x58, 0x65, 0x7c, 0x61, 0x19, 0x7a, + 0xad, 0xab, 0x96, 0x17, 0x47, 0x0f, 0x9b, 0x7a, 0x1a, 0x2d, 0x37, 0xde, 0xa8, 0x51, 0xac, + 0x09, 0x36, 0x4a, 0x72, 0x30, 0x22, 0x1a, 0x0e, 0x39, 0x29, 0xd8, 0xff, 0xc5, 0xca, 0xfd, + 0x92, 0xdc, 0x04, 0x0f, 0x5c, 0x6e, 0x34, 0xed, 0xc6, 0x44, 0x3e, 0x2e, 0x4f, 0x52, 0x97, + 0x4f, 0xce, 0x85, 0x16, 0xcb, 0x24, 0x6a, 0x9e, 0xb0, 0x86, 0xe1, 0x48, 0x73, 0x85, 0xb5, + 0x92, 0x8a, 0xba, 0x8d, 0x9f, 0x5a, 0xab, 0x5e, 0xf9, 0x6e, 0xf8, 0x64, 0x56, 0x74, 0xba, + 0xd7, 0xa5, 0x67, 0xb7, 0x4f, 0x43, 0xa3, 0x76, 0x7a, 0x28, 0xf7, 0xb2, 0x76, 0x4b, 0xfa, + 0x61, 0x2d, 0x19, 0x7b, 0x20, 0xe8, 0x85, 0x3b, 0x54, 0x53, 0x2d, 0xf7, 0xa8, 0x13, 0xbf, + 0x05, 0xc9, 0xbd, 0x18, 0x37, 0xe8, 0x8b, 0x8d, 0x54, 0xf1, 0xc7, 0x7f, 0x18, 0xc1, 0x47, + 0xb0, 0xb5, 0x31, 0x64, 0xb1, 0x3a, 0x5c, 0x60, 0x2e, 0x97, 0xa8, 0x83, 0xc8, 0x87, 0x70, + 0x34, 0x9e, 0x64, 0x6b, 0x3f, 0x65, 0x7a, 0x1d, 0x80, 0x25, 0xa5, 0x63, 0x25, 0xb0, 0x4e, + 0x5b, 0x06, 0x23, 0xb6, 0xd8, 0xd2, 0xb9, 0x24, 0x64, 0xcb, 0xba, 0x20, 0xf2, 0x06, 0x18, + 0x37, 0x33, 0x38, 0x04, 0x85, 0xb8, 0x63, 0x33, 0xce, 0x2a, 0xd4, 0xb9, 0xe0, 0x92, 0x0f, + 0x8c, 0xcc, 0x77, 0xca, 0x85, 0xa1, 0xb4, 0xb5, 0x74, 0x33, 0x5d, 0xfe, 0x25, 0x20, 0x06, + 0xd0, 0x4f, 0x05, 0xe2, 0xd7, 0xf6, 0x73, 0x4f, 0xe5, 0xcc, 0x09, 0x58, 0xaa, 0x49, 0xe9, + 0x44, 0x22, 0xc6, 0x82, 0x59, 0xf2, 0x8a, 0x51, 0xac, 0xfa, 0x9e, 0xd8, 0x8d, 0x77, 0x36, + 0xab, 0xdb, 0x65, 0x40, 0x03, 0x99, 0x71, 0x43, 0x06, 0xd6, 0xec, 0x22, 0x6c, 0xdd, 0x9d, + 0xf5, 0x9b, 0xdf, 0x54, 0x9e, 0x11, 0x20, 0x75, 0x5c, 0x83, 0x88, 0x08, 0xfd, 0x94, 0x37, + 0x09, 0xbe, 0x4d, 0xea, 0x89, 0xc4, 0x7d, 0x58, 0xf9, 0xa4, 0xd4, 0xa3, 0x9a, 0xa3, 0xf8, + 0x3d, 0x7e, 0xb7, 0x9f, 0x29, 0x2d, 0x97, 0x88, 0xc8, 0x04, 0x94, 0x66, 0x48, 0xd4, 0x3d, + 0x00, 0x21, 0x2a, 0x0c, 0xa6, 0x30, 0xe4, 0xc2, 0x31, 0x87, 0x97, 0x84, 0xb4, 0x69, 0x5f, + 0x80, 0xdb, 0x42, 0xca, 0x08, 0x6b, 0x0c, 0xbc, 0xf6, 0xd9, 0x6d, 0xe4, 0xbb, 0x58, 0x9c, + 0xc9, 0xd4, 0x15, 0xbb, 0x5f, 0x24, 0x27, 0x2d, 0xcd, 0xe5, 0x2a, 0xc4, 0xfa, 0xfa, 0x1e, + 0x7e, 0x95, 0xcc, 0x33, 0x07, 0x11, 0xa7, 0x7d, 0x03, 0xdf, 0xd2, 0x6c, 0xae, 0x6a, 0xcf, + 0xfe, 0x7f, 0x1f, 0x95, 0x5b, 0xed, 0xca, 0x1d, 0x8f, 0x72, 0x6c, 0x47, 0xfd, 0xfc, 0x6f, + 0x84, 0x91, 0xfa, 0xe5, 0x02, 0x88, 0xf2, 0xd7, 0xfa, 0x38, 0xb3, 0xc1, 0xce, 0x6b, 0xdd, + 0xc0, 0xfa, 0xf2, 0x57, 0xe7, 0x69, 0xe3, 0xe2, 0x5b, 0x8d, 0x24, 0xc3, 0xcd, 0x7e, 0xef, + 0x7e, 0x3f, 0x63, 0x73, 0x27, 0x91, 0xb9, 0x0d, 0xe4, 0x2f, 0x7b, 0x92, 0x6d, 0x50, 0xd1, + 0xca, 0x58, 0x36, 0xbf, 0xcb, 0xc3, 0x8d, 0x39, 0xf2, 0x1f, 0x78, 0x0c, 0x4d, 0xf8, 0x84, + 0x1f, 0x7d, 0xd6, 0x80, 0xac, 0xdf, 0x15, 0x48, 0xbc, 0xdd, 0x5d, 0xa6, 0x9a, 0xc0, 0x46, + 0x20, 0x54, 0xd0, 0x99, 0xf9, 0x70, 0x4b, 0xac, 0x78, 0x84, 0x63, 0xac, 0x3c, 0x0d, 0x49, + 0x51, 0x53, 0x38, 0xfc, 0xbd, 0xce, 0x58, 0x7f, 0x62, 0x60, 0xb0, 0x56, 0x59, 0x1e, 0x4e, + 0x4e, 0xc9, 0xd4, 0x74, 0x4e, 0x31, 0x47, 0xaa, 0xe1, 0xb3, 0x1b, 0xea, 0x39, 0xd7, 0x0f, + 0x3b, 0xd6, 0xfe, 0x63, 0xb2, 0x43, 0x61, 0x97, 0x13, 0x25, 0x1b, 0x42, 0x31, 0xc5, 0x5b, + 0x79, 0x47, 0x98, 0x6f, 0xdf, 0x77, 0xc6, 0x81, 0xdd, 0xcb, 0x9a, 0x4f, 0x38, 0x72, 0x3b, + 0x60, 0x06, 0xb9, 0xd2, 0x8c, 0xbc, 0x4a, 0x8e, 0x55, 0x50, 0xa9, 0xe0, 0x66, 0xb0, 0xe2, + 0xf7, 0x2d, 0x32, 0xc4, 0x0d, 0xf5, 0x4e, 0x8e, 0xdd, 0x8f, 0x38, 0xa6, 0xd5, 0xec, 0xea, + 0xbd, 0x56, 0xf2, 0x51, 0x86, 0x95, 0xcc, 0x49, 0x9d, 0x8f, 0x18, 0xe1, 0x87, 0x6f, 0x4a, + 0x9e, 0x65, 0xba, 0x6d, 0x98, 0x2d, 0xa1, 0x7c, 0x7d, 0xfc, 0x15, 0x4a, 0x9f, 0xf8, 0x4e, + 0xb6, 0x60, 0xc1, 0x59, 0x9a, 0x8a, 0x90, 0x5e, 0x97, 0xfd, 0xcb, 0xca, 0x38, 0x31, 0x31, + 0xfc, 0x0b, 0xd0, 0x95, 0x95, 0xc9, 0xe9, 0x21, 0x95, 0xf8, 0x63, 0x4d, 0x8d, 0x85, 0x37, + 0xb5, 0xf7, 0x69, 0x2b, 0xfd, 0x60, 0x03, 0x47, 0x94, 0x9f, 0x0e, 0x7c, 0x62, 0x8c, 0x7f, + 0x50, 0x90, 0xdd, 0x95, 0x88, 0x5d, 0x38, 0x3b, 0x44, 0x4f, 0x60, 0x2a, 0x46, 0x03, 0xf2, + 0xf9, 0xbb, 0x2e, 0xbe, 0x28, 0xd8, 0xd9, 0x0a, 0x07, 0x1d, 0xaa, 0xce, 0xbd, 0xa8, 0xa2, + 0xb0, 0xbb, 0x23, 0xf0, 0xe2, 0x1b, 0x25, 0x16, 0x35, 0xa3, 0x1f, 0x63, 0xca, 0x52, 0x41, + 0x6f, 0x57, 0x54, 0x37, 0x30, 0x76, 0x82, 0x2c, 0x31, 0x9f, 0xb9, 0x8b, 0xac, 0x46, 0x03, + 0xcc, 0xca, 0x9d, 0xf8, 0x43, 0x80, 0x2e, 0xe3, 0xa2, 0x5b, 0xf5, 0x36, 0x24, 0x38, 0x54, + 0x72, 0x6d, 0x1b, 0xbe, 0xf2, 0x67, 0x3e, 0x89, 0x7c, 0x05, 0x79, 0x83, 0x60, 0x6a, 0xb5, + 0xfe, 0xe3, 0x43, 0x61, 0x2d, 0x93, 0x3d, 0xf7, 0xee, 0xe4, 0xd3, 0x08, 0x53, 0x61, 0x76, + 0x7a, 0x99, 0x6c, 0x87, 0x25, 0x87, 0xa2, 0x42, 0xc5, 0xa1, 0xc0, 0xaf, 0xf3, 0xab, 0x90, + 0x4b, 0x18, 0x4a, 0x5f, 0xc9, 0x7e, 0xec, 0x9c, 0xb6, 0xdd, 0x95, 0x6e, 0x11, 0x3f, 0x82, + 0x53, 0x89, 0x2d, 0xc1, 0x11, 0xfb, 0xaa, 0xc6, 0x63, 0x3a, 0x92, 0xe4, 0xe1, 0xbb, 0x78, + 0x9f, 0x72, 0x7e, 0x96, 0xb7, 0x57, 0x51, 0x5a, 0xf3, 0x81, 0x5b, 0x19, 0xf5, 0xe8, 0x21, + 0xa2, 0xf3, 0xbd, 0xb5, 0x01, 0x8a, 0x81, 0x25, 0x3b, 0x71, 0x2a, 0x2e, 0x92, 0xa9, 0x81, + 0x3d, 0xac, 0xd0, 0xdb, 0x91, 0x10, 0xab, 0x3b, 0xc4, 0x3b, 0xb6, 0xb8, 0xed, 0xa9, 0xd9, + 0xea, 0xed, 0x7d, 0x3c, 0x67, 0x6e, 0xf9, 0x8b, 0x7f, 0x47, 0xc7, 0xde, 0xb8, 0x8e, 0xea, + 0x72, 0xbc, 0x38, 0x74, 0x22, 0x6f, 0x45, 0x20, 0x6e, 0x19, 0x5a, 0x84, 0x96, 0x8a, 0x2e, + 0xec, 0x34, 0x1d, 0x7e, 0x51, 0xa3, 0x98, 0xe7, 0x42, 0xf6, 0xc7, 0xb2, 0x83, 0xee, 0x6b, + 0x20, 0xfe, 0xde, 0x54, 0x74, 0x0c, 0xaa, 0xb1, 0xbe, 0x3b, 0xaa, 0xa7, 0xcd, 0x04, 0x6f, + 0xc9, 0x0b, 0xc8, 0xa3, 0xc3, 0xad, 0x59, 0x57, 0x2b, 0xee, 0x82, 0x9d, 0xd6, 0xd5, 0xc9, + 0x96, 0xf0, 0xfc, 0x2a, 0x7a, 0xfc, 0x80, 0xfe, 0xa5, 0x10, 0x91, 0xb3, 0x77, 0xca, 0x9d, + 0x31, 0xcb, 0xdb, 0x87, 0xf9, 0xe3, 0x16, 0xe7, 0xa4, 0xbe, 0x26, 0xc8, 0xe7, 0x2a, 0x6c, + 0xda, 0xeb, 0xe0, 0xcd, 0x6c, 0x5e, 0x09, 0x50, 0x48, 0x52, 0x30, 0x86, 0x58, 0x2f, 0xfe, + 0x6a, 0xa6, 0xee, 0x29, 0x94, 0x3a, 0x5a, 0x30, 0x52, 0xae, 0x25, 0xb2, 0x52, 0xaf, 0x64, + 0x67, 0xfa, 0x60, 0x90, 0xe2, 0xef, 0x7b, 0xb8, 0xbe, 0xd2, 0xf5, 0x2b, 0x4a, 0x7b, 0x47, + 0x9f, 0x2c, 0x4d, 0xef, 0x5b, 0xd5, 0xf4, 0x27, 0xb5, 0x9e, 0xf8, 0xcf, 0xaa, 0xa4, 0xa4, + 0x82, 0x71, 0x2e, 0x28, 0x66, 0xdc, 0x58, 0x2d, 0x7d, 0xd6, 0xf7, 0xc8, 0xc2, 0x6b, 0xf2, + 0xb3, 0x65, 0x0b, 0xbf, 0x4f, 0x83, 0x11, 0x0a, 0x2f, 0xeb, 0x1f, 0xe8, 0xc7, 0xbf, 0x91, + 0xde, 0xe1, 0xb3, 0xb4, 0x0c, 0xc7, 0x69, 0x3d, 0x7c, 0x7b, 0x37, 0x62, 0xc6, 0x99, 0xc6, + 0x27, 0x56, 0x2b, 0xbd, 0xa2, 0x45, 0x91, 0x98, 0x17, 0x15, 0xaa, 0xa4, 0xd9, 0x93, 0xa4, + 0x3c, 0xdb, 0x1c, 0x8c, 0x5c, 0x9e, 0xb4, 0xab, 0x9f, 0x4e, 0xce, 0x1e, 0x62, 0x67, 0xec, + 0x2d, 0x24, 0xf3, 0x7f, 0x73, 0xd4, 0x82, 0x74, 0x84, 0xff, 0xf9, 0xcb, 0x68, 0x55, 0x73, + 0x79, 0x05, 0x08, 0x1a, 0x7d, 0xec, 0x99, 0x90, 0xc4, 0x00, 0xd5, 0x45, 0x0e, 0xf9, 0xe0, + 0x6d, 0xca, 0x45, 0x95, 0xf8, 0xc0, 0xf8, 0x40, 0x23, 0x1f, 0x14, 0x19, 0x81, 0x9c, 0x0e, + 0x49, 0x27, 0x5f, 0x18, 0x7b, 0x60, 0xfc, 0x75, 0x15, 0x65, 0xc3, 0xc1, 0x46, 0x05, 0xc9, + 0x6f, 0x36, 0x8d, 0xa6, 0x31, 0x6c, 0xaa, 0x0d, 0x24, 0x9a, 0x06, 0x51, 0xdf, 0x95, 0x54, + 0x4a, 0x60, 0x42, 0xfe, 0xed, 0x75, 0xf0, 0xd5, 0x48, 0x3d, 0xbb, 0x44, 0xc9, 0x00, 0x59, + 0xec, 0x6a, 0x7b, 0x44, 0x53, 0xae, 0x6c, 0x84, 0x65, 0xe6, 0x8e, 0x95, 0xb1, 0x71, 0x8e, + 0x0f, 0x86, 0xf8, 0xab, 0x7e, 0x85, 0xf2, 0xbf, 0xc3, 0x39, 0x7c, 0x7a, 0xd8, 0xc4, 0x18, + 0x18, 0xbb, 0x70, 0x8d, 0x1e, 0x19, 0xc3, 0xe7, 0x8a, 0x95, 0x84, 0x8d, 0xdd, 0x1d, 0x8e, + 0x6c, 0x99, 0x43, 0x0b, 0x07, 0xfc, 0x83, 0x42, 0x14, 0x54, 0x92, 0x96, 0x13, 0x61, 0xba, + 0x1a, 0xaa, 0xc7, 0x3a, 0x02, 0x3b, 0xd7, 0xe0, 0x8b, 0x9e, 0x14, 0x84, 0x63, 0x54, 0x51, + 0xd9, 0x30, 0x66, 0x9d, 0x35, 0xf0, 0x0e, 0xc6, 0x36, 0xd6, 0xdb, 0xec, 0x5a, 0x86, 0x33, + 0x64, 0x5b, 0x97, 0x24, 0x1d, 0xfb, 0x40, 0x53, 0x4c, 0x79, 0xd0, 0xc9, 0x24, 0xd0, 0xd3, + 0x0c, 0x1a, 0x12, 0x8d, 0x61, 0xe1, 0xa4, 0x18, 0x42, 0xce, 0x4e, 0x6f, 0x74, 0xaf, 0x29, + 0x56, 0xa0, 0x59, 0x9c, 0xf4, 0x92, 0x47, 0xe6, 0x6d, 0x08, 0xd7, 0x51, 0x71, 0x06, 0x47, + 0x56, 0x00, 0x42, 0xb9, 0x92, 0x32, 0x84, 0xb8, 0x3b, 0x1e, 0x5f, 0x15, 0xd5, 0xfd, 0xd1, + 0x0f, 0x06, 0x86, 0x72, 0xdc, 0x30, 0x34, 0x8a, 0x24, 0x17, 0x04, 0x81, 0xbb, 0x79, 0x32, + 0x38, 0x5b, 0x56, 0x5b, 0x74, 0x0d, 0x5f, 0x0f, 0xc9, 0x80, 0x32, 0x6c, 0x6f, 0x25, 0x88, + 0x85, 0xde, 0x45, 0x8b, 0xe5, 0x38, 0x96, 0x0d, 0xca, 0x77, 0xa0, 0x15, 0xe1, 0x08, 0x2d, + 0x67, 0xc1, 0xfa, 0x9a, 0x76, 0x9e, 0x7f, 0x25, 0x45, 0x3b, 0x36, 0x7b, 0xef, 0x7b, 0x28, + 0x55, 0x4e, 0x85, 0x01, 0x2e, 0xb6, 0x0d, 0xff, 0x27, 0xd7, 0xd9, 0x65, 0xe2, 0xed, 0x36, + 0xd6, 0x0e, 0x68, 0xdf, 0x89, 0xc7, 0x8d, 0xf5, 0xb5, 0x68, 0x93, 0x1a, 0x8c, 0x82, 0x82, + 0xaf, 0xc0, 0x10, 0x82, 0x9f, 0xd7, 0xc7, 0x1d, 0x04, 0xc0, 0xa5, 0x3c, 0x49, 0x22, 0x89, + 0x27, 0x45, 0x63, 0x9d, 0x56, 0xf7, 0xd0, 0xca, 0xcb, 0xb0, 0x98, 0x95, 0x9a, 0x29, 0x28, + 0x72, 0x27, 0x4b, 0x1d, 0xe7, 0xc2, 0xb0, 0x72, 0xd1, 0xaa, 0x33, 0x11, 0x40, 0xb4, 0x35, + 0xbc, 0x13, 0x05, 0xa9, 0xb5, 0x6e, 0x86, 0xb3, 0x83, 0x9d, 0x2d, 0x7c, 0x9f, 0x00, 0x14, + 0x32, 0xf3, 0x00, 0xed, 0xcf, 0xe0, 0x61, 0xe4, 0xda, 0x44, 0xcf, 0x7c, 0x12, 0xb4, 0x42, + 0x9c, 0x17, 0xc8, 0xa6, 0xdd, 0xcb, 0xec, 0x7f, 0xf1, 0x82, 0x8c, 0x1d, 0x03, 0x98, 0x61, + 0xc6, 0xe2, 0x0a, 0xff, 0xe7, 0xd2, 0x08, 0xf9, 0x1c, 0x7c, 0x75, 0x70, 0xa0, 0x17, 0x4b, + 0x98, 0x21, 0x3f, 0x9e, 0x4f, 0xfb, 0x76, 0x31, 0xd8, 0x53, 0x09, 0x42, 0x78, 0xe3, 0x1c, + 0x59, 0x15, 0x8b, 0x65, 0x1f, 0x26, 0x87, 0x79, 0xb2, 0xfb, 0x04, 0xff, 0x5d, 0xb9, 0x4e, + 0x52, 0x5c, 0x22, 0xd4, 0x5b, 0xf3, 0xdc, 0xab, 0x37, 0x69, 0xaf, 0xd9, 0x78, 0xe8, 0x2c, + 0x4f, 0xc4, 0xdb, 0xeb, 0x60, 0xb7, 0x0c, 0xaf, 0x07, 0x2d, 0xc9, 0x2a, 0x8d, 0x53, 0x78, + 0x6d, 0x68, 0xd0, 0xe7, 0x34, 0x40, 0x7c, 0x5c, 0x05, 0x35, 0x3b, 0xae, 0x10, 0x8e, 0x5a, + 0xb0, 0x97, 0x7a, 0xc6, 0xc7, 0x5f, 0xf2, 0x73, 0x1e, 0xfd, 0x57, 0xe3, 0x1e, 0x65, 0x9d, + 0xbc, 0x5c, 0x88, 0x5f, 0x54, 0x28, 0x25, 0x20, 0x9e, 0x5a, 0xdd, 0x05, 0x07, 0xaa, 0x11, + 0xe5, 0xab, 0x52, 0x57, 0xe0, 0x08, 0x9b, 0x3b, 0x55, 0xb4, 0x15, 0x48, 0x6e, 0x1f, 0x4a, + 0x78, 0xae, 0x81, 0x43, 0x9f, 0xf3, 0xc0, 0x48, 0x04, 0x84, 0xb1, 0x04, 0x17, 0xac, 0x6e, + 0x72, 0xee, 0xd5, 0x68, 0x2f, 0xbd, 0xd8, 0xc0, 0xad, 0x7b, 0x38, 0x3f, 0x26, 0xc6, 0x7d, + 0xa6, 0x05, 0xd6, 0x32, 0x82, 0x48, 0x16, 0xce, 0x2f, 0x89, 0x29, 0x8e, 0x99, 0x04, 0xf7, + 0x2a, 0xe3, 0xe0, 0x53, 0x65, 0xff, 0xbb, 0xce, 0x32, 0x8b, 0xef, 0x1f, 0x2d, 0x62, 0x06, + 0x4d, 0xb8, 0x7d, 0xd0, 0x89, 0x79, 0x5e, 0x9b, 0x1c, 0xc9, 0xf4, 0x1a, 0x6b, 0x3b, 0x7c, + 0xcc, 0xa6, 0xf7, 0xad, 0xd2, 0xa0, 0xfd, 0x65, 0x9b, 0x6a, 0xee, 0xa0, 0x4a, 0x7c, 0x47, + 0x49, 0x09, 0x4a, 0x9d, 0xb3, 0x1b, 0x9d, 0x58, 0xee, 0x03, 0x07, 0x87, 0x7f, 0x1c, 0x3c, + 0xe5, 0xb5, 0x2e, 0xc0, 0xa8, 0x22, 0x85, 0xa2, 0x59, 0x21, 0x48, 0xee, 0x95, 0xd1, 0x00, + 0x89, 0x5b, 0x18, 0x2a, 0x02, 0x0c, 0x88, 0x4a, 0x79, 0xbf, 0xd6, 0xdf, 0x0b, 0xb5, 0x21, + 0xa2, 0xd1, 0x89, 0x91, 0xd2, 0x09, 0x39, 0xe1, 0x0d, 0xec, 0x1f, 0x1e, 0x28, 0x86, 0xab, + 0x15, 0x22, 0xfc, 0xad, 0x6b, 0x0e, 0xd8, 0xd8, 0x85, 0x1f, 0xa6, 0x35, 0x03, 0x2c, 0x09, + 0xcf, 0xe2, 0x31, 0xb5, 0x4d, 0x70, 0x2c, 0xa3, 0xd1, 0x18, 0x56, 0x51, 0x7f, 0x70, 0x42, + 0xa7, 0xb4, 0x06, 0xef, 0x81, 0x93, 0xe3, 0x1d, 0xe7, 0x6c, 0xc2, 0x20, 0xe0, 0xe2, 0x78, + 0x29, 0x3f, 0xec, 0xe9, 0x71, 0x07, 0xfe, 0xa0, 0x78, 0x5b, 0x9e, 0x0e, 0x81, 0xa5, 0x7c, + 0xd8, 0x46, 0xbc, 0xb9, 0x36, 0x38, 0xf4, 0x7d, 0xb9, 0x02, 0x20, 0x58, 0x3c, 0xc3, 0xc1, + 0x57, 0x5a, 0xc3, 0x3b, 0xbc, 0xfd, 0x8c, 0xce, 0x59, 0x2d, 0x2e, 0x44, 0x36, 0xab, 0x22, + 0x24, 0x8a, 0x57, 0xb1, 0x9f, 0x52, 0x97, 0x3a, 0x85, 0xdb, 0xc6, 0x1b, 0xab, 0x28, 0x04, + 0xb6, 0xe9, 0x42, 0x82, 0xdf, 0x89, 0x19, 0x98, 0xe4, 0x5d, 0xc2, 0x18, 0x58, 0xfa, 0xa1, + 0x90, 0xcf, 0xb4, 0x58, 0x7e, 0xfa, 0xf6, 0x33, 0xc2, 0xc2, 0x64, 0xaf, 0xff, 0x21, 0x84, + 0x10, 0x24, 0xad, 0xd3, 0x76, 0xcd, 0xb6, 0x2d, 0x26, 0x33, 0xa6, 0x48, 0x62, 0x3c, 0xcf, + 0x6e, 0x07, 0xd5, 0x1b, 0x05, 0x4f, 0x25, 0xe0, 0x74, 0x79, 0xf5, 0xaf, 0xf5, 0x62, 0x79, + 0x17, 0xd8, 0x45, 0xaa, 0x11, 0xd6, 0xb2, 0x5e, 0xba, 0xe8, 0x59, 0xfe, 0xcb, 0x95, 0xe3, + 0xd3, 0xf7, 0x5f, 0x46, 0xa2, 0xdb, 0x06, 0x47, 0x3b, 0xd2, 0x07, 0x46, 0xf1, 0xb4, 0x45, + 0x40, 0xf7, 0x06, 0xd9, 0x59, 0x63, 0x93, 0xe3, 0x9b, 0x73, 0x09, 0xf7, 0x9a, 0x15, 0x47, + 0x1c, 0xcd, 0x39, 0x05, 0xf4, 0x46, 0x46, 0x7d, 0xca, 0x19, 0x41, 0xeb, 0xfd, 0xd1, 0x61, + 0xc7, 0x5f, 0xa1, 0x84, 0x19, 0x66, 0xdf, 0xf7, 0x7b, 0x2f, 0x2d, 0xcd, 0x8d, 0x7c, 0x31, + 0x47, 0x4f, 0x6b, 0x1c, 0x62, 0x75, 0x30, 0xcd, 0x11, 0xcc, 0x00, 0x23, 0x33, 0xc0, 0xb1, + 0xfd, 0x06, 0xc8, 0x8a, 0xed, 0x07, 0x00, 0x74, 0xc2, 0xf0, 0x87, 0x08, 0x0a, 0x3e, 0x84, + 0x4b, 0x8a, 0x32, 0xf3, 0x5b, 0xcf, 0x7a, 0xee, 0x15, 0xbe, 0x92, 0xe1, 0xad, 0x6e, 0x94, + 0xed, 0x3c, 0x1b, 0xd9, 0x75, 0x40, 0x9a, 0xf5, 0x26, 0x36, 0x47, 0x46, 0x35, 0x0b, 0x5c, + 0x5f, 0xf4, 0x14, 0xe2, 0x7d, 0xb5, 0x5d, 0xb9, 0x58, 0xcf, 0x92, 0x35, 0xcb, 0xc2, 0x7c, + 0x9a, 0x75, 0x52, 0x98, 0x8d, 0xfd, 0xd7, 0xb0, 0x3b, 0xd9, 0x0b, 0x07, 0xdb, 0xf3, 0xff, + 0xee, 0xeb, 0x7a, 0x57, 0x10, 0xcb, 0x9d, 0x61, 0x9d, 0xde, 0xe5, 0x47, 0xc2, 0x98, 0xa3, + 0x80, 0xc9, 0x6b, 0x05, 0xc7, 0x30, 0xb0, 0xde, 0x36, 0xc1, 0xe1, 0x72, 0x35, 0x61, 0x8d, + 0x52, 0xed, 0xa4, 0x64, 0x9b, 0xac, 0xcc, 0xee, 0xd7, 0x69, 0x6d, 0x72, 0x96, 0x2f, 0x6b, + 0x80, 0x15, 0xd6, 0x5c, 0xc4, 0x1f, 0xce, 0xbe, 0x57, 0xa9, 0x9f, 0xe2, 0x6d, 0xca, 0x14, + 0x16, 0x50, 0x55, 0x96, 0xda, 0x41, 0xa2, 0xd2, 0xbb, 0xd1, 0x99, 0x5e, 0x7f, 0xde, 0xee, + 0x17, 0xb2, 0x64, 0x15, 0x8d, 0xf3, 0x54, 0xc8, 0xbe, 0x4c, 0x96, 0x84, 0x6e, 0x00, 0xec, + 0xe9, 0x09, 0x2e, 0xfd, 0x4d, 0x31, 0xdf, 0x72, 0xdb, 0x82, 0x20, 0xcf, 0xb5, 0x3b, 0x0c, + 0xb3, 0xd1, 0x89, 0x26, 0x32, 0x74, 0xae, 0x17, 0xce, 0x0a, 0x45, 0xea, 0x5d, 0xa1, 0x5b, + 0xd2, 0xd8, 0xdf, 0x3a, 0x26, 0xdc, 0x21, 0x1e, 0x75, 0x88, 0x1b, 0x96, 0x70, 0x0d, 0xbe, + 0x91, 0x80, 0x58, 0xb1, 0xd5, 0xf4, 0x7e, 0x82, 0x47, 0x6c, 0xfa, 0x3b, 0x04, 0x14, 0x9d, + 0x77, 0x0f, 0x2b, 0x0e, 0x61, 0x24, 0xd0, 0xab, 0xb6, 0x31, 0xce, 0x6a, 0xa8, 0x40, 0xd5, + 0x80, 0x1e, 0xe7, 0x01, 0xbc, 0x4c, 0x4a, 0x7d, 0x18, 0x96, 0xdd, 0x37, 0x12, 0x6c, 0x89, + 0x66, 0x9c, 0x55, 0xb1, 0x3a, 0x87, 0xfc, 0x0c, 0x4e, 0x8d, 0xd5, 0xee, 0x32, 0x71, 0xa2, + 0xf8, 0x21, 0x7a, 0x6b, 0x28, 0x97, 0x53, 0xa6, 0xbe, 0x37, 0x43, 0x8f, 0x07, 0x8b, 0xf6, + 0x59, 0x26, 0x55, 0xfb, 0x55, 0x40, 0x7e, 0x95, 0x09, 0x07, 0x9a, 0x16, 0xf4, 0x18, 0xac, + 0xa0, 0x02, 0x82, 0x6d, 0xa7, 0xd7, 0x72, 0xc7, 0xb3, 0x70, 0xc0, 0x2d, 0x96, 0x48, 0x42, + 0xe3, 0x71, 0x0a, 0x26, 0xa8, 0x1a, 0x70, 0xcd, 0x08, 0xba, 0x0f, 0x00, 0xec, 0x9a, 0x5a, + 0xdd, 0x69, 0x12, 0xc1, 0x56, 0x20, 0xaa, 0x1b, 0x97, 0x01, 0x5e, 0x7e, 0x43, 0xe3, 0x09, + 0x3c, 0xf7, 0x8d, 0x21, 0xac, 0x65, 0x6c, 0x1c, 0x2b, 0xa1, 0xb0, 0x8a, 0x35, 0x28, 0x4f, + 0x29, 0xc4, 0xbc, 0x6c, 0xad, 0x0f, 0x0b, 0x61, 0x14, 0xb3, 0x09, 0xa1, 0xd3, 0x6c, 0x21, + 0x19, 0xf9, 0xa7, 0xc4, 0x08, 0x9e, 0x2d, 0x36, 0x07, 0x0d, 0xb1, 0x44, 0x6b, 0x43, 0x50, + 0x20, 0x00, 0x49, 0xa3, 0x08, 0xba, 0x00, 0xf4, 0x80, 0xb7, 0xb7, 0x6a, 0x12, 0xc1, 0x85, + 0xe8, 0xdd, 0x40, 0x9e, 0x3f, 0x60, 0x83, 0xca, 0x21, 0x4c, 0xbe, 0x8e, 0xb5, 0x92, 0x54, + 0xd3, 0x9e, 0x23, 0xe8, 0x27, 0xda, 0x80, 0x3d, 0x32, 0x1c, 0x4f, 0xae, 0x26, 0xff, 0xf2, + 0xae, 0x71, 0x91, 0x79, 0x29, 0x2d, 0x31, 0xf4, 0x1a, 0x6b, 0x6d, 0x80, 0x62, 0x90, 0xaf, + 0xa8, 0x67, 0xae, 0x06, 0x15, 0x8a, 0xf4, 0xfb, 0xd6, 0x54, 0xd8, 0x2e, 0x6f, 0xa4, 0xe5, + 0x45, 0x01, 0xb0, 0x3a, 0x02, 0x4f, 0x3a, 0x71, 0x3c, 0x8a, 0x85, 0x3b, 0xef, 0x95, 0x99, + 0x94, 0x7a, 0x2d, 0x3f, 0x14, 0x39, 0x0d, 0xf2, 0xd2, 0x9a, 0x39, 0xe0, 0x3d, 0xef, 0xb7, + 0x4b, 0x67, 0x15, 0xf4, 0xa0, 0x6e, 0x16, 0x5c, 0x93, 0x32, 0x55, 0x56, 0x2b, 0x71, 0x57, + 0x88, 0x80, 0xd4, 0x20, 0xf9, 0x3d, 0xc0, 0x74, 0x03, 0x06, 0xfb, 0x66, 0xa6, 0x1d, 0xef, + 0x47, 0x51, 0xa6, 0xa5, 0x64, 0xce, 0xb9, 0x51, 0xf1, 0xe4, 0xf3, 0x01, 0xc7, 0x18, 0x01, + 0xf4, 0xee, 0x7e, 0x95, 0x12, 0xa4, 0x40, 0x54, 0xde, 0xe5, 0x1c, 0x14, 0x1b, 0x5e, 0x19, + 0x1a, 0x1a, 0x9d, 0x55, 0x49, 0x43, 0x1c, 0x0e, 0x23, 0x40, 0x88, 0xdf, 0x11, 0xf7, 0x61, + 0x6f, 0x56, 0xc5, 0x2a, 0x90, 0x44, 0x82, 0xa9, 0xf6, 0xb8, 0x83, 0xc1, 0x1a, 0x46, 0x9a, + 0x1e, 0xd6, 0x5f, 0x55, 0x3c, 0x61, 0xab, 0x58, 0x51, 0x7a, 0x2b, 0x6c, 0x39, 0x51, 0x88, + 0x98, 0x66, 0x03, 0x22, 0x13, 0x2f, 0x01, 0x1a, 0x05, 0x76, 0xb1, 0x8a, 0xfd, 0x3d, 0x17, + 0x83, 0x1a, 0x60, 0xd8, 0x56, 0x90, 0x86, 0x42, 0x0a, 0x57, 0x1e, 0x80, 0x26, 0x57, 0x93, + 0xe2, 0x15, 0x0d, 0x56, 0x59, 0x47, 0xcd, 0x1f, 0xeb, 0xc2, 0x9a, 0x43, 0xe5, 0xb3, 0x4d, + 0x3d, 0x29, 0x4e, 0x1c, 0xb5, 0x33, 0xe3, 0xc5, 0x4d, 0x54, 0x59, 0x0e, 0x6a, 0x72, 0x45, + 0x68, 0x8d, 0x1a, 0x35, 0x3a, 0x79, 0x18, 0x9b, 0xa2, 0x9e, 0xfc, 0x07, 0x5e, 0xee, 0x55, + 0x78, 0xc3, 0xd4, 0x03, 0xd5, 0x85, 0x85, 0xb9, 0xd2, 0x8a, 0xaf, 0xb1, 0xbb, 0xbe, 0xbb, + 0xed, 0x37, 0x8c, 0x22, 0xff, 0x18, 0xd5, 0x88, 0xc0, 0x1f, 0x0e, 0x19, 0xab, 0xe3, 0xd4, + 0x86, 0x37, 0xf7, 0x15, 0x95, 0x33, 0x93, 0x07, 0xec, 0xd2, 0xf4, 0x5c, 0x86, 0x19, 0x40, + 0xa0, 0xed, 0xde, 0x8c, 0x52, 0x75, 0x6c, 0x78, 0xca, 0x26, 0x1a, 0x87, 0xc4, 0xa8, 0x46, + 0xe7, 0x2e, 0xfd, 0xef, 0xdb, 0x21, 0x19, 0x30, 0x3f, 0xdd, 0x31, 0xd3, 0x8f, 0xa2, 0xde, + 0x10, 0x57, 0x6b, 0xa5, 0xbe, 0x8e, 0x03, 0x4d, 0xa4, 0x18, 0x12, 0x0c, 0xb5, 0xb8, 0x22, + 0xe1, 0x7a, 0xeb, 0x7d, 0x60, 0xae, 0xc8, 0x4e, 0x7d, 0x39, 0x24, 0xe0, 0x7a, 0xb7, 0xd9, + 0x04, 0x13, 0x30, 0xb4, 0xf1, 0x61, 0x33, 0x61, 0x38, 0x17, 0x38, 0x8e, 0x24, 0x1b, 0x87, + 0xef, 0x2f, 0x15, 0xb6, 0xd5, 0x14, 0xc3, 0x6b, 0xbb, 0xa8, 0x12, 0x26, 0x98, 0x26, 0xbe, + 0x51, 0x9c, 0x6f, 0x15, 0xd1, 0x0e, 0xdc, 0x1f, 0x77, 0x83, 0x00, 0x0a, 0xdc, 0x6c, 0x3b, + 0x9b, 0x73, 0xf5, 0x00, 0xd0, 0xb7, 0xb9, 0x4a, 0xc9, 0x80, 0xf7, 0xce, 0xb0, 0x18, 0x39, + 0xa5, 0xe6, 0xba, 0x66, 0xbb, 0x82, 0x3f, 0x84, 0xdd, 0x59, 0xf7, 0x8f, 0x74, 0x1f, 0xb3, + 0xe6, 0x21, 0x3c, 0xdf, 0xb1, 0x48, 0x9a, 0xf6, 0x00, 0xd6, 0x29, 0x63, 0x0d, 0x6c, 0xe6, + 0x2e, 0xca, 0x99, 0x57, 0x81, 0x6c, 0x97, 0xf1, 0xd2, 0x24, 0xae, 0x7d, 0x46, 0x90, 0x87, + 0x86, 0xb5, 0x39, 0xd3, 0x94, 0x71, 0xc6, 0x2a, 0x2f, 0xf0, 0x72, 0x7b, 0xed, 0x8d, 0x13, + 0xb6, 0x1b, 0x20, 0xdf, 0x34, 0x1e, 0x8b, 0xc5, 0x35, 0xa4, 0xfe, 0xdf, 0x4c, 0x96, 0x59, + 0x9c, 0x64, 0x55, 0xfb, 0x1b, 0x91, 0x2e, 0xb9, 0x41, 0xe8, 0x6a, 0xe2, 0x1f, 0x2d, 0x60, + 0xcf, 0x95, 0xa0, 0xae, 0x10, 0x7e, 0x6c, 0x8c, 0x0c, 0xe6, 0x1e, 0x39, 0xa7, 0xd6, 0x57, + 0x97, 0xb6, 0x19, 0x9e, 0x04, 0x0f, 0x1b, 0xde, 0xa8, 0x8b, 0x61, 0x5b, 0xd7, 0x92, 0xd7, + 0x32, 0xf4, 0xbd, 0x7f, 0x6e, 0x4d, 0x15, 0x3d, 0x72, 0x3b, 0x58, 0x52, 0x1c, 0x48, 0xa4, + 0x79, 0xea, 0x38, 0xfe, 0x33, 0x68, 0x9e, 0x29, 0xd9, 0xc6, 0x75, 0xa8, 0xd8, 0x08, 0x53, + 0x58, 0xe1, 0xf4, 0xe2, 0x6b, 0x6a, 0xcc, 0xc4, 0x15, 0xd8, 0x8c, 0x76, 0xcf, 0x1f, 0xef, + 0x05, 0x75, 0xb2, 0x04, 0x57, 0x92, 0xf8, 0x66, 0x44, 0x09, 0x2f, 0xdb, 0xa9, 0x9e, 0xe2, + 0x5e, 0xb3, 0x13, 0x68, 0x1c, 0x73, 0x2d, 0x9c, 0x54, 0xb4, 0x0d, 0x3b, 0xd1, 0x36, 0xc8, + 0xec, 0x53, 0xb0, 0xf5, 0xf1, 0xb2, 0x35, 0x04, 0x03, 0x7e, 0x0f, 0x36, 0xa1, 0x8a, 0xd8, + 0x0e, 0xb4, 0xfb, 0x08, 0x80, 0xde, 0x68, 0x15, 0x0f, 0xde, 0x5b, 0x4e, 0x14, 0x90, 0x89, + 0xdb, 0x88, 0xb5, 0x38, 0xa0, 0xee, 0x7b, 0xcd, 0xcf, 0xae, 0x53, 0x11, 0xdb, 0x63, 0x07, + 0x2f, 0xc2, 0xed, 0x94, 0x72, 0xf4, 0x4f, 0x73, 0xe6, 0x40, 0xdd, 0xfa, 0xef, 0xed, 0x1c, + 0x62, 0x1d, 0x3a, 0x0f, 0x84, 0x03, 0xb2, 0x6d, 0xa9, 0x29, 0xb8, 0x0e, 0x5b, 0x38, 0x3f, + 0x51, 0xdd, 0x7e, 0x4e, 0xf6, 0xc0, 0x4d, 0x42, 0x11, 0xda, 0x39, 0xa6, 0xb6, 0x23, 0x2f, + 0xab, 0x18, 0x7b, 0x37, 0x99, 0x70, 0x91, 0x5f, 0x56, 0x6a, 0x43, 0x65, 0xf9, 0x1f, 0x6e, + 0x5a, 0xe9, 0x78, 0x1a, 0x47, 0x90, 0x2a, 0xde, 0x4e, 0xec, 0xef, 0x52, 0x29, 0x77, 0xf9, + 0xcb, 0xe8, 0x93, 0x3d, 0xfd, 0x52, 0x20, 0xec, 0x3a, 0xfa, 0x8b, 0x59, 0x27, 0x6b, 0x96, + 0x12, 0xcc, 0xfc, 0xbc, 0x2c, 0x3a, 0xeb, 0x3c, 0x98, 0xaf, 0x42, 0xe2, 0xb2, 0x4d, 0xae, + 0x01, 0xed, 0x94, 0x70, 0x6e, 0x25, 0xd7, 0x6b, 0x33, 0x44, 0xb1, 0x24, 0xa5, 0x0d, 0xfa, + 0x4b, 0x94, 0xb1, 0xcf, 0xd9, 0xf3, 0x35, 0xc3, 0x1b, 0x05, 0xcb, 0x15, 0xcb, 0xdd, 0x40, + 0xf9, 0xf0, 0x73, 0x13, 0xef, 0x79, 0x2e, 0x22, 0x18, 0x2c, 0x96, 0x41, 0x99, 0x1e, 0x9e, + 0xc3, 0x5d, 0x2e, 0x2e, 0x80, 0xc3, 0xcb, 0x8a, 0xe1, 0x12, 0xa2, 0xef, 0xe3, 0x29, 0xdd, + 0x77, 0xe8, 0x43, 0xca, 0xa4, 0xcd, 0xb1, 0xc3, 0xb4, 0x39, 0xf8, 0x12, 0x8d, 0x22, 0x14, + 0xd3, 0xbe, 0xcb, 0xe6, 0x02, 0xfc, 0x61, 0x6d, 0x89, 0x22, 0xc4, 0xdc, 0xe4, 0xac, 0x92, + 0x05, 0x45, 0x8c, 0x1e, 0x5b, 0x4d, 0x7c, 0x08, 0x28, 0x26, 0x15, 0x37, 0x46, 0x24, 0x3c, + 0x04, 0xb9, 0x5a, 0x9b, 0x48, 0xf8, 0xc6, 0x37, 0xa6, 0x22, 0x97, 0x91, 0xe1, 0x37, 0x89, + 0xe9, 0xf4, 0x24, 0xc1, 0x1e, 0x40, 0x1a, 0x5a, 0x68, 0x4c, 0xed, 0x9e, 0xe7, 0x27, 0x2a, + 0xef, 0x7c, 0x63, 0xa6, 0xf7, 0x9d, 0x86, 0x4f, 0x25, 0x23, 0x4a, 0x9c, 0xd4, 0x5f, 0xee, + 0xab, 0xe5, 0xa2, 0x34, 0x5d, 0xb0, 0xc7, 0xd8, 0xe8, 0xf5, 0x42, 0x0e, 0x81, 0xa6, 0x5a, + 0x2c, 0xf6, 0xc1, 0x85, 0x7e, 0xfa, 0xc8, 0x7f, 0x88, 0x9e, 0x6a, 0x40, 0xcd, 0x78, 0x33, + 0xe1, 0x3b, 0xc4, 0x7e, 0x27, 0x22, 0xb3, 0xff, 0x26, 0x08, 0x5a, 0x83, 0x2e, 0x3a, 0xb7, + 0x95, 0x1e, 0x14, 0x4a, 0x30, 0x12, 0xe9, 0x35, 0x35, 0x32, 0x61, 0xdb, 0x51, 0x2a, 0x76, + 0x1c, 0x78, 0x3a, 0xb7, 0xd9, 0xd5, 0x4d, 0x88, 0x0a, 0x14, 0x12, 0xb1, 0xa9, 0xa5, 0xb4, + 0xe5, 0x21, 0x38, 0x6d, 0x08, 0x61, 0x07, 0x70, 0x11, 0x90, 0xa4, 0x25, 0x5e, 0x4d, 0xf3, + 0x95, 0x1d, 0x3d, 0x8c, 0xce, 0x87, 0x4a, 0xb8, 0x79, 0x2b, 0xb0, 0xaa, 0xde, 0x5a, 0xac, + 0xe3, 0xf7, 0x26, 0x24, 0xb5, 0x95, 0x06, 0x64, 0x9a, 0x6c, 0xf1, 0x54, 0x92, 0x41, 0x21, + 0x9e, 0xfc, 0x79, 0xab, 0xbe, 0xc7, 0x87, 0xe5, 0x1f, 0xe2, 0xa6, 0xc5, 0xc1, 0x4b, 0x95, + 0x7a, 0x1e, 0x80, 0x1f, 0xb9, 0xce, 0xa2, 0xed, 0x31, 0xfe, 0x69, 0x40, 0x77, 0x98, 0xde, + 0x05, 0x7a, 0xff, 0x09, 0x93, 0xbc, 0x62, 0x6b, 0x03, 0x93, 0x43, 0x4e, 0xe0, 0x43, 0x0e, + 0x97, 0xe7, 0x31, 0x8b, 0x7d, 0x5f, 0x4c, 0xc8, 0x74, 0x1f, 0x21, 0xd1, 0xb0, 0x44, 0xbe, + 0xaf, 0x5f, 0x4f, 0x18, 0xdc, 0xca, 0xaf, 0x34, 0x4b, 0xe1, 0xa9, 0xf4, 0x61, 0xc9, 0x88, + 0xf5, 0x96, 0x56, 0x1a, 0xc1, 0xd5, 0x0d, 0x5c, 0xde, 0x25, 0xcb, 0x57, 0x1f, 0x34, 0x35, + 0x52, 0xa5, 0x3c, 0x32, 0x85, 0x0b, 0xe3, 0x96, 0x74, 0x46, 0x3d, 0x24, 0xd2, 0x50, 0x3d, + 0x6c, 0x23, 0x57, 0xb8, 0x6f, 0xf0, 0xda, 0x72, 0x6f, 0x1c, 0xb6, 0x2c, 0x39, 0x7c, 0x10, + 0xd6, 0x1f, 0xf1, 0x82, 0x90, 0x83, 0x69, 0xbe, 0x72, 0xd9, 0xd8, 0x43, 0xd4, 0x56, 0x04, + 0xe7, 0x2d, 0xa9, 0x08, 0xd0, 0xf6, 0x8e, 0xeb, 0x20, 0x02, 0x2b, 0x04, 0x9a, 0x67, 0x00, + 0x70, 0x28, 0xdf, 0x6d, 0x72, 0x44, 0x10, 0xd9, 0x6e, 0x38, 0xf7, 0x53, 0x99, 0xe9, 0xee, + 0xa7, 0xa0, 0xaf, 0x2f, 0x21, 0xb9, 0x9c, 0x8e, 0x1e, 0x1d, 0x45, 0xc3, 0xec, 0x18, 0xa6, + 0x27, 0x71, 0xc7, 0x34, 0x42, 0x6a, 0xa1, 0xd9, 0x79, 0x34, 0x28, 0x38, 0x25, 0x9c, 0x2f, + 0x1f, 0xa6, 0xcc, 0x5e, 0x8b, 0x07, 0xb2, 0x89, 0x59, 0x70, 0xcc, 0x36, 0xce, 0x51, 0xac, + 0xad, 0x66, 0xf0, 0xe3, 0x6d, 0x22, 0x67, 0x47, 0x54, 0x89, 0x18, 0xa3, 0x6e, 0x7b, 0x83, + 0x54, 0x67, 0x7c, 0x05, 0xda, 0xff, 0x9f, 0x2a, 0x98, 0x56, 0x20, 0x6b, 0xd3, 0x67, 0xa1, + 0xea, 0x35, 0x9d, 0x28, 0x46, 0x15, 0xb6, 0x0b, 0x85, 0xbe, 0x64, 0x9a, 0x7d, 0x80, 0x05, + 0x81, 0x3c, 0x7b, 0xac, 0xb7, 0x83, 0x1f, 0x3b, 0x09, 0xf3, 0x8f, 0xa4, 0x30, 0x1f, 0xfb, + 0xbf, 0xc5, 0xc7, 0xab, 0x22, 0x26, 0x40, 0xdb, 0xc8, 0x38, 0x2e, 0x95, 0xca, 0x38, 0x1c, + 0x38, 0xd2, 0xd3, 0x0c, 0x04, 0xf0, 0xdc, 0x91, 0x80, 0x22, 0x78, 0xe2, 0xc8, 0x6b, 0xb0, + 0xf0, 0x49, 0x08, 0x16, 0x9a, 0x18, 0x3f, 0xb7, 0xdc, 0x75, 0xce, 0x07, 0x9a, 0xc2, 0x40, + 0x9f, 0x03, 0xf4, 0xc9, 0xf2, 0xe8, 0x45, 0xa7, 0x2c, 0x3a, 0xf7, 0xe9, 0xca, 0x63, 0xf5, + 0x2c, 0xb7, 0x73, 0xfa, 0xcc, 0xfc, 0x30, 0x6b, 0x9d, 0x5c, 0xa3, 0xce, 0xd3, 0x25, 0x5f, + 0xb4, 0x35, 0xfe, 0x86, 0x4f, 0xa0, 0x13, 0xda, 0x76, 0x1a, 0xa1, 0x5e, 0x81, 0x0d, 0xc0, + 0x90, 0xbe, 0xc7, 0x59, 0xbc, 0x19, 0xba, 0x9c, 0xec, 0xa8, 0x6b, 0x1d, 0xc3, 0x0d, 0x49, + 0x31, 0x96, 0x8d, 0x41, 0x24, 0x10, 0xd7, 0x72, 0x15, 0x9a, 0xa5, 0xb8, 0x3e, 0x04, 0x06, + 0x95, 0x3b, 0xa8, 0xca, 0x2d, 0x58, 0xb8, 0x93, 0xca, 0xf4, 0xa0, 0x14, 0x00, 0x97, 0x8f, + 0x40, 0xe9, 0x15, 0xd6, 0x81, 0x41, 0x6f, 0x59, 0x40, 0x2a, 0xa5, 0x69, 0x21, 0xf6, 0xe8, + 0x29, 0x8d, 0x56, 0x24, 0xb4, 0x6e, 0x65, 0x85, 0x24, 0x95, 0x60, 0x31, 0x80, 0x4e, 0xdb, + 0x7c, 0xd3, 0xe8, 0x6d, 0x0a, 0x84, 0xe2, 0x29, 0x8c, 0x54, 0xed, 0xff, 0xce, 0x36, 0x57, + 0x8d, 0x7f, 0x44, 0x99, 0xa7, 0x5b, 0x4e, 0xa6, 0xd5, 0xae, 0x6b, 0x57, 0x23, 0x99, 0x5e, + 0x86, 0x9d, 0x79, 0x5f, 0xc5, 0x82, 0x14, 0x9a, 0x27, 0xdc, 0x5a, 0xc3, 0x3c, 0x8e, 0x75, + 0x95, 0xa9, 0x9e, 0x32, 0x35, 0x9b, 0x5d, 0x96, 0xbe, 0xff, 0xa4, 0x1a, 0x22, 0x48, 0x1a, + 0x7e, 0xde, 0x41, 0xc2, 0x39, 0xee, 0xf6, 0x3e, 0x2d, 0xcc, 0xb6, 0x1f, 0xcc, 0xb7, 0x1a, + 0x97, 0x59, 0x1d, 0x5f, 0xab, 0x53, 0xef, 0x94, 0x4d, 0xda, 0xc6, 0x32, 0x5d, 0x12, 0x47, + 0x9c, 0x36, 0x18, 0x42, 0x23, 0xcd, 0xfb, 0xcf, 0x96, 0xc8, 0x16, 0xf1, 0xb9, 0xcd, 0x1c, + 0xd1, 0x14, 0xb8, 0x4c, 0x87, 0x9f, 0x26, 0x12, 0x7b, 0xd9, 0x5e, 0x8a, 0x45, 0x58, 0x75, + 0x96, 0xe1, 0x15, 0x4f, 0xb1, 0x5b, 0x06, 0x30, 0x50, 0x7f, 0x5a, 0x5e, 0x0a, 0x96, 0x6e, + 0xff, 0x2a, 0x04, 0x96, 0x20, 0xe6, 0xde, 0x59, 0x10, 0x89, 0xfd, 0x00, 0x52, 0x56, 0x16, + 0xd7, 0xd4, 0x1f, 0xcb, 0x86, 0x60, 0x2c, 0x64, 0xb5, 0x81, 0x00, 0xab, 0xa6, 0xfb, 0x23, + 0x00, 0xc3, 0x86, 0x07, 0xd2, 0x19, 0xf6, 0xf1, 0x97, 0x6a, 0xc7, 0xc5, 0x02, 0x69, 0x18, + 0x3e, 0x3b, 0x58, 0xf4, 0xeb, 0x20, 0x2e, 0x8f, 0xda, 0xbf, 0x73, 0xd7, 0xe1, 0x9a, 0xb5, + 0x40, 0x0e, 0xb8, 0xf4, 0x82, 0x77, 0x1c, 0x8d, 0x8a, 0xd0, 0x60, 0xce, 0x38, 0xef, 0x8a, + 0x70, 0x00, 0xc0, 0x4c, 0x92, 0x56, 0x63, 0x34, 0x8a, 0xe7, 0x12, 0x1d, 0x6e, 0x69, 0xe5, + 0x6e, 0x46, 0xb4, 0x33, 0x62, 0x3a, 0xa6, 0x33, 0x36, 0xae, 0xa5, 0x52, 0x2e, 0xf3, 0x86, + 0xc6, 0xb2, 0xa3, 0x54, 0x64, 0xe0, 0xad, 0x87, 0xed, 0xf3, 0xa2, 0xdd, 0x59, 0xec, 0xf8, + 0xdb, 0x4b, 0x05, 0xd4, 0xf6, 0x25, 0x77, 0x69, 0x2a, 0xa6, 0x87, 0x26, 0x94, 0x82, 0xa1, + 0xff, 0xca, 0x8e, 0xfc, 0x5e, 0xca, 0x97, 0x98, 0xad, 0xa5, 0xcb, 0x7b, 0xb1, 0xcc, 0x9f, + 0xc9, 0xde, 0xf1, 0x3d, 0xa0, 0xd8, 0x0a, 0x1f, 0xfd, 0x8f, 0x1f, 0xfc, 0x0a, 0xdb, 0x9f, + 0xbd, 0xe4, 0xbb, 0x20, 0x8b, 0x07, 0x94, 0x0a, 0x90, 0x30, 0x76, 0xd0, 0xf5, 0x12, 0x24, + 0x16, 0x4c, 0xe0, 0x50, 0xc0, 0xd6, 0x7d, 0xb1, 0x77, 0x03, 0xbb, 0xb3, 0x8c, 0xfb, 0x5d, + 0x67, 0xba, 0x22, 0x11, 0x05, 0x9c, 0xe1, 0x2f, 0x3f, 0x3d, 0x4f, 0xf7, 0xb2, 0xbc, 0xdb, + 0xa0, 0xc9, 0x50, 0x83, 0x34, 0xd6, 0xa1, 0xa4, 0x5c, 0x88, 0x9e, 0x15, 0xc0, 0x2a, 0x12, + 0x8b, 0x6a, 0x2a, 0x31, 0xc6, 0xaa, 0xf2, 0x30, 0x3f, 0xa7, 0x26, 0xed, 0xb3, 0x93, 0x1b, + 0x03, 0xa8, 0xb0, 0xd7, 0x76, 0x8a, 0x05, 0x5a, 0x74, 0xe2, 0x80, 0xdd, 0x81, 0x1f, 0x07, + 0xe3, 0x70, 0x2b, 0x90, 0x3c, 0x3c, 0x54, 0xc7, 0x16, 0x36, 0x03, 0x92, 0x6c, 0x5c, 0x7b, + 0x02, 0x6e, 0x37, 0x6d, 0x6b, 0x2c, 0xfa, 0x74, 0x72, 0x5b, 0x87, 0x6c, 0x39, 0x81, 0x8c, + 0x09, 0xe3, 0x6a, 0xc4, 0x5a, 0xcb, 0x67, 0x7a, 0x89, 0x71, 0xb0, 0xf1, 0xc1, 0x0f, 0xbf, + 0x34, 0x98, 0x97, 0xae, 0xdf, 0x9f, 0xdc, 0xd2, 0x95, 0x26, 0xc5, 0x02, 0x6c, 0x6f, 0x08, + 0x28, 0xbc, 0x20, 0x1c, 0x49, 0x7c, 0x48, 0x19, 0xe6, 0x62, 0xbc, 0x2c, 0x75, 0x6e, 0xf6, + 0xae, 0x28, 0x81, 0x16, 0xe7, 0x85, 0x67, 0x98, 0x0c, 0x00, 0x55, 0x6c, 0x7d, 0xa5, 0xc0, + 0x42, 0xdc, 0x00, 0x9e, 0x3d, 0xcb, 0x50, 0x26, 0xb0, 0xf2, 0x90, 0x38, 0x56, 0x05, 0x12, + 0xf7, 0x5a, 0xf1, 0xc2, 0x37, 0xe2, 0x81, 0xb7, 0x58, 0xbf, 0x0a, 0xc2, 0x8c, 0xb4, 0x6a, + 0xc7, 0xf2, 0x2c, 0xf0, 0x95, 0x85, 0x01, 0x70, 0xdc, 0x2e, 0xf2, 0x41, 0x62, 0x66, 0x11, + 0x63, 0xee, 0x30, 0x80, 0xe4, 0x4c, 0x9d, 0x8b, 0xaf, 0xf9, 0x04, 0x9d, 0x15, 0xa4, 0xde, + 0xb5, 0x96, 0x19, 0x12, 0x33, 0x41, 0xfa, 0x8a, 0x3b, 0xf3, 0x97, 0x7a, 0xcd, 0x61, 0x73, + 0x9d, 0x45, 0xe8, 0x99, 0x18, 0x06, 0x4d, 0x79, 0xa9, 0x4b, 0x97, 0x27, 0xf3, 0x06, 0xe4, + 0x32, 0x3c, 0x47, 0x63, 0xfe, 0xb5, 0xfc, 0xd0, 0x8e, 0x10, 0x0d, 0x7f, 0x8f, 0x7b, 0x16, + 0xa8, 0x56, 0x35, 0x3d, 0xc0, 0x61, 0x5a, 0x0d, 0x68, 0x03, 0x21, 0x1b, 0xcc, 0xad, 0x6b, + 0xf4, 0xef, 0x54, 0x2a, 0xe0, 0x42, 0xd1, 0xb5, 0x49, 0x67, 0x11, 0x94, 0x29, 0xfc, 0xa2, + 0x1d, 0x9b, 0x13, 0x36, 0x54, 0xb2, 0x4b, 0xff, 0xfa, 0x93, 0xab, 0x8b, 0x9b, 0xcb, 0x63, + 0xfb, 0x34, 0x1d, 0xd8, 0xe6, 0xc0, 0xaa, 0x63, 0xb8, 0xbf, 0x67, 0xe8, 0x9f, 0x0b, 0x3f, + 0x48, 0xfd, 0xeb, 0xd1, 0x00, 0x6d, 0x41, 0xb7, 0xae, 0x8e, 0xde, 0xbc, 0x08, 0x19, 0x9d, + 0x8f, 0x17, 0x5c, 0xd0, 0x5c, 0x09, 0x4b, 0x86, 0x36, 0xfa, 0xc7, 0xe6, 0x2b, 0x87, 0x9d, + 0x91, 0x19, 0xfc, 0xcc, 0xc7, 0x48, 0x4f, 0xd0, 0xb0, 0x0a, 0x73, 0xfc, 0xd3, 0x35, 0x04, + 0x56, 0xdf, 0x57, 0xe8, 0x4d, 0x37, 0xea, 0xa6, 0x08, 0x1e, 0x58, 0x46, 0xb1, 0xc1, 0x64, + 0xcb, 0x24, 0x94, 0x13, 0xfc, 0xc2, 0xa0, 0xda, 0x4c, 0x28, 0x19, 0x79, 0xe2, 0x3a, 0xe1, + 0x13, 0x78, 0x39, 0xa6, 0x19, 0xb7, 0x83, 0x55, 0xef, 0x3d, 0x6f, 0x13, 0x0b, 0xa0, 0x9d, + 0xe8, 0x55, 0x6d, 0x2d, 0xfb, 0x2d, 0x52, 0xb3, 0xed, 0x6e, 0xa6, 0xac, 0x55, 0x86, 0xd9, + 0x98, 0x4c, 0x19, 0x68, 0x80, 0x03, 0xc6, 0xaa, 0x75, 0x87, 0x38, 0x1a, 0x2f, 0xfb, 0xa5, + 0x89, 0xbf, 0x95, 0x4f, 0x07, 0x44, 0xcb, 0x02, 0xf9, 0xe4, 0x0a, 0x25, 0x4b, 0x3e, 0x4a, + 0xe4, 0x75, 0xd3, 0x35, 0xc4, 0x52, 0x64, 0x69, 0xc6, 0xdd, 0xd5, 0xef, 0x15, 0xf6, 0x84, + 0x77, 0xb7, 0x99, 0x4e, 0x7e, 0x7e, 0x4a, 0x33, 0xe3, 0x3c, 0xb0, 0x54, 0x69, 0x82, 0x5a, + 0xb8, 0x7d, 0x3f, 0xf5, 0xe7, 0x7c, 0x49, 0x44, 0x82, 0xfb, 0x4e, 0x8c, 0x67, 0xdc, 0x82, + 0x3d, 0x1a, 0x79, 0x47, 0x8b, 0x3a, 0x92, 0x1f, 0xc4, 0x83, 0x05, 0x1f, 0x00, 0x9a, 0x5e, + 0x44, 0x89, 0xdd, 0x1a, 0x8a, 0x22, 0x26, 0xad, 0x30, 0x9e, 0xa7, 0xa4, 0x52, 0xa2, 0xf1, + 0xc5, 0x99, 0x27, 0x3e, 0x60, 0x04, 0x5c, 0x56, 0x9d, 0x99, 0x3f, 0x40, 0x0e, 0x09, 0x33, + 0x1d, 0x32, 0xd0, 0x91, 0x98, 0xb4, 0xc1, 0x88, 0xd4, 0x2e, 0x57, 0x86, 0xad, 0xb9, 0x10, + 0x76, 0xcf, 0xf9, 0xb9, 0xd0, 0xfe, 0x3e, 0x25, 0x7b, 0xb0, 0x05, 0xc8, 0x6c, 0xc8, 0x5f, + 0x01, 0x76, 0xb6, 0xb8, 0xe9, 0xe9, 0xdb, 0x7c, 0x08, 0xa6, 0x2c, 0xf2, 0x45, 0xf1, 0xaf, + 0xe8, 0x9c, 0xf8, 0x99, 0xcb, 0xcc, 0xcc, 0x20, 0x9e, 0xe7, 0x3f, 0xd0, 0xb5, 0xe0, 0xc9, + 0xd6, 0x0c, 0x1c, 0x4e, 0xa9, 0x05, 0x00, 0x04, 0x3d, 0x45, 0x91, 0x1c, 0x50, 0x85, 0x1b, + 0x91, 0xa0, 0xba, 0xf5, 0x5e, 0xd5, 0x0a, 0x75, 0x8b, 0x49, 0xb5, 0x30, 0xb8, 0x2b, 0x0a, + 0x59, 0x09, 0x00, 0x5c, 0x1c, 0x0b, 0x42, 0xab, 0x96, 0xf5, 0xfa, 0xd9, 0x58, 0xbe, 0x72, + 0x54, 0x7f, 0xdf, 0x14, 0x2a, 0x77, 0x32, 0xe2, 0xf9, 0x87, 0x67, 0x5e, 0x36, 0xdb, 0x6c, + 0x86, 0xb4, 0x4b, 0x64, 0xad, 0xfe, 0x26, 0xda, 0x10, 0x4f, 0x73, 0x62, 0xa0, 0x61, 0x33, + 0x7d, 0x71, 0x0c, 0x80, 0x81, 0x59, 0x98, 0xa1, 0x46, 0x51, 0x63, 0x13, 0xbc, 0xfd, 0x81, + 0xfe, 0x27, 0x1c, 0xcc, 0x63, 0xf5, 0xef, 0x8a, 0x26, 0xe5, 0x4f, 0xe4, 0x61, 0xc5, 0x30, + 0x9c, 0xc6, 0x2f, 0x84, 0xf6, 0xc2, 0x82, 0x41, 0xf8, 0xfd, 0x5a, 0x91, 0xd2, 0x6f, 0x18, + 0x2b, 0x4e, 0x63, 0x81, 0x8d, 0x56, 0xed, 0xb5, 0xc3, 0x19, 0x31, 0xc8, 0x47, 0x9e, 0xe3, + 0x81, 0x48, 0x49, 0x60, 0x6e, 0x1a, 0x2f, 0x12, 0xc4, 0xff, 0x79, 0xfa, 0x26, 0x29, 0x27, + 0x8a, 0x3c, 0xbd, 0x0f, 0x2e, 0x8a, 0xf6, 0xe3, 0x8a, 0x6b, 0x6a, 0x16, 0x3f, 0x90, 0xe1, + 0x74, 0x11, 0x78, 0x8b, 0x80, 0x5b, 0x3d, 0xed, 0x17, 0xda, 0x16, 0x33, 0xe0, 0x78, 0x0d, + 0x8d, 0x8d, 0xcc, 0xcf, 0xbe, 0xb7, 0xa1, 0xa8, 0xcd, 0x80, 0x01, 0xd5, 0x62, 0x60, 0x10, + 0x42, 0xc1, 0x52, 0x7a, 0x2d, 0x13, 0xd0, 0x14, 0x7c, 0xe1, 0x04, 0xf0, 0xb7, 0xe7, 0xef, + 0xb8, 0xcf, 0x7d, 0x40, 0x59, 0x54, 0xd8, 0x1f, 0x38, 0xcb, 0x24, 0xc0, 0xdc, 0x70, 0x4a, + 0x6e, 0x1b, 0x1e, 0x0e, 0x15, 0xac, 0x47, 0xfe, 0x8b, 0xba, 0xa3, 0xd6, 0xd8, 0x0e, 0xd0, + 0x6f, 0x1e, 0x12, 0xf6, 0x8e, 0xa9, 0xd9, 0x75, 0x38, 0xf4, 0x09, 0x6f, 0x92, 0xc0, 0xd3, + 0x5b, 0x35, 0xc3, 0x1e, 0x87, 0xda, 0xd3, 0x04, 0x3a, 0x4f, 0x4e, 0x7a, 0x26, 0x20, 0xc9, + 0x4d, 0xa9, 0x87, 0x60, 0x24, 0xec, 0xb5, 0xf0, 0x17, 0x6a, 0x68, 0x81, 0xc1, 0xa3, 0x40, + 0x48, 0xfd, 0x96, 0xa5, 0x44, 0x06, 0x66, 0xf9, 0x3c, 0x4d, 0xf9, 0xd9, 0x87, 0xd4, 0xa5, + 0xaf, 0x51, 0xa5, 0xde, 0x2b, 0x81, 0x68, 0x16, 0xf2, 0x81, 0x7e, 0xd3, 0xe7, 0xc5, 0x3b, + 0x47, 0xdd, 0x5d, 0x79, 0x9d, 0x44, 0xde, 0x20, 0x68, 0x88, 0x92, 0xf3, 0x53, 0x29, 0x10, + 0x04, 0x24, 0xb3, 0x59, 0xb4, 0x09, 0x43, 0x15, 0xca, 0x41, 0x09, 0x57, 0x1e, 0x36, 0x25, + 0xc5, 0x63, 0x45, 0x1d, 0xdc, 0x51, 0xc1, 0x51, 0xc3, 0x36, 0xa4, 0x3e, 0x95, 0x06, 0x02, + 0x67, 0x38, 0xda, 0x16, 0x45, 0x2f, 0x98, 0x65, 0x23, 0x19, 0x93, 0xd1, 0x53, 0x73, 0xef, + 0x6f, 0x5e, 0x2c, 0x79, 0x79, 0xb7, 0x8e, 0xe0, 0xf0, 0x83, 0xe1, 0x32, 0xe3, 0x0a, 0x04, + 0xa5, 0x65, 0x53, 0x08, 0x48, 0x66, 0x6b, 0xba, 0x73, 0xf6, 0x2b, 0x15, 0x85, 0xbd, 0x49, + 0xc2, 0x49, 0xe1, 0x64, 0x99, 0x82, 0x2e, 0x21, 0x09, 0x4a, 0x35, 0x6a, 0x3c, 0x36, 0x41, + 0x8a, 0xcf, 0xf7, 0x7b, 0x28, 0xe8, 0x94, 0xfa, 0x80, 0xac, 0x86, 0x19, 0x19, 0x9a, 0x2f, + 0x26, 0x10, 0x0e, 0xde, 0x26, 0xe3, 0x4f, 0xac, 0xdb, 0xf3, 0xc0, 0x7e, 0x7c, 0xb0, 0xaf, + 0x36, 0xb3, 0x7c, 0x15, 0xf6, 0xbc, 0x0e, 0xe6, 0xfc, 0x1e, 0x59, 0xf4, 0x10, 0x11, 0xd9, + 0x13, 0x57, 0x0f, 0x88, 0x5a, 0x0b, 0x13, 0x61, 0x71, 0x03, 0xd9, 0x76, 0x2c, 0x34, 0xaa, + 0x5b, 0xd2, 0x0b, 0xfc, 0xcc, 0x70, 0x36, 0x19, 0x1a, 0x26, 0x6c, 0xd0, 0x59, 0x09, 0x7a, + 0x3d, 0x74, 0x9a, 0x3b, 0x3f, 0x30, 0x77, 0x07, 0x29, 0xfb, 0x8a, 0xd2, 0xde, 0x4f, 0xa9, + 0x7c, 0x9b, 0x42, 0x16, 0x3b, 0xfa, 0xd2, 0xc9, 0x43, 0xa3, 0x0a, 0xa9, 0xcd, 0x72, 0xf0, + 0x65, 0x53, 0x5d, 0xc8, 0x67, 0x99, 0x16, 0xe3, 0xf7, 0x71, 0x89, 0x60, 0xa2, 0x5d, 0xfe, + 0x59, 0x28, 0x93, 0xbb, 0x2d, 0x41, 0x0a, 0x20, 0x7c, 0x0c, 0x17, 0x2c, 0x24, 0xe3, 0xf0, + 0x20, 0x13, 0x44, 0x7e, 0x83, 0x6d, 0x47, 0x4e, 0xee, 0x55, 0x9c, 0x7d, 0x43, 0xd2, 0xe8, + 0x25, 0x6a, 0x4f, 0x96, 0xeb, 0x65, 0x96, 0xa6, 0x10, 0x33, 0x9c, 0xbc, 0x00, 0x5a, 0xcd, + 0x00, 0x0d, 0xd5, 0xe2, 0x4a, 0x3b, 0x81, 0xf2, 0xdd, 0x77, 0x31, 0xcb, 0xf9, 0xde, 0x13, + 0x8b, 0xa8, 0x03, 0xb9, 0xea, 0xcb, 0x6c, 0x6e, 0xb8, 0x53, 0x3f, 0x34, 0x43, 0xa5, 0xff, + 0x56, 0x9f, 0x97, 0xc5, 0xdb, 0x38, 0x84, 0x43, 0x19, 0x3f, 0x75, 0x3e, 0x97, 0x05, 0x84, + 0x37, 0xc1, 0xa2, 0xde, 0x32, 0xe4, 0x3d, 0xc8, 0xd3, 0x74, 0x02, 0xee, 0x07, 0x84, 0x3d, + 0x57, 0x4a, 0xb9, 0x80, 0xf2, 0xe6, 0x48, 0x6a, 0x0d, 0xa9, 0x6f, 0xfc, 0x51, 0x00, 0x5c, + 0xa6, 0x57, 0x01, 0xdc, 0x0b, 0x26, 0xfd, 0xc0, 0x86, 0x24, 0xad, 0x99, 0x3d, 0xd9, 0x30, + 0xaa, 0x59, 0x5e, 0x22, 0xda, 0xed, 0x87, 0xaf, 0x42, 0xff, 0x6a, 0xa0, 0x30, 0x8c, 0x6c, + 0x7b, 0x7c, 0x4e, 0x39, 0x70, 0x54, 0xb8, 0xea, 0xfb, 0x72, 0x40, 0x02, 0x4c, 0x0f, 0x09, + 0xe8, 0x0b, 0xfd, 0xa2, 0xae, 0x4e, 0xea, 0x26, 0xde, 0xd3, 0x3c, 0xb0, 0x18, 0xec, 0x5a, + 0xef, 0xc0, 0x4c, 0xe4, 0x5a, 0xc0, 0x58, 0x1f, 0xca, 0x27, 0xc7, 0x27, 0x48, 0x89, 0x10, + 0x4b, 0x8d, 0x29, 0x14, 0xe3, 0xcf, 0x37, 0xfa, 0x27, 0xfc, 0xba, 0x9e, 0x1f, 0x5e, 0x02, + 0xaa, 0x76, 0xbf, 0xc5, 0x07, 0x3b, 0x04, 0xbd, 0x7b, 0x7f, 0x2b, 0x39, 0x47, 0x20, 0x4a, + 0x51, 0x67, 0xf8, 0x79, 0x73, 0x3a, 0x87, 0x88, 0xde, 0x4d, 0xea, 0x7c, 0xd8, 0xf4, 0xcc, + 0xa6, 0xe7, 0x96, 0x16, 0x56, 0x33, 0xb2, 0x4d, 0xc9, 0x74, 0x44, 0xa2, 0x9d, 0x9b, 0x63, + 0x39, 0xfe, 0x50, 0xb3, 0xb0, 0x0d, 0x08, 0x10, 0x9f, 0x6b, 0x97, 0x1c, 0x4b, 0xed, 0xe9, + 0xc4, 0x00, 0x92, 0x0a, 0x3e, 0x30, 0x8d, 0x92, 0xc1, 0x95, 0x35, 0x3e, 0x42, 0xca, 0x13, + 0x2c, 0x6a, 0xea, 0x2f, 0xef, 0x7b, 0xb1, 0xf8, 0x93, 0x2a, 0x97, 0x27, 0x00, 0x47, 0xb6, + 0x17, 0x96, 0x92, 0xbd, 0x10, 0x30, 0xa5, 0xce, 0xa0, 0xde, 0x22, 0x6f, 0x41, 0x5a, 0xdf, + 0x93, 0x76, 0x69, 0xac, 0xde, 0x01, 0x74, 0x87, 0x3d, 0x36, 0x3c, 0x2f, 0xbb, 0x82, 0x54, + 0x58, 0x95, 0x30, 0x3c, 0xbd, 0xc9, 0x13, 0x39, 0xa6, 0x6e, 0xc9, 0x7e, 0x04, 0x2a, 0x83, + 0x6a, 0x30, 0xf0, 0x3b, 0x7c, 0x19, 0x33, 0xd6, 0xc2, 0xab, 0x80, 0x02, 0x3f, 0x19, 0x92, + 0xed, 0x5f, 0x91, 0x4d, 0x24, 0x3a, 0x3f, 0xa6, 0x68, 0xa0, 0x31, 0x9b, 0xd4, 0x7e, 0x5f, + 0x89, 0xed, 0xa4, 0x75, 0x1d, 0x72, 0xed, 0x6c, 0x39, 0x55, 0x8d, 0xb6, 0x26, 0xc6, 0x7e, + 0x23, 0x7b, 0xc0, 0x90, 0x46, 0x58, 0xcc, 0x49, 0x2c, 0x46, 0x24, 0xba, 0x49, 0x7e, 0xc5, + 0x0e, 0x1c, 0x3e, 0x76, 0x4d, 0x42, 0x03, 0xe5, 0xbd, 0x92, 0x9c, 0xbf, 0xcc, 0x0f, 0x1e, + 0x6a, 0xb0, 0x1c, 0xcf, 0x0b, 0x15, 0xc2, 0xac, 0x6e, 0xca, 0x9c, 0xe6, 0xd8, 0x7e, 0xf1, + 0xfb, 0x10, 0x34, 0x05, 0x3b, 0x68, 0x92, 0x2f, 0x6f, 0x84, 0x2e, 0x14, 0xd6, 0x39, 0x7d, + 0xe6, 0xbf, 0x5b, 0xb4, 0x06, 0xab, 0xaa, 0x81, 0xaa, 0xd7, 0x8a, 0x97, 0x7c, 0xef, 0x4b, + 0x95, 0xab, 0xcf, 0x57, 0xd1, 0x3f, 0x99, 0x25, 0x49, 0x47, 0xbb, 0xa1, 0x87, 0x51, 0x43, + 0x4c, 0xd1, 0xcd, 0xcd, 0x11, 0x9f, 0x06, 0x87, 0x95, 0x31, 0x97, 0x67, 0x9e, 0x2d, 0xe0, + 0xfb, 0x1f, 0xba, 0x3c, 0xd8, 0xd6, 0x92, 0x33, 0x6e, 0xba, 0xc6, 0xda, 0xc2, 0xca, 0xc0, + 0x13, 0x69, 0x37, 0xb5, 0x57, 0xee, 0x91, 0xc4, 0x06, 0x5f, 0x65, 0xe5, 0x0b, 0xe6, 0xc2, + 0x60, 0xbe, 0x6d, 0x0d, 0x2c, 0x08, 0x7b, 0x89, 0x0e, 0x70, 0x15, 0x9e, 0x93, 0x28, 0xa2, + 0xd2, 0xbc, 0x0a, 0x64, 0xbb, 0x4c, 0xc5, 0x1c, 0xf8, 0xbe, 0x3d, 0x62, 0xa3, 0x22, 0x5d, + 0x12, 0xcb, 0x45, 0xb6, 0x47, 0x6c, 0xaf, 0xf1, 0xfa, 0xf1, 0xfc, 0x20, 0xe3, 0x3f, 0x13, + 0x8d, 0xa6, 0xe3, 0xb5, 0xfd, 0x6c, 0x41, 0x27, 0x88, 0xb0, 0x5b, 0x72, 0x37, 0x41, 0xcb, + 0x9a, 0xba, 0x00, 0x92, 0xd1, 0x13, 0x82, 0xb0, 0x4b, 0x19, 0x72, 0x60, 0x42, 0x93, 0x3c, + 0xf6, 0x05, 0x5e, 0x8b, 0x0b, 0xe6, 0x33, 0x51, 0xa1, 0xf8, 0x59, 0x6b, 0x47, 0x1b, 0x14, + 0x7f, 0x3d, 0xc0, 0xc1, 0x19, 0xed, 0x54, 0x0c, 0x29, 0xfa, 0x3e, 0x62, 0x9f, 0x97, 0x78, + 0x65, 0xc3, 0x59, 0xe6, 0xa7, 0x6f, 0xd2, 0xc7, 0x3a, 0x9b, 0xe1, 0xec, 0xf8, 0x55, 0x18, + 0xa7, 0x26, 0x34, 0xc8, 0xf4, 0x94, 0xf6, 0x86, 0x3f, 0x28, 0xa0, 0x9e, 0x0d, 0xe3, 0x5e, + 0x74, 0x9b, 0xfa, 0xe1, 0x74, 0x6d, 0xc2, 0xe0, 0xd4, 0xe7, 0xe8, 0x5f, 0x45, 0xcb, 0x2f, + 0xe4, 0xb8, 0x13, 0x04, 0xf8, 0x02, 0xf9, 0xcc, 0x40, 0x33, 0x44, 0x59, 0x33, 0x67, 0xa1, + 0x39, 0xb4, 0x7f, 0xe6, 0xcb, 0x72, 0xb7, 0x01, 0xfe, 0xdb, 0xb2, 0x88, 0x95, 0x35, 0xdb, + 0x9f, 0xb2, 0x98, 0x4e, 0x1b, 0x0a, 0x8f, 0xd7, 0x85, 0x86, 0x43, 0x74, 0xd8, 0x5b, 0x77, + 0x03, 0x53, 0x43, 0xd8, 0xd9, 0xd8, 0xb9, 0xb3, 0x5d, 0xe6, 0xa5, 0x20, 0x3f, 0x2e, 0xd6, + 0x47, 0x23, 0xf8, 0xec, 0xd3, 0x1f, 0x88, 0x2d, 0xa8, 0x67, 0x96, 0x9d, 0xc4, 0xea, 0x2d, + 0xc8, 0xcd, 0x2c, 0xfa, 0x75, 0xa7, 0x9a, 0xb2, 0x2f, 0xa0, 0x25, 0x0b, 0x46, 0x15, 0x70, + 0x6c, 0x8a, 0xbc, 0xd1, 0xbe, 0x27, 0xc4, 0x99, 0x0b, 0x30, 0xe8, 0xf2, 0x0c, 0xca, 0x27, + 0x57, 0xc2, 0x04, 0x86, 0x87, 0x19, 0xaf, 0x5a, 0xcb, 0x7a, 0xa6, 0x1f, 0x94, 0x59, 0x5f, + 0x5e, 0xe3, 0xec, 0xeb, 0x73, 0x0a, 0x83, 0xaf, 0x53, 0x40, 0x92, 0x04, 0xac, 0x6c, 0xe7, + 0x77, 0xc2, 0x00, 0xdd, 0x4b, 0x5e, 0xfd, 0x6f, 0x1a, 0xc7, 0xa6, 0xf8, 0xd2, 0x76, 0xb8, + 0x67, 0x9d, 0x05, 0x14, 0x9d, 0x22, 0x30, 0xe9, 0x74, 0xe4, 0xdc, 0x59, 0x9c, 0x13, 0x77, + 0x6c, 0x07, 0xd6, 0x4d, 0xef, 0xd0, 0x3f, 0x0f, 0xc7, 0x37, 0x3d, 0x7f, 0xe1, 0x97, 0xf7, + 0x5a, 0x0a, 0x5a, 0xb2, 0x41, 0x30, 0x40, 0xe6, 0x45, 0x58, 0x37, 0xdf, 0xe9, 0xbd, 0xb5, + 0xa7, 0x12, 0x7e, 0xd2, 0xc9, 0xbc, 0x83, 0x62, 0x81, 0x55, 0x82, 0x31, 0x4f, 0x1b, 0x17, + 0xdf, 0x67, 0x85, 0x3e, 0x47, 0xcd, 0x1d, 0x71, 0x8f, 0xb2, 0xbe, 0x81, 0x3f, 0x18, 0x3c, + 0x92, 0x66, 0x3c, 0xc6, 0x0c, 0x2d, 0x0b, 0x0e, 0x0a, 0xd7, 0xac, 0x28, 0x95, 0x60, 0x0b, + 0xcf, 0x75, 0x7c, 0xd4, 0xa5, 0x71, 0x45, 0xef, 0xc2, 0x5b, 0x1d, 0x86, 0x00, 0x0a, 0xd9, + 0x0d, 0x04, 0x8d, 0x29, 0x85, 0xce, 0x25, 0x05, 0x39, 0x4f, 0x7e, 0xf6, 0xd0, 0xc4, 0x1e, + 0xfd, 0xf5, 0xf1, 0x75, 0xe8, 0x4f, 0xd5, 0x47, 0x18, 0xa0, 0xae, 0x0a, 0x0e, 0x88, 0x13, + 0xde, 0xfa, 0x9a, 0x68, 0xfb, 0x96, 0x0b, 0x8c, 0xeb, 0xa5, 0x8d, 0x17, 0x31, 0x8d, 0xd0, + 0xb8, 0xb4, 0x1e, 0x7f, 0x78, 0x5a, 0x52, 0x65, 0x40, 0x17, 0x69, 0xb0, 0x34, 0xf3, 0x69, + 0x2e, 0x5e, 0x29, 0xb4, 0x1f, 0x0f, 0x81, 0x5f, 0x0b, 0x6a, 0x10, 0xd6, 0x55, 0x4f, 0xbd, + 0x20, 0xc6, 0x71, 0xf7, 0xce, 0xc9, 0x0f, 0xad, 0x2d, 0x11, 0xfc, 0x6f, 0x54, 0xc7, 0x9d, + 0x2f, 0xcb, 0x40, 0xc0, 0x87, 0xac, 0x05, 0xf7, 0xdf, 0x3f, 0x17, 0xb3, 0x44, 0x2d, 0x1d, + 0xe6, 0x92, 0x64, 0xec, 0xe2, 0x3b, 0x98, 0x66, 0xef, 0x37, 0xcd, 0xdf, 0xd8, 0x8e, 0x86, + 0x0c, 0x84, 0xff, 0x9c, 0x9c, 0x74, 0x0d, 0xa0, 0x6e, 0xc6, 0xa1, 0xac, 0x99, 0x65, 0x16, + 0x2b, 0xfa, 0xc1, 0x13, 0x07, 0xe8, 0x6e, 0x60, 0x83, 0x36, 0xba, 0x03, 0x7e, 0x04, 0x77, + 0x73, 0x27, 0x2c, 0x9b, 0xa6, 0x82, 0x62, 0xa3, 0x55, 0x16, 0x0a, 0x42, 0x46, 0x89, 0x19, + 0xb4, 0x8b, 0xb9, 0xc0, 0x4e, 0x39, 0x5d, 0xd9, 0x01, 0xf0, 0xe2, 0x29, 0x45, 0x87, 0xb5, + 0x6b, 0x46, 0xcc, 0x03, 0x39, 0xf7, 0xce, 0x15, 0x16, 0xa0, 0x38, 0xca, 0xcd, 0x4d, 0xeb, + 0xe4, 0x8b, 0x14, 0x29, 0xbf, 0x66, 0xa0, 0x9f, 0x23, 0xc0, 0x5c, 0x19, 0x40, 0xd3, 0x51, + 0xb2, 0xe7, 0xa3, 0xa3, 0xac, 0x4f, 0x7f, 0xb3, 0xd0, 0x9e, 0xf5, 0x7a, 0x3d, 0xde, 0x80, + 0x9c, 0xea, 0x05, 0x0f, 0x97, 0xf8, 0xf1, 0x4c, 0xed, 0x39, 0x74, 0x34, 0xea, 0x77, 0x8f, + 0xe6, 0xc2, 0xdb, 0x76, 0x14, 0x98, 0x8d, 0x1e, 0xe7, 0xb0, 0xf6, 0x16, 0xd7, 0x49, 0x91, + 0xa9, 0x35, 0xaa, 0x73, 0x67, 0x1b, 0x66, 0xef, 0x0f, 0xf6, 0xa4, 0x97, 0x24, 0x51, 0x54, + 0x6b, 0x61, 0xed, 0x23, 0x76, 0x5b, 0x53, 0x77, 0x06, 0x8a, 0x94, 0xe5, 0x84, 0xfe, 0x4b, + 0xf7, 0xc5, 0x29, 0x0d, 0x43, 0xc2, 0x28, 0x38, 0x08, 0x96, 0xef, 0x7a, 0xc7, 0x79, 0xf5, + 0x96, 0xaa, 0xdd, 0x22, 0xf6, 0xe0, 0x71, 0x84, 0xde, 0x85, 0xaf, 0x22, 0xeb, 0x2f, 0xc7, + 0x53, 0x39, 0xf1, 0x6b, 0x23, 0xca, 0x16, 0xe6, 0xcf, 0x3c, 0xed, 0xb6, 0x61, 0xd2, 0x97, + 0x99, 0x44, 0x32, 0xf8, 0x6d, 0x2c, 0x8f, 0x28, 0xe4, 0xe8, 0xb2, 0xb1, 0xe3, 0xe5, 0x7c, + 0xbb, 0x14, 0x80, 0xd5, 0x73, 0xfa, 0xe7, 0xbb, 0x50, 0x00, 0x4e, 0x1d, 0xfc, 0x3d, 0x31, + 0x57, 0x63, 0x80, 0x95, 0x31, 0xfe, 0x09, 0x53, 0x6b, 0x2d, 0xc4, 0xd8, 0x5a, 0x4d, 0x32, + 0x59, 0xff, 0x0e, 0xe9, 0x1f, 0x58, 0xe7, 0x62, 0x7d, 0xb5, 0xde, 0x29, 0xb4, 0x92, 0x68, + 0x06, 0x7e, 0xcf, 0x7a, 0x9f, 0x8e, 0x87, 0x78, 0x02, 0xd3, 0x3a, 0x20, 0x45, 0xdb, 0x36, + 0xea, 0x68, 0x81, 0xd7, 0xbf, 0x0d, 0x61, 0x96, 0x45, 0xcf, 0x63, 0x9f, 0xa1, 0xfb, 0x70, + 0x27, 0xdb, 0x73, 0xc0, 0x45, 0x21, 0x91, 0x83, 0x93, 0xa7, 0xa7, 0x89, 0xa7, 0xae, 0x16, + 0x39, 0x24, 0x5e, 0x64, 0x07, 0x67, 0xdc, 0x66, 0x44, 0x45, 0xee, 0x9e, 0xb1, 0xe7, 0xd9, + 0xa9, 0xf5, 0xbe, 0x53, 0x81, 0xe2, 0xb2, 0x32, 0xd1, 0x00, 0x6b, 0xe4, 0x2b, 0x3e, 0x0b, + 0x97, 0x2f, 0xea, 0x95, 0x86, 0x04, 0xb8, 0x08, 0x58, 0x82, 0x03, 0x56, 0x9b, 0xf4, 0x3a, + 0x87, 0x6a, 0xb4, 0x24, 0x0b, 0xc3, 0x49, 0xcb, 0xbb, 0x2a, 0x41, 0x13, 0xc5, 0x10, 0x95, + 0x3a, 0x64, 0xff, 0xb9, 0x35, 0x53, 0x1d, 0x74, 0x01, 0xd6, 0xba, 0xd8, 0x17, 0xd1, 0x70, + 0x34, 0x3f, 0x01, 0x44, 0x3f, 0x86, 0x28, 0x2e, 0x26, 0x3a, 0x21, 0x56, 0x9f, 0x3b, 0x67, + 0xb3, 0x7e, 0x47, 0x69, 0xde, 0x9c, 0x69, 0x48, 0x48, 0xe0, 0x7c, 0x75, 0xdc, 0xb8, 0x77, + 0x78, 0xfa, 0x64, 0x39, 0x77, 0x20, 0xb1, 0x3e, 0x8e, 0x38, 0xd8, 0x61, 0x27, 0xe4, 0x8e, + 0xa3, 0x22, 0x2c, 0xee, 0xad, 0xc2, 0x47, 0xd2, 0xe6, 0x15, 0x25, 0xe2, 0x98, 0x99, 0x86, + 0x94, 0x3c, 0x58, 0x51, 0x81, 0x4b, 0x4b, 0xb5, 0x18, 0xf5, 0x96, 0xa1, 0x67, 0x3a, 0x33, + 0x5b, 0x4b, 0x97, 0xea, 0xfa, 0x9d, 0x51, 0xcd, 0x91, 0x5b, 0xc7, 0xf8, 0x72, 0x23, 0xcb, + 0x47, 0x58, 0x5c, 0xce, 0xca, 0x66, 0xfb, 0xa5, 0x7b, 0x3d, 0xdc, 0x31, 0x10, 0x64, 0x3f, + 0x5e, 0xd3, 0x62, 0xeb, 0x24, 0x13, 0xfb, 0x30, 0x42, 0xb5, 0xaa, 0xc8, 0xe1, 0xc4, 0xc6, + 0x59, 0xbb, 0xad, 0x0b, 0x4d, 0x38, 0x3d, 0x82, 0x83, 0x66, 0x0c, 0xf3, 0x89, 0xe0, 0x30, + 0x21, 0x6f, 0x54, 0x3d, 0x37, 0x04, 0x42, 0x18, 0xe9, 0xb1, 0xa8, 0xea, 0xb0, 0xf9, 0x1e, + 0x8e, 0x41, 0x8a, 0xc8, 0x42, 0xc1, 0xe2, 0xf9, 0x9f, 0xde, 0x11, 0xbb, 0xe7, 0xf7, 0xce, + 0xf9, 0x02, 0x3c, 0x4b, 0xdc, 0x60, 0x65, 0xbf, 0x41, 0x61, 0x53, 0x70, 0xe9, 0xe6, 0x9a, + 0x5a, 0xfa, 0x54, 0x76, 0x33, 0x14, 0x69, 0x02, 0x83, 0x9b, 0x88, 0xcb, 0x6b, 0xca, 0x91, + 0xdd, 0x15, 0x05, 0x19, 0x66, 0x95, 0x2e, 0x5f, 0x62, 0xf2, 0xb4, 0xa6, 0x52, 0x25, 0xe1, + 0x39, 0x4d, 0x7f, 0x6f, 0x47, 0x84, 0xbb, 0xb8, 0xdb, 0x45, 0x7f, 0xca, 0x47, 0x7e, 0x34, + 0x30, 0x30, 0x16, 0xa8, 0x4b, 0x28, 0x41, 0x2b, 0xab, 0x26, 0xa0, 0x01, 0xba, 0xf0, 0x5e, + 0xad, 0xa7, 0x9f, 0xd3, 0x37, 0xd2, 0x02, 0x0b, 0x56, 0x36, 0x7c, 0x60, 0x35, 0xc3, 0xba, + 0x05, 0x25, 0x52, 0xdc, 0xa0, 0x92, 0x14, 0xaa, 0x29, 0xa0, 0x7c, 0x9a, 0x1b, 0x40, 0x69, + 0x50, 0x10, 0x9b, 0x30, 0xf3, 0xb6, 0x9d, 0x72, 0xd9, 0x78, 0x2a, 0x36, 0x86, 0x14, 0x89, + 0x5e, 0x6e, 0xd2, 0xc8, 0x9d, 0x71, 0xde, 0x52, 0x31, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xb3, 0x11, 0xe7, 0x4f, 0x42, 0xe7, 0xc3, 0xc2, 0xf3, 0x02, 0x0d, 0x12, + 0x67, 0x8b, 0x87, 0xcd, 0x7a, 0x16, 0xe8, 0x44, 0x20, 0x00, 0x41, 0x1c, 0x23, 0x26, 0xcd, + 0xae, 0x17, 0x9e, 0x7d, 0xb0, 0x84, 0x1f, 0xcd, 0x7b, 0x4e, 0x89, 0x2a, 0xd8, 0x5c, 0x9f, + 0xcc, 0x11, 0xa2, 0x2a, 0x1c, 0x87, 0xe3, 0xe2, 0xfa, 0x36, 0xad, 0xd2, 0x73, 0xbf, 0x15, + 0x0b, 0x04, 0xfe, 0x1c, 0x19, 0xb4, 0x36, 0x00, ], - // Burn block &[ - 0x04, 0x00, 0x00, 0x00, 0x6d, 0xd6, 0x6d, 0x19, 0xa5, 0x70, 0xa9, 0xa0, 0x90, 0x90, 0x14, - 0x16, 0x59, 0xbf, 0x85, 0xed, 0x88, 0x6b, 0x6d, 0xa9, 0xea, 0x09, 0x5a, 0x53, 0x15, 0xe3, - 0x0b, 0x96, 0x5f, 0xb2, 0x5b, 0xab, 0x3a, 0x71, 0xc4, 0x89, 0xea, 0x21, 0xf0, 0x5d, 0xc8, - 0x44, 0xfe, 0x68, 0x13, 0xf1, 0xbb, 0x44, 0x6f, 0x36, 0x27, 0x7e, 0xf9, 0x03, 0x06, 0x58, - 0x41, 0x7f, 0xfc, 0x60, 0x3e, 0x8c, 0xe6, 0xdc, 0xda, 0xcd, 0x52, 0x94, 0x80, 0x27, 0xa5, - 0x82, 0xb3, 0xc1, 0x1b, 0x47, 0x07, 0xf4, 0x76, 0xf9, 0x42, 0xb3, 0x4f, 0xf7, 0x7e, 0xf4, - 0x63, 0xb2, 0xa7, 0x2a, 0x40, 0x0c, 0xf6, 0xa8, 0x09, 0x2b, 0x0a, 0x10, 0x4a, 0x4d, 0x0f, + 0x04, 0x00, 0x00, 0x00, 0x45, 0x47, 0x89, 0xe1, 0xa2, 0x7f, 0x3e, 0x02, 0x06, 0xb1, 0x62, + 0x54, 0xd5, 0x8d, 0x17, 0x02, 0x9b, 0xd5, 0xad, 0x22, 0x81, 0x09, 0x09, 0x6c, 0x26, 0x11, + 0x7b, 0x44, 0x02, 0xcc, 0xaa, 0x8d, 0x7a, 0xf0, 0xb2, 0xef, 0x5a, 0xee, 0xd1, 0xd5, 0xfe, + 0x7d, 0x09, 0x01, 0x37, 0x85, 0xcd, 0x1a, 0xe6, 0x71, 0xda, 0x0c, 0x8e, 0x2f, 0x9c, 0x14, + 0xbd, 0x9c, 0xbb, 0xc1, 0x17, 0x85, 0x88, 0x82, 0x4a, 0xd8, 0x3a, 0x26, 0x9a, 0x74, 0x3f, + 0x8b, 0xb9, 0x08, 0xdf, 0xdf, 0xa2, 0xa2, 0x3c, 0x68, 0x32, 0xf9, 0xdc, 0x0a, 0x2a, 0x84, + 0xf9, 0xce, 0xf5, 0xc2, 0xf2, 0x4a, 0x43, 0x4f, 0xad, 0x3a, 0x0a, 0x10, 0x4a, 0x4d, 0x0f, 0x0f, 0x0f, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1605,1258 +1604,2751 @@ pub(crate) const BLOCKS: [&[u8]; 4] = [ 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0xb7, 0x99, 0x2f, 0xdd, 0xad, 0xb5, 0x5c, 0x00, 0xf6, 0x42, 0xaf, 0xa2, 0xe0, 0xc1, 0x08, - 0x11, 0x8f, 0x2e, 0x2f, 0x94, 0xdc, 0x2c, 0x4f, 0x2b, 0xeb, 0xe1, 0xd3, 0x2b, 0x5b, 0x1c, - 0x2a, 0xb4, 0xb2, 0x44, 0xb4, 0xb3, 0xdf, 0x61, 0x1a, 0x07, 0x24, 0xaa, 0xb5, 0x37, 0x85, - 0xf7, 0x94, 0xd8, 0xbc, 0x64, 0x51, 0x0b, 0xfd, 0xa2, 0xf5, 0x54, 0x62, 0x1d, 0xd4, 0x6d, - 0xd2, 0x2f, 0x90, 0x12, 0xbe, 0x91, 0xbb, 0xba, 0x3c, 0xbc, 0xa3, 0xcf, 0xff, 0x71, 0x2c, - 0x0c, 0x7e, 0x26, 0xdf, 0x09, 0x55, 0x74, 0x57, 0xfe, 0xcc, 0xbe, 0x1d, 0x7f, 0xf0, 0x4d, - 0x1c, 0x3e, 0x1a, 0x20, 0x78, 0x8b, 0xd1, 0x6e, 0x44, 0xf9, 0x36, 0x15, 0xa2, 0x86, 0x26, - 0xa3, 0xd3, 0x74, 0x91, 0x6e, 0x9d, 0xda, 0x8f, 0xe9, 0x1c, 0x53, 0x3b, 0x74, 0x0d, 0x66, - 0xae, 0x33, 0x98, 0x15, 0x17, 0x47, 0x46, 0x19, 0x30, 0x13, 0x5e, 0x6f, 0x46, 0xf4, 0x11, - 0x25, 0xb4, 0x36, 0x04, 0xb0, 0x53, 0xb9, 0x80, 0xae, 0x87, 0x33, 0x87, 0x4f, 0xe5, 0x30, - 0x5b, 0xff, 0x8b, 0xad, 0x01, 0xa2, 0x39, 0x02, 0x9a, 0x02, 0x9d, 0x5c, 0x79, 0xbd, 0x72, - 0xda, 0x02, 0xaa, 0x3c, 0xd3, 0x75, 0x91, 0xa9, 0x68, 0x22, 0xde, 0x38, 0x0f, 0x68, 0x3b, - 0x66, 0x12, 0x8c, 0x82, 0x9a, 0xc5, 0x02, 0xbf, 0x63, 0x95, 0x32, 0xba, 0x0c, 0xf3, 0x4e, - 0xa6, 0xb9, 0x2c, 0x7e, 0x04, 0x1b, 0xc1, 0xf4, 0x60, 0x84, 0x3f, 0x6d, 0x0a, 0xa7, 0x4a, - 0x52, 0x94, 0xc4, 0xb6, 0xc5, 0x84, 0xbe, 0x80, 0x3a, 0x6e, 0xec, 0x92, 0xef, 0x0e, 0xdb, - 0x68, 0x44, 0xec, 0xad, 0x8b, 0x86, 0xbc, 0xe8, 0x79, 0x7c, 0x87, 0xff, 0x25, 0xfa, 0x47, - 0xe1, 0x94, 0xc1, 0xc3, 0x8e, 0xe9, 0x08, 0x88, 0xde, 0x85, 0x95, 0x60, 0xc9, 0xac, 0x2f, - 0xe7, 0xaf, 0x33, 0xe9, 0xdc, 0x34, 0x1d, 0xc6, 0xc0, 0x3f, 0xf1, 0xe5, 0x49, 0x88, 0x16, - 0x73, 0x39, 0xa1, 0xcc, 0xb1, 0xc8, 0xb4, 0x01, 0xc1, 0xb9, 0x32, 0x60, 0x30, 0xd6, 0x51, - 0xbf, 0x47, 0x32, 0xf5, 0x94, 0x06, 0x01, 0xcb, 0xd9, 0x40, 0xd7, 0x14, 0x51, 0x89, 0xc7, - 0x05, 0x49, 0x30, 0x89, 0xd7, 0x68, 0x4d, 0xff, 0x0a, 0xc9, 0x62, 0x4c, 0x1b, 0xbf, 0x55, - 0xff, 0x78, 0x7e, 0x01, 0x09, 0x43, 0xb8, 0xfb, 0x39, 0x39, 0x4b, 0xcb, 0x93, 0x35, 0x4e, - 0xf7, 0xce, 0x6e, 0xd0, 0xe1, 0x4a, 0x63, 0xef, 0xef, 0x0b, 0xec, 0x1a, 0xe3, 0xdf, 0x52, - 0xf4, 0x1e, 0x0b, 0xf1, 0x8b, 0x4e, 0xc5, 0xe7, 0x9d, 0x7d, 0xdc, 0x3a, 0x32, 0xd8, 0x12, - 0x45, 0x98, 0x73, 0x0f, 0x89, 0xff, 0x02, 0x56, 0xf1, 0x32, 0x82, 0x15, 0x92, 0x40, 0x5d, - 0xab, 0xaa, 0x16, 0x0f, 0xd5, 0x28, 0x4e, 0x0c, 0xb7, 0x7a, 0x3c, 0xe5, 0x76, 0x6f, 0x8e, - 0x41, 0x98, 0xb4, 0x31, 0x0b, 0x3f, 0x8d, 0x0e, 0x47, 0x01, 0x73, 0x78, 0x93, 0x03, 0x42, - 0xf7, 0x16, 0xe3, 0x63, 0xa8, 0x22, 0x1e, 0x5f, 0xc1, 0x0f, 0x4b, 0x66, 0x3c, 0x36, 0x4f, - 0xca, 0x12, 0x4e, 0xd2, 0x0f, 0xcf, 0xe7, 0x3b, 0xde, 0x2e, 0x02, 0xe5, 0xbe, 0xb0, 0x1e, - 0x65, 0x6e, 0xf5, 0xc3, 0xd1, 0x3e, 0x98, 0xca, 0xd3, 0x74, 0x8d, 0x5a, 0xa9, 0x6e, 0x9b, - 0x96, 0x4a, 0x06, 0xd6, 0x32, 0xd5, 0x4d, 0x3c, 0x6a, 0xa5, 0x27, 0xb0, 0x93, 0x16, 0x6f, - 0x51, 0xf2, 0x9b, 0x35, 0xc8, 0xa1, 0xe1, 0xd9, 0xec, 0xbe, 0x7f, 0x11, 0x80, 0x26, 0x03, - 0x3f, 0x25, 0xe6, 0x1b, 0xa4, 0x62, 0x35, 0x73, 0x97, 0x23, 0xb6, 0x32, 0x47, 0x2c, 0xe1, - 0x68, 0xed, 0xd0, 0x9c, 0x66, 0xec, 0xb9, 0x7f, 0x55, 0x95, 0xb4, 0x60, 0x2a, 0x86, 0x5d, - 0x40, 0x9b, 0xae, 0xfd, 0xf7, 0x7d, 0xf8, 0x43, 0x7f, 0x19, 0x9c, 0xa4, 0x5b, 0x22, 0xad, - 0xd2, 0x96, 0x12, 0xf5, 0x68, 0x44, 0xb1, 0x83, 0x50, 0x96, 0x31, 0x40, 0x80, 0x6a, 0x32, - 0xde, 0x9b, 0xdb, 0xaa, 0x6c, 0xe5, 0x2e, 0x8b, 0x6d, 0xa0, 0x9d, 0x75, 0x5b, 0x09, 0x62, - 0x88, 0x42, 0xb2, 0x27, 0x48, 0x0f, 0x5c, 0xb5, 0xe5, 0x2c, 0x83, 0xe1, 0x39, 0x9b, 0xdd, - 0x62, 0x4a, 0x19, 0xc1, 0x52, 0x73, 0x97, 0x8c, 0xf4, 0xe0, 0xe1, 0xc0, 0x63, 0xab, 0x85, - 0x20, 0xda, 0xc5, 0x13, 0xe3, 0xc8, 0x81, 0x4d, 0x8a, 0xae, 0xc1, 0x47, 0xcf, 0x77, 0x58, - 0x34, 0x77, 0x7b, 0xc6, 0x83, 0x55, 0x88, 0x1c, 0x73, 0x36, 0x50, 0x8a, 0x2b, 0x0f, 0xef, - 0x1f, 0x31, 0x2e, 0x59, 0xad, 0x3e, 0x02, 0xae, 0xc1, 0x9f, 0xa5, 0xe1, 0xba, 0x07, 0xa3, - 0xbc, 0xa1, 0x04, 0x95, 0x45, 0xfc, 0x01, 0x89, 0x78, 0x94, 0x66, 0x27, 0x0e, 0x83, 0x4a, - 0xf0, 0x1e, 0x27, 0x7b, 0x24, 0x88, 0xf9, 0x64, 0x0b, 0xe9, 0xf2, 0x6a, 0x7f, 0xbb, 0xd1, - 0x8b, 0x03, 0xcf, 0x4a, 0x11, 0xce, 0xea, 0x41, 0xbd, 0x36, 0x55, 0x11, 0xf6, 0x6c, 0xb0, - 0xb6, 0x1e, 0xcd, 0xfb, 0x2d, 0x3d, 0x09, 0x9e, 0xa0, 0x65, 0x63, 0xee, 0xf0, 0x14, 0xa1, - 0x92, 0x81, 0x17, 0x58, 0x33, 0xb2, 0xe0, 0x05, 0x03, 0xf3, 0xad, 0xba, 0x05, 0x2b, 0x43, - 0xe2, 0xc4, 0x5b, 0xd1, 0x60, 0xe0, 0xe8, 0x9d, 0xdf, 0x79, 0x82, 0xe3, 0x77, 0x06, 0x5e, - 0xfe, 0x6c, 0x48, 0x7e, 0x29, 0xb8, 0x33, 0xfb, 0x53, 0xac, 0xd2, 0x1c, 0xd3, 0x15, 0x6c, - 0x2e, 0x87, 0x10, 0x6d, 0xe0, 0x7b, 0xbc, 0x7b, 0x49, 0x49, 0xe4, 0x90, 0x7f, 0xfb, 0xf6, - 0xba, 0xbf, 0x6a, 0xc4, 0x64, 0xe9, 0x51, 0xb1, 0x2d, 0x55, 0xe4, 0x8f, 0x71, 0xdb, 0xcf, - 0x6b, 0x80, 0x30, 0x4b, 0xc5, 0xbb, 0xf5, 0x91, 0x80, 0x01, 0x1f, 0x62, 0x53, 0xda, 0xac, - 0xca, 0xc7, 0xfe, 0xb6, 0x97, 0x1a, 0x9f, 0xf4, 0xc5, 0x85, 0x61, 0xd6, 0xf9, 0x56, 0x1a, - 0xbc, 0xfe, 0xdf, 0x57, 0x0a, 0x28, 0xf9, 0x0d, 0x4a, 0x49, 0xfc, 0xf0, 0xde, 0x16, 0x6d, - 0x6b, 0xfd, 0xbe, 0xb9, 0x20, 0xf5, 0xf4, 0x30, 0x16, 0x55, 0x15, 0x79, 0x10, 0xb4, 0xdf, - 0x16, 0x1f, 0xa3, 0x2a, 0xdc, 0x76, 0x2b, 0xb8, 0x06, 0x51, 0x67, 0x89, 0xba, 0xee, 0x9e, - 0x3d, 0x5c, 0xb5, 0xc4, 0x4a, 0x6e, 0x64, 0x75, 0x30, 0xf7, 0x46, 0x79, 0xfe, 0xd5, 0x81, - 0x24, 0xf3, 0x1f, 0xd3, 0x0f, 0x13, 0xcb, 0x33, 0xee, 0x14, 0xcf, 0xc4, 0xc7, 0xac, 0x4a, - 0x12, 0x71, 0x76, 0xb1, 0x1d, 0x45, 0x59, 0x3b, 0xad, 0xea, 0x2c, 0x24, 0x59, 0x8e, 0xad, - 0xfc, 0x7c, 0xdc, 0xe6, 0xb0, 0xfd, 0x6d, 0x9c, 0x23, 0xc3, 0x00, 0x2e, 0xd1, 0x5a, 0xee, - 0x7e, 0x46, 0x3d, 0x7e, 0xca, 0xe5, 0xa7, 0x95, 0xbf, 0xd5, 0xd1, 0xab, 0xe6, 0x23, 0x25, - 0x14, 0x50, 0xe3, 0x13, 0x86, 0x82, 0xca, 0x5d, 0x6d, 0x23, 0xb8, 0x56, 0x6a, 0xd1, 0xf6, - 0x7e, 0x83, 0xeb, 0xe6, 0xe8, 0x40, 0x93, 0xfd, 0x12, 0x04, 0x92, 0x40, 0x7f, 0x3f, 0xeb, - 0xcc, 0x93, 0x00, 0x4b, 0x0b, 0xdd, 0x7b, 0x3b, 0x4a, 0xfb, 0x39, 0x54, 0xd9, 0x10, 0xb9, - 0x34, 0x91, 0x53, 0xe4, 0xde, 0x70, 0xea, 0x74, 0xfa, 0x57, 0x66, 0x3d, 0x2a, 0xc6, 0x1d, - 0xec, 0x23, 0x44, 0x8e, 0x16, 0xf4, 0x83, 0x9e, 0x4a, 0x7b, 0xf1, 0xf2, 0xbc, 0x26, 0x2f, - 0xeb, 0x54, 0x3d, 0xc7, 0xa6, 0x26, 0x3f, 0x78, 0xe0, 0xd6, 0x7f, 0xd2, 0xb2, 0x8c, 0xbb, - 0x1f, 0x8d, 0xf9, 0x6c, 0x42, 0x4b, 0xa4, 0x80, 0xdb, 0x12, 0x98, 0x46, 0x29, 0x36, 0x43, - 0xd6, 0xd5, 0xf0, 0x8b, 0x7a, 0x6c, 0xd4, 0x51, 0x9b, 0x5e, 0xe2, 0xc7, 0xda, 0x7d, 0xbf, - 0x08, 0xa6, 0x81, 0x75, 0x15, 0xe6, 0xe8, 0x72, 0x08, 0xdb, 0x52, 0xbf, 0x5b, 0x59, 0x69, - 0xeb, 0x5a, 0x28, 0xe1, 0x58, 0x04, 0x3a, 0x4f, 0xf1, 0xe1, 0xc7, 0x80, 0x05, 0x16, 0xda, - 0x01, 0xe4, 0xdc, 0xc3, 0x0b, 0x95, 0x74, 0xbb, 0x3b, 0x28, 0x9f, 0xc6, 0xb7, 0x67, 0x12, - 0x28, 0x24, 0xe6, 0xbe, 0x74, 0x16, 0xce, 0x59, 0x4d, 0xe6, 0xd6, 0xc6, 0x6e, 0x52, 0x4b, - 0x86, 0x39, 0xbf, 0x33, 0xf4, 0x29, 0x9f, 0x3e, 0xdf, 0x3f, 0xe6, 0x83, 0xde, 0xca, 0xf5, - 0x18, 0x83, 0x67, 0x6f, 0xd5, 0x60, 0xbe, 0x03, 0x4f, 0xf8, 0x37, 0x36, 0xbf, 0xf6, 0x1c, - 0x0e, 0x6b, 0x9e, 0x99, 0xd6, 0x92, 0x40, 0xdd, 0x49, 0x15, 0x04, 0x33, 0x34, 0xac, 0x27, - 0xdb, 0xd4, 0x66, 0xdf, 0xc6, 0x61, 0xcf, 0x5f, 0x7d, 0x4f, 0xfa, 0x88, 0xa7, 0xd1, 0x00, - 0xe1, 0x64, 0x27, 0xf0, 0xa0, 0xba, 0x20, 0x66, 0xe6, 0x55, 0x22, 0x65, 0x03, 0xb3, 0x93, - 0xbc, 0xaa, 0x9c, 0x95, 0x09, 0x94, 0x84, 0xc5, 0xde, 0x1f, 0xab, 0x78, 0x27, 0xfd, 0x8b, - 0xf0, 0x69, 0xff, 0xbe, 0xab, 0xcf, 0xa8, 0xca, 0x3e, 0x1a, 0xdf, 0x7d, 0x19, 0x92, 0x35, - 0x37, 0x44, 0x30, 0xad, 0xc1, 0xe4, 0x71, 0xc8, 0xc3, 0x40, 0xd2, 0x17, 0xee, 0x0a, 0x17, - 0x49, 0xc7, 0x1a, 0x35, 0xa8, 0x75, 0xb1, 0x33, 0xcf, 0x5b, 0x58, 0x3e, 0x51, 0xbf, 0xd7, - 0x23, 0x42, 0x29, 0xba, 0x6b, 0x4d, 0xd6, 0x1c, 0xda, 0x12, 0x9e, 0x25, 0x42, 0xe5, 0x6d, - 0xa1, 0xd0, 0x17, 0x6f, 0x00, 0xb4, 0x22, 0x3c, 0x91, 0x26, 0x9b, 0x4e, 0x57, 0x2d, 0x98, - 0xcf, 0xbb, 0x26, 0x17, 0xf3, 0xd6, 0x58, 0xa5, 0x78, 0xe2, 0x8d, 0x8f, 0x72, 0xc9, 0xae, - 0xbf, 0x36, 0x7c, 0xa8, 0xca, 0x4c, 0x41, 0x53, 0x18, 0x4d, 0xbf, 0x72, 0xa2, 0xbf, 0x10, - 0x7f, 0x1d, 0xe7, 0xef, 0x5c, 0x60, 0x3f, 0xe3, 0x2c, 0xef, 0xd5, 0x50, 0x6f, 0x0c, 0x89, - 0x9d, 0x5a, 0x5a, 0x2a, 0xee, 0xec, 0xcb, 0x12, 0x9d, 0x97, 0x07, 0x2b, 0x62, 0x9e, 0x1a, - 0x8d, 0x52, 0xdb, 0xb9, 0xf1, 0x54, 0x9f, 0x5d, 0x40, 0x97, 0x0a, 0xb6, 0xc1, 0x65, 0x30, - 0xcb, 0xb4, 0xad, 0xca, 0x53, 0xb8, 0x8b, 0x8f, 0xdc, 0xd1, 0x79, 0x55, 0x3f, 0x5c, 0xd2, - 0xe9, 0x23, 0xf5, 0x16, 0x64, 0x7e, 0xd2, 0x0a, 0x2b, 0x4d, 0x1b, 0x43, 0xab, 0x0b, 0xd6, - 0x60, 0x1c, 0x94, 0xbe, 0xd9, 0x09, 0xe2, 0x4c, 0x36, 0x89, 0xb7, 0xdc, 0x05, 0xca, 0x85, - 0x47, 0x11, 0x5c, 0x43, 0x64, 0x63, 0x31, 0x20, 0xdd, 0x4e, 0x97, 0x5a, 0x69, 0xd5, 0x20, - 0xa7, 0x93, 0x95, 0x1f, 0x7a, 0xc9, 0x7e, 0xb6, 0xf9, 0xec, 0x75, 0x0f, 0xe6, 0xa3, 0x3e, - 0x97, 0x5b, 0x7b, 0xf4, 0xab, 0xcd, 0x84, 0x92, 0xb7, 0xec, 0xd9, 0xc3, 0x5c, 0xf6, 0x97, - 0x18, 0x3f, 0x8a, 0xe9, 0x54, 0x28, 0xd2, 0x01, 0x0d, 0x0b, 0xc6, 0x58, 0xb5, 0xf9, 0x3c, - 0x71, 0x82, 0x0d, 0xa7, 0x98, 0x2a, 0xb8, 0x1c, 0xb8, 0xdc, 0x8b, 0xd3, 0x92, 0x34, 0xf6, - 0xcc, 0xe6, 0xf8, 0x2e, 0x0a, 0xcc, 0x3f, 0x56, 0x37, 0xa6, 0x99, 0x42, 0xd8, 0x28, 0x32, - 0xa1, 0xcf, 0x68, 0xcc, 0x73, 0xdd, 0xb4, 0xc0, 0x29, 0x36, 0x03, 0xda, 0x8e, 0x3f, 0xa2, - 0x5f, 0x3d, 0xef, 0x0c, 0xd5, 0xd8, 0x61, 0x44, 0xd9, 0x31, 0xec, 0xa4, 0x35, 0xfd, 0x69, - 0x10, 0x78, 0xc8, 0x1c, 0x0b, 0x34, 0x27, 0xe8, 0x7c, 0xdb, 0x77, 0xff, 0x9e, 0x96, 0x2e, - 0x6d, 0x83, 0x66, 0x5c, 0x6a, 0x63, 0x61, 0x79, 0xd5, 0xee, 0xb7, 0x75, 0xe8, 0x88, 0xc7, - 0x97, 0xc2, 0xce, 0x46, 0xbe, 0x19, 0xfb, 0x1b, 0x1c, 0xd9, 0x64, 0x92, 0x75, 0x6a, 0x0e, - 0xd5, 0x41, 0xc1, 0xc1, 0xfc, 0x55, 0x65, 0x6e, 0x03, 0x4f, 0x4c, 0xfa, 0xc5, 0x9e, 0xc8, - 0x1a, 0xfb, 0x35, 0x60, 0xb1, 0xe0, 0x74, 0xad, 0xda, 0x5f, 0x56, 0x8c, 0xb3, 0xfc, 0xf3, - 0x46, 0x68, 0xcc, 0x19, 0xb2, 0x9d, 0x8d, 0xb3, 0x81, 0x11, 0x98, 0x87, 0x48, 0xce, 0xd8, - 0x3c, 0x5e, 0x91, 0xca, 0xc5, 0xa5, 0x13, 0xd0, 0x6f, 0x35, 0x7f, 0xce, 0x3e, 0xc5, 0xab, - 0x3f, 0xa2, 0x0d, 0x6b, 0x0d, 0xad, 0xe6, 0x34, 0xad, 0xc4, 0x9a, 0xd2, 0x90, 0xb1, 0xa2, - 0xf6, 0xb7, 0x57, 0x6f, 0xfb, 0x7a, 0xaf, 0xfc, 0xaa, 0x6c, 0xfe, 0x0c, 0x4f, 0xac, 0x4d, - 0x8e, 0xcc, 0x37, 0x76, 0xe8, 0x68, 0x4d, 0x2f, 0x07, 0x02, 0xdb, 0x8b, 0x41, 0x90, 0xf0, - 0x97, 0x27, 0x1c, 0xfe, 0xa6, 0xeb, 0x53, 0xfd, 0xd8, 0xf6, 0x5d, 0xc9, 0x62, 0x46, 0x88, - 0xeb, 0xeb, 0x23, 0x0a, 0xd2, 0xf9, 0xb1, 0x92, 0xdc, 0x9b, 0x59, 0xf5, 0xfa, 0x2f, 0xce, - 0xfb, 0x12, 0xb8, 0x2e, 0xf1, 0x29, 0x72, 0x4e, 0xf1, 0x4e, 0xe3, 0x27, 0xd8, 0xee, 0xe0, - 0x9a, 0x1d, 0x50, 0xbe, 0x9a, 0xc3, 0xb2, 0x4c, 0x7a, 0x07, 0xc8, 0xa6, 0x43, 0x2c, 0x26, - 0x78, 0x58, 0xd1, 0xc3, 0x0c, 0xeb, 0x2e, 0x22, 0xcc, 0x41, 0x30, 0x0b, 0x6f, 0x80, 0x63, - 0x16, 0xad, 0xe9, 0xfd, 0x6a, 0xb7, 0xa5, 0xca, 0x22, 0x8c, 0xc8, 0x13, 0xfd, 0xe0, 0x1c, - 0xb0, 0x5d, 0x79, 0x5d, 0x6b, 0xee, 0xb5, 0x32, 0x2e, 0x88, 0x84, 0xf7, 0x17, 0xba, 0xf7, - 0xb0, 0x4a, 0x62, 0xd6, 0x4b, 0x74, 0x77, 0x44, 0x6e, 0xbb, 0xcf, 0x6a, 0x9a, 0x1c, 0x87, - 0xbe, 0x27, 0x1b, 0x62, 0x92, 0x48, 0x6a, 0x9e, 0x6e, 0x79, 0xfc, 0x69, 0xf9, 0x30, 0xf0, - 0xa1, 0xb2, 0x00, 0xe5, 0x47, 0xf6, 0x34, 0x40, 0x35, 0x3f, 0x8a, 0x34, 0x35, 0xdf, 0x4d, - 0x53, 0xb0, 0xa9, 0xbc, 0x50, 0x73, 0x0f, 0x02, 0x99, 0x05, 0x25, 0x7b, 0x7e, 0x92, 0x97, - 0xb5, 0x18, 0xc7, 0xec, 0x1f, 0x47, 0x70, 0x1e, 0x65, 0xc5, 0x84, 0x24, 0x40, 0x62, 0x90, - 0x5e, 0xd0, 0x9b, 0x36, 0xb0, 0x10, 0x07, 0x5e, 0x98, 0xe1, 0x84, 0x2f, 0x8e, 0x86, 0x53, - 0x38, 0x96, 0x30, 0xd3, 0xd2, 0x73, 0x16, 0xca, 0xb5, 0x96, 0xaf, 0x23, 0x82, 0x5a, 0xa3, - 0x36, 0x80, 0x4f, 0x36, 0x50, 0x49, 0x72, 0x39, 0x4d, 0x88, 0x7d, 0x5d, 0xb8, 0x31, 0x5e, - 0x37, 0x5d, 0xaf, 0x7e, 0x98, 0x4b, 0xfd, 0xae, 0x65, 0x1b, 0x39, 0x13, 0x27, 0xa1, 0x97, - 0xe3, 0xc4, 0xc1, 0x81, 0x70, 0xae, 0x0d, 0x32, 0xe5, 0x9c, 0xa6, 0xcb, 0x9a, 0xd3, 0x20, - 0xd6, 0xf1, 0x92, 0x38, 0xce, 0xfc, 0xa6, 0x99, 0x8c, 0xd1, 0x37, 0x16, 0xe9, 0x37, 0xd6, - 0x65, 0xfc, 0x2f, 0x6d, 0xe9, 0xde, 0x4c, 0xb5, 0xf5, 0x50, 0x47, 0xb1, 0x85, 0x6b, 0xca, - 0xa4, 0x82, 0x6c, 0x16, 0xf8, 0x8f, 0x39, 0x10, 0x6d, 0x46, 0x8c, 0xf4, 0x91, 0xa5, 0x3b, - 0x58, 0xaa, 0xce, 0x36, 0x79, 0xbb, 0x3a, 0xe9, 0xb2, 0x86, 0xac, 0x51, 0x7f, 0x0a, 0x34, - 0x84, 0x81, 0x65, 0x56, 0x6d, 0xd3, 0xd1, 0x0a, 0xbd, 0x9e, 0xee, 0x6f, 0x8f, 0x37, 0xbf, - 0x79, 0x85, 0xf9, 0x0b, 0x6a, 0x0a, 0x89, 0x39, 0xa1, 0x4c, 0x91, 0xd4, 0xc5, 0xb2, 0xfc, - 0x3e, 0x97, 0xe7, 0x71, 0xc5, 0xb4, 0xd3, 0x5a, 0x44, 0x39, 0x40, 0x2c, 0x36, 0xd6, 0xfd, - 0x47, 0x9b, 0x44, 0xc8, 0xe3, 0x96, 0xd8, 0x95, 0xca, 0xe2, 0x02, 0xa1, 0xba, 0xfb, 0x89, - 0x87, 0x95, 0x0e, 0x49, 0xa0, 0x0e, 0xdd, 0xbc, 0xab, 0x7e, 0xb1, 0x21, 0x49, 0x55, 0x8f, - 0x20, 0xd4, 0x51, 0xb5, 0x70, 0x94, 0x3b, 0xed, 0x14, 0x92, 0xda, 0xe6, 0xec, 0x97, 0x9e, - 0x16, 0xf0, 0x6f, 0x8e, 0x20, 0x11, 0x7d, 0x94, 0x92, 0x28, 0x9d, 0xff, 0xb3, 0x42, 0x78, - 0x44, 0x5c, 0x8d, 0x26, 0x5e, 0x88, 0x09, 0x42, 0xe3, 0xeb, 0x56, 0x3e, 0xf2, 0xbb, 0x89, - 0x3d, 0x4b, 0xfb, 0x14, 0xf0, 0x8b, 0x97, 0x0a, 0xa3, 0x2f, 0xa2, 0xe6, 0xea, 0xdd, 0xac, - 0x48, 0x4f, 0xcb, 0x30, 0xf2, 0x14, 0x24, 0x8e, 0x20, 0x95, 0x4e, 0x2d, 0x1f, 0xb7, 0x6d, - 0xed, 0x90, 0x25, 0x93, 0xda, 0xd1, 0xa1, 0x4f, 0xbd, 0x26, 0xcc, 0x36, 0x48, 0x24, 0xe9, - 0xf9, 0xb7, 0xec, 0xd9, 0x8e, 0x64, 0x8c, 0xa0, 0xdb, 0x69, 0x3f, 0x7b, 0xbb, 0x8e, 0xc7, - 0x94, 0xad, 0x3b, 0x21, 0xd7, 0xb5, 0x88, 0x19, 0x29, 0x7a, 0x15, 0x46, 0x5d, 0x42, 0x17, - 0xe5, 0x33, 0xf2, 0x0e, 0x58, 0xbb, 0x3e, 0x1f, 0x1c, 0xad, 0x86, 0x4f, 0xd2, 0x97, 0x3d, - 0x75, 0x48, 0xd4, 0xdb, 0x9d, 0x71, 0xa3, 0x94, 0x1e, 0xbe, 0x2f, 0xf3, 0x82, 0x48, 0x16, - 0x4e, 0xcd, 0x5f, 0x81, 0x7a, 0x57, 0x95, 0x45, 0xff, 0x27, 0xbe, 0xdc, 0xd5, 0x68, 0xb7, - 0xff, 0x1e, 0x50, 0xbe, 0x1d, 0xf6, 0x8a, 0x6d, 0xe2, 0xda, 0xb5, 0x0f, 0xf2, 0xf7, 0x06, - 0xa7, 0x51, 0x3f, 0x0b, 0xc3, 0xf5, 0x23, 0x41, 0xa5, 0x8b, 0xfe, 0x86, 0xd4, 0x04, 0xe2, - 0x36, 0xce, 0xe2, 0xa6, 0xf6, 0x75, 0xd5, 0x43, 0xf6, 0x61, 0x24, 0x00, 0xa2, 0x13, 0xdc, - 0x87, 0x03, 0xd0, 0x09, 0x58, 0x66, 0xc4, 0x00, 0xc4, 0x86, 0xdf, 0xcf, 0x23, 0xea, 0xbe, - 0xe4, 0xcd, 0x64, 0xef, 0x02, 0x75, 0x35, 0xcc, 0x55, 0xfe, 0x35, 0x95, 0xb2, 0x22, 0x63, - 0xaf, 0xe3, 0x4e, 0x10, 0x27, 0x90, 0x45, 0x8f, 0xa8, 0xb4, 0x8f, 0x30, 0xe9, 0x5a, 0x1f, - 0xdf, 0xd6, 0x90, 0x9b, 0x30, 0x1c, 0xdf, 0xdb, 0x65, 0x37, 0x71, 0x02, 0xb4, 0x12, 0xf2, - 0x94, 0x24, 0x32, 0x81, 0x50, 0x93, 0x21, 0xb0, 0xdc, 0xdf, 0xb7, 0xa6, 0xfe, 0x0b, 0xe8, - 0xfc, 0x42, 0x78, 0x15, 0x9d, 0xd8, 0xe5, 0xf6, 0xfd, 0x7d, 0xb7, 0x12, 0xce, 0xb2, 0x93, - 0x98, 0x09, 0x33, 0x66, 0x13, 0x49, 0xc1, 0x0d, 0x54, 0x79, 0x5e, 0x3c, 0x90, 0x66, 0xc9, - 0x23, 0x9b, 0x28, 0xe1, 0x5f, 0xb3, 0x96, 0x1b, 0x65, 0x1f, 0xcb, 0xb5, 0x5c, 0xc3, 0x08, - 0xef, 0xb3, 0xe9, 0x48, 0x5d, 0x2f, 0x12, 0x8e, 0x21, 0x17, 0xc4, 0x0c, 0x02, 0xe2, 0x43, - 0xcd, 0xc8, 0x6a, 0x90, 0xd5, 0x0c, 0xf3, 0x33, 0xc0, 0xa2, 0x3a, 0x80, 0xd7, 0x73, 0x8d, - 0xf0, 0x4b, 0x7c, 0xaf, 0x90, 0x0e, 0x0e, 0xa1, 0x51, 0xb0, 0x44, 0x2a, 0x39, 0x9a, 0xbf, - 0xcb, 0x4a, 0x27, 0x43, 0xfb, 0x9d, 0xd8, 0x34, 0xde, 0x55, 0xe4, 0x0d, 0x29, 0x00, 0x8b, - 0x8e, 0xf9, 0xbb, 0x7b, 0xe1, 0x62, 0x56, 0xb2, 0x70, 0xfc, 0x7b, 0x96, 0xac, 0x32, 0x7b, - 0xa5, 0x2b, 0xce, 0xb2, 0x12, 0x49, 0xd3, 0x26, 0x14, 0x6a, 0xed, 0x0b, 0x4c, 0x34, 0xa4, - 0x3d, 0xf4, 0x95, 0x0b, 0xc9, 0x94, 0xf3, 0x4c, 0xdd, 0x9c, 0xa0, 0xf0, 0xb0, 0x65, 0x9d, - 0xaf, 0x7e, 0xdd, 0xf8, 0x66, 0x3e, 0x98, 0xb4, 0xc1, 0x63, 0x59, 0xab, 0x48, 0x85, 0x9f, - 0xd3, 0xda, 0x0a, 0x03, 0xb7, 0x01, 0x4f, 0xfd, 0xa5, 0x0d, 0xef, 0x00, 0xda, 0x89, 0x09, - 0xab, 0xfa, 0x31, 0x9d, 0x4e, 0xe4, 0xe4, 0xfc, 0x03, 0xae, 0xa2, 0x8b, 0xb8, 0xb8, 0xae, - 0xa5, 0x21, 0x6c, 0xbe, 0xae, 0x99, 0x1c, 0x04, 0xb8, 0x60, 0xbd, 0x9d, 0x74, 0x17, 0x75, - 0xfb, 0x53, 0x6f, 0x74, 0x1b, 0x77, 0x3a, 0xb4, 0x16, 0x66, 0x8b, 0xe3, 0x02, 0x59, 0x85, - 0xf7, 0x49, 0xc2, 0x80, 0x06, 0xc4, 0x32, 0x27, 0x1a, 0x08, 0x58, 0x71, 0x5f, 0x0f, 0xa6, - 0xf2, 0x4b, 0xbc, 0x18, 0x9e, 0x6e, 0xba, 0x3b, 0xc2, 0xcc, 0xb2, 0x24, 0xae, 0x55, 0x88, - 0x0d, 0x1b, 0x11, 0xae, 0x02, 0x93, 0x1a, 0xdd, 0xc4, 0x41, 0xa3, 0xb4, 0xd9, 0x21, 0xc0, - 0x2b, 0x06, 0x8d, 0xe9, 0x3c, 0xa6, 0x79, 0xa6, 0x96, 0xa4, 0x08, 0x17, 0xbe, 0x38, 0x51, - 0xca, 0x7e, 0xd0, 0x55, 0xff, 0x1e, 0xcf, 0xf3, 0xd0, 0xc2, 0x07, 0x44, 0x28, 0xe7, 0xa7, - 0xfc, 0xea, 0x99, 0x30, 0x17, 0xbe, 0xb1, 0x1a, 0xe2, 0x1d, 0x33, 0x93, 0xbf, 0x39, 0x89, - 0x32, 0x1a, 0x49, 0x0a, 0xb6, 0xba, 0x78, 0x11, 0x30, 0xdf, 0xdb, 0x54, 0xe1, 0x43, 0xe7, - 0x92, 0xbe, 0x26, 0xe3, 0xd9, 0x01, 0xe3, 0x4c, 0xf5, 0xa4, 0x96, 0x18, 0x24, 0x11, 0x92, - 0x60, 0x85, 0x00, 0x01, 0x05, 0xf4, 0x1f, 0x1e, 0x05, 0x2e, 0x4c, 0x18, 0x50, 0xaa, 0x6b, - 0x6c, 0x41, 0xd8, 0xa6, 0xb3, 0x33, 0x0f, 0x9b, 0x39, 0x0b, 0x91, 0x88, 0x86, 0x21, 0x9f, - 0xbe, 0x2a, 0xa4, 0x6f, 0xf9, 0xbe, 0x2d, 0x94, 0x35, 0xb3, 0x40, 0x08, 0xce, 0x30, 0x81, - 0xb0, 0x3c, 0xc0, 0x90, 0x08, 0x4d, 0x98, 0xc7, 0xc2, 0xbe, 0x69, 0x03, 0x22, 0xa0, 0xe4, - 0x53, 0xb6, 0xb4, 0xca, 0x20, 0x72, 0x79, 0x88, 0xa3, 0xb7, 0x27, 0x0b, 0xda, 0x38, 0xbb, - 0xbc, 0x59, 0x9a, 0x16, 0x1a, 0x1a, 0x18, 0xd9, 0x08, 0x43, 0xa9, 0xad, 0x62, 0xf9, 0xad, - 0xd0, 0x12, 0x39, 0xa8, 0xb0, 0xe5, 0xd7, 0x44, 0x8b, 0xef, 0xf4, 0x1d, 0xff, 0x8f, 0x58, - 0x27, 0x4c, 0x3d, 0xbd, 0x40, 0xc4, 0xaa, 0x1e, 0x02, 0x50, 0x4c, 0x9d, 0xb2, 0x7a, 0x51, - 0x07, 0x59, 0x8f, 0x30, 0x5c, 0x3f, 0x37, 0xa3, 0x60, 0xed, 0xae, 0x83, 0xb6, 0xbb, 0xa7, - 0x98, 0xcf, 0x31, 0x99, 0x8e, 0x27, 0x67, 0x54, 0x82, 0x72, 0xc3, 0xd7, 0x9b, 0x20, 0xc2, - 0xb0, 0x99, 0xd1, 0x0d, 0x78, 0x38, 0x9d, 0x17, 0x4d, 0xdb, 0x82, 0x9e, 0xb4, 0x1b, 0xb6, - 0x67, 0x1f, 0xf0, 0x5b, 0xe7, 0xac, 0xff, 0xee, 0xbe, 0x15, 0x27, 0x7f, 0x6c, 0xdd, 0x50, - 0x9a, 0x9a, 0x7f, 0x93, 0x0c, 0xbb, 0x01, 0x75, 0xa8, 0x8d, 0xb8, 0x91, 0x0b, 0xed, 0x1a, - 0x93, 0xac, 0x41, 0x9e, 0xa9, 0xd3, 0x30, 0xc8, 0x3d, 0xe1, 0xbd, 0x38, 0x8c, 0x5b, 0xbc, - 0x9c, 0x44, 0x19, 0xde, 0x0c, 0xb7, 0x1f, 0xf8, 0xbc, 0x34, 0x9a, 0x9a, 0x57, 0x85, 0xd5, - 0xf3, 0xb7, 0x19, 0x67, 0x5a, 0xdd, 0xc8, 0x57, 0x6d, 0x84, 0xef, 0x0f, 0x81, 0x97, 0x0d, - 0x0a, 0xc1, 0xd4, 0x30, 0xc4, 0x9a, 0xc5, 0x48, 0x58, 0x7f, 0x5c, 0x1b, 0x65, 0x9f, 0x89, - 0xc0, 0x48, 0x41, 0xee, 0x51, 0xb1, 0x06, 0xd7, 0x24, 0x27, 0x4e, 0xb3, 0x4a, 0xe6, 0x95, - 0xb7, 0x5a, 0x20, 0xe3, 0xfb, 0x0b, 0x31, 0x15, 0x9e, 0xf5, 0x0d, 0xb6, 0x10, 0x41, 0x04, - 0xb2, 0x26, 0x55, 0x08, 0xed, 0xd6, 0xac, 0x2e, 0xe4, 0x00, 0x21, 0x19, 0xe0, 0x7e, 0xdf, - 0xd4, 0xd5, 0x9f, 0x98, 0x6f, 0x1f, 0x2c, 0xd1, 0x8c, 0x71, 0x0b, 0x9f, 0xdf, 0xe7, 0xdf, - 0x73, 0x1f, 0xb6, 0x41, 0x15, 0x1f, 0x5b, 0x97, 0xea, 0x3b, 0xe1, 0x22, 0x38, 0xd9, 0x26, - 0xfd, 0x1d, 0x4f, 0x02, 0x90, 0x55, 0x24, 0x2b, 0x3a, 0x00, 0x64, 0x9c, 0x53, 0xe1, 0x0d, - 0x20, 0x46, 0xd6, 0xc8, 0xa1, 0xda, 0x27, 0x07, 0x2e, 0xac, 0x0c, 0xdb, 0xfe, 0x40, 0x1e, - 0x7a, 0xdf, 0xd2, 0x59, 0xec, 0xcf, 0xc3, 0x70, 0xb1, 0xd1, 0x05, 0x47, 0x6d, 0x88, 0x18, - 0x5f, 0x90, 0xd6, 0x52, 0xd7, 0x3c, 0xb0, 0x35, 0x1e, 0x1a, 0xca, 0x1b, 0xe2, 0x79, 0x43, - 0x68, 0x64, 0x46, 0x1d, 0x72, 0xce, 0x06, 0x5a, 0x12, 0xb8, 0xb4, 0x11, 0x1a, 0x9e, 0x9a, - 0x28, 0x07, 0xa3, 0xc4, 0x56, 0x06, 0x51, 0x90, 0x80, 0x5e, 0x34, 0x7a, 0xd2, 0xbe, 0x02, - 0x98, 0x9f, 0x45, 0x01, 0xae, 0x04, 0xca, 0x08, 0x7f, 0x78, 0x86, 0x8c, 0x4f, 0x61, 0xee, - 0x82, 0x21, 0x5f, 0x73, 0x6a, 0xfe, 0x64, 0x5b, 0x89, 0xa9, 0x24, 0x36, 0x70, 0xa1, 0x15, - 0xd4, 0x04, 0x7d, 0xa9, 0x0e, 0x78, 0x98, 0x4c, 0xe5, 0x1d, 0x9b, 0x08, 0x23, 0x2a, 0x4f, - 0x2b, 0xaf, 0xfc, 0x13, 0x09, 0x14, 0xed, 0xf5, 0x36, 0x70, 0x4c, 0xff, 0x20, 0x0b, 0x0a, - 0xb7, 0x35, 0xaf, 0x88, 0xd6, 0x95, 0xd4, 0x85, 0xf9, 0x09, 0xa9, 0x47, 0x3b, 0x64, 0x9d, - 0x67, 0x30, 0xe4, 0x85, 0x56, 0x35, 0x2f, 0xf5, 0xf4, 0xa4, 0xb1, 0xb1, 0xe9, 0xc1, 0x26, - 0x4d, 0x31, 0x3c, 0xdd, 0x2e, 0x15, 0x16, 0x13, 0xdf, 0x78, 0x00, 0x74, 0xf6, 0x36, 0xbb, - 0x7d, 0x93, 0xbd, 0x1a, 0x25, 0x24, 0x27, 0x57, 0xf6, 0xec, 0x62, 0x57, 0x4e, 0x54, 0x85, - 0xc3, 0x39, 0x77, 0x94, 0x17, 0x06, 0x06, 0x99, 0x60, 0xc1, 0xac, 0x98, 0xfb, 0xab, 0xfc, - 0xe6, 0x83, 0x3f, 0x73, 0xcc, 0x13, 0x26, 0xbc, 0xb9, 0xcf, 0xed, 0xf6, 0x24, 0x7e, 0x83, - 0x00, 0x20, 0x6c, 0x94, 0x96, 0x6b, 0x11, 0x73, 0xe8, 0x32, 0x08, 0xe2, 0xa2, 0x96, 0x6e, - 0x23, 0xf6, 0xf6, 0x9e, 0x08, 0x2d, 0xc0, 0x89, 0xe2, 0x71, 0xdc, 0x97, 0xc7, 0x88, 0xed, - 0x1a, 0xf4, 0xac, 0xc4, 0x01, 0xbc, 0xf0, 0x44, 0x44, 0x57, 0x7a, 0x40, 0xcc, 0xd2, 0x74, - 0x6f, 0x6d, 0x92, 0x47, 0xfc, 0x06, 0x36, 0x51, 0x0e, 0xe0, 0x8e, 0xb0, 0x2d, 0x66, 0x05, - 0x5b, 0x29, 0xe5, 0x81, 0x91, 0xc2, 0x86, 0x0c, 0x30, 0xcd, 0x0c, 0x25, 0xfb, 0x1c, 0xd8, - 0x46, 0xd2, 0xb2, 0x3a, 0x26, 0x36, 0x31, 0x09, 0x24, 0x81, 0xff, 0x30, 0x55, 0x79, 0xd5, - 0x1b, 0x3b, 0x6e, 0xbe, 0xa6, 0x41, 0x8d, 0x95, 0xee, 0xaa, 0x06, 0xca, 0xa2, 0x85, 0xf0, - 0xca, 0xd8, 0x89, 0xcd, 0x95, 0x41, 0x3d, 0x8f, 0xd2, 0xa7, 0xc4, 0xa8, 0x30, 0x49, 0x89, - 0x0c, 0xc9, 0xa1, 0x9e, 0x53, 0xe7, 0xca, 0xdb, 0x33, 0x94, 0x79, 0xbe, 0x9a, 0x6e, 0xa3, - 0xa9, 0x52, 0xa0, 0xe7, 0x72, 0x9e, 0x94, 0xcf, 0x61, 0x49, 0x55, 0xda, 0x7d, 0x69, 0xe5, - 0xff, 0xcc, 0xde, 0x17, 0x35, 0x96, 0xce, 0xd6, 0x8f, 0x0f, 0x64, 0x1b, 0x13, 0xab, 0x29, - 0x77, 0x6c, 0x3e, 0x96, 0x02, 0xc9, 0xbc, 0x8e, 0xf9, 0xdd, 0x3e, 0x3d, 0xf7, 0xe7, 0x6a, - 0x9e, 0x58, 0x54, 0x88, 0xf5, 0xb1, 0x20, 0x71, 0xf1, 0x5d, 0x64, 0x4e, 0xa2, 0xab, 0x1e, - 0x01, 0x53, 0x76, 0x67, 0x47, 0x78, 0x34, 0xe4, 0x46, 0x50, 0x38, 0x33, 0x0d, 0xb3, 0x62, - 0x0a, 0x4e, 0x3b, 0x40, 0x5c, 0x52, 0xa9, 0xe7, 0x27, 0x77, 0xb4, 0xad, 0x6c, 0x45, 0x8b, - 0x68, 0xdc, 0x26, 0xea, 0x4c, 0x83, 0x5a, 0x86, 0x76, 0x19, 0x02, 0xc0, 0xa1, 0x14, 0xd8, - 0x33, 0x58, 0x6c, 0x2c, 0x78, 0x9c, 0xda, 0x6f, 0x64, 0xbd, 0x47, 0x7f, 0xe7, 0x43, 0x05, - 0x4b, 0x1f, 0x74, 0xb3, 0x23, 0x11, 0xd3, 0x35, 0xd8, 0x9a, 0x19, 0xeb, 0xcc, 0xcf, 0x86, - 0x56, 0xd3, 0x8a, 0xfb, 0x48, 0x45, 0x87, 0xfa, 0x5b, 0x8b, 0xa7, 0xe7, 0xb0, 0x67, 0x6b, - 0xf1, 0x4c, 0x69, 0x8c, 0x52, 0xda, 0x37, 0xc1, 0x2b, 0x91, 0x50, 0xb4, 0xa8, 0x11, 0xcd, - 0x41, 0xaf, 0xd4, 0xea, 0xed, 0xc9, 0x00, 0x6c, 0x3a, 0x67, 0xe3, 0xbc, 0x0b, 0x80, 0xd4, - 0x04, 0xc2, 0x7c, 0x8d, 0xa7, 0x64, 0x28, 0x49, 0x12, 0xcc, 0x60, 0x7a, 0xe6, 0xdf, 0x5b, - 0xdb, 0x77, 0xe8, 0x4d, 0x69, 0xba, 0xcb, 0x08, 0x04, 0x6a, 0x03, 0xbb, 0x63, 0x05, 0x53, - 0xb6, 0x86, 0x72, 0x06, 0x49, 0x20, 0x4b, 0x47, 0x59, 0xe2, 0x0d, 0x7f, 0xf7, 0xfc, 0xb7, - 0x82, 0x78, 0xf9, 0x60, 0xcf, 0x4f, 0x83, 0x27, 0xdb, 0x11, 0x59, 0x51, 0xfc, 0x18, 0x8f, - 0xb8, 0xfc, 0xc4, 0xb0, 0xf2, 0x3c, 0x8b, 0x71, 0xc3, 0x4e, 0x5f, 0x89, 0x3d, 0x51, 0x4c, - 0xe1, 0xd6, 0x26, 0x4f, 0xb4, 0xe5, 0xe4, 0xec, 0x2c, 0x64, 0x47, 0x4f, 0x3f, 0x3f, 0x31, - 0xc3, 0xaf, 0x8b, 0xb2, 0x90, 0x77, 0xd6, 0xe9, 0xb9, 0x37, 0x8d, 0x32, 0x18, 0xa6, 0x2b, - 0x9c, 0x60, 0xe8, 0xc7, 0x91, 0x82, 0xa1, 0x2a, 0x2b, 0x37, 0x1c, 0x29, 0x1e, 0xfe, 0x4d, - 0x5b, 0xe1, 0x0f, 0x5a, 0xfa, 0x00, 0x55, 0xc0, 0xa1, 0x69, 0x3c, 0x1a, 0x39, 0xa1, 0x5f, - 0x6d, 0x09, 0x76, 0x9d, 0x72, 0x7d, 0x98, 0x4d, 0x9e, 0x60, 0x9e, 0xb6, 0x7f, 0x8a, 0xea, - 0x4f, 0xd0, 0xf5, 0x7b, 0xf4, 0xf3, 0x94, 0xc3, 0x70, 0xde, 0xf2, 0xa6, 0x82, 0xe3, 0x82, - 0x3b, 0x68, 0x62, 0x30, 0x36, 0x51, 0x8e, 0x18, 0xc0, 0x29, 0x21, 0x95, 0x16, 0x13, 0x9d, - 0x3a, 0x31, 0xae, 0x6d, 0xa8, 0x72, 0x8d, 0xf1, 0x75, 0x4d, 0xc1, 0x9f, 0xf8, 0x34, 0x41, - 0xb2, 0xed, 0x62, 0x56, 0xde, 0x08, 0x92, 0x72, 0x9a, 0xd4, 0x86, 0xbd, 0xc8, 0xca, 0x03, - 0x2b, 0x4b, 0xaa, 0x87, 0x3b, 0xb4, 0x19, 0x03, 0x09, 0x89, 0x07, 0x06, 0xb0, 0x3d, 0x50, - 0x89, 0x83, 0x7e, 0x72, 0x00, 0xd7, 0x88, 0x23, 0x82, 0x42, 0xa8, 0xe9, 0x0e, 0xc1, 0x2a, - 0xb7, 0x54, 0x4a, 0x9a, 0x83, 0x52, 0xe1, 0x59, 0x12, 0x38, 0xf6, 0x95, 0xc4, 0xfb, 0x9b, - 0xe6, 0xee, 0xa9, 0x75, 0xa6, 0xa9, 0x14, 0xc3, 0xbd, 0x17, 0x51, 0x80, 0x59, 0x0c, 0x30, - 0x39, 0x9d, 0xfc, 0x6c, 0x96, 0x6e, 0x0b, 0xed, 0x90, 0x55, 0xd1, 0xa7, 0x77, 0x41, 0xb9, - 0xe2, 0xd6, 0x3b, 0x6b, 0x0e, 0xd8, 0xb8, 0x32, 0xf7, 0xfa, 0xe7, 0x13, 0x13, 0xdc, 0x7a, - 0x97, 0xc8, 0x5d, 0x52, 0x2b, 0xcc, 0x29, 0xcb, 0xd1, 0x39, 0x7d, 0xdc, 0x87, 0x54, 0xd7, - 0x1c, 0x9a, 0x88, 0x6c, 0x40, 0xe2, 0x5d, 0xb8, 0x9e, 0x0b, 0x0d, 0x99, 0xa8, 0x23, 0x8a, - 0x17, 0x88, 0x7e, 0x01, 0x91, 0x7b, 0xfc, 0x21, 0xb9, 0x82, 0x5f, 0x76, 0xef, 0x1e, 0xfd, - 0xb1, 0x11, 0xa2, 0x7a, 0x24, 0x65, 0x2e, 0x05, 0x3d, 0xc6, 0x5b, 0xf5, 0x49, 0x49, 0x60, - 0x24, 0xae, 0x64, 0xca, 0xbc, 0xc9, 0x65, 0x25, 0xdd, 0xeb, 0xa2, 0x43, 0x1e, 0x1f, 0x3a, - 0xfc, 0xba, 0x36, 0x74, 0xe0, 0x05, 0x03, 0xdf, 0x89, 0xbe, 0xf5, 0x29, 0x42, 0xd7, 0x5b, - 0x3f, 0x8b, 0x16, 0x64, 0x1d, 0x98, 0x7f, 0x3d, 0xf3, 0xa5, 0x0e, 0xcb, 0x28, 0x86, 0xc6, - 0x5b, 0xce, 0x7d, 0xd6, 0x16, 0xba, 0x75, 0x3a, 0x9b, 0xf6, 0x36, 0x70, 0x63, 0x1f, 0x61, - 0x1c, 0x72, 0x6c, 0x27, 0x0d, 0x2f, 0x43, 0x71, 0xb5, 0xc0, 0xeb, 0x8a, 0x2e, 0x4d, 0xd8, - 0x01, 0x59, 0x4b, 0x12, 0x70, 0x76, 0xde, 0xb6, 0x0c, 0xf0, 0x74, 0x56, 0xc2, 0x1d, 0x43, - 0x61, 0x0c, 0x38, 0x22, 0x0a, 0x85, 0x35, 0x59, 0x5b, 0x40, 0xd9, 0x9b, 0x46, 0x5f, 0x10, - 0x9f, 0x0a, 0xad, 0x0f, 0x0d, 0x83, 0x0e, 0xb6, 0xcd, 0xa5, 0xdf, 0x21, 0x7c, 0x10, 0x1c, - 0x62, 0x24, 0xb9, 0xd9, 0x89, 0xf2, 0x01, 0x64, 0x3a, 0x75, 0xb8, 0x34, 0x8f, 0x9d, 0xd8, - 0x9e, 0x0a, 0x7f, 0x93, 0x68, 0x60, 0xa1, 0x02, 0xa1, 0x52, 0xf0, 0x6f, 0x23, 0xc1, 0x06, - 0x41, 0xc1, 0x90, 0xcf, 0xfd, 0x69, 0xe4, 0x16, 0xb0, 0xf9, 0x29, 0x35, 0x70, 0x34, 0x49, - 0x07, 0xb4, 0x87, 0x62, 0x6f, 0x8d, 0x13, 0x6d, 0xe4, 0x57, 0xef, 0x43, 0x68, 0xf8, 0x6f, - 0x2e, 0x29, 0xe6, 0x65, 0x94, 0x67, 0x2c, 0x3a, 0x6d, 0x57, 0x4e, 0xfb, 0x00, 0x55, 0x85, - 0xed, 0x5e, 0x6b, 0xa0, 0x7a, 0x07, 0xad, 0x91, 0x32, 0xea, 0xb3, 0x6b, 0xcf, 0x4c, 0xe7, - 0x16, 0x36, 0xee, 0xcf, 0x62, 0x12, 0x68, 0x7c, 0x5d, 0xb8, 0xad, 0xbb, 0x8a, 0x87, 0x02, - 0x8e, 0xe7, 0xfc, 0x2e, 0xd4, 0x06, 0x0c, 0x4c, 0x0f, 0x31, 0x48, 0x75, 0xda, 0xd3, 0x22, - 0xfd, 0x20, 0x39, 0x48, 0xda, 0xfb, 0x1f, 0x36, 0x51, 0x04, 0x7b, 0x5c, 0x4c, 0xd1, 0xaa, - 0xe6, 0x0b, 0x0b, 0xa1, 0x01, 0xff, 0x5d, 0x59, 0x82, 0xa5, 0x82, 0x1a, 0x83, 0x0e, 0x32, - 0x0c, 0x04, 0xce, 0x93, 0xc9, 0xd2, 0xd4, 0x9b, 0x93, 0x8c, 0x7d, 0x6c, 0x7f, 0x72, 0xfd, - 0x14, 0x36, 0x89, 0x3f, 0x5f, 0x3e, 0xad, 0xa0, 0xfc, 0x66, 0x61, 0x23, 0x12, 0x46, 0xe0, - 0xf9, 0xe4, 0x63, 0xd8, 0x35, 0x54, 0x53, 0xe2, 0x83, 0x56, 0x93, 0x12, 0x37, 0xb3, 0xce, - 0xd8, 0x3d, 0xcf, 0x4e, 0x03, 0x24, 0xb6, 0xab, 0x16, 0x1a, 0xd6, 0x27, 0xa0, 0xd6, 0x82, - 0x26, 0x2b, 0xf6, 0xa1, 0x33, 0x75, 0x19, 0x01, 0xdc, 0x4a, 0x97, 0x6d, 0x1e, 0x32, 0xb0, - 0x3b, 0x5f, 0x9c, 0x04, 0xdd, 0xf1, 0x5e, 0x1f, 0x5b, 0xa9, 0x32, 0x1f, 0x16, 0x68, 0x03, - 0x26, 0x07, 0xb8, 0x52, 0xd6, 0x3d, 0x7b, 0xd6, 0x91, 0xa7, 0xfa, 0x24, 0x26, 0x48, 0x93, - 0xba, 0x3b, 0x13, 0x3a, 0x3c, 0xe8, 0x96, 0xe9, 0x22, 0x30, 0x51, 0x51, 0xba, 0xae, 0x48, - 0xdd, 0x0e, 0xa1, 0x32, 0x11, 0xcb, 0x5f, 0x8e, 0x45, 0x8e, 0xff, 0xf8, 0x0b, 0x9b, 0x02, - 0x98, 0x72, 0x7c, 0xa8, 0x45, 0x87, 0x4f, 0x77, 0xc3, 0xed, 0x2a, 0x2a, 0xe8, 0xb0, 0x3c, - 0x67, 0x7e, 0xcf, 0xb0, 0x64, 0x6e, 0xa3, 0x67, 0x25, 0xa3, 0xa7, 0x3f, 0xca, 0x9d, 0x59, - 0xd0, 0xb7, 0xc6, 0xfa, 0xde, 0xe6, 0x99, 0x49, 0x23, 0x0f, 0xf5, 0x6c, 0x34, 0x33, 0xa4, - 0x96, 0x94, 0xcd, 0xa2, 0x22, 0xf9, 0x89, 0x42, 0x20, 0xb3, 0xbf, 0x1a, 0xa5, 0x84, 0x14, - 0xb5, 0xd2, 0x6f, 0x0d, 0xa4, 0x17, 0x32, 0x95, 0x3e, 0x63, 0xeb, 0xb8, 0x19, 0xce, 0xe5, - 0x07, 0x50, 0x80, 0xae, 0xca, 0xb6, 0xa5, 0xbd, 0xa1, 0x02, 0xd6, 0x9a, 0x0a, 0xa6, 0x01, - 0x25, 0x08, 0x59, 0x2f, 0xda, 0x14, 0xb8, 0x80, 0x6e, 0xe3, 0xaf, 0x7f, 0x62, 0x2f, 0xcc, - 0x88, 0x27, 0x3a, 0x0e, 0xca, 0xf4, 0xfe, 0x3e, 0x01, 0x98, 0xc9, 0x80, 0x2d, 0x8b, 0x0a, - 0xa8, 0x90, 0x35, 0x0c, 0x13, 0x06, 0xb6, 0x31, 0xe8, 0x91, 0x8c, 0x80, 0x6c, 0x4d, 0xd9, - 0xcc, 0x5a, 0x8c, 0x3b, 0x27, 0xee, 0x37, 0xaa, 0xb2, 0x56, 0xbc, 0x5b, 0x98, 0x7b, 0x42, - 0xd6, 0xba, 0xf2, 0x7e, 0x0b, 0x20, 0xbf, 0xbf, 0xe7, 0xba, 0xa8, 0xc6, 0xf6, 0x0f, 0x21, - 0x62, 0x5c, 0x98, 0x53, 0x64, 0x62, 0x2b, 0xb9, 0x12, 0xb4, 0x91, 0x5b, 0xd9, 0x96, 0x02, - 0xd3, 0x8a, 0x0d, 0xee, 0x49, 0xb1, 0xd8, 0x59, 0x81, 0x92, 0x1f, 0x43, 0x4d, 0x44, 0x86, - 0x34, 0x95, 0x14, 0xd4, 0x01, 0x76, 0xdc, 0x55, 0x2d, 0x70, 0x2a, 0xc4, 0x16, 0x10, 0x7a, - 0x18, 0x48, 0x2e, 0x1f, 0x8c, 0x69, 0x93, 0x84, 0x65, 0xee, 0xde, 0x8f, 0x0e, 0x64, 0xb8, - 0xbc, 0xe3, 0xf8, 0x8e, 0x37, 0xfb, 0x8e, 0x6e, 0x3d, 0x0d, 0x2d, 0x8d, 0x36, 0xee, 0xc2, - 0x7a, 0xee, 0xd1, 0x93, 0x52, 0xfd, 0x8c, 0x22, 0x82, 0xe6, 0xe5, 0xa0, 0x92, 0xed, 0x85, - 0xa6, 0xdb, 0xaf, 0xeb, 0x69, 0x21, 0xca, 0x04, 0x21, 0xbe, 0xe3, 0x89, 0x1f, 0xfc, 0x5f, - 0xdd, 0x78, 0xc9, 0x70, 0x63, 0xf9, 0x5a, 0xc5, 0xe8, 0x72, 0x22, 0xef, 0x35, 0x1f, 0xe7, - 0xe7, 0x2b, 0xfd, 0xbc, 0xac, 0x1b, 0x3a, 0xb5, 0x48, 0xf4, 0x79, 0xeb, 0x81, 0xa2, 0x25, - 0x35, 0x2e, 0x2c, 0xba, 0x3b, 0x75, 0x63, 0xdc, 0xa9, 0x2c, 0x71, 0x56, 0x9b, 0x4c, 0x16, - 0x4a, 0x97, 0x19, 0xc7, 0x9e, 0x3a, 0x16, 0x5b, 0x31, 0xbc, 0xb6, 0xc8, 0x02, 0x94, 0x60, - 0x77, 0x2a, 0x3a, 0x44, 0x51, 0xb5, 0x6c, 0x69, 0xce, 0x27, 0x6c, 0x1c, 0x10, 0xcd, 0x38, - 0xdc, 0x43, 0xe5, 0xcb, 0xd5, 0xc1, 0xc7, 0x59, 0x03, 0x22, 0xa5, 0x6a, 0x16, 0x92, 0x7c, - 0x2b, 0xd5, 0x8b, 0x26, 0x27, 0xf7, 0x58, 0x59, 0x60, 0xba, 0x71, 0x82, 0x70, 0x38, 0x02, - 0x7e, 0x21, 0xa8, 0xdc, 0x94, 0xf8, 0x5b, 0x90, 0x13, 0xc2, 0x5f, 0xd4, 0xb7, 0x65, 0x2c, - 0x9a, 0xac, 0x56, 0xca, 0x1f, 0x17, 0x7b, 0x54, 0xd3, 0x45, 0xf2, 0xcf, 0x7e, 0x66, 0x5d, - 0xf6, 0xb0, 0xfe, 0xde, 0x0d, 0x80, 0xbf, 0xb1, 0x9c, 0x4d, 0x81, 0xd1, 0x9d, 0x53, 0x10, - 0x83, 0x16, 0x73, 0x2e, 0xaa, 0x0c, 0x3f, 0x1b, 0x07, 0xab, 0x98, 0x9d, 0x98, 0x0a, 0x0a, - 0xca, 0xaa, 0x45, 0x2d, 0x3f, 0xd3, 0x5c, 0x53, 0x9b, 0x49, 0x2b, 0x1d, 0x0a, 0x45, 0xaa, - 0x64, 0x08, 0xe1, 0xf0, 0xf9, 0xa2, 0x46, 0x9f, 0x8b, 0x11, 0x0e, 0x32, 0x5d, 0xd0, 0x17, - 0x44, 0x34, 0xbd, 0x14, 0x4b, 0x1d, 0x36, 0x17, 0x8c, 0xf4, 0xa2, 0x02, 0xa9, 0x2d, 0x2e, - 0x7a, 0xf0, 0xb0, 0xc3, 0x52, 0x0d, 0x41, 0xc9, 0xa7, 0xd5, 0x68, 0x17, 0xeb, 0x5c, 0x3e, - 0xfd, 0x5f, 0x76, 0xc8, 0x2b, 0xf4, 0x0c, 0x92, 0xcc, 0x51, 0x58, 0x0c, 0x90, 0xd6, 0x6e, - 0x38, 0x93, 0x10, 0xc1, 0x80, 0x09, 0x85, 0xea, 0xb1, 0xf2, 0x82, 0x27, 0xf8, 0x31, 0x4b, - 0x47, 0x81, 0x56, 0xad, 0x4e, 0xbe, 0x36, 0xed, 0xd7, 0x58, 0x37, 0xca, 0x34, 0xc3, 0x23, - 0xd7, 0xbf, 0x6c, 0xba, 0x3d, 0x2f, 0xc1, 0x39, 0xc3, 0x24, 0xd9, 0x59, 0x2d, 0xf4, 0x25, - 0x35, 0x2a, 0xb7, 0xf6, 0x89, 0xbd, 0x72, 0xac, 0xbc, 0x7a, 0x9c, 0x55, 0xd1, 0xf8, 0xef, - 0x5a, 0xe9, 0x9e, 0xe2, 0x50, 0xdd, 0x60, 0xe7, 0x1d, 0xc5, 0xc7, 0x3d, 0x48, 0x5c, 0x7e, - 0x75, 0x78, 0x37, 0x15, 0x20, 0xb0, 0xa1, 0x43, 0x19, 0x5e, 0x1d, 0x7b, 0x7c, 0xde, 0x82, - 0x66, 0x2d, 0x94, 0xe9, 0x32, 0xb7, 0xb5, 0xe2, 0x4f, 0x20, 0xb4, 0xc8, 0x1d, 0xa6, 0x0a, - 0xa5, 0xa6, 0x39, 0xae, 0x2f, 0x3f, 0x66, 0x83, 0xc2, 0x8d, 0xa2, 0x61, 0x72, 0x4f, 0xe1, - 0x9b, 0xe2, 0xf5, 0xea, 0x0f, 0x1b, 0x98, 0xa4, 0x97, 0xfd, 0xb2, 0x7d, 0x87, 0x10, 0xef, - 0x8e, 0xa2, 0x6d, 0x7e, 0x80, 0x28, 0x26, 0x3f, 0x21, 0xa3, 0xef, 0x4a, 0x53, 0xeb, 0x94, - 0x25, 0x76, 0xa6, 0xdf, 0x3f, 0xfd, 0xe2, 0x14, 0xe3, 0x5a, 0x63, 0x20, 0xe2, 0xbe, 0xe2, - 0xbe, 0x67, 0x77, 0x9b, 0x7a, 0x71, 0xef, 0x98, 0x25, 0x7b, 0xd8, 0x0f, 0x35, 0x52, 0xc3, - 0x15, 0x23, 0x73, 0x5a, 0x25, 0x69, 0x9b, 0x38, 0xc2, 0x27, 0x03, 0x82, 0xe3, 0x05, 0xcd, - 0x65, 0x9f, 0x49, 0x56, 0xb6, 0x48, 0x08, 0xa8, 0xbc, 0x50, 0x03, 0x67, 0xcc, 0x83, 0x97, - 0x16, 0x36, 0xb6, 0x8d, 0xe9, 0xed, 0xbd, 0xd5, 0x85, 0xdf, 0x27, 0xa9, 0xaa, 0x3a, 0x45, - 0x7a, 0x05, 0x7a, 0x8d, 0xfb, 0x68, 0xf9, 0xf6, 0xdf, 0xda, 0xd3, 0xaf, 0x2f, 0x52, 0x52, - 0x3c, 0xbb, 0x9b, 0xc9, 0xd7, 0xb7, 0xde, 0xc6, 0x6a, 0xc1, 0xaa, 0x40, 0x16, 0xac, 0x8b, - 0xda, 0xee, 0x78, 0x81, 0xcc, 0x04, 0xfe, 0x2e, 0x15, 0x4e, 0xf4, 0x1a, 0xd0, 0x55, 0x31, - 0xb1, 0xb6, 0x78, 0x86, 0x41, 0x65, 0x51, 0x37, 0x86, 0x97, 0x37, 0x35, 0xf1, 0xed, 0x41, - 0xd0, 0xac, 0x18, 0xfe, 0xad, 0xd7, 0x6b, 0xf3, 0xbd, 0x3a, 0x1c, 0x99, 0xd9, 0xf9, 0x1d, - 0x9f, 0x1a, 0x8f, 0x50, 0xdd, 0x0d, 0x27, 0x0f, 0x25, 0x05, 0x46, 0x52, 0x68, 0xd1, 0xfc, - 0x6f, 0x65, 0xf1, 0x91, 0xe4, 0x25, 0x01, 0x01, 0x8d, 0xb4, 0x19, 0x58, 0xbf, 0xa6, 0xb2, - 0xff, 0x4c, 0x41, 0x31, 0xe1, 0xf6, 0x65, 0xe6, 0x3a, 0x24, 0x41, 0x6a, 0xb4, 0xc2, 0x9b, - 0x92, 0x52, 0x7d, 0x2e, 0x50, 0x1a, 0x80, 0x57, 0x2c, 0x5d, 0xa3, 0xb0, 0x39, 0x58, 0x86, - 0xf2, 0xe4, 0x4e, 0xd1, 0xed, 0x35, 0x00, 0xb2, 0x62, 0x06, 0x3d, 0x1a, 0x92, 0x39, 0x72, - 0x74, 0xd9, 0xba, 0x7d, 0xff, 0xa4, 0x36, 0xd8, 0x00, 0x88, 0x84, 0xd0, 0x5a, 0xdc, 0x35, - 0x6c, 0x8d, 0xd7, 0xe0, 0xa0, 0x08, 0x5e, 0x33, 0xf9, 0xfc, 0xd5, 0x4a, 0xef, 0x14, 0xda, - 0x7c, 0xaf, 0xb2, 0x94, 0xd6, 0x9f, 0x0f, 0x0b, 0x16, 0x0b, 0x7e, 0xd4, 0x33, 0xee, 0x1e, - 0xc0, 0xea, 0x28, 0x73, 0x0e, 0xa2, 0xfb, 0x38, 0x6b, 0x0f, 0xbb, 0x4e, 0xac, 0x5d, 0xc9, - 0x89, 0xa1, 0xf0, 0x11, 0xee, 0x46, 0x5f, 0x39, 0xa6, 0xed, 0xf3, 0xd0, 0x06, 0x2c, 0xd3, - 0xb7, 0x45, 0x61, 0xfd, 0xb0, 0x01, 0xa0, 0x36, 0x50, 0xda, 0x57, 0x18, 0xb9, 0xc7, 0x9f, - 0xe9, 0x38, 0xbf, 0x5f, 0x3e, 0xe9, 0xbe, 0x39, 0xc4, 0x99, 0xa1, 0xb9, 0x07, 0x75, 0x84, - 0x52, 0x78, 0x55, 0xdf, 0x47, 0xb7, 0x55, 0xbf, 0x67, 0x02, 0xbf, 0x80, 0x9e, 0x0f, 0xc7, - 0x72, 0x58, 0xc8, 0x6a, 0x78, 0xa3, 0x08, 0x1f, 0x67, 0x4e, 0x16, 0xb0, 0x00, 0xbd, 0xdc, - 0xab, 0xfc, 0xc7, 0xb7, 0xb6, 0xc8, 0x53, 0xc6, 0xc7, 0x9f, 0x3e, 0x81, 0x5b, 0xfb, 0x01, - 0x0e, 0xeb, 0x89, 0xe6, 0x7b, 0xb7, 0xa5, 0x15, 0xb5, 0xbc, 0xb0, 0xc6, 0xe7, 0x94, 0xd4, - 0x8b, 0xa5, 0x19, 0xd3, 0xbb, 0x2b, 0xb0, 0x10, 0xed, 0xab, 0x40, 0xc4, 0xe2, 0x63, 0x49, - 0x31, 0x04, 0x01, 0x7b, 0x08, 0x72, 0x3d, 0x71, 0xe6, 0xc6, 0xed, 0xe1, 0x0d, 0xbc, 0xf5, - 0x44, 0xd5, 0x23, 0xb2, 0x00, 0xce, 0x7a, 0x93, 0xf5, 0x60, 0xcf, 0xa0, 0x86, 0x3e, 0x64, - 0x6b, 0x11, 0xd9, 0xea, 0x1b, 0x16, 0x94, 0xb4, 0x16, 0x27, 0xa9, 0xcc, 0x03, 0x0b, 0xa8, - 0x35, 0x78, 0xf1, 0x4c, 0x9d, 0xfd, 0x93, 0x53, 0x9c, 0xd3, 0xeb, 0x78, 0xef, 0x31, 0xa1, - 0x98, 0x76, 0x45, 0x4c, 0x97, 0xba, 0x00, 0xb6, 0x44, 0xd9, 0x43, 0x13, 0x8a, 0x88, 0x62, - 0x3a, 0x67, 0x88, 0xf2, 0xb8, 0x37, 0xea, 0x58, 0xe3, 0xa5, 0x7a, 0x23, 0x67, 0x82, 0xd1, - 0xb1, 0x54, 0xa7, 0x55, 0x79, 0x2b, 0xe8, 0x1b, 0x08, 0x5c, 0xd2, 0xa8, 0x2a, 0x7b, 0x60, - 0x04, 0xe5, 0x4c, 0xd8, 0x06, 0x59, 0x36, 0xe8, 0x04, 0xd2, 0x22, 0xce, 0x01, 0x13, 0xb0, - 0xe4, 0x1d, 0xe2, 0xf5, 0xba, 0xec, 0x95, 0x54, 0xd0, 0xc4, 0x30, 0xcd, 0x31, 0x8f, 0x62, - 0x4b, 0x67, 0xb9, 0x07, 0x38, 0x18, 0x6c, 0xd7, 0xfe, 0x47, 0x0f, 0x0f, 0x20, 0x5d, 0xc9, - 0xfb, 0xca, 0xfa, 0xc3, 0x0d, 0x05, 0x55, 0x87, 0xc2, 0x53, 0x43, 0x4c, 0x20, 0x28, 0xa0, - 0xbb, 0x00, 0xc6, 0x87, 0x47, 0x10, 0xb5, 0x33, 0xe7, 0xba, 0x24, 0x1b, 0x1e, 0x68, 0xd9, - 0x22, 0xb9, 0x39, 0x2f, 0xf6, 0xcc, 0x4a, 0x6d, 0xbf, 0x2a, 0x57, 0x8c, 0x51, 0x2e, 0x33, - 0x6c, 0x63, 0x10, 0x06, 0xdd, 0x29, 0x34, 0x5a, 0x98, 0xfe, 0x1a, 0x9b, 0x00, 0x0a, 0x37, - 0x8b, 0x08, 0x77, 0xf3, 0x74, 0xd1, 0x52, 0x66, 0xd1, 0xe9, 0x3e, 0xaa, 0xba, 0x06, 0x71, - 0x0f, 0x10, 0xca, 0xe2, 0x1c, 0x4b, 0x53, 0xda, 0xeb, 0xaa, 0x56, 0xa7, 0x06, 0x0a, 0xdf, - 0xc7, 0xf4, 0x61, 0xbe, 0xe7, 0x48, 0xe2, 0x47, 0xac, 0xe0, 0x1d, 0xbe, 0x84, 0x55, 0xeb, - 0x7f, 0xc4, 0x0d, 0x08, 0x7e, 0xf7, 0x16, 0xee, 0xb1, 0x6e, 0x49, 0xfa, 0xa6, 0xbd, 0x8f, - 0x8e, 0x76, 0x6e, 0x16, 0x02, 0x8b, 0x92, 0xc1, 0x4c, 0x31, 0x01, 0xbf, 0x5b, 0x85, 0x14, - 0x3e, 0xff, 0x26, 0x2f, 0xa3, 0x00, 0x1b, 0xad, 0x28, 0xea, 0x1d, 0xd3, 0xd5, 0x86, 0x16, - 0x0a, 0x7c, 0x01, 0x11, 0xf4, 0x47, 0x85, 0x24, 0x4b, 0x0e, 0x5e, 0x95, 0xf3, 0x0b, 0x30, - 0x1b, 0x5f, 0x02, 0xef, 0xe6, 0x54, 0xf3, 0x34, 0xd7, 0xb2, 0x13, 0x18, 0xd0, 0x03, 0x21, - 0xee, 0x9f, 0x3a, 0xd7, 0xa0, 0x39, 0x66, 0xc8, 0x6f, 0x2a, 0x8b, 0x1a, 0x96, 0x74, 0x9a, - 0xbb, 0xc7, 0x8e, 0x64, 0x45, 0xa7, 0x18, 0xf9, 0x64, 0x0a, 0x78, 0x7d, 0xa3, 0x68, 0x03, - 0x29, 0xf1, 0x2e, 0xbd, 0x22, 0xca, 0xba, 0x50, 0x7f, 0xf8, 0x2f, 0x04, 0xf1, 0x27, 0xd4, - 0x03, 0xee, 0x84, 0xed, 0x7c, 0x67, 0x36, 0x1d, 0x14, 0x00, 0x4e, 0x3b, 0x91, 0x94, 0x0f, - 0xee, 0x7c, 0x65, 0x18, 0xd3, 0x67, 0xe1, 0x58, 0x86, 0xd3, 0x61, 0xb3, 0xf8, 0x79, 0x81, - 0xc5, 0xc6, 0xd7, 0x8b, 0xa2, 0x98, 0x76, 0xca, 0x59, 0xee, 0xaa, 0x0c, 0xeb, 0x2a, 0xab, - 0x6f, 0xec, 0xde, 0x7c, 0xca, 0x01, 0x3c, 0x6d, 0xe2, 0x93, 0x21, 0x13, 0x28, 0x27, 0x94, - 0x6b, 0xa5, 0xc3, 0x66, 0xfe, 0x70, 0x73, 0x6e, 0xbd, 0x8e, 0xb1, 0x5e, 0x60, 0x07, 0x3c, - 0x3c, 0x74, 0xb2, 0x99, 0x3c, 0x50, 0xfb, 0x01, 0xc9, 0x1e, 0x98, 0x6d, 0xa3, 0xc7, 0x7f, - 0x72, 0x23, 0xb2, 0x40, 0x74, 0x0b, 0x7d, 0x29, 0x50, 0xe7, 0x7d, 0x9c, 0xeb, 0xb9, 0xdc, - 0xd7, 0x61, 0x2a, 0x6e, 0x0a, 0x5b, 0x09, 0xee, 0xc7, 0xc9, 0xa4, 0xd6, 0x99, 0x13, 0x1f, - 0x2e, 0x3f, 0x09, 0xec, 0x54, 0xb9, 0xfc, 0x54, 0xac, 0x2b, 0xa0, 0xf3, 0x9c, 0x5f, 0x28, - 0x2b, 0xd4, 0xad, 0xc2, 0x14, 0x58, 0xeb, 0x5f, 0xbb, 0x59, 0xa7, 0xcb, 0x71, 0xb6, 0xb2, - 0x2b, 0x83, 0xcf, 0x71, 0x95, 0xa3, 0x04, 0xda, 0xb1, 0xcc, 0x44, 0x8b, 0x13, 0x70, 0x29, - 0x99, 0xee, 0x16, 0x95, 0x5a, 0x08, 0x04, 0xf3, 0x06, 0x6b, 0x71, 0x3a, 0xff, 0x00, 0xf1, - 0x54, 0xa1, 0x7e, 0x36, 0xe0, 0x78, 0x9b, 0x38, 0xfc, 0xb1, 0xc5, 0x5a, 0x06, 0xc6, 0x1f, - 0x99, 0xd4, 0x14, 0xae, 0x49, 0x05, 0x0e, 0x74, 0x3d, 0x29, 0x0e, 0x27, 0x59, 0x1f, 0x34, - 0x2f, 0x9e, 0x67, 0xdc, 0x38, 0xce, 0xb7, 0xa2, 0x3c, 0x5e, 0x6c, 0x15, 0x1b, 0x62, 0x73, - 0x82, 0x4c, 0x2c, 0xce, 0x9b, 0xfe, 0x1b, 0xc2, 0x08, 0x56, 0x37, 0xff, 0x08, 0xc9, 0x26, - 0x76, 0x2d, 0xc6, 0x25, 0xe9, 0xcf, 0xd6, 0x30, 0xe5, 0xfb, 0xdb, 0xf6, 0x94, 0xdd, 0xfb, - 0x9e, 0x8d, 0x36, 0xdf, 0xd4, 0x31, 0xb7, 0x47, 0xe9, 0xa4, 0xaf, 0x0d, 0x13, 0x65, 0xaa, - 0x1b, 0x7d, 0x0b, 0x6b, 0x99, 0x93, 0x74, 0xb2, 0x0c, 0xb5, 0x12, 0xd0, 0xfb, 0xa9, 0x44, - 0xa2, 0x30, 0x75, 0xfd, 0xe9, 0x44, 0xbc, 0xb1, 0x44, 0x88, 0x87, 0xbc, 0x6b, 0xa6, 0x0e, - 0xd3, 0xbd, 0x1e, 0xf7, 0x5e, 0x56, 0x95, 0x87, 0xff, 0x41, 0xd7, 0xfa, 0x8d, 0x61, 0x3e, - 0x44, 0x3a, 0x11, 0x7e, 0xe7, 0x73, 0xee, 0xb2, 0x67, 0x3f, 0x92, 0xd5, 0xd7, 0x35, 0x67, - 0x1c, 0x0e, 0x34, 0xc2, 0xbd, 0x1b, 0xa3, 0x7d, 0x99, 0x11, 0x26, 0x12, 0x12, 0x90, 0x03, - 0x43, 0xf0, 0x93, 0x8e, 0x95, 0x27, 0x52, 0x54, 0x5d, 0x17, 0x36, 0xec, 0x81, 0x3c, 0x78, - 0x53, 0x54, 0x20, 0x0d, 0x26, 0x8c, 0xba, 0xc3, 0x5f, 0x36, 0xe1, 0xe0, 0xce, 0x17, 0x9e, - 0x33, 0xa5, 0x5c, 0xd5, 0xe3, 0x45, 0xea, 0x0a, 0x64, 0xae, 0x88, 0x54, 0x8d, 0xfa, 0x8b, - 0x9e, 0x7c, 0xbc, 0x27, 0xbe, 0x02, 0x2e, 0x06, 0x7e, 0xdc, 0x6a, 0xd8, 0xea, 0x2e, 0xc8, - 0x8c, 0x83, 0x05, 0x02, 0x41, 0x41, 0x10, 0x9a, 0x90, 0xb0, 0xc7, 0x46, 0xbc, 0x98, 0xdd, - 0xda, 0x09, 0x57, 0x0b, 0xa0, 0xeb, 0xd4, 0x0b, 0x0a, 0x60, 0xa3, 0x3b, 0x6d, 0xa4, 0xa1, - 0xbd, 0xda, 0xa4, 0x06, 0xe1, 0x42, 0x1a, 0x91, 0xc1, 0xab, 0xf1, 0x9a, 0xc8, 0xe5, 0x7e, - 0x0c, 0xd0, 0x34, 0x0a, 0x04, 0x7d, 0x67, 0x25, 0xcb, 0x35, 0xa5, 0x61, 0x57, 0x68, 0x15, - 0xc1, 0x31, 0x22, 0x21, 0x91, 0xf6, 0xc6, 0x43, 0xea, 0x3f, 0x51, 0xa3, 0x28, 0xa3, 0xc1, - 0x23, 0x37, 0xd9, 0xa2, 0xaa, 0x8e, 0xf5, 0x79, 0x11, 0x87, 0x4a, 0x24, 0x57, 0x92, 0x93, - 0xd6, 0xc1, 0x8d, 0x17, 0x7f, 0x7c, 0x64, 0xc7, 0xd7, 0xb2, 0xec, 0x65, 0x69, 0x0f, 0xfa, - 0x91, 0xec, 0x9a, 0x09, 0x95, 0x28, 0xc1, 0x36, 0xff, 0x25, 0xb7, 0x29, 0x1a, 0x01, 0xdb, - 0x46, 0x2c, 0x93, 0x79, 0x97, 0xdd, 0x11, 0x5e, 0x27, 0xab, 0x4b, 0x5f, 0x23, 0x37, 0xbc, - 0xc0, 0x85, 0xde, 0x53, 0x56, 0x7e, 0x39, 0x0c, 0xea, 0x2e, 0xd9, 0xba, 0x8e, 0xf0, 0x1a, - 0x15, 0xfa, 0x08, 0xe7, 0xef, 0x24, 0x9d, 0xec, 0x09, 0x2d, 0x98, 0x4e, 0xe6, 0x8d, 0x6f, - 0x03, 0xa1, 0x7e, 0xf3, 0xcb, 0x78, 0x9f, 0xdb, 0x8b, 0xb2, 0x73, 0x93, 0x2c, 0xdd, 0x62, - 0xec, 0x93, 0x18, 0x7e, 0xda, 0x3e, 0xba, 0x1e, 0x9d, 0x33, 0xb3, 0x71, 0xb9, 0x5f, 0xef, - 0xbb, 0x6d, 0x49, 0x45, 0x17, 0xca, 0xc0, 0x8e, 0x63, 0x4b, 0x29, 0xf1, 0xbb, 0x77, 0x81, - 0x21, 0x49, 0x60, 0xf3, 0x06, 0x39, 0x0f, 0x03, 0x81, 0x85, 0x22, 0xb5, 0xae, 0xcc, 0xf8, - 0x29, 0x06, 0x54, 0x30, 0x18, 0x65, 0xe6, 0x9d, 0x4c, 0xf6, 0x55, 0x9b, 0x55, 0x40, 0x75, - 0xed, 0x34, 0x18, 0x99, 0xf4, 0xc9, 0x0b, 0xe5, 0xe2, 0xcf, 0xca, 0x01, 0xc7, 0xfb, 0x8d, - 0x56, 0xf9, 0xe6, 0xc4, 0xbf, 0x57, 0xf2, 0x15, 0xa0, 0x4f, 0x35, 0x15, 0x27, 0xd3, 0xee, - 0xe8, 0x8e, 0x9d, 0x12, 0xe0, 0x72, 0x4a, 0x82, 0x23, 0x0b, 0x0d, 0x95, 0x50, 0x59, 0x07, - 0x20, 0xaf, 0x54, 0xab, 0xb4, 0xe0, 0x11, 0x1b, 0xdb, 0xd3, 0x35, 0x4c, 0x0c, 0x52, 0x6e, - 0xf8, 0xef, 0xc3, 0x86, 0x47, 0x4d, 0x8f, 0x98, 0x53, 0xbe, 0x05, 0x37, 0x90, 0xfa, 0x4b, - 0xea, 0x6b, 0x1d, 0x4d, 0xd8, 0x04, 0xe7, 0xe1, 0x3d, 0x93, 0xe0, 0x4e, 0x77, 0x2c, 0x11, - 0x28, 0x84, 0xcb, 0xf2, 0xcc, 0x73, 0xb6, 0xa5, 0x34, 0x97, 0x32, 0xad, 0x1f, 0x8e, 0x3f, - 0x44, 0x02, 0x54, 0x96, 0x70, 0xd0, 0x69, 0x12, 0xe0, 0xf9, 0xf4, 0xf0, 0x26, 0x68, 0x70, - 0x4a, 0xda, 0x12, 0xcf, 0x3b, 0xec, 0x95, 0x73, 0x18, 0xaf, 0xd5, 0x1c, 0x47, 0x15, 0x22, - 0x26, 0x87, 0xc8, 0x8f, 0xe7, 0x37, 0xa8, 0x2c, 0x67, 0xd4, 0xd4, 0x8e, 0xf2, 0xf2, 0xf1, - 0xbe, 0xbf, 0xcc, 0x17, 0xa2, 0xab, 0x70, 0x79, 0x57, 0x36, 0x76, 0x9e, 0xb0, 0x4c, 0xb1, - 0x6d, 0x1f, 0x6e, 0xba, 0xc8, 0x5c, 0x57, 0xe1, 0xf2, 0xaa, 0x91, 0x34, 0x6b, 0xe5, 0x3a, - 0xaf, 0x3d, 0x2c, 0x34, 0xf5, 0x90, 0xde, 0xa5, 0xb2, 0xe0, 0x67, 0x74, 0x8d, 0xc5, 0x31, - 0x73, 0x52, 0x4c, 0x10, 0x4b, 0x6e, 0x30, 0x71, 0xa1, 0x65, 0x91, 0xd3, 0x2f, 0x07, 0xc5, - 0x98, 0xc9, 0x91, 0xbc, 0x00, 0xf4, 0x4e, 0xc9, 0x3d, 0xcb, 0x3f, 0xd5, 0x9b, 0x2c, 0x72, - 0x24, 0xcd, 0x38, 0x7e, 0x43, 0x2c, 0x2d, 0x1b, 0x1e, 0xda, 0x23, 0x4a, 0x05, 0xe0, 0x1b, - 0x9c, 0x42, 0xc8, 0x42, 0x54, 0xff, 0x43, 0x89, 0xb4, 0x05, 0xf8, 0x2c, 0x65, 0x5c, 0x69, - 0x32, 0x15, 0xbc, 0xca, 0xbe, 0xf4, 0x6a, 0x1f, 0xdb, 0xfd, 0x85, 0x70, 0x9b, 0x4e, 0x98, - 0xb5, 0x61, 0xa5, 0xde, 0xe7, 0x17, 0x0d, 0xa6, 0xe3, 0x45, 0x93, 0x2b, 0xdb, 0x26, 0x89, - 0xe5, 0x7f, 0x9f, 0x9b, 0x92, 0x5a, 0x59, 0x0a, 0x0a, 0x1c, 0xe7, 0x42, 0x15, 0x9c, 0x14, - 0xa9, 0xf5, 0xa4, 0xc2, 0x0b, 0x63, 0x40, 0xe6, 0x19, 0x75, 0x87, 0xdd, 0xbe, 0xdf, 0xfd, - 0xac, 0xd3, 0x75, 0x61, 0x03, 0x44, 0x0d, 0x3a, 0xc6, 0xc8, 0x2c, 0x28, 0x7c, 0xef, 0xb3, - 0x4b, 0xe3, 0xe4, 0xbe, 0xdc, 0x29, 0xb7, 0x34, 0xe1, 0x6d, 0xfa, 0xb1, 0x2a, 0xe0, 0xd9, - 0x6e, 0xbd, 0x22, 0x9a, 0x49, 0x5b, 0x47, 0x95, 0x5f, 0x80, 0xfd, 0xe1, 0x27, 0x3a, 0x7a, - 0x70, 0xfd, 0x57, 0xde, 0xff, 0x19, 0x58, 0xbc, 0xe7, 0xc2, 0x5c, 0x59, 0xb0, 0x49, 0x41, - 0x3f, 0x1c, 0xd0, 0x77, 0xcb, 0x6c, 0xfc, 0x0e, 0xff, 0xb8, 0x74, 0x48, 0x41, 0xcc, 0xc1, - 0x3b, 0x2f, 0x89, 0x77, 0xcd, 0x60, 0x29, 0x01, 0xf1, 0x0a, 0x35, 0xb2, 0xb0, 0xeb, 0x5c, - 0xea, 0xa2, 0x4c, 0xa6, 0x8c, 0x09, 0xeb, 0xa3, 0xe7, 0xfc, 0xec, 0x5c, 0x4a, 0x36, 0x4b, - 0xdc, 0x85, 0x18, 0x5a, 0xbf, 0x47, 0xdf, 0x15, 0x66, 0x6a, 0x44, 0x5f, 0xa7, 0xbf, 0x74, - 0x33, 0xd5, 0xfa, 0xa2, 0xff, 0xc2, 0x8e, 0x5f, 0x99, 0x5d, 0x9f, 0xb8, 0x2a, 0x16, 0x11, - 0x57, 0x12, 0x78, 0x1c, 0x07, 0x33, 0xd1, 0xb2, 0xad, 0x9c, 0x77, 0x05, 0xeb, 0x3e, 0xc2, - 0xbb, 0x76, 0xd4, 0x06, 0x02, 0x4a, 0x29, 0x72, 0x98, 0x85, 0x8e, 0xe5, 0x98, 0x12, 0xe5, - 0xf6, 0x69, 0x7f, 0xa5, 0x0d, 0x97, 0x36, 0x1a, 0x87, 0xf8, 0xda, 0x61, 0x24, 0xa2, 0xb6, - 0xe0, 0xf0, 0x46, 0x70, 0x72, 0x5c, 0x2d, 0xc2, 0x0b, 0xc5, 0xa4, 0x53, 0xf4, 0x6c, 0x0d, - 0x15, 0xba, 0x50, 0x64, 0xfe, 0x07, 0x5c, 0x3b, 0x3d, 0xe4, 0xad, 0x09, 0xfe, 0x21, 0x33, - 0x07, 0xac, 0xf9, 0x59, 0xbc, 0x2d, 0x13, 0x98, 0xed, 0x94, 0x63, 0x18, 0xeb, 0xf0, 0x55, - 0xa5, 0xab, 0xcd, 0x45, 0x7d, 0xdc, 0x2c, 0x72, 0xc8, 0xe7, 0x37, 0x46, 0x8b, 0x73, 0xb9, - 0xd9, 0x37, 0x39, 0xec, 0x24, 0x51, 0xa7, 0xeb, 0xf1, 0xaf, 0xe6, 0xce, 0x00, 0xb9, 0x50, - 0xce, 0xc1, 0xa7, 0xde, 0xd6, 0x3d, 0x8a, 0x30, 0xb3, 0xbc, 0x42, 0xea, 0x35, 0x4f, 0xfc, - 0xf4, 0x27, 0x2e, 0x1c, 0xc0, 0xe4, 0x35, 0x74, 0x72, 0x4a, 0xdd, 0xec, 0xc7, 0xb2, 0x77, - 0x5a, 0x46, 0xeb, 0x99, 0xff, 0x91, 0xb5, 0xe4, 0xf9, 0xff, 0x5a, 0xea, 0x40, 0x98, 0x25, - 0x72, 0x1e, 0x2a, 0x7c, 0x6b, 0xd7, 0xe8, 0x22, 0xea, 0x54, 0xec, 0xb4, 0x00, 0x5f, 0x72, - 0xe1, 0xf5, 0xea, 0x29, 0xf2, 0x32, 0x90, 0x35, 0xb1, 0xac, 0x81, 0x49, 0x70, 0xfa, 0xad, - 0xde, 0x39, 0x9b, 0xbe, 0x60, 0x7d, 0x2c, 0x8d, 0xa4, 0x72, 0xfb, 0xc9, 0xf4, 0x2e, 0x91, - 0x6a, 0x0a, 0x26, 0xb7, 0x9d, 0x9e, 0xa8, 0x58, 0xa8, 0x62, 0xfe, 0x65, 0xea, 0x96, 0x9f, - 0x39, 0xf6, 0x62, 0x27, 0xba, 0x64, 0xa6, 0x30, 0x7f, 0x78, 0x66, 0x81, 0xe6, 0x97, 0x2b, - 0x6a, 0x7f, 0xa9, 0xe3, 0x25, 0x6c, 0x0c, 0x08, 0x12, 0x3b, 0xd7, 0xb8, 0xc8, 0xce, 0xd7, - 0x94, 0x72, 0x97, 0x5c, 0x7e, 0x3c, 0x7d, 0x98, 0xfe, 0x44, 0x39, 0xa3, 0x4c, 0xa2, 0xf9, - 0x3c, 0xa8, 0x5e, 0xff, 0xc7, 0xd0, 0xa6, 0x64, 0x4c, 0x0e, 0x39, 0xa5, 0x43, 0xb6, 0xcf, - 0xe8, 0x71, 0x26, 0x56, 0x92, 0xb2, 0x27, 0x2a, 0xc1, 0x19, 0x4d, 0x9f, 0xdc, 0x80, 0xce, - 0x54, 0x1c, 0x44, 0xdc, 0x57, 0xde, 0x6c, 0xb4, 0xcc, 0x5a, 0xfd, 0x37, 0x97, 0x2a, 0x26, - 0x13, 0x91, 0xe8, 0x68, 0x65, 0x2b, 0x5f, 0xfb, 0xf5, 0x2f, 0x99, 0xef, 0xa3, 0x60, 0x7b, - 0xfe, 0xa9, 0x5e, 0x6e, 0xde, 0x91, 0x4c, 0x54, 0x58, 0x6b, 0xf7, 0x7f, 0x99, 0xb4, 0x19, - 0xb7, 0x78, 0x2f, 0xb1, 0xdd, 0x1e, 0xef, 0x16, 0x4a, 0xc6, 0x99, 0x39, 0x5b, 0x0f, 0xee, - 0xf0, 0x0d, 0x92, 0xef, 0x21, 0x3f, 0x3d, 0xcf, 0x9c, 0x38, 0xb6, 0xf7, 0xdc, 0x09, 0xf8, - 0x0a, 0x3d, 0x73, 0x11, 0x92, 0x2c, 0xc0, 0xfc, 0x04, 0x32, 0x60, 0x5a, 0xbf, 0x15, 0xf0, - 0xaa, 0x14, 0x5f, 0xca, 0xe7, 0xc7, 0xde, 0x27, 0x2b, 0x39, 0x5d, 0x3a, 0x68, 0x3b, 0x3d, - 0x62, 0xa3, 0x38, 0x55, 0x08, 0xcb, 0x23, 0x26, 0xee, 0x61, 0xe0, 0x17, 0xb5, 0x3b, 0xfe, - 0x01, 0xf9, 0x77, 0xcc, 0xf5, 0xfc, 0xe4, 0x11, 0x3e, 0xe3, 0x9b, 0x4d, 0x80, 0x6b, 0xba, - 0x3e, 0xec, 0xb9, 0x9c, 0xd8, 0x5b, 0xa6, 0x38, 0xfc, 0x5c, 0x42, 0x07, 0xa4, 0xc8, 0x1a, - 0xd9, 0x75, 0x1e, 0xc0, 0x19, 0x6e, 0xee, 0x6b, 0xbd, 0x2e, 0xdc, 0xef, 0xa1, 0xb7, 0x31, - 0x0a, 0xdb, 0x60, 0x2c, 0x30, 0xd0, 0x98, 0x50, 0x44, 0xba, 0xe5, 0x8d, 0x36, 0xa7, 0xfb, - 0x9d, 0xa6, 0x73, 0x97, 0x2a, 0x3f, 0xde, 0x78, 0x1a, 0xf2, 0xdd, 0x67, 0x2f, 0xd2, 0x21, - 0x23, 0x4d, 0x1d, 0x01, 0x15, 0x9b, 0xc1, 0xb4, 0xfb, 0x3e, 0x7d, 0x98, 0x05, 0x11, 0x16, - 0xc3, 0xe1, 0x08, 0xfd, 0x84, 0xbf, 0x0d, 0xbd, 0x83, 0x61, 0x91, 0xbf, 0x91, 0x77, 0x39, - 0xe4, 0x5a, 0xed, 0x7d, 0x15, 0x0d, 0xd2, 0x67, 0xa8, 0x7f, 0xd0, 0x80, 0xf4, 0x11, 0xeb, - 0xdb, 0x25, 0x2c, 0xfd, 0xfa, 0xb6, 0x76, 0xf9, 0x3e, 0x5f, 0x44, 0xb8, 0xb5, 0x7a, 0xa9, - 0x71, 0x65, 0x01, 0xda, 0xa0, 0x48, 0xd6, 0x5c, 0x47, 0x58, 0x64, 0xf0, 0xa4, 0xf4, 0x25, - 0x8a, 0x87, 0x18, 0xe1, 0xd3, 0x17, 0xea, 0x3e, 0xd2, 0x4f, 0x02, 0xe1, 0x73, 0xb5, 0x3e, - 0x67, 0xd1, 0x15, 0x41, 0x7a, 0x41, 0x91, 0x3c, 0xf6, 0x84, 0x38, 0x09, 0xee, 0x6e, 0x8e, - 0x6f, 0x2f, 0x36, 0xdf, 0x6f, 0xc8, 0xd7, 0xa1, 0x11, 0xce, 0x1e, 0xa0, 0x16, 0x15, 0xb0, - 0xb6, 0xec, 0x7d, 0x91, 0x85, 0xe8, 0x72, 0x14, 0x58, 0x12, 0x36, 0x94, 0xa0, 0x06, 0x7a, - 0xd6, 0x2e, 0x54, 0x51, 0xfe, 0x5c, 0x78, 0xf3, 0x34, 0x48, 0xef, 0x63, 0xc7, 0x54, 0x28, - 0xc4, 0x54, 0x44, 0x5e, 0xcd, 0x32, 0x64, 0xff, 0xfa, 0xab, 0x59, 0x4d, 0x45, 0x71, 0x62, - 0x49, 0x5f, 0xb8, 0xd7, 0x72, 0x2b, 0x88, 0x49, 0xed, 0x3a, 0x2a, 0x28, 0x33, 0x1c, 0x9e, - 0x2d, 0x3c, 0x25, 0x3b, 0x4c, 0xeb, 0xad, 0x33, 0x29, 0xa5, 0x92, 0xac, 0x75, 0x67, 0x6f, - 0x06, 0xeb, 0x5a, 0xa2, 0x70, 0x49, 0x68, 0xe9, 0x25, 0xdd, 0xc9, 0x36, 0xab, 0xf8, 0x1c, - 0xf5, 0x45, 0x65, 0x02, 0x27, 0x19, 0x15, 0xa7, 0x78, 0x4d, 0x6e, 0xec, 0x4d, 0x72, 0x08, - 0x93, 0x16, 0x68, 0x9e, 0xf3, 0x61, 0x59, 0xc4, 0xda, 0xb9, 0xb6, 0xef, 0x7e, 0x7d, 0x82, - 0xa3, 0x2f, 0xe6, 0xd0, 0xe7, 0x08, 0x69, 0xd0, 0xe6, 0x01, 0x7d, 0x26, 0x04, 0x1c, 0xfb, - 0xb2, 0x3f, 0x08, 0xc7, 0xe6, 0x32, 0x2b, 0x27, 0x9c, 0x82, 0x81, 0x7d, 0xca, 0x03, 0xa9, - 0xfb, 0xf0, 0x0e, 0xf3, 0xc7, 0x98, 0x4c, 0x39, 0x9b, 0xa3, 0x53, 0x6d, 0x45, 0x1b, 0x87, - 0xdc, 0x11, 0x43, 0x7d, 0xd7, 0xca, 0x9f, 0x3c, 0xad, 0xbc, 0xcd, 0xec, 0x63, 0xb7, 0x52, - 0xfc, 0x8d, 0xe3, 0x5b, 0x7d, 0x62, 0x87, 0x4a, 0x6f, 0x18, 0xb4, 0x62, 0xbd, 0xa2, 0xdc, - 0xfe, 0x7e, 0x6f, 0x67, 0x0a, 0x88, 0xcb, 0x5b, 0xf4, 0x3c, 0x0a, 0x82, 0x08, 0x0d, 0xc3, - 0xab, 0x5b, 0x07, 0x1f, 0x3d, 0x61, 0xec, 0xbb, 0xbd, 0x2c, 0x7a, 0x23, 0x14, 0xa3, 0xde, - 0x85, 0x57, 0x39, 0xb7, 0x8d, 0xb9, 0x7e, 0x84, 0x49, 0x35, 0x9c, 0x16, 0x26, 0x20, 0x4b, - 0xf4, 0x5d, 0x04, 0x82, 0xd2, 0xa7, 0x91, 0xd4, 0x67, 0xbf, 0x23, 0x78, 0x83, 0x3e, 0x3e, - 0xf1, 0x3e, 0xee, 0x0b, 0xbd, 0x7a, 0x7b, 0x60, 0x9a, 0xec, 0x58, 0x14, 0x41, 0x1c, 0x60, - 0x29, 0x6e, 0x9a, 0x07, 0x45, 0xf5, 0xf1, 0xf7, 0xda, 0x93, 0x18, 0x48, 0x03, 0xdb, 0xee, - 0x3a, 0xa8, 0x8c, 0x31, 0xd1, 0x2c, 0xa3, 0xbf, 0x44, 0x5d, 0xac, 0xdf, 0x1d, 0x42, 0x2c, - 0x9e, 0x22, 0x19, 0x6d, 0x42, 0x8e, 0xe7, 0xfb, 0xba, 0x43, 0x39, 0x26, 0x26, 0xbe, 0xde, - 0x80, 0xba, 0x2d, 0xe1, 0x31, 0x44, 0x16, 0xaa, 0x5e, 0xd8, 0xfa, 0x07, 0x4f, 0xb7, 0x25, - 0xaa, 0xf7, 0x8c, 0xda, 0x07, 0xb6, 0x18, 0x29, 0x4d, 0x1c, 0x3f, 0xca, 0x6c, 0x05, 0x5a, - 0xdb, 0xa8, 0x5b, 0xbc, 0x2c, 0x9c, 0x0b, 0x9d, 0xbb, 0xde, 0x18, 0x68, 0x22, 0x5d, 0x0f, - 0x9f, 0x0f, 0x35, 0x67, 0x51, 0x21, 0x62, 0xbf, 0xa7, 0x57, 0xb5, 0xab, 0x0e, 0x23, 0x23, - 0x35, 0xc2, 0xd3, 0xdc, 0x11, 0x03, 0x0c, 0x59, 0xfc, 0xbc, 0xd4, 0x68, 0xd7, 0x04, 0x56, - 0xc8, 0x60, 0x57, 0xff, 0x1d, 0x4e, 0xce, 0xd0, 0x0e, 0x7d, 0x1d, 0xf1, 0x75, 0xd8, 0xe4, - 0x05, 0x1b, 0xbd, 0xa9, 0xae, 0x25, 0x9f, 0xa3, 0x26, 0xb6, 0x54, 0x43, 0xdd, 0x2b, 0xed, - 0x7d, 0xde, 0x4a, 0xb0, 0x96, 0xfe, 0x15, 0x53, 0xa3, 0x93, 0xba, 0x22, 0xf6, 0xb6, 0x2d, - 0x44, 0x86, 0xe8, 0x31, 0xd3, 0x8c, 0x54, 0x83, 0xd8, 0x6d, 0x34, 0x9b, 0x37, 0x22, 0xbd, - 0x0e, 0x00, 0xbc, 0x4e, 0x2a, 0x2f, 0x76, 0x7a, 0xfe, 0x36, 0x27, 0x13, 0xd9, 0x5a, 0x45, - 0xd4, 0x10, 0xac, 0x51, 0x37, 0xfc, 0x7a, 0x54, 0x62, 0xf7, 0xa7, 0x51, 0x35, 0xb5, 0xe0, - 0xb9, 0x4f, 0xbe, 0x88, 0xf1, 0x7f, 0x53, 0x45, 0x9a, 0x56, 0xe6, 0x4a, 0x17, 0x03, 0x48, - 0xf5, 0x91, 0x5e, 0x12, 0x40, 0xa7, 0xb9, 0xf0, 0x96, 0x37, 0xa6, 0xfd, 0xdb, 0x5b, 0x2f, - 0xb6, 0x18, 0x76, 0x19, 0x62, 0x78, 0x8d, 0xe5, 0x25, 0x37, 0x3f, 0xb1, 0x59, 0x3f, 0xe5, - 0x84, 0x32, 0x8a, 0x29, 0x6d, 0xe8, 0x9d, 0xaa, 0x52, 0x06, 0xbf, 0x17, 0xb8, 0x41, 0x90, - 0x2d, 0x12, 0x15, 0x30, 0x42, 0x83, 0xcf, 0x21, 0x3d, 0x43, 0x41, 0xbb, 0x20, 0xba, 0xc2, - 0x94, 0x1f, 0x57, 0x09, 0xa2, 0xa8, 0xd0, 0xef, 0xc3, 0x30, 0xeb, 0x8f, 0xb1, 0xe7, 0x04, - 0x68, 0x6c, 0xa2, 0x17, 0x70, 0xac, 0x1b, 0x4f, 0xde, 0x9f, 0x43, 0x02, 0xf6, 0x3b, 0xc7, - 0x6b, 0x69, 0x60, 0x6e, 0x49, 0xd3, 0xda, 0x5c, 0xe0, 0x34, 0xcf, 0xe8, 0xc3, 0x90, 0x4a, - 0xfa, 0x00, 0x7b, 0x94, 0xae, 0x23, 0x1b, 0x52, 0x1d, 0xf3, 0x7c, 0xd5, 0x76, 0x48, 0x64, - 0xa1, 0x48, 0xc7, 0x37, 0x9b, 0x56, 0x63, 0x8d, 0xe7, 0xf6, 0x9e, 0xdc, 0x68, 0x76, 0x76, - 0x06, 0xda, 0x5e, 0x3d, 0xcf, 0x66, 0xff, 0x17, 0xa9, 0xc8, 0x7b, 0xe0, 0x22, 0xa7, 0x76, - 0x89, 0x58, 0x98, 0x8c, 0x23, 0x8d, 0x17, 0x21, 0xd4, 0x0e, 0xb4, 0x2f, 0xea, 0x4a, 0xcc, - 0x92, 0x3c, 0xfc, 0xde, 0xfa, 0xaa, 0xd5, 0x2f, 0x9f, 0x3f, 0x81, 0xb9, 0x33, 0x1c, 0x3f, - 0x47, 0xb3, 0xc0, 0x44, 0x41, 0x68, 0x93, 0x29, 0xed, 0x79, 0x69, 0x2f, 0xa5, 0x78, 0x9c, - 0x2e, 0x59, 0xa5, 0xb0, 0x64, 0xa9, 0xaf, 0x5b, 0x12, 0x69, 0x3b, 0x09, 0x15, 0x0f, 0xcf, - 0x8e, 0xc5, 0x77, 0x43, 0x37, 0xa6, 0xf9, 0xe5, 0xf1, 0x09, 0x30, 0x2f, 0xd7, 0xba, 0x20, - 0xd6, 0x2a, 0x82, 0x11, 0x51, 0xff, 0x72, 0x4c, 0x62, 0xfb, 0x09, 0x9f, 0xad, 0x2d, 0x52, - 0xa2, 0x87, 0x15, 0x65, 0x48, 0xad, 0x57, 0x78, 0x46, 0x78, 0x09, 0xa9, 0xba, 0x08, 0xd3, - 0xc4, 0x6d, 0xe9, 0xbc, 0xcd, 0x29, 0x5b, 0x52, 0x44, 0x4c, 0x50, 0x02, 0x5e, 0xb0, 0xee, - 0x05, 0x07, 0xcf, 0xab, 0xb9, 0x59, 0x6f, 0xf4, 0x0e, 0x3d, 0x6a, 0x44, 0x70, 0xfb, 0x0f, - 0x6b, 0xfc, 0xf1, 0x81, 0x33, 0x30, 0x30, 0xe6, 0x24, 0x2f, 0x87, 0x11, 0xd9, 0x0a, 0x81, - 0xd4, 0x24, 0x2c, 0x2d, 0x89, 0xf9, 0xb0, 0xe9, 0x2f, 0x1a, 0x48, 0xdf, 0xd4, 0x31, 0xd9, - 0xc9, 0x55, 0x3c, 0x62, 0x7d, 0xb8, 0x8a, 0x6c, 0x33, 0x35, 0xbc, 0x4a, 0x8f, 0x9f, 0x6c, - 0x43, 0x02, 0xfa, 0xb9, 0x21, 0x27, 0x0c, 0x53, 0x1f, 0xa6, 0x39, 0x48, 0x8a, 0xf9, 0x07, - 0x79, 0x83, 0xa1, 0x65, 0x4a, 0x0f, 0xbf, 0xd7, 0x23, 0x19, 0xc7, 0xea, 0xbd, 0xa9, 0xce, - 0xdf, 0x98, 0xe8, 0x0c, 0x01, 0x94, 0x3d, 0x84, 0x7e, 0xe2, 0xf9, 0xdb, 0x02, 0xc5, 0xf8, - 0x89, 0x72, 0x1d, 0x13, 0x75, 0xa5, 0xb5, 0xbd, 0x7c, 0xf2, 0xfd, 0x71, 0x8b, 0x98, 0x06, - 0xe4, 0xde, 0xc1, 0xc5, 0x2b, 0x3b, 0x66, 0xba, 0xb6, 0x2e, 0x60, 0x0e, 0x5b, 0xb9, 0xcf, - 0xb5, 0x30, 0x3b, 0x87, 0x4f, 0xa8, 0xfb, 0xfc, 0x98, 0x6c, 0xf1, 0x17, 0x42, 0xf1, 0x09, - 0x8d, 0x82, 0xbd, 0x34, 0xf5, 0x51, 0x93, 0x5d, 0x12, 0x5a, 0x14, 0x59, 0xde, 0x31, 0x9c, - 0x5f, 0x16, 0xdf, 0x7f, 0x8d, 0x40, 0xea, 0x42, 0x05, 0x87, 0x97, 0xde, 0x32, 0x89, 0xb1, - 0x94, 0xf2, 0x91, 0x61, 0x19, 0xf2, 0xe1, 0x79, 0xf9, 0x3e, 0x14, 0xfd, 0x00, 0xb8, 0x3d, - 0x0c, 0x99, 0x22, 0xb8, 0xae, 0x03, 0x49, 0x78, 0x76, 0xdf, 0x3e, 0xb5, 0x10, 0x6d, 0xc1, - 0x65, 0x88, 0x00, 0x61, 0x20, 0x79, 0xef, 0x46, 0x79, 0x54, 0x22, 0x45, 0xcf, 0x39, 0xa4, - 0x35, 0xb8, 0xee, 0x01, 0xdf, 0x59, 0xf7, 0x2a, 0xd5, 0xfd, 0x6b, 0x85, 0x02, 0x08, 0xde, - 0xb1, 0x9e, 0xae, 0xff, 0x19, 0xc3, 0xb8, 0x6f, 0x6b, 0x4c, 0x19, 0xf9, 0xb0, 0x94, 0x7f, - 0x08, 0x38, 0x0a, 0xc6, 0x72, 0x69, 0xb7, 0x1a, 0xc2, 0xaa, 0x71, 0x9c, 0x4a, 0x82, 0x01, - 0xee, 0x57, 0xdb, 0xa0, 0x48, 0xb8, 0xd3, 0xb2, 0x50, 0x77, 0x71, 0x89, 0x80, 0x1f, 0x56, - 0x81, 0x41, 0xb7, 0x03, 0x93, 0x6f, 0x63, 0x0b, 0xff, 0x37, 0x42, 0x08, 0x56, 0xbf, 0x96, - 0x6b, 0xb6, 0xb5, 0xfa, 0x11, 0x4e, 0x92, 0xa0, 0xf3, 0xf5, 0x3d, 0x3b, 0x18, 0x8f, 0xf9, - 0x22, 0xa4, 0x25, 0xb8, 0xb4, 0x0e, 0xc5, 0x5c, 0xc1, 0x3e, 0x38, 0x9c, 0x61, 0x25, 0x98, - 0x6f, 0x48, 0x4e, 0x7b, 0xb8, 0x73, 0xd1, 0xf5, 0x76, 0xe3, 0xd0, 0x42, 0xaa, 0x41, 0xdd, - 0x27, 0x1d, 0x24, 0x75, 0xcb, 0xca, 0x4c, 0xbd, 0x1a, 0x71, 0x5b, 0x42, 0x6b, 0x97, 0x87, - 0x5c, 0x73, 0x1a, 0xa3, 0x95, 0x34, 0xf2, 0x4e, 0xba, 0x1e, 0x71, 0xe1, 0x6b, 0xee, 0xd7, - 0x39, 0x29, 0xed, 0xeb, 0xd9, 0x74, 0xc2, 0xd4, 0x51, 0x8e, 0x20, 0xff, 0x11, 0x3e, 0x10, - 0x74, 0x1d, 0x7b, 0xcb, 0xbc, 0x77, 0xcd, 0x1e, 0x4e, 0x0d, 0x02, 0x8c, 0x2e, 0x29, 0x38, - 0x22, 0xb5, 0x10, 0xac, 0x4d, 0xb7, 0xa7, 0x67, 0xaf, 0xc0, 0xcf, 0x2b, 0x94, 0x95, 0x6f, - 0x9f, 0x56, 0xa2, 0x5e, 0xbf, 0xb2, 0x32, 0x2a, 0x81, 0x0f, 0x06, 0x58, 0xdc, 0x43, 0x02, - 0x7d, 0xaa, 0xf7, 0x8b, 0x22, 0x2a, 0x1c, 0x75, 0xca, 0xa6, 0x62, 0x9b, 0x28, 0x83, 0xb3, - 0xc4, 0xe7, 0x85, 0xbf, 0x54, 0xe5, 0xac, 0x3e, 0xcc, 0x39, 0x57, 0x5d, 0xc0, 0xd4, 0x21, - 0xca, 0x49, 0xec, 0x24, 0xdf, 0x1a, 0xf2, 0x07, 0xbf, 0x96, 0xcf, 0x62, 0xb5, 0xce, 0xa8, - 0x02, 0xfe, 0x95, 0x4b, 0xae, 0x0d, 0xd8, 0xd5, 0xec, 0x8e, 0x88, 0x8c, 0xdd, 0x11, 0x16, - 0x73, 0x25, 0x98, 0xab, 0x57, 0xac, 0x8b, 0x8f, 0xf3, 0x2b, 0xad, 0xf3, 0x4c, 0x9a, 0x86, - 0x92, 0x60, 0x29, 0x6d, 0x50, 0xb0, 0xf6, 0x49, 0xc8, 0x07, 0x32, 0x21, 0x6d, 0x8d, 0xe6, - 0x9d, 0xcf, 0xd4, 0x3c, 0x3d, 0x05, 0x68, 0x6e, 0xa5, 0xdf, 0xb5, 0x11, 0x3b, 0x83, 0x81, - 0x5b, 0x4b, 0x31, 0x3a, 0x07, 0x58, 0xc5, 0xcd, 0x01, 0xad, 0xee, 0x09, 0x2e, 0xc4, 0x22, - 0x34, 0x6d, 0xa2, 0xbc, 0x79, 0xa4, 0x83, 0xe3, 0x39, 0x23, 0xf5, 0x0d, 0xe7, 0xbc, 0x81, - 0xc7, 0x66, 0xd9, 0x9b, 0xf2, 0xe7, 0x90, 0xe9, 0x1e, 0x9b, 0x6b, 0xf7, 0x87, 0x8e, 0x6c, - 0xed, 0xcf, 0x65, 0x7b, 0x5d, 0x93, 0x14, 0xca, 0xa2, 0x9b, 0x95, 0xb2, 0x89, 0x15, 0x3c, - 0x52, 0xc0, 0xcc, 0x47, 0x47, 0x62, 0xb2, 0xef, 0xb7, 0x82, 0xf9, 0x04, 0x1b, 0x6f, 0x83, - 0xef, 0x15, 0xe3, 0x12, 0x1e, 0xd9, 0xe0, 0x39, 0xf0, 0xec, 0x84, 0x8c, 0xb9, 0xe2, 0x38, - 0x29, 0xe2, 0x0a, 0x9a, 0x38, 0x3f, 0xb5, 0x06, 0x8a, 0x70, 0x82, 0xaf, 0xe6, 0x3d, 0x95, - 0x7b, 0x8c, 0x7f, 0xf1, 0x16, 0xa5, 0xeb, 0xc5, 0xb1, 0xb8, 0xf7, 0x93, 0x1e, 0x85, 0xb3, - 0x91, 0x99, 0xec, 0x50, 0x90, 0x21, 0xda, 0xa3, 0x27, 0xb7, 0x09, 0xe4, 0x95, 0x05, 0xca, - 0x7e, 0x0e, 0x03, 0x13, 0xbb, 0x84, 0xfc, 0x0a, 0xdc, 0x45, 0xa9, 0xad, 0x0d, 0x44, 0x1a, - 0x0e, 0x50, 0xe5, 0xd2, 0x27, 0x28, 0xa5, 0x3c, 0x22, 0x07, 0xec, 0x78, 0xcf, 0xaa, 0x86, - 0x1b, 0x5e, 0xf2, 0x32, 0x43, 0x2b, 0x1b, 0x3f, 0xf4, 0x74, 0x87, 0xf3, 0x1c, 0xfa, 0x93, - 0x0b, 0x0a, 0x3a, 0x52, 0xc8, 0x9e, 0x82, 0x32, 0x47, 0xa5, 0x1a, 0xe9, 0xbe, 0xe1, 0x20, - 0x1c, 0xaf, 0x28, 0x94, 0xdc, 0x94, 0x13, 0xff, 0x18, 0xbd, 0x69, 0xe2, 0xf9, 0x74, 0x64, - 0x9c, 0x02, 0x03, 0x4f, 0x69, 0xed, 0x9b, 0xe7, 0xe9, 0x02, 0xbe, 0xe5, 0x58, 0xd2, 0xfa, - 0xad, 0x3a, 0xbc, 0x02, 0x6a, 0x03, 0x37, 0x94, 0x23, 0x0f, 0x58, 0xb9, 0x23, 0x85, 0x1e, - 0x10, 0x9f, 0x7c, 0xe8, 0x16, 0x73, 0xd0, 0x56, 0x59, 0x44, 0x6b, 0x67, 0xad, 0x16, 0xb5, - 0xec, 0x6a, 0xf0, 0xa4, 0xe4, 0xa2, 0x2f, 0xbd, 0xcb, 0x9a, 0x3e, 0x20, 0xd7, 0x36, 0x7c, - 0x13, 0xa7, 0x2a, 0x14, 0x3b, 0x7b, 0x6a, 0x02, 0x82, 0xae, 0xdf, 0xae, 0x72, 0x7a, 0xcc, - 0x3b, 0xe8, 0xb1, 0xb8, 0x38, 0xf5, 0xd1, 0x30, 0x66, 0x05, 0x9c, 0xaa, 0xbf, 0xf4, 0xd8, - 0x47, 0xf0, 0x0b, 0xd9, 0xd5, 0x58, 0x80, 0x31, 0xa0, 0xac, 0x6c, 0xc7, 0xb5, 0xd9, 0x98, - 0xc7, 0xcd, 0xd9, 0x5f, 0x12, 0xb8, 0xfa, 0xdd, 0xb6, 0x3d, 0x7f, 0x93, 0x28, 0x1a, 0x76, - 0x31, 0x6c, 0x22, 0xdd, 0xfc, 0x45, 0x1f, 0xc4, 0x91, 0x2b, 0x8a, 0xc1, 0x25, 0xdb, 0x43, - 0x0b, 0x29, 0xfb, 0x95, 0xc9, 0x5c, 0x0b, 0x4f, 0x2c, 0xc9, 0x42, 0x28, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0x96, 0x10, 0x6c, 0xbd, 0x4a, 0x38, 0x8a, 0x6c, 0xce, 0xb1, 0xd6, 0x28, - 0x13, 0x18, 0xe0, 0xf9, 0xa2, 0xda, 0xb5, 0x75, 0xa9, 0xcd, 0xd5, 0xda, 0xe9, 0xa3, 0x34, - 0x60, 0xef, 0x15, 0xbc, 0xcd, 0x86, 0x14, 0x88, 0xe7, 0x34, 0x1c, 0x61, 0x65, 0x62, 0xc7, - 0x77, 0x14, 0xd2, 0xb5, 0x4d, 0x79, 0x86, 0x16, 0x71, 0xab, 0x32, 0x78, 0xba, 0xcf, 0xa5, - 0xd4, 0x1d, 0x14, 0xed, 0x16, 0x2c, 0x11, 0x83, 0x83, 0xeb, 0xc7, 0x92, 0x85, 0x83, 0x1c, - 0x3a, 0x7e, 0xdd, 0x8b, 0x2e, 0xfc, 0xcc, 0x4b, 0xee, 0xf4, 0x49, 0xd2, 0x69, 0x3d, 0x07, - 0x3e, 0x09, 0xec, 0x84, 0x88, 0xe9, 0x25, 0xe4, 0xee, 0xb6, 0x57, 0x83, 0x74, 0x88, 0xc7, - 0x35, 0x57, 0x88, 0x7f, 0xc4, 0xc8, 0x8c, 0x95, 0x69, 0x7a, 0xbf, 0x58, 0xb4, 0xd9, 0x5c, - 0x57, 0xf3, 0x27, 0x24, 0xce, 0x69, 0x59, 0xf7, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x47, 0xc6, 0xd3, 0xfc, 0xbe, 0xa6, 0xce, 0xa1, 0xef, 0x53, 0x01, 0x50, - 0x43, 0x9c, 0xde, 0x78, 0x7f, 0x28, 0xad, 0x6e, 0x86, 0x1b, 0xfc, 0x8a, 0x21, 0x0a, 0x88, - 0x5e, 0xcc, 0x24, 0x3f, 0x91, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xac, - 0xc9, 0xf4, 0x27, 0xf2, 0xb3, 0x32, 0xfb, 0x97, 0xf4, 0x9e, 0x28, 0xf6, 0x9b, 0x3c, 0xf7, - 0x60, 0x05, 0x5f, 0xe9, 0x08, 0xde, 0xc3, 0x5d, 0xf8, 0x50, 0xa1, 0x16, 0x91, 0xba, 0x39, - 0x19, 0x72, 0xef, 0x6e, 0x10, 0xf6, 0xbb, 0x32, 0xb7, 0x96, 0x76, 0x2a, 0x46, 0x20, 0xc9, - 0x95, 0x80, 0x98, 0x74, 0xfb, 0x90, 0x6a, 0x5e, 0x9e, 0x16, 0x93, 0x08, 0xc0, 0x92, 0x54, - 0xf1, 0x2a, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x53, - 0xb9, 0x5b, 0x83, 0xa9, 0xd5, 0x6e, 0xe0, 0xc0, 0x27, 0x25, 0x27, 0x0c, 0x33, 0x64, 0xd7, - 0x6f, 0x96, 0x00, 0x7f, 0x47, 0x54, 0x6e, 0x09, 0x29, 0xa2, 0xab, 0xbf, 0xe8, 0x38, 0x1c, - 0x33, 0xe4, 0xd7, 0xff, 0xb2, 0xe0, 0xc0, 0x4e, 0x83, 0xf4, 0xe8, 0x0f, 0x95, 0x13, 0x7d, - 0xc3, 0x74, 0xa8, 0x61, 0xf8, 0x1e, 0xbd, 0x37, 0x11, 0x84, 0x7d, 0x6c, 0xac, 0x72, 0x42, - 0x53, 0xcf, 0x04, 0xa6, 0xe5, 0x64, 0x8a, 0xf2, 0x59, 0x8f, 0x87, 0x41, 0x6a, 0x17, 0xe8, - 0xfc, 0x8e, 0xef, 0x75, 0x83, 0xb1, 0xa5, 0x63, 0xef, 0x60, 0x4f, 0x27, 0xbd, 0x3e, 0xba, - 0xb7, 0x5a, 0xc0, 0x8d, 0xac, 0x3d, 0xac, 0xbf, 0xd5, 0x8c, 0xac, 0x90, 0x01, 0x87, 0x9f, - 0xbe, 0xeb, 0xe7, 0x99, 0x80, 0xc1, 0x28, 0xdb, 0xb3, 0x39, 0x3d, 0x94, 0x17, 0x97, 0x99, - 0xcf, 0x7c, 0x7a, 0x28, 0x4c, 0x91, 0x1d, 0x9d, 0x62, 0xb1, 0x1c, 0x79, 0x63, 0x18, 0x0b, - 0x06, 0x26, 0xcf, 0xb2, 0x83, 0x17, 0x33, 0xe7, 0xf6, 0x57, 0x9b, 0xc3, 0xc0, 0x44, 0x49, - 0x02, 0x94, 0x92, 0xdc, 0x56, 0x54, 0xf7, 0x03, 0xa6, 0x81, 0x52, 0xc3, 0xc6, 0x82, 0xfd, - 0x8e, 0xc1, 0x39, 0xfe, 0x5f, 0xf5, 0x9c, 0x77, 0xd4, 0xd4, 0xec, 0x34, 0xd5, 0xbb, 0xa8, - 0xb1, 0x0f, 0x3d, 0x4c, 0x36, 0x84, 0x54, 0x63, 0x8a, 0xad, 0x86, 0x9f, 0xcf, 0x2a, 0x6d, - 0x11, 0xb0, 0x5f, 0xcd, 0x7a, 0x09, 0x3d, 0xae, 0xd7, 0x21, 0xd9, 0xa9, 0xaf, 0x78, 0x5b, - 0x16, 0x31, 0x1f, 0x7e, 0x12, 0x05, 0x85, 0x2d, 0xf4, 0x64, 0x34, 0xa1, 0x99, 0x01, 0xdb, - 0x60, 0x38, 0xd3, 0x0d, 0xa3, 0xf1, 0x2d, 0xc6, 0x5b, 0xec, 0xe8, 0xe8, 0x04, 0x38, 0x88, - 0xfd, 0x05, 0xf0, 0xd0, 0xae, 0xd9, 0x14, 0x2a, 0xc3, 0x7b, 0x3d, 0x3a, 0x3f, 0xe7, 0x03, - 0x3f, 0x04, 0x25, 0x18, 0xa0, 0x17, 0xbb, 0x8f, 0x3a, 0x36, 0xfd, 0x93, 0x12, 0x53, 0x0f, - 0xfe, 0x32, 0x07, 0xb1, 0x4d, 0x02, 0x7c, 0xd0, 0x6c, 0xe0, 0xde, 0x46, 0xd9, 0x4b, 0x86, - 0xca, 0xf4, 0xf7, 0x73, 0xbc, 0x36, 0xfa, 0x8e, 0xcf, 0x12, 0x52, 0x5e, 0x46, 0x4b, 0xa2, - 0x45, 0x6c, 0xab, 0x94, 0x97, 0x4e, 0x02, 0x2b, 0xdc, 0x1f, 0x37, 0x8e, 0xc6, 0x51, 0xf6, - 0x4b, 0x07, 0xb4, 0xbc, 0xa9, 0x10, 0xd6, 0x18, 0xb9, 0x53, 0x29, 0x74, 0x3a, 0x32, 0x67, - 0x5e, 0x83, 0x2b, 0x6c, 0x48, 0x05, 0x3f, 0xce, 0xfa, 0xd2, 0xa0, 0xe5, 0x9d, 0x25, 0x85, - 0xda, 0x4f, 0x08, 0xc0, 0x75, 0x60, 0x55, 0xca, 0x30, 0xc4, 0xa2, 0xe7, 0x90, 0x04, 0xbe, - 0x05, 0x95, 0xa5, 0x96, 0x49, 0x98, 0xb6, 0x71, 0xd6, 0x9a, 0xcd, 0x28, 0xe4, 0xcc, 0x9f, - 0x2d, 0x9d, 0xa2, 0x5a, 0xb5, 0x30, 0xc0, 0xe5, 0x51, 0x03, 0x0f, 0x7f, 0xc1, 0x82, 0x75, - 0x31, 0x18, 0xd9, 0xe7, 0xe2, 0x92, 0x6d, 0x5a, 0x39, 0x20, 0x0d, 0x01, 0x70, 0xc5, 0x1c, - 0xa8, 0xf7, 0x0a, 0xbf, 0x62, 0xb9, 0x24, 0xb8, 0x6e, 0x9d, 0xa2, 0x66, 0x21, 0xdc, 0x2b, - 0xc0, 0xbf, 0x8f, 0xa9, 0x81, 0x4e, 0x58, 0x2c, 0xb4, 0x33, 0x8f, 0xf3, 0xe0, 0x94, 0xaa, - 0xb2, 0x91, 0xc6, 0x66, 0x0d, 0xf4, 0xde, 0x35, 0x0c, 0xb7, 0x85, 0x6c, 0x33, 0xd2, 0xd5, - 0x49, 0x04, 0xb9, 0xff, 0x67, 0x82, 0xea, 0xb4, 0x0b, 0x7b, 0xeb, 0x2e, 0xa0, 0x48, 0x10, - 0x22, 0x9f, 0x67, 0xc8, 0x89, 0x3b, 0x2d, 0x7b, 0x80, 0xc8, 0x67, 0xa3, 0x32, 0x7e, 0x0c, - 0xbb, 0xa8, 0x7b, 0xfe, 0x73, 0x50, 0xe4, 0xcd, 0x21, 0x90, 0x75, 0xa3, 0xd8, 0x03, 0x93, - 0x85, 0xc4, 0x68, 0xf4, 0xd7, 0x63, 0x7e, 0x79, 0x4a, 0x6a, 0x5d, 0x22, 0xcb, 0xa4, 0x0d, - 0x07, 0x60, 0xa9, 0x2b, 0xda, 0x43, 0x68, 0x94, 0x31, 0x61, 0xe3, 0xa4, 0x0f, 0x4c, 0x3b, - 0x2e, 0x2c, 0x6c, 0xc0, 0xe0, 0x95, 0x68, 0x9d, 0x14, 0x95, 0xa7, 0x4e, 0x59, 0x09, 0x40, - 0x8f, 0xa2, 0xd8, 0x1d, 0xdf, 0x5b, 0xb0, 0x48, 0xcf, 0x0f, 0xb8, 0x39, 0xdc, 0x82, 0x88, - 0xb1, 0xc9, 0x87, 0x5e, 0xb9, 0x45, 0x1d, 0x19, 0x51, 0x3f, 0x4d, 0x97, 0x4c, 0x01, 0xc7, - 0xb5, 0x40, 0x40, 0x39, 0xed, 0x81, 0x41, 0xae, 0x4c, 0x59, 0x66, 0x47, 0x28, 0x1f, 0x30, - 0x8f, 0x32, 0x88, 0x3c, 0x46, 0xa5, 0xf3, 0xf7, 0x55, 0x5f, 0x8c, 0xb1, 0x87, 0x73, 0x28, - 0xcd, 0xde, 0xd6, 0xb7, 0x69, 0x9a, 0xec, 0xb1, 0x98, 0xdd, 0x56, 0x2b, 0xb0, 0xea, 0xf7, - 0x7d, 0x12, 0x41, 0x88, 0x3a, 0x0e, 0x67, 0x2a, 0xef, 0x3a, 0x7c, 0x63, 0x82, 0x90, 0x0b, - 0x58, 0x9a, 0x0a, 0xc0, 0xf3, 0x12, 0x87, 0x67, 0x00, 0x47, 0xb3, 0x69, 0x8c, 0x62, 0x4f, - 0xe0, 0x6e, 0x6a, 0xa1, 0xa9, 0x3c, 0x2d, 0xf2, 0xf6, 0x9e, 0x63, 0x40, 0xd3, 0xfa, 0x90, - 0x58, 0xd1, 0x7d, 0xfc, 0x73, 0xcc, 0x93, 0x3f, 0x90, 0x01, 0x38, 0x11, 0xc9, 0xc2, 0xb2, - 0xa0, 0x78, 0x8d, 0xa9, 0xd0, 0xe1, 0x5d, 0xb8, 0x0b, 0x50, 0x12, 0xdc, 0x5c, 0xef, 0x02, - 0xb7, 0xbe, 0x74, 0xb8, 0x48, 0x55, 0x2f, 0x1c, 0xaa, 0xea, 0x6f, 0x4a, 0x19, 0xb5, 0x4f, - 0x9b, 0xa6, 0x4b, 0xf2, 0x74, 0x8d, 0x4f, 0x9b, 0xb7, 0x34, 0xef, 0xeb, 0x16, 0xb1, 0x3c, - 0x4d, 0x7f, 0x2f, 0x32, 0x38, 0x73, 0x0c, 0x7f, 0x84, 0x33, 0x37, 0x25, 0x82, 0x74, 0x50, - 0x41, 0xc3, 0x4a, 0xb9, 0xf6, 0xb7, 0xc9, 0xf9, 0xb3, 0x38, 0x21, 0x08, 0x2e, 0xd9, 0xc8, - 0x41, 0x9c, 0x0a, 0x8d, 0xe9, 0x05, 0x24, 0xdb, 0x29, 0xb6, 0xbf, 0xed, 0xfb, 0xbe, 0x81, - 0x9b, 0x0a, 0x58, 0x55, 0xa5, 0x05, 0x77, 0x76, 0x9a, 0x74, 0x09, 0x87, 0xa3, 0xa5, 0x1d, - 0x26, 0x5e, 0xed, 0x65, 0x20, 0x36, 0xae, 0x86, 0xbb, 0x6f, 0xc6, 0x34, 0x47, 0x3f, 0x49, - 0x95, 0x62, 0x7e, 0x65, 0x19, 0x33, 0xd1, 0x7a, 0xc1, 0x32, 0x36, 0xe3, 0x7f, 0xa7, 0x52, - 0x08, 0xd8, 0x0e, 0x54, 0x07, 0x67, 0x50, 0xd3, 0xf7, 0xac, 0x02, 0x6c, 0x1b, 0xe3, 0xed, - 0xa2, 0xd2, 0xed, 0x61, 0x06, 0x4a, 0xc4, 0x50, 0x44, 0xb1, 0x9d, 0x6b, 0xfb, 0x7d, 0x17, - 0x40, 0x58, 0x76, 0xc9, 0x69, 0xa0, 0x29, 0x40, 0xe9, 0x85, 0x23, 0x3f, 0x73, 0x8d, 0xeb, - 0x68, 0x3d, 0xde, 0x19, 0x86, 0x19, 0x77, 0xfe, 0x4d, 0x09, 0x71, 0x4e, 0x39, 0x51, 0xc6, - 0xc0, 0xe3, 0xee, 0x65, 0x32, 0xd3, 0x70, 0x77, 0x89, 0x8d, 0x62, 0x9c, 0x94, 0x4e, 0x48, - 0xc8, 0x79, 0x98, 0xa6, 0x5a, 0x83, 0xcb, 0x5d, 0x6e, 0xa2, 0x5c, 0x86, 0xb8, 0x3c, 0xf7, - 0x0d, 0x8b, 0xf0, 0xd9, 0xf5, 0x05, 0xc0, 0x1a, 0x14, 0xdb, 0x56, 0x80, 0xae, 0x81, 0x3d, - 0xfe, 0xea, 0xc1, 0x0b, 0xc5, 0x7b, 0xe6, 0x48, 0x5f, 0x0e, 0x46, 0xf6, 0x9b, 0xb6, 0xc3, - 0x1b, 0xb1, 0xf7, 0x21, 0x44, 0x3f, 0x25, 0x53, 0xb2, 0x1e, 0xa1, 0xca, 0x81, 0x86, 0x79, - 0x03, 0x14, 0xa0, 0x97, 0x6a, 0xbb, 0x21, 0xdf, 0x5a, 0x26, 0x27, 0xf6, 0x2e, 0xac, 0x08, - 0xa2, 0x02, 0x1e, 0x4c, 0xb6, 0xa6, 0x62, 0x93, 0xc5, 0xed, 0xc9, 0x90, 0xfc, 0x14, 0x48, - 0xe8, 0xe0, 0x69, 0x3c, 0xf6, 0x21, 0x1c, 0x91, 0x2d, 0xc1, 0xc7, 0xcf, 0xbf, 0x39, 0x56, - 0x36, 0x6e, 0xdc, 0x19, 0x8e, 0x82, 0xc1, 0xdf, 0x5f, 0xe8, 0xab, 0x81, 0x64, 0x88, 0x60, - 0xcc, 0x3e, 0x09, 0x81, 0x70, 0x2e, 0xee, 0x97, 0x65, 0x1c, 0xdb, 0x1e, 0xab, 0x6d, 0xe6, - 0xa9, 0x13, 0x66, 0x12, 0x90, 0x28, 0xfc, 0x5c, 0x09, 0xcf, 0xfd, 0xba, 0x62, 0x85, 0xe9, - 0xcf, 0x30, 0xc5, 0x39, 0xd4, 0xe1, 0xf3, 0x46, 0x8f, 0xaa, 0x97, 0xcb, 0xde, 0xfd, 0xaa, - 0xd4, 0x10, 0x03, 0x2f, 0x4e, 0x54, 0x4f, 0xf3, 0xc7, 0xb2, 0x00, 0xd5, 0x5b, 0x3e, 0x1e, - 0x33, 0xbc, 0xda, 0x5b, 0xbf, 0xdf, 0x22, 0x92, 0x7b, 0xfe, 0x60, 0xb8, 0x4c, 0x99, 0xa5, - 0xc3, 0x87, 0xd4, 0x50, 0xa1, 0x02, 0x1f, 0x44, 0x70, 0xbc, 0xf7, 0xfe, 0xe6, 0x19, 0x79, - 0x4c, 0x59, 0x07, 0x8f, 0x23, 0xff, 0x3e, 0x4e, 0xf9, 0xdf, 0xbc, 0x74, 0xc9, 0x15, 0x4c, - 0x29, 0x22, 0x61, 0x35, 0xa7, 0x9e, 0xe3, 0x51, 0x0b, 0xad, 0x41, 0xdb, 0xb3, 0x63, 0x26, - 0x9e, 0xc3, 0xee, 0x3e, 0x8d, 0xdd, 0xa4, 0x68, 0xca, 0x03, 0x22, 0xa4, 0x3c, 0x7c, 0xc8, - 0x7e, 0x12, 0x36, 0xa9, 0x18, 0x8a, 0x08, 0xa4, 0x05, 0x72, 0x23, 0x18, 0xdf, 0x22, 0xe8, - 0xc8, 0x56, 0x6b, 0x95, 0xb9, 0x6f, 0xf8, 0x3c, 0xe9, 0x7d, 0x7e, 0x5e, 0xe2, 0x5c, 0xfa, - 0x61, 0x55, 0x07, 0x2c, 0xd5, 0xf6, 0xa1, 0xa4, 0xeb, 0xc2, 0x10, 0x9e, 0xb4, 0xbf, 0x9b, - 0x5b, 0xc4, 0x1b, 0xe5, 0xcf, 0xed, 0x4a, 0x01, 0x63, 0x02, 0xa5, 0xbc, 0x37, 0x3b, 0x8d, - 0xbf, 0x84, 0x51, 0x18, 0x44, 0x15, 0x63, 0xd6, 0x1c, 0x4b, 0xfd, 0x42, 0x17, 0xac, 0x1c, - 0x01, 0x55, 0x85, 0x36, 0x4f, 0x56, 0xe7, 0x26, 0x72, 0x34, 0xc8, 0x92, 0x4a, 0xc1, 0xa2, - 0x01, 0x54, 0x53, 0xa7, 0x62, 0x98, 0x55, 0x5b, 0xa0, 0x5c, 0x94, 0xbd, 0x85, 0x91, 0x14, - 0x51, 0xc8, 0xcb, 0xd8, 0xf2, 0xa5, 0x8b, 0x30, 0xe6, 0x7c, 0x7e, 0x24, 0x69, 0x8c, 0x21, - 0x25, 0x2e, 0x8c, 0x7e, 0xea, 0x45, 0x06, 0xed, 0x08, 0x8e, 0x13, 0xa4, 0x0d, 0xa2, 0x62, - 0x3a, 0x16, 0xda, 0xc1, 0x2f, 0xc4, 0x2d, 0x1f, 0xd6, 0xb9, 0x29, 0xf7, 0x8f, 0xdc, 0x56, - 0x16, 0x6c, 0x73, 0x64, 0x87, 0x57, 0x0a, 0xaa, 0xaf, 0xad, 0xd3, 0x3d, 0x8e, 0xe7, 0xc3, - 0xca, 0xe1, 0x14, 0x94, 0x65, 0x38, 0xe2, 0x9e, 0xe5, 0x67, 0xd0, 0x04, 0xfd, 0xf6, 0xbf, - 0xbf, 0x25, 0x18, 0x09, 0x21, 0x48, 0xe9, 0x04, 0x16, 0x57, 0xc1, 0x1e, 0xff, 0x07, 0x81, - 0x65, 0xfc, 0x80, 0xfd, 0xef, 0xd2, 0x82, 0xa9, 0xd5, 0x56, 0x1d, 0xb2, 0x7d, 0x35, 0xcd, - 0x87, 0x8a, 0xd9, 0xa8, 0x59, 0x16, 0xf0, 0x26, 0x94, 0x11, 0xee, 0x58, 0x9c, 0xdd, 0xf7, - 0xf6, 0x67, 0xef, 0xf3, 0x0b, 0xfa, 0xbe, 0x53, 0xdb, 0xa5, 0xf6, 0x04, 0xa7, 0x2b, 0x5d, - 0x1a, 0x18, 0xba, 0x27, 0x4d, 0x0d, 0x75, 0x04, 0xe8, 0x50, 0x8a, 0x10, 0x2c, 0x3f, 0xf0, - 0x3f, 0xcd, 0x41, 0x10, 0xed, 0xd1, 0xec, 0x98, 0xce, 0x8f, 0xa6, 0xcf, 0x41, 0x80, 0x5a, - 0x1a, 0xd0, 0x6f, 0xdb, 0x1a, 0x62, 0x9b, 0x3d, 0x69, 0x57, 0x67, 0xe8, 0xb1, 0x82, 0x63, - 0xc8, 0x20, 0xd6, 0x3a, 0x2f, 0x3d, 0x4b, 0x0c, 0xdd, 0x46, 0x5f, 0x9a, 0x52, 0x30, 0xb3, - 0xbd, 0xe3, 0x3e, 0x2a, 0xc8, 0x8d, 0xee, 0x72, 0x8d, 0x72, 0xca, 0xb5, 0xb2, 0x03, 0x58, - 0x2c, 0xb2, 0x96, 0x0f, 0xde, 0x44, 0x4c, 0x17, 0x34, 0x3a, 0xd5, 0xf0, 0x27, 0x65, 0xb3, - 0x8e, 0xba, 0xe6, 0xf9, 0xed, 0x8f, 0x38, 0x54, 0xcf, 0x99, 0xd5, 0x8e, 0xfb, 0xfd, 0x75, - 0x14, 0xc7, 0xd7, 0x5e, 0x47, 0x22, 0x23, 0x95, 0x0f, 0x9c, 0x79, 0x0d, 0xe9, 0x74, 0x59, - 0xff, 0xe7, 0x38, 0x23, 0x38, 0x8f, 0xfd, 0x02, 0x07, 0xe0, 0xd0, 0x64, 0x49, 0x9f, 0x23, - 0x8b, 0x4e, 0xc9, 0xcb, 0x66, 0xb8, 0x32, 0x74, 0x3d, 0x35, 0x6d, 0x76, 0x5e, 0x52, 0xaa, - 0x19, 0x6c, 0x56, 0xd7, 0x8f, 0xe4, 0x87, 0xd5, 0x5a, 0x3f, 0xa2, 0x0d, 0x24, 0xe1, 0x49, - 0x40, 0x9d, 0x93, 0xf4, 0x0d, 0x2d, 0xad, 0x30, 0x1a, 0x91, 0x63, 0xc1, 0xe4, 0x96, 0xab, - 0xc4, 0xac, 0x79, 0x2c, 0x4a, 0x5e, 0xd9, 0x25, 0x86, 0x0c, 0x74, 0x65, 0xf5, 0x5c, 0x2e, - 0x61, 0x40, 0x96, 0x00, 0x93, 0xef, 0x8d, 0x57, 0x77, 0x7d, 0x13, 0xf9, 0x1f, 0xc7, 0x04, - 0x3e, 0xc2, 0x9c, 0x41, 0xb1, 0xe2, 0xd6, 0x2d, 0x92, 0x64, 0x5b, 0xfa, 0xc7, 0x48, 0xd0, - 0x26, 0x67, 0xb6, 0x0b, 0x36, 0xb9, 0x42, 0x3e, 0x10, 0xf3, 0x27, 0xaf, 0xaf, 0x75, 0x45, - 0x42, 0x61, 0xd0, 0x06, 0xe9, 0x21, 0x0b, 0x18, 0xac, 0x16, 0xba, 0x1c, 0x47, 0x38, 0xa4, - 0x51, 0x2e, 0x1d, 0x51, 0xb8, 0xfa, 0x8d, 0x87, 0xfb, 0x96, 0x75, 0x6b, 0x54, 0xb6, 0x3e, - 0xcd, 0x75, 0x16, 0xcb, 0x09, 0xb0, 0x71, 0xff, 0x5a, 0xa4, 0xed, 0x4b, 0x7e, 0x0e, 0xe4, - 0xe7, 0xe4, 0xd4, 0x88, 0xbf, 0x9b, 0xc0, 0xb0, 0x9a, 0xca, 0xee, 0x38, 0x85, 0x0c, 0x88, - 0x18, 0x00, 0x58, 0x55, 0xaa, 0x37, 0x2a, 0x81, 0xef, 0xb9, 0x45, 0x8d, 0xcb, 0x15, 0xc4, - 0x30, 0x56, 0xdf, 0x2f, 0x8b, 0xe3, 0xb7, 0xb7, 0x07, 0xc8, 0xa6, 0x43, 0x2c, 0x26, 0x78, - 0x58, 0xd1, 0xc3, 0x0c, 0xeb, 0x2e, 0x22, 0xcc, 0x41, 0x30, 0x0b, 0x6f, 0x80, 0x63, 0x16, - 0xad, 0xe9, 0xfd, 0x6a, 0xb7, 0xa5, 0xca, 0x22, 0x8c, 0xc8, 0x13, 0xfd, 0xe0, 0x1c, 0x3d, - 0xa7, 0x1c, 0x78, 0xa9, 0x2d, 0x56, 0x43, 0xe7, 0x90, 0x5b, 0x81, 0xf4, 0x03, 0x77, 0xfb, - 0xf1, 0xca, 0x31, 0x58, 0xe1, 0x14, 0x17, 0x66, 0x77, 0xde, 0x7e, 0xf5, 0x23, 0xe1, 0x9c, - 0x0a, 0x4e, 0x68, 0x42, 0xfc, 0xf0, 0xe4, 0xdc, 0x9a, 0x0a, 0x1a, 0xc3, 0xe8, 0x51, 0xac, - 0x92, 0x3d, 0xcf, 0x50, 0x8b, 0x6c, 0xae, 0xfe, 0xdd, 0xc5, 0x5f, 0x4c, 0x11, 0x4b, 0x24, - 0x0e, 0x47, 0x0c, 0x40, 0x9e, 0xf2, 0x9a, 0xc4, 0x4e, 0x13, 0x9e, 0xb9, 0x94, 0xb5, 0xf1, - 0x2a, 0x93, 0xcc, 0x4c, 0x44, 0xdf, 0xd0, 0x18, 0xd2, 0x75, 0x2c, 0x49, 0x89, 0xe2, 0x13, - 0x81, 0x6e, 0x65, 0xe2, 0xb4, 0xa4, 0x60, 0x80, 0xe6, 0xf1, 0xbe, 0x7f, 0xe9, 0xaf, 0x71, - 0x2b, 0xf3, 0x0d, 0x2b, 0x0e, 0xba, 0xae, 0x9d, 0x4d, 0xe1, 0x91, 0xc4, 0x90, 0x51, 0x7c, - 0xe6, 0x48, 0x5d, 0x7f, 0x02, 0x71, 0x85, 0xc2, 0xc4, 0xb0, 0x38, 0x2f, 0x87, 0x57, 0x75, - 0xcc, 0x77, 0xbf, 0xb3, 0x88, 0x79, 0xb5, 0x3f, 0x41, 0x45, 0xd1, 0x1f, 0x8f, 0x72, 0x8c, - 0x1c, 0xea, 0x3a, 0xbe, 0x96, 0x42, 0x75, 0x7f, 0x9c, 0x46, 0x45, 0xde, 0x33, 0x00, 0xbe, - 0x50, 0xbc, 0xf5, 0xe1, 0x30, 0xa4, 0xae, 0x5d, 0x6d, 0x39, 0x37, 0x48, 0xe5, 0x61, 0x20, - 0x4c, 0xe0, 0x08, 0x60, 0xa3, 0x8d, 0xdf, 0xaf, 0xeb, 0x56, 0x0c, 0xf7, 0x21, 0x4c, 0x8b, - 0x91, 0x6a, 0x89, 0x51, 0x81, 0xde, 0x67, 0x3c, 0xf3, 0x2d, 0x17, 0x90, 0xd2, 0x1f, 0x55, - 0x6f, 0x73, 0x49, 0x36, 0xc1, 0xde, 0xe6, 0x13, 0x69, 0xec, 0x37, 0x08, 0x8c, 0x2b, 0xd0, - 0xa6, 0xb7, 0xcb, 0x1e, 0x50, 0x50, 0x55, 0x43, 0x69, 0x9b, 0x2f, 0x59, 0xe9, 0x86, 0x23, - 0x32, 0x2a, 0x4f, 0x78, 0xa8, 0x8b, 0xe9, 0x9f, 0x11, 0xf4, 0xd0, 0x0a, 0x32, 0x4b, 0x2d, - 0x3c, 0x45, 0x79, 0x13, 0xcf, 0x26, 0x5c, 0x0e, 0xe4, 0x71, 0x17, 0x36, 0x04, 0xb9, 0x39, - 0xc2, 0xe9, 0x88, 0xa9, 0xbe, 0xa5, 0xfa, 0x8d, 0xe1, 0xcb, 0x58, 0xef, 0xf9, 0xf2, 0x89, - 0x1c, 0xa3, 0x15, 0x8b, 0x73, 0x1e, 0x61, 0xdc, 0xef, 0xe7, 0xe6, 0x76, 0x42, 0xef, 0x8a, - 0xf4, 0x7a, 0xe3, 0x42, 0xde, 0x7d, 0xfd, 0xa7, 0xbc, 0x56, 0xe3, 0x9d, 0x3c, 0x4a, 0x6a, - 0x96, 0x7f, 0xfd, 0xb2, 0xb1, 0xc8, 0x9a, 0xa8, 0x35, 0x26, 0x0f, 0x99, 0x90, 0x22, 0x8c, - 0xda, 0x11, 0x37, 0xff, 0x1c, 0xf7, 0x19, 0x0a, 0xe7, 0x9b, 0x33, 0x33, 0x76, 0xe0, 0xdf, - 0x0e, 0xd9, 0x3d, 0x0f, 0x1d, 0x1a, 0xe2, 0x44, 0xe8, 0x7f, 0x6a, 0xc8, 0x2d, 0xc4, 0x62, - 0x82, 0x58, 0x20, 0xb1, 0x87, 0x9d, 0xb7, 0x6e, 0xbb, 0x29, 0x3f, 0x14, 0x03, 0x25, 0x27, - 0xc0, 0xa1, 0xbf, 0xaf, 0xe4, 0xad, 0x97, 0xac, 0x30, 0x9c, 0x7e, 0x3e, 0x38, 0x15, 0xa3, - 0xc5, 0x6c, 0xc6, 0x7c, 0x46, 0x0c, 0x4c, 0xd9, 0xa4, 0xef, 0xf0, 0x18, 0x31, 0x62, 0xf4, - 0x70, 0xf8, 0xeb, 0xa9, 0x74, 0xf1, 0x7c, 0x4f, 0x06, 0x01, 0x76, 0x27, 0x7b, 0x5b, 0xcf, - 0xa3, 0xa2, 0x78, 0x8f, 0xa9, 0xcc, 0x8a, 0xdc, 0x57, 0x81, 0xfc, 0x58, 0xcf, 0x54, 0x61, - 0x63, 0x57, 0xc2, 0x68, 0x55, 0x19, 0x56, 0x39, 0xcd, 0xc5, 0xbf, 0xa7, 0x34, 0x2e, 0xe8, - 0x14, 0x01, 0x87, 0xeb, 0x0b, 0x5d, 0x16, 0x7d, 0xd3, 0xbe, 0x52, 0x57, 0xc3, 0xce, 0x96, - 0xb1, 0x49, 0xea, 0x61, 0xd0, 0x65, 0xf1, 0x39, 0x76, 0x8b, 0xdc, 0x32, 0x7c, 0xbd, 0x32, - 0x59, 0xd7, 0xb2, 0x2d, 0xce, 0xb5, 0x32, 0x2e, 0x8a, 0xe5, 0x28, 0xfa, 0xb9, 0x49, 0x9b, - 0x91, 0x78, 0x35, 0x83, 0x74, 0x99, 0xce, 0x40, 0x87, 0xbe, 0x49, 0xb1, 0x8f, 0x99, 0x82, - 0x83, 0x7f, 0x9a, 0x2b, 0x01, 0x30, 0x7c, 0xec, 0xe3, 0x82, 0x9e, 0x60, 0x12, 0x21, 0xa4, - 0x47, 0x10, 0xba, 0x7b, 0xd5, 0x73, 0xc5, 0x17, 0x26, 0x84, 0x3c, 0x63, 0xe4, 0x93, 0x21, - 0x82, 0x31, 0x8b, 0x17, 0x87, 0xfa, 0xa6, 0x81, 0x24, 0xb7, 0x2b, 0x5a, 0xd5, 0x9a, 0xcb, - 0x58, 0x45, 0xb6, 0xf6, 0xfd, 0xfd, 0x49, 0x42, 0x14, 0xe2, 0x4a, 0x51, 0xe9, 0x62, 0xf3, - 0xb6, 0xcb, 0xb8, 0xea, 0x9a, 0x98, 0x50, 0x0c, 0x3e, 0x8e, 0x1d, 0x42, 0x31, 0x51, 0xf8, - 0x5f, 0x51, 0xec, 0x13, 0x0d, 0x95, 0x1e, 0xc3, 0x24, 0xe2, 0x3b, 0xb2, 0x38, 0xba, 0x4e, - 0xb4, 0xbf, 0x96, 0x84, 0xb8, 0xd0, 0x0d, 0x16, 0xa7, 0xa2, 0xdb, 0x38, 0x7c, 0x8e, 0x0d, - 0x1b, 0xa0, 0x86, 0x29, 0x26, 0xd7, 0xdd, 0xb2, 0x8b, 0xb9, 0xee, 0x2d, 0x56, 0x40, 0x63, - 0x31, 0x09, 0xbb, 0x1f, 0xd6, 0x1c, 0xf4, 0x96, 0x99, 0xa0, 0xad, 0xa6, 0xaa, 0xf8, 0x82, - 0xa0, 0xe3, 0x37, 0x48, 0x0a, 0x37, 0xa1, 0x56, 0xab, 0xf6, 0xa2, 0x1b, 0xcc, 0x64, 0x6b, - 0xc3, 0xde, 0x36, 0xbb, 0x0e, 0x0b, 0x4b, 0x38, 0xe5, 0xfe, 0x2d, 0x7b, 0x18, 0x71, 0xdc, - 0x1e, 0xdd, 0x57, 0x2d, 0xfd, 0x6e, 0xfd, 0x09, 0xca, 0x10, 0x83, 0x6c, 0xaa, 0xb4, 0xf0, - 0x61, 0x42, 0xaa, 0x33, 0xfa, 0xc3, 0x94, 0xdb, 0x56, 0xba, 0x03, 0x19, 0xb8, 0x6c, 0x26, - 0xa4, 0x5d, 0x00, 0xb8, 0xba, 0xfe, 0xe2, 0x25, 0x33, 0xbb, 0xab, 0x1d, 0x84, 0xa6, 0x91, - 0x0f, 0xab, 0xe6, 0x4b, 0x7f, 0x83, 0x3c, 0xc1, 0x98, 0xf4, 0x7d, 0x89, 0xbf, 0xc8, 0x88, - 0x79, 0x5e, 0x22, 0xc1, 0x49, 0x8c, 0x7a, 0x13, 0x32, 0xe4, 0x4d, 0xc9, 0x4c, 0x63, 0xeb, - 0xc2, 0xe1, 0x36, 0x65, 0x24, 0x71, 0x44, 0xed, 0xec, 0xd4, 0x52, 0x03, 0x7e, 0xa7, 0xdf, - 0x44, 0xa4, 0x9b, 0xe2, 0x17, 0x43, 0x5c, 0x01, 0x9a, 0x8a, 0x7c, 0xc4, 0x04, 0xd2, 0xe1, - 0x37, 0x6c, 0xba, 0x6a, 0x56, 0xa4, 0x19, 0x05, 0x4a, 0x75, 0x3f, 0x3f, 0xee, 0xed, 0x45, - 0x65, 0x86, 0x1d, 0x1d, 0x5a, 0x7d, 0x35, 0x61, 0x8d, 0x98, 0x86, 0x31, 0x81, 0xe6, 0xd0, - 0x94, 0x47, 0x0a, 0x8e, 0xb3, 0x78, 0xa5, 0x39, 0xbe, 0x3c, 0x18, 0x1c, 0xff, 0x1c, 0x36, - 0x22, 0xc6, 0xe7, 0x71, 0xb2, 0x34, 0x4d, 0xf2, 0x2e, 0xb1, 0x93, 0x11, 0x38, 0xdd, 0xd4, - 0xc6, 0x9b, 0xd5, 0x53, 0x07, 0x61, 0xbd, 0x31, 0x19, 0xbb, 0xd9, 0x1f, 0x9c, 0x6a, 0xac, - 0x13, 0xa2, 0x61, 0x37, 0x8e, 0x1f, 0x22, 0x9a, 0xa0, 0x14, 0x0c, 0x09, 0xd6, 0xa8, 0x1c, - 0x08, 0x05, 0x24, 0x18, 0x18, 0x6d, 0xa1, 0x73, 0x45, 0x1d, 0x77, 0xfb, 0x91, 0xa5, 0x83, - 0xb0, 0x70, 0x53, 0x90, 0x4b, 0x4c, 0x36, 0x85, 0xf4, 0x9f, 0x98, 0x61, 0xa9, 0x1e, 0x80, - 0x0f, 0x30, 0x79, 0x3c, 0xc9, 0xad, 0xb0, 0x94, 0x1a, 0x0a, 0x14, 0xab, 0xcd, 0x76, 0x3b, - 0x8f, 0x3b, 0xe9, 0x6e, 0x3f, 0x31, 0x38, 0x98, 0xd6, 0xb8, 0xd6, 0x8e, 0xab, 0x4f, 0x38, - 0xc4, 0x55, 0xdd, 0x59, 0xf8, 0x72, 0x17, 0x71, 0x1a, 0x6b, 0x04, 0x1b, 0x83, 0x1f, 0x56, - 0x9e, 0x57, 0x38, 0xe0, 0xe0, 0x41, 0x4f, 0x14, 0x77, 0x9a, 0x25, 0x3a, 0x8e, 0x0a, 0xad, - 0x60, 0x8a, 0x7c, 0xb5, 0x4a, 0x90, 0x1c, 0x56, 0x30, 0xff, 0x98, 0x04, 0x32, 0xa4, 0xf8, - 0xe5, 0xe7, 0x0c, 0x01, 0xb3, 0x28, 0x3a, 0xc4, 0xa2, 0xca, 0x5e, 0x0a, 0x4c, 0xe8, 0x89, - 0x9e, 0xdc, 0xc5, 0xca, 0xc7, 0x0b, 0x53, 0x92, 0x96, 0x90, 0x18, 0x02, 0x77, 0x50, 0xee, - 0xaf, 0x61, 0x93, 0xcb, 0xee, 0x10, 0x84, 0xff, 0x05, 0x00, 0xec, 0x99, 0x41, 0xa0, 0xa5, - 0xfc, 0xad, 0x0f, 0xdd, 0x40, 0x29, 0xa6, 0xeb, 0x8d, 0x97, 0x24, 0xa8, 0x71, 0x4d, 0xd8, - 0x5a, 0xcf, 0x3d, 0x99, 0x25, 0x1a, 0x28, 0x85, 0xa8, 0xc9, 0xcc, 0x03, 0x16, 0xe3, 0xbd, - 0x33, 0x92, 0x52, 0xeb, 0x0b, 0x39, 0xcb, 0x22, 0x8d, 0xdf, 0x04, 0x9f, 0x70, 0x32, 0xf8, - 0x2a, 0xa1, 0x57, 0x16, 0x43, 0x81, 0x99, 0x3e, 0x4c, 0xa1, 0xd2, 0x33, 0x82, 0xa7, 0x6e, - 0xfe, 0x5f, 0x34, 0x0c, 0x43, 0xd1, 0x33, 0x24, 0x4e, 0x7e, 0x98, 0x84, 0x1b, 0x33, 0x68, - 0x9f, 0xc6, 0xea, 0xa4, 0x2e, 0xb9, 0x3e, 0x3d, 0x1a, 0x45, 0xbe, 0xe1, 0x3e, 0x85, 0xeb, - 0x56, 0xd9, 0x37, 0x9e, 0xdb, 0x3c, 0x11, 0x6b, 0x0a, 0xcb, 0x0d, 0x2a, 0x12, 0x6f, 0xf0, - 0x10, 0xbc, 0xdc, 0xd3, 0x6c, 0x2f, 0x05, 0x95, 0xce, 0x53, 0x4d, 0x5d, 0x11, 0x2c, 0xe3, - 0xe4, 0xfa, 0x1f, 0x98, 0xe0, 0xef, 0x35, 0xcb, 0xbe, 0xc1, 0x21, 0xa8, 0xf3, 0x16, 0x06, - 0x72, 0x8e, 0x74, 0xad, 0xe9, 0xca, 0x9c, 0x43, 0x37, 0x12, 0xa1, 0xad, 0xc6, 0xe0, 0x1d, - 0x8a, 0x23, 0xaf, 0x7e, 0xe2, 0x2d, 0x88, 0xe6, 0xbd, 0xc4, 0xf9, 0xbf, 0x02, 0x34, 0xf8, - 0xc0, 0x36, 0x2c, 0x6c, 0x79, 0x52, 0xad, 0xa4, 0x12, 0x6d, 0x29, 0xde, 0x89, 0x0e, 0xc3, - 0xf2, 0xb2, 0xc3, 0xf4, 0x07, 0xcf, 0x34, 0xba, 0xdc, 0x72, 0x58, 0xaa, 0x83, 0x8b, 0x82, - 0x9b, 0x9b, 0x87, 0x76, 0x2d, 0x7c, 0x82, 0x9b, 0xfb, 0x3e, 0xc1, 0xcb, 0x52, 0x5e, 0xb3, - 0x91, 0xdd, 0x29, 0xd2, 0x67, 0x22, 0x4a, 0xd9, 0x8e, 0x43, 0x30, 0x24, 0x48, 0xf4, 0x5d, - 0xe1, 0x24, 0x2f, 0x5a, 0x7c, 0xbb, 0xaa, 0x74, 0xd7, 0xb7, 0x34, 0x9b, 0xbd, 0xa1, 0x93, - 0x3e, 0x9c, 0x14, 0x8a, 0x50, 0xbd, 0xf3, 0x74, 0x6a, 0xf2, 0x4d, 0xb9, 0xf4, 0x3c, 0xbc, - 0xd2, 0xf7, 0x91, 0x08, 0xe0, 0x9b, 0x97, 0xd3, 0xed, 0x7c, 0x85, 0x7a, 0xaf, 0xaf, 0x88, - 0x80, 0xeb, 0x77, 0xd8, 0x35, 0x87, 0x4f, 0x50, 0x6d, 0xff, 0x03, 0xf7, 0x4d, 0xa2, 0xf2, - 0x22, 0xdb, 0x17, 0x05, 0x00, 0xb5, 0xa1, 0xd2, 0xf7, 0xd2, 0xfb, 0xa1, 0xf0, 0x8e, 0xc5, - 0xe4, 0xf0, 0xd6, 0x13, 0xf0, 0xcd, 0xa6, 0x44, 0x25, 0xd4, 0x6a, 0x41, 0xa6, 0xb6, 0x06, - 0x93, 0xae, 0xc1, 0x3b, 0x3b, 0x34, 0x16, 0x37, 0x7c, 0x3e, 0x7e, 0x16, 0xca, 0xc1, 0xd9, - 0xd1, 0x67, 0x34, 0x59, 0x6a, 0x6f, 0x68, 0xe5, 0x28, 0x69, 0xfd, 0x53, 0x41, 0xf7, 0x3d, - 0x17, 0x28, 0x70, 0xc7, 0x23, 0x00, 0x2a, 0x1c, 0x06, 0x9d, 0x2c, 0x7c, 0x73, 0xf1, 0xe3, - 0xfb, 0xb3, 0xae, 0x77, 0xdb, 0x8d, 0x7d, 0x57, 0x2c, 0xa1, 0x92, 0x13, 0x55, 0xd9, 0x2d, - 0x27, 0xe8, 0x4b, 0x83, 0x63, 0x54, 0x86, 0xd1, 0x86, 0xdd, 0xcc, 0x1f, 0x5d, 0x08, 0x08, - 0xae, 0x21, 0x21, 0xb9, 0xec, 0x36, 0x79, 0x21, 0xbe, 0x5f, 0xed, 0x04, 0x92, 0xfd, 0xee, - 0x8f, 0xa2, 0x6f, 0x8d, 0x70, 0xa5, 0xf4, 0xe4, 0x10, 0xd4, 0xaa, 0x8b, 0xd7, 0x12, 0x30, - 0xc0, 0xba, 0xb5, 0xef, 0x87, 0x59, 0xc1, 0x39, 0xb0, 0xcd, 0x82, 0x45, 0xe8, 0xf8, 0x84, - 0x5b, 0x72, 0xd8, 0xc0, 0x13, 0x95, 0x30, 0x18, 0x54, 0xb5, 0x05, 0x6d, 0x05, 0x36, 0x43, - 0xbd, 0xd5, 0x4e, 0xcb, 0x2f, 0xd6, 0x58, 0x08, 0x36, 0x1d, 0xc9, 0xd0, 0xa5, 0xd8, 0xc6, - 0x9b, 0xd2, 0x4f, 0xdd, 0xab, 0xff, 0xec, 0xa3, 0x42, 0x69, 0x94, 0xde, 0xa4, 0x83, 0xdb, - 0x9c, 0x2c, 0x0f, 0x5f, 0xfe, 0x3f, 0xa6, 0xef, 0x59, 0xb8, 0x28, 0x97, 0x3c, 0x78, 0x44, - 0xce, 0x7e, 0x37, 0xe8, 0xd3, 0x1f, 0x61, 0x4a, 0x4e, 0xa8, 0xf4, 0xa7, 0xf1, 0x1f, 0x0c, - 0x0e, 0xe2, 0x67, 0xdc, 0x94, 0x1f, 0xe5, 0xb1, 0xf8, 0xad, 0x3c, 0x07, 0x1f, 0xcb, 0xa5, - 0xcb, 0xc2, 0xb6, 0x51, 0xa9, 0x63, 0x42, 0xe9, 0xa8, 0x5e, 0xfa, 0xdf, 0x03, 0xd4, 0x25, - 0xb5, 0xbf, 0xfd, 0xb6, 0xaf, 0x70, 0xb7, 0x91, 0x9e, 0x5c, 0xb5, 0xfb, 0xec, 0x1f, 0x73, - 0x2f, 0xca, 0xa5, 0xc1, 0x70, 0x8d, 0x09, 0x51, 0xa6, 0xe7, 0x29, 0xc3, 0xa6, 0x18, 0x0d, - 0xb3, 0x7d, 0xbe, 0x14, 0x90, 0xac, 0xfb, 0xce, 0xad, 0xe8, 0xe4, 0x39, 0xc0, 0x24, 0xee, - 0x33, 0x83, 0x0e, 0x61, 0x24, 0x02, 0xe5, 0x9c, 0x2f, 0x7a, 0x45, 0x74, 0xa0, 0x68, 0x89, - 0x19, 0xe6, 0x55, 0x32, 0xbe, 0x82, 0x8f, 0x34, 0x88, 0xc3, 0x24, 0x12, 0x96, 0x0a, 0x5e, - 0x03, 0xf2, 0xfe, 0x6c, 0xcc, 0x3a, 0x07, 0x86, 0x60, 0x70, 0x04, 0xe3, 0xa5, 0x48, 0x2d, - 0x2a, 0x2b, 0xac, 0x96, 0x8e, 0x31, 0x73, 0x37, 0x67, 0x68, 0x3f, 0x90, 0xb9, 0xf1, 0x51, - 0xfc, 0x28, 0xf0, 0x2f, 0xe8, 0xe2, 0x13, 0xc3, 0x12, 0xea, 0x04, 0x58, 0x42, 0x6b, 0x20, - 0x62, 0x22, 0x03, 0x4c, 0x75, 0x1c, 0x57, 0xc7, 0x3c, 0x13, 0x2c, 0x78, 0xf7, 0x14, 0x19, - 0x7f, 0x13, 0x8a, 0x6a, 0x26, 0x4b, 0xa6, 0x6b, 0x5f, 0xee, 0x87, 0xb9, 0x64, 0x8e, 0xf0, - 0xd2, 0x10, 0x29, 0x3d, 0x46, 0x3f, 0xe6, 0xe8, 0xc6, 0xd9, 0x09, 0x49, 0x00, 0x4d, 0xfb, - 0xb2, 0x3b, 0x4e, 0xe4, 0x04, 0x6c, 0x1d, 0x1d, 0x72, 0x01, 0x10, 0x88, 0x6d, 0xaf, 0x14, - 0x55, 0x82, 0x11, 0xa9, 0xab, 0x56, 0x7b, 0x9f, 0x9d, 0xb9, 0xf0, 0xf6, 0xbf, 0x0d, 0x2f, - 0x9c, 0x39, 0x16, 0x1a, 0x93, 0x99, 0xec, 0xf2, 0x36, 0x6b, 0xc8, 0x21, 0xf5, 0x8f, 0xac, - 0xd4, 0x8e, 0x77, 0x47, 0x89, 0x45, 0xc2, 0xa6, 0x26, 0x99, 0x5c, 0xc0, 0x7d, 0x87, 0xe2, - 0x2a, 0x85, 0x9e, 0x08, 0xbc, 0x03, 0x70, 0xe0, 0x61, 0x2d, 0x0b, 0x69, 0xa3, 0x18, 0x2d, - 0x7f, 0x2f, 0x5b, 0x23, 0x53, 0x07, 0x65, 0x59, 0x46, 0x0e, 0x81, 0xdd, 0xa9, 0x22, 0xff, - 0x25, 0x1a, 0x1e, 0x62, 0xdd, 0xac, 0x3f, 0x27, 0xe9, 0xa4, 0x1b, 0xd1, 0xe8, 0x58, 0x55, - 0xfa, 0x46, 0x46, 0xde, 0x0b, 0xd8, 0xf9, 0x73, 0x79, 0x19, 0x5f, 0xf0, 0x9a, 0x1d, 0x54, - 0xdf, 0xd8, 0x82, 0x3e, 0x8c, 0xb0, 0xa3, 0x81, 0x28, 0x11, 0xfb, 0x20, 0xad, 0xa1, 0xa7, - 0x51, 0x86, 0x85, 0x1a, 0x2c, 0x69, 0x5f, 0x0e, 0x6f, 0x5a, 0x12, 0x88, 0x9e, 0xee, 0xdd, - 0x9a, 0xce, 0x07, 0xa1, 0xbf, 0x8c, 0x83, 0xd5, 0xa0, 0x07, 0x08, 0x33, 0xfe, 0x64, 0xa3, - 0x9d, 0xe1, 0xca, 0xcb, 0xcf, 0xcf, 0xca, 0xc1, 0xe3, 0x01, 0x20, 0xac, 0xd2, 0xa1, 0xcb, - 0x9b, 0x31, 0xa2, 0x0e, 0x6d, 0xf2, 0xe5, 0x4b, 0xbd, 0xad, 0x4c, 0x87, 0x49, 0x1f, 0xd8, - 0x0d, 0x28, 0x37, 0xe3, 0x74, 0x2f, 0x8e, 0xbb, 0xd0, 0x5e, 0x53, 0x87, 0x3d, 0x4a, 0xc9, - 0xe2, 0x56, 0x18, 0xd2, 0xf2, 0x35, 0x94, 0xa2, 0x94, 0xa8, 0xc8, 0xd1, 0xbb, 0x94, 0xa4, - 0x11, 0x7b, 0xde, 0xc3, 0xd2, 0xe4, 0x4d, 0x5c, 0x65, 0x50, 0xad, 0xf4, 0xde, 0x3c, 0x1d, - 0x90, 0xb8, 0xde, 0x77, 0xc8, 0x68, 0x07, 0x4e, 0x19, 0x68, 0x5c, 0xca, 0xeb, 0xb1, 0xe6, - 0x90, 0x58, 0x0a, 0x55, 0x21, 0xd0, 0x7a, 0x71, 0xd0, 0xf0, 0xbc, 0x9b, 0x8b, 0x59, 0x3d, - 0x4a, 0x6c, 0x2b, 0xf4, 0x80, 0x3b, 0xf0, 0x7d, 0x80, 0xf4, 0x6a, 0x56, 0xfd, 0xe5, 0x50, - 0xa7, 0xf8, 0x07, 0xdc, 0x05, 0xa9, 0x3c, 0x33, 0xd1, 0x36, 0x21, 0xbb, 0xd6, 0x76, 0xdd, - 0x3e, 0x85, 0x62, 0x54, 0x85, 0x47, 0xdf, 0xee, 0x3e, 0x04, 0xef, 0x2b, 0x23, 0xec, 0x03, - 0xe2, 0x59, 0x21, 0x65, 0xa5, 0xe4, 0x09, 0x09, 0x2c, 0xfd, 0x2b, 0x41, 0x5b, 0x1b, 0x05, - 0x4b, 0x46, 0xf8, 0x50, 0x24, 0xb0, 0x9e, 0x0a, 0x60, 0xe2, 0xf7, 0x88, 0xd5, 0xb1, 0xd6, - 0xb8, 0x93, 0x52, 0x2b, 0x45, 0x14, 0x0f, 0x93, 0x0e, 0x86, 0xca, 0x42, 0x6e, 0x6e, 0xe2, - 0x14, 0x67, 0xe0, 0x04, 0x11, 0xdf, 0xff, 0x23, 0x7e, 0xf2, 0x75, 0x99, 0x23, 0x37, 0x45, - 0x8c, 0xf9, 0x58, 0x1d, 0xbc, 0x9f, 0xf3, 0xa7, 0xc9, 0x67, 0x0b, 0x4a, 0xa7, 0x03, 0x61, - 0xc1, 0x78, 0x24, 0x9e, 0x7c, 0x17, 0x70, 0xcb, 0xf9, 0xd2, 0xf0, 0x22, 0x9f, 0xc8, 0x92, - 0xfe, 0xa9, 0x11, 0xf7, 0xec, 0xf6, 0x53, 0xad, 0x49, 0x96, 0xc5, 0x99, 0x07, 0xd9, 0xd5, - 0xd4, 0x35, 0x00, 0x1f, 0x92, 0x4f, 0xb1, 0x9d, 0x13, 0x91, 0xd6, 0x61, 0x70, 0x23, 0x2a, - 0x06, 0xb7, 0xb9, 0xe2, 0x61, 0xf4, 0xa5, 0x56, 0x12, 0x1b, 0xae, 0x96, 0x72, 0xd9, 0x2d, - 0x31, 0xb4, 0x65, 0xd5, 0x46, 0x98, 0x77, 0x7a, 0xb4, 0xa2, 0x09, 0x5b, 0xa5, 0xae, 0xa1, - 0xfe, 0xfa, 0x94, 0xc5, 0x38, 0x88, 0xcb, 0xe3, 0x65, 0x48, 0x5f, 0x02, 0x88, 0x60, 0x1f, - 0x07, 0x36, 0xec, 0x80, 0xc8, 0x1f, 0x41, 0x0b, 0x41, 0x0a, 0xb0, 0x37, 0xd6, 0x31, 0x49, - 0x7c, 0x23, 0x3b, 0x2e, 0xe9, 0xae, 0x62, 0xf6, 0xd2, 0x85, 0xf1, 0xe9, 0x45, 0x79, 0x6d, - 0x2f, 0xd3, 0x29, 0x05, 0x50, 0xa8, 0xa0, 0xa5, 0xa9, 0xb9, 0xef, 0xd1, 0xec, 0xa9, 0x41, - 0x5f, 0xd9, 0x01, 0x55, 0x8b, 0x26, 0xd4, 0xdf, 0x28, 0x31, 0xc2, 0x7e, 0xcc, 0xa9, 0xc6, - 0x2f, 0xe2, 0xf6, 0xa3, 0x62, 0x00, 0x6a, 0x83, 0x66, 0x38, 0xa5, 0xef, 0x51, 0xc9, 0x10, - 0xb0, 0x0a, 0x52, 0x2d, 0xed, 0xa2, 0x75, 0x28, 0x23, 0xe0, 0xe0, 0x61, 0xac, 0xf1, 0x6a, - 0x62, 0x14, 0x43, 0xa4, 0x53, 0x03, 0xa4, 0x23, 0x8a, 0x91, 0x3d, 0x60, 0xea, 0xf3, 0x87, - 0xac, 0x21, 0x0e, 0xc2, 0x69, 0x70, 0x8b, 0xc7, 0x3a, 0xf9, 0x83, 0xcd, 0xe2, 0xad, 0x88, - 0x16, 0xc2, 0x65, 0x55, 0xb8, 0xcc, 0x57, 0x32, 0xa2, 0x1a, 0xe6, 0x62, 0xf1, 0x91, 0x60, - 0x8d, 0x85, 0xf4, 0x7c, 0xf9, 0x73, 0xf7, 0xb0, 0x6a, 0xa6, 0x49, 0xe2, 0x04, 0x71, 0xd0, - 0x16, 0xc8, 0x2d, 0x8f, 0xfa, 0x0f, 0x8a, 0x54, 0xff, 0xb1, 0x8a, 0x28, 0x85, 0xff, 0x6e, - 0x06, 0xcd, 0x50, 0x01, 0x9d, 0x17, 0x3a, 0x46, 0x7b, 0x74, 0xb6, 0xda, 0xf7, 0x58, 0x02, - 0xfc, 0x3d, 0x5e, 0x6e, 0x56, 0xbb, 0xd3, 0x10, 0x8d, 0x7a, 0xfa, 0x85, 0xc3, 0x16, 0xff, - 0x6d, 0x22, 0x4d, 0x4d, 0x95, 0x00, 0x21, 0xcb, 0x78, 0x3f, 0x47, 0xf2, 0xee, 0x02, 0x49, - 0x95, 0xf3, 0x5d, 0x56, 0x84, 0x8c, 0xed, 0x55, 0x25, 0x12, 0xff, 0xc9, 0x1d, 0xb8, 0xcb, - 0x06, 0xfa, 0xce, 0x0b, 0x41, 0x87, 0xf9, 0x0c, 0x86, 0xc4, 0x46, 0x91, 0xcd, 0xe9, 0xa3, - 0x25, 0xdd, 0x92, 0x22, 0x88, 0xd9, 0x19, 0x17, 0xbb, 0xf9, 0x38, 0x0e, 0xe7, 0xd4, 0x55, - 0xc1, 0xcf, 0x00, 0xf7, 0xec, 0x31, 0x5e, 0x75, 0x17, 0x01, 0xd7, 0xc5, 0x16, 0x2c, 0x39, - 0x7e, 0x49, 0x4d, 0x27, 0x88, 0x81, 0xc5, 0x1a, 0xb1, 0xb4, 0x7f, 0x15, 0x6e, 0xb9, 0x81, - 0xca, 0xf3, 0x6b, 0xf6, 0x34, 0xbc, 0xbb, 0x41, 0xc0, 0x90, 0xe8, 0x00, 0xdf, 0x07, 0x81, - 0x35, 0x39, 0x05, 0x24, 0xe9, 0x87, 0x93, 0xc2, 0x34, 0xe1, 0xd5, 0xbd, 0x63, 0x3a, 0x55, - 0x66, 0x42, 0xd0, 0x60, 0xe9, 0x46, 0x1c, 0xf6, 0x4c, 0x3e, 0xb1, 0x20, 0x9f, 0xeb, 0x5a, - 0xba, 0x96, 0x7d, 0x6b, 0x7f, 0xc0, 0x64, 0x9d, 0xb8, 0xe7, 0x32, 0xfc, 0xe0, 0x7f, 0x1f, - 0x20, 0xa6, 0xc0, 0x40, 0x6f, 0xba, 0x75, 0x0f, 0x23, 0xe6, 0x33, 0xb1, 0x3e, 0x1b, 0x68, - 0x5b, 0x10, 0x2a, 0x25, 0xfe, 0xe1, 0xdc, 0x79, 0x51, 0x7e, 0x6d, 0x26, 0xea, 0x5b, 0x20, - 0xf6, 0xd0, 0x6f, 0xd4, 0x30, 0x63, 0x44, 0x33, 0x9a, 0xf8, 0x21, 0x35, 0x9e, 0xe2, 0x92, - 0xe2, 0x36, 0x37, 0x69, 0xe6, 0x1c, 0xc4, 0xbe, 0xae, 0x91, 0x87, 0x10, 0x37, 0x77, 0xb6, - 0xe7, 0x07, 0x61, 0x9a, 0xd8, 0x6e, 0xd1, 0x4b, 0x58, 0x4b, 0x8b, 0x16, 0x01, 0x45, 0x16, - 0x84, 0xfd, 0xf9, 0x79, 0x26, 0xbe, 0x5b, 0x20, 0xe5, 0xdf, 0xf3, 0xc2, 0xeb, 0x85, 0x1d, - 0xfd, 0xca, 0x49, 0xd1, 0x6b, 0x86, 0x9b, 0x3e, 0x74, 0xa6, 0x59, 0xc6, 0xb1, 0x65, 0x16, - 0xca, 0x45, 0x3f, 0xee, 0x2d, 0x28, 0x76, 0x89, 0x76, 0x3b, 0x95, 0xc2, 0x5c, 0x32, 0x64, - 0x5a, 0x15, 0x32, 0x16, 0x1a, 0xb9, 0xf6, 0x19, 0x99, 0x95, 0x41, 0x8f, 0x6c, 0x16, 0xd9, - 0x6a, 0x37, 0x00, 0x7a, 0xc5, 0x6c, 0x2a, 0x2d, 0x04, 0x33, 0xb8, 0x3a, 0xac, 0x90, 0x69, - 0xe1, 0xe8, 0x07, 0xc3, 0xcc, 0x85, 0x1e, 0x27, 0x3e, 0x7f, 0x50, 0xdd, 0x31, 0xec, 0x1f, - 0xda, 0x20, 0x87, 0x0d, 0xce, 0xf7, 0x1a, 0x21, 0x47, 0x69, 0x15, 0x90, 0xa9, 0x68, 0x15, - 0x32, 0x52, 0x21, 0xdc, 0xc7, 0xd1, 0x64, 0x12, 0xdb, 0x57, 0xbc, 0x38, 0xec, 0xdd, 0xd3, - 0x54, 0x61, 0xbb, 0xb4, 0xba, 0x1a, 0x2d, 0xab, 0x68, 0x56, 0x29, 0x06, 0x3c, 0x74, 0xec, - 0x61, 0x4a, 0x9c, 0xc5, 0x4d, 0xe6, 0x55, 0x2e, 0x89, 0xa4, 0xa6, 0x4d, 0xcb, 0xd0, 0x6f, - 0x70, 0x02, 0xa1, 0x3f, 0xd9, 0x29, 0xd8, 0x3b, 0x43, 0xb2, 0xd2, 0x6a, 0x72, 0x90, 0x9c, - 0x22, 0xfd, 0xb3, 0x59, 0x5a, 0xb8, 0xb1, 0xff, 0x49, 0xfc, 0x10, 0xa5, 0xf0, 0xe0, 0x59, - 0xc3, 0x43, 0x61, 0x1e, 0x43, 0xcc, 0x85, 0x8b, 0xd2, 0x37, 0x0b, 0xae, 0x9f, 0xf0, 0xd5, - 0x76, 0xb9, 0x5c, 0x0d, 0x55, 0x9b, 0x6d, 0x92, 0x88, 0xb4, 0x9e, 0xe3, 0xef, 0x0f, 0x21, - 0x81, 0x51, 0x5c, 0x91, 0x97, 0xec, 0xc0, 0x16, 0xfe, 0x32, 0xcd, 0x06, 0x08, 0x2a, 0x37, - 0xfa, 0xbb, 0xa4, 0xdd, 0xf3, 0x29, 0xf1, 0x25, 0xc2, 0x12, 0xf6, 0xa1, 0x4b, 0xaa, 0x3c, - 0xb3, 0x1b, 0x7b, 0xcd, 0xf5, 0xca, 0xfb, 0x7f, 0xfa, 0xce, 0x71, 0x61, 0x1a, 0x0e, 0xef, - 0x7e, 0x51, 0xde, 0x73, 0x97, 0x3d, 0x67, 0xcf, 0xbe, 0x24, 0x44, 0xb7, 0x59, 0x4d, 0xe3, - 0xb0, 0x90, 0xd9, 0x43, 0xfa, 0x39, 0xb7, 0xcf, 0x78, 0x83, 0x5b, 0xcc, 0x20, 0xd9, 0x5b, - 0x35, 0xda, 0xd4, 0x28, 0xff, 0xd5, 0x9e, 0x22, 0x0d, 0x2f, 0xbe, 0x32, 0xe6, 0x02, 0xdb, - 0xa4, 0x24, 0xd6, 0x6c, 0x9c, 0x85, 0x8c, 0x16, 0xd7, 0x55, 0x0a, 0xd2, 0x52, 0x47, 0x82, - 0x38, 0x59, 0x37, 0xb7, 0x21, 0x2d, 0x2d, 0x44, 0x35, 0x0a, 0xea, 0x27, 0x9f, 0xbe, 0x18, - 0xaf, 0x7f, 0x65, 0x77, 0xba, 0x7e, 0x9b, 0x6d, 0xd4, 0xdf, 0xfc, 0xb1, 0x6f, 0x80, 0x34, - 0x3a, 0xa4, 0x42, 0xa4, 0x02, 0x34, 0x80, 0xd5, 0x7d, 0xb2, 0xd0, 0xe4, 0x29, 0x98, 0xee, - 0x64, 0x2e, 0x5f, 0x1b, 0x49, 0xed, 0x51, 0xb1, 0x16, 0x69, 0x77, 0xd7, 0x41, 0x29, 0x57, - 0x3a, 0x8a, 0x45, 0x2b, 0xc9, 0x45, 0x01, 0x35, 0x5a, 0x16, 0x6d, 0x63, 0x4e, 0x1c, 0x47, - 0x7d, 0x0f, 0x18, 0x93, 0x69, 0x39, 0xbf, 0xc8, 0xce, 0x6f, 0x4c, 0x57, 0x12, 0xb0, 0x9d, - 0xbd, 0x41, 0x4d, 0xb8, 0x4d, 0xf1, 0x9c, 0x19, 0x16, 0x7f, 0x75, 0x12, 0xaa, 0xa4, 0xbc, - 0xc3, 0x47, 0x0a, 0x97, 0x46, 0x5b, 0x2e, 0x86, 0x23, 0xe2, 0x15, 0xfc, 0x5d, 0x19, 0xa6, - 0x3a, 0xf2, 0xb3, 0x1e, 0x17, 0x56, 0x5e, 0x46, 0x98, 0xe7, 0x06, 0x79, 0xc6, 0x0c, 0x84, - 0x1d, 0x0c, 0xad, 0x2a, 0xb9, 0x9f, 0xd1, 0x78, 0xbf, 0x38, 0x49, 0x2a, 0x73, 0x4b, 0xb5, - 0x52, 0xee, 0x4b, 0x0a, 0x48, 0xc3, 0x44, 0xc6, 0xf2, 0x04, 0xff, 0x67, 0x0b, 0x30, 0x18, - 0xa6, 0x05, 0xbd, 0xe9, 0x03, 0x4e, 0x8c, 0x18, 0x4d, 0xc6, 0x7c, 0x8f, 0x22, 0xb7, 0x3c, - 0xed, 0xca, 0x28, 0x07, 0xea, 0xc7, 0xce, 0x54, 0x47, 0xb4, 0x97, 0x7d, 0x15, 0x0c, 0x21, - 0x81, 0xdf, 0x0c, 0x10, 0x8f, 0x24, 0xb8, 0x77, 0xfa, 0x6f, 0xf7, 0x8f, 0xb2, 0xf0, 0x0e, - 0xe1, 0xaa, 0xea, 0xc1, 0x85, 0x9a, 0x93, 0xf8, 0x68, 0x92, 0x1c, 0x3d, 0x53, 0xd0, 0x74, - 0x27, 0x1c, 0xa4, 0x4d, 0xac, 0xf9, 0xf6, 0xc2, 0x4a, 0xd0, 0x35, 0x93, 0x24, 0xaa, 0xf0, - 0x80, 0x97, 0x6f, 0x91, 0xfb, 0x49, 0x39, 0x7c, 0xcb, 0xf1, 0xf0, 0x20, 0x2e, 0xc2, 0xb3, - 0xff, 0xdd, 0x94, 0x19, 0x72, 0xe5, 0x6f, 0x73, 0x54, 0xbf, 0x54, 0x7a, 0x3c, 0x78, 0x7f, - 0x96, 0xd4, 0x74, 0x1c, 0x0b, 0xd7, 0x16, 0x59, 0xfc, 0xa8, 0x65, 0x8a, 0x07, 0xfc, 0x05, - 0xf7, 0x7b, 0xb8, 0x07, 0x0c, 0x11, 0x20, 0xb7, 0x8f, 0xb1, 0xa2, 0x1e, 0x3f, 0xcc, 0x5e, - 0x9a, 0x9d, 0x09, 0xe0, 0x29, 0x9e, 0x9e, 0x37, 0xb6, 0x3d, 0x33, 0xec, 0x7c, 0x42, 0x7a, - 0xda, 0xe4, 0xf7, 0x69, 0x82, 0xe8, 0xca, 0x2b, 0xd0, 0x95, 0xf9, 0x94, 0xea, 0xa7, 0x09, - 0xc4, 0xac, 0xde, 0x8f, 0x10, 0x17, 0xf7, 0x41, 0xe9, 0xef, 0x92, 0x43, 0x19, 0x7b, 0xff, - 0x08, 0x30, 0xcf, 0xbc, 0x1b, 0x13, 0xb8, 0x6f, 0x39, 0x12, 0xb5, 0x57, 0x55, 0xda, 0xb8, - 0xda, 0x47, 0x10, 0x7b, 0xbe, 0x32, 0x4a, 0x1b, 0x83, 0xa7, 0x6d, 0x52, 0xd2, 0xef, 0x04, - 0x42, 0x1e, 0x73, 0xd2, 0x83, 0x15, 0x90, 0x77, 0xe3, 0xd9, 0xbd, 0x22, 0x19, 0xf0, 0x7a, - 0x69, 0x81, 0x38, 0x6f, 0x47, 0xa8, 0x8e, 0x9a, 0x21, 0xc1, 0x5e, 0x9b, 0x76, 0x31, 0xa6, - 0x34, 0x9b, 0x0d, 0x37, 0x94, 0x4b, 0xd8, 0xff, 0x5d, 0xb8, 0x10, 0xc5, 0x42, 0x01, 0xef, - 0xe6, 0x8e, 0x8a, 0x3e, 0xd7, 0x28, 0xcc, 0xa4, 0xf7, 0x7f, 0x17, 0x9a, 0xb6, 0x24, 0x42, - 0xc4, 0x4e, 0x43, 0x66, 0xd3, 0xbc, 0xde, 0xde, 0x93, 0x95, 0x67, 0x21, 0x3a, 0xf1, 0x70, - 0x00, 0x9b, 0xf7, 0x4c, 0xbf, 0xca, 0x0c, 0x4a, 0x03, 0xce, 0x57, 0x37, 0x49, 0x8b, 0x16, - 0xa4, 0x9a, 0x8f, 0x17, 0x0f, 0x6c, 0x89, 0x2d, 0x6d, 0x49, 0xa6, 0x75, 0x00, 0x71, 0x98, - 0xc6, 0x40, 0x3e, 0xa8, 0x6c, 0x0a, 0x28, 0xf1, 0x6f, 0xb3, 0xec, 0x24, 0x43, 0xd3, 0x9c, - 0x8d, 0x0e, 0xb1, 0xe4, 0xec, 0x78, 0x98, 0xa5, 0x19, 0xc5, 0x32, 0x6a, 0x67, 0x34, 0xa3, - 0x43, 0x2b, 0x57, 0xcc, 0x2c, 0x8e, 0xb0, 0xa0, 0x36, 0x7f, 0x6c, 0x20, 0x6c, 0xfd, 0x70, - 0x76, 0xd1, 0x63, 0x1a, 0x53, 0x20, 0xf4, 0x27, 0x5f, 0x9b, 0xaf, 0x75, 0xc1, 0x01, 0x61, - 0x03, 0xbb, 0x66, 0x8b, 0x67, 0x70, 0x20, 0xe6, 0x13, 0x43, 0x6e, 0x97, 0x88, 0x00, 0x80, - 0x1d, 0x6a, 0x8c, 0x60, 0x99, 0x94, 0x49, 0xdd, 0xcb, 0xbf, 0xd2, 0x9b, 0x6b, 0x91, 0x25, - 0x21, 0xa5, 0x53, 0x73, 0xd9, 0xdb, 0x7b, 0x35, 0x38, 0xfd, 0x56, 0x3e, 0x5c, 0x11, 0xcb, - 0x20, 0xf5, 0xe3, 0x10, 0x16, 0xed, 0x9d, 0x0c, 0xff, 0xc5, 0x9a, 0x96, 0x3f, 0x78, 0x8f, - 0x8b, 0xe4, 0x6a, 0xa9, 0xf6, 0x54, 0x1f, 0xba, 0xd6, 0xba, 0x18, 0xbc, 0x3a, 0xdf, 0xd3, - 0x9c, 0xcc, 0x22, 0xd4, 0x97, 0x39, 0x8c, 0x38, 0x9d, 0xb4, 0xb8, 0x3e, 0xa0, 0xa3, 0x07, - 0xa3, 0xef, 0xa3, 0xa0, 0xea, 0xad, 0x6a, 0xf8, 0x1a, 0xfb, 0xf1, 0x51, 0x0f, 0xe6, 0x7b, - 0x18, 0x41, 0xed, 0xda, 0x5e, 0xba, 0xad, 0x87, 0xd5, 0x50, 0x84, 0x82, 0xca, 0x04, 0x44, - 0xb0, 0x37, 0xca, 0x3c, 0xe0, 0xe5, 0x19, 0x78, 0x9f, 0x2e, 0x7c, 0x27, 0x1a, 0x83, 0x1f, - 0xb6, 0x02, 0x95, 0xa1, 0x99, 0x26, 0x40, 0x9c, 0x93, 0x63, 0x2e, 0x0f, 0x29, 0xfe, 0x17, - 0x5c, 0x42, 0x2f, 0xfb, 0xfb, 0xc7, 0x8d, 0x5f, 0x2a, 0x0a, 0x6b, 0xbd, 0x45, 0x8e, 0x76, - 0x9f, 0x3a, 0x58, 0xb1, 0x2f, 0xa4, 0xfa, 0x96, 0xae, 0x30, 0x9f, 0x1c, 0x06, 0x6d, 0xf8, - 0xd1, 0xc9, 0x19, 0xbe, 0xb1, 0xe3, 0x03, 0x3d, 0x79, 0xee, 0xaa, 0xe0, 0x1d, 0xea, 0x46, - 0xb6, 0xc6, 0x37, 0x3c, 0x03, 0x56, 0xdd, 0x66, 0x38, 0xa4, 0xe8, 0x13, 0xa0, 0x5e, 0xad, - 0xcb, 0xa1, 0xff, 0x49, 0x6b, 0x78, 0x59, 0x1a, 0x43, 0xfd, 0x9e, 0x5f, 0x31, 0x69, 0x8e, - 0xa8, 0x1d, 0x54, 0x51, 0xe9, 0x37, 0x62, 0xa4, 0x33, 0x4f, 0x19, 0x40, 0x88, 0xa1, 0x0d, - 0x5e, 0x32, 0x37, 0xd3, 0x1c, 0xd0, 0xa5, 0x93, 0x7e, 0xdc, 0x2e, 0xa8, 0xca, 0x85, 0xb5, - 0x63, 0x65, 0x04, 0x2e, 0xf8, 0xad, 0x4c, 0x3a, 0x9e, 0x0e, 0x0a, 0x7b, 0x2a, 0xdb, 0xa1, - 0xac, 0xbb, 0x1a, 0xff, 0x22, 0xb9, 0xb8, 0xc8, 0x1a, 0x43, 0x6b, 0xc1, 0xad, 0xf3, 0x65, - 0xd4, 0x53, 0xc0, 0x90, 0x45, 0x6c, 0x9b, 0x97, 0x66, 0x27, 0x16, 0x94, 0x1d, 0x9e, 0xd5, - 0x3b, 0xc4, 0x6e, 0xa1, 0x5e, 0x20, 0x0a, 0x7b, 0x7b, 0x43, 0x77, 0x05, 0x4b, 0x4e, 0x54, - 0xe0, 0x5a, 0x87, 0x92, 0xfb, 0x57, 0x8d, 0xce, 0xbd, 0x3b, 0xc9, 0x17, 0x82, 0x00, 0xac, - 0xf2, 0x01, 0x90, 0xd4, 0x23, 0x91, 0x00, 0xf4, 0x14, 0xe5, 0x51, 0x5d, 0x0a, 0xf7, 0x9b, - 0xdd, 0x17, 0x7d, 0xa7, 0xfc, 0x8f, 0xc7, 0xfd, 0x38, 0xd6, 0x12, 0xee, 0xf7, 0x0f, 0xbd, - 0x2b, 0x5f, 0xfd, 0x0b, 0x1d, 0x85, 0x48, 0x9b, 0x1b, 0x01, 0x47, 0x63, 0x54, 0x8c, 0xae, - 0x4d, 0xe6, 0xe5, 0x53, 0x8c, 0x11, 0x66, 0x4a, 0x3c, 0x5a, 0x2d, 0xb0, 0x7b, 0x62, 0x90, - 0x0e, 0xba, 0x77, 0x92, 0xa7, 0x4c, 0xb4, 0xdd, 0x26, 0x72, 0xd1, 0x78, 0x32, 0xd5, 0xc2, - 0x74, 0x6d, 0xe3, 0x51, 0x0b, 0x09, 0xf0, 0x0b, 0xd2, 0x80, 0x51, 0xc0, 0xb9, 0xba, 0x59, - 0x33, 0x26, 0x1b, 0x87, 0x61, 0x5f, 0x93, 0x4a, 0x9c, 0x01, 0x9c, 0x02, 0x67, 0x15, 0x5c, - 0x73, 0xbf, 0xd5, 0x0a, 0xad, 0x8d, 0x78, 0xc9, 0x69, 0x00, 0xe6, 0xc1, 0x79, 0xfb, 0x83, - 0xa2, 0x22, 0xb8, 0x0e, 0x30, 0xb8, 0x7f, 0xc0, 0xee, 0xb9, 0xb9, 0xb5, 0x7c, 0x5d, 0xfb, - 0x08, 0x1a, 0x87, 0xce, 0x51, 0xbf, 0x6c, 0x90, 0x85, 0xbc, 0xe3, 0x74, 0xf6, 0xfe, 0xf6, - 0x5a, 0x08, 0x69, 0x7b, 0x22, 0xd7, 0x0a, 0x37, 0xb4, 0xfb, 0xc5, 0xe0, 0x66, 0x49, 0x20, - 0x70, 0x98, 0xfe, 0x18, 0xdd, 0xff, 0x7f, 0x70, 0x72, 0x3c, 0xa8, 0x7d, 0xe5, 0x45, 0xed, - 0x3b, 0x02, 0x9b, 0x0c, 0x57, 0xba, 0x9f, 0x6c, 0x37, 0x70, 0x9d, 0x70, 0x69, 0x7f, 0x98, - 0xf1, 0xc9, 0xcb, 0x23, 0xa3, 0xba, 0x4e, 0xeb, 0x84, 0x81, 0x6e, 0x26, 0xe3, 0x39, 0x3c, - 0xed, 0xdb, 0xc4, 0xf6, 0x7a, 0xf2, 0x41, 0x79, 0xc7, 0x78, 0x2d, 0xb5, 0xf8, 0xe3, 0xc6, - 0xd9, 0xad, 0x70, 0xa2, 0x61, 0x8d, 0x17, 0xbe, 0x99, 0x52, 0xfe, 0x46, 0xe8, 0x4c, 0x09, - 0x72, 0x5a, 0x08, 0x5f, 0x6b, 0x0a, 0x3b, 0x16, 0xcb, 0xef, 0xb7, 0x53, 0x14, 0x0d, 0x64, - 0xdd, 0x33, 0x64, 0x4a, 0x85, 0x18, 0xa0, 0xf9, 0x19, 0x6c, 0xc5, 0x22, 0x7e, 0x24, 0xe8, - 0xe2, 0x3f, 0x11, 0x71, 0xe9, 0x4a, 0x19, 0x3b, 0x21, 0x32, 0xdc, 0x21, 0xdb, 0x99, 0x26, - 0x0c, 0xdd, 0xa9, 0x7a, 0x54, 0x01, 0xf3, 0x1a, 0x39, 0xf1, 0x88, 0xdc, 0x0e, 0xc3, 0x85, - 0xd8, 0x14, 0xf1, 0xf2, 0x8a, 0x38, 0xe6, 0xf3, 0xce, 0x1c, 0x1f, 0x6e, 0xf2, 0xf9, 0xa4, - 0x83, 0x2a, 0xa7, 0x95, 0xaf, 0xf1, 0x52, 0xf8, 0x03, 0xf4, 0x42, 0x2d, 0xd5, 0x4c, 0x63, - 0x78, 0x33, 0x7a, 0x36, 0x70, 0xed, 0xf9, 0xda, 0x81, 0x40, 0x8b, 0xd2, 0xa4, 0x90, 0x45, - 0x7a, 0x23, 0xae, 0x05, 0x94, 0x17, 0x34, 0x51, 0xc6, 0x43, 0xa8, 0x93, 0x7f, 0xf1, 0xe0, - 0x86, 0x69, 0xa8, 0x57, 0x74, 0x95, 0xaf, 0x97, 0xd1, 0x40, 0xdf, 0xde, 0xea, 0x87, 0x9e, - 0xda, 0xeb, 0x74, 0xd3, 0xc7, 0x3c, 0x01, 0x1f, 0xe2, 0x30, 0x0a, 0x9a, 0x82, 0x29, 0xbf, - 0xf9, 0x97, 0x63, 0x0f, 0xdd, 0x98, 0x48, 0x2b, 0x3a, 0xa2, 0x2e, 0xb3, 0x7a, 0x17, 0x19, - 0xd2, 0xed, 0x3c, 0x58, 0x4d, 0x07, 0xab, 0x30, 0x0b, 0x62, 0xc4, 0x4a, 0x9b, 0x02, 0x4a, - 0xb2, 0x44, 0xfb, 0x4a, 0xb7, 0xba, 0x2e, 0x93, 0x25, 0xab, 0x8e, 0xe5, 0x5c, 0x3c, 0x11, - 0xc9, 0x46, 0x30, 0xd8, 0x85, 0x9f, 0x5d, 0x9d, 0x94, 0x2e, 0x4d, 0x50, 0x29, 0x65, 0xb9, - 0xbe, 0xd5, 0x9c, 0x25, 0xab, 0x9f, 0x84, 0x85, 0xf8, 0xaa, 0x88, 0x65, 0x63, 0xf1, 0x12, - 0x26, 0xaa, 0x00, 0x7c, 0x7c, 0x35, 0xbb, 0xe7, 0xf6, 0x47, 0xaa, 0x14, 0x7b, 0x6f, 0x0d, - 0x9f, 0x74, 0x37, 0x2a, 0xb6, 0xb2, 0xec, 0x73, 0xeb, 0x20, 0xba, 0xe3, 0x63, 0xb5, 0xd6, - 0x90, 0x2b, 0x72, 0x19, 0x67, 0xdd, 0xbf, 0x9b, 0x9f, 0x4a, 0x27, 0x2e, 0xd7, 0x3a, 0x24, - 0xe1, 0xaf, 0xd7, 0x54, 0x29, 0x92, 0x5c, 0xab, 0xa9, 0x36, 0x61, 0xfc, 0x84, 0x83, 0xfa, - 0xcb, 0x08, 0x0a, 0x67, 0x54, 0xab, 0xdc, 0x9c, 0xdb, 0x9d, 0x4d, 0xbe, 0x84, 0x95, 0xd2, - 0x21, 0x3f, 0x6a, 0xf9, 0x6f, 0x86, 0xb1, 0x35, 0x27, 0xec, 0x02, 0x6c, 0x5b, 0xd4, 0x30, - 0xbb, 0x8e, 0x25, 0x5e, 0xf9, 0x3f, 0xec, 0x15, 0x87, 0x57, 0xf3, 0x53, 0x62, 0x47, 0x2c, - 0xb9, 0x20, 0x00, 0x59, 0x83, 0x67, 0xec, 0x7c, 0x2e, 0x01, 0x34, 0x92, 0x48, 0x23, 0xe3, - 0x3a, 0x7b, 0x81, 0x29, 0x88, 0x33, 0x51, 0xf8, 0xe0, 0xef, 0xc1, 0xfe, 0xeb, 0xd1, 0x19, - 0x64, 0x18, 0x6a, 0xfe, 0x12, 0xe2, 0xdb, 0x58, 0xd6, 0x40, 0x7e, 0xab, 0x14, 0x45, 0xe2, - 0x1a, 0xa7, 0x32, 0x50, 0xec, 0x7e, 0xdd, 0x0b, 0x9d, 0x84, 0xe3, 0x47, 0x61, 0x35, 0x75, - 0xd0, 0x0f, 0x1a, 0xd6, 0x37, 0x0e, 0x32, 0x2f, 0x67, 0x97, 0xa4, 0x76, 0xa0, 0xcd, 0x3e, - 0xc8, 0x4a, 0xd3, 0xe3, 0xa7, 0x94, 0x84, 0x97, 0x32, 0xcc, 0x47, 0xb4, 0x2e, 0xf0, 0x66, - 0x77, 0x6c, 0x41, 0x9f, 0x11, 0x29, 0x98, 0x27, 0x01, 0x3e, 0x27, 0x2a, 0xf7, 0x7d, 0x21, - 0x41, 0xac, 0xac, 0x53, 0xcc, 0x16, 0x40, 0x0b, 0xd7, 0x91, 0xd1, 0x51, 0x35, 0xe7, 0x04, - 0x42, 0x7a, 0x1a, 0xa5, 0x98, 0xd4, 0xb0, 0xcb, 0x8e, 0xdd, 0x33, 0xf0, 0x34, 0xc4, 0xe8, - 0xd6, 0x3e, 0xb7, 0x63, 0x6c, 0x28, 0xc7, 0xcb, 0x2e, 0x84, 0x94, 0xd5, 0xf2, 0x65, 0x80, - 0xc0, 0xc1, 0x85, 0x18, 0x63, 0x96, 0x66, 0xca, 0xb2, 0x23, 0x61, 0x4b, 0x12, 0x5e, 0xe9, - 0x19, 0x85, 0x30, 0x76, 0xeb, 0xe4, 0xe2, 0x97, 0x15, 0x16, 0x2a, 0x0e, 0xff, 0x13, 0x87, - 0x91, 0x7f, 0x3d, 0x5a, 0xd6, 0x14, 0xf8, 0x72, 0x59, 0xc4, 0x3e, 0x86, 0xe7, 0x95, 0x12, - 0xc3, 0xd4, 0x94, 0x8e, 0xbf, 0x6e, 0xf2, 0xee, 0x30, 0x68, 0x85, 0x33, 0x16, 0xef, 0xd1, - 0xbe, 0xac, 0xe7, 0x84, 0x08, 0xc4, 0xea, 0x68, 0x09, 0x8c, 0x59, 0xee, 0x99, 0x0d, 0xeb, - 0x00, 0x2e, 0x9c, 0x40, 0xf0, 0xb1, 0x46, 0x64, 0xf0, 0x61, 0x5e, 0x62, 0x98, 0x0b, 0x90, - 0x15, 0x26, 0x07, 0x89, 0x89, 0xaf, 0xc9, 0xc3, 0x4b, 0xed, 0xae, 0x67, 0x8f, 0x94, 0x8f, - 0xd1, 0x61, 0xf9, 0x1f, 0x71, 0xe0, 0x63, 0x8a, 0x01, 0x6e, 0xff, 0xa3, 0x9a, 0x8a, 0xdf, - 0x81, 0x3d, 0x40, 0x55, 0x01, 0xa6, 0x64, 0x7b, 0xcf, 0x0d, 0x56, 0xb7, 0xe8, 0xfc, 0xb2, - 0xd2, 0xe5, 0x25, 0x76, 0x54, 0x17, 0x0a, 0xe8, 0x76, 0x47, 0x64, 0x93, 0xfe, 0x88, 0x9f, - 0x9d, 0xb1, 0xba, 0x2e, 0x10, 0x7b, 0x32, 0x56, 0x59, 0x57, 0x98, 0x6e, 0x2f, 0xaf, 0x4e, - 0x39, 0xb3, 0xbb, 0x1a, 0xbe, 0xbf, 0x04, 0x10, 0x08, 0xc2, 0x57, 0xd9, 0x84, 0x1b, 0xab, - 0x73, 0x21, 0x3d, 0x04, 0x8b, 0xf4, 0x48, 0xf9, 0xff, 0x40, 0xb6, 0xce, 0x5d, 0x95, 0xd0, - 0xea, 0xe7, 0xa9, 0x2a, 0x66, 0xb4, 0x98, 0xd1, 0x98, 0x3d, 0xd4, 0xc7, 0xa7, 0x35, 0x90, - 0x93, 0xae, 0xa3, 0x72, 0xaa, 0xac, 0xf2, 0xcf, 0x4a, 0xd8, 0x8d, 0x20, 0xd6, 0x62, 0xba, - 0xdb, 0xf0, 0xdd, 0x04, 0xec, 0x3f, 0x9c, 0x84, 0x7f, 0xef, 0x27, 0x21, 0x60, 0x4d, 0x95, - 0x46, 0x5a, 0x64, 0x72, 0xc5, 0x2a, 0xcd, 0x6c, 0x4b, 0xd2, 0xbf, 0x87, 0x79, 0xa8, 0x46, - 0x40, 0xe8, 0x09, 0xd8, 0x48, 0x67, 0x33, 0x6c, 0x56, 0xf3, 0xa6, 0xb7, 0x3d, 0x3a, 0x1b, - 0xb9, 0xc0, 0x8a, 0x65, 0xfc, 0xb6, 0xad, 0x0a, 0xc4, 0xe5, 0xc4, 0x0b, 0xc2, 0x11, 0x28, - 0x17, 0x8a, 0x26, 0x45, 0xbd, 0xe4, 0x25, 0x56, 0x6c, 0x22, 0x08, 0x34, 0x24, 0x49, 0xe9, - 0x1f, 0xe7, 0xa1, 0xcc, 0xf9, 0xe3, 0xd5, 0xcc, 0x6f, 0xdf, 0xac, 0x90, 0x23, 0xa2, 0xa4, - 0x52, 0xeb, 0x01, 0xab, 0x17, 0xab, 0x1e, 0x33, 0x80, 0xad, 0xf8, 0x8e, 0xe2, 0x4c, 0xfc, - 0xbd, 0x53, 0x1d, 0x49, 0xe6, 0x01, 0xea, 0x7c, 0xf2, 0xfa, 0x8a, 0x4e, 0x59, 0x0f, 0x5c, - 0x36, 0x32, 0xd1, 0x92, 0xa8, 0xe0, 0x0b, 0x5c, 0x59, 0xfb, 0xb7, 0x44, 0x23, 0x65, 0x75, - 0x5b, 0x6f, 0x51, 0x85, 0x0e, 0x14, 0xd6, 0x2e, 0x9d, 0xf2, 0xa5, 0x19, 0xcc, 0xef, 0x5f, - 0x6b, 0x10, 0x86, 0x94, 0x80, 0xa1, 0xd9, 0x9b, 0xec, 0x34, 0x2f, 0x5a, 0x95, 0xab, 0x9d, - 0xbe, 0xa1, 0x51, 0x7f, 0x3a, 0x2c, 0x1f, 0xae, 0x7e, 0x00, 0xc5, 0x02, 0x6d, 0x81, 0x04, - 0x13, 0x05, 0xea, 0x64, 0xaf, 0xcc, 0x35, 0x82, 0x54, 0xd6, 0x54, 0x32, 0xc3, 0xf7, 0x2d, - 0x66, 0x31, 0xa7, 0x21, 0xe5, 0xdd, 0x59, 0x0f, 0x14, 0x30, 0x2d, 0x64, 0xa6, 0xd5, 0xd8, - 0x58, 0xfc, 0x6a, 0x9b, 0x30, 0x44, 0xa4, 0xac, 0x8c, 0xae, 0x9f, 0xb2, 0x59, 0x29, 0x2f, - 0xc4, 0xa1, 0x8f, 0xab, 0x4b, 0x69, 0x9c, 0xbe, 0xcd, 0xda, 0x20, 0x13, 0x16, 0xf5, 0xf4, - 0x85, 0x05, 0x97, 0x4e, 0x59, 0xd5, 0x65, 0x16, 0xb2, 0x87, 0x07, 0x11, 0xf1, 0x34, 0x68, - 0x84, 0x5e, 0x36, 0x70, 0x99, 0x0e, 0x6f, 0xfb, 0x22, 0x45, 0x5c, 0xbf, 0x11, 0x37, 0x3a, - 0x41, 0xa9, 0xd6, 0x00, 0xd1, 0xeb, 0x53, 0x82, 0x3d, 0x19, 0xac, 0xe0, 0x0c, 0x4f, 0x4d, - 0x16, 0x70, 0x66, 0x20, 0x6f, 0xa8, 0xa8, 0x8b, 0x91, 0x2a, 0x8f, 0xc8, 0xaf, 0x72, 0x1e, - 0xa1, 0x90, 0xe9, 0xa1, 0x82, 0x53, 0x30, 0xf1, 0x62, 0xd3, 0xac, 0x31, 0xac, 0xf7, 0x90, - 0x8c, 0x76, 0x44, 0xa5, 0x73, 0x9b, 0x1d, 0xfc, 0x22, 0x1f, 0xf7, 0x1a, 0x70, 0x7f, 0x34, - 0x2d, 0x02, 0x14, 0x25, 0xee, 0x7e, 0x73, 0xd9, 0xb1, 0xf4, 0x57, 0xfb, 0x0f, 0x08, 0x5f, - 0x90, 0x85, 0x9a, 0x84, 0xcd, 0xc4, 0xa4, 0xf9, 0xce, 0x0b, 0xe0, 0x03, 0xd3, 0x3e, 0xb0, - 0x4f, 0x6e, 0xb3, 0x3a, 0xbc, 0xff, 0x15, 0x43, 0x25, 0xdb, 0x50, 0x34, 0x8e, 0xc0, 0x16, - 0x6e, 0xa8, 0x6f, 0x55, 0x4e, 0xe2, 0xc8, 0x3a, 0xfd, 0x1b, 0x54, 0x2f, 0x8c, 0xa9, 0x27, - 0x76, 0x58, 0xc3, 0x90, 0x70, 0x1a, 0x95, 0x59, 0xdf, 0x79, 0x55, 0xed, 0xcf, 0x89, 0x19, - 0x8b, 0x20, 0x10, 0xa5, 0x53, 0xc3, 0x99, 0x94, 0xd9, 0x42, 0x77, 0x2e, 0x07, 0x9a, 0x3e, - 0xd6, 0xb9, 0xf5, 0x0f, 0xbe, 0xc7, 0xc3, 0x15, 0x4f, 0x09, 0xda, 0x4d, 0xe8, 0xd8, 0x0c, - 0xd4, 0x97, 0x37, 0xd0, 0xbe, 0x43, 0x65, 0x18, 0x4e, 0xf8, 0x59, 0xb2, 0x9f, 0x8c, 0x2d, - 0xeb, 0xbe, 0xff, 0x3c, 0xc6, 0x85, 0x12, 0x30, 0xa3, 0x0b, 0x78, 0xbc, 0x4a, 0x9a, 0x9c, - 0x50, 0x83, 0xba, 0x77, 0xd1, 0xf3, 0xab, 0x21, 0xf3, 0x98, 0x36, 0xd5, 0x81, 0x0e, 0xd1, - 0xc5, 0x67, 0x38, 0x11, 0x79, 0xf4, 0xad, 0xe1, 0xa8, 0x4f, 0x78, 0x27, 0xc8, 0x42, 0x0a, - 0x8a, 0xa8, 0x35, 0x88, 0xdb, 0xc9, 0x99, 0x8d, 0x68, 0x16, 0x3a, 0x5b, 0xb9, 0x00, 0x95, - 0xa4, 0x54, 0x7e, 0x06, 0x75, 0x7c, 0x83, 0xce, 0x1e, 0x7a, 0xdc, 0xd8, 0xe8, 0x33, 0x84, - 0xd6, 0x01, 0x0f, 0x05, 0xf5, 0x23, 0x5d, 0x57, 0x24, 0xf8, 0x29, 0x63, 0x93, 0xd5, 0x2c, - 0xaa, 0xfb, 0x1a, 0x7d, 0xab, 0x36, 0x03, 0x9e, 0xee, 0xc3, 0x6c, 0x12, 0x3b, 0x2e, 0x11, - 0x3b, 0x7d, 0xb2, 0x1e, 0x0b, 0x7c, 0x41, 0x73, 0x51, 0x49, 0x2e, 0xf1, 0xda, 0x97, 0xe1, - 0x1b, 0x8c, 0xcd, 0xf5, 0x1a, 0x43, 0x72, 0xad, 0x2b, 0x1e, 0x99, 0x60, 0xc1, 0x57, 0x99, - 0xf3, 0x91, 0x35, 0x31, 0xef, 0x8a, 0xe1, 0x55, 0xcc, 0xaa, 0x10, 0x24, 0x53, 0x10, 0xe0, - 0x95, 0x60, 0x5c, 0x0c, 0x66, 0xf9, 0x69, 0x61, 0xa0, 0xa8, 0x44, 0x25, 0x79, 0x93, 0x21, - 0xe0, 0x27, 0x27, 0x00, 0x2a, 0x00, 0x5a, 0x4e, 0x6d, 0x5a, 0xee, 0x81, 0xc5, 0xd3, 0xae, - 0xc9, 0x8d, 0xa6, 0x2c, 0x11, 0xcf, 0xb3, 0x77, 0xe0, 0xe0, 0x58, 0xb6, 0x43, 0x6e, 0x1b, - 0x24, 0x77, 0x92, 0x19, 0x41, 0xad, 0x0e, 0x93, 0x9c, 0xdf, 0xee, 0x77, 0x56, 0x7d, 0x3f, - 0x3e, 0xce, 0x78, 0xf3, 0xc0, 0x4a, 0x2f, 0xb5, 0x3d, 0x76, 0xe9, 0x69, 0xf1, 0x3d, 0xdd, - 0x61, 0x46, 0x9d, 0xa9, 0xc2, 0x24, 0xce, 0xe8, 0x33, 0x42, 0xa3, 0xb0, 0xbd, 0x5d, 0xb3, - 0x5c, 0xac, 0xab, 0x94, 0x0b, 0x03, 0x50, 0x13, 0xa4, 0x67, 0xeb, 0xb3, 0xa5, 0x59, 0x37, - 0x73, 0x4c, 0x53, 0x0d, 0x86, 0x47, 0xdd, 0x48, 0x4c, 0xba, 0x16, 0xbb, 0xae, 0x7f, 0x97, - 0xf4, 0x50, 0x1e, 0x39, 0x70, 0xcf, 0xa4, 0xae, 0x5f, 0xa8, 0x9d, 0x5e, 0x19, 0xca, 0x49, - 0xd3, 0xf2, 0x86, 0xc4, 0x01, 0x19, 0x72, 0x3d, 0x53, 0x3d, 0xa9, 0x61, 0x25, 0x93, 0x36, - 0x57, 0xf9, 0x3a, 0x21, 0x92, 0xb1, 0xd9, 0xe5, 0xef, 0x66, 0xa4, 0x67, 0x5a, 0xa3, 0xb3, - 0x06, 0x33, 0x39, 0x69, 0x99, 0xc4, 0x53, 0x42, 0x6e, 0x78, 0x22, 0x90, 0x73, 0xc3, 0x37, - 0x8a, 0x13, 0x40, 0xc6, 0x30, 0xd2, 0x59, 0xcf, 0x52, 0xf2, 0x03, 0x02, 0x6f, 0xfc, 0x86, - 0x46, 0x44, 0x4d, 0x20, 0xf4, 0xa5, 0x1a, 0x6e, 0xe3, 0x8f, 0xd0, 0x0d, 0xde, 0x1d, 0x7f, - 0x02, 0x07, 0x3c, 0x8c, 0xd1, 0xc8, 0xd8, 0xeb, 0xa1, 0xd1, 0x4c, 0xb0, 0x24, 0x11, 0xde, - 0x92, 0x3c, 0x77, 0xe0, 0x1e, 0xef, 0x03, 0xe4, 0xc3, 0x0b, 0x52, 0x2e, 0x9d, 0xc9, 0xe7, - 0xa2, 0xc9, 0x7c, 0x1e, 0x49, 0x65, 0x9c, 0xcf, 0x4d, 0xe1, 0xe4, 0xdb, 0xf4, 0xfa, 0x46, - 0x60, 0x74, 0xfa, 0x16, 0xcf, 0x97, 0x52, 0xcd, 0xac, 0x72, 0x2d, 0xf6, 0xbc, 0xe4, 0x60, - 0x4c, 0x72, 0xe7, 0x19, 0x11, 0x1b, 0x31, 0x17, 0x71, 0xad, 0xe7, 0x94, 0xd2, 0xf9, 0xf2, - 0x34, 0x9d, 0x3e, 0x91, 0x40, 0x89, 0x7f, 0x31, 0xcc, 0x80, 0x43, 0xe1, 0x3d, 0x2a, 0xd0, - 0x94, 0xde, 0xee, 0xe7, 0x5b, 0x4c, 0x31, 0x08, 0x00, 0xee, 0x7c, 0xbe, 0x09, 0x56, 0x0b, - 0xe8, 0x5f, 0x5c, 0x00, 0x50, 0x6c, 0x61, 0x19, 0x69, 0x7a, 0xc7, 0xc8, 0x9e, 0xf6, 0x35, - 0x89, 0x33, 0x0b, 0xd7, 0xe7, 0x4e, 0xcc, 0x63, 0x68, 0x2d, 0xd7, 0xe8, 0xd1, 0x5a, 0xe0, - 0x0d, 0x8a, 0xac, 0xe7, 0xda, 0xaf, 0xb1, 0x7f, 0x63, 0x96, 0xa7, 0x2e, 0xa5, 0x99, 0x62, - 0x43, 0xce, 0x57, 0xc3, 0x83, 0xc0, 0x0c, 0x26, 0x4a, 0x07, 0xe4, 0x27, 0x45, 0x53, 0xdb, - 0x94, 0x6f, 0xe6, 0xd5, 0xce, 0xc9, 0x92, 0x39, 0x81, 0x06, 0xc5, 0xc4, 0xea, 0x06, 0x3e, - 0xbc, 0x37, 0x2a, 0xfb, 0x68, 0xc5, 0x84, 0x10, 0x12, 0x6e, 0x29, 0xf6, 0x17, 0x23, 0xa0, - 0x9c, 0xe9, 0xf1, 0xbc, 0x5a, 0xac, 0x06, 0x47, 0x3a, 0xa6, 0xd5, 0x2d, 0x77, 0xc1, 0xb5, - 0x1c, 0x01, 0x13, 0xfb, 0x8d, 0xb5, 0x1c, 0xbe, 0x6b, 0xbb, 0xc1, 0x3a, 0x1e, 0xf9, 0xc8, - 0x37, 0x99, 0x4d, 0x24, 0x17, 0x65, 0xe9, 0x1d, 0xf1, 0x7e, 0xef, 0xc2, 0xe9, 0x8a, 0x2f, - 0xc8, 0x02, 0xfa, 0xea, 0xf9, 0x77, 0x44, 0x7a, 0xa8, 0x33, 0x64, 0xf8, 0x09, 0x2e, 0xbb, - 0x38, 0x95, 0x0c, 0x96, 0x00, 0x91, 0x4d, 0x7f, 0x20, 0xd6, 0xdf, 0x6c, 0xbd, 0x2b, 0xd8, - 0xb4, 0xb3, 0xb4, 0x01, 0x8a, 0xa6, 0x2e, 0x1e, 0xa3, 0x55, 0x0a, 0xc7, 0x69, 0x47, 0x3b, - 0x12, 0x03, 0xab, 0x66, 0x21, 0xb0, 0x9b, 0xce, 0x61, 0x64, 0x9d, 0xb1, 0xa5, 0x57, 0x42, - 0x31, 0xe9, 0x26, 0x65, 0x56, 0x35, 0xa0, 0xdf, 0xe0, 0xbe, 0x4d, 0x97, 0x91, 0x07, 0xb2, - 0xa3, 0xc6, 0x46, 0x47, 0x96, 0x2f, 0x39, 0x75, 0xcc, 0x7e, 0xa6, 0x83, 0xdb, 0xa6, 0x66, - 0xd6, 0x72, 0xfb, 0x53, 0x80, 0x5c, 0x46, 0xe4, 0x2c, 0x28, 0x1f, 0x23, 0x1d, 0xbd, 0x1b, - 0x71, 0x4e, 0xa3, 0xb6, 0x4d, 0x6e, 0x10, 0x87, 0x35, 0x5e, 0xf2, 0x68, 0x45, 0x43, 0x86, - 0xb7, 0xef, 0xe5, 0x36, 0x6a, 0x3e, 0xba, 0xa7, 0xee, 0x6b, 0x12, 0xba, 0xcd, 0xf1, 0x90, - 0xba, 0xd8, 0x8c, 0x62, 0xc7, 0xbb, 0x64, 0xf6, 0x2e, 0xf1, 0x38, 0x45, 0x63, 0x06, 0x32, - 0x7b, 0x1e, 0x18, 0x6d, 0x46, 0xe7, 0x37, 0x66, 0x81, 0xc3, 0xb4, 0x7a, 0x82, 0xd9, 0xcf, - 0x2d, 0x7b, 0xb1, 0x3c, 0x96, 0x50, 0x54, 0x63, 0x1e, 0x95, 0xa6, 0xb6, 0x3f, 0x18, 0x57, - 0xcb, 0xc0, 0x15, 0x3c, 0x3f, 0x8e, 0x99, 0x19, 0xfb, 0x06, 0x79, 0xce, 0x1c, 0x5f, 0xf9, - 0x13, 0x9f, 0xf5, 0xe2, 0xb7, 0x8a, 0x71, 0xcd, 0xa8, 0x0d, 0x8b, 0xce, 0x05, 0x90, 0x28, - 0x39, 0xd8, 0x6c, 0x62, 0x3c, 0xa9, 0xff, 0x20, 0xb6, 0xfc, 0x17, 0x86, 0x62, 0xf5, 0x93, - 0x37, 0xca, 0xa5, 0xab, 0xdb, 0x80, 0x60, 0xc2, 0xce, 0xac, 0x07, 0x96, 0xb7, 0x6d, 0xd9, - 0xc6, 0x2c, 0x45, 0x05, 0xff, 0x0f, 0xc6, 0x60, 0xf0, 0x5b, 0x3c, 0x47, 0x9d, 0x2f, 0x4d, - 0x10, 0x6f, 0x27, 0xbb, 0xe2, 0xab, 0xa8, 0xe0, 0xba, 0x81, 0xa0, 0x4f, 0x39, 0x94, 0x05, - 0x86, 0x59, 0xc2, 0x23, 0x9c, 0x2d, 0xc5, 0x75, 0xeb, 0xae, 0x6f, 0x38, 0xa9, 0x81, 0x98, - 0xce, 0x19, 0xfc, 0x5a, 0x04, 0xc2, 0xb7, 0x3a, 0x43, 0x8e, 0xe1, 0x1c, 0x33, 0xb0, 0x9a, - 0x62, 0xff, 0x83, 0xd3, 0x91, 0x12, 0xe9, 0xff, 0xe4, 0xc9, 0x1c, 0x8c, 0x89, 0x25, 0x2a, - 0x00, 0x75, 0x31, 0xcc, 0x42, 0x3c, 0x92, 0x19, 0xdd, 0xe8, 0x32, 0x72, 0xb5, 0xd3, 0x56, - 0x5d, 0xc9, 0x22, 0x23, 0x54, 0x4f, 0xb2, 0x0b, 0x23, 0xdb, 0xc3, 0x6b, 0x6e, 0x63, 0x49, - 0x38, 0xeb, 0xb9, 0xcb, 0x36, 0x10, 0x5d, 0xbd, 0x6b, 0xfb, 0xda, 0xf2, 0xbd, 0x2d, 0x1b, - 0xde, 0x5f, 0xcd, 0x41, 0x58, 0xa3, 0xfa, 0xc1, 0x9c, 0x1f, 0x64, 0x0f, 0x50, 0x4c, 0x09, - 0x70, 0x74, 0x49, 0x69, 0x66, 0x75, 0x60, 0x4a, 0x54, 0x4e, 0x7b, 0x66, 0x91, 0x56, 0xbc, - 0x50, 0x4c, 0x04, 0xfb, 0x8b, 0x3c, 0x23, 0xa3, 0x7e, 0x8b, 0xb0, 0x2c, 0x57, 0x1e, 0xd7, - 0xd9, 0xa5, 0x1d, 0x90, 0x39, 0x08, 0xc9, 0x40, 0xd5, 0xa7, 0x6c, 0x1e, 0x11, 0x6c, 0x20, - 0x3f, 0x63, 0x8a, 0x31, 0xfc, 0x0d, 0xc5, 0xc6, 0x70, 0xb2, 0xd4, 0x92, 0x1b, 0x10, 0x5a, - 0xf0, 0x20, 0x82, 0xe0, 0x73, 0x52, 0x40, 0x3d, 0x10, 0xc6, 0xca, 0xa4, 0x42, 0x67, 0x53, - 0xea, 0x54, 0x81, 0xa5, 0xc7, 0xa8, 0x07, 0xbe, 0xf4, 0x65, 0xe8, 0x1e, 0x9d, 0x3e, 0xd7, - 0x2c, 0xb1, 0x25, 0x81, 0xfd, 0xd4, 0x12, 0xf5, 0xb2, 0x75, 0x07, 0x23, 0x3d, 0x88, 0xaf, - 0x79, 0x90, 0x7c, 0x61, 0xa4, 0xd7, 0x9b, 0xc2, 0xc9, 0x11, 0xe4, 0x95, 0xcb, 0x23, 0x02, - 0xb0, 0x15, 0x32, 0x10, 0x54, 0x94, 0x4f, 0x97, 0x16, 0x1b, 0x4c, 0xf4, 0x24, 0xf7, 0x2f, - 0x62, 0x84, 0xd7, 0xa2, 0x64, 0xd1, 0x95, 0x8f, 0xeb, 0x19, 0x28, 0x72, 0x44, 0xdd, 0x74, - 0x77, 0x2e, 0x55, 0x36, 0x27, 0x1f, 0xcf, 0x77, 0x56, 0xce, 0xa3, 0x28, 0xc8, 0x90, 0xf5, - 0x56, 0x21, 0x86, 0x63, 0xe1, 0xd7, 0x5d, 0xb7, 0x34, 0x41, 0x70, 0x48, 0x2b, 0xed, 0x63, - 0x09, 0x85, 0x3f, 0x89, 0x46, 0x1b, 0x20, 0x31, 0xfa, 0x7c, 0x27, 0x0e, 0xe5, 0xcd, 0x74, - 0xe5, 0x39, 0xbd, 0xba, 0x0f, 0xf3, 0xd4, 0xee, 0xc5, 0x72, 0x7f, 0xed, 0x6a, 0x42, 0xca, - 0x44, 0x2f, 0x6d, 0xd2, 0x99, 0xb0, 0xf3, 0x10, 0x3e, 0x3d, 0x12, 0x92, 0xf6, 0x56, 0x81, - 0x59, 0x61, 0x33, 0x4e, 0x70, 0x4a, 0x90, 0x3e, 0x54, 0x5b, 0x66, 0x78, 0x4b, 0x7a, 0x30, - 0xc4, 0xf0, 0xa2, 0xe5, 0x07, 0xa0, 0x80, 0xad, 0x40, 0x0f, 0x06, 0xc5, 0x56, 0x01, 0x0b, - 0x8e, 0xd0, 0x63, 0x17, 0x40, 0xd3, 0x48, 0x47, 0x6a, 0x46, 0x4a, 0x5a, 0xb7, 0xc9, 0xb1, - 0xad, 0x40, 0x64, 0x8d, 0x0a, 0xd7, 0xe4, 0x9d, 0x5d, 0xca, 0x8a, 0x92, 0x33, 0xe1, 0xf9, - 0x93, 0x4f, 0x60, 0x36, 0x6a, 0x19, 0x50, 0xd2, 0xb6, 0x31, 0xca, 0x03, 0x74, 0x0a, 0x0b, - 0x29, 0xb5, 0x7c, 0x9f, 0x9a, 0xb5, 0x39, 0x93, 0x9d, 0x79, 0x35, 0xbc, 0x4f, 0x98, 0x3e, - 0x94, 0xab, 0x07, 0xad, 0x4a, 0xcf, 0xb7, 0x19, 0xe5, 0x1b, 0x2c, 0xe6, 0x9e, 0xc0, 0xb6, - 0xc7, 0x8f, 0x61, 0x3e, 0x95, 0x1f, 0xae, 0x7d, 0x23, 0x8e, 0x3b, 0x1b, 0xc3, 0x07, 0x05, - 0x92, 0x27, 0xad, 0xbf, 0x7a, 0x26, 0x90, 0xbe, 0xda, 0xb7, 0xf5, 0x9b, 0xf3, 0xe3, 0xe3, - 0x80, 0xdc, 0xf0, 0x4b, 0x55, 0x1a, 0x3a, 0x84, 0x07, 0xf7, 0xe6, 0xc0, 0x25, 0x8c, 0xd0, - 0xb9, 0xe9, 0x0d, 0x11, 0x49, 0xe3, 0x80, 0x3f, 0x8e, 0xa8, 0xba, 0xc1, 0x37, 0xb4, 0x50, - 0xe3, 0x4f, 0x64, 0xf2, 0x68, 0xab, 0x53, 0x92, 0xc0, 0x35, 0x92, 0x36, 0x23, 0x8a, 0x34, - 0x4a, 0xc6, 0x5b, 0x75, 0x7f, 0x17, 0x0c, 0xf0, 0x43, 0x2f, 0xad, 0x20, 0xea, 0xa1, 0xc0, - 0x24, 0x09, 0x35, 0x7e, 0x37, 0x02, 0x5e, 0xe8, 0xe5, 0x4e, 0x0d, 0x45, 0xe4, 0x55, 0x34, - 0xda, 0x96, 0x2b, 0x96, 0x4d, 0xbf, 0xbe, 0xab, 0x61, 0xed, 0x2b, 0x3d, 0x41, 0x19, 0xfc, - 0xef, 0xaf, 0xf8, 0xa9, 0xac, 0x60, 0xf9, 0xce, 0x24, 0x92, 0x98, 0x57, 0x4f, 0x7a, 0x21, - 0x71, 0xcb, 0x05, 0x26, 0x04, 0xaa, 0x72, 0x5b, 0x9e, 0xad, 0x4c, 0x30, 0x5f, 0xb7, 0x28, - 0x33, 0xc6, 0xf7, 0x69, 0x27, 0x81, 0xe3, 0xa1, 0x61, 0x77, 0x65, 0x90, 0x95, 0xa9, 0xf9, - 0xf0, 0x1c, 0x13, 0x23, 0x43, 0x4f, 0x6f, 0x1b, 0x96, 0x1c, 0xf2, 0x95, 0xb1, 0xb3, 0xcd, - 0x81, 0xec, 0x11, 0x45, 0x61, 0xda, 0x56, 0x82, 0x57, 0x7a, 0x92, 0x49, 0xba, 0x0e, 0xcc, - 0xda, 0x4d, 0xb4, 0xa5, 0x78, 0x01, 0xb6, 0x65, 0xe9, 0x51, 0xa8, 0x65, 0x81, 0x8d, 0x02, - 0x04, 0x31, 0x7e, 0x51, 0xd9, 0xc8, 0x02, 0x1f, 0xc6, 0xc5, 0x01, 0x32, 0x12, 0xc5, 0x31, - 0xfd, 0x7f, 0xfa, 0x81, 0xf0, 0x7e, 0x8e, 0xea, 0x0d, 0xbe, 0xec, 0xc5, 0x3b, 0x5e, 0x42, - 0x20, 0x5a, 0x3c, 0x9d, 0x2a, 0xa3, 0xf4, 0x4c, 0x60, 0x66, 0xd8, 0xeb, 0x9f, 0x76, 0xf0, - 0x68, 0xda, 0xb7, 0x22, 0x04, 0xe3, 0x9d, 0xda, 0xab, 0x3a, 0xa3, 0xaf, 0xb6, 0x79, 0xab, - 0x39, 0x33, 0xb6, 0xa6, 0x66, 0x68, 0x25, 0x64, 0x68, 0xfc, 0xa0, 0x27, 0x7c, 0xe5, 0x8f, - 0xcb, 0x9f, 0x1b, 0xe4, 0x9d, 0x38, 0x1e, 0x9d, 0x6c, 0xfb, 0x13, 0x21, 0x7b, 0x38, 0xa3, - 0x4c, 0xeb, 0xca, 0x31, 0xae, 0xa6, 0xc9, 0x97, 0x7b, 0x2a, 0xdc, 0xe9, 0xd0, 0xa2, 0xd2, - 0x90, 0xc4, 0x6d, 0x3e, 0x5a, 0x28, 0x3a, 0xe2, 0x05, 0x90, 0x2d, 0x97, 0xd6, 0x16, 0xb5, - 0xd9, 0xa1, 0x27, 0x68, 0xc1, 0x1a, 0x11, 0x1f, 0x7e, 0x58, 0x39, 0x64, 0x0c, 0xbe, 0x2c, - 0x4c, 0x72, 0xb3, 0x6a, 0x58, 0xb6, 0xb8, 0xda, 0xc0, 0x01, 0x85, 0x86, 0x59, 0x39, 0x93, - 0x81, 0x6c, 0xa2, 0x6b, 0xea, 0xa2, 0x20, 0x0c, 0x3d, 0xce, 0xbf, 0x19, 0x43, 0xde, 0x5c, - 0x5d, 0x9e, 0x88, 0x01, 0x26, 0x17, 0x36, 0x66, 0x2a, 0x61, 0x8d, 0x9a, 0x56, 0xd6, 0xf9, - 0x13, 0x29, 0xfa, 0x61, 0x8a, 0xf8, 0xa6, 0x3a, 0x8c, 0x55, 0x89, 0x35, 0xfe, 0x16, 0x85, - 0x99, 0x83, 0xcb, 0x48, 0x71, 0x91, 0xdc, 0xbe, 0x5c, 0x30, 0xa7, 0x94, 0x8c, 0xe1, 0xc1, - 0xdd, 0x93, 0x47, 0x0e, 0xd6, 0xe1, 0x63, 0x53, 0x00, 0xa7, 0x7b, 0x89, 0x99, 0xde, 0x30, - 0xe2, 0x2f, 0xa4, 0x10, 0x96, 0xe8, 0x79, 0x49, 0xef, 0xcf, 0x18, 0x78, 0x3e, 0x90, 0xe8, - 0x42, 0x71, 0x79, 0xf5, 0x42, 0x4c, 0x87, 0x0f, 0xa2, 0xdf, 0xaf, 0xf3, 0x21, 0x7f, 0x22, - 0x48, 0xe7, 0x79, 0x9d, 0xbc, 0x6c, 0x29, 0xdc, 0xa6, 0xc1, 0x1a, 0xfb, 0x68, 0x33, 0x10, - 0x38, 0x3d, 0x0e, 0xf8, 0x8a, 0xf0, 0xbc, 0xfd, 0x9b, 0x79, 0xb1, 0xaf, 0xbc, 0x43, 0x6d, - 0x9a, 0x06, 0xee, 0x9d, 0xcf, 0xa0, 0x59, 0x3c, 0x44, 0xba, 0x10, 0x2d, 0x6e, 0xdb, 0x13, - 0x90, 0x0b, 0x82, 0x86, 0x35, 0x7a, 0x03, 0x28, 0x7e, 0x68, 0xe8, 0xc7, 0xa7, 0x7b, 0x5f, - 0xbf, 0x13, 0x92, 0x92, 0x47, 0x6b, 0xfc, 0x26, 0x50, 0xfb, 0xa3, 0x47, 0x91, 0x44, 0x31, - 0x7a, 0xb6, 0x6f, 0x27, 0x86, 0x88, 0x90, 0x96, 0x60, 0x1b, 0x96, 0xdf, 0x4d, 0xb1, 0xfc, - 0x62, 0xea, 0x59, 0xf9, 0xe2, 0x85, 0xc0, 0x53, 0x84, 0xb9, 0xf0, 0x63, 0x53, 0xc2, 0x9a, - 0xaf, 0xcb, 0x7b, 0x05, 0x7c, 0x85, 0x7f, 0xb0, 0x70, 0x6f, 0xce, 0x9c, 0x4f, 0xa5, 0x38, - 0x9a, 0x57, 0x50, 0x00, 0x75, 0x84, 0xd6, 0x20, 0x5e, 0x56, 0x19, 0x07, 0xac, 0x89, 0x59, - 0x6d, 0x15, 0x1a, 0x61, 0x05, 0xb8, 0x9b, 0x6f, 0xa4, 0x2b, 0xb1, 0x65, 0x55, 0x62, 0xa8, - 0x00, 0x46, 0xd9, 0x25, 0xaf, 0xb1, 0xef, 0x46, 0x5b, 0x30, 0x5d, 0xd3, 0x3a, 0xb6, 0x9a, - 0xde, 0x26, 0xb8, 0xa2, 0x8a, 0xf1, 0x6d, 0xa7, 0x52, 0xa3, 0xd6, 0x21, 0x69, 0xf3, 0x62, - 0x19, 0xdb, 0xaf, 0x50, 0x02, 0x6b, 0x23, 0x7f, 0xdf, 0xbe, 0xec, 0x97, 0x15, 0xba, 0x82, - 0x93, 0xe2, 0x94, 0x6c, 0x0d, 0x55, 0x3b, 0xc9, 0x20, 0xa1, 0xd8, 0x1b, 0x78, 0x93, 0x31, - 0x95, 0x49, 0x40, 0xc0, 0x6a, 0x43, 0x09, 0xa9, 0x0c, 0xd5, 0xec, 0x1b, 0xc3, 0xb1, 0xbf, - 0xa9, 0xa4, 0xa7, 0xb4, 0x6a, 0xb1, 0xe0, 0xd7, 0x6f, 0x2a, 0xa5, 0x15, 0x0f, 0xd3, 0xa1, - 0xa2, 0xf4, 0xde, 0x77, 0x01, 0x79, 0x8b, 0x52, 0xc8, 0x8f, 0x1b, 0x72, 0x2f, 0xb4, 0xc5, - 0x0b, 0x5c, 0xa1, 0x32, 0x86, 0x06, 0xa1, 0x8c, 0x12, 0xb1, 0x41, 0x61, 0xce, 0xc2, 0xa0, - 0x2f, 0xd7, 0xef, 0x7c, 0xcd, 0x81, 0x8e, 0x1f, 0x29, 0xfd, 0x3e, 0x83, 0x8b, 0x1d, 0xd3, - 0x4d, 0x40, 0xa9, 0xf1, 0xa5, 0x39, 0xba, 0xa4, 0x00, 0xc7, 0x6e, 0xbb, 0x0e, 0xdd, 0xa3, - 0xe3, 0x86, 0x37, 0xd4, 0xf1, 0x18, 0x55, 0x77, 0xdb, 0xa8, 0x6f, 0x5f, 0xbf, 0x90, 0x16, - 0x69, 0x0f, 0x52, 0xe3, 0x05, 0x2e, 0x5c, 0x56, 0x0f, 0xf3, 0x55, 0x1a, 0xd0, 0xc3, 0x3c, - 0x46, 0x9b, 0x37, 0x46, 0xc7, 0x7c, 0xc7, 0x2c, 0x58, 0x8b, 0x48, 0xb9, 0x68, 0x26, 0x8a, - 0x0d, 0xd8, 0x9c, 0xba, 0x45, 0xc7, 0xb9, 0x87, 0xb0, 0xe2, 0xa5, 0xb3, 0xf7, 0x51, 0xf9, - 0xb8, 0x58, 0xcd, 0xdd, 0xe2, 0x7a, 0xba, 0xac, 0x97, 0xf7, 0x88, 0x76, 0xa8, 0x17, 0xe9, - 0x3f, 0xc0, 0x4b, 0x83, 0x97, 0x49, 0xef, 0x7c, 0x0d, 0x0e, 0xb2, 0xdd, 0x2f, 0x8f, 0x92, - 0xd8, 0x0c, 0x10, 0x38, 0xfd, 0x42, 0x1c, 0xaf, 0x67, 0x36, 0xe8, 0xce, 0x16, 0x0b, 0x46, - 0xcf, 0xc9, 0x68, 0xd0, 0x6e, 0x91, 0x52, 0xc2, 0x0b, 0x24, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0xf9, 0x8a, 0x6b, 0xa4, 0xf4, 0x1f, 0xe5, 0x59, 0xe6, 0x2a, 0x16, 0xff, 0x5a, 0x24, 0x01, - 0x63, 0xc8, 0x75, 0x7b, 0xac, 0xd7, 0x32, 0x0b, 0x4a, 0x5e, 0x52, 0x45, 0x75, 0x39, 0x2a, - 0xc4, 0x13, 0xeb, 0xf1, 0x7e, 0x42, 0x84, 0xe3, 0x9c, 0x8a, 0x61, 0x84, 0xfa, 0x59, 0x2d, - 0x1a, 0x6d, 0x2b, 0xf9, 0x9b, 0x9c, 0x76, 0xc4, 0x44, 0x28, 0x8f, 0x2b, 0xda, 0x42, 0x65, - 0x89, 0xc0, 0x1b, 0x1c, 0x91, 0x86, 0x08, 0x5c, 0xbd, 0x6a, 0x57, 0x4a, 0x6a, 0x02, 0xf4, - 0x11, 0x4a, 0x20, 0x7b, 0x40, 0x6c, 0xb4, 0x22, 0x21, 0x02, 0x93, 0xc4, 0xf4, 0xf6, 0xc7, - 0x65, 0x0b, 0x23, 0xd6, 0xd1, 0xb4, 0x80, 0x93, 0x48, 0x94, 0x82, 0x32, 0x79, 0xbf, 0xd1, - 0xe9, 0x70, 0x77, 0x16, 0x3f, 0x17, 0x98, 0x56, 0x23, 0x1a, 0x7b, 0x75, 0x18, 0x63, 0x89, - 0x0a, 0x32, 0x64, 0x23, 0x38, 0xc1, 0x07, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x47, 0xc6, 0xd3, 0xfc, 0xbe, 0xa6, 0xce, 0xa1, 0xef, 0x53, 0x01, 0x50, 0x43, - 0x9c, 0xde, 0x78, 0x7f, 0x28, 0xad, 0x6e, 0x86, 0x1b, 0xfc, 0x8a, 0x21, 0x0a, 0x88, 0x5e, - 0xcc, 0x24, 0x3f, 0x91, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xe3, 0xee, - 0xfb, 0xee, 0xea, 0x3a, 0x4d, 0x2d, 0xfd, 0xc2, 0xef, 0x69, 0xcb, 0x7d, 0x66, 0x28, 0xea, - 0xae, 0x75, 0xdd, 0x90, 0x40, 0x97, 0x7f, 0x40, 0x58, 0x9f, 0x62, 0x99, 0x43, 0x2a, 0x40, - 0x80, 0x6e, 0x29, 0x9b, 0x5f, 0x30, 0x26, 0xe4, 0xed, 0x16, 0xd4, 0x96, 0x8e, 0x32, 0xa1, - 0xd6, 0x52, 0x7f, 0x1d, 0x92, 0xe6, 0x6e, 0x2e, 0x1e, 0xc3, 0x42, 0x22, 0x2c, 0x54, 0xbc, - 0x08, 0x00, + 0xe4, 0xcf, 0x04, 0x1c, 0xe2, 0x71, 0x4f, 0xce, 0x6b, 0x2d, 0xea, 0xc4, 0x8e, 0x63, 0xd6, + 0x61, 0xce, 0x0f, 0xb4, 0x62, 0x21, 0x02, 0xf1, 0x62, 0x75, 0xac, 0x8d, 0xa3, 0xf0, 0xb1, + 0xad, 0xb0, 0x66, 0xa1, 0x63, 0x28, 0xd5, 0x11, 0x76, 0x3a, 0x00, 0xfe, 0x5e, 0x4f, 0x92, + 0xd2, 0x2b, 0x35, 0x14, 0xfd, 0x59, 0xb1, 0xd6, 0xe2, 0x02, 0xa5, 0xc6, 0xd9, 0x89, 0x0b, + 0x55, 0x71, 0x05, 0x00, 0x0d, 0x9f, 0x2c, 0xa6, 0xf1, 0xf8, 0xfa, 0x39, 0x91, 0x5a, 0xa4, + 0x9e, 0xc7, 0x22, 0x01, 0x8c, 0x21, 0x01, 0x07, 0x7c, 0x22, 0xbf, 0xa2, 0x50, 0x49, 0x2b, + 0x61, 0x70, 0x3d, 0x1a, 0xf0, 0x35, 0x30, 0xd2, 0x34, 0x86, 0x63, 0x8d, 0xd2, 0xf5, 0xba, + 0x49, 0xd5, 0x37, 0xd1, 0xd8, 0xc4, 0x5f, 0x96, 0x5c, 0xe6, 0xa0, 0xa1, 0x4d, 0xd5, 0x09, + 0x7f, 0x44, 0x53, 0x21, 0x66, 0xe5, 0x34, 0x25, 0x5d, 0x64, 0x77, 0xb3, 0x11, 0x73, 0xfe, + 0xb4, 0x80, 0xec, 0x9b, 0xa5, 0xaa, 0xe0, 0xdb, 0x74, 0x25, 0x2d, 0xef, 0x31, 0x2b, 0xce, + 0xf4, 0x1a, 0x01, 0x11, 0x66, 0xd5, 0xf3, 0x3d, 0x8e, 0x07, 0x89, 0x11, 0x2c, 0x7a, 0xa6, + 0x0e, 0xd8, 0x6d, 0x96, 0x28, 0x7c, 0xfb, 0xe3, 0xe8, 0xe2, 0x0b, 0xe8, 0x2b, 0x94, 0xc9, + 0x7e, 0x4d, 0x41, 0xf6, 0xb8, 0x19, 0xfc, 0x36, 0x64, 0x9b, 0xa9, 0x1b, 0xc2, 0xce, 0x27, + 0x46, 0x13, 0xdc, 0x06, 0xa6, 0xef, 0x8f, 0xca, 0x00, 0x1a, 0xcc, 0x4c, 0x50, 0x28, 0xda, + 0xb5, 0x19, 0xf2, 0xb9, 0xb6, 0xff, 0xf9, 0xba, 0xf6, 0x76, 0xd1, 0xa6, 0x98, 0x57, 0xe5, + 0x0d, 0xe5, 0xf7, 0xc3, 0x76, 0x02, 0xe6, 0xa7, 0xeb, 0x95, 0x3b, 0xc3, 0xe1, 0xca, 0x4e, + 0x6e, 0x14, 0xc0, 0x24, 0xd5, 0x9a, 0x14, 0x5e, 0xd5, 0x28, 0x9f, 0xb3, 0x49, 0x8b, 0x53, + 0xf0, 0xda, 0x8f, 0x5a, 0x43, 0x54, 0x70, 0x3b, 0x12, 0xb0, 0x63, 0x88, 0xf3, 0x07, 0x74, + 0x14, 0x79, 0xfe, 0x70, 0xff, 0xc9, 0x5a, 0xe1, 0x43, 0x0c, 0xd8, 0x53, 0xba, 0x53, 0x77, + 0x8e, 0xc3, 0x3b, 0xe7, 0x71, 0xd7, 0x8e, 0x31, 0x2b, 0xd0, 0x24, 0x94, 0xc4, 0x62, 0xe2, + 0x58, 0xfd, 0x80, 0x76, 0x15, 0x51, 0x6d, 0x5d, 0xea, 0x59, 0x67, 0x9f, 0x85, 0x9b, 0x63, + 0xee, 0x04, 0xc8, 0x2b, 0x4f, 0xd4, 0x3f, 0xab, 0x33, 0x1b, 0x5f, 0xc8, 0x4f, 0x5b, 0xfe, + 0x14, 0x9c, 0x71, 0xad, 0xc4, 0x2b, 0x60, 0xe8, 0x57, 0xa7, 0xca, 0xd2, 0x3f, 0x48, 0x4a, + 0x5b, 0x7b, 0xc7, 0xb0, 0xef, 0x66, 0xe4, 0xfb, 0xa0, 0xee, 0xf3, 0xd3, 0x74, 0x7b, 0xd0, + 0xa6, 0x37, 0x29, 0xbf, 0x9c, 0xc5, 0xd9, 0xdd, 0x91, 0x7b, 0x04, 0x03, 0x68, 0xdd, 0x6b, + 0x0c, 0xa7, 0xbf, 0x7a, 0x60, 0x70, 0xee, 0x95, 0x4e, 0x40, 0xd9, 0x01, 0xf2, 0xff, 0xa6, + 0xd5, 0x0c, 0xaa, 0xf4, 0xd7, 0x21, 0x65, 0x3d, 0x5f, 0xe2, 0x54, 0xe8, 0x2f, 0xc5, 0x0d, + 0xde, 0xbb, 0x91, 0xc0, 0x5e, 0x8b, 0x83, 0xe5, 0x5b, 0xc4, 0xda, 0xfc, 0x45, 0xb0, 0x78, + 0xfc, 0xe6, 0x39, 0x1c, 0xc4, 0xd0, 0x45, 0x61, 0x28, 0xdd, 0x80, 0xee, 0x1c, 0x99, 0x65, + 0xa9, 0x37, 0x1d, 0x2f, 0x6c, 0x75, 0x33, 0xa6, 0xa4, 0x9a, 0xf3, 0xad, 0x85, 0xda, 0x81, + 0xbc, 0xe5, 0x14, 0x8b, 0x23, 0x58, 0x94, 0x43, 0x16, 0x6a, 0xe6, 0x21, 0x37, 0x85, 0x5c, + 0x0d, 0x69, 0x83, 0x09, 0xd0, 0x10, 0x8f, 0x07, 0x93, 0xe7, 0xa9, 0xa8, 0x52, 0xa9, 0xc7, + 0x59, 0x7b, 0x10, 0x40, 0xfa, 0xfe, 0xb9, 0xd6, 0x93, 0x21, 0x96, 0x48, 0xa3, 0xb6, 0x77, + 0xe6, 0xc0, 0x7c, 0x63, 0x55, 0x39, 0x52, 0x3c, 0x6a, 0x55, 0x53, 0x17, 0xa9, 0x25, 0x48, + 0x9a, 0x9d, 0xa7, 0x8c, 0xd8, 0x19, 0x24, 0x37, 0x88, 0x6b, 0x07, 0x47, 0x3c, 0xe2, 0xca, + 0x2a, 0x3a, 0x7c, 0x48, 0x72, 0x6e, 0x84, 0x2d, 0x93, 0xa8, 0x0c, 0x85, 0xfa, 0x20, 0x22, + 0x73, 0x8a, 0x43, 0x25, 0xf2, 0x87, 0x88, 0x0b, 0xa6, 0xb6, 0xe8, 0xac, 0xcd, 0xdf, 0xbd, + 0x5c, 0xa2, 0x8e, 0x67, 0xe5, 0x64, 0x53, 0x28, 0xc9, 0x98, 0x6e, 0x6e, 0x4b, 0x38, 0x55, + 0x7b, 0xd1, 0x75, 0xe5, 0xdc, 0x92, 0x59, 0x23, 0x31, 0xdf, 0x17, 0x01, 0xc8, 0xa1, 0xbc, + 0xfe, 0xbf, 0xbf, 0x09, 0x1e, 0xc2, 0x46, 0xa4, 0x6c, 0xa1, 0xe0, 0xb4, 0x79, 0x9c, 0x5c, + 0x35, 0x79, 0x60, 0x15, 0xb8, 0x72, 0x7a, 0x2e, 0x82, 0x3f, 0x94, 0x30, 0xe2, 0x5d, 0xb2, + 0x3c, 0x96, 0xba, 0x4e, 0x5a, 0xc3, 0xff, 0x3f, 0xf0, 0x5a, 0x94, 0x67, 0xf0, 0x32, 0xa4, + 0x55, 0x0a, 0x3a, 0x77, 0x76, 0x59, 0x97, 0x3d, 0x5d, 0x8f, 0x73, 0x66, 0xe6, 0xa9, 0x6e, + 0x2f, 0x79, 0x65, 0x5c, 0x2e, 0x88, 0x50, 0x18, 0x09, 0x6d, 0x04, 0x60, 0xdb, 0x04, 0xb9, + 0x23, 0x80, 0x20, 0x81, 0x2d, 0x61, 0x64, 0x81, 0x84, 0x27, 0xda, 0x0e, 0x58, 0xea, 0x62, + 0x12, 0xeb, 0x91, 0x09, 0x4c, 0x7c, 0x2a, 0xd1, 0x3b, 0x12, 0x4c, 0x96, 0x50, 0x97, 0xda, + 0x1c, 0x43, 0xe4, 0x0a, 0x22, 0x74, 0xf1, 0x87, 0x0f, 0xc6, 0x0f, 0x26, 0xca, 0xd9, 0x67, + 0xa8, 0xf1, 0x52, 0x58, 0xe5, 0x91, 0xe3, 0xa7, 0xf7, 0xdb, 0xd1, 0x7b, 0xa0, 0x43, 0x89, + 0xe4, 0x82, 0xbb, 0xc7, 0x9c, 0xbc, 0x73, 0xf2, 0xf3, 0x0e, 0x86, 0x1c, 0x92, 0x7b, 0xd2, + 0x4f, 0x6b, 0xc8, 0x25, 0xde, 0x62, 0x77, 0x8e, 0xc9, 0xb6, 0x12, 0x25, 0xd8, 0xef, 0x05, + 0x59, 0xab, 0x12, 0x2f, 0x20, 0x90, 0xde, 0x38, 0x93, 0x3c, 0xc0, 0xf2, 0x00, 0x7d, 0xce, + 0x12, 0xed, 0xae, 0xa6, 0x0f, 0x6b, 0xe5, 0x56, 0x0d, 0xe1, 0x6e, 0xc3, 0x36, 0xe7, 0x8e, + 0x69, 0x33, 0x55, 0x19, 0x1b, 0x02, 0xba, 0x06, 0x41, 0xdc, 0xe1, 0x73, 0x15, 0xad, 0x08, + 0xae, 0x6b, 0x03, 0xbd, 0x71, 0xef, 0xe5, 0xb5, 0xbd, 0x24, 0xc6, 0x92, 0xc5, 0x0d, 0x6c, + 0x16, 0x5d, 0x2c, 0x88, 0x07, 0xab, 0xee, 0xd6, 0x76, 0xf9, 0xde, 0x98, 0x6c, 0xd4, 0x57, + 0x90, 0xca, 0x19, 0x3c, 0xba, 0xb1, 0xf0, 0xcb, 0x07, 0xac, 0x42, 0xcb, 0xcc, 0x89, 0xcb, + 0x8a, 0x7b, 0x5b, 0x70, 0x9f, 0xa9, 0x4a, 0xa8, 0x51, 0x74, 0x97, 0x8c, 0x86, 0x8f, 0x34, + 0x9d, 0x10, 0xc5, 0xc6, 0x5d, 0xf3, 0x0c, 0xf5, 0x34, 0x3a, 0x5c, 0x0f, 0x13, 0xa8, 0xb3, + 0x6d, 0xab, 0x8f, 0x86, 0xad, 0x27, 0x2a, 0x64, 0x88, 0x80, 0x78, 0xb8, 0xc9, 0x96, 0xf5, + 0x06, 0xc2, 0xcb, 0xdb, 0x73, 0x05, 0x66, 0x64, 0xd1, 0xf5, 0xc9, 0xe2, 0x7a, 0xde, 0xd0, + 0x3d, 0x5f, 0x22, 0x38, 0x2c, 0x43, 0xde, 0x50, 0xdb, 0x28, 0xab, 0x28, 0xaf, 0x1b, 0x9e, + 0x00, 0x81, 0x3b, 0x8b, 0xbb, 0xbd, 0x61, 0x73, 0x76, 0x67, 0x89, 0x14, 0x38, 0x24, 0xaf, + 0x9d, 0x00, 0x33, 0x67, 0x22, 0x5c, 0x01, 0x8f, 0x62, 0x15, 0x58, 0x7b, 0x5c, 0xc7, 0x67, + 0x63, 0xbd, 0x24, 0xb1, 0xbe, 0x9d, 0x60, 0x26, 0xde, 0x65, 0xce, 0x93, 0x54, 0xe1, 0xbf, + 0xcd, 0x9d, 0x44, 0xce, 0x81, 0xb2, 0xec, 0xa4, 0x98, 0xf8, 0x16, 0x60, 0xe1, 0x7e, 0xa0, + 0x8c, 0x2d, 0x1d, 0xac, 0x1f, 0x85, 0x71, 0xe4, 0x26, 0xf1, 0x31, 0xde, 0xc2, 0x6c, 0xc3, + 0x90, 0x88, 0x4a, 0xce, 0xe6, 0x4d, 0xa0, 0x70, 0xef, 0xf9, 0xc3, 0x81, 0xa4, 0xe6, 0xda, + 0x1b, 0xd9, 0xad, 0xeb, 0x13, 0xb2, 0x0d, 0xe7, 0x7b, 0x8c, 0xa9, 0xb9, 0x84, 0x9a, 0x02, + 0x8c, 0x2c, 0x2f, 0x07, 0x9c, 0x74, 0xfc, 0xa6, 0x2c, 0x34, 0xbf, 0x66, 0x72, 0xfd, 0xd2, + 0x22, 0x67, 0x13, 0x80, 0x0e, 0x96, 0xb1, 0x0f, 0xef, 0x3e, 0x60, 0xde, 0x82, 0x63, 0xa2, + 0x61, 0x8b, 0xbc, 0x49, 0xf5, 0xe6, 0x41, 0x69, 0x7f, 0xb8, 0xba, 0x4f, 0xc4, 0xae, 0x2a, + 0xd8, 0xc7, 0x24, 0x1a, 0x91, 0xa0, 0x9f, 0x4d, 0xff, 0xe1, 0x98, 0x6d, 0xd0, 0x15, 0x90, + 0x62, 0x32, 0x16, 0xc7, 0x2d, 0x70, 0xee, 0x84, 0xe1, 0x31, 0x54, 0xdb, 0x0c, 0xf8, 0x34, + 0x2d, 0x6f, 0x36, 0xb0, 0x0b, 0xa1, 0xbf, 0x8f, 0x64, 0x08, 0x68, 0xd1, 0x4c, 0x69, 0xfb, + 0xc6, 0x76, 0x5d, 0x9f, 0xee, 0x53, 0xf1, 0xbf, 0x4f, 0xdb, 0xd7, 0x32, 0x40, 0xef, 0x4a, + 0x69, 0x69, 0xbb, 0x37, 0x91, 0xb2, 0x20, 0x6b, 0xad, 0xb2, 0xdc, 0xf9, 0x71, 0x73, 0xc9, + 0x9c, 0xab, 0x5a, 0x39, 0xbd, 0x3a, 0x4f, 0xfe, 0x49, 0x35, 0x5e, 0x29, 0x4b, 0x33, 0xcb, + 0x91, 0x53, 0xfe, 0x32, 0xdf, 0xd1, 0x96, 0x84, 0x2e, 0x37, 0x61, 0xf5, 0x1c, 0xdc, 0xe3, + 0xae, 0x0d, 0xf0, 0xce, 0x51, 0xb1, 0x4e, 0x5a, 0x6e, 0xed, 0xf3, 0xa9, 0xa5, 0x7c, 0x9c, + 0xec, 0xc0, 0xf1, 0x97, 0x30, 0xf6, 0xb8, 0x2c, 0x36, 0x2c, 0xc7, 0x9c, 0x00, 0x01, 0xe2, + 0x12, 0x2a, 0x1c, 0x8f, 0xc7, 0x81, 0xa0, 0x67, 0x0e, 0x09, 0x11, 0x0f, 0x2c, 0x64, 0x61, + 0x32, 0x86, 0xfa, 0xdf, 0x33, 0xd1, 0x6e, 0x64, 0xce, 0x19, 0x2c, 0x8d, 0xec, 0x9d, 0xe6, + 0x3e, 0x6b, 0xc7, 0x73, 0x4c, 0xc5, 0xb1, 0xd2, 0x45, 0x98, 0xb6, 0x16, 0xe8, 0x3e, 0xdf, + 0x9f, 0xb2, 0x28, 0xee, 0x72, 0x4b, 0xc0, 0xd0, 0xdc, 0x8a, 0x85, 0x8e, 0xfd, 0xc0, 0x1b, + 0xf8, 0x97, 0x8a, 0xe1, 0xa9, 0xb1, 0xcd, 0xc2, 0x3a, 0xc5, 0x4b, 0x4a, 0xf0, 0x1e, 0xa7, + 0x31, 0x2b, 0xfd, 0xf3, 0x31, 0x6b, 0x23, 0xae, 0xee, 0xc8, 0xf5, 0x1c, 0x8a, 0x12, 0xa8, + 0x9a, 0x84, 0x16, 0xac, 0x1b, 0x5f, 0x7b, 0xba, 0xfd, 0x83, 0xdd, 0xed, 0x33, 0x48, 0x5e, + 0x68, 0xf1, 0x50, 0xe3, 0x9a, 0x35, 0xe7, 0x0b, 0x6e, 0xa6, 0x51, 0x4f, 0xcf, 0xd1, 0x3c, + 0x5e, 0x10, 0xbe, 0x2d, 0xc5, 0x2a, 0x3c, 0x2e, 0x05, 0xf3, 0x7e, 0x32, 0x7f, 0x8b, 0x2e, + 0xea, 0x29, 0x07, 0xd6, 0x70, 0xb5, 0x92, 0xb3, 0x1a, 0x87, 0x7c, 0x3e, 0x8c, 0xc3, 0x26, + 0xe2, 0xbe, 0x8a, 0x64, 0xbd, 0x9a, 0x58, 0x02, 0xaa, 0xad, 0x49, 0xdf, 0x37, 0x16, 0xda, + 0xe0, 0x8c, 0xd1, 0x70, 0x4c, 0xa9, 0x50, 0xc6, 0x45, 0x70, 0x53, 0x32, 0x30, 0x28, 0x95, + 0xab, 0x06, 0x13, 0xe1, 0xd8, 0xd1, 0x4d, 0xb5, 0xd9, 0xe4, 0x62, 0x82, 0xa1, 0x05, 0x1f, + 0x07, 0xf3, 0x90, 0x2b, 0x69, 0x77, 0x61, 0x66, 0x82, 0x9e, 0xcc, 0x3c, 0x23, 0x81, 0x03, + 0x9c, 0x1d, 0x89, 0x2c, 0x66, 0x28, 0x98, 0xeb, 0x9d, 0xe0, 0x94, 0x32, 0xf2, 0xee, 0x14, + 0x5f, 0xf7, 0x70, 0x1a, 0xac, 0x2d, 0x4e, 0x76, 0xe2, 0x15, 0x91, 0x7d, 0xad, 0x18, 0xd9, + 0x1a, 0xb4, 0xab, 0xe0, 0x68, 0xe2, 0x04, 0x71, 0xe0, 0x71, 0xbc, 0xd1, 0x20, 0xd3, 0x6f, + 0x82, 0x4a, 0x77, 0xf0, 0xf6, 0x28, 0xcc, 0xdf, 0xdf, 0x28, 0xbf, 0xb7, 0x78, 0x9a, 0x74, + 0x5d, 0x6b, 0x30, 0xd8, 0xeb, 0xcb, 0x10, 0x31, 0xd5, 0x5c, 0x50, 0xb6, 0x51, 0xb2, 0xb2, + 0x38, 0x83, 0xbb, 0x37, 0xb8, 0xb7, 0x53, 0x82, 0x2d, 0xfa, 0x61, 0xef, 0x70, 0x3a, 0xba, + 0x2b, 0x7e, 0xb8, 0x4f, 0xd9, 0xaf, 0xf9, 0x65, 0xaf, 0x42, 0x25, 0xe1, 0x67, 0x73, 0xa7, + 0x9c, 0xdb, 0x85, 0xe2, 0x2b, 0x0d, 0xc4, 0xa3, 0xae, 0x7e, 0x3a, 0xd6, 0x2a, 0x57, 0x34, + 0x46, 0xee, 0xa7, 0x0d, 0x51, 0x23, 0x8e, 0x52, 0x9e, 0xd0, 0xeb, 0x1c, 0x0c, 0x71, 0xf8, + 0x0e, 0x0a, 0x62, 0xdd, 0x8f, 0x9a, 0x83, 0x0a, 0x05, 0xcd, 0x04, 0x94, 0x54, 0x8a, 0xad, + 0x15, 0x7a, 0x2a, 0x7f, 0xb2, 0xd6, 0x11, 0x08, 0x44, 0x31, 0xa1, 0xff, 0x97, 0x24, 0xd8, + 0x87, 0x99, 0x84, 0xa8, 0x81, 0x25, 0x9d, 0xd3, 0x35, 0x54, 0x52, 0xf0, 0x8e, 0xb4, 0xfa, + 0xf2, 0x90, 0x5f, 0x26, 0xc2, 0x2c, 0x00, 0xac, 0x57, 0xfd, 0xf6, 0xad, 0x41, 0x72, 0x07, + 0x03, 0x4a, 0x99, 0x14, 0x91, 0x6a, 0x16, 0x3b, 0x37, 0xde, 0x4c, 0x86, 0x15, 0x48, 0x13, + 0x44, 0x8e, 0x8a, 0x06, 0xfa, 0x64, 0xb7, 0xdd, 0x6b, 0x62, 0x16, 0x4f, 0x96, 0xd0, 0xf5, + 0x21, 0x4a, 0xb6, 0xc1, 0x35, 0xda, 0xc3, 0x63, 0x03, 0x4c, 0xcd, 0x4a, 0xba, 0x00, 0x0d, + 0x38, 0x8e, 0x6b, 0x25, 0x9e, 0x53, 0x1b, 0xf0, 0x0b, 0xe1, 0x87, 0x0e, 0xfe, 0x61, 0x57, + 0x60, 0x4c, 0xe0, 0xf9, 0x0b, 0x5a, 0x22, 0x6c, 0x07, 0xfb, 0x13, 0x4c, 0xb1, 0x7b, 0x17, + 0x2d, 0x27, 0xf4, 0x5d, 0x94, 0xa7, 0x30, 0x8c, 0xad, 0x63, 0xbf, 0x07, 0x0c, 0x7c, 0x37, + 0x85, 0xe4, 0x7b, 0xb1, 0xb9, 0x9b, 0x29, 0x52, 0x46, 0x07, 0x63, 0x42, 0x6e, 0xab, 0x8f, + 0x9a, 0x11, 0x44, 0x24, 0x13, 0x85, 0x29, 0xf6, 0x77, 0x3f, 0x4c, 0x42, 0x93, 0xc4, 0x7c, + 0x5b, 0x83, 0x11, 0xb8, 0xd0, 0x18, 0x2a, 0xd0, 0xd4, 0x9e, 0x82, 0x39, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x5f, 0xd2, 0x81, 0x52, 0x14, 0x44, 0x95, 0x7b, 0xab, 0x12, 0xf4, 0x71, 0x04, + 0xf5, 0xff, 0x29, 0x56, 0x20, 0xfd, 0x17, 0xdb, 0xdb, 0x79, 0x9f, 0x81, 0x3f, 0x97, 0x3e, + 0x1e, 0xae, 0xd4, 0x16, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xe0, 0x1c, + 0xcb, 0x83, 0x36, 0xbd, 0x91, 0x4d, 0x28, 0x40, 0x53, 0x64, 0x22, 0xf4, 0x7a, 0x49, 0x5f, + 0x99, 0xfb, 0x27, 0x5a, 0x94, 0x03, 0x6b, 0xdc, 0x26, 0x35, 0x71, 0x96, 0xda, 0x4b, 0xfc, + 0xbd, 0x8f, 0x1c, 0x05, 0x58, 0xe6, 0x69, 0x8c, 0x8f, 0x5d, 0xe4, 0xd9, 0x2c, 0x97, 0xba, + 0xf0, 0x6d, 0xe2, 0x43, 0x38, 0x3e, 0xe0, 0x08, 0x94, 0x4a, 0x81, 0xf7, 0x55, 0x06, 0x23, + 0x7a, 0xc1, 0xdc, 0x04, 0x9c, 0xb2, 0x2a, 0x12, 0xc1, 0x52, 0xb1, 0xee, 0xda, 0x26, 0x9b, + 0x47, 0x56, 0xe8, 0xef, 0x1f, 0x6e, 0x4f, 0xe5, 0x0f, 0x2b, 0xd6, 0x5f, 0xb0, 0x0a, 0xcf, + 0xb4, 0x60, 0xd1, 0x78, 0xfc, 0x36, 0x5b, 0x43, 0x71, 0x35, 0x58, 0x2d, 0x04, 0x5f, 0x54, + 0xb6, 0x23, 0xeb, 0x97, 0x8e, 0xfc, 0x37, 0x45, 0x2f, 0x11, 0x9b, 0x19, 0x89, 0x16, 0x9f, + 0xfc, 0xb8, 0x94, 0x80, 0x54, 0x97, 0x2a, 0x93, 0xa1, 0x41, 0x3b, 0x93, 0x64, 0xc3, 0xd8, + 0xc2, 0x70, 0x9c, 0x7f, 0xc7, 0x1c, 0x4b, 0xb4, 0x3c, 0xf6, 0x78, 0xb2, 0x95, 0x72, 0x71, + 0x03, 0xd0, 0xc5, 0x73, 0xee, 0xd1, 0x1b, 0x4d, 0x13, 0x85, 0x73, 0xd9, 0x06, 0x8a, 0x7b, + 0xcf, 0xf1, 0x34, 0xff, 0x25, 0xc0, 0xba, 0x6a, 0xe6, 0x5f, 0x7f, 0x0e, 0xae, 0x31, 0xf1, + 0x29, 0xd2, 0x38, 0xe4, 0xe8, 0x55, 0xb6, 0xd4, 0x60, 0x33, 0x61, 0x3f, 0x4b, 0xff, 0x84, + 0x5a, 0xeb, 0x90, 0x36, 0xb4, 0x40, 0xb8, 0xd8, 0x21, 0xc3, 0xc0, 0x15, 0x27, 0xb7, 0x97, + 0xfb, 0x51, 0x77, 0xb1, 0x38, 0x56, 0xb0, 0xb0, 0xa4, 0x17, 0xbc, 0x8b, 0x1e, 0xa6, 0xb0, + 0x76, 0xf4, 0xba, 0xd2, 0x9d, 0x57, 0x46, 0xf7, 0x6a, 0xa6, 0x4e, 0x8d, 0xa2, 0x2b, 0x33, + 0xdb, 0x49, 0xbc, 0x6b, 0xe2, 0x93, 0x8b, 0x56, 0x86, 0x44, 0x02, 0xc6, 0x9c, 0x96, 0x84, + 0x9d, 0x0b, 0x5c, 0xaa, 0x8a, 0xe0, 0x41, 0x1a, 0x17, 0x24, 0xcd, 0xfb, 0x42, 0xcb, 0x7d, + 0x86, 0xcb, 0x30, 0xa8, 0xbb, 0xa1, 0x15, 0x75, 0xdc, 0x72, 0xbf, 0x9a, 0xa6, 0xc2, 0x96, + 0xdc, 0x71, 0x04, 0x20, 0xc9, 0xaa, 0x6d, 0x86, 0x4d, 0xe9, 0x81, 0xfd, 0x73, 0x5f, 0x00, + 0xef, 0xbc, 0x39, 0x20, 0x87, 0xd9, 0x27, 0xa4, 0xfe, 0x65, 0xbb, 0xc0, 0xb6, 0xfc, 0x89, + 0xfa, 0xcf, 0xcc, 0x3e, 0xaf, 0xb5, 0xd6, 0xe0, 0x0e, 0xd6, 0xd5, 0x67, 0xa6, 0xdb, 0xaf, + 0xf9, 0x5b, 0x57, 0xe8, 0x58, 0xfb, 0x43, 0x03, 0xa0, 0xd1, 0x08, 0x08, 0x06, 0x38, 0xa1, + 0xac, 0x7c, 0xc6, 0xce, 0x0a, 0x86, 0xa1, 0x6b, 0x8f, 0xc3, 0xd1, 0x61, 0x78, 0xe3, 0xdc, + 0x94, 0x66, 0x75, 0xaf, 0x10, 0xd1, 0xf9, 0x64, 0xd1, 0xf3, 0x91, 0xa8, 0x67, 0x3b, 0x72, + 0x77, 0xbf, 0xd0, 0xea, 0xbe, 0x35, 0xdb, 0x6f, 0xb9, 0x8a, 0x46, 0x5e, 0xd6, 0x4f, 0xf1, + 0xe3, 0x11, 0xae, 0xbe, 0x7c, 0x4b, 0xc6, 0xc6, 0x2d, 0x74, 0x43, 0x04, 0x45, 0x4e, 0x70, + 0x16, 0x99, 0xb7, 0x1c, 0xeb, 0x69, 0xfe, 0xfa, 0x80, 0x77, 0x0f, 0xf2, 0x51, 0x91, 0xd4, + 0xfd, 0x2c, 0x23, 0xbc, 0x9b, 0x87, 0x90, 0x83, 0x3d, 0xf0, 0x8d, 0x38, 0x3d, 0xf7, 0x24, + 0x82, 0x36, 0xee, 0x9d, 0x49, 0x2f, 0xf1, 0x8d, 0x90, 0x1a, 0x7d, 0xc2, 0x30, 0x03, 0x92, + 0x31, 0xd1, 0xcc, 0x77, 0x42, 0xde, 0xff, 0x6a, 0x35, 0x96, 0x40, 0xb6, 0xef, 0xf5, 0x88, + 0xd2, 0xa3, 0x13, 0x7c, 0xcb, 0x04, 0xc0, 0xcf, 0xf6, 0x8c, 0xfd, 0x05, 0x39, 0x4f, 0xbb, + 0xfd, 0x4d, 0xd0, 0x9e, 0x29, 0x0f, 0x38, 0x42, 0xaf, 0x42, 0xeb, 0x17, 0x0f, 0xc4, 0x03, + 0x65, 0x91, 0x80, 0xd3, 0x81, 0x12, 0xdd, 0x0e, 0x5b, 0x62, 0x47, 0xc5, 0x6e, 0xc5, 0xcc, + 0xf3, 0xac, 0x83, 0x98, 0xbb, 0x13, 0x62, 0x47, 0xde, 0x11, 0x03, 0x7a, 0x94, 0x00, 0x58, + 0x97, 0x39, 0x98, 0x05, 0x53, 0x37, 0x48, 0xe9, 0xa7, 0x17, 0x23, 0xa6, 0xc7, 0xd7, 0x91, + 0xbe, 0x74, 0x41, 0x34, 0xd4, 0x68, 0x35, 0xbb, 0x38, 0x18, 0xda, 0x35, 0x39, 0x15, 0xed, + 0xfd, 0x05, 0xe5, 0x38, 0xcb, 0xe1, 0xa3, 0x0d, 0x64, 0xa0, 0x79, 0xf5, 0x05, 0x6a, 0x9b, + 0x5f, 0xed, 0x8b, 0xbe, 0xae, 0x99, 0xbe, 0xa0, 0xb3, 0xe0, 0xb5, 0x4c, 0x50, 0xf8, 0xa0, + 0xfd, 0xc4, 0x2d, 0xb5, 0xec, 0xcf, 0x41, 0xf5, 0x7e, 0x2f, 0xac, 0x38, 0xc0, 0x31, 0x0f, + 0x07, 0xb8, 0xd6, 0xd5, 0x25, 0x5d, 0x72, 0x3e, 0x9f, 0xf1, 0x77, 0x68, 0x47, 0x79, 0x5d, + 0x13, 0x72, 0x24, 0xca, 0x29, 0x54, 0xe1, 0x25, 0x54, 0x79, 0x63, 0x67, 0x89, 0x67, 0xda, + 0x6b, 0x44, 0x21, 0x6b, 0x9c, 0x53, 0xd6, 0xc9, 0xb3, 0x3b, 0xac, 0xd9, 0x13, 0x20, 0x3e, + 0x08, 0xf3, 0x55, 0x1a, 0x33, 0x4d, 0xd4, 0xd7, 0x78, 0x04, 0x87, 0xd6, 0x8b, 0xed, 0x96, + 0x31, 0xeb, 0xd4, 0x6a, 0x4b, 0xcd, 0xd0, 0x8e, 0x4b, 0x13, 0xe7, 0xaa, 0x51, 0xa2, 0x79, + 0xc4, 0x5c, 0xf3, 0x1f, 0xb0, 0x0a, 0x68, 0xba, 0x38, 0x9b, 0xde, 0x4e, 0x03, 0x3a, 0xe6, + 0xb4, 0x35, 0x94, 0x28, 0xf5, 0x00, 0x62, 0xc6, 0x9f, 0xe2, 0x30, 0x42, 0xc8, 0x24, 0xb5, + 0x71, 0x28, 0x06, 0xcf, 0x8e, 0xbd, 0x11, 0x0a, 0x79, 0x2d, 0x39, 0x9f, 0x50, 0xd6, 0x65, + 0x7b, 0x71, 0x44, 0x01, 0x47, 0x5c, 0x86, 0x8f, 0x1c, 0xc0, 0x00, 0xa2, 0x6f, 0xcb, 0x23, + 0x24, 0x38, 0x60, 0x94, 0x04, 0x49, 0xe0, 0x8c, 0x79, 0x83, 0x49, 0x7a, 0xc8, 0x8f, 0xf4, + 0x31, 0x24, 0x2a, 0xbd, 0x6d, 0x0a, 0x2e, 0x48, 0x9f, 0x2f, 0x47, 0xc0, 0x46, 0xbf, 0xf3, + 0x2e, 0xf2, 0x97, 0x74, 0xa3, 0xfe, 0x93, 0xfd, 0x71, 0x0b, 0x6d, 0x45, 0xda, 0x4f, 0xe9, + 0x78, 0x5d, 0x07, 0xbd, 0x47, 0xcd, 0x9b, 0xef, 0x10, 0x50, 0xa1, 0x25, 0xb3, 0xb4, 0x51, + 0x8a, 0x44, 0xcf, 0x3b, 0xaf, 0x05, 0x0e, 0xce, 0xf2, 0x6b, 0x2f, 0x80, 0xd3, 0xf2, 0x8c, + 0x64, 0x8e, 0x8e, 0x44, 0x69, 0x5e, 0x2e, 0x60, 0x5f, 0xdc, 0xad, 0x80, 0x2d, 0x02, 0x16, + 0xaf, 0xb9, 0x32, 0x75, 0x4e, 0x09, 0x2a, 0x3d, 0x2c, 0x45, 0x0a, 0xa4, 0x2c, 0x50, 0x11, + 0x15, 0x92, 0x06, 0x18, 0x00, 0x04, 0xbe, 0x19, 0x59, 0x8e, 0xd9, 0xfd, 0xaa, 0x0f, 0x27, + 0xbf, 0x77, 0x54, 0x2f, 0x97, 0x09, 0x27, 0x06, 0x15, 0xff, 0x58, 0x27, 0x64, 0x6e, 0x11, + 0x53, 0x32, 0x85, 0xe4, 0x66, 0xb8, 0xcf, 0x1a, 0xf3, 0x67, 0x4b, 0x2f, 0x4a, 0xc7, 0x4d, + 0x77, 0x74, 0x5e, 0xe5, 0xf8, 0x14, 0x3c, 0x86, 0x06, 0xc4, 0x0a, 0xf1, 0x5c, 0x61, 0x2a, + 0x5d, 0x2e, 0x65, 0xb4, 0xea, 0xfb, 0xda, 0xfe, 0x0a, 0x68, 0xe5, 0x7e, 0xb6, 0xe0, 0xc8, + 0x5f, 0x8b, 0xb7, 0x03, 0xa9, 0xa8, 0xab, 0x1b, 0x75, 0x15, 0xef, 0x67, 0xa9, 0x24, 0x47, + 0x9a, 0x03, 0xd7, 0xe7, 0x10, 0xf6, 0x7b, 0x34, 0x21, 0x59, 0xc3, 0x40, 0xe8, 0x8d, 0xf2, + 0x9d, 0x30, 0xd7, 0xc0, 0xed, 0xb5, 0x72, 0x00, 0x2d, 0xa0, 0x39, 0xa0, 0x7b, 0xf9, 0xaf, + 0x81, 0x93, 0x55, 0x60, 0x2c, 0x01, 0x97, 0x20, 0xe1, 0x78, 0x73, 0xc0, 0xf7, 0x3a, 0x35, + 0x9e, 0xd9, 0xfd, 0x11, 0x36, 0xd5, 0x47, 0x8a, 0x26, 0x05, 0xde, 0x99, 0x54, 0x82, 0x06, + 0x0c, 0x9c, 0x83, 0xf4, 0xbd, 0xd4, 0xd0, 0x00, 0x28, 0x0f, 0xe9, 0x6e, 0x40, 0xe2, 0xc9, + 0x68, 0x91, 0x8e, 0xa5, 0x3a, 0xb2, 0x15, 0x9b, 0x94, 0xac, 0xa6, 0x23, 0x84, 0x3d, 0xd9, + 0x92, 0x3f, 0xe6, 0xb6, 0x09, 0xad, 0x50, 0x1f, 0xe6, 0xd0, 0x02, 0xbb, 0x36, 0x77, 0x5f, + 0x27, 0x4e, 0xee, 0xbe, 0x44, 0x9b, 0x8c, 0xea, 0x00, 0xce, 0x80, 0xb9, 0xe8, 0x2c, 0x97, + 0xd5, 0x98, 0x08, 0xfd, 0x2e, 0xbc, 0x8d, 0x3e, 0x5d, 0x02, 0x45, 0xf0, 0xc4, 0xd5, 0xb7, + 0xae, 0x85, 0xaf, 0x3b, 0x3a, 0x36, 0xf9, 0xf4, 0x0d, 0xda, 0x9b, 0xd2, 0x82, 0xe3, 0x5f, + 0x2b, 0xd2, 0x60, 0x8d, 0x11, 0x37, 0xa9, 0x92, 0xbe, 0x3e, 0xd2, 0x00, 0xe3, 0x6e, 0xa8, + 0x2a, 0x93, 0xc5, 0x9f, 0x37, 0xa1, 0xd6, 0x57, 0xe1, 0xe1, 0x3b, 0x76, 0x49, 0x64, 0x08, + 0xfb, 0xfe, 0xcd, 0x9d, 0xaf, 0xa4, 0xa8, 0xfe, 0xc7, 0x2c, 0xd9, 0xcc, 0xc0, 0x36, 0xcf, + 0x48, 0xcc, 0xc8, 0x1b, 0x8a, 0x0e, 0x79, 0x2f, 0x3d, 0x97, 0x68, 0x92, 0x59, 0xbd, 0x9c, + 0x84, 0x6b, 0xbd, 0xf2, 0xe5, 0x1c, 0xd2, 0x35, 0x6f, 0x2c, 0x5e, 0x17, 0xee, 0xf3, 0xd0, + 0xd4, 0xa3, 0x3b, 0x44, 0x70, 0x1b, 0x18, 0xe3, 0x47, 0x5e, 0xa4, 0x2d, 0x37, 0x63, 0x9f, + 0xed, 0x6a, 0xbf, 0xba, 0x19, 0x49, 0x84, 0x83, 0xde, 0x9c, 0x26, 0xe2, 0x97, 0x26, 0x5b, + 0x72, 0x1d, 0xda, 0xf3, 0xc6, 0xeb, 0xee, 0x87, 0x6a, 0x9b, 0x4a, 0x31, 0x0a, 0xd1, 0xdf, + 0x24, 0xf6, 0xdb, 0x2b, 0x66, 0x14, 0xd8, 0x8b, 0x41, 0x4c, 0xc5, 0xdf, 0x77, 0x8d, 0x69, + 0x0f, 0x75, 0x00, 0x83, 0xec, 0xce, 0x0a, 0x77, 0x9d, 0x71, 0x3b, 0x08, 0x8c, 0x01, 0xb1, + 0xf0, 0x01, 0x01, 0x06, 0xf9, 0x29, 0x0a, 0xfb, 0xf9, 0x2c, 0x85, 0xcc, 0x9d, 0x0a, 0xa9, + 0xd8, 0x73, 0x05, 0x39, 0xfa, 0x2a, 0x43, 0xf8, 0xaa, 0xe9, 0xd1, 0x91, 0x94, 0xed, 0xea, + 0xc1, 0xa8, 0x57, 0x10, 0x44, 0x06, 0x1f, 0x0c, 0x92, 0x24, 0x92, 0xf1, 0x79, 0xc5, 0xcd, + 0x54, 0x47, 0x0f, 0x90, 0xab, 0x5c, 0x07, 0x4e, 0x83, 0x57, 0x56, 0x45, 0xc0, 0x34, 0x5c, + 0x54, 0x0e, 0xf0, 0x9e, 0x3f, 0x93, 0x4f, 0xa6, 0xd0, 0x92, 0x10, 0xc1, 0x01, 0xac, 0x83, + 0x15, 0x2e, 0xd5, 0x48, 0x0a, 0xcf, 0xb6, 0x4c, 0xc5, 0xcd, 0xc5, 0x94, 0x08, 0xe1, 0x89, + 0x9c, 0x03, 0x8e, 0xb0, 0xb0, 0x25, 0x4a, 0x13, 0x09, 0x20, 0x22, 0x2a, 0x54, 0x9c, 0x17, + 0x99, 0x2c, 0x44, 0x5e, 0x46, 0x52, 0x29, 0x28, 0xa6, 0x03, 0x3b, 0x89, 0xfd, 0x07, 0x12, + 0x20, 0x63, 0xab, 0x40, 0xff, 0xa3, 0xcd, 0x97, 0x24, 0xcf, 0x2c, 0x5f, 0x1b, 0x17, 0x05, + 0x77, 0xad, 0x94, 0x18, 0x66, 0x6a, 0xa4, 0x3f, 0x53, 0x7d, 0x3f, 0x35, 0xbc, 0xc4, 0x75, + 0xf8, 0x99, 0x30, 0xdc, 0x9f, 0x5a, 0x9c, 0x2b, 0x3f, 0x88, 0xae, 0xef, 0xcd, 0x66, 0x89, + 0xa1, 0x4e, 0xe5, 0x9b, 0x63, 0x2a, 0xda, 0xd7, 0xcf, 0x08, 0xdb, 0x88, 0x32, 0x53, 0x32, + 0x81, 0xdc, 0x4f, 0x5f, 0xde, 0xfb, 0xcb, 0xc0, 0x6f, 0x8c, 0x92, 0x3e, 0xd2, 0x59, 0x14, + 0x58, 0x92, 0x5c, 0xb4, 0x29, 0x71, 0xf7, 0xd1, 0xb4, 0x69, 0x08, 0x6d, 0xa7, 0x57, 0x82, + 0x70, 0x44, 0x30, 0x0a, 0x8e, 0xd8, 0x2c, 0xd3, 0x62, 0xdd, 0x8f, 0x73, 0xce, 0x39, 0xcd, + 0x2f, 0x7d, 0x51, 0x1d, 0xfc, 0xde, 0x84, 0xf7, 0xfb, 0x23, 0x0c, 0x2f, 0x03, 0xdc, 0x1f, + 0xbc, 0x16, 0x3c, 0x65, 0x0d, 0x7a, 0x6b, 0x63, 0x16, 0x19, 0x6b, 0x55, 0x71, 0xc0, 0x7c, + 0xf4, 0xbf, 0x00, 0xc1, 0x42, 0xa3, 0x07, 0xd5, 0x5b, 0x57, 0xbc, 0x8c, 0xf5, 0xf9, 0x1d, + 0x67, 0xa7, 0x01, 0x9b, 0xf3, 0xa4, 0x2b, 0xc4, 0x08, 0x3f, 0x45, 0x55, 0x94, 0xf5, 0xcd, + 0xae, 0xe0, 0xab, 0x2e, 0x4f, 0x49, 0x60, 0x8a, 0xc5, 0x3d, 0x9a, 0x9d, 0xbf, 0x7e, 0x2d, + 0x9b, 0x6e, 0x97, 0xf6, 0x66, 0x8d, 0x8e, 0xed, 0xf2, 0x34, 0xfb, 0xc0, 0x5e, 0x5d, 0x15, + 0xe4, 0x2d, 0x45, 0xa6, 0x8c, 0x4f, 0xde, 0xbf, 0x20, 0x17, 0x3c, 0x2a, 0x71, 0x3e, 0xec, + 0xc3, 0x79, 0x7a, 0xa3, 0x48, 0x22, 0xf5, 0x80, 0x66, 0x8d, 0xa9, 0xda, 0xa7, 0x18, 0x75, + 0x18, 0x9a, 0x0b, 0xe0, 0x0a, 0xd2, 0x88, 0x2e, 0x14, 0xa4, 0x05, 0x22, 0x91, 0x94, 0x3d, + 0x41, 0x61, 0x57, 0xe0, 0x8e, 0x80, 0x0b, 0x47, 0x99, 0x27, 0xe8, 0x76, 0x03, 0x50, 0x25, + 0x53, 0xa5, 0x12, 0x10, 0xa1, 0x97, 0x16, 0xbe, 0xb9, 0x8a, 0x1a, 0xc0, 0x09, 0x06, 0x6d, + 0x7a, 0x81, 0x12, 0x28, 0xaa, 0x33, 0x61, 0xb1, 0x51, 0xe2, 0x50, 0x31, 0x49, 0x0c, 0x3b, + 0x3e, 0x2b, 0x73, 0x33, 0xeb, 0x20, 0xcc, 0x1f, 0xd3, 0x0d, 0xdd, 0x02, 0xd5, 0x7f, 0x53, + 0x1d, 0x0b, 0xcb, 0x8e, 0xd6, 0x7b, 0x85, 0x1c, 0x14, 0x36, 0x6e, 0x41, 0xcc, 0x9d, 0xff, + 0x35, 0x0b, 0xcb, 0x0d, 0xfb, 0x6a, 0x09, 0xb8, 0xb2, 0xa5, 0x26, 0x12, 0x91, 0xf8, 0x50, + 0xf8, 0x6e, 0xfd, 0x21, 0xf5, 0x3b, 0xd8, 0xa1, 0xdb, 0xcc, 0xa9, 0xc9, 0x84, 0x53, 0xda, + 0xb7, 0xa0, 0x8e, 0xe7, 0xb0, 0x69, 0x8b, 0x3b, 0x63, 0xd6, 0x59, 0x64, 0xcf, 0x87, 0x64, + 0xc9, 0x61, 0xc3, 0xf4, 0x10, 0x0b, 0x02, 0xa7, 0x1d, 0xda, 0xaf, 0x1c, 0xc0, 0x6d, 0x21, + 0x0c, 0xf8, 0x35, 0x98, 0x84, 0x6b, 0xd9, 0x5e, 0x74, 0x79, 0x5b, 0x5a, 0x37, 0x4d, 0xb1, + 0xcb, 0x0e, 0x36, 0x42, 0x70, 0x65, 0x83, 0xf9, 0xe5, 0x3c, 0xf3, 0x7c, 0x76, 0x0b, 0x07, + 0x10, 0xd2, 0xd8, 0x03, 0x0b, 0xf2, 0x11, 0x31, 0x66, 0x45, 0x0b, 0x46, 0xe8, 0x21, 0x69, + 0x46, 0x7a, 0xa0, 0xe5, 0xde, 0x3a, 0xfa, 0xd7, 0x85, 0xdd, 0x75, 0x93, 0xca, 0x67, 0xc5, + 0x33, 0x1d, 0x5d, 0x2b, 0x5f, 0xf3, 0x1e, 0xf2, 0x2c, 0xd6, 0x21, 0x2a, 0xd0, 0x48, 0x72, + 0xbf, 0xd5, 0xd0, 0x49, 0xed, 0x92, 0xfc, 0x9d, 0x58, 0x75, 0x9c, 0xc0, 0x9c, 0x52, 0x92, + 0x59, 0xbb, 0xdb, 0x78, 0x9f, 0x7e, 0x2b, 0x3a, 0x0a, 0xf5, 0x40, 0xc8, 0xdc, 0xb2, 0x24, + 0xab, 0xdb, 0xee, 0xf9, 0xda, 0xa3, 0xdb, 0x99, 0xd7, 0x89, 0xc5, 0x7d, 0x01, 0xf7, 0x58, + 0x67, 0xa8, 0xf8, 0xdd, 0x4d, 0xb4, 0x7d, 0x67, 0xf4, 0x9c, 0x1c, 0xc0, 0x4e, 0xf8, 0xdb, + 0xce, 0xad, 0x39, 0x31, 0x91, 0x9f, 0x43, 0x48, 0x46, 0xf4, 0x3f, 0xfa, 0x09, 0x6e, 0xe0, + 0xee, 0x4e, 0xcf, 0xc2, 0xed, 0x9e, 0x7a, 0x48, 0x58, 0x57, 0x69, 0xea, 0x02, 0x9a, 0x51, + 0x37, 0xa0, 0x0a, 0x34, 0xc9, 0x74, 0x29, 0x69, 0x4c, 0x75, 0x7b, 0x6d, 0x2e, 0x37, 0xed, + 0x4e, 0xbe, 0x37, 0x13, 0xe9, 0x51, 0xf0, 0x26, 0xc3, 0x5a, 0xf6, 0x9d, 0xf0, 0xbc, 0x0d, + 0x6f, 0xc9, 0xd0, 0x64, 0x95, 0x3c, 0x8f, 0x31, 0x0b, 0x08, 0x5b, 0x2f, 0x7c, 0x0f, 0x3d, + 0xc7, 0x71, 0x3d, 0xbc, 0xd5, 0x38, 0x1e, 0xf1, 0xb1, 0xa6, 0xfb, 0xfb, 0x0a, 0x59, 0x4e, + 0x11, 0x02, 0xc0, 0xe1, 0xcc, 0x95, 0x23, 0x2c, 0x3f, 0x38, 0xe5, 0x14, 0x6a, 0x99, 0x97, + 0x64, 0x48, 0x3c, 0xcb, 0xe9, 0x33, 0x6b, 0x24, 0x99, 0x8b, 0xb3, 0x5c, 0x12, 0x86, 0x1c, + 0x0a, 0x8c, 0xf9, 0x30, 0xf0, 0x4f, 0x13, 0x7b, 0x85, 0x31, 0x5a, 0x84, 0xca, 0xef, 0x02, + 0xcb, 0x66, 0x9a, 0xd4, 0xf3, 0x63, 0x89, 0x6f, 0x98, 0xec, 0x3a, 0xb4, 0xe5, 0xd7, 0xf8, + 0x13, 0x29, 0x74, 0x8d, 0xfa, 0x26, 0x1a, 0xdd, 0x21, 0xa2, 0x16, 0x83, 0xea, 0x70, 0xf1, + 0x37, 0x64, 0xcd, 0x14, 0xdc, 0x50, 0x37, 0xb6, 0x21, 0x67, 0x77, 0xb1, 0x45, 0xf0, 0x1b, + 0x8e, 0x76, 0x17, 0x7a, 0xd7, 0x6a, 0x31, 0x20, 0xf4, 0xd8, 0xac, 0x9e, 0x19, 0xd4, 0xfc, + 0x0a, 0x38, 0x9e, 0xde, 0x0d, 0xc9, 0xa0, 0x48, 0x5f, 0xb8, 0x32, 0x1e, 0x82, 0x80, 0x2e, + 0x5c, 0xa7, 0xec, 0x5d, 0xcc, 0x46, 0x26, 0x04, 0x43, 0x0c, 0xe1, 0xa6, 0xe8, 0x57, 0xf2, + 0x74, 0xc1, 0xc5, 0x6d, 0x2c, 0xbe, 0x9d, 0xea, 0xb8, 0x52, 0x55, 0x9e, 0x65, 0x88, 0x7d, + 0xd2, 0xec, 0xd9, 0x51, 0x32, 0x7e, 0xab, 0xd5, 0xf6, 0xa9, 0xcc, 0x1e, 0xce, 0x73, 0x21, + 0x8f, 0x9c, 0x4c, 0xd2, 0x31, 0x48, 0x25, 0x8f, 0x88, 0x00, 0xdd, 0xdc, 0xe5, 0x51, 0x81, + 0x0c, 0xd8, 0x93, 0x5f, 0x8d, 0x2d, 0xf2, 0xe4, 0x83, 0xa2, 0xb8, 0x65, 0x7d, 0x27, 0x64, + 0x6a, 0xa3, 0x78, 0xb8, 0xe1, 0x4d, 0x69, 0xdb, 0x37, 0x58, 0x39, 0xc9, 0x45, 0x99, 0xc2, + 0x98, 0xc4, 0xa7, 0x84, 0xe4, 0x71, 0xce, 0x18, 0x84, 0x83, 0x53, 0x4d, 0x1a, 0xa9, 0xf1, + 0x05, 0x7e, 0x87, 0xa8, 0xb8, 0xf3, 0x4b, 0xe2, 0xc4, 0x77, 0x23, 0xb7, 0xbd, 0x42, 0x4f, + 0x16, 0x8a, 0x25, 0x18, 0xe1, 0xf3, 0x9d, 0x0c, 0x24, 0x69, 0x20, 0x51, 0x7e, 0x8a, 0xd2, + 0x8e, 0xf5, 0x38, 0x62, 0x85, 0x54, 0x49, 0x4f, 0x11, 0xb2, 0x39, 0x59, 0xdd, 0xac, 0x9e, + 0xf3, 0x9a, 0xe2, 0x29, 0x8f, 0xb6, 0xe9, 0xa9, 0xad, 0x1e, 0x47, 0x6a, 0xca, 0x95, 0x7d, + 0xcb, 0xab, 0x5c, 0x88, 0x2d, 0x82, 0xaf, 0x52, 0x68, 0xbd, 0xff, 0x02, 0xa5, 0x0d, 0x91, + 0xf4, 0xbd, 0x65, 0xe7, 0xfc, 0x60, 0xce, 0xd2, 0xc2, 0x56, 0x10, 0x0a, 0xd4, 0xfe, 0x8f, + 0x2e, 0x78, 0x20, 0x1a, 0x70, 0x7e, 0x14, 0xe5, 0x39, 0x01, 0x2f, 0x53, 0x56, 0x77, 0xee, + 0x21, 0x01, 0x41, 0x19, 0x05, 0xa7, 0x23, 0xc3, 0x41, 0x41, 0xfc, 0xc3, 0x6a, 0x7a, 0xde, + 0x3e, 0x26, 0x17, 0xe2, 0xe3, 0xb3, 0x95, 0xf2, 0x34, 0xeb, 0x2b, 0xf6, 0x9f, 0xfb, 0xda, + 0x48, 0x2e, 0xce, 0xe2, 0x15, 0xa0, 0x75, 0x58, 0xa7, 0x33, 0x11, 0xc1, 0xbc, 0xae, 0xd7, + 0x64, 0xf2, 0x23, 0x0c, 0x28, 0x6c, 0x1b, 0x99, 0x74, 0x53, 0x03, 0xdf, 0xf2, 0x4d, 0x5c, + 0x6f, 0xca, 0x5e, 0x11, 0x51, 0xd4, 0x57, 0xa6, 0x0f, 0xb8, 0x4d, 0x7c, 0x6d, 0x68, 0x84, + 0xf4, 0x05, 0x00, 0x8b, 0xab, 0x90, 0xec, 0xaf, 0x8b, 0xb3, 0x6a, 0x0d, 0x2c, 0x85, 0x05, + 0xee, 0xc1, 0xf8, 0xdd, 0xdc, 0xd5, 0xe6, 0x69, 0x15, 0xe1, 0x29, 0x29, 0x8b, 0xd1, 0xb2, + 0x60, 0xfd, 0x8f, 0x4a, 0x38, 0x10, 0x57, 0xad, 0xfe, 0x6f, 0x41, 0x24, 0xe5, 0x72, 0x32, + 0x26, 0xd7, 0xf8, 0xa4, 0x85, 0x60, 0x35, 0x0c, 0x62, 0x6c, 0xa6, 0x45, 0x2d, 0x59, 0x7a, + 0x45, 0x02, 0x91, 0x1e, 0x9f, 0xd2, 0x9a, 0x69, 0x00, 0xd3, 0xd3, 0x43, 0x58, 0x67, 0x58, + 0x84, 0x2f, 0x4c, 0xae, 0x3f, 0x41, 0xd6, 0xd5, 0xd8, 0xb4, 0xf1, 0x66, 0x47, 0x88, 0xc4, + 0xb2, 0x18, 0x1d, 0x1d, 0x8e, 0xaa, 0x17, 0x9f, 0xe0, 0xb9, 0xa8, 0x09, 0x82, 0xd6, 0xa5, + 0x93, 0x0e, 0xe4, 0x0e, 0x50, 0x6f, 0xc3, 0x8d, 0xa4, 0xec, 0x19, 0xf9, 0x21, 0xf5, 0x17, + 0x3b, 0x74, 0x96, 0x5a, 0x01, 0x39, 0xaf, 0x6d, 0x9e, 0x97, 0x1c, 0x3e, 0x5b, 0x38, 0xd5, + 0x08, 0x86, 0x20, 0xb2, 0xbc, 0x19, 0xd3, 0x36, 0xe0, 0xa0, 0x97, 0x58, 0x64, 0x71, 0x24, + 0x93, 0x5f, 0x1c, 0x0b, 0x01, 0x02, 0xe0, 0x64, 0x35, 0xa8, 0x09, 0x6f, 0x15, 0xc8, 0x66, + 0x5d, 0x73, 0x17, 0xf9, 0x8b, 0x69, 0xac, 0x2a, 0x66, 0x22, 0xcd, 0xbd, 0xb7, 0x80, 0xf6, + 0x84, 0xe8, 0x01, 0xf5, 0xe4, 0xf1, 0x81, 0xee, 0x4a, 0xdf, 0xd0, 0xcc, 0x9a, 0x79, 0x97, + 0x16, 0xbb, 0xc8, 0x4d, 0x30, 0x0f, 0x49, 0xc2, 0xaf, 0x06, 0xfd, 0xf1, 0x73, 0xe4, 0x5a, + 0xc5, 0xd8, 0xc3, 0xff, 0x4d, 0xe4, 0x64, 0x00, 0x4d, 0xd1, 0x05, 0x8d, 0xa5, 0xbd, 0xf8, + 0xdf, 0x21, 0x97, 0xd5, 0x51, 0xdf, 0x55, 0x75, 0xee, 0xba, 0x48, 0x06, 0xc3, 0x82, 0x1c, + 0xae, 0x37, 0xfb, 0xf4, 0x83, 0xe3, 0xbb, 0x65, 0xcf, 0x5f, 0x9b, 0x62, 0xac, 0x0d, 0x61, + 0xd9, 0xd9, 0x7d, 0x8e, 0xbf, 0xdb, 0xc7, 0x4f, 0xbf, 0xb5, 0x9a, 0x22, 0xa4, 0x07, 0xe5, + 0xdf, 0xdd, 0xd9, 0x31, 0xb1, 0x86, 0xa0, 0xdf, 0x52, 0xc2, 0xae, 0x60, 0xff, 0x5d, 0x96, + 0x39, 0x13, 0xf2, 0x82, 0xbb, 0xed, 0xad, 0x96, 0x74, 0xfb, 0x6a, 0x0f, 0xbf, 0x32, 0x46, + 0x0e, 0x17, 0x46, 0xef, 0x08, 0xc3, 0xad, 0x2b, 0x01, 0x57, 0xdb, 0x38, 0x6a, 0x98, 0x24, + 0x85, 0xea, 0xd2, 0xad, 0x1b, 0x97, 0x7b, 0x92, 0xd0, 0x66, 0x72, 0x5e, 0x4a, 0x76, 0xdf, + 0x59, 0xa1, 0x0a, 0x50, 0x8e, 0x9c, 0x00, 0xd8, 0x83, 0x2e, 0xaf, 0x72, 0xb8, 0x4c, 0x7f, + 0x27, 0x6e, 0x15, 0x04, 0xad, 0x16, 0x35, 0x7d, 0xb8, 0x37, 0x8a, 0x71, 0xa6, 0x00, 0x23, + 0xc9, 0x00, 0x79, 0x62, 0x26, 0x60, 0x2e, 0xe9, 0x72, 0x77, 0xb8, 0x99, 0x91, 0x7d, 0x71, + 0xfc, 0xf1, 0x1b, 0x4f, 0x41, 0x25, 0xc5, 0xb4, 0x54, 0xdc, 0x1d, 0xec, 0x29, 0x71, 0x42, + 0x43, 0x19, 0xff, 0xb1, 0x95, 0xc9, 0x10, 0xce, 0xdd, 0x22, 0x65, 0x76, 0xdc, 0x82, 0xb3, + 0xb8, 0x4e, 0x2c, 0xb3, 0xec, 0x89, 0x56, 0xa1, 0x80, 0x5a, 0x7a, 0x4f, 0xdf, 0x5a, 0x9e, + 0x49, 0xb6, 0x03, 0x4f, 0xb1, 0xc7, 0xf2, 0xd1, 0x31, 0x36, 0x8c, 0x9c, 0xf1, 0xda, 0xab, + 0xd8, 0xeb, 0xfc, 0x93, 0xf4, 0x99, 0xd7, 0x37, 0xe4, 0x11, 0x79, 0x26, 0x56, 0xa0, 0xe8, + 0xfb, 0x0c, 0x89, 0xdb, 0x1f, 0x35, 0x1a, 0x10, 0x45, 0x8a, 0x2c, 0x8d, 0x58, 0x03, 0xc4, + 0xe8, 0xca, 0x67, 0x2b, 0x3e, 0x63, 0xc8, 0xbe, 0x3b, 0xb5, 0x45, 0xba, 0xda, 0x82, 0x61, + 0x91, 0x2b, 0xd4, 0xdc, 0x01, 0x8f, 0xba, 0x6d, 0x91, 0x6c, 0x2a, 0xa8, 0x0f, 0xbb, 0x7d, + 0x4f, 0x59, 0x1d, 0x91, 0x5b, 0x21, 0xd8, 0x7c, 0xe7, 0x3b, 0x52, 0x67, 0x3d, 0x6a, 0x3f, + 0x8d, 0x76, 0x5c, 0xa5, 0x84, 0xbf, 0xfe, 0x6e, 0x68, 0x14, 0x0e, 0x7d, 0x50, 0x1a, 0x20, + 0xcb, 0xa1, 0x27, 0xda, 0xe5, 0xce, 0x02, 0x3b, 0xd6, 0x49, 0x52, 0x61, 0xe8, 0xd4, 0xaf, + 0xf0, 0x31, 0x38, 0x5c, 0x69, 0x3b, 0x74, 0x99, 0x44, 0x4c, 0x41, 0xe9, 0x5d, 0xce, 0x8c, + 0xe0, 0x00, 0x27, 0xba, 0x5c, 0x68, 0x82, 0xf3, 0x09, 0xe7, 0xc0, 0x1f, 0xed, 0xcb, 0x3c, + 0xc9, 0x5b, 0xfe, 0x53, 0x22, 0xb5, 0xd9, 0x5a, 0xd1, 0x54, 0x05, 0xc0, 0x62, 0xa3, 0xc0, + 0xd9, 0x97, 0x79, 0x06, 0xc2, 0x68, 0x6a, 0x39, 0x50, 0xa5, 0x06, 0x94, 0xfe, 0x97, 0x1f, + 0xba, 0xee, 0x9b, 0x2c, 0x8e, 0x6b, 0xe0, 0x4c, 0x2d, 0x47, 0x95, 0xdd, 0x0e, 0x96, 0xea, + 0x3d, 0x26, 0x3f, 0xa5, 0x7f, 0x35, 0x98, 0xc0, 0x10, 0xe7, 0xa6, 0x49, 0x7e, 0x32, 0x00, + 0xcb, 0x2e, 0xfc, 0x3c, 0xb9, 0xb1, 0x55, 0x95, 0x3e, 0xb2, 0x0c, 0xc6, 0x16, 0xf8, 0x11, + 0xb9, 0x75, 0xad, 0xfa, 0xf7, 0xab, 0x50, 0x09, 0xc2, 0xf0, 0x7c, 0xeb, 0x4f, 0x88, 0x58, + 0x29, 0x5f, 0xc0, 0x57, 0x43, 0xae, 0x13, 0x11, 0x2e, 0x8f, 0x8c, 0xb4, 0xfc, 0x5d, 0xd9, + 0x64, 0xdf, 0x75, 0x5c, 0x3f, 0x01, 0xd1, 0x84, 0xa3, 0x3f, 0x5a, 0x65, 0x43, 0xdd, 0xd0, + 0x9e, 0xff, 0x83, 0x9d, 0x06, 0x90, 0x2b, 0xde, 0x1c, 0xcc, 0xea, 0x58, 0xc4, 0x2f, 0xfb, + 0x0a, 0xb1, 0xd0, 0xd1, 0xa0, 0xed, 0xcf, 0x97, 0x53, 0xb5, 0x1a, 0x02, 0x6d, 0x06, 0x95, + 0xd3, 0x9d, 0xbc, 0xfb, 0xa0, 0xd2, 0xfe, 0x88, 0x63, 0x69, 0x26, 0x14, 0x7e, 0x59, 0xed, + 0xe5, 0x38, 0x74, 0x11, 0xca, 0xbc, 0x27, 0xbe, 0x6b, 0x90, 0xae, 0x06, 0x29, 0x1d, 0xa3, + 0xc6, 0x91, 0x47, 0xab, 0x75, 0x7f, 0xd1, 0x95, 0x29, 0xb6, 0x64, 0x21, 0xcf, 0xa0, 0xad, + 0x36, 0x48, 0x08, 0xd2, 0xa0, 0x74, 0x20, 0x94, 0x3d, 0xdc, 0x57, 0x97, 0xc1, 0xf9, 0xbb, + 0x3c, 0xd0, 0x2f, 0x9c, 0x01, 0x75, 0x87, 0xdf, 0x52, 0xe3, 0xb5, 0x52, 0xa8, 0xc4, 0xc9, + 0x1a, 0x6d, 0x79, 0xf6, 0x88, 0xee, 0x83, 0xf8, 0x69, 0xe6, 0x7d, 0xe7, 0x19, 0x5d, 0xe5, + 0x05, 0xf2, 0x1c, 0x68, 0x72, 0xa4, 0xf0, 0x43, 0x4c, 0x94, 0x45, 0xa6, 0x2e, 0x2d, 0x93, + 0xd3, 0xd8, 0x7b, 0xad, 0xb6, 0x6e, 0xff, 0x3a, 0x5c, 0x7e, 0xb6, 0x12, 0xe1, 0xe2, 0xbd, + 0x17, 0xfd, 0x26, 0xc4, 0x3f, 0xa2, 0x41, 0x97, 0xfb, 0xaa, 0x34, 0x8e, 0xe3, 0x51, 0x66, + 0xa2, 0xc6, 0x8d, 0x7e, 0x81, 0x49, 0x97, 0x36, 0xe5, 0x01, 0xfb, 0xbc, 0x8e, 0xc8, 0xd3, + 0xfc, 0x91, 0x79, 0xd7, 0x17, 0xa4, 0x14, 0x33, 0x10, 0xe6, 0x4f, 0xf3, 0x07, 0xda, 0xc9, + 0x33, 0x28, 0x3f, 0x34, 0xa8, 0xd0, 0xae, 0xe9, 0x66, 0xdf, 0x24, 0x5a, 0xf3, 0x37, 0x56, + 0xf1, 0xaa, 0x26, 0x64, 0x60, 0x4c, 0x0d, 0x30, 0x04, 0x6f, 0x03, 0x0c, 0x8a, 0x36, 0x6c, + 0x0f, 0x41, 0x1f, 0x56, 0x73, 0x28, 0x81, 0x68, 0x2e, 0xd3, 0xd0, 0x4c, 0x26, 0xa1, 0xd2, + 0xbd, 0xc5, 0x4a, 0x87, 0x92, 0x27, 0x25, 0xdb, 0x56, 0x42, 0x0d, 0xa0, 0x91, 0xe8, 0x6c, + 0x61, 0xb7, 0x64, 0x37, 0xab, 0x3d, 0xed, 0xa0, 0xd0, 0xc7, 0x4c, 0x48, 0x0f, 0xde, 0x36, + 0xde, 0x78, 0xfd, 0x37, 0x07, 0x10, 0xe3, 0x2d, 0xd9, 0xe7, 0x52, 0xed, 0x16, 0x25, 0x65, + 0x7f, 0x3c, 0xb7, 0x69, 0xb6, 0x49, 0xb3, 0x68, 0xbe, 0xed, 0x5c, 0x1c, 0xbc, 0xd5, 0xb7, + 0x99, 0x01, 0x60, 0x32, 0x6c, 0xee, 0x96, 0x1e, 0x9b, 0x9a, 0x1a, 0xf9, 0xc3, 0x44, 0x37, + 0x5c, 0xf1, 0x99, 0x87, 0x68, 0x70, 0x45, 0xdb, 0x03, 0xe6, 0x45, 0xad, 0xa5, 0xd2, 0x0e, + 0xd4, 0x52, 0x9f, 0xc4, 0xcf, 0xcb, 0xde, 0xfa, 0x42, 0x72, 0x7c, 0x9d, 0x41, 0x76, 0xd3, + 0x47, 0x03, 0x3b, 0x59, 0x28, 0xa3, 0xff, 0x90, 0xbc, 0xe5, 0x57, 0x9b, 0xb0, 0x0e, 0x87, + 0xd1, 0xd9, 0xe0, 0x40, 0xd1, 0xad, 0xca, 0x7d, 0x18, 0x84, 0x10, 0xe5, 0x5b, 0x8b, 0xcb, + 0xd7, 0xbf, 0xf5, 0x01, 0x2a, 0x01, 0x71, 0xf8, 0x49, 0x62, 0xc8, 0x8e, 0x2e, 0xf2, 0xa2, + 0xb2, 0x09, 0xa1, 0xf7, 0xb8, 0xb3, 0xd7, 0xdc, 0x1b, 0xb6, 0x0c, 0x24, 0x98, 0x32, 0xde, + 0xfb, 0xb9, 0x02, 0x7a, 0xa8, 0x0f, 0x5e, 0x11, 0x9c, 0xef, 0x25, 0xe4, 0x05, 0x24, 0x95, + 0x40, 0xc0, 0x42, 0x31, 0x3f, 0x2b, 0x76, 0x03, 0x47, 0x0e, 0x84, 0xec, 0xde, 0xb1, 0x05, + 0x9e, 0x8c, 0x19, 0xa0, 0x9e, 0x5c, 0xae, 0x35, 0x01, 0x8d, 0xf0, 0xce, 0x51, 0x44, 0x87, + 0xe7, 0x8a, 0xf2, 0x38, 0xb2, 0x32, 0x79, 0xf3, 0x98, 0x33, 0xc4, 0xb5, 0x6a, 0xf8, 0x36, + 0x44, 0xcd, 0xd1, 0x21, 0xfe, 0x63, 0x2d, 0xb5, 0x8c, 0x2e, 0xec, 0xdf, 0x06, 0x19, 0x16, + 0x4f, 0x3a, 0x89, 0xf9, 0xaf, 0xe8, 0xf6, 0xa0, 0x5d, 0xfb, 0x9c, 0xe0, 0x51, 0x1b, 0x4d, + 0xd2, 0x80, 0xc0, 0xe7, 0xbf, 0xf4, 0xef, 0x90, 0xc5, 0xe2, 0xd2, 0x2e, 0x9b, 0x10, 0xbf, + 0x04, 0xcb, 0xb3, 0x42, 0xda, 0xc0, 0x72, 0x8b, 0xbf, 0xaa, 0x08, 0x49, 0xeb, 0xf0, 0x6f, + 0x38, 0xb7, 0x86, 0xba, 0x7c, 0x64, 0xe6, 0xc0, 0xf2, 0xe5, 0x36, 0x5f, 0x97, 0x2b, 0x46, + 0xa8, 0x7e, 0xa2, 0x27, 0x3b, 0xf7, 0x45, 0x53, 0x0f, 0xa5, 0x1f, 0x22, 0x61, 0x10, 0x51, + 0x8e, 0x5e, 0x6c, 0xf9, 0x5f, 0x66, 0x69, 0x3a, 0xd5, 0x8e, 0xcf, 0xd1, 0x9d, 0x9a, 0xac, + 0x1d, 0x97, 0x76, 0xaa, 0x4a, 0xb5, 0x3e, 0x9d, 0x18, 0x9d, 0x25, 0xed, 0x4d, 0x1f, 0xa4, + 0x9b, 0x82, 0x8e, 0xcb, 0x8f, 0xa5, 0x4d, 0x53, 0xaa, 0x56, 0xba, 0x56, 0x4f, 0x7b, 0xa4, + 0x85, 0x36, 0x37, 0x52, 0x2f, 0x43, 0x71, 0x22, 0x8c, 0xeb, 0x84, 0x82, 0x91, 0x21, 0xe7, + 0x5e, 0x05, 0xcd, 0x2f, 0x0b, 0xc7, 0x1d, 0xce, 0x3d, 0xc3, 0x06, 0x1d, 0x9a, 0xfc, 0xed, + 0xa4, 0x5e, 0xf8, 0xe0, 0x38, 0xa7, 0x29, 0x96, 0x74, 0x5b, 0x6c, 0xf5, 0x55, 0xe1, 0x69, + 0x7f, 0xf9, 0xa9, 0x86, 0x19, 0x4a, 0x80, 0xfd, 0x8b, 0x81, 0x72, 0x9d, 0xb5, 0x96, 0x3f, + 0x68, 0x34, 0x67, 0xaf, 0xf5, 0x26, 0x1f, 0x75, 0x22, 0x97, 0xf8, 0xba, 0xf3, 0x92, 0xbc, + 0x57, 0x61, 0xa8, 0x5c, 0x75, 0xd5, 0x8b, 0xd8, 0x10, 0xe2, 0xa4, 0xf0, 0x9d, 0x2b, 0x0d, + 0x90, 0x3e, 0x15, 0x4d, 0x92, 0xec, 0xf8, 0xb3, 0x19, 0x3d, 0x0a, 0x4b, 0x44, 0x58, 0xf6, + 0x5d, 0x86, 0xf8, 0x1a, 0xf1, 0x8f, 0xb3, 0x99, 0x24, 0x1e, 0x2b, 0x33, 0x59, 0xc2, 0xfb, + 0x9d, 0x26, 0x71, 0x17, 0x76, 0x33, 0xe2, 0x46, 0x16, 0xf6, 0x1e, 0x6b, 0xf6, 0x1b, 0x2e, + 0x9c, 0xc2, 0xdc, 0xcf, 0x77, 0x50, 0x66, 0xc4, 0x07, 0x7a, 0xc9, 0x2e, 0x97, 0x2e, 0xb4, + 0x65, 0x2a, 0x7a, 0x7b, 0x60, 0xbd, 0x87, 0x01, 0x70, 0x4b, 0xf4, 0x18, 0x09, 0x4b, 0x9c, + 0x6e, 0xb3, 0xb3, 0x0b, 0xbd, 0x77, 0x0f, 0x1b, 0xdb, 0xc4, 0xe6, 0x6f, 0x2f, 0x95, 0x6b, + 0x12, 0x37, 0xe0, 0x33, 0x2e, 0xb1, 0x28, 0x9c, 0xf8, 0x50, 0x99, 0x14, 0x7b, 0x3e, 0x33, + 0xcd, 0x0c, 0x45, 0xd5, 0x22, 0xb3, 0x34, 0xf7, 0xd7, 0x6a, 0xc2, 0x03, 0xa8, 0xca, 0xe7, + 0x6d, 0x28, 0x07, 0xe8, 0xb7, 0x69, 0x86, 0x1a, 0xc3, 0xc9, 0xe4, 0x48, 0xba, 0xdc, 0xa7, + 0x1c, 0x03, 0x51, 0x0b, 0x1c, 0xab, 0x65, 0xee, 0x97, 0xb9, 0x07, 0x38, 0x9e, 0x69, 0x41, + 0xfc, 0x6c, 0x38, 0x6f, 0x05, 0x3f, 0x21, 0x45, 0xf6, 0xeb, 0xb2, 0x5d, 0xa1, 0x40, 0x6c, + 0xdf, 0x4c, 0x59, 0x3b, 0x70, 0xdd, 0x98, 0x52, 0x00, 0x8e, 0x88, 0xba, 0x56, 0xe5, 0xc3, + 0xf7, 0xa3, 0xf5, 0x4a, 0x7d, 0xf1, 0x64, 0x60, 0x18, 0xb2, 0x80, 0x1d, 0x34, 0xed, 0x49, + 0x09, 0x3e, 0x91, 0xf1, 0x47, 0x1f, 0x76, 0xa9, 0xd5, 0x69, 0x38, 0x18, 0x87, 0xf6, 0x4b, + 0x80, 0x72, 0x04, 0x49, 0x53, 0xd5, 0xa8, 0x77, 0xf9, 0x6f, 0x41, 0xb1, 0x3c, 0x25, 0x17, + 0x0b, 0x15, 0xa5, 0xa2, 0x18, 0xea, 0x21, 0x02, 0x91, 0xf7, 0x1c, 0x67, 0xff, 0x6d, 0x7b, + 0x4d, 0x94, 0x70, 0x71, 0x0c, 0x6e, 0xef, 0x39, 0x08, 0xcd, 0x4d, 0x90, 0x1f, 0x66, 0xb5, + 0xc8, 0xaf, 0x81, 0xf6, 0xa5, 0x59, 0x6a, 0x75, 0xdf, 0x33, 0x5e, 0x29, 0x94, 0x0f, 0x21, + 0x4c, 0x83, 0x31, 0x2b, 0xbb, 0x41, 0x8d, 0x0c, 0xff, 0x21, 0x9e, 0x61, 0xaa, 0x2e, 0x7f, + 0xac, 0xa6, 0x34, 0x60, 0x38, 0xf8, 0x44, 0x4c, 0xfc, 0xe6, 0xa4, 0x35, 0xac, 0x90, 0x46, + 0xed, 0x94, 0x03, 0x8a, 0x5f, 0xf3, 0x2f, 0xb5, 0xd6, 0x2e, 0xa7, 0x6d, 0xe4, 0xa7, 0x3c, + 0x41, 0x1d, 0xca, 0x8e, 0x49, 0xf0, 0x4f, 0xcf, 0xef, 0xb7, 0xce, 0xcb, 0xce, 0x23, 0xf5, + 0x6c, 0x38, 0x4a, 0x4b, 0x81, 0xfa, 0x3a, 0xbe, 0xa4, 0xbb, 0xe3, 0x7d, 0xd1, 0x3c, 0xec, + 0x99, 0x8d, 0x6d, 0xf6, 0x2e, 0xfb, 0x23, 0xee, 0x87, 0xd5, 0x82, 0x4a, 0xcc, 0xee, 0xbc, + 0x01, 0x15, 0xd4, 0xf7, 0xd8, 0x4d, 0x4a, 0xaf, 0x69, 0x1b, 0x0c, 0xd2, 0x5d, 0x0f, 0x05, + 0x9f, 0xf7, 0xa9, 0xea, 0x56, 0x0a, 0x99, 0x9a, 0xd4, 0x3a, 0x88, 0x96, 0x18, 0x6a, 0x9f, + 0x78, 0x72, 0x27, 0xa3, 0x68, 0xf5, 0xfe, 0xbe, 0xa3, 0x48, 0xa6, 0x7a, 0x74, 0x8f, 0x56, + 0x6f, 0x56, 0x71, 0xb7, 0x17, 0x08, 0x03, 0x0a, 0x70, 0x63, 0x18, 0x8b, 0xf3, 0xa0, 0x08, + 0x17, 0x3f, 0xe0, 0x87, 0x0c, 0x44, 0xc7, 0x02, 0x31, 0xa4, 0x7f, 0xeb, 0xfd, 0xe1, 0xd5, + 0xdc, 0xb0, 0xe3, 0xed, 0x4e, 0xcf, 0xc0, 0xa5, 0xa1, 0x21, 0x8c, 0x9b, 0x1e, 0xcc, 0x4e, + 0x5a, 0xef, 0xab, 0xc4, 0xf3, 0x58, 0x03, 0x92, 0xb6, 0x28, 0x5a, 0x25, 0xe7, 0xf3, 0xb2, + 0x24, 0xdb, 0x2a, 0x35, 0x09, 0xab, 0x7b, 0xe4, 0x69, 0x95, 0x04, 0xf4, 0xf3, 0x71, 0x1e, + 0xcc, 0x64, 0x67, 0xe3, 0xa6, 0x9d, 0x1f, 0x91, 0x01, 0xde, 0xc5, 0x79, 0x72, 0x6a, 0xec, + 0x9f, 0x2e, 0x70, 0x7c, 0xee, 0x2d, 0x33, 0x7d, 0x7e, 0x96, 0x52, 0x4e, 0x1e, 0xa2, 0xa9, + 0x25, 0x68, 0x2c, 0xde, 0x94, 0xb0, 0xd9, 0x43, 0x97, 0x2c, 0x04, 0x2f, 0xe1, 0xe0, 0xa4, + 0x04, 0xd8, 0xce, 0x13, 0x7f, 0x91, 0x2c, 0x4a, 0x89, 0x0d, 0x7e, 0xde, 0x7c, 0xcf, 0xf3, + 0x0b, 0x5a, 0x00, 0x18, 0x10, 0xf7, 0x5f, 0xfe, 0x6b, 0x33, 0x7a, 0xfa, 0x2c, 0x0f, 0x3b, + 0xba, 0x8f, 0xc4, 0xe9, 0x4a, 0xfe, 0x75, 0x29, 0x30, 0x56, 0x32, 0xc2, 0xb4, 0xae, 0x92, + 0x5e, 0xcf, 0xd5, 0x54, 0x73, 0xfc, 0xd5, 0x62, 0xa7, 0x19, 0xea, 0x19, 0xa7, 0xab, 0x25, + 0x5b, 0x43, 0x75, 0xbb, 0x81, 0x2f, 0xe9, 0xe2, 0x28, 0xd3, 0x9f, 0x20, 0xc3, 0x3c, 0x3d, + 0x2c, 0xbf, 0x43, 0x16, 0x52, 0xa6, 0x87, 0x6d, 0xf8, 0x0c, 0x3d, 0x6f, 0xda, 0xd1, 0xb6, + 0x0e, 0x2d, 0x70, 0x16, 0x35, 0x84, 0xc6, 0xa5, 0x0d, 0x28, 0x55, 0x69, 0x1b, 0x82, 0x56, + 0xae, 0xb1, 0xe8, 0x4d, 0x7d, 0xab, 0xf0, 0xff, 0x83, 0xf7, 0xf0, 0xed, 0x17, 0xc1, 0xa9, + 0xc7, 0x2d, 0xc4, 0x16, 0xd3, 0x5b, 0x87, 0x44, 0xff, 0x12, 0x64, 0x0c, 0x39, 0xf4, 0xb8, + 0x6c, 0x0b, 0x33, 0x29, 0x94, 0x05, 0xc9, 0x24, 0x35, 0x7a, 0x4a, 0xa4, 0xdb, 0x8f, 0x8a, + 0x88, 0xcb, 0x49, 0x93, 0x4b, 0x32, 0x9d, 0x09, 0xa0, 0xed, 0x5c, 0x23, 0xa5, 0x25, 0x0e, + 0xe2, 0xd0, 0xd2, 0x5b, 0x86, 0xb0, 0xf0, 0x7f, 0x1f, 0xc6, 0x2c, 0x63, 0x57, 0x8d, 0xe9, + 0xc3, 0x08, 0xac, 0x88, 0x6e, 0x77, 0xfe, 0x03, 0x3c, 0x8d, 0xa4, 0x2c, 0xcd, 0x70, 0xb3, + 0xe6, 0x27, 0xe5, 0x62, 0x05, 0x52, 0xab, 0x97, 0x2e, 0xdf, 0x72, 0x02, 0x1e, 0x48, 0x0e, + 0x2c, 0x82, 0xa8, 0x29, 0xf7, 0x05, 0xd3, 0xac, 0x80, 0x15, 0xaa, 0xbc, 0xaa, 0x6b, 0xd2, + 0xa1, 0xb6, 0x8f, 0x00, 0x29, 0x91, 0x85, 0x3e, 0x02, 0xf7, 0xe4, 0x40, 0xef, 0x3c, 0xfa, + 0x15, 0xb8, 0x40, 0xb6, 0xe6, 0xaa, 0x92, 0x60, 0x20, 0xd7, 0xe4, 0x33, 0x56, 0xcb, 0xb4, + 0x34, 0x25, 0x97, 0x03, 0x15, 0x0e, 0x16, 0x34, 0x22, 0xeb, 0x5c, 0x74, 0xd1, 0x59, 0xae, + 0xfb, 0x59, 0xe8, 0xf9, 0x61, 0xf8, 0xf6, 0x87, 0x10, 0x08, 0x5b, 0xa7, 0x61, 0x14, 0xa8, + 0xa0, 0xde, 0x5a, 0x2b, 0x14, 0xf7, 0x2e, 0x79, 0x76, 0xb1, 0x06, 0xe1, 0xe0, 0xcf, 0x91, + 0xb7, 0x06, 0xf6, 0xa7, 0xc4, 0x90, 0xdc, 0xb8, 0x00, 0x13, 0x20, 0xe0, 0xdb, 0x5d, 0x10, + 0x12, 0xba, 0x71, 0xc1, 0x02, 0x69, 0x54, 0x84, 0x46, 0x85, 0x19, 0x3e, 0x6d, 0xbd, 0xbd, + 0x20, 0x2d, 0x4a, 0x7a, 0xa3, 0x6d, 0x9c, 0x06, 0x44, 0xea, 0x21, 0x65, 0xfc, 0xcf, 0x26, + 0x0f, 0xa9, 0x1a, 0x79, 0x28, 0x16, 0xcc, 0x88, 0x2b, 0x7d, 0xa2, 0x27, 0x09, 0x28, 0xb4, + 0x8f, 0x34, 0xca, 0x15, 0xb5, 0xae, 0x40, 0x6f, 0x9f, 0x8f, 0xde, 0x32, 0x5e, 0x4b, 0x30, + 0x6e, 0xb2, 0x77, 0x2e, 0x10, 0x63, 0x5f, 0xa7, 0xca, 0x2b, 0x23, 0x57, 0x6e, 0x35, 0xaf, + 0x57, 0xb2, 0x9f, 0x2f, 0x5e, 0xcb, 0x01, 0xda, 0x48, 0x9c, 0x90, 0x98, 0x8c, 0x71, 0x95, + 0x9f, 0x6b, 0xf3, 0xd3, 0xb4, 0x91, 0x23, 0x8f, 0xd4, 0xc1, 0x3b, 0xd6, 0x86, 0x2e, 0xd1, + 0x84, 0x19, 0x83, 0x12, 0x1c, 0x58, 0xc2, 0x57, 0xf1, 0x94, 0x3f, 0xbd, 0x4b, 0x52, 0x30, + 0x18, 0xe4, 0x44, 0x53, 0x8a, 0xe5, 0x69, 0x9e, 0x2c, 0xf4, 0xc3, 0x4b, 0xb4, 0xfa, 0xd5, + 0x11, 0x80, 0xad, 0xbf, 0xff, 0xb2, 0x79, 0x70, 0x49, 0x98, 0x4f, 0x62, 0xf3, 0x17, 0xac, + 0xc0, 0xae, 0xfd, 0x7b, 0x49, 0xef, 0x23, 0x94, 0xf4, 0x1a, 0x01, 0x9a, 0x11, 0x54, 0x1f, + 0x26, 0x14, 0x1a, 0x1c, 0x35, 0xe1, 0xbc, 0xc0, 0x5a, 0x92, 0x30, 0xfc, 0xe3, 0x58, 0x2b, + 0x9e, 0xa1, 0x60, 0xf9, 0x35, 0xde, 0xd5, 0xc9, 0xdd, 0x51, 0x5e, 0x7e, 0x27, 0xa6, 0x82, + 0x44, 0xa2, 0xe9, 0x13, 0x92, 0xbc, 0xbd, 0xc0, 0x57, 0x36, 0x58, 0xfe, 0xb3, 0x49, 0x14, + 0x0f, 0xd9, 0x3d, 0x87, 0x15, 0xf6, 0xbc, 0xdf, 0xf9, 0xbd, 0xd4, 0x18, 0x67, 0x16, 0x19, + 0x2c, 0x80, 0xbe, 0x3f, 0xcd, 0x7c, 0x33, 0x84, 0x34, 0xc5, 0xfc, 0xfe, 0xbb, 0x43, 0x39, + 0x76, 0x5c, 0x15, 0xb8, 0xc0, 0xac, 0x0a, 0xb1, 0x4f, 0xf0, 0x37, 0x99, 0xd2, 0x45, 0x4b, + 0xed, 0x17, 0x1a, 0x4a, 0x52, 0x8d, 0x94, 0xe6, 0x02, 0x6b, 0x38, 0x36, 0xf5, 0xde, 0xff, + 0xda, 0xb2, 0xb7, 0x7d, 0x9a, 0x32, 0xb2, 0x41, 0x12, 0xe9, 0x7a, 0xbc, 0x32, 0x71, 0xe9, + 0x3c, 0x32, 0xbf, 0x2c, 0x1e, 0xff, 0x42, 0xac, 0xd1, 0x72, 0x62, 0x33, 0x29, 0x9e, 0x78, + 0x55, 0xc1, 0xe2, 0x42, 0x3c, 0xc3, 0x5d, 0x3b, 0xcc, 0x28, 0x23, 0xd4, 0xcf, 0x52, 0xb5, + 0xec, 0x2f, 0xa1, 0x72, 0xda, 0x26, 0xd0, 0x0d, 0xa0, 0xae, 0xe0, 0x48, 0xbb, 0xaa, 0xdf, + 0x2a, 0xb1, 0xfb, 0x28, 0x28, 0x9b, 0x0d, 0x6f, 0x02, 0x03, 0x8a, 0x26, 0x6c, 0x71, 0x60, + 0xdc, 0x51, 0x6c, 0xf7, 0x67, 0x46, 0x32, 0x02, 0x8f, 0x81, 0x44, 0xc4, 0x4a, 0x97, 0x1b, + 0xe6, 0x20, 0xb4, 0x31, 0x99, 0xa3, 0x46, 0x6d, 0xd6, 0x22, 0xcb, 0x71, 0xb7, 0xae, 0x3a, + 0xa0, 0x6e, 0xee, 0x38, 0x5c, 0xf5, 0x9a, 0x17, 0xbb, 0x32, 0xa0, 0x8c, 0x90, 0x05, 0x7f, + 0x13, 0x1d, 0xc0, 0x39, 0x52, 0xd4, 0xa3, 0x5d, 0x86, 0xa6, 0xd6, 0x97, 0x9f, 0x4b, 0x67, + 0x2f, 0xbc, 0xa7, 0xda, 0x5d, 0xcf, 0xe0, 0x82, 0xd6, 0x9c, 0x3f, 0x09, 0x13, 0x5f, 0x49, + 0x9e, 0xee, 0x82, 0x07, 0x12, 0x99, 0xa6, 0x35, 0x0a, 0xd7, 0x4f, 0xe5, 0xcc, 0xe7, 0x02, + 0x50, 0x51, 0x75, 0xdf, 0x85, 0xf6, 0x80, 0xef, 0x53, 0x1f, 0x64, 0x0a, 0xda, 0x16, 0x2f, + 0xf6, 0xf0, 0x70, 0x81, 0x4d, 0x78, 0xe8, 0xd2, 0x8f, 0xc3, 0x31, 0x6b, 0x54, 0xf1, 0x70, + 0xf5, 0x08, 0xbb, 0xb2, 0x9d, 0x8a, 0x96, 0x61, 0x8a, 0x6c, 0xc2, 0x11, 0x77, 0x6a, 0xe3, + 0x00, 0x38, 0xa1, 0xe9, 0x04, 0x94, 0x2f, 0x27, 0x28, 0x59, 0x13, 0x44, 0xda, 0x49, 0x98, + 0x47, 0x36, 0xb4, 0x56, 0xed, 0x59, 0x50, 0x7d, 0x5c, 0x60, 0x53, 0xc3, 0xcf, 0xbe, 0xcb, + 0x5e, 0x11, 0x04, 0x6d, 0x87, 0xa3, 0x00, 0xa6, 0xbe, 0xdf, 0x6a, 0xc1, 0x8a, 0x8b, 0xeb, + 0x3d, 0xaa, 0xe7, 0x9c, 0xc3, 0xac, 0x46, 0x03, 0xb1, 0xd2, 0xd7, 0x05, 0xb2, 0xd2, 0x15, + 0xf8, 0xff, 0xfd, 0xd5, 0x03, 0x8b, 0x1e, 0xe7, 0xd4, 0xca, 0xcd, 0x86, 0x11, 0x4c, 0xf8, + 0xf6, 0xfe, 0xed, 0x76, 0xbb, 0x81, 0x0e, 0x54, 0x25, 0x61, 0xc4, 0xc8, 0x48, 0xaf, 0xfb, + 0x71, 0xd1, 0x2c, 0x63, 0x0f, 0x9b, 0x29, 0xde, 0x45, 0x09, 0xb0, 0x02, 0x03, 0x94, 0x8b, + 0x13, 0x90, 0x65, 0xe1, 0xfe, 0xae, 0xea, 0xee, 0x13, 0xc2, 0xf5, 0x74, 0x53, 0x0f, 0x90, + 0xa2, 0x77, 0xbe, 0x13, 0x5f, 0x75, 0x80, 0x62, 0x21, 0xf6, 0x31, 0xc7, 0x44, 0x35, 0x51, + 0x89, 0xd1, 0x39, 0x03, 0x30, 0x70, 0x9b, 0x2b, 0xbc, 0xb6, 0x1f, 0x54, 0x8d, 0x8f, 0xc7, + 0xf3, 0x9f, 0x54, 0x41, 0x3a, 0x30, 0x90, 0xd0, 0x9a, 0x96, 0x2e, 0x28, 0x34, 0x42, 0xbb, + 0xe0, 0x1b, 0x6f, 0x7b, 0x7a, 0x60, 0x55, 0x62, 0x0a, 0xc9, 0x4e, 0xbd, 0xfd, 0xf9, 0x59, + 0x82, 0x72, 0x2b, 0x84, 0x4e, 0x3b, 0x70, 0x8a, 0xf5, 0x0f, 0x3f, 0x96, 0x01, 0xa4, 0x4f, + 0x5c, 0x47, 0x57, 0xe7, 0xa5, 0x06, 0x7d, 0xbc, 0x41, 0xeb, 0xd9, 0xce, 0x6e, 0x2e, 0xeb, + 0xbe, 0x0f, 0x35, 0x47, 0xff, 0xbf, 0xce, 0x53, 0x82, 0x87, 0xf3, 0x9a, 0xdb, 0x58, 0x26, + 0x11, 0x7d, 0xc1, 0x46, 0xbc, 0x62, 0x1d, 0x61, 0x7d, 0x0b, 0x48, 0x11, 0xc0, 0x53, 0xe1, + 0xaa, 0x2e, 0x2f, 0x83, 0x43, 0xd2, 0x69, 0xca, 0xde, 0xad, 0x9a, 0xb4, 0x11, 0x05, 0x31, + 0xef, 0x03, 0xf9, 0x73, 0xcb, 0x43, 0xdd, 0xd8, 0x9f, 0x6c, 0xed, 0x52, 0x23, 0x8c, 0xb6, + 0x93, 0xb8, 0x85, 0x0e, 0x9d, 0xf3, 0xd9, 0xcd, 0xbc, 0xb9, 0x7c, 0x4c, 0x84, 0x74, 0x9e, + 0xec, 0x92, 0xb8, 0x23, 0xf2, 0x97, 0x21, 0xc7, 0xc2, 0x00, 0xf6, 0x9d, 0xb4, 0x15, 0x27, + 0x74, 0x56, 0x62, 0x68, 0x14, 0xd6, 0x46, 0xae, 0x57, 0xef, 0x13, 0x6e, 0x36, 0xa0, 0x27, + 0x3a, 0xc7, 0x6d, 0x51, 0xfb, 0x11, 0xb3, 0x76, 0x31, 0xd9, 0x28, 0xa9, 0x01, 0x23, 0x87, + 0x18, 0xeb, 0x4f, 0xf8, 0x33, 0x6a, 0x0a, 0x75, 0x0a, 0x58, 0x19, 0xbf, 0x6a, 0x2d, 0xa7, + 0x6d, 0xa1, 0xa0, 0x69, 0x64, 0xef, 0x48, 0x00, 0xb8, 0x65, 0xd3, 0xbd, 0x02, 0x6d, 0x0e, + 0xdd, 0x31, 0x5e, 0x74, 0x33, 0x7f, 0xc9, 0xfa, 0x69, 0x2f, 0xff, 0x61, 0xc4, 0xc7, 0x15, + 0x3c, 0xfc, 0xfb, 0xa2, 0xf5, 0xa1, 0x62, 0x09, 0x46, 0x0f, 0x90, 0xc5, 0xa3, 0x53, 0xf6, + 0xd5, 0x81, 0xc6, 0x52, 0x9b, 0xc2, 0x29, 0x07, 0x99, 0xb6, 0x15, 0xa9, 0xdf, 0xc1, 0xac, + 0xf6, 0x88, 0x99, 0x67, 0xd9, 0xb9, 0x79, 0xc6, 0x2e, 0xe1, 0x6e, 0x3a, 0x99, 0x7d, 0xce, + 0xaf, 0x1f, 0xc0, 0x20, 0xd4, 0xb2, 0x8e, 0xc3, 0xc8, 0x0e, 0xcc, 0x8f, 0x21, 0x63, 0x24, + 0x48, 0x95, 0xb6, 0x7a, 0xb4, 0xef, 0xf8, 0x23, 0x9a, 0x80, 0x52, 0x52, 0xcf, 0x2e, 0x19, + 0xe5, 0x8e, 0x0c, 0x4f, 0xdb, 0xf5, 0x95, 0x40, 0x2b, 0x56, 0x25, 0xfb, 0x26, 0x1e, 0x64, + 0x1a, 0x1a, 0x9c, 0x93, 0x8f, 0xaa, 0xd9, 0x84, 0x8c, 0xe8, 0x4f, 0x41, 0x00, 0x4e, 0x68, + 0x27, 0x48, 0xe5, 0xa9, 0xa8, 0xd4, 0xc1, 0x81, 0xc9, 0x83, 0x7f, 0x8b, 0x5c, 0xe3, 0x3e, + 0x10, 0xb7, 0x4d, 0x24, 0x33, 0x7d, 0xc4, 0xa6, 0x7e, 0xd0, 0x66, 0x97, 0x9a, 0x45, 0xd5, + 0x2f, 0x6c, 0x3c, 0xbd, 0xc5, 0xc4, 0x9b, 0x62, 0xf4, 0x1e, 0xb5, 0x42, 0x87, 0x90, 0x7a, + 0xbe, 0x5f, 0xad, 0x99, 0xc5, 0x77, 0x6a, 0x16, 0x7d, 0x91, 0x8b, 0x57, 0x47, 0xda, 0x35, + 0x6d, 0x37, 0x3c, 0xd3, 0x13, 0xd8, 0xc3, 0xfb, 0x3b, 0x30, 0xb7, 0x04, 0x0e, 0xd0, 0x0d, + 0x81, 0x5e, 0x07, 0x82, 0xb6, 0x59, 0x5b, 0xb4, 0x34, 0x11, 0x05, 0xd8, 0x4d, 0xb9, 0xe4, + 0xed, 0xb0, 0x68, 0x4f, 0x60, 0xf2, 0x0b, 0xc9, 0x65, 0x2f, 0x58, 0xcd, 0x8a, 0xbb, 0x5b, + 0xf1, 0x81, 0x3e, 0x6d, 0x3f, 0x2c, 0x1d, 0x75, 0xa2, 0x27, 0x9c, 0x1b, 0xa7, 0x95, 0x1e, + 0xb3, 0x41, 0x26, 0x60, 0x1f, 0xe4, 0x97, 0xe9, 0x3b, 0x9c, 0xb6, 0x42, 0xbf, 0xbe, 0x13, + 0xad, 0x39, 0x68, 0x63, 0xd4, 0x99, 0xe7, 0x62, 0x46, 0x7f, 0x2e, 0x22, 0xb5, 0xc7, 0x84, + 0x28, 0xb7, 0x75, 0xe5, 0x23, 0x00, 0x77, 0x47, 0x33, 0x8b, 0x2b, 0x8c, 0x2c, 0xee, 0xe5, + 0x9c, 0xe1, 0x6f, 0x03, 0x47, 0x98, 0x92, 0xe1, 0x29, 0x57, 0x3e, 0x91, 0x4d, 0xa8, 0x41, + 0xd5, 0x8d, 0x43, 0xa3, 0x3a, 0x13, 0x31, 0xe9, 0xef, 0x7d, 0x96, 0xad, 0x37, 0x45, 0x34, + 0xe3, 0x86, 0xb6, 0x77, 0xcf, 0x3b, 0x43, 0x8a, 0x64, 0x2d, 0x4f, 0xc0, 0x4a, 0x8b, 0xf7, + 0x13, 0x26, 0xcd, 0xf2, 0xe6, 0xea, 0x25, 0x73, 0x9d, 0x89, 0xaa, 0xe3, 0x7a, 0xbd, 0x09, + 0xeb, 0x84, 0x81, 0xa3, 0x28, 0x21, 0xf6, 0xd6, 0x78, 0x98, 0x75, 0xc2, 0xd5, 0x64, 0x25, + 0xc3, 0x1e, 0xcf, 0x2b, 0xf1, 0x79, 0xd1, 0x25, 0xa0, 0x03, 0xc5, 0xd9, 0xb7, 0x91, 0x81, + 0x18, 0x27, 0x05, 0xa3, 0x57, 0x17, 0x0a, 0xc0, 0x31, 0x98, 0x5e, 0x1e, 0x18, 0x2e, 0xd6, + 0x3b, 0xe6, 0xc5, 0xe6, 0x00, 0xa7, 0x7f, 0xbb, 0xbf, 0x23, 0xac, 0x8d, 0x18, 0xc9, 0xed, + 0xb7, 0x9c, 0xee, 0x2b, 0x4e, 0x52, 0x95, 0x63, 0xa6, 0x01, 0x9e, 0xf4, 0xb4, 0x80, 0x5b, + 0xbd, 0x84, 0xb2, 0xc2, 0x7d, 0xae, 0x62, 0x77, 0x28, 0xa3, 0x9a, 0x3c, 0x3c, 0x91, 0x57, + 0x8f, 0xb4, 0xbc, 0x36, 0x22, 0x23, 0x75, 0x1e, 0x67, 0xc9, 0x39, 0xa5, 0xc3, 0xf8, 0x9a, + 0xb2, 0xea, 0x85, 0xc2, 0x7b, 0x70, 0xd1, 0xcc, 0x0d, 0x96, 0x97, 0x20, 0x70, 0xcb, 0xca, + 0xf8, 0x44, 0x0f, 0x8b, 0x25, 0x05, 0x65, 0x3d, 0xe6, 0x77, 0xab, 0x29, 0x76, 0x64, 0x6b, + 0xe7, 0x5a, 0x7b, 0xcc, 0xd3, 0xbb, 0xce, 0xf3, 0xa2, 0x50, 0x19, 0x09, 0x6f, 0x9e, 0x55, + 0x83, 0x28, 0xda, 0xa4, 0xf3, 0xaf, 0x6d, 0x45, 0x8d, 0x3b, 0x1a, 0x39, 0x50, 0x79, 0x85, + 0x8f, 0xf3, 0xd6, 0xbd, 0x6c, 0xbe, 0x81, 0x0d, 0xef, 0x36, 0x4a, 0x44, 0xbc, 0x2a, 0x3f, + 0xf5, 0x58, 0xf2, 0x9d, 0xd4, 0xdd, 0x1c, 0x60, 0x87, 0x03, 0x4b, 0x32, 0xe1, 0xcc, 0xaa, + 0xbc, 0xe7, 0xcf, 0xa2, 0x59, 0x51, 0x98, 0x5c, 0x9e, 0x00, 0xc6, 0x9d, 0xe2, 0xef, 0x5d, + 0x0c, 0x81, 0x81, 0xf4, 0x7b, 0x81, 0xf7, 0x47, 0xdb, 0x86, 0xe5, 0xed, 0x29, 0x15, 0x74, + 0xdc, 0xb8, 0xac, 0x53, 0xe2, 0x24, 0x07, 0x90, 0x0b, 0xe6, 0x77, 0xb9, 0x72, 0x31, 0x04, + 0x21, 0x6a, 0xd0, 0x57, 0x77, 0x62, 0xd6, 0xec, 0x7f, 0xb6, 0x94, 0x55, 0x1d, 0x72, 0xe5, + 0x35, 0x7d, 0x62, 0xfc, 0xde, 0xf4, 0x90, 0x05, 0x96, 0xef, 0xee, 0x13, 0x25, 0x9d, 0x3a, + 0x25, 0x57, 0xde, 0xa2, 0x81, 0x53, 0xd4, 0xb6, 0xd6, 0x5e, 0xf8, 0xef, 0x4c, 0xe2, 0xac, + 0xd9, 0x21, 0x01, 0x42, 0x3a, 0x38, 0x99, 0x7f, 0xeb, 0xe2, 0x58, 0x26, 0x61, 0x86, 0x2c, + 0x5b, 0xdd, 0xe0, 0xe6, 0x4d, 0xb5, 0x09, 0x56, 0x29, 0x65, 0xc7, 0xae, 0x80, 0x42, 0xa1, + 0x88, 0x74, 0x85, 0xf2, 0x1a, 0x48, 0x80, 0xfd, 0x13, 0x45, 0x79, 0x2e, 0x1f, 0x54, 0x62, + 0xd6, 0x3e, 0x6e, 0x2f, 0xa9, 0xc8, 0xd6, 0x3a, 0x32, 0x03, 0x10, 0x19, 0x02, 0xf0, 0xc8, + 0xe1, 0x7a, 0xca, 0x5c, 0xca, 0x2d, 0x0d, 0x20, 0x5a, 0x3b, 0x82, 0x69, 0xcc, 0x1a, 0xf7, + 0x17, 0x77, 0x75, 0x77, 0x8d, 0xb2, 0x64, 0x78, 0x5c, 0x5b, 0xc5, 0x20, 0x49, 0x4b, 0x20, + 0x39, 0x06, 0x26, 0x33, 0x42, 0x1f, 0x09, 0x65, 0x1b, 0xe1, 0xa0, 0x14, 0x67, 0xd3, 0x21, + 0x4e, 0x19, 0xc0, 0x20, 0xeb, 0x39, 0x92, 0xf7, 0x71, 0xa4, 0x4f, 0x1d, 0x22, 0xdd, 0x5b, + 0xdc, 0x70, 0x8f, 0x14, 0x14, 0xea, 0x34, 0x2d, 0x0f, 0x2a, 0x3e, 0xa8, 0x35, 0x6b, 0x49, + 0x7e, 0x75, 0x52, 0xc4, 0x47, 0xd1, 0xc5, 0x9a, 0xcc, 0x00, 0xec, 0x92, 0x29, 0x35, 0x52, + 0x99, 0x8c, 0x4e, 0xac, 0x2a, 0x60, 0x51, 0xd2, 0xf4, 0xa9, 0xeb, 0xdd, 0x26, 0x72, 0x2c, + 0x03, 0xd8, 0x69, 0x3a, 0xdd, 0x24, 0x29, 0xe7, 0x7d, 0xcf, 0x35, 0x94, 0x3d, 0x81, 0xdc, + 0x08, 0x60, 0xc1, 0x30, 0x35, 0xaa, 0xac, 0x4e, 0x19, 0x19, 0x7f, 0x86, 0xdd, 0x40, 0x01, + 0x48, 0x30, 0x2a, 0xbf, 0x79, 0x10, 0xc4, 0x5c, 0x73, 0x89, 0x26, 0xad, 0x3f, 0xcd, 0x92, + 0xff, 0x1e, 0x63, 0x9b, 0x03, 0xc4, 0xdb, 0xa5, 0x93, 0x8c, 0x58, 0xd0, 0xc0, 0x9c, 0x16, + 0x05, 0x17, 0x51, 0x02, 0x6e, 0x87, 0xb4, 0x36, 0xca, 0x7a, 0x14, 0xf2, 0x1e, 0xaf, 0xfc, + 0xa3, 0xe9, 0xb6, 0xec, 0xcc, 0x8c, 0x8a, 0x8f, 0x91, 0x65, 0x3f, 0xce, 0x0a, 0xa1, 0xe8, + 0xc9, 0x83, 0xfd, 0x3e, 0xeb, 0x5f, 0x29, 0x48, 0x25, 0x4c, 0x60, 0x69, 0x47, 0x93, 0x02, + 0x43, 0x16, 0x63, 0xff, 0x86, 0x9c, 0xe6, 0x0b, 0x24, 0xd3, 0xbf, 0x66, 0x8a, 0xb9, 0xd8, + 0x99, 0xd4, 0x52, 0x5f, 0x79, 0x28, 0x7b, 0xa0, 0x41, 0xb5, 0x10, 0xc7, 0x0f, 0x68, 0x3b, + 0x40, 0x48, 0x9c, 0x44, 0xd9, 0xf3, 0x6d, 0x56, 0xd3, 0x6d, 0x75, 0x62, 0xd0, 0xd7, 0x3a, + 0xb7, 0xd6, 0x87, 0x27, 0xdb, 0xb1, 0x69, 0x03, 0x5b, 0x38, 0x56, 0x76, 0x01, 0x5e, 0x7c, + 0xb4, 0x4f, 0xc9, 0x25, 0xad, 0x77, 0x3e, 0x7a, 0xc2, 0x8b, 0x36, 0x70, 0x29, 0xc5, 0x78, + 0x51, 0xd0, 0xc9, 0x05, 0x20, 0xca, 0xc9, 0x06, 0xf4, 0x26, 0xc7, 0x5a, 0xfd, 0x72, 0x69, + 0x12, 0x4d, 0x7e, 0x21, 0x14, 0xc8, 0x51, 0x1b, 0x33, 0x1e, 0xf1, 0xd4, 0x3a, 0xd5, 0xe7, + 0x58, 0xbe, 0x64, 0x5a, 0x24, 0x69, 0x59, 0x0f, 0x5d, 0x2b, 0xc7, 0x32, 0x1f, 0x73, 0x90, + 0x34, 0x60, 0x8f, 0xe9, 0xbf, 0xec, 0x96, 0x22, 0xc5, 0xd8, 0x9e, 0x9d, 0xd9, 0xed, 0x8a, + 0x0b, 0x63, 0xc2, 0x3e, 0xdb, 0x5a, 0x26, 0xa4, 0x9b, 0x7f, 0xc6, 0x81, 0xa3, 0x3e, 0xa3, + 0xc5, 0x6b, 0x87, 0xca, 0x36, 0xf7, 0xac, 0x40, 0x79, 0x12, 0x5e, 0x42, 0x6f, 0xe0, 0x18, + 0x37, 0xfc, 0x0d, 0xad, 0xef, 0xe2, 0x53, 0xf6, 0xdb, 0x60, 0x1c, 0x82, 0x4d, 0x24, 0x6a, + 0x19, 0xb6, 0xfd, 0x36, 0x21, 0xea, 0xa9, 0x83, 0x5b, 0x58, 0xb3, 0xc0, 0x0f, 0xbc, 0xdd, + 0x65, 0x58, 0x20, 0x36, 0x78, 0xe9, 0xab, 0x1e, 0x11, 0x3d, 0xea, 0xbc, 0xbd, 0xad, 0x99, + 0x8f, 0x32, 0x0c, 0xec, 0x5e, 0x7f, 0xb2, 0x0d, 0x61, 0x9f, 0x1a, 0x66, 0xfd, 0x6a, 0x73, + 0xd7, 0xb5, 0x1a, 0x0c, 0x2a, 0x18, 0xe5, 0xe7, 0xdd, 0x82, 0xe8, 0xad, 0xbe, 0xa4, 0x81, + 0x48, 0x5b, 0xc6, 0xb5, 0x35, 0xc4, 0x45, 0x99, 0x5d, 0x22, 0x1a, 0x43, 0x33, 0x3e, 0x4d, + 0x8f, 0x98, 0x6d, 0x91, 0xa7, 0xbb, 0x24, 0x04, 0x4c, 0x4f, 0x84, 0x21, 0x6e, 0x77, 0x39, + 0x07, 0x79, 0x79, 0xf0, 0x65, 0xc6, 0x3d, 0xf0, 0xbe, 0xbb, 0x77, 0x10, 0x53, 0x21, 0x1f, + 0xfa, 0xeb, 0xd3, 0xc9, 0x7f, 0xc9, 0x78, 0xbf, 0xe1, 0x05, 0x7f, 0x3e, 0xcd, 0x99, 0x01, + 0x9d, 0x47, 0x5b, 0xc2, 0x8c, 0xbc, 0x5e, 0x40, 0x89, 0x46, 0xec, 0xf6, 0x51, 0x79, 0x2c, + 0x14, 0xbb, 0x15, 0xf2, 0x7b, 0x52, 0x07, 0x4b, 0xaf, 0xc8, 0xb4, 0x38, 0x69, 0x32, 0xf5, + 0x6d, 0x9a, 0xd5, 0x75, 0x68, 0xa5, 0x11, 0xa9, 0xda, 0xf1, 0xaf, 0x3b, 0x89, 0xe5, 0x71, + 0x22, 0x6c, 0x44, 0x19, 0xd0, 0x6a, 0x31, 0x98, 0xa0, 0x4f, 0xc4, 0x73, 0xe6, 0x71, 0x15, + 0x20, 0x1c, 0x6e, 0xd1, 0xc8, 0x2f, 0xc0, 0x49, 0xbb, 0x1f, 0x33, 0x09, 0x14, 0xfe, 0xe3, + 0x17, 0xb7, 0xdd, 0x7b, 0x48, 0xdf, 0x0e, 0xcf, 0x56, 0x84, 0xc6, 0x8b, 0xa3, 0xdb, 0x82, + 0x22, 0xd6, 0x54, 0x86, 0xc4, 0x54, 0x85, 0x09, 0xc0, 0x0e, 0x1f, 0x1d, 0xa0, 0xf8, 0xbd, + 0x8d, 0xb2, 0xe3, 0xe5, 0x57, 0x3e, 0x1e, 0x94, 0x38, 0x0b, 0x3e, 0x4f, 0x6c, 0x86, 0x44, + 0xdb, 0x45, 0xde, 0xbf, 0xff, 0x88, 0x33, 0x6b, 0xe7, 0x87, 0xfe, 0x7f, 0xc7, 0x6e, 0xde, + 0x48, 0x8f, 0x13, 0x28, 0xa8, 0x7e, 0x0e, 0xa6, 0xdf, 0x38, 0xa6, 0x22, 0x60, 0x1a, 0x1b, + 0xf2, 0x6c, 0xca, 0xfe, 0xa3, 0xe9, 0xf5, 0x3b, 0x88, 0x81, 0x6c, 0xed, 0xb7, 0xc0, 0x3f, + 0x7a, 0x1c, 0xc2, 0x9e, 0x20, 0x4f, 0xd3, 0xdc, 0xec, 0x39, 0xae, 0x72, 0x72, 0x8b, 0x91, + 0x49, 0xd8, 0x98, 0x2c, 0xef, 0x97, 0x10, 0x77, 0xe0, 0x5c, 0xd2, 0x76, 0x36, 0xda, 0x29, + 0x67, 0xa1, 0xec, 0x1a, 0x0c, 0xb8, 0x23, 0xd7, 0x6d, 0xbb, 0x31, 0x0f, 0xe9, 0x48, 0xcf, + 0x1d, 0x4b, 0xff, 0xee, 0x9b, 0xe1, 0xeb, 0xb7, 0xf5, 0x45, 0xc5, 0x12, 0x58, 0xd6, 0xdd, + 0x0a, 0x95, 0xcc, 0x54, 0xbe, 0x6d, 0x24, 0x27, 0x4d, 0x25, 0x00, 0x36, 0x3d, 0xcd, 0x6d, + 0x8e, 0xe0, 0xc3, 0x00, 0x88, 0xa6, 0xeb, 0x81, 0x29, 0xfe, 0x89, 0x43, 0xe9, 0x1a, 0xdc, + 0xe0, 0x89, 0xc9, 0x0a, 0xb4, 0xe4, 0x84, 0xa4, 0x89, 0x81, 0x83, 0xdf, 0xcf, 0x0c, 0xa0, + 0x8b, 0x0b, 0x46, 0xe4, 0xa0, 0x6f, 0xe6, 0x6c, 0xb2, 0xeb, 0x4e, 0x7b, 0xce, 0xdd, 0xb6, + 0xb1, 0x14, 0x7b, 0x08, 0x12, 0xea, 0xf9, 0xa9, 0x99, 0x74, 0x56, 0x20, 0x2b, 0xf1, 0xf0, + 0x4d, 0x91, 0x2e, 0xfe, 0xf7, 0xc2, 0xb5, 0x8a, 0xdb, 0xaa, 0xa0, 0x31, 0xa6, 0x6e, 0x06, + 0xed, 0x91, 0xa8, 0xd7, 0xa8, 0xc3, 0x32, 0x41, 0x4b, 0xd8, 0xd4, 0x29, 0x57, 0xaa, 0x25, + 0x19, 0xd6, 0x10, 0xb0, 0x9f, 0x2f, 0xc2, 0x90, 0x5a, 0x18, 0x9a, 0xa1, 0x90, 0xb3, 0xe3, + 0x39, 0x80, 0x44, 0x47, 0xc7, 0x2a, 0xe0, 0x87, 0x9c, 0x56, 0x75, 0x59, 0x40, 0x45, 0xd6, + 0x0e, 0xa6, 0xe3, 0xe6, 0x02, 0xe4, 0x19, 0xbd, 0xe8, 0x6d, 0xd1, 0x78, 0xe3, 0x4f, 0x7c, + 0x03, 0x1f, 0x8b, 0x53, 0xa3, 0xcf, 0xe7, 0x00, 0xad, 0x4c, 0x87, 0x06, 0x51, 0xf9, 0x52, + 0x23, 0xcc, 0xbe, 0x52, 0x8f, 0xc4, 0xce, 0x15, 0x48, 0x30, 0x35, 0xce, 0x3d, 0x71, 0x65, + 0xcf, 0x56, 0x82, 0xb0, 0x57, 0x36, 0x45, 0x6c, 0x52, 0xda, 0xab, 0x26, 0x17, 0xff, 0x4e, + 0xba, 0x92, 0x8a, 0x4d, 0x9e, 0x16, 0x61, 0x0b, 0x42, 0xfc, 0x7c, 0x32, 0x9e, 0x93, 0x13, + 0x45, 0x4f, 0x08, 0x79, 0xd4, 0xcc, 0x7c, 0x9c, 0x5d, 0x9a, 0x34, 0x3a, 0x1d, 0x76, 0x52, + 0x25, 0x5c, 0x39, 0xf3, 0xee, 0xfd, 0xb5, 0x88, 0x96, 0x58, 0xc0, 0x23, 0x15, 0x7f, 0x01, + 0x0d, 0x27, 0xb8, 0x66, 0xa2, 0xd9, 0x3d, 0xf0, 0x72, 0xc2, 0xbe, 0x7f, 0xd6, 0x06, 0x80, + 0x17, 0x80, 0x75, 0xc3, 0x62, 0x08, 0x2e, 0x6d, 0x23, 0x78, 0xef, 0x60, 0x78, 0xe4, 0x34, + 0x2f, 0xa5, 0xb2, 0xb4, 0xf7, 0x00, 0x03, 0xd6, 0x40, 0xbb, 0xfb, 0xd5, 0x89, 0xb9, 0x3c, + 0xab, 0x2d, 0x46, 0x8d, 0x23, 0x16, 0xb0, 0x89, 0x56, 0x5b, 0xbe, 0xa2, 0x71, 0x7f, 0x94, + 0x78, 0xb4, 0xf7, 0x7d, 0x8c, 0xb0, 0xe8, 0x05, 0x78, 0xa1, 0x24, 0x5d, 0xd7, 0x04, 0x4e, + 0x7d, 0xc1, 0xae, 0x5d, 0x24, 0x80, 0x54, 0xb4, 0x79, 0xbe, 0x44, 0x52, 0x2e, 0x47, 0x10, + 0xf6, 0x99, 0x04, 0x68, 0x73, 0x68, 0x1f, 0x65, 0x38, 0xd8, 0x63, 0xa5, 0xb5, 0x3f, 0xfe, + 0x1c, 0x27, 0x32, 0xca, 0x8b, 0x08, 0x31, 0x48, 0xfb, 0xf2, 0xb4, 0x24, 0x58, 0x04, 0x07, + 0x82, 0x88, 0x05, 0x11, 0xf9, 0x2b, 0x27, 0x2b, 0x7b, 0x3e, 0xea, 0xa9, 0x6d, 0x39, 0x50, + 0x41, 0xea, 0x2c, 0xa7, 0xd6, 0xd9, 0x9d, 0xfd, 0x21, 0x56, 0xa2, 0x50, 0xd5, 0x21, 0xcc, + 0xcc, 0x09, 0xa7, 0x33, 0x9d, 0xa1, 0xca, 0xa6, 0xb0, 0x99, 0xff, 0x86, 0x3d, 0x90, 0xdd, + 0x9f, 0x41, 0xc6, 0x6e, 0xd9, 0x55, 0x02, 0xbc, 0x71, 0x90, 0x06, 0xfd, 0x4a, 0x92, 0x01, + 0x1d, 0x36, 0x4c, 0x2f, 0x4f, 0xc8, 0xcc, 0xf9, 0xcb, 0xdb, 0xe3, 0xb5, 0xef, 0xd5, 0x06, + 0x26, 0x85, 0x4f, 0x40, 0x0e, 0xa1, 0x76, 0x9e, 0xea, 0xc7, 0x9a, 0x54, 0xd7, 0xfe, 0xec, + 0xc3, 0x7a, 0xbe, 0x46, 0x2f, 0x82, 0xa9, 0xa0, 0xfc, 0x1c, 0x10, 0xf0, 0xcc, 0x2a, 0x50, + 0x83, 0xe2, 0x01, 0x37, 0x73, 0x70, 0xca, 0x8f, 0x3f, 0x0b, 0x72, 0x6c, 0xc4, 0x8c, 0x0a, + 0x94, 0xe5, 0x98, 0x1e, 0xac, 0xa9, 0x01, 0x37, 0xba, 0x2b, 0x6e, 0xaf, 0xa8, 0x9b, 0x1a, + 0x91, 0x70, 0xbe, 0x15, 0xb9, 0x2d, 0x3f, 0x3d, 0x48, 0x3e, 0x1a, 0x1b, 0xf2, 0x76, 0x67, + 0x41, 0x8d, 0x80, 0x5a, 0x47, 0x0f, 0xe9, 0xcd, 0x8b, 0x0b, 0xcf, 0x3d, 0x6c, 0x75, 0x88, + 0x27, 0x1f, 0x64, 0x22, 0x7c, 0x70, 0xd4, 0x49, 0x06, 0x7d, 0x03, 0x25, 0xeb, 0x91, 0x5a, + 0x81, 0xe2, 0x6d, 0xb9, 0x47, 0xe9, 0xbb, 0x27, 0xbb, 0x09, 0x38, 0x13, 0xca, 0x81, 0xe5, + 0x15, 0x19, 0x2f, 0x34, 0xea, 0xf8, 0x6a, 0x9f, 0xc6, 0x76, 0x1f, 0x8c, 0x5f, 0xa2, 0xc2, + 0xf7, 0x62, 0x03, 0xc0, 0x4d, 0xa5, 0x94, 0x67, 0xce, 0x54, 0x57, 0xf2, 0xde, 0x03, 0x78, + 0x86, 0xec, 0xc2, 0xaf, 0x9a, 0xe1, 0xf8, 0xb3, 0xc7, 0x16, 0xfe, 0x56, 0x42, 0xd3, 0xf4, + 0xbc, 0x3a, 0xaa, 0xdf, 0xb9, 0x42, 0x62, 0x2a, 0x20, 0x3e, 0x71, 0x40, 0x7f, 0xc5, 0x49, + 0x0f, 0xee, 0xe3, 0x83, 0x36, 0x4b, 0xaf, 0xb5, 0x05, 0x8f, 0x55, 0x5d, 0xf5, 0x93, 0xff, + 0x31, 0x6a, 0x62, 0xf4, 0xeb, 0x8d, 0xde, 0xe3, 0xe4, 0x8d, 0x08, 0xf9, 0xe1, 0x15, 0x66, + 0xc2, 0x91, 0x9e, 0x4e, 0xda, 0xe5, 0x8d, 0xc8, 0x4a, 0x46, 0x8d, 0xc2, 0x55, 0x29, 0x66, + 0x9a, 0x9f, 0x4a, 0x9e, 0x86, 0x9e, 0xdb, 0x5c, 0x8e, 0xd0, 0xc9, 0x1c, 0xc7, 0xd5, 0x6c, + 0xed, 0x84, 0x08, 0x6f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x87, + 0x68, 0xc7, 0xd4, 0x84, 0x6c, 0x02, 0xbf, 0xe3, 0x47, 0x21, 0xad, 0xaa, 0xd0, 0x0b, 0x4b, + 0x6b, 0xaa, 0xda, 0x20, 0x39, 0xff, 0x05, 0xaf, 0xa1, 0xb9, 0xdf, 0xa2, 0x92, 0x0c, 0x3a, + 0x8a, 0x61, 0xa2, 0xb2, 0xa8, 0x36, 0xd3, 0xf1, 0x80, 0x23, 0xad, 0x16, 0x5c, 0x25, 0x1b, + 0x3e, 0x97, 0x21, 0x4b, 0xed, 0xa5, 0xa1, 0xe8, 0x85, 0xd2, 0x4a, 0x55, 0xa6, 0x14, 0xcc, + 0xee, 0x3e, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, + 0x84, 0xf5, 0x89, 0xf5, 0x3d, 0xbe, 0x67, 0xb1, 0x56, 0xb4, 0x76, 0xec, 0x6c, 0x55, 0x64, + 0x73, 0xc7, 0xf5, 0xa5, 0x81, 0x75, 0x1f, 0x92, 0x5e, 0x0a, 0x79, 0x77, 0xd8, 0xea, 0x8a, + 0x01, 0xfb, 0x93, 0xf0, 0xf2, 0xff, 0xf1, 0x7a, 0x55, 0x9d, 0xd6, 0xb5, 0x2a, 0x5d, 0xf7, + 0x9d, 0xfd, 0x35, 0xed, 0x51, 0x20, 0x74, 0x18, 0xd6, 0xec, 0x1c, 0x8e, 0xb8, 0x57, 0xb8, + 0x94, 0x4b, 0x17, 0xd0, 0x8d, 0xf0, 0xfa, 0xf8, 0x81, 0x0e, 0x72, 0x04, 0xfc, 0x01, 0x2c, + 0x39, 0x50, 0x92, 0x30, 0x14, 0xa9, 0x34, 0xc9, 0x2d, 0x38, 0x0c, 0x7f, 0x90, 0xcb, 0x16, + 0x96, 0x7f, 0x0a, 0x97, 0x84, 0x49, 0x4a, 0x33, 0x5f, 0x3f, 0xed, 0x47, 0x6c, 0x58, 0x49, + 0x3e, 0x9c, 0x83, 0x74, 0x15, 0xff, 0x4f, 0xbb, 0x0b, 0x0f, 0xff, 0x46, 0xca, 0x35, 0x57, + 0xe8, 0x31, 0x8b, 0x9c, 0x77, 0xd7, 0x01, 0x73, 0x63, 0x13, 0x06, 0x0b, 0x28, 0x51, 0x89, + 0x20, 0xc7, 0x0e, 0xae, 0x19, 0x82, 0xfa, 0x7a, 0x40, 0x43, 0xce, 0x37, 0x03, 0xe4, 0xd4, + 0xd5, 0x84, 0x0e, 0xb8, 0xd8, 0x7c, 0xc5, 0xdc, 0xbe, 0x5f, 0xc9, 0xea, 0xce, 0x26, 0x79, + 0xe5, 0x4b, 0x58, 0x8f, 0xf5, 0xe4, 0x78, 0xd9, 0x76, 0x6a, 0x63, 0xc2, 0xc6, 0x0e, 0x6b, + 0x96, 0x8e, 0xe3, 0xc8, 0xe0, 0x11, 0x37, 0xda, 0x48, 0x07, 0x09, 0x49, 0x66, 0x56, 0xa9, + 0x09, 0xc2, 0xbd, 0x38, 0x1b, 0xbe, 0x76, 0x88, 0x74, 0x7f, 0xe7, 0xce, 0xf4, 0x95, 0x56, + 0xed, 0x72, 0x6f, 0x6f, 0x12, 0x41, 0xfe, 0xf4, 0x80, 0x02, 0x7d, 0xc6, 0x77, 0x1d, 0xb3, + 0x52, 0x9c, 0xa4, 0xad, 0x55, 0x85, 0x28, 0x13, 0x67, 0x21, 0xda, 0xbf, 0x2c, 0xe7, 0x75, + 0xdb, 0x8f, 0x39, 0x9e, 0x83, 0x4f, 0xaa, 0x05, 0x36, 0xd7, 0xd4, 0x16, 0xff, 0xcc, 0xf6, + 0x0b, 0x4e, 0x23, 0xfd, 0x8b, 0x5d, 0x2a, 0xb3, 0x61, 0x68, 0xe0, 0x42, 0x14, 0xf3, 0x36, + 0x5c, 0x21, 0xb2, 0x15, 0x7f, 0x6b, 0x18, 0x42, 0xfb, 0x1d, 0x76, 0x79, 0x84, 0x5d, 0x27, + 0x6f, 0x06, 0xb7, 0x4e, 0xfe, 0x35, 0x14, 0xdf, 0x0c, 0xe3, 0xc1, 0x7d, 0x54, 0x9d, 0xe9, + 0xa5, 0x14, 0x5d, 0x4f, 0x46, 0xa4, 0xc6, 0x5d, 0x6c, 0x67, 0x00, 0xfd, 0xf6, 0xc3, 0x3a, + 0xf9, 0x0c, 0x1e, 0x86, 0x58, 0x5d, 0xd9, 0x6d, 0xe4, 0xc3, 0x1f, 0xa4, 0x0d, 0x02, 0x54, + 0xc0, 0xc4, 0x9a, 0x10, 0x06, 0x1f, 0x96, 0x6c, 0x0c, 0xfe, 0xd6, 0x28, 0x4f, 0x6a, 0xe2, + 0x00, 0x88, 0x6a, 0xa2, 0x01, 0xe4, 0x8b, 0x26, 0x38, 0x3d, 0x4f, 0x6b, 0xba, 0x59, 0x6e, + 0xa9, 0xbb, 0x2d, 0xa4, 0xe7, 0x9d, 0xc9, 0x3e, 0xbf, 0x74, 0xa1, 0x61, 0x6e, 0xa1, 0x3a, + 0x9d, 0x22, 0x92, 0x63, 0x56, 0x81, 0xf1, 0x21, 0xae, 0x87, 0xef, 0x72, 0x2b, 0xb4, 0xe2, + 0x1a, 0x20, 0x52, 0x2c, 0xff, 0x5a, 0xdd, 0x2d, 0x92, 0x19, 0x76, 0x13, 0x02, 0xd0, 0x1c, + 0xf8, 0xd6, 0xf4, 0x49, 0x81, 0x0c, 0xbe, 0x60, 0xcf, 0xb4, 0xff, 0x70, 0x54, 0x88, 0xc6, + 0x18, 0xa9, 0x6b, 0x79, 0x9e, 0x15, 0xce, 0x36, 0x40, 0xa8, 0xc0, 0x66, 0x92, 0x28, 0xa2, + 0x40, 0x9e, 0xd6, 0x4f, 0x45, 0x15, 0x77, 0x6a, 0x02, 0xb6, 0x78, 0x17, 0x2a, 0x9b, 0xd0, + 0x4f, 0x78, 0xc1, 0x99, 0xdd, 0x74, 0x37, 0xd5, 0x63, 0xb3, 0xdb, 0x07, 0x6d, 0x3c, 0xe8, + 0x75, 0x67, 0x9a, 0xa1, 0x64, 0xac, 0x39, 0x63, 0x64, 0x56, 0x05, 0xa8, 0x6d, 0x7c, 0xf1, + 0xbe, 0x63, 0xe0, 0x49, 0x71, 0x08, 0x71, 0x52, 0x05, 0x21, 0xc2, 0xca, 0x87, 0x7f, 0xb4, + 0x8e, 0xd7, 0x4d, 0x49, 0xab, 0x17, 0xc9, 0x06, 0x03, 0xd2, 0x20, 0x07, 0xc1, 0x56, 0xe2, + 0x5c, 0x09, 0xa1, 0xc3, 0x20, 0x09, 0xe9, 0x50, 0xb3, 0x5b, 0x98, 0xfa, 0xd1, 0x79, 0x58, + 0x3c, 0x67, 0x3a, 0x6f, 0x19, 0x59, 0x9d, 0x9e, 0x92, 0x22, 0xae, 0x25, 0x5f, 0x59, 0x4d, + 0x68, 0x86, 0x1c, 0xed, 0xda, 0x28, 0xd7, 0xf9, 0x75, 0xd4, 0x67, 0xda, 0xba, 0x08, 0x1c, + 0xb2, 0xec, 0x22, 0x95, 0x77, 0x0a, 0xcd, 0x0f, 0xdc, 0x51, 0xfe, 0xc2, 0x3b, 0x6e, 0x44, + 0x82, 0xbe, 0x8e, 0xee, 0xaf, 0xeb, 0xdd, 0xb2, 0x97, 0x4c, 0x78, 0x9a, 0xd3, 0xb5, 0x31, + 0x78, 0x3f, 0x11, 0xfa, 0x9f, 0x1b, 0xec, 0xeb, 0x8e, 0xa1, 0x1e, 0xb4, 0x36, 0x50, 0x85, + 0xd8, 0x7b, 0x8c, 0x92, 0x89, 0x5e, 0xba, 0xbe, 0x52, 0x7a, 0x41, 0x00, 0x9e, 0x28, 0xd6, + 0xee, 0x75, 0xfa, 0x3d, 0xac, 0x57, 0xd7, 0xbf, 0x12, 0xaa, 0xad, 0xe8, 0x32, 0xef, 0x6d, + 0x95, 0xf6, 0x40, 0x55, 0xe1, 0xeb, 0xa1, 0xfa, 0x2b, 0xea, 0xc6, 0x60, 0xca, 0x97, 0x05, + 0x49, 0x4b, 0x04, 0x75, 0xc8, 0xc3, 0x4b, 0xcc, 0x47, 0xf1, 0x0a, 0xcd, 0x02, 0x3c, 0x5e, + 0x62, 0x1b, 0x21, 0x08, 0xc1, 0xae, 0x6b, 0xdc, 0xa9, 0xd8, 0xb3, 0xda, 0x04, 0xa5, 0x49, + 0xaa, 0x1a, 0x63, 0xe8, 0x7f, 0xe8, 0x4e, 0x87, 0x5b, 0xe4, 0x24, 0x54, 0x02, 0x64, 0x6e, + 0x21, 0x51, 0xe7, 0x89, 0xf5, 0x38, 0x5a, 0xd4, 0x65, 0x23, 0xd0, 0xea, 0xf2, 0x52, 0x5d, + 0x02, 0xdb, 0xa3, 0xb5, 0x62, 0x3d, 0x7e, 0x2b, 0xa3, 0x15, 0x1f, 0xff, 0xca, 0x15, 0x80, + 0x92, 0xa5, 0x2d, 0x8c, 0xdc, 0x3a, 0xec, 0xee, 0x5c, 0x66, 0x3f, 0xf1, 0xa5, 0xda, 0x3e, + 0x68, 0x87, 0xde, 0x40, 0x50, 0x96, 0x33, 0x33, 0xeb, 0xa2, 0xbc, 0x59, 0xce, 0x10, 0xd8, + 0x9b, 0x3c, 0x90, 0x70, 0xbb, 0x63, 0xf8, 0xaf, 0x2d, 0xb5, 0x4b, 0xe2, 0x45, 0x54, 0x89, + 0x06, 0x48, 0xdb, 0x11, 0x87, 0x0c, 0xf7, 0x31, 0x53, 0x4a, 0x03, 0xb2, 0xaa, 0xbf, 0x4d, + 0x04, 0x76, 0xac, 0x41, 0xf4, 0x14, 0x06, 0xa8, 0xb2, 0xfb, 0xd0, 0x51, 0x3c, 0x2e, 0xde, + 0x4a, 0x1a, 0xb0, 0xcc, 0x93, 0x08, 0x64, 0xb8, 0xb7, 0xc1, 0x82, 0x53, 0x17, 0x9e, 0x77, + 0x23, 0x92, 0xe0, 0xc7, 0xea, 0xf4, 0x73, 0xc9, 0x66, 0xd5, 0x87, 0xe6, 0xba, 0xcd, 0x00, + 0xe3, 0xe6, 0x81, 0x19, 0xd3, 0x72, 0xde, 0xa1, 0x95, 0xb2, 0x86, 0xef, 0x68, 0xe1, 0x9b, + 0x06, 0xc2, 0x0c, 0xad, 0x46, 0xbe, 0xeb, 0x56, 0x01, 0x98, 0x8e, 0x27, 0x62, 0xc7, 0x1d, + 0x7c, 0xea, 0x86, 0xa6, 0xc4, 0x98, 0xe1, 0xed, 0x0d, 0x18, 0x6c, 0x40, 0xe8, 0xda, 0x6c, + 0x60, 0xb8, 0x97, 0x33, 0x2d, 0xa6, 0xa0, 0xb0, 0xb2, 0x95, 0x0a, 0x3f, 0x88, 0x3d, 0x1a, + 0x12, 0x65, 0x0f, 0x6a, 0x3c, 0x89, 0xc1, 0xdd, 0x59, 0x28, 0xfe, 0xe2, 0x88, 0xd7, 0x30, + 0xfb, 0xcc, 0x47, 0x02, 0x76, 0xac, 0xee, 0x3a, 0xa4, 0x5d, 0xb6, 0x65, 0xe3, 0x56, 0x26, + 0x6b, 0xef, 0x17, 0x98, 0x23, 0x57, 0x7f, 0x7f, 0x7d, 0xab, 0xd9, 0x4a, 0x5a, 0xa7, 0x58, + 0x7b, 0x4c, 0xc0, 0x3b, 0xef, 0xec, 0x5e, 0x5e, 0x9b, 0xb2, 0x41, 0xab, 0x28, 0x3f, 0xd0, + 0xbc, 0xbc, 0x5f, 0xf1, 0x78, 0xd1, 0x9c, 0xde, 0x30, 0x1c, 0x4a, 0xac, 0x4a, 0xfa, 0x03, + 0x65, 0x00, 0x01, 0x4f, 0xec, 0x61, 0x09, 0xfe, 0x3c, 0x23, 0x37, 0xb7, 0x70, 0xec, 0xad, + 0x67, 0x61, 0x89, 0x2b, 0xc7, 0x2e, 0xad, 0x06, 0x58, 0x4e, 0x44, 0x58, 0x66, 0x86, 0x16, + 0x58, 0x7b, 0x28, 0x00, 0x50, 0xe2, 0x62, 0xce, 0xcc, 0xe6, 0x54, 0x91, 0xe6, 0xa9, 0xc9, + 0x3b, 0xbb, 0x26, 0x4c, 0xef, 0x27, 0xd7, 0xf2, 0x47, 0x05, 0x88, 0x16, 0xc6, 0x02, 0x6a, + 0xdf, 0x8b, 0x04, 0x0e, 0xcb, 0x3b, 0xa5, 0x59, 0x20, 0x9f, 0xcc, 0x7c, 0x24, 0x82, 0x7c, + 0x46, 0x02, 0x21, 0x54, 0x1a, 0x7b, 0xcd, 0x97, 0xe8, 0x7d, 0x1e, 0xc7, 0xb9, 0x6e, 0xfb, + 0x31, 0xa4, 0x8f, 0x42, 0x96, 0x54, 0xca, 0xcb, 0x12, 0xc8, 0x0c, 0x94, 0xb4, 0x3a, 0x8c, + 0xab, 0x2f, 0xb4, 0x61, 0xcc, 0xfa, 0xe3, 0x13, 0x56, 0xb8, 0x9d, 0x47, 0x6d, 0x13, 0x9c, + 0xfc, 0x03, 0x98, 0xa2, 0x9a, 0x6b, 0x40, 0xcd, 0xa8, 0xa3, 0xcc, 0x61, 0x9e, 0xa3, 0xe8, + 0x24, 0xa4, 0xa5, 0x85, 0x4a, 0x93, 0xf0, 0x3a, 0x67, 0x86, 0x32, 0x5c, 0xde, 0x80, 0x6b, + 0x08, 0x66, 0xec, 0xe6, 0x35, 0x83, 0xc4, 0x5f, 0x51, 0x28, 0x84, 0xf0, 0x7a, 0x95, 0x96, + 0xb5, 0x5f, 0x84, 0xc1, 0xce, 0x36, 0xb4, 0x50, 0xd7, 0xd9, 0xce, 0x07, 0xcf, 0x54, 0x52, + 0x46, 0x67, 0x19, 0x1e, 0xa2, 0xda, 0x40, 0x7d, 0x0a, 0x47, 0x81, 0xf2, 0xa8, 0xdc, 0x19, + 0x80, 0xda, 0x32, 0xed, 0x54, 0x5b, 0xc5, 0x83, 0x07, 0xc2, 0xe5, 0x61, 0xf0, 0x31, 0x19, + 0xd1, 0xe2, 0x24, 0x64, 0x66, 0xd9, 0x6c, 0xa6, 0x30, 0x26, 0x5f, 0x49, 0x05, 0x0b, 0xc1, + 0x1b, 0x40, 0x55, 0xe6, 0xb4, 0x71, 0x62, 0xe9, 0x2c, 0x9d, 0xb7, 0x7e, 0xc0, 0x5b, 0x70, + 0x6d, 0x40, 0x6a, 0x4c, 0x8c, 0xc1, 0xdd, 0x1c, 0xca, 0x1c, 0x5d, 0x9d, 0xc0, 0x31, 0x9d, + 0x14, 0x94, 0xc4, 0x00, 0x88, 0xfd, 0x64, 0x17, 0xba, 0xd1, 0x28, 0x83, 0x63, 0x1f, 0x27, + 0xaa, 0x61, 0xd0, 0xbd, 0xff, 0x6a, 0x7d, 0xa2, 0x03, 0xc8, 0x41, 0x8d, 0x44, 0x14, 0x16, + 0x6e, 0x47, 0xd6, 0xb7, 0x79, 0xc9, 0xbf, 0x1c, 0x84, 0x64, 0xd8, 0x22, 0x1e, 0x21, 0x51, + 0xaf, 0x63, 0x4f, 0x3e, 0x7a, 0x9c, 0x75, 0xf2, 0xd5, 0xe6, 0x6a, 0xc0, 0xb0, 0x80, 0xa9, + 0xc3, 0x19, 0x6c, 0x64, 0x37, 0x17, 0x11, 0x00, 0xd1, 0x09, 0xfb, 0xe0, 0x4e, 0x7c, 0x11, + 0x6c, 0xbc, 0xbc, 0x46, 0x32, 0x8a, 0xea, 0x1b, 0x4c, 0xdc, 0x0e, 0x8d, 0x6a, 0xf4, 0x23, + 0xb9, 0xa8, 0xda, 0x48, 0xf3, 0xc2, 0x38, 0x40, 0x9f, 0xaa, 0x01, 0xb3, 0x2a, 0x6d, 0x9b, + 0x16, 0xdd, 0x5f, 0xd4, 0x13, 0xaa, 0x28, 0xff, 0x35, 0x45, 0xd9, 0x98, 0x82, 0xd6, 0x8d, + 0x4b, 0x44, 0xeb, 0x0d, 0x9c, 0x5a, 0x71, 0xb3, 0x3d, 0xa9, 0x4b, 0x65, 0xc4, 0xd5, 0x18, + 0x5e, 0x84, 0x7f, 0x35, 0x60, 0xe7, 0x80, 0xdf, 0x75, 0x27, 0x01, 0x61, 0xf1, 0xdc, 0x9b, + 0xdf, 0xd3, 0x94, 0xb4, 0x8a, 0xe3, 0x4c, 0x63, 0x09, 0x6a, 0x55, 0x3d, 0x93, 0x0d, 0x75, + 0xd9, 0xc4, 0x8b, 0x8d, 0xd6, 0x39, 0x1b, 0x0f, 0x4e, 0xe6, 0xbf, 0x86, 0x43, 0xb4, 0xa3, + 0x5f, 0x40, 0xf6, 0xac, 0x65, 0xbd, 0x33, 0xa5, 0x93, 0x4f, 0x22, 0x32, 0xa1, 0x55, 0x0a, + 0x74, 0xbc, 0x81, 0x1f, 0xb8, 0x5e, 0xc5, 0x5a, 0x78, 0xa8, 0xb6, 0x1a, 0x36, 0xd3, 0x88, + 0x29, 0x7c, 0x77, 0xb1, 0x61, 0x00, 0xc2, 0xd7, 0x2c, 0x10, 0xad, 0x2f, 0xf1, 0xd3, 0x10, + 0x4b, 0x33, 0x87, 0xda, 0x46, 0x0c, 0x3e, 0x89, 0x19, 0x67, 0x55, 0x21, 0xdd, 0xf2, 0xed, + 0x8c, 0xe8, 0x86, 0x0f, 0x22, 0x30, 0xb4, 0x61, 0xcd, 0x88, 0x89, 0x0f, 0x25, 0x94, 0x2f, + 0x2b, 0x7d, 0xcc, 0xf1, 0x3b, 0x50, 0x0c, 0xbd, 0x86, 0x78, 0x56, 0xe9, 0x62, 0xc4, 0x47, + 0xbb, 0xa5, 0xbc, 0xe6, 0x44, 0xf7, 0x45, 0x87, 0x6e, 0xa8, 0xfb, 0x6e, 0x00, 0xbf, 0x10, + 0x00, 0x7d, 0x7f, 0xaf, 0x2e, 0x43, 0x32, 0x20, 0xf1, 0x90, 0x3b, 0xf2, 0x4f, 0x28, 0xd7, + 0x2f, 0x77, 0x5f, 0xaf, 0x63, 0x15, 0x09, 0xfb, 0xce, 0xbe, 0x06, 0x84, 0x11, 0xda, 0x68, + 0x31, 0xd8, 0xb6, 0x52, 0xeb, 0x0f, 0x89, 0x92, 0x37, 0x30, 0x4d, 0x6b, 0x7b, 0x76, 0xdb, + 0x20, 0x00, 0x37, 0x8d, 0x46, 0xf3, 0x1e, 0x26, 0x4e, 0x3c, 0xbc, 0xbd, 0xdb, 0xd2, 0xb2, + 0xae, 0xaa, 0x2f, 0xbc, 0x5a, 0x29, 0xd0, 0x52, 0x21, 0xcc, 0xef, 0xf5, 0xa3, 0x5d, 0xbc, + 0x1d, 0xd7, 0x0f, 0x5a, 0x04, 0x5f, 0x1c, 0x86, 0x30, 0xd5, 0xdd, 0x22, 0x8c, 0xc1, 0xdb, + 0xec, 0x06, 0xf1, 0xd6, 0x35, 0xa1, 0xde, 0x31, 0xdf, 0x35, 0x5f, 0x92, 0xd1, 0xf0, 0xe3, + 0xf8, 0x36, 0xf0, 0xf4, 0x00, 0x8d, 0x49, 0xe9, 0xee, 0xc0, 0x06, 0x2e, 0xd0, 0x9b, 0x13, + 0xa6, 0x45, 0x4d, 0xbf, 0xd5, 0x2e, 0x43, 0x78, 0x71, 0x83, 0x6b, 0x81, 0xb5, 0x86, 0x71, + 0x7d, 0x7b, 0xac, 0xba, 0x21, 0x5b, 0x83, 0xbc, 0xa4, 0x9f, 0x4a, 0x40, 0xc0, 0x00, 0x52, + 0x84, 0x11, 0x59, 0xb8, 0xed, 0xeb, 0x45, 0xc5, 0xdc, 0x2c, 0x29, 0xa6, 0x3d, 0xb7, 0x8e, + 0x12, 0x35, 0x67, 0xf9, 0x4c, 0x3a, 0x09, 0x57, 0x4d, 0x90, 0xa1, 0xc5, 0xde, 0x03, 0x44, + 0x3f, 0xfb, 0x9e, 0x5e, 0x7f, 0x78, 0x9e, 0x12, 0x80, 0x10, 0x2d, 0xa6, 0xcd, 0xc6, 0x9a, + 0x1a, 0x3d, 0x58, 0xd6, 0x3f, 0x7d, 0x98, 0x8a, 0x07, 0x63, 0x42, 0x6e, 0xab, 0x8f, 0x9a, + 0x11, 0x44, 0x24, 0x13, 0x85, 0x29, 0xf6, 0x77, 0x3f, 0x4c, 0x42, 0x93, 0xc4, 0x7c, 0x5b, + 0x83, 0x11, 0xb8, 0xd0, 0x18, 0x2a, 0xd0, 0xd4, 0x9e, 0x82, 0x39, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x5f, 0xd2, 0x81, 0x52, 0x14, 0x44, 0x95, 0x7b, 0xab, 0x12, 0xf4, 0x71, 0x04, 0xf5, + 0xff, 0x29, 0x56, 0x20, 0xfd, 0x17, 0xdb, 0xdb, 0x79, 0x9f, 0x81, 0x3f, 0x97, 0x3e, 0x1e, + 0xae, 0xd4, 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xe0, 0x1c, 0x19, + 0xa4, 0xc0, 0xb6, 0xd8, 0x9d, 0x27, 0x68, 0x7e, 0xe2, 0x04, 0xa5, 0xbc, 0x6b, 0x5e, 0xa4, + 0x2a, 0xbd, 0xf1, 0xf0, 0x52, 0x29, 0xd7, 0x33, 0x1d, 0x10, 0xdc, 0x42, 0x88, 0xe5, 0x13, + 0xa6, 0xb0, 0xe8, 0x89, 0x4c, 0xf2, 0xdc, 0x34, 0x07, 0x0a, 0xf4, 0x6e, 0xb9, 0xb7, 0x5f, + 0x80, 0xf8, 0xf8, 0x91, 0x59, 0x6b, 0x4b, 0xd4, 0x07, 0x85, 0xcb, 0x3a, 0xd0, 0x39, 0x88, + 0x20, 0x1b, 0x99, 0xf7, 0x80, 0x52, 0x4a, 0xd2, 0x52, 0xcd, 0x21, 0x27, 0xe7, 0x89, 0x84, + 0x7c, 0x85, 0x57, 0x66, 0x2f, 0x80, 0x89, 0x3f, 0xc9, 0xf4, 0xc3, 0xe2, 0x81, 0xb8, 0xcf, + 0x21, 0xe6, 0xc0, 0xe7, 0x96, 0x8e, 0x39, 0x9e, 0xda, 0xe0, 0xfe, 0x6c, 0x8d, 0x34, 0xb3, + 0xeb, 0xa5, 0x1c, 0x44, 0xf5, 0xa4, 0x0f, 0x35, 0x89, 0xca, 0x68, 0x2c, 0x5c, 0x37, 0x88, + 0x3d, 0xde, 0xc3, 0x9f, 0x1b, 0xd8, 0xb9, 0xc3, 0x3b, 0x52, 0x49, 0xf5, 0xf2, 0x0f, 0xec, + 0x00, 0xc0, 0xa0, 0xb2, 0x14, 0xe6, 0x7e, 0x81, 0x2f, 0xdf, 0x95, 0x50, 0x4f, 0x0b, 0xbe, + 0x50, 0xa4, 0xc8, 0xf8, 0x5a, 0xc9, 0xd0, 0x00, 0x93, 0x2e, 0x32, 0x5a, 0xac, 0xce, 0x52, + 0x5b, 0xfb, 0x4d, 0x2e, 0xac, 0x7a, 0xb1, 0x23, 0x13, 0x95, 0x1a, 0x38, 0x0d, 0xe4, 0x03, + 0xb4, 0x3f, 0xcf, 0x0f, 0x87, 0x3e, 0x04, 0xa8, 0x89, 0x95, 0x3a, 0x12, 0x5a, 0xa5, 0x05, + 0xf0, 0x5f, 0xa7, 0x96, 0x51, 0x3a, 0xeb, 0x72, 0xe0, 0xf0, 0x58, 0x0c, 0x62, 0xf6, 0xe1, + 0x2b, 0xbe, 0xe4, 0x2c, 0xe8, 0x20, 0xe9, 0x38, 0x9c, 0x16, 0x97, 0xc8, 0x08, 0x65, 0x90, + 0x8e, 0xfd, 0x82, 0x17, 0x67, 0xbf, 0xdd, 0x76, 0x3e, 0xc7, 0xae, 0x50, 0xff, 0xc6, 0x25, + 0x9e, 0xfd, 0x47, 0xbf, 0x81, 0x74, 0xe0, 0xa7, 0xc7, 0x3d, 0xa2, 0xf9, 0x55, 0xa6, 0x18, + 0x9c, 0xf7, 0xe8, 0x73, 0x91, 0x58, 0x9f, 0x9a, 0xc5, 0x9e, 0x61, 0xda, 0x89, 0x82, 0xe8, + 0x1f, 0x37, 0x1a, 0x27, 0xf6, 0xd9, 0x30, 0xeb, 0xdd, 0x76, 0xcc, 0x91, 0xd8, 0x61, 0x10, + 0x52, 0xad, 0xbf, 0x23, 0xa4, 0x17, 0x9c, 0xd3, 0xb1, 0x0d, 0x6a, 0x39, 0x91, 0x64, 0x48, + 0x7e, 0x77, 0x6e, 0x4f, 0x45, 0x77, 0x00, 0x47, 0x18, 0xbd, 0xab, 0x42, 0x59, 0x9e, 0xc4, + 0xbf, 0x97, 0xd9, 0xb1, 0xd7, 0xa3, 0xe9, 0x59, 0x14, 0x65, 0xe7, 0xee, 0xa5, 0xe4, 0x83, + 0xae, 0x77, 0xd4, 0xdd, 0x02, 0xa5, 0xcd, 0xbc, 0x66, 0x5b, 0xad, 0x1a, 0xf4, 0x57, 0xed, + 0xb5, 0xb2, 0x7d, 0x35, 0x9c, 0x15, 0xf5, 0x76, 0x29, 0x2f, 0x74, 0x0c, 0x92, 0x6c, 0x43, + 0x80, 0x50, 0xf1, 0xf5, 0x3f, 0xe7, 0xc1, 0xa8, 0xa0, 0xfd, 0x43, 0x69, 0x6d, 0xcb, 0xca, + 0x9d, 0x1b, 0xe0, 0x05, 0x58, 0xb3, 0x34, 0x31, 0xa6, 0x60, 0xb4, 0xb8, 0xea, 0x0c, 0x2d, + 0x4e, 0xb2, 0xe1, 0xc0, 0x26, 0x2a, 0x47, 0x36, 0xa8, 0xec, 0x5a, 0x74, 0xaa, 0xcb, 0x27, + 0xb6, 0x61, 0xc1, 0x39, 0x85, 0xe0, 0x28, 0x13, 0xf1, 0x2e, 0x76, 0x35, 0xad, 0xb8, 0x4a, + 0xc5, 0x36, 0x24, 0xa7, 0x7c, 0xe1, 0x47, 0xbf, 0x1b, 0x40, 0x91, 0x23, 0xed, 0x37, 0x96, + 0x8d, 0xbd, 0x6d, 0xd7, 0xe8, 0x90, 0x59, 0xc3, 0x6e, 0xba, 0xd2, 0x9f, 0x48, 0xee, 0x55, + 0x71, 0x2a, 0x6b, 0xa9, 0x43, 0x24, 0xac, 0x97, 0x89, 0x01, 0xba, 0xcd, 0x33, 0x43, 0xa1, + 0x90, 0x9d, 0x8e, 0x24, 0x0e, 0x8b, 0x00, 0x84, 0xf7, 0x5d, 0xef, 0x3e, 0x3d, 0xab, 0xeb, + 0x9a, 0x96, 0x50, 0xa1, 0x99, 0x73, 0xd8, 0xb1, 0x69, 0x76, 0xa7, 0x90, 0xd4, 0xab, 0x6d, + 0xda, 0xf1, 0xac, 0x44, 0xb8, 0x95, 0x69, 0xb6, 0x17, 0x33, 0x86, 0x0c, 0x6e, 0x79, 0x11, + 0x81, 0x0b, 0x8f, 0x7d, 0x91, 0x6d, 0xda, 0x6b, 0x11, 0xdf, 0x8a, 0x5a, 0xdc, 0xda, 0x6e, + 0x4f, 0xaf, 0x12, 0x8d, 0x80, 0x10, 0x86, 0x90, 0xc5, 0x51, 0xb2, 0xa6, 0xab, 0xdc, 0x41, + 0x18, 0xe6, 0xb4, 0x41, 0x85, 0x7c, 0x14, 0x5b, 0xed, 0x5b, 0xfe, 0x71, 0xd7, 0x45, 0x79, + 0xe1, 0x45, 0x34, 0xca, 0xb2, 0xc8, 0x0e, 0xc0, 0x20, 0x71, 0xab, 0xfc, 0x44, 0xe0, 0x19, + 0xae, 0x4b, 0xf0, 0x9d, 0x39, 0xe6, 0x26, 0x87, 0x3a, 0x83, 0x84, 0x40, 0xfa, 0x4a, 0x97, + 0x66, 0xa0, 0xef, 0x4f, 0x76, 0x16, 0x92, 0xee, 0x28, 0x28, 0xd0, 0x99, 0xe8, 0x64, 0x61, + 0xaa, 0xba, 0x96, 0x35, 0x15, 0x7f, 0x2b, 0x90, 0x76, 0xa9, 0x3e, 0x1b, 0xeb, 0x36, 0xfd, + 0xcb, 0x6c, 0x6a, 0x99, 0x51, 0xb5, 0x7b, 0x87, 0xaf, 0xe3, 0x96, 0x5e, 0xf7, 0x1d, 0x3c, + 0xed, 0x48, 0xfc, 0x65, 0x61, 0x5e, 0x5d, 0x10, 0x0b, 0x7b, 0xba, 0xaa, 0x93, 0xf3, 0xdb, + 0xb8, 0x5c, 0xa8, 0xc1, 0x4b, 0xf8, 0x59, 0x11, 0x87, 0xd2, 0xfc, 0xff, 0x59, 0xa5, 0xf0, + 0xbc, 0x90, 0x16, 0x56, 0x99, 0x98, 0xe4, 0xc9, 0x37, 0x83, 0x18, 0xaa, 0xe9, 0x99, 0xbd, + 0xed, 0xf5, 0xdc, 0x48, 0x52, 0x1c, 0xd0, 0x88, 0xa9, 0x6b, 0xfc, 0x01, 0xca, 0xc3, 0xce, + 0xa0, 0x82, 0x4f, 0xe5, 0xfa, 0x17, 0x25, 0x45, 0xe9, 0x7f, 0x55, 0x42, 0x2b, 0xa1, 0xbb, + 0xe1, 0x7a, 0x9a, 0x37, 0x33, 0x24, 0x93, 0xdf, 0x8b, 0x7c, 0xc1, 0x5e, 0xdf, 0xe3, 0xc4, + 0x68, 0xfb, 0x1d, 0xc7, 0x06, 0x33, 0xe9, 0xa2, 0x25, 0xd8, 0x42, 0x0b, 0xad, 0xbe, 0x01, + 0xa0, 0xa0, 0x90, 0xb8, 0xee, 0x23, 0x79, 0x9b, 0x36, 0x17, 0xcb, 0xc7, 0x41, 0x24, 0x7f, + 0xf7, 0xbe, 0xc2, 0xb3, 0x1c, 0x39, 0xa9, 0x2c, 0x50, 0x38, 0xc2, 0x5c, 0x24, 0x72, 0x04, + 0x77, 0x01, 0x10, 0x92, 0x52, 0x13, 0x20, 0x66, 0xb2, 0x08, 0xa6, 0x7c, 0x39, 0x7b, 0x18, + 0x3b, 0xa0, 0xad, 0x5f, 0x89, 0x74, 0x4b, 0x85, 0xf6, 0x19, 0x01, 0xc5, 0x44, 0x18, 0x08, + 0xd1, 0xee, 0x8a, 0x3f, 0x76, 0x5a, 0x5e, 0x26, 0xdf, 0x20, 0x0e, 0x95, 0x27, 0x64, 0x99, + 0xde, 0x8d, 0x24, 0x1a, 0x00, 0x75, 0x24, 0xef, 0x1a, 0xde, 0x07, 0xdb, 0xa6, 0xb4, 0x8d, + 0x15, 0x3d, 0x40, 0x77, 0xf3, 0x30, 0x22, 0x50, 0x3a, 0x21, 0x68, 0x39, 0x48, 0x05, 0x92, + 0x81, 0xb6, 0x41, 0xf0, 0x6c, 0xaf, 0xec, 0x84, 0x04, 0x20, 0xce, 0x97, 0xe3, 0x14, 0x98, + 0x9a, 0x40, 0x43, 0x70, 0x6e, 0x9e, 0x83, 0x8c, 0x36, 0xbe, 0x15, 0xc5, 0x18, 0xc5, 0x85, + 0x60, 0x85, 0x5a, 0x95, 0x48, 0x63, 0x4d, 0xc0, 0x3a, 0x0d, 0xea, 0xbc, 0x4c, 0x50, 0x99, + 0x98, 0xe5, 0xc5, 0xae, 0xeb, 0x8e, 0x00, 0x45, 0xa4, 0x36, 0xa9, 0x69, 0x03, 0x54, 0x61, + 0x3d, 0x92, 0x4a, 0xe4, 0xd1, 0xc0, 0x86, 0x69, 0x72, 0xf8, 0x77, 0xa9, 0x91, 0x89, 0x17, + 0xca, 0x8b, 0xf3, 0xf1, 0xbb, 0xe7, 0xde, 0x3b, 0xae, 0x42, 0x6c, 0x92, 0xe8, 0x2f, 0x43, + 0x20, 0xe5, 0x00, 0x75, 0x4e, 0xe6, 0x9e, 0x94, 0x83, 0x7d, 0x93, 0xbc, 0x5a, 0x47, 0xde, + 0x31, 0xd0, 0x68, 0x10, 0xd2, 0xda, 0x71, 0x24, 0xd2, 0x00, 0xec, 0xb8, 0x03, 0x8a, 0x41, + 0x69, 0x63, 0x0f, 0x9f, 0x28, 0x47, 0xbf, 0x57, 0xe0, 0x71, 0x0a, 0xe9, 0xe9, 0x43, 0x30, + 0xc3, 0xb2, 0x9d, 0x44, 0xf5, 0x60, 0x44, 0x41, 0x9c, 0xed, 0x22, 0xec, 0x02, 0x8a, 0x68, + 0x96, 0x41, 0x51, 0x3a, 0x7a, 0x81, 0xac, 0xfa, 0x2a, 0x62, 0xd8, 0x5b, 0xd7, 0x74, 0x9c, + 0x78, 0xc3, 0x7b, 0x6a, 0xdc, 0x71, 0xb9, 0xc2, 0xda, 0x0a, 0x0e, 0x14, 0xcd, 0xae, 0x67, + 0xfd, 0xc6, 0x16, 0xa1, 0xf6, 0x89, 0x31, 0xc1, 0xca, 0x1b, 0x56, 0xa4, 0x9c, 0xbc, 0xa6, + 0xc3, 0x45, 0x7c, 0xa0, 0xfe, 0xdb, 0xd1, 0x5a, 0xc8, 0x59, 0x67, 0xb9, 0xf4, 0xab, 0xea, + 0x10, 0x6a, 0xe3, 0x63, 0x0d, 0xe2, 0x04, 0x0d, 0x84, 0x45, 0x5b, 0xc6, 0x87, 0x83, 0x04, + 0xbe, 0x38, 0xbd, 0xd8, 0xab, 0x6f, 0x14, 0x6d, 0x2a, 0xfc, 0x47, 0xa0, 0x99, 0x97, 0xa4, + 0x44, 0x1b, 0xe1, 0x47, 0x4d, 0x44, 0xb4, 0x97, 0x34, 0x7c, 0x3e, 0x34, 0x91, 0xc8, 0x3b, + 0x2a, 0x0e, 0x1f, 0x29, 0x74, 0x3e, 0x17, 0x66, 0xac, 0xd3, 0x6e, 0x85, 0x12, 0xf3, 0x6c, + 0x25, 0x2f, 0xc3, 0xcc, 0xa9, 0xa9, 0x36, 0xce, 0x97, 0x87, 0xe0, 0x16, 0x60, 0x97, 0x77, + 0x94, 0x46, 0xc9, 0x08, 0x43, 0xe0, 0x3d, 0xde, 0x53, 0x31, 0x96, 0x07, 0x0b, 0xba, 0x9e, + 0x6f, 0x08, 0x21, 0x4d, 0x53, 0xda, 0x20, 0xf0, 0x9e, 0xa5, 0x05, 0x41, 0x56, 0x74, 0x15, + 0xea, 0x7b, 0x24, 0xb3, 0x02, 0x7f, 0x59, 0xbf, 0x68, 0xc8, 0xbb, 0x85, 0x89, 0x14, 0xaf, + 0x7f, 0xdd, 0xfe, 0x6a, 0x3a, 0xa0, 0x18, 0xa6, 0x7a, 0xf7, 0xc6, 0x5a, 0x33, 0xc7, 0x22, + 0x5b, 0x04, 0xe7, 0x23, 0xd0, 0xbd, 0x21, 0xff, 0x76, 0xa6, 0xaf, 0xb8, 0xd3, 0xca, 0x8a, + 0x9a, 0x77, 0x72, 0xc1, 0xf7, 0x2f, 0xf7, 0x8a, 0x8c, 0x94, 0xdd, 0xeb, 0x13, 0xcd, 0x37, + 0x1e, 0xe6, 0xd7, 0x88, 0x6c, 0xf5, 0xb3, 0x89, 0x46, 0xe4, 0xd0, 0x81, 0xa7, 0x0f, 0xb4, + 0x75, 0xb8, 0x56, 0x9a, 0xaa, 0xef, 0xc5, 0x79, 0x9b, 0x77, 0x3c, 0x9e, 0x0d, 0xe7, 0x0d, + 0x08, 0xbe, 0x90, 0xd3, 0x49, 0x9a, 0x99, 0xfb, 0xdc, 0x31, 0xe6, 0x95, 0xde, 0x27, 0x78, + 0x7b, 0xba, 0x5a, 0x3e, 0x75, 0x2b, 0x7b, 0x31, 0x12, 0x24, 0xd3, 0x11, 0x9c, 0xd1, 0x9e, + 0xc4, 0x67, 0xa4, 0xb0, 0x15, 0xa1, 0x79, 0x42, 0x6f, 0xd8, 0xcd, 0xfa, 0x59, 0xbe, 0x79, + 0x8d, 0x46, 0x1c, 0x29, 0x44, 0xf2, 0xe4, 0x46, 0x1d, 0x80, 0xe9, 0xa9, 0x84, 0x99, 0x97, + 0x9d, 0x5e, 0x3c, 0x91, 0x6a, 0xaa, 0xd8, 0x20, 0xac, 0x2d, 0xd0, 0x5d, 0x16, 0xe6, 0x08, + 0xc7, 0x9f, 0xa5, 0x95, 0x47, 0x6c, 0x09, 0x06, 0xc1, 0x78, 0xa8, 0x5e, 0x68, 0x23, 0xf8, + 0x43, 0x70, 0x1f, 0xbc, 0x1f, 0x59, 0xbf, 0x02, 0x70, 0x99, 0xfb, 0xe7, 0xda, 0xc4, 0x1d, + 0x0b, 0x8c, 0x88, 0x9b, 0xc4, 0xd4, 0x4e, 0xe8, 0x1b, 0x44, 0xdf, 0x45, 0x80, 0xb2, 0x0c, + 0x9a, 0xd1, 0xec, 0x00, 0x88, 0xfa, 0xc0, 0xef, 0x62, 0xa0, 0xfe, 0xd2, 0x4f, 0x7d, 0xc4, + 0xcc, 0x2f, 0xb7, 0xab, 0xa4, 0x1b, 0xed, 0x11, 0x60, 0xee, 0x4a, 0xfe, 0x95, 0xe8, 0x11, + 0xa9, 0x66, 0x27, 0x08, 0xcf, 0x0f, 0x05, 0x34, 0xd4, 0xf5, 0xb3, 0x0f, 0x2e, 0x64, 0xa7, + 0x9f, 0xf4, 0x2c, 0x24, 0x83, 0x84, 0x8c, 0x65, 0x01, 0x66, 0xf9, 0x56, 0x8f, 0x71, 0x89, + 0xb3, 0x98, 0xad, 0xa6, 0x35, 0xe8, 0x73, 0x40, 0x28, 0x2e, 0xdc, 0x1e, 0xa8, 0x1e, 0x85, + 0xe2, 0x3b, 0x8b, 0x37, 0xb2, 0x07, 0x55, 0xf9, 0x2f, 0xf0, 0x68, 0xed, 0x54, 0x68, 0x49, + 0x5b, 0xd7, 0x05, 0xb7, 0xdc, 0x28, 0xb8, 0x2b, 0xd7, 0x04, 0x35, 0xca, 0x32, 0x93, 0xa3, + 0xb5, 0x9c, 0x88, 0xd6, 0xb1, 0x48, 0xa2, 0x6a, 0x7c, 0x22, 0xd4, 0x49, 0x9e, 0x4a, 0xa3, + 0x77, 0x7b, 0xd5, 0x6c, 0x14, 0x87, 0x45, 0xc3, 0x16, 0x60, 0x7c, 0xba, 0x90, 0x41, 0xc4, + 0xba, 0x80, 0x05, 0xfa, 0xdf, 0x29, 0x4d, 0xc9, 0xd2, 0x75, 0xe2, 0x03, 0x92, 0x72, 0x05, + 0x05, 0x6f, 0xa1, 0x22, 0xad, 0x26, 0x51, 0xe5, 0x57, 0x70, 0x0b, 0xa4, 0xa0, 0xeb, 0x21, + 0xaa, 0x8f, 0x2f, 0xe6, 0x0d, 0x12, 0xc4, 0x96, 0x2f, 0x86, 0xfe, 0xd9, 0x73, 0x85, 0xe1, + 0x6a, 0xfd, 0x66, 0x2e, 0xcf, 0x6e, 0x88, 0x17, 0x49, 0xf6, 0x75, 0x38, 0xb7, 0x62, 0x87, + 0xd5, 0x6c, 0xde, 0xef, 0x95, 0x7c, 0x22, 0xb3, 0x13, 0x90, 0x93, 0x94, 0x7d, 0x73, 0x28, + 0x88, 0x2b, 0x5c, 0xdc, 0x6f, 0xcf, 0x9e, 0x01, 0xf9, 0xe8, 0x50, 0xc7, 0xd9, 0x94, 0x0f, + 0x85, 0x5d, 0x0e, 0x60, 0x5f, 0xca, 0xe6, 0x2d, 0x3c, 0x47, 0x56, 0xf5, 0xe5, 0xdd, 0x9f, + 0x9b, 0x58, 0x81, 0x75, 0x5c, 0x4d, 0x80, 0x79, 0xef, 0xba, 0x41, 0x07, 0x92, 0xc5, 0xa3, + 0xa1, 0x3b, 0x82, 0x95, 0x16, 0x1b, 0x91, 0x61, 0x33, 0xf6, 0x15, 0x27, 0x5d, 0x31, 0x7b, + 0x26, 0x4c, 0x43, 0x4d, 0xd1, 0x6d, 0x83, 0xa2, 0xc5, 0x85, 0x9a, 0x1f, 0x84, 0x2b, 0x43, + 0xd8, 0x14, 0x16, 0xed, 0xc3, 0xae, 0x14, 0xde, 0xec, 0xbb, 0xc6, 0xbe, 0xb3, 0x36, 0x21, + 0xb9, 0xfc, 0x3a, 0xba, 0x9d, 0x24, 0x43, 0xa4, 0xe6, 0x92, 0x3f, 0x5e, 0x6e, 0x41, 0x40, + 0x8e, 0xda, 0x4b, 0x2a, 0xf7, 0xf4, 0x17, 0xb3, 0x74, 0x17, 0x64, 0xfa, 0x32, 0x4d, 0x02, + 0xf7, 0x39, 0xa1, 0xb0, 0xdd, 0x7a, 0x6b, 0x61, 0x85, 0x35, 0x27, 0xb4, 0xa2, 0x98, 0xf9, + 0x4b, 0xe1, 0x6c, 0xf9, 0x72, 0xe2, 0x55, 0x04, 0x17, 0xd1, 0x24, 0xdc, 0x04, 0x00, 0x5d, + 0x11, 0x0e, 0xf8, 0x6c, 0x08, 0x28, 0x70, 0x65, 0xd5, 0xf5, 0xd1, 0x56, 0x17, 0x77, 0x79, + 0x4f, 0x78, 0xcd, 0x95, 0xde, 0x31, 0x51, 0x3f, 0x38, 0x38, 0xcf, 0x10, 0x56, 0x8b, 0x23, + 0xd8, 0x9a, 0xb8, 0x17, 0x03, 0x45, 0xa8, 0xc1, 0x00, 0x2e, 0x2f, 0x69, 0x06, 0x1f, 0xc4, + 0x02, 0xe7, 0xf0, 0xf3, 0x32, 0x40, 0x66, 0x42, 0xdf, 0x71, 0x58, 0x98, 0x49, 0x40, 0x85, + 0x17, 0xea, 0x68, 0xd4, 0xd0, 0x3f, 0x29, 0x92, 0x1d, 0x93, 0xc0, 0x13, 0x7f, 0x9a, 0x76, + 0xa8, 0x9d, 0x9c, 0x1a, 0xbc, 0xec, 0x36, 0xcd, 0x58, 0x86, 0xfb, 0xe7, 0x5a, 0x93, 0x15, + 0x37, 0xbd, 0xbb, 0xd7, 0xaf, 0xe9, 0xfc, 0x2e, 0x37, 0xf4, 0xf8, 0x1d, 0x02, 0xd6, 0x3f, + 0xf5, 0x2e, 0x19, 0xa6, 0xd6, 0xf8, 0x5f, 0x86, 0xd6, 0x2e, 0xb4, 0x99, 0x13, 0x1a, 0x91, + 0x9a, 0x58, 0xf4, 0x0d, 0x36, 0xeb, 0x3c, 0x83, 0xfc, 0x1e, 0x4c, 0x57, 0xd9, 0x51, 0x06, + 0x71, 0xaf, 0xfe, 0xcb, 0x8e, 0x76, 0x90, 0xdf, 0xc0, 0x30, 0x84, 0xfc, 0xaa, 0xd6, 0xf8, + 0x5a, 0x39, 0xe6, 0x31, 0x55, 0x7a, 0x48, 0x4f, 0x34, 0x2c, 0x9c, 0x17, 0xba, 0x92, 0x55, + 0xfc, 0x52, 0xdd, 0x5c, 0x8e, 0x9f, 0x65, 0x74, 0x8b, 0x2f, 0x48, 0x41, 0x91, 0x09, 0x0b, + 0xfc, 0xbe, 0x39, 0x18, 0x49, 0xc1, 0x9a, 0x38, 0xc7, 0xa0, 0xbe, 0xd4, 0x91, 0x0b, 0x20, + 0x86, 0x3d, 0x13, 0x5d, 0x28, 0xc1, 0xca, 0xba, 0x42, 0x96, 0x77, 0x41, 0x2e, 0x06, 0xc2, + 0x3e, 0x22, 0x8a, 0x35, 0x3d, 0xfc, 0xde, 0xb2, 0x2d, 0x5b, 0xfd, 0x71, 0xa6, 0x3c, 0x17, + 0x24, 0xad, 0x25, 0xf6, 0xdc, 0x9c, 0xc8, 0xa8, 0x75, 0x6b, 0x8e, 0x58, 0x40, 0xcb, 0x4f, + 0xd4, 0x60, 0x70, 0x41, 0x61, 0x8a, 0xbf, 0xf0, 0x2e, 0xa7, 0xc7, 0xf8, 0x97, 0x1d, 0xae, + 0xc8, 0xb1, 0x00, 0x25, 0x25, 0x70, 0x99, 0xea, 0x27, 0xc4, 0xfe, 0xcf, 0xb0, 0x0c, 0x97, + 0x74, 0xcc, 0xe0, 0x98, 0xf6, 0x16, 0x8c, 0xe1, 0x56, 0x15, 0xef, 0xe8, 0xaa, 0x6e, 0xc8, + 0x2c, 0x13, 0x6c, 0xa9, 0x3e, 0x6d, 0x7b, 0xa5, 0x7e, 0x6a, 0x00, 0xa1, 0xd5, 0xb3, 0x3d, + 0x32, 0xc4, 0x93, 0x8d, 0x0c, 0x87, 0x09, 0x6f, 0x08, 0xd3, 0x26, 0x36, 0x20, 0xef, 0xe5, + 0xa7, 0x4e, 0xc9, 0x6e, 0x01, 0xa4, 0x0d, 0xc5, 0xea, 0x0e, 0x04, 0x75, 0x59, 0x84, 0xe9, + 0x69, 0x0b, 0x12, 0x1b, 0xa6, 0xcf, 0xa1, 0xaf, 0x5a, 0x0f, 0x42, 0x8b, 0xd4, 0x15, 0xa3, + 0x4d, 0xab, 0x80, 0xaa, 0xf1, 0x2c, 0xa4, 0xe4, 0x33, 0x37, 0xb3, 0x29, 0x4d, 0x33, 0x18, + 0x9d, 0x03, 0x9f, 0x7a, 0x66, 0xc1, 0x5c, 0x75, 0x48, 0x4e, 0xa8, 0xc4, 0x0f, 0xde, 0x16, + 0x52, 0x7c, 0x1d, 0x66, 0x59, 0xe4, 0x93, 0xb5, 0x38, 0xd1, 0x00, 0x6b, 0xa8, 0x91, 0x85, + 0x61, 0x62, 0x98, 0xdc, 0xbb, 0xed, 0xa5, 0x8f, 0x41, 0x8f, 0x02, 0x75, 0x4c, 0xc3, 0x0e, + 0x41, 0x6b, 0xda, 0xe7, 0x81, 0x69, 0x7a, 0x05, 0xf9, 0xa0, 0x9e, 0xdf, 0x28, 0x80, 0x12, + 0xcb, 0x80, 0x04, 0xc5, 0x68, 0x3f, 0xc1, 0x90, 0xcd, 0x42, 0x94, 0xbe, 0xce, 0x2f, 0xeb, + 0x59, 0x28, 0x51, 0x9c, 0xd0, 0x06, 0x71, 0xf9, 0x8b, 0x1d, 0x3c, 0x75, 0x33, 0xe4, 0x13, + 0x7a, 0x7f, 0x5b, 0xff, 0x4e, 0xb3, 0xa2, 0x12, 0xbb, 0x25, 0x7a, 0xc1, 0x47, 0x86, 0x02, + 0xc2, 0x79, 0x84, 0xae, 0x60, 0xbb, 0x79, 0x3e, 0x0f, 0xbc, 0xda, 0x2e, 0xc1, 0x8c, 0x79, + 0x15, 0x3c, 0xeb, 0xbe, 0x93, 0xb1, 0x57, 0x84, 0xee, 0xb2, 0xd2, 0x75, 0x09, 0x58, 0x37, + 0xcd, 0x47, 0x12, 0x64, 0xbf, 0x80, 0x76, 0x1b, 0x48, 0xeb, 0x3c, 0x6f, 0xe5, 0x7a, 0x37, + 0x59, 0x0b, 0x44, 0x11, 0x6a, 0xb2, 0x3b, 0x1b, 0x6b, 0x7a, 0x76, 0xf6, 0x65, 0x08, 0x74, + 0x60, 0x9c, 0xa4, 0x15, 0x51, 0xbb, 0xa8, 0xee, 0x42, 0x66, 0xf9, 0xf6, 0x63, 0x48, 0xa3, + 0x85, 0x1f, 0x0f, 0xca, 0xe7, 0x25, 0xc1, 0xc8, 0xa9, 0x75, 0x7c, 0xf1, 0x5e, 0x36, 0xf8, + 0x15, 0xe9, 0xa5, 0x27, 0x94, 0xcc, 0xc6, 0x63, 0xaf, 0x4d, 0x9a, 0x09, 0x2e, 0x0e, 0xbd, + 0xd3, 0x7f, 0x40, 0xd3, 0xe3, 0xad, 0x31, 0x3f, 0x53, 0xdd, 0x3a, 0xf4, 0x3c, 0x14, 0xea, + 0x0e, 0x03, 0x99, 0x17, 0x0c, 0xa3, 0x58, 0x3f, 0xc0, 0x68, 0x9b, 0xf3, 0x38, 0x53, 0xce, + 0x13, 0x09, 0xb0, 0x9d, 0x26, 0x93, 0x69, 0xd6, 0x5d, 0x22, 0x2a, 0xba, 0xc7, 0x36, 0x73, + 0x89, 0x26, 0xd3, 0xea, 0xb0, 0x16, 0x0c, 0x4f, 0x1c, 0x47, 0xf8, 0xc4, 0x29, 0xc4, 0x38, + 0x06, 0xc7, 0x49, 0x68, 0x51, 0x36, 0x81, 0xd5, 0x39, 0xd1, 0x63, 0x31, 0x93, 0x34, 0xf2, + 0xd9, 0x5d, 0xa3, 0xf7, 0x20, 0x82, 0x7f, 0x0c, 0x40, 0x83, 0xf1, 0x90, 0x33, 0x90, 0xef, + 0xb3, 0x95, 0x9c, 0x8f, 0x97, 0x90, 0x2d, 0xd0, 0x44, 0x0d, 0x0a, 0x4b, 0x22, 0x34, 0x9c, + 0x44, 0x0b, 0x3b, 0x95, 0x12, 0x24, 0x4d, 0x0c, 0x10, 0xbd, 0x67, 0x35, 0x14, 0xcc, 0x4e, + 0xc5, 0xd9, 0x46, 0xea, 0x8b, 0x72, 0x52, 0x63, 0x5a, 0x53, 0x81, 0xeb, 0x9b, 0xce, 0x4d, + 0x1e, 0xd7, 0x56, 0x8a, 0x9f, 0xda, 0xd5, 0x9f, 0xb9, 0x27, 0x48, 0x67, 0x62, 0xb8, 0x20, + 0x37, 0xc7, 0x33, 0xa1, 0x5e, 0x26, 0xbc, 0xa1, 0xe8, 0x19, 0x21, 0x94, 0x86, 0xe1, 0xcc, + 0xac, 0xa1, 0x01, 0x5d, 0xdf, 0xca, 0xc4, 0x93, 0x55, 0xcb, 0x1f, 0xa3, 0x00, 0x2c, 0x1d, + 0x8e, 0x89, 0x45, 0x98, 0x70, 0xfb, 0x8f, 0x00, 0x6d, 0xea, 0x98, 0xac, 0xd5, 0xed, 0xc6, + 0xa1, 0x52, 0x5f, 0x7e, 0x25, 0xd5, 0x19, 0x29, 0xd3, 0x01, 0x3a, 0xcb, 0xb7, 0x60, 0xe5, + 0xe0, 0xbd, 0x7f, 0x41, 0x22, 0x90, 0xcc, 0x3f, 0x84, 0xb4, 0x1e, 0xd8, 0xac, 0x09, 0x58, + 0xb9, 0xb2, 0x84, 0x62, 0x99, 0x91, 0x38, 0x07, 0xe9, 0xcb, 0x08, 0x50, 0x31, 0x67, 0x46, + 0xfb, 0x50, 0xba, 0xc2, 0x4f, 0x1c, 0xdd, 0x9f, 0x6a, 0x8a, 0x08, 0x39, 0x81, 0x5e, 0x03, + 0x01, 0x90, 0xfe, 0xd2, 0x42, 0x9a, 0x53, 0x0c, 0x01, 0xbc, 0x59, 0x72, 0x4e, 0x26, 0x37, + 0x7a, 0xa8, 0x6b, 0xf6, 0xcb, 0x2a, 0x7d, 0x7d, 0x3e, 0x07, 0xee, 0x90, 0xc7, 0xef, 0xb4, + 0x11, 0x03, 0x28, 0x72, 0x52, 0x59, 0xc8, 0xfd, 0x3e, 0x15, 0x1e, 0x4a, 0x40, 0x85, 0x8f, + 0x2c, 0x74, 0xe4, 0xe1, 0xcb, 0x08, 0xa4, 0x9c, 0x30, 0x0c, 0x30, 0xd1, 0x76, 0xd1, 0xc9, + 0x4f, 0x11, 0x13, 0x3a, 0x13, 0x3b, 0xfe, 0xc6, 0xa7, 0x68, 0xc9, 0x23, 0x30, 0x43, 0xb8, + 0xfe, 0x2d, 0xe4, 0x6f, 0x3f, 0xb2, 0x97, 0x83, 0x7d, 0x5c, 0xe6, 0xcb, 0x03, 0x6b, 0x33, + 0xaa, 0xd3, 0xb3, 0xff, 0x08, 0x7b, 0xe7, 0xbb, 0x24, 0x8f, 0x8d, 0x27, 0x96, 0xba, 0x18, + 0x66, 0xf7, 0xe1, 0xf9, 0xd1, 0xa2, 0x8f, 0x91, 0xc0, 0x01, 0xb8, 0x73, 0x3d, 0xad, 0xd1, + 0x3a, 0x1f, 0xf2, 0xaf, 0xdd, 0x7d, 0xc7, 0xb7, 0x8e, 0xdd, 0x10, 0x8b, 0x3f, 0x68, 0x6a, + 0x5e, 0x23, 0x92, 0xf6, 0x7e, 0x5a, 0x81, 0xa2, 0xd7, 0x3a, 0xd9, 0x9e, 0xa1, 0xc3, 0xe2, + 0x8b, 0x3b, 0xb6, 0x0f, 0x7d, 0x8e, 0x88, 0x32, 0x2b, 0x3e, 0x1b, 0xc9, 0x2c, 0xac, 0x95, + 0x8f, 0xc2, 0xfb, 0x15, 0x7e, 0xa1, 0x56, 0xf4, 0xd1, 0x9f, 0x02, 0x5d, 0x87, 0xef, 0xbd, + 0xc1, 0xce, 0xe5, 0xcf, 0x97, 0xa4, 0x80, 0xe3, 0xec, 0x60, 0xa9, 0xe9, 0x2b, 0xa9, 0x4d, + 0xb1, 0xcc, 0xd3, 0xff, 0x73, 0x37, 0x63, 0x77, 0x65, 0x0d, 0x16, 0x1f, 0x45, 0x4f, 0xf0, + 0x9b, 0x2a, 0xcc, 0x07, 0x4b, 0x72, 0xa3, 0xd6, 0x95, 0x5c, 0x9e, 0x3b, 0x44, 0x73, 0x1b, + 0x6d, 0x86, 0xdb, 0xcf, 0x04, 0xaf, 0xfb, 0x34, 0x6e, 0x2f, 0x49, 0xdd, 0x00, 0x1c, 0x7a, + 0x74, 0xdc, 0x86, 0x65, 0x1a, 0x50, 0xb0, 0x3a, 0x2d, 0x9a, 0x77, 0x42, 0x55, 0xfe, 0x6e, + 0xbd, 0x66, 0x20, 0x4a, 0x0a, 0xc3, 0x08, 0xc3, 0xab, 0x2a, 0x55, 0xe2, 0xfd, 0x39, 0x73, + 0xb2, 0x07, 0x9e, 0xde, 0xd3, 0x76, 0x9b, 0x2c, 0x1b, 0x98, 0xc1, 0xa8, 0x4a, 0x92, 0x81, + 0x50, 0x67, 0xe8, 0xf7, 0x74, 0xa7, 0x64, 0x0d, 0xc4, 0xb6, 0xe0, 0x3b, 0x8c, 0x9f, 0x44, + 0x37, 0x40, 0xd5, 0x09, 0x3d, 0xfc, 0x2c, 0x02, 0xd4, 0x59, 0xaf, 0x1f, 0x43, 0x51, 0xfe, + 0x07, 0x23, 0x23, 0x83, 0xe3, 0x9b, 0x97, 0x5e, 0x0f, 0xb3, 0xff, 0xc5, 0xd1, 0x08, 0xd7, + 0x4b, 0x35, 0x69, 0x22, 0xeb, 0x36, 0x3f, 0x43, 0xad, 0xdf, 0x1e, 0x83, 0x83, 0x09, 0xc7, + 0xbb, 0xfb, 0xce, 0x1a, 0xe4, 0xcb, 0xa1, 0xe2, 0xe6, 0x8d, 0x89, 0x13, 0x02, 0xa5, 0x5a, + 0x24, 0xdb, 0x72, 0x79, 0x6b, 0x8c, 0x00, 0x67, 0x4e, 0x55, 0x19, 0x15, 0x94, 0x43, 0x5c, + 0xb5, 0x5d, 0x5f, 0xaf, 0x50, 0x67, 0xde, 0x86, 0x5a, 0x77, 0x15, 0xcf, 0x90, 0xbb, 0x5f, + 0xa0, 0x05, 0x17, 0x0f, 0x99, 0xab, 0x06, 0x14, 0x04, 0x05, 0x38, 0xd4, 0xcb, 0x20, 0x07, + 0x38, 0xf4, 0xc0, 0x95, 0x01, 0x2f, 0x37, 0x4c, 0x49, 0x3e, 0x67, 0xd9, 0x1a, 0x51, 0x97, + 0xe5, 0x14, 0x68, 0xa5, 0x22, 0x96, 0x33, 0x47, 0x6b, 0x6e, 0x80, 0x6c, 0x3c, 0x11, 0xfc, + 0x17, 0xf8, 0x38, 0x47, 0x34, 0x63, 0xb0, 0x65, 0x8c, 0x9f, 0xd5, 0x31, 0x9a, 0x71, 0xaf, + 0x55, 0x1d, 0x34, 0x41, 0x7e, 0x49, 0x16, 0x38, 0x1e, 0x94, 0x32, 0xa8, 0x4e, 0xfd, 0xe2, + 0x0a, 0xaf, 0xe6, 0x27, 0x3c, 0x67, 0xa9, 0x1a, 0xb5, 0x05, 0xcd, 0x6b, 0xb1, 0x43, 0x9d, + 0x4b, 0x3b, 0xaf, 0x9f, 0xc5, 0x1a, 0x84, 0xd8, 0x07, 0x0b, 0x7a, 0xd8, 0x85, 0x59, 0x7d, + 0x35, 0x71, 0xa2, 0x55, 0x5f, 0xf3, 0x95, 0x9a, 0x3d, 0x31, 0x44, 0xfe, 0xc9, 0x42, 0xe6, + 0x26, 0x58, 0xa2, 0x8a, 0x52, 0x7e, 0xae, 0x33, 0x63, 0xae, 0x30, 0x2f, 0xc9, 0x11, 0x81, + 0x00, 0xa2, 0xf2, 0xb2, 0x9f, 0xd4, 0x86, 0x99, 0x78, 0xb4, 0x8a, 0x7e, 0x3a, 0xbe, 0x35, + 0x46, 0x53, 0x6f, 0xd7, 0x2f, 0x0d, 0x2b, 0x06, 0x79, 0xa9, 0x14, 0x94, 0x3b, 0x58, 0xb7, + 0xdf, 0x35, 0x0b, 0x50, 0x43, 0x44, 0x99, 0x98, 0x38, 0xab, 0x63, 0x2b, 0x0c, 0x09, 0xd7, + 0x91, 0xac, 0xe7, 0x79, 0x68, 0xba, 0x43, 0x5a, 0xde, 0xd1, 0x73, 0xa8, 0x82, 0x05, 0x01, + 0xce, 0xd8, 0x3a, 0x4a, 0x43, 0xed, 0x32, 0x4b, 0x83, 0xd6, 0x6e, 0x7c, 0xa2, 0x2a, 0x00, + 0x16, 0xf8, 0x47, 0x5d, 0x88, 0x94, 0x8e, 0x18, 0x8f, 0x02, 0xd7, 0x0b, 0x7b, 0x90, 0xaf, + 0xed, 0x02, 0xe8, 0x68, 0x20, 0x21, 0x25, 0xd9, 0xe1, 0xf9, 0xb1, 0x5e, 0x21, 0xcc, 0xb4, + 0x0c, 0x06, 0xbc, 0xe5, 0x91, 0xde, 0x9e, 0xb2, 0x9c, 0xfc, 0x64, 0x70, 0x5a, 0x52, 0xf7, + 0x05, 0xb4, 0xeb, 0x32, 0x1e, 0xf6, 0xd8, 0x06, 0xc1, 0x7b, 0xf0, 0xf3, 0xff, 0x8d, 0x40, + 0xc2, 0x22, 0xf7, 0x80, 0xf7, 0x2b, 0x7e, 0x7c, 0x1e, 0x1d, 0x0f, 0xc9, 0xd8, 0x3e, 0x2d, + 0xb9, 0x4e, 0xb0, 0x26, 0xb8, 0x03, 0xa5, 0xe8, 0x78, 0x78, 0xb9, 0x2e, 0xfe, 0xd1, 0x4c, + 0xdc, 0x3c, 0xa7, 0x5f, 0xe2, 0xcc, 0xd0, 0xe9, 0xe3, 0x9e, 0xa9, 0xc5, 0x38, 0xe2, 0x3d, + 0xea, 0xdc, 0xab, 0xc2, 0xdc, 0x5a, 0xe5, 0x26, 0xbf, 0x01, 0x12, 0xa6, 0xe4, 0xee, 0xc3, + 0x77, 0xea, 0x9a, 0x98, 0xfd, 0xea, 0xcf, 0xf2, 0x1a, 0xe7, 0x81, 0x5b, 0x54, 0x3f, 0x2d, + 0x29, 0xac, 0x7d, 0xce, 0x63, 0xe5, 0x07, 0x53, 0x56, 0x21, 0x0b, 0x5b, 0x71, 0x1d, 0x2a, + 0x2b, 0x66, 0x78, 0x09, 0xec, 0x75, 0xb1, 0xf4, 0xea, 0x96, 0x7e, 0x55, 0x2e, 0x3e, 0x49, + 0xee, 0x24, 0x86, 0x70, 0x72, 0xec, 0x1d, 0xdf, 0x47, 0xea, 0xb6, 0x0f, 0xd9, 0x49, 0xc6, + 0xec, 0x7b, 0x7e, 0x91, 0x8f, 0x88, 0xbd, 0xae, 0xb8, 0x70, 0xdd, 0x95, 0xb4, 0xf6, 0x21, + 0x80, 0x52, 0x10, 0xee, 0xce, 0x08, 0x05, 0x78, 0xa0, 0x2a, 0x41, 0x96, 0x1b, 0x3d, 0xa9, + 0x51, 0x5e, 0xb6, 0x1d, 0xf0, 0x5c, 0x56, 0x1b, 0x77, 0x25, 0x21, 0x8e, 0x3f, 0xa2, 0x51, + 0x4a, 0x92, 0xfc, 0x26, 0x72, 0x51, 0xd3, 0x40, 0xf2, 0xe9, 0xb9, 0x50, 0x7d, 0xc1, 0xad, + 0x19, 0x36, 0xbe, 0xa0, 0x6d, 0x3b, 0x81, 0xbb, 0xb8, 0x1a, 0x57, 0x2c, 0x05, 0x14, 0xc5, + 0x7c, 0xba, 0x57, 0x10, 0x88, 0x0c, 0xc5, 0x91, 0x6a, 0x9c, 0xce, 0x08, 0x9d, 0x69, 0xa0, + 0x25, 0x09, 0x19, 0xc0, 0x4f, 0xdf, 0x99, 0xf2, 0x49, 0x18, 0x37, 0xd5, 0x3a, 0xe4, 0x57, + 0x42, 0x80, 0x77, 0xc8, 0x63, 0x24, 0x7b, 0x54, 0x79, 0xf2, 0xb3, 0xb5, 0x9c, 0x42, 0x91, + 0x44, 0x0a, 0x75, 0x94, 0x3b, 0xa7, 0x02, 0xed, 0x6b, 0xab, 0x80, 0xa4, 0x30, 0xa2, 0x7b, + 0xaa, 0x6f, 0x18, 0x64, 0x24, 0x09, 0x86, 0x84, 0xda, 0x5a, 0xcf, 0xf6, 0x24, 0x23, 0xe5, + 0x22, 0x1b, 0x03, 0x25, 0x66, 0xa5, 0x34, 0x13, 0x9a, 0xee, 0x34, 0xbd, 0x5b, 0xf1, 0x76, + 0x5c, 0x7e, 0x91, 0x5a, 0x57, 0xe5, 0x83, 0x0a, 0x1b, 0x1d, 0x31, 0x00, 0x33, 0xa7, 0xd1, + 0x7d, 0x3b, 0xc0, 0xd6, 0x20, 0x01, 0xc9, 0x76, 0x0f, 0xe1, 0x35, 0x46, 0x8f, 0xfd, 0xaf, + 0xfd, 0x62, 0xe4, 0xb1, 0x59, 0x73, 0x05, 0xf3, 0x7f, 0xd9, 0xea, 0x80, 0x4f, 0xfa, 0xbf, + 0xc2, 0x18, 0xf0, 0x60, 0x46, 0xbf, 0x39, 0x01, 0x8e, 0xf1, 0x3f, 0x53, 0xd5, 0x54, 0x49, + 0x90, 0x82, 0x29, 0x7b, 0x80, 0xa5, 0x55, 0x35, 0xc4, 0xa8, 0x19, 0x2f, 0xe2, 0x74, 0x9e, + 0x43, 0xbf, 0x57, 0xd9, 0x55, 0xd6, 0x10, 0xdc, 0xb5, 0x8d, 0x18, 0x66, 0x17, 0xdf, 0xea, + 0x89, 0x2d, 0xe5, 0x09, 0x30, 0x83, 0x70, 0x3d, 0x3b, 0x56, 0xad, 0xc0, 0x57, 0xa0, 0xa8, + 0x6b, 0x11, 0xa1, 0xf2, 0xb6, 0x20, 0xd0, 0x03, 0xe7, 0xd2, 0xc0, 0x59, 0x0f, 0x19, 0x04, + 0x4a, 0x65, 0xe5, 0xda, 0xf2, 0x50, 0x6a, 0x6c, 0xab, 0xa8, 0xea, 0x8f, 0x61, 0x7d, 0xc7, + 0x58, 0x41, 0xd2, 0x94, 0x94, 0x80, 0xf5, 0x2a, 0x4d, 0xdd, 0x83, 0xb3, 0xd3, 0x7b, 0xb4, + 0x9d, 0x2e, 0x98, 0xe3, 0xe5, 0x11, 0x11, 0x87, 0xb9, 0x82, 0xd9, 0x7c, 0x04, 0x47, 0xf4, + 0xa7, 0xa1, 0x13, 0xf9, 0x2a, 0x4e, 0x6a, 0x8f, 0x45, 0x3b, 0xb2, 0x3e, 0xe4, 0x81, 0x46, + 0x44, 0x02, 0x80, 0x3e, 0x14, 0x94, 0x33, 0x3d, 0x9c, 0x24, 0x37, 0xce, 0x54, 0x23, 0x50, + 0x26, 0xe4, 0xb7, 0x4d, 0xad, 0xeb, 0xe6, 0xb2, 0xa7, 0x6e, 0xb0, 0x4a, 0xee, 0xb2, 0x6c, + 0xb0, 0x69, 0xa2, 0xb3, 0x88, 0x23, 0x79, 0x45, 0x62, 0x45, 0xdc, 0x40, 0x83, 0xf9, 0x2e, + 0xd4, 0x74, 0x03, 0x77, 0x8c, 0xd8, 0xc2, 0x26, 0x27, 0x55, 0x7a, 0x6e, 0x57, 0xde, 0x06, + 0xa5, 0x4b, 0xb3, 0xff, 0x1e, 0xef, 0x64, 0x20, 0x04, 0x5c, 0xf2, 0xab, 0xa3, 0x53, 0x30, + 0x79, 0x99, 0xc9, 0x9b, 0xcf, 0x81, 0x51, 0xb2, 0x53, 0x2b, 0x60, 0x9c, 0x41, 0xc2, 0xff, + 0x83, 0x68, 0x32, 0x0b, 0x30, 0x8c, 0x87, 0xc9, 0x3c, 0x16, 0xea, 0x90, 0x0f, 0x54, 0x40, + 0x00, 0x8b, 0x4b, 0x83, 0x0d, 0xb8, 0x66, 0x20, 0xd0, 0xab, 0x4a, 0xd6, 0xcc, 0x8f, 0x7d, + 0xf8, 0x79, 0xe7, 0x6e, 0x9f, 0xc7, 0x29, 0x00, 0x38, 0xd5, 0xb5, 0x1b, 0x1b, 0x2a, 0xed, + 0xff, 0xd1, 0x17, 0x00, 0x85, 0x29, 0x5d, 0x0a, 0x1a, 0xd6, 0x5e, 0x8a, 0x55, 0xb5, 0x27, + 0x39, 0xfa, 0x52, 0x4f, 0xbc, 0x3e, 0x01, 0x16, 0x08, 0xe5, 0x05, 0x78, 0xaa, 0x09, 0x12, + 0x33, 0x40, 0xf2, 0xa6, 0xc6, 0xec, 0x64, 0x0a, 0xca, 0xf8, 0x62, 0xad, 0x47, 0x62, 0xbe, + 0xea, 0xf3, 0x8c, 0x40, 0x9f, 0xd4, 0x38, 0x07, 0x65, 0xb3, 0x46, 0xfc, 0xaa, 0xe3, 0xaf, + 0x2e, 0xc1, 0xcd, 0x40, 0xe3, 0x2c, 0x1c, 0xc3, 0x6f, 0x04, 0x5c, 0x18, 0xad, 0x3c, 0xb4, + 0x5f, 0x6f, 0x0b, 0x47, 0xb1, 0x63, 0x0c, 0x2c, 0xcb, 0xf2, 0x11, 0xac, 0x48, 0x12, 0xa0, + 0xb9, 0x2b, 0x2c, 0x15, 0x62, 0x60, 0x5b, 0xfe, 0x0a, 0x4a, 0x01, 0x0b, 0x03, 0x1d, 0x98, + 0x59, 0xeb, 0x2f, 0x2c, 0x08, 0xba, 0xfb, 0x04, 0xa6, 0xfb, 0x7e, 0xd3, 0xfa, 0xf3, 0xc9, + 0xb3, 0xf4, 0x76, 0x83, 0x33, 0x5b, 0x0f, 0x06, 0xd5, 0x9c, 0x2b, 0x12, 0x14, 0x30, 0xb0, + 0x03, 0x9f, 0x3e, 0xef, 0x3d, 0x71, 0x82, 0x68, 0x57, 0xb5, 0xad, 0x64, 0x3f, 0x6c, 0x1a, + 0xe6, 0x50, 0x66, 0xd6, 0x37, 0xe3, 0x0c, 0x8b, 0x7d, 0x0d, 0xcb, 0xb8, 0x09, 0xaa, 0xe6, + 0x8d, 0xa1, 0x7d, 0x8f, 0xef, 0xd5, 0x1e, 0xde, 0x72, 0xc3, 0x1a, 0xe0, 0x5d, 0x3d, 0x22, + 0x03, 0xfa, 0x5e, 0x7f, 0x06, 0xce, 0x63, 0xc6, 0x37, 0x0d, 0x7c, 0xba, 0xaf, 0xa5, 0xbd, + 0xd1, 0x4b, 0xc4, 0x06, 0x45, 0x7a, 0x30, 0x1f, 0x91, 0xe8, 0xe8, 0x37, 0xde, 0x2c, 0x6a, + 0x6e, 0x18, 0xe7, 0x67, 0xb7, 0xd4, 0xbb, 0xe2, 0x00, 0x21, 0x38, 0xe4, 0xdd, 0x83, 0x6f, + 0xeb, 0x78, 0xd1, 0xf0, 0xac, 0xea, 0xa7, 0x35, 0xc0, 0x8b, 0x07, 0x74, 0x7c, 0xac, 0xb5, + 0x92, 0x51, 0x56, 0x42, 0x13, 0x2e, 0xfe, 0xf3, 0xb3, 0x03, 0x7f, 0xe5, 0x21, 0x8a, 0xc7, + 0x98, 0x8d, 0x5b, 0x6d, 0x15, 0x03, 0x74, 0xcb, 0x57, 0xe5, 0x0e, 0xb0, 0xb1, 0xef, 0xa3, + 0x35, 0xe0, 0x5e, 0x0b, 0xe9, 0xec, 0x52, 0xce, 0x3b, 0x12, 0xa7, 0xf7, 0xf4, 0x41, 0x16, + 0xf7, 0x58, 0xfb, 0xdc, 0x9f, 0xce, 0xe6, 0x65, 0xe3, 0xbb, 0xe6, 0xda, 0x45, 0x60, 0x9c, + 0xda, 0x02, 0xe1, 0x1a, 0xfe, 0x6f, 0xaf, 0x55, 0xab, 0x06, 0xc8, 0x85, 0xb2, 0x89, 0xb8, + 0xc5, 0x20, 0xcc, 0x69, 0x61, 0x49, 0x74, 0x41, 0x36, 0x1c, 0xcc, 0x72, 0x54, 0x7e, 0xca, + 0x4c, 0xcc, 0x8a, 0x85, 0xb6, 0xac, 0xce, 0x8e, 0x7a, 0xd9, 0x3b, 0x07, 0xe1, 0x55, 0xd0, + 0x6f, 0x28, 0x2c, 0x0f, 0xad, 0x64, 0xb1, 0x52, 0x45, 0xdc, 0x7a, 0x0d, 0xae, 0x55, 0x75, + 0x99, 0xb0, 0x5f, 0x9f, 0x4b, 0xeb, 0x1b, 0x09, 0x40, 0x5d, 0xfe, 0xe9, 0x79, 0x17, 0xf5, + 0x02, 0xac, 0xcc, 0xb9, 0xa6, 0x3f, 0x3a, 0x1a, 0x41, 0x75, 0xb5, 0xcb, 0x6e, 0xf9, 0x6b, + 0x66, 0xbe, 0x25, 0x16, 0x9c, 0x2e, 0x4f, 0xf6, 0x83, 0x23, 0x9b, 0xd2, 0xd5, 0x30, 0x05, + 0x14, 0xad, 0x6a, 0x0b, 0xe8, 0x49, 0x3b, 0x14, 0xe7, 0x21, 0x30, 0x6c, 0x23, 0x3b, 0xce, + 0x30, 0x76, 0xbf, 0x31, 0xe1, 0x32, 0x6d, 0xbf, 0x91, 0x59, 0xbd, 0xeb, 0x66, 0x84, 0xde, + 0xd5, 0x6e, 0xc1, 0x68, 0x2f, 0x2d, 0x3c, 0xef, 0x0c, 0x05, 0x6d, 0xf2, 0xd3, 0x45, 0x1f, + 0x8a, 0x3a, 0x2f, 0x50, 0xb7, 0xfe, 0x1f, 0x3e, 0xa2, 0x19, 0xab, 0x2d, 0x63, 0xf2, 0x9d, + 0x21, 0x2e, 0xe7, 0xf7, 0x25, 0x0d, 0x9f, 0x14, 0xd9, 0x5a, 0x53, 0x38, 0xe8, 0xe7, 0x73, + 0x5b, 0x1e, 0xb0, 0xb3, 0xd8, 0x2b, 0x53, 0x93, 0x46, 0x39, 0x37, 0x0e, 0x56, 0x01, 0x29, + 0xf7, 0xd7, 0x89, 0xf6, 0xea, 0x19, 0x48, 0xa3, 0x4a, 0x36, 0x2a, 0x14, 0xef, 0x3d, 0x74, + 0xa1, 0x6f, 0xf6, 0x82, 0x53, 0x0a, 0xaf, 0x75, 0x13, 0x77, 0xf9, 0xe5, 0x1c, 0x58, 0x5a, + 0xac, 0xbe, 0x97, 0xc1, 0xb0, 0xc9, 0xb0, 0xc9, 0x78, 0xb9, 0x33, 0x52, 0xbf, 0xf7, 0x0e, + 0x33, 0x76, 0xd0, 0x7f, 0xf4, 0x69, 0x19, 0x33, 0xa8, 0x8e, 0xcf, 0xe9, 0xa5, 0x67, 0x54, + 0x9d, 0x1e, 0xc9, 0x9c, 0xcc, 0xa6, 0x74, 0x40, 0x3f, 0x5a, 0x91, 0xb3, 0x9c, 0xf5, 0x21, + 0x4c, 0x03, 0x18, 0x9d, 0x04, 0x9b, 0xf7, 0xbe, 0xc6, 0x42, 0xbe, 0x5d, 0xd0, 0x28, 0xd0, + 0x27, 0xe3, 0x5d, 0x53, 0x6e, 0x6d, 0x76, 0xf7, 0x58, 0xdf, 0xb9, 0x95, 0x61, 0x5f, 0x4c, + 0x85, 0x25, 0x1d, 0x2e, 0x24, 0xbb, 0x46, 0xef, 0x6a, 0x05, 0x0b, 0x8b, 0x22, 0xc3, 0xce, + 0x03, 0xb1, 0xa9, 0x5a, 0x5b, 0x7c, 0x3e, 0xb2, 0xe6, 0x80, 0xc3, 0x22, 0x16, 0x26, 0x8a, + 0x26, 0x6c, 0x79, 0x48, 0x84, 0xc5, 0x0d, 0xe4, 0x02, 0x5e, 0x16, 0x26, 0x87, 0x8b, 0xaf, + 0x2b, 0x1c, 0x6d, 0x6c, 0x8b, 0xb0, 0x34, 0xfe, 0x68, 0xe6, 0xc4, 0x94, 0x7c, 0x39, 0xb1, + 0x2c, 0x5a, 0x49, 0x6e, 0xb0, 0x3d, 0x03, 0x05, 0x3c, 0xdd, 0x89, 0x81, 0xb7, 0xc7, 0x14, + 0x1a, 0x7e, 0xbe, 0x3c, 0x37, 0x1a, 0x2e, 0xb2, 0xb3, 0xfc, 0x29, 0x51, 0xa3, 0xdf, 0xb7, + 0x87, 0xf7, 0x7f, 0xe1, 0x5b, 0x74, 0x13, 0xd1, 0xe1, 0xbf, 0x01, 0x35, 0xc6, 0xac, 0x18, + 0x9a, 0xc2, 0x72, 0xd7, 0xfc, 0xcd, 0xc1, 0x6d, 0xf0, 0xbf, 0x52, 0x41, 0xa0, 0x6b, 0x18, + 0x48, 0x4b, 0x68, 0x09, 0xe9, 0xd7, 0xed, 0x3b, 0xbe, 0x09, 0xbc, 0x6b, 0x03, 0x8b, 0xe8, + 0xb6, 0x2d, 0x33, 0x84, 0x8e, 0x55, 0x48, 0x7f, 0x4e, 0xe7, 0x92, 0x3a, 0x6c, 0xd4, 0x1c, + 0x52, 0xe5, 0x4a, 0x61, 0xa0, 0x2e, 0xaa, 0x71, 0x68, 0xd1, 0x6a, 0x63, 0x2f, 0x2b, 0x29, + 0x8e, 0xce, 0xdd, 0x94, 0x77, 0x25, 0xcd, 0x02, 0x2c, 0x09, 0x0e, 0x5e, 0x61, 0x49, 0x8d, + 0x52, 0x9e, 0x44, 0x3f, 0x0c, 0x48, 0x1f, 0x7e, 0xcb, 0x39, 0x72, 0xca, 0x24, 0x0c, 0x03, + 0x2f, 0x3b, 0xe9, 0x41, 0x0a, 0x6f, 0xbe, 0xc7, 0x51, 0x15, 0xcf, 0xbc, 0x80, 0x1a, 0x2e, + 0x5f, 0xf5, 0x3d, 0xc8, 0x28, 0x0d, 0x2f, 0x68, 0x76, 0x0c, 0x68, 0x24, 0x0e, 0xed, 0x2a, + 0xce, 0x16, 0xfd, 0x16, 0x18, 0xed, 0x00, 0x40, 0x55, 0x84, 0x6d, 0xba, 0x42, 0x2a, 0xe2, + 0x3d, 0xfb, 0x88, 0x89, 0xe6, 0x80, 0x15, 0x4d, 0xf2, 0xa6, 0xe7, 0xe4, 0xb6, 0x40, 0x37, + 0xe1, 0x59, 0x3a, 0x06, 0xb2, 0x11, 0x82, 0x90, 0xdc, 0xf4, 0x77, 0x70, 0x15, 0x04, 0x91, + 0xc2, 0xff, 0x2a, 0x9e, 0x38, 0x29, 0x4e, 0xb5, 0x68, 0xc3, 0xaf, 0xe3, 0xfc, 0x35, 0x9c, + 0x2e, 0x85, 0xaa, 0x08, 0x0f, 0xf4, 0x4c, 0x32, 0x98, 0xf1, 0xdc, 0xf8, 0x28, 0xa3, 0xda, + 0x96, 0xa1, 0xdd, 0x84, 0xf1, 0x34, 0x5e, 0x41, 0xc4, 0x5c, 0x73, 0x13, 0x09, 0x1e, 0x8a, + 0x56, 0xd6, 0x5b, 0xc7, 0x10, 0xf5, 0x9f, 0x3a, 0x72, 0x0a, 0xc2, 0x3c, 0xb3, 0xd7, 0x8d, + 0x05, 0xe1, 0x41, 0x02, 0x02, 0x92, 0x57, 0xd1, 0xa5, 0x24, 0x08, 0x3b, 0xf2, 0x4e, 0xd5, + 0x98, 0x5c, 0xa5, 0xf4, 0xb0, 0x73, 0x2d, 0x6c, 0xbb, 0x2c, 0x68, 0x06, 0xf4, 0x75, 0x42, + 0x8c, 0xed, 0xe6, 0x97, 0x09, 0xaa, 0x6e, 0x2d, 0x1b, 0x0f, 0x2f, 0x32, 0xe7, 0xbb, 0xde, + 0x25, 0x23, 0xc3, 0xc4, 0x24, 0x99, 0x16, 0x5a, 0x96, 0x15, 0xcc, 0x2e, 0x7c, 0x33, 0xfd, + 0xaa, 0x4e, 0xe7, 0xe8, 0xe8, 0x72, 0x37, 0xc5, 0x31, 0x94, 0x8f, 0x71, 0x85, 0x74, 0xcf, + 0x81, 0x26, 0x18, 0x33, 0x48, 0xb2, 0x1d, 0xca, 0x1e, 0x0b, 0x33, 0x2c, 0xf7, 0x3f, 0xb7, + 0x2e, 0xba, 0x76, 0xd4, 0xd4, 0xcb, 0xe1, 0xdc, 0x0f, 0xd1, 0x1b, 0xf6, 0xbf, 0x43, 0xe3, + 0xa8, 0x90, 0x2c, 0xe5, 0xd8, 0x4d, 0x0d, 0xd1, 0x87, 0x86, 0xb6, 0x35, 0x88, 0xcf, 0xe5, + 0xf1, 0x4b, 0x37, 0x0b, 0xbe, 0x49, 0xf7, 0xcf, 0xfe, 0x4a, 0xd9, 0x94, 0x3f, 0x84, 0xc3, + 0xb1, 0x50, 0x9d, 0x60, 0xff, 0x2c, 0xe8, 0xb1, 0xec, 0x7f, 0x3f, 0x3d, 0x32, 0xec, 0x9c, + 0xc4, 0x64, 0xcb, 0x1d, 0x08, 0x1b, 0xe2, 0x59, 0x5f, 0x57, 0x2c, 0xf9, 0xab, 0xec, 0x6e, + 0xeb, 0xd0, 0xeb, 0x4a, 0x2d, 0xee, 0xaf, 0x47, 0xd7, 0x27, 0xe4, 0x74, 0x5c, 0xe5, 0x1b, + 0x3c, 0x49, 0x63, 0x0a, 0xec, 0xab, 0x02, 0xd3, 0x06, 0xd5, 0x03, 0xa9, 0x39, 0x22, 0xd2, + 0x61, 0xf6, 0xaf, 0x5e, 0x78, 0x4f, 0xe6, 0xef, 0xe9, 0xd4, 0xb2, 0x88, 0x95, 0x62, 0xa1, + 0xed, 0x8c, 0xec, 0xc3, 0xdc, 0x43, 0x65, 0x8b, 0x2b, 0xc0, 0x78, 0x35, 0x7f, 0x83, 0xd0, + 0x98, 0x2a, 0xc7, 0xe4, 0xe8, 0xd6, 0xbc, 0x77, 0x56, 0x26, 0xcf, 0xd8, 0x1a, 0x54, 0x31, + 0x53, 0x59, 0x2e, 0x79, 0x63, 0x69, 0x74, 0x57, 0x7a, 0x20, 0x27, 0xaf, 0x51, 0x71, 0x84, + 0xab, 0x4b, 0x0a, 0x83, 0xb2, 0x8d, 0xe1, 0x68, 0x86, 0x11, 0x8e, 0x34, 0xe5, 0x27, 0xf0, + 0x60, 0x4a, 0xeb, 0x97, 0xbc, 0xb6, 0x22, 0xa1, 0x47, 0x83, 0x33, 0x88, 0x18, 0xa4, 0x49, + 0x31, 0x8b, 0x96, 0x67, 0x6b, 0x96, 0x14, 0x36, 0x60, 0xe8, 0xe6, 0x8e, 0xdf, 0x12, 0x4e, + 0x29, 0xb5, 0xf2, 0x19, 0x15, 0x67, 0xe0, 0xcf, 0xf9, 0xc8, 0x39, 0x4d, 0x29, 0x1e, 0x24, + 0x26, 0x6c, 0x17, 0x24, 0x46, 0xce, 0x92, 0xf5, 0x2a, 0x54, 0x03, 0xc8, 0x76, 0x07, 0xb8, + 0x37, 0xc1, 0x01, 0x21, 0x93, 0x86, 0xef, 0xaf, 0x43, 0xed, 0x83, 0x63, 0xce, 0x8b, 0xf3, + 0x36, 0x2c, 0x1f, 0xb3, 0xf3, 0xa1, 0xb0, 0x5c, 0xba, 0x0b, 0xb7, 0x06, 0x79, 0xc3, 0x3f, + 0x43, 0x91, 0x73, 0x35, 0x8f, 0xc4, 0xf4, 0xb0, 0xde, 0xfd, 0x1f, 0xbc, 0xd4, 0x60, 0xc2, + 0x1a, 0xa2, 0x51, 0x04, 0x2e, 0x12, 0xee, 0xfd, 0xaa, 0xc1, 0x87, 0xcb, 0xe2, 0x50, 0x9e, + 0x44, 0x98, 0x3d, 0xba, 0x90, 0xda, 0xaa, 0x9f, 0x02, 0xd5, 0x42, 0x4e, 0xd1, 0xdb, 0xa6, + 0xa0, 0x28, 0xf0, 0x61, 0x17, 0x00, 0x0d, 0x59, 0x2a, 0xc6, 0x5b, 0x54, 0x80, 0x96, 0x0b, + 0xcb, 0x19, 0xd8, 0x3e, 0x00, 0x49, 0xc6, 0x68, 0x0a, 0xf3, 0x25, 0x20, 0x7b, 0xe3, 0xab, + 0x31, 0x73, 0x20, 0xf8, 0x03, 0x5a, 0x0f, 0x3e, 0xf6, 0xb0, 0xb1, 0x37, 0x1d, 0x1d, 0xfa, + 0xbd, 0x08, 0xaa, 0xf3, 0xaa, 0xe6, 0xab, 0x75, 0xfc, 0x27, 0x3e, 0xa7, 0x30, 0x04, 0xfa, + 0xe8, 0x78, 0x54, 0x74, 0x3f, 0x6a, 0x24, 0x9e, 0x8b, 0x17, 0xb1, 0x83, 0x65, 0x42, 0x83, + 0xd3, 0x76, 0x85, 0xfa, 0x66, 0x07, 0x59, 0x70, 0x58, 0xb8, 0xb6, 0x78, 0x50, 0x3b, 0x4d, + 0x19, 0x8c, 0xac, 0x92, 0xe0, 0x10, 0xea, 0x51, 0x23, 0xa7, 0x2d, 0x09, 0x8a, 0x26, 0x30, + 0xed, 0xec, 0x6d, 0x02, 0xa2, 0xe2, 0x70, 0x30, 0x15, 0x9d, 0x89, 0x39, 0xfc, 0xd4, 0x89, + 0x8b, 0x28, 0x30, 0x70, 0x60, 0xc3, 0x75, 0x5e, 0x6e, 0x6c, 0xe1, 0xdf, 0x3e, 0x27, 0x3b, + 0x56, 0xde, 0x1a, 0xe9, 0x16, 0x5e, 0x9f, 0x3e, 0x77, 0x5c, 0x03, 0xe0, 0x99, 0x74, 0x4f, + 0x14, 0xd1, 0xaf, 0x4a, 0x18, 0x85, 0x70, 0xa2, 0xa7, 0x51, 0xe3, 0x01, 0xf6, 0x76, 0x4b, + 0x28, 0x66, 0x58, 0x3e, 0xf0, 0x57, 0x7e, 0x72, 0xed, 0xa1, 0x94, 0x47, 0x2a, 0x9a, 0xb0, + 0xd5, 0x49, 0x71, 0x11, 0x6a, 0xf5, 0x9f, 0x25, 0x07, 0xb5, 0xe9, 0xc0, 0xd5, 0x92, 0xbf, + 0x9b, 0x40, 0x33, 0x23, 0x59, 0xb4, 0xe6, 0x07, 0x36, 0x9f, 0xe5, 0xbf, 0x38, 0x14, 0x58, + 0x7b, 0x3f, 0x4d, 0x63, 0x70, 0x49, 0x4f, 0x29, 0x2d, 0xd1, 0xa3, 0x57, 0x8f, 0x73, 0x1e, + 0xa5, 0x10, 0x3a, 0x65, 0x2b, 0x7f, 0xe5, 0x33, 0x7a, 0xcf, 0x79, 0xf1, 0xfa, 0x70, 0xb4, + 0xa8, 0x2f, 0xc2, 0x8d, 0xb4, 0x52, 0x0a, 0xbb, 0xaa, 0x69, 0x81, 0xd8, 0x83, 0x70, 0x9a, + 0xff, 0xf9, 0x51, 0x91, 0x30, 0x01, 0x27, 0xa7, 0x88, 0x2b, 0xec, 0x3a, 0x99, 0x0b, 0x79, + 0x73, 0x3a, 0x81, 0xe5, 0x20, 0x0c, 0x6a, 0xc5, 0x7b, 0xa2, 0x86, 0x78, 0x63, 0x01, 0x5b, + 0xb0, 0x92, 0x1c, 0x07, 0xba, 0xe4, 0x0f, 0x8a, 0x31, 0x81, 0x4d, 0x87, 0xe2, 0x13, 0xc5, + 0x44, 0x7e, 0xf8, 0x16, 0xb1, 0x87, 0x0b, 0x71, 0x00, 0x6f, 0x03, 0x3b, 0xfe, 0x14, 0xb5, + 0xb0, 0x37, 0xe1, 0xcd, 0xa6, 0xb3, 0xe9, 0x45, 0x35, 0x8c, 0x1c, 0x97, 0xf3, 0x5c, 0xf5, + 0xdb, 0x2a, 0x91, 0x75, 0x29, 0xd0, 0xe9, 0xb5, 0x02, 0x48, 0x4c, 0x25, 0x45, 0x1d, 0xfb, + 0x40, 0xd8, 0x25, 0xcf, 0x99, 0xbf, 0x3e, 0x12, 0x26, 0x30, 0xa7, 0x57, 0x16, 0x19, 0xf3, + 0x51, 0xcc, 0x98, 0x8f, 0x0a, 0x45, 0x49, 0xaa, 0x3c, 0x9d, 0x7e, 0xc5, 0xde, 0x25, 0x58, + 0x72, 0x02, 0xf4, 0x6b, 0x1f, 0x7b, 0x7d, 0x3e, 0x66, 0x43, 0x2f, 0x8e, 0x07, 0x8b, 0x26, + 0x89, 0xc9, 0xae, 0xa0, 0x41, 0x02, 0x77, 0x82, 0xe9, 0xbe, 0xbc, 0x1f, 0x15, 0xb9, 0xa1, + 0x7c, 0x0d, 0xe3, 0x13, 0x9f, 0xa0, 0x75, 0x53, 0x8d, 0x49, 0x0f, 0x59, 0xb8, 0x94, 0x40, + 0x79, 0x10, 0x51, 0xd7, 0x58, 0x87, 0xda, 0x2a, 0x89, 0x2a, 0x7b, 0xd3, 0x6c, 0xae, 0x79, + 0x34, 0x5c, 0x13, 0x57, 0x34, 0x0a, 0x79, 0xe0, 0x91, 0x0f, 0x90, 0xb4, 0x8a, 0xcf, 0xbe, + 0x4a, 0xa9, 0xdc, 0x2d, 0x03, 0xd9, 0xa2, 0xb7, 0xef, 0x37, 0xf7, 0x01, 0x99, 0xdf, 0xef, + 0xb4, 0x87, 0x70, 0xf3, 0xea, 0xc6, 0x9b, 0x55, 0xf7, 0xd0, 0x5f, 0x0a, 0x18, 0x89, 0x1c, + 0xad, 0xe1, 0xb4, 0x07, 0x75, 0x38, 0xb4, 0x03, 0x9b, 0xb6, 0x23, 0xb0, 0xb1, 0xfc, 0xc9, + 0x7b, 0x1f, 0x75, 0x79, 0x08, 0x05, 0x2d, 0x0a, 0x6d, 0xf7, 0x64, 0x32, 0xf8, 0x43, 0x77, + 0xba, 0x70, 0x87, 0x69, 0x8e, 0x98, 0x41, 0x11, 0x4b, 0x40, 0x3a, 0xcf, 0x54, 0x15, 0xde, + 0xb6, 0x67, 0x31, 0x20, 0x39, 0x6b, 0x71, 0x66, 0x06, 0xee, 0x23, 0xf5, 0x4e, 0x9e, 0x81, + 0x56, 0x27, 0x51, 0xd7, 0xcf, 0xd9, 0xe8, 0x32, 0xe0, 0x1c, 0xb2, 0xc0, 0xbe, 0xd2, 0xb1, + 0xea, 0xca, 0xec, 0xa7, 0x66, 0xa9, 0x73, 0x15, 0x48, 0x3a, 0xba, 0xd7, 0x81, 0xc7, 0x92, + 0xd2, 0x78, 0xe9, 0x4d, 0xd9, 0xce, 0xca, 0xd7, 0x27, 0x08, 0x4a, 0x26, 0xbb, 0x24, 0xa4, + 0x2f, 0xca, 0x18, 0xb7, 0x67, 0x2e, 0x6e, 0x89, 0x3d, 0x78, 0xbc, 0x20, 0x87, 0x1a, 0xbf, + 0x6c, 0x4b, 0x73, 0xde, 0x1e, 0x99, 0xc7, 0x4a, 0x5c, 0xc8, 0x40, 0xd1, 0x97, 0x11, 0x38, + 0x12, 0x72, 0x4b, 0x7d, 0x8f, 0x95, 0xc5, 0x13, 0xdf, 0xa0, 0x76, 0xb3, 0xd6, 0xfb, 0xf5, + 0xe4, 0xbf, 0x55, 0xfb, 0x37, 0xe4, 0xd6, 0x78, 0x47, 0x0b, 0xfd, 0x57, 0xd1, 0x98, 0xb3, + 0x25, 0x10, 0x12, 0x43, 0x2b, 0x92, 0x9f, 0xe9, 0x4a, 0x4a, 0xaf, 0x01, 0xbd, 0xef, 0x22, + 0xba, 0xf2, 0x95, 0xc3, 0xde, 0x1f, 0x50, 0xa0, 0x55, 0xb1, 0xe1, 0x2a, 0xe9, 0xe1, 0x35, + 0x9c, 0xcd, 0x29, 0x7e, 0xa6, 0xd6, 0x99, 0x49, 0xc0, 0xa2, 0x28, 0x08, 0x9f, 0x75, 0x83, + 0x90, 0xe3, 0x1e, 0xc3, 0x40, 0xe7, 0xb9, 0x64, 0xb7, 0xd5, 0x8f, 0x98, 0x88, 0xa1, 0x1b, + 0x37, 0xf5, 0x0c, 0x1e, 0x1d, 0x12, 0x16, 0xb9, 0x10, 0x54, 0x6b, 0xd9, 0xb8, 0x24, 0x97, + 0x08, 0xf3, 0x2a, 0xb6, 0x96, 0x89, 0xd5, 0x11, 0x0a, 0x6a, 0x60, 0xc3, 0x2d, 0x4f, 0x42, + 0x15, 0x97, 0x4f, 0x00, 0xb5, 0x16, 0x34, 0x42, 0xae, 0xa9, 0x66, 0x9d, 0xb9, 0xbb, 0x67, + 0x7b, 0x2b, 0xa4, 0x04, 0x3c, 0x89, 0x0f, 0x0f, 0x28, 0xd0, 0x89, 0x89, 0x0a, 0x91, 0x74, + 0x29, 0x4c, 0x10, 0xac, 0xdd, 0x47, 0xb0, 0xcd, 0x14, 0x22, 0x42, 0x4b, 0x4d, 0x58, 0x60, + 0xa9, 0x2b, 0xf6, 0xf3, 0x0e, 0xe0, 0xd1, 0xf4, 0xe8, 0xef, 0xf4, 0x7a, 0xb1, 0x68, 0x40, + 0x79, 0x38, 0xa5, 0x4c, 0x68, 0xc2, 0xad, 0x37, 0x0c, 0x77, 0x33, 0x4a, 0x1d, 0x84, 0x57, + 0x7f, 0x93, 0xf2, 0xd3, 0xb1, 0xef, 0x02, 0xb9, 0x2a, 0xa9, 0xca, 0xb4, 0xc9, 0x26, 0x43, + 0xc5, 0x45, 0x76, 0x3a, 0x23, 0x82, 0x6d, 0x18, 0x92, 0xde, 0x88, 0xbf, 0x2e, 0xfc, 0x67, + 0x5c, 0xa7, 0x6c, 0x0f, 0xfe, 0x5e, 0x3f, 0xf8, 0xd7, 0xcd, 0xa0, 0x49, 0x15, 0xda, 0xd3, + 0x57, 0xfc, 0x0d, 0xb2, 0x36, 0x9b, 0x85, 0x12, 0x8d, 0xfd, 0xea, 0x57, 0xe9, 0x25, 0x1d, + 0x3e, 0x0a, 0x23, 0x41, 0x0f, 0x1f, 0xc5, 0x25, 0x9f, 0xa8, 0xe5, 0xa9, 0xd0, 0xdc, 0xde, + 0x99, 0xce, 0xd0, 0x60, 0x4f, 0xfb, 0xcb, 0xc9, 0x01, 0x8b, 0x3d, 0xb0, 0xa7, 0xa9, 0xd3, + 0x63, 0x26, 0xdd, 0x0a, 0xfd, 0x0e, 0x74, 0xd8, 0x7a, 0xd8, 0xaf, 0x13, 0x2b, 0xbf, 0xf1, + 0x33, 0x43, 0xfe, 0xf9, 0x13, 0x4c, 0x84, 0x28, 0xc8, 0x4f, 0xce, 0x90, 0x86, 0x18, 0x3a, + 0xdd, 0x1c, 0x2b, 0x19, 0x4c, 0x26, 0x82, 0xef, 0x02, 0xd5, 0x78, 0xa0, 0xda, 0x8e, 0x62, + 0xff, 0x8d, 0xf8, 0x5e, 0xba, 0x69, 0xc0, 0x16, 0xb7, 0x39, 0xa1, 0xaa, 0xfc, 0xff, 0x4c, + 0x4f, 0x54, 0xb8, 0x7a, 0x3a, 0x0b, 0xc2, 0x76, 0xce, 0xe2, 0x81, 0x8c, 0x68, 0xfc, 0x3a, + 0xc5, 0x57, 0xee, 0x74, 0x16, 0x39, 0x3d, 0xf4, 0x0d, 0xb8, 0x20, 0x21, 0x0d, 0x10, 0xa0, + 0xc0, 0xe8, 0xc4, 0x26, 0xe7, 0x7b, 0x97, 0x00, 0xf4, 0x8d, 0x1c, 0x23, 0x37, 0x23, 0x63, + 0xa6, 0x5f, 0x6a, 0xe4, 0x6a, 0x5d, 0x82, 0xdd, 0x4b, 0xeb, 0xd9, 0x3d, 0x44, 0xfd, 0xe3, + 0x97, 0x24, 0x3d, 0xcd, 0x1a, 0xde, 0xa8, 0xba, 0xb7, 0x0d, 0x3a, 0x67, 0xfe, 0xa6, 0xe9, + 0x37, 0x1e, 0xbe, 0x96, 0x85, 0xba, 0x22, 0xf4, 0x04, 0x29, 0xe4, 0x66, 0x6a, 0x90, 0x2b, + 0x16, 0x05, 0xeb, 0xc6, 0xdc, 0x77, 0x70, 0x92, 0x17, 0x41, 0xed, 0x38, 0xce, 0x97, 0xe4, + 0x50, 0xfb, 0x89, 0xb6, 0x04, 0x0f, 0xa6, 0x3d, 0x5c, 0x66, 0x8d, 0xc6, 0x62, 0x98, 0x0b, + 0x10, 0x5d, 0xf3, 0xdd, 0xc9, 0x82, 0x25, 0x71, 0x24, 0xa2, 0x55, 0xe1, 0x43, 0x1c, 0x71, + 0xf4, 0x7b, 0x9a, 0x8e, 0x9c, 0x32, 0x3c, 0x9b, 0xa8, 0x6b, 0xec, 0x06, 0xdf, 0xe7, 0xee, + 0x77, 0x55, 0xcc, 0x4f, 0xd2, 0x8e, 0x0d, 0x24, 0x7c, 0x27, 0xb4, 0x23, 0xd4, 0x3d, 0x32, + 0x3a, 0x1b, 0x60, 0x73, 0x4f, 0xec, 0x82, 0x50, 0x61, 0x01, 0x37, 0x3c, 0x61, 0x2d, 0xda, + 0xd3, 0xaa, 0xbc, 0x7c, 0xc7, 0x9c, 0xc5, 0x54, 0xfc, 0xa8, 0x7d, 0x6b, 0x3b, 0x47, 0x89, + 0x1f, 0x9e, 0x27, 0x21, 0x11, 0xab, 0xe2, 0xc9, 0x40, 0x83, 0x19, 0x50, 0x6b, 0xc7, 0xcb, + 0xd4, 0xcc, 0xdb, 0xee, 0x62, 0x5c, 0x69, 0x8a, 0xc4, 0x00, 0xe9, 0xa0, 0x2f, 0x2e, 0x36, + 0xb5, 0x25, 0xd1, 0xb0, 0x28, 0x7d, 0xfe, 0xf1, 0x8d, 0xc0, 0xa1, 0xf9, 0xbd, 0xdc, 0xc4, + 0x96, 0x89, 0x4e, 0x20, 0x5a, 0x8c, 0x72, 0x41, 0xd2, 0x6b, 0x15, 0x49, 0x82, 0x38, 0x46, + 0x0c, 0x93, 0xb9, 0xd5, 0x48, 0x07, 0x30, 0x8a, 0x12, 0xfc, 0x74, 0xb9, 0x4e, 0xa3, 0x5e, + 0x89, 0x59, 0xb5, 0xcb, 0x4d, 0x80, 0xaf, 0x29, 0xde, 0x50, 0x49, 0x0b, 0xf4, 0x9e, 0x16, + 0x03, 0xee, 0x15, 0xe6, 0x6a, 0x51, 0x9d, 0x80, 0x1f, 0xe9, 0x36, 0xf4, 0x57, 0x8c, 0x16, + 0xd4, 0xb4, 0x04, 0xf7, 0x8f, 0x27, 0x42, 0x29, 0x70, 0xc1, 0x77, 0xa4, 0xd8, 0x7d, 0x8b, + 0xef, 0xc9, 0x31, 0xb6, 0xb5, 0xd8, 0xf2, 0xb5, 0x0b, 0x24, 0x14, 0x17, 0x0a, 0x2b, 0xf4, + 0x7d, 0xde, 0x4b, 0x58, 0x21, 0x22, 0xc5, 0x21, 0xce, 0x48, 0x32, 0x99, 0xf8, 0xd0, 0xb4, + 0x14, 0x5b, 0x97, 0x10, 0x07, 0xbc, 0x6a, 0x4b, 0x99, 0x82, 0xdc, 0x1a, 0x0e, 0x79, 0x13, + 0xf9, 0x2a, 0x4e, 0xb1, 0x2c, 0xb2, 0xa6, 0x14, 0x3e, 0xef, 0xdb, 0x27, 0xb9, 0x42, 0x8d, + 0x3c, 0x99, 0x2b, 0xda, 0xa2, 0x20, 0x83, 0x1a, 0x61, 0xdb, 0xf8, 0x97, 0x2c, 0xb3, 0x1a, + 0x62, 0x38, 0x25, 0x78, 0x92, 0xd6, 0xfe, 0x03, 0x0e, 0xe2, 0x7b, 0x45, 0x1b, 0xf5, 0xcb, + 0xf2, 0x66, 0xb8, 0x51, 0xd6, 0x2c, 0x80, 0xdf, 0x9f, 0xc2, 0x4d, 0x80, 0x64, 0xad, 0x28, + 0xfd, 0x1a, 0xab, 0xe7, 0xec, 0x33, 0xf8, 0x63, 0x6b, 0x83, 0xf8, 0x30, 0xb1, 0xd4, 0x41, + 0xa1, 0xdc, 0x0c, 0xfb, 0x65, 0x52, 0x29, 0x65, 0x61, 0x09, 0xe7, 0xcf, 0x56, 0xff, 0x42, + 0x6d, 0x90, 0x7f, 0x38, 0x3d, 0x54, 0xb7, 0xe8, 0xb7, 0x7d, 0xc5, 0x58, 0xdd, 0xdd, 0x0c, + 0x16, 0x44, 0x3f, 0xfd, 0xa0, 0x7a, 0x47, 0x7c, 0x11, 0x22, 0x19, 0x3b, 0xed, 0xd1, 0x7f, + 0x04, 0x54, 0x96, 0x7a, 0x14, 0x29, 0x18, 0xa4, 0x94, 0x6b, 0x90, 0xf7, 0x5a, 0x70, 0x71, + 0xaa, 0xab, 0x03, 0xb5, 0xec, 0x89, 0xaf, 0xbd, 0xea, 0xd6, 0xf3, 0xf6, 0x7a, 0x07, 0x20, + 0xb1, 0xfd, 0x2c, 0x99, 0x68, 0x75, 0x19, 0xb6, 0x4b, 0x04, 0x8a, 0xb1, 0x3c, 0xd1, 0x3a, + 0xc7, 0x4f, 0x5e, 0xc4, 0xa2, 0xb6, 0x22, 0xd8, 0xd0, 0xe1, 0x38, 0x8c, 0xc6, 0x59, 0xcb, + 0x00, 0x07, 0xd0, 0x1a, 0xfd, 0x11, 0x58, 0x08, 0xc8, 0x87, 0x16, 0x65, 0xf1, 0x5d, 0xed, + 0xfc, 0xa0, 0x2e, 0x7d, 0xd1, 0x77, 0x21, 0x0d, 0xbf, 0xf0, 0xd2, 0x0c, 0x36, 0xa1, 0xd4, + 0xdb, 0xaa, 0xae, 0x64, 0x8b, 0x6d, 0x48, 0xb8, 0xfd, 0xb5, 0xc6, 0x28, 0xd3, 0x6e, 0xe7, + 0x37, 0x61, 0x01, 0x00, 0xf1, 0x07, 0x3e, 0x12, 0xd8, 0xb7, 0x0a, 0xa9, 0xf9, 0xff, 0x3a, + 0x89, 0x85, 0xe5, 0xcd, 0x4f, 0x4b, 0xd7, 0x9c, 0xf8, 0x35, 0x13, 0x07, 0x4c, 0x2b, 0x45, + 0x03, 0x2b, 0xde, 0x07, 0xb2, 0x27, 0x31, 0x40, 0x30, 0x52, 0xb8, 0x41, 0x9d, 0xd1, 0x80, + 0x3a, 0x74, 0x78, 0x1b, 0x73, 0x31, 0xce, 0x06, 0x59, 0xcc, 0x6d, 0x3d, 0xd7, 0xe5, 0xc2, + 0x9f, 0x03, 0x36, 0x0f, 0xc0, 0x5c, 0x14, 0x30, 0x1b, 0x3f, 0x53, 0xd7, 0xd9, 0x88, 0xfd, + 0x71, 0xa3, 0x48, 0xa4, 0xa0, 0xa7, 0x76, 0xa3, 0x70, 0x8d, 0x05, 0x57, 0xe7, 0x37, 0x7e, + 0xce, 0xbd, 0x98, 0x4f, 0x8e, 0x7b, 0x6e, 0x3a, 0x59, 0x57, 0x38, 0x11, 0xa0, 0xb6, 0x09, + 0xd2, 0x8b, 0x2a, 0x13, 0x79, 0x47, 0x48, 0x8a, 0x4c, 0xdf, 0xa0, 0xed, 0x6f, 0x98, 0xfc, + 0x7c, 0x63, 0x97, 0x0c, 0x2e, 0xc7, 0xcf, 0x75, 0x81, 0x84, 0x1b, 0xc2, 0xd7, 0x74, 0x83, + 0x8b, 0xc6, 0xae, 0xf8, 0x36, 0xc3, 0xa2, 0x4d, 0xcc, 0x70, 0xe5, 0xe6, 0x29, 0x54, 0x84, + 0x70, 0xef, 0x45, 0xf5, 0x65, 0x72, 0x88, 0x25, 0x4e, 0xaa, 0xad, 0xc3, 0x46, 0x60, 0x0e, + 0xdc, 0xb3, 0xd0, 0x78, 0xc6, 0x59, 0x67, 0x30, 0xa3, 0x51, 0x89, 0x83, 0x3b, 0xc0, 0x37, + 0xdf, 0xff, 0xd0, 0x64, 0x57, 0xdd, 0x29, 0xbb, 0x80, 0xbd, 0x23, 0x69, 0xf2, 0x4f, 0x06, + 0x8d, 0xd9, 0xae, 0x01, 0x25, 0x40, 0xde, 0x43, 0x22, 0x30, 0xf8, 0x84, 0x6e, 0x30, 0x1c, + 0xe4, 0xfb, 0x08, 0x5e, 0x97, 0x0c, 0x8b, 0xc3, 0xe3, 0x0d, 0xad, 0xed, 0x87, 0xfc, 0x12, + 0xb0, 0x22, 0x51, 0x79, 0xb4, 0xbb, 0x1f, 0xc0, 0xe0, 0x3c, 0x3c, 0x73, 0x61, 0x98, 0xa7, + 0xef, 0xcd, 0x32, 0xa4, 0xef, 0x2d, 0x04, 0x3a, 0x64, 0x2f, 0xcc, 0x73, 0x13, 0xed, 0x87, + 0x33, 0x36, 0xed, 0xf8, 0xef, 0x41, 0xab, 0xbf, 0x5b, 0xb8, 0x2f, 0x66, 0x66, 0xab, 0x60, + 0xcb, 0xd6, 0x4f, 0x5d, 0xaf, 0x9a, 0xf8, 0xcc, 0x24, 0xb5, 0xba, 0xdb, 0x41, 0x9e, 0x30, + 0x01, 0xcf, 0x98, 0xf2, 0xd6, 0x36, 0x50, 0x11, 0xe9, 0xfd, 0x57, 0x24, 0xd0, 0x6a, 0x4d, + 0xb4, 0x6a, 0x07, 0xc7, 0xe3, 0x20, 0xe5, 0xec, 0x77, 0x6e, 0xb2, 0x69, 0x8d, 0xd0, 0x55, + 0xe2, 0x20, 0x58, 0x6a, 0x39, 0x2a, 0x46, 0x6e, 0x77, 0xd5, 0x39, 0xaf, 0x3e, 0x1e, 0xdc, + 0x87, 0x52, 0x88, 0xd1, 0x9e, 0x73, 0x5e, 0xf0, 0x86, 0x42, 0x6a, 0xf5, 0x89, 0xe1, 0xe9, + 0x20, 0x75, 0x85, 0x1c, 0xa6, 0x4b, 0xca, 0x47, 0x01, 0x02, 0xc7, 0x73, 0xe4, 0x73, 0x2b, + 0xe5, 0x6c, 0xb5, 0xf5, 0xef, 0xf6, 0xa4, 0x61, 0x8a, 0x3a, 0xb2, 0x32, 0x54, 0x7b, 0x60, + 0xd7, 0xf3, 0x1d, 0xa8, 0xae, 0x29, 0xb7, 0xcd, 0xaa, 0xe6, 0x86, 0x66, 0xa9, 0x66, 0xd6, + 0xf1, 0x03, 0xe4, 0xe0, 0xb4, 0x59, 0xf9, 0x84, 0x9f, 0x53, 0x49, 0x5b, 0xd5, 0x63, 0xe3, + 0xab, 0x61, 0xc4, 0x12, 0x67, 0xe9, 0x39, 0x07, 0x89, 0x96, 0xc1, 0xff, 0x16, 0x87, 0x50, + 0x59, 0x42, 0x5d, 0x1f, 0x7e, 0x21, 0xfb, 0xd7, 0x2e, 0x1b, 0xc2, 0x3c, 0xa8, 0x2d, 0x44, + 0xc4, 0x62, 0x1c, 0xfa, 0xc8, 0x44, 0x35, 0x8f, 0xd2, 0x3b, 0xa9, 0x86, 0xf8, 0x17, 0x18, + 0xe7, 0xcf, 0x53, 0x23, 0x73, 0x98, 0xc2, 0xc1, 0x56, 0x94, 0xf4, 0x6c, 0xf3, 0x63, 0x25, + 0x95, 0xc2, 0xf1, 0x75, 0x3f, 0xa5, 0x69, 0x80, 0xd3, 0x00, 0x76, 0x1b, 0xf1, 0x01, 0x0d, + 0x47, 0x54, 0x5b, 0x46, 0x6b, 0xc7, 0xcf, 0x09, 0x15, 0xf9, 0x96, 0xb6, 0x33, 0x5c, 0xc4, + 0xc7, 0xfe, 0x23, 0xe5, 0xbf, 0x21, 0xb5, 0x9e, 0xd5, 0x58, 0xb8, 0x88, 0x29, 0x82, 0xfd, + 0xbc, 0x4b, 0xcc, 0x0e, 0x23, 0x0d, 0x71, 0x03, 0xdc, 0x7d, 0x51, 0xe1, 0xd9, 0x57, 0xad, + 0x92, 0xdb, 0xdd, 0x7b, 0xd4, 0x6b, 0x80, 0xce, 0x19, 0x6d, 0xd0, 0x0f, 0x8d, 0xac, 0x51, + 0x27, 0x25, 0xbd, 0xcd, 0xee, 0xa6, 0xbd, 0xf6, 0x78, 0xa3, 0xe7, 0x7e, 0x0b, 0x36, 0xac, + 0xcb, 0x44, 0xf7, 0x5b, 0x23, 0x34, 0x39, 0x03, 0xd6, 0x8b, 0x39, 0x63, 0x96, 0x08, 0x09, + 0x6d, 0x7e, 0x0f, 0xd9, 0x41, 0x37, 0x4f, 0x16, 0x91, 0x32, 0x4f, 0xa7, 0xe6, 0xa5, 0xc7, + 0xad, 0x89, 0xff, 0xf0, 0x86, 0xfb, 0x51, 0x60, 0xa9, 0xef, 0x73, 0x66, 0xda, 0xfd, 0x08, + 0x2c, 0x68, 0x88, 0x7d, 0x8a, 0x80, 0x82, 0x76, 0xf7, 0x50, 0x4f, 0xef, 0x46, 0x0a, 0xf7, + 0xb0, 0x82, 0x34, 0x44, 0xa2, 0xa3, 0x0a, 0x62, 0x57, 0xff, 0x58, 0x8b, 0xf8, 0x07, 0x5a, + 0xdd, 0x92, 0x9c, 0x26, 0x2c, 0x7f, 0xb4, 0xe9, 0x83, 0x7b, 0x75, 0x03, 0xfd, 0xed, 0x41, + 0xfc, 0x4e, 0x3e, 0xaf, 0x4e, 0xbe, 0xde, 0x17, 0x18, 0x90, 0x55, 0x22, 0xc6, 0x0e, 0x18, + 0x03, 0x3f, 0xbc, 0x5b, 0x07, 0x01, 0xc7, 0x94, 0x00, 0xa9, 0x73, 0x91, 0xc8, 0x7f, 0x06, + 0x04, 0xb2, 0x6b, 0x9d, 0xdf, 0x23, 0x18, 0x4b, 0x0d, 0x74, 0x28, 0x3e, 0x00, 0x8e, 0x22, + 0xae, 0x17, 0xb2, 0x7f, 0xe4, 0x29, 0x6c, 0x04, 0x01, 0x05, 0x0a, 0xc0, 0xe1, 0x55, 0x6e, + 0x7c, 0x06, 0x9f, 0x03, 0x32, 0x13, 0xf1, 0x96, 0xfb, 0x1c, 0x14, 0x14, 0x80, 0x43, 0x9b, + 0xa8, 0x75, 0x00, 0x5f, 0xc2, 0xcd, 0x0d, 0xd0, 0xff, 0xcb, 0xfc, 0x5e, 0x10, 0x9f, 0xf3, + 0x61, 0x04, 0x96, 0x4b, 0x2a, 0x8f, 0x85, 0x49, 0x70, 0x23, 0xe5, 0x34, 0xdb, 0xdd, 0x50, + 0x23, 0x3c, 0xa9, 0xa5, 0x4e, 0x93, 0xf4, 0x0a, 0x6a, 0xdd, 0x13, 0xb6, 0x9a, 0x39, 0x1b, + 0xc6, 0xff, 0x24, 0x3b, 0x0c, 0x78, 0x05, 0x2b, 0x5c, 0xe4, 0xa8, 0x27, 0xf3, 0xde, 0xf8, + 0x8a, 0xbf, 0x00, 0x58, 0x56, 0xbf, 0xdb, 0x12, 0x9a, 0x39, 0xd1, 0x99, 0xdc, 0xc5, 0x89, + 0xb2, 0xbe, 0x19, 0x0f, 0xf5, 0x08, 0xcd, 0xc8, 0xdc, 0x3e, 0x43, 0x9b, 0x00, 0x47, 0x39, + 0x41, 0x40, 0x4a, 0x04, 0x92, 0xea, 0x2d, 0x95, 0xf0, 0xfb, 0xb9, 0x44, 0x07, 0x82, 0x88, + 0xf2, 0x04, 0xf4, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xcf, 0x92, + 0xdf, 0xe6, 0x85, 0x66, 0x0e, 0xfd, 0x09, 0xf2, 0xd1, 0x23, 0x28, 0xb6, 0xd4, 0xb3, 0x83, + 0x31, 0x37, 0xdc, 0xe6, 0x98, 0x8f, 0xd0, 0xdb, 0xd2, 0x11, 0x81, 0xac, 0x2f, 0x82, 0x77, + 0x36, 0x60, 0x7c, 0xf0, 0xff, 0x13, 0xa9, 0x42, 0xb9, 0x29, 0x75, 0xe1, 0x59, 0x1b, 0x5d, + 0x15, 0xcf, 0x81, 0xff, 0x60, 0x95, 0x65, 0x2a, 0x36, 0xc1, 0xa1, 0xd6, 0xc2, 0x9d, 0x2a, + 0x2f, 0x00, + ], + &[ + 0x04, 0x00, 0x00, 0x00, 0x18, 0xe6, 0x46, 0xc0, 0x1f, 0xbe, 0x9f, 0xab, 0xae, 0xa1, 0x22, + 0x9b, 0xf5, 0x92, 0x9e, 0xee, 0x72, 0xf8, 0x5d, 0x23, 0x65, 0xe3, 0xe3, 0x3d, 0x8d, 0x23, + 0xda, 0xdd, 0x32, 0x7e, 0x52, 0xec, 0xd6, 0x05, 0x36, 0x0a, 0xc6, 0x81, 0xeb, 0xec, 0x11, + 0x65, 0x32, 0xd8, 0x24, 0x73, 0xff, 0x1f, 0xe9, 0xdf, 0x07, 0xf2, 0x6d, 0xba, 0x25, 0xdb, + 0x1b, 0xf4, 0xfc, 0xf3, 0xa7, 0x97, 0x0f, 0x99, 0xa6, 0x60, 0x51, 0x42, 0xb7, 0x4e, 0x9d, + 0xf5, 0x37, 0xa6, 0x67, 0xfd, 0xbe, 0x1e, 0xb3, 0x8f, 0x2e, 0x30, 0x6e, 0xbe, 0x5b, 0xb4, + 0x00, 0xb1, 0x90, 0xb0, 0x1a, 0x13, 0x98, 0xee, 0x9d, 0x51, 0x22, 0x25, 0x4a, 0x4d, 0x0f, + 0x0f, 0x0f, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, + 0xff, 0xff, 0xff, 0x02, 0x54, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, + 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x62, 0x8d, 0x75, 0xcb, 0xbd, 0x65, 0x07, 0x7f, 0x6e, 0x38, 0x6c, 0x9e, 0xc6, 0x36, 0xb2, + 0x5b, 0x23, 0x87, 0x1b, 0xdf, 0x31, 0xfb, 0xfe, 0x21, 0xc2, 0xac, 0xa2, 0x3b, 0xf4, 0x9d, + 0x6f, 0x0a, 0x02, 0xe8, 0x3d, 0xdf, 0xd6, 0xca, 0xcd, 0xd6, 0x4c, 0x1b, 0xcb, 0xe4, 0x6a, + 0x9a, 0x97, 0x44, 0x25, 0xa4, 0x62, 0x30, 0xb5, 0x54, 0x1a, 0x4e, 0x9e, 0x0a, 0x31, 0xb4, + 0xe0, 0x56, 0x8c, 0x34, 0x26, 0xa9, 0x90, 0xd5, 0x2e, 0xbe, 0x77, 0x04, 0x79, 0x93, 0x5b, + 0x39, 0xa1, 0xe9, 0xf4, 0x23, 0xe7, 0x50, 0x65, 0xb7, 0xf9, 0x0f, 0x28, 0xfb, 0x68, 0x39, + 0xf5, 0x4c, 0x71, 0xd2, 0xb1, 0x0f, 0x24, 0xc2, 0x5a, 0x78, 0x00, 0x0b, 0x6b, 0x25, 0x5e, + 0x7b, 0xff, 0x5d, 0x96, 0xd0, 0xfd, 0x99, 0xaf, 0x36, 0x04, 0x0d, 0xe2, 0xef, 0x94, 0x1a, + 0x13, 0x5b, 0x35, 0x61, 0x32, 0x97, 0x15, 0x17, 0x77, 0xbe, 0xae, 0x47, 0x06, 0xde, 0xfb, + 0x39, 0xcf, 0xc0, 0xa8, 0x5a, 0xe8, 0xc2, 0x52, 0x7f, 0xa0, 0xeb, 0x74, 0xdb, 0xe1, 0x85, + 0x98, 0xed, 0xc1, 0x21, 0xd3, 0x0e, 0x65, 0x7d, 0x60, 0x37, 0x9b, 0xd5, 0xba, 0x33, 0x24, + 0xee, 0x10, 0xbb, 0xbd, 0x99, 0xfc, 0x44, 0xbf, 0x15, 0x15, 0x01, 0x7b, 0x08, 0x08, 0x95, + 0x25, 0x58, 0x19, 0xf5, 0x13, 0x81, 0xa4, 0x66, 0x23, 0x50, 0x3e, 0x46, 0xd9, 0x5a, 0x70, + 0x0b, 0xa7, 0xf5, 0xd1, 0xcc, 0xba, 0xf5, 0x8b, 0x89, 0x4e, 0x33, 0xe7, 0x3e, 0x65, 0x8f, + 0xff, 0xbc, 0xd0, 0x26, 0xef, 0x13, 0x25, 0x86, 0x3a, 0xe5, 0x89, 0x16, 0xca, 0xf2, 0xb0, + 0x27, 0x88, 0x93, 0xc1, 0x0e, 0x25, 0x17, 0xfc, 0xa0, 0xc1, 0x37, 0xb9, 0x19, 0x7b, 0x70, + 0x9f, 0x66, 0xcf, 0xb4, 0x0c, 0x4e, 0x68, 0x83, 0x03, 0xd3, 0x52, 0xa1, 0xaa, 0x26, 0x9f, + 0x45, 0x68, 0x8d, 0x19, 0x02, 0x3f, 0x08, 0xae, 0xe0, 0xe0, 0x00, 0x09, 0x45, 0x33, 0x2b, + 0x41, 0x1b, 0x37, 0xb4, 0xbd, 0xd5, 0xa3, 0xb8, 0x4c, 0xf7, 0xec, 0x9a, 0x8e, 0xfc, 0x76, + 0x0b, 0xac, 0xaa, 0x50, 0x74, 0x8a, 0x6c, 0x7f, 0x06, 0xfe, 0xd1, 0x92, 0xd3, 0x84, 0xb4, + 0x78, 0x4c, 0x96, 0xc2, 0x00, 0x2e, 0x58, 0x22, 0xda, 0x37, 0x8f, 0xc8, 0x59, 0x49, 0x96, + 0xe6, 0x1e, 0x12, 0xe6, 0x13, 0x5f, 0x42, 0xca, 0xd1, 0x56, 0x8d, 0x50, 0xec, 0xc4, 0x10, + 0x5c, 0xf8, 0x8c, 0x02, 0xe7, 0xce, 0x22, 0x28, 0x4d, 0x02, 0xca, 0x32, 0xcd, 0x9f, 0x94, + 0xd3, 0xeb, 0xa6, 0xa5, 0xe4, 0x62, 0xa2, 0xec, 0xe6, 0xe1, 0xfa, 0x93, 0x84, 0x61, 0x8e, + 0x52, 0xcf, 0xe2, 0x98, 0x2b, 0xd8, 0xaa, 0xf7, 0xd9, 0xd1, 0xcd, 0x55, 0x16, 0xd8, 0x10, + 0xd2, 0x64, 0xcf, 0xb4, 0x53, 0x84, 0x4c, 0x57, 0x70, 0x9d, 0x3f, 0x1b, 0xbd, 0xfc, 0x1d, + 0x43, 0x9c, 0x93, 0xa1, 0x3d, 0x49, 0xea, 0x3a, 0xc2, 0x2e, 0xfd, 0xd9, 0x0f, 0xa2, 0xae, + 0x9e, 0xb0, 0x07, 0x3f, 0x74, 0xb5, 0x44, 0x88, 0x78, 0x8b, 0xe9, 0x8e, 0xe8, 0xf4, 0xf9, + 0xa5, 0x33, 0x58, 0xe4, 0x88, 0x4c, 0x3d, 0x1b, 0x83, 0x1d, 0x70, 0x24, 0x4b, 0x5f, 0x93, + 0x7f, 0xf0, 0xa5, 0x85, 0x77, 0x1f, 0x5b, 0x71, 0x36, 0x2d, 0x87, 0x19, 0x04, 0xe4, 0xaa, + 0x7c, 0x58, 0xbf, 0x76, 0x2a, 0x87, 0x53, 0x86, 0xdb, 0x9c, 0x9e, 0x02, 0x2d, 0x6a, 0x5d, + 0x52, 0xbe, 0x19, 0x2b, 0x02, 0xfd, 0x5d, 0xe1, 0x05, 0xca, 0x6f, 0x3a, 0xe7, 0x8b, 0xe5, + 0x1a, 0xef, 0xdd, 0xb1, 0xd0, 0x9d, 0x58, 0x64, 0xef, 0xe2, 0xe6, 0xc5, 0x7f, 0xcf, 0x94, + 0x06, 0x96, 0x2a, 0xa0, 0xac, 0x60, 0x5d, 0x94, 0x85, 0x4f, 0xb4, 0x0b, 0xb5, 0x29, 0x53, + 0x34, 0x08, 0xeb, 0xed, 0x13, 0xda, 0xce, 0x74, 0x70, 0x2a, 0x9d, 0x3b, 0x67, 0x4b, 0x3d, + 0x1f, 0x77, 0x70, 0x40, 0x35, 0xd1, 0x56, 0x74, 0x2e, 0x60, 0x2c, 0xf6, 0xfa, 0xab, 0xa2, + 0x58, 0xf2, 0xd7, 0x4c, 0xd6, 0xc2, 0xab, 0x38, 0xc7, 0x47, 0xca, 0x5b, 0x6c, 0xd5, 0x33, + 0x75, 0x56, 0x8a, 0xef, 0xcf, 0x50, 0x09, 0x77, 0x88, 0xc4, 0x9b, 0x1b, 0x93, 0xa5, 0x51, + 0xe1, 0x3d, 0xf4, 0xb3, 0x9d, 0x07, 0xb3, 0x8d, 0x04, 0xcd, 0x49, 0x49, 0xeb, 0x4b, 0x34, + 0x04, 0x39, 0x0e, 0x66, 0x5f, 0xbf, 0x4c, 0x7a, 0x29, 0x1a, 0xa6, 0x08, 0x82, 0x1d, 0xcf, + 0xf2, 0x37, 0x71, 0x0e, 0xe3, 0x53, 0x34, 0xa8, 0xf2, 0xc9, 0x15, 0x46, 0x17, 0x7c, 0x66, + 0x7c, 0x1a, 0x3a, 0x26, 0x1a, 0x8b, 0xdf, 0xd7, 0x3a, 0x25, 0xbb, 0xd4, 0xdf, 0x5d, 0x9e, + 0xc1, 0x33, 0xdc, 0x56, 0xca, 0x7b, 0x02, 0x12, 0xa8, 0xe1, 0x06, 0x23, 0x94, 0x04, 0xce, + 0xce, 0x3f, 0x19, 0x6d, 0x82, 0xd5, 0x8f, 0x97, 0xc7, 0x49, 0xf1, 0x47, 0x94, 0x1c, 0xa9, + 0xac, 0x36, 0xe5, 0xa2, 0x03, 0xb2, 0x88, 0x28, 0xb0, 0x0a, 0xb1, 0xb6, 0x64, 0xda, 0xc9, + 0x3f, 0xcf, 0x6f, 0x1f, 0xdd, 0x8f, 0x9b, 0xbb, 0x6a, 0x81, 0xb5, 0xa2, 0x70, 0xbf, 0x16, + 0x91, 0x46, 0x63, 0xbf, 0x23, 0x29, 0x09, 0x0c, 0xca, 0x86, 0x22, 0x27, 0x69, 0x11, 0x7c, + 0x6e, 0xcb, 0x89, 0x25, 0x67, 0x62, 0xd5, 0x29, 0xfc, 0xb0, 0x0f, 0xb8, 0x67, 0x7f, 0xba, + 0x1e, 0xb6, 0x78, 0x1c, 0x1c, 0xc4, 0xce, 0x0c, 0x37, 0x5a, 0x79, 0x91, 0xe2, 0x9d, 0x79, + 0xe8, 0xaa, 0x0f, 0xd9, 0xb6, 0xdf, 0xc3, 0x89, 0xff, 0xaa, 0xe2, 0x57, 0x6e, 0xf7, 0x0d, + 0xfb, 0x61, 0x08, 0x4c, 0x06, 0xf7, 0xcc, 0xa6, 0x5f, 0xf7, 0x1d, 0x13, 0x0e, 0x2a, 0xa2, + 0x32, 0xa9, 0xe0, 0x87, 0xe1, 0x19, 0x9a, 0x78, 0x14, 0x66, 0xf3, 0x08, 0x7e, 0xc6, 0x09, + 0xd7, 0xae, 0x57, 0x65, 0x8d, 0x1a, 0x6b, 0xdf, 0x3f, 0x94, 0x8b, 0xd4, 0x4e, 0xc0, 0xd1, + 0xb8, 0xa5, 0x69, 0xbd, 0x0b, 0x02, 0x73, 0xd5, 0x18, 0xd4, 0x7e, 0x2d, 0xf2, 0x95, 0xcc, + 0x3a, 0x74, 0x00, 0x75, 0xb2, 0xaa, 0xce, 0xa9, 0xcb, 0x66, 0x73, 0xe6, 0xa6, 0xb9, 0xa5, + 0x3b, 0x5e, 0x9e, 0x4f, 0x9f, 0xad, 0xbf, 0xcf, 0x1f, 0x95, 0xbe, 0x41, 0xf5, 0xa4, 0x6e, + 0x31, 0xc4, 0x66, 0x0a, 0x39, 0x2a, 0x54, 0x8c, 0x74, 0xd5, 0x74, 0x21, 0xd1, 0x0c, 0xc0, + 0xc7, 0x35, 0x18, 0xac, 0xe9, 0x75, 0xeb, 0x39, 0xff, 0x43, 0x45, 0xef, 0xab, 0x21, 0x5d, + 0xa2, 0x58, 0xd4, 0xff, 0xe5, 0xb5, 0xf9, 0x84, 0xf4, 0x74, 0x5c, 0x43, 0x56, 0xbd, 0x14, + 0x39, 0xe7, 0x1a, 0x34, 0xd7, 0x13, 0xa0, 0x69, 0x54, 0xce, 0xf0, 0x67, 0x38, 0x71, 0x7e, + 0x9d, 0x7d, 0x6d, 0xdf, 0xbc, 0xe8, 0x28, 0x92, 0x78, 0xb3, 0x85, 0xe9, 0xf5, 0x62, 0x50, + 0x1d, 0xd5, 0x23, 0x23, 0xf9, 0x0e, 0xc2, 0x4f, 0x4d, 0x7a, 0xb3, 0xaa, 0x54, 0x88, 0x08, + 0x5c, 0xe2, 0x34, 0x4f, 0xd3, 0x86, 0x0a, 0xd6, 0xd0, 0x1a, 0x6a, 0xae, 0xcb, 0x7c, 0xa9, + 0x02, 0xe6, 0x05, 0x50, 0x34, 0xf6, 0x3d, 0x40, 0x41, 0x1c, 0x6f, 0x0c, 0x95, 0xd5, 0x77, + 0x76, 0x50, 0xd0, 0x32, 0x0b, 0x8a, 0x27, 0xf0, 0xc8, 0x10, 0x0f, 0x37, 0xe5, 0x2e, 0xe6, + 0x6d, 0x43, 0x7a, 0x62, 0x2f, 0x1b, 0x12, 0xbd, 0x51, 0x0f, 0x41, 0x54, 0x6b, 0xd8, 0x82, + 0xc2, 0xa8, 0x78, 0x57, 0xbf, 0x4b, 0x47, 0x80, 0x4d, 0x03, 0x90, 0xcb, 0xd1, 0x21, 0x5a, + 0x8a, 0x1b, 0xb5, 0x68, 0x0a, 0x8a, 0x30, 0x22, 0x8b, 0xa6, 0x64, 0x2c, 0xd6, 0x75, 0x45, + 0x87, 0x92, 0x33, 0xec, 0xb4, 0x10, 0x27, 0x01, 0x23, 0xfb, 0x8d, 0xc3, 0x37, 0xf5, 0xa7, + 0x8b, 0x3a, 0xdc, 0xb2, 0x14, 0x5e, 0x38, 0xd1, 0x12, 0x03, 0x1d, 0x8a, 0x14, 0x6b, 0x6c, + 0xa3, 0x60, 0xd6, 0x81, 0x67, 0x68, 0x78, 0x3b, 0x66, 0xcb, 0x65, 0x42, 0x58, 0xd9, 0x1d, + 0x05, 0xe3, 0x33, 0x30, 0x49, 0x54, 0x33, 0xd3, 0x98, 0xb1, 0xee, 0x2a, 0xcd, 0x96, 0xbb, + 0x1f, 0x16, 0x71, 0xf9, 0x77, 0x09, 0x12, 0xc2, 0x92, 0xcd, 0x65, 0x28, 0x05, 0xa3, 0x72, + 0xb5, 0xeb, 0xf3, 0x21, 0x60, 0x20, 0xcd, 0x01, 0x0b, 0x3c, 0x9f, 0x7b, 0x48, 0xec, 0x60, + 0x1c, 0xaa, 0x66, 0x7b, 0x0c, 0xe6, 0xbc, 0x6e, 0x98, 0xe9, 0x8d, 0xb2, 0x6d, 0x2f, 0xee, + 0x3e, 0xe4, 0x48, 0x49, 0xcc, 0xaf, 0x78, 0xbe, 0x2f, 0x19, 0x7f, 0x5e, 0x48, 0xad, 0x2b, + 0x74, 0xa2, 0x1b, 0x7e, 0x39, 0xf9, 0xa2, 0x6c, 0x44, 0x2d, 0x92, 0x1f, 0xb9, 0x80, 0xe2, + 0x8f, 0xc9, 0xb6, 0xff, 0xec, 0x0e, 0xb4, 0x65, 0x6e, 0x89, 0xea, 0xff, 0x62, 0xf0, 0x52, + 0x58, 0xf3, 0x83, 0x4d, 0xe4, 0x59, 0xeb, 0x20, 0x66, 0xdb, 0xfd, 0x87, 0x6d, 0x76, 0x52, + 0xb6, 0xb0, 0x67, 0x1b, 0xbe, 0x5a, 0x38, 0x04, 0x0a, 0x6a, 0x1f, 0x58, 0xfe, 0x78, 0x06, + 0x99, 0x0c, 0xb8, 0x3b, 0xc7, 0xf8, 0x91, 0xf7, 0xd3, 0xd3, 0xc3, 0x11, 0xaf, 0x30, 0x5a, + 0xb9, 0x4c, 0xa4, 0x60, 0xec, 0x09, 0x28, 0xbc, 0x74, 0x33, 0xd4, 0xa8, 0xdb, 0x0d, 0x4d, + 0x3f, 0xa0, 0xee, 0x6c, 0xb1, 0x81, 0xe6, 0x87, 0x7d, 0x62, 0xf9, 0xa1, 0xa9, 0xeb, 0x5c, + 0x78, 0x67, 0x64, 0x51, 0x5a, 0x9c, 0x2a, 0x8f, 0xca, 0x74, 0x57, 0x9c, 0x12, 0xf4, 0x4e, + 0xab, 0x04, 0x07, 0x55, 0xc7, 0x25, 0x48, 0x39, 0x35, 0x77, 0xf8, 0xad, 0x01, 0x35, 0x7d, + 0xd5, 0x4a, 0x29, 0x68, 0x11, 0x56, 0xf3, 0xf3, 0xa5, 0x10, 0x2c, 0x86, 0xa2, 0x17, 0xed, + 0x37, 0x5d, 0x68, 0x5a, 0xa4, 0x67, 0x75, 0xf3, 0x3b, 0xaf, 0xd7, 0xe4, 0xe8, 0x98, 0x6f, + 0x0a, 0x6c, 0x21, 0xbc, 0x86, 0x01, 0xfe, 0x92, 0x4b, 0xa2, 0x66, 0x8d, 0xc6, 0x7b, 0xc6, + 0xdc, 0xd6, 0x81, 0x63, 0x9a, 0xa5, 0x74, 0x22, 0x97, 0x13, 0xcd, 0xeb, 0xd1, 0x93, 0x99, + 0xb6, 0xd1, 0x63, 0x47, 0x53, 0x55, 0xab, 0x95, 0x2c, 0x27, 0x6c, 0x79, 0x72, 0x3b, 0x52, + 0x99, 0x58, 0xb2, 0xe4, 0x95, 0x44, 0xb1, 0x71, 0xb2, 0xaa, 0x9c, 0xac, 0x58, 0xd1, 0xd9, + 0x8c, 0xf8, 0x07, 0x2d, 0xa9, 0xbb, 0xa9, 0xca, 0xef, 0x89, 0x94, 0x88, 0xea, 0xcc, 0x1d, + 0xd5, 0xfe, 0xba, 0xd0, 0xf1, 0x71, 0x4a, 0x0d, 0xdc, 0x43, 0xc7, 0x5b, 0xc7, 0x70, 0x26, + 0x8e, 0x15, 0xfd, 0x22, 0xa5, 0x9c, 0x16, 0xb7, 0xf5, 0xa0, 0x16, 0xf6, 0xa1, 0xfd, 0xf2, + 0x10, 0x0b, 0x6b, 0x64, 0x55, 0x17, 0x3d, 0x12, 0x1d, 0xde, 0x17, 0xb8, 0xff, 0x78, 0x02, + 0x0d, 0xf4, 0xa0, 0xeb, 0x45, 0xbb, 0x32, 0x12, 0x86, 0x2f, 0x56, 0xad, 0x9b, 0x10, 0x9f, + 0xdb, 0x7e, 0x02, 0x43, 0x40, 0x23, 0x6f, 0x7b, 0xf8, 0xbf, 0xa6, 0xda, 0xa2, 0x2e, 0x19, + 0x93, 0xbe, 0xcc, 0xca, 0x4c, 0xc7, 0x88, 0x3d, 0xe8, 0x9a, 0x89, 0x0c, 0x19, 0xec, 0x2d, + 0x32, 0xea, 0x4e, 0x3c, 0xb0, 0x86, 0xdc, 0xd4, 0x45, 0xf6, 0x28, 0x47, 0xd0, 0xd4, 0x46, + 0x63, 0xbe, 0xf8, 0x2f, 0xe0, 0x9f, 0x8c, 0x69, 0x7d, 0x04, 0x7a, 0xf9, 0xae, 0x3b, 0x53, + 0x64, 0x4c, 0x53, 0xff, 0xdf, 0x32, 0x15, 0x03, 0x8b, 0x3e, 0xd0, 0xab, 0x02, 0x70, 0xc3, + 0x3d, 0xb0, 0xa7, 0x97, 0xb9, 0x4a, 0x5b, 0x2d, 0xf8, 0x7c, 0x4d, 0xad, 0x0c, 0x93, 0x7f, + 0x1e, 0xff, 0x4b, 0x66, 0xee, 0x74, 0x34, 0x4f, 0xf1, 0x4e, 0x8a, 0x7e, 0x86, 0xac, 0x60, + 0xc6, 0xed, 0x6d, 0x0c, 0xab, 0x5d, 0xb5, 0x26, 0xf8, 0xef, 0x46, 0xca, 0xf8, 0x6b, 0xad, + 0x6e, 0xf0, 0xcc, 0x0d, 0x39, 0xd2, 0xb9, 0x3d, 0xa5, 0xd8, 0x7c, 0xda, 0x08, 0x4b, 0xc8, + 0xd7, 0x3c, 0x01, 0xcb, 0x06, 0x70, 0xfb, 0x17, 0x9e, 0xde, 0x41, 0xb4, 0xb3, 0x90, 0xf5, + 0xa8, 0xac, 0x29, 0xbb, 0x87, 0xaa, 0xe9, 0xad, 0xbc, 0x43, 0xa6, 0x8e, 0xea, 0xaa, 0xa7, + 0x04, 0xb9, 0x24, 0x2f, 0xce, 0x41, 0x9a, 0x51, 0x7e, 0xb3, 0xab, 0x44, 0xb4, 0x70, 0x3e, + 0x97, 0x8d, 0xa9, 0x3d, 0x8f, 0x1f, 0x6c, 0x0d, 0x66, 0xc8, 0xb5, 0x32, 0x27, 0xf7, 0x8b, + 0x14, 0x46, 0x95, 0x57, 0x39, 0xdc, 0x57, 0xfb, 0xcc, 0xcd, 0xa7, 0xc9, 0x8b, 0xcb, 0x05, + 0xdc, 0xa0, 0x8d, 0xa2, 0x5d, 0x93, 0x1d, 0x22, 0xf0, 0x36, 0xd8, 0x73, 0x64, 0xe5, 0x5c, + 0x62, 0x4e, 0x76, 0x4e, 0x40, 0xd1, 0x67, 0xff, 0xac, 0xbb, 0x2c, 0x96, 0xb4, 0x5b, 0xa7, + 0xd3, 0xf2, 0x21, 0xec, 0x40, 0xd5, 0x18, 0x60, 0x14, 0x4e, 0x4a, 0xcb, 0x53, 0x02, 0x2c, + 0x68, 0x5e, 0x63, 0x65, 0xe2, 0xf2, 0x68, 0xef, 0x13, 0x07, 0x37, 0x3e, 0x74, 0x3d, 0x5f, + 0x92, 0x04, 0x03, 0x62, 0xa6, 0x9f, 0xbf, 0x8a, 0x45, 0x4f, 0x79, 0xe0, 0xe0, 0x4d, 0x12, + 0xaf, 0xb8, 0x14, 0xcd, 0x8e, 0x67, 0xd8, 0x0b, 0x72, 0x39, 0x15, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfd, 0xe0, 0x1c, 0x9d, 0x33, 0xce, 0xd8, 0x35, 0xb1, 0x54, 0x52, 0xfa, 0x08, + 0x6a, 0xd5, 0x33, 0x91, 0xb2, 0x8c, 0xcd, 0xf0, 0x21, 0x02, 0x06, 0xe3, 0x52, 0x39, 0xf3, + 0xfe, 0xe0, 0x0a, 0xd8, 0x8a, 0xba, 0xa5, 0x82, 0xfa, 0x2d, 0x6c, 0xb9, 0x45, 0xbd, 0x30, + 0x9c, 0xa0, 0xb5, 0x79, 0x3d, 0xc4, 0xce, 0x80, 0x14, 0x37, 0x7b, 0x8f, 0xff, 0x43, 0x70, + 0x1b, 0x62, 0x7c, 0xb1, 0xb4, 0x71, 0xc1, 0x96, 0x9a, 0x22, 0x7a, 0x8b, 0x77, 0x85, 0xde, + 0x0d, 0xed, 0x21, 0x38, 0x99, 0x66, 0x39, 0x62, 0xb4, 0xfd, 0xa7, 0x35, 0x1b, 0xce, 0xd8, + 0x0a, 0x0d, 0x4e, 0xd2, 0x73, 0x4e, 0xcc, 0x6e, 0x9b, 0x32, 0xaa, 0xde, 0x99, 0x0b, 0x7c, + 0x25, 0x53, 0xb7, 0xb1, 0x42, 0xed, 0x38, 0x7a, 0xe2, 0x71, 0x90, 0x2f, 0x1b, 0x7b, 0x86, + 0x4c, 0x6d, 0x00, 0xcc, 0xb1, 0x05, 0xbb, 0xe9, 0xfc, 0x00, 0x37, 0x79, 0x87, 0x59, 0x3c, + 0xda, 0x4a, 0x31, 0xbb, 0x93, 0x86, 0x4a, 0x9b, 0x6e, 0x31, 0x73, 0xf8, 0x65, 0xbd, 0x36, + 0x6b, 0x19, 0x9d, 0x58, 0xae, 0xa0, 0x8a, 0x8c, 0x22, 0xdf, 0xb0, 0xbd, 0x57, 0x9f, 0x38, + 0x7d, 0xf5, 0x43, 0xc3, 0xcd, 0xae, 0xf1, 0xc9, 0xc3, 0x0c, 0x79, 0x70, 0x8e, 0x13, 0xf1, + 0x87, 0xc7, 0x35, 0xef, 0x6c, 0xcc, 0x20, 0xf0, 0xed, 0x0d, 0x2d, 0xba, 0x1c, 0xf4, 0x71, + 0xcc, 0x8c, 0xc6, 0x41, 0x0f, 0xfb, 0xf0, 0xac, 0xd2, 0xa3, 0x51, 0xcd, 0x66, 0xde, 0xb1, + 0xf1, 0x5e, 0xf4, 0x9f, 0x94, 0xdb, 0x58, 0xe7, 0x4f, 0x41, 0x65, 0x46, 0xd2, 0x14, 0x95, + 0x9d, 0x48, 0xca, 0x38, 0x73, 0x87, 0xde, 0x7f, 0x03, 0x70, 0x5b, 0x18, 0xb9, 0x65, 0x8e, + 0x77, 0x2b, 0x51, 0xc7, 0xa0, 0x85, 0xe5, 0x57, 0xd7, 0xcf, 0xf3, 0x76, 0xb0, 0x51, 0xb1, + 0x57, 0x6f, 0x6d, 0x6d, 0xf0, 0x34, 0xa8, 0x81, 0x57, 0xb7, 0x3f, 0xf9, 0x0e, 0xdb, 0xfa, + 0xbe, 0x51, 0x85, 0xf9, 0x94, 0x77, 0x7e, 0x14, 0xe8, 0x81, 0x2d, 0x70, 0xf4, 0x44, 0x1a, + 0x3f, 0xf8, 0xa5, 0x24, 0x73, 0x82, 0xd6, 0xa9, 0xa0, 0x9e, 0x6c, 0x70, 0x94, 0x71, 0x16, + 0x9a, 0x89, 0x12, 0x3e, 0x76, 0xe5, 0x2e, 0x9b, 0x81, 0xae, 0xcd, 0x09, 0xee, 0xc6, 0x71, + 0x1b, 0x7b, 0x52, 0x06, 0xee, 0xbb, 0x5d, 0x6e, 0xe6, 0x94, 0x0f, 0xc6, 0x9b, 0x6d, 0x04, + 0xfe, 0x1a, 0x28, 0x1d, 0x21, 0x77, 0xdc, 0x3f, 0x58, 0x78, 0x48, 0x82, 0x8d, 0xac, 0x47, + 0xa1, 0xa8, 0x4c, 0x2a, 0x8d, 0xf8, 0x45, 0x2a, 0x94, 0x52, 0x26, 0xb0, 0x9b, 0xc0, 0xbe, + 0x5f, 0x0d, 0xd6, 0x37, 0x56, 0x59, 0x35, 0xc3, 0x73, 0x14, 0x9f, 0xcf, 0x10, 0x00, 0x90, + 0x25, 0x8b, 0x15, 0x90, 0xbe, 0xaa, 0x4c, 0x7f, 0x07, 0x43, 0xac, 0xc9, 0x14, 0x18, 0x5c, + 0xac, 0x7f, 0xef, 0xae, 0x52, 0xf8, 0x6b, 0xe9, 0x40, 0xc3, 0x09, 0xe7, 0x07, 0xa6, 0x72, + 0x0a, 0xb5, 0xa5, 0x99, 0x4e, 0x35, 0x98, 0x14, 0x87, 0xd9, 0x8a, 0x65, 0xff, 0x69, 0xe4, + 0xb1, 0x52, 0x11, 0x18, 0xa0, 0x41, 0xad, 0x02, 0x9a, 0xa8, 0x04, 0x66, 0x62, 0xa9, 0xc6, + 0x1a, 0x63, 0x49, 0x77, 0xb5, 0xc2, 0xb8, 0xb3, 0x8a, 0x7c, 0x50, 0x19, 0xc2, 0x30, 0x2a, + 0xb4, 0x6c, 0x0c, 0x02, 0x6b, 0x81, 0x7e, 0xbe, 0x63, 0x5f, 0x1d, 0xf2, 0xff, 0x16, 0x8c, + 0xbc, 0x3e, 0x96, 0x49, 0x71, 0xf2, 0xf9, 0x6e, 0x4a, 0xc8, 0xc3, 0xfe, 0x47, 0xb3, 0x2a, + 0x69, 0x73, 0x3c, 0x8a, 0x95, 0x60, 0x9f, 0xd0, 0x59, 0xc6, 0x8f, 0x35, 0xf7, 0xb9, 0xba, + 0x39, 0xce, 0x38, 0x75, 0x0e, 0xe2, 0x3f, 0x6e, 0x94, 0x47, 0x8f, 0x9f, 0x72, 0x51, 0x7e, + 0xb0, 0xe6, 0x8f, 0x44, 0xef, 0x2a, 0x18, 0xa2, 0xa5, 0x6f, 0x87, 0x6b, 0x44, 0x08, 0x48, + 0x62, 0x65, 0xda, 0x09, 0x27, 0x96, 0x85, 0x51, 0xef, 0x85, 0x8d, 0xf8, 0xdc, 0x5d, 0x66, + 0xf4, 0x3c, 0x6e, 0xd1, 0x61, 0x19, 0x48, 0x22, 0x0c, 0xde, 0xa7, 0x74, 0x3a, 0xc2, 0xfa, + 0xd4, 0xb7, 0x81, 0x2c, 0x85, 0xdc, 0x4a, 0xc2, 0x01, 0xe3, 0xa7, 0x65, 0x19, 0x06, 0xe2, + 0xb6, 0x7b, 0x66, 0x96, 0x40, 0xf2, 0x1a, 0x98, 0x5f, 0x53, 0x29, 0xb4, 0x5f, 0x58, 0x35, + 0xc0, 0x8f, 0x53, 0xcb, 0x34, 0xd2, 0x8b, 0xe4, 0xd5, 0xcb, 0xf3, 0xeb, 0x46, 0x5f, 0x11, + 0x87, 0x33, 0x26, 0x1d, 0x49, 0x23, 0x7c, 0xa6, 0xab, 0xf2, 0x4e, 0xd6, 0x10, 0x2a, 0x8a, + 0x56, 0xbd, 0x36, 0x71, 0x44, 0xb6, 0x4c, 0x58, 0xae, 0xc2, 0x1c, 0x8d, 0x7a, 0x92, 0x74, + 0x66, 0x5c, 0x98, 0x5a, 0x04, 0x28, 0x54, 0xd6, 0xee, 0xb7, 0xed, 0xf7, 0x42, 0x06, 0x98, + 0x0d, 0x57, 0xf0, 0x06, 0x64, 0xf9, 0x63, 0xd0, 0x96, 0xdd, 0x09, 0x7d, 0x8c, 0x40, 0xcf, + 0x64, 0x7a, 0x1a, 0xd0, 0xfb, 0xe4, 0x44, 0xdf, 0x67, 0x87, 0x16, 0xdd, 0x2d, 0xf8, 0x49, + 0x57, 0x08, 0x4d, 0xe8, 0x9b, 0xc0, 0x7c, 0x44, 0xde, 0x34, 0x07, 0x83, 0x8d, 0xe5, 0xee, + 0xf9, 0x0f, 0x7b, 0xfd, 0xea, 0xb0, 0xd8, 0x47, 0x43, 0x63, 0x81, 0xd4, 0xea, 0x87, 0xd0, + 0x6a, 0x2e, 0x6f, 0x0f, 0x02, 0xa1, 0xc8, 0xc3, 0x4e, 0xfb, 0x2b, 0xad, 0x3f, 0x14, 0x06, + 0xf0, 0x68, 0xd2, 0xa9, 0xa9, 0xac, 0x62, 0x18, 0xfb, 0x29, 0xf1, 0x30, 0xe0, 0x71, 0x2a, + 0xc6, 0x53, 0xdd, 0x70, 0x42, 0x22, 0x7e, 0xf3, 0x60, 0x86, 0xe9, 0xe1, 0x9e, 0x69, 0x81, + 0x36, 0x69, 0xc3, 0x81, 0x8a, 0x9e, 0xeb, 0x44, 0xf2, 0x9b, 0x6c, 0x8f, 0x77, 0x03, 0xad, + 0xe7, 0x7d, 0xee, 0x1d, 0x12, 0xe2, 0x9a, 0x86, 0x28, 0x3c, 0x6d, 0xca, 0x16, 0x43, 0x6e, + 0x90, 0x42, 0x4e, 0x50, 0x65, 0xc5, 0xd2, 0xe1, 0xb0, 0xdf, 0xb9, 0x1c, 0x6c, 0x3a, 0xb1, + 0x65, 0x8e, 0xe7, 0x7b, 0xd7, 0xe0, 0x37, 0x44, 0x2c, 0x3e, 0x52, 0xc1, 0xbf, 0x24, 0x93, + 0xcc, 0x24, 0x3b, 0x22, 0x6b, 0x01, 0x75, 0x40, 0xce, 0x22, 0xe5, 0x0b, 0xd2, 0xa0, 0x3e, + 0xa5, 0xb8, 0x0c, 0x6a, 0x43, 0x9a, 0x06, 0x68, 0x3c, 0x62, 0x21, 0x8c, 0x13, 0x2e, 0xe0, + 0x79, 0x87, 0x25, 0x25, 0xc3, 0xe6, 0x60, 0x71, 0x33, 0x80, 0x29, 0xe3, 0xf7, 0x7b, 0x04, + 0xc4, 0x71, 0xbb, 0x5b, 0xbc, 0xed, 0xe4, 0x0b, 0x15, 0xa7, 0x33, 0xcd, 0x91, 0x1a, 0xf5, + 0xb9, 0xb5, 0xbe, 0xe0, 0x24, 0x71, 0xa3, 0xc4, 0x37, 0x34, 0xfe, 0xd2, 0x9f, 0xde, 0xb1, + 0x8d, 0xef, 0xaf, 0x0d, 0x3c, 0xd0, 0x0c, 0xd1, 0xb8, 0xc6, 0x00, 0x7d, 0xfa, 0x54, 0x82, + 0x17, 0x5a, 0x1e, 0xe3, 0x29, 0xad, 0x9a, 0x7e, 0xf1, 0x73, 0xe8, 0xd8, 0x33, 0x89, 0x68, + 0x7b, 0xae, 0xd2, 0xec, 0xf5, 0xaa, 0x4f, 0x48, 0xfa, 0xe7, 0x12, 0x54, 0xc9, 0x71, 0xc9, + 0xae, 0xa4, 0x85, 0xaa, 0x0e, 0x0a, 0xd4, 0x3d, 0x74, 0xe9, 0xc1, 0xcf, 0xcc, 0xd1, 0x71, + 0x98, 0x3a, 0xde, 0xa2, 0xf0, 0x80, 0xe1, 0xfc, 0x21, 0xf8, 0x65, 0x03, 0x72, 0xd6, 0xb6, + 0x27, 0x22, 0xf8, 0xa8, 0x20, 0x8c, 0x76, 0x94, 0x95, 0x8c, 0x47, 0x0a, 0x2a, 0x15, 0x0d, + 0x15, 0xc9, 0x10, 0xbf, 0xba, 0xd9, 0x4c, 0xc6, 0xc9, 0xe3, 0x73, 0xa4, 0xc0, 0xd7, 0x4b, + 0x55, 0xa8, 0x1f, 0x5e, 0x34, 0x30, 0x22, 0x21, 0x02, 0x4f, 0x21, 0x24, 0x80, 0xfe, 0x7b, + 0x1d, 0x6e, 0x35, 0x4e, 0x42, 0xf4, 0x85, 0x5f, 0x0e, 0xac, 0x89, 0x6c, 0xd1, 0x0f, 0x68, + 0x89, 0x8e, 0xdf, 0x3d, 0xc2, 0xcd, 0xf1, 0xe0, 0x31, 0x71, 0xd1, 0xfb, 0xda, 0xcb, 0xc9, + 0xf1, 0xdf, 0x99, 0xbd, 0xef, 0x1c, 0xb4, 0xe9, 0xdb, 0x03, 0x25, 0x0f, 0x9f, 0xfa, 0xd6, + 0x33, 0x69, 0x91, 0xdf, 0xff, 0x8b, 0xb8, 0x7e, 0xa0, 0xfe, 0x3b, 0x2a, 0xbc, 0x36, 0x8a, + 0xbd, 0x04, 0x9f, 0x3d, 0x60, 0xd9, 0xd5, 0x45, 0x9f, 0x27, 0x71, 0x37, 0x5c, 0xce, 0x4c, + 0x72, 0x1b, 0xc8, 0x62, 0x84, 0x43, 0xf3, 0x4f, 0xbb, 0x68, 0x12, 0xe4, 0x02, 0xe1, 0x29, + 0x50, 0xb4, 0xc9, 0xa1, 0x07, 0x47, 0x4e, 0xd6, 0xe1, 0x8d, 0x16, 0xa0, 0x06, 0x32, 0x93, + 0x2b, 0xd6, 0x57, 0xd0, 0xc2, 0x7b, 0x1f, 0xda, 0x17, 0x61, 0xb8, 0xc6, 0xaf, 0x73, 0xb1, + 0xf7, 0x79, 0x19, 0x6b, 0xbd, 0xeb, 0x0c, 0xe8, 0xf0, 0x17, 0xc6, 0xf5, 0x23, 0xc0, 0xe0, + 0xc9, 0xa5, 0xa5, 0xdb, 0x62, 0x84, 0xa8, 0x2e, 0x10, 0x63, 0xb9, 0x67, 0x5e, 0xe7, 0x39, + 0xac, 0x1e, 0x66, 0xcf, 0x95, 0x16, 0x21, 0x6c, 0x50, 0x6a, 0xca, 0x35, 0x39, 0x7f, 0xb5, + 0xf7, 0x32, 0x1a, 0xdc, 0x10, 0xf5, 0xec, 0x62, 0xc5, 0x7b, 0x23, 0xce, 0x65, 0xd5, 0xc6, + 0x2f, 0x91, 0x05, 0x3c, 0xb1, 0x36, 0xa7, 0x3c, 0x2e, 0x22, 0xef, 0xe8, 0x39, 0x40, 0xe0, + 0x58, 0xe7, 0x6b, 0xa2, 0x47, 0x61, 0x9a, 0xc9, 0x7e, 0x7a, 0xd0, 0x93, 0x53, 0x96, 0x0a, + 0xff, 0x16, 0x3f, 0x4a, 0xe1, 0xb0, 0xee, 0xbe, 0xd1, 0x70, 0x6e, 0x79, 0x8b, 0x44, 0x58, + 0x2f, 0xaf, 0xb4, 0xf3, 0x99, 0xff, 0x61, 0x07, 0xd9, 0xd3, 0xf9, 0xab, 0x64, 0x4d, 0x76, + 0x41, 0xe2, 0x18, 0xc7, 0x27, 0xe1, 0xfb, 0x31, 0x6d, 0xfe, 0x12, 0x4b, 0x69, 0x0c, 0x1b, + 0x52, 0xa1, 0x96, 0xd3, 0x99, 0xce, 0x8d, 0x99, 0x8f, 0x25, 0x87, 0x5a, 0x44, 0x41, 0x81, + 0xb7, 0x18, 0xb0, 0x8e, 0x55, 0x31, 0xbc, 0xd2, 0xb7, 0xa4, 0x3c, 0x93, 0x6d, 0xe0, 0x78, + 0xcf, 0xdf, 0xb5, 0xd6, 0x85, 0x1e, 0x9d, 0x13, 0xa4, 0x4d, 0xf8, 0x64, 0xb0, 0xc8, 0x5c, + 0xb8, 0xa3, 0xf1, 0x16, 0x2b, 0xd9, 0x3d, 0xf9, 0xd1, 0x96, 0xc1, 0x00, 0xd6, 0x52, 0x94, + 0x46, 0x16, 0x47, 0xbd, 0x36, 0x90, 0xfb, 0x01, 0xf4, 0xe5, 0xeb, 0xe2, 0x3f, 0x28, 0xf4, + 0xc2, 0x57, 0xb3, 0x62, 0x22, 0x98, 0x94, 0x03, 0xe7, 0x76, 0x65, 0x31, 0x83, 0x09, 0x2b, + 0x3e, 0x89, 0xeb, 0x2f, 0x06, 0x5d, 0x85, 0xca, 0xc5, 0x3c, 0x65, 0xd2, 0x75, 0xfb, 0x84, + 0xb3, 0xf9, 0x8f, 0x1e, 0x40, 0xf5, 0x67, 0xe8, 0x0d, 0x74, 0x10, 0xc3, 0x62, 0xc7, 0xec, + 0xbc, 0xbd, 0xe4, 0xa5, 0x8a, 0xcb, 0x59, 0xbe, 0xb6, 0xcf, 0x91, 0x56, 0x37, 0x5b, 0x96, + 0xe8, 0xf4, 0x8f, 0x88, 0xe1, 0x58, 0x18, 0x4f, 0x75, 0xe5, 0xf4, 0x85, 0xe1, 0x59, 0x4b, + 0xad, 0x2a, 0x2b, 0xb6, 0x66, 0xc7, 0x82, 0xf6, 0xde, 0xa4, 0xf8, 0x51, 0xd1, 0xb3, 0x18, + 0x6c, 0x39, 0xd3, 0x3a, 0xd1, 0x56, 0x38, 0x6a, 0x20, 0xd3, 0x1a, 0x98, 0x01, 0x8d, 0x7e, + 0xe0, 0x2a, 0x06, 0x7d, 0x33, 0x95, 0xf5, 0x6f, 0x37, 0x04, 0x3e, 0x88, 0xda, 0xed, 0xf8, + 0x00, 0xa3, 0xa9, 0x8a, 0x14, 0x47, 0x07, 0xba, 0x04, 0x16, 0xa4, 0x2a, 0xc0, 0xb8, 0x26, + 0xa2, 0x9d, 0x96, 0x61, 0xd5, 0x66, 0x16, 0x52, 0x58, 0x1a, 0xf4, 0x06, 0x78, 0x3f, 0x6c, + 0xab, 0xce, 0xe7, 0x63, 0xd0, 0x08, 0xa5, 0x2b, 0xa8, 0x85, 0xe5, 0xc6, 0x7b, 0xa3, 0x26, + 0x97, 0x67, 0x4f, 0x57, 0xdc, 0xf4, 0x42, 0xc4, 0x94, 0x0e, 0x18, 0x80, 0x3c, 0xf5, 0xa5, + 0x21, 0xb4, 0x7a, 0x66, 0xbf, 0xab, 0xf1, 0xe9, 0x99, 0xfd, 0x62, 0x9a, 0xb5, 0x22, 0xe1, + 0x09, 0x17, 0x85, 0x81, 0x43, 0x97, 0x4d, 0x9a, 0x96, 0x9a, 0x28, 0x9d, 0x93, 0x65, 0xe4, + 0xdd, 0xa9, 0x24, 0x12, 0x45, 0x61, 0x7a, 0x41, 0x7f, 0xbc, 0x3a, 0x9e, 0xca, 0x17, 0x41, + 0x45, 0x76, 0x6a, 0x08, 0x97, 0x40, 0xa2, 0xaf, 0x58, 0xbe, 0xe4, 0x80, 0x84, 0x60, 0x14, + 0xad, 0x01, 0x31, 0xe1, 0x1b, 0xe1, 0xa7, 0x33, 0xb2, 0x1e, 0xc8, 0x96, 0xa3, 0xf5, 0x41, + 0x98, 0xf9, 0xab, 0xb4, 0xa5, 0xa7, 0x5c, 0x00, 0x80, 0x45, 0x27, 0xaf, 0xef, 0xfe, 0x0c, + 0xd2, 0xe7, 0x22, 0xbb, 0x3d, 0x83, 0x2f, 0x24, 0x84, 0xca, 0xea, 0x22, 0xa3, 0xab, 0x6b, + 0x0b, 0xf4, 0x07, 0xfa, 0x5e, 0xf1, 0x9a, 0x52, 0x57, 0xf1, 0xa5, 0xce, 0x59, 0xad, 0xa0, + 0xf3, 0x0a, 0x69, 0x7a, 0xb4, 0xc9, 0xe7, 0x61, 0x1a, 0xf3, 0xaa, 0x32, 0x64, 0x01, 0x69, + 0xdf, 0x8a, 0x7d, 0xe5, 0x57, 0x59, 0x86, 0x7d, 0x9c, 0x53, 0x1d, 0xfd, 0xdd, 0xf9, 0x53, + 0xa4, 0xa6, 0x9f, 0x35, 0x5f, 0x6d, 0x08, 0x02, 0x82, 0x5a, 0xb7, 0xc8, 0x77, 0x11, 0x91, + 0x83, 0xa1, 0x42, 0x73, 0x24, 0x22, 0x1e, 0xfb, 0x21, 0xa0, 0x97, 0x2a, 0x47, 0xcd, 0x0f, + 0xe1, 0x09, 0xa7, 0xe3, 0x74, 0x90, 0x7a, 0x80, 0x4c, 0xb0, 0x67, 0x33, 0x5e, 0x5a, 0x60, + 0x62, 0xe1, 0x7f, 0x6e, 0x49, 0xca, 0x89, 0xe3, 0xb9, 0x7e, 0x51, 0xe1, 0x61, 0xb1, 0xb0, + 0x08, 0xae, 0xff, 0x38, 0x69, 0x50, 0xf7, 0x3b, 0x26, 0xd2, 0xc3, 0x3a, 0x43, 0x58, 0x9b, + 0xca, 0xdd, 0x60, 0xa3, 0x4b, 0x28, 0x59, 0x6f, 0x55, 0xcb, 0x9e, 0xa0, 0x75, 0xdc, 0x86, + 0xb8, 0x28, 0x0e, 0xc0, 0x4f, 0x0a, 0x64, 0x81, 0x67, 0x21, 0x8a, 0x4f, 0x24, 0x74, 0xa7, + 0xde, 0x0b, 0x09, 0x73, 0x4b, 0x99, 0x5d, 0x65, 0x14, 0xd6, 0xfe, 0xe7, 0xaa, 0x97, 0xc5, + 0x71, 0x89, 0xe5, 0x40, 0x5a, 0xda, 0x73, 0x40, 0xe9, 0x1c, 0xd0, 0x0c, 0x18, 0xcc, 0x40, + 0xb4, 0xf2, 0xeb, 0x74, 0x42, 0xdb, 0xf6, 0x2e, 0xc9, 0x53, 0xe4, 0x08, 0x36, 0x78, 0x46, + 0x38, 0x5f, 0x49, 0xd3, 0xd7, 0x0a, 0x19, 0x75, 0x55, 0x12, 0x8f, 0xde, 0x6c, 0x2b, 0xbc, + 0x7e, 0xa6, 0x99, 0x89, 0x16, 0x7a, 0xb0, 0x57, 0x7e, 0x54, 0xfe, 0x35, 0xc2, 0x11, 0x16, + 0xa2, 0xb1, 0x41, 0x5a, 0xfa, 0x9c, 0x53, 0x93, 0x30, 0x7d, 0x4a, 0xa3, 0x50, 0x76, 0xb2, + 0x31, 0xfb, 0xad, 0x90, 0x49, 0x79, 0xb0, 0x26, 0x43, 0x53, 0x1a, 0x5c, 0x6c, 0x7b, 0x31, + 0x16, 0x6a, 0x28, 0x2e, 0x76, 0x6b, 0xd2, 0xc4, 0x0e, 0x06, 0xbc, 0x3d, 0xea, 0x81, 0xcd, + 0x0d, 0x6b, 0x1f, 0xbe, 0xb4, 0xd0, 0xcc, 0xa3, 0xc6, 0x83, 0xae, 0x91, 0xac, 0x19, 0x4a, + 0x6b, 0x20, 0xf8, 0x6c, 0x22, 0x6c, 0x25, 0x92, 0x72, 0x0b, 0xdf, 0x88, 0x24, 0xcb, 0xc5, + 0x6b, 0x5a, 0xf9, 0xc5, 0x10, 0xeb, 0x5b, 0x63, 0xf9, 0x6d, 0x7a, 0x3c, 0x53, 0x72, 0x5f, + 0x9d, 0xa2, 0x92, 0x2a, 0x02, 0xf9, 0x6e, 0xf4, 0xed, 0x1c, 0x64, 0xb6, 0x80, 0x3a, 0x28, + 0x22, 0x0a, 0xeb, 0x34, 0xa5, 0x88, 0x01, 0xb6, 0x4d, 0xcd, 0x62, 0xf8, 0xdd, 0xd4, 0x87, + 0x7f, 0xfc, 0x69, 0xa5, 0xd7, 0xbc, 0xe2, 0xf5, 0xfa, 0x4b, 0x28, 0x52, 0x86, 0xca, 0xda, + 0x88, 0x1e, 0x9e, 0xe5, 0xd9, 0x3b, 0x12, 0xcc, 0x26, 0xa5, 0x42, 0x82, 0xcd, 0x29, 0x51, + 0x30, 0xf4, 0x08, 0x83, 0xd3, 0x53, 0x8d, 0x8f, 0x68, 0xe2, 0xc0, 0xdf, 0x89, 0xfd, 0x38, + 0xf6, 0xcb, 0x5a, 0x19, 0x63, 0x5c, 0x75, 0x60, 0x38, 0x32, 0x28, 0x0c, 0x19, 0x13, 0xfd, + 0xcf, 0xd1, 0xc9, 0xd6, 0xe3, 0x41, 0xaa, 0x8b, 0x4c, 0x37, 0x0c, 0x6a, 0xc7, 0x36, 0x22, + 0xcf, 0x73, 0x22, 0x62, 0x00, 0x09, 0x5c, 0x17, 0x85, 0x9f, 0xff, 0x1c, 0x15, 0x48, 0x9e, + 0x9e, 0x51, 0x7a, 0x7b, 0x43, 0x1b, 0xbc, 0x7b, 0x55, 0xd1, 0xdf, 0x74, 0xbd, 0x7f, 0x29, + 0xcc, 0x79, 0x99, 0x91, 0x62, 0xa1, 0xf3, 0x42, 0x3f, 0x6d, 0xb1, 0xf4, 0xa3, 0xf4, 0x22, + 0x00, 0x60, 0x0a, 0xbf, 0xff, 0x3c, 0xe4, 0x51, 0x49, 0x9b, 0x50, 0x5f, 0x58, 0x2b, 0xec, + 0xd1, 0x19, 0x8a, 0x9b, 0xd1, 0x6d, 0xb5, 0x06, 0xb0, 0xfd, 0x17, 0x7a, 0xa5, 0xa8, 0x40, + 0xaf, 0x1f, 0xf5, 0x81, 0x33, 0x5d, 0xc2, 0xfc, 0x61, 0xa3, 0xf9, 0xe4, 0xfe, 0xf0, 0x3e, + 0xca, 0x50, 0x0d, 0xbe, 0x8a, 0xe7, 0x2e, 0x09, 0x9d, 0x47, 0xd8, 0x55, 0xc5, 0x2c, 0x4c, + 0x35, 0x0a, 0x41, 0x0f, 0x9b, 0xf1, 0x85, 0xf8, 0xa5, 0xf2, 0x3f, 0xd0, 0x3a, 0xfa, 0x8d, + 0x8b, 0xb7, 0xad, 0x2b, 0x6d, 0xb8, 0xd0, 0xa4, 0x2d, 0x1a, 0x7b, 0x6e, 0x26, 0x56, 0xd6, + 0x97, 0x23, 0xe5, 0xf9, 0xd7, 0x37, 0xb1, 0xac, 0xf5, 0x13, 0xa6, 0x15, 0x9e, 0x66, 0x8b, + 0xae, 0x56, 0xbb, 0x1c, 0x8e, 0x80, 0x9e, 0x25, 0x27, 0x9c, 0x96, 0xf9, 0x58, 0x3a, 0x3f, + 0xdb, 0x7a, 0x19, 0xc4, 0x40, 0xec, 0xd0, 0x19, 0xce, 0x2b, 0xc8, 0x68, 0xd8, 0xc9, 0xec, + 0x0e, 0xe5, 0xf1, 0xef, 0x18, 0x50, 0xc4, 0xc9, 0xef, 0x65, 0xef, 0xfd, 0x34, 0x8a, 0xd2, + 0x74, 0xdd, 0xbd, 0x6c, 0x8c, 0xd7, 0xe2, 0xe1, 0xe6, 0x0f, 0x1c, 0xc4, 0x6a, 0x5e, 0xc7, + 0x3a, 0xfc, 0x17, 0x7e, 0xb5, 0x0d, 0x7b, 0x53, 0xfc, 0x0e, 0x45, 0xcc, 0x8e, 0xb5, 0x9d, + 0x3b, 0x6e, 0x5e, 0x48, 0x11, 0x54, 0x32, 0x3a, 0xe2, 0x90, 0x90, 0x22, 0x8c, 0x5e, 0xcf, + 0xff, 0xad, 0xcc, 0x5c, 0x98, 0x36, 0xe0, 0xce, 0x21, 0xb9, 0x64, 0xd2, 0x39, 0xc6, 0xdd, + 0xee, 0x09, 0xdd, 0xda, 0x61, 0x2e, 0xd3, 0x89, 0xac, 0xef, 0xc1, 0xb1, 0x7a, 0x1b, 0xf7, + 0xc1, 0xa0, 0x89, 0xb8, 0xc0, 0x20, 0x65, 0xfa, 0xfb, 0x52, 0xf8, 0x3b, 0x0c, 0xba, 0x5e, + 0x4a, 0x10, 0xd1, 0x73, 0x78, 0xcb, 0x2c, 0x90, 0x90, 0x82, 0xab, 0x8e, 0xc2, 0x0c, 0x43, + 0x35, 0x63, 0x85, 0x6c, 0x2c, 0xe0, 0x00, 0x9b, 0xbb, 0xb3, 0x3b, 0x7c, 0xe3, 0xc7, 0x5c, + 0x82, 0xce, 0x9f, 0xb5, 0xb7, 0xb6, 0xa2, 0xbb, 0x7b, 0x1c, 0xa4, 0xa3, 0x7d, 0xa4, 0x66, + 0x9e, 0x78, 0x0c, 0x20, 0x50, 0x65, 0x15, 0x06, 0xe0, 0x7d, 0x6d, 0x8e, 0x4b, 0x60, 0xbd, + 0xba, 0x0e, 0xc8, 0x5f, 0xaf, 0x40, 0x80, 0x91, 0xae, 0x58, 0x7a, 0xdc, 0x21, 0x2d, 0x12, + 0x19, 0x9e, 0x00, 0x84, 0x00, 0xa2, 0xc3, 0x36, 0xd9, 0xcd, 0xe2, 0xd5, 0x05, 0x09, 0x98, + 0x44, 0x75, 0xa0, 0xce, 0x3c, 0x79, 0x11, 0x3b, 0x7a, 0x5a, 0x19, 0xa6, 0xbc, 0x92, 0x08, + 0xea, 0x70, 0xd5, 0xdd, 0x13, 0x8c, 0x23, 0x6c, 0xb6, 0xca, 0xc5, 0x83, 0x90, 0xca, 0xba, + 0x40, 0x6e, 0xf2, 0x7e, 0x5b, 0x65, 0x08, 0xf3, 0x54, 0xeb, 0xa4, 0x35, 0xe2, 0xb2, 0xab, + 0x9d, 0x95, 0x54, 0x48, 0xb6, 0x21, 0x3d, 0x57, 0x00, 0xd0, 0xc0, 0x4b, 0xb6, 0xf4, 0x9a, + 0x37, 0x1a, 0x07, 0x2d, 0x3f, 0x6a, 0x92, 0xec, 0xf5, 0xa4, 0xaa, 0xc3, 0xa2, 0x2a, 0x65, + 0x67, 0x67, 0x17, 0x1f, 0xc3, 0x0f, 0x6f, 0xee, 0xce, 0x96, 0x1d, 0x13, 0xa5, 0x52, 0x07, + 0x16, 0x9c, 0x28, 0xea, 0xc8, 0xd4, 0x82, 0x33, 0x14, 0x83, 0xaa, 0xc6, 0xaf, 0x31, 0x9f, + 0xab, 0xd2, 0xe6, 0x4d, 0x2e, 0x00, 0xde, 0x7c, 0x42, 0x3e, 0x77, 0xa2, 0x0f, 0x71, 0xe9, + 0xef, 0xda, 0xe5, 0xc0, 0xd2, 0xdf, 0xb7, 0x5e, 0x7c, 0xf3, 0x4d, 0xb3, 0xb8, 0xa4, 0xad, + 0xa4, 0x0b, 0x27, 0x64, 0xdb, 0x43, 0x2d, 0x81, 0x84, 0x47, 0x02, 0x14, 0x9d, 0x7a, 0x1f, + 0x59, 0x42, 0xc7, 0x17, 0x29, 0xb5, 0xc2, 0x31, 0xac, 0x0f, 0x29, 0x39, 0xee, 0x09, 0x98, + 0x0b, 0xfe, 0x4f, 0xe8, 0xb6, 0x51, 0xe3, 0x09, 0xe2, 0x6d, 0x6d, 0x89, 0xf2, 0x1e, 0xe1, + 0x9b, 0x0e, 0x74, 0x9a, 0x73, 0x4c, 0x2f, 0x51, 0x07, 0x50, 0x10, 0xa3, 0x78, 0xbb, 0x36, + 0x77, 0x81, 0x76, 0xea, 0x1b, 0x47, 0x90, 0x86, 0x50, 0xc5, 0xf3, 0x03, 0xc2, 0x2e, 0x51, + 0xf8, 0x4e, 0x13, 0x2a, 0xe8, 0x12, 0x7c, 0xa6, 0x5f, 0xdd, 0xb1, 0x55, 0x97, 0x44, 0x12, + 0xb3, 0xbe, 0xc4, 0x1a, 0x87, 0x33, 0x84, 0x23, 0xcc, 0x95, 0xc3, 0x96, 0xf6, 0xb7, 0x90, + 0x90, 0x14, 0x75, 0x13, 0xe0, 0x3a, 0x4b, 0x83, 0x1e, 0x88, 0x5c, 0x4f, 0x09, 0x5d, 0xf6, + 0xfc, 0x15, 0x09, 0xc1, 0xc9, 0xdf, 0x24, 0xe8, 0x8a, 0xa1, 0x2a, 0x36, 0x2e, 0x26, 0xf9, + 0x8e, 0xaa, 0x3a, 0x1c, 0x3d, 0x03, 0x99, 0x07, 0x22, 0xae, 0xe6, 0x75, 0x7b, 0x69, 0x41, + 0x67, 0xf2, 0x8f, 0x44, 0x7b, 0x5f, 0x19, 0xb7, 0x4b, 0x7c, 0xe2, 0x9e, 0xcc, 0x1a, 0xdb, + 0x1d, 0x4e, 0x92, 0xd8, 0xbf, 0x6f, 0xad, 0x0a, 0xc4, 0x2f, 0x2d, 0x74, 0x70, 0x13, 0x5d, + 0x15, 0xdd, 0x19, 0xba, 0x20, 0xf7, 0x24, 0xa9, 0x9f, 0x50, 0xfc, 0x36, 0xba, 0x3e, 0x4f, + 0x46, 0x62, 0xbf, 0x3d, 0xd4, 0x9b, 0x83, 0x8d, 0x73, 0xca, 0xd7, 0x16, 0x24, 0x1f, 0x26, + 0xce, 0xb6, 0x86, 0xbc, 0x5c, 0xe3, 0x08, 0x50, 0x14, 0x83, 0x34, 0xc5, 0x9e, 0xd3, 0x1a, + 0x42, 0xd9, 0xd1, 0x92, 0xbc, 0x5d, 0x2d, 0x6e, 0x0e, 0x13, 0x98, 0x2c, 0xbb, 0x14, 0x62, + 0x95, 0x0d, 0xe6, 0x25, 0xcb, 0xb7, 0x8e, 0xc7, 0xa2, 0x9f, 0xcc, 0x39, 0xe0, 0x79, 0x40, + 0xad, 0x06, 0x56, 0xe6, 0xbf, 0x42, 0x07, 0x4f, 0x70, 0x18, 0x3e, 0x08, 0x39, 0x44, 0xd3, + 0x19, 0xd5, 0x7c, 0xe9, 0xba, 0x51, 0xff, 0x66, 0x7c, 0x76, 0x93, 0xf6, 0x83, 0xb9, 0xb5, + 0x53, 0x62, 0xe6, 0x53, 0xb5, 0x84, 0x2f, 0xc4, 0x5e, 0xa1, 0xc1, 0x64, 0x08, 0x7b, 0x27, + 0x43, 0x7c, 0x30, 0x6a, 0x07, 0xa6, 0x5c, 0xd0, 0xa3, 0x0e, 0xbe, 0x6a, 0xea, 0xcc, 0xdc, + 0x5f, 0xce, 0x4e, 0xf9, 0x0d, 0xbc, 0x15, 0xd5, 0xfe, 0x7f, 0x48, 0x51, 0x84, 0xcd, 0x6a, + 0xfa, 0x30, 0x7f, 0x7b, 0x34, 0x9d, 0xff, 0x47, 0x19, 0xe6, 0x47, 0xca, 0xa2, 0xcf, 0x42, + 0x71, 0x54, 0xa0, 0x9f, 0x88, 0xfb, 0x3a, 0x5e, 0x6d, 0x54, 0x77, 0xbb, 0x95, 0xb5, 0x6c, + 0xc4, 0xb4, 0x82, 0xe1, 0x80, 0x37, 0x23, 0xa5, 0xce, 0xd5, 0x4f, 0xbc, 0xd9, 0x7f, 0xce, + 0x32, 0x47, 0xe2, 0xd2, 0x0f, 0x8e, 0x33, 0xd7, 0xfc, 0x5d, 0xde, 0x7d, 0xf4, 0x1d, 0x12, + 0x17, 0x2e, 0x04, 0x7b, 0xbf, 0xeb, 0x52, 0xce, 0x16, 0xc2, 0x86, 0x78, 0xb9, 0x24, 0x04, + 0xc4, 0x52, 0x5c, 0x38, 0x25, 0x91, 0xde, 0x84, 0x0d, 0x06, 0x7c, 0xd2, 0x0e, 0xd7, 0x51, + 0xde, 0x80, 0x1e, 0xab, 0xa8, 0x84, 0x58, 0x33, 0xaa, 0xa6, 0x2c, 0x1b, 0x93, 0x14, 0x5e, + 0x09, 0xfe, 0x50, 0x43, 0xda, 0x1f, 0x67, 0xb4, 0x58, 0x50, 0xd5, 0xea, 0x58, 0x1a, 0xd7, + 0x38, 0x1f, 0x2d, 0x91, 0x97, 0xd4, 0xca, 0x68, 0x08, 0xe7, 0xe9, 0x59, 0x00, 0x82, 0x63, + 0x0f, 0x10, 0x5d, 0x0f, 0xd4, 0x78, 0xa3, 0xca, 0xf7, 0x16, 0x2c, 0x74, 0x7d, 0xba, 0xb7, + 0x2f, 0xb5, 0x64, 0xdc, 0x06, 0x11, 0xd8, 0x1f, 0x8b, 0x0f, 0x29, 0xb2, 0x14, 0xe9, 0x17, + 0x2e, 0xdf, 0x0a, 0x30, 0x8d, 0xa2, 0x68, 0x4b, 0x1b, 0x48, 0x6b, 0x65, 0x1c, 0x0c, 0xec, + 0xfb, 0x76, 0x6b, 0x8e, 0x03, 0xa4, 0x63, 0x63, 0x8a, 0xeb, 0x52, 0x3f, 0x3c, 0xfc, 0xc3, + 0xfe, 0x24, 0xfd, 0x26, 0x43, 0x84, 0xe4, 0x1b, 0x0e, 0xf6, 0xa2, 0xf3, 0x1c, 0x45, 0x29, + 0x35, 0x0a, 0x6a, 0xdd, 0x82, 0x8d, 0xbd, 0x7d, 0x4d, 0xcc, 0xca, 0x51, 0xe4, 0xb5, 0x7b, + 0x43, 0x6a, 0x7d, 0x32, 0xa3, 0x33, 0xc6, 0x22, 0x61, 0xf9, 0xa1, 0x01, 0xcc, 0xd9, 0x26, + 0x68, 0x51, 0xc9, 0xc1, 0x49, 0xbc, 0x14, 0x70, 0x8c, 0xf9, 0x13, 0xf8, 0xf1, 0x9c, 0x5b, + 0xf4, 0x49, 0xe9, 0xa8, 0x15, 0x09, 0xbe, 0x0e, 0x78, 0x1a, 0x64, 0xc5, 0x53, 0x99, 0x67, + 0xc6, 0xd8, 0x8c, 0xe1, 0x57, 0xd7, 0x5d, 0x49, 0x7d, 0x3e, 0xda, 0xef, 0x9e, 0xd3, 0x0a, + 0xfc, 0x87, 0xbb, 0x5e, 0x26, 0x41, 0xcc, 0x38, 0x04, 0x44, 0x22, 0x63, 0x4a, 0x75, 0x4a, + 0x08, 0xf1, 0xc2, 0x6b, 0x15, 0x0c, 0x98, 0xe4, 0xa1, 0x14, 0xd6, 0xc0, 0xd3, 0xa6, 0x6c, + 0xcb, 0x8c, 0xb4, 0x8d, 0x94, 0x89, 0x6c, 0x44, 0x81, 0x0c, 0x73, 0x73, 0xfb, 0xb5, 0xa7, + 0x2f, 0xfc, 0x48, 0x86, 0x17, 0x3f, 0x1c, 0x56, 0xe1, 0x25, 0x72, 0xfd, 0x9d, 0xa5, 0xd0, + 0xce, 0x64, 0x91, 0xaa, 0x7d, 0xc9, 0xe0, 0x8b, 0x5d, 0xfe, 0x3b, 0x1e, 0xd8, 0x5a, 0x2b, + 0xe1, 0x9b, 0x09, 0x79, 0xfa, 0xcd, 0xa1, 0x23, 0xc2, 0x96, 0x54, 0xc6, 0x66, 0x5e, 0x75, + 0x63, 0x37, 0xa5, 0x99, 0x78, 0x25, 0xe2, 0xff, 0xbc, 0x50, 0x01, 0xb9, 0x64, 0x0d, 0x10, + 0x53, 0xb5, 0xd9, 0xf2, 0x54, 0xa6, 0x33, 0x2e, 0xf3, 0x7e, 0xda, 0xf7, 0x27, 0x0e, 0xdf, + 0x3c, 0x6a, 0xd4, 0x1b, 0x2b, 0x33, 0x69, 0x3a, 0x00, 0xde, 0x17, 0x1b, 0x36, 0x4d, 0x80, + 0x04, 0x27, 0x7f, 0x43, 0x5a, 0x14, 0xf7, 0xea, 0x77, 0xd3, 0x67, 0x29, 0x0a, 0x2e, 0x72, + 0x0f, 0xdf, 0x76, 0x14, 0xa6, 0xee, 0x9f, 0x2b, 0x6a, 0x19, 0xc9, 0x23, 0xce, 0x2b, 0x98, + 0xa0, 0x2d, 0x29, 0x83, 0xf4, 0x6c, 0xcb, 0x65, 0xa7, 0x51, 0x03, 0xf8, 0x85, 0xc3, 0xf7, + 0xe7, 0xa0, 0xe1, 0x76, 0xaa, 0x91, 0x75, 0x65, 0x46, 0x70, 0x3a, 0xb0, 0xe3, 0x13, 0x41, + 0x2b, 0x24, 0x64, 0xbb, 0x1d, 0x96, 0x36, 0xdb, 0xac, 0x20, 0x01, 0x4b, 0x51, 0x79, 0x09, + 0xe4, 0x2a, 0x74, 0x7d, 0x8f, 0x12, 0xe3, 0x85, 0xaa, 0xfa, 0xa6, 0x17, 0xf8, 0x6a, 0x48, + 0xc1, 0x5a, 0x57, 0x7e, 0x56, 0x89, 0x25, 0xa3, 0xa2, 0xdb, 0xc8, 0xc2, 0xf7, 0x3a, 0xa3, + 0x80, 0x4c, 0x65, 0xb0, 0xa5, 0xf1, 0x69, 0x52, 0xb2, 0x9a, 0xf0, 0xd1, 0x3a, 0x7a, 0x59, + 0x76, 0xb1, 0x3a, 0x22, 0xc1, 0xe1, 0x3f, 0x8a, 0x17, 0xdf, 0x3a, 0xec, 0x99, 0x0a, 0xa0, + 0x95, 0xe5, 0x7c, 0x83, 0x53, 0xdc, 0x8b, 0x2b, 0xb6, 0xdf, 0x6f, 0xd0, 0x19, 0x03, 0xa5, + 0x7d, 0xd5, 0x8c, 0xba, 0x72, 0xcc, 0xe4, 0x72, 0x62, 0x0a, 0x3a, 0x3a, 0x8c, 0x02, 0x4f, + 0xb8, 0xf0, 0x11, 0xcd, 0x03, 0x05, 0x3f, 0x25, 0x1f, 0x6e, 0xb3, 0x7d, 0xe3, 0xcf, 0x42, + 0x32, 0x5f, 0x65, 0xee, 0x65, 0x6a, 0x3e, 0x19, 0xd9, 0x41, 0x3b, 0xa5, 0x26, 0x53, 0xc2, + 0x2b, 0xdc, 0x15, 0x1f, 0x2e, 0x5a, 0xbc, 0xad, 0x20, 0x73, 0xe0, 0xa7, 0x2d, 0x7b, 0xfb, + 0xa2, 0x0e, 0x33, 0x50, 0xb8, 0x07, 0xb1, 0xc5, 0x84, 0x46, 0x34, 0x37, 0x9b, 0x89, 0x14, + 0xe4, 0xb9, 0x64, 0xa4, 0x09, 0xb3, 0xad, 0xaf, 0xa6, 0x05, 0x5a, 0x06, 0x1b, 0x53, 0x1f, + 0x1f, 0x76, 0xe1, 0x7c, 0xd2, 0x6d, 0xd8, 0x53, 0x12, 0x36, 0x2d, 0x5a, 0x6d, 0x18, 0xb7, + 0x8b, 0x0c, 0x59, 0xbf, 0xca, 0x91, 0x2e, 0x46, 0xb8, 0xcc, 0x8b, 0xdb, 0x39, 0x47, 0x59, + 0x7a, 0x0d, 0x38, 0x91, 0x34, 0xb0, 0xd8, 0xbb, 0xe7, 0x3f, 0x40, 0x56, 0xab, 0xf0, 0xbf, + 0x83, 0x56, 0xa9, 0x10, 0x60, 0xed, 0xe6, 0xce, 0x78, 0xdd, 0xb3, 0xfc, 0x1b, 0xbe, 0x8b, + 0x77, 0x29, 0x8e, 0xdf, 0x72, 0x70, 0xe9, 0xfb, 0xe4, 0x9c, 0x0f, 0x00, 0x6e, 0xf9, 0x6e, + 0x35, 0xb4, 0xae, 0x35, 0x10, 0x06, 0x46, 0x5e, 0x76, 0x56, 0xb1, 0xbf, 0x3c, 0x5f, 0x3f, + 0xfb, 0x87, 0xe7, 0xb3, 0xe2, 0x21, 0x28, 0x95, 0xff, 0xa8, 0xb7, 0x83, 0x78, 0x41, 0x78, + 0xd0, 0x6e, 0xf4, 0x3b, 0x31, 0x87, 0x5a, 0x0b, 0xff, 0x73, 0x37, 0x28, 0x5a, 0xbc, 0x31, + 0x1b, 0x56, 0x52, 0xb8, 0xe7, 0xaf, 0x4d, 0x5c, 0xe7, 0x22, 0x9e, 0x0d, 0x31, 0x5e, 0x70, + 0xf6, 0xd1, 0xa6, 0x7d, 0x79, 0x1d, 0x61, 0xe6, 0x1d, 0x1b, 0xb5, 0xf4, 0xca, 0x9e, 0x1d, + 0x65, 0xda, 0x1b, 0x31, 0xa1, 0xd1, 0xa4, 0x64, 0xe7, 0x4e, 0x1e, 0x0f, 0x97, 0xdb, 0x1d, + 0x02, 0x66, 0x8f, 0x51, 0xb1, 0xe9, 0x30, 0x5b, 0x82, 0xe8, 0x52, 0x3e, 0x7d, 0x13, 0x6e, + 0xf1, 0x32, 0x9c, 0x30, 0x02, 0x6a, 0xb8, 0xbe, 0x15, 0xff, 0x98, 0xa2, 0xc3, 0xc6, 0xaa, + 0xa1, 0x10, 0x86, 0x33, 0xae, 0x33, 0x69, 0xeb, 0x6a, 0xec, 0x93, 0xd3, 0xf1, 0x2f, 0xd5, + 0xd4, 0x4f, 0xd4, 0x10, 0x94, 0x36, 0xfe, 0x88, 0x93, 0x0f, 0x94, 0x0a, 0x82, 0x74, 0x8f, + 0x2e, 0x13, 0x40, 0x84, 0x64, 0xbb, 0xc0, 0xae, 0x53, 0x78, 0x2f, 0xc8, 0x0c, 0x3a, 0x0f, + 0x22, 0x52, 0xb3, 0x59, 0x9c, 0xd4, 0x32, 0x95, 0x95, 0x70, 0x73, 0x35, 0xbc, 0x1f, 0xae, + 0x0f, 0x9f, 0x2d, 0x61, 0x85, 0xfa, 0x5e, 0xa3, 0x22, 0x66, 0x47, 0x7b, 0xd8, 0x7c, 0x8d, + 0x66, 0xb8, 0x06, 0xeb, 0x6e, 0xe0, 0x5d, 0x76, 0x4c, 0xf2, 0xc0, 0xd7, 0x26, 0x98, 0xdc, + 0x8d, 0x38, 0x50, 0x16, 0xbf, 0x86, 0xfc, 0xc6, 0x3e, 0x12, 0xd4, 0xce, 0xe2, 0x2f, 0x4f, + 0x80, 0x9b, 0x6b, 0x8d, 0x30, 0x10, 0x44, 0xc9, 0xdc, 0xfe, 0x8c, 0x74, 0x93, 0xb7, 0x72, + 0x0e, 0xbc, 0x5f, 0x1f, 0xde, 0x30, 0x8b, 0x3d, 0xcf, 0x12, 0x37, 0x1c, 0x71, 0x39, 0xfd, + 0xaf, 0x67, 0x7e, 0xd8, 0x43, 0xf6, 0x2f, 0x7d, 0x4c, 0xdf, 0x51, 0x25, 0x33, 0xdc, 0x6a, + 0xe5, 0xa2, 0x1f, 0x1a, 0x32, 0x1c, 0xc0, 0xfd, 0xfa, 0x1d, 0x9c, 0x90, 0x52, 0xc5, 0x70, + 0x59, 0xdd, 0xda, 0xc4, 0xf3, 0x7e, 0x6c, 0xf5, 0x31, 0x72, 0x5b, 0xba, 0x7a, 0xa8, 0xa0, + 0x21, 0x89, 0x79, 0xd6, 0xa3, 0xcb, 0x68, 0x1f, 0x41, 0xea, 0x5a, 0xb5, 0xaa, 0x54, 0x50, + 0x9e, 0xc2, 0x07, 0xab, 0x55, 0x9a, 0x96, 0xd3, 0x0a, 0x8b, 0x04, 0x54, 0xd1, 0x1c, 0x34, + 0x98, 0x7b, 0xc3, 0x37, 0x00, 0x29, 0xeb, 0x87, 0x9e, 0x48, 0x9c, 0x9b, 0x05, 0x2e, 0x31, + 0xea, 0xb2, 0xb2, 0x5c, 0x7b, 0x7d, 0x1f, 0x10, 0xe7, 0xd2, 0xe6, 0x21, 0x21, 0x40, 0x31, + 0xb7, 0xb9, 0x49, 0xa1, 0xa9, 0xe6, 0x06, 0x79, 0xdd, 0x5a, 0x7b, 0x0d, 0x4d, 0x98, 0xbd, + 0x69, 0x77, 0x85, 0x22, 0xdd, 0x57, 0xb7, 0x95, 0x8a, 0x1a, 0xf5, 0x9b, 0x71, 0x21, 0x2d, + 0x0c, 0xe0, 0x07, 0x63, 0xf1, 0x00, 0x96, 0xaf, 0xde, 0x3f, 0xe9, 0xc3, 0x92, 0x09, 0xcd, + 0x2a, 0x10, 0xcc, 0x33, 0xe1, 0x42, 0xc1, 0x16, 0x5c, 0x7d, 0xa0, 0x66, 0x32, 0x71, 0x52, + 0x3d, 0x15, 0x4c, 0xe5, 0x2e, 0x36, 0xe1, 0x43, 0xce, 0x7d, 0x51, 0x84, 0x5c, 0x63, 0xfc, + 0xa3, 0xe4, 0x1d, 0x00, 0x6a, 0x22, 0x67, 0x7f, 0x3d, 0xc3, 0xd2, 0x6d, 0x7e, 0x79, 0x45, + 0xec, 0x3d, 0x6d, 0x1f, 0x8d, 0xc9, 0x42, 0xa0, 0x7a, 0x00, 0x56, 0xed, 0xd7, 0x65, 0x5c, + 0x7b, 0x46, 0x59, 0x8c, 0x6c, 0x5f, 0x78, 0x36, 0x8a, 0xe6, 0x45, 0xf0, 0x4a, 0xe7, 0x4b, + 0x33, 0xff, 0x8c, 0x93, 0xb1, 0x35, 0x60, 0xda, 0x37, 0xba, 0xf5, 0x2b, 0x2a, 0xb2, 0xfd, + 0x0b, 0xba, 0x14, 0xdb, 0x51, 0x34, 0x64, 0x5b, 0xc9, 0xa9, 0xd2, 0x5f, 0x3f, 0xa5, 0x27, + 0xb2, 0x96, 0xb5, 0xad, 0x7f, 0xf6, 0x4f, 0x03, 0x73, 0x1a, 0x66, 0x1b, 0xbb, 0x62, 0x81, + 0x7a, 0x60, 0x17, 0xc1, 0x66, 0xa8, 0x8e, 0x9b, 0x85, 0xfb, 0x3e, 0x6a, 0x3a, 0x9f, 0x3a, + 0xff, 0x9c, 0xd7, 0xdc, 0xa9, 0x45, 0xb3, 0xf6, 0x60, 0x2f, 0x0a, 0xc5, 0x75, 0xfe, 0x2f, + 0xc3, 0x90, 0xb4, 0x11, 0xbc, 0xfd, 0xa5, 0x3e, 0xb6, 0x67, 0x9d, 0x4e, 0x3b, 0xa9, 0x6b, + 0xcd, 0xe3, 0xa8, 0xf7, 0x60, 0x9c, 0x8b, 0x21, 0x86, 0x7a, 0xf5, 0x23, 0x40, 0x40, 0xf3, + 0xe3, 0xa7, 0x68, 0x51, 0x46, 0x62, 0xdb, 0x65, 0xc3, 0x86, 0xe4, 0xf1, 0x91, 0xdc, 0xe3, + 0xcb, 0xed, 0x8f, 0x7d, 0xab, 0x97, 0xba, 0x93, 0x21, 0x6a, 0x78, 0xe1, 0xe7, 0x1b, 0xa6, + 0x8e, 0x3b, 0x99, 0xa5, 0x03, 0xca, 0xaa, 0x87, 0x22, 0x52, 0xf8, 0xd1, 0x38, 0xbd, 0x06, + 0x7a, 0x5b, 0xc8, 0xc6, 0x62, 0x81, 0x0f, 0x21, 0x94, 0x7e, 0x16, 0x5d, 0x14, 0x0b, 0x79, + 0x3f, 0x82, 0x5d, 0x16, 0x01, 0x84, 0x2c, 0x7a, 0xd6, 0x42, 0x91, 0x65, 0xa2, 0x81, 0x03, + 0x9f, 0xbf, 0x92, 0x93, 0x90, 0x65, 0x11, 0x5f, 0xd2, 0x94, 0x7e, 0xd0, 0x50, 0x7d, 0x5a, + 0x30, 0x49, 0x12, 0xa5, 0x58, 0x2a, 0x2b, 0xaa, 0xc9, 0xf7, 0xa0, 0x86, 0x3c, 0xc0, 0xb2, + 0xe2, 0x4c, 0x2d, 0xe9, 0x16, 0xfb, 0xfc, 0x8b, 0xbf, 0x41, 0x98, 0xe7, 0x95, 0x36, 0x90, + 0x2c, 0x77, 0x2e, 0x4b, 0x1f, 0x8f, 0x51, 0x7f, 0xa9, 0x13, 0x57, 0x5b, 0x85, 0xfa, 0x2e, + 0x51, 0xec, 0x59, 0xf9, 0xb5, 0x05, 0xd3, 0xd3, 0xdd, 0xdd, 0x97, 0x63, 0xea, 0x76, 0x47, + 0x61, 0x26, 0xba, 0x14, 0xa4, 0x7d, 0x13, 0x65, 0x25, 0x6c, 0x9b, 0xde, 0x29, 0xfb, 0x77, + 0xaf, 0xbf, 0x66, 0x3f, 0xd5, 0xba, 0x40, 0x7d, 0xb7, 0x15, 0xcd, 0x75, 0x32, 0x90, 0x30, + 0x02, 0xb8, 0x4b, 0xfb, 0xd3, 0xdf, 0xd7, 0x26, 0x32, 0xc3, 0x69, 0x4f, 0x29, 0x81, 0x77, + 0xda, 0x69, 0x0d, 0xc1, 0x6a, 0xda, 0x4f, 0x5f, 0x7d, 0x08, 0x7f, 0x4f, 0x5c, 0x96, 0x60, + 0xf4, 0x83, 0xea, 0x6b, 0xc0, 0xd1, 0x8e, 0x00, 0xcc, 0x56, 0x11, 0x2f, 0xe5, 0x6c, 0xd5, + 0x36, 0x26, 0x93, 0xea, 0x52, 0xd0, 0x48, 0xb4, 0x19, 0x12, 0x31, 0x24, 0x44, 0x05, 0x8e, + 0x93, 0x41, 0x96, 0x2e, 0x18, 0x45, 0xf5, 0xa3, 0xdc, 0x3d, 0x91, 0x3b, 0x22, 0xba, 0x98, + 0x24, 0xb1, 0x7e, 0x46, 0x5e, 0x2b, 0x1a, 0x8f, 0x33, 0x19, 0x79, 0xdd, 0x1b, 0x4f, 0x64, + 0x5a, 0xc8, 0x7b, 0x48, 0xe0, 0x48, 0xe2, 0xea, 0x0b, 0x6e, 0xbd, 0xf2, 0x2c, 0x76, 0x2b, + 0xfc, 0x87, 0x47, 0x52, 0x2f, 0xb0, 0xbf, 0xf2, 0x96, 0x34, 0x4d, 0x87, 0xb4, 0x4d, 0xb8, + 0x37, 0x07, 0x25, 0xfd, 0x4e, 0x36, 0x03, 0x87, 0xc2, 0x48, 0x14, 0x3e, 0x4f, 0x4a, 0x23, + 0xfc, 0x25, 0xdb, 0xbb, 0x0b, 0xbb, 0x4d, 0xf1, 0xec, 0xff, 0x10, 0xb9, 0x0e, 0x04, 0xec, + 0xc9, 0x93, 0xdc, 0x5d, 0x23, 0x88, 0x2f, 0xeb, 0x00, 0x83, 0x87, 0xac, 0xd7, 0xb7, 0x92, + 0x17, 0xa8, 0x50, 0x0c, 0x9b, 0x93, 0x95, 0xb1, 0xe7, 0x12, 0x6d, 0xb1, 0xdf, 0x3b, 0x41, + 0xcb, 0x4c, 0x0b, 0x77, 0x2b, 0xb7, 0xb2, 0xdf, 0x6a, 0xa8, 0xff, 0xc1, 0x78, 0x5e, 0xfb, + 0xca, 0x92, 0x5c, 0xaa, 0x67, 0x17, 0x1c, 0x23, 0x89, 0x92, 0x76, 0x0f, 0x81, 0xcf, 0x06, + 0xb9, 0x43, 0xf5, 0xaf, 0xf5, 0x75, 0x2e, 0x8a, 0xd5, 0xc6, 0xf4, 0x30, 0xdc, 0x00, 0x33, + 0x22, 0x16, 0x0e, 0x6a, 0xc8, 0x08, 0xa4, 0x1e, 0x66, 0x6f, 0x11, 0x8b, 0x20, 0xcc, 0x46, + 0x28, 0x81, 0x57, 0xde, 0xd4, 0xdd, 0x32, 0x17, 0xc7, 0x72, 0xf1, 0x46, 0x2a, 0x3a, 0xaa, + 0xb2, 0x7b, 0x96, 0x80, 0x8f, 0x50, 0x66, 0xcb, 0x34, 0x18, 0x95, 0x37, 0xcb, 0x21, 0xd1, + 0xdf, 0x3a, 0x6f, 0x78, 0x65, 0xdb, 0xac, 0xd8, 0xe2, 0x62, 0xda, 0x96, 0x56, 0x83, 0xd4, + 0xb5, 0x8b, 0x2c, 0xc0, 0x11, 0xd1, 0xc4, 0xae, 0x9b, 0xec, 0xc3, 0x14, 0x6c, 0xfe, 0xd8, + 0x74, 0x7f, 0xb1, 0x75, 0x58, 0x50, 0x81, 0x60, 0x7a, 0xa0, 0xfd, 0xa7, 0xe8, 0x94, 0xbe, + 0xa5, 0x89, 0xbb, 0xf4, 0x4e, 0x9b, 0x5e, 0x54, 0xd7, 0xe3, 0x1a, 0xa8, 0xc9, 0x06, 0x1f, + 0xfc, 0xb9, 0xd0, 0x05, 0x1d, 0xc9, 0xdf, 0xd4, 0x50, 0xaa, 0xcd, 0xc2, 0xc3, 0x09, 0x9f, + 0x6c, 0xfb, 0xcd, 0x04, 0x5b, 0x2d, 0x5a, 0xd1, 0xa8, 0x73, 0x6c, 0x7c, 0xee, 0x6d, 0x2d, + 0x1f, 0x11, 0x40, 0xc8, 0x14, 0x65, 0x36, 0x46, 0xce, 0x20, 0x12, 0x40, 0x26, 0xad, 0x5b, + 0x62, 0x1d, 0x6a, 0xdc, 0xe6, 0x33, 0xb2, 0x1e, 0xf6, 0x96, 0xf8, 0x39, 0x30, 0x70, 0xd2, + 0x45, 0xd8, 0x1c, 0x4f, 0x65, 0xed, 0x1e, 0x52, 0x47, 0x14, 0x1c, 0x6f, 0x95, 0x29, 0x4e, + 0x47, 0xc3, 0x31, 0x18, 0x71, 0x4d, 0x0e, 0xf1, 0x80, 0x22, 0xcf, 0xed, 0xbc, 0xde, 0x5b, + 0x03, 0x80, 0x23, 0xec, 0x0f, 0x51, 0x87, 0x99, 0x47, 0xbd, 0x60, 0xfc, 0x09, 0xb1, 0x43, + 0x95, 0xe7, 0x9e, 0xd8, 0x49, 0x39, 0x73, 0xe4, 0x6b, 0x5d, 0xbb, 0xd6, 0xe6, 0x28, 0xc4, + 0x35, 0xbe, 0xc7, 0xa3, 0x80, 0x3b, 0x33, 0x97, 0x6a, 0xdd, 0xd0, 0xc6, 0x2a, 0x95, 0x94, + 0xfd, 0x93, 0xb1, 0xa6, 0x66, 0x79, 0x4c, 0x1c, 0xbb, 0x74, 0xdf, 0xbd, 0xec, 0x62, 0x2d, + 0x0f, 0x8e, 0x42, 0xca, 0xd0, 0xd8, 0x9d, 0x1f, 0x1f, 0x73, 0x63, 0xf1, 0xba, 0x7c, 0x3f, + 0xd1, 0x21, 0x32, 0x98, 0xca, 0x31, 0x46, 0x4e, 0x0e, 0x8b, 0xb6, 0x4f, 0x27, 0xdc, 0x4f, + 0x1b, 0x35, 0x21, 0x83, 0xd4, 0x75, 0x9d, 0x3c, 0x99, 0xf2, 0x24, 0xe7, 0x32, 0x9a, 0x7b, + 0x55, 0x5f, 0x52, 0x08, 0xb0, 0xc3, 0x13, 0x14, 0x07, 0x7b, 0x3e, 0xc4, 0x67, 0xa1, 0xa1, + 0x4f, 0xa7, 0x82, 0x0e, 0x69, 0xc6, 0x31, 0xf8, 0x64, 0xf1, 0x8d, 0x97, 0x34, 0xfa, 0x4e, + 0x7c, 0x89, 0x49, 0xab, 0x64, 0x89, 0xe6, 0x48, 0x81, 0x72, 0xce, 0xdf, 0xe0, 0x45, 0x36, + 0xb3, 0x3b, 0x2d, 0xd7, 0xb2, 0x9c, 0x16, 0x5d, 0x00, 0x30, 0xa1, 0x2b, 0xbd, 0x47, 0x0d, + 0x4f, 0xab, 0xa2, 0x1a, 0x02, 0x6a, 0x52, 0xec, 0xc1, 0xce, 0x10, 0xbc, 0x2d, 0xb5, 0x3b, + 0x3a, 0xd8, 0x75, 0x2d, 0x13, 0xdd, 0x3d, 0x0f, 0xea, 0x67, 0x42, 0xb2, 0x5a, 0xdd, 0xb8, + 0x25, 0x0d, 0x4c, 0xa0, 0x4b, 0x12, 0x82, 0x85, 0x60, 0x4e, 0x76, 0xc7, 0x7c, 0x72, 0x81, + 0x83, 0x3b, 0xf3, 0x0f, 0xd9, 0xbf, 0xc6, 0x8f, 0xd6, 0xae, 0x18, 0x05, 0x17, 0x0e, 0xe9, + 0xa2, 0xcc, 0xac, 0x0d, 0xc2, 0x61, 0xcf, 0xdd, 0x0a, 0x59, 0x75, 0x5a, 0x3f, 0x46, 0x14, + 0x78, 0x06, 0xf3, 0xab, 0x00, 0x5c, 0x44, 0x20, 0x9b, 0xcd, 0x15, 0x86, 0x9b, 0x76, 0x4a, + 0xea, 0xcd, 0x76, 0x73, 0x62, 0x2d, 0x07, 0x64, 0xa8, 0xf4, 0x7a, 0xdf, 0x8d, 0xad, 0xc6, + 0x3a, 0x5a, 0x9e, 0xc3, 0xe2, 0x5f, 0xf8, 0x4f, 0xa7, 0x4b, 0x8f, 0x05, 0xd8, 0x4d, 0x4a, + 0x7f, 0xec, 0xaa, 0x52, 0x15, 0xe8, 0x64, 0x09, 0x52, 0xc3, 0xd0, 0xca, 0x9e, 0xe8, 0x8e, + 0xce, 0x1f, 0x68, 0x2a, 0x7d, 0xed, 0x50, 0x97, 0x41, 0x2f, 0x9e, 0x38, 0xcd, 0x61, 0x62, + 0xac, 0xa6, 0x2d, 0xa3, 0x04, 0x73, 0x37, 0xe1, 0xa4, 0x09, 0xd7, 0x07, 0x9b, 0x15, 0x40, + 0xc7, 0x22, 0x5a, 0xd0, 0x97, 0xa3, 0xc8, 0xfd, 0xf7, 0x08, 0xda, 0x73, 0x64, 0xae, 0x07, + 0x91, 0x86, 0xf3, 0x84, 0x70, 0x9d, 0x5c, 0x41, 0x53, 0x95, 0xf8, 0x37, 0x4f, 0x74, 0x18, + 0xd1, 0x76, 0xbd, 0x8f, 0xec, 0xaf, 0x25, 0x16, 0xf6, 0x83, 0xfb, 0x0d, 0x91, 0x50, 0x69, + 0xbd, 0x14, 0x06, 0x1b, 0x1f, 0x36, 0x43, 0x01, 0xf4, 0xe3, 0xb5, 0xa5, 0xe3, 0x20, 0x8d, + 0x4b, 0x55, 0xde, 0x86, 0x40, 0xc1, 0xac, 0x3b, 0x01, 0x08, 0xf6, 0x90, 0x3e, 0xb1, 0x4a, + 0x76, 0xe6, 0x98, 0xe1, 0x09, 0x46, 0x46, 0xbe, 0xe5, 0xd9, 0x1d, 0xfc, 0x8d, 0x85, 0x00, + 0x36, 0x25, 0x84, 0x02, 0x21, 0x4c, 0x9b, 0xe7, 0xa6, 0x92, 0xea, 0xc0, 0xb7, 0xe9, 0xa8, + 0xbe, 0xe2, 0x0d, 0x42, 0x3f, 0xf0, 0xbf, 0x00, 0xa7, 0x44, 0x3c, 0x1c, 0x81, 0x15, 0xfe, + 0x5a, 0x39, 0x01, 0xfb, 0x7f, 0x30, 0x7f, 0x41, 0xfd, 0x9d, 0x1f, 0x76, 0x00, 0x04, 0x89, + 0x37, 0xfe, 0x7d, 0xac, 0x93, 0x48, 0x4d, 0xbc, 0x2c, 0xae, 0x52, 0x2d, 0xf7, 0x06, 0x50, + 0xf9, 0x8f, 0x79, 0xc3, 0x24, 0x68, 0x01, 0xe5, 0x49, 0x1a, 0x34, 0x94, 0x62, 0x90, 0x0c, + 0x95, 0x20, 0x4f, 0x29, 0x1f, 0x4b, 0xbb, 0xa1, 0xac, 0x71, 0x36, 0x0f, 0x9f, 0x3e, 0x2b, + 0x53, 0xb9, 0x57, 0x02, 0xa0, 0x20, 0x04, 0x08, 0x55, 0x7c, 0xa6, 0xc4, 0x7c, 0x02, 0xa5, + 0x76, 0x44, 0x04, 0x47, 0xa2, 0x36, 0x25, 0x44, 0xfb, 0xfb, 0xd4, 0x1e, 0xf3, 0x76, 0x1b, + 0x83, 0x4f, 0x5e, 0x3c, 0x88, 0xf0, 0x97, 0x1d, 0x2e, 0x9c, 0x81, 0x82, 0xd9, 0x05, 0x7b, + 0x3b, 0x6d, 0x5c, 0xed, 0x2b, 0x3d, 0x64, 0x18, 0x78, 0xae, 0x83, 0x29, 0xb0, 0x88, 0x11, + 0x26, 0x9a, 0x44, 0x50, 0x02, 0x66, 0xfc, 0x45, 0xf4, 0xa4, 0x15, 0x3c, 0xef, 0x3a, 0x40, + 0x9f, 0xa8, 0x79, 0xb8, 0xd7, 0x49, 0x31, 0x18, 0x13, 0x65, 0x4b, 0x93, 0x31, 0x9a, 0x07, + 0xd5, 0x21, 0x34, 0xd1, 0x01, 0x7d, 0xed, 0xb0, 0x10, 0x06, 0x91, 0x77, 0x25, 0x1d, 0x31, + 0x9d, 0xde, 0xdc, 0x39, 0xb7, 0x20, 0x81, 0x06, 0x1a, 0x95, 0xc1, 0xac, 0xab, 0x0d, 0xd3, + 0xfd, 0xd2, 0x05, 0xa3, 0x54, 0xc2, 0x00, 0xce, 0x46, 0x7d, 0x2e, 0x0d, 0xad, 0x57, 0x26, + 0x6c, 0x8b, 0x47, 0x4c, 0xc8, 0xcf, 0xe1, 0xa8, 0xd2, 0xea, 0x35, 0x61, 0xc5, 0x5b, 0xe3, + 0xa6, 0x40, 0x3e, 0xc6, 0xcd, 0x0d, 0x03, 0x01, 0x4b, 0x7b, 0x82, 0x50, 0x6a, 0xa0, 0x64, + 0xe0, 0x35, 0x44, 0x3d, 0x9c, 0x52, 0xf9, 0xe5, 0xbf, 0xcc, 0x0f, 0xbd, 0xe7, 0x3c, 0x67, + 0xe1, 0x6d, 0xae, 0x99, 0xa2, 0xa8, 0xcc, 0x85, 0x1b, 0x80, 0x04, 0xdd, 0x6e, 0x96, 0x32, + 0x89, 0x62, 0x1d, 0x08, 0xe0, 0x73, 0x63, 0xfe, 0xd5, 0x95, 0xbc, 0xfb, 0x07, 0xc4, 0xe7, + 0x3f, 0xf9, 0xd1, 0x6a, 0x39, 0x69, 0x09, 0x6c, 0x99, 0xc6, 0x71, 0xf2, 0x2f, 0x27, 0x6d, + 0x6c, 0x67, 0x88, 0xf6, 0x11, 0x1e, 0x5c, 0x25, 0xaa, 0x92, 0x48, 0x1c, 0x85, 0xc8, 0xd0, + 0xa0, 0x83, 0xde, 0x51, 0x29, 0xe1, 0x73, 0x8d, 0x68, 0x64, 0x7b, 0x64, 0xb6, 0xb8, 0x50, + 0x8c, 0xf6, 0xa8, 0x80, 0x96, 0xb0, 0xa8, 0x10, 0xf7, 0x38, 0xc4, 0x03, 0x52, 0xcd, 0xe8, + 0xe4, 0x28, 0x26, 0xb3, 0x23, 0xac, 0xd8, 0x49, 0x93, 0x72, 0x11, 0x1b, 0xf4, 0x44, 0x4a, + 0xf1, 0xad, 0x8e, 0xa1, 0x0d, 0x93, 0x56, 0x05, 0x16, 0x23, 0x2e, 0x96, 0xf2, 0xd8, 0x12, + 0x81, 0x25, 0xfb, 0x6a, 0x56, 0xab, 0x31, 0xf5, 0x74, 0x3f, 0xfe, 0x1d, 0xc3, 0x35, 0x72, + 0x69, 0x4b, 0x5f, 0x2c, 0x75, 0x85, 0x72, 0x09, 0xbc, 0x67, 0x1b, 0x0a, 0x13, 0x67, 0x4e, + 0x5e, 0xb5, 0xba, 0xba, 0xa2, 0x72, 0xa1, 0x46, 0x2d, 0x45, 0x92, 0xa4, 0xd9, 0x08, 0x3b, + 0x02, 0x80, 0x7c, 0x14, 0x39, 0x0d, 0x12, 0xc7, 0xbc, 0x9f, 0x65, 0x42, 0xee, 0x1c, 0xa0, + 0x53, 0xdd, 0x69, 0xf3, 0xd1, 0x69, 0x4a, 0x14, 0xc2, 0xd3, 0x87, 0xd8, 0x81, 0x9f, 0x5c, + 0x8c, 0x6b, 0x84, 0xa6, 0x1c, 0x8b, 0xb2, 0x5c, 0x6f, 0x3d, 0xcd, 0xcc, 0xce, 0x13, 0x73, + 0x34, 0xdd, 0x73, 0xc4, 0x98, 0x88, 0x8a, 0xb5, 0x20, 0x58, 0xe6, 0x75, 0x6a, 0x92, 0x79, + 0x53, 0xed, 0x8d, 0x11, 0x50, 0x68, 0x67, 0x26, 0x09, 0xd6, 0x03, 0xac, 0xd6, 0x5c, 0x10, + 0x98, 0xb9, 0x16, 0x53, 0x0a, 0x2a, 0x05, 0x61, 0x2d, 0x27, 0x5d, 0x41, 0x71, 0x15, 0xa3, + 0xfd, 0xc8, 0xeb, 0xd5, 0x8e, 0x74, 0x25, 0x09, 0xdd, 0x55, 0x76, 0xce, 0x40, 0x86, 0xeb, + 0x50, 0xad, 0x75, 0xcf, 0x1f, 0x39, 0xb1, 0x75, 0x3b, 0x11, 0xbe, 0x24, 0x5d, 0x62, 0xcc, + 0xe3, 0xd6, 0x23, 0xfb, 0x09, 0xdd, 0x18, 0xa3, 0x35, 0xc5, 0x1c, 0x24, 0xf4, 0x80, 0x59, + 0x73, 0x53, 0x15, 0xe1, 0x46, 0xaa, 0x29, 0x76, 0xa2, 0x12, 0xc6, 0x22, 0x59, 0x4a, 0x50, + 0x00, 0xeb, 0xf4, 0x95, 0x40, 0xc4, 0x70, 0x79, 0x96, 0xfb, 0xd2, 0x12, 0x69, 0x96, 0xad, + 0xea, 0xee, 0xff, 0x70, 0x6e, 0x7e, 0xdd, 0x0a, 0x1c, 0xbc, 0x2c, 0xb4, 0x77, 0xc1, 0xb4, + 0x85, 0x4f, 0x81, 0x28, 0x12, 0x3e, 0xa2, 0x2d, 0x7b, 0x1a, 0x6a, 0xc7, 0xc9, 0x92, 0xf0, + 0x23, 0x1a, 0xd0, 0x40, 0xac, 0xeb, 0xec, 0x0a, 0x83, 0x61, 0x30, 0xaa, 0x1b, 0xb0, 0x42, + 0xd7, 0x2f, 0x9f, 0x89, 0x81, 0xd1, 0x3b, 0xb5, 0x73, 0x25, 0x19, 0xc4, 0xf6, 0x41, 0xa9, + 0x92, 0x4c, 0xa9, 0x4a, 0x86, 0xd3, 0x3c, 0x07, 0x03, 0xcc, 0x05, 0xe3, 0x12, 0x45, 0x04, + 0x39, 0x52, 0xd2, 0x28, 0xba, 0x38, 0xb1, 0x94, 0x7c, 0x51, 0x74, 0x57, 0x47, 0xe1, 0x76, + 0xbd, 0x92, 0xed, 0x9e, 0xd5, 0x43, 0xeb, 0x97, 0x9a, 0x0c, 0x3b, 0x40, 0x48, 0xdf, 0x2b, + 0x44, 0x2e, 0xb0, 0x92, 0x73, 0x45, 0x74, 0x9e, 0xdb, 0xef, 0x3e, 0xa6, 0x54, 0x0d, 0xd2, + 0x7e, 0x96, 0x4c, 0x40, 0xde, 0x5a, 0x91, 0x5a, 0xef, 0x23, 0x74, 0x87, 0xb4, 0x5c, 0xd9, + 0x99, 0x2b, 0xc7, 0x77, 0x6e, 0x4b, 0x87, 0xba, 0x84, 0xd3, 0xf3, 0xd4, 0x04, 0x5c, 0xf2, + 0xbb, 0xd5, 0x83, 0x6e, 0x5e, 0x77, 0xa3, 0x7a, 0x45, 0x30, 0xe5, 0x40, 0x76, 0xfd, 0xe1, + 0x25, 0xad, 0x2e, 0x22, 0x73, 0x6f, 0x33, 0x57, 0xc4, 0x4a, 0x74, 0x28, 0xbe, 0xe6, 0xd9, + 0x95, 0x4d, 0x46, 0xc8, 0x21, 0xa7, 0xc9, 0xda, 0xee, 0x50, 0xbe, 0x5e, 0x90, 0x99, 0xd0, + 0x2a, 0xc1, 0xbf, 0x6c, 0x24, 0x2a, 0xf9, 0x6f, 0x81, 0x65, 0xf2, 0x16, 0x57, 0x24, 0x7b, + 0xcf, 0xc5, 0xc1, 0xa7, 0xac, 0x53, 0x21, 0x65, 0x15, 0xe7, 0x0f, 0x35, 0x14, 0x15, 0x33, + 0xaf, 0xe2, 0xbd, 0x4c, 0x9a, 0x29, 0xca, 0x27, 0x4b, 0x97, 0xbc, 0xc7, 0x1d, 0x27, 0x01, + 0x82, 0x7d, 0x27, 0x9e, 0xaf, 0x92, 0xdd, 0xbf, 0x2f, 0x3b, 0x9f, 0x6a, 0x2c, 0xe5, 0xf2, + 0x46, 0x7a, 0xa6, 0xbd, 0xd4, 0x24, 0xcb, 0x6d, 0x26, 0x33, 0x36, 0x6e, 0x93, 0x41, 0xf9, + 0x5c, 0x7f, 0x36, 0xf1, 0x55, 0xbd, 0xd2, 0x75, 0xe7, 0x65, 0xe3, 0x0c, 0x5f, 0x47, 0xa4, + 0x45, 0x08, 0x30, 0x0c, 0xa2, 0xc4, 0xcb, 0x1d, 0xc1, 0x9c, 0x3c, 0x3f, 0xb1, 0xa6, 0xd9, + 0xe5, 0x4e, 0x9b, 0xa4, 0xd3, 0x90, 0x32, 0x22, 0xf4, 0x1e, 0xf1, 0xe9, 0xd2, 0x3c, 0x49, + 0xd4, 0xbc, 0xff, 0x56, 0xbf, 0xf6, 0x8b, 0xd4, 0x73, 0xa6, 0x5f, 0x2d, 0xfb, 0x0c, 0x08, + 0xbb, 0x44, 0xbe, 0x42, 0x21, 0x00, 0x98, 0x76, 0x71, 0x69, 0xeb, 0x91, 0x58, 0x08, 0x92, + 0xe0, 0x44, 0xd8, 0x1e, 0x3b, 0x8d, 0xe0, 0xc9, 0x72, 0x02, 0x13, 0xd8, 0xf6, 0xa4, 0x44, + 0x27, 0xcd, 0xd1, 0x1d, 0x0b, 0xe1, 0xef, 0x59, 0x21, 0x3e, 0xb9, 0xf0, 0xa7, 0xf6, 0x0f, + 0xe2, 0xb3, 0xfc, 0xfc, 0x07, 0xa4, 0xbc, 0xc2, 0x53, 0xef, 0xa4, 0x22, 0x5d, 0xd8, 0xd7, + 0xdf, 0x1d, 0x28, 0xe4, 0x29, 0x13, 0xf7, 0x44, 0x30, 0x42, 0x2e, 0x5d, 0x98, 0x7d, 0x85, + 0x0b, 0x3e, 0x8e, 0xef, 0x32, 0x2c, 0xdb, 0x0a, 0x0f, 0x84, 0x4c, 0xf1, 0x34, 0x0b, 0xd9, + 0xdc, 0xb0, 0x68, 0x36, 0x30, 0x2d, 0x1d, 0xae, 0x0b, 0x13, 0x79, 0xb4, 0xa8, 0xae, 0x8a, + 0x36, 0x34, 0x60, 0x54, 0x48, 0x92, 0xfe, 0x84, 0x61, 0x65, 0x82, 0x2a, 0xaf, 0x8b, 0xba, + 0xd5, 0xd2, 0xf3, 0xe1, 0x42, 0x79, 0x2f, 0xa3, 0xab, 0x56, 0x9c, 0xf9, 0xc3, 0x99, 0x9f, + 0x4e, 0xff, 0x3b, 0x3a, 0x35, 0x1c, 0x7d, 0x51, 0x46, 0xa1, 0x93, 0x1e, 0xcc, 0x52, 0x81, + 0xad, 0x3e, 0xde, 0x14, 0x81, 0x2b, 0xf1, 0xdb, 0x04, 0x7c, 0x46, 0x91, 0x38, 0x90, 0xbc, + 0xd0, 0xa0, 0x47, 0xfe, 0x62, 0x92, 0xed, 0x70, 0xf8, 0xa2, 0x7f, 0x57, 0x8c, 0x8c, 0x9f, + 0xdb, 0xbb, 0x98, 0x35, 0xfc, 0x23, 0x13, 0x5d, 0xc7, 0x98, 0x08, 0x0f, 0x3f, 0x71, 0x83, + 0xdb, 0xdc, 0xae, 0x52, 0xc8, 0xeb, 0xdf, 0xfa, 0xe5, 0x08, 0x94, 0x44, 0xb5, 0xc5, 0x9c, + 0x27, 0xfb, 0x45, 0x4d, 0x5a, 0xcc, 0xd9, 0x4e, 0x5b, 0xc3, 0x71, 0xe1, 0x2a, 0xd1, 0xc8, + 0xbc, 0x11, 0x43, 0x45, 0xfe, 0x87, 0xbd, 0x68, 0x04, 0xe8, 0x3f, 0x66, 0x62, 0x34, 0x9e, + 0x32, 0x5a, 0xe0, 0x7a, 0xa8, 0xf3, 0xf3, 0x15, 0x72, 0x68, 0x62, 0x2e, 0xa6, 0x0b, 0x10, + 0xb8, 0x0f, 0xbb, 0x52, 0xab, 0x3f, 0x29, 0xa5, 0x17, 0x68, 0xf7, 0x93, 0x7c, 0xbd, 0xad, + 0xba, 0xf3, 0xf9, 0xd9, 0x55, 0x37, 0x31, 0x0e, 0x83, 0x1a, 0x56, 0x1f, 0x9d, 0x00, 0x58, + 0x87, 0x99, 0x9f, 0x1a, 0xde, 0x67, 0xc6, 0x9e, 0xb7, 0xf7, 0x0e, 0x04, 0x19, 0x24, 0x62, + 0x7b, 0x28, 0x8b, 0x39, 0xf3, 0x55, 0xf0, 0x6f, 0x30, 0xb7, 0x4b, 0x56, 0x9a, 0x51, 0x56, + 0xad, 0xf0, 0x34, 0x35, 0xbf, 0x6d, 0xf0, 0x03, 0x5c, 0xe9, 0x27, 0x75, 0x3d, 0x58, 0x77, + 0x47, 0x80, 0x65, 0x51, 0x14, 0xd3, 0x6b, 0x8e, 0x9a, 0xe8, 0xb5, 0xac, 0x6f, 0xea, 0xa6, + 0x00, 0x65, 0x69, 0x27, 0x77, 0x0c, 0x2f, 0xdd, 0x45, 0xb8, 0xf0, 0x05, 0x29, 0x83, 0x79, + 0x12, 0x4f, 0xaf, 0x12, 0xa0, 0x7b, 0xc1, 0xde, 0xe6, 0x66, 0xe5, 0xd8, 0x68, 0xd2, 0x43, + 0x28, 0x9f, 0x79, 0xcd, 0x14, 0x20, 0x1e, 0x2f, 0xbf, 0xe8, 0x65, 0xde, 0x6e, 0x2b, 0xa4, + 0xda, 0x15, 0x21, 0x0b, 0x95, 0x24, 0xee, 0xc6, 0xc0, 0xf6, 0xca, 0xca, 0x66, 0x50, 0xa8, + 0xf3, 0xf2, 0xae, 0x6f, 0xe6, 0x0c, 0x12, 0xa9, 0x2c, 0x2c, 0x6b, 0x94, 0xe9, 0x8a, 0x45, + 0xf4, 0xf3, 0xc8, 0x2d, 0xbd, 0xbe, 0x32, 0x4a, 0x72, 0xb2, 0x51, 0x6a, 0xf0, 0x21, 0x5e, + 0x01, 0x41, 0x8a, 0xe9, 0x38, 0x9f, 0x8f, 0x66, 0x83, 0x15, 0xa5, 0x34, 0x98, 0x43, 0x8b, + 0x59, 0x0d, 0xed, 0x49, 0x41, 0x99, 0x9d, 0x9f, 0x53, 0x7a, 0x32, 0xb8, 0x34, 0x58, 0xeb, + 0x63, 0xad, 0x01, 0x46, 0xf5, 0xf2, 0x8a, 0xc4, 0xc5, 0x71, 0xfd, 0x3d, 0xc5, 0x8c, 0x68, + 0xb3, 0x39, 0x1a, 0x16, 0x32, 0x8e, 0xc8, 0x97, 0x12, 0xe5, 0xed, 0x42, 0x56, 0x55, 0x07, + 0xb6, 0x38, 0x81, 0x0f, 0x1e, 0xdf, 0xc9, 0x3f, 0x66, 0xf6, 0xcd, 0x44, 0x13, 0x14, 0x7b, + 0x21, 0x0b, 0x11, 0x27, 0xe8, 0xb4, 0x87, 0x28, 0x2a, 0x92, 0x47, 0x4a, 0x22, 0x31, 0x6d, + 0xc5, 0x1e, 0x38, 0xc2, 0x1d, 0x31, 0x57, 0x8d, 0x48, 0x90, 0x84, 0xe3, 0xe0, 0x14, 0x81, + 0xb1, 0x88, 0x1d, 0x7a, 0xb8, 0x56, 0xca, 0x86, 0x22, 0x23, 0x3d, 0xa9, 0xea, 0xb7, 0xaa, + 0x43, 0x6b, 0xc8, 0x98, 0x2b, 0x92, 0x20, 0xb3, 0xe2, 0x2c, 0xdc, 0xf9, 0x9b, 0xe8, 0x6e, + 0x5c, 0xb8, 0xcd, 0x8a, 0x9b, 0xc6, 0x0d, 0xdc, 0xa6, 0x0c, 0xa2, 0x6c, 0xed, 0x3e, 0x01, + 0xe0, 0x69, 0x02, 0x6b, 0x51, 0x25, 0xf3, 0x2f, 0x82, 0x90, 0x1f, 0x05, 0xca, 0xf6, 0x82, + 0x14, 0xfa, 0xf2, 0x5d, 0x3f, 0xba, 0xa2, 0x5d, 0xf0, 0xd4, 0x07, 0x76, 0x20, 0xd6, 0x84, + 0xa7, 0x35, 0x52, 0x31, 0x9a, 0x65, 0x69, 0x4a, 0x08, 0xc0, 0xbc, 0x30, 0xb1, 0xe3, 0x12, + 0xde, 0xa1, 0xe5, 0x6c, 0x70, 0x40, 0x15, 0x0f, 0x2d, 0xe8, 0x07, 0x71, 0x00, 0x9b, 0x06, + 0xc6, 0x92, 0xbc, 0xd8, 0xf3, 0x63, 0x71, 0x96, 0x6c, 0xb0, 0x22, 0xec, 0x82, 0x98, 0xd5, + 0x54, 0x98, 0xb1, 0xcc, 0x20, 0x53, 0xa6, 0xe0, 0x8b, 0x3a, 0x91, 0x63, 0xff, 0xb5, 0xa1, + 0x8d, 0x5f, 0x06, 0x67, 0x1c, 0xae, 0xed, 0x00, 0xfe, 0x62, 0xae, 0xba, 0x50, 0xc9, 0x7c, + 0x39, 0x24, 0xe4, 0x9c, 0x20, 0x70, 0xb6, 0x49, 0x37, 0x78, 0xc7, 0x17, 0x90, 0xdc, 0x7a, + 0xf7, 0xc9, 0xe6, 0x24, 0x28, 0x4e, 0x67, 0xee, 0x8b, 0x4e, 0xd2, 0xc7, 0xae, 0xba, 0x16, + 0xcb, 0xef, 0x34, 0xde, 0x81, 0x92, 0x68, 0xa0, 0xe2, 0x71, 0x91, 0xc1, 0xcc, 0x45, 0x01, + 0xe4, 0x3a, 0x03, 0xc1, 0x55, 0x8c, 0xfb, 0x6e, 0x3e, 0xc2, 0x6c, 0xc2, 0x7e, 0xf0, 0x14, + 0x31, 0x6a, 0xbf, 0x8a, 0x38, 0x7f, 0x07, 0x67, 0x8b, 0x9d, 0x9f, 0x19, 0x95, 0x96, 0x8e, + 0xc4, 0xa5, 0x94, 0x2f, 0x83, 0xd4, 0xae, 0x6f, 0xc6, 0xd9, 0x36, 0xea, 0x5b, 0x8e, 0x7a, + 0x28, 0xe3, 0x7b, 0x10, 0xa2, 0xfd, 0x1f, 0xb4, 0xdb, 0x9f, 0xc5, 0xff, 0x3d, 0xc4, 0x1f, + 0xe1, 0x0c, 0xc3, 0xb8, 0xdc, 0xfa, 0x8f, 0x73, 0xf1, 0xd2, 0x1f, 0xbd, 0xe2, 0x4a, 0x8a, + 0xf1, 0xf3, 0xd6, 0x9d, 0x86, 0x9d, 0x99, 0xfe, 0x37, 0xbf, 0x84, 0xde, 0x52, 0xec, 0x96, + 0xf3, 0xbe, 0x16, 0x16, 0x3f, 0x8c, 0x85, 0x8f, 0xa7, 0xb1, 0xab, 0xcc, 0xaf, 0x31, 0x0d, + 0x3c, 0xa4, 0x79, 0x1c, 0x07, 0x89, 0x32, 0xcc, 0xa7, 0xbd, 0xd4, 0xf4, 0xe9, 0x36, 0x47, + 0x5a, 0x5b, 0x09, 0x4a, 0x68, 0xfc, 0x70, 0x0e, 0x81, 0x86, 0x00, 0xad, 0x95, 0x11, 0xff, + 0xf6, 0x42, 0xf9, 0xe4, 0x17, 0xb6, 0x3c, 0xbd, 0xdf, 0xb6, 0x4f, 0xa1, 0x86, 0x0c, 0xc4, + 0xc3, 0x64, 0x80, 0x7f, 0x49, 0x1e, 0x43, 0x7e, 0xd3, 0x15, 0xb5, 0x4b, 0x9c, 0xa9, 0xbb, + 0x14, 0xb2, 0x4d, 0x3e, 0xda, 0x10, 0x50, 0x0e, 0xc6, 0xd3, 0x90, 0x3d, 0x16, 0xc2, 0x62, + 0xaa, 0x6a, 0x2e, 0x5e, 0xf6, 0x68, 0x2d, 0x08, 0x2c, 0x9b, 0xfa, 0x37, 0x3b, 0xa2, 0x38, + 0x07, 0x9e, 0xe3, 0x7a, 0xdd, 0x4f, 0x62, 0xfc, 0x66, 0x86, 0x01, 0x24, 0x55, 0x48, 0xf4, + 0x06, 0xe4, 0xbb, 0x4b, 0x9d, 0x2d, 0x80, 0xc8, 0x08, 0xe3, 0x65, 0x05, 0x81, 0x15, 0xd4, + 0x87, 0x19, 0xb7, 0xf9, 0xa8, 0x92, 0xc1, 0x29, 0xa4, 0x57, 0x94, 0x71, 0xac, 0x59, 0xa2, + 0x4e, 0x76, 0x98, 0x9d, 0x10, 0xa9, 0xef, 0xd5, 0x7f, 0xc8, 0x82, 0xc0, 0xe7, 0x56, 0xec, + 0x98, 0xb0, 0x19, 0x1e, 0xd3, 0x81, 0x8f, 0x84, 0x09, 0xf5, 0x73, 0x39, 0xe0, 0x4f, 0xd2, + 0x44, 0x2f, 0x46, 0x27, 0x03, 0x7d, 0x5e, 0x9a, 0x58, 0x77, 0x54, 0x4d, 0x12, 0x7d, 0x9a, + 0x20, 0x08, 0xb6, 0x78, 0x6f, 0x97, 0x25, 0xab, 0xc1, 0xa3, 0xae, 0xa9, 0xf7, 0x47, 0x1d, + 0x4c, 0x77, 0xb4, 0xd6, 0xe9, 0xec, 0x29, 0x2a, 0x3c, 0x93, 0x82, 0x92, 0xc4, 0xe2, 0x6f, + 0xf1, 0xb9, 0x0d, 0xb9, 0x82, 0xdf, 0xae, 0xf3, 0x71, 0xf9, 0x24, 0x49, 0xe9, 0xdd, 0xf9, + 0x91, 0x66, 0x49, 0x48, 0x4a, 0x3b, 0x98, 0x10, 0xca, 0x88, 0x6f, 0x4e, 0x42, 0xc5, 0xb4, + 0x2b, 0x93, 0xa9, 0xdf, 0xc6, 0xde, 0x11, 0x22, 0xa7, 0xd3, 0x99, 0x7b, 0xd5, 0x3f, 0xbe, + 0x51, 0x76, 0xc9, 0x6e, 0x05, 0x8f, 0x01, 0x0b, 0x94, 0xf4, 0x5c, 0x2c, 0x87, 0x97, 0x9a, + 0x4a, 0x3b, 0x39, 0xb8, 0xf3, 0xa9, 0xe7, 0xf9, 0x90, 0x95, 0x12, 0xb5, 0x8b, 0x6f, 0x09, + 0xdc, 0xa7, 0x7f, 0x0b, 0x8d, 0x55, 0x3a, 0x1c, 0x7d, 0x9e, 0x09, 0x46, 0xc8, 0x32, 0xa9, + 0x7c, 0x42, 0xab, 0x94, 0xcd, 0x0b, 0x1c, 0xe2, 0xcf, 0x47, 0xa8, 0x01, 0x92, 0xeb, 0x82, + 0x09, 0xac, 0x00, 0xf4, 0xbd, 0x74, 0x7c, 0x95, 0xcb, 0xb6, 0xdc, 0x58, 0x69, 0x44, 0xb8, + 0xd1, 0x86, 0x0d, 0xde, 0x44, 0x71, 0x71, 0xfd, 0x27, 0x10, 0xe8, 0xfd, 0x0e, 0x42, 0xa9, + 0x25, 0xb9, 0xc6, 0x4f, 0x0f, 0x08, 0x4c, 0xc7, 0xef, 0xdf, 0xe1, 0x0b, 0x2b, 0x22, 0xc5, + 0x5a, 0xb8, 0xdf, 0x9b, 0xe2, 0xab, 0x48, 0xaa, 0x40, 0x39, 0xca, 0xdf, 0xee, 0x77, 0x1f, + 0x35, 0x7c, 0xeb, 0x85, 0xc4, 0x24, 0xc2, 0x86, 0xb0, 0xfc, 0xb1, 0x40, 0xda, 0x0a, 0x34, + 0xa0, 0x34, 0xd2, 0x10, 0x70, 0xf2, 0x01, 0x19, 0xd3, 0xf1, 0x76, 0xbc, 0x1f, 0xdb, 0xc9, + 0x4f, 0x09, 0x5a, 0x19, 0x19, 0x0b, 0x52, 0x63, 0xc3, 0x9f, 0x7f, 0x89, 0xfe, 0xc3, 0xae, + 0x7d, 0x61, 0x61, 0x31, 0x38, 0x7f, 0x35, 0x16, 0xb6, 0x26, 0x47, 0x73, 0x54, 0xec, 0xc6, + 0x52, 0x70, 0x19, 0x02, 0x81, 0xde, 0x45, 0x68, 0x8e, 0xbd, 0x8c, 0x12, 0x92, 0xfa, 0xd6, + 0xb6, 0xe1, 0x0d, 0x8c, 0x7b, 0x9d, 0x82, 0xb9, 0x5f, 0x85, 0xdc, 0xd0, 0x48, 0x7c, 0x5f, + 0x6a, 0x05, 0xc6, 0x0a, 0xb9, 0x27, 0xf3, 0x1e, 0xab, 0x28, 0x91, 0xbb, 0x85, 0xec, 0xb8, + 0x4e, 0x49, 0x13, 0x19, 0xbf, 0xe8, 0x12, 0x17, 0x62, 0x7b, 0x05, 0xbc, 0x67, 0x6e, 0x5c, + 0xb7, 0xf7, 0x94, 0xd6, 0xfb, 0xd3, 0x85, 0x26, 0x38, 0x65, 0x17, 0x36, 0xbc, 0xb6, 0xf9, + 0x21, 0x48, 0x5e, 0x93, 0xdb, 0x44, 0x40, 0x89, 0x29, 0x4b, 0xc1, 0x29, 0x90, 0x79, 0xb1, + 0x11, 0x76, 0xa6, 0x57, 0x70, 0x9c, 0x56, 0xa7, 0xf3, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x4d, 0x04, 0x6b, 0xc7, 0x27, 0xa9, 0xf1, 0x30, 0x8a, 0xa5, 0xc3, + 0x2f, 0x80, 0x7f, 0xc4, 0x4f, 0x40, 0x31, 0x7b, 0x4f, 0x57, 0x8c, 0xf5, 0x40, 0x40, 0x41, + 0x2d, 0x8f, 0x7e, 0x3e, 0x36, 0x04, 0x42, 0x89, 0x65, 0x62, 0xca, 0x45, 0xf0, 0x89, 0xbb, + 0xa0, 0xfa, 0xb8, 0x3f, 0xe2, 0x6f, 0x4f, 0xf2, 0xcb, 0xea, 0xf3, 0x69, 0x81, 0xa2, 0xf9, + 0x92, 0x95, 0xb6, 0x3a, 0xd2, 0x96, 0x25, 0x01, 0xce, 0x2c, 0x6d, 0x87, 0xd0, 0x18, 0x4c, + 0x17, 0x99, 0xa2, 0x54, 0xed, 0x03, 0x04, 0x7c, 0xf5, 0x7a, 0x3b, 0xfd, 0x49, 0xb8, 0xa4, + 0x43, 0x8d, 0x49, 0x6d, 0x74, 0x1c, 0xf5, 0xac, 0xa6, 0xbd, 0x00, 0x01, 0xec, 0xd3, 0x72, + 0x28, 0xb0, 0x0c, 0x89, 0x73, 0xda, 0x40, 0x03, 0x37, 0x30, 0x05, 0x87, 0xf4, 0x89, 0x97, + 0x46, 0x59, 0x59, 0xef, 0xe0, 0x9a, 0xc5, 0xe0, 0x12, 0xe1, 0x4f, 0x51, 0xeb, 0x24, 0xfc, + 0x1d, 0x39, 0x82, 0xd5, 0xbc, 0x09, 0x96, 0xb1, 0x9d, 0xf2, 0xd9, 0xd7, 0xae, 0x1a, 0xc5, + 0x91, 0x6a, 0xb4, 0x7e, 0xf6, 0xef, 0xa1, 0x6e, 0x12, 0xc3, 0x95, 0xd5, 0xfe, 0x2c, 0x43, + 0x22, 0x21, 0x65, 0x5b, 0xce, 0x44, 0xed, 0x91, 0xe1, 0x50, 0xbd, 0x5e, 0x25, 0x06, 0x52, + 0xdd, 0x7d, 0xca, 0x25, 0xe3, 0x4c, 0xe2, 0xed, 0xfb, 0x3e, 0x77, 0x82, 0xc2, 0x09, 0x56, + 0xcf, 0xa3, 0x05, + ], + &[ + 0x04, 0x00, 0x00, 0x00, 0xa4, 0x3f, 0x07, 0xc4, 0x88, 0xc6, 0xd5, 0x86, 0x16, 0x8c, 0x51, + 0xee, 0x2c, 0x40, 0xd7, 0x9e, 0x94, 0xcb, 0xd2, 0x0d, 0x13, 0x89, 0x66, 0x98, 0xb2, 0xb8, + 0x30, 0x08, 0x00, 0xa4, 0x1f, 0x1a, 0xd8, 0x2a, 0xde, 0xf7, 0x4a, 0x27, 0x2f, 0xb2, 0xc1, + 0x1b, 0xab, 0x1e, 0x27, 0x37, 0xac, 0x4c, 0x6f, 0x26, 0x33, 0xe0, 0xb4, 0xe2, 0x90, 0xa2, + 0x39, 0xbe, 0x72, 0x2d, 0x33, 0x4c, 0x79, 0x10, 0x83, 0x93, 0xa1, 0xbc, 0xdb, 0xd8, 0x20, + 0xf2, 0x04, 0x40, 0x0b, 0x39, 0xc0, 0x1f, 0x1b, 0x06, 0xd4, 0x22, 0x4b, 0x24, 0x2c, 0x38, + 0x89, 0xaf, 0x5a, 0x5a, 0xba, 0x02, 0x8f, 0xbe, 0x4c, 0x6a, 0x22, 0x25, 0x4a, 0x4d, 0x0f, + 0x0f, 0x0f, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, + 0xff, 0xff, 0xff, 0x02, 0x55, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, + 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0xe6, 0x99, 0x8d, 0x77, 0xa5, 0xa5, 0x34, 0xce, 0xdf, 0x7f, 0x28, 0x3b, 0x17, 0x2f, 0x8e, + 0xf6, 0xbc, 0xa3, 0x28, 0xbd, 0x8d, 0x72, 0xde, 0x3c, 0x50, 0xd4, 0xa7, 0xfd, 0x5e, 0x99, + 0xbf, 0x22, 0xf7, 0xbd, 0xa1, 0x65, 0xdf, 0xdc, 0x54, 0x36, 0xd9, 0xc5, 0xcc, 0x28, 0x50, + 0xd9, 0x32, 0x3a, 0xfa, 0xa5, 0xfc, 0x31, 0x8a, 0x7b, 0xaa, 0xcf, 0x63, 0x3a, 0xb9, 0xb4, + 0x11, 0x48, 0x26, 0x30, 0xdf, 0xdd, 0xdf, 0x42, 0xd1, 0x44, 0x17, 0xa1, 0x32, 0xba, 0x99, + 0x04, 0x40, 0xd7, 0x94, 0xa7, 0xcf, 0x6b, 0xe1, 0x21, 0xfc, 0xbb, 0xf4, 0x34, 0xcb, 0x83, + 0x60, 0xe5, 0x4a, 0x32, 0x71, 0x80, 0xcc, 0xa6, 0xbd, 0x85, 0xf5, 0x0f, 0x5c, 0x12, 0x20, + 0x01, 0x8e, 0x37, 0x7d, 0xdd, 0x80, 0x26, 0x11, 0xe5, 0x7a, 0x5d, 0xea, 0xb4, 0xca, 0xca, + 0xc3, 0xaa, 0x2a, 0xca, 0x59, 0xa7, 0x6d, 0x21, 0x12, 0xde, 0xa5, 0xe9, 0xab, 0xf5, 0xc8, + 0x00, 0xd1, 0xdc, 0x99, 0xcc, 0x55, 0x2e, 0x65, 0x1b, 0x32, 0x28, 0x9d, 0x89, 0xb9, 0xdc, + 0xff, 0xac, 0xfc, 0x8a, 0x05, 0x2f, 0x54, 0x18, 0x46, 0x1d, 0x06, 0x79, 0x97, 0x01, 0xaf, + 0x4e, 0x17, 0x02, 0x86, 0xd7, 0xcf, 0x6a, 0xf4, 0x82, 0xc1, 0xb2, 0x0b, 0xf6, 0x2e, 0x51, + 0x46, 0xfc, 0x3d, 0x2e, 0x1d, 0xf8, 0x68, 0x6e, 0xcd, 0xb0, 0x94, 0xa4, 0xf8, 0xf7, 0x14, + 0x4d, 0xa6, 0x7a, 0x30, 0x24, 0x88, 0x7c, 0x56, 0x16, 0x4d, 0xa3, 0x82, 0xcf, 0xbc, 0xbf, + 0x20, 0xb8, 0x02, 0xfb, 0x52, 0xb7, 0x0f, 0xa4, 0xf3, 0xab, 0x4d, 0xab, 0x2e, 0xf7, 0x3f, + 0xa9, 0xd8, 0xe8, 0xea, 0xf2, 0x9a, 0x4b, 0xb8, 0xee, 0xf1, 0x57, 0xec, 0x5b, 0x9c, 0x6b, + 0x10, 0xcc, 0x44, 0x87, 0x83, 0x46, 0x29, 0x35, 0x61, 0x55, 0x3d, 0x10, 0x96, 0xba, 0x43, + 0x1e, 0x62, 0xa0, 0xde, 0x94, 0x17, 0x33, 0x01, 0x88, 0x28, 0xcc, 0xf9, 0x97, 0x9c, 0xee, + 0x01, 0x98, 0xe4, 0xb8, 0xe5, 0xa0, 0x81, 0xda, 0x9c, 0xa9, 0xd1, 0x1b, 0xdf, 0x5c, 0x81, + 0x18, 0x0a, 0x33, 0xea, 0x4a, 0x59, 0xaf, 0xbc, 0x9f, 0x0f, 0xe3, 0x96, 0xa3, 0x5e, 0x25, + 0xa1, 0x98, 0x8d, 0x2e, 0x6c, 0x99, 0xa0, 0xe4, 0xfa, 0x87, 0x19, 0xd6, 0x10, 0xdd, 0xb4, + 0xfc, 0xf2, 0xa2, 0x43, 0x05, 0x3b, 0xb8, 0x31, 0x4c, 0x39, 0xba, 0x3c, 0xdb, 0x93, 0x12, + 0x83, 0xee, 0xac, 0x89, 0x6c, 0xbd, 0x06, 0x3d, 0x4f, 0x1d, 0x0a, 0x5b, 0xcf, 0xb3, 0xff, + 0xba, 0x36, 0xef, 0x2d, 0x6e, 0xea, 0x37, 0x15, 0x50, 0x68, 0x29, 0x53, 0x56, 0x34, 0x32, + 0xff, 0x8b, 0x51, 0x22, 0x4d, 0x3d, 0xc8, 0x78, 0x99, 0xda, 0x8d, 0xf3, 0x2b, 0x01, 0xd1, + 0x7d, 0x09, 0x2e, 0x63, 0x52, 0x2e, 0x30, 0x38, 0x11, 0x38, 0x46, 0x36, 0x70, 0xdc, 0x34, + 0xce, 0x45, 0x48, 0xd6, 0x84, 0x64, 0x2f, 0x59, 0x6b, 0x43, 0xd5, 0x17, 0xb0, 0xde, 0x2e, + 0x15, 0x89, 0x12, 0x5a, 0x11, 0xb9, 0x8e, 0xe8, 0xc1, 0x19, 0x96, 0x50, 0xed, 0x12, 0xb4, + 0x74, 0x43, 0xef, 0x1b, 0xbb, 0xc9, 0x8e, 0x8e, 0x39, 0x6e, 0x21, 0xc1, 0x29, 0x6e, 0x74, + 0x1b, 0x41, 0xd4, 0x5a, 0xa5, 0xdd, 0xa9, 0xd2, 0x12, 0x10, 0x56, 0xfb, 0xd3, 0x4f, 0xc0, + 0x0e, 0xba, 0x1c, 0xaa, 0xa7, 0x68, 0x61, 0x59, 0x45, 0xfc, 0x43, 0x75, 0x27, 0xcb, 0x18, + 0x07, 0x6a, 0x48, 0x25, 0x91, 0xac, 0x96, 0x90, 0xa6, 0xc1, 0x81, 0xc8, 0xf2, 0xfa, 0xc9, + 0x6d, 0xa9, 0x1c, 0xf3, 0xd5, 0xb2, 0x55, 0xf8, 0xa5, 0x6a, 0x75, 0xdf, 0x24, 0x2f, 0x67, + 0x17, 0x36, 0x13, 0x93, 0x3b, 0xd0, 0xf9, 0xbc, 0xf0, 0xe8, 0x22, 0xee, 0x60, 0xa9, 0x98, + 0x82, 0xf9, 0x30, 0xe6, 0x7f, 0xda, 0xd2, 0xfe, 0xbc, 0xee, 0x72, 0x48, 0x25, 0x18, 0x0b, + 0x4a, 0x94, 0x06, 0x2b, 0xa0, 0xe2, 0x73, 0xf2, 0xd5, 0x11, 0x2f, 0xff, 0xa2, 0xd4, 0xff, + 0x16, 0x9d, 0xb2, 0xb0, 0x53, 0xa2, 0x24, 0x20, 0x5f, 0x13, 0xfd, 0x83, 0x04, 0x05, 0x0e, + 0x33, 0xc2, 0xe5, 0x11, 0x15, 0xec, 0x44, 0x10, 0x87, 0x40, 0xdd, 0xfc, 0xf4, 0x5a, 0x01, + 0x0e, 0xae, 0x99, 0x37, 0x7f, 0x1e, 0x50, 0x5f, 0x0d, 0x75, 0x71, 0xe4, 0xfc, 0xda, 0x2c, + 0x31, 0xf0, 0xe6, 0xf9, 0x5b, 0x4e, 0x15, 0x9a, 0x79, 0xc7, 0x16, 0x0b, 0xc2, 0xc0, 0xb9, + 0x63, 0xfd, 0xfe, 0x9c, 0x48, 0xda, 0xf8, 0xb4, 0x04, 0x80, 0x31, 0xd0, 0x1f, 0xb3, 0xb9, + 0x05, 0x9e, 0xbb, 0xea, 0x40, 0x8c, 0xaa, 0x66, 0xe8, 0x11, 0x9c, 0x37, 0x84, 0xab, 0x46, + 0x4d, 0x00, 0x2b, 0x0b, 0x7d, 0xc9, 0x98, 0x71, 0xc3, 0xa5, 0xb7, 0xc1, 0x0f, 0xe9, 0xa2, + 0x34, 0x87, 0xe7, 0x89, 0xa6, 0x08, 0x13, 0x67, 0xf8, 0xb0, 0x43, 0x16, 0x82, 0x69, 0xb0, + 0x52, 0x6e, 0xf5, 0xf8, 0xeb, 0x19, 0x1d, 0x2b, 0x1d, 0x61, 0x9d, 0x0e, 0x3a, 0x27, 0x6f, + 0x19, 0x08, 0x29, 0xcf, 0xe4, 0x79, 0x18, 0xb7, 0x8f, 0xa0, 0x38, 0x18, 0x06, 0x9b, 0xda, + 0xfc, 0xe4, 0x2c, 0x53, 0x37, 0x18, 0x58, 0xee, 0xec, 0xa7, 0x25, 0xae, 0xb2, 0xa7, 0xaf, + 0x0a, 0x46, 0x09, 0xe2, 0x5a, 0xc1, 0x4a, 0x3a, 0x0d, 0xcc, 0x8f, 0x28, 0xfe, 0x67, 0xc1, + 0xfb, 0xaf, 0x33, 0x1f, 0x67, 0x43, 0x69, 0xc4, 0x80, 0xf0, 0xdd, 0xa9, 0x4a, 0x34, 0x6e, + 0x23, 0xc4, 0xb9, 0x75, 0x4c, 0x7f, 0xeb, 0xb0, 0x16, 0x4d, 0xad, 0x9a, 0xcd, 0x66, 0x09, + 0x0a, 0x7d, 0x87, 0x0c, 0xe4, 0x2b, 0x2f, 0x87, 0x07, 0x65, 0x0e, 0x3a, 0x1c, 0x9b, 0x12, + 0xab, 0xf7, 0x3e, 0x4f, 0xd2, 0xc8, 0x84, 0x13, 0x98, 0x3b, 0xfe, 0x0a, 0xa0, 0xa8, 0x32, + 0x34, 0xf7, 0x9c, 0xf3, 0xd7, 0xe4, 0x6b, 0x8f, 0x07, 0x1d, 0x4d, 0xb1, 0x6a, 0x42, 0xba, + 0x6c, 0x74, 0xb2, 0x33, 0xbe, 0x5b, 0x4f, 0xe4, 0x32, 0xc7, 0x6d, 0xc7, 0xbd, 0xf9, 0x5a, + 0xae, 0xa4, 0x96, 0x93, 0xf5, 0x32, 0xbc, 0x3a, 0xd0, 0xc0, 0x59, 0xab, 0x28, 0x0b, 0x86, + 0x63, 0x06, 0xdb, 0x9f, 0x74, 0x3d, 0xd0, 0x4a, 0xbe, 0x4e, 0xfb, 0xe3, 0xf6, 0x23, 0x74, + 0x32, 0x4f, 0x26, 0x49, 0xa4, 0x06, 0xe8, 0x01, 0x58, 0xe3, 0xe9, 0xac, 0x7c, 0xd1, 0xdf, + 0x82, 0x43, 0x4d, 0xaa, 0x48, 0x99, 0xef, 0xdf, 0x3f, 0xeb, 0xd9, 0xdb, 0xaf, 0xb0, 0x19, + 0xe6, 0xac, 0x32, 0x65, 0xe9, 0x36, 0x31, 0xe3, 0xbd, 0x75, 0x58, 0xe8, 0xc9, 0xb4, 0x11, + 0x13, 0xe2, 0xb1, 0x1f, 0x61, 0x7c, 0x17, 0x9a, 0xcd, 0x9d, 0x57, 0x7a, 0x02, 0xa0, 0xcd, + 0xa5, 0x62, 0x36, 0xcb, 0x70, 0xe3, 0x98, 0x4f, 0xd1, 0x7d, 0xff, 0x31, 0x68, 0x6c, 0x5a, + 0x04, 0xde, 0xb6, 0x97, 0xc8, 0x5d, 0x83, 0x4b, 0xd1, 0xc0, 0x57, 0xad, 0x8f, 0x25, 0xeb, + 0xd9, 0x06, 0x5a, 0xf0, 0xb2, 0xca, 0xaf, 0x4f, 0xb7, 0x7b, 0x04, 0x57, 0x3c, 0xed, 0xad, + 0x35, 0x41, 0x0a, 0x21, 0xb7, 0xcb, 0x22, 0x55, 0x9a, 0x61, 0x84, 0x6a, 0x49, 0xeb, 0xf6, + 0x80, 0xa2, 0x9d, 0xf8, 0x84, 0x31, 0x98, 0x80, 0x94, 0x9e, 0xc7, 0x0e, 0xdb, 0xad, 0x4f, + 0x1d, 0x24, 0x47, 0xd0, 0x34, 0x1f, 0x63, 0xde, 0x68, 0xf2, 0xba, 0x0b, 0x11, 0x5e, 0x1c, + 0x61, 0x94, 0xff, 0x27, 0xba, 0xc2, 0xdd, 0xdd, 0x07, 0x9a, 0x77, 0x77, 0x68, 0x96, 0x6d, + 0x5f, 0x46, 0x40, 0xc5, 0x0d, 0x04, 0xad, 0x6d, 0x00, 0x82, 0x80, 0x8f, 0x79, 0x88, 0xa4, + 0x58, 0x03, 0x64, 0x56, 0x03, 0xd3, 0x71, 0x38, 0x0c, 0xc4, 0x51, 0xb7, 0x12, 0x99, 0xf6, + 0x51, 0x9d, 0x1e, 0x05, 0x63, 0x03, 0xb9, 0x16, 0xbf, 0x71, 0x5b, 0xf1, 0xef, 0xf1, 0xc2, + 0x13, 0x02, 0xfd, 0x3a, 0x9b, 0xee, 0x08, 0x7c, 0x3e, 0xd9, 0x04, 0xd3, 0x2d, 0xb2, 0xca, + 0xfe, 0xb4, 0xe2, 0xed, 0x4d, 0x86, 0x0c, 0x83, 0x61, 0x7b, 0x52, 0x04, 0x23, 0x36, 0xaa, + 0x11, 0xf1, 0xdf, 0x6c, 0x19, 0xcc, 0xaf, 0xa0, 0x22, 0xc2, 0x93, 0x7f, 0xa4, 0x7b, 0xf1, + 0x91, 0x8d, 0xb0, 0xfa, 0x6a, 0x08, 0xd1, 0x7d, 0x76, 0x75, 0x6b, 0xb8, 0x44, 0xfb, 0x90, + 0x94, 0x4a, 0x0e, 0x2c, 0xc6, 0x09, 0xf7, 0xc4, 0x70, 0x0e, 0xc1, 0xa8, 0x29, 0xf8, 0x00, + 0xdb, 0xd5, 0xfb, 0xdd, 0x2e, 0xff, 0x37, 0x10, 0xe3, 0x0f, 0x12, 0xa3, 0xe0, 0xd6, 0x49, + 0x9e, 0xa3, 0x42, 0x15, 0x00, 0x0f, 0xc3, 0x86, 0x23, 0x18, 0x83, 0xc2, 0x06, 0xbe, 0xd4, + 0xbb, 0x2d, 0x69, 0x48, 0x79, 0xf5, 0xff, 0xed, 0x89, 0x87, 0xa3, 0x31, 0x15, 0x39, 0x78, + 0xf0, 0xcd, 0xe7, 0x19, 0xb3, 0xbb, 0xd5, 0x25, 0x8a, 0x49, 0x6f, 0x20, 0x0b, 0xc4, 0xdf, + 0xe0, 0x42, 0x38, 0x1b, 0xeb, 0x85, 0x69, 0x96, 0x2e, 0xb8, 0x58, 0x2c, 0xf1, 0x9e, 0xdf, + 0x1b, 0x06, 0x27, 0x94, 0x38, 0x91, 0xd2, 0x1e, 0x60, 0xac, 0xb8, 0x16, 0xdc, 0x32, 0xd2, + 0x50, 0x21, 0x99, 0xbb, 0xe4, 0xcb, 0x08, 0xaf, 0xf5, 0x69, 0x23, 0xe1, 0x25, 0xfd, 0x5c, + 0xb5, 0xcd, 0x5c, 0xb7, 0x90, 0x04, 0x5d, 0x1f, 0x0b, 0x6f, 0x16, 0x3d, 0x26, 0x2e, 0x8a, + 0xdd, 0x8c, 0x0d, 0x6a, 0x24, 0xa1, 0x2a, 0xbe, 0xf2, 0xb5, 0xee, 0xfb, 0x64, 0xaf, 0x82, + 0x33, 0x31, 0x64, 0xe3, 0x1a, 0xb6, 0x66, 0x4b, 0xc1, 0x79, 0xbe, 0x74, 0xa4, 0xaf, 0x58, + 0x24, 0x7b, 0x80, 0xa5, 0x87, 0xd8, 0x10, 0xe1, 0xbc, 0x20, 0x5c, 0x4b, 0xfc, 0x51, 0xb4, + 0x41, 0xec, 0x3d, 0x59, 0xf6, 0xe7, 0x9a, 0x90, 0x2f, 0x52, 0x27, 0xd9, 0x47, 0x1b, 0x44, + 0xad, 0xd7, 0x11, 0x91, 0x6b, 0xa7, 0x29, 0x13, 0xfd, 0xbd, 0x2c, 0xd2, 0xdf, 0x40, 0x96, + 0xec, 0xcb, 0xb7, 0x49, 0xac, 0x93, 0x23, 0xc4, 0xcc, 0xb0, 0x95, 0x40, 0xcd, 0x43, 0x67, + 0xf1, 0x84, 0x6f, 0xf5, 0x7e, 0xa2, 0x39, 0xf7, 0x02, 0x49, 0x9c, 0x5d, 0x1c, 0x7b, 0x2d, + 0x79, 0x08, 0x72, 0x7c, 0x56, 0xbb, 0x65, 0x55, 0xd1, 0x2e, 0x5f, 0x83, 0xdd, 0xec, 0xec, + 0x90, 0x1c, 0x39, 0xc6, 0x27, 0x4d, 0x17, 0x12, 0xb6, 0xd4, 0x97, 0xc5, 0xf8, 0x38, 0xaf, + 0xbe, 0x07, 0xb1, 0x9e, 0x82, 0x09, 0x29, 0x7a, 0xbd, 0xd4, 0x85, 0x2e, 0x55, 0x6d, 0xd5, + 0xba, 0x7b, 0xae, 0xb0, 0x62, 0x39, 0x70, 0xa2, 0x7f, 0x4c, 0x3d, 0xc5, 0xab, 0xe3, 0xa9, + 0x96, 0x8f, 0xca, 0x0a, 0x20, 0xf2, 0x7f, 0xad, 0x05, 0x9c, 0xea, 0x22, 0xd7, 0x64, 0xf5, + 0x63, 0xa6, 0x31, 0x3c, 0x1e, 0x3b, 0xb5, 0xbb, 0x6d, 0xaa, 0x4c, 0x99, 0xc6, 0x30, 0xe3, + 0x6c, 0x74, 0x26, 0xe2, 0xac, 0x4c, 0x64, 0x84, 0x32, 0x32, 0xf4, 0xdd, 0x89, 0xea, 0x25, + 0xaf, 0xfc, 0x65, 0x50, 0x79, 0x01, 0x0f, 0x11, 0x3f, 0x67, 0xea, 0x22, 0x51, 0xd1, 0xc8, + 0xe5, 0xea, 0xb3, 0x99, 0xe3, 0x7f, 0xa9, 0xb3, 0x27, 0x2b, 0x9b, 0x12, 0xfb, 0x1c, 0xd9, + 0x55, 0xbc, 0x99, 0xb7, 0xdd, 0x17, 0xe7, 0xca, 0xc1, 0xd5, 0x22, 0xcc, 0xb4, 0x58, 0x67, + 0xf8, 0x28, 0x11, 0xcc, 0x17, 0x31, 0x92, 0x6a, 0xdf, 0x90, 0x4a, 0x6a, 0x93, 0x9d, 0x86, + 0x85, 0x9b, 0x75, 0x9d, 0xc2, 0xd7, 0x90, 0x44, 0xc2, 0xc3, 0xa6, 0x9b, 0xcc, 0xa6, 0x79, + 0x7f, 0xae, 0x83, 0x77, 0xd3, 0x36, 0x9e, 0x9f, 0x26, 0x01, 0x2b, 0xc4, 0x24, 0x5c, 0xa5, + 0x3f, 0x3f, 0x4e, 0x94, 0x40, 0x1f, 0x6b, 0x05, 0x65, 0xdf, 0xc5, 0xe6, 0x0d, 0x84, 0x36, + 0xdc, 0xcc, 0x40, 0x43, 0x0d, 0x16, 0x39, 0x09, 0x03, 0x55, 0x11, 0x7d, 0xf7, 0x1f, 0xd5, + 0xd3, 0xbb, 0x38, 0x3c, 0xf4, 0x2c, 0xaa, 0xe3, 0x35, 0xfc, 0xc8, 0x21, 0x16, 0x4d, 0x28, + 0x75, 0x8e, 0x48, 0x80, 0xab, 0xe2, 0x80, 0xe8, 0xda, 0xac, 0x36, 0x04, 0x67, 0x0a, 0x32, + 0xd9, 0x33, 0x30, 0xbf, 0x46, 0x40, 0x44, 0x96, 0x0e, 0x85, 0xb5, 0xa5, 0x25, 0xf9, 0xa0, + 0xf9, 0xf6, 0xfc, 0x45, 0x25, 0x82, 0x4c, 0x59, 0x2b, 0xd3, 0xa8, 0xd8, 0x66, 0xe8, 0x2f, + 0xa3, 0x27, 0x44, 0x44, 0x22, 0x4c, 0x3a, 0x25, 0x45, 0xe6, 0x9d, 0x04, 0xa8, 0xe8, 0x10, + 0x55, 0xc2, 0xa4, 0x4b, 0x0d, 0x74, 0x3e, 0x1f, 0x38, 0x52, 0x2b, 0xe4, 0xae, 0x25, 0xd0, + 0xd5, 0x2e, 0xbb, 0x10, 0x3a, 0x85, 0xd3, 0xf1, 0xe4, 0xc1, 0x3a, 0xca, 0x71, 0xf2, 0x87, + 0x80, 0xb6, 0xe7, 0x28, 0x20, 0x25, 0x72, 0xcd, 0x58, 0x6f, 0x9c, 0x9e, 0x29, 0xb9, 0x9a, + 0x69, 0x04, 0x9d, 0xe0, 0xad, 0x5b, 0x7c, 0xe1, 0x13, 0x07, 0x6d, 0xef, 0xee, 0x64, 0x98, + 0x08, 0xcd, 0x1e, 0xec, 0x13, 0x96, 0x6a, 0xce, 0x14, 0x68, 0x11, 0x26, 0x91, 0x6e, 0x65, + 0xa9, 0x30, 0x5e, 0xfe, 0x7a, 0xf1, 0x44, 0x0f, 0x5f, 0x40, 0x8e, 0x3b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfd, 0xe0, 0x1c, 0xa6, 0x83, 0xd8, 0x30, 0xfb, 0xef, 0xd6, 0x7b, 0x98, 0xb1, + 0xf8, 0x41, 0x25, 0xe9, 0xe2, 0xd3, 0xa8, 0x44, 0xf3, 0x8f, 0xed, 0x52, 0x40, 0x0e, 0xfb, + 0xe4, 0xf5, 0xf9, 0x25, 0x15, 0xef, 0x0b, 0xdd, 0x76, 0xfc, 0x97, 0x26, 0x43, 0xac, 0xf8, + 0xeb, 0xad, 0xd4, 0xd9, 0x7d, 0xca, 0x4c, 0x59, 0x19, 0x68, 0xec, 0xed, 0x40, 0x58, 0x20, + 0xd6, 0x08, 0xd8, 0x47, 0xa6, 0x33, 0x41, 0xb1, 0x3e, 0x49, 0x49, 0xad, 0xfd, 0x95, 0x10, + 0x6b, 0x00, 0x35, 0xaa, 0x17, 0x59, 0xa9, 0xb7, 0x68, 0x78, 0x63, 0xa3, 0x51, 0xb1, 0x2e, + 0xe9, 0x38, 0xd3, 0x7e, 0x6c, 0x3f, 0x7e, 0xfb, 0xc0, 0xd6, 0x99, 0xb9, 0x9f, 0xea, 0xd6, + 0x94, 0xf5, 0x83, 0xb6, 0x7f, 0x73, 0x59, 0xab, 0x7c, 0xe5, 0xd9, 0xf8, 0x43, 0x49, 0x1b, + 0xf8, 0xe6, 0x4f, 0xc4, 0xb5, 0x63, 0x04, 0x5d, 0xe5, 0x35, 0xa3, 0x91, 0xad, 0x07, 0xe9, + 0x69, 0x6a, 0x68, 0xbd, 0x54, 0x79, 0x2d, 0x27, 0xd5, 0x6a, 0x15, 0xc6, 0x72, 0x12, 0xcb, + 0x57, 0xc7, 0x8a, 0xbf, 0x4a, 0xe1, 0xa7, 0x89, 0x8a, 0xa9, 0xa7, 0x15, 0x6e, 0xee, 0x81, + 0x3c, 0xbc, 0x2f, 0xd2, 0x54, 0x46, 0x4c, 0x10, 0x46, 0x8a, 0x8a, 0xf8, 0x43, 0xb1, 0x58, + 0x64, 0x91, 0x9a, 0x7b, 0x00, 0x62, 0x8d, 0xfd, 0x6c, 0x43, 0x62, 0xf7, 0x2c, 0xd3, 0x65, + 0xb9, 0xa7, 0x66, 0xa9, 0xbc, 0x1e, 0x2d, 0xcf, 0x71, 0x6d, 0x7b, 0xcf, 0x59, 0xda, 0xc3, + 0xeb, 0xae, 0x1e, 0x41, 0x15, 0x99, 0x9d, 0xd8, 0xf6, 0x98, 0x5d, 0x38, 0xa3, 0x02, 0x5b, + 0xcb, 0x92, 0x00, 0x1b, 0xbc, 0xd4, 0x18, 0x5e, 0x61, 0xd4, 0x7a, 0xc5, 0x08, 0x8d, 0x9a, + 0x65, 0xc2, 0x8f, 0xf9, 0x9a, 0x26, 0xcd, 0x86, 0x48, 0xa3, 0x83, 0xf7, 0xd9, 0x3b, 0xb1, + 0x54, 0x3e, 0x7d, 0xd1, 0x2d, 0x91, 0x63, 0x9d, 0x43, 0x14, 0xde, 0xce, 0xdf, 0x85, 0x13, + 0x2b, 0x95, 0x3f, 0x6f, 0x6f, 0x1b, 0x87, 0x3f, 0x32, 0xb4, 0x4f, 0x61, 0x0d, 0x3e, 0x70, + 0x8d, 0x4e, 0x99, 0xbe, 0x9f, 0x80, 0x51, 0xac, 0xaa, 0x82, 0x14, 0x83, 0xd0, 0xa4, 0x66, + 0xc8, 0x0a, 0xbe, 0xa6, 0x98, 0x4c, 0x25, 0xf7, 0xad, 0x43, 0x8d, 0x59, 0xe5, 0x8e, 0x6b, + 0xf0, 0x08, 0x06, 0xc2, 0xcf, 0xe6, 0x61, 0x47, 0x87, 0x85, 0x05, 0x57, 0x3d, 0xdf, 0x97, + 0x83, 0xd6, 0xfd, 0x1b, 0x3d, 0x89, 0xa9, 0x09, 0x7b, 0x92, 0xe6, 0xe0, 0x3b, 0xde, 0x0c, + 0x90, 0x3d, 0x82, 0xcc, 0x6f, 0x4f, 0xda, 0xef, 0x89, 0x05, 0xca, 0x1a, 0x50, 0x71, 0xe6, + 0x38, 0x08, 0x59, 0xef, 0xf6, 0x1f, 0x11, 0xca, 0x29, 0x41, 0x1e, 0x2e, 0xfa, 0x2e, 0x94, + 0x84, 0x06, 0xe0, 0x8f, 0x59, 0xb3, 0x20, 0x1b, 0x8a, 0x69, 0xf3, 0x4f, 0xa7, 0xbe, 0x69, + 0x89, 0x9c, 0xf4, 0x0c, 0x03, 0x5c, 0x99, 0x65, 0xc3, 0x81, 0x4b, 0x79, 0x40, 0x6a, 0xd2, + 0x1c, 0x50, 0x7e, 0x58, 0xa9, 0x63, 0x2f, 0x83, 0x2a, 0xa8, 0x9c, 0xf0, 0x5c, 0xdf, 0x6b, + 0x83, 0xfc, 0x24, 0x4a, 0x8c, 0xc7, 0x43, 0x90, 0x09, 0x22, 0x6b, 0x52, 0xee, 0xeb, 0xab, + 0x5c, 0x59, 0xff, 0x87, 0x81, 0x75, 0xd1, 0x63, 0x0c, 0x3a, 0x6c, 0xce, 0x44, 0x4f, 0x3e, + 0xbb, 0xcb, 0x9d, 0xdb, 0x64, 0xa2, 0xd3, 0x4c, 0xe1, 0x66, 0xa7, 0xc1, 0x57, 0xe6, 0x70, + 0x37, 0xa5, 0x34, 0x5a, 0x8a, 0x6f, 0x4d, 0x8b, 0xe2, 0x80, 0x9d, 0x3e, 0x77, 0x16, 0x23, + 0x43, 0x4c, 0xc0, 0xc0, 0x8d, 0x93, 0xde, 0x4f, 0x32, 0xce, 0xad, 0xc2, 0x8b, 0xb2, 0x98, + 0xfe, 0x4c, 0x8b, 0xbb, 0xa1, 0x27, 0x9d, 0xcd, 0x07, 0x9a, 0xe3, 0xa0, 0xf2, 0x3c, 0x52, + 0x0f, 0x70, 0xeb, 0x1e, 0x59, 0x53, 0xa1, 0x5a, 0x0c, 0xd9, 0x11, 0x92, 0x63, 0x46, 0xe1, + 0x9e, 0x53, 0xc9, 0xbd, 0xb6, 0x46, 0x75, 0x71, 0x1f, 0x20, 0x17, 0x71, 0x58, 0x35, 0xc2, + 0xeb, 0x10, 0xb1, 0xa6, 0xf8, 0x58, 0x19, 0x2f, 0x1e, 0xd5, 0x66, 0x52, 0x11, 0x46, 0xfc, + 0x5c, 0x33, 0x0c, 0x68, 0x29, 0x19, 0xf9, 0xf5, 0x66, 0xae, 0x26, 0xd0, 0x78, 0xa1, 0x53, + 0xc2, 0x0b, 0xe6, 0x92, 0x98, 0xd3, 0x05, 0xa5, 0x4a, 0x26, 0xaa, 0x0c, 0xb2, 0x41, 0x9a, + 0xcb, 0x7f, 0x2d, 0xf2, 0x4f, 0x7f, 0xba, 0x18, 0xd6, 0x0b, 0x3f, 0x61, 0xf9, 0x2a, 0xf7, + 0xe1, 0x4c, 0x95, 0xfa, 0xe8, 0xe1, 0x4e, 0xcd, 0x06, 0x52, 0xf6, 0x6e, 0x25, 0x28, 0x7a, + 0x71, 0xb3, 0xc7, 0x66, 0x78, 0x07, 0x7a, 0x86, 0x20, 0x4b, 0x71, 0x77, 0x0a, 0xc2, 0xcf, + 0xa9, 0x37, 0x26, 0xad, 0x40, 0x85, 0xe3, 0x10, 0x02, 0xff, 0xed, 0x0c, 0x6b, 0x82, 0x04, + 0xc7, 0x5f, 0x38, 0x19, 0xfd, 0x9c, 0x42, 0x8a, 0x82, 0x70, 0x47, 0x69, 0x0e, 0xef, 0x0f, + 0x1b, 0x43, 0xe5, 0x58, 0x04, 0x70, 0xd8, 0x79, 0x02, 0x69, 0x0a, 0xa6, 0x9f, 0x92, 0x5e, + 0x33, 0xa9, 0x4d, 0x23, 0xbd, 0xfe, 0x4c, 0xdd, 0x0d, 0x67, 0x00, 0x89, 0x5e, 0xbf, 0xa4, + 0x18, 0xe8, 0xf5, 0x7b, 0xa4, 0x6b, 0x49, 0x68, 0x61, 0x50, 0x95, 0x87, 0x8b, 0x32, 0x18, + 0xa6, 0xef, 0x0f, 0x2c, 0x57, 0x4f, 0x91, 0x69, 0x12, 0xcf, 0xdc, 0x3a, 0x1d, 0xab, 0x6e, + 0xde, 0xdf, 0x87, 0x30, 0x03, 0x59, 0x08, 0x7f, 0x15, 0x7a, 0xb0, 0x22, 0xc1, 0xff, 0xc0, + 0xbb, 0xba, 0xbe, 0x24, 0x1b, 0xb5, 0x89, 0x51, 0x29, 0xbf, 0x92, 0xab, 0x6b, 0x79, 0xbe, + 0x08, 0xf3, 0xf1, 0x8f, 0xb0, 0xdb, 0x34, 0x9a, 0x8e, 0x4e, 0x72, 0x59, 0x67, 0xb6, 0xc5, + 0x79, 0x27, 0x5c, 0x5d, 0xe0, 0xc8, 0x27, 0x05, 0xcb, 0x69, 0x0b, 0xa8, 0x36, 0xc8, 0x84, + 0xa9, 0x68, 0x0b, 0x5d, 0xae, 0x63, 0x90, 0x92, 0xf5, 0x7f, 0x07, 0xe7, 0xae, 0xd1, 0x17, + 0x56, 0x5c, 0xdc, 0xd2, 0x43, 0xb9, 0xd5, 0x47, 0xfd, 0x3d, 0xaf, 0x25, 0x5d, 0xab, 0x39, + 0xe6, 0x51, 0xff, 0xb0, 0x12, 0x5e, 0xe7, 0x52, 0x41, 0xd1, 0x8e, 0xf4, 0xfa, 0x5d, 0xc6, + 0xff, 0x10, 0x33, 0x66, 0xed, 0xbc, 0x12, 0xa6, 0x2f, 0x1e, 0x8b, 0x24, 0xdb, 0xb3, 0x9e, + 0x95, 0x97, 0xe3, 0xcf, 0x0a, 0x8e, 0xf6, 0xa7, 0x37, 0x66, 0x52, 0x9e, 0x53, 0x77, 0x5b, + 0x72, 0x69, 0x3c, 0xc5, 0x61, 0x16, 0x4b, 0x9f, 0x2b, 0xb8, 0x13, 0x04, 0xf7, 0xac, 0x34, + 0xb3, 0x33, 0x4f, 0x2b, 0x56, 0xdc, 0x18, 0x07, 0xae, 0x32, 0x88, 0xef, 0x13, 0x9a, 0x0d, + 0x9e, 0x81, 0x60, 0xbf, 0x39, 0xf2, 0x58, 0x0b, 0xfe, 0xc1, 0xb3, 0xfb, 0x67, 0x15, 0x82, + 0xb3, 0x2b, 0x08, 0x6e, 0xa0, 0x72, 0x49, 0x0d, 0xc1, 0x33, 0x3b, 0x19, 0x99, 0xeb, 0x66, + 0x89, 0xce, 0x95, 0x59, 0x65, 0xd2, 0x1d, 0x2d, 0x13, 0xc3, 0x83, 0xd5, 0xef, 0xf0, 0x22, + 0x77, 0x2d, 0x18, 0xaa, 0x44, 0x49, 0xac, 0xe5, 0xed, 0x9f, 0xfc, 0x9a, 0xdc, 0xa9, 0x6d, + 0x7c, 0x07, 0xff, 0x99, 0xf4, 0x3b, 0x41, 0x18, 0x9a, 0xf2, 0x76, 0x62, 0x55, 0xac, 0xd7, + 0xe5, 0x2b, 0x14, 0xa8, 0xa3, 0xe6, 0x7d, 0x7d, 0x7f, 0x54, 0x69, 0xdb, 0x1a, 0xbd, 0x77, + 0x7b, 0x64, 0x6f, 0x50, 0x08, 0xef, 0xd1, 0x17, 0xed, 0x66, 0x31, 0x88, 0x30, 0x07, 0x9c, + 0x82, 0xc4, 0x78, 0xc5, 0x7c, 0xb0, 0x2a, 0x57, 0x5f, 0xb0, 0x02, 0x57, 0x01, 0xa4, 0x1d, + 0xb8, 0xb5, 0x5d, 0x4e, 0xae, 0x17, 0x6d, 0xe6, 0xac, 0xd3, 0xf0, 0x01, 0x3d, 0xda, 0x06, + 0x72, 0xd1, 0x84, 0x7f, 0xe2, 0x0f, 0xe2, 0xe7, 0xb4, 0xf3, 0xac, 0x0f, 0xd7, 0x54, 0x8a, + 0xd5, 0xe0, 0x91, 0x71, 0x99, 0x6d, 0x28, 0x7c, 0x0c, 0xed, 0x00, 0xa4, 0xaf, 0xce, 0x8d, + 0xdf, 0x09, 0xa5, 0x58, 0x03, 0x8d, 0xb4, 0x50, 0xd8, 0xbb, 0x9f, 0x69, 0x8e, 0x77, 0x54, + 0x43, 0xee, 0x81, 0x55, 0x6b, 0xc9, 0x13, 0xca, 0x19, 0x1f, 0x0c, 0xc1, 0x61, 0x38, 0x06, + 0xf5, 0xa4, 0x6d, 0xaa, 0xc7, 0x51, 0x73, 0x8d, 0xb4, 0xd6, 0x09, 0x60, 0x16, 0xd6, 0x28, + 0x77, 0x5a, 0x57, 0x63, 0x6b, 0x0a, 0x8b, 0x5a, 0xff, 0x25, 0x63, 0x98, 0xea, 0x5f, 0x92, + 0x0e, 0xac, 0xe0, 0x8f, 0x49, 0xa0, 0xf1, 0xbc, 0xa6, 0xd1, 0x08, 0xa9, 0x43, 0x7c, 0xb4, + 0x73, 0x48, 0xb4, 0x4b, 0x3a, 0xe4, 0x0d, 0xb6, 0x3c, 0xe3, 0xe1, 0xf0, 0x03, 0x30, 0x16, + 0x13, 0xec, 0x6e, 0x01, 0x94, 0xe1, 0x68, 0xc1, 0x54, 0x5e, 0x1a, 0xd4, 0xe5, 0x50, 0x0a, + 0xb3, 0x30, 0xa1, 0xdb, 0x3c, 0x3b, 0xeb, 0xd5, 0xa0, 0x22, 0xb3, 0xca, 0x83, 0x80, 0x77, + 0xcc, 0x7a, 0x39, 0x6c, 0x1b, 0xcc, 0x55, 0x87, 0x8b, 0x75, 0x9f, 0x02, 0x87, 0xff, 0xbf, + 0x04, 0x5a, 0xfb, 0xbd, 0xc9, 0xa7, 0xed, 0x5c, 0xd9, 0x3f, 0x7e, 0x57, 0xe9, 0xc7, 0x29, + 0xf4, 0x23, 0x26, 0x23, 0x03, 0x3d, 0xef, 0x63, 0xeb, 0x9c, 0x92, 0x3a, 0x86, 0x70, 0xb5, + 0xc4, 0xd8, 0x8e, 0xc6, 0x5f, 0x0c, 0xf4, 0xa7, 0xb6, 0x97, 0x69, 0x51, 0xaa, 0x9d, 0xb4, + 0xd6, 0x96, 0x3f, 0x8d, 0xf2, 0x27, 0x9f, 0xeb, 0x8a, 0x24, 0x47, 0x83, 0xd0, 0x69, 0xb7, + 0xf4, 0x62, 0xe3, 0x2f, 0xd7, 0x2e, 0x4f, 0x0a, 0xb2, 0x78, 0x31, 0xea, 0xc3, 0x0a, 0x2d, + 0x45, 0xd7, 0x3a, 0x3d, 0x37, 0x86, 0xe7, 0x25, 0x2b, 0x61, 0x32, 0xd4, 0x02, 0xcb, 0x05, + 0x23, 0x40, 0x1e, 0xcb, 0x0a, 0x3d, 0x19, 0x79, 0x87, 0x20, 0xa9, 0x70, 0xd5, 0x3b, 0x2a, + 0xc1, 0xa9, 0xe3, 0x18, 0x85, 0xf4, 0x16, 0x2d, 0xa4, 0xb3, 0xe6, 0x25, 0x02, 0xbc, 0x95, + 0x5b, 0x1c, 0x7c, 0x8e, 0xee, 0x0a, 0xa9, 0xef, 0xb6, 0x14, 0x18, 0x8a, 0x4a, 0xdb, 0x53, + 0xe3, 0xff, 0x5d, 0x22, 0x31, 0x64, 0xc0, 0x14, 0x3b, 0x62, 0x41, 0x53, 0xf0, 0xed, 0x3b, + 0x50, 0x03, 0xbd, 0x2d, 0x64, 0x60, 0xc6, 0x9b, 0x38, 0xe6, 0xbc, 0x79, 0x29, 0x9a, 0x6b, + 0xba, 0x24, 0x1d, 0xb6, 0xf7, 0x57, 0xf8, 0x78, 0x13, 0x39, 0x6a, 0xc2, 0x6e, 0x06, 0xd8, + 0x88, 0x8c, 0x55, 0x1b, 0x36, 0x73, 0x65, 0x53, 0xb2, 0xeb, 0xe9, 0x6b, 0xb6, 0xfe, 0x61, + 0x20, 0xfe, 0xaa, 0x14, 0x3b, 0x05, 0x4c, 0x6f, 0x3d, 0xb9, 0x8d, 0x48, 0x89, 0xde, 0xa4, + 0x3d, 0xfa, 0xee, 0x59, 0x41, 0x40, 0x41, 0x6d, 0xe2, 0xe6, 0xda, 0xdd, 0x4c, 0x4e, 0x9b, + 0xec, 0x51, 0x9f, 0x44, 0x6e, 0x4a, 0x5c, 0xe9, 0x16, 0x15, 0xd2, 0xbd, 0x09, 0x52, 0x9e, + 0x02, 0x37, 0x58, 0x49, 0x0f, 0x5d, 0x55, 0x14, 0x63, 0x4c, 0xd8, 0x23, 0x51, 0xd6, 0x9e, + 0x64, 0x35, 0x52, 0x7a, 0xa7, 0xa2, 0xd8, 0xc0, 0x99, 0x07, 0x1a, 0x53, 0x50, 0x56, 0x13, + 0x71, 0xdb, 0xe8, 0x30, 0x74, 0xb0, 0xc6, 0xf0, 0x09, 0x85, 0xce, 0x57, 0xb1, 0xf6, 0x09, + 0x46, 0xa5, 0xe9, 0x62, 0x38, 0xbf, 0x80, 0xd5, 0x00, 0x52, 0x15, 0xa5, 0xb5, 0x63, 0xfc, + 0xcb, 0xef, 0xd1, 0x47, 0xcf, 0xb2, 0x90, 0x10, 0x77, 0xf4, 0x5e, 0xa9, 0xc9, 0xa1, 0x2f, + 0xdb, 0xfd, 0xa6, 0xc9, 0x07, 0x87, 0x7d, 0x4e, 0x3e, 0xa6, 0x4b, 0xee, 0xa3, 0x48, 0xbb, + 0xe1, 0xdf, 0xe3, 0xc4, 0x79, 0xdb, 0xe7, 0x2a, 0x70, 0xcb, 0x47, 0x43, 0x49, 0x91, 0xb1, + 0x10, 0xc0, 0x59, 0x42, 0x44, 0x97, 0x6e, 0xf2, 0xe6, 0xdc, 0x31, 0xb0, 0xca, 0x2a, 0xed, + 0x9b, 0xc0, 0x75, 0x49, 0xaa, 0x06, 0x63, 0x0b, 0xf1, 0x23, 0x20, 0x03, 0xe0, 0xc4, 0x19, + 0x7e, 0x18, 0x2e, 0xe6, 0x1e, 0x74, 0xda, 0x79, 0x03, 0xdc, 0x6e, 0x41, 0x09, 0x0d, 0x05, + 0xcd, 0xa0, 0xa7, 0x00, 0x52, 0x36, 0x99, 0x46, 0x3d, 0x33, 0x0b, 0xe1, 0xb4, 0x9e, 0x3f, + 0x30, 0x52, 0x08, 0xae, 0x23, 0x4f, 0x1a, 0xa7, 0x34, 0xb5, 0x79, 0x6f, 0xab, 0x90, 0x38, + 0x13, 0x68, 0xd3, 0xff, 0x0e, 0xd0, 0x56, 0x4c, 0xa1, 0x0c, 0xb4, 0x8c, 0x23, 0x59, 0xd6, + 0x9a, 0x33, 0x04, 0xca, 0x73, 0xdc, 0x67, 0x52, 0xcf, 0xf1, 0xc8, 0xe9, 0x32, 0xca, 0xbb, + 0xf9, 0x1a, 0xee, 0x01, 0xdc, 0x6a, 0xcc, 0x77, 0xe9, 0xbc, 0xc0, 0xfd, 0x9b, 0x0a, 0x19, + 0x87, 0x8a, 0xb1, 0xf0, 0xa1, 0x47, 0x73, 0x36, 0xe9, 0xd0, 0x46, 0xf4, 0x80, 0xb2, 0x0e, + 0x9b, 0xe0, 0xd8, 0xb1, 0x1a, 0x3a, 0x36, 0x25, 0xdd, 0x93, 0xcd, 0x5c, 0x27, 0x79, 0xe8, + 0x1a, 0x85, 0xa1, 0x4a, 0x74, 0x2a, 0x18, 0x9e, 0x6c, 0x3e, 0x51, 0x82, 0x0a, 0x09, 0xd8, + 0x3e, 0x34, 0xb3, 0xb7, 0xb5, 0x8a, 0x92, 0xa3, 0x93, 0xf5, 0x37, 0x03, 0x02, 0xd3, 0x41, + 0x44, 0x60, 0xb8, 0x3c, 0xa0, 0x80, 0xbe, 0xf5, 0x98, 0xfd, 0x8a, 0x9f, 0xa3, 0x9f, 0xd0, + 0x51, 0xa1, 0xb8, 0x90, 0x9d, 0x06, 0x29, 0x07, 0x09, 0x53, 0x17, 0x16, 0xe2, 0x4b, 0x2a, + 0xaf, 0x69, 0x20, 0x15, 0xd1, 0x8e, 0x5e, 0xa1, 0x7c, 0xad, 0x1d, 0x06, 0xf7, 0xd9, 0x07, + 0x51, 0xa4, 0xa0, 0x41, 0x24, 0xfe, 0xa4, 0x00, 0xbe, 0x3e, 0x4e, 0x5e, 0xd2, 0xe1, 0x89, + 0x5f, 0xee, 0xfd, 0x12, 0x69, 0x6b, 0xa2, 0xee, 0x86, 0x34, 0x83, 0xbe, 0x43, 0x01, 0x81, + 0x77, 0x67, 0x86, 0x71, 0x3b, 0x03, 0xc9, 0x17, 0x06, 0xe8, 0x7a, 0x0d, 0x79, 0xcf, 0xc7, + 0x28, 0xd7, 0x00, 0x64, 0x9e, 0x21, 0x10, 0xa8, 0xd4, 0x7b, 0x9a, 0x5a, 0xa6, 0x57, 0x13, + 0xa3, 0x98, 0x9b, 0xb5, 0x2b, 0x02, 0x87, 0x11, 0x20, 0xf4, 0xac, 0x4f, 0x04, 0x28, 0xe5, + 0xdd, 0x6e, 0x76, 0xa6, 0xc1, 0xdd, 0x89, 0xdf, 0xfd, 0x1a, 0x55, 0x39, 0x65, 0x4f, 0x22, + 0xdc, 0x42, 0x13, 0x55, 0xd7, 0x32, 0x96, 0x60, 0x06, 0x11, 0xf9, 0xa1, 0x87, 0xc0, 0xc3, + 0x1f, 0x99, 0x2a, 0x96, 0x85, 0xe4, 0x74, 0x6b, 0x6a, 0xd4, 0x6e, 0xdf, 0xb2, 0xe3, 0x81, + 0xb6, 0x68, 0x1e, 0x26, 0xec, 0x14, 0x7a, 0x98, 0xcf, 0xe1, 0x00, 0xc1, 0x24, 0xc1, 0xd6, + 0x8b, 0x76, 0x0d, 0xfc, 0xb3, 0x6e, 0x1f, 0x01, 0x41, 0x6e, 0x2f, 0x31, 0x33, 0x91, 0x5a, + 0x96, 0xcd, 0x8e, 0x4b, 0xc3, 0x1f, 0xed, 0x6e, 0xf9, 0x3a, 0x6f, 0xed, 0x8c, 0x4f, 0xfe, + 0x9d, 0x04, 0x19, 0xcc, 0x2a, 0xea, 0x85, 0x80, 0x0c, 0xe7, 0xb1, 0xec, 0xe3, 0x1c, 0xf0, + 0x99, 0xf7, 0xe1, 0x59, 0xa1, 0xa0, 0xb8, 0x62, 0x1b, 0x93, 0x4f, 0x63, 0xe8, 0xf1, 0x07, + 0x11, 0x07, 0xd3, 0xbd, 0x2d, 0x1d, 0x38, 0x80, 0xfd, 0x65, 0xcd, 0x39, 0xab, 0x98, 0xf5, + 0xc9, 0x8e, 0x4a, 0x0a, 0x1a, 0x25, 0xb4, 0xae, 0xdc, 0xc5, 0x7a, 0x8a, 0xaf, 0x68, 0x4a, + 0xd7, 0x4c, 0xa9, 0x56, 0x8b, 0x88, 0xf4, 0xff, 0x00, 0xc8, 0x4b, 0xef, 0x4d, 0x33, 0x1b, + 0x57, 0x52, 0x06, 0x2d, 0xc2, 0x90, 0xb0, 0x4a, 0x91, 0x7d, 0x19, 0xfa, 0xa3, 0xcc, 0xbf, + 0xef, 0x9e, 0xac, 0x43, 0xab, 0x28, 0x33, 0x36, 0x25, 0x63, 0x0c, 0x6e, 0x6f, 0x5d, 0x2b, + 0xcc, 0xaa, 0x5f, 0xb3, 0xc6, 0xc7, 0xed, 0x7f, 0x07, 0x19, 0x64, 0x5b, 0xf1, 0x59, 0x26, + 0x9b, 0x51, 0xdf, 0xf6, 0xe3, 0x58, 0xe1, 0xfb, 0x10, 0xb6, 0xc2, 0xf7, 0x07, 0x2f, 0x35, + 0x7f, 0xc1, 0x98, 0x3a, 0x8f, 0x4e, 0xa5, 0x84, 0x05, 0xec, 0xad, 0xb5, 0xde, 0x04, 0xba, + 0xdd, 0x10, 0x8f, 0x19, 0xda, 0xf3, 0xc5, 0x01, 0x20, 0xe9, 0x66, 0x23, 0x9f, 0x12, 0x02, + 0x7f, 0x85, 0xb5, 0x2b, 0x24, 0x47, 0x18, 0xa9, 0x2c, 0x01, 0x0f, 0x19, 0xb1, 0xc0, 0x77, + 0x9b, 0x2f, 0x1e, 0x5b, 0xac, 0xa9, 0x47, 0xd5, 0xc7, 0xd4, 0x8e, 0x01, 0x1d, 0xac, 0xbe, + 0x07, 0x0a, 0x6d, 0x4b, 0xc0, 0x1e, 0x4c, 0xb3, 0xc1, 0xc1, 0xef, 0xee, 0x20, 0x7a, 0x3b, + 0x13, 0x72, 0xd7, 0x67, 0x34, 0x0f, 0x85, 0x9f, 0x78, 0x86, 0x9c, 0x53, 0x4f, 0x5e, 0x14, + 0x87, 0x00, 0x55, 0x21, 0x16, 0xc5, 0x52, 0x08, 0xd5, 0xe7, 0x62, 0xda, 0x64, 0xe7, 0xf4, + 0x56, 0x89, 0x9f, 0xd6, 0xb8, 0x99, 0x57, 0xd3, 0xf2, 0xdb, 0x9b, 0x71, 0xbe, 0x98, 0x9e, + 0x22, 0x1a, 0xd8, 0x6e, 0x71, 0x24, 0x84, 0xd3, 0xa3, 0x87, 0x69, 0x5a, 0xe6, 0xca, 0x25, + 0x79, 0xf0, 0x4f, 0x17, 0xa4, 0x36, 0x74, 0xf5, 0x06, 0x19, 0xf2, 0x30, 0xaf, 0x30, 0x6e, + 0x0f, 0x33, 0x6d, 0x32, 0x91, 0x88, 0xa4, 0x1c, 0x0b, 0x64, 0x36, 0x3d, 0xca, 0xa4, 0x02, + 0x98, 0xb1, 0x2e, 0x93, 0x56, 0xf3, 0x57, 0xbb, 0x52, 0xa5, 0x7b, 0x6f, 0xc3, 0x21, 0xc8, + 0x06, 0xa8, 0xa3, 0x9c, 0xe4, 0x44, 0x1e, 0x5e, 0x32, 0x36, 0x91, 0x4f, 0xdd, 0xe7, 0x31, + 0xa2, 0xe6, 0x6a, 0x63, 0xce, 0x57, 0xe5, 0xf8, 0x18, 0x5a, 0x4f, 0xa9, 0x6e, 0x16, 0xb1, + 0x8d, 0x0b, 0x14, 0xe9, 0x29, 0x9c, 0xa0, 0xa1, 0x5f, 0x55, 0x1f, 0x16, 0x11, 0x9e, 0x38, + 0x7f, 0xd3, 0xfd, 0xc3, 0x9b, 0x8e, 0x91, 0xfe, 0x1e, 0x27, 0x3d, 0x57, 0x65, 0xc4, 0x64, + 0x1a, 0x1d, 0xf9, 0x28, 0x14, 0x02, 0x22, 0xcd, 0xb8, 0xc1, 0x61, 0xa6, 0x5c, 0x05, 0x0e, + 0x99, 0x8d, 0x02, 0x5c, 0xb2, 0x0d, 0x99, 0x72, 0x40, 0xad, 0xd7, 0xbc, 0xbc, 0x93, 0x8f, + 0x64, 0xe8, 0xce, 0xfe, 0x43, 0x12, 0x61, 0x4e, 0x89, 0xe2, 0x6f, 0x88, 0xfb, 0x2f, 0x9f, + 0x3c, 0xf7, 0xa4, 0x2f, 0x49, 0x4b, 0xd5, 0x67, 0x64, 0xf1, 0x70, 0xac, 0x7a, 0xb9, 0xac, + 0x52, 0x3c, 0x7e, 0xb8, 0x16, 0x23, 0x2b, 0x47, 0xaf, 0x57, 0x23, 0x40, 0xf7, 0x31, 0xe5, + 0xaf, 0xeb, 0x20, 0xf1, 0x3b, 0xa7, 0x88, 0x98, 0xde, 0x09, 0x95, 0x07, 0x9d, 0x56, 0x1f, + 0xd3, 0x91, 0x07, 0xfd, 0x56, 0x54, 0xe7, 0x0a, 0xc5, 0xe5, 0x7d, 0x6b, 0x5b, 0x20, 0xfc, + 0xbe, 0xba, 0x5f, 0x05, 0x20, 0x01, 0xd8, 0x50, 0xfa, 0x16, 0x56, 0x04, 0xfc, 0x64, 0x72, + 0x2e, 0x40, 0x28, 0x26, 0xc9, 0xad, 0xb2, 0x97, 0x3f, 0xb8, 0xde, 0x42, 0x38, 0x32, 0x4d, + 0xe0, 0x27, 0x47, 0x36, 0xd6, 0x89, 0x11, 0xff, 0xd2, 0x5e, 0xf9, 0x7b, 0xb3, 0x99, 0x06, + 0x25, 0xc6, 0x17, 0x52, 0xec, 0x69, 0x54, 0x1e, 0x4c, 0xa6, 0xdb, 0x1d, 0x83, 0xa9, 0x39, + 0xfb, 0xc4, 0xdc, 0xbd, 0xcc, 0xb7, 0x88, 0x84, 0x00, 0xdb, 0xc5, 0x54, 0x44, 0x0d, 0x4f, + 0x39, 0x1d, 0x9c, 0x3f, 0xfd, 0xba, 0x6e, 0xe4, 0x4e, 0x00, 0x9f, 0xf3, 0xf2, 0x14, 0xed, + 0x53, 0x99, 0x30, 0xec, 0xd6, 0x6f, 0x77, 0xe0, 0x33, 0x17, 0x23, 0x6a, 0xb8, 0xee, 0x45, + 0x8a, 0xa0, 0xdf, 0xa6, 0x53, 0x57, 0x14, 0x30, 0x8c, 0x5c, 0x51, 0x71, 0x70, 0x59, 0x81, + 0x66, 0x2f, 0xbb, 0x03, 0x25, 0x6e, 0x63, 0x41, 0x2e, 0x4e, 0xac, 0xe6, 0x03, 0xc6, 0x3e, + 0xf9, 0xb9, 0x51, 0xc8, 0x77, 0x5c, 0xf9, 0x0c, 0x4f, 0xe8, 0x9f, 0xe4, 0x5f, 0xec, 0xb6, + 0x48, 0xb4, 0xde, 0xe1, 0xaf, 0xe8, 0x5c, 0xc1, 0x09, 0x1c, 0xee, 0xb7, 0x52, 0x84, 0x28, + 0x5f, 0x81, 0x37, 0x71, 0x50, 0x35, 0x67, 0xd6, 0xbb, 0x8f, 0x29, 0x34, 0xe5, 0x06, 0x0a, + 0x82, 0x40, 0xf4, 0x70, 0x00, 0x7b, 0x62, 0xee, 0x89, 0xa9, 0x8e, 0x69, 0x83, 0x6a, 0xfd, + 0xd1, 0x1d, 0x67, 0xac, 0xe9, 0x81, 0x60, 0x0b, 0x1e, 0xfa, 0xf3, 0x44, 0x8e, 0xe7, 0xc2, + 0x83, 0x5d, 0x5f, 0xef, 0x5c, 0x04, 0x18, 0xb3, 0x2c, 0x22, 0x13, 0x42, 0x6f, 0xce, 0x3a, + 0xdd, 0x16, 0x45, 0x21, 0xa7, 0xb5, 0x60, 0x0b, 0x9d, 0xbd, 0x9f, 0x23, 0xca, 0xfb, 0xbb, + 0x92, 0x35, 0xbe, 0x20, 0xe8, 0x08, 0xeb, 0x2d, 0x0b, 0xe6, 0xb8, 0x50, 0x33, 0xc1, 0x29, + 0x28, 0x61, 0x2e, 0xd9, 0x76, 0x28, 0xf0, 0x5a, 0x49, 0xd0, 0x13, 0x13, 0x95, 0xc3, 0x50, + 0x3c, 0xb4, 0x78, 0xb1, 0xfb, 0x6c, 0xd7, 0xd6, 0x05, 0x7c, 0x61, 0x97, 0x9e, 0x49, 0xd3, + 0xef, 0xf0, 0x7f, 0x84, 0x3b, 0xcd, 0x41, 0x04, 0xa9, 0x93, 0x41, 0xe8, 0x09, 0x6e, 0xec, + 0x42, 0xbd, 0xd6, 0x0b, 0xce, 0x91, 0xf5, 0xa3, 0xb1, 0xcd, 0xba, 0x7c, 0xc1, 0xb9, 0x7c, + 0xc6, 0xdf, 0x80, 0xff, 0x72, 0xd1, 0xce, 0x3b, 0xa5, 0x23, 0xd9, 0x45, 0x9d, 0x42, 0xdf, + 0x3a, 0x3d, 0xb6, 0xf8, 0xaf, 0xc9, 0x39, 0xea, 0xc7, 0x3b, 0xa6, 0x94, 0x95, 0x75, 0x9b, + 0x83, 0xf8, 0x99, 0x0e, 0x50, 0x90, 0xe9, 0xf6, 0x07, 0xd0, 0xc6, 0x3a, 0x55, 0xda, 0x1c, + 0x69, 0x03, 0x88, 0x7d, 0xa4, 0x22, 0xc0, 0x0e, 0xc0, 0x0f, 0xce, 0x80, 0x06, 0x3c, 0xb8, + 0xb2, 0x36, 0xf6, 0x40, 0xcb, 0x3f, 0xf3, 0x51, 0x18, 0x9c, 0x1f, 0x96, 0x55, 0x2c, 0x3d, + 0xfa, 0x87, 0x9b, 0xac, 0x69, 0x6d, 0x50, 0xde, 0xe4, 0xcb, 0x68, 0xe7, 0xe7, 0xab, 0x1e, + 0xd3, 0x16, 0xe6, 0x52, 0x69, 0xee, 0xe3, 0x99, 0xdc, 0x70, 0x3c, 0xc4, 0xa0, 0x2a, 0xc0, + 0x11, 0x00, 0xa8, 0x22, 0xb1, 0xfd, 0xb3, 0x75, 0xec, 0x0c, 0xa1, 0x97, 0x82, 0x83, 0xcb, + 0xb8, 0xb0, 0xaf, 0x9a, 0x14, 0x0a, 0x3f, 0x84, 0x72, 0xf2, 0x93, 0xd1, 0xb1, 0xac, 0x22, + 0x1c, 0xfa, 0x15, 0x32, 0xf5, 0x62, 0x6f, 0x1a, 0xa0, 0x5f, 0x17, 0x98, 0x4a, 0xf7, 0xad, + 0x5e, 0x06, 0x58, 0x7c, 0x7c, 0x54, 0xba, 0x2c, 0x07, 0x88, 0x37, 0xc1, 0xa4, 0x42, 0xbe, + 0xd9, 0x87, 0x2b, 0xf7, 0x00, 0x81, 0xfb, 0x53, 0x4c, 0x33, 0xc7, 0x2e, 0x39, 0x2e, 0x97, + 0x5a, 0xf8, 0x33, 0x6f, 0x72, 0x73, 0x5f, 0xd2, 0x05, 0xa2, 0xf0, 0xed, 0x96, 0xde, 0xb8, + 0x10, 0x3b, 0x6b, 0xcd, 0x13, 0x92, 0x36, 0x12, 0x8f, 0xca, 0xa2, 0x54, 0x54, 0x64, 0x32, + 0xec, 0x64, 0x37, 0x4d, 0x20, 0x92, 0x96, 0xcd, 0x2d, 0xc0, 0x9a, 0xfa, 0xdc, 0x69, 0x7b, + 0x95, 0x6f, 0xa3, 0xda, 0x4a, 0x25, 0xb8, 0x8d, 0x00, 0x7e, 0x8b, 0x67, 0xf4, 0x90, 0x39, + 0x91, 0x1b, 0x11, 0x4b, 0x94, 0xd8, 0x3a, 0x3a, 0xe7, 0xbe, 0xe2, 0x6d, 0xa1, 0x63, 0x73, + 0x0a, 0x56, 0x74, 0xc3, 0x11, 0x06, 0xbe, 0x9f, 0x91, 0x7d, 0x1f, 0xff, 0x30, 0x1f, 0xd9, + 0x09, 0x2f, 0x05, 0x06, 0x13, 0xb6, 0x09, 0xaf, 0x7b, 0x36, 0x50, 0x30, 0x80, 0xc3, 0x75, + 0xe3, 0xc4, 0xa8, 0xcf, 0x8e, 0xa3, 0x42, 0xc7, 0x41, 0x56, 0x2d, 0x8a, 0x19, 0x77, 0x3b, + 0x16, 0x6d, 0x55, 0x36, 0xbd, 0x3f, 0x50, 0x5d, 0xd1, 0xc1, 0x97, 0x88, 0xb6, 0xda, 0x29, + 0xdb, 0x3b, 0x16, 0x41, 0xa7, 0x5b, 0x4b, 0x80, 0x2b, 0x72, 0xa0, 0xde, 0xa1, 0xaa, 0x02, + 0x35, 0xab, 0x0c, 0x77, 0x18, 0x99, 0x08, 0x96, 0xb2, 0x2a, 0xa5, 0x3a, 0xd3, 0x1c, 0x91, + 0xc8, 0xe5, 0xda, 0x28, 0xaa, 0xf8, 0xba, 0x8f, 0x27, 0x97, 0x70, 0xc7, 0xff, 0x33, 0x99, + 0xf5, 0x10, 0x16, 0x15, 0xba, 0x91, 0x9b, 0xf8, 0x1d, 0x2b, 0xcb, 0x72, 0xd1, 0x55, 0x95, + 0x9f, 0x61, 0x1b, 0x06, 0x44, 0x43, 0xfd, 0x80, 0x58, 0x92, 0x47, 0xbe, 0x06, 0x6a, 0x33, + 0x8d, 0x61, 0xd2, 0x01, 0x56, 0xad, 0xc6, 0xd0, 0x63, 0x4e, 0x28, 0x24, 0xae, 0x94, 0xb9, + 0x9f, 0x3d, 0x6e, 0xb1, 0xe6, 0x47, 0x73, 0x73, 0xc2, 0xee, 0x88, 0x1d, 0x81, 0x7b, 0x85, + 0x9b, 0x4a, 0x4a, 0x5d, 0x9b, 0x00, 0xbb, 0xdf, 0x8d, 0xd5, 0x9e, 0x33, 0x84, 0x73, 0xa3, + 0x0e, 0xe5, 0xfa, 0xcf, 0xe3, 0xb9, 0xca, 0x51, 0x9d, 0xa0, 0x46, 0x5f, 0x75, 0x8a, 0x57, + 0x39, 0x82, 0x74, 0x14, 0x91, 0x74, 0x12, 0x2a, 0x3a, 0x1f, 0x06, 0xe1, 0x92, 0x89, 0xa7, + 0x55, 0x08, 0x9f, 0x6e, 0x4a, 0x85, 0x61, 0xea, 0x5b, 0x18, 0xe7, 0xee, 0x22, 0x2a, 0x35, + 0xc7, 0x66, 0xe0, 0x9b, 0x36, 0x43, 0x1d, 0x58, 0x16, 0x3c, 0x90, 0xe9, 0xef, 0xc4, 0x3a, + 0xbf, 0x28, 0xc1, 0xe9, 0xfa, 0x7c, 0x0d, 0x04, 0x6f, 0x4b, 0x8f, 0x88, 0xb8, 0x58, 0xe5, + 0xcc, 0x7a, 0xc6, 0xba, 0x7b, 0x1a, 0x25, 0x07, 0x4e, 0x54, 0x0d, 0x20, 0x1b, 0xb5, 0xa0, + 0x17, 0x48, 0x21, 0xc8, 0xed, 0x04, 0x15, 0x2f, 0x0d, 0xee, 0x28, 0x64, 0x6f, 0x9e, 0x3c, + 0xe8, 0x16, 0xbe, 0x54, 0xd5, 0xcc, 0xbf, 0xce, 0x07, 0x3f, 0x65, 0x17, 0x6d, 0x09, 0x5d, + 0x23, 0x38, 0xee, 0x41, 0x18, 0x76, 0xaf, 0x75, 0x99, 0x26, 0x8b, 0x23, 0xf6, 0x89, 0x7c, + 0xc6, 0x3b, 0x0f, 0xa7, 0x1c, 0x2e, 0xa3, 0x31, 0xfc, 0x07, 0xfd, 0x5a, 0xee, 0xf7, 0x91, + 0x24, 0x86, 0xb2, 0xc8, 0x1f, 0x90, 0x72, 0x8e, 0xa0, 0xc3, 0x0e, 0x75, 0x85, 0x80, 0xea, + 0x1d, 0xa0, 0x99, 0xba, 0xa8, 0xf8, 0x4f, 0xe0, 0xa2, 0x7b, 0xd5, 0x80, 0x48, 0x45, 0xb4, + 0xb0, 0x11, 0x04, 0x14, 0x7f, 0x38, 0x5e, 0x51, 0xd3, 0x09, 0x02, 0x8a, 0x65, 0x39, 0x84, + 0x3f, 0x75, 0xa2, 0x10, 0x51, 0x59, 0x22, 0x82, 0xe0, 0x7c, 0x1e, 0xc1, 0x32, 0xe5, 0x2a, + 0x0b, 0x69, 0x03, 0xe7, 0x27, 0x17, 0x61, 0x5e, 0x34, 0xd5, 0xc2, 0xab, 0x82, 0xe9, 0xec, + 0x74, 0xe4, 0x98, 0xe5, 0x6e, 0x20, 0xf8, 0xc3, 0x48, 0x56, 0x28, 0x86, 0x8f, 0x32, 0x05, + 0xa1, 0x11, 0x98, 0x14, 0xb0, 0x0a, 0x16, 0x37, 0xcb, 0xfc, 0x4c, 0x76, 0x69, 0xc1, 0x11, + 0xb0, 0xb2, 0x0d, 0xb5, 0xb6, 0x3a, 0x8e, 0xb8, 0xd8, 0x9b, 0x2e, 0xa6, 0xf4, 0xd6, 0xfe, + 0x2d, 0x1f, 0xf7, 0xb6, 0xdd, 0x85, 0x49, 0xbb, 0x02, 0xcc, 0x0c, 0x4b, 0xdc, 0x78, 0x93, + 0x12, 0x7d, 0x41, 0x22, 0xf6, 0x6e, 0x67, 0x03, 0x03, 0x8b, 0x81, 0x76, 0xd3, 0x61, 0xe4, + 0x54, 0xdb, 0xb1, 0x72, 0xaf, 0x31, 0x28, 0xe8, 0x6c, 0xff, 0x3a, 0x1b, 0xe1, 0xbf, 0x00, + 0x6e, 0x9c, 0x9d, 0x45, 0xb3, 0x32, 0x0f, 0x8b, 0xc9, 0x17, 0x76, 0x12, 0xd2, 0x17, 0xb5, + 0xbf, 0x29, 0xe2, 0xd9, 0x45, 0xd1, 0xda, 0x07, 0x21, 0xa8, 0x67, 0x2f, 0x2d, 0xc7, 0x3d, + 0x87, 0xa3, 0xfc, 0x5f, 0x91, 0xb7, 0x2d, 0xf2, 0x84, 0x3d, 0x34, 0xdf, 0x26, 0x20, 0xe8, + 0xbb, 0xbd, 0x2a, 0x1a, 0xe7, 0x54, 0x43, 0x3a, 0x76, 0xf7, 0xc0, 0x1f, 0xa3, 0xc3, 0x15, + 0x66, 0xdc, 0x3b, 0xc5, 0x3b, 0xae, 0xec, 0xb1, 0x3a, 0xd3, 0xae, 0x78, 0xc0, 0x32, 0xea, + 0xe5, 0x3f, 0xac, 0x51, 0x09, 0x33, 0xa1, 0x23, 0x3c, 0xd0, 0x9f, 0x77, 0xbd, 0xa5, 0x06, + 0xc4, 0x24, 0xba, 0x2c, 0xeb, 0x3e, 0xcd, 0xe9, 0x36, 0x33, 0x50, 0xa9, 0x09, 0x63, 0xa6, + 0x15, 0xb1, 0xa9, 0xd8, 0x60, 0x4f, 0xd1, 0xc3, 0xd8, 0xfa, 0xa3, 0x2d, 0x82, 0x38, 0xc1, + 0x0a, 0x03, 0xcb, 0x3d, 0xd1, 0x44, 0x2f, 0x7f, 0x4a, 0xe8, 0x84, 0x44, 0x71, 0x35, 0x36, + 0xc9, 0x9a, 0x7d, 0x4e, 0x0d, 0x82, 0xea, 0xe4, 0x46, 0x27, 0x8a, 0x57, 0x2e, 0xcf, 0x08, + 0x7f, 0x98, 0xe1, 0xf6, 0x2d, 0x25, 0x1b, 0x51, 0x11, 0xb5, 0xc0, 0x7c, 0x7c, 0x02, 0x2f, + 0x94, 0x66, 0xcb, 0x47, 0x1e, 0x0f, 0x69, 0x2e, 0x22, 0xb6, 0xa0, 0x1f, 0x48, 0x83, 0xcc, + 0xbc, 0x9a, 0xef, 0x35, 0x4b, 0x13, 0xdb, 0x3e, 0xd8, 0x61, 0x28, 0xc7, 0xb4, 0x8b, 0xfa, + 0x38, 0xaa, 0xc4, 0x81, 0xbb, 0x16, 0x4e, 0x14, 0x4c, 0xf7, 0xcc, 0x5c, 0xd9, 0xdd, 0xc8, + 0x9c, 0x39, 0x0f, 0x05, 0xc8, 0xb8, 0xf1, 0xfc, 0x61, 0x39, 0xfb, 0x90, 0xac, 0xa4, 0xf0, + 0x5b, 0x84, 0x6e, 0x72, 0x41, 0x87, 0x08, 0x3a, 0xda, 0x98, 0x26, 0x55, 0xc7, 0x28, 0x25, + 0x30, 0xb3, 0x48, 0x32, 0xf2, 0x8a, 0xf0, 0xd3, 0x41, 0xb3, 0xd2, 0x1f, 0x28, 0x1c, 0x5b, + 0x2d, 0x11, 0x38, 0x0e, 0x78, 0x89, 0x93, 0x58, 0x12, 0x1b, 0x49, 0x85, 0x53, 0x61, 0x99, + 0xdd, 0xb8, 0xbd, 0x6a, 0x1d, 0x58, 0x9c, 0x10, 0x43, 0x9f, 0x9b, 0x63, 0x07, 0x0c, 0x90, + 0x2c, 0x96, 0x91, 0x6e, 0x39, 0x2c, 0x1a, 0xac, 0xd7, 0x34, 0xca, 0x2b, 0xca, 0x4e, 0xf1, + 0x18, 0x93, 0x7a, 0xeb, 0xcf, 0x8b, 0x7f, 0x5d, 0x68, 0x92, 0xaf, 0x7a, 0xa1, 0x70, 0xab, + 0x17, 0xbf, 0x6e, 0xf1, 0x40, 0x9b, 0x12, 0x47, 0x73, 0x28, 0xe4, 0x40, 0x9b, 0x85, 0x91, + 0xa3, 0xb3, 0x2f, 0x21, 0x51, 0xa7, 0x3f, 0x5e, 0x3b, 0x82, 0x38, 0xe2, 0x4b, 0x17, 0x5a, + 0xe8, 0xe9, 0x2d, 0xa8, 0xdd, 0x8a, 0xc4, 0xa6, 0xb3, 0xe4, 0x8f, 0x9b, 0x9a, 0x93, 0xb3, + 0x28, 0x13, 0x32, 0xe0, 0x02, 0x3d, 0x61, 0x8f, 0xfd, 0x27, 0xb4, 0x02, 0xe9, 0x86, 0xe6, + 0x28, 0x69, 0xf5, 0x60, 0x33, 0xd0, 0x20, 0xc5, 0x95, 0xf7, 0x71, 0x17, 0xc8, 0x57, 0xbd, + 0xa5, 0x8e, 0x59, 0xe1, 0x0d, 0x06, 0x16, 0x5b, 0x44, 0xd8, 0x6c, 0xff, 0x78, 0xcf, 0x6a, + 0xec, 0xd3, 0xb8, 0x88, 0x44, 0x26, 0x05, 0x3a, 0xc0, 0xb3, 0x95, 0xc6, 0xe3, 0x8c, 0x8f, + 0x74, 0xd3, 0x67, 0x25, 0xa4, 0xea, 0x60, 0xb3, 0x8d, 0xcc, 0x5d, 0xa2, 0x5c, 0x69, 0x96, + 0x45, 0x3d, 0xab, 0xe2, 0x87, 0xec, 0x48, 0xad, 0x03, 0x06, 0x2c, 0xe9, 0xce, 0xae, 0xc6, + 0xc5, 0x21, 0x55, 0x4f, 0xec, 0x71, 0xe2, 0x46, 0xc1, 0xd7, 0x52, 0x8d, 0x30, 0xbb, 0xb6, + 0x3b, 0x57, 0x13, 0xf1, 0xc7, 0x98, 0xc6, 0xb8, 0x00, 0x33, 0x27, 0xb1, 0x54, 0x92, 0x79, + 0x8b, 0x80, 0x0e, 0x9f, 0xdb, 0xc4, 0xea, 0xd8, 0xe5, 0xf9, 0x99, 0xa4, 0xfc, 0xa0, 0xc8, + 0x8b, 0x47, 0xb1, 0xfc, 0xcd, 0x59, 0x98, 0xd5, 0x40, 0x95, 0xb1, 0x00, 0x3f, 0xd0, 0xb0, + 0x7f, 0x22, 0x52, 0x00, 0xa8, 0xe0, 0x44, 0xde, 0x43, 0xbc, 0x32, 0xe9, 0x2a, 0xc7, 0x2b, + 0x8e, 0xec, 0x3d, 0x9c, 0x63, 0xd4, 0xb1, 0xdb, 0x67, 0xe4, 0xdd, 0x88, 0x4d, 0xab, 0x13, + 0x66, 0xcb, 0x8c, 0x5e, 0xf8, 0xef, 0xb5, 0xb7, 0x75, 0x53, 0x92, 0x83, 0x8d, 0xd2, 0xd5, + 0xe0, 0x5c, 0xe9, 0xff, 0x33, 0x07, 0x81, 0x57, 0x1c, 0x52, 0x63, 0x49, 0x77, 0xb4, 0xca, + 0x1e, 0x16, 0x96, 0x46, 0x6c, 0x93, 0xbb, 0x61, 0xe3, 0xa1, 0xae, 0xa5, 0x29, 0x46, 0x12, + 0x1b, 0x98, 0x04, 0xcd, 0x50, 0xd0, 0x20, 0xaf, 0xe2, 0x14, 0x67, 0xf1, 0x46, 0x76, 0x0d, + 0xad, 0x8f, 0x12, 0x34, 0x90, 0xfa, 0x50, 0x74, 0xcf, 0xbc, 0x17, 0xbd, 0x86, 0x2e, 0x02, + 0x88, 0xe9, 0x3b, 0x4e, 0xa6, 0xe5, 0x37, 0x94, 0x6f, 0x2f, 0xb6, 0xb0, 0x5e, 0x5c, 0xee, + 0xb7, 0x3b, 0x85, 0x9b, 0xdf, 0x2b, 0xb6, 0x1b, 0x6f, 0x38, 0xf3, 0x32, 0xdf, 0x7e, 0xc6, + 0xb2, 0x0d, 0x37, 0xc0, 0xac, 0xe3, 0xf0, 0x30, 0x7d, 0xea, 0x51, 0x1f, 0x0d, 0xf1, 0xc8, + 0x10, 0x79, 0xd1, 0x55, 0x3a, 0x1c, 0x55, 0x0f, 0x6f, 0x65, 0xf6, 0xe9, 0x33, 0x4d, 0x64, + 0xd1, 0x9c, 0x81, 0xb9, 0xde, 0xd1, 0x13, 0xbf, 0x94, 0x5d, 0x58, 0xdf, 0x5b, 0xe0, 0x37, + 0x22, 0x75, 0xe7, 0xf5, 0x9d, 0xbd, 0x87, 0x38, 0xbf, 0x39, 0x39, 0x83, 0x6b, 0x7a, 0xa7, + 0x44, 0x2a, 0x98, 0xf0, 0x1e, 0xbf, 0x57, 0x44, 0xda, 0xcf, 0xb4, 0xf0, 0x12, 0x18, 0xab, + 0xac, 0x2c, 0x6a, 0x58, 0x38, 0x7b, 0xc7, 0x93, 0xbb, 0xdb, 0x1c, 0x04, 0x1d, 0xd5, 0x6c, + 0x14, 0xdc, 0x02, 0xf7, 0xf0, 0x69, 0x0f, 0x4a, 0xe2, 0x80, 0x05, 0x08, 0xac, 0x6f, 0xcf, + 0x8a, 0x56, 0x73, 0x37, 0x73, 0xae, 0xd9, 0xe8, 0x99, 0xee, 0xab, 0x42, 0xa7, 0x22, 0x99, + 0x71, 0xa8, 0xda, 0x89, 0x6f, 0x5b, 0x49, 0xa3, 0x44, 0xb6, 0x40, 0xd1, 0x9a, 0xe4, 0x6a, + 0x48, 0x9d, 0xda, 0x7d, 0xa3, 0x93, 0xc4, 0x23, 0xa9, 0x73, 0x00, 0xa2, 0x8c, 0x2e, 0x2b, + 0x10, 0xae, 0x58, 0x0f, 0xb0, 0x16, 0x4f, 0x83, 0xf1, 0x65, 0x5d, 0xf5, 0xe6, 0x67, 0x80, + 0xcd, 0xe6, 0x4b, 0x7b, 0xbd, 0xef, 0x16, 0x56, 0x3a, 0xcc, 0x3d, 0x65, 0xe9, 0x8d, 0xd8, + 0x00, 0xf9, 0x0b, 0x3a, 0x68, 0x5d, 0x17, 0xc2, 0xb7, 0x93, 0x71, 0xaa, 0x4c, 0x25, 0x75, + 0x7f, 0xb2, 0x06, 0xc6, 0xb1, 0xf7, 0x7c, 0x17, 0x0e, 0xc0, 0x46, 0x9c, 0x2f, 0xf6, 0x12, + 0x50, 0xac, 0xd5, 0x19, 0x2d, 0x49, 0xba, 0xd3, 0x78, 0xcf, 0x09, 0xfc, 0xa9, 0x4d, 0xe4, + 0x03, 0xbd, 0x50, 0xf0, 0xca, 0xa5, 0x1e, 0x8b, 0x59, 0xba, 0x16, 0xc7, 0x1a, 0xe0, 0x20, + 0x78, 0xd9, 0x9e, 0x3a, 0xf1, 0xb7, 0x35, 0xa3, 0x7d, 0x8a, 0xf3, 0xb8, 0x98, 0x5d, 0x44, + 0x9b, 0xa0, 0xf9, 0x05, 0x4b, 0x2b, 0xc3, 0xc8, 0x0f, 0x6c, 0xdd, 0xc9, 0xfb, 0x05, 0x84, + 0x84, 0x67, 0xaf, 0xc2, 0xa6, 0x46, 0x33, 0xd3, 0x23, 0xc8, 0x8f, 0xa7, 0xa4, 0xb7, 0xab, + 0x33, 0xf8, 0x1c, 0x6d, 0x82, 0x62, 0xc2, 0xca, 0x64, 0xe7, 0xb9, 0xf3, 0x11, 0xd1, 0x68, + 0x16, 0x1b, 0xb0, 0x6c, 0x39, 0xbd, 0x7f, 0xd7, 0xae, 0xd8, 0x14, 0x93, 0x38, 0x32, 0x54, + 0x6c, 0x27, 0x1f, 0x54, 0xeb, 0x66, 0x26, 0x89, 0xc1, 0xcd, 0x7c, 0x96, 0x7b, 0x02, 0x7b, + 0x35, 0x1b, 0xac, 0x88, 0x6c, 0xe2, 0x5f, 0xf2, 0x4e, 0x7c, 0x10, 0xa5, 0x07, 0x48, 0x9b, + 0xe5, 0x29, 0x02, 0x9f, 0x82, 0x70, 0xef, 0x99, 0xdd, 0x21, 0xe0, 0x43, 0xca, 0x7a, 0x67, + 0x5e, 0x27, 0x85, 0xd6, 0x29, 0xb2, 0x29, 0x79, 0x46, 0x4a, 0x32, 0xec, 0xda, 0xe5, 0x3c, + 0xc8, 0x7b, 0x52, 0xda, 0x6c, 0x87, 0x8a, 0x6d, 0x70, 0x73, 0xd1, 0xc3, 0xfd, 0xfc, 0x81, + 0xc3, 0x4f, 0x28, 0x46, 0xba, 0x40, 0xb9, 0x11, 0xc5, 0x36, 0xc4, 0xdd, 0xa0, 0xd4, 0x4a, + 0xe4, 0x19, 0x23, 0xd8, 0x0a, 0x7b, 0x61, 0x69, 0xaf, 0x46, 0xbe, 0xd4, 0xd6, 0x32, 0xc0, + 0x4f, 0xe5, 0x78, 0x06, 0x5e, 0x26, 0x27, 0x31, 0xff, 0x1d, 0x11, 0xd8, 0x1d, 0x80, 0x52, + 0x7e, 0x2b, 0xe1, 0x13, 0x16, 0x52, 0x0f, 0x21, 0xc8, 0x4d, 0x38, 0xb4, 0x66, 0xc0, 0xd5, + 0x8e, 0x09, 0xcf, 0x1b, 0x8d, 0x54, 0x74, 0x52, 0x64, 0xca, 0x9a, 0x81, 0x02, 0xf9, 0xd4, + 0xc8, 0xea, 0xac, 0xc5, 0xb1, 0x11, 0x11, 0xf1, 0x70, 0x96, 0xf4, 0xde, 0x3f, 0x02, 0xec, + 0x6e, 0x6f, 0x40, 0x00, 0x6a, 0xae, 0x55, 0xab, 0x4d, 0x64, 0xae, 0x4d, 0x11, 0x7b, 0xa4, + 0x86, 0xd2, 0x64, 0x37, 0x6e, 0x6c, 0x47, 0x1b, 0x85, 0x97, 0x95, 0x14, 0xea, 0x86, 0xb9, + 0x5b, 0xda, 0x4d, 0xd2, 0x96, 0x66, 0xc4, 0x56, 0x23, 0xef, 0xeb, 0x8e, 0x2f, 0x0a, 0x2a, + 0x0e, 0x7b, 0xd7, 0xe9, 0x3d, 0xe9, 0xa4, 0x2c, 0x5c, 0x14, 0x20, 0xbd, 0x0c, 0xa9, 0xd2, + 0x7a, 0xf7, 0x6a, 0x2c, 0xa3, 0xf2, 0xe8, 0x24, 0x1f, 0xa3, 0xc5, 0x21, 0xaa, 0x70, 0xf4, + 0x7c, 0x97, 0x00, 0xa4, 0xf1, 0x31, 0x47, 0x26, 0x85, 0x40, 0x9f, 0x08, 0x18, 0x23, 0xe0, + 0xf2, 0xb1, 0x1f, 0xeb, 0xf7, 0xd8, 0x7f, 0x80, 0xc9, 0xbb, 0x13, 0x9e, 0x3b, 0x91, 0x32, + 0x86, 0x72, 0xc4, 0xe3, 0x8b, 0x17, 0x54, 0x41, 0xec, 0xa1, 0x14, 0xe2, 0x57, 0x2d, 0x29, + 0xf7, 0x00, 0x66, 0x71, 0x90, 0x7f, 0xb5, 0x86, 0xda, 0xad, 0x0a, 0x59, 0x43, 0x72, 0xea, + 0x11, 0x0d, 0xab, 0xfb, 0x2f, 0x5d, 0xb5, 0x1b, 0x4e, 0xe8, 0xf2, 0xef, 0x71, 0x74, 0xdb, + 0x21, 0xec, 0x09, 0x13, 0x93, 0xa6, 0x41, 0xa2, 0xbf, 0x1d, 0x23, 0x9c, 0xc0, 0xf2, 0x30, + 0xdc, 0xf8, 0x85, 0x31, 0xfb, 0xd0, 0xf7, 0x1b, 0xa2, 0x74, 0xb8, 0x17, 0xd3, 0x56, 0xc2, + 0x0e, 0x16, 0x32, 0x95, 0xf7, 0x7a, 0x1c, 0x72, 0x03, 0x1b, 0x75, 0x44, 0x9c, 0xe4, 0x6e, + 0x0e, 0xb2, 0x6c, 0x60, 0x05, 0x6f, 0xc9, 0xa4, 0x80, 0xc4, 0x23, 0x87, 0x82, 0xa1, 0x93, + 0x15, 0x5a, 0x9c, 0x26, 0x23, 0x3e, 0x46, 0x4c, 0x82, 0xd5, 0xb2, 0x47, 0x28, 0x06, 0x80, + 0x2c, 0xad, 0x75, 0xfb, 0xba, 0x9b, 0xeb, 0x2a, 0x48, 0x4b, 0x9d, 0x5c, 0xdc, 0xb4, 0x4f, + 0xd6, 0x12, 0x28, 0xaf, 0x12, 0x1a, 0x13, 0x58, 0x0b, 0x91, 0xd3, 0xe0, 0xfa, 0xb8, 0x0f, + 0xe4, 0xd5, 0x40, 0x96, 0xb9, 0x76, 0x26, 0x19, 0x9e, 0xb9, 0x31, 0x6e, 0xc3, 0x75, 0xf4, + 0xd8, 0x62, 0xac, 0xc8, 0xac, 0x10, 0xaf, 0x9d, 0x10, 0x41, 0x44, 0xca, 0x04, 0xf6, 0xc0, + 0xc6, 0x2c, 0xc4, 0xc3, 0x86, 0x79, 0x51, 0x04, 0x7e, 0x80, 0xd0, 0x38, 0xdc, 0xb3, 0x8c, + 0xf4, 0xfa, 0xf3, 0x5a, 0x7e, 0x35, 0x72, 0x27, 0x67, 0xd4, 0x3d, 0x6c, 0x70, 0x04, 0x1f, + 0x37, 0xaa, 0x05, 0x6d, 0xb3, 0xa8, 0x5d, 0x3c, 0x36, 0x68, 0x63, 0x51, 0xb2, 0xd0, 0x01, + 0x94, 0x2a, 0x31, 0x62, 0x65, 0xee, 0x79, 0xc8, 0x84, 0x8c, 0xe1, 0x9f, 0x12, 0x76, 0xbf, + 0x7b, 0x89, 0xdf, 0xf8, 0x01, 0x80, 0xe8, 0xa5, 0x49, 0x19, 0xe7, 0xf0, 0xe3, 0x00, 0x29, + 0x9c, 0xb5, 0x74, 0xff, 0xfc, 0x41, 0xb0, 0x17, 0x2a, 0x06, 0xa0, 0x68, 0x2e, 0xb1, 0x2b, + 0x0a, 0xfb, 0xc4, 0x05, 0x56, 0xfa, 0xc7, 0x0a, 0xbb, 0x6c, 0xb2, 0x44, 0x59, 0xd8, 0x6f, + 0x8d, 0x97, 0x67, 0x57, 0x77, 0x5e, 0x3d, 0x01, 0x14, 0x62, 0x94, 0x47, 0x94, 0xee, 0xca, + 0xdc, 0x2c, 0xd2, 0x99, 0x8e, 0x1f, 0x20, 0x2a, 0xeb, 0x7c, 0xa8, 0x13, 0xca, 0x59, 0x66, + 0x90, 0x8b, 0x3e, 0xea, 0xc3, 0x57, 0x76, 0x50, 0x01, 0x53, 0x11, 0xde, 0x2c, 0xe5, 0x84, + 0x54, 0x6d, 0xcb, 0x00, 0xa5, 0x88, 0x54, 0x1a, 0x2d, 0x73, 0xa7, 0x42, 0xd3, 0xba, 0x01, + 0xad, 0xa0, 0x79, 0x4a, 0xbb, 0x5a, 0xce, 0xbf, 0x94, 0x67, 0xef, 0x4c, 0x40, 0xb4, 0x3a, + 0xe9, 0x44, 0x26, 0xcb, 0x06, 0x07, 0x74, 0x51, 0xe6, 0x96, 0x6c, 0xf2, 0xc9, 0xf3, 0x05, + 0x0b, 0xd8, 0x9c, 0xfd, 0xec, 0x23, 0x31, 0x30, 0x66, 0x0a, 0x66, 0x83, 0xb5, 0xac, 0x32, + 0x0b, 0x55, 0x43, 0xdd, 0x77, 0xe9, 0xc1, 0x1a, 0xd1, 0xe9, 0xb5, 0x38, 0x5a, 0x0c, 0x93, + 0x76, 0x58, 0x58, 0xed, 0x20, 0x83, 0x3c, 0x6c, 0x26, 0x28, 0x41, 0xe5, 0xaa, 0x3a, 0x5f, + 0xaf, 0x3e, 0x94, 0x4d, 0xeb, 0x4a, 0x16, 0x11, 0xbe, 0x21, 0xe3, 0x4c, 0xda, 0x9d, 0x02, + 0x1c, 0x0a, 0x4f, 0x0c, 0x09, 0xe0, 0x01, 0xf9, 0x41, 0x2e, 0x12, 0x72, 0xa2, 0x1a, 0xa0, + 0x37, 0x44, 0xf1, 0x75, 0xf1, 0xac, 0xe6, 0xc9, 0x0e, 0xbf, 0x20, 0x3b, 0xfc, 0x8f, 0xbe, + 0x43, 0x6c, 0x3b, 0x83, 0xf0, 0x34, 0x17, 0xc1, 0xc4, 0x86, 0x53, 0x2a, 0x6a, 0x62, 0x1e, + 0x81, 0x26, 0x53, 0x89, 0xb1, 0x0c, 0xea, 0xd3, 0x4c, 0x15, 0x77, 0xfa, 0xca, 0x3b, 0xbb, + 0xc5, 0x3d, 0xd9, 0xe9, 0xd9, 0x5b, 0xd1, 0x41, 0x1b, 0xba, 0x48, 0xa2, 0x9a, 0xcf, 0x79, + 0x70, 0x71, 0x16, 0x6b, 0x3b, 0xaf, 0x12, 0xb1, 0xba, 0x41, 0xba, 0xe9, 0xd5, 0xc6, 0xe2, + 0x01, 0x63, 0x48, 0x01, 0x51, 0x6e, 0x2a, 0x3e, 0xb1, 0xa7, 0xdc, 0x43, 0x1f, 0x0a, 0xd5, + 0x07, 0x4c, 0xd2, 0x72, 0x3e, 0x60, 0x61, 0xb5, 0x07, 0x10, 0xd2, 0x13, 0xe5, 0x2e, 0xff, + 0x59, 0x16, 0x38, 0xee, 0xec, 0xa8, 0x33, 0xe2, 0x42, 0x96, 0x52, 0xf1, 0x58, 0x64, 0xa7, + 0x25, 0xf2, 0xd9, 0x66, 0x13, 0x54, 0x7b, 0x16, 0x6c, 0xab, 0x7a, 0x63, 0x7d, 0x19, 0x99, + 0x78, 0xfc, 0x16, 0x0e, 0x1e, 0x5e, 0xe8, 0xbb, 0x9e, 0x23, 0xd3, 0xf4, 0xcf, 0x0f, 0x3d, + 0x16, 0x2d, 0xf9, 0x30, 0x59, 0x70, 0x7f, 0xd0, 0xf4, 0xe8, 0xcc, 0xe5, 0xfb, 0x00, 0xcb, + 0xd4, 0xf4, 0xfb, 0xfa, 0x10, 0x61, 0x26, 0x5a, 0x21, 0x0a, 0x0c, 0xe1, 0xa7, 0xa7, 0xaa, + 0x81, 0x3d, 0x83, 0x5e, 0xbf, 0x6e, 0x6b, 0xda, 0x32, 0x39, 0x9b, 0xff, 0x4c, 0xfb, 0x33, + 0xdb, 0x8c, 0x36, 0xe4, 0x69, 0x35, 0xa0, 0xfd, 0x04, 0xab, 0x7d, 0x73, 0x4c, 0x2d, 0x94, + 0x84, 0x0e, 0x60, 0x4d, 0x78, 0x71, 0xd4, 0x32, 0x84, 0x75, 0x7f, 0x01, 0xf0, 0x99, 0x20, + 0x1a, 0x7e, 0xca, 0x57, 0x6f, 0xed, 0x8d, 0x72, 0x72, 0x73, 0x20, 0xe2, 0xa2, 0x45, 0x73, + 0x4e, 0x78, 0x40, 0x23, 0x12, 0xdc, 0x40, 0x73, 0xef, 0xce, 0x49, 0x10, 0xd2, 0x00, 0x54, + 0x8e, 0x68, 0xba, 0xd9, 0x2c, 0x8b, 0xf7, 0x16, 0x7a, 0xd0, 0x59, 0x98, 0x38, 0x6f, 0xd9, + 0xd0, 0x2a, 0x0c, 0xc5, 0xae, 0x81, 0xbd, 0x02, 0x1b, 0x81, 0x0f, 0x98, 0xb6, 0xa6, 0xab, + 0xc6, 0xec, 0x94, 0xdb, 0xaa, 0xc2, 0x25, 0x55, 0xbd, 0xc7, 0xb6, 0x76, 0xc3, 0x1c, 0x2b, + 0xdc, 0x2a, 0xc5, 0xc6, 0x14, 0x66, 0x71, 0x5b, 0x73, 0x22, 0x51, 0x71, 0xd0, 0xf8, 0x9d, + 0x05, 0x62, 0xcb, 0x7f, 0x99, 0x12, 0x0e, 0x71, 0x66, 0x03, 0x51, 0xc8, 0x22, 0x30, 0x37, + 0x8b, 0x31, 0x34, 0xb6, 0x1d, 0x52, 0x2b, 0xb2, 0xc0, 0xd8, 0xaa, 0x67, 0x1d, 0x12, 0xd0, + 0x48, 0xdf, 0x3b, 0xec, 0x31, 0xc7, 0x78, 0xe1, 0x52, 0xb5, 0x67, 0xf8, 0x8d, 0x93, 0x13, + 0x7b, 0x33, 0x80, 0x31, 0x8c, 0xab, 0xe2, 0x0f, 0x73, 0xc2, 0x10, 0xf9, 0x17, 0x01, 0x76, + 0x3c, 0xea, 0x06, 0xdf, 0x6c, 0xe9, 0x66, 0xe2, 0xf0, 0x2c, 0x57, 0xcb, 0xda, 0x0f, 0xee, + 0xee, 0xf5, 0x5b, 0xfe, 0xbf, 0x1b, 0xfa, 0x77, 0xf7, 0xfc, 0x5e, 0x8c, 0xf3, 0x0c, 0x55, + 0xd6, 0xe6, 0xf6, 0xd9, 0x75, 0x26, 0x70, 0xd8, 0x27, 0x01, 0xc5, 0x73, 0x7d, 0xcc, 0xdd, + 0x36, 0xb5, 0x39, 0xf2, 0x2f, 0x9d, 0x12, 0x2b, 0xab, 0xd0, 0x40, 0x82, 0x74, 0xc2, 0xff, + 0x56, 0xeb, 0x47, 0x25, 0x46, 0x61, 0x95, 0xc4, 0xaa, 0x5b, 0xd2, 0x8e, 0x9b, 0x24, 0x1e, + 0xce, 0x4a, 0xaa, 0x86, 0xaa, 0x18, 0xa0, 0x4d, 0xfb, 0x07, 0x6f, 0xf6, 0x25, 0x7c, 0x08, + 0x93, 0xb2, 0xe6, 0x5f, 0x5b, 0xa6, 0x2d, 0x45, 0x40, 0xf1, 0xf1, 0x9d, 0x82, 0x8b, 0x0c, + 0x9c, 0xb4, 0xe3, 0x37, 0xc1, 0x15, 0x6a, 0xce, 0x7b, 0x55, 0x07, 0x05, 0x41, 0x1b, 0x38, + 0xbc, 0xe1, 0xa6, 0x8b, 0xcc, 0xc9, 0x18, 0x4f, 0x27, 0xaa, 0x03, 0xf6, 0xfd, 0x6f, 0xc3, + 0x14, 0x53, 0xef, 0x53, 0x72, 0x54, 0xde, 0x04, 0x3d, 0xfd, 0x46, 0x13, 0x61, 0x38, 0x1b, + 0x48, 0x64, 0x57, 0x3c, 0xa8, 0xe0, 0x60, 0x46, 0xf8, 0xd5, 0x00, 0xd1, 0xe6, 0x0b, 0x79, + 0xc5, 0x47, 0x63, 0xfd, 0x5e, 0x24, 0x40, 0x42, 0xe7, 0xf7, 0x7f, 0xef, 0xd1, 0x69, 0x12, + 0x29, 0xf6, 0xa6, 0x21, 0xdb, 0x13, 0x2b, 0x88, 0x11, 0xd0, 0xf3, 0x2e, 0x98, 0x71, 0xbf, + 0x85, 0xff, 0xd8, 0x1a, 0x08, 0x8f, 0x90, 0x22, 0x80, 0x08, 0x1b, 0x53, 0xb3, 0x02, 0x6f, + 0xdb, 0x66, 0x32, 0x9c, 0xaf, 0xcb, 0x3c, 0x9e, 0xe0, 0xb1, 0xc1, 0x21, 0x3d, 0x19, 0x0e, + 0x86, 0xd9, 0x90, 0xf4, 0xb1, 0xa4, 0xb7, 0xa9, 0xc3, 0x60, 0xb8, 0x00, 0x50, 0xfc, 0x2a, + 0xf6, 0xf1, 0xb7, 0x3d, 0x30, 0x84, 0xd3, 0x17, 0x3b, 0x86, 0x89, 0xea, 0xb3, 0x65, 0xe1, + 0x81, 0xe2, 0xc1, 0xe4, 0x55, 0x46, 0x14, 0xb4, 0xac, 0x65, 0x8a, 0x46, 0x84, 0xcc, 0x9e, + 0x97, 0x6e, 0xee, 0x41, 0x9a, 0xff, 0x25, 0x36, 0x83, 0x2d, 0x5f, 0x2e, 0xb6, 0xc6, 0x3f, + 0xf7, 0xa9, 0xfe, 0x98, 0x7d, 0x51, 0x65, 0x79, 0x8e, 0xd5, 0x73, 0x1e, 0xd3, 0x87, 0x7a, + 0xf8, 0xe5, 0xb8, 0x8f, 0x10, 0xb8, 0xde, 0xce, 0x15, 0x92, 0xb8, 0xc5, 0xe7, 0xcb, 0x67, + 0x65, 0xe0, 0x36, 0x86, 0x51, 0xa1, 0x07, 0xa6, 0x27, 0x35, 0x39, 0xac, 0x15, 0x5f, 0x40, + 0x30, 0xd9, 0xcd, 0x84, 0x22, 0x70, 0xbb, 0x28, 0x4f, 0x76, 0x18, 0x4e, 0x66, 0x4e, 0x8e, + 0x7d, 0x89, 0x71, 0x0b, 0x66, 0x76, 0xce, 0x2c, 0xaf, 0xef, 0x24, 0x51, 0xb1, 0x1c, 0x09, + 0x2d, 0xd4, 0x9a, 0x16, 0x03, 0xf1, 0xf8, 0xee, 0xb7, 0x01, 0x0f, 0xf7, 0x2e, 0xdd, 0x2f, + 0x91, 0x70, 0x06, 0x34, 0xd1, 0xd2, 0x4e, 0xb5, 0xad, 0x70, 0xef, 0x68, 0x62, 0xcd, 0x4e, + 0x12, 0x23, 0x04, 0xea, 0xf8, 0x4e, 0x6f, 0x3e, 0x14, 0xc3, 0xd6, 0x20, 0x6b, 0xf6, 0x20, + 0x75, 0x44, 0xa4, 0x8c, 0xb4, 0xf2, 0xf4, 0xa6, 0x7b, 0xbc, 0x73, 0x1b, 0xe3, 0xba, 0xbd, + 0xd1, 0x87, 0x23, 0x15, 0xc2, 0x39, 0xc9, 0xce, 0xb2, 0x34, 0xaa, 0x40, 0x17, 0x55, 0x49, + 0xea, 0x1e, 0x02, 0x9b, 0xee, 0x42, 0xce, 0xea, 0xe3, 0xfc, 0x3c, 0x9e, 0x0c, 0x88, 0x96, + 0xee, 0xa9, 0x3b, 0x82, 0x91, 0x02, 0xb6, 0xf0, 0x6c, 0x8c, 0x3a, 0x91, 0xe9, 0x95, 0xae, + 0xde, 0x46, 0x73, 0x1f, 0xc2, 0x60, 0x86, 0x2a, 0x6e, 0x47, 0xee, 0xb0, 0xbc, 0x9f, 0x37, + 0x7b, 0x48, 0x93, 0xdd, 0x54, 0x2d, 0x90, 0x28, 0x35, 0xaf, 0xa6, 0xf8, 0x61, 0x8e, 0xfc, + 0xa6, 0xa1, 0x91, 0x24, 0x67, 0x17, 0xf8, 0xaf, 0xcd, 0x80, 0xbf, 0x92, 0xc6, 0xd1, 0xd3, + 0x5c, 0x22, 0xc3, 0x7e, 0x5b, 0xb2, 0x69, 0x68, 0xf1, 0x6b, 0x05, 0x7b, 0x28, 0x5d, 0xf3, + 0x74, 0x43, 0x3a, 0x25, 0x17, 0x81, 0xf7, 0x06, 0x9e, 0x9c, 0xa0, 0x69, 0xfe, 0xe5, 0x26, + 0x07, 0xf1, 0x1c, 0x23, 0x8e, 0xa0, 0xe3, 0xc4, 0xd7, 0x0e, 0x2f, 0x11, 0x15, 0xec, 0x64, + 0x21, 0x60, 0x30, 0xab, 0x1a, 0x0e, 0x35, 0x68, 0x72, 0x11, 0xd2, 0x76, 0x76, 0xd6, 0x79, + 0xa5, 0x10, 0xa4, 0x30, 0x06, 0x9b, 0xe1, 0xb0, 0xb7, 0xa1, 0xb8, 0x77, 0xca, 0xae, 0xd3, + 0x72, 0x30, 0xac, 0x7a, 0x83, 0x3c, 0xf7, 0xaa, 0x5e, 0xcb, 0xfa, 0x06, 0x3f, 0x38, 0xdc, + 0x3c, 0xac, 0x5c, 0x66, 0x3b, 0x67, 0xb8, 0x67, 0x39, 0x15, 0x17, 0x13, 0xda, 0x11, 0x70, + 0x6a, 0xf9, 0x8b, 0xdf, 0x0e, 0xb0, 0xee, 0x1f, 0xd8, 0xbc, 0x94, 0xdd, 0x31, 0x03, 0x3a, + 0x10, 0x84, 0xd6, 0xbd, 0x52, 0x0d, 0x93, 0x99, 0xe4, 0xda, 0xc4, 0x6f, 0xff, 0x62, 0xbc, + 0x81, 0x9a, 0xc5, 0xe0, 0xbd, 0x85, 0x6c, 0x19, 0x4e, 0x05, 0xc6, 0x70, 0x8a, 0x65, 0x71, + 0x2f, 0x6b, 0x4b, 0xba, 0x42, 0x44, 0x97, 0xde, 0xf0, 0xf6, 0xb1, 0x08, 0xfd, 0x8f, 0x23, + 0xcc, 0x20, 0xdc, 0x14, 0x09, 0x84, 0x2f, 0xac, 0x7c, 0xc8, 0x08, 0x34, 0xa3, 0x1d, 0xb1, + 0xbe, 0x8d, 0x01, 0xd5, 0xf9, 0x20, 0x57, 0x9e, 0xef, 0xe2, 0x15, 0x5c, 0xe9, 0x73, 0x83, + 0x1f, 0x72, 0x3d, 0x5a, 0x41, 0x51, 0xa7, 0xd2, 0x50, 0x8c, 0xcb, 0x09, 0xa2, 0xd2, 0x6d, + 0x32, 0x82, 0xe8, 0xd6, 0x30, 0x1e, 0x46, 0xa5, 0xe1, 0xef, 0x1b, 0x5e, 0x22, 0x43, 0xd8, + 0xf8, 0xa8, 0x7c, 0x78, 0x7d, 0x92, 0xc4, 0x89, 0x75, 0xe6, 0x15, 0x15, 0x3d, 0x13, 0x18, + 0xa8, 0xfb, 0x4e, 0xbb, 0x47, 0xd8, 0x09, 0x08, 0xe6, 0xf6, 0x36, 0x22, 0xa6, 0x10, 0x09, + 0x59, 0x3b, 0x57, 0x40, 0x24, 0x92, 0x11, 0x19, 0x76, 0x5e, 0x9c, 0x7d, 0x19, 0xcd, 0xb7, + 0x30, 0xbe, 0x5c, 0x53, 0x33, 0x64, 0xe1, 0x29, 0x21, 0xb1, 0x32, 0x67, 0xc2, 0xa6, 0x47, + 0x83, 0xed, 0x78, 0x82, 0x74, 0x83, 0x0e, 0x2f, 0x80, 0x63, 0x30, 0xd1, 0x7d, 0xf3, 0xe0, + 0x93, 0x5b, 0x9c, 0x5c, 0xba, 0x64, 0xc2, 0x81, 0x57, 0x83, 0x31, 0xfa, 0x0d, 0x6c, 0x9e, + 0xff, 0x7b, 0x1b, 0x10, 0xaf, 0xd8, 0xbb, 0x4d, 0xbc, 0xa9, 0xf5, 0xa8, 0xdc, 0x3a, 0x35, + 0xe6, 0x8b, 0x05, 0x45, 0xd3, 0x08, 0x92, 0x34, 0xcb, 0xd6, 0x5b, 0x37, 0x2c, 0x29, 0xd5, + 0xa0, 0x52, 0x65, 0x77, 0xa2, 0x40, 0x2f, 0xcd, 0xc7, 0x33, 0xd9, 0x04, 0x98, 0x6e, 0x32, + 0x7a, 0x0d, 0x3f, 0xd6, 0xe2, 0x9e, 0xa6, 0x2f, 0x18, 0x3b, 0xbf, 0xa7, 0xdb, 0x74, 0x37, + 0x93, 0xe8, 0xcf, 0x19, 0x12, 0x37, 0x0c, 0x7d, 0xa5, 0xae, 0xf6, 0xf9, 0x1c, 0x00, 0x73, + 0x24, 0x28, 0x98, 0x80, 0x91, 0x1d, 0xc7, 0x9e, 0xef, 0x63, 0x11, 0x18, 0x9e, 0xda, 0x70, + 0x2a, 0x38, 0xde, 0xec, 0x8a, 0xf5, 0x8b, 0xf3, 0xd6, 0x9a, 0x8f, 0xdd, 0xeb, 0x48, 0x26, + 0xd7, 0x66, 0x69, 0x0d, 0x0b, 0xbc, 0x51, 0xb1, 0xe8, 0x7e, 0x62, 0x0f, 0xe8, 0x53, 0x3a, + 0x25, 0xb9, 0xf9, 0x3f, 0x8d, 0x40, 0xb6, 0x4b, 0x15, 0xcd, 0x4f, 0x0f, 0x76, 0x1d, 0x36, + 0xeb, 0xb9, 0x74, 0xb2, 0xcc, 0x51, 0xbe, 0x0c, 0x98, 0x38, 0x11, 0x31, 0xdc, 0x05, 0xcf, + 0x33, 0x1e, 0x3a, 0x63, 0x64, 0x05, 0x17, 0x46, 0x38, 0xf1, 0x10, 0x1c, 0x62, 0xfc, 0xca, + 0x19, 0x31, 0x03, 0x81, 0x46, 0x86, 0x75, 0x8a, 0xda, 0xe2, 0x86, 0x62, 0xc0, 0xc7, 0xb8, + 0x0a, 0xb5, 0xbd, 0x2c, 0x58, 0xab, 0xae, 0x34, 0xb2, 0xf3, 0x63, 0x3b, 0xc7, 0x9c, 0xc8, + 0x8c, 0x19, 0x5e, 0x72, 0x81, 0x92, 0x9f, 0x5e, 0xcf, 0x9e, 0xc4, 0xf2, 0x33, 0x0a, 0x14, + 0xd9, 0x92, 0xd6, 0xe2, 0xbc, 0x84, 0x9b, 0x15, 0x8b, 0x34, 0x04, 0xa0, 0x2c, 0x53, 0xd1, + 0x85, 0x84, 0x86, 0x0d, 0xdb, 0xcf, 0xba, 0xed, 0xc9, 0xb4, 0x32, 0x17, 0x61, 0xb5, 0x6b, + 0xef, 0xa5, 0x7b, 0x59, 0xb2, 0xb5, 0x66, 0xa1, 0x25, 0xaa, 0x26, 0x3a, 0x03, 0x7c, 0x6b, + 0x0c, 0xac, 0x72, 0xe1, 0xf6, 0x86, 0xae, 0xc5, 0x27, 0xe7, 0x30, 0x6c, 0x4a, 0x1b, 0x30, + 0xe5, 0xc5, 0xbf, 0xff, 0xa4, 0x0c, 0x2f, 0xc5, 0xe8, 0x47, 0x5a, 0x07, 0x33, 0xad, 0xd8, + 0x01, 0x29, 0x20, 0xbe, 0x17, 0x59, 0xcf, 0x39, 0x26, 0xa8, 0xf9, 0x8c, 0x16, 0x6c, 0x7b, + 0x39, 0x11, 0x84, 0xf9, 0x92, 0xf7, 0x48, 0x38, 0x58, 0xbf, 0x65, 0x00, 0xbf, 0xe9, 0xb5, + 0x2a, 0x1e, 0x2d, 0xb4, 0x38, 0x12, 0x29, 0x96, 0xf7, 0x3b, 0x25, 0x14, 0xff, 0xc0, 0x17, + 0x55, 0x67, 0xec, 0xe1, 0xba, 0xda, 0xe3, 0x9b, 0x6a, 0x9c, 0x71, 0x9e, 0x32, 0xa1, 0x48, + 0x98, 0xc8, 0xab, 0xf5, 0xb9, 0x25, 0x83, 0xd1, 0x36, 0x95, 0x48, 0x06, 0x77, 0x67, 0x3f, + 0x20, 0x47, 0x5f, 0x27, 0x19, 0x19, 0xd6, 0x09, 0x15, 0x42, 0x3d, 0x69, 0x6e, 0x86, 0x8f, + 0xdd, 0xfa, 0x60, 0xe8, 0x89, 0xa7, 0x58, 0x6d, 0x51, 0x0c, 0x62, 0xc6, 0x3a, 0x16, 0xb1, + 0x99, 0x8c, 0xf6, 0x59, 0x51, 0x39, 0x9d, 0x78, 0x92, 0xd1, 0x37, 0xac, 0x91, 0x68, 0xe0, + 0x9b, 0xc4, 0x3b, 0x59, 0x89, 0xc7, 0x9a, 0x44, 0x2a, 0x09, 0x1c, 0x8f, 0xff, 0x19, 0x1c, + 0x50, 0x66, 0xe2, 0x89, 0xe9, 0x8f, 0x85, 0x5c, 0xcf, 0xfd, 0xf9, 0x96, 0x15, 0x7e, 0x9c, + 0xfa, 0x91, 0x7c, 0x24, 0x4d, 0xa4, 0xba, 0x3e, 0x0c, 0xaf, 0xd2, 0x80, 0x46, 0xc9, 0xa9, + 0xae, 0xa3, 0xdf, 0x72, 0xae, 0x68, 0xb0, 0xc2, 0x75, 0xb8, 0x78, 0xaa, 0xe4, 0x6a, 0x91, + 0x39, 0xb2, 0x13, 0x9c, 0x61, 0x93, 0xf9, 0xb7, 0x65, 0xf9, 0x01, 0xfc, 0x5b, 0x3e, 0x41, + 0xd5, 0x98, 0x6a, 0xec, 0x0c, 0x42, 0x7d, 0x75, 0x42, 0xd5, 0x39, 0x9e, 0xd3, 0xa5, 0x8f, + 0xf5, 0xc4, 0x0d, 0xa1, 0x64, 0x8d, 0x13, 0x79, 0xa8, 0x90, 0xe4, 0xf8, 0x2d, 0x58, 0xf2, + 0x9b, 0xa2, 0x25, 0xa9, 0x4a, 0x62, 0xde, 0xfc, 0x33, 0x3f, 0x12, 0x33, 0x5d, 0xbe, 0x55, + 0x9b, 0x70, 0xf4, 0xc9, 0x59, 0x23, 0xa1, 0x2d, 0xce, 0x67, 0x09, 0x67, 0xa2, 0x1e, 0xaf, + 0xf1, 0x04, 0x38, 0x35, 0x6d, 0x92, 0x76, 0x30, 0x5a, 0x9d, 0x0a, 0x33, 0xf5, 0xb1, 0x52, + 0xe8, 0x8d, 0x7e, 0x98, 0xf2, 0x04, 0x02, 0xcf, 0x32, 0x7b, 0x18, 0x1a, 0x14, 0x79, 0x01, + 0x9b, 0xac, 0x5e, 0xa4, 0x37, 0x81, 0xac, 0x07, 0x26, 0xff, 0x80, 0x27, 0x18, 0x12, 0x15, + 0xb3, 0x69, 0x95, 0xfc, 0xc3, 0x58, 0x17, 0x79, 0x0d, 0x6b, 0x08, 0x82, 0x80, 0x1f, 0x18, + 0xdf, 0xe9, 0x53, 0x90, 0xc4, 0x40, 0x46, 0x59, 0x83, 0x43, 0x5d, 0x9e, 0xf3, 0x10, 0x4e, + 0x49, 0x16, 0xce, 0xc4, 0xf0, 0x34, 0x68, 0x99, 0x04, 0x8a, 0x2e, 0x6f, 0xc1, 0xa3, 0x89, + 0xc2, 0xeb, 0xb9, 0xef, 0xa2, 0x0b, 0xb1, 0x45, 0x87, 0xf1, 0x08, 0xd2, 0x32, 0xd4, 0xcc, + 0xcb, 0x83, 0x3c, 0x3c, 0xc4, 0x6f, 0x44, 0xb7, 0x35, 0xcf, 0xf0, 0x7c, 0x1e, 0x6e, 0x4d, + 0xbe, 0x4b, 0x1c, 0x4d, 0xb9, 0x26, 0x36, 0x8d, 0xe1, 0x64, 0x3c, 0xb0, 0xee, 0x20, 0x94, + 0xe2, 0xbb, 0x9e, 0x77, 0x4c, 0x34, 0xe6, 0x68, 0x83, 0x2d, 0x59, 0xac, 0xca, 0x65, 0xc3, + 0x3c, 0x92, 0xfb, 0x85, 0x0b, 0x5b, 0xe9, 0x66, 0x50, 0xac, 0xa5, 0xc0, 0x70, 0xd3, 0x12, + 0xed, 0xd0, 0x15, 0x83, 0x10, 0xc6, 0xf5, 0x75, 0xe6, 0x46, 0xf5, 0x29, 0xd1, 0x95, 0xf7, + 0x22, 0xd3, 0xb5, 0x66, 0x58, 0x5b, 0x21, 0xe9, 0x99, 0x50, 0x70, 0x21, 0x56, 0x14, 0x4c, + 0x0a, 0x59, 0xce, 0xbc, 0xd4, 0x75, 0x86, 0x98, 0x9c, 0x7b, 0x96, 0xb9, 0x24, 0x19, 0x6f, + 0x23, 0x6c, 0xa2, 0x3b, 0xf9, 0x5a, 0xa8, 0xfd, 0x17, 0x00, 0x46, 0x28, 0x8d, 0x3a, 0xc5, + 0xe2, 0xa0, 0x16, 0xd0, 0xb8, 0xc4, 0xdf, 0xe2, 0x26, 0x6f, 0x8a, 0x14, 0x4c, 0x16, 0x46, + 0xd2, 0x1f, 0x8f, 0x2e, 0xd5, 0x82, 0x09, 0x10, 0x3e, 0xaf, 0x13, 0xa3, 0x3d, 0xa2, 0xda, + 0xac, 0x85, 0x52, 0x37, 0x66, 0xd8, 0x1d, 0x04, 0x64, 0x7a, 0x79, 0x46, 0x07, 0xb6, 0x10, + 0x2a, 0xe6, 0x23, 0xb4, 0xa8, 0x14, 0x2e, 0xf3, 0xc3, 0x18, 0x95, 0x9c, 0xf2, 0xb8, 0xda, + 0x65, 0x66, 0x16, 0x0a, 0xcf, 0xf4, 0x6f, 0x5f, 0x6f, 0xdb, 0x4e, 0x13, 0xdf, 0x14, 0x8f, + 0x5e, 0x20, 0x62, 0xc1, 0xb7, 0x61, 0x1a, 0xe1, 0xba, 0x5e, 0x77, 0x55, 0xc4, 0x9b, 0xab, + 0x6d, 0x7c, 0x51, 0x1a, 0x37, 0x15, 0x2c, 0xf0, 0x9b, 0xee, 0xc0, 0x09, 0x2c, 0x7b, 0xb0, + 0x26, 0xec, 0x39, 0xab, 0x79, 0x83, 0x92, 0xd4, 0xb9, 0x77, 0xb1, 0xab, 0x0e, 0x1d, 0x61, + 0x3a, 0x0e, 0x2c, 0xcf, 0x2e, 0xca, 0x1d, 0x73, 0x9c, 0xf1, 0x86, 0x23, 0x96, 0xa8, 0xf3, + 0xb2, 0xb3, 0x3c, 0x14, 0x48, 0xba, 0xd4, 0xb3, 0xb3, 0xe3, 0xfd, 0x57, 0x43, 0xc1, 0xae, + 0xd1, 0x01, 0xf2, 0x13, 0xc9, 0x73, 0x5a, 0x62, 0x2d, 0x1f, 0xee, 0x43, 0x49, 0x99, 0x5c, + 0xbc, 0x33, 0x2f, 0x8d, 0xac, 0xc8, 0x6e, 0xf9, 0x2a, 0xba, 0xc2, 0xcd, 0xf7, 0x79, 0x3e, + 0xae, 0x4d, 0xec, 0x69, 0xc6, 0x85, 0x69, 0x55, 0x26, 0x0a, 0x8a, 0xd3, 0x4b, 0xd8, 0xde, + 0xef, 0x0b, 0x25, 0xed, 0xad, 0xa3, 0xee, 0x95, 0x85, 0x9c, 0xb5, 0x20, 0x24, 0x0b, 0x19, + 0xfa, 0x23, 0xab, 0x57, 0x89, 0x0c, 0x7f, 0x7f, 0xcc, 0x53, 0xde, 0x65, 0x11, 0xc6, 0xbf, + 0xae, 0x98, 0x89, 0xbd, 0x1b, 0x2b, 0x25, 0xc5, 0x1a, 0x09, 0x3f, 0x82, 0xb2, 0xb7, 0xe1, + 0x03, 0xc5, 0x67, 0x08, 0xf2, 0x64, 0xed, 0x4f, 0x6a, 0x57, 0x7f, 0x30, 0x02, 0xb6, 0x39, + 0x92, 0x15, 0x87, 0x81, 0xd3, 0x94, 0xc8, 0x22, 0x7e, 0xab, 0xfb, 0x03, 0x9c, 0xd1, 0xad, + 0xb2, 0x99, 0x3e, 0xc9, 0xf6, 0xd6, 0xc5, 0xcd, 0x16, 0x29, 0x76, 0xb1, 0xba, 0x16, 0x94, + 0x3a, 0x03, 0x06, 0xff, 0x6a, 0x2c, 0xf6, 0x7f, 0xc2, 0x73, 0x89, 0xd6, 0xfa, 0x88, 0xe1, + 0x09, 0x20, 0x93, 0x2f, 0x36, 0xa4, 0xa5, 0xaa, 0x30, 0xb3, 0x22, 0xd0, 0x5c, 0xeb, 0x77, + 0xe4, 0x71, 0xec, 0x23, 0xf2, 0x98, 0x53, 0x74, 0x32, 0xb6, 0x6e, 0x6b, 0x81, 0xbc, 0x22, + 0x71, 0x82, 0x0e, 0x4f, 0x3c, 0xf4, 0x74, 0x1b, 0xfc, 0xc9, 0x42, 0xf1, 0xff, 0xf1, 0xe4, + 0x22, 0x8e, 0xc6, 0x86, 0x1d, 0x16, 0xc0, 0xe6, 0xed, 0x6e, 0x06, 0xc5, 0xe0, 0xce, 0x0c, + 0x0b, 0xb4, 0x1d, 0x0a, 0x2c, 0x04, 0x6b, 0x0e, 0x93, 0xe1, 0x97, 0xcd, 0x28, 0xd6, 0x62, + 0x0c, 0xe5, 0xa8, 0xe0, 0x51, 0x16, 0xc7, 0x9e, 0xad, 0x7f, 0x9d, 0x57, 0xe3, 0x10, 0x59, + 0xad, 0xa9, 0x08, 0xbe, 0x81, 0x4c, 0xb0, 0xcc, 0x31, 0x4d, 0xc1, 0x47, 0xb5, 0x27, 0x8f, + 0xf7, 0xb0, 0x2e, 0x3b, 0xa2, 0xa6, 0xf8, 0xb1, 0xf0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0x2d, 0x83, 0x86, 0x5e, 0xc6, 0xd0, 0xe1, 0x80, 0x21, 0x04, 0x7a, + 0x13, 0xef, 0xf3, 0x31, 0x2e, 0xf1, 0x98, 0xd0, 0x6f, 0x7d, 0xc7, 0x22, 0x94, 0x94, 0xa5, + 0xb8, 0x71, 0xbc, 0xbd, 0x0a, 0x02, 0x50, 0xce, 0x39, 0xb1, 0x76, 0xb7, 0x32, 0x72, 0x8c, + 0xb8, 0x72, 0x8a, 0x59, 0xf1, 0x2f, 0x8d, 0xd4, 0xc8, 0xef, 0x87, 0x4a, 0xe5, 0x8d, 0x00, + 0x9e, 0x62, 0xc6, 0x5f, 0x67, 0x87, 0x36, 0x01, 0xce, 0x2c, 0x6d, 0x87, 0xd0, 0x18, 0x4c, + 0x17, 0x99, 0xa2, 0x54, 0xed, 0x03, 0x04, 0x7c, 0xf5, 0x7a, 0x3b, 0xfd, 0x49, 0xb8, 0xa4, + 0x43, 0x8d, 0x49, 0x6d, 0x74, 0x1c, 0xf5, 0xac, 0xa6, 0xbd, 0x01, 0xbc, 0x1e, 0x9d, 0x71, + 0x34, 0xd3, 0xc0, 0x5c, 0x62, 0xb2, 0x51, 0xcc, 0xb3, 0xab, 0x84, 0x73, 0xcb, 0x5d, 0xaf, + 0xc7, 0xb1, 0x9f, 0x3b, 0x67, 0x50, 0xe4, 0x1b, 0xf2, 0x4c, 0x6a, 0xd8, 0x82, 0x80, 0x2a, + 0x60, 0xd8, 0x8a, 0x2f, 0xb0, 0xfd, 0x64, 0x20, 0x95, 0xd0, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5f, 0xd2, 0x81, 0x52, 0x14, 0x44, 0x95, 0x7b, 0xab, 0x12, 0xf4, 0x71, 0x04, + 0xf5, 0xff, 0x29, 0x56, 0x20, 0xfd, 0x17, 0xdb, 0xdb, 0x79, 0x9f, 0x81, 0x3f, 0x97, 0x3e, + 0x1e, 0xae, 0xd4, 0x16, 0xb1, 0xc5, 0xec, 0xbc, 0x94, 0x95, 0xe9, 0x05, 0xa2, 0xf1, 0x67, + 0xdb, 0x06, 0x61, 0x50, 0x7a, 0x37, 0xb8, 0xd8, 0x3e, 0x6e, 0x98, 0xd4, 0x94, 0xd1, 0x00, + 0x5d, 0x6b, 0xcd, 0xb7, 0x4e, 0x33, 0x32, 0xaa, 0xf2, 0x3d, 0xfc, 0xfd, 0x38, 0x70, 0xfa, + 0xae, 0x91, 0x99, 0x6d, 0x33, 0x13, 0x5a, 0x89, 0x23, 0x19, 0xa3, 0xbf, 0xb0, 0x8d, 0x3f, + 0xbf, 0x19, 0xbf, 0x93, 0x8e, 0x68, 0x7c, 0xcf, 0x00, 0xec, 0xd3, 0x72, 0x28, 0xb0, 0x0c, + 0x89, 0x73, 0xda, 0x40, 0x03, 0x37, 0x30, 0x05, 0x87, 0xf4, 0x89, 0x97, 0x46, 0x59, 0x59, + 0xef, 0xe0, 0x9a, 0xc5, 0xe0, 0x12, 0xe1, 0x4f, 0x51, 0xeb, 0x24, 0x25, 0xb8, 0xb5, 0x3f, + 0xc4, 0xc9, 0xcf, 0xc3, 0x62, 0x7f, 0xde, 0x7c, 0x57, 0x41, 0x2b, 0x7f, 0x98, 0x58, 0x53, + 0xb0, 0xdb, 0x8f, 0x29, 0x69, 0xb1, 0x30, 0x16, 0xd9, 0x92, 0x70, 0x0e, 0xb6, 0xaf, 0x99, + 0x8d, 0x69, 0x37, 0x75, 0x59, 0x95, 0xaf, 0xd6, 0xc7, 0x69, 0x17, 0x41, 0x89, 0xb5, 0xeb, + 0x6b, 0x84, 0xfb, 0x35, 0x87, 0x1b, 0x58, 0x44, 0xb1, 0xf3, 0x20, 0xa6, 0xa1, 0x6b, 0xd8, ], ]; diff --git a/zebra-test/src/vectors/orchard_shielded_data_vanilla.rs b/zebra-test/src/vectors/orchard_shielded_data_vanilla.rs index 938a70882c9..ed9a98ca0b7 100644 --- a/zebra-test/src/vectors/orchard_shielded_data_vanilla.rs +++ b/zebra-test/src/vectors/orchard_shielded_data_vanilla.rs @@ -14,7 +14,7 @@ use lazy_static::lazy_static; lazy_static! { pub static ref ORCHARD_SHIELDED_DATA_VANILLA: Vec<&'static [u8]> = [ ORCHARD_SHIELDED_DATA_VANILLA_1_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_VANILLA_3_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_VANILLA_2_BYTES.as_ref(), ORCHARD_SHIELDED_DATA_VANILLA_3_BYTES.as_ref(), ORCHARD_SHIELDED_DATA_VANILLA_4_BYTES.as_ref(), ] diff --git a/zebra-test/src/vectors/orchard_shielded_data_zsa.rs b/zebra-test/src/vectors/orchard_shielded_data_zsa.rs index 2d276e2f23a..58713e436c3 100644 --- a/zebra-test/src/vectors/orchard_shielded_data_zsa.rs +++ b/zebra-test/src/vectors/orchard_shielded_data_zsa.rs @@ -14,7 +14,7 @@ use lazy_static::lazy_static; lazy_static! { pub static ref ORCHARD_SHIELDED_DATA_ZSA: Vec<&'static [u8]> = [ ORCHARD_SHIELDED_DATA_ZSA_1_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_ZSA_3_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_ZSA_2_BYTES.as_ref(), ORCHARD_SHIELDED_DATA_ZSA_3_BYTES.as_ref(), ORCHARD_SHIELDED_DATA_ZSA_4_BYTES.as_ref(), ] diff --git a/zebra-test/src/vectors/zsa.rs b/zebra-test/src/vectors/zsa.rs index e6d2546a97a..7018a8a1cbe 100644 --- a/zebra-test/src/vectors/zsa.rs +++ b/zebra-test/src/vectors/zsa.rs @@ -6,10 +6,12 @@ use hex::FromHex; use lazy_static::lazy_static; lazy_static! { - pub static ref ZSA_WORKFLOW_BLOCKS: [Vec; 3] = [ - "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f0277a3c364bbcfffcebbfd7dbfafce1b511f5383649e84bba9c598f7657cd73f840000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000100000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102a2ff8960630dce65b22a0f76907140d17fd2c4c6046c71bcf6a733ad7a5fcf273813c86092c0e3182ddc16bfd9c2bf7285afa4353ffd559956f96f8d5b4f4f2313e7bd689d1c16203fef2205ae6ecf774cf27a2ef1e8f2b35b1eeab4dc6b5d0826527f08127c5a32a88e3b26f5b6ab99466831a4f8475b42463589c82adb1b2e62dcd87c5082075e90adda78559a4b24f5e3bd01af74a08402aae8e8741ac8a33ea8291b2fc8cca7f3da7abfe174ebb2f4739c6b002fa92ce21b4ff82364df00b80914cf1fc14caf3e1167c42549599f2beb086f13784c6f4cd1b669e5b4d5d6297d4e21a4522364fb5d40af01c2cea0665e01a6d688737880708f5171d20738d63765547f466c8450490353c3be38ead6a969c060106c206e9651593abc2a31812c7ebc539711f5c715829a007928fea28a5a7fec3535b1fd432ff10fcb4234f26a31b40d986f1acd299d837aaeb8679d5aabe55d48db849dde1228edbf58f0c112b7b8d88b5b6ea7d5aff19bd5052e61ae769f08274a823c9ceafaeb5e0c25df1e1d85cd09ac98e5dcfe93f030c14bca992228a080e2972c2d9a62f8740b276d961b1dd35760c15a875d202a683f80363e10422bee4205fd5ff844ea7dc5f85d7ff65fffdca20f561477c63670130c747c472b7e78948607b46813a3ff23713c1ef5242bd2ffe7da348e7dcd50ead0efe615b83c504fcba6a269f845860086ea0a4fbdc6fc3bca86108130e23e0718cbe243fe03149be581959985b625988bc69a05dea38799c808b73d31f56dda38908e5757daf3102bf9c16add05b0573aaa12deff608f70891471a8c7de008226e0d283be8f6e689d606572a6b9a0e16b10d956cd3c79f6051a2e3db3188ea4b7bfe9475a949d9e2fb9ac9082e96476f46c8d5924afcaccf68029d03b606dd56124656da348eae76908b5850a527b255fe76146fb511aac1d009621de6da7ca342c026122a3a1d4a43b126e7973a74baf788b5add8a5dd37db6b9f2838682d1a03b536c418519ea002d64645245724c4d7bf845ac47ba0f101b9cc7c9ae706114fb82f16523c067adafa04c98eb7be87361f42ae60b519d05d42d8a437be36fdaa7e86b2d9b58442958b3c4787dc81eca15ee846bcb5132b9d5a0afdd1a08ef417b7e26fb6a9995e43e4b8cb2b1f9c8a9f283f6fa03745ac675886b14b8bd5be66bab0f8b30d52edcaf76f8285bf25583048ba10e5f80b9f541de0ff62905e9d2dc195b3a5b039bb263cf21b8f244dd0f96a1e580e24fa31e46db5f1d5fb455ca57b50b1dcebe0504ddf3bdaf06bfe117a5b51678cd762dbf709f752f6ec9873c04ab1ca6e3f0acca73fb4baf1fa2b379bbccdcfa13d983b05dd541a80b3795a489c83a1f7dd7dcb5fa31bf2b3f554dd490dac8b2f95451ba7ba7c109f024817e2b64732fd51af3a041159d958944e75d268adf9bb638a4a51b3dbebb5b5b20bce21cf07250d068e6aca397d95de7bd4ad287bc3798c8aabd57802d2d55ef15e54621ff0cb1e83660281e2c7a6c1c4e2971fd4d3409e40b58bef5ddf96e2f11e70ae893f2539ab2a3c047102e08551660c886ba44cfe98a39d11cfd7edbfbaae0a1a0fc692d5e45d5c0e0837212ab058e1c010edcd5d6a5ca4981ba80db990af2e41eafaa209ee3aadfa0ba3047f129461785577a10c81db945521fa7a6386b6c07f6a319a7e5b74dbbf29cd0e59f9be5aedb764d7593b4c44ba74ba25aba1445ffbe1cd636128917ead385dfaf084991c2fa416f44cf8d6f9bb29155ffddfcf5119d0db3dbe3cf134d478768c607d6f118df2aead2c95557a3aef7fbb4336108ac45e18b8c871ee65b1d75ff5aba13a6a6b366ebc98e8d39fd3f98506f7c84990c28c74789bd80b0070fcc649cca179ebe954cb5b44b0d3f6249c4751877f0a4031016c915c834e7df81756e10a441833fe0b75087bf63e1b76c1ea3bcde997025d9189f7d1c50ac6323fb8d57fabfecb7076950dda510f0acaeacbf14bdb335489c0f56cc67d51274d21734bd1a1bedcf7e98a0881cb1ebd38ad67c61900143731eb7e1ca81eba25d7a67d4abeab48ae063e7d84f2b1ab12ad3938cc43d194d8221b78efd31c972512dd92c704bcf749337208d3ac33af186fc87798242cafa31929b6a50b2c8b6be32baee7beb2ffca22212fced56595855ed701dda8c8e14c2cc555bd55fd5a0fbce67b24f8bdd0a11141ace9773b49de5e24336f9990173c57feafcbb29b3a7707aa857310128a801058bfff8e71e5dbd0245d3640f9d9265b88b41d3f8f22f300c030b98cd73bc96a10e2fdaa9a27c2a42b95c90fcdee72e07ac44865acb7c2db42d1f38fb05055a29cb51c91bcde85393c14fed882b94b6ef496a04e318f1c1ffbbde5c5d7e8b55ea0337bd01a69907ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82ffde01c742f816fd3d4577b25b0596a11a98fa80ed8a5d6514569a205978f6d1e62530b22ace45576c2d3c4cb48a14557dbd0db404660ad168d22be245816224bb57b3a325c24b06c7076f8a4761fbac194e96a5dcec14c19f432bc0286bca0364981a48a72cbffd7184306ba0103ad72a027b018138eaa811f88c8494f4a9a5e3cc3a41b073d97daa4db8ed3b3db9343a48cfaec7354cc4ef39b7c9cfd273415c05a1fbdd19fe1a058a3bb6b671fece03026efc5bc71e91d8f938b6ca46c8f6c9580a1b02c9971add1995d43ba6f09e7f20b0f54355cd0c39be7d233ea9c4296a8ca0c1a12457db2d2d1164c17e73fc9b3ef735c5fbe4fd6d36b9994b545af622552844c55bcaf70af05920a65323206da4b8a2656035bb886c267903baf9cf53409a71a8aa6c48432c0213bedef247db020c08fa6267ba4836af30f1053133a5676aff95aa67de32ff028755bac570d1aa875acd98f0ed735fa24efa3526f18374396d4cb46650c66119db6f8a3eebd6ca20d16aa1933d0fd5b849e51d9ea0edc5635c412df8d5183ec5824041dcc7cc5427593c997a33a6e2efd6fb71101d2affb841e7872e42bcc2cdcae31d991d20cf983bd88953944850f92f9a329ae4f43569e71c20d71ebaca83780f3244ca8285e734f126fabdcf8ed4ac1063fca3d6bae27cd387759e515b7299159c0513490ca6b5f2926f81aa5e4b7d016a50501c4060cc8db9681a302ca6cf848a4b4b855009e13265e422c45a3027c756b1a4fc979b4bb2802cf032a4e025109c4d25023612589ac7bb54a1e90d38dd60f347d7eb29390b4223cb912a80727b688291e8a17090dcd04dc4e9af03ea412b06d4239f300518650233290df9e070116ae1233d595fcac06cc8869e223a5655ca8b17c1cb264b4b2997498a0fd20f2862708d1bf1f96b8714236ac8ce9bb558e22460bbc1eab124d73547a5055899539f29ff25f66a72cdc8528ee77de6793fcee62ef211857f494372c55371147595407d3540461c2002d29b14e6d164ecce50cf39d2a370fb9455a73dc1072498c3bb2b35346da9be1229923d34ac3f9935d6ab494081d38ad437c514dec7d08d37f53b029f4c6eeb5f06e7860ab48bb8bbae2770637a31dd57f8735c9a9dd32e20d57d3ab2ecca9de98a59ddb9a7bf2817b0f73f62082e9fa8b9047da395cdfa7d577e8e874b28ad1ddd37d9e1309699a0199b5a054018fd051a175859ab286575202d5518fc16e72b124240f2564cea47332087711804ad5c79e536efafa3ebc65676acc28fcc364046344b437071d8b739fdc2722ad66a4d716d545e0e72392ccb87c488fd12ad01d41107b84d1d4023d3ca9dec9890585b47289d2fdacbb70d6c0ea3eb850721e8f43e54f184f5329cd318ad8100ff7d7654a694dff05306b073caeab126635a7c98828c05cd3ecc5a31fe14b1f20474715b2a422fb8aeb6dd4c2452c9740740d8598f101b8bda65cd789c57c0818eea93794193b7dd98dbe48b1564487c6baa00849e97048ec05bcd415f2b018a5fa4a8b9cfd9768a8c4c751521965c873e5b9e3f4e9d021a0f291848a75ab9f0a59f79a8e7b577525bfc8c741d759e8f076fe200019f7e2b89e037974afce5f019fd9ebca0d81d5f30e74e1f755c938e2783632b0caf961ff5754f640ce99e39cb572a527d1e514e883d3a02e7f27cc01c7f50f395c282bec3743947965f3ab868501ce9a66fff6c529851b5cfb1c3cdacd2b14d8fa4b8ebb8c2c10da86fd05ade39e8a347735a678bb84fbd120ff8083f353da614746473f55ca04f1566b72acbe76bfbaaeb77759d01d87c8908101a3023c38221f0ddd2b8163be8d4320bbbacaa64f819e5333e9adbb37d80b00d5c73766940affff85c965d829655c8f8386bf80e2b1f2d4ac6ac1cca0d887a42e9718ce598561ba106d180dcd805978c519a354a84c5911f3b765bad79b6d40cb0968cb0e7d0f166557ad557c000509b839c72eb1028c3344934aabf05b4ac70bf1264025a6b1ed5be2225693e120aa1e01650a64e0dc7fe017718c8dfa04b0c9596ebc25348ac4869a2e15f7446405ab894ba590a6e255f7de3d24d636944796db61ab391de28ff3abea0a49104128688e1d56753bbe62a8e1dc1bc53a63a2ea3ea0fe3aa83b614e9f4e9bf1b3037f0f90adeda7e3da64e842a2c04a0e50a1d17644d96d243ecaa240b6d4be0db40d0711a7772c9645be5d2930b343ee6002c8e8592f15a405354b070d6ca3a38a76979bd2fa9b73730bdd379ecd86e1bc314ada63df86176aae61e4685c071299ac4597a4d914855d98b6953cf61ceedfee6119b8b11b282523b1173a1bb7807568f7b3d691c33f287a3bdadb55c493db4d8d733153d85cd1b3133b891b995ee44e9993f5c61b832b9a49f716cb5db316c7a689186d2b1843c4637bd06f8aa99eb01b2a6483c9796ad4aeab3be6757309958076410d6074adc681ff3cf08a5e8a41ab246c36fa11e75895751d3f1ec1a50ccea73fde458a529285cae9239228725c050f01c26982b7e701bc19b6d62502ed1775733b7fe59abd623eb24b2eb997f9e10dc2ee5130bef77a341f9326f67e9760b860965d7d0c43b8713cc8d588e42cc42181c2e509fd4a801f69ee396f918e8ec203f03a7ac335d5eb9e7726dc18a45e2ae9f7df60d0f15511c481ba90d9f93b62c703426dabe5d71377cd3f64570fa820b49193ea811a87c14b63456095a982f4a902c219a16f586c9169ad14a233352aa613537628f57ef98655677cab2511e51f574c85b98e7f48c5dfb17582ebf61710023d58f2f51365ab055204b395ba22c94721fbe4a2d36f16c5560b013b24383c55a8462e8c17b6741658ecfa2b111d978de5d39531ea9348d8238b8c91a505d8be0b2e98797b67ac3aac00f47d5e797ea393ff8e9339100c60c4d88c6314190db8459d6a3fda778fd490abaf12e4af8269912a07a5a76baaee16f0066eb52ea8d27118b66418542561b3037550a1e45c4517a0d4ddddc745079fbc3ccc2e370ef0228d783380f658628c8638562d3a088e162db4b0794a3f6dfc067971cf0e566257fe5e7c01f34bc90925329048a64021b99e1e0911bb4c00ab58bcd6b434aaab7f740081cc2101e863f989e4d3831de276dfb3b6b88d880c2405b673652afe49c995fa3446da29b3547fe7f6410fc4eeb2c7a5fedb660a318c1bbde4a52038f76e708a2429b5827c8ad074ef716f94683014bb4dfccbbcc5148cd3c2743f4b000f7d807521f25ba6a83dda4ca4ac7e49292dc3715c698f425f12d42ba10a2e2f4ad8dd9bbc6f7395bbfd282b798e643b7b6f10aded7c14de6a9c752c0918f7cf72e8da82f1bdaedd25e5c2ffd6e6fa2603a1290dbdce5862f74d78d49b36797ba73f6bc5800632bfc79f1a740b2e7de716a491410b55c34c4891004aec134eaf5552642552a39de1a962cb54882bd07d037712f725bd2f0d4dc7200d9f0349fd0a864006d826042114bbaee4b26409c7a2a2d772067e30d24a1ee3bb55394c8a8dae11b4b6585f1505e0dc6e0227020e7940a277fa6588401825fcb6bc056e9e2adf5cb860caae4dd49a626630c7b5b836bf0823c09780c3d4163364f019f72a44e04bfc5537d7388abf532f132caf8a2a4aad46ea37d56074fda205a52f9ab3aceba244b247152b7df5e90a70174f0425ac487157a845de84db2200ff3914ee1bd3b70e02530a82b497a1ab4e37bc783afdbe961c1cf61f1dd8ca66f70d7912e372e519788cd4389cd8113a147c079ca214a27e55890517f6d52ffac83e1ce30a31931bee79f1d9a040ba7f725186285a7dd238e61b4ffdf0a93e92f6370a3ff318317dcd2c21c3ca1ebcebcf239268ee5b1e514807c9f909f797f049161245db076c0cde8ba0d9d2f84b6992966a2b2ce24f8186cb6fa80d682359ac1f52fd998835bc9ecea6d9a268357efc2dfb1646061cac40b590360d48fe7c9334663f9110f31621363dd78e39640f8cbbd349cda0b3ac24a8d4dab435e77fbc27a0d4dd9a9718745888e22ca8f8f0737705abd5843317ae8e84a593505f6d7328bfd1858f18ce04df6775df468f419d4efde965a6b6bbbf1cc5efc02f5017c91c231ecb21419597141fe2ded1eadcad6846680a701444199733dc987556e37030cc79460833cb3393d10c28eac8c82fe8049b54ccf08e44060a7842388294d900f9360fea35ddd4d79823cfc59946044b417fc849134fc80c30c2bb9eabec4e0567083c996585b3b0ba0f145ce51705c08f847ddfb5a702dd33cbb302148aed1f0a00e6efc0d0fc9f69ba8be6eb666251d79150e6753b491761d34499437ae82c2a125987259522c6e767d7bc34d50f0bab103c7a8631c09c96db0da4f392551cc4dccac3496feb6f8e48d18a836d3b24aa6edf1530e36bcc8749b6a027c7950b94f548b7f9d9e0c4f442fbd6582fad3de180924df9b12ddf74124b3705ab07250deffc12cfb5df201098ed40b8699aabadd99d719e8077030839b67516be6424bdab583f9b560d430e23bd871830cb22ad6017b3cd388e3f953d49ebe5b0dc31d70d9ebe76678e93676548bc63887bdf4930b9e3b1f8baace7d7898578b44e2810906cda4763df23c58bd4c961bd3a207b58f29ca339dcb9006f61bdfb2d8604bdcf6a2765216ddbd51278aa93d51e7888fd3f48f4232ed844d83053ce9a2b24dfd32a888c7a2a22e34c395de59a48ad9e4c2c231f46ab8b4b398b7af4c6200986b4e2b76a692f9758d7f2484929d9d426963b4e7afc83cc57a473f213883a2c0321508042ada0974d814471fd2035adfdb276c239fb022e06b8c60dbc20463a2d9a503ecfc8997db3ad3b418a76427a9112dccc929adb7d7f96f936f4ff682f349dac9e90f5f0137aef9fbcfb55e2d90afcdf89cf22974e2fb12ae9bdbcb317577e5acdd09b9f4a50a079d81df814995fdb5f6fcc973942960ebe9389acf80fdd9f362e977972b176c6c60d7075a17a69f71582d634b121a7cf84221568522a412cb45a3fec7371299e21a21dd30d3f79ea4d1a319189d796ca081e85c8703f0ca40c0074f6384313e414f1be32d3d9318e0ef9669804749c8261037e91252662fe3d00bb6ba89fe8956435b8b0921d616bcb36e16d1e030e661c9b84e8d42ebd56188be53e0d73d6ae74601358386e7857522dbb0e7d830c4a89469733fa1871d61b57abd0c6d7553814affc3d05ee78300fe17b181c672935ab2c312224215056880f4ed24855f04d249a8217200d2f605058401a560141fb7c018d5e21124880fa2c5757cbeda13589009ba7d88f34df269aa5f17d0e15722dd561ec263d79e8fb679c9e15748a78681d0b01947d3e0c188049890e11ddf96bcd1eaeda188f03f6467f0e910e70e4448101f5fbaafd54e57bef17c2068b545d897b3b0402f33d7782639eacadad62cf8f54fd8f818984a21744f339136a6f4260cbbded0d2ff06821cec3519b580da06d271ed1724344bd7d1b2ef8544ddd6d51d4b0c531c2b3a8c6fe58f98b299ce78c156bb6d39b0046196c97668bfbea341ba8fd1833cbb99840816b639acff5910f91121e95e41bd6f16f1413f23fec512b13aa2e29ae67980fd119e08a73b8919ba6cc11ef1eea54a2842eab3cd198a9a1f67751066fef6c767fccb12496c609637e66da8d50ad8acfa1a3ce00309be759cfb3c825b522831f76b3a430cca00cc798d15e9f61d51acfac0101ded370858648426f1f2bd33dacf5c73418d6be1af10d55e6ce31ccc569ce6ef18d314f5fc67e20b701f2301bde1f72402cd798a443e8243bfe5d7a32b5fc0ce091ff37ee5b8abea7052044a394f9db1784d4bb3be437d9b5e8ab4aaffe9a8d38107ff14f592ff24a040198f7e05f963fed6c50344c6c7d8144d86b88435ac5e81320f351991ad8cf22e6648cd7496aa08253cade6d5520747d4fe563f4568d85a2c416799a1e48fa3370fd61e17859363ae697d634c5fdc56d4b739502ac436d9483fa6ba7461f6c1d7fb640a9d4d092483f2e7f74ca2c5a37648689c81a0db22ba2b7ebdee5e3833fac4cc27881d1ae46842e4c930a6588a2da269bfb89abc3dd07850f252745c30f067921f1c8f7625ef228725ddb1b1c1ca2228863e5a5459d068894e60e87d508637fcb7c8a76344df92aa5290b8992bfed9714c1c000e93304b39b1b3697681fa0a88d4ea1df334a19e38e180d8cfd58e189bd15bb8f32237dd5bb1f35b6f7051e2063ad81658422d8eaefe681257f2e69e734a7e4077f2665f1ccd669c8a72b87878308d38d8435ff407120c6edf0edd55279e559f6f9ec8e6f07cfa68f33271a073d5cdc421473e468cdfd20e59abcb97db0efc674ab9d4ea68c6a0dca3b38a6d02585c3296b953b28cedcd39e30503a2c1b0f5e7b389e1d8649264d9a5f01f0623e75b524bd642bd765897fbe378b446fb9347ea7e877cbcc162457d3f435b3bfbcb9a54e86c0d666d737e7f608a8390eac1ce8cab7b8f8888609cc279d0ba9e5160075504f22f7cc08d307d0ba5c8c16705fa8d4d0ee7935ea0c3d5c1035898ad9bea0d1e300e88961729ca63397252994f10ade528ac6d4cd01f0729e18a2517f6b173d62e10ff033231892d23372c303f3666b194a4d0f1c30bb54312a9dd5b20746e21226bfad804c9e6e5587a0fd475a9b0bc6568852ec0d402c6d3b10a58e01ed05f009f6bb9300be57749a1562014f5af7576e0c059616ef1bfa0137c76c2dcaf05dd19063ccecb9260190fbf5f7807f1e57dba007662f5bb45b129483e9cdefe973ee3ffcd0d962fb97ee6e85f9c99528fb00726942d63839d70ab2a516c6230eb1fcb81a9da2dca561b84f9939b03b27d16f5d1067d79e322d049a3ea587692091d63553b31f68fc00620b2241901d7b401355e6798e85e3d311ae3b43c5b2a2371d56c59a9b06370e47fe1e506e307e28f77ded15be85519c1e9cea65507538310cf435f65c3c28a4d4dc7b6bef573354a273a305721f30931e249429c48f06e298f9e6cb164045ff26a25041de30c987e08672232b83c035207e7ff19a59a4d1949bc1a55854b73eb88123d9fc4e6d7e83c17792574d2436009fc72af85ac544092d904fe0bd094790641d1cb209e6ca3a7c1c88e97c4f373f910912cab500cad5a139e522b4f6b2a283dfa673a221660a7d4f833e1234cd1517675538ed32f71af0d821649f7e86bd14bd84ad8537cdb87f781795952e1106a5719f95c027da3c6c5daccf3e16d0a4edd69f98df869f9f7d7f41580bbc8200939764f56731ce1b892a0c8bb511757012598bf1a61ba3d7ff35f2702c1afa356d2b5bd334bf7325954e69223a70e9d5a43b7ff58e37c4bf0395d2bef8f12634ed0af02550eb7b0079664132dfb206803f172709418cdf7185a22aafb95b7c174dcb55af2945cb1f6dc173b4b3ace1c623712e3e3aebc551f522ea8cbf49ed112966bb281e60dee44e4ad0497ba489dbec36ff797fa49d7797890a9814e45d166e885187b8840c97c8184cf4a6ec4eaf8bedb1e026d6725ece4339d439b1362a1711ed7b876dd973ac52065ff2fb715cf306edb83a2144e6925e7c41410cef00b75fe21aa93e8e8344acbed670559a4f70a0ff173166b8afe6e8c712bc58ac3a10647fe5d1a7aee04f75c5f19a235cec4dc68ad969573da2a76c9c17d0863030ac1b90715c44ef348a028c82c9bd193d45234ce67c4e521540dd4a3f33a854024858823b193f0b945fcd56fcef89214e2b30736b36da974da0e136b979b8ec217ca5f22616d2faf86c5c857c4b0ee9c34093385aae05b849dc957eca44f77b0419d89b5479fd92e3af00a8b73b5df7b921cfc32d3f7509acaed599fbba02673220f58a0fbf25ed435f4cdf72da033d38cf43e5bbb5c21d4f997574ba25f9b83eba7ffc523d301824659f0a55ebf64a0d47bd2b6f4174272514667e578fd24f3a0f65f6d9ca1f072e967b60501f080c48b9f3bb203081e87e416284108e800e02646b6968dc0171db2909fbc65b72e9a086ee66dd22c0b1b32919195de2120211de22996cd2478a1881d8b275c4234687903b8bbf3545ed00368da88c3ada482472ba5b079e656686603debf75be6e770a2fe59dc6bc642e537cd0d55b29a692e3aba99a99617c4a14297860b0ad8aa72641cfae8842689641de7a79d6ef11d1e8e0b4d50edf2133b35da83567bb9ba6c8d857edca269f93848637a71b131943e7de3a9d13aa6bf39385c4b784df25d18b2e2851538d5961325083313dea0e61f264faa85a95c2b92842fb34179827d95544c5ecf68686fede2f796dcd6fc0204dde1105ffcaa4fd3f16c1a36a2364f0ec6eb75262c0501d183f7f0ee583be306024a36131101e4e624a22067ad9439e40a3c4d65ee220a8097ca372a2d4f9d22a390097ddfde007e97172160bee326f60e711142aa8a2fffae58e9a66a506211b3b9b173731f574ef346a487dc44bddb47fd7dec71a3c5362407fd69d991b024282f839773e9d9450aeca49755795d376d984b086186e9f2d05c1b0521b6d431b241e66a8026b0630ee80d549669ee5ed4c69bcb560b2919df40696826048708f61742ddf6f90ea3d5419bbc03a74a1a056d12a5e2d33a0665f4f5ad067ddd17f9a13ee32b4a8ee7562bedff560e429a715216428188a94d8eea990afedaec3e58cd294bb394672665a7ce79aaf4c0b35d4f12212b4ed5883b6bf2b2b67f05223f3d64d0d9955c44bfcf728da216ac733b6d55db5bf813e6f1b12c530e149513a299b27b5ae97926fb1e24b8c842a4d79da85832dd51b826add0f9e785f77200059841adb6102321820d09003fe4d02b181adfaf192564c6cb62d1852e91e5235f1c67acc7583ceedeac0323496b87bde74cbdb3c20a7319e371dd2cf2346f033333ea9db5f34a222c6741b06fd6bff4c6d716a387e1107c95bddde12dc5803d0666a734cb67c6be3d7cbdc3c9373dc8c889339a96db013517235adb4affad10f3dae3abe632af4684821a1e51b4a762d8068f5ae3424ce5bcd6b898bd77172ac18aca07c8ae53afe857c885a3e0fbd1ef9ceea9411695e813c0efbec06e65ba822a07c362457ff5e7f173399872b4d182a801ba6ef88430b1ad684caf28b739ba379b95d56fbfc2568c1f53d1c739f93288d3b5dda68e99fbcc5ef8f6277f170d4ae0d39e58f8add9ab31db904815c922f459d55764e12cf9fb880c5353c03d162739bdb8c8d874c5c10c6707536c4a55129675a64eca5d3c010f65e00d1f35ecf7a04a498d1b5e444a896ab3fe798cea6fc1b2ef5bd3a7a8600fe2887df1161cb6f83ff4fa94b37906a94f2d2add9a1aa17b0c3f2b2be03fe1598d594fde2ec005db41e554b4593dfb766fd366df69a8b443d7c5681dc1fb068a4b450c43809d895a9440197d5fc9df550dacaf0d70bc069b292efd92559fd373040b2c6e96a8e43ec0647fdfbde5b85bc4ae422d7076b046cd263bb027636e0b5d7e54e3364fa412533eccef6dd6d5c2198fb975cacd89f4e7887d62778e888434eb1c522c1ad335e8400401fe0bbd34574733cf5e4c7c50b104fccc0cf26fb05ef5ebd426c859c574dbbc06dd0960b916b20400d8361ad8969153009afc1006fbe36b0d80372f48fcba350a73f720b03e6c822bab6faab59f3b506bd2af4409a6dfbf08ac68da3a89e9a260160c28c868650cc26e4f2488e56e29e15ded3532e4d97e7287a6f8e8ba508d26174e67e556c8c68ce540c0f50dfcc87a58e9d6183cb1e506bf527aa3e45319c0e2a32f38f42d7453415c0f99aaf5cafa5c9076256b4a88d5047adbbb7dcb2cf37bad183982f4d6c2319208c7aad46d85e9c26b1cfcc330e0a69300688c4acd32f6dc33f7215dc151150147dae2b5c35ec0d83fd2b3ad6562a9b4d085b11cde126098bf5ffd9c921cd52c2fbba6f2faa73d00dd8bc2f9785ab50efccfa959788ef8da1ec36f5e3315d9b0f57d9f1d69effca84b486e816a5930d7f04bfe406d8438e8dde21fa2a129d5f44d9bb295e40bc2db710d85781e4faf910a13e44696c52b262d551a906f8eba19a4bbd51e7e37af016c30f89fa571a075f997a873f66a93c545ff2b125f5d03e3247493d6dfdd1cdef5307046b88019744f2b23d4f85310d17d375d136782ad31edd902098e743853c67738bddca3855a279784250e4856a241f01327c9488fc7a1618a429c43a4f6ba1ae12c02ed9bbf4ef905fae987231165c02399ceff808d014854dfa3a66cf1b6dbfb5c68381a3b5b4061f0e15798ea703d9279ef9b66b87c80d105449197813163c928f4b79d602ccfc541a8dff238b11255abfa04af1d953c616a1586de94ebb9180b834b917b8ec6932806735ff1bfd0c4b37ffe1676682d82ba9a4b4b5c220497df0baf310ed402f437f0f639b8d31220f7c66b06a1d97a698a15192e6c4b37df85c1172200000000acc8d23a887cbf7be146db10dfaf7e99c394fd6f215e9c236aec521efa9f2403fc33000335121c9f39f4702f34ee9b079215362fa8d50098374852443899cf0d4fe60aa420202852a5bb019b444c161ea6fb91472fcf60ceaa0c1b3111a4bea0ba3238a615772264d44a6447412b0d2e7c916d1fc2b9abc078d6a247dd90413d00000000000000000008df299d0c2ec594e58b66ed6082dd86839e02a7e39e61882f029de595122a81992b3c78218f2f9a7a9b14a53ad6d7a66d5e91b83e64acf921272e8a0c06ec0701045745544802cc36601959213b6b0cdb96a75c17c3a668a97f0d6a8c5ce164a518ea9ba9a50ea75191fd861b0ff10e62b0000000000000000047c6d3fcbea6cea1ef530150439cde787f28ad6e861bfc8a210a885ecc243f910cf708248d8c7a767ea822c7bfe644631224c027897bd3c55c5c4fb764a79b2ff2d6c13f2a7f5cbe9707d26d7d7ee1397f6358d324a24d55cf3c5d5992528f4f2e7737d14decf060bd7be5a896d18fca116c6a15be55f04a351fa3dd4c1e5a420fb8226555e678e9e6f41fe80300000000000047c6d3fcbea6cea1ef530150439cde787f28ad6e861bfc8a210a885ecc243f91bbdf187efea2ae6a9090cf97c682c897c105c3f94c6a4d291668e3f24db61b1137758feaaaa99b1d18093c24ad369e43a2f9341113c4d2af873df5b0427b76c200d5e50ae1b41c0a64b43bf7b230207f12ee69ae9ba16fd653911e1166eadcf78c53115e512a15ade568aef3140478a92b612f91cf622490ebd82230bbc4a21130583ddbe385c01c68669b1b6c1da6e9d40a17ed21dca5962d25974c9b5d5cfa26", - "040000001183ac9df4a70bb97b198366e50b570c5cddc16fab0ed1d8031b6717aa61f9a46d07c8f627f0329ffc7353da1b2bd5ef58b9d2bfbe63793d6cc38c1c13344bbdffeb2e6ba29e2211d3779fdd4f0fd08c54ab63136425b35a2f5dfa36dc1218460a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000200000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000001021415f56a0290cb829352a0053f3173d99ec2a607ca29820276aba6020e29c02f5bb0a2b80a56b387a575529e00085546a130438f1c0b63321ef933086fbc802a24c8e2332caeabe6837cdd5bc3a221330b602e172fb712084eb4a5ea674dc696f2c915237c89cec983ae159ae839ca480529a663944ee11ad80952f38af4e63b353dbc0af1aea41f7b57e5bee68d35f90994143a2821f60d3fcea72fa5f9d61c5cd20d769fb813f5271c3272e5528d9712dd023a34550f239b1c4a5bf8919ae0b8edf0f1aeb840bbb3d5cf5f5a2b415db9bce4e87aaaa37968468969bf8a8ff2bc5ce8d15c3d604e24ef315fe1f57fa3bc05cecc902fcbe9334093b5a963b86fc88b8a797f2fd18d14d42122d66d3377fec273149601004120ff10c5a7bcaadc22f193a499c88f3ad5b5eeaff2765c28b73661333435a480164e6d84695d825816ccca01350b3f877384690fc47ab53b8aad4c5cf94bfae10033d7b05419f1697b41314d9575ab0428e89f056a67c84f7515264eae379c59893b5e0883a4d16106ec6070ef1cdf8b50e508f390c911c719dcb6d132140cb4f7a0f8f8504540d7d8ef5fa0fac6f4c3464c02cf0630810fd16cd301757ea2a617768a00acc53cd6ea2d9effc731a41d9d7df3a0f66004b883e8c6eab85f15a4f5a7fb49027e53b05d90fc598e0ac003a652dc9242f537fd76d73d34ee1231f4060b254bd049573ebfa98659a40d004e42848c383aad6b8ce424e9b80266db51ba39aaf6b5ead6c8697fd65cba7e4b2edf53d1f7b6f5b6367d9e7efa3e7980d29d67a0a136848b08dd258d9bfc1304d0d7f9845fddce072f4d5188ed3bda7c9c3082659bfba91fd562106e4d0fe8cc196fae5fe05481f366d17ac5a5d12952fa42067778d92101db05bcea16118f4b15bc5fb60cb2ce9a2d32bee6e3dc041f0fe98e683e09367e83a8b03ba187ba2a28c57afb4f596752fd8e1b8fae46ae691ed89cc475ce9cf839467c0b273e44b1d4dde8f1966c97b89dd533b0cdea2a8419cd716fb9c2fe40245434b54a7e41b29b31191ab61590f568d2a1d00f87fb327ac24efa2c86e669f867fc1cd279c99815d7351890d8732d43f8174a720ab59f0513a1145d35fc8ef8e969c80fa7c0c25d97d0409203c866f170ace4ab21040ca98e7df256a5805aaa6a0eba8b9eab1ed39d26974fc25587d6dc5ec6762ac87112aa9af554641f614e5da8d8323172be5e995a0efbaac67ed9c98dfdaa79ca33dd78c6bd3ba3dddc03d9176b96bde21078a6f547d81383393c5be73a2b4a70c0990d34dd91429430984990df86045c0cc92a0b4d2080db5c4a2dfe43164351c419ffb05482d7a8c0fc170426970054f0d8e320f9af0dd7dd3a67a2f90ecadc31327159bf15b379bef01ef23da1fc69ee8b944ef82870a7222be179f18c6957c1ba2b44a0e00e5da83ba8fb4a7c8a389e02f8ff63aba84854e2e50fdc95d9c45a7a6b44b86dde4a97936e32a277374cd3eee970a1fdfc5cd0c91cace306d882d670d84a59325a246757e5669e5ac3172919b5b61a883be73e4b9c1d79e85594b2e3dcd14a1e40f05efa084d4abba3a70980a7fbb76e5151ad582ab239327af07fe1f7fb102d1ccc926f835caa3d63dccddec199c7f5f42383abffb9ed40839537ef4563757468c0db3ee6bce614929ea4bda98c417eeac0eb4dbfa1822a106f456ac4b27080f9e33b72b845c8d10ae4d7e711f5f6eb6847a6af0bc99fe2de971b6bfd13a3f239212ec893f8edaa8444a07578ab9fb427d7a73530a313a6ccaaa6da164dc2c41fdec0eb767a8fb4355b5cc4552951a3558d88ad89505509afbf6df81baa3b6db7ff5e834909a6f80e0bc84513c8fe396199fa843205682f781741440499751289592a73860429cc18539062d2b91f03afe18640b892b9193f1cf5c4b0109c7df89518c56d71a4a80dc1affa9f8c0b84c0735e069d68fca5a4ed9b2c8c9c2e4a1e3d10d3f593c149c60bae24ac10f2433ee94b96fa76b7dc4360a3785b6c84f4e21af684bb460513ef0575948acfeb2f49b5645c3284c893f53f3f632f398f8f2721c20bd3e0ff6f2193aa57f85722077bbc55164353d965592891186467a1fcb3f05833f6cc307a168cef2e08e1555adab383d19ccb8d33014ebbd4cbb1ff19d8779eecb1bfc617e03551d442f26c414e16601c71b649dfc8a4c6399adc2b669c88c8dbbe5836acee78f677f158d396743852b1df91827c606b8010b3b1d4f28042e03f83fccbb4323a347b1a8aa2cef3d69a4c968002f621f3ef84d0243dc4f7aca64b14ab4fb70b0a3776527bc834a2f4ad6bd15f37f373e556107bac46d79d548c60bf73c77478a6b051ea7f6f39548cb8a03865779b1a9467003febd83e09b209ba8877b044f1a14392074ed797cfc4d2b7fc0b4f14dd38a412a84ccd919fd375b0abf3252051d1cf0433fde01cf8570b7f0d1a30e724dbfdea133da6ff2f7aab50a930f476caccf6271d7e1e97c9e64d48a2b0b415d5f5aa42ce90c58143d34564ba180bd2aa76cd5f17b4aebe9d59510a0c46df4e82aea90fbb1bf712c2f98953055ff47b6f09ff8fd48efeaecd8440d7d63747a2662a3b4b9392f4c24ae49cb7f9382988916ce6b6a6995593b6c5f12c72bb6ee3b9178cfef49f3cdbcc6731fafabccf3249e58bd5ab3fde0a56bd12fe92df6ec1b377cf1f1dc6efffe6d134f5a7780720b3e6b126b69ab603990718a5a9e2dd7b141573268217ac22ae94fb634151d176bedd19871ae3cb9759d4ae08e3441d0b49158cdeca19c7de382fe194e45d6c73bdbb48237d09b024403898febd3be065d2e7c422152a2a3e5d6eb7f677c2df63e1188b6fc28c608e2ce69eb900c4d0c2698cf9d0bde5e7c18b60f3a2234b5d310a65ac098fa9f0b936e87dddfc62bde02ea5b84a038118edeb0cfafd4a8536d60434ff3cd20171b78cd92acaf557e6d8a3623cca95dccb2fb84fd4c6733daed910f04a4a7568e4ab7d3cd3921a9325f3471d405b9c2a96c4bba6a01172c42a8fb966cdc0c2311006427050c39317ada11e2c3cba8a9c56782c792dcba7ebb9dee5c3a9036cc44783a99c246c788cbf39ba1784146f9c0583bb9eeb1035861d2c21684589d4df70880070c0c162da9272d1cc5940c91b4cf124565a884d5e591614bcdcf1b4811b9730b8c6122d6846315da97178b7529dc31ef33fb5391f57637e3a45551e2a3c912b96e93b3bcf01894356b650db34594e3d1947b7c29c534de4473a26564567337ba71cfb39267598c30f79cee3cd461937a6216ffa73efc6830ce43081bad8057fa8bb73d627319eca678c5a3dac8b717aba32f0efda1dbfba8ce4ba131d9a2183e718b6d182e525fc37a67d9d09b87870116d24f434c132e046c5d759791926fadf2eb6c3d1a15dd92364c2c57323e5981a892c645f421b9842b8ad212d87347dc495346088adae0caa8b68b14a0c36af30554f0d1743208aa5b0dfb3743d1a9a29a0138c9846c3f4a65d7a93c24dea5cc51a4a7e458c0fc71ad21e8498b39851580f5fbac3fb499e93795909e5c5785d5989fe971b8bd4bac8cfc4f1a3f7007242add32542c6c82b69f07d82dd896c330564270d83f6440b6b843799ae08a4b9da4721c6ce18ec1c9a9ce6dc7dd4f5930076e25d48d8f971473fb017e3823536aa7a68feeedb372eefa3354827d0073b70d9fa7752e9f24104f6079c961485a77c084db59e1d252a84c19817977b52359f7492bf73dd1fa99aefc9ec015189d6c15a38daabd4010a1f0d9d2a5fc95bf1b56562423f89747150726798446413cf157238c2a6c04f041e49ed7579f8ab254cc3302e83ffaf8ed1ceab29c39400e48a2cb3334f752c7f11e9f7f21b8b8f16a71833aeb49f9e4be416e22718282acc7c5be0b29abfa95a16fcdf9c18df2fedd35c083a11f3a3b54d42b37b4c9f08c43e4fd37ecee985a5f7e5096a62a7d11d491e8c8d11d2dd0d412f696275e185a8230da5e87beea5b01f006ac43f249df595a92f53f21f8952a936d37b2fab287d323b217bfc05ab4e3f1e08cab35553fe41f838f26126d6636bb1c053a0e431b8fe94c604d4e83308f9ab27c0eef9184523f0375c90af4bc3de7a4ebd317ca02a7c6864e7b556774e752c336b2dca3dcbab7c7010a672223a5fe0d1acd78c20abbc8ba627914da0b90e0c34271fb921ae345179a2edc925cc5d05132216b4838f87232d04f151259e31f7aead8dd273b7b45e0f7c60f6bda5fcd34667b37b8e8f6530b5a4b34c56433d73bcbcffbf00ecda3371bfe75f10a46543d7bd98a41184b290a046eae6cfb8a8783bbe42a4710f153a3d063b855ee6973e25a09f822141256b4867dbf45b9f8268bad73b7d18dfcdb2f2c7aa547b94184f9df2491c9100175e6feb634393d13c6e54d754160ec0bf21ea3bf84900da219e2689c59e8da93f3a44ecfc4c16d05115bc47dd1b6689183d569edb713347a34c7fa1bf71180f9792f13c13ebeca3782938240aae6ce6206213d49d34612e4fc5aa7d6c2e0de7590256495d74e10413f8957ff639227279313ccd763338a6cf35e771f9bf9d8c97c7539e6910dfec3d620c0e27ac0db971ddcb6c0e17559ea25f72379ce1b3f85444681143cd3609e16eace08ccb6c9a0c419e324a07bb0207144487007729832028dc6fcb482b44a0ebfffdafbf49076d4889146da499d5a6d894f0702402cd462a972bd45d59eb3818e2c374a398d9e80eb068ebf8f89b0fdb206b3621ae1ba33c5183e923f50e9acc8217023716f5a0f1c670c04e6c020fc74a9bdcc2850a03717120dff8fdc2e0330ce400e975ea057d94c30ff814a2c5278ce9e79d960f4c11edf6d2caf8740941bf54f02a3648648fadd18928450d66e1e7b78fa7060f763b724b42007bd5e2bc2a156ccf0140098b87d0fd7c21c865be90e298e407a40a7fe34c35f00e16d71d6ae45649d5305f04d65d6c6643c0062d46cb5b88225bcc0472376ff0dcbb4f4e4d8bfc51ee5727982e1c600dc75ea35b98294e34254f119be0311e9da4217ccd144a76def07892716181e1bdf1a67c4f215f4e7c1b33ae16123393a3abe3edf22aefd9da85c2eb0aea04abfb5a79391511b5113e05c0019f73ad5efaf53fddf37c82b5da4219f26b5d9de5b57cb87caf3b3c9a24004595682782a8be814d37613ae65b748b023280a0cfc6eada41131d58533c9a1faea02daa0872c09c75b8deaca013a8412c4bef949a2d1104ae229557a7f6f722827b61d6ce6375e962b71abcff9debe8c3c972288abd67c639d186f52ae66e09197e7970a81a3750863020f4fd5e4561f1c548612738ce11a76d5b59a0220d1a8b53edaa14374b744ca333061b105404ad92180e254d43f3c8a0ba5c29e8b0097f9faa56b78f86bef00baa2806fb7082bc984840ae536bed85c69d69e6464c2f575a1c5665ab58489c3a8fb614f7a630fc9b718ec70f12dd21f514fcab2c68038760e4a94ff75f94c53e61b498d727ce1228fd3f6208f0874c24074fa2ac2122ac1110c11a05029c0a7f41ed112093e1b5e3fddd79fb9756125d9b9e0863460e89db052618056b8573a83ed75a0fb656c79d5aef50e6d95e90fa134d7f5b0433c6268f77308108b68f9a8238f110880f79605522ee13a6d620b3e2d8e72dce3e71922966b0060b37a7fa1c17d333b90845b56d42b30630eab219f8616acfd7155a0433746d0707f047ea6d8b264f07ba14a06832c6258cda633cd0d13cd1fa011be47ba3af6ec73f94419c178689b605bb8dd4edcbaeb9df35ecfdb524b3ab1059fae3b007fac7de8f7ca7bdbacfde6bd360a4e08ddd651e65ebf7dd47e05a234e6d9fc8814d13a1cd721e2e484b240843fa95ddb1380f95e025ebbebae5b303b02a4570ddcb5ba3c13b02625c9007741c67607104ed277a899b774ac4a0ff30355d546ae84d5eb335f8973fa2ac429b46cd5023480896005d5a29c027de7c3f460a483a83a3eabf6b0840087cea1a5fdbcbf6748cbfab55f1a9c83281c6211c437af4c067f638ed45869ff2b2a78fcf4c6dc5ac3f5765dd5a4203747910820269fbc4a72a3eed857443070da550b11213c49916591126ce62cae46638a02f30013e74433fa28df6b8fe88b484d6217fdec16f0a1a6c473376aaebdd25bc5a210eff401e57bd9725f34903a5073a8a71fa1f5a31149355ab81a7a6d9fd2b860fe5be491fe1fd379c7494a081e0bab02bafd0694f907f4863ae788b9d858fbd2fd5a875246942f6d4813cbe57cd7d4c829fd2a51ac926d07751abd61d2924ed05aa5e14e80a2f250732c38f3b50064c0811daf24f2fcf4195ccdda467e639163d1fb791cdfdbd31505bbbee95da5363a288d70b5ceb53c14c7dfbf8fc544702304efc14d0d15af117030f5f7eccac31d65107bf9bff138421d5c30f1c41a1d0281cb9d029d90688c3d8921a80f1ff533fa2965a912a2f695d2ece2b4b60e8770c4b210179264e8d0754bff27fae9d67d7670d705aa6aba2755969687e3a013118398dae43784d446b9ad8c9efcd5a63b7244e75ea2a19786a4f28263772e48e0aec60a39d8407801187a120bc1dad938d302e3bbcfe9549398c2bd1f6c3c8510810435788b84373590c32083555b760c0996f2274ea1ef32e2c36b18c37a8962c62444f7c67c0c2167264e903e34d608acf747017b481ccf2c252b7798d9e471a8339dba17a9a96dd1d0cdf5c8b3a71619f576c84c07d53e4b8e279b5546fde24f60bc645b5fb52925ae3d2e18053141b5def2c75bee41ec44920273b539d3e338ae696216af0828b1d841033e9d938d8b281f7ecf4df2789ac3cb6cc6206f72599d5ddabc027a023fcf9917154ca6fc2ffb6ce172dd2acae5fed737d30ab321faa29e1ade06cb2f88edb5429d8716fd53a7699388397beda81090733ab8219356b54b7797f91aeda1aaef0b94f0ede862f4dbee95b8daac8da19d05bea95f60fc213c33a1d59df57a6f398188f346122015b82734b1e4394411306da56702700e49ca68040e87c49dde1445697124510e120d3529c5b35fbc43ee5e898328f394b84f52cf6115395acc5125d556fff3b34d673e3f82b98e68eb091a6ba668d39a304b7798389daf588fe2f4a28dd2b40f734f2ad0d5a03fbcd6174345fce22392fd19f2cd4c62159e4be946798327bdbb3bbdbb06a0c7e2f02724580736b8936b3395c7864fced19e2306b9b59ac18a92d5456c45c584f600b13ff09f8c59d3e8faa7f29eab6e43817953328ee8121c39e01e8072a72e8c706bfa510b329273d9aa1219bc5e5a24cc5bea482c1b3d3d2d5fc7dc4fd0e360c4dfda13aa5a6f4219fe58f9c74e120337b172e70974c7c6deddb3a6cff706a9f25944860f3b9a0391b2d4907deecf3f74f0731a06850bd1d2a2a1ca5d6f7ddf44795cf5868963c1ee95ceaba7123bfaef21b4448479c3d0aed5c5e401584cfdb6fce9a0803b420265e06ab05a7cb5c24c72f5665204f1a5a6cd70fa73e33300b93f3ae54f31ed61f18f4afefb0d778316fc5ff6853fca5c2732d858c84c50379ea240bdb8ddd02360fd0d59efcf338ffc2b7e35189376c8b4cca684c2c59a766cc28b36c4b078639f97541e6e0125ec32b82318ceb53d12f6b7912db8bd6c50deecfb338883b1b136953df47c4fe6dda53d22a6a5b826f66fba5d51c70498e2bdb60e5d9bb28b629278e157a40c5bd151dc2ee80e51ba0c2d03a01e06b55201a43520c5863c0b5067f34e790465b28df5be05bbde734dc02d34733deacf1108640240aca469c722a5f21228a7c001e11e00d78e4c397b8a3be51f0e128589deff09c3dbee1a30512d8bdab45805f5730ee2ab25249581164fe9e9b00370eac582aba51c5440ee72430de62a6578afe0755def3dd25c62a4cbfe610c14672ae6d6a305a7c06470e1296c7a84e07e8c3a5e5de1d315e9248fcaf093f85943de3d6796561ad076000141964dfda699856aaea494036d6a62e9c1158568eb302d77abb9f4864bf0748218567b6f8897c3705f78259c8b16c6b0596f088800366bd2f22ffe957ee352d1bacabcc269f8c9f186a5ca677229f66d4c9d8c5403221a988305b3ec8cbbe1c0e85c322afee4e0bdeeca00ad4e2e15d6afd158b9659d73843cbd82501050b6d0ed9f758f047c43af1c0c461aa3df3382b10d5b52e0ec8b91eb78ee522561bc51816c5674ccea07b0c5ff59faf2853f32ce511c91b6a923f55bad8a5eef6e8112f722260bd8451d1479071ff8b833747d726807637142db1d67283e6c8cd88560b24a12d450f5e4639c031852ef98613e14c348b99ee20a8ae3374b77858289d18f77d3a6faa1cb73f981535b7b471dd8cd3ec7fad96afa882b99e79699f827a1deff7df7371e54e53f6b5e3b34c9fe3bb3d191bcd8d7e70a55b76c5c7dbf8443cc62b47059b3a81c2d8dbdf4eb232fab4c1bf5dff0393326b0f1ad09ce5ff1b32c5724863952e926c5b3efedb9bf4323615a9c18f41f0bc10118c209071f19c210631c2ee8625e687ad4cefaea67920621b37979bba948426b4b3cf002c7edf250ec83a705c201d6fd246cb293b689e908a4d5da6b7d08e0e9ef8e1db5d5743141be88f4a26feef78717d97fbe2abcc409602a5cc0842ebc974521270c4ace63bc65a3d412e8ffe0f226212944136b4df7ae5e40e467f5e4b776da06e67f3812c1eed539c8c28b71a72d15c37001f5a0194248246e95e01e34655a242f6bd4133902502a38bf2b1fc42b91ce191a0c4343054cd003f6e286fb79c6258a3ecab08102d70857c7d0926667e5f5d11afd8c731c5fdbc6c6ef7c3dd63f89faeb23d1b13333b277f059bb142c25f203eadb61359323fd49af9052253444b998bcba709fb7cc281f323b83c8ddf8491a27b894df59929b537dfcd50970de43122aef227d1094c956181a83ca42d9069e5d2e4e041fc8b7178880e7bf882541ecd59931b9d519e2886a927f7e31d84ad41931904b260312ca3e1415acfdb676322a42406c0e2da8988236a21589611da66c316164ffc31c474f804bcf0fc5fd9b4395500c100373c690dad73bf2d0b68182c99dfe9650a5728da15bf7f2dab52ad5097147ed604fbebe9a3305262213bab9a9757e62621a637d251245e549eafbfbab00c0b21e89eed4e1713a4410d2b6ac33581cba457954219a33c260a8ce3645350211e35981d4fa04e6972078e4d7c4eef30268639dc809b5daba8c47b0fb9edd505ee73567a586edc1af7dad20abc3387ce4f7c801999f4523cb8fb921902f8173e252b1863b50f7a6fb4355ee833be5da74f6bffeae29e5af42c064c61db251919aa723e184a103a7eec415e8e2805550cc93fe0e51d67efdddebd6f7c66abea1f05b00404f571f48ac63a24d3b0acb468bf18bad643e411fb42a8d28d9e8c9a27b93dde916bec0bb70acef65a359cfb589fc605dc4c585709121919f1cae708348027a553826791a2e0e96bbc020781ad0257796865fd837e52dca03f5c50930088ce3d1459f01d1a4d5960fa9ed3df1bad7c773bd5fef6049329446c64e7b70f83c43010464e18aaf47fffba4ca12272f4089137ce54732554d8f3900ee3023c07a85f1f56ea4cb75dbd9d693ec6bc4625bbd29bf64bb7619cfbbb07b165c93f80b090ce500192eb1ae170972edde1be6c85e28a4f7f3898069025229d88950725909f7926d12045222225e1ae9c3cd06d091ce6ce2c843f790caadf5b16220b4c5809d0886b55aaf0b90c5e2bc2aa1aa759b6c7650af6280a06f4eb8a7986034748db3baaf5b3ffe043eb8188ac8ec8f630862d1141cae2fc58d70b4241de3b1d951f6cca3472e23858cffd923e37ca89a2f0f7e30298b008fcb0e2d2a6cc33caaa2082fabae2a323b353130dfd9bfc234cf7010c7519b32a33244d0f632f1315fbcf770c4f3976b3cdeacebd1599652d76785ee8bb2e23bd441f2a49cbff377a2fe6dee9aac20e5e55ca3ac022a5c40faa15f5fed076bc88cd35a1eb5414107b276dab78d7059e26f1fb1c95b59bc855c5d642ddcff6853a33c841ef43f73f1643fa15186666b7d5fbb6bd4ed59df3ed0c2a896316cb4a491722763f62280bf2e5539b734d70303b047ba2aab7dd02f1ec68a84d2fa90ad588bf31fd981a3d100a8d97c3d42d5b2a33e58ca9371e229a81bc6aa958d8c482e9ae08e5829405e2652225a077b2bbbeccc4cfe85ef7b3d41f3f88189838aa82a170731135ea1009b7abd751e24881e8774b535fb054210dff0f01a73a5a21bcb907873b073a2d84258c136ddf37735df5252333d1512fa3208eac2e33795898334ad47818f8074fbe8b99b2d6d90810f9f1ee610a083d59bcdd79d52b7e8d70421dcf7842811c00fc9f43fd906e51e5cc6fe9aa85ae44487cc840f9edf9f6b28041f187b0780927e39f63f73ffcc50a512d111f36d5c0696e885ac1fa331f54f7a990e20db314593b61e03f57e7da2cd6d098bcafa6afb4efe281c5d4069300ad89268ce3fb10ab03bad5d0fc33ee56014f8df7902400d6f3a998d6d3e3ead6e7de8ba313ad125db6825d564c7f00491cd705bdf01fd7ab064bd219b80febd4bfea48dd3adc126dfe78be6a593bfe9ffd1ec3a3d0d88bdaad7ff976d8dbd0358cb3927ee44305a7033ef9ea066973b34b6738aba0c457fbc8e99ce31a9cfcff26f099b34f2e380c7d353adcb1e416a39f6bbeccd28c3e7dc8a7f1c94100f69aa5c92f66265813daaf33be5bfa42f14d4c0296f92c38790eb16dda5b2cd73b8a744d2843a5a63994f28b6d8ce0b9f3ce2c40432a665976f2691a7e6c9e20972d916011b4b7a528edb0272dd6e6550227ff94fa390d8fabc25161ff56f4c088315371b5146ff502e5be2178d499579e01c2ce44358ee169d3247b86d53a57c81d939efa25ca9b1259f974e503b06481e14fefe7013fef222e1348173d9fd55a24012c9d5d6610226c8169d53b0d93e30e21d03691a6901cf695b19739f124a81e3d559f2d8cb50d2df7d31c7fa5a6c1d06314d6807623192d53c3a112a7f7ef4bad5103e91243371ae2adf0f6c7f228201fec78a4a85ed2750ec96daf63a8f8a9df69e68d986013dac0c5aa42e5491064e0a535f7f7e49b514c2fd6d00c22324c4c748c1f62d406076fabe61b68972be3486868d5aca678239caa8a735ccdc388e46c19f27ea5198f0401b46bca86b42f90d0cc6be5a0b8035d3e4b6d61c26577b6bf8816bc4d2af8be2d8e1509c014ac055a9e1db0baca19ba05af3d29401da23c357ed5ad53017456c6953b4ec450a3a09d4d66f87652234785dd19d3635541fb51460602683ea765405472026aa4899771ef8b767d58bf728b866bcae48e94b8e6852ac3141bb3779ce71b565edf3b976442bdf8e7107abe859528d9bd2f37080b92f0ae27052b556345222373406972f4aab921c059ed81217b80fe3a50570a750e1d36b004f56e3076913df5cc1b05c7a409f290badaf280e8d0a9705e2c5e4f2050309f00bcfff82d7aa88158fbf96f840265d974d22076e97effb9334f6cb1d399d7959ecf0331bf2d2ecb7411221e97a59c4487d1dbeb2e07513ce5b30676f3e17b7139df1ccc61c87278fe74b304650f493929353f856124ae3493bd638a809717801a47fa2142a66eadc8ba74f90333df220570d9709b582360e69a0ac29bf3283c0ba1ec60186477e28657af159198e97efc5c59584ad909d70b303cccc98170a8299b3a671d6cce17e035cd9ed2da3fd90b04ea8bb0b08b651afe630b87b1c0a5361c0d3ecb721a8540b322e584eb04aa1a79a72bec68945855ab5b98dd3ec66c0484f0f366cc3fadf450dfa4a3982a02d8e54370e0dcec6921419eacb988aac6008eeda5b3da78590a15a55949c7bac569ab455955527d3f475489fa8b8a77b826f6bd62385d75dc267867bfd33e25468f2640539eecdf3df798e54a9ae656c61f9eaef031ff5e494541c38faf6973928c0e4afd40fb6382eec61cc1536c1c2295d1921110cffef583d65f323f8dd5072a7d3060f47dd4428a39472587edbc443f3d16dec3689e7936a5d67d28aa643da5e1749cf78ce249448f2af160e378a486110920385e1f23ac6253e5bcafe4bae58bed19d2cf8eab417f1e44e9294ce50633c2151a11e8e21a3d863471d0c09b761a0a99ce6e6c955c849bfe870833008e337b0a0e5cea8f35fb254e8483287b02b59bb19bf7cbce46ea0964755767e821ccfab0a55468b59ac8ec4811e38599ed5be11f6fbf3e98dc332094d0de85288adfbfb91bb5d5047d788496874e05bca6c759debe65410d66319c2ea78eb2ce0b3332e71f4e445e50ee6066a6e0dae2b83fb8ccd595ef2bb38cd3a9caa0b656a5332a2a0bac9862c4ce5af96b06d053f77c11eabfa699e7e394a17a90aa4857b8398dd9f5bd4e82537d32e4cf5063142e129eaf05f62c5f3f02c7004a151112b628fd215ade3bb9d37e01bf4c07a22159caa0a7f17f48318dbaa85a08b19944386bf12e61fe75f4060db38513c8a1ad35e8d5aaf36d2425e44aea339fe670e90d0765656389c13751da4fad8618cc6b3bff7a25c96f157a09261f784b06b40995239d1449619b3a1e7097edc771116d0e815e866aeeec19a0a0d72c4cfe261e0cae3fb33200ccd564227394dac1211cedf47b618f625fc35b50f608b12bf5c00014e8618d60342ff791e7a1b1d90b66a61a83be21a6bdcc62195ba0d260ddf9942f3b1fc5e5c6d75a1bcee91737aa34d649ffbdd5814acbcdfbf6bef72b4657a755c9dfda3ea51031c66834c47e981bbff4a733c26befac02d16af4bf9b9e162a0b1ebc8b991604fdea38f437feb8ed7f45cce7039e14058bd4b7e887dd81d20ffa726afa9c650d9eea838a5054a3a4027f0579914b1e55ab7ca0741ba36c202f000000009375efe3ffc03f7a2f5b891a08e61a37c759c36781c908ee93b9bfab3600e71865b097b7e90695d8a9922a80062e93869b7ec9a02ad13e69852060d1ce098f27ebbac326c2c96d3074faa2fec849435a147817ab9843353636c7cacf59f9281c6ae6b84a772b71b4ee321f2ffa62f130a26541e69d21a1a50c980a4c728a2d320000000000000000007747e5a62c4fa5c934e802d36882478592d959745642a9c6ef996d83fbd1fa3c42c2ab2859039181b018ede264a22dcb235443affb4b97104aa30729a9a7c81e00", - "040000006dd66d19a570a9a09090141659bf85ed886b6da9ea095a5315e30b965fb25bab3a71c489ea21f05dc844fe6813f1bb446f36277ef9030658417ffc603e8ce6dcdacd52948027a582b3c11b4707f476f942b34ff77ef463b2a72a400cf6a8092b0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000300000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102b7992fddadb55c00f642afa2e0c108118f2e2f94dc2c4f2bebe1d32b5b1c2ab4b244b4b3df611a0724aab53785f794d8bc64510bfda2f554621dd46dd22f9012be91bbba3cbca3cfff712c0c7e26df09557457feccbe1d7ff04d1c3e1a20788bd16e44f93615a28626a3d374916e9dda8fe91c533b740d66ae3398151747461930135e6f46f41125b43604b053b980ae8733874fe5305bff8bad01a239029a029d5c79bd72da02aa3cd37591a96822de380f683b66128c829ac502bf639532ba0cf34ea6b92c7e041bc1f460843f6d0aa74a5294c4b6c584be803a6eec92ef0edb6844ecad8b86bce8797c87ff25fa47e194c1c38ee90888de859560c9ac2fe7af33e9dc341dc6c03ff1e54988167339a1ccb1c8b401c1b9326030d651bf4732f5940601cbd940d7145189c705493089d7684dff0ac9624c1bbf55ff787e010943b8fb39394bcb93354ef7ce6ed0e14a63efef0bec1ae3df52f41e0bf18b4ec5e79d7ddc3a32d8124598730f89ff0256f132821592405dabaa160fd5284e0cb77a3ce5766f8e4198b4310b3f8d0e47017378930342f716e363a8221e5fc10f4b663c364fca124ed20fcfe73bde2e02e5beb01e656ef5c3d13e98cad3748d5aa96e9b964a06d632d54d3c6aa527b093166f51f29b35c8a1e1d9ecbe7f118026033f25e61ba46235739723b632472ce168edd09c66ecb97f5595b4602a865d409baefdf77df8437f199ca45b22add29612f56844b18350963140806a32de9bdbaa6ce52e8b6da09d755b09628842b227480f5cb5e52c83e1399bdd624a19c15273978cf4e0e1c063ab8520dac513e3c8814d8aaec147cf775834777bc68355881c7336508a2b0fef1f312e59ad3e02aec19fa5e1ba07a3bca1049545fc0189789466270e834af01e277b2488f9640be9f26a7fbbd18b03cf4a11ceea41bd365511f66cb0b61ecdfb2d3d099ea06563eef014a19281175833b2e00503f3adba052b43e2c45bd160e0e89ddf7982e377065efe6c487e29b833fb53acd21cd3156c2e87106de07bbc7b4949e4907ffbf6babf6ac464e951b12d55e48f71dbcf6b80304bc5bbf59180011f6253daaccac7feb6971a9ff4c58561d6f9561abcfedf570a28f90d4a49fcf0de166d6bfdbeb920f5f4301655157910b4df161fa32adc762bb806516789baee9e3d5cb5c44a6e647530f74679fed58124f31fd30f13cb33ee14cfc4c7ac4a127176b11d45593badea2c24598eadfc7cdce6b0fd6d9c23c3002ed15aee7e463d7ecae5a795bfd5d1abe623251450e3138682ca5d6d23b8566ad1f67e83ebe6e84093fd120492407f3febcc93004b0bdd7b3b4afb3954d910b9349153e4de70ea74fa57663d2ac61dec23448e16f4839e4a7bf1f2bc262feb543dc7a6263f78e0d67fd2b28cbb1f8df96c424ba480db129846293643d6d5f08b7a6cd4519b5ee2c7da7dbf08a6817515e6e87208db52bf5b5969eb5a28e158043a4ff1e1c7800516da01e4dcc30b9574bb3b289fc6b767122824e6be7416ce594de6d6c66e524b8639bf33f4299f3edf3fe683decaf51883676fd560be034ff83736bff61c0e6b9e99d69240dd4915043334ac27dbd466dfc661cf5f7d4ffa88a7d100e16427f0a0ba2066e655226503b393bcaa9c95099484c5de1fab7827fd8bf069ffbeabcfa8ca3e1adf7d199235374430adc1e471c8c340d217ee0a1749c71a35a875b133cf5b583e51bfd7234229ba6b4dd61cda129e2542e56da1d0176f00b4223c91269b4e572d98cfbb2617f3d658a578e28d8f72c9aebf367ca8ca4c4153184dbf72a2bf107f1de7ef5c603fe32cefd5506f0c899d5a5a2aeeeccb129d97072b629e1a8d52dbb9f1549f5d40970ab6c16530cbb4adca53b88b8fdcd179553f5cd2e923f516647ed20a2b4d1b43ab0bd6601c94bed909e24c3689b7dc05ca8547115c4364633120dd4e975a69d520a793951f7ac97eb6f9ec750fe6a33e975b7bf4abcd8492b7ecd9c35cf697183f8ae95428d2010d0bc658b5f93c71820da7982ab81cb8dc8bd39234f6cce6f82e0acc3f5637a69942d82832a1cf68cc73ddb4c0293603da8e3fa25f3def0cd5d86144d931eca435fd691078c81c0b3427e87cdb77ff9e962e6d83665c6a636179d5eeb775e888c797c2ce46be19fb1b1cd96492756a0ed541c1c1fc55656e034f4cfac59ec81afb3560b1e074adda5f568cb3fcf34668cc19b29d8db38111988748ced83c5e91cac5a513d06f357fce3ec5ab3fa20d6b0dade634adc49ad290b1a2f6b7576ffb7aaffcaa6cfe0c4fac4d8ecc3776e8684d2f0702db8b4190f097271cfea6eb53fdd8f65dc9624688ebeb230ad2f9b192dc9b59f5fa2fcefb12b82ef129724ef14ee327d8eee09a1d50be9ac3b24c7a07c8a6432c267858d1c30ceb2e22cc41300b6f806316ade9fd6ab7a5ca228cc813fde01cb05d795d6beeb5322e8884f717baf7b04a62d64b7477446ebbcf6a9a1c87be271b6292486a9e6e79fc69f930f0a1b200e547f63440353f8a3435df4d53b0a9bc50730f029905257b7e9297b518c7ec1f47701e65c584244062905ed09b36b010075e98e1842f8e8653389630d3d27316cab596af23825aa336804f36504972394d887d5db8315e375daf7e984bfdae651b391327a197e3c4c18170ae0d32e59ca6cb9ad320d6f19238cefca6998cd13716e937d665fc2f6de9de4cb5f55047b1856bcaa4826c16f88f39106d468cf491a53b58aace3679bb3ae9b286ac517f0a34848165566dd3d10abd9eee6f8f37bf7985f90b6a0a8939a14c91d4c5b2fc3e97e771c5b4d35a4439402c36d6fd479b44c8e396d895cae202a1bafb8987950e49a00eddbcab7eb12149558f20d451b570943bed1492dae6ec979e16f06f8e20117d9492289dffb34278445c8d265e880942e3eb563ef2bb893d4bfb14f08b970aa32fa2e6eaddac484fcb30f214248e20954e2d1fb76ded902593dad1a14fbd26cc364824e9f9b7ecd98e648ca0db693f7bbb8ec794ad3b21d7b58819297a15465d4217e533f20e58bb3e1f1cad864fd2973d7548d4db9d71a3941ebe2ff38248164ecd5f817a579545ff27bedcd568b7ff1e50be1df68a6de2dab50ff2f706a7513f0bc3f52341a58bfe86d404e236cee2a6f675d543f6612400a213dc8703d0095866c400c486dfcf23eabee4cd64ef027535cc55fe3595b22263afe34e102790458fa8b48f30e95a1fdfd6909b301cdfdb65377102b412f294243281509321b0dcdfb7a6fe0be8fc4278159dd8e5f6fd7db712ceb293980933661349c10d54795e3c9066c9239b28e15fb3961b651fcbb55cc308efb3e9485d2f128e2117c40c02e243cdc86a90d50cf333c0a23a80d7738df04b7caf900e0ea151b0442a399abfcb4a2743fb9dd834de55e40d29008b8ef9bb7be16256b270fc7b96ac327ba52bceb21249d326146aed0b4c34a43df4950bc994f34cdd9ca0f0b0659daf7eddf8663e98b4c16359ab48859fd3da0a03b7014ffda50def00da8909abfa319d4ee4e4fc03aea28bb8b8aea5216cbeae991c04b860bd9d741775fb536f741b773ab416668be3025985f749c28006c432271a0858715f0fa6f24bbc189e6eba3bc2ccb224ae55880d1b11ae02931addc441a3b4d921c02b068de93ca679a696a40817be3851ca7ed055ff1ecff3d0c2074428e7a7fcea993017beb11ae21d3393bf3989321a490ab6ba781130dfdb54e143e792be26e3d901e34cf5a496182411926085000105f41f1e052e4c1850aa6b6c41d8a6b3330f9b390b918886219fbe2aa46ff9be2d9435b34008ce3081b03cc090084d98c7c2be690322a0e453b6b4ca20727988a3b7270bda38bbbc599a161a1a18d90843a9ad62f9add01239a8b0e5d7448beff41dff8f58274c3dbd40c4aa1e02504c9db27a5107598f305c3f37a360edae83b6bba798cf31998e2767548272c3d79b20c2b099d10d78389d174ddb829eb41bb6671ff05be7acffeebe15277f6cdd509a9a7f930cbb0175a88db8910bed1a93ac419ea9d330c83de1bd388c5bbc9c4419de0cb71ff8bc349a9a5785d5f3b719675addc8576d84ef0f81970d0ac1d430c49ac548587f5c1b659f89c04841ee51b106d724274eb34ae695b75a20e3fb0b31159ef50db6104104b2265508edd6ac2ee4002119e07edfd4d59f986f1f2cd18c710b9fdfe7df731fb641151f5b97ea3be12238d926fd1d4f029055242b3a00649c53e10d2046d6c8a1da27072eac0cdbfe401e7adfd259eccfc370b1d105476d88185f90d652d73cb0351e1aca1be279436864461d72ce065a12b8b4111a9e9a2807a3c456065190805e347ad2be02989f4501ae04ca087f78868c4f61ee82215f736afe645b89a9243670a115d4047da90e78984ce51d9b08232a4f2baffc130914edf536704cff200b0ab735af88d695d485f909a9473b649d6730e48556352ff5f4a4b1b1e9c1264d313cdd2e151613df780074f636bb7d93bd1a25242757f6ec62574e5485c33977941706069960c1ac98fbabfce6833f73cc1326bcb9cfedf6247e8300206c94966b1173e83208e2a2966e23f6f69e082dc089e271dc97c788ed1af4acc401bcf04444577a40ccd2746f6d9247fc0636510ee08eb02d66055b29e58191c2860c30cd0c25fb1cd846d2b23a263631092481ff305579d51b3b6ebea6418d95eeaa06caa285f0cad889cd95413d8fd2a7c4a83049890cc9a19e53e7cadb339479be9a6ea3a952a0e7729e94cf614955da7d69e5ffccde173596ced68f0f641b13ab29776c3e9602c9bc8ef9dd3e3df7e76a9e585488f5b12071f15d644ea2ab1e01537667477834e4465038330db3620a4e3b405c52a9e72777b4ad6c458b68dc26ea4c835a86761902c0a114d833586c2c789cda6f64bd477fe743054b1f74b32311d335d89a19ebcccf8656d38afb484587fa5b8ba7e7b0676bf14c698c52da37c12b9150b4a811cd41afd4eaedc9006c3a67e3bc0b80d404c27c8da764284912cc607ae6df5bdb77e84d69bacb08046a03bb630553b686720649204b4759e20d7ff7fcb78278f960cf4f8327db115951fc188fb8fcc4b0f23c8b71c34e5f893d514ce1d6264fb4e5e4ec2c64474f3f3f31c3af8bb29077d6e9b9378d3218a62b9c60e8c79182a12a2b371c291efe4d5be10f5afa0055c0a1693c1a39a15f6d09769d727d984d9e609eb67f8aea4fd0f57bf4f394c370def2a682e3823b68623036518e18c029219516139d3a31ae6da8728df1754dc19ff83441b2ed6256de0892729ad486bdc8ca032b4baa873bb4190309890706b03d5089837e7200d788238242a8e90ec12ab7544a9a8352e1591238f695c4fb9be6eea975a6a914c3bd175180590c30399dfc6c966e0bed9055d1a77741b9e2d63b6b0ed8b832f7fae71313dc7a97c85d522bcc29cbd1397ddc8754d71c9a886c40e25db89e0b0d99a8238a17887e01917bfc21b9825f76ef1efdb111a27a24652e053dc65bf549496024ae64cabcc96525ddeba2431e1f3afcba3674e00503df89bef52942d75b3f8b16641d987f3df3a50ecb2886c65bce7dd616ba753a9bf63670631f611c726c270d2f4371b5c0eb8a2e4dd801594b127076deb60cf07456c21d43610c38220a8535595b40d99b465f109f0aad0f0d830eb6cda5df217c101c6224b9d989f201643a75b8348f9dd89e0a7f936860a102a152f06f23c10641c190cffd69e416b0f9293570344907b487626f8d136de457ef4368f86f2e29e66594672c3a6d574efb005585ed5e6ba07a07ad9132eab36bcf4ce71636eecf6212687c5db8adbb8a87028ee7fc2ed4060c4c0f314875dad322fd203948dafb1f3651047b5c4cd1aae60b0ba101ff5d5982a5821a830e320c04ce93c9d2d49b938c7d6c7f72fd1436893f5f3eada0fc6661231246e0f9e463d8355453e28356931237b3ced83dcf4e0324b6ab161ad627a0d682262bf6a133751901dc4a976d1e32b03b5f9c04ddf15e1f5ba9321f1668032607b852d63d7bd691a7fa24264893ba3b133a3ce896e922305151baae48dd0ea13211cb5f8e458efff80b9b0298727ca845874f77c3ed2a2ae8b03c677ecfb0646ea36725a3a73fca9d59d0b7c6fadee69949230ff56c3433a49694cda222f9894220b3bf1aa58414b5d26f0da41732953e63ebb819cee5075080aecab6a5bda102d69a0aa6012508592fda14b8806ee3af7f622fcc88273a0ecaf4fe3e0198c9802d8b0aa890350c1306b631e8918c806c4dd9cc5a8c3b27ee37aab256bc5b987b42d6baf27e0b20bfbfe7baa8c6f60f21625c985364622bb912b4915bd99602d38a0dee49b1d85981921f434d4486349514d40176dc552d702ac416107a18482e1f8c69938465eede8f0e64b8bce3f88e37fb8e6e3d0d2d8d36eec27aeed19352fd8c2282e6e5a092ed85a6dbafeb6921ca0421bee3891ffc5fdd78c97063f95ac5e87222ef351fe7e72bfdbcac1b3ab548f479eb81a225352e2cba3b7563dca92c71569b4c164a9719c79e3a165b31bcb6c8029460772a3a4451b56c69ce276c1c10cd38dc43e5cbd5c1c7590322a56a16927c2bd58b2627f7585960ba71827038027e21a8dc94f85b9013c25fd4b7652c9aac56ca1f177b54d345f2cf7e665df6b0fede0d80bfb19c4d81d19d53108316732eaa0c3f1b07ab989d980a0acaaa452d3fd35c539b492b1d0a45aa6408e1f0f9a2469f8b110e325dd0174434bd144b1d36178cf4a202a92d2e7af0b0c3520d41c9a7d56817eb5c3efd5f76c82bf40c92cc51580c90d66e389310c1800985eab1f28227f8314b478156ad4ebe36edd75837ca34c323d7bf6cba3d2fc139c324d9592df425352ab7f689bd72acbc7a9c55d1f8ef5ae99ee250dd60e71dc5c73d485c7e7578371520b0a143195e1d7b7cde82662d94e932b7b5e24f20b4c81da60aa5a639ae2f3f6683c28da261724fe19be2f5ea0f1b98a497fdb27d8710ef8ea26d7e8028263f21a3ef4a53eb942576a6df3ffde214e35a6320e2bee2be67779b7a71ef98257bd80f3552c31523735a25699b38c2270382e305cd659f4956b64808a8bc500367cc83971636b68de9edbdd585df27a9aa3a457a057a8dfb68f9f6dfdad3af2f52523cbb9bc9d7b7dec66ac1aa4016ac8bdaee7881cc04fe2e154ef41ad05531b1b678864165513786973735f1ed41d0ac18feadd76bf3bd3a1c99d9f91d9f1a8f50dd0d270f2505465268d1fc6f65f191e42501018db41958bfa6b2ff4c4131e1f665e63a24416ab4c29b92527d2e501a80572c5da3b0395886f2e44ed1ed3500b262063d1a92397274d9ba7dffa436d8008884d05adc356c8dd7e0a0085e33f9fcd54aef14da7cafb294d69f0f0b160b7ed433ee1ec0ea28730ea2fb386b0fbb4eac5dc989a1f011ee465f39a6edf3d0062cd3b74561fdb001a03650da5718b9c79fe938bf5f3ee9be39c499a1b9077584527855df47b755bf6702bf809e0fc77258c86a78a3081f674e16b000bddcabfcc7b7b6c853c6c79f3e815bfb010eeb89e67bb7a515b5bcb0c6e794d48ba519d3bb2bb010edab40c4e263493104017b08723d71e6c6ede10dbcf544d523b200ce7a93f560cfa0863e646b11d9ea1b1694b41627a9cc030ba83578f14c9dfd93539cd3eb78ef31a19876454c97ba00b644d943138a88623a6788f2b837ea58e3a57a236782d1b154a755792be81b085cd2a82a7b6004e54cd8065936e804d222ce0113b0e41de2f5baec9554d0c430cd318f624b67b90738186cd7fe470f0f205dc9fbcafac30d055587c253434c2028a0bb00c6874710b533e7ba241b1e68d922b9392ff6cc4a6dbf2a578c512e336c631006dd29345a98fe1a9b000a378b0877f374d15266d1e93eaaba06710f10cae21c4b53daebaa56a7060adfc7f461bee748e247ace01dbe8455eb7fc40d087ef716eeb16e49faa6bd8f8e766e16028b92c14c3101bf5b85143eff262fa3001bad28ea1dd3d586160a7c0111f44785244b0e5e95f30b301b5f02efe654f334d7b21318d00321ee9f3ad7a03966c86f2a8b1a96749abbc78e6445a718f9640a787da3680329f12ebd22caba507ff82f04f127d403ee84ed7c67361d14004e3b91940fee7c6518d367e15886d361b3f87981c5c6d78ba29876ca59eeaa0ceb2aab6fecde7cca013c6de29321132827946ba5c366fe70736ebd8eb15e60073c3c74b2993c50fb01c91e986da3c77f7223b240740b7d2950e77d9cebb9dcd7612a6e0a5b09eec7c9a4d699131f2e3f09ec54b9fc54ac2ba0f39c5f282bd4adc21458eb5fbb59a7cb71b6b22b83cf7195a304dab1cc448b13702999ee16955a0804f3066b713aff00f154a17e36e0789b38fcb1c55a06c61f99d414ae49050e743d290e27591f342f9e67dc38ceb7a23c5e6c151b6273824c2cce9bfe1bc2085637ff08c926762dc625e9cfd630e5fbdbf694ddfb9e8d36dfd431b747e9a4af0d1365aa1b7d0b6b999374b20cb512d0fba944a23075fde944bcb1448887bc6ba60ed3bd1ef75e569587ff41d7fa8d613e443a117ee773eeb2673f92d5d735671c0e34c2bd1ba37d9911261212900343f0938e952752545d1736ec813c785354200d268cbac35f36e1e0ce179e33a55cd5e345ea0a64ae88548dfa8b9e7cbc27be022e067edc6ad8ea2ec88c8305024141109a90b0c746bc98ddda09570ba0ebd40b0a60a33b6da4a1bddaa406e1421a91c1abf19ac8e57e0cd0340a047d6725cb35a561576815c131222191f6c643ea3f51a328a3c12337d9a2aa8ef57911874a24579293d6c18d177f7c64c7d7b2ec65690ffa91ec9a099528c136ff25b7291a01db462c937997dd115e27ab4b5f2337bcc085de53567e390cea2ed9ba8ef01a15fa08e7ef249dec092d984ee68d6f03a17ef3cb789fdb8bb273932cdd62ec93187eda3eba1e9d33b371b95fefbb6d494517cac08e634b29f1bb7781214960f306390f03818522b5aeccf8290654301865e69d4cf6559b554075ed341899f4c90be5e2cfca01c7fb8d56f9e6c4bf57f215a04f351527d3eee88e9d12e0724a82230b0d9550590720af54abb4e0111bdbd3354c0c526ef8efc386474d8f9853be053790fa4bea6b1d4dd804e7e13d93e04e772c112884cbf2cc73b6a5349732ad1f8e3f4402549670d06912e0f9f4f02668704ada12cf3bec957318afd51c4715222687c88fe737a82c67d4d48ef2f2f1bebfcc17a2ab70795736769eb04cb16d1f6ebac85c57e1f2aa91346be53aaf3d2c34f590dea5b2e067748dc53173524c104b6e3071a16591d32f07c598c991bc00f44ec93dcb3fd59b2c7224cd387e432c2d1b1eda234a05e01b9c42c84254ff4389b405f82c655c693215bccabef46a1fdbfd85709b4e98b561a5dee7170da6e345932bdb2689e57f9f9b925a590a0a1ce742159c14a9f5a4c20b6340e6197587ddbedffdacd3756103440d3ac6c82c287cefb34be3e4bedc29b734e16dfab12ae0d96ebd229a495b47955f80fde1273a7a70fd57deff1958bce7c25c59b049413f1cd077cb6cfc0effb8744841ccc13b2f8977cd602901f10a35b2b0eb5ceaa24ca68c09eba3e7fcec5c4a364bdc85185abf47df15666a445fa7bf7433d5faa2ffc28e5f995d9fb82a16115712781c0733d1b2ad9c7705eb3ec2bb76d406024a297298858ee59812e5f6697fa50d97361a87f8da6124a2b6e0f04670725c2dc20bc5a453f46c0d15ba5064fe075c3b3de4ad09fe213307acf959bc2d1398ed946318ebf055a5abcd457ddc2c72c8e737468b73b9d93739ec2451a7ebf1afe6ce00b950cec1a7ded63d8a30b3bc42ea354ffcf4272e1cc0e43574724addecc7b2775a46eb99ff91b5e4f9ff5aea409825721e2a7c6bd7e822ea54ecb4005f72e1f5ea29f2329035b1ac814970faadde399bbe607d2c8da472fbc9f42e916a0a26b79d9ea858a862fe65ea969f39f66227ba64a6307f786681e6972b6a7fa9e3256c0c08123bd7b8c8ced79472975c7e3c7d98fe4439a34ca2f93ca85effc7d0a6644c0e39a543b6cfe871265692b2272ac1194d9fdc80ce541c44dc57de6cb4cc5afd37972a261391e868652b5ffbf52f99efa3607bfea95e6ede914c54586bf77f99b419b7782fb1dd1eef164ac699395b0feef00d92ef213f3dcf9c38b6f7dc09f80a3d7311922cc0fc0432605abf15f0aa145fcae7c7de272b395d3a683b3d62a3385508cb2326ee61e017b53bfe01f977ccf5fce4113ee39b4d806bba3eecb99cd85ba638fc5c4207a4c81ad9751ec0196eee6bbd2edcefa1b7310adb602c30d0985044bae58d36a7fb9da673972a3fde781af2dd672fd221234d1d01159bc1b4fb3e7d98051116c3e108fd84bf0dbd836191bf917739e45aed7d150dd267a87fd080f411ebdb252cfdfab676f93e5f44b8b57aa9716501daa048d65c475864f0a4f4258a8718e1d317ea3ed24f02e173b53e67d115417a41913cf6843809ee6e8e6f2f36df6fc8d7a111ce1ea01615b0b6ec7d9185e8721458123694a0067ad62e5451fe5c78f33448ef63c75428c454445ecd3264fffaab594d457162495fb8d7722b8849ed3a2a28331c9e2d3c253b4cebad3329a592ac75676f06eb5aa2704968e925ddc936abf81cf5456502271915a7784d6eec4d72089316689ef36159c4dab9b6ef7e7d82a32fe6d0e70869d0e6017d26041cfbb23f08c7e6322b279c82817dca03a9fbf00ef3c7984c399ba3536d451b87dc11437dd7ca9f3cadbccdec63b752fc8de35b7d62874a6f18b462bda2dcfe7e6f670a88cb5bf43c0a82080dc3ab5b071f3d61ecbbbd2c7a2314a3de855739b78db97e8449359c1626204bf45d0482d2a791d467bf2378833e3ef13eee0bbd7a7b609aec5814411c60296e9a0745f5f1f7da93184803dbee3aa88c31d12ca3bf445dacdf1d422c9e22196d428ee7fbba43392626bede80ba2de1314416aa5ed8fa074fb725aaf78cda07b618294d1c3fca6c055adba85bbc2c9c0b9dbbde1868225d0f9f0f3567512162bfa757b5ab0e232335c2d3dc11030c59fcbcd468d70456c86057ff1d4eced00e7d1df175d8e4051bbda9ae259fa326b65443dd2bed7dde4ab096fe1553a393ba22f6b62d4486e831d38c5483d86d349b3722bd0e00bc4e2a2f767afe362713d95a45d410ac5137fc7a5462f7a75135b5e0b94fbe88f17f53459a56e64a170348f5915e1240a7b9f09637a6fddb5b2fb618761962788de525373fb1593fe584328a296de89daa5206bf17b841902d1215304283cf213d4341bb20bac2941f5709a2a8d0efc330eb8fb1e704686ca21770ac1b4fde9f4302f63bc76b69606e49d3da5ce034cfe8c3904afa007b94ae231b521df37cd5764864a148c7379b56638de7f69edc68767606da5e3dcf66ff17a9c87be022a7768958988c238d1721d40eb42fea4acc923cfcdefaaad52f9f3f81b9331c3f47b3c04441689329ed79692fa5789c2e59a5b064a9af5b12693b09150fcf8ec5774337a6f9e5f109302fd7ba20d62a821151ff724c62fb099fad2d52a287156548ad5778467809a9ba08d3c46de9bccd295b52444c50025eb0ee0507cfabb9596ff40e3d6a4470fb0f6bfcf181333030e6242f8711d90a81d4242c2d89f9b0e92f1a48dfd431d9c9553c627db88a6c3335bc4a8f9f6c4302fab921270c531fa639488af9077983a1654a0fbfd72319c7eabda9cedf98e80c01943d847ee2f9db02c5f889721d1375a5b5bd7cf2fd718b9806e4dec1c52b3b66bab62e600e5bb9cfb5303b874fa8fbfc986cf11742f1098d82bd34f551935d125a1459de319c5f16df7f8d40ea42058797de3289b194f2916119f2e179f93e14fd00b83d0c9922b8ae03497876df3eb5106dc1658800612079ef4679542245cf39a435b8ee01df59f72ad5fd6b850208deb19eaeff19c3b86f6b4c19f9b0947f08380ac67269b71ac2aa719c4a8201ee57dba048b8d3b250777189801f568141b703936f630bff37420856bf966bb6b5fa114e92a0f3f53d3b188ff922a425b8b40ec55cc13e389c6125986f484e7bb873d1f576e3d042aa41dd271d2475cbca4cbd1a715b426b97875c731aa39534f24eba1e71e16beed73929edebd974c2d4518e20ff113e10741d7bcbbc77cd1e4e0d028c2e293822b510ac4db7a767afc0cf2b94956f9f56a25ebfb2322a810f0658dc43027daaf78b222a1c75caa6629b2883b3c4e785bf54e5ac3ecc39575dc0d421ca49ec24df1af207bf96cf62b5cea802fe954bae0dd8d5ec8e888cdd1116732598ab57ac8b8ff32badf34c9a869260296d50b0f649c80732216d8de69dcfd43c3d05686ea5dfb5113b83815b4b313a0758c5cd01adee092ec422346da2bc79a483e33923f50de7bc81c766d99bf2e790e91e9b6bf7878e6cedcf657b5d9314caa29b95b289153c52c0cc474762b2efb782f9041b6f83ef15e3121ed9e039f0ec848cb9e23829e20a9a383fb5068a7082afe63d957b8c7ff116a5ebc5b1b8f7931e85b39199ec509021daa327b709e49505ca7e0e0313bb84fc0adc45a9ad0d441a0e50e5d22728a53c2207ec78cfaa861b5ef232432b1b3ff47487f31cfa930b0a3a52c89e823247a51ae9bee1201caf2894dc9413ff18bd69e2f974649c02034f69ed9be7e902bee558d2faad3abc026a033794230f58b923851e109f7ce81673d05659446b67ad16b5ec6af0a4e4a22fbdcb9a3e20d7367c13a72a143b7b6a0282aedfae727acc3be8b1b838f5d13066059caabff4d847f00bd9d5588031a0ac6cc7b5d998c7cdd95f12b8faddb63d7f93281a76316c22ddfc451fc4912b8ac125db430b29fb95c95c0b4f2cc942280000000000fe96106cbd4a388a6cceb1d6281318e0f9a2dab575a9cdd5dae9a33460ef15bccd861488e7341c616562c77714d2b54d79861671ab3278bacfa5d41d14ed162c118383ebc79285831c3a7edd8b2efccc4beef449d2693d073e09ec8488e925e4eeb657837488c73557887fc4c88c95697abf58b4d95c57f32724ce6959f72200000000000000000147c6d3fcbea6cea1ef530150439cde787f28ad6e861bfc8a210a885ecc243f910700000000000000f1acc9f427f2b332fb97f49e28f69b3cf760055fe908dec35df850a11691ba391972ef6e10f6bb32b796762a4620c995809874fb906a5e9e169308c09254f12a000600008077777777d80a1977000000001c1d1c0000000000010253b95b83a9d56ee0c02725270c3364d76f96007f47546e0929a2abbfe8381c33e4d7ffb2e0c04e83f4e80f95137dc374a861f81ebd3711847d6cac724253cf04a6e5648af2598f87416a17e8fc8eef7583b1a563ef604f27bd3ebab75ac08dac3dacbfd58cac9001879fbeebe79980c128dbb3393d94179799cf7c7a284c911d9d62b11c7963180b0626cfb2831733e7f6579bc3c04449029492dc5654f703a68152c3c682fd8ec139fe5ff59c77d4d4ec34d5bba8b10f3d4c368454638aad869fcf2a6d11b05fcd7a093daed721d9a9af785b16311f7e1205852df46434a19901db6038d30da3f12dc65bece8e8043888fd05f0d0aed9142ac37b3d3a3fe7033f042518a017bb8f3a36fd9312530ffe3207b14d027cd06ce0de46d94b86caf4f773bc36fa8ecf12525e464ba2456cab94974e022bdc1f378ec651f64b07b4bca910d618b95329743a32675e832b6c48053fcefad2a0e59d2585da4f08c0756055ca30c4a2e79004be0595a5964998b671d69acd28e4cc9f2d9da25ab530c0e551030f7fc182753118d9e7e2926d5a39200d0170c51ca8f70abf62b924b86e9da26621dc2bc0bf8fa9814e582cb4338ff3e094aab291c6660df4de350cb7856c33d2d54904b9ff6782eab40b7beb2ea04810229f67c8893b2d7b80c867a3327e0cbba87bfe7350e4cd219075a3d8039385c468f4d7637e794a6a5d22cba40d0760a92bda4368943161e3a40f4c3b2e2c6cc0e095689d1495a74e5909408fa2d81ddf5bb048cf0fb839dc8288b1c9875eb9451d19513f4d974c01c7b5404039ed8141ae4c596647281f308f32883c46a5f3f7555f8cb1877328cdded6b7699aecb198dd562bb0eaf77d1241883a0e672aef3a7c6382900b589a0ac0f31287670047b3698c624fe06e6aa1a93c2df2f69e6340d3fa9058d17dfc73cc933f90013811c9c2b2a0788da9d0e15db80b5012dc5cef02b7be74b848552f1caaea6f4a19b54f9ba64bf2748d4f9bb734efeb16b13c4d7f2f3238730c7f8433372582745041c34ab9f6b7c9f9b33821082ed9c8419c0a8de90524db29b6bfedfbbe819b0a5855a50577769a740987a3a51d265eed652036ae86bb6fc634473f4995627e651933d17ac13236e37fa75208d80e54076750d3f7ac026c1be3eda2d2ed61064ac45044b19d6bfb7d17405876c969a02940e985233f738deb683dde19861977fe4d09714e3951c6c0e3ee6532d37077898d629c944e48c87998a65a83cb5d6ea25c86b83cf70d8bf0d9f505c01a14db5680ae813dfeeac10bc57be6485f0e46f69bb6c31bb1f721443f2553b21ea1ca8186790314a0976abb21df5a2627f62eac08a2021e4cb6a66293c5edc990fc1448e8e0693cf6211c912dc1c7cfbf3956366edc198e82c1df5fe8ab81648860cc3e0981702eee97651cdb1eab6de6a91366129028fc5c09cffdba6285e9cf30c539d4e1f3468faa97cbdefdaad410032f4e544ff3c7b200d55b3e1e33bcda5bbfdf22927bfe60b84c99a5c387d450a1021f4470bcf7fee619794c59078f23ff3e4ef9dfbc74c9154c29226135a79ee3510bad41dbb363269ec3ee3e8ddda468ca0322a43c7cc87e1236a9188a08a405722318df22e8c8566b95b96ff83ce97d7e5ee25cfa6155072cd5f6a1a4ebc2109eb4bf9b5bc41be5cfed4a016302a5bc373b8dbf845118441563d61c4bfd4217ac1c015585364f56e7267234c8924ac1a2015453a76298555ba05c94bd85911451c8cbd8f2a58b30e67c7e24698c21252e8c7eea4506ed088e13a40da2623a16dac12fc42d1fd6b929f78fdc56166c736487570aaaafadd33d8ee7c3cae114946538e29ee567d004fdf6bfbf2518092148e9041657c11eff078165fc80fdefd282a9d5561db27d35cd878ad9a85916f0269411ee589cddf7f667eff30bfabe53dba5f604a72b5d1a18ba274d0d7504e8508a102c3ff03fcd4110edd1ec98ce8fa6cf41805a1ad06fdb1a629b3d695767e8b18263c820d63a2f3d4b0cdd465f9a5230b3bde33e2ac88dee728d72cab5b203582cb2960fde444c17343ad5f02765b38ebae6f9ed8f3854cf99d58efbfd7514c7d75e472223950f9c790de97459ffe73823388ffd0207e0d064499f238b4ec9cb66b832743d356d765e52aa196c56d78fe487d55a3fa20d24e149409d93f40d2dad301a9163c1e496abc4ac792c4a5ed925860c7465f55c2e6140960093ef8d57777d13f91fc7043ec29c41b1e2d62d92645bfac748d02667b60b36b9423e10f327afaf75454261d006e9210b18ac16ba1c4738a4512e1d51b8fa8d87fb96756b54b63ecd7516cb09b071ff5aa4ed4b7e0ee4e7e4d488bf9bc0b09acaee38850c8818005855aa372a81efb9458dcb15c43056df2f8be3b7b707c8a6432c267858d1c30ceb2e22cc41300b6f806316ade9fd6ab7a5ca228cc813fde01c3da71c78a92d5643e7905b81f40377fbf1ca3158e114176677de7ef523e19c0a4e6842fcf0e4dc9a0a1ac3e851ac923dcf508b6caefeddc55f4c114b240e470c409ef29ac44e139eb994b5f12a93cc4c44dfd018d2752c4989e213816e65e2b4a46080e6f1be7fe9af712bf30d2b0ebaae9d4de191c490517ce6485d7f027185c2c4b0382f875775cc77bfb38879b53f4145d11f8f728c1cea3abe9642757f9c4645de3300be50bcf5e130a4ae5d6d393748e561204ce00860a38ddfafeb560cf7214c8b916a895181de673cf32d1790d21f556f734936c1dee61369ec37088c2bd0a6b7cb1e50505543699b2f59e98623322a4f78a88be99f11f4d00a324b2d3c457913cf265c0ee471173604b939c2e988a9bea5fa8de1cb58eff9f2891ca3158b731e61dcefe7e67642ef8af47ae342de7dfda7bc56e39d3c4a6a967ffdb2b1c89aa835260f9990228cda1137ff1cf7190ae79b333376e0df0ed93d0f1d1ae244e87f6ac82dc462825820b1879db76ebb293f14032527c0a1bfafe4ad97ac309c7e3e3815a3c56cc67c460c4cd9a4eff0183162f470f8eba974f17c4f060176277b5bcfa3a2788fa9cc8adc5781fc58cf54616357c26855195639cdc5bfa7342ee8140187eb0b5d167dd3be5257c3ce96b149ea61d065f139768bdc327cbd3259d7b22dceb5322e8ae528fab9499b917835837499ce4087be49b18f9982837f9a2b01307cece3829e601221a44710ba7bd573c51726843c63e4932182318b1787faa68124b72b5ad59acb5845b6f6fdfd494214e24a51e962f3b6cbb8ea9a98500c3e8e1d423151f85f51ec130d951ec324e23bb238ba4eb4bf9684b8d00d16a7a2db387c8e0d1ba0862926d7ddb28bb9ee2d5640633109bb1fd61cf49699a0ada6aaf882a0e337480a37a156abf6a21bcc646bc3de36bb0e0b4b38e5fe2d7b1871dc1edd572dfd6efd09ca10836caab4f06142aa33fac394db56ba0319b86c26a45d00b8bafee22533bbab1d84a6910fabe64b7f833cc198f47d89bfc888795e22c1498c7a1332e44dc94c63ebc2e13665247144edecd452037ea7df44a49be217435c019a8a7cc404d2e1376cba6a56a419054a753f3feeed4565861d1d5a7d35618d98863181e6d094470a8eb378a539be3c181cff1c3622c6e771b2344df22eb1931138ddd4c69bd5530761bd3119bbd91f9c6aac13a261378e1f229aa0140c09d6a81c08052418186da173451d77fb91a583b07053904b4c3685f49f9861a91e800f30793cc9adb0941a0a14abcd763b8f3be96e3f313898d6b8d68eab4f38c455dd59f87217711a6b041b831f569e5738e0e0414f14779a253a8e0aad608a7cb54a901c5630ff980432a4f8e5e70c01b3283ac4a2ca5e0a4ce8899edcc5cac70b5392969018027750eeaf6193cbee1084ff0500ec9941a0a5fcad0fdd4029a6eb8d9724a8714dd85acf3d99251a2885a8c9cc0316e3bd339252eb0b39cb228ddf049f7032f82aa157164381993e4ca1d23382a76efe5f340c43d133244e7e98841b33689fc6eaa42eb93e3d1a45bee13e85eb56d9379edb3c116b0acb0d2a126ff010bcdcd36c2f0595ce534d5d112ce3e4fa1f98e0ef35cbbec121a8f31606728e74ade9ca9c433712a1adc6e01d8a23af7ee22d88e6bdc4f9bf0234f8c0362c6c7952ada4126d29de890ec3f2b2c3f407cf34badc7258aa838b829b9b87762d7c829bfb3ec1cb525eb391dd29d267224ad98e43302448f45de1242f5a7cbbaa74d7b7349bbda1933e9c148a50bdf3746af24db9f43cbcd2f79108e09b97d3ed7c857aafaf8880eb77d835874f506dff03f74da2f222db170500b5a1d2f7d2fba1f08ec5e4f0d613f0cda64425d46a41a6b60693aec13b3b3416377c3e7e16cac1d9d16734596a6f68e52869fd5341f73d172870c723002a1c069d2c7c73f1e3fbb3ae77db8d7d572ca1921355d92d27e84b83635486d186ddcc1f5d0808ae2121b9ec367921be5fed0492fdee8fa26f8d70a5f4e410d4aa8bd71230c0bab5ef8759c139b0cd8245e8f8845b72d8c01395301854b5056d053643bdd54ecb2fd65808361dc9d0a5d8c69bd24fddabffeca3426994dea483db9c2c0f5ffe3fa6ef59b828973c7844ce7e37e8d31f614a4ea8f4a7f11f0c0ee267dc941fe5b1f8ad3c071fcba5cbc2b651a96342e9a85efadf03d425b5bffdb6af70b7919e5cb5fbec1f732fcaa5c1708d0951a6e729c3a6180db37dbe1490acfbceade8e439c024ee33830e612402e59c2f7a4574a0688919e65532be828f3488c32412960a5e03f2fe6ccc3a0786607004e3a5482d2a2bac968e31733767683f90b9f151fc28f02fe8e213c312ea0458426b206222034c751c57c73c132c78f714197f138a6a264ba66b5fee87b9648ef0d210293d463fe6e8c6d90949004dfbb23b4ee4046c1d1d720110886daf14558211a9ab567b9f9db9f0f6bf0d2f9c39161a9399ecf2366bc821f58facd48e77478945c2a626995cc07d87e22a859e08bc0370e0612d0b69a3182d7f2f5b2353076559460e81dda922ff251a1e62ddac3f27e9a41bd1e85855fa4646de0bd8f97379195ff09a1d54dfd8823e8cb0a3812811fb20ada1a75186851a2c695f0e6f5a12889eeedd9ace07a1bf8c83d5a0070833fe64a39de1cacbcfcfcac1e30120acd2a1cb9b31a20e6df2e54bbdad4c87491fd80d2837e3742f8ebbd05e53873d4ac9e25618d2f23594a294a8c8d1bb94a4117bdec3d2e44d5c6550adf4de3c1d90b8de77c868074e19685ccaebb1e690580a5521d07a71d0f0bc9b8b593d4a6c2bf4803bf07d80f46a56fde550a7f807dc05a93c33d13621bbd676dd3e8562548547dfee3e04ef2b23ec03e2592165a5e409092cfd2b415b1b054b46f85024b09e0a60e2f788d5b1d6b893522b45140f930e86ca426e6ee21467e00411dfff237ef275992337458cf9581dbc9ff3a7c9670b4aa70361c178249e7c1770cbf9d2f0229fc892fea911f7ecf653ad4996c59907d9d5d435001f924fb19d1391d66170232a06b7b9e261f4a556121bae9672d92d31b465d54698777ab4a2095ba5aea1fefa94c53888cbe365485f0288601f0736ec80c81f410b410ab037d631497c233b2ee9ae62f6d285f1e945796d2fd3290550a8a0a5a9b9efd1eca9415fd901558b26d4df2831c27ecca9c62fe2f6a362006a836638a5ef51c910b00a522deda2752823e0e061acf16a621443a45303a4238a913d60eaf387ac210ec269708bc73af983cde2ad8816c26555b8cc5732a21ae662f191608d85f47cf973f7b06aa649e20471d016c82d8ffa0f8a54ffb18a2885ff6e06cd50019d173a467b74b6daf75802fc3d5e6e56bbd3108d7afa85c316ff6d224d4d950021cb783f47f2ee024995f35d56848ced552512ffc91db8cb06face0b4187f90c86c44691cde9a325dd922288d91917bbf9380ee7d455c1cf00f7ec315e751701d7c5162c397e494d278881c51ab1b47f156eb981caf36bf634bcbb41c090e800df078135390524e98793c234e1d5bd633a556642d060e9461cf64c3eb1209feb5aba967d6b7fc0649db8e732fce07f1f20a6c0406fba750f23e633b13e1b685b102a25fee1dc79517e6d26ea5b20f6d06fd4306344339af821359ee292e2363769e61cc4beae9187103777b6e707619ad86ed14b584b8b1601451684fdf97926be5b20e5dff3c2eb851dfdca49d16b869b3e74a659c6b16516ca453fee2d287689763b95c25c32645a1532161ab9f6199995418f6c16d96a37007ac56c2a2d0433b83aac9069e1e807c3cc851e273e7f50dd31ec1fda20870dcef71a2147691590a96815325221dcc7d16412db57bc38ecddd35461bbb4ba1a2dab685629063c74ec614a9cc54de6552e89a4a64dcbd06f7002a13fd929d83b43b2d26a72909c22fdb3595ab8b1ff49fc10a5f0e059c343611e43cc858bd2370bae9ff0d576b95c0d559b6d9288b49ee3ef0f2181515c9197ecc016fe32cd06082a37fabba4ddf329f125c212f6a14baa3cb31b7bcdf5cafb7fface71611a0eef7e51de73973d67cfbe2444b7594de3b090d943fa39b7cf78835bcc20d95b35dad428ffd59e220d2fbe32e602dba424d66c9c858c16d7550ad2524782385937b7212d2d44350aea279fbe18af7f6577ba7e9b6dd4dffcb16f80343aa442a4023480d57db2d0e42998ee642e5f1b49ed51b1166977d74129573a8a452bc94501355a166d634e1c477d0f18936939bfc8ce6f4c5712b09dbd414db84df19c19167f7512aaa4bcc3470a97465b2e8623e215fc5d19a63af2b31e17565e4698e70679c60c841d0cad2ab99fd178bf38492a734bb552ee4b0a48c344c6f204ff670b3018a605bde9034e8c184dc67c8f22b73cedca2807eac7ce5447b4977d150c2181df0c108f24b877fa6ff78fb2f00ee1aaeac1859a93f868921c3d53d074271ca44dacf9f6c24ad0359324aaf080976f91fb49397ccbf1f0202ec2b3ffdd941972e56f7354bf547a3c787f96d4741c0bd71659fca8658a07fc05f77bb8070c1120b78fb1a21e3fcc5e9a9d09e0299e9e37b63d33ec7c427adae4f76982e8ca2bd095f994eaa709c4acde8f1017f741e9ef9243197bff0830cfbc1b13b86f3912b55755dab8da47107bbe324a1b83a76d52d2ef04421e73d283159077e3d9bd2219f07a6981386f47a88e9a21c15e9b7631a6349b0d37944bd8ff5db810c54201efe68e8a3ed728cca4f77f179ab62442c44e4366d3bcdede939567213af170009bf74cbfca0c4a03ce5737498b16a49a8f170f6c892d6d49a675007198c6403ea86c0a28f16fb3ec2443d39c8d0eb1e4ec7898a519c5326a6734a3432b57cc2c8eb0a0367f6c206cfd7076d1631a5320f4275f9baf75c1016103bb668b677020e613436e978800801d6a8c60999449ddcbbfd29b6b912521a55373d9db7b3538fd563e5c11cb20f5e31016ed9d0cffc59a963f788f8be46aa9f6541fbad6ba18bc3adfd39ccc22d497398c389db4b83ea0a307a3efa3a0eaad6af81afbf1510fe67b1841edda5ebaad87d5508482ca0444b037ca3ce0e519789f2e7c271a831fb60295a19926409c93632e0f29fe175c422ffbfbc78d5f2a0a6bbd458e769f3a58b12fa4fa96ae309f1c066df8d1c919beb1e3033d79eeaae01dea46b6c6373c0356dd6638a4e813a05eadcba1ff496b78591a43fd9e5f31698ea81d5451e93762a4334f194088a10d5e3237d31cd0a5937edc2ea8ca85b56365042ef8ad4c3a9e0e0a7b2adba1acbb1aff22b9b8c81a436bc1adf365d453c090456c9b97662716941d9ed53bc46ea15e200a7b7b4377054b4e54e05a8792fb578dcebd3bc9178200acf20190d4239100f414e5515d0af79bdd177da7fc8fc7fd38d612eef70fbd2b5ffd0b1d85489b1b014763548cae4de6e5538c11664a3c5a2db07b62900eba7792a74cb4dd2672d17832d5c2746de3510b09f00bd28051c0b9ba5933261b87615f934a9c019c0267155c73bfd50aad8d78c96900e6c179fb83a222b80e30b87fc0eeb9b9b57c5dfb081a87ce51bf6c9085bce374f6fef65a08697b22d70a37b4fbc5e06649207098fe18ddff7f70723ca87de545ed3b029b0c57ba9f6c37709d70697f98f1c9cb23a3ba4eeb84816e26e3393ceddbc4f67af24179c7782db5f8e3c6d9ad70a2618d17be9952fe46e84c09725a085f6b0a3b16cbefb753140d64dd33644a8518a0f9196cc5227e24e8e23f1171e94a193b2132dc21db99260cdda97a5401f31a39f188dc0ec385d814f1f28a38e6f3ce1c1f6ef2f9a4832aa795aff152f803f4422dd54c6378337a3670edf9da81408bd2a490457a23ae0594173451c643a8937ff1e08669a8577495af97d140dfdeea879edaeb74d3c73c011fe2300a9a8229bff997630fdd98482b3aa22eb37a1719d2ed3c584d07ab300b62c44a9b024ab244fb4ab7ba2e9325ab8ee55c3c11c94630d8859f5d9d942e4d502965b9bed59c25ab9f8485f8aa886563f11226aa007c7c35bbe7f647aa147b6f0d9f74372ab6b2ec73eb20bae363b5d6902b721967ddbf9b9f4a272ed73a24e1afd75429925caba93661fc8483facb080a6754abdc9cdb9d4dbe8495d2213f6af96f86b13527ec026c5bd430bb8e255ef93fec158757f35362472cb92000598367ec7c2e0134924823e33a7b8129883351f8e0efc1feebd11964186afe12e2db58d6407eab1445e21aa73250ec7edd0b9d84e347613575d00f1ad6370e322f6797a476a0cd3ec84ad3e3a794849732cc47b42ef066776c419f11299827013e272af77d2141acac53cc16400bd791d15135e704427a1aa598d4b0cb8edd33f034c4e8d63eb7636c28c7cb2e8494d5f26580c0c18518639666cab223614b125ee919853076ebe4e29715162a0eff1387917f3d5ad614f87259c43e86e79512c3d4948ebf6ef2ee3068853316efd1beace78408c4ea68098c59ee990deb002e9c40f0b14664f0615e62980b901526078989afc9c34bedae678f948fd161f91f71e0638a016effa39a8adf813d405501a6647bcf0d56b7e8fcb2d2e5257654170ae876476493fe889f9db1ba2e107b32565957986e2faf4e39b3bb1abebf041008c257d9841bab73213d048bf448f9ff40b6ce5d95d0eae7a92a66b498d1983dd4c7a7359093aea372aaacf2cf4ad88d20d662badbf0dd04ec3f9c847fef2721604d95465a6472c52acd6c4bd2bf8779a84640e809d84867336c56f3a6b73d3a1bb9c08a65fcb6ad0ac4e5c40bc21128178a2645bde425566c2208342449e91fe7a1ccf9e3d5cc6fdfac9023a2a452eb01ab17ab1e3380adf88ee24cfcbd531d49e601ea7cf2fa8a4e590f5c3632d192a8e00b5c59fbb7442365755b6f51850e14d62e9df2a519ccef5f6b10869480a1d99bec342f5a95ab9dbea1517f3a2c1fae7e00c5026d81041305ea64afcc358254d65432c3f72d6631a721e5dd590f14302d64a6d5d858fc6a9b3044a4ac8cae9fb259292fc4a18fab4b699cbecdda201316f5f48505974e59d56516b2870711f13468845e3670990e6ffb22455cbf11373a41a9d600d1eb53823d19ace00c4f4d167066206fa8a88b912a8fc8af721ea190e9a1825330f162d3ac31acf7908c7644a5739b1dfc221ff71a707f342d021425ee7e73d9b1f457fb0f085f90859a84cdc4a4f9ce0be003d33eb04f6eb33abcff154325db50348ec0166ea86f554ee2c83afd1b542f8ca9277658c390701a9559df7955edcf89198b2010a553c39994d942772e079a3ed6b9f50fbec7c3154f09da4de8d80cd49737d0be4365184ef859b29f8c2debbeff3cc6851230a30b78bc4a9a9c5083ba77d1f3ab21f39836d5810ed1c567381179f4ade1a84f7827c8420a8aa83588dbc9998d68163a5bb90095a4547e06757c83ce1e7adcd8e83384d6010f05f5235d5724f8296393d52caafb1a7dab36039eeec36c123b2e113b7db21e0b7c417351492ef1da97e11b8ccdf51a4372ad2b1e9960c15799f3913531ef8ae155ccaa10245310e095605c0c66f96961a0a84425799321e02727002a005a4e6d5aee81c5d3aec98da62c11cfb377e0e058b6436e1b2477921941ad0e939cdfee77567d3f3ece78f3c04a2fb53d76e969f13ddd61469da9c224cee83342a3b0bd5db35cacab940b035013a467ebb3a55937734c530d8647dd484cba16bbae7f97f4501e3970cfa4ae5fa89d5e19ca49d3f286c40119723d533da96125933657f93a2192b1d9e5ef66a4675aa3b30633396999c453426e78229073c3378a1340c630d259cf52f203026ffc8646444d20f4a51a6ee38fd00dde1d7f02073c8cd1c8d8eba1d14cb02411de923c77e01eef03e4c30b522e9dc9e7a2c97c1e49659ccf4de1e4dbf4fa466074fa16cf9752cdac722df6bce4604c72e719111b311771ade794d2f9f2349d3e9140897f31cc8043e13d2ad094deeee75b4c310800ee7cbe09560be85f5c00506c6119697ac7c89ef63589330bd7e74ecc63682dd7e8d15ae00d8aace7daafb17f6396a72ea5996243ce57c383c00c264a07e4274553db946fe6d5cec992398106c5c4ea063ebc372afb68c58410126e29f61723a09ce9f1bc5aac06473aa6d52d77c1b51c0113fb8db51cbe6bbbc13a1ef9c837994d241765e91df17eefc2e98a2fc802faeaf977447aa83364f8092ebb38950c9600914d7f20d6df6cbd2bd8b4b3b4018aa62e1ea3550ac769473b1203ab6621b09bce61649db1a5574231e926655635a0dfe0be4d979107b2a3c64647962f3975cc7ea683dba666d672fb53805c46e42c281f231dbd1b714ea3b64d6e1087355ef268454386b7efe5366a3ebaa7ee6b12bacdf190bad88c62c7bb64f62ef138456306327b1e186d46e7376681c3b47a82d9cf2d7bb13c965054631e95a6b63f1857cbc0153c3f8e9919fb0679ce1c5ff9139ff5e2b78a71cda80d8bce05902839d86c623ca9ff20b6fc178662f59337caa5abdb8060c2ceac0796b76dd9c62c4505ff0fc660f05b3c479d2f4d106f27bbe2aba8e0ba81a04f3994058659c2239c2dc575ebae6f38a98198ce19fc5a04c2b73a438ee11c33b09a62ff83d39112e9ffe4c91c8c89252a007531cc423c9219dde83272b5d3565dc92223544fb20b23dbc36b6e634938ebb9cb36105dbd6bfbdaf2bd2d1bde5fcd4158a3fac19c1f640f504c09707449696675604a544e7b669156bc504c04fb8b3c23a37e8bb02c571ed7d9a51d903908c940d5a76c1e116c203f638a31fc0dc5c670b2d4921b105af02082e07352403d10c6caa4426753ea5481a5c7a807bef465e81e9d3ed72cb12581fdd412f5b27507233d88af79907c61a4d79bc2c911e495cb2302b015321054944f97161b4cf424f72f6284d7a264d1958feb19287244dd74772e5536271fcf7756cea328c890f556218663e1d75db7344170482bed6309853f89461b2031fa7c270ee5cd74e539bdba0ff3d4eec5727fed6a42ca442f6dd299b0f3103e3d1292f656815961334e704a903e545b66784b7a30c4f0a2e507a080ad400f06c556010b8ed0631740d348476a464a5ab7c9b1ad40648d0ad7e49d5dca8a9233e1f9934f60366a1950d2b631ca03740a0b29b57c9f9ab539939d7935bc4f983e94ab07ad4acfb719e51b2ce69ec0b6c78f613e951fae7d238e3b1bc307059227adbf7a2690bedab7f59bf3e3e380dcf04b551a3a8407f7e6c0258cd0b9e90d1149e3803f8ea8bac137b450e34f64f268ab5392c0359236238a344ac65b757f170cf0432fad20eaa1c02409357e37025ee8e54e0d45e45534da962b964dbfbeab61ed2b3d4119fcefaff8a9ac60f9ce249298574f7a2171cb052604aa725b9ead4c305fb72833c6f7692781e3a16177659095a9f9f01c1323434f6f1b961cf295b1b3cd81ec114561da5682577a9249ba0eccda4db4a57801b665e951a865818d0204317e51d9c8021fc6c5013212c531fd7ffa81f07e8eea0dbeecc53b5e42205a3c9d2aa3f44c6066d8eb9f76f068dab72204e39ddaab3aa3afb679ab3933b6a66668256468fca0277ce58fcb9f1be49d381e9d6cfb13217b38a34cebca31aea6c9977b2adce9d0a2d290c46d3e5a283ae205902d97d616b5d9a12768c11a111f7e5839640cbe2c4c72b36a58b6b8dac0018586593993816ca26beaa2200c3dcebf1943de5c5d9e8801261736662a618d9a56d6f91329fa618af8a63a8c558935fe16859983cb487191dcbe5c30a7948ce1c1dd93470ed6e1635300a77b8999de30e22fa41096e87949efcf18783e90e8427179f5424c870fa2dfaff3217f2248e7799dbc6c29dca6c11afb683310383d0ef88af0bcfd9b79b1afbc436d9a06ee9dcfa0593c44ba102d6edb13900b8286357a03287e68e8c7a77b5fbf139292476bfc2650fba3479144317ab66f2786889096601b96df4db1fc62ea59f9e285c05384b9f06353c29aafcb7b057c857fb0706fce9c4fa5389a5750007584d6205e561907ac89596d151a6105b89b6fa42bb1655562a80046d925afb1ef465b305dd33ab69ade26b8a28af16da752a3d62169f36219dbaf50026b237fdfbeec9715ba8293e2946c0d553bc920a1d81b789331954940c06a4309a90cd5ec1bc3b1bfa9a4a7b46ab1e0d76f2aa5150fd3a1a2f4de7701798b52c88f1b722fb4c50b5ca1328606a18c12b14161cec2a02fd7ef7ccd818e1f29fd3e838b1dd34d40a9f1a539baa400c76ebb0edda3e38637d4f1185577dba86f5fbf9016690f52e3052e5c560ff3551ad0c33c469b3746c77cc72c588b48b968268a0dd89cba45c7b987b0e2a5b3f751f9b858cddde27abaac97f78876a817e93fc04b839749ef7c0d0eb2dd2f8f92d80c1038fd421caf6736e8ce160b46cfc968d06e9152c20b243c00000000f98a6ba4f41fe559e62a16ff5a240163c8757bacd7320b4a5e524575392ac413ebf17e4284e39c8a6184fa592d1a6d2bf99b9c76c444288f2bda426589c01b1c9186085cbd6a574a6a02f4114a207b406cb422210293c4f4f6c7650b23d6d1b480934894823279bfd1e97077163f179856231a7b751863890a32642338c1072e00000000000000000147c6d3fcbea6cea1ef530150439cde787f28ad6e861bfc8a210a885ecc243f910200000000000000f7e3eefbeeea3a4d2dfdc2ef69cb7d6628eaae75dd9040977f40589f6299432a40806e299b5f3026e4ed16d4968e32a1d6527f1d92e66e2e1ec342222c54bc0800" + pub static ref ZSA_WORKFLOW_BLOCKS: [Vec; 5] = [ + "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f027f6043d927d72f8b5df9984fdd36d2e2e1fd1ff8f7ee04a2b7da9306c14551c40000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000100000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000001029063000c87d7145492f9ded4d37b4ffdee769a1c41b0e17d622cce77f122d70ddb74fb50c5c36666482476bf5e8e190dcd8f5ed280af209b3f679d4dc06a213508774e2f7fa82dff9a985866919085523b13b0af4f534975228468feb62cb12575681e6101284f0fba5628e2ea531e9dad53d864c854e419e4c5b91fb7b35d00597572f98db1bb9f3049dbb9a08d403efd824d9d118a68493191e059ca00b2982252a2ffe5c3918a79171c294481fa267e83272858592d5890884feb90752347f33cfc9443e70a9f30d6150652eb2bb04327ee72b9c5e42462d4d2bd92725df50ce267c1588d29b08b25a719738e836f9c26ee47ce3945f9b627c4b9d3bc8ae755d8b78b840f1fcd055cd179af2ae0637f49fcc44cc975abb478fbd9922c15e946e681ff6aa64ac7275d58c7811c3d87c4e48dc97e35ca68780218e256f8bd7d9c1677bff6d75f663d24802a7b433f4461d686e1a0fd3d214b81b1398f8f79d062c4e92381741c3f96f3e81f455c96d05a623985e39c1d16361928424286483b40cc9b1249032dad9bf92a563bcd978c329ede5eb5c7933f937b6f2b73507c8ed0a2d4ca972281ed79bfe367b474b6fc89a29f20c913a7e42287074a185ea83fca9d0db796cce2cca07f3cd379eba7efdabf86a594e6743b0f30d3315daedd2afe289422cc0a5b73c3e837dc2efb5975e4fa8183fbe68b5688bd827472c41248bacde976d8f16700b4f6c9d6c83afc134e3766b7afdd85be2e373f98a7ef0d2ae19e98bfab76f3362888f3e81917b22236c6eae7c79ed9489410903bfbacf77bc1f0de11692cae0289c786ea3eb08f7fc652146d2529d0217801e2dab9d67c13cdbadd189fa302fbd402c4befe5823e70a802dd9c712396c20028f4f7c94a49409b169fa46a7569fe289d7189adb3e5e9d9dc63903aed828ecc3ec0144b59592a6a88c589577b976b7c781b3b43eba304130bf38971784c7caf8e5994d2ae59eede5ba220d7c43378b492e69c0d7b06445a49174b6aa27d08dc186b7bb5ec6b6b6e3b94185d5d10a07887b5f66f9991aadc239b578426ebb61b85ad40bd80aef5c4707963c2d2d9b79dd9cc416a597aa83c4e74cdebda03d6b7a1cd0238e88161d8ba579987335998fe39a909488455b11937e11d751f425ce7cdee73e8a99042f03eec4b4c00329da7dd90b75ac8918924205cb98346c5ab54096e7a91c9f44c4b21a885d36813221546da0609be857260bd691dff247d867f224ab98015aae153ec30248e15b5c0b2a0731496cf0518d9c63202f93d9f2023022d3fd3c83ec465ad3695d0e0d1ea0fb4eaf9dd8f6f92919ba1461e2d6e80f5d89e6b9b6d5241bffe1d91604c02e13592ef10a4b87612f82ce32b50550f0c46eb4cd6d081152b2123b0ae617e74a6f31f8721e8fcddee49e4c9269517fe55d7e364407b9fec4fb22711585c535bd6a3a656634cf034e30d4bed6e14c56ae98646a3fc42bc4906eb02cc80afdc9c5cd824ca22772567d8aec88c3b4fdc91d34133e8bb2a2787c4fddb3e5065fab306caf686f2684635aab39232c71d9211358eb2491ae39d0c5464efc0ae97b166821956d3c3e70acc7871b3d3c7a00e54e0974236fc1243caa57e04d1ddc3c42d67e23607830aff5540a806c6abc2621035f7e4280c7cd0eaf70db3e88d84da095e0c1a4d0d62728c2f8a939ac274fcddc1442b9993bd8b7f1a965b31af20637c789d93aa5e09fa6eeb4b55393f68cd9bc1a8c67f6d484b9c2134a25478e1fd28e0960ffcf8e36492e4b12f0c787fb16e80d7d0e92ab94a34e53c1b1c0b63db557e54c8e0c919073ff2366c83a4ca9b07b639172dc6df0b6602b3e8977ec3becf6b716c55fcdbaea993494e50b49a9dc8e7c09118942432ea3c5a036d4267928f2393072dc3734dd841e0c37cb2d50fe2f75c5dc77ff9e1540a52b136967862312de74af7071d4f17de67775adf87f1e540161a4eaef191a93aef5daa5ff7d42e36fcb31dd1edd73ba829b32a6d0ee48878bd6ff3ef472f48e9e8bc1f479c34f3d5509288f3181a49a8f3d7771c5cd076533924dc67b96da721ec8a19a85f903c2a2eba21c0146526dff8a8be77831f558be214c43efa29ed6e9be6a2d8e712a745bdcd0f9bce70f997da5928cee6775164168bb343d2613821b4814a1198df32cdab2da48c0188dfeeacef916472529503d8a63c4b2092133c31770d79ac922976417ba6a2d92b4108ca7ae496e039a7ef38deb19d22e1116e92e9cdd0a371b27226e6dcfb14ef5855adaf2949d1e764c6f83bd7e4259dfcf4d1831e2d9b80145128ebbcb0259e3cae8ac973204fb2bbdc5e9d967c6f7e5e4c6f0c139b4a07aa6b63430ff511c223c64933f5fd8ea367d4829c63938a2ee54b3469383824bab4807ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82f0000000000fde01c1ce7832fe7add3bc1fd885958fc5fa1697a0336a4504ebac5d683237a8510183f29c22defb607c48816c49704d3ce388ea27bbc7765a43961fba354af095dc9984dd6b892f223256347a3a59083aed6de70dd327a95e0f3dd1531d01f874829d8095242883e06045c1186ab08124b5dd0b5ec86c6bdd12f5713fb6ce125c0203d9191bc63a1de897698f59060b124cd81b8cea5e2a026577ebae2edf3e238203b670331c0cb32a229e263305484d7f3ef896c4e03bad52bee2250296698b47bea4f60342a23e0ab908a3c094543fbeff20748c3e75b7cf9755813388d5d8871f862bd444e3469e9e72302321bf35114dc6c8341c838f962debbeebf9727a132ea1a03a0141d6965bf152fcaa6d18ef7c24e32103cbebd9c1c87f0601da6e4f07af42615a0b2d41aebfe02e1c2ffaaced5c3d996c8fea947adf7975c4d6419b20aa0c804b867530bc1d1d6103ee6a6674530fed4b4a1289d4376902fc5ed33392111c323f6e73a07ba04c69f8e4214be8074e76124e84990d53091a4b95a9d482a0b2447d911255bb3f312c706151d8a87d284aaa0e4e24c059c07f4952d3fb0308acbbe1513842cf7881159080f10bd0f169169d0c0c126770a9b7985f0aed262ba2749b2c9a237fafefdaac68b8756c2a628f5bf2b7bdd804d23e2a8b9eb70dd38586c842d7a0e3c71dcbe5e651343375adde02e5501107339538b0e2dc45a9cb2eb8831ad77bb61d0359ad4c1a2dc31b29a850a31d7e72d00b978de4b570a9a4e4a403156cdf351154975975d424bd9933415081cdca5eeb411c4a723b6a2d19ab96d3a9ff273d5e923d158425319cce5c63c6ee3adbc5b36e05597472669d4bb48a292271a10a85ff7274a74e5a96e223d0705c08da720425e98ef270f907a20085babb3f642bf67dd8eb3fda67592b6dee4360895e22713783899ec9fe37f861e73cd5261a0be04af440b5f35fcefd345bba49a02f7e754bd5276e343a8f1f081f7e904295a12f57d8b0927be322b35368c463525415e5fc01e43c7064331258ef895a5f0f23bdc7b2095c2d27011bf17dbe37eca66d44ef565ab7cf9280a64651a39635b042ac1b74bbbfcf792e92cadaba08677a836f10bb0d1acbf1318c7b39dfed8b7ca0d64a24ca09d717dc618e036818ea11c743aa6e6a2fbbdd0c42f7c59122392bb90515b425b62ccc85b311d880cf24e621f100cdb8552c4e02360583676ae33cd314bf49a5b6979e6a7fc379759bf1dc9ac51b62c8b1851b87a58ac9fd2a9f30a61e7d96546ce53f8476b575777a533484777fa4ad9d921aa589f4d880de9c28c93c26e6d4284a3ce64ddd454490f73c9db8f4f1f49e9cc939405d635f6ba3be2511c2c1462d65905d8f2f40fb82d112141fd9591bf88ec98f82aee3e7d0a8c0156bbad06fd3eeab3da041ba47c572b3be65bae532893ae1b69d3e37a055c02e994e8429aba5dd5b455335144c63d6ebc6171423f2dd8ac600e648d34512929d7fb66b5fdb19f004c7e75e5e1d5e7af29a5acc9b87c8563c97b1c4cfc848676b1a38ac76ef4ab441f9235325dc1416911bf07ed7c598f6fc1c16b7d4a92489b5821f7151a11ce2dfe04d95d661a5cf284b4bbf83baee5165a3ceba103d36d15fc1a9739229e21789210581f9206323cf03526e2aa38f614bb59853128dd688b711afaf15986e89cac8b4b93b1ee24d55bc40743a4783746caf4f5bcad200363785c754d6af2dd5d519a4151223148e4f5c89703dfd209d8a38b5bc55c5f1f644e6e071bdd8f6597141c37530b7ef9e513c49f9b7b0e0c743830931ae2958c73b14ab1f35e2618298db2c437c95d6d4b13c41b4bdb51f13c1813762e213e18655382d670f55d97b2ed83c695488efe5831ec82656c6d42baa154388d4e212fb5c980b87476e62f4d8e84302f23c54b95b7b1b74e0e44219dabb8e8b4d4830a7494b627e1f6e62a634b86dc821dbaef4e3e3b53e69ad670f1588f2aebdb702828098508060b53cca72fa8c92881a20a852eb1315c2439ec89fa183e67a81c6590dd51a743553fa48fa9f10495c6249c7bbc51ed08e703ce7103e28b12a263fbe66466ad66c11bd9c66c27494b9815e1600bcb2e4248a514a421bd0b0363d8888ad8c9c3605b005a51e77af8a3ae4009f34a24ee242a60cf5c0b2860c715cc56337fe9983a893be43fe75c87997d6eff3e87ca34923fb39993dbfddca1d9861b9314bf420dfef04b0edd9fc9a5b6d7ecedbb7d669a5cdb5045f9a7217f83c62e3eaab4fcaeb347062b02857e7c073eee827e0f1a9c37f4fc3a914b2f583f5632a2fb974aa64f08245c706ad94e29f7b8d1b8b5a423bc3b5b4dd9106d1fa787a9d5d6f64f3273f3758600ff39b6ff0690d7f4dde701aa04e664c9c3f622622736704a523f78bcfad7e882cec28183bf15316370dbd4f3164bdb1224f49a27121e57f7cbb7f8a28650fd2589cd109ac1040194c44bcb8479d655800cac9fe82717e9496bf32e8d3e3a4b5fa7826f4cc86878fd4ef9857640c59b60ba7276af3e449679fa78939dc590c1fc392b854c7e8c4528108bda4e4a0c14d27adff03c0429bdabbe2df4249311d5f7a7ec35f023b166f7de5a1a521615db0376cc1237ec902a4f76624a8a5c65a293d4ef3344429aadb482633bccdcbe1160dcd098b71deb84153068083cc6976cb9fdb46dbe226fa587970fdb4fb14b07720de20cae800014c66da833530b84d7f5f1977f74813507715dda0071e845f9c291fcc4fa4513b24af47000d230d72ee0a42c0a356c1f96fca44b313396c974b0849aa95d0062562d0fbb31d47af78e4e857cdbb43f2014ebaa8cf796067863b0444bf7a3a207816c5eb8dac792d15a01f7ce0bd48a5a3687cbd8bedd364d176106561493bb8e83f63bc67fd07f8b11fcf3bf99b2a1daac1a001ee09d6f8d3973c623b8838988b4faaa1d9151233ff1cb89e947ccf322d59b0011fbc1bf66f5a2867c0a35385d55463cb7fd01db5932b9a163ee6cc11ef0d19e09e2dde4245571fa01b8624926e27a9bae527a27dbfa1fec4c5687a6193a5336469ff40fe03eb0338889dadd86d84a6381b2f65cdb3b6880ee67de08572d6fae5c5df6b2ec4e1216a5999cb3c2bbdffacb157d1e94061b4eb985d153b8840c537463e8a15e5533215522f1d4ab74f09a21b1e9c851688c2131f7da84c95f390eebae35dbdfe1e28d5d0755d419707317ea45d75e88c40d5df34316fcc7f59de8af82e1cb0ba3e10ff1775b8d6f6ba2141a1f83b21b577afea554f709fb4c373f6dbc66a4e97c31a500129684d7315874633453e7ac8c10f63ae4708b28361c772725a110fd3e626b020d8b5b3820faf67e02e3feb9d13ba99f40b6ae834ce75881c44d8124f3f234cd003d5cdda116a218c3dfd1019690b31ec2546b0be2660aeea3b11d375cc19ca2c57fb3ca817a53dd3357cd5f0b72c3a06dffee32ee613eb53a0f679662108f42002ea24bf40c2db026dc595710d23bd9ef571dd37134955083c25ab968d23bae81d22c3a16f10f3d75cfd7eac8337226dda9554093db1c60261931c278b11846796d56a477f454ee04053268709b935b198ffa096dce5c9d3bb1bbbd8fc19a38d529603881a9d449f522650aefa9e0530d92f2712c6122bc874587fc80c29beeee0c2f532607cc63aa8a91413bbc351a2a355b40b3fad7871976b6a46491ca94607f27b2018af66a8d6e429b8955a68e10f3585666b40005248f39fa274020d57f76af52e860f6004f20b33174e16b184d39f90ad5c563da44be6a526de1b258a20649fe5b084b546417385ede6ef19ab6770dd56583d2f3d36901aab371a341c1fbf11929950845b05b833dabff5608b2b0346d8f41ffb24b2be3187cd2ca86d06e8adaedd3f3e9ca9f6e1cbb85bf6c34eb3dcdd9931edf2312e4348481d3ba48a33ee57a314c77196fd28b63546963da0c3edb742934e33daed72cbd80b1ff33a716e22fcff53b93b8791238a92f62070a6c8f74d3c16116c1f9743bf100e0fe3e1dfd512e60fb075f193b3d100f8327a8b7011b1a12c519ec902d7183a09958adbb491a9e9de0070fc685b3963f1617112aa4edd1a4bd35bb459ad121e34851230f78913c59ac8d766b84ab510f657257a109de229ddb30b3db025f620604df250741b4eb757f6a0b6d2a0ba2cee7ac1046800eae0519243380c404a133766b685997236bfc73e3317e2da32c9f449aecebbd02c28c5e62226aeec140e4c38dabc0c6ae4d6fbd5aedab7abe0d2b0b0c7533367db3ab39ca127f688ef34aa4a61bf2cd2ca5a0f598b8009e5610efb05da12495c0bf02eec37fb857f7d1943f8f76093a27b422a910f4904cfb836f62d7ac295760ab9f2587f60e83d402854e9a3550a190f59fbcc5c94e6f6bcf9e9d7527ef7e6c4afb13b928fd2fbba2ae008f19da2d385881dfece30a3c9433909bae080e01f09e987a059f368d7712246839159ec183345e5a8607e860bf1948134d1ab791c2446094d012e14e1a82fa5d95106c0c9626df1e7e56cb7e6cbcfbea965f64cc4255319eff09bcc40ab3ccc7294ac369701ac1f083b615e532d13ea809eb68967b031fff2b0536b781e08688a51de3629d4c8e3e29987b4ddbccea41b7060ed9f635da106145bbd4dd2045f2215546edfe71205f5a139bf5e9af5b68d4c34acc19307d23b7971da98ec2ebc8282aeabba8f1a46af4baf00276aa0e9e5c212865d763687335e1ec2d6c813a516bb2f2b79056100b07488ce2fd5089be296ead42ce345ef58f73543ab102ed79e426521fea60dcce47e498180ee94f1e69bf862c9e014ad60f6041819f01107812803c986e547a5fb744dd766b92e22ca8621b56190ab1a7019eb9e288114c4c450d08a95da7282278239f7fa073a8ce444506ae171e0dcd54d1861362f12957b366b92dcb0480017c6a397b27506c55238e1656355786704489fb54bf1257e90a246f92ead455166c4217b610682a6446514a1b59d5facfc7041d4e639046e60262097557cec24c59629b891229e714db79a80e830af7fa7a2112e60ff1fb95741f39c51d37c3be241e9990bf14c325e558483f65408ba25c4cf85e10122cd5cba6010db487930eed9bedac4d533825c657aac9cb709920f6c9a537b76194eab8c330fcc7891e24207f5ca76980d94bd1b6db41692ee6bee117544e98620de4390da019b63757bc78ea7d0e27c2fc6b92d8c0366e23ff1d5a38130e5183340a905cefed2bd332d443c6fc6c3f4601bd3e4927b40388c00c842c93d01ac365bb6272f28ad28ecdbc05dc2e4f61175cd36f5fa5a4771e0dfb6e13cc2ba910e28f11fa13728bf2dc57e279ec67f8046187bdb99cabeb0c3c008c6ef26ca382f9940e0b02771fa6c2f69f1116baac1adedfae6ff68dc8cb249c112ce6f9a6208cf1fb4c4183995326dd690bc4531de9ac85a0be2f6b0795b6f9bc700b7628c272f245de3210d89fb7b552a731672779675ece0963c2835ba8c6ece9cc4e55b2d077489cc8a83558a1261a452dce0317cb8ef4e8642f3d13090305ad345906b180e50dece886830f7a349e3477a0f10df57a81a5f895e8c043085d331cd1bec20f7b8792871912776be3ef4b8b411ca9cd9a9dbd92d1f66c90b23d35b1d0cad3acbffab5141b5171336753289274d897c2449e9316c3d19fecd86e454a51c820c080ceef6421565d481792501b582190d960776cc5c6bcc3f6a33a92e213f7c2e932d8f1513d1d2bc31cdb0c9550ea21fb9d5db1acb01eaa804c594f98777652a7af27184e4ada612201c80f18d1cbd5f9a4a535444934b72f6262d582ac5802bc17c106bcc4a53eb4af6334ec1eec602bef40366d91f4b4df477f2b3b6be2111e0e6223c5f43811ccbb3c31f8f4c2138927377521cee9954a493340596fa0431fb953e7ee3c0a15b37f47592fc4cef4b47c759d6278b4fe5be6519c9927e9c08f6e89c6ff99ca69c9f89e27133b52197520b873c578ade66962bc18d0726db271671bfbe8c21c16eced0675a58ff1497cb00e239481adc4656537b80830b37264e7f1b50e3780f32ea57c9125c73f07e33cb30a51ec6c4dc98c4f9337d62152ba544eebe4d7a8eaef723ab85570d549fb90687f3b4782f7647988ca3e97b6736bdbd7cfb10393405a86118ccc415a16e7614230828430728618da31e37792f043e3777049052d58957a352e54c16b3d93c8595220a2e8322f2da669f11be3817955f1a350d3591ac81d7e627015b0653cff1eae964f89acfa41663a833e65235627eb67d30738f170da134de1d58499997315a329dcb52fedc30171f948f6f23a2be30b49398a2162f469eb161e752faa487c533e0ac6aae88c6d7ed64892a0ae4afbc2b30ace36ca7ddf4f1334b6731641599b0d2540c4fef4ae6d9c0b81c2d356b98178360b853a501dc1866343e81fccfe0e99b1042d10a38ef3a5cb20434118e16eb23244446ae69bcc1a1e699cb5981c206689578a9a2b3f6aa3ca37f1e09346fa2f4f7695a6b8f7087e9763f52d06de4208a4cc02e92801883f89ecd396248db5f0d2ef527a75d924216fcae8c76178c0b7c27f618331fac021e6c9a3a9e585d1c160f53eb39ebf4b1b3d84d97b2cb9d0f616e9b2ae10bb9e592580f27918e4a17be2570f5e4283aa8420189f72137606e2be0a9e2ca81fb2312caa0208747005ffea881f8a44add38303e7d080e4be30b44271aeb4feb37101c201d0f8504e711324ecd3b4dee9d69348c22656b7edc5f68b236030273890e9cad41258e1445ec934f9b4b2b2792365b52d0b44bbccbc721494a5671a60ed4fa289e203c68ab3c4b88ac36f9adc91a4a6c8cc4c52feb2eb34b64667a74c3bcdcd6e438e20d2b6c499500f488edc872165133fadb4fb7713a49de17f60ca4d780918f3cfe19ca1447f83761ee1808436e310fb7cc32db065c5923a4537d233be2f3311a5ea416c6bf280850647c650ac01835351eede816511edf33e59f467d0936af21a4cad0df6fbdd6711e198d896115cc3dcfac0948522e231b34e47dcfd05b921df497b190af5d621c59c94c34bd405c9be00b6dd72cde87e93ea313039c01633335044ffa8bdea20d3b8ca5db2c4516b5a59512d09d281b187722c8a5c9ebdb2064871229640354e9aea165dddafddfee4dfc1001d38229e51ab7fc33460b4b1720300aede7973a8c940e6ff297225d53bfaa6880b2b4c0ac261668eef9d6823dd5b0c6215d16c00df561e9c4abaad3ef0da84ddd599d56691dd1b121a6120c3408bdcdd972f77d207d382983b0a044647cd2b86c91b8bf19426c5742b7378e2f21c0f09bff8669f6b0bf6187d44c3bd1e50dfb65aff3aa88ad00c2e12735ee384347379d2b48ab3f0b36f712e0c1bca9698d29f17924f0343fc573a1115981161036b71f96ed9659b52eafb7794ff9a05b42f5b96aa530e45f1892f49dcde62ee824ab3dd0fd9c511bd8eda0d60eda753cd5d444c0294aac617b6c6453ce8b2274b0cbc5beb68e2761897b1e2ac612d8e6f8605830113bc800c91bdc4d4c89394d33c25f6465d813a453bf89eb3f0baf3b83856665a33d1e0a291b527d6b5704221b5b343a6fcb70f561cb496b727fbff07e48b56cc924ef51b3459449fb5211c02ff081c90645ca392d5e7a13f13160acb5b53ed20b8e01390cc4d1d7ea9533b2e7a21e9ccaf0461f1d5562c1ae28c04c138083f4ebd11f75e3298b2321a20395d3fc685d8c4986eaacc4e97d6481149aed040e07239c051d761379faecbb3c3356ba37358353b204bbe96765bcd4b9375470fac05907fceec5d94cb1195227e02f7b66005f9a76ad9ce1fbae7097b0ba824c9e415f82b0812a3bc6d6ae3824dd1d04837ca39047cc27d57dd5655f2d52e1b28ff24af701c93a169bbde2201b4ef36ef361f111838e2a59b2f1ff32410c91be4b2ca0d4d434a70c0d03d8ca0db8c9cb7b27ef0743c8a0579d6c4df5a76644637bee0d45ffc4ff83a1ff779f22e49e65550b60c279aeef6aeb89c1ff6a8cff8ae5eb645e9e15d694350ac0f7127ecf632f218759eafc04a988a3d23d1347a44b6fb1f79a2a40e41f441bb87823856b221e7cde3652a62b824d5f64b08570320f7729b500e138252a6220da6811707c097dee8d29123511a236f030381533cd5233b1d2b19da47cfefd49179430b70bce17969888c2c02b75d07bf84de64dc91fbaa6cf91052d40001bf83cdd18e8860b3527d9f72895ff0c398d4945ddd569c2c568bbce302506b5bfaaaa9e24f435e73c236730bedd4b8940bccce1cdaa2abd388646474e3d9c0afd61e28a1ebbc83ac84ed644039a7ea3aa270eac6f46f21fbaedd49ce21fe133060e416b03e28059d753b025f0c2b9f25e6fe146bf9f58956083e1baab33570493573b9d05104ec9bd2764793d655bb033c646af6ff8f8bb268d35c43acf614206bd4f5635de334ae2768e8621f24457bd6cc3f81a50c8fff871037415bd543e5515df44253f93ae05241cdeec2eca35eb2908ab07dcee8c795cf0a7442ca1213449a5c03282478bf0c0755fd7f62ca140a303867ebceffc631e8db2249c2c8a9806033a201f6e59becf382ccd5167ad5d1d7a3de10492c6bda89121bb8b075e3b6a5d1b09f6ad972c0605f1fe1610c38f42ab22625341b41c252be0fa80c9d082f56fee0669d7d4eb9762af0fd827e545ac5cb6b225571540f2e6820ad79311ed2fe57e30d12239771d79ad47577647068ae6ec7fa3602e86379f7c56709f822db68b5d35440e855509a2b86ebf86dcaae220a89b6f7dea85fe1fa5cf2d54ea4b242edf1a0b3c1a0b04b398e8a67c3ebd093e4429c9554605e2f4360449420a5fb5aebc158d80ee10349d23e9d68196cebbedbd98afd16670b66231f0f7dd9c0a4404da2db7a00172ff4f48b486183b2cc8d49b126acbf5e04af0a16b36291875c187ca2a65aeb240729167674cf5e26c2eb9f8464605279f47b57ef7584ba7b6662f221cead6f89825748ae7bf4a22d54715db9fa80609be5175c30a50025e54d11ba22ac4cb17fca2ec160184e6bacaa6e49a836697106511a1e65c679cf240b128ce1974b42812eb02105bcc59226faa7f085adf7b7ef5d0b2d5d88f59563e3d2edb1aa9ae253fda7e66996f2426d52ce0d36d5e38c07b94551851f4f1057e10beab078c85c6e1fd86b2200eee7345f0e9713061e0060b6333e91fcb7621d57333d80eeef03e912c2da7985a7dbc393aa597abd67b8240a3e72330488aaf26b53d671fe2effee1db167f747594de4de80bc1f0fd5b1786d276fe31d8a631556ad4080d7674b69f1cda2403280fe1eb962bef003d4df61cba3dd906aba9c01e5644dcba01dd790611da5bc46ee24e2ba26a4abaf8ec1c78ac48e0c5eb9c3079f802ca0dfc6550ba410b8d76885506b27efeb3bca592c2475def2dbd4f5d7ed4836abf086ce8b23d617701275a8d452085043d8b30bf66e0739471bc432a155f249f1c1c58e4fa37a02ae653b0ec71e22b9fcd3d9a00037bcfcbae7c0106d6d13dc60fad3f734ebdcc0d3fe9c29031716c746b52bf7c9db5a09cfe19bd9f0b87cd12f8a6c5e36153e0bf5587c959f3636618864362195078c591502325864283ccd1ebb071baca04a50f4069f1eaea8d8d2af49e76f29e88108df904d59a6631686be5adfca48571442a01cdb1a3de6de174fa9496e9ca50d2db065e61d82c16ef01438125a96e6300de69c30967c58545aa8f96fb66725959eb0bfeb99a54e7286740bdefc161115a404556a1dd0381f772b7ab8c1f7f1ddc0cc0ac782619fad570aa1590eb439455a642cd3122b0edfe9322a19360a98193bc75e4b8d2babaf0764099f36e3dfbce751a8fdac684ca46b0945ba593b6b18514d39542a803a3305b55b8f7c3c5adb4e516379db8ea4570020e95d69afbe165e6559636d9bb9d2936ff3272d757d393937ba4ee4edcc329e17426a7b5ab99aacbd804e453f147bc0439022a3c78b5f4df3f0cc24ea8993bc98fa7e5b4d628d36ecaa66231f2c612837b8c3704ac12862a67df9127885a8b4ce8f06d7dd0d8d2d25e6a9f77ed217869ad2d461c26059d689e4ed9774890e18dfe007ed3ae55f862abd7e4b0a53018c9c18129ec6983491c8fc9bfb26cf5bddddb1fd8db5ba17b8ae0cbaeed5ff553db2f0784cbcd76429699e3490c01a2090cba4b230fba3258d7e5cb18edc5427c1061206a1a5c3dc81e5681777216ec66cfbba42b7b506ce92664db7bfa51a9323eea0169c4cb0e83f756d3ea980461313e39d208ef70dc011722ebf284f75f07cde322ba23f211815e4b616f092652f949e369188a815613f8268a1338fc8f932e4b845739564983555417ac7b0170eb036bb80479ccdc3e9867ace0604f06da016321031402b21ad4ade201e208eed72004c59ba0fc7316c32e3735ba7c8c0dfa322ccef89e50b984bb020571702c2ec6f08d0471e72acbc1d19520ef5c9a110b953ae66ccb4278dd291b08af4621d3bd4d51e84604f6315b9cc52ed68f48f6fb51332718b3bc5e006aca5b50b1bd106ac2fcd300c77ace7517b7badc33ce9b5f0302e752cc1e3f0217cb1fe79e4202cd3614da5cad5ce95ac1c22038df2e690582130000000000000000e77c5fe5829689989e0736353bc0ffd6b69fd0512b5aa1d5292167ba63dc5719c978be1cd9cabdb5c757be48c025e5efbe17937c24504332ec6dcdcfac80e23a01ce2c6d87d0184c1799a254ed03047cf57a3bfd49b8a4438d496d741cf5aca6bd02cc36601959213b6b0cdb96a75c17c3a668a97f0d6a8c5ce164a518ea9ba9a50ea75191fd861b0ff10e62b000000000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4162bdd8d72b03b4e2f279a05dee99e05f68f38a4b1d7f6952cfafdca675fafbb0a65f0db75a331b2c04f82fed81c6edc0291ace5edb0794c285a5338f20c891195bc1e9d7134d3c05c62b251ccb3ab8473cb5dafc7b19f3b6750e41bf24c6ad882802a60d88a2fb0fd642095e8030000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed41691c948450f0844a9eaa60503567dd7c87ed664db6236c4368575d4beade9741856f5e328f9ba28c32610207662b9638281878e43a31d3f2de4e440d6a792a01a00ecd37228b00c8973da400337300587f48997465959efe09ac5e012e14f51eb2403e78f9aa4048344a45119dc45ebfb2fdd1806662aee645a85d9951b714a42ada39d7b268db0db118784846efe571b2feca12d5dbb15ad28d23c933987607fa4", + "04000000045a150838106cf1bb1431cf7a7a41bdd26aa0180ea70a37258739c1915171621fc8b74000a4594700861a5e1a9eabc521772e8c0675238b3d87c47343024d8497e9a7826aa3d4e1e0e48e32e760799f2a3fe2202d90d43ea589a8a3894ded5f0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000200000000000000000000000000000600008077777777d80a1977000000001c1d1c0000000000010277428e76d2263100d08f73d9e12b480494f1a361b1497a85d1cac168b76e149e9d16da0b28025e804fdbcb283f932d1aa8cc19002505940524fb43bbe78d04033893550a22b3cfa9ea4ad9a19161451455d1669c9021c9f877dbc4641259ad250333e21e2620c8914b6e28bcb1a214a19a391cf371e089337397f7535951441b6b529032525a70d975fa5d7c22e78fb5059fae45391202f00a689803f908deabaf1bdba80cde3409e605aee987a754ce805f2fc008dff17023ef9bcd75972b85ecf641a245f6a6b1e8414ba0a33db1b0f0c4cead6ac87a32cfe9328773fe7357284f0c0fa89c33723326892785e8954b6b175a5b9d80b28ab20653296b132b0a8ec7c5fe1ee4cb5ef5822445173b8bbf26e75f8118f7f2e8b34c001faedaf9c341f42691a0b0964391067bb026a2743922e5a72bef9006c05656a9e8814c9d98ea8056681fcbcfda9aadb559d0e57c88b77495670aff6272820b4af9eaceef3a8b659cf01e1859b2d0825a039dffbc9618eea2653167fde9aa700f8ea376a7dee10a0e3d24e6df07ae33063ae54de5f245a9a90f7b5d67c4a0a2d94943a81831465a5cb640c4f432f5e9efe6b0249f333b2cb7f6654b73483cf2e081536dc03aaf659fff9ef18f87ca4701b37d62cf9f4e9e0dc224a29223cd41dd229795123cdf29e4c82f16b163179333bae17cc1451910b5442ef9f4fe612407c28ea32037cbcd4ddcff9a3de920186ad441430007e4c09639b0a54739dd9d12ba4f0f8b5c653fbef6332645f636bdd6979614a06ab14c88869343f82b3db59639ce053ebf3c391b745554a2e375b6e72e912abfc50b5c5fc4a3b0ec42ff5ba331738182590c57e6015723d13a66f5c532dbbe0cd9d067d8b92ff232a444263a349803853abfc628973ec6024b65c3e7048689ed09a52c122bd7803234d3d8768e7ca8606ec674f8dd1e29450ff8ff43faf889d9fe259bc4c8abf2d3f403a95f00dff79c786ed476fff2b66f01536528e757e447f10b053c81482e6d8eb2a74fe0cf29249a64396f52d5d323487f6c6dda51bc3ea95bd4f90952288c389e7562c87ea01b280e4669d3bce31bdab9b99aaa5b1c6b9cfddb25dd067dd3c73736e65bf6f2db6b90491509ab57844b2642f53ad442ffe4107d8f7b9d5cb4795e3b83316d08398f6cb80d66bf6083b655a0cf4b21c7b43f1b97b49c547f28d82496e0bb708047c5690e629ad6565c0d73452daaf2181c78e76d5129a882bffd3964937c507deda57156c9c92dbfd7e81ff37945bba2f88c4710693b23f142ca1a8c90f95c37324cc3b352e1af16b3f89c28bdcb418370346dd0971580ea7d571d490880c332a0616233d3c72196789702d506720c417b0405ff352dc097bcbfac30aa22055d210e94c34428fe2c303613ebcaccb38fafab15acc62a6d86fb6557be639e33b9aa1f56062885a0d5cb6390f898dfd592053a72c9c64af4d26f44ab10db8ed7edc22e1a77419330e501974409ef77ce6c1e5ca703eea10471423c61114437e7ff649add0b6d538934169b072739e79ae8890f1272b2c5d464628ae73d3bcec693b86b3e8ba15f153918f5ad43b9658cfdc36fda8a0ca0a0f0c79ae7cb4998b4143e1110528fce4ce51b182dee8cf013f0ac159f15d00985f3bdf5fdc1bff9cafd6db2b86cf8fc6249ac975acf77f05a6b54a4cec711b43e129edcab0f298323e8c9b5d2ef4534cf66790667dc5f109cdbf7d74dfeba3e4505ce6aa8d67fda3191d51e69223ce8cd19f982a1daf7d27d117e32033a10608b7b5023500bf9a60b6ad30675948946ec7090dc61d154200916be1510fb304372a125f6a6f96c1a88d695d5a47e564e5071f1af9aa1d788f95a41ff701d17ccb36f7dc752f74feb77815ba2ca3ecb4ccf83535e44cf09df32034c987a633901d8c3394c211c193a5e932653854385b17b8e4dda86bbf5554bc039761133190882e36c0f16eff703c4b6e5dcc325ebe04c6a4f2ba33c4e3a7a726df7f7e7fb2c583ba7ca265633bc5f43cbb6c8e4c83bf3bad74ef83e476d0846a4acd4ca93ce56480e3d8a85398c8b9c0f962cb256d77ed938add67186a4e2dcadb09448fd85c649ec4d3abcfb90800b9237f7d66e104503d6439f4b243c4941d4419efa4ca94003a43653016ecf9f854ca76959f460affcbc17629b4771564cd3f19a08bd354f1127a2cc7e8b3434a76a2b961dfac91e67ed3cb2e2a988053ebf72179e64c92fb7829498becf406ded41016166c8f1f1ca97a7a1f8510759db1c92c618a882dc5de4be10228e658fea553aedb02ed33ed5119ba633358891671ea3abf278e21595368d3af137f1a0356edf4e468d6a71e7feab0260393800d8057e27ae468471b537cf7e03c32adeb87621858dcd44f3e432d207c1460514c0a5c079379f5b8b79352d7886b606826f97f1e5dc8402022154f8260000000000fde01c5f5b7f01d9f6bb2bbce93ac4a2f7c11565394b684a5d4817f09dbd77158d07bb95a563d9ca60dfd5ef734c70c9f23704f8778f8723c80c48e8f4e7b6394dba2aefa2c710ea5584de3342d646e8d576b8242c2a6149eae2f2e7448cf16fc274a5a1e4e824849faaadde1134c281758bbaec714ebb084526647dce64b979f32a843c691dec4e8b233de6d0ce19a6adb483da78403bb169ef1fd1e711e72424639e2af8a107264810248f14aa931e357d9975302a04f063bb34adedd232fee2ee2339c3ebabbb2f273a0342f4a4ae99739764eca9c87cedab344da51c90ecc37fa201652ff7b920db0000d2d9f88226a228dcfd432b659a6c57798b44ce7891a79a6838f9d4e98c918e0c81449ac0b7d2a00817be55f9dd38f090e476058b49068faa104313d91aa024f0e40e50a0decf81603fc9be9b3c0d956ca6eb6f7445473bbe83e1337af0743c7001c1cd1f4a6d66c67f1730619ae6310b14cf8db46a931cc5c7a5e02b3288219d8693afae979edaf3e7458184cb67a0d835d440f6dcc724666e3d8879d63d9bf9771be9a863de20ab9ee301f6e2910ff058657c61197aadab9617470f9b7a1a2d37dea851ac09364a7230221a0e3929d8ffc5cafd92dc040f5c6e34edc6443e2e4f52974fce8516cb246a9eb086e1487385b5928aba8d9f5aab5ef96ef8645674bad7a567b74f43a3767a28f7b2764bfa612d197b20e8853b54532df7a813bf05c9bd1837e88b8d54f1c77f18c147b0b53164b13a5c602e97a883c88770349e646b3f657a1d8025a56325b04e5b0623b6d8d2b92464cbba20f206183733380485b86333ce2ad4b9e0920f8ccc77ca85a1b4b574335dfe252006d04f05e2d7f6734fe5cc0958aa49e94422c68259f28a51acfa9ed88d7736abdb65400399714306d6ec226cdd9df59bdf549e1120755c838808fd943709be4dea89c47d58f9a4d4a39aa3f83d7eb79f292d9788c804946648d43d00212a0ca630e4c231879784b4695f80db42ca086b0cbcf6d96de4bb589cc9d415bb5f24272dcde52ac4fafa1e7e95cc330711a77d03dfd26cae6acffe7f1f955bedca1d8f726c47fdfc6f8491fae50288f2d7fa38b3c1ce6bddc0faf257e769e3e25b8d24c3cd7eef7e3f63732791b90de42f7b926d50d1ca5836bfcbc38d39f21f780c4df8841f7dd680acdf1548bcdd5da69ac0462054d099f9704bac788463ac3c0d49515338fcbdce587f6260b056591e4e4ec9d4744e3147aae1b31bea39d70f3bd6fe63b243619713251b4231c55b7947986fdf77c681ddcb9a4f38723b6006b9d28cbc4a8e5550a9e066b0e2f72d32c40df54e8edd8f38a6d5eceabd56f2518695cc499d8f18e1876f4a9e65ba6d982da17c7dfc154a9ff84eb660c1599a8a905e97fdcbca383131fc0bd09595c9e92195f8634d8d8537b5f7692bfd600347949f0e7c628c7f5090dd95885d383b444f602a4603f2f9bb2ebe28d8d90a071daacebda8a2b0bb23f0e21b251635a31f63ca52416f5754373076822c319fb98bac4603ccca9df843802ee3a25bf536243854726d1bbef2673e897c057983606ab5fee343612d933df7eee4d3085361767a996c872587a242c5a1c0aff3ab904b184a5fc97eec9cb6dd956e113f8253892dc111fbaac6633a92e4e1bb789f727e96b757515af3815b19f5e821a2f3bdb5018a81253b712a2e92a9813dacd0db9110ab3bc43bb6b8eda9d9eaed7d3c676ef98b7f47c7deb88eea72bc3874226f45206e195a84968a2eec341d7e51a398e742f6c7b283ee6b20fede54740caab1be3baaa7cd046fc90bc8a3c3ad59572bee829dd6d5c996f0fc2a7afc80fea51091b377ca9d31cbdb87f9e316e7a4be26c8e72a6cdaebe0cd6c5e095048523086582ffe6aa6ee29943a5a3052ae25b252af6467fa6090e2ef7bb8bed2f52b4a7b479f2c4def5bd5f427b59ef8cfaaa4a482712e2866dc582d7dd6f7c8c26bf2b3650bbf4f83110a2feb1fe8c7bf91dee1b3b40cc7693d7c7b3762c699c627562bbda24591981715aaa4d993a43cdb1c8c5c9eb4ab9f4ece1e6267ec2d24f37f73d4827484fff9cb6855737905081a7dec9990c400d5450ef9e06dca4595f8c0f840231f1419819c0e49275f187b60fc751565c3c14605c96f368da6316caa0d249a0651df95544a6042feed75f0d5483dbb44c90059ec6a7b4453ae6c8465e68e95b1718e0f86f8ab7e85f2bfc3397c7ad8c41818bb708d1e19c3e78a95848ddd1d8e6c99430b07fc8342145492961361ba1aaac73a023bd7e08b9e1484635451d930669d35f00ec636d6dbec5a8633645b97241dfb40534c79d0c924d0d30c1a128d61e1a41842ce4e6f74af2956a0599cf49247e66d08d751710647560042b9923284b83b1e5f15d5fdd10f068672dc30348a24170481bb7932385b565b740d5f0fc980326c6f258885de458be538960dca77a015e1082d67c1fa9a769e7f25453b367bef7b28554e85012eb60dff27d7d965e2ed36d60e68df89c78df5b568931a8c8282afc010829fd7c71d04c0a53c4922892745639d56f7d0cacbb098959a292872274b1de7c2b072d1aa331140b435bc1305a9b56e86b3839d2d7c9f001432f300edcfe061e4da44cf7c12b4429c17c8a6ddcbec7ff1828c1d039861c6e20affe7d208f91c7c7570a0174b98213f9e4ffb7631d853094278e31c59158b651f268779b2fb04ff5db94e525c22d45bf3dcab3769afd978e82c4fc4dbeb60b70caf072dc92a8d53786d68d0e734407c5c05353bae108e5ab0977ac6c75ff2731efd57e31e659dbc5c885f542825209e5add0507aa11e5ab5257e0089b3b55b415486e1f4a78ae81439ff3c0480484b10417ac6e72eed5682fbdd8c0ad7b383f26c67da605d632824816ce2f89298e9904f72ae3e05365ffbbce328bef1f2d62064db87dd089795e9b1cc9f41a6b3b7ccca6f7add2a0fd659b6aeea04a7c4749094a9db31b9d58ee0307877f1c3ce5b52ec0a82285a2592148ee95d100895b182a020c884a79bfd6df0bb521a2d18991d20939e10dec1f1e2886ab1522fcad6b0ed8d8851fa635032c09cfe231b54d702ca3d11856517f7042a7b406ef8193e31de76cc220e0e278293fece97107fea0785b9e0e81a57cd846bcb93638f47db90220583cc3c1575ac33bbcfd8cce592d2e4436ab22248a57b19f52973a85dbc61bab2804b6e94282df891998e45dc21858faa190cfb4587efaf633c2c264afff21841024add376cdb62d2633a648623ccf6e07d51b054f25e07479f5aff5627917d845aa11d6b25ebae859fecb95e3d3f75f46a2db06473bd20746f1b44540f706d9596393e39b7309f79a15471ccd3905f446467dca1941ebfdd161c75fa1841966dff77b2f2dcd8d7c31474f6b1c627530cd11cc002333c0b1fd06c88aed070074c2f087080a3e844b8a32f35bcf7aee15be92e1ad6e94ed3c1bd975409af526364746350b5c5ff414e27db55db958cf9235cbc27c9a7552988dfdd7b03bd90b07dbf3ffeeeb7a5710cb9d619ddee547c298a380c96b05c730b0de36c1e17235618d52eda4649baccceed7696d72962f6b8015d65cc41fcebe57a99fe26dca1416505596da41a2d2bbd1995e7fdeee17b264158df354c8be4c96846e00ece9092efd4d31df72db8220cfb53b0cb3d189263274ae17ce0a45ea5da15bd2d8df3a26dc211e75881b96700dbe918058b1d5f47e82476cfa3b04149d770f2b0e6124d0abb631ce6aa840d5801ee701bc4c4a7d1896dd37126c89669c55b13a87fc0c4e8dd5ee3271a2f8217a6b289753a6be37438f078bf6592655fb55407e9509079a16f418aca002826da7d772c7b370c02d964842e3710a26a81a70cd08ba0f00ec9a5add6912c15620aa1b97015e7e43e3093cf78d21ac656c1c2ba1b08a35284f29c4bc6cad0f0b6114b309a1d36c2119f9a7c4089e2d36070db1446b4350200049a308ba00f480b7b76a12c185e8dd409e3f6083ca214cbe8eb59254d39e23e827da803d321c4fae26fff2ae719179292d31f41a6b6d806290afa867ae06158af4fbd654d82e6fa4e54501b03a024f3a713c8a853bef9599947a2d3f14390df2d29a39e03defb74b6715f4a06e165c933255562b71578880d420f93dc0740306fb66a61def4751a6a564ceb951f1e4f301c71801f4ee7e9512a44054dee51c141b5e191a1a9d5549431c0e234088df11f7616f56c52a904482a9f6b883c11a469a1ed65f553c61ab58517a2b6c39518898660322132f011a0576b18afd3d17831a60d8569086420a571e80265793e2150d565947cd1febc29a43e5b34d3d294e1cb533e3c54d54590e6a7245688d1a353a79189ba29efc075eee5578c3d403d58585b9d28aafb1bbbebbed378c22ff18d588c01f0e19abe3d48637f71595339307ecd2f45c861940a0edde8c52756c78ca261a87c4a846e72efdefdb2119303fdd31d38fa2de10576ba5be8e034da418120cb5b822e17aeb7d60aec84e7d3924e07ab7d9041330b4f16133613817388e241b87ef2f15b6d514c36bbba812269826be519c6f15d10edc1f7783000adc6c3b9b73f500d0b7b94ac980f7ceb01839a5e6ba66bb823f84dd59f78f741fb3e6213cdfb1489af600d629630d6ce62eca9957816c97f1d224ae7d46908786b539d39471c62a2ff0727bed8d13b61b20df341e8bc535a4fedf4c96599c6455fb1b912eb941e86ae21f2d60cf95a0ae107e6c8c0ce61e39a7d65797b6199e040f1bdea88b615bd792d732f4bd7f6e4d153d723b58521c48a479ea38fe33689e29d9c675a8d8085358e1f4e26b6accc415d88c76cf1fef0575b2045792f86644092fdba99ee25eb313681c732d9c54b40d3bd136c8ec53b0f5f1b23504037e0f36a18ad80eb4fb0880de68150fde5b4e149089db88b538a0ee7bcdcfae5311db63072fc2ed9472f44f73e640ddfaefed1c621d3a0f8403b26da929b80e5b383f51dd7e4ef6c04d4211da39a6b6232fab187b379970915f566a4365f91f6e5ae9781a47902ade4eecef522977f9cbe8933dfd5220ec3afa8b59276b9612ccfcbc2c3aeb3c98af42e2b24dae01ed94706e25d76b3344b124a50dfa4b94b1cfd9f335c31b05cb15cbdd40f9f07313ef792e22182c9641991e9ec35d2e2e80c3cb8ae112a2efe329dd77e843caa4cdb1c3b439f8128d2214d3becbe602fc616d8922c4dce4ac9205458c1e5b4d7c082826153746243c04b95a9b48f8c637a6229791e13789e9f424c11e401a5a684ced9ee7272aef7c63a6f79d864f25234a9cd45feeabe5a2345db0c7d8e8f5420e81a65a2cf6c1857efac87f889e6a40cd7833e13bc47e2722b3ff26085a832e3ab7951e144a3012e935353261db512a761c783ab7d9d54d880a1412b1a9a5b4e521386d086107701190a4255e4df3951d3d8cce874ab8792bb0aade5aace3f72624b59506649a6cf1549241219efc79abbec787e51fe2a6c5c14b957a1e801fb9cea2ed31fe69407798de057aff0993bc626b0393434ee0430e97e7318b7d5f4cc8741f21d1b044beaf5f4f18dccaaf344be1a9f461c988f596561ac1d50d5cde25cb571f343552a53c32850be39674463d24d2503d6c2357b86ff0da726f1cb62c397c10d61ff182908369be72d9d843d45604e72da908d0f68eeb20022b049a67007028df6d724410d96e38f75399e9eea7a0af2f21b99c8e1e1d45c3ec18a62771c734426aa1d979342838259c2f1fa6cc5e8b07b2895970cc36ce51acad66f0e36d226747548918a36e7b8354677c05daff9f2a9856206bd367a1ea359d284615b60b85be649a7d8005813c7bacb7831f3b09f38fa4301ffbbfc5c7ab222640dbc8382e95ca381c38d2d30c04f0dc91802278e2c86bb0f04908169a183fb7dc75ce079ac2409f03f4c9f2e845a72c3af7e9ca63f52cb773faccfc306b9d5ca3ced3255fb435fe864fa013da761aa15e810dc090bec759bc19ba9ceca86b1dc30d4931968d412410d772159aa5b83e0406953ba8ca2d58b893caf4a01400978f40e915d681416f59402aa56921f6e8298d5624b46e658524956031804edb7cd3e86d0a84e2298c54edffce36578d7f4499a75b4ea6d5ae6b5723995e869d795fc582149a27dc5ac33c8e7595a99e32359b5d96beffa41a22481a7ede41c239eef63e2dccb61fccb71a97591d5fab53ef944ddac6325d12479c36184223cdfbcf96c816f1b9cd1cd114b84c879f26127bd95e8a45587596e1154fb15b0630507f5a5e0a966eff2a049620e6de591089fd00525616d7d41fcb86602c64b58100aba6fb2300c38607d219f6f1976ac7c50269183e3b58f4eb202e8fdabf73d7e19ab5400eb8f482771c8d8ad060ce38ef8a7000c04c925663348ae7121d6e69e56e46b433623aa63336aea5522ef386c6b2a35464e0ad87edf3a2dd59ecf8db4b05d4f62577692aa687269482a1ffca8efc5eca9798ada5cb7bb1cc9fc9def13da0d80a1ffd8f1ffc0adb9fbde4bb208b07940a903076d0f51224164ce050c0d67db17703bbb38cfb5d67ba2211059ce12f3f3d4ff7b2bcdba0c9508334d6a1a45c889e15c02a128b6a2a31c6aaf2303fa726edb3931b03a8b0d7768a055a74e280dd811f07e3702b903c3c54c7163603926c5c7b026e376d6b2cfa74725b876c39818c09e36ac45acb677a8971b0f1c10fbf349897aedf9fdcd29526c5026c6f0828bc201c497c4819e662bc2c756ef6ae288116e78567980c00556c7da5c042dc009e3dcb5026b0f29038560512f75af1c237e281b758bf0ac28cb46ac7f22cf095850170dc2ef24162661163ee3080e44c9d8baff9049d15a4deb59619123341fa8a3bf3977acd61739d45e89918064d79a94b9727f306e4323c4763feb5fcd08e100d7f8f7b16a856353dc0615a0d6803211bccad6bf4ef542ae042d1b54967119429fca21d9b133654b24bfffa93ab8b9bcb63fb341dd8e6c0aa63b8bf67e89f0b3f48fdebd1006d41b7ae8edebc08199d8f175cd05c094b8636fac7e62b879d9119fcccc7484fd0b00a73fcd3350456df57e84d37eaa6081e5846b1c164cb249413fcc2a0da4c281979e23ae1137839a619b78355ef3d6f130ba09de8556d2dfb2d52b3ed6ea6ac5586d9984c19688003c6aa7587381a2ffba589bf954f0744cb02f9e40a254b3e4ae475d335c4526469c6ddd5ef15f68477b7994e7e7e4a33e33cb05469825ab87d3ff5e77c494482fb4e8c67dc823d1a79478b3a921fc483051f009a5e4489dd1a8a2226ad309ea7a452a2f1c599273e60045c569d993f400e09331d32d09198b4c188d42e5786adb91076cff9b9d0fe3e257bb005c86cc85f0176b6b8e9e9db7c08a62cf245f1afe89cf899cbcccc209ee73fd0b5e0c9d60c1c4ea90500043d45911c50851b91a0baf55ed50a758b49b530b82b0a5909005c1c0b42ab96f5fad958be72547fdf142a7732e2f987675e36db6c86b44b64adfe26da104f7362a061337d710c80815998a146516313bcfd81fe271ccc63f5ef8a26e54fe461c5309cc62f84f6c28241f8fd5a91d26f182b4e63818d56edb5c31931c8479ee3814849606e1a2f12c4ff79fa2629278a3cbd0f2e8af6e38a6b6a163f90e17411788b805b3ded17da1633e0780d8d8dcccfbeb7a1a8cd8001d562601042c1527a2d13d0147ce104f0b7e7efb8cf7d405954d81f38cb24c0dc704a6e1b1e0e15ac47fe8bbaa3d6d80ed06f1e12f68ea9d97538f4096f92c0d35b35c31e87dad3043a4f4e7a2620c94da9876024ecb5f0176a6881c1a34048fd96a5440666f93c4df9d987d4a5af51a5de2b816816f2817ed3e7c53b47dd5d799d44de20688892f35329100424b359b4094315ca4109571e3625c563451ddc51c151c336a43e9506026738da16452f9865231993d15373ef6f5e2c7979b78ee0f083e132e30a04a565530848666bba73f62b1585bd49c249e16499822e21094a356a3c36418acff77b28e894fa80ac8619199a2f26100ede26e34facdbf3c07e7cb0af36b37c15f6bc0ee6fc1e59f41011d913570f885a0b13617103d9762c34aa5bd20bfccc7036191a266cd059097a3d749a3b3f30770729fb8ad2de4fa97c9b42163bfad2c943a30aa9cd72f065535dc8679916e3f7718960a25dfe592893bb2d410a207c0c172c24e3f02013447e836d474eee559c7d43d2e8256a4f96eb6596a610339cbc005acd000dd5e24a3b81f2dd7731cbf9de138ba803b9eacb6c6eb8533f3443a5ff569f97c5db388443193f753e97058437c1a2de32e43dc8d37402ee07843d574ab980f2e6486a0da96ffc51005ca65701dc0b26fdc08624ad993dd930aa595e22daed87af42ff6aa0308c6c7b7c4e397054b8eafb7240024c0f09e80bfda2ae4eea26ded33cb018ec5aefc04ce45ac0581fca27c7274889104b8d2914e3cf37fa27fcba9e1f5e02aa76bfc5073b04bd7b7f2b3947204a5167f879733a8788de4dea7cd8f4cca6e796165633b24dc97444a29d9b6339fe50b3b00d08109f6b971c4bede9c400920a3e308d92c195353e42ca132c6aea2fef7bb1f8932a97270047b6179692bd1030a5cea0de226f415adf937669acde0174873d363c2fbb82545895303cbdc91339a66ec97e042a836a30f03b7c1933d6c2ab80023f1992ed5f914d243a3fa668a0319bd47e5f89eda4751d72ed6c39558db626c67e237bc0904658cc492c4624ba497ec50e1c3e764d4203e5bd929cbfcc0f1e6ab01ccf0b15c2ac6eca9ce6d87ef1fb1034053b68922f6f842e14d6397de6bf5bb406abaa81aad78a977cef4b95abcf57d13f99254947bba18751434cd1cdcd119f0687953197679e2de0fb1fba3cd8d692336ebac6dac2cac0136937b557ee91c4065f65e50be6c260be6d0d2c087b890e70159e9328a2d2bc0a64bb4cc51cf8be3d62a3225d12cb45b6476caff1faf1fc20e33f138da6e3b5fd6c412788b05b723741cb9aba0092d11382b04b19726042933cf6055e8b0be63351a1f8596b471b147f3dc0c119ed540c29fa3e629f977865c359e6a76fd2c73a9be1ecf85518a72634c8f494f6863f28a09e0de35e749bfae1746dc2e0d4e7e85f45cb2fe4b81304f802f9cc403344593367a139b47fe6cb72b701fedbb2889535db9fb2984e1b0a8fd785864374d85b77035343d8d9d8b9b35de6a5203f2ed64723f8ecd31f882da867969dc4ea2dc8cd2cfa75a79ab22fa0250b4615706c8abcd1be27c4990b30e8f20cca2757c204868719af5acb7aa61f94595f5ee3eceb730a83af53409204ac6ce777c200dd4b5efd6f1ac7a6f8d276b8679d05149d2230e974e4dc599c13776c07d64defd03f0fc7373d7fe197f75a0a5ab2413040e6455837dfe9bdb5a7127ed2c9bc8362815582314f1b17df67853e47cd1d718fb2be813f183c92663cc60c2d0b0e0ad7ac2895600bcf757cd4a57145efc25b1d86000ad90d048d2985ce2505394f7ef6d0c41efdf5f175e84fd54718a0ae0a0e8813defa9a68fb960b8ceba58d17318dd0b8b41e7f785a5265401769b034f3692e5e29b41f0f815f0b6a10d6554fbd20c671f7cec90fad2d11fc6f54c79d2fcb40c087ac05f7df3f17b3442d1de69264ece23b9866ef37cddfd88e860c84ff9c9c740da06ec6a1ac9965162bfac11307e86e608336ba037e047773272c9ba68262a355160a42468919b48bb9c04e395dd901f0e2294587b56b46cc0339f7ce1516a038cacd4debe48b1429bf66a09f23c05c1940d351b2e7a3a3ac4f7fb3d09ef57a3dde809cea050f97f8f14ced397434ea778fe6c2db7614988d1ee7b0f616d74991a935aa73671b66ef0ff6a4972451546b61ed23765b5377068a94e584fe4bf7c5290d43c228380896ef7ac779f596aadd22f6e07184de85af22eb2fc75339f16b23ca16e6cf3cedb661d297994432f86d2c8f28e4e8b2b1e3e57cbb1480d573fae7bb50004e1dfc3d315763809531fe09536b2dc4d85a4d3259ff0ee91f58e7627db5de29b49268067ecf7a9f8e877802d33a2045db36ea6881d7bf0d619645cf639fa1fb7027db73c04521918393a7a789a7ae1639245e640767dc664445ee9eb1e7d9a9f5be5381e2b232d1006be42b3e0b972fea958604b808588203569bf43a876ab4240bc349cbbb2a4113c510953a64ffb935531d7401d6bad817d170343f01443f86282e263a21569f3b67b37e4769de9c694848e07c75dcb87778fa64397720b13e8e38d86127e48ea3222ceeadc247d2e61525e2989986943c5851814b4bb518f596a1673a335b4b97eafa9d51cd915bc7f87223cb47585cceca66fba57b3ddc3110643f5ed362eb2413fb3042b5aac8e1c4c659bbad0b4d383d8283660cf389e030216f543d37044218e9b1a8eab0f91e8e418ac842c1e2f99fde11bbe7f7cef9023c4bdc6065bf41615370e9e69a5afa547633146902839b88cb6bca91dd15051966952e5f62f2b4a65225e1394d7f6f4784bbb8db457fca477e34303016a84b28412bab26a001baf05eada79fd337d2020b56367c6035c3ba052552dca09214aa29a07c9a1b406950109b30f3b69d72d9782a368614895e6ed2c89d71de52313c0000000000000000b311e74f42e7c3c2f3020d12678b87cd7a16e8442000411c2326cdae179e7db0841fcd7b4e892ad85c9fcc11a22a1c87e3e2fa36add273bf150b04fe1c19b43600", + "04000000454789e1a27f3e0206b16254d58d17029bd5ad228109096c26117b4402ccaa8d7af0b2ef5aeed1d5fe7d09013785cd1ae671da0c8e2f9c14bd9cbbc1178588824ad83a269a743f8bb908dfdfa2a23c6832f9dc0a2a84f9cef5c2f24a434fad3a0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000300000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102e4cf041ce2714fce6b2deac48e63d661ce0fb4622102f16275ac8da3f0b1adb066a16328d511763a00fe5e4f92d22b3514fd59b1d6e202a5c6d9890b557105000d9f2ca6f1f8fa39915aa49ec722018c2101077c22bfa250492b61703d1af03530d23486638dd2f5ba49d537d1d8c45f965ce6a0a14dd5097f44532166e534255d6477b31173feb480ec9ba5aae0db74252def312bcef41a011166d5f33d8e0789112c7aa60ed86d96287cfbe3e8e20be82b94c97e4d41f6b819fc36649ba91bc2ce274613dc06a6ef8fca001acc4c5028dab519f2b9b6fff9baf676d1a69857e50de5f7c37602e6a7eb953bc3e1ca4e6e14c024d59a145ed5289fb3498b53f0da8f5a4354703b12b06388f307741479fe70ffc95ae1430cd853ba53778ec33be771d78e312bd02494c462e258fd807615516d5dea59679f859b63ee04c82b4fd43fab331b5fc84f5bfe149c71adc42b60e857a7cad23f484a5b7bc7b0ef66e4fba0eef3d3747bd0a63729bf9cc5d9dd917b040368dd6b0ca7bf7a6070ee954e40d901f2ffa6d50caaf4d721653d5fe254e82fc50ddebb91c05e8b83e55bc4dafc45b078fce6391cc4d0456128dd80ee1c9965a9371d2f6c7533a6a49af3ad85da81bce5148b23589443166ae62137855c0d698309d0108f0793e7a9a852a9c7597b1040fafeb9d693219648a3b677e6c07c635539523c6a555317a925489a9da78cd8192437886b07473ce2ca2a3a7c48726e842d93a80c85fa2022738a4325f287880ba6b6e8accddfbd5ca28e67e5645328c9986e6e4b38557bd175e5dc92592331df1701c8a1bcfebfbf091ec246a46ca1e0b4799c5c35796015b8727a2e823f9430e25db23c96ba4e5ac3ff3ff05a9467f032a4550a3a777659973d5d8f7366e6a96e2f79655c2e885018096d0460db04b9238020812d6164818427da0e58ea6212eb91094c7c2ad13b124c965097da1c43e40a2274f1870fc60f26cad967a8f15258e591e3a7f7dbd17ba04389e482bbc79cbc73f2f30e861c927bd24f6bc825de62778ec9b61225d8ef0559ab122f2090de38933cc0f2007dce12edaea60f6be5560de16ec336e78e693355191b02ba0641dce17315ad08ae6b03bd71efe5b5bd24c692c50d6c165d2c8807abeed676f9de986cd45790ca193cbab1f0cb07ac42cbcc89cb8a7b5b709fa94aa85174978c868f349d10c5c65df30cf5343a5c0f13a8b36dab8f86ad272a64888078b8c996f506c2cbdb73056664d1f5c9e27aded03d5f22382c43de50db28ab28af1b9e00813b8bbbbd6173766789143824af9d003367225c018f6215587b5cc76763bd24b1be9d6026de65ce9354e1bfcd9d44ce81b2eca498f81660e17ea08c2d1dac1f8571e426f131dec26cc390884acee64da070eff9c381a4e6da1bd9adeb13b20de77b8ca9b9849a028c2c2f079c74fca62c34bf6672fdd2226713800e96b10fef3e60de8263a2618bbc49f5e641697fb8ba4fc4ae2ad8c7241a91a09f4dffe1986dd01590623216c72d70ee84e13154db0cf8342d6f36b00ba1bf8f640868d14c69fbc6765d9fee53f1bf4fdbd73240ef4a6969bb3791b2206badb2dcf97173c99cab5a39bd3a4ffe49355e294b33cb9153fe32dfd196842e3761f51cdce3ae0df0ce51b14e5a6eedf3a9a57c9cecc0f19730f6b82c362cc79c0001e2122a1c8fc781a0670e09110f2c64613286fadf33d16e64ce192c8dec9de63e6bc7734cc5b1d24598b616e83edf9fb228ee724bc0d0dc8a858efdc01bf8978ae1a9b1cdc23ac54b4af01ea7312bfdf3316b23aeeec8f51c8a12a89a8416ac1b5f7bbafd83dded33485e68f150e39a35e70b6ea6514fcfd13c5e10be2dc52a3c2e05f37e327f8b2eea2907d670b592b31a877c3e8cc326e2be8a64bd9a5802aaad49df3716dae08cd1704ca950c645705332302895ab0613e1d8d14db5d9e46282a1051f07f3902b69776166829ecc3c2381039c1d892c662898eb9de09432f2ee145ff7701aac2d4e76e215917dad18d91ab4abe068e20471e071bcd120d36f824a77f0f628ccdfdf28bfb7789a745d6b30d8ebcb1031d55c50b651b2b23883bb37b8b753822dfa61ef703aba2b7eb84fd9aff965af4225e16773a79cdb85e22b0dc4a3ae7e3ad62a573446eea70d51238e529ed0eb1c0c71f80e0a62dd8f9a830a05cd0494548aad157a2a7fb2d611084431a1ff9724d8879984a881259dd3355452f08eb4faf2905f26c22c00ac57fdf6ad417207034a9914916a163b37de4c86154813448e8a06fa64b7dd6b62164f96d0f5214ab6c135dac363034ccd4aba000d388e6b259e531bf00be1870efe6157604ce0f90b5a226c07fb134cb17b172d27f45d94a7308cad63bf070c7c3785e47bb1b99b2952460763426eab8f9a114424138529f6773f4c4293c47c5b8311b8d0182ad0d49e823900000000015fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4160700000000000000fde01ccb8336bd914d2840536422f47a495f99fb275a94036bdc26357196da4bfcbd8f1c0558e6698c8f5de4d92c97baf06de243383ee008944a81f75506237ac1dc049cb22a12c152b1eeda269b4756e8ef1f6e4fe50f2bd65fb00acfb460d178fc365b437135582d045f54b623eb978efc37452f119b1989169ffcb8948054972a93a1413b9364c3d8c2709c7fc71c4bb43cf678b295727103d0c573eed11b4d138573d9068a7bcff134ff25c0ba6ae65f7f0eae31f129d238e4e855b6d46033613f4bff845aeb9036b440b8d821c3c01527b797fb5177b13856b0b0a417bc8b1ea6b076f4bad29d5746f76aa64e8da22b33db49bc6be2938b56864402c69c96849d0b5caa8ae0411a1724cdfb42cb7d86cb30a8bba11575dc72bf9aa6c296dc710420c9aa6d864de981fd735f00efbc392087d927a4fe65bbc0b6fc89facfcc3eafb5d6e00ed6d567a6dbaff95b57e858fb4303a0d108080638a1ac7cc6ce0a86a16b8fc3d16178e3dc946675af10d1f964d1f391a8673b7277bfd0eabe35db6fb98a465ed64ff1e311aebe7c4bc6c62d744304454e701699b71ceb69fefa80770ff25191d4fd2c23bc9b8790833df08d383df7248236ee9d492ff18d901a7dc230039231d1cc7742deff6a359640b6eff588d2a3137ccb04c0cff68cfd05394fbbfd4dd09e290f3842af42eb170fc403659180d38112dd0e5b6247c56ec5ccf3ac8398bb136247de11037a94005897399805533748e9a71723a6c7d791be744134d46835bb3818da353915edfd05e538cbe1a30d64a079f5056a9b5fed8bbeae99bea0b3e0b54c50f8a0fdc42db5eccf41f57e2fac38c0310f07b8d6d5255d723e9ff1776847795d137224ca2954e125547963678967da6b44216b9c53d6c9b33bacd913203e08f3551a334dd4d7780487d68bed9631ebd46a4bcdd08e4b13e7aa51a279c45cf31fb00a68ba389bde4e033ae6b4359428f50062c69fe23042c824b5712806cf8ebd110a792d399f50d6657b714401475c868f1cc000a26fcb23243860940449e08c7983497ac88ff431242abd6d0a2e489f2f47c046bff32ef29774a3fe93fd710b6d45da4fe9785d07bd47cd9bef1050a125b3b4518a44cf3baf050ecef26b2f80d3f28c648e8e44695e2e605fdcad802d0216afb932754e092a3d2c450aa42c5011159206180004be19598ed9fdaa0f27bf77542f9709270615ff5827646e11533285e466b8cf1af3674b2f4ac74d77745ee5f8143c8606c40af15c612a5d2e65b4eafbdafe0a68e57eb6e0c85f8bb703a9a8ab1b7515ef67a924479a03d7e710f67b342159c340e88df29d30d7c0edb572002da039a07bf9af819355602c019720e17873c0f73a359ed9fd1136d5478a2605de995482060c9c83f4bdd4d000280fe96e40e2c968918ea53ab2159b94aca623843dd9923fe6b609ad501fe6d002bb36775f274eeebe449b8cea00ce80b9e82c97d59808fd2ebc8d3e5d0245f0c4d5b7ae85af3b3a36f9f40dda9bd282e35f2bd2608d1137a992be3ed200e36ea82a93c59f37a1d657e1e13b76496408fbfecd9dafa4a8fec72cd9ccc036cf48ccc81b8a0e792f3d97689259bd9c846bbdf2e51cd2356f2c5e17eef3d0d4a33b44701b18e3475ea42d37639fed6abfba19498483de9c26e297265b721ddaf3c6ebee876a9b4a310ad1df24f6db2b6614d88b414cc5df778d690f750083ecce0a779d713b088c01b1f0010106f9290afbf92c85cc9d0aa9d8730539fa2a43f8aae9d19194edeac1a8571044061f0c922492f179c5cd54470f90ab5c074e83575645c0345c540ef09e3f934fa6d09210c101ac83152ed5480acfb64cc5cdc59408e1899c038eb0b0254a130920222a549c17992c445e46522928a6033b89fd07122063ab40ffa3cd9724cf2c5f1b170577ad9418666aa43f537d3f35bcc475f89930dc9f5a9c2b3f88aeefcd6689a14ee59b632adad7cf08db8832533281dc4f5fdefbcbc06f8c923ed2591458925cb42971f7d1b469086da757827044300a8ed82cd362dd8f73ce39cd2f7d511dfcde84f7fb230c2f03dc1fbc163c650d7a6b6316196b5571c07cf4bf00c142a307d55b57bc8cf5f91d67a7019bf3a42bc4083f455594f5cdaee0ab2e4f49608ac53d9a9dbf7e2d9b6e97f6668d8eedf234fbc05e5d15e42d45a68c4fdebf20173c2a713eecc3797aa34822f580668da9daa71875189a0be00ad2882e14a4052291943d416157e08e800b479927e87603502553a51210a19716beb98a1ac009066d7a811228aa3361b151e25031490c3b3e2b7333eb20cc1fd30ddd02d57f531d0bcb8ed67b851c14366e41cc9dff350bcb0dfb6a09b8b2a5261291f850f86efd21f53bd8a1dbcca9c98453dab7a08ee7b0698b3b63d65964cf8764c961c3f4100b02a71ddaaf1cc06d210cf83598846bd95e74795b5a374db1cb0e3642706583f9e53cf37c760b0710d2d8030bf2113166450b46e82169467aa0e5de3afad785dd7593ca67c5331d5d2b5ff31ef22cd6212ad04872bfd5d049ed92fc9d58759cc09c529259bbdb789f7e2b3a0af540c8dcb224abdbeef9daa3db99d789c57d01f75867a8f8dd4db47d67f49c1cc04ef8dbcead3931919f434846f43ffa096ee0ee4ecfc2ed9e7a48585769ea029a5137a00a34c97429694c757b6d2e37ed4ebe3713e951f026c35af69df0bc0d6fc9d064953c8f310b085b2f7c0f3dc7713dbcd5381ef1b1a6fbfb0a594e1102c0e1cc95232c3f38e5146a999764483ccbe9336b24998bb35c12861c0a8cf930f04f137b85315a84caef02cb669ad4f363896f98ec3ab4e5d7f81329748dfa261add21a21683ea70f13764cd14dc5037b6216777b145f01b8e76177ad76a3120f4d8ac9e19d4fc0a389ede0dc9a0485fb8321e82802e5ca7ec5dcc462604430ce1a6e857f274c1c56d2cbe9deab852559e65887dd2ecd951327eabd5f6a9cc1ece73218f9c4cd23148258f8800dddce551810cd8935f8d2df2e483a2b8657d27646aa378b8e14d69db375839c94599c298c4a784e471ce188483534d1aa9f1057e87a8b8f34be2c47723b7bd424f168a2518e1f39d0c246920517e8ad28ef538628554494f11b23959ddac9ef39ae2298fb6e9a9ad1e476aca957dcbab5c882d82af5268bdff02a50d91f4bd65e7fc60ced2c256100ad4fe8f2e78201a707e14e539012f535677ee2101411905a723c34141fcc36a7ade3e2617e2e3b395f234eb2bf69ffbda482ecee215a07558a73311c1bcaed764f2230c286c1b99745303dff24d5c6fca5e1151d457a60fb84d7c6d6884f405008bab90ecaf8bb36a0d2c8505eec1f8dddcd5e66915e129298bd1b260fd8f4a381057adfe6f4124e5723226d7f8a48560350c626ca6452d597a4502911e9fd29a6900d3d343586758842f4cae3f41d6d5d8b4f1664788c4b2181d1d8eaa179fe0b9a80982d6a5930ee40e506fc38da4ec19f921f5173b74965a0139af6d9e971c3e5b38d5088620b2bc19d336e0a09758647124935f1c0b0102e06435a8096f15c8665d7317f98b69ac2a6622cdbdb780f684e801f5e4f181ee4adfd0cc9a799716bbc84d300f49c2af06fdf173e45ac5d8c3ff4de464004dd1058da5bdf8df2197d551df5575eeba4806c3821cae37fbf483e3bb65cf5f9b62ac0d61d9d97d8ebfdbc74fbfb59a22a407e5dfddd931b186a0df52c2ae60ff5d963913f282bbedad9674fb6a0fbf32460e1746ef08c3ad2b0157db386a982485ead2ad1b977b92d066725e4a76df59a10a508e9c00d8832eaf72b84c7f276e1504ad16357db8378a71a60023c900796226602ee97277b899917d71fcf11b4f4125c5b454dc1dec2971424319ffb195c910cedd226576dc82b3b84e2cb3ec8956a1805a7a4fdf5a9e49b6034fb1c7f2d131368c9cf1daabd8ebfc93f499d737e411792656a0e8fb0c89db1f351a10458a2c8d5803c4e8ca672b3e63c8be3bb545bada8261912bd4dc018fba6d916c2aa80fbb7d4f591d915b21d87ce73b52673d6a3f8d765ca584bffe6e68140e7d501a20cba127dae5ce023bd6495261e8d4aff031385c693b7499444c41e95dce8ce00027ba5c6882f309e7c01fedcb3cc95bfe5322b5d95ad15405c062a3c0d9977906c2686a3950a50694fe971fbaee9b2c8e6be04c2d4795dd0e96ea3d263fa57f3598c010e7a6497e3200cb2efc3cb9b155953eb20cc616f811b975adfaf7ab5009c2f07ceb4f8858295fc05743ae13112e8f8cb4fc5dd964df755c3f01d184a33f5a6543ddd09eff839d06902bde1cccea58c42ffb0ab1d0d1a0edcf9753b51a026d0695d39dbcfba0d2fe88636926147e59ede5387411cabc27be6b90ae06291da3c69147ab757fd19529b66421cfa0ad364808d2a07420943ddc5797c1f9bb3cd02f9c017587df52e3b552a8c4c91a6d79f688ee83f869e67de7195de505f21c6872a4f0434c9445a62e2d93d3d87badb66eff3a5c7eb612e1e2bd17fd26c43fa24197fbaa348ee35166a2c68d7e81499736e501fbbc8ec8d3fc9179d717a4143310e64ff307dac933283f34a8d0aee966df245af33756f1aa2664604c0d30046f030c8a366c0f411f56732881682ed3d04c26a1d2bdc54a87922725db56420da091e86c61b76437ab3deda0d0c74c480fde36de78fd370710e32dd9e752ed1625657f3cb769b649b368beed5c1cbcd5b7990160326cee961e9b9a1af9c344375cf19987687045db03e645ada5d20ed4529fc4cfcbdefa42727c9d4176d347033b5928a3ff90bce5579bb00e87d1d9e040d1adca7d188410e55b8bcbd7bff5012a0171f84962c88e2ef2a2b209a1f7b8b3d7dc1bb60c249832defbb9027aa80f5e119cef25e405249540c042313f2b7603470e84ecdeb1059e8c19a09e5cae35018df0ce514487e78af238b23279f39833c4b56af83644cdd121fe632db58c2eecdf0619164f3a89f9afe8f6a05dfb9ce0511b4dd280c0e7bff4ef90c5e2d22e9b10bf04cbb342dac0728bbfaa0849ebf06f38b786ba7c64e6c0f2e5365f972b46a87ea2273bf745530fa51f226110518e5e6cf95f66693ad58ecfd19d9aac1d9776aa4ab53e9d189d25ed4d1fa49b828ecb8fa54d53aa56ba564f7ba4853637522f4371228ceb84829121e75e05cd2f0bc71dce3dc3061d9afceda45ef8e038a72996745b6cf555e1697ff9a986194a80fd8b81729db5963f683467aff5261f752297f8baf392bc5761a85c75d58bd810e2a4f09d2b0d903e154d92ecf8b3193d0a4b4458f65d86f81af18fb399241e2b3359c2fb9d2671177633e24616f61e6bf61b2e9cc2dccf775066c4077ac92e972eb4652a7a7b60bd8701704bf418094b9c6eb3b30bbd770f1bdbc4e66f2f956b1237e0332eb1289cf85099147b3e33cd0c45d522b334f7d76ac203a8cae76d2807e8b769861ac3c9e448badca71c03510b1cab65ee97b907389e6941fc6c386f053f2145f6ebb25da1406cdf4c593b70dd9852008e88ba56e5c3f7a3f54a7df1646018b2801d34ed49093e91f1471f76a9d569381887f64b8072044953d5a877f96f41b13c25170b15a5a218ea210291f71c67ff6d7b4d9470710c6eef3908cd4d901f66b5c8af81f6a5596a75df335e29940f214c83312bbb418d0cff219e61aa2e7faca6346038f8444cfce6a435ac9046ed94038a5ff32fb5d62ea76de4a73c411dca8e49f04fcfefb7cecbce23f56c384a4b81fa3abea4bbe37dd13cec998d6df62efb23ee87d5824acceebc0115d4f7d84d4aaf691b0cd25d0f059ff7a9ea560a999ad43a8896186a9f787227a368f5febea348a67a748f566f5671b71708030a7063188bf3a008173fe0870c44c70231a47febfde1d5dcb0e3ed4ecfc0a5a1218c9b1ecc4e5aefabc4f3580392b6285a25e7f3b224db2a3509ab7be4699504f4f3711ecc6467e3a69d1f9101dec579726aec9f2e707cee2d337d7e96524e1ea2a925682cde94b0d943972c042fe1e0a404d8ce137f912c4a890d7ede7ccff30b5a001810f75ffe6b337afa2c0f3bba8fc4e94afe7529305632c2b4ae925ecfd55473fcd562a719ea19a7ab255b4375bb812fe9e228d39f20c33c3d2cbf431652a6876df80c3d6fdad1b60e2d70163584c6a50d2855691b8256aeb1e84d7dabf0ff83f7f0ed17c1a9c72dc416d35b8744ff12640c39f4b86c0b33299405c924357a4aa4db8f8a88cb49934b329d09a0ed5c23a5250ee2d0d25b86b0f07f1fc62c63578de9c308ac886e77fe033c8da42ccd70b3e627e5620552ab972edf72021e480e2c82a829f705d3ac8015aabcaa6bd2a1b68f002991853e02f7e440ef3cfa15b840b6e6aa926020d7e43356cbb434259703150e163422eb5c74d159aefb59e8f961f8f68710085ba76114a8a0de5a2b14f72e7976b106e1e0cf91b706f6a7c490dcb8001320e0db5d1012ba71c1026954844685193e6dbdbd202d4a7aa36d9c0644ea2165fccf260fa91a792816cc882b7da2270928b48f34ca15b5ae406f9f8fde325e4b306eb2772e10635fa7ca2b23576e35af57b29f2f5ecb01da489c90988c71959f6bf3d3b491238fd4c13bd6862ed1841983121c58c257f1943fbd4b523018e444538ae5699e2cf4c34bb4fad51180adbfffb2797049984f62f317acc0aefd7b49ef2394f41a019a11541f26141a1c35e1bcc05a9230fce3582b9ea160f935ded5c9dd515e7e27a68244a2e91392bcbdc0573658feb349140fd93d8715f6bcdff9bdd4186716192c80be3fcd7c338434c5fcfebb4339765c15b8c0ac0ab14ff03799d2454bed171a4a528d94e6026b3836f5deffdab2b77d9a32b24112e97abc3271e93c32bf2c1eff42acd1726233299e7855c1e2423cc35d3bcc2823d4cf52b5ec2fa172da26d00da0aee048bbaadf2ab1fb28289b0d6f02038a266c7160dc516cf7674632028f8144c44a971be620b43199a3466dd622cb71b7ae3aa06eee385cf59a17bb32a08c90057f131dc03952d4a35d86a6d6979f4b672fbca7da5dcfe082d69c3f09135f499eee82071299a6350ad74fe5cce702505175df85f680ef531f640ada162ff6f070814d78e8d28fc3316b54f170f508bbb29d8a96618a6cc211776ae30038a1e904942f2728591344da49984736b456ed59507d5c6053c3cfbecb5e11046d87a300a6bedf6ac18a8beb3daae79cc3ac4603b1d2d705b2d215f8fffdd5038b1ee7d4cacd86114cf8f6feed76bb810e542561c4c848affb71d12c630f9b29de4509b00203948b139065e1feaeeaee13c2f574530f90a277be135f75806221f631c744355189d1390330709b2bbcb61f548d8fc7f39f54413a3090d09a962e283442bbe01b6f7b7a6055620ac94ebdfdf95982722b844e3b708af50f3f9601a44f5c4757e7a5067dbc41ebd9ce6e2eebbe0f3547ffbfce538287f39adb5826117dc146bc621d617d0b4811c053e1aa2e2f8343d269cadead9ab4110531ef03f973cb43ddd89f6ced52238cb693b8850e9df3d9cdbcb97c4c84749eec92b823f29721c7c200f69db415277456626814d646ae57ef136e36a0273ac76d51fb11b37631d928a901238718eb4ff8336a0a750a5819bf6a2da76da1a06964ef4800b865d3bd026d0edd315e74337fc9fa692fff61c4c7153cfcfba2f5a16209460f90c5a353f6d581c6529bc2290799b615a9dfc1acf6889967d9b979c62ee16e3a997dceaf1fc020d4b28ec3c80ecc8f2163244895b67ab4eff8239a805252cf2e19e58e0c4fdbf595402b5625fb261e641a1a9c938faad9848ce84f41004e682748e5a9a8d4c181c9837f8b5ce33e10b74d24337dc4a67ed066979a45d52f6c3cbdc5c49b62f41eb54287907abe5fad99c5776a167d918b5747da356d373cd313d8c3fb3b30b7040ed00d815e0782b6595bb4341105d84db9e4edb0684f60f20bc9652f58cd8abb5bf1813e6d3f2c1d75a2279c1ba7951eb34126601fe497e93b9cb642bfbe13ad396863d499e762467f2e22b5c78428b775e523007747338b2b8c2ceee59ce16f03479892e129573e914da841d58d43a33a1331e9ef7d96ad374534e386b677cf3b438a642d4fc04a8bf71326cdf2e6ea25739d89aae37abd09eb8481a32821f6d6789875c2d56425c31ecf2bf179d125a003c5d9b79181182705a357170ac031985e1e182ed63be6c5e600a77fbbbf23ac8d18c9edb79cee2b4e529563a6019ef4b4805bbd84b2c27dae627728a39a3c3c91578fb4bc362223751e67c939a5c3f89ab2ea85c27b70d1cc0d96972070cbcaf8440f8b2505653de677ab2976646be75a7bccd3bbcef3a25019096f9e558328daa4f3af6d458d3b1a395079858ff3d6bd6cbe810def364a44bc2a3ff558f29dd4dd1c6087034b32e1ccaabce7cfa25951985c9e00c69de2ef5d0c8181f47b81f747db86e5ed291574dcb8ac53e22407900be677b9723104216ad0577762d6ec7fb694551d72e5357d62fcdef4900596efee13259d3a2557dea28153d4b6d65ef8ef4ce2acd92101423a38997febe2582661862c5bdde0e64db509562965c7ae8042a1887485f21a4880fd1345792e1f5462d63e6e2fa9c8d63a3203101902f0c8e17aca5cca2d0d205a3b8269cc1af7177775778db264785c5bc520494b2039062633421f09651be1a01467d3214e19c020eb3992f771a44f1d22dd5bdc708f1414ea342d0f2a3ea8356b497e7552c447d1c59acc00ec92293552998c4eac2a6051d2f4a9ebdd26722c03d8693add2429e77dcf35943d81dc0860c13035aaac4e19197f86dd400148302abf7910c45c738926ad3fcd92ff1e639b03c4dba5938c58d0c09c16051751026e87b436ca7a14f21eaffca3e9b6eccc8c8a8f91653fce0aa1e8c983fd3eeb5f2948254c6069479302431663ff869ce60b24d3bf668ab9d899d4525f79287ba041b510c70f683b40489c44d9f36d56d36d7562d0d73ab7d68727dbb169035b385676015e7cb44fc925ad773e7ac28b367029c57851d0c90520cac906f426c75afd7269124d7e2114c8511b331ef1d43ad5e758be645a2469590f5d2bc7321f739034608fe9bfec9622c5d89e9dd9ed8a0b63c23edb5a26a49b7fc681a33ea3c56b87ca36f7ac4079125e426fe01837fc0dadefe253f6db601c824d246a19b6fd3621eaa9835b58b3c00fbcdd6558203678e9ab1e113deabcbdad998f320cec5e7fb20d619f1a66fd6a73d7b51a0c2a18e5e7dd82e8adbea481485bc6b535c445995d221a43333e4d8f986d91a7bb24044c4f84216e7739077979f065c63df0bebb771053211ffaebd3c97fc978bfe1057f3ecd99019d475bc28cbc5e408946ecf651792c14bb15f27b52074bafc8b4386932f56d9ad57568a511a9daf1af3b89e571226c4419d06a3198a04fc473e67115201c6ed1c82fc049bb1f330914fee317b7dd7b48df0ecf5684c68ba3db8222d65486c4548509c00e1f1da0f8bd8db2e3e5573e1e94380b3e4f6c8644db45debfff88336be787fe7fc76ede488f1328a87e0ea6df38a622601a1bf26ccafea3e9f53b88816cedb7c03f7a1cc29e204fd3dcec39ae72728b9149d8982cef971077e05cd27636da2967a1ec1a0cb823d76dbb310fe948cf1d4bffee9be1ebb7f545c51258d6dd0a95cc54be6d24274d2500363dcd6d8ee0c30088a6eb8129fe8943e91adce089c90ab4e484a4898183dfcf0ca08b0b46e4a06fe66cb2eb4e7bceddb6b1147b0812eaf9a9997456202bf1f04d912efef7c2b58adbaaa031a66e06ed91a8d7a8c332414bd8d42957aa2519d610b09f2fc2905a189aa190b3e339804447c72ae0879c5675594045d60ea6e3e602e419bde86dd178e34f7c031f8b53a3cfe700ad4c870651f95223ccbe528fc4ce15483035ce3d7165cf5682b05736456c52daab2617ff4eba928a4d9e16610b42fc7c329e9313454f0879d4cc7c9c5d9a343a1d7652255c39f3eefdb5889658c023157f010d27b866a2d93df072c2be7fd60680178075c362082e6d2378ef6078e4342fa5b2b4f70003d640bbfbd589b93cab2d468d2316b089565bbea2717f9478b4f77d8cb0e80578a1245dd7044e7dc1ae5d248054b479be44522e4710f699046873681f6538d863a5b53ffe1c2732ca8b083148fbf2b42458040782880511f92b272b7b3eeaa96d395041ea2ca7d6d99dfd2156a250d521cccc09a7339da1caa6b099ff863d90dd9f41c66ed95502bc719006fd4a92011d364c2f4fc8ccf9cbdbe3b5efd50626854f400ea1769eeac79a54d7feecc37abe462f82a9a0fc1c10f0cc2a5083e201377370ca8f3f0b726cc48c0a94e5981eaca90137ba2b6eafa89b1a9170be15b92d3f3d483e1a1bf27667418d805a470fe9cd8b0bcf3d6c7588271f64227c70d449067d0325eb915a81e26db947e9bb27bb093813ca81e515192f34eaf86a9fc6761f8c5fa2c2f76203c04da59467ce5457f2de037886ecc2af9ae1f8b3c716fe5642d3f4bc3aaadfb942622a203e71407fc5490feee383364bafb5058f555df593ff316a62f4eb8ddee3e48d08f9e11566c2919e4edae58dc84a468dc25529669a9f4a9e869edb5c8ed0c91cc7d56ced84086f150000000000000000d48768c7d4846c02bfe34721adaad00b4b6baada2039ff05afa1b9dfa2920c3a8a61a2b2a836d3f18023ad165c251b3e97214beda5a1e885d24a55a614ccee3e000600008077777777d80a1977000000001c1d1c000000000001020384f589f53dbe67b156b476ec6c556473c7f5a581751f925e0a7977d8ea8a01fb93f0f2fff17a559dd6b52a5df79dfd35ed51207418d6ec1c8eb857b8944b17d08df0faf8810e7204fc012c3950923014a934c92d380c7f90cb16967f0a9784494a335f3fed476c58493e9c837415ff4fbb0b0fff46ca3557e8318b9c77d701736313060b28518920c70eae1982fa7a4043ce3703e4d4d5840eb8d87cc5dcbe5fc9eace2679e54b588ff5e478d9766a63c2c60e6b968ee3c8e01137da480709496656a909c2bd381bbe7688747fe7cef49556ed726f6f1241fef480027dc6771db3529ca4ad558528136721dabf2ce775db8f399e834faa0536d7d416ffccf60b4e23fd8b5d2ab36168e04214f3365c21b2157f6b1842fb1d7679845d276f06b74efe3514df0ce3c17d549de9a5145d4f46a4c65d6c6700fdf6c33af90c1e86585dd96de4c31fa40d0254c0c49a10061f966c0cfed6284f6ae200886aa201e48b26383d4f6bba596ea9bb2da4e79dc93ebf74a1616ea13a9d2292635681f121ae87ef722bb4e21a20522cff5add2d9219761302d01cf8d6f449810cbe60cfb4ff705488c618a96b799e15ce3640a8c0669228a2409ed64f4515776a02b678172a9bd04f78c199dd7437d563b3db076d3ce875679aa164ac3963645605a86d7cf1be63e049710871520521c2ca877fb48ed74d49ab17c90603d22007c156e25c09a1c32009e950b35b98fad179583c673a6f19599d9e9222ae255f594d68861cedda28d7f975d467daba081cb2ec2295770acd0fdc51fec23b6e4482be8eeeafebddb2974c789ad3b531783f11fa9f1beceb8ea11eb4365085d87b8c92895ebabe527a41009e28d6ee75fa3dac57d7bf12aaade832ef6d95f64055e1eba1fa2beac660ca9705494b0475c8c34bcc47f10acd023c5e621b2108c1ae6bdca9d8b3da04a549aa1a63e87fe84e875be4245402646e2151e789f5385ad46523d0eaf2525d02dba3b5623d7e2ba3151fffca158092a52d8cdc3aecee5c663ff1a5da3e6887de4050963333eba2bc59ce10d89b3c9070bb63f8af2db54be24554890648db11870cf731534a03b2aabf4d0476ac41f41406a8b2fbd0513c2ede4a1ab0cc930864b8b7c18253179e772392e0c7eaf473c966d587e6bacd00e3e68119d372dea195b286ef68e19b06c20cad46beeb5601988e2762c71d7cea86a6c498e1ed0d186c40e8da6c60b897332da6a0b0b2950a3f883d1a12650f6a3c89c1dd5928fee288d730fbcc470276acee3aa45db665e356266bef179823577f7f7dabd94a5aa7587b4cc03befec5e5e9bb241ab283fd0bcbc5ff178d19cde301c4aac4afa036500014fec6109fe3c2337b770ecad6761892bc72ead06584e4458668616587b280050e262cecce65491e6a9c93bbb264cef27d7f247058816c6026adf8b040ecb3ba559209fcc7c24827c460221541a7bcd97e87d1ec7b96efb31a48f429654cacb12c80c94b43a8cab2fb461ccfae31356b89d476d139cfc0398a29a6b40cda8a3cc619ea3e824a4a5854a93f03a6786325cde806b0866ece63583c45f512884f07a9596b55f84c1ce36b450d7d9ce07cf54524667191ea2da407d0a4781f2a8dc1980da32ed545bc58307c2e561f03119d1e2246466d96ca630265f49050bc11b4055e6b47162e92c9db77ec05b706d406a4c8cc1dd1cca1c5d9dc0319d1494c40088fd6417bad12883631f27aa61d0bdff6a7da203c8418d4414166e47d6b779c9bf1c8464d8221e2151af634f3e7a9c75f2d5e66ac0b080a9c3196c6437171100d109fbe04e7c116cbcbc46328aea1b4cdc0e8d6af423b9a8da48f3c238409faa01b32a6d9b16dd5fd413aa28ff3545d99882d68d4b44eb0d9c5a71b33da94b65c4d5185e847f3560e780df75270161f1dc9bdfd394b48ae34c63096a553d930d75d9c48b8dd6391b0f4ee6bf8643b4a35f40f6ac65bd33a5934f2232a1550a74bc811fb85ec55a78a8b61a36d388297c77b16100c2d72c10ad2ff1d3104b3387da460c3e8919675521ddf2ed8ce8860f2230b461cd88890f25942f2b7dccf13b500cbd867856e962c447bba5bce644f745876ea8fb6e00bf10007d7faf2e433220f1903bf24f28d72f775faf631509fbcebe068411da6831d8b652eb0f899237304d6b7b76db2000378d46f31e264e3cbcbddbd2b2aeaa2fbc5a29d05221cceff5a35dbc1dd70f5a045f1c8630d5dd228cc1dbec06f1d635a1de31df355f92d1f0e3f836f0f4008d49e9eec0062ed09b13a6454dbfd52e437871836b81b586717d7bacba215b83bca49f4a40c00052841159b8edeb45c5dc2c29a63db78e123567f94c3a09574d90a1c5de03443ffb9e5e7f789e1280102da6cdc69a1a3d58d63f7d988a0763426eab8f9a114424138529f6773f4c4293c47c5b8311b8d0182ad0d49e823900000000015fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4160200000000000000fde01c19a4c0b6d89d27687ee204a5bc6b5ea42abdf1f05229d7331d10dc4288e513a6b0e8894cf2dc34070af46eb9b75f80f8f891596b4bd40785cb3ad03988201b99f780524ad252cd2127e789847c8557662f80893fc9f4c3e281b8cf21e6c0e7968e399edae0fe6c8d34b3eba51c44f5a40f3589ca682c5c37883ddec39f1bd8b9c33b5249f5f20fec00c0a0b214e67e812fdf95504f0bbe50a4c8f85ac9d000932e325aacce525bfb4d2eac7ab12313951a380de403b43fcf0f873e04a889953a125aa505f05fa796513aeb72e0f0580c62f6e12bbee42ce820e9389c1697c80865908efd821767bfdd763ec7ae50ffc6259efd47bf8174e0a7c73da2f955a6189cf7e87391589f9ac59e61da8982e81f371a27f6d930ebdd76cc91d8611052adbf23a4179cd3b10d6a399164487e776e4f4577004718bdab42599ec4bf97d9b1d7a3e9591465e7eea5e483ae77d4dd02a5cdbc665bad1af457edb5b27d359c15f576292f740c926c438050f1f53fe7c1a8a0fd43696dcbca9d1be00558b33431a660b4b8ea0c2d4eb2e1c0262a4736a8ec5a74aacb27b661c13985e02813f12e7635adb84ac53624a77ce147bf1b409123ed37968dbd6dd7e89059c36ebad29f48ee55712a6ba94324ac978901bacd3343a1909d8e240e8b0084f75def3e3dabeb9a9650a19973d8b16976a790d4ab6ddaf1ac44b89569b61733860c6e7911810b8f7d916dda6b11df8a5adcda6e4faf128d80108690c551b2a6abdc4118e6b441857c145bed5bfe71d74579e14534cab2c80ec02071abfc44e019ae4bf09d39e626873a838440fa4a9766a0ef4f761692ee2828d099e86461aaba9635157f2b9076a93e1beb36fdcb6c6a9951b57b87afe3965ef71d3ced48fc65615e5d100b7bbaaa93f3dbb85ca8c14bf8591187d2fcff59a5f0bc9016569998e4c9378318aae999bdedf5dc48521cd088a96bfc01cac3cea0824fe5fa172545e97f55422ba1bbe17a9a37332493df8b7cc15edfe3c468fb1dc70633e9a225d8420badbe01a0a090b8ee23799b3617cbc741247ff7bec2b31c39a92c5038c25c2472047701109252132066b208a67c397b183ba0ad5f89744b85f61901c5441808d1ee8a3f765a5e26df200e95276499de8d241a007524ef1ade07dba6b48d153d4077f33022503a21683948059281b641f06cafec840420ce97e314989a4043706e9e838c36be15c518c58560855a9548634dc03a0deabc4c509998e5c5aeeb8e0045a436a9690354613d924ae4d1c0866972f877a9918917ca8bf3f1bbe7de3bae426c92e82f4320e500754ee69e94837d93bc5a47de31d06810d2da7124d200ecb8038a4169630f9f2847bf57e0710ae9e94330c3b29d44f56044419ced22ec028a689641513a7a81acfa2a62d85bd7749c78c37b6adc71b9c2da0a0e14cdae67fdc616a1f68931c1ca1b56a49cbca6c3457ca0fedbd15ac85967b9f4abea106ae3630de2040d84455bc6878304be38bdd8ab6f146d2afc47a09997a4441be1474d44b497347c3e3491c83b2a0e1f29743e1766acd36e8512f36c252fc3cca9a936ce9787e0166097779446c90843e03dde533196070bba9e6f08214d53da20f09ea50541567415ea7b24b3027f59bf68c8bb858914af7fddfe6a3aa018a67af7c65a33c7225b04e723d0bd21ff76a6afb8d3ca8a9a7772c1f72ff78a8c94ddeb13cd371ee6d7886cf5b38946e4d081a70fb475b8569aaaefc5799b773c9e0de70d08be90d3499a99fbdc31e695de27787bba5a3e752b7b311224d3119cd19ec467a4b015a179426fd8cdfa59be798d461c2944f2e4461d80e9a98499979d5e3c916aaad820ac2dd05d16e608c79fa595476c0906c178a85e6823f843701fbc1f59bf027099fbe7dac41d0b8c889bc4d44ee81b44df4580b20c9ad1ec0088fac0ef62a0fed24f7dc4cc2fb7aba41bed1160ee4afe95e811a9662708cf0f0534d4f5b30f2e64a79ff42c2483848c650166f9568f7189b398ada635e87340282edc1ea81e85e23b8b37b20755f92ff068ed5468495bd705b7dc28b82bd70435ca3293a3b59c88d6b148a26a7c22d4499e4aa3777bd56c148745c316607cba9041c4ba8005fadf294dc9d275e203927205056fa122ad2651e557700ba4a0eb21aa8f2fe60d12c4962f86fed97385e16afd662ecf6e881749f67538b76287d56cdeef957c22b3139093947d7328882b5cdc6fcf9e01f9e850c7d9940f855d0e605fcae62d3c4756f5e5dd9f9b5881755c4d8079efba410792c5a3a13b8295161b916133f615275d317b264c434dd16d83a2c5859a1f842b43d81416edc3ae14deecbbc6beb33621b9fc3aba9d2443a4e6923f5e6e41408eda4b2af7f417b3741764fa324d02f739a1b0dd7a6b61853527b4a298f94be16cf972e2550417d124dc04005d110ef86c08287065d5f5d1561777794f78cd95de31513f3838cf10568b23d89ab8170345a8c1002e2f69061fc402e7f0f332406642df71589849408517ea68d4d03f29921d93c0137f9a76a89d9c1abcec36cd5886fbe75a931537bdbbd7afe9fc2e37f4f81d02d63ff52e19a6d6f85f86d62eb499131a919a58f40d36eb3c83fc1e4c57d9510671affecb8e7690dfc03084fcaad6f85a39e631557a484f342c9c17ba9255fc52dd5c8e9f65748b2f484191090bfcbe391849c19a38c7a0bed4910b20863d135d28c1caba429677412e06c23e228a353dfcdeb22d5bfd71a63c1724ad25f6dc9cc8a8756b8e5840cb4fd4607041618abff02ea7c7f8971daec8b10025257099ea27c4fecfb00c9774cce098f6168ce15615efe8aa6ec82c136ca93e6d7ba57e6a00a1d5b33d32c4938d0c87096f08d3263620efe5a74ec96e01a40dc5ea0e04755984e9690b121ba6cfa1af5a0f428bd415a34dab80aaf12ca4e43337b3294d33189d039f7a66c15c75484ea8c40fde16527c1d6659e493b538d1006ba89185616298dcbbeda58f418f02754cc30e416bdae781697a05f9a09edf288012cb8004c5683fc190cd4294bece2feb5928519cd00671f98b1d3c7533e4137a7f5bff4eb3a212bb257ac1478602c27984ae60bb793e0fbcda2ec18c79153cebbe93b15784eeb2d275095837cd471264bf80761b48eb3c6fe57a37590b44116ab23b1b6b7a76f6650874609ca41551bba8ee4266f9f66348a3851f0fcae725c1c8a9757cf15e36f815e9a52794ccc663af4d9a092e0ebdd37f40d3e3ad313f53dd3af43c14ea0e0399170ca3583fc0689bf33853ce1309b09d269369d65d222abac736738926d3eab0160c4f1c47f8c429c43806c74968513681d539d163319334f2d95da3f720827f0c4083f1903390efb3959c8f97902dd0440d0a4b22349c440b3b9512244d0c10bd673514cc4ec5d946ea8b7252635a5381eb9bce4d1ed7568a9fdad59fb927486762b82037c733a15e26bca1e819219486e1ccaca1015ddfcac49355cb1fa3002c1d8e89459870fb8f006dea98acd5edc6a1525f7e25d51929d3013acbb760e5e0bd7f412290cc3f84b41ed8ac0958b9b2846299913807e9cb0850316746fb50bac24f1cdd9f6a8a0839815e030190fed2429a530c01bc59724e26377aa86bf6cb2a7d7d3e07ee90c7efb4110328725259c8fd3e151e4a40858f2c74e4e1cb08a49c300c30d176d1c94f11133a133bfec6a768c9233043b8fe2de46f3fb297837d5ce6cb036b33aad3b3ff087be7bb248f8d2796ba1866f7e1f9d1a28f91c001b8733dadd13a1ff2afdd7dc7b78edd108b3f686a5e2392f67e5a81a2d73ad99ea1c3e28b3bb60f7d8e88322b3e1bc92cac958fc2fb157ea156f4d19f025d87efbdc1cee5cf97a480e3ec60a9e92ba94db1ccd3ff73376377650d161f454ff09b2acc074b72a3d6955c9e3b44731b6d86dbcf04affb346e2f49dd001c7a74dc86651a50b03a2d9a774255fe6ebd66204a0ac308c3ab2a55e2fd3973b2079eded3769b2c1b98c1a84a92815067e8f774a7640dc4b6e03b8c9f443740d5093dfc2c02d459af1f4351fe07232383e39b975e0fb3ffc5d108d74b356922eb363f43addf1e838309c7bbfbce1ae4cba1e2e68d891302a55a24db72796b8c00674e55191594435cb55d5faf5067de865a7715cf90bb5fa005170f99ab0614040538d4cb200738f4c095012f374c493e67d91a5197e51468a5229633476b6e806c3c11fc17f838473463b0658c9fd5319a71af551d34417e4916381e9432a84efde20aafe6273c67a91ab505cd6bb1439d4b3baf9fc51a84d8070b7ad885597d3571a2555ff3959a3d3144fec942e62658a28a527eae3363ae302fc9118100a2f2b29fd4869978b48a7e3abe3546536fd72f0d2b0679a914943b58b7df350b504344999838ab632b0c09d791ace77968ba435aded173a8820501ced83a4a43ed324b83d66e7ca22a0016f8475d88948e188f02d70b7b90afed02e868202125d9e1f9b15e21ccb40c06bce591de9eb29cfc64705a52f705b4eb321ef6d806c17bf0f3ff8d40c222f780f72b7e7c1e1d0fc9d83e2db94eb026b803a5e87878b92efed14cdc3ca75fe2ccd0e9e39ea9c538e23deadcabc2dc5ae526bf0112a6e4eec377ea9a98fdeacff21ae7815b543f2d29ac7dce63e5075356210b5b711d2a2b667809ec75b1f4ea967e552e3e49ee24867072ec1ddf47eab60fd949c6ec7b7e918f88bdaeb870dd95b4f621805210eece080578a02a41961b3da9515eb61df05c561b7725218e3fa2514a92fc267251d340f2e9b9507dc1ad1936bea06d3b81bbb81a572c0514c57cba5710880cc5916a9cce089d69a0250919c04fdf99f2491837d53ae457428077c863247b5479f2b3b59c4291440a75943ba702ed6bab80a430a27baa6f186424098684da5acff62423e5221b032566a534139aee34bd5bf1765c7e915a57e5830a1b1d310033a7d17d3bc0d62001c9760fe135468ffdaffd62e4b1597305f37fd9ea804ffabfc218f06046bf39018ef13f53d554499082297b80a55535c4a8192fe2749e43bf57d955d610dcb58d186617dfea892de5093083703d3b56adc057a0a86b11a1f2b620d003e7d2c0590f19044a65e5daf2506a6caba8ea8f617dc75841d2949480f52a4ddd83b3d37bb49d2e98e3e5111187b982d97c0447f4a7a113f92a4e6a8f453bb23ee481464402803e1494333d9c2437ce54235026e4b74dadebe6b2a76eb04aeeb26cb069a2b3882379456245dc4083f92ed47403778cd8c22627557a6e57de06a54bb3ff1eef6420045cf2aba353307999c99bcf8151b2532b609c41c2ff8368320b308c87c93c16ea900f5440008b4b830db86620d0ab4ad6cc8f7df879e76e9fc7290038d5b51b1b2aedffd1170085295d0a1ad65e8a55b52739fa524fbc3e011608e50578aa09123340f2a6c6ec640acaf862ad4762beeaf38c409fd4380765b346fcaae3af2ec1cd40e32c1cc36f045c18ad3cb45f6f0b47b1630c2ccbf211ac4812a0b92b2c1562605bfe0a4a010b031d9859eb2f2c08bafb04a6fb7ed3faf3c9b3f47683335b0f06d59c2b121430b0039f3eef3d71826857b5ad643f6c1ae65066d637e30c8b7d0dcbb809aae68da17d8fefd51ede72c31ae05d3d2203fa5e7f06ce63c6370d7cbaafa5bdd14bc406457a301f91e8e837de2c6a6e18e767b7d4bbe2002138e4dd836feb78d1f0aceaa735c08b07747cacb592515642132efef3b3037fe5218ac7988d5b6d150374cb57e50eb0b1efa335e05e0be9ec52ce3b12a7f7f44116f758fbdc9fcee665e3bbe6da45609cda02e11afe6faf55ab06c885b289b8c520cc6961497441361ccc72547eca4ccc8a85b6acce8e7ad93b07e155d06f282c0fad64b15245dc7a0dae557599b05f9f4beb1b09405dfee97917f502acccb9a63f3a1a4175b5cb6ef96b66be25169c2e4ff683239bd2d5300514ad6a0be8493b14e721306c233bce3076bf31e1326dbf9159bdeb6684ded56ec1682f2d3cef0c056df2d3451f8a3a2f50b7fe1f3ea219ab2d63f29d212ee7f7250d9f14d95a5338e8e7735b1eb0b3d82b53934639370e560129f7d789f6ea1948a34a362a14ef3d74a16ff682530aaf751377f9e51c585aacbe97c1b0c9b0c978b93352bff70e3376d07ff4691933a88ecfe9a567549d1ec99ccca674403f5a91b39cf5214c03189d049bf7bec642be5dd028d027e35d536e6d76f758dfb995615f4c85251d2e24bb46ef6a050b8b22c3ce03b1a95a5b7c3eb2e680c32216268a266c794884c50de4025e1626878baf2b1c6d6c8bb034fe68e6c4947c39b12c5a496eb03d03053cdd8981b7c7141a7ebe3c371a2eb2b3fc2951a3dfb787f77fe15b7413d1e1bf0135c6ac189ac272d7fccdc16df0bf5241a06b18484b6809e9d7ed3bbe09bc6b038be8b62d33848e55487f4ee7923a6cd41c52e54a61a02eaa7168d16a632f2b298ecedd947725cd022c090e5e61498d529e443f0c481f7ecb3972ca240c032f3be9410a6fbec75115cfbc801a2e5ff53dc8280d2f68760c68240eed2ace16fd1618ed004055846dba422ae23dfb8889e680154df2a6e7e4b64037e1593a06b2118290dcf47770150491c2ff2a9e38294eb568c3afe3fc359c2e85aa080ff44c3298f1dcf828a3da96a1dd84f1345e41c45c7313091e8a56d65bc710f59f3a720ac23cb3d78d05e14102029257d1a524083bf24ed5985ca5f4b0732d6cbb2c6806f475428cede69709aa6e2d1b0f2f32e7bbde2523c3c42499165a9615cc2e7c33fdaa4ee7e8e87237c531948f718574cf8126183348b21dca1e0b332cf73fb72eba76d4d4cbe1dc0fd11bf6bf43e3a8902ce5d84d0dd18786b63588cfe5f14b370bbe49f7cffe4ad9943f84c3b1509d60ff2ce8b1ec7f3f3d32ec9cc464cb1d081be2595f572cf9abec6eebd0eb4a2deeaf47d727e4745ce51b3c49630aecab02d306d503a93922d261f6af5e784fe6efe9d4b2889562a1ed8cecc3dc43658b2bc078357f83d0982ac7e4e8d6bc775626cfd81a543153592e79636974577a2027af517184ab4b0a83b28de16886118e34e527f0604aeb97bcb622a14783338818a449318b96676b96143660e8e68edf124e29b5f2191567e0cff9c8394d291e24266c172446ce92f52a5403c87607b837c101219386efaf43ed8363ce8bf3362c1fb3f3a1b05cba0bb70679c33f439173358fc4f4b0defd1fbcd460c21aa251042e12eefdaac187cbe2509e44983dba90daaa9f02d5424ed1dba6a028f06117000d592ac65b5480960bcb19d83e0049c6680af325207be3ab317320f8035a0f3ef6b0b1371d1dfabd08aaf3aae6ab75fc273ea73004fae87854743f6a249e8b17b183654283d37685fa6607597058b8b678503b4d198cac92e010ea5123a72d098a2630edec6d02a2e27030159d8939fcd4898b28307060c3755e6e6ce1df3e273b56de1ae9165e9f3e775c03e099744f14d1af4a188570a2a751e301f6764b2866583ef0577e72eda194472a9ab0d54971116af59f2507b5e9c0d592bf9b40332359b4e607369fe5bf3814587b3f4d6370494f292dd1a3578f731ea5103a652b7fe5337acf79f1fa70b4a82fc28db4520abbaa6981d883709afff95191300127a7882bec3a990b79733a81e5200c6ac57ba2867863015bb0921c07bae40f8a31814d87e213c5447ef816b1870b71006f033bfe14b5b037e1cda6b3e945358c1c97f35cf5db2a917529d0e9b502484c25451dfb40d825cf99bf3e122630a7571619f351cc988f0a4549aa3c9d7ec5de25587202f46b1f7b7d3e66432f8e078b2689c9aea041027782e9bebc1f15b9a17c0de3139fa075538d490f59b89440791051d75887da2a892a7bd36cae79345c1357340a79e0910f90b48acfbe4aa9dc2d03d9a2b7ef37f70199dfefb48770f3eac69b55f7d05f0a18891cade1b4077538b4039bb623b0b1fcc97b1f757908052d0a6df76432f84377ba7087698e9841114b403acf5415deb6673120396b716606ee23f54e9e81562751d7cfd9e832e01cb2c0bed2b1eacaeca766a97315483abad781c792d278e94dd9cecad727084a26bb24a42fca18b7672e6e893d78bc20871abf6c4b73de1e99c74a5cc840d197113812724b7d8f95c513dfa076b3d6fbf5e4bf55fb37e4d678470bfd57d198b3251012432b929fe94a4aaf01bdef22baf295c3de1f50a055b1e12ae9e1359ccd297ea6d69949c0a228089f758390e31ec340e7b964b7d58f9888a11b37f50c1e1d1216b910546bd9b8249708f32ab69689d5110a6a60c32d4f4215974f00b5163442aea9669db9bb677b2ba4043c890f0f28d089890a9174294c10acdd47b0cd1422424b4d5860a92bf6f30ee0d1f4e8eff47ab168407938a54c68c2ad370c77334a1d84577f93f2d3b1ef02b92aa9cab4c92643c545763a23826d1892de88bf2efc675ca76c0ffe5e3ff8d7cda04915dad357fc0db2369b85128dfdea57e9251d3e0a23410f1fc5259fa8e5a9d0dcde99ced0604ffbcbc9018b3db0a7a9d36326dd0afd0e74d87ad8af132bbff13343fef9134c8428c84fce9086183add1c2b194c2682ef02d578a0da8e62ff8df85eba69c016b739a1aafcff4c4f54b87a3a0bc276cee2818c68fc3ac557ee7416393df40db820210d10a0c0e8c426e77b9700f48d1c23372363a65f6ae46a5d82dd4bebd93d44fde397243dcd1adea8bab70d3a67fea6e9371ebe9685ba22f40429e4666a902b1605ebc6dc7770921741ed38ce97e450fb89b6040fa63d5c668dc662980b105df3ddc982257124a255e1431c71f47b9a8e9c323c9ba86bec06dfe7ee7755cc4fd28e0d247c27b423d43d323a1b60734fec82506101373c612ddad3aabc7cc79cc554fca87d6b3b47891f9e272111abe2c9408319506bc7cbd4ccdbee625c698ac400e9a02f2e36b525d1b0287dfef18dc0a1f9bddcc496894e205a8c7241d26b15498238460c93b9d54807308a12fc74b94ea35e8959b5cb4d80af29de50490bf49e1603ee15e66a519d801fe936f4578c16d4b404f78f27422970c177a4d87d8befc931b6b5d8f2b50b2414170a2bf47dde4b582122c521ce483299f8d0b4145b971007bc6a4b9982dc1a0e7913f92a4eb12cb2a6143eefdb27b9428d3c992bdaa220831a61dbf8972cb31a6238257892d6fe030ee27b451bf5cbf266b851d62c80df9fc24d8064ad28fd1aabe7ec33f8636b83f830b1d441a1dc0cfb655229656109e7cf56ff426d907f383d54b7e8b77dc558dddd0c16443ffda07a477c1122193bedd17f0454967a142918a4946b90f75a7071aaab03b5ec89afbdead6f3f67a0720b1fd2c99687519b64b048ab13cd13ac74f5ec4a2b622d8d0e1388cc659cb0007d01afd115808c8871665f15dedfca02e7dd177210dbff0d20c36a1d4dbaaae648b6d48b8fdb5c628d36ee737610100f1073e12d8b70aa9f9ff3a8985e5cd4f4bd79cf83513074c2b45032bde07b22731403052b8419dd1803a74781b7331ce0659cc6d3dd7e5c29f03360fc05c14301b3f53d7d988fd71a348a4a0a776a3708d0557e7377ecebd984f8e7b6e3a59573811a0b609d28b2a137947488a4cdfa0ed6f98fc7c63970c2ec7cf7581841bc2d774838bc6aef836c3a24dcc70e5e629548470ef45f5657288254eaaadc346600edcb3d078c6596730a35189833bc037dfffd06457dd29bb80bd2369f24f068dd9ae012540de432230f8846e301ce4fb085e970c8bc3e30daded87fc12b0225179b4bb1fc0e03c3c736198a7efcd32a4ef2d043a642fcc7313ed873336edf8ef41abbf5bb82f6666ab60cbd64f5daf9af8cc24b5badb419e3001cf98f2d6365011e9fd5724d06a4db46a07c7e320e5ec776eb2698dd055e220586a392a466e77d539af3e1edc875288d19e735ef086426af589e1e92075851ca64bca470102c773e4732be56cb5f5eff6a4618a3ab232547b60d7f31da8ae29b7cdaae68666a966d6f103e4e0b459f9849f53495bd563e3ab61c41267e939078996c1ff16875059425d1f7e21fbd72e1bc23ca82d44c4621cfac844358fd23ba986f81718e7cf53237398c2c15694f46cf3632595c2f1753fa56980d300761bf1010d47545b466bc7cf0915f996b6335cc4c7fe23e5bf21b59ed558b8882982fdbc4bcc0e230d7103dc7d51e1d957ad92dbdd7bd46b80ce196dd00f8dac512725bdcdeea6bdf678a3e77e0b36accb44f75b23343903d68b39639608096d7e0fd941374f1691324fa7e6a5c7ad89fff086fb5160a9ef7366dafd082c68887d8a808276f7504fef460af7b0823444a2a30a6257ff588bf8075add929c262c7fb4e9837b7503fded41fc4e3eaf4ebede1718905522c60e18033fbc5b0701c79400a97391c87f0604b26b9ddf23184b0d74283e008e22ae17b27fe4296c0401050ac0e1556e7c069f033213f196fb1c141480439ba875005fc2cd0dd0ffcbfc5e109ff36104964b2a8f85497023e534dbdd50233ca9a54e93f40a6add13b69a391bc6ff243b0c78052b5ce4a827f3def88abf005856bfdb129a39d199dcc589b2be190ff508cdc8dc3e439b00473941404a0492ea2d95f0fbb944078288f204f42e0000000000000000d2cf92dfe685660efd09f2d12328b6d4b3833137dce6988fd0dbd21181ac2f827736607cf0ff13a942b92975e1591b5d15cf81ff6095652a36c1a1d6c29d2a2f00", + "0400000018e646c01fbe9fabaea1229bf5929eee72f85d2365e3e33d8d23dadd327e52ecd605360ac681ebec116532d82473ff1fe9df07f26dba25db1bf4fcf3a7970f99a6605142b74e9df537a667fdbe1eb38f2e306ebe5bb400b190b01a1398ee9d5122254a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025400ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000400000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102628d75cbbd65077f6e386c9ec636b25b23871bdf31fbfe21c2aca23bf49d6f0a02e83ddfd6cacdd64c1bcbe46a9a974425a46230b5541a4e9e0a31b4e0568c3426a990d52ebe770479935b39a1e9f423e75065b7f90f28fb6839f54c71d2b10f24c25a78000b6b255e7bff5d96d0fd99af36040de2ef941a135b35613297151777beae4706defb39cfc0a85ae8c2527fa0eb74dbe18598edc121d30e657d60379bd5ba3324ee10bbbd99fc44bf1515017b080895255819f51381a46623503e46d95a700ba7f5d1ccbaf58b894e33e73e658fffbcd026ef1325863ae58916caf2b0278893c10e2517fca0c137b9197b709f66cfb40c4e688303d352a1aa269f45688d19023f08aee0e0000945332b411b37b4bdd5a3b84cf7ec9a8efc760bacaa50748a6c7f06fed192d384b4784c96c2002e5822da378fc8594996e61e12e6135f42cad1568d50ecc4105cf88c02e7ce22284d02ca32cd9f94d3eba6a5e462a2ece6e1fa9384618e52cfe2982bd8aaf7d9d1cd5516d810d264cfb453844c57709d3f1bbdfc1d439c93a13d49ea3ac22efdd90fa2ae9eb0073f74b54488788be98ee8f4f9a53358e4884c3d1b831d70244b5f937ff0a585771f5b71362d871904e4aa7c58bf762a875386db9c9e022d6a5d52be192b02fd5de105ca6f3ae78be51aefddb1d09d5864efe2e6c57fcf9406962aa0ac605d94854fb40bb529533408ebed13dace74702a9d3b674b3d1f77704035d156742e602cf6faaba258f2d74cd6c2ab38c747ca5b6cd53375568aefcf50097788c49b1b93a551e13df4b39d07b38d04cd4949eb4b3404390e665fbf4c7a291aa608821dcff237710ee35334a8f2c91546177c667c1a3a261a8bdfd73a25bbd4df5d9ec133dc56ca7b0212a8e106239404cece3f196d82d58f97c749f147941ca9ac36e5a203b28828b00ab1b664dac93fcf6f1fdd8f9bbb6a81b5a270bf16914663bf2329090cca86222769117c6ecb89256762d529fcb00fb8677fba1eb6781c1cc4ce0c375a7991e29d79e8aa0fd9b6dfc389ffaae2576ef70dfb61084c06f7cca65ff71d130e2aa232a9e087e1199a781466f3087ec609d7ae57658d1a6bdf3f948bd44ec0d1b8a569bd0b0273d518d47e2df295cc3a740075b2aacea9cb6673e6a6b9a53b5e9e4f9fadbfcf1f95be41f5a46e31c4660a392a548c74d57421d10cc0c73518ace975eb39ff4345efab215da258d4ffe5b5f984f4745c4356bd1439e71a34d713a06954cef06738717e9d7d6ddfbce8289278b385e9f562501dd52323f90ec24f4d7ab3aa5488085ce2344fd3860ad6d01a6aaecb7ca902e6055034f63d40411c6f0c95d5777650d0320b8a27f0c8100f37e52ee66d437a622f1b12bd510f41546bd882c2a87857bf4b47804d0390cbd1215a8a1bb5680a8a30228ba6642cd67545879233ecb410270123fb8dc337f5a78b3adcb2145e38d112031d8a146b6ca360d6816768783b66cb654258d91d05e33330495433d398b1ee2acd96bb1f1671f9770912c292cd652805a372b5ebf3216020cd010b3c9f7b48ec601caa667b0ce6bc6e98e98db26d2fee3ee44849ccaf78be2f197f5e48ad2b74a21b7e39f9a26c442d921fb980e28fc9b6ffec0eb4656e89eaff62f05258f3834de459eb2066dbfd876d7652b6b0671bbe5a38040a6a1f58fe7806990cb83bc7f891f7d3d3c311af305ab94ca460ec0928bc7433d4a8db0d4d3fa0ee6cb181e6877d62f9a1a9eb5c786764515a9c2a8fca74579c12f44eab040755c72548393577f8ad01357dd54a29681156f3f3a5102c86a217ed375d685aa46775f33bafd7e4e8986f0a6c21bc8601fe924ba2668dc67bc6dcd681639aa574229713cdebd19399b6d163475355ab952c276c79723b529958b2e49544b171b2aa9cac58d1d98cf8072da9bba9caef899488eacc1dd5febad0f1714a0ddc43c75bc770268e15fd22a59c16b7f5a016f6a1fdf2100b6b6455173d121dde17b8ff78020df4a0eb45bb3212862f56ad9b109fdb7e024340236f7bf8bfa6daa22e1993beccca4cc7883de89a890c19ec2d32ea4e3cb086dcd445f62847d0d44663bef82fe09f8c697d047af9ae3b53644c53ffdf3215038b3ed0ab0270c33db0a797b94a5b2df87c4dad0c937f1eff4b66ee74344ff14e8a7e86ac60c6ed6d0cab5db526f8ef46caf86bad6ef0cc0d39d2b93da5d87cda084bc8d73c01cb0670fb179ede41b4b390f5a8ac29bb87aae9adbc43a68eeaaaa704b9242fce419a517eb3ab44b4703e978da93d8f1f6c0d66c8b53227f78b1446955739dc57fbcccda7c98bcb05dca08da25d931d22f036d87364e55c624e764e40d167ffacbb2c96b45ba7d3f221ec40d51860144e4acb53022c685e6365e2f268ef1307373e743d5f92040362a69fbf8a454f79e0e04d12afb814cd8e67d80b723915220000000000fde01c9d33ced835b15452fa086ad53391b28ccdf0210206e35239f3fee00ad88abaa582fa2d6cb945bd309ca0b5793dc4ce8014377b8fff43701b627cb1b471c1969a227a8b7785de0ded213899663962b4fda7351bced80a0d4ed2734ecc6e9b32aade990b7c2553b7b142ed387ae271902f1b7b864c6d00ccb105bbe9fc00377987593cda4a31bb93864a9b6e3173f865bd366b199d58aea08a8c22dfb0bd579f387df543c3cdaef1c9c30c79708e13f187c735ef6ccc20f0ed0d2dba1cf471cc8cc6410ffbf0acd2a351cd66deb1f15ef49f94db58e74f416546d214959d48ca387387de7f03705b18b9658e772b51c7a085e557d7cff376b051b1576f6d6df034a88157b73ff90edbfabe5185f994777e14e8812d70f4441a3ff8a5247382d6a9a09e6c709471169a89123e76e52e9b81aecd09eec6711b7b5206eebb5d6ee6940fc69b6d04fe1a281d2177dc3f587848828dac47a1a84c2a8df8452a945226b09bc0be5f0dd637565935c373149fcf100090258b1590beaa4c7f0743acc914185cac7fefae52f86be940c309e707a6720ab5a5994e35981487d98a65ff69e4b1521118a041ad029aa8046662a9c61a634977b5c2b8b38a7c5019c2302ab46c0c026b817ebe635f1df2ff168cbc3e964971f2f96e4ac8c3fe47b32a69733c8a95609fd059c68f35f7b9ba39ce38750ee23f6e94478f9f72517eb0e68f44ef2a18a2a56f876b4408486265da0927968551ef858df8dc5d66f43c6ed1611948220cdea7743ac2fad4b7812c85dc4ac201e3a7651906e2b67b669640f21a985f5329b45f5835c08f53cb34d28be4d5cbf3eb465f118733261d49237ca6abf24ed6102a8a56bd367144b64c58aec21c8d7a9274665c985a042854d6eeb7edf74206980d57f00664f963d096dd097d8c40cf647a1ad0fbe444df678716dd2df84957084de89bc07c44de3407838de5eef90f7bfdeab0d847436381d4ea87d06a2e6f0f02a1c8c34efb2bad3f1406f068d2a9a9ac6218fb29f130e0712ac653dd7042227ef36086e9e19e69813669c3818a9eeb44f29b6c8f7703ade77dee1d12e29a86283c6dca16436e90424e5065c5d2e1b0dfb91c6c3ab1658ee77bd7e037442c3e52c1bf2493cc243b226b017540ce22e50bd2a03ea5b80c6a439a06683c62218c132ee079872525c3e66071338029e3f77b04c471bb5bbcede40b15a733cd911af5b9b5bee02471a3c43734fed29fdeb18defaf0d3cd00cd1b8c6007dfa5482175a1ee329ad9a7ef173e8d83389687baed2ecf5aa4f48fae71254c971c9aea485aa0e0ad43d74e9c1cfccd171983adea2f080e1fc21f8650372d6b62722f8a8208c7694958c470a2a150d15c910bfbad94cc6c9e373a4c0d74b55a81f5e34302221024f212480fe7b1d6e354e42f4855f0eac896cd10f68898edf3dc2cdf1e03171d1fbdacbc9f1df99bdef1cb4e9db03250f9ffad6336991dfff8bb87ea0fe3b2abc368abd049f3d60d9d5459f2771375cce4c721bc8628443f34fbb6812e402e12950b4c9a107474ed6e18d16a00632932bd657d0c27b1fda1761b8c6af73b1f779196bbdeb0ce8f017c6f523c0e0c9a5a5db6284a82e1063b9675ee739ac1e66cf9516216c506aca35397fb5f7321adc10f5ec62c57b23ce65d5c62f91053cb136a73c2e22efe83940e058e76ba247619ac97e7ad09353960aff163f4ae1b0eebed1706e798b44582fafb4f399ff6107d9d3f9ab644d7641e218c727e1fb316dfe124b690c1b52a196d399ce8d998f25875a444181b718b08e5531bcd2b7a43c936de078cfdfb5d6851e9d13a44df864b0c85cb8a3f1162bd93df9d196c100d65294461647bd3690fb01f4e5ebe23f28f4c257b36222989403e776653183092b3e89eb2f065d85cac53c65d275fb84b3f98f1e40f567e80d7410c362c7ecbcbde4a58acb59beb6cf9156375b96e8f48f88e158184f75e5f485e1594bad2a2bb666c782f6dea4f851d1b3186c39d33ad156386a20d31a98018d7ee02a067d3395f56f37043e88daedf800a3a98a144707ba0416a42ac0b826a29d9661d5661652581af406783f6cabcee763d008a52ba885e5c67ba32697674f57dcf442c4940e18803cf5a521b47a66bfabf1e999fd629ab522e10917858143974d9a969a289d9365e4dda9241245617a417fbc3a9eca174145766a089740a2af58bee480846014ad0131e11be1a733b21ec896a3f54198f9abb4a5a75c00804527afeffe0cd2e722bb3d832f2484caea22a3ab6b0bf407fa5ef19a5257f1a5ce59ada0f30a697ab4c9e7611af3aa32640169df8a7de55759867d9c531dfdddf953a4a69f355f6d0802825ab7c877119183a1427324221efb21a0972a47cd0fe109a7e374907a804cb067335e5a6062e17f6e49ca89e3b97e51e161b1b008aeff386950f73b26d2c33a43589bcadd60a34b28596f55cb9ea075dc86b8280ec04f0a648167218a4f2474a7de0b09734b995d6514d6fee7aa97c57189e5405ada7340e91cd00c18cc40b4f2eb7442dbf62ec953e408367846385f49d3d70a197555128fde6c2bbc7ea69989167ab0577e54fe35c21116a2b1415afa9c5393307d4aa35076b231fbad904979b02643531a5c6c7b31166a282e766bd2c40e06bc3dea81cd0d6b1fbeb4d0cca3c683ae91ac194a6b20f86c226c2592720bdf8824cbc56b5af9c510eb5b63f96d7a3c53725f9da2922a02f96ef4ed1c64b6803a28220aeb34a58801b64dcd62f8ddd4877ffc69a5d7bce2f5fa4b285286cada881e9ee5d93b12cc26a54282cd295130f40883d3538d8f68e2c0df89fd38f6cb5a19635c75603832280c1913fdcfd1c9d6e341aa8b4c370c6ac73622cf73226200095c17859fff1c15489e9e517a7b431bbc7b55d1df74bd7f29cc79999162a1f3423f6db1f4a3f42200600abfff3ce451499b505f582becd1198a9bd16db506b0fd177aa5a840af1ff581335dc2fc61a3f9e4fef03eca500dbe8ae72e099d47d855c52c4c350a410f9bf185f8a5f23fd03afa8d8bb7ad2b6db8d0a42d1a7b6e2656d69723e5f9d737b1acf513a6159e668bae56bb1c8e809e25279c96f9583a3fdb7a19c440ecd019ce2bc868d8c9ec0ee5f1ef1850c4c9ef65effd348ad274ddbd6c8cd7e2e1e60f1cc46a5ec73afc177eb50d7b53fc0e45cc8eb59d3b6e5e481154323ae29090228c5ecfffadcc5c9836e0ce21b964d239c6ddee09ddda612ed389acefc1b17a1bf7c1a089b8c02065fafb52f83b0cba5e4a10d17378cb2c909082ab8ec20c433563856c2ce0009bbbb33b7ce3c75c82ce9fb5b7b6a2bb7b1ca4a37da4669e780c2050651506e07d6d8e4b60bdba0ec85faf408091ae587adc212d12199e008400a2c336d9cde2d50509984475a0ce3c79113b7a5a19a6bc9208ea70d5dd138c236cb6cac58390caba406ef27e5b6508f354eba435e2b2ab9d955448b6213d5700d0c04bb6f49a371a072d3f6a92ecf5a4aac3a22a656767171fc30f6feece961d13a55207169c28eac8d482331483aac6af319fabd2e64d2e00de7c423e77a20f71e9efdae5c0d2dfb75e7cf34db3b8a4ada40b2764db432d81844702149d7a1f5942c71729b5c231ac0f2939ee09980bfe4fe8b651e309e26d6d89f21ee19b0e749a734c2f51075010a378bb36778176ea1b47908650c5f303c22e51f84e132ae8127ca65fddb155974412b3bec41a87338423cc95c396f6b79090147513e03a4b831e885c4f095df6fc1509c1c9df24e88aa12a362e26f98eaa3a1c3d03990722aee6757b694167f28f447b5f19b74b7ce29ecc1adb1d4e92d8bf6fad0ac42f2d7470135d15dd19ba20f724a99f50fc36ba3e4f4662bf3dd49b838d73cad716241f26ceb686bc5ce30850148334c59ed31a42d9d192bc5d2d6e0e13982cbb1462950de625cbb78ec7a29fcc39e07940ad0656e6bf42074f70183e083944d319d57ce9ba51ff667c7693f683b9b55362e653b5842fc45ea1c164087b27437c306a07a65cd0a30ebe6aeaccdc5fce4ef90dbc15d5fe7f485184cd6afa307f7b349dff4719e647caa2cf427154a09f88fb3a5e6d5477bb95b56cc4b482e1803723a5ced54fbcd97fce3247e2d20f8e33d7fc5dde7df41d12172e047bbfeb52ce16c28678b92404c4525c382591de840d067cd20ed751de801eaba8845833aaa62c1b93145e09fe5043da1f67b45850d5ea581ad7381f2d9197d4ca6808e7e9590082630f105d0fd478a3caf7162c747dbab72fb564dc0611d81f8b0f29b214e9172edf0a308da2684b1b486b651c0cecfb766b8e03a463638aeb523f3cfcc3fe24fd264384e41b0ef6a2f31c4529350a6add828dbd7d4dccca51e4b57b436a7d32a333c62261f9a101ccd9266851c9c149bc14708cf913f8f19c5bf449e9a81509be0e781a64c5539967c6d88ce157d75d497d3edaef9ed30afc87bb5e2641cc38044422634a754a08f1c26b150c98e4a114d6c0d3a66ccb8cb48d94896c44810c7373fbb5a72ffc4886173f1c56e12572fd9da5d0ce6491aa7dc9e08b5dfe3b1ed85a2be19b0979facda123c29654c6665e756337a5997825e2ffbc5001b9640d1053b5d9f254a6332ef37edaf7270edf3c6ad41b2b33693a00de171b364d8004277f435a14f7ea77d367290a2e720fdf7614a6ee9f2b6a19c923ce2b98a02d2983f46ccb65a75103f885c3f7e7a0e176aa91756546703ab0e313412b2464bb1d9636dbac20014b517909e42a747d8f12e385aafaa617f86a48c15a577e568925a3a2dbc8c2f73aa3804c65b0a5f16952b29af0d13a7a5976b13a22c1e13f8a17df3aec990aa095e57c8353dc8b2bb6df6fd01903a57dd58cba72cce472620a3a3a8c024fb8f011cd03053f251f6eb37de3cf42325f65ee656a3e19d9413ba52653c22bdc151f2e5abcad2073e0a72d7bfba20e3350b807b1c5844634379b8914e4b964a409b3adafa6055a061b531f1f76e17cd26dd85312362d5a6d18b78b0c59bfca912e46b8cc8bdb3947597a0d389134b0d8bbe73f4056abf0bf8356a91060ede6ce78ddb3fc1bbe8b77298edf7270e9fbe49c0f006ef96e35b4ae351006465e7656b1bf3c5f3ffb87e7b3e2212895ffa8b783784178d06ef43b31875a0bff7337285abc311b5652b8e7af4d5ce7229e0d315e70f6d1a67d791d61e61d1bb5f4ca9e1d65da1b31a1d1a464e74e1e0f97db1d02668f51b1e9305b82e8523e7d136ef1329c30026ab8be15ff98a2c3c6aaa1108633ae3369eb6aec93d3f12fd5d44fd4109436fe88930f940a82748f2e13408464bbc0ae53782fc80c3a0f2252b3599cd4329595707335bc1fae0f9f2d6185fa5ea32266477bd87c8d66b806eb6ee05d764cf2c0d72698dc8d385016bf86fcc63e12d4cee22f4f809b6b8d301044c9dcfe8c7493b7720ebc5f1fde308b3dcf12371c7139fdaf677ed843f62f7d4cdf512533dc6ae5a21f1a321cc0fdfa1d9c9052c57059dddac4f37e6cf531725bba7aa8a0218979d6a3cb681f41ea5ab5aa54509ec207ab559a96d30a8b0454d11c34987bc3370029eb879e489c9b052e31eab2b25c7b7d1f10e7d2e621214031b7b949a1a9e60679dd5a7b0d4d98bd69778522dd57b7958a1af59b71212d0ce00763f10096afde3fe9c39209cd2a10cc33e142c1165c7da0663271523d154ce52e36e143ce7d51845c63fca3e41d006a22677f3dc3d26d7e7945ec3d6d1f8dc942a07a0056edd7655c7b46598c6c5f78368ae645f04ae74b33ff8c93b13560da37baf52b2ab2fd0bba14db5134645bc9a9d25f3fa527b296b5ad7ff64f03731a661bbb62817a6017c166a88e9b85fb3e6a3a9f3aff9cd7dca945b3f6602f0ac575fe2fc390b411bcfda53eb6679d4e3ba96bcde3a8f7609c8b21867af5234040f3e3a768514662db65c386e4f191dce3cbed8f7dab97ba93216a78e1e71ba68e3b99a503caaa872252f8d138bd067a5bc8c662810f21947e165d140b793f825d1601842c7ad6429165a281039fbf92939065115fd2947ed0507d5a304912a5582a2baac9f7a0863cc0b2e24c2de916fbfc8bbf4198e79536902c772e4b1f8f517fa913575b85fa2e51ec59f9b505d3d3dddd9763ea76476126ba14a47d1365256c9bde29fb77afbf663fd5ba407db715cd7532903002b84bfbd3dfd72632c3694f298177da690dc16ada4f5f7d087f4f5c9660f483ea6bc0d18e00cc56112fe56cd5362693ea52d048b41912312444058e9341962e1845f5a3dc3d913b22ba9824b17e465e2b1a8f331979dd1b4f645ac87b48e048e2ea0b6ebdf22c762bfc8747522fb0bff296344d87b44db8370725fd4e360387c248143e4f4a23fc25dbbb0bbb4df1ecff10b90e04ecc993dc5d23882feb008387acd7b79217a8500c9b9395b1e7126db1df3b41cb4c0b772bb7b2df6aa8ffc1785efbca925caa67171c238992760f81cf06b943f5aff5752e8ad5c6f430dc003322160e6ac808a41e666f118b20cc46288157ded4dd3217c772f1462a3aaab27b96808f5066cb34189537cb21d1df3a6f7865dbacd8e262da965683d4b58b2cc011d1c4ae9becc3146cfed8747fb175585081607aa0fda7e894bea589bbf44e9b5e54d7e31aa8c9061ffcb9d0051dc9dfd450aacdc2c3099f6cfbcd045b2d5ad1a8736c7cee6d2d1f1140c814653646ce20124026ad5b621d6adce633b21ef696f8393070d245d81c4f65ed1e5247141c6f95294e47c33118714d0ef18022cfedbcde5b038023ec0f51879947bd60fc09b14395e79ed8493973e46b5dbbd6e628c435bec7a3803b33976addd0c62a9594fd93b1a666794c1cbb74dfbdec622d0f8e42cad0d89d1f1f7363f1ba7c3fd1213298ca31464e0e8bb64f27dc4f1b352183d4759d3c99f224e7329a7b555f5208b0c31314077b3ec467a1a14fa7820e69c631f864f18d9734fa4e7c8949ab6489e6488172cedfe04536b33b2dd7b29c165d0030a12bbd470d4faba21a026a52ecc1ce10bc2db53b3ad8752d13dd3d0fea6742b25addb8250d4ca04b128285604e76c77c7281833bf30fd9bfc68fd6ae1805170ee9a2ccac0dc261cfdd0a59755a3f46147806f3ab005c44209bcd15869b764aeacd7673622d0764a8f47adf8dadc63a5a9ec3e25ff84fa74b8f05d84d4a7fecaa5215e8640952c3d0ca9ee88ece1f682a7ded5097412f9e38cd6162aca62da3047337e1a409d7079b1540c7225ad097a3c8fdf708da7364ae079186f384709d5c415395f8374f7418d176bd8fecaf2516f683fb0d915069bd14061b1f364301f4e3b5a5e3208d4b55de8640c1ac3b0108f6903eb14a76e698e1094646bee5d91dfc8d850036258402214c9be7a692eac0b7e9a8bee20d423ff0bf00a7443c1c8115fe5a3901fb7f307f41fd9d1f7600048937fe7dac93484dbc2cae522df70650f98f79c3246801e5491a349462900c95204f291f4bbba1ac71360f9f3e2b53b95702a0200408557ca6c47c02a576440447a2362544fbfbd41ef3761b834f5e3c88f0971d2e9c8182d9057b3b6d5ced2b3d641878ae8329b08811269a44500266fc45f4a4153cef3a409fa879b8d749311813654b93319a07d52134d1017dedb010069177251d319ddedc39b72081061a95c1acab0dd3fdd205a354c200ce467d2e0dad57266c8b474cc8cfe1a8d2ea3561c55be3a6403ec6cd0d03014b7b82506aa064e035443d9c52f9e5bfcc0fbde73c67e16dae99a2a8cc851b8004dd6e963289621d08e07363fed595bcfb07c4e73ff9d16a3969096c99c671f22f276d6c6788f6111e5c25aa92481c85c8d0a083de5129e1738d68647b64b6b8508cf6a88096b0a810f738c40352cde8e42826b323acd8499372111bf4444af1ad8ea10d93560516232e96f2d8128125fb6a56ab31f5743ffe1dc33572694b5f2c75857209bc671b0a13674e5eb5babaa272a1462d4592a4d9083b02807c14390d12c7bc9f6542ee1ca053dd69f3d1694a14c2d387d8819f5c8c6b84a61c8bb25c6f3dcdccce137334dd73c498888ab52058e6756a927953ed8d115068672609d603acd65c1098b916530a2a05612d275d417115a3fdc8ebd58e742509dd5576ce4086eb50ad75cf1f39b1753b11be245d62cce3d623fb09dd18a335c51c24f48059735315e146aa2976a212c622594a5000ebf49540c4707996fbd2126996adeaeeff706e7edd0a1cbc2cb477c1b4854f8128123ea22d7b1a6ac7c992f0231ad040acebec0a836130aa1bb042d72f9f8981d13bb5732519c4f641a9924ca94a86d33c0703cc05e31245043952d228ba38b1947c51745747e176bd92ed9ed543eb979a0c3b4048df2b442eb0927345749edbef3ea6540dd27e964c40de5a915aef237487b45cd9992bc7776e4b87ba84d3f3d4045cf2bbd5836e5e77a37a4530e54076fde125ad2e22736f3357c44a7428bee6d9954d46c821a7c9daee50be5e9099d02ac1bf6c242af96f8165f21657247bcfc5c1a7ac53216515e70f35141533afe2bd4c9a29ca274b97bcc71d2701827d279eaf92ddbf2f3b9f6a2ce5f2467aa6bdd424cb6d2633366e9341f95c7f36f155bdd275e765e30c5f47a44508300ca2c4cb1dc19c3c3fb1a6d9e54e9ba4d3903222f41ef1e9d23c49d4bcff56bff68bd473a65f2dfb0c08bb44be42210098767169eb91580892e044d81e3b8de0c9720213d8f6a44427cdd11d0be1ef59213eb9f0a7f60fe2b3fcfc07a4bcc253efa4225dd8d7df1d28e42913f74430422e5d987d850b3e8eef322cdb0a0f844cf1340bd9dcb06836302d1dae0b1379b4a8ae8a363460544892fe846165822aaf8bbad5d2f3e142792fa3ab569cf9c3999f4eff3b3a351c7d5146a1931ecc5281ad3ede14812bf1db047c46913890bcd0a047fe6292ed70f8a27f578c8c9fdbbb9835fc23135dc798080f3f7183dbdcae52c8ebdffae5089444b5c59c27fb454d5accd94e5bc371e12ad1c8bc114345fe87bd6804e83f6662349e325ae07aa8f3f3157268622ea60b10b80fbb52ab3f29a51768f7937cbdadbaf3f9d95537310e831a561f9d005887999f1ade67c69eb7f70e041924627b288b39f355f06f30b74b569a5156adf03435bf6df0035ce927753d58774780655114d36b8e9ae8b5ac6feaa600656927770c2fdd45b8f005298379124faf12a07bc1dee666e5d868d243289f79cd14201e2fbfe865de6e2ba4da15210b9524eec6c0f6caca6650a8f3f2ae6fe60c12a92c2c6b94e98a45f4f3c82dbdbe324a72b2516af0215e01418ae9389f8f668315a53498438b590ded4941999d9f537a32b83458eb63ad0146f5f28ac4c571fd3dc58c68b3391a16328ec89712e5ed42565507b638810f1edfc93f66f6cd4413147b210b1127e8b487282a92474a22316dc51e38c21d31578d489084e3e01481b1881d7ab856ca8622233da9eab7aa436bc8982b9220b3e22cdcf99be86e5cb8cd8a9bc60ddca60ca26ced3e01e069026b5125f32f82901f05caf68214faf25d3fbaa25df0d4077620d684a73552319a65694a08c0bc30b1e312dea1e56c7040150f2de80771009b06c692bcd8f36371966cb022ec8298d55498b1cc2053a6e08b3a9163ffb5a18d5f06671caeed00fe62aeba50c97c3924e49c2070b6493778c71790dc7af7c9e624284e67ee8b4ed2c7aeba16cbef34de819268a0e27191c1cc4501e43a03c1558cfb6e3ec26cc27ef014316abf8a387f07678b9d9f1995968ec4a5942f83d4ae6fc6d936ea5b8e7a28e37b10a2fd1fb4db9fc5ff3dc41fe10cc3b8dcfa8f73f1d21fbde24a8af1f3d69d869d99fe37bf84de52ec96f3be16163f8c858fa7b1abccaf310d3ca4791c078932cca7bdd4f4e936475a5b094a68fc700e818600ad9511fff642f9e417b63cbddfb64fa1860cc4c364807f491e437ed315b54b9ca9bb14b24d3eda10500ec6d3903d16c262aa6a2e5ef6682d082c9bfa373ba238079ee37add4f62fc668601245548f406e4bb4b9d2d80c808e365058115d48719b7f9a892c129a4579471ac59a24e76989d10a9efd57fc882c0e756ec98b0191ed3818f8409f57339e04fd2442f4627037d5e9a5877544d127d9a2008b6786f9725abc1a3aea9f7471d4c77b4d6e9ec292a3c938292c4e26ff1b90db982dfaef371f92449e9ddf9916649484a3b9810ca886f4e42c5b42b93a9dfc6de1122a7d3997bd53fbe5176c96e058f010b94f45c2c87979a4a3b39b8f3a9e7f9909512b58b6f09dca77f0b8d553a1c7d9e0946c832a97c42ab94cd0b1ce2cf47a80192eb8209ac00f4bd747c95cbb6dc586944b8d1860dde447171fd2710e8fd0e42a925b9c64f0f084cc7efdfe10b2b22c55ab8df9be2ab48aa4039cadfee771f357ceb85c424c286b0fcb140da0a34a034d21070f20119d3f176bc1fdbc94f095a19190b5263c39f7f89fec3ae7d616131387f3516b626477354ecc65270190281de45688ebd8c1292fad6b6e10d8c7b9d82b95f85dcd0487c5f6a05c60ab927f31eab2891bb85ecb84e491319bfe81217627b05bc676e5cb7f794d6fbd3852638651736bcb6f921485e93db444089294bc1299079b11176a657709c56a7f33300000000000000000a4d046bc727a9f1308aa5c32f807fc44f40317b4f578cf54040412d8f7e3e360442896562ca45f089bba0fab83fe26f4ff2cbeaf36981a2f99295b63ad2962501ce2c6d87d0184c1799a254ed03047cf57a3bfd49b8a4438d496d741cf5aca6bd0001ecd37228b00c8973da400337300587f48997465959efe09ac5e012e14f51eb24fc1d3982d5bc0996b19df2d9d7ae1ac5916ab47ef6efa16e12c395d5fe2c432221655bce44ed91e150bd5e250652dd7dca25e34ce2edfb3e7782c20956cfa305", + "04000000a43f07c488c6d586168c51ee2c40d79e94cbd20d13896698b2b8300800a41f1ad82adef74a272fb2c11bab1e2737ac4c6f2633e0b4e290a239be722d334c79108393a1bcdbd820f204400b39c01f1b06d4224b242c3889af5a5aba028fbe4c6a22254a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025500ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000500000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102e6998d77a5a534cedf7f283b172f8ef6bca328bd8d72de3c50d4a7fd5e99bf22f7bda165dfdc5436d9c5cc2850d9323afaa5fc318a7baacf633ab9b411482630dfdddf42d14417a132ba990440d794a7cf6be121fcbbf434cb8360e54a327180cca6bd85f50f5c1220018e377ddd802611e57a5deab4cacac3aa2aca59a76d2112dea5e9abf5c800d1dc99cc552e651b32289d89b9dcffacfc8a052f5418461d06799701af4e170286d7cf6af482c1b20bf62e5146fc3d2e1df8686ecdb094a4f8f7144da67a3024887c56164da382cfbcbf20b802fb52b70fa4f3ab4dab2ef73fa9d8e8eaf29a4bb8eef157ec5b9c6b10cc44878346293561553d1096ba431e62a0de941733018828ccf9979cee0198e4b8e5a081da9ca9d11bdf5c81180a33ea4a59afbc9f0fe396a35e25a1988d2e6c99a0e4fa8719d610ddb4fcf2a243053bb8314c39ba3cdb931283eeac896cbd063d4f1d0a5bcfb3ffba36ef2d6eea371550682953563432ff8b51224d3dc87899da8df32b01d17d092e63522e30381138463670dc34ce4548d684642f596b43d517b0de2e1589125a11b98ee8c1199650ed12b47443ef1bbbc98e8e396e21c1296e741b41d45aa5dda9d2121056fbd34fc00eba1caaa768615945fc437527cb18076a482591ac9690a6c181c8f2fac96da91cf3d5b255f8a56a75df242f67173613933bd0f9bcf0e822ee60a99882f930e67fdad2febcee724825180b4a94062ba0e273f2d5112fffa2d4ff169db2b053a224205f13fd8304050e33c2e51115ec44108740ddfcf45a010eae99377f1e505f0d7571e4fcda2c31f0e6f95b4e159a79c7160bc2c0b963fdfe9c48daf8b4048031d01fb3b9059ebbea408caa66e8119c3784ab464d002b0b7dc99871c3a5b7c10fe9a23487e789a6081367f8b043168269b0526ef5f8eb191d2b1d619d0e3a276f190829cfe47918b78fa03818069bdafce42c53371858eeeca725aeb2a7af0a4609e25ac14a3a0dcc8f28fe67c1fbaf331f674369c480f0dda94a346e23c4b9754c7febb0164dad9acd66090a7d870ce42b2f8707650e3a1c9b12abf73e4fd2c88413983bfe0aa0a83234f79cf3d7e46b8f071d4db16a42ba6c74b233be5b4fe432c76dc7bdf95aaea49693f532bc3ad0c059ab280b866306db9f743dd04abe4efbe3f62374324f2649a406e80158e3e9ac7cd1df82434daa4899efdf3febd9dbafb019e6ac3265e93631e3bd7558e8c9b41113e2b11f617c179acd9d577a02a0cda56236cb70e3984fd17dff31686c5a04deb697c85d834bd1c057ad8f25ebd9065af0b2caaf4fb77b04573cedad35410a21b7cb22559a61846a49ebf680a29df884319880949ec70edbad4f1d2447d0341f63de68f2ba0b115e1c6194ff27bac2dddd079a777768966d5f4640c50d04ad6d0082808f7988a45803645603d371380cc451b71299f6519d1e056303b916bf715bf1eff1c21302fd3a9bee087c3ed904d32db2cafeb4e2ed4d860c83617b52042336aa11f1df6c19ccafa022c2937fa47bf1918db0fa6a08d17d76756bb844fb90944a0e2cc609f7c4700ec1a829f800dbd5fbdd2eff3710e30f12a3e0d6499ea34215000fc386231883c206bed4bb2d694879f5ffed8987a331153978f0cde719b3bbd5258a496f200bc4dfe042381beb8569962eb8582cf19edf1b0627943891d21e60acb816dc32d2502199bbe4cb08aff56923e125fd5cb5cd5cb790045d1f0b6f163d262e8add8c0d6a24a12abef2b5eefb64af82333164e31ab6664bc179be74a4af58247b80a587d810e1bc205c4bfc51b441ec3d59f6e79a902f5227d9471b44add711916ba72913fdbd2cd2df4096eccbb749ac9323c4ccb09540cd4367f1846ff57ea239f702499c5d1c7b2d7908727c56bb6555d12e5f83ddecec901c39c6274d1712b6d497c5f838afbe07b19e8209297abdd4852e556dd5ba7baeb0623970a27f4c3dc5abe3a9968fca0a20f27fad059cea22d764f563a6313c1e3bb5bb6daa4c99c630e36c7426e2ac4c64843232f4dd89ea25affc655079010f113f67ea2251d1c8e5eab399e37fa9b3272b9b12fb1cd955bc99b7dd17e7cac1d522ccb45867f82811cc1731926adf904a6a939d86859b759dc2d79044c2c3a69bcca6797fae8377d3369e9f26012bc4245ca53f3f4e94401f6b0565dfc5e60d8436dccc40430d1639090355117df71fd5d3bb383cf42caae335fcc821164d28758e4880abe280e8daac3604670a32d93330bf464044960e85b5a525f9a0f9f6fc4525824c592bd3a8d866e82fa3274444224c3a2545e69d04a8e81055c2a44b0d743e1f38522be4ae25d0d52ebb103a85d3f1e4c13aca71f28780b6e728202572cd586f9c9e29b99a69049de0ad5b7ce113076defee649808cd1eec13966ace14681126916e65a9305efe7af1440f5f408e3b0000000000fde01ca683d830fbefd67b98b1f84125e9e2d3a844f38fed52400efbe4f5f92515ef0bdd76fc972643acf8ebadd4d97dca4c591968eced405820d608d847a63341b13e4949adfd95106b0035aa1759a9b7687863a351b12ee938d37e6c3f7efbc0d699b99fead694f583b67f7359ab7ce5d9f843491bf8e64fc4b563045de535a391ad07e9696a68bd54792d27d56a15c67212cb57c78abf4ae1a7898aa9a7156eee813cbc2fd254464c10468a8af843b15864919a7b00628dfd6c4362f72cd365b9a766a9bc1e2dcf716d7bcf59dac3ebae1e4115999dd8f6985d38a3025bcb92001bbcd4185e61d47ac5088d9a65c28ff99a26cd8648a383f7d93bb1543e7dd12d91639d4314decedf85132b953f6f6f1b873f32b44f610d3e708d4e99be9f8051acaa821483d0a466c80abea6984c25f7ad438d59e58e6bf00806c2cfe66147878505573ddf9783d6fd1b3d89a9097b92e6e03bde0c903d82cc6f4fdaef8905ca1a5071e6380859eff61f11ca29411e2efa2e948406e08f59b3201b8a69f34fa7be69899cf40c035c9965c3814b79406ad21c507e58a9632f832aa89cf05cdf6b83fc244a8cc7439009226b52eeebab5c59ff878175d1630c3a6cce444f3ebbcb9ddb64a2d34ce166a7c157e67037a5345a8a6f4d8be2809d3e771623434cc0c08d93de4f32ceadc28bb298fe4c8bbba1279dcd079ae3a0f23c520f70eb1e5953a15a0cd911926346e19e53c9bdb64675711f2017715835c2eb10b1a6f858192f1ed566521146fc5c330c682919f9f566ae26d078a153c20be69298d305a54a26aa0cb2419acb7f2df24f7fba18d60b3f61f92af7e14c95fae8e14ecd0652f66e25287a71b3c76678077a86204b71770ac2cfa93726ad4085e31002ffed0c6b8204c75f3819fd9c428a827047690eef0f1b43e5580470d87902690aa69f925e33a94d23bdfe4cdd0d6700895ebfa418e8f57ba46b4968615095878b3218a6ef0f2c574f916912cfdc3a1dab6ededf87300359087f157ab022c1ffc0bbbabe241bb5895129bf92ab6b79be08f3f18fb0db349a8e4e725967b6c579275c5de0c82705cb690ba836c884a9680b5dae639092f57f07e7aed117565cdcd243b9d547fd3daf255dab39e651ffb0125ee75241d18ef4fa5dc6ff103366edbc12a62f1e8b24dbb39e9597e3cf0a8ef6a73766529e53775b72693cc561164b9f2bb81304f7ac34b3334f2b56dc1807ae3288ef139a0d9e8160bf39f2580bfec1b3fb671582b32b086ea072490dc1333b1999eb6689ce955965d21d2d13c383d5eff022772d18aa4449ace5ed9ffc9adca96d7c07ff99f43b41189af2766255acd7e52b14a8a3e67d7d7f5469db1abd777b646f5008efd117ed66318830079c82c478c57cb02a575fb0025701a41db8b55d4eae176de6acd3f0013dda0672d1847fe20fe2e7b4f3ac0fd7548ad5e09171996d287c0ced00a4afce8ddf09a558038db450d8bb9f698e775443ee81556bc913ca191f0cc1613806f5a46daac751738db4d6096016d628775a57636b0a8b5aff256398ea5f920eace08f49a0f1bca6d108a9437cb47348b44b3ae40db63ce3e1f003301613ec6e0194e168c1545e1ad4e5500ab330a1db3c3bebd5a022b3ca838077cc7a396c1bcc55878b759f0287ffbf045afbbdc9a7ed5cd93f7e57e9c729f4232623033def63eb9c923a8670b5c4d88ec65f0cf4a7b6976951aa9db4d6963f8df2279feb8a244783d069b7f462e32fd72e4f0ab27831eac30a2d45d73a3d3786e7252b6132d402cb0523401ecb0a3d19798720a970d53b2ac1a9e31885f4162da4b3e62502bc955b1c7c8eee0aa9efb614188a4adb53e3ff5d223164c0143b624153f0ed3b5003bd2d6460c69b38e6bc79299a6bba241db6f757f87813396ac26e06d8888c551b36736553b2ebe96bb6fe6120feaa143b054c6f3db98d4889dea43dfaee594140416de2e6dadd4c4e9bec519f446e4a5ce91615d2bd09529e023758490f5d5514634cd82351d69e6435527aa7a2d8c099071a5350561371dbe83074b0c6f00985ce57b1f60946a5e96238bf80d5005215a5b563fccbefd147cfb2901077f45ea9c9a12fdbfda6c907877d4e3ea64beea348bbe1dfe3c479dbe72a70cb47434991b110c0594244976ef2e6dc31b0ca2aed9bc07549aa06630bf1232003e0c4197e182ee61e74da7903dc6e41090d05cda0a700523699463d330be1b49e3f305208ae234f1aa734b5796fab90381368d3ff0ed0564ca10cb48c2359d69a3304ca73dc6752cff1c8e932cabbf91aee01dc6acc77e9bcc0fd9b0a19878ab1f0a1477336e9d046f480b20e9be0d8b11a3a3625dd93cd5c2779e81a85a14a742a189e6c3e51820a09d83e34b3b7b58a92a393f5370302d3414460b83ca080bef598fd8a9fa39fd051a1b8909d06290709531716e24b2aaf692015d18e5ea17cad1d06f7d90751a4a04124fea400be3e4e5ed2e1895feefd12696ba2ee863483be430181776786713b03c91706e87a0d79cfc728d700649e2110a8d47b9a5aa65713a3989bb52b02871120f4ac4f0428e5dd6e76a6c1dd89dffd1a5539654f22dc421355d73296600611f9a187c0c31f992a9685e4746b6ad46edfb2e381b6681e26ec147a98cfe100c124c1d68b760dfcb36e1f01416e2f3133915a96cd8e4bc31fed6ef93a6fed8c4ffe9d0419cc2aea85800ce7b1ece31cf099f7e159a1a0b8621b934f63e8f1071107d3bd2d1d3880fd65cd39ab98f5c98e4a0a1a25b4aedcc57a8aaf684ad74ca9568b88f4ff00c84bef4d331b5752062dc290b04a917d19faa3ccbfef9eac43ab28333625630c6e6f5d2bccaa5fb3c6c7ed7f0719645bf159269b51dff6e358e1fb10b6c2f7072f357fc1983a8f4ea58405ecadb5de04badd108f19daf3c50120e966239f12027f85b52b244718a92c010f19b1c0779b2f1e5baca947d5c7d48e011dacbe070a6d4bc01e4cb3c1c1efee207a3b1372d767340f859f78869c534f5e148700552116c55208d5e762da64e7f456899fd6b89957d3f2db9b71be989e221ad86e712484d3a387695ae6ca2579f04f17a43674f50619f230af306e0f336d329188a41c0b64363dcaa40298b12e9356f357bb52a57b6fc321c806a8a39ce4441e5e3236914fdde731a2e66a63ce57e5f8185a4fa96e16b18d0b14e9299ca0a15f551f16119e387fd3fdc39b8e91fe1e273d5765c4641a1df928140222cdb8c161a65c050e998d025cb20d997240add7bcbc938f64e8cefe4312614e89e26f88fb2f9f3cf7a42f494bd56764f170ac7ab9ac523c7eb816232b47af572340f731e5afeb20f13ba78898de0995079d561fd39107fd5654e70ac5e57d6b5b20fcbeba5f052001d850fa165604fc64722e402826c9adb2973fb8de4238324de0274736d68911ffd25ef97bb3990625c61752ec69541e4ca6db1d83a939fbc4dcbdccb7888400dbc554440d4f391d9c3ffdba6ee44e009ff3f214ed539930ecd66f77e03317236ab8ee458aa0dfa6535714308c5c5171705981662fbb03256e63412e4eace603c63ef9b951c8775cf90c4fe89fe45fecb648b4dee1afe85cc1091ceeb75284285f813771503567d6bb8f2934e5060a8240f470007b62ee89a98e69836afdd11d67ace981600b1efaf3448ee7c2835d5fef5c0418b32c2213426fce3add164521a7b5600b9dbd9f23cafbbb9235be20e808eb2d0be6b85033c12928612ed97628f05a49d0131395c3503cb478b1fb6cd7d6057c61979e49d3eff07f843bcd4104a99341e8096eec42bdd60bce91f5a3b1cdba7cc1b97cc6df80ff72d1ce3ba523d9459d42df3a3db6f8afc939eac73ba69495759b83f8990e5090e9f607d0c63a55da1c6903887da422c00ec00fce80063cb8b236f640cb3ff351189c1f96552c3dfa879bac696d50dee4cb68e7e7ab1ed316e65269eee399dc703cc4a02ac01100a822b1fdb375ec0ca1978283cbb8b0af9a140a3f8472f293d1b1ac221cfa1532f5626f1aa05f17984af7ad5e06587c7c54ba2c078837c1a442bed9872bf70081fb534c33c72e392e975af8336f72735fd205a2f0ed96deb8103b6bcd139236128fcaa254546432ec64374d209296cd2dc09afadc697b956fa3da4a25b88d007e8b67f49039911b114b94d83a3ae7bee26da163730a5674c31106be9f917d1fff301fd9092f050613b609af7b36503080c375e3c4a8cf8ea342c741562d8a19773b166d5536bd3f505dd1c19788b6da29db3b1641a75b4b802b72a0dea1aa0235ab0c7718990896b22aa53ad31c91c8e5da28aaf8ba8f279770c7ff3399f5101615ba919bf81d2bcb72d155959f611b064443fd80589247be066a338d61d20156adc6d0634e2824ae94b99f3d6eb1e6477373c2ee881d817b859b4a4a5d9b00bbdf8dd59e338473a30ee5facfe3b9ca519da0465f758a57398274149174122a3a1f06e19289a755089f6e4a8561ea5b18e7ee222a35c766e09b36431d58163c90e9efc43abf28c1e9fa7c0d046f4b8f88b858e5cc7ac6ba7b1a25074e540d201bb5a0174821c8ed04152f0dee28646f9e3ce816be54d5ccbfce073f65176d095d2338ee411876af7599268b23f6897cc63b0fa71c2ea331fc07fd5aeef7912486b2c81f90728ea0c30e758580ea1da099baa8f84fe0a27bd5804845b4b01104147f385e51d309028a6539843f75a21051592282e07c1ec132e52a0b6903e72717615e34d5c2ab82e9ec74e498e56e20f8c3485628868f3205a1119814b00a1637cbfc4c7669c111b0b20db5b63a8eb8d89b2ea6f4d6fe2d1ff7b6dd8549bb02cc0c4bdc7893127d4122f66e6703038b8176d361e454dbb172af3128e86cff3a1be1bf006e9c9d45b3320f8bc9177612d217b5bf29e2d945d1da0721a8672f2dc73d87a3fc5f91b72df2843d34df2620e8bbbd2a1ae754433a76f7c01fa3c31566dc3bc53baeecb13ad3ae78c032eae53fac510933a1233cd09f77bda506c424ba2ceb3ecde9363350a90963a615b1a9d8604fd1c3d8faa32d8238c10a03cb3dd1442f7f4ae88444713536c99a7d4e0d82eae446278a572ecf087f98e1f62d251b5111b5c07c7c022f9466cb471e0f692e22b6a01f4883ccbc9aef354b13db3ed86128c7b48bfa38aac481bb164e144cf7cc5cd9ddc89c390f05c8b8f1fc6139fb90aca4f05b846e724187083ada982655c7282530b34832f28af0d341b3d21f281c5b2d11380e78899358121b4985536199ddb8bd6a1d589c10439f9b63070c902c96916e392c1aacd734ca2bca4ef118937aebcf8b7f5d6892af7aa170ab17bf6ef1409b12477328e4409b8591a3b32f2151a73f5e3b8238e24b175ae8e92da8dd8ac4a6b3e48f9b9a93b3281332e0023d618ffd27b402e986e62869f56033d020c595f77117c857bda58e59e10d06165b44d86cff78cf6aecd3b8884426053ac0b395c6e38c8f74d36725a4ea60b38dcc5da25c6996453dabe287ec48ad03062ce9ceaec6c521554fec71e246c1d7528d30bbb63b5713f1c798c6b8003327b15492798b800e9fdbc4ead8e5f999a4fca0c88b47b1fccd5998d54095b1003fd0b07f225200a8e044de43bc32e92ac72b8eec3d9c63d4b1db67e4dd884dab1366cb8c5ef8efb5b7755392838dd2d5e05ce9ff330781571c52634977b4ca1e1696466c93bb61e3a1aea52946121b9804cd50d020afe21467f146760dad8f123490fa5074cfbc17bd862e0288e93b4ea6e537946f2fb6b05e5ceeb73b859bdf2bb61b6f38f332df7ec6b20d37c0ace3f0307dea511f0df1c81079d1553a1c550f6f65f6e9334d64d19c81b9ded113bf945d58df5be0372275e7f59dbd8738bf3939836b7aa7442a98f01ebf5744dacfb4f01218abac2c6a58387bc793bbdb1c041dd56c14dc02f7f0690f4ae2800508ac6fcf8a56733773aed9e899eeab42a7229971a8da896f5b49a344b640d19ae46a489dda7da393c423a97300a28c2e2b10ae580fb0164f83f1655df5e66780cde64b7bbdef16563acc3d65e98dd800f90b3a685d17c2b79371aa4c25757fb206c6b1f77c170ec0469c2ff61250acd5192d49bad378cf09fca94de403bd50f0caa51e8b59ba16c71ae02078d99e3af1b735a37d8af3b8985d449ba0f9054b2bc3c80f6cddc9fb05848467afc2a64633d323c88fa7a4b7ab33f81c6d8262c2ca64e7b9f311d168161bb06c39bd7fd7aed814933832546c271f54eb662689c1cd7c967b027b351bac886ce25ff24e7c10a507489be529029f8270ef99dd21e043ca7a675e2785d629b22979464a32ecdae53cc87b52da6c878a6d7073d1c3fdfc81c34f2846ba40b911c536c4dda0d44ae41923d80a7b6169af46bed4d632c04fe578065e262731ff1d11d81d80527e2be11316520f21c84d38b466c0d58e09cf1b8d54745264ca9a8102f9d4c8eaacc5b11111f17096f4de3f02ec6e6f40006aae55ab4d64ae4d117ba486d264376e6c471b85979514ea86b95bda4dd29666c45623efeb8e2f0a2a0e7bd7e93de9a42c5c1420bd0ca9d27af76a2ca3f2e8241fa3c521aa70f47c9700a4f131472685409f081823e0f2b11febf7d87f80c9bb139e3b91328672c4e38b175441eca114e2572d29f7006671907fb586daad0a594372ea110dabfb2f5db51b4ee8f2ef7174db21ec091393a641a2bf1d239cc0f230dcf88531fbd0f71ba274b817d356c20e163295f77a1c72031b75449ce46e0eb26c60056fc9a480c4238782a193155a9c26233e464c82d5b2472806802cad75fbba9beb2a484b9d5cdcb44fd61228af121a13580b91d3e0fab80fe4d54096b97626199eb9316ec375f4d862acc8ac10af9d104144ca04f6c0c62cc4c3867951047e80d038dcb38cf4faf35a7e35722767d43d6c70041f37aa056db3a85d3c36686351b2d001942a316265ee79c8848ce19f1276bf7b89dff80180e8a54919e7f0e300299cb574fffc41b0172a06a0682eb12b0afbc40556fac70abb6cb24459d86f8d976757775e3d011462944794eecadc2cd2998e1f202aeb7ca813ca5966908b3eeac3577650015311de2ce584546dcb00a588541a2d73a742d3ba01ada0794abb5acebf9467ef4c40b43ae94426cb06077451e6966cf2c9f3050bd89cfdec233130660a6683b5ac320b5543dd77e9c11ad1e9b5385a0c93765858ed20833c6c262841e5aa3a5faf3e944deb4a1611be21e34cda9d021c0a4f0c09e001f9412e1272a21aa03744f175f1ace6c90ebf203bfc8fbe436c3b83f03417c1c486532a6a621e81265389b10cead34c1577faca3bbbc53dd9e9d95bd1411bba48a29acf797071166b3baf12b1ba41bae9d5c6e201634801516e2a3eb1a7dc431f0ad5074cd2723e6061b50710d213e52eff591638eeeca833e2429652f15864a725f2d96613547b166cab7a637d199978fc160e1e5ee8bb9e23d3f4cf0f3d162df93059707fd0f4e8cce5fb00cbd4f4fbfa1061265a210a0ce1a7a7aa813d835ebf6e6bda32399bff4cfb33db8c36e46935a0fd04ab7d734c2d94840e604d7871d43284757f01f099201a7eca576fed8d72727320e2a245734e78402312dc4073efce4910d200548e68bad92c8bf7167ad05998386fd9d02a0cc5ae81bd021b810f98b6a6abc6ec94dbaac22555bdc7b676c31c2bdc2ac5c61466715b73225171d0f89d0562cb7f99120e71660351c82230378b3134b61d522bb2c0d8aa671d12d048df3bec31c778e152b567f88d93137b3380318cabe20f73c210f91701763cea06df6ce966e2f02c57cbda0feeeef55bfebf1bfa77f7fc5e8cf30c55d6e6f6d9752670d82701c5737dccdd36b539f22f9d122babd0408274c2ff56eb4725466195c4aa5bd28e9b241ece4aaa86aa18a04dfb076ff6257c0893b2e65f5ba62d4540f1f19d828b0c9cb4e337c1156ace7b550705411b38bce1a68bccc9184f27aa03f6fd6fc31453ef537254de043dfd461361381b4864573ca8e06046f8d500d1e60b79c54763fd5e244042e7f77fefd1691229f6a621db132b8811d0f32e9871bf85ffd81a088f902280081b53b3026fdb66329cafcb3c9ee0b1c1213d190e86d990f4b1a4b7a9c360b80050fc2af6f1b73d3084d3173b8689eab365e181e2c1e4554614b4ac658a4684cc9e976eee419aff2536832d5f2eb6c63ff7a9fe987d5165798ed5731ed3877af8e5b88f10b8dece1592b8c5e7cb6765e0368651a107a6273539ac155f4030d9cd842270bb284f76184e664e8e7d89710b6676ce2cafef2451b11c092dd49a1603f1f8eeb7010ff72edd2f91700634d1d24eb5ad70ef6862cd4e122304eaf84e6f3e14c3d6206bf6207544a48cb4f2f4a67bbc731be3babdd1872315c239c9ceb234aa40175549ea1e029bee42ceeae3fc3c9e0c8896eea93b829102b6f06c8c3a91e995aede46731fc260862a6e47eeb0bc9f377b4893dd542d902835afa6f8618efca6a191246717f8afcd80bf92c6d1d35c22c37e5bb26968f16b057b285df374433a251781f7069e9ca069fee52607f11c238ea0e3c4d70e2f1115ec64216030ab1a0e35687211d27676d679a510a430069be1b0b7a1b877caaed37230ac7a833cf7aa5ecbfa063f38dc3cac5c663b67b86739151713da11706af98bdf0eb0ee1fd8bc94dd31033a1084d6bd520d9399e4dac46fff62bc819ac5e0bd856c194e05c6708a65712f6b4bba424497def0f6b108fd8f23cc20dc1409842fac7cc80834a31db1be8d01d5f920579eefe2155ce973831f723d5a4151a7d2508ccb09a2d26d3282e8d6301e46a5e1ef1b5e2243d8f8a87c787d92c48975e615153d1318a8fb4ebb47d80908e6f63622a61009593b574024921119765e9c7d19cdb730be5c533364e12921b13267c2a64783ed788274830e2f806330d17df3e0935b9c5cba64c281578331fa0d6c9eff7b1b10afd8bb4dbca9f5a8dc3a35e68b0545d3089234cbd65b372c29d5a0526577a2402fcdc733d904986e327a0d3fd6e29ea62f183bbfa7db743793e8cf1912370c7da5aef6f91c007324289880911dc79eef6311189eda702a38deec8af58bf3d69a8fddeb4826d766690d0bbc51b1e87e620fe8533a25b9f93f8d40b64b15cd4f0f761d36ebb974b2cc51be0c98381131dc05cf331e3a636405174638f1101c62fcca193103814686758adae28662c0c7b80ab5bd2c58abae34b2f3633bc79cc88c195e7281929f5ecf9ec4f2330a14d992d6e2bc849b158b3404a02c53d18584860ddbcfbaedc9b4321761b56befa57b59b2b566a125aa263a037c6b0cac72e1f686aec527e7306c4a1b30e5c5bfffa40c2fc5e8475a0733add8012920be1759cf3926a8f98c166c7b391184f992f7483858bf6500bfe9b52a1e2db438122996f73b2514ffc0175567ece1badae39b6a9c719e32a14898c8abf5b92583d13695480677673f20475f271919d60915423d696e868fddfa60e889a7586d510c62c63a16b1998cf65951399d7892d137ac9168e09bc43b5989c79a442a091c8fff191c5066e289e98f855ccffdf996157e9cfa917c244da4ba3e0cafd28046c9a9aea3df72ae68b0c275b878aae46a9139b2139c6193f9b765f901fc5b3e41d5986aec0c427d7542d5399ed3a58ff5c40da1648d1379a890e4f82d58f29ba225a94a62defc333f12335dbe559b70f4c95923a12dce670967a21eaff10438356d9276305a9d0a33f5b152e88d7e98f20402cf327b181a1479019bac5ea43781ac0726ff8027181215b36995fcc35817790d6b0882801f18dfe95390c440465983435d9ef3104e4916cec4f0346899048a2e6fc1a389c2ebb9efa20bb14587f108d232d4cccb833c3cc46f44b735cff07c1e6e4dbe4b1c4db926368de1643cb0ee2094e2bb9e774c34e668832d59acca65c33c92fb850b5be96650aca5c070d312edd0158310c6f575e646f529d195f722d3b566585b21e99950702156144c0a59cebcd47586989c7b96b924196f236ca23bf95aa8fd170046288d3ac5e2a016d0b8c4dfe2266f8a144c1646d21f8f2ed58209103eaf13a33da2daac85523766d81d04647a794607b6102ae623b4a8142ef3c318959cf2b8da6566160acff46f5f6fdb4e13df148f5e2062c1b7611ae1ba5e7755c49bab6d7c511a37152cf09beec0092c7bb026ec39ab798392d4b977b1ab0e1d613a0e2ccf2eca1d739cf1862396a8f3b2b33c1448bad4b3b3e3fd5743c1aed101f213c9735a622d1fee4349995cbc332f8dacc86ef92abac2cdf7793eae4dec69c6856955260a8ad34bd8deef0b25edada3ee95859cb520240b19fa23ab57890c7f7fcc53de6511c6bfae9889bd1b2b25c51a093f82b2b7e103c56708f264ed4f6a577f3002b63992158781d394c8227eabfb039cd1adb2993ec9f6d6c5cd162976b1ba16943a0306ff6a2cf67fc27389d6fa88e10920932f36a4a5aa30b322d05ceb77e471ec23f298537432b66e6b81bc2271820e4f3cf4741bfcc942f1fff1e4228ec6861d16c0e6ed6e06c5e0ce0c0bb41d0a2c046b0e93e197cd28d6620ce5a8e05116c79ead7f9d57e31059ada908be814cb0cc314dc147b5278ff7b02e3ba2a6f8b1f0210000000000000000fe2d83865ec6d0e18021047a13eff3312ef198d06f7dc7229494a5b871bcbd0a0250ce39b176b732728cb8728a59f12f8dd4c8ef874ae58d009e62c65f67873601ce2c6d87d0184c1799a254ed03047cf57a3bfd49b8a4438d496d741cf5aca6bd01bc1e9d7134d3c05c62b251ccb3ab8473cb5dafc7b19f3b6750e41bf24c6ad882802a60d88a2fb0fd642095d0070000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed416b1c5ecbc9495e905a2f167db0661507a37b8d83e6e98d494d1005d6bcdb74e3332aaf23dfcfd3870faae91996d33135a892319a3bfb08d3fbf19bf938e687ccf00ecd37228b00c8973da400337300587f48997465959efe09ac5e012e14f51eb2425b8b53fc4c9cfc3627fde7c57412b7f985853b0db8f2969b13016d992700eb6af998d6937755995afd6c769174189b5eb6b84fb35871b5844b1f320a6a16bd8", ] .map(|hex| >::from_hex(hex).expect("Block bytes are in valid hex representation")); } From 632d2b2c5229292b8d54832b7cbab6b3b5eece3a Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sat, 3 May 2025 23:03:53 +0200 Subject: [PATCH 203/230] Rename and fix orchard shielded data test vectors and releated tests --- zebra-consensus/src/orchard_zsa/tests.rs | 4 +-- zebra-consensus/src/primitives/halo2/tests.rs | 12 +++---- .../src/primitives/halo2/tests/vectors.rs | 4 +-- zebra-test/src/vectors.rs | 16 ++++----- .../vectors/orchard-shielded-data-zsa-1.txt | 1 - .../vectors/orchard-shielded-data-zsa-2.txt | 1 - .../vectors/orchard-shielded-data-zsa-3.txt | 1 - .../vectors/orchard-shielded-data-zsa-4.txt | 1 - ...xt => orchard-vanilla-shielded-data-1.txt} | 0 ...xt => orchard-vanilla-shielded-data-2.txt} | 0 ...xt => orchard-vanilla-shielded-data-3.txt} | 0 ...xt => orchard-vanilla-shielded-data-4.txt} | 0 .../vectors/orchard-zsa-shielded-data-1.txt | 2 ++ .../vectors/orchard-zsa-shielded-data-2.txt | 2 ++ .../vectors/orchard-zsa-shielded-data-3.txt | 2 ++ .../vectors/orchard-zsa-shielded-data-4.txt | 2 ++ .../vectors/orchard_shielded_data_vanilla.rs | 34 ------------------- .../src/vectors/orchard_shielded_data_zsa.rs | 34 ------------------- ....rs => orchard_vanilla_note_encryption.rs} | 0 .../vectors/orchard_vanilla_shielded_data.rs | 34 +++++++++++++++++++ .../src/vectors/orchard_zsa_shielded_data.rs | 34 +++++++++++++++++++ ...{zsa.rs => orchard_zsa_workflow_blocks.rs} | 4 +-- 22 files changed, 96 insertions(+), 92 deletions(-) delete mode 100644 zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt delete mode 100644 zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt delete mode 100644 zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt delete mode 100644 zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt rename zebra-test/src/vectors/{orchard-shielded-data-vanilla-1.txt => orchard-vanilla-shielded-data-1.txt} (100%) rename zebra-test/src/vectors/{orchard-shielded-data-vanilla-2.txt => orchard-vanilla-shielded-data-2.txt} (100%) rename zebra-test/src/vectors/{orchard-shielded-data-vanilla-3.txt => orchard-vanilla-shielded-data-3.txt} (100%) rename zebra-test/src/vectors/{orchard-shielded-data-vanilla-4.txt => orchard-vanilla-shielded-data-4.txt} (100%) create mode 100644 zebra-test/src/vectors/orchard-zsa-shielded-data-1.txt create mode 100644 zebra-test/src/vectors/orchard-zsa-shielded-data-2.txt create mode 100644 zebra-test/src/vectors/orchard-zsa-shielded-data-3.txt create mode 100644 zebra-test/src/vectors/orchard-zsa-shielded-data-4.txt delete mode 100644 zebra-test/src/vectors/orchard_shielded_data_vanilla.rs delete mode 100644 zebra-test/src/vectors/orchard_shielded_data_zsa.rs rename zebra-test/src/vectors/{orchard_note_encryption.rs => orchard_vanilla_note_encryption.rs} (100%) create mode 100644 zebra-test/src/vectors/orchard_vanilla_shielded_data.rs create mode 100644 zebra-test/src/vectors/orchard_zsa_shielded_data.rs rename zebra-test/src/vectors/{zsa.rs => orchard_zsa_workflow_blocks.rs} (99%) diff --git a/zebra-consensus/src/orchard_zsa/tests.rs b/zebra-consensus/src/orchard_zsa/tests.rs index 4a6e32e0942..6b09f7cc02c 100644 --- a/zebra-consensus/src/orchard_zsa/tests.rs +++ b/zebra-consensus/src/orchard_zsa/tests.rs @@ -10,14 +10,14 @@ use zebra_chain::{ use zebra_test::{ transcript::{ExpectedTranscriptError, Transcript}, - vectors::ZSA_WORKFLOW_BLOCKS, + vectors::ORCHARD_ZSA_WORKFLOW_BLOCKS, }; use crate::{block::Request, Config}; fn create_transcript_data() -> impl Iterator)> { - let workflow_blocks = ZSA_WORKFLOW_BLOCKS.iter().map(|block_bytes| { + let workflow_blocks = ORCHARD_ZSA_WORKFLOW_BLOCKS.iter().map(|block_bytes| { Arc::new(Block::zcash_deserialize(&block_bytes[..]).expect("block should deserialize")) }); diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 0c0128e666f..75844723f2d 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -170,7 +170,7 @@ where // Use separate verifier so shared batch tasks aren't killed when the test ends (#2390) let mut verifier = Fallback::new( Batch::new( - Verifier::new(OrchardVanilla::get_verifying_key()), + Verifier::new(V::get_verifying_key()), crate::primitives::MAX_BATCH_SIZE, None, crate::primitives::MAX_BATCH_LATENCY, @@ -194,7 +194,7 @@ where #[tokio::test(flavor = "multi_thread")] async fn verify_generated_halo2_proofs_vanilla() { verify_generated_halo2_proofs::( - &zebra_test::vectors::ORCHARD_SHIELDED_DATA_VANILLA, + &zebra_test::vectors::ORCHARD_VANILLA_SHIELDED_DATA, ) .await } @@ -202,7 +202,7 @@ async fn verify_generated_halo2_proofs_vanilla() { #[cfg(feature = "tx-v6")] #[tokio::test(flavor = "multi_thread")] async fn verify_generated_halo2_proofs_zsa() { - verify_generated_halo2_proofs::(&zebra_test::vectors::ORCHARD_SHIELDED_DATA_ZSA) + verify_generated_halo2_proofs::(&zebra_test::vectors::ORCHARD_ZSA_SHIELDED_DATA) .await } @@ -259,7 +259,7 @@ async fn correctly_err_on_invalid_halo2_proofs( // Use separate verifier so shared batch tasks aren't killed when the test ends (#2390) let mut verifier = Fallback::new( Batch::new( - Verifier::new(OrchardVanilla::get_verifying_key()), + Verifier::new(V::get_verifying_key()), crate::primitives::MAX_BATCH_SIZE, None, crate::primitives::MAX_BATCH_LATENCY, @@ -285,7 +285,7 @@ async fn correctly_err_on_invalid_halo2_proofs( #[tokio::test(flavor = "multi_thread")] async fn correctly_err_on_invalid_halo2_proofs_vanilla() { correctly_err_on_invalid_halo2_proofs::( - &zebra_test::vectors::ORCHARD_SHIELDED_DATA_VANILLA, + &zebra_test::vectors::ORCHARD_VANILLA_SHIELDED_DATA, ) .await } @@ -294,7 +294,7 @@ async fn correctly_err_on_invalid_halo2_proofs_vanilla() { #[tokio::test(flavor = "multi_thread")] async fn correctly_err_on_invalid_halo2_proofs_zsa() { correctly_err_on_invalid_halo2_proofs::( - &zebra_test::vectors::ORCHARD_SHIELDED_DATA_ZSA, + &zebra_test::vectors::ORCHARD_ZSA_SHIELDED_DATA, ) .await } diff --git a/zebra-consensus/src/primitives/halo2/tests/vectors.rs b/zebra-consensus/src/primitives/halo2/tests/vectors.rs index a31aa8197ea..f22c4a7b6af 100644 --- a/zebra-consensus/src/primitives/halo2/tests/vectors.rs +++ b/zebra-consensus/src/primitives/halo2/tests/vectors.rs @@ -1,5 +1,5 @@ //! Test vectors for ingesting and verifying Halo2 proofs from zebra-chain::orchard::ShieldedData -mod orchard_shielded_data; +mod orchard_vanilla_shielded_data; -pub use orchard_shielded_data::ORCHARD_SHIELDED_DATA; +pub use orchard_vanilla_shielded_data::ORCHARD_VANILLA_SHIELDED_DATA; diff --git a/zebra-test/src/vectors.rs b/zebra-test/src/vectors.rs index d81357781f2..028ae6ed393 100644 --- a/zebra-test/src/vectors.rs +++ b/zebra-test/src/vectors.rs @@ -4,16 +4,16 @@ use hex::FromHex; use lazy_static::lazy_static; mod block; -mod orchard_note_encryption; -mod orchard_shielded_data_vanilla; -mod orchard_shielded_data_zsa; -mod zsa; +mod orchard_vanilla_note_encryption; +mod orchard_vanilla_shielded_data; +mod orchard_zsa_shielded_data; +mod orchard_zsa_workflow_blocks; pub use block::*; -pub use orchard_note_encryption::*; -pub use orchard_shielded_data_vanilla::*; -pub use orchard_shielded_data_zsa::*; -pub use zsa::*; +pub use orchard_vanilla_note_encryption::*; +pub use orchard_vanilla_shielded_data::*; +pub use orchard_zsa_shielded_data::*; +pub use orchard_zsa_workflow_blocks::*; /// A testnet transaction test vector /// diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt deleted file mode 100644 index 12363c3fbe6..00000000000 --- a/zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt +++ /dev/null @@ -1 +0,0 @@ -0102f64ff84dc5109439101084de0077bb5ce08cb8f7cc68dcaeb862179b2fafcaa0968c7f9a8f21ac5986f13f005d7f3888290bc9b09caf7fc937253ab8e59d541c884084913092d7f3c97de44c7013ed95739af1607cca7222df84331dd737c6bef03bb7758d4ed04f62cf540420e404f37cdf167dcf12cd94213dd734a398251f1073231c5188c49f9d331eecb08514deb3eb7b8b7f03865f1ce4166ef2d3df00dcaeb4c186cfc297bddff71146c1eb17c345d45c90462ed27f8b07dfb07ba8c915f6ac50c03769398927c8a56e9d4aec36231b658508c219cea5966b42b955703443b2ad6ef9706c8c7f27c87eb015388b740087fc43a8b9b4bde0197e9ad108b71fdd55ff2a840b1517090ad48aff6cf4226c9cec54d87499f1a17f7187d91ed5cb55e3d6a6c6e1d0c135393ac610583df0e8a97588e8b09d46a1428578689a9128638d855c495572c6ae058636e67c8374a46119e7bf8737c2d0d562fda2980b7b3f408473ce4c9665b6d06fed171200bd4b61eb16f4917c8c7fc4b3228f709d58532b5f37f3b74eeee515f0086978bd4a36805a44d03a7a179874cdc23d70199bb537739c651b679f674dd8a000b3d463c970a25d0231737056a65250da25202ab2314593130e2beec80a3ac32c767546d8c3a610d4025b4a0bce356bc9045686bcf144f90af1f3b30c7ae4b55a5e8ac881ffe0119918eadc29ddf285b1a13cc52d99a2c6bfde2583d86871a97ed0594501196ff313fcd98cd561f71180519ee06e1f0cfc8e47b4e2c6d7bdd16589a270c5814cc678d849947f101a158c2b1449a52daf00c515a820866b0e7dd0019e57038418e4b2b06131f8494d740dc974275cdb735b79bd2722a48e738fef702d00e11e0246d4e7eac4548d30f3fde472dc126338410ee5899b5e273b9b026e871da9d8b7cb6bfa444f8ddd34e11450f87923cc26535a0b3d2daa8848b9670e06e95cda7f219c8cb330e78ff24ce56c23d8582e20a20166d58041a0e41138e820e7332a154885684fc77d2e7936438a93c056898d8f1353bae27282f07a41d74a3a7b0163e57c762e996422c5acf87ffab7b1e2edb2d47f5b28968ed3d0b3dbda06c9bceda461f5998089ed43b5b0bfa0fba0f2933d02df6ae05962cead52f8aa2220723aa92f739b89d2aaf3744b93f2ef6a49781e9a044ffaa9ff31ae6f60ba5e405c87614c2c4541ad303ec310b64a61ca1aa66b618dab775c912736d1753f11d2bd74a4ff803e0eed8bff89e007ba98adefc3efe574b158a911655843390ed16b07dcedc4e4a5f0a8d167f8266990a138000be7e2c14004e101feacc5646dca08b8376c3e0052018ea057a8a9d5e24eab98c701bb68409a7f3e87fe27815a54bc1f892e1d069ccb3d6afd4bb4eff17973f0dd50127cafe1008dcee7aaa3e2673413686d41beb8cfe6265a2637a2995854ad3d0ea8f45cd897a3d1c5a157eea343808b55f34f6bd6dc401692173bbf1aac151ddacd9c48f2f3b24ca3ed3be1c33b3229397d1d9ebd27b7f4b6909b25fda99948a1f1098d1fa7bdb71d7ff76a6f4bd90893c28ac01d3e2efa6a6aa70973997d33201c686c6a46c5435f303b681c3b102d11b0aae0f6079361367fbd57b3d50c04dd84cbccd03b9ae8cca7ace3c274ab777c98e5bd2688c0994d9a713136037c44153cc81334977f559166be70b340f4cb4a4868140772e45caa683e788205fba9ffc7da98a1abf0d3f9bd44a74df9fb99458c514f7c46a82ceeb59d7f3f3bfbb7bab7af288dda9191de867583a6ee6dfdd363f7362b95fa35ca0c11561b3f42b032d7fb64947d2168b1a8d64b6d5d8e1d97e44ee23ccd7f40813b3fcc83af3f08af9ee109446c58864d25057a30e1caf9e47468a5e95782a924eab5b0ddd924c1765b9bccaacf68bc1864f480d0fea8312499a826cbb6d9f25e53221c08c9d3ce7a7c4e4398cbc4d4c24401bd9aaa05f8c595769546307107436e130c8b6b0a516edd467cf469de144a960786518b016c28b0d28674a4c33b2c147e03932d6d4e63ee94c761cf8297b2d2b674b92a7f1c91238be150176add70b889ace671fdc3a555501e244fc0ff923b8137f65d8b33ece914d0b44f1aef0c66fe203b3caa7a5e36ffba77ff28970dc68493529037a0b2063b8fed97db90501b14a6632af91ab764f10d3af67a9c2cddea55cdbae5b3479d1e29fdfffcd330e184983af64fc385bc74b0f143abbf678246caa336caf4338cee7aa7fe8d6ad482e0826e44fcd866e6627b6b94c519a6cb7e38917fb1fb2db6fde0804f2c05fe5b0fc5d527b751085ad03d5d7be72ad2505fa036ae16facffbd72b4bb085f164a5db64b9812b59c4c66c11ba2271a337dec20430cb5fd69be8a153426bb140ad805a92b31246997de350030000000000000000000000000000000000000000000000000000000000000000fde01c8da8d396bb2c91aa1c53d4fc0b4deabccffa42bc5c5182fc0c35992fe1230cb6de698088179caad1190147b03a376902de3ab7a9823f0e5e82f38c2edb2dfead6e762e875633d4a1996799fa16aa81b83b84a3fddfe6398bceca7eaa21cdad24b58c1c818e6fe9cceea1708da88d646231ce8d5e497a52b61f9823128904411a57ee2898166d24b9a4615f4058f885dabd6fc084380d8acb5ff5667212a73e2869cc85ff2ece0404cf0d619c988e23f584f48d2f68ac87f5ec7094611c1cfd953160ed460c799d1d06f8eb06e6aa25c1191047a9a263a41061f2ec9f0e2b1bad8afc5aba631e098ec4496e903bbd86903951baaba90654d8f70ffa916269b01284b78637028cccf43fc213a2f911ff36b3ef863b67a4f508bc4caa2a44d37ca372b70c88f7003f238c8e6ba280c0c64be9a5c2ecdd7a58f7d6cc3e571d408c9dc86f08b1748159ac2ed652448b91cd91a1c4b57bba5b3a1803f85004a01f3f85ff96e5b8a7df4697bf83bab65da6cfb674a909540683d40a5ec2f0cde58fba281f7ac21c1c6d4fa5dde12aa9363e851cf0377eebcc601663ce7aadd2651ac6880e0dfb0f3ac08049b24fd53098187c10f6fa328d0ac4b276b2f944ba4487fbaf6a7a104e4d28138b0051efcf0d25327a410b4a528904c4ec336085f59c46990d4a08f51cce3d2c7c9a8cae3d73c64d04d69be7ec31bf27cca0900c0fa40f5136bf7336fec68439974402e9c4d19c14b56207543ca2064f0e286d77c535dfd282e4366a4e7a72cee84931d8e2b23d5c877f69d737612213cb853de7e923c738a325cd18d477a1992a49f824364dd49377addc23d489aae0744f84f11191e8b719901d67b93a55d53eefc73a53f226198ac264f2d4cf7a9803189ba8b93341ea87673f49f0fd8a1541cb55317d38ef932eb7ecba93ed0f63e2835a1c021b5ab334a49a285db22c6d86f6b5ce1cf1dab2e02054056e125f7c4529d0d6e1fcf9af8182103ff1d69e1cc11551a61c2af4bdf64f3c739e859fe04d89d3e77a735a3814a9d1f17425bd2e1e9599f3f4cab6199ea1532dc9a1c6df31241c42c01768bf8f57102c56f4aeead066c9cccef794cb76db261cc905c6c88d4962491f7ab1b039c15a206b64067a8c835a0c5bbd702f0ee6879b7e4a6b7f70550ee54afc119e3d2c26143d9b258354803916f0014c5e3d97884beb5b7732972f7524e4530a16166b230b2ea57a8412be3a897e6a803cb5e2e55f11f36da23f39b189a18226398543edfc75246772fb91a40931231d917685bb84abafee6cc8f3a57b27a05fe2a1c99a16f6d0428e91eb4e9f33158e2acecdc618174a15575214b1ff8778386b9347d9e2703d5f9eddb3dfd8e0e572b38a95b3272e9352ac335a57f52ae96deb9aab5b27dc8c6f9596a6e0e95cb4cc60c73594a8d0fb22e9e46b67b6c3be5cb318fa2fab1c2b170e6bd993b2c5635c8c20eb728b2c212b1ade7f91ecde128d6883e5ea6de88651bca91311142c694e8fe056c6288af6619089096e6afc0cb3d72746225ce8a68da610b6f90c6f0feaa0418b8ad6c3ab9ac72202a38ac65125ef2324939b0d151a9c975686b8dc18f4c6b6d38f0ff4a05f51d5a59f6c151f55159a0bbe8047b5574a15cdcc1845ea12b09940a6130f6de1a53d79249e1bc779ac2a1d59a81450c328a067f99533fa2aff175361dd0a5d920dea1c076539ccc8b2b4a32d97915df8f7ce9187db77062aba6063daecf1f8bfb1067715450a9dcf7f89717e80e1bb7ab5d6b1e32176c46345c5a6850a01622efa03d5ae32aaaccbd611be8016981e95770878ead086f25679fd24d6905a4f6f34bef7f65006c7c4a02da6707da8deb2d8604b4194e7b9d09f6161b45893c2d2271878ee02c69e037f04334b0b8ff4885eb304de8455929138ac3a91e46e5fef4fe10881ab47dba9fe080f5a98f6ea529ee8f92aca48e375c2ebac85d2a13f3899a31f7fe9260d7af11f519c2d37558ef21786e79ace098793f6659c25e879cc399afa636bbe45825125fd9f08304e5973234bebc60f88d26b2a9ae3e992e0b0c451b5e6a2779d41a935c91e764e0e560a5b8483085bc58d3aee3e8361a2f6939874a8a60f965cca82995979df8c2ba675980391cba7e56ee06e0a0b12d99b67ede68787293e80367fb7cd259339032606ecb830024cebb03c6133a0f6c954460b7b72c1dc4e96b7eb28d48974011708c434b6acf1288392cbf4a496e0bdd02594b7f00a08bf9e13598e80ff7202a7d9effbb05044b008ca1ee5a95233f97d1ae56ddabfb8715fa4690a8e820e037bc10b9b4e487c8da70d29ad5bab643afed386cf4c6e7c73a9a194b1e8285adf04271754386de5ff4368d92729721e68d2f78113c5ccb2b7549133b2f3422e22bfb7bb765b0093fd3a285681b8a67579e103b665ab068fb69c31822444481c205fceeb7bed25b31aada1aaadcc8d293fb7a4c9adeeb26e8631aa6e3f1ce038474ea1ef5541e6b8cc87ed766cab922f20005f651c2f2a0dab1e52b11bac4b6758b0aee2ff13e9127a27797307ed2aa6ebbd0d7a4a383081faa9d87b2f99172967f2299be5eb2133cda4e23bace6f9bd1bbb1fef7529977e79b57305186af7919b179587392294c5a79deba1eb666a0af8352d163f39008ddb0d798b119abd911887534769ce7843f4b04d5f5df5f9a664bebec403c71a8e5f61558802d71c57d58fc2ddb597940002107cbbac9efff99244993915af70b2b84cd69c1cdfbefabfdcb827b475ce2fa250b7ae63c11330f3d12462611842e23d98e7c438dc3c5b2ce7abf0d2fb78d93853ba60026097552392768a8f1f5b2b7bd6f67e36ac1a9c24d1bfbb35e03553ba70adc593f43153be1c34b6b84f6a1d6b5d024516f1841146ef0d5777866c1ca4a6b65a6dd39266675e741c2d4decc167d69521003738524900db7a1c12ee53d2d47e8e036b5facae6edfa342f9668004f120fe377298fd21e6902370ab7151b168ba26f7631aa3d0aea9fe5ae06345af248341138532d08c94df599dcfc8b45f81fb81b44f1a560dfef2d652735393f74dac73043a697b84e8607975a741f8ce030a208ff17444117cc0a281736cbbee4bdfcd057a5d99b1467a53fa8812bdcb29f58ee4bb5db9649acd123f86fc7758e3d4e83ed1c285cae0f41ac5830ef455fd956a3782a363d52dc40b2ea5dfb97ad507561acb7219c239f85586b9ad16b162618a7986c6d50cbe63322c7666dafff33d0f01ca7e0b7446cd5cf9cebe2df22535d68429c01ecf9248a68b563da4649aa97716473832335c839af03298befdf6188d626bc6c15a95a135e776c0e3b3e31f81031df372caecd35b657ef177f3c25345901f36faa12946fdbe8c9e9d18e96c922b07adf282b20d6048db94179499e86a6ac4b9a77818fec15c77d5e8885037f7032dd97b1a0540b818396f3e54cd69d7fee624bb20f6517ffe1ef25637747a36390e761d50b36f17e8e13a80f69e477d4f978402a0f2701a11174e92c8ba147415e256a66a7fac0dc391de6adc86f35b8fb635e8ee4372de57bffaea503e351609b9a6b3c8e802fb0757996f9683a51e0fcf90d21edf87dfc97dbcba117759b9348e6cb26f8072453698ce8a5c7d6330b0cf05ba6b1c4a5c50b104b5db84fa560859702da6376682315f04b9d6c78f32599d4207152753abf6e4acb3496430783029f4ab96f8d5a8f9849ed712a47137d0b787a9b06737e37ec0d296c167626b1b0a0249d247d99bdca80b57aba8d9a3fb66c462a25391a0869c1d1e4a8b06890670be5e76a33d65fd72e1ddf8fe9d29868a9283f3b8000d07545adde0ee56c9320eb12bf6deb5bcd7d12dd44cf7023e40903877ee85376a2e093c9cdd14c1c629d778b317aefb0161d0ad3d2afd885330def6a54a7bcd2fc52160cbaa1f54e30a0c6ccd39ece0aba64e924967816ce83e2a10df7b39d074519a28b247f8de4a14db6eaf37858344f849aaf8ee6ae343d1e35c043f6e5feec4720b18b30b2f563794f8009e9ed757a57eba4109ecef5f50d79980c3d934d27df884096f3bae9c043776465e8717593d3f2af0da8fcc0d373f2400f653922e5bd69748e1da0d7b0716f862919ecf275b57504087f7329920814f69525fc78d0e9a4c24d6fbafff037088d316a430f26b59edad495848af45afd17ef4ffd83162b6c461f19d8a9a364676950993303c651713c6d38d731af77f7aecbd77234dcdccc179e87458d92d844163587511d7cbf12778ce64361747fb5b5b44edc41330b96c654864cf9b34743491e3566cf9836c6858a3b3e9a1de64d1d45a1db0e352cfdb870a2d46a4188c5d407d9175b96f033bb02122fd8de0f2007d377e6954361dd4718125ac7014cae2a7869f2ba25f989d92d7252d91337233af189f0df4a25f46a15563cce43dd330fb88275772b231fbb8bb5ca4d66d48b783058e41b16a0dde1e8cf6347730f1ba5dedac8d280d662e7936d4209a002b0111956e05c945084c09313d102827eae0f309f29f0fd5207d0938709c64567ae7b3b3e506cbef38a52e6eed3bbd1e7849ecab54967e967a810c273fc756d960b18ba1f0640a38841c0383be9b2c3d91220ba0349fbee462df23b064d1e32d4b687f82bf6f10531fec8bae653e1f382813f4ed8a970c282a9493d92d2335297d8a5ae39e01eabae08582da356df32fddb2d998bb9e932e6156a8558cc4f6a70f7aab5fb5027e3cd1aad964549b411e73f3ec92bd47f638a12622b949ac37ccaf992566e5496fdd5ccbfcd58bcdb01d4a504ca467dfe05943df2c29d580fa15e46a743569990d75bcac23c00109543610b7cccecbd12382b4b81240cc29dbeba81a4c19be8c2292e4888abdc198b82d3dd22ee172dd744e1d0675b9da2e8b0a0a47eb3477243824719227508e8713289fb33b701b28279e0d93b27e6a0984074eacf5bb470f00dcfcb7ddb72d511326649bbff5496d0cca565e7e37f1da82801d726433574bdd062c77339d84a1ad3c670a6b3b8097ad502ef33a7720ac977c01e7cef0ba1fa754a6ea4bb0f184782d9f68a60a7fa9455d3bf6ffc031867a61226f38aebf70537e21677def751ba12cd9f2104f16fc1fe577f90f28a966a155def039cb238c17c2345c8f901df2cc0e215c55902a55ddd2b556a4944dab32525febc965059739fc035118a0bce44d14e59efcfac28fc2975ade22123a6c028aaa6ce4e2fcd3496da033c1f7ef888d250afae83871f11094e0826650b8075f40985e6da80ad369f44449fcffd763081ed892e07264c3e6e1934a4a87b89b10fbf752aaa62d1382e0383e699897ba3f0e4edcd0fa6034c165c67882d3e913624174d045b79eb3b872cf2aa3319eb1180bb9476427544109cecfa742b8c7743b954efde438e9314fd7ba342c6d368394263dc65037e476b2e41c645c5626afad7d66549a33b015a1a453975c980f09441f9603eb45beeda17ae9e6806287cc5845a877a2e63f6b3feed34ff8f6a0dd42042aa0e352056fcec0841d7aad7851d82ee71470c8e5bc96d0440ee220054d3f0c658dd94a7363929563826dd3d214b852f08a86faeb38670aff50452fed33783f327b9c8e874c4f469e699d3701342003614c5a902e9716c1832870339c8ce92ccf60234596e9139c89cec76524ca078e238345c8160fdfc50519c64a8302a22d6a71118e10ed9104b6768f76a510bc97149d21ab35c06d632683b40032a62e3d0bdbdf2490351f69af43c11d3dc74da660618dc86b1a8d5b76343eeb55585326e8213c879d13e8381d3fcd2eec29a9f60fddb94d57e4ca2a51f6b2e9e4a7a628a800de73e9f07201ec902dd21250390a4be41698ec9a0459aa7722016e672e30b1624f0aa70e90a3ca6d5f2c0f9fd3043ff36cf1afec0715a8a05ed7d1862521b29cd2e24de828785f8e9a012ce65efef1c5fb18c65948bea4e2db9e06a7371bcf0d970cfbc7450214c322833558ca9b0efd80cf5e1c0a7d2bf2313628ddb61d328a28a5fb1fc2034c66d4902fbb84027c310f43a84f7ee386c3eebefff231188ea6c70926ad0faa6efe4c908321f75763896083f06d693cfa45febe6230101f26738f8f500bc26b68eee3363d35a5f20fcbf14fb784624fe5b088cf6b585d25f6a6cf81c604ef2e0f5cbc8faa01cd1a35abeda3284748e77d0828750166c600dc3e2e428fa66035f4f506ee1114d7a2116aa538c3b3219cc56cb4e7d97e553a03a9625f88f9bb09dd379eff8a96ddfdd0c5a189dbb13c705961302d42029d0b02b5206bc03f513e5b1478b18bc3dc6dbc9d13c14f0edbce075c6c68eac168166df8dfbfec5649c1b210e939b6c93ebfc6da419f72781532a884c6d6f603e320a13425a6f4e43608673c284bf4f01a103023a2645f25f2d1389f16b77b014520032e25a8d71d6b028fe7e20f53b6fae1e0635a6084af7b92b25ad3db525329354d0140a25de264c8d4624429808bb47e8254a061b294c7cba6fdc07b9fd8671cae0369ab29f9cd1bbf490b4721c6e00ee53a811271cc7d330bb18dace703f234c7901d6e8f0aef55f26f3e1b0f9d183b356e686af13cf80dc9298be00a62c0220121bb74c321d4dc1cb0f61abe09d992db9bea3dfe5e2c58b202fa479ef16b21939b3021e0df91a4a7559a48430113ad230c506a1706cee7f743e39a7cc3bc3742be1a65bb7c67efea1d478405681fd823c3140a67ba8d2fd26f7cf49d6f2537eb484bba4796aac19514cd17bc6ffcc0ac7a92c3b69e8e524a6bc9fea3dffc2c45aefb52c3f8b1aa4dce3a6c9ace8112189a8cd538e36934cd600ae2b787b10b22b0b533e60e00545a833ae84bbd52d1a64966f9ce5eeb16536ccc6297575e3e8d007b78a82032d117ff4b27c03e587d5fd5f8253499d6879464c4d2b8d6780699af6625aa41068587f9cf105c94bbb4eb7d03dcb16674ba10d7227053a05a026ae036ba2e68927d45bb83bf0b5648a9809a346127384addd1b18690b1229c1b560f38b0434444314bc25005b2ba7cd62ba4518d306c2a5d772397714638c12f78cec13340f870a168a125bc31e44993e1b00fa5f315164e57978dd4eb1787263b9ce75ba3ba239a894c15465b509c58012963a55776308874d8b0fc9548c5149dd0159c642685946a2550b4a0288dec6b756132620c3a7a4e247df3b9c4c5130ede90fd992c628009417f235407aa2ef7acfb4d131e259fed4801d0c18d6928ce700de833b34f11c2c8d3c2cc12fdb66630f23aba5da65f7d5a23005afd27075351324fb463159364514deff78f3a64fa9b665aab0e6e40f02d37af25ce9f210425105cf6071f3b22d37861bffd626dd106b5a0db3cac1d9c7aa4ffd511951972f5b469c3d7d59b3e526eb327e18594357618998f053528d7eaf2fb685b300b79cc9fa8cfe40f7cde73413bb384627d838055af86c049cd4524c35bd47dcc3516c1fc4c9d1b339ec33d5ed8967be25cd02d5eb4b2ca9fd4f19789e84b05d13ae7df4caa4a58cf7ce7dab1f7540a417d9aa3541272c3d4d1b37627b3180069336064ee87e3ddb04d3d29228025a485014b8c862345e888b7562dae6f0061090aa95813e474686ee063e5ec6283f885cbe98faf2f7d169888f0c90866a0694f0ef69d2e99569128af4d66e653d5e2ce6fc564fa4c824acff822f2ff5424d51b17db5dc06676ca626897d657c7f320f423cc28cd549a1387962220be8acb0de92cd2324abe211db3f34d4691c700a5a06b3d5fe53762c5c9287a5da2e9ca29b901cebe1d8db459cd3d19023fcc38094b5f55804028220142c6b1d6e11e1c127724c5743d5d19bb0e72eb5693e64fd95a5856c858c5a6e1f5e61c2e83e6220fb23ab1479947b01220116ebd4fd33a812c7ef61c3aa2caddd604923a3b994d4e542a3de3fae043c663e83cc2476e1e50e22ee1a27c1763100c6b50a6a50ac117292ef0e6dffbb8bbaf91f8db8088b9b4d9b776060eb2cfb8743159f1d540c3b9f53430e885095bb91b4a1b9a1a807f6f7ee046aa638e391b2e0abd8151e645cfec2dfb78d79cce947219772188da2ea74004510fa4a0c7806c339c56633f6a87d427d6d9f1f3e92c4181d538bc55f0c2a6486017dd3142edc226b534059505b35b20d2f13e38f392a4b1cf429c87603e67a09879e4e13551081f4beaec7677fbaa36a8e602033e2651bef0eb9f005a809d7f419e1d4755c3c206f8f63cbd69efe50d69af36fb9368075e83b4240e204d7f30c41f55161ead300ca933bb98b8c21424191302b86750f2a53dd2221a59cc0e8da30b865bee386fc1d6456dcafc21f2221bf961efe3a33b3e1c66e13386e9fb5f9ad96ebb8f7088aaa35f0087497c7c24b88859e88a2cc8dc86886bec3e965c159464a53ee1e1681a26368ef63d0b3d189a7cb8b955402070b3928559d3147f0ea73931fe6a8e18063cda1c6cd95b311dc58969de5f8a9d9f7c54fa4fc5213236f5835871a5903afd070055200075e63611f95052343234191902898a12ffba42181547248f190e58ce8a48c8d4348e0c1ab5d9b6e08ca6aebc98609f133b668b7305119da83fbfb6ba060eebaf649a2e8872c4e543336a2beddf1566e0c68d324b8793f970888b263f0282d58b1a4438eb5817b3ca4996c4936119d4b83bf0c2df2597e3ebcf55c107b9eff67eff5f2099132f90c7ae1912314f00ec26ef449d2a3b61700dfb487e51fd210e889f19157746ae9ce72035fd61de04c1f2fbd5ba6b98dde7474e459f7a93aea5fd19a33119c794d19a0689d5e20e94a50b26d82c810250d49c4afe06dbdf7e4c4d295d3e5c5d3e473f62fd7fb01a1fde3035728c0d1505256246b3efd5aa75ebc0bd903a8cc3e16ae17aa40c535d964f7445e8dd6ef1c2ec32f38b689931b3b6ef1e0738344458ca24305b42a63af5bc808948f37203a84edc8bb9405b5331e8fa04ab1d6d8a08927899ec080d7ee7574cdbe05568b7c2f4c595f8c8aea4a41d6267d51825f4df1330266f1495493d5ae6a1c004fe14693c397c148c0d6e63479ba0cb18532bebd7f8f50992a930755382c1961237a61af15645d70364feb48e3cfde38e9fc6ca90d9c30302bf17044dac3cd979f80922a2d469977f2ec1c047b413453c1cd9c05ddcb39bf88e66fa6a680d4caead72051e2cdcba19b8a29cb2c26e6613c7f3920cef1ff504043e85911fe72eaf053a2889a635a43310e6795a2e1434398d24f6b6acc68e9508db5d343285eab0c63b020a41e2cfc9f1da88093bbfc9235837c67b11c4d5bfa210c1a507a695a109d88bee060de8f99c66d722c66cd51eeaa696a0e4ca3bb10558e91f752fc25d3baf1160723e70e063f5b8dfe0c3092b119be79a7dc9ccb83e423dcd8f4b6a509f8f6bcd94b5802d363f67e50c29a60534a8ab42fc0ea7797b0de625c0920cd54502ee3bd6d5586732cf345ea3b970bfe0d4078c6674ab0c0d941603c21d4c4e983bbd42cea6a588801126a28e23881004e73c48166ae267a23706289f74e41c39e4c7ea6c0f805fc09c3e0a1197c33bda3ba04f0b441c45c85526dea6abad0336fec3d112988ba82536fe8f2e85a0b33a09ad8b52cd884ca4182711c7d6de7a8d596fa92a5ef5f4e4abc66d8f383d1d883aa44b5109df452e710791b953f93d6be6173bc9ef191618e601cfa6d01a99da2eced5e26752e4b1e2da2dbcc64ab64e50425f1075ad36f92621575e1614b8b714effcfd7597df89ae6f6cab61c01d3ac40d5dcf318bcae224d1370135b502531e5d5f6862b26dc71e0a2c3cb66d96f67079f25f64231b7ec27acf3dd263bc0d2cdaff914ecc23a43dee19ec4799426faf5945ca2fae34dd62756d3d5f3114ee21643e5e96597e6da14f278e57951dc6152be20e6f349e4bbf28e254ef2b1d44bd036827df815e8454050bf176b1b0094779e1274f26564538f000a67cd2aac7e2d2bf7a3a66a3f0e9c832aa6447baa8d204f6c817f584508e8b5df1b5e39998984ed0af41ed728832ad12df439e9cbcc4d9ff35121a39cffdd9afc8fe5625a5944d775498b5553d934065af87a336c03c20d9a9803d5cbd57b02fefe7f53d9574c7fb75183e7728a5426c8f3588e975f1a54f59fc21d5324a39fd3148c5acf4931ed3d2a6787d3b7ae80d7cfafae1079ebc2a37fab898d134961ee0dbd9a182fd1b46f1233a177acad1a848a5ae0442f9da3bf1aece48986627a4bccd7385fb4de9f739939e63e8e53ade2c6fc69c086cb63b39b63c787ea39c21e13c272e989909cadf6884f380ac213feed2142020498f4ca7b9523b4f9ea9b1a802a99ec0c4a3bff5759bb1ea3a2f896932bee61d747606e845d194250887625d006628cc02c88cb2147abbdfdccd9d7616332145d2c46c2e7d29eb3c92eff6423a093e8cc9e76135af267d85d8e0e14b5cea77eb48f4ac789b170349b41b3ad543381e00000000d561d02384b2fd9e55783eb92aa96b4c014903d84b62eb9e600983740cf981a5b4db7b15c1bd7b372ef13e2f64bfe620d4d69453b8705140065aa14e9cab481761df6f00a2064f1a4d507a12750ff7f69367c12e7fb8e1929960d52507307111a1767c01ba5d4d8ff3270bf56518f867fe57226b830dad596aaf9f831534b02f0a0000000000000000407cf0408e2d1a842a1f35929176d35185aaba2a06e8a1e3cdece6e37b806c832a537d7d08a39df3ebf49e122f2e90cb2c1cf8626d9c2dc8d1659a526685dd18 diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt deleted file mode 100644 index 5e0828fa21b..00000000000 --- a/zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt +++ /dev/null @@ -1 +0,0 @@ -0102c0d3e81a23d2e0765b4447d991c1cbf224af1c2cc599f58af1180e00465b832b08151ed10e3b2ae0d1a852f4477002bc75c60b7f2bd4ded791ab56a720ba3309784a19ed4751466048f949d6e625b26c50472fb8b017cb8a3e3658b5dac8b238ac976af60038213367ef3a405826c97f14d27a90dc1836983c06089c6ba4210cbe8d85d633efd26560456b8c2edc0b90bab4aa9a141d8cf1dddff75b6a43213b786d2583cd4aa2a3fc9680446ebbff1ad8cdf6a2a34cb263d63c54d8694ac0c29a739ff8b7548c4b5f9498b16263d37d30564ce42499240adf384b422a50b651bbf579ad9a9c7842616ba6c485e254ad50664686f7eadaa6d3611683051c0f5a24da47bcb31ac923eef443d7d65e6e2c10b783a0d2b6d016c15d793389ee6f4e39f4faf20c34ae91823908b5f7339c10e8d9796e99adbae52f41e15a4261a719435b510c90f9a09edc01cdbe431b0606f78060bbf53ed7ed82db9f8185341480c17a2f4325766a3b87763323d920a3acfb1fb926fcc5ad41bda1d50fdc8449732cbf9f6bbec87fde63b8fed08ebc7aedd923b5a8f9a18450b44f083ceda69049adfba1ca3fb9fc5ee805f8ba30955e7420f07d2e5a2137116779f86ba6841cdb53032104db4fd4bab9e933472f55f4bc665258699918f136f15b2de84a3f43a9f80c908831946fc80d013e27e230e2dd471fb06f6756d13389902a55a9a931754b7cc6cca87b9bc867388c224de2165301520031b468b999a84122bd06e784fa811870048c46c11231505830a52bd8b4263cd54e48641fbfea480ecca80d1901ab63db9094a826960dc80986dd711c5940e3d9b0e711898064dab11f6198a809a99ba642a652a8e179d780c33dd51286fc64e0acd7a41ea387803ec26118324a006a2308a34fa119840bb191ba7e5727946db46de4021a405188a98c14956719f68b67b395b9c4488c0e1eb6d3a299f46e97908c0287cb62f0eaaec505d892284232fc3a3e022f58d03774b179cc1bce6cc5c033d051e4fece33b9abc21497d4616af7f99824bacdc6477eb1824ee4fbe798784a46c8001e73084932df28d4346162d1a138e09d0e42979f1726b66f37a0851d30253e70bdafbb60c26937452eb2968796f76fd12803dfee2c23971d55883e41ee5293c3d4d95d9ed0499439252b06123a9d7852b1cd41f43937ffeab28f08389360ee0507f6d78293859769689195c343f9ef56602096f8c166729c125660612b59e0c6064092a34bf05b3c445bc05000c212c77183e306a45d91524bbf9ba8273503025376f2123b123317cfbfd0e8ca8cd2a86624dae1fb6fe921dd3cac5c027e9e9422f18a83cb9c4e4b5543a755b7a21d4f25b1f6390b7eec076416dd2f08be8edd426a8a8159fe10218c004ace71b03edb23b6ba6e2474f0631ca29f171e38a26bf5a0a6e698cb9d4fc87a088150f79bee0bb36e8b51201d648fdd105851ee93a46edc7c1aee3eb165937b48f8f20f94bb9ee17a7cfce41bbb0b7b68ecf90b0a16595f929e6856ec4060c01bc25509032e2562370f848948c824ef267fe8a84bf118f278686e8e74c474fd09f8e3d27001acd237d14af37e0fc8781818940a94e9e4c5a584d9aea2f547fde687b104c59ace3d9c9258b0aa83462f32c78ef3194c71cb631e2180edd2802eeff007ad1b84cd31e23ac44302c656c45c438e896e733e9808863d6ea7ea8c911c0afb3f19b526918ca9e253f96c56da5ce0bf4af158f66662b5e4af907e7accd141edbc3d7be4bed074a085d2ad0d45f5379ba67c8ee2768bb6a99c8cff9360f7717a0ee7fbdb52f4722c76a418b4e33c7b984a6d221966a28fad570c23868fb5e43195b1892a7386e3a6c23a312e3c5ec913abafb84bc259ad9d510cf9be8a8a24741ca58c51fe3614965a3cc13b9c665d2aaa31ab82c425756cc5fb3e52351df85e416f129cfc05add79c079ce8ac86fd38b67e7925085c682c4d150d3811ef546aecaeb4e49933f5f4145da11e3a6d4a18325d021fe2b0aa0c5b4131cd3dddda220b40db1955ce2bab995088897c73b0869bd826b2da7abf76db268d347ceec85bd43f48398e37e583dc19d1081818249fd74a29b5eefde4d6f646c3e06a0c69cf86912b452d02ae20e546da59bb5dbca0d784596395ef4156d41529a3e3a3a7404f648f2018cd7341b259b87c473e7c98af06f65d6a38b3afede17b2b60cffbf3d3fb98bfd3a96a05dc6aaf27b007070915290e4d9acf1801688e0c76700d17e741daddfdd614c3931ecc2e0ae45816d51452a27c748c74cc9bb84d5a13f46c723a7c31d03dcfeb693cdbd2e91f23f980378ac6d85ecc739d3b8eb08f6bea07afb88d91ded89331f22cfffe6e4b8fa22719ab2021cb038930b1115245d6147887dd73d29f030000000000000000000000000000000000000000000000000000000000000000fde01c391ad0635ba16608329be9f343a3fdb2a99432900192df00743e0c442b83812616474e4eff5164e011fcfaacc35d475e800ee53eb6f60ee1393bc6c5098a660a9e8c295e432247ac35dff4c5e57c6f218eee247412b219b12d944c4eaa95f89233cc920ab30dc28a7adc22e01da2d30e825d5f56e9b4b3397ae0ac99d0432e2453b2d84ff4056bd5d56fcb227da9da9a80b490d24af30dd0b0c868a31cc258232b74c12e7a0999bb92ecb4b3b4ffb6e595c96ab248147c4c1e5f1bf9fb2d6801cd25ed99af610690ab89f1b98da34e9554cd9738d9bbbb222537deaf16c49b163b5ea37028fe4b734ab0b0780de513391e672f13a589e4a252caa25607c89029b426124764ece778f352f9e9ccb556f65dbf44ee0de7a6c53ad9dedb7187b9853292a528b6f00e5e6ef0487f30ac7c7d0978658e1ba02e137eefa324862d3191494d469e02eff1e9133d41bbc94ccf1eb8fd6032da18589e48dbdccbafb3801ac1e039af6f64c07a94c72091ae901c989d838ab6c7cf83cf7e1a738163d6f73108a498d71729dd2f831b6240c526028eb5c355aaec20d2657a8490b57f6154b42b89a3d05b9ebde340603e6df883ed8e019401bc6d69df3582e741b4381dfc23231a576bda3ce3bb3444e9265a0d42d27f8d77bdcb5e8d2b6afec303da7716bef579f0181be83f97842ec750b4ace59d8299c581a10348aaec6777dfe9c257023877494020be3c502284f6b573e0fedde1cc7dc22fd041914abc490fa1fc96057fb85471bad007245252044a1c283b2a63ebc59284f611c3df6d2222a6081119f39af470cd6f4b97d92403cb8bd111c3cdda915e6ef0d00eae332e7c2f006c06de3378de3bcb215d016b0316fc27b9542ec2b4107ee5e25864757fb0f0230b271eff57cb053e9f0c8c46d022a25b86c00102e4a7cea0b71aaabbe6e11d719c37b5a1b844c377a6e4bca78fb82ad0fc7596d824469cfcdf7e264d3e15d15cc0927e877e31ba8c6543cd5ca35246dfd3e51bdd6761df7ee0609af12748ef03dc8b3cfac955f2da4c9b3547f8f189ffa1f2543a137a9a4534159216720a01d8ff0b5b716c8d7a98b6676d3a6af508b81e83656abfa20c210095aa19ac39ea68500fc021de9630eb369b44d8d325948fbe7c94f137c319a4b2d59ec5eea50a1e09a2683bc1d5b1a806cbd3d85d4a5d04560974ab6950d5041ec1574f888eb6ea7e09b0e9b338fd7946d9288d3103709895325b86bfc1ff34fab6973b095b834421a74e2928eb633679a6b90b3ad38b8ef75725528b70f19d3d151410bb32f5d536854db062919ed00d4bbc838b1e30aebb1a258d7c40a44f1a86f029b9c8a1c80c85e18e1d3f6011861b40ab42c8b31dc3ab13c0ab917b17ad70c19b8a08357598bf8a2fcdd29f81d35626b0a3dc5fadc9fca185ef12645dd608170d3782541a92bef898cac8d15c9de2281018b6d70349b6646fab7d8d637337f1b6df228965b70fa14764a4bb3d921fd136c8f4f774e0a06f9663ef83f567b8397c7edaf2e5029f5c235dd1b62f6bd8e4ba0e8f1b12e57d43ab71f494cdf71075abd03deb329619e56e7ea0425106c2ece9819946f620c37d3ec793ce9eaaa58c8e8976b611dd8759f579074ab694a6e216355f2f4a3e6f7dd6991c14a4368a27556a2388813ba5e84b3a95f151129fe7fd0e5427d1af1d75f6ebcd9c2fc0710473b3b5e6a51c29ee660bf43b0264153ef79b807707f01c64eb2a2ededdfb9590eac78c8d548b0a66ddce59a7ae8dcf719d3e18935051e89c66c2bbcd297b6726153c6e75c959bbfb073839db17b134502c28a4ff4fc9d36e461d34cb10a86ffda70496a013c83c24574e49e0d3393733dbb717af5505426e79a57603bba8d4a463c3ca6891e6b1bcca3709ed884c73ad18b40916c1bc0667368d909123e5f54a1cdbb2007fb698742dd32f13c22fe372d088c8f9005ba64f1061dde9a40be0bda86225a0230ca8db60a3e6eaf4be0c5a7ba1e6e116d3c3c57b4f7747f0981f8ec57d30186cd2310938e77a0239fd77e32cea6a0bc12448ed619a6a54bd4c12234b5333828d141a6de4e6ce1dcd9ee9aa410a6036b3ffbb0d88e17538c171bcf12e0b701d8b9037539be52fa0abf1087476f7e0153658736a6bfac3bd94ac6b28f1356b607bfea6b67c016830234a17c462cb3355caea8015e5ee3d5a6134584d9bcb13885371881727dd24ec2eb553545ba19697fa89c3416467622ac7b52a8afb9874f29bf7a53eba05e462edff09108429fefef678aee9457be5e8a456f66df62c4a8b50f3b72d6fd315cba6907c04d058033c9da6fa25c1b6976653ca394e29e2ddff093aa8ec6394553d30a7d3ba843beb920b59383cc7f56ad1d0e1bb1bdc0ef54d0fc8224cc3bb096665183bd4daa12d674f12709ddee918501fb5b0cb278b0f133cfa1ada3449ab884913e55629bac5c79913cf0bdcd0202978569f3937805814761a08cd4d4ccdd58a13073ae597679b69c89f570cb6add0e90d1be7fe67c0c9987e0d2cda6cdb599476c15e5f822ed60b0d33e0c3e0d0203ccb09282771df2801f52f666354aa8edc22fda3825d095f2cf2204f91540c1caccb930aeb10dd1fff66019e2b48e7b95fa7f0cc9e50ad52d10053f3f41e853869816afff327ce5c43421e5f6eec3f6d99ffb8942f47afd9188db334b1438e63a24ffd29e21737aae3751fe859dc2483df69a4967a4e10b0cf3f53c641999faac9f0fb891529c037acdf2b5e1070d20a54e35031c5f0a584b4f2efbce8c1c20d9648866912280b5a12613d4039434d4316584a0a8a509adb3bc413b9360a307a3941c661c99cd0e19095384461c465dffd1e86cad638690f4f18c86307d1dda2e985bb1feb09315fadbe0ff485801224435708551d3e511130b1fc5fd7a02f95fd98706ca81d35e49a2c155078bf1e7eaae6a89cd6cc7f0460a500a23812c3bf24e52764d4fbec95ecfd2e202ebf77afabc99ad041e65c6302ff423fac42f0f7a19078383d4eb99f8f032f4b661f1cfd3cb1747572d3a20c4dc0e041d3e678a659a603efb19576301833361d73cead609e4406edf18bf4cac8a127e8256961a8fa853339b9229d44381b2bb282610348055b58256143c2a0ccd5fb492f2448a9ebe4d376baa886a6d6fa2f0dc552801f8d5fe3fd8f7d0a58f1139c49bd3924345a875062d048d21e8d2031274630e1d73b1184f5b72a6504624cc666bc11b28dee5c3d53d9697c4051040e8c9479cb242a3c9688800e59d1ff32cfc4f0beedf418c3e97bc63b5022cdac17ed6944dff9749ddf01eb4ec9ed1b260ea1d568b9519c7376f284d972a4971437360847c42bc24d03aea97067b78e394509d54969b09009875313164f94b9c50d8e8ad100dfd618c21d978b7fd0c1ca73bb2e3feb0e01e6e71cf8134ca48c3b1d97bec4281cf1de99b7b185971dbe3eee426252fdbd26e4b8f04672d7cca39b198103eb91ee33dd12a456dc675ed51144ba738180aed03745bff3b9d066bb8a3963bdfe0717a893b2eea4f0f6a07e3a09c14148e2b607727e2c085ac226bb81015d813afd69db860029a7f655dcf8c345c242bb04378c671536f37299afb36c1b71eb917be095db17cf8e46cba1277449570586d1cb18c27cc7663be33e3a7507fdee5f509b57231f129ebe215765b84221b7ceb91d4ef6eb9bfd3e88ee52a011cf6ad1b04717ac89fae14896151dd84ed580792410cd1bddc6d5a379be22df14e66a2d2901c86b1937f7f53a6a1be228f43aefaed2ca4c5bfca1a75b8104f43c4200fd852ccae9882d2e87708e81f91b1e285839a7c40c794701558a03707b198ab21d8212b9c9a6a6d33433ac9255989655cee634a31626655f39f5258fbf39b407c849adcd3777e6280cf2fdc83f7bc8a79b942bae9f7f3108a88782f6ad2bc7487059824b73d1c6efbe1e639b5ea44560e71d0f89793f9518042200fdbd2cacb9552f1ddd324d54b015f000af62234064495725bf0757546da5ec28d33231398aa4760f4d0bde119282f2f3582e7cbdc3531b6e9ab1e2439f1c8146fbe81d11349fca0c9be2466d25637551def7e8c2c978250b939fd986d9666be895371050b136e94f8f560e6370be89ecced114057074d89a811ee50a3c31e179270c178a3c64deea1c7beddae6b22f1a2a032af6d2aa4acadb5a9665d28752dc40ed131ff38d482aee38b950803277284d373430d13a993f17451257c2509a8ace3b2a5afcfba55cde71915efef3da46782008c69c1788b1ce3c7a43a7616a56f26c1ee31adb88de1066e9cf24da758856c30e214f322973587c6833d52e62f063d52b0e8affb02cf41b762121982b360df0502703e3bc43f2c054a533cb7f6aea6c2744291c93a764d875f7fde5f313df46b122ab64fbe510905a4dce930d684e19012f024e8bddfdab0ee0c24c2447e64a046080431e5a3f7cd6415b5cab2f46073fa484dc8abba70bc8af3c977d5168bc0e5ecb7b10c5a1795478e1f2d4f569342e12fc73f39f81f8c45bc1508b51b8e3a6f7ed8a6a51ad106010c8b73cdcdcbc1782bdb20fe3cce9caf98b877025334f360dc35247de79cbe4b5377f4669ef0122a3ec80d3e36ea50616bc00f7d23ccb987badcb1ed64bd620948647b312e6b922ce32b500fc7b95b83ca060562a2a0f5b814d45beba99317df08b1df67234ea2051cc99c3d47263f90cedbbd21508da1d19d9e13ff2d003b3799d6a888d15191aa2d752005bf8c4ce4563f55a981b3c58318900c570648bb3a6e43d732a88472bb46eec8fdcf105e562f3adc44a97af571c59089253bf53e4232255043d7325334edeb2c88bd2569c974ac5c853a9cfa053af43debed581630f57e26127049a3fd09ba3007bc59796d31734ff3aec71a75374025f55a86b4f92080fd93d42e72d22c44197315d96894cc64d9cbe1e770a1bdb8d8c02acb7b04e62af28b19dfe31c3c652259533ed86e447ecf3754f5ec9c2f12c3f12e9fb85e11afcf542ff6c146d87cd4e6fecea87715617df040be12515d4da0758d29c1d40b82f53edf21a173750d739a479a6cb60c2ee7a04ef00e0eeec002fc1f030df1f50fd9bb63eb01c82974a46ff1a5034c6e08be9f03e2bb8d4287406c5fe197923a1fd69cc5af91870e05b3fadea1090edf36e6f98490a9c9a658ac81319620ac520d504104f13312c48ba85de9f569ad17ec8cef0d76e4a3f62eaa352f5166dff092c07a251682e90fbc473f91785fb1fbe13b602cb261c454d634d7bec631d9f88b30d98a45b00b64049c96bc81283e115512f589f38ff78c231b11163fddd13f04d5de1f64b103429a80da898c488453e72e45fdead99dbd8be655740ae23241deac7c52831150a35373bb5a2aa3838581a0aececeda1b046c4b2275f6c2ce9df53924d3c200130b3ff7eb692eab9370851b46573ead17f7194b1da5c9d7020cc68ee0dcbaf3e1122fbfcc43bb3de6abfd874cbd5ed41d947d25bfee525e31027637d12d1c10de464a4aace6db1b26f20e7e56e42c59d42eb3528e871f92f43992b63b927ac1b0ef94fa5b6e98ab6bed338e9f06e4feaf53210be534675371f6333120d21f717cf191d45b320556f8c0c7ddec10141031fb06b6c2dc23ba640e2f1aa0b7bdf2caed99867286bd570b81a6f67faa024fb82b2929e0eb95317f0b5653c4c4f010861550f2c1e05d9c76c4ae01b3b0579b6d8e4415cc1fe8b9251c33e8ca223fa17c29831395bf14d34181d53e7befb931121dfde343d3fe980b4b7a3cf00302d11589161e536bc19c90dcbccf6078d05881a9b74b593347b4b1187c96df33c5103fa55c0a8ece7100612adc8b7ac0a2c2dcf523868811e098b0763384733ba302d31929585e7f3deef0d202f477a007f5621f3527a3235bb2c72e720c7f7ebd331f609ac10882fc14bff89dc499e73674d853429ad6a25d55e70122055dd32653c4999448db211bd55cdb712bfd21aa8f40eae413163e187d6b97d102b78c6463f685f1ca7bd8c27cf2e711395fa178575d630edd8213a99ca4fab0f8c9fedf51b38761207fc8afc906b86b5ed08be1b2804d976d98a4749973ba94a3c35b9bf27ce36a56c56468d9ba45737b58a7fe89fed5c8e57a4bbe020bb31364aaf297e0b7ecd4301ca626439363c3442c525a0502d8fa6a3aa66d8adaacd05e3e8b3240cd69f20422c4e16cce67f898c0452b9b8dd054cf7619f42f6082ad8833b27683bce2202707c05235c92a65e6084c8e7b9549561a87774d8523b1e3319a8cc6331e7df566a532ce37b99c7ec8d08082e15fe3a2c58004e4bc9eea2ce0f6e47d633ca03b923341a811a433f7ccdafe9672367dec2687d2da13787df261aa4fd3e32f4e477f25ccda98903a12db04f790a9d01af7bb2debe287fd185b01da5865e3cc40331ca29895d25dbb62001f8400d45e95874327381aadc470e844b2f7b3610e37262775ba02e56010a0fbd670487859ef6ee652edfe610347c9004fdd08a326041ca3676eb595db3f4ce3d8df2ed31c20ddfa25de7fcf0e0246cdcadbf241968b1cfaee33aae54962af0aca3529184ccc5e88c106c0498f7bb0ce7c75c5f1a332eed6fba2350205cbaa0980e14a770f25482022987212b78dbae08433be414f3031ec20ab198bbb9dab14fbc93d1f9a6c4980b1c5aac385727d857fa6ef12f0e2e1e8c422fe56277ea80ba616446f613331e6b254b05863f431cb7c1c9993b57ae9c1e77b3fee12b2f47a68f7b1273d3a1fb8c6b083878c007e31322c5530c3d0aa81560bbe0f193a39cba2c10f8295138737aa95247b4fc926a71d1d7283446322c60965a6f8c64d45b740d7d8b69ef5a20b1eb6eb6643bf88a39d9f3e222a02f147cd4381e6e24426511d3b1393a08cbd99aa4ff7b85c44317dddf4e2d1ab0a3f75eeb1504d5276c8833a731977963bf934210052856a3ee973aa8bcb13b8195ac43d19b17a52b3ea5a4a7ed87f0d230a1ccc5b53355e2d275699b5a561cab7fb37017e3da263df4cf2f4186a7edf07ef37545d2d8a01ace9369a4ffda2b0493159b66555c425a917dc69d0b06ca22251ab7423023a9f8be7f2a657cdf11e5ee66fe9a9a3effa7d038d8e318116d377421c015ed55eae6df154d46a5c815523a7e28d4ec72caff69eb2d986a6a2125b86149069faf3e8f38e32f6ef55321d977a6b11aaa5f5ac276ff00b194a134dca40225f88b7103b8fab356c986970d412dc85555fa956f24c83c8ae2023e309d7d1e18f3e6a3492d4dfde774662639697d68cb1514d42431bdf12ac985952e12c9b00c9d4084496cc983dd672dec1194ef5b15453b659756285845b448b5787e927ff10e411ed27bd8ad6683b5170148392ead356992c7a38f547f20fb933de5c0e3cd139b7e51ca3d5e6a0b2e8e3f84eda0fdfb9bd25533a7dc21a0d8c8f59e7d88e62543888e63e1abef4837a63f60d5a1db4625903d122500f225ad0730299c3bd89f57b56ee2e5fbfbaf2c891d164cb53f2ca2994391c4f8319b7b7a225d5d5804b3d7296b24b6fba0b67afe0f301a4403b9a80bd1f18fbf483c1f0dfb609d3002ba1359da018da4e90b88ec1adf8a18daf345cb24a504d24c31fe18d3eca33d4a6bbbae6a735c28a26f797f0c3859c684a23f59271e2e00a24791692cee1250f4be96c1f5e9c6560114d2043d6026527efae84aa6cd1f93853d17df9e6bb61803cf04d0a1fabdbcb13471bf3bc7c95af91d25a328eac04a1d336b433b6395840c48c5b1dd2d541a58b7c7b305c5f30f1631e2fdd39855b2033846abdc9ce3087da03c42bc60a0489414aab833f1fd9d2421da1b18858e120829df85f747ec5b9bd70f30d19fbaf7b449c96316aa328af0630df86f78ac516892c8c894715df875ce28c7684346b30ee64ef3131159ce77cf7bdff3f7e8a58189b98274ce6799c521160128927311868c0fc020ae3816bd61523eb8dee75137620dfd182a4005bc734e47d89a825930d020230167630916bae1882d3ae555751c142f92851fa66f40e9394ffcc8d27a13ff2e15aab37a337fd5a5d24522cf0b62fb77e947628c0d49b297eb073a94ea25b78d3513d71d791fd6f2d5b1e1672842dcb776194848ffc789da622375c954771d112dfc844b27357c60e1a9e51d2eb959b39b18e98522bfd4336bd0a78a32e3a566129c187b393433c5ac84bef76138fc4ee261b905f2194aeb260ce74cf8bca21715d8b99cee2fc7a46ec47001225ba0ddbb0e68ab751cc5dd0e988aca3bcfb09327ef27178738268b0f1ba1eb35ee9b7d44b540a165772693d9301dc919786a202da270cb562c70c1b6c986c8bdf12cb48a0242a1cef7366b5743c8a20a754594344dc9f2b3fdfe5d82fad81e21075f7dafcf2e39fdbbfe0446dce1ac19af5412395f0bd3d524e51a4c9c1e21d39bb3b000b988bb739bbc2457b891158af1284732ab7b3aa780a14002753f13121ea0a1cc64c9ef9273eb0d7031b72d723177260174fbd9ef2400b3f7f0f7118bbf0a979e04e758c3826c90c14d992ea041191c24234a523a19bebd3944cd62e11f10e9539795e5d37f7c01183cf03a2abe1ccc07ff006cddcc10d1f03d9425e7bdf31d9da922fbd03a7f1228211937238cc4703e9101a042201afb325931fde5c6f7c47ec621f41952aa8e2006c4f592e2302e3ad568ec320673049dfc0fb8d5f086d59859d62808e00a19cf412e31b080afcc20edc9eeb4678840a7ebb7295ea0e683c62768f39e47cf006be8033c486b08563ee77a757456cfbe2415c3ba0d47575f08346b20efa6a87d5402819d4213a0450e23f10be58e9dd76671ecc1107f3c5acda5269724673e8ec191b9f1a7ddf19f172c47211ab56cd0eecdff512426d78bbcc2f38f97d1eb70578789c8180070de3ae2a8d26a9e6e4539e3b4de3716d7f150fb7d39feec0ef78a587edfc727c93126d68c168b4886095bcc9163bc2dd3deee855294149cf2b5625fd1b9e5e9958011f2c0dc8cd84230b34858d889fa054bc404fa004812edc8d92f28a292ccc37c09165aa28d08263ae434bb30033a71d9ea0dd5de189e94c10d2790cc6ce7d4e19f4f810fc05166c32bae0fb69d84a9dc5b0d35f8148171857d991bf36af5cc0a22b18bdee2ef84505741d7085d88106ed11d253ddb3977a34cfbd305f367c849065104906bf57a0935b3c60f5ee51b675b6228de64b3ffb62a3391b9dc645c6828c2b47ec28c91cc99239a744f3719091ad0e03427451792035122d4843732cf3da30d58469bff7116514331628df235ffb877a939d440080ba12cc2a2ce32353381738883419e97d4ccd07fcb3dc63ebdbfa139757b3b95381fe7ce6a1553e81518b423838462f01316b0f775a9b3151b32c65aaeade672e6daaf88ac79be2228000abf961e78d5782aeefb57098f908845ad15a95d5e701fd1d89defa05b8f340dab5522f0b9df89b0b2eb2ef64a28b8359d4b84ef3f9c8f5cf512ce9b857f9042dd6956ee757891b014680aecbaa6783fd285d7b84f1fcc7a61c901f1f6a317658faf151be4af79018383b87d316b461d52d18bd7b59b6a2b89c848ee14a283f9a4508431154539c9dea95904e145b8fb6d4f0c45056893960c4d3f6d3f5388b85d87adcc3bd8665be2196b6ee821d231cb396657fdf9d1969dc3518a3241a943d6f1dd440f38690e075fc479b86a4514acea896089865705c82e48df8f023c34f81f38f2e30ff036565801466557f164088040647347dff36b0c374535262f68bfbc2ac296ddf1c8d9257eb4732cda98c5c792ca6b9dbc8b0dc5f64407fe9f59ac0fe03a19ff3930eafd6a8ce45e1b89f846fffd76f40dbcb09b1114f338360c102befebf95a168ac30f5052b7e3c38354c3d7a033e7ccf0902e0ca6b5bc04593410ebdf55d7d7591a635fa2ef6f5f5c2e15c48ff9f27f6552b4bdf2a9a0ac08dc67276d20d7007e650f21306d3661a1f093fa239a82071279a4656de667a3ada00909d3031f03926158a63de852e6c8ddb3fd59a838ee56a646117cbc2997553beaaf2f4b689a6a7759912a9d6096b210d4d790cc0dec27bf9d431b418fbe6f5913ca2cc66cf4c52e8c36bb20f753fe606b2d5958c37f083311e200b21b25727aba247c715658fc6a6b54da44f1e38dea39bb2f0a3907ce7b18c1d3a4480506bb180724e6b08ea6809bff871f660846c147e7deb8c626d25a5262cdb0c83accf359e427efe244bbbc5ffb854e09a1d4066c2458ebff504eed61ecebf839ad2a905c065b5d95ae85e631ff7a28706fda307ea46b2ca3abeb055e4aa60a11ac4c8033e0693ea4522e4e6d56113f08ce94b1b904e05045a52f4fadd0f00b86a87a826f9ba29983a5201909a8885d76669528a5b03ce0bf29937263b6acb2b4135f168fed4ed8ee44f99311e53001e7a1ef2dfbd8d143acfbce3f39be1af603140000000051ebbfcaaf16bc6b1d666f39a7f768d5fee06e0c2f747ac739b5d947f8a35e2e6b2131c051684a6efab72a5b9ad8b33e15444a0bd4f052f12fe537339f823b1d7a981d810d60e67568424b1bed3dbb73b3bf3eca30bb3200f36f5c372ae4ae2d49db18cc0183afdec7f248c08a784550800ac02e089252d267b2c4a319cb37010a000000000000000047ac23f6678881dce4554bf264f4fac76a0b5996a1b63ef4e06553a160633704958cf3b3e452950c42fe386cf228de085b321668c0f1563d71e1d4a1a4cec432 diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt deleted file mode 100644 index 21f67fd8537..00000000000 --- a/zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt +++ /dev/null @@ -1 +0,0 @@ -01033ecb3f9c050a473407a33a2e0c48d66c98f3e9ad8e1c86aa6c2477eed5134c07267dac2bf10a0d87561d6bc6b8e12bdf1af184cbf6043323e9af1e0367212a3afee93d5c718f01e33743a3d0dfc412c9bb6aa239729ec10d8de978f6e69591388277fa188e2eb49bdc922ddb8d6930cff879c34dde4b72e8fb18ba29d8eb1c362e1fbdd19c90b44daa224bba3c973ebe8418c570be825b252ed31cb25a0af7276244abb51477d6603bffc084ef5a9ae21a467178cc5ec0c52c21d7df00571379fca31fea67d75a7aa33dc255e9af4e841bc851c438450805d44191d94cb796ff6037ca993e12bcca63fbd66ded2e16628ebc38d8babe6dea6bbcf516700069558552bf43c525685987258b1fc8bbe2c1b06c6493ef7166fcab5825e3a8809d84edd346077e40529bb2adf6aca16b6d1c39e5615e4550b298b01d504440b9f5270659d4dac606b57b602b43ce3e863ad6580f2e9ce2c2cfea16d38582d7bc134993f1ea0f5f1484ea6b37f9fe441555a536b0836650b435e83e2c2e69bd6751c3e5ef499b662b112403422077e2ef745cb30617810f8d98a2015cd8972e64d738ec4c8bdeb591eaa22d39328e6917cd9cd4256612aa38f4e8066aa545a37cfe55adf340faf291dd58c75ecfd66282aa2e032f74802aa815d34e96f55234da149c5b59bbd370ac5610f1b5e64c7012dbce55a59b1259b8ef88712a09f9cab3141fbb52bdd0d582fdf1ce7916ba42cb9370721863e1ea1fc0d803d0479994e7fe921f5f1ccc8a46e04cc836bc678e24714138caa815d8c1a462b97571a56ebaec36046c7260d28b4b8ceacbe5f16ac2b2abbda9437a0cf33967c306c69bcf392e25bf934aa55399995876451c3cf08e768d2b70827202a47a3ac4c83210d80e16c23a28c49d61e98904dc326ab317d1df2f11ba13bd11232bdc5f6e96ff079711a5710deda75a92b4ca66ec04cf4ac81cef3891059cc14c5f7a0548afdf74298f53f4ff38f5110d0abae93315329d09e2be123ac239cf7de6a8dcd0c108889733fd000d18ecf6bc8c9d98c2fd3d8f684d45a2152652fd6e68c3389ce1abd1dc21bb99efa0cb0df767eb312d39bb2d99e30b986cb94b3b32c1c828f737ca6421c93659f1445d5df9a7e73094fd32b9367103635d4f5571d7688f2231c6aa6c923c3a51788cc317d68f8076f5b0070c5da908ac202d16befc37f5aa4812767537297ae9a6799a3b0868ba199e6eca4cb7ddfc0cdc3daacd1c2338b4bcfa408eb51ec8882b11e0ddb125de13632e4e391907683d846800e1735479b572aa25d4af90c3f38d6b0e535a899e126f6c66fbb22c080b670280f308e05fd24449f60d46e3bfd9544deee4c1caab6651bab6858347b1678c2d38daaa87ef9cd3c7c18b11e2df5fd588b78597e57129bdffcfca1dbe5c0f2554163ccb442c1da86705e26e757a67b65f24adac34167dc30f1ae8b05c8a335d25b87f094780c0b541c8d589bd19094c2680d9a2bff177855de95c0c28526d8232b1c6a09995788412b9c00ab63769723dc76f5ab52872b7777855f74173679302ffaa690ed034ec8b8e79dfed6d1521ae95880e489962824b33eb3bc12ee5085d46902c2597f2668d58144cfb746085cc20e604ab01a21b30bf504931b4a3d13109f4e1d233fa544f54152aaffd8fcf5b5a9ba01dd2297d47a8b03999d8d4da58cdb25bbb68691f25673dd68f9cb3fe86b54902452c0cea041d213a7439b55f6635a52a3fce11167893d0bd2b3989bba0e44e6448220f9d191ae4f6d0e67fc3e5ff882cae024fc7b1450b325ad1c61ef03ad021cf0d919fa097bdd04c63aed31f586c10708732978354e1e1bbf6391b45df8b280a85840ada1211a4d72e978ad7c68135b79e02ab3f001a08324abba4ec1c3aa1ed1e0477b78efa90e83c7c54e6f1fdaaf30c667162869789a13c17479fee2441d254f35f24f884350f9ed805673e8dbe23501b6a04482aa4724116b410e3919519114c8ac26fe4e5eb2ad6f2a924522d8e29cedba1f866f57bcdf773136245c2cc93e8e56f95c9e4d559009b37804b16bfca4dee41a0c3ff9f7feb29d2f2ad819379e80a8ac62e7712890d691db376dc4f38ecf924dff03a7bd41be85210f7c73f8dbc6b5474c19efe530790b6b0b84dc5bab63b52478233a7ab1a7eb97d0ae68ae95de60a9af4b5d4055750ecefd13f5fbda721be420d24f6b024b37190e23b0bfebee696c2bea72bf79ec038ffc92a849bd1f5f17c0a25fa3b260e6bc322e2fce3434615e8a20757c36ffe59b34e6f18a0809a516f9ad63b9d7419fcb1a30776357cc284cd37e9588c0943c4dd923979bcf0124928445a0b2862bed3edd8fcb862c3fb2cf5b7b48fb094ba7bc916dc447b480e9227550101552c6f999056afedee0ada451116fd2db584897cca6d8f9aa86726fec504ac3ab470806a14ef4966baa8e7e94aef09da3f51fed45c3c74116fe0636c48e93d4d3345dca870d7d79307edace1c35a8ee7bb62e55f65a3b8a72686a3e103f4af479b47ef658566b70694523740a1e074967cdfdf6b2805f6b94a79dacefb5b9b46d6971f7104cdb18a3c2268e3297cc8676dc9ad44a724294ab50ae6c9df047b836535296612fd10b1b10fdd7ec91595a0af0c4bb51c977e961cb8cf56fe1f100e05c0689e2675a0f9a40d0d6d92eedc1e7faa983e11724edf5fb3d4fc45f41e61965ab471fe069790753b1102f61b6167d646fc19ba405adda131317b1f2d1ceb5798c5742473771ee2b871ba6d9eee55437fd5d9c0d59f1367c882897420ba25788bb4d263f481027898b25f865273230c91b72c6c0cb60349530b4c59ed5592e73b8e88d650d31f5cb40b7ef602ec3da2e1c9d1fe88502aed7ca08539233f1a7a184d49e75ed7e7f8778b459afb3bb10b7d71215e47eef5dc5c7379837c366c39d75bc4885669d52957170421441fb5c5d07090949e662f8ca0830d37cba5c281bde4db823890ef4c494121c3f1c8b67ab1ad2c258feecdc6651423266b2ed1f52b3cfcae2bfda9ba756ad48872f31e070ccfcb1c3670d62fd615997ed2feb145b265cad6cfaa07102a6c80b0015a1205667c038c7c724dbb2d4a1a380888355b953e7441fa6c73cddfb2ed4b4ad35b50394b5f534e5283276c8558cf514042d66d2deae8e27209e786ade59c1cbd802b8ccbec0a520978a3542b0bd2a780428623cbbbc4458f17f23168dab11a857f415351f6514797662e3582afaf2a7dab7435a90db97d9fda8d0ea13e8f61bcb3e56d7f7f55041d0b09714ae67fee4275cff57385cba3c0f9e2f0c21d4a592998bb46c7884542d14a625de8abff6e38cef252bdaaabecb8331100d1e6849d73eeb19344388497c4e7e79ec4915e7a0a0f8d2c7b3323a0f52426df6be1fde9846c076c89265ad79c1a296ab67f0a501698eb6a4a185e3eb6bad089f9f6dacd8e3f6926914135db2dfa5e415b7750b732bbcf557d5180e0394dcf7d6bed8a94f88fc5feccfd77cca58caac9ee01aad223b8899ed68bb38665d779ec470121968a7151ec98816ef5d572d155faf59b767d4f29e648c6ab1341f4f5405f2dc8eec81e0bfcdd8da9db2ba8c2b972adb1030000000000000000000000000000000000000000000000000000000000000000fdc025e0684a163d606c7b82c9a23d9c03f84c562f031f0e61339f93eeb316a044e50a0169a7bbb648844083152701cc2ea58b6cd97f2b8bf5f8b02bbe84c1a783201f68aa291a998e48f32ae0507c11ed7a968c75260f40398bc020779901526f812500127a9c5842d815e9c75e40fdd9bd37c9ae73ca91c9ee1f54cc8f7aa5d57c984821a7c35253f287fbadc4e2d9cd816d765a3fd45bb23a8fe24b3c55a5729dbafa1a667a1a1bb9fd0e0e910570f9f0ee3085f32bf627b5f4fe544684f9363e22d45ca0c3ee06405f9a8f5cb749c1a1e9eb760c13d51a79213b87d96530c35933f7dda4dc8ea36b7963b8d0cdc57026cc28b9a1f514be4d4fbd477adc07942f349a2c567fa4046e6cbd3170c89d12b281b74c021d005c0b5208bf750f478a3d06a15f53e40b3bd72b00ae9b061bf8419e347f5d1fa9dd46655070365212b784b382a8aa202ff887849978a29d018f054ca40df602752cf6fa7dd73a3766ff1c1e10335e20e10e99daee9d6d867e802b477965bffb8069f36ad6f4b3681854be095b279a81183c15ba1e0d68564ba3da48cd6f2b8a328ac7c8e108b69bab76acbb724bd015e1bf55c8999b82d6d56f3c49a90079e9f45aa6414af0b1c2519e5b0fd2fd3631fc4d779c26f50b12332ad9526eeb3a32827489e424494c1d5c049b31455e10d9367af27210362db6a7ded0fa9ebb8d95657433cba7c46b5b99e1aa1ef6fb74893f2f37c22894270556a24a6fc30a04fc78ad9e1f9b1673e91b7626933607282ed07d658ae3f09a8fbe816b9fc507e569605964eb07a0f6f2b13e16239decaec033ae41eb065782340daa3af797aa47f3f5352ed79dfe698ebfd8ad8bac7a315ead576d0eb619dd59ee52a9de31c00c5f1aea30dc6e097110f89ca89973d90ff624e28fe3f9b405b9a11c937744d183cf5e81a9ca9761e97ca5b3589820e89d4301088d9bb97c51ee30bd177c4e48201b805c5996d21bb2d5d400fea7197b8fd378723941086b31ceadc0dcbd8297e4e51c06e5ebd4f0586a066baf2689f72769deb2e7ffc99a50c0ea323ce4df7eaa62114af75791773487dbaeb6b21510d60526d7eae80b816fee3c34a0f8399a6e3c4816cc34058c40e3eb457daeb18e24ea9906cc32ef62fba9d70569a15f7903ae8c0fced7c9a072ea3cb0eda47357935a6278c397c337f0ee83d702f0034c98898364f8ed62416a569c10238966c5e933ff8fafaae66d5d28270451189b4c3b1f743f905e0f76b2bfacb031b056e216f52db2b609e91934376e70b19b6cbef243296f5f84dc0b0b5305c2542fc741f8fd3e2c0c4623471f4ee628ec8119f05121792a6ac83669c2aaebb96c21c0b4e8f1a7824654450fcd34e748444aa411f94f7bef249be9e4326c1075b4b1762a249c9420da9ec86ef2f35a2900a3dc735477330288a89d426d5917b44db2304973fdb84a9ae42117a71b580e1b021d748a6e90ed40440c7fd1f5981f0a1d33dcf9707e822303f0100093256abc54ff5770f6e54776644fcc36ec0a0b6a8d3f38de12825420ac8c7b09aa8e915c36df6a70b2888ad7d7ffaee0dccf032b22433dd135bec38666ee69e88edb9e9874aba156b4f9368a4a722f51276bfa061e2bac04f387a3204f9b9d568fef55a87507ff82203708e1309fe0b7350d0d91369e223d393df88692e29c17fbdbcc6510b4ee4d188ae9d8842b6f6db55a1a53a7996cc0ea6c849c0803385d24f1a644f36472b05243d1cf2f643ef0951fa668ba5fcc413da4ca82fa0a2dc25021a1f3ff28777b39e9bd691b9e1965a6a3dba581e4f0594ab20d0a8cc2e4aee2bc5befeb1c30bc7a72cda223c9d8243cd613ac0c73b46264ba86babfc61d613562a8d07aab3acc544536565decf207f48b9e80a9131661d32da7e685517ed8cca533cf0770917c233dc88da69c706d373d1bda25e370be6d547df2f90d951ca577f92351121c128d5715c38edde63bb753cde09bbd841580ae77ab6c265a6e44f8b146160136827728a7d7e97bb09bfa008041361139258c5fc4a3175cd4a5418fee1a406766a98929e466769e7ce441fe4fe23e7624048255b93a6460ac952509d1a9780ee6d765894b2d933439813f9dc3cea06314fa1e6eb41e7d637f2d7e8de66d7fb607bb8d76974af25699995b9b76c3b2693b100bb4a3b485ae4646640a38ae00eac21189a1ecc3b0970e4a0b0e77032182413b98d90d901f868d6c5a7073b51f36cabc6bee5a39719e5af48542220e21b7ce7270a4aabb3efc81ae38d8d67c6d7f1bb86c5f75764fb10cbdcc8166c1147905e460ac882dd3c2c99bce400d0a05841a1e9b33c99cbfe19671939ab9039ea721e38464f6ece78a355dd044ac9a9257a2cd4819131800bed781ca0146b788a4f4499a5e7cd9ef7ccfbfd2a43616154160525eed26cd567ffccc8b94392239def81dfdde05ee188644a43f032ce934f1e5aa3d366762c4544061d4a08090a3632054557f654bfb5531eb8ea39f47094278a60be0c2fc8dfb75986849483a80cd2cab19fae31837febc6b447c1d7dbe493ec160c7e1eb49cff802890d85c086a6196edf89a7f6fb1c0711cc612e0c9d355f7e8d3545e89d5fe217755fd71e2edccd4abba6649f749f04052ba7b1f0cf5d6efe1955173151ad68e0529cffd290f70c0244175c3d2984b3361fa7e1ba5b307a54f4c9d3995961355b8b8076779724559ad2ece71ac38bd7556d859812f761bce887b10c203c10f8ef6d7cccd1b6d4cc51c6d28a0c9745f2343734e15dd6c083795b88612ec7f8315cbceaabd22b1e0c495738e9c6c68aa846a21c208c4c4a5f11dbbe1ba377e80cede1831e17b90f6ecc66a7af394869b8ff7ef7dcda378bfd215ec1326c0235d7f30ed097fb36be07cd34ae51d9a8401642275a15ab89dd9fe352531b499689d134eafc302137b3fa6afdb507429cea3ac7ebea28b29d991dc27d05a6ed2cffae4e409c40dd279da4431b75c69756473271c9b1d864bc1622325449381a0e2e7bf0df2c204294db7702ec699b3f8319e71c0dfbea029df67a0acea9b9aa9a82e13d9e7450b701d3fc6b10d126e89a73a8f3cad06de3053789d1ebe7ccdf44109ca4aaff3636a8d704a6d823b2454b7ec88692aa59b8b98b86474f2afa549bdc6cb530af07191511544f1e3657a0d4a6e58cb14e9e9223bff4d1d10a264a222ad3e1f2b7481500a067b5867d21591a23baa9178ad3f6e00c1c44b3df47bd25802e6c8c6fadd5b2bd66ad6d6354845a28462f4e91355679ee558ce4ec05ef88dce4e94d27f73119f07e6ec7d88301a3ef5bde0370dd5968722a9f84d825c7367dfc725cf3e410b344f15d8892bd3f2e17d9488b5c39bac17d8ba801f52e68ea17be1feb287406007289fd15565be196af389dbc04a92d489845849f9c772f0b8aaf193ba4405904714bc6193a24b9661be0bd210088ec44f1896b5386ce553736bf3d32a4834f3e2c06e9748d587f8652ae6a4d3868c64f24720689dc5b4f3b155679501464930bfa0a9be1c0ed00174d0e7394669e2fe88d2423a4522536238c9a42196eec463653903f48125d35411114afa4b9dd1887636f58defd5bd66a2760316e92969a202d9755e26262c6658e48b41498196fe5e1cc9981a679204633a142cf0038b33cf2d7371f0efcf8577941fbbd42066f250e21e7d8300f82be62cf739dd230141981b8505f7dcf66859586300e111a1b176201ade72f12141a9053acba13a51d322d4db7dbba49cd64672868567c4710962610b336d56fe44fc9a18d1b043c023ad81f5dfe811bcbea23b552a93c2d9c113fb9538cc5f6f69770f592b645ebec27204a7c270715855e14130334d2d7fec738c15741ce8b165ca761c35b55d9820517d236ccc29366d7ae5881d583ef626a07aa06aa89583bc9a05b4efb6c5b6d3293a95d1f4b036b6d7a6d21e1e15e9c658396c8cb77e98e311f99ac5a1f0e553000aa32c829c95218ccb0d60d01c6a5e4088476b7b094af08d65a33b55581b910207170001314afa5849db216526c837e408acbb5be863c2600cc83a1ce07d222d21c1b475f9a81415bd3f0001c2374c3fd13f8497783e5c6afe3bc42de8a41120d932faf35830c979e49b920bdcc3a8233777dae7a4cc5907aabe73ba8e9fd2308b108ea944d0c8aaabf905708e88e20994fdb1bd71fe256b7da5efb1f2e711daf43191b1cbed6d0dc139d7945169997f0204304f22e4c86dd1d1736b4cb381009b449ab4578cd27f37935ee47c18edb8ca6d18536c6d1df763a3463d1dbc73e423aefb341c2ff0182e5de75a00521fe0bdbd15295315a8be0fb3fc294253c29157d8cc4265e286db98bb565d415c1e17c523e4e6cf5b6cda8b4cd6edf02581ed50fcd41c8bc1a5b9c1356ec441d062581d5dbc4d06e6dd03dce240ff4b39f0073ce2f35fcd084a1819fcc77b692968a39cc8242cabb3bcf01fb12e452f94f33d14c33dfede581664f0cc0d25528569a0c92973ec82889c222909f41dcd0791e63ed8a5d9cb6dc449ddaf052e7955ba1ef4924299d1c11890c35185910f64a20b2f96e54cc3c72601b6874eab0aff4c4d6f30e05240618bb7c3b7d39daf51c2b13cc1ed1824ebf8129d509ed8b18c7f72c5be4f84773c0b0da565e7728b97c291e69598e4097b762ed756ff4e5fb1b6e379fc94fb88bcfbcd525a3fa956b701f8771dc76c18ed921c266d3e7a310b9b5868adfa35408d9bed1b8f509883abe1a9e6faad714d237ffd2886722b8ef0e1fb1eb1edc66b489cb3e0d7d359815ed2cca26640cf802411b0f348fde0aa0644ce4edd7b836044c5b0c7b07b6b81d7a31ba8b1103d2351305fe6cef6c8e3b3d8f2916409990d3c108a992497734c14711932e00c9180f3d463e0806b04080ca273783e58dff34df056420ebb9536fd627b495825bed62ec717df774366661c840ee6d22f9a7f248d6d6edc1796713552413edf5bbac49ac1e2042608f5ee810cfcd25c7f4c7f4bb2f0a267198b260b2215188d0f86d1c3f8f9bf5c74a411772ef0dacea1216428592ef1ace3c7d617c264cbceb8003868ba7388a684c1a06f885ace859dfe2d2f6de2c7065f88ac3460e372c09962c51961d1b164b4c9db4696322d4b37dd94b2344ad08cdada66e550deda1e0b43daa6f53dfa89bce5f4bdc583233cf3b14da98e79306ba352b9e4726e9d2cf8fcb53d891c79cd541cbda9e9f33b4da9e81a51b958f5cb4a7210bda251004619b293c2ae7b460861f0918f9485e6e3ca6761eb686f464aa43ea480833406bdbb74064e455ff74ec1dd4499da4793c29ecf6cb02bcb988cec581d9dd375607c573523a6fd5c69a96a008c57db76d2e2ff5be3f4b771faf48bbdfff132070f042f876b3c1f944bfd60dcc318cbce58469a04e3baa963fa388b867da1c0d64fcb055f22ad492c035912b7dd009ab892eedd27ed4995d1d1f0646cf8fac287b4ab0b5b4ceab49a0fbfe00cd8ca44dbd0f6519be4602991b0d70e929976c0740c0a39019db5a1737cc45e185e75608683b65c6f3ddf3cca45ad9ea112cba38612f676e26d9b637d3f6fb622feefb2b87f0202f05d1a372bd946fe0997a812fb70780ac557c9f4f626f12eb00ff3ad084a9540d7206404a658689dd4ecd86399b4085b9e1c8d01a5b76b29fb30996acb4a5ae2eb6af86dc7f6fed200061211e3e76cefbc2b6de2913f12a1a5e978629a28d09145ebb16403d2fe058457ad9050bf8b0bbabb4ad19f6fde34ff0b816e35a807686419aea973a885aab2ee1253d383e97e932707614d08e9bdc0b0a0882e68098a655a06a6ac60193230f98421c1359d5e0083294ef1a0ffc1ee16169ce14c3e64329bf70357c7df36938895e18d3ff3a6073925799692bfca1495b3bb34000563f715895041ba0e18177930305d5f4df915133a0e955d184c1ce1170e6c150a8d932a7b203535ca66a4d324501ff50609ce6ffb29a8a53cc483cf77e9da4258917fd27fec72c0fd928e366452b65ad473f69954a8113a8d1474f808691f0abf79b3b9e22187fae251e66e2a00c57d666bc48598d9ef35af98cc02a93e170fe213a0b08974907098e053f714a1fce7de3a4e968f2e316bc147be64bf1ce6fede5bee9918a764d9985c16bc3b62ea3480ca717a8e4cc35591b0dc2a8d94826f1cb454949de8177dd31e06233b724197e54f084834d4925131805ae0bd92a1e9356a367f0118a6f5ddf7e7cda8601971a10bc8351b7021ea8ed5efaec03bb09c943e4f3c737694b45be449bc679366476f8af0bfbb010196c17c89101c1ad2e8f8268b4f22be9fe063a3e96d4d007c52ecbf86b1635814ad57295d8394d0746f5d0d7900e0c0b2e49ee9675ec7e105d78ef86e1f3a8c42f6bfdd789d62014e954c462aba2405a6181e557b269b935f50bbbf9e7a4655e19172c63c7e9bdd1f626f935a77c43ec80e78f97c0b8e1378829a6637bf94c4c1b0c95c6f74488854bf6ef29d7e07ab7f8f5149826f6663f1c03130ced8fe4ac5ab522a195ca77086b996903379f744f9af148f15f64f6049eb9ced7bd364eb073917e1f2be6ddac4fb5240350391401e3ce8ed42fdb60335748d5cd7a6604ee9e3ccf2ee60a088b94cc3e584b7323057efc3a0d256b8d2fd2300debebf7440379810c7430e571d916322f68f66edcd35540da0835d4403a2da40fa7acdbf05f93a00d59c60672fb20f0b4d8e28d982d3fef205b15a60b38b7ac3ba179bdb988083ca7d32016afc89fe4a49d7372da3b46b73bb7867a50317ccd3f987e624df3d3d085e02ada3795908bc8b3493b66bcb6a89a4572939c12e889de5d4aafe26eecec99d251efb2a7e5518132f2fe91d57c92783adc63da1aad4a1f75608ce524bca847a60a449ec04ad5f413dbf30298b977d472c5cd6c28fc82a9882f58d71d4d7696a23c96a2544c94107ff90d6f0a199f79b81be2042552513381ddb7e50d22f96a175dc3fbaaab26df1928480e2a1949cc57d6c65131f902ff78763208b41a7daa448cac014ae88f6c701bb48621e4b595cbd65e3d3fa43f41fe4a6244ef521bba01275912f7340ec7d392ab97f7aff52ac8b4cf5e31d03d3f9a1e2ff38c49b249fccc5daa2940f506e52432c3221c6330cb1488c9387aacbd0c5723c556ce1031bb0f29af1d689bee2ea3be6eed8bba0819273ac92595a8870ae6cdd7fa5909ff692e0b68093f5cf4145fe9841ed3c90f289eb4801fdae8a3725eb9b2987838049448ca7765b86764a642e416f1d8f4856c3ddf6704b53cd36e0cfb4e1a2f49948cf759db7287cd1cbc79080d48cad32b663e7efe20335e7e3d449ba9dd8b7fbe8240053769eb6682391bd089478f7553be1f43f608518bb2a10ef4041ee3120fd337fd59bffcf164d6311dc9c9aa57b084b441ca170eb8147905b71cca0b4a0be331f112fffa1fc4518aac96c3eb29366a69a7ca207511b34e7765b5cad9caab145dc0ea8693c5e5dcd683c54e3eb3981dc3d3ae1503f706dad2871ff3d66135243b21d408a39746eb4e8020d8a838c8c65be70e308fd4171300973b3d476d474c52df08d74e383b0e640cfc5dca90ed0ac0430e193de618861e91f754ce8a74d0a14a184ecd5cf635261485d4c216ee86b9ec54138bb1c92ef4ad4ba2ab3ac3fc26bd864688718b8be60ff0fbc017df489df494013e9049fc598d3514cddf09c12c9a451c5eff7572bf49eb65b4194b0f2a8b3d303d82e0c97083ffc59b723987434c7a836a1aa5dcd8141e65722329e76cc52e0b50133e9d324adc0309b9c0454a41a37ecea3ad876c62ae642dd4c4e7b071701bebb5c9b8511c5df3d513f54ef644d300cac190f2ed04a2ee1f6d3bb0ac640e224ed7be5e918286f267ad420eeefc184af7c2392137a1d3d460a09fa39f7d7633aa7225c9010ae905e7111a2313c5bb3b0c1b6e8b38691605cb674f339029c82f1ceba0423cd827d9c01275c6fbe98dc45b8d683a45b78fa099f75c0be81f7827d320014eeba685e45b968517ebe5ffa0e53b45e95ce61eb1446b2eb89d6c8920bb6ab5513d0ef03bf8bf7da0a7e8d96e8584b8e908c3c18c456cec3003cdf510d09f3a351287c8c23c71d41bf43e79a66240747161361dce3aa9fdc817c48f3751d29304912845b4a50604783b39cbfcd30968a3a9f5422cf25995a745936004fa11794e891eab29551c343e61af630c45519ec05739b2c126b393d08a8f843835a1e8f27056a22a57e05f0c67c14d96f9c4821331d0793feb7d175dae0dc934bef36879d15df34da94881b081f8d1165fd3d0195f5d0009708b0f64523bde1c4bbf57d73b29f4d9cb0e5e791811f4bda1b2ed8a99092c016de4fb93598a1b3867ae2d2736cf3b8e9c1d31a67d2f13f3c03da5ae2b0947c59f981f3b8e1f8c31a24ec32e0aa4157cd25aa4f5d808bad7946b7dd296485e0cc17dea96bae4c133d403d628578633c2c166022e73ecc781ffd8429b235e8c3adfbefe0b5a669e27123e7e09d945403e08fe6f081f26b3e87f7f8a88361aaeb4304d7063ee8d73360e51831ec09d4dbf56f9f7ef4910b781ce7fa58e7eaece47a06dccec766b7533b0c80b3dbfb0c1c5a2156b15dbb73eb36b6033196770039f746faacf6dea3f042eb68a17a816bb149063e4292c36f4cc5fb49ec53e5a449832f5013c6531b939fa8c6f7ac751c666e2dc179f0b183094ce5231f33766b834d69c614855e39e2312d4dc52056af8502c1ce52078ced2158d58d18893298e6b7aa51a85cbed9e323f395d43b3ddd9b2f675ce14a1cb6d854e8e276dd04b0daace482f1ab9340712678b0a46cbfe46b95808b972b98d31d5ea56a2974fda312563f02ace7a5ae12a9c0addf7ef68b0e681c4f82deb36f2844aae53629e345676bd37fbdfea16562afb86931d25fded9935976e87a413d692da58293cac9a75e1e46f6f833ce9521eb43b86b36752a18031f82a4f5ff19c2531aafbfc4076ca2996f8a569faa2bd38868b0e724fb0a5467586c02a4e64c3284e6a2ce7ef4b78437c484951f178883779fbfffeb693cae3dcd0bcafe3c9a5f1f1f862a62ed968c7076e3fabfdab5d10ccb05aa71f16bd6c876ec97b1cdfe0bfb434484a9a0032cd4baf4a0c59429434b596ead02cfc54b3ebbba327e14a060afea79d7403aef71f5e290bb0d6ceee177fbb25c62ca84c51d1c53f56719dfe488759be6dfd18c48156aef91fe2036130689f375d62db8bc69aaed49211346eb81beeec067cd2559ec4f65fe062228929407d084577ca1cf0016c4d649e8e219e33024bcfa2814af492f5599d5b2adf26e7d9e33e36275f96e3e8aa8bd1978c6c67f5cc61d327b20d9987044e8a750305e53d36401427eb93c6e28efacff5a3046e91d54c0151f8105aa4c7edba78bc2e764e73de413dd760278b42a84934c6b6d27d8d2d981e866efff0999452d8863cfa9df86559ced63376ddafb54cea265c490f07734119fdde16a267bf5885900948730b5783f823103d228379cdb58c632323731e37fb0a5aff6118720362f01bb749aea564cbdd6b5e40cf22cf2c4389149974936d29caeaa58a37d18ab2d802ab8d10d0590d17909d7033bb12f3380e4ae183ab8dfba5d9983d43e1f5a8db3be3d99f4f8f78031d335f13bddfda0fe80d45f85209001f1c8132b797ffe57a35717669520a7d7f91749d590325da8fc52d3e6f50ab7118a575730966cc7a603c1407ecbd48526c27a8ea4ae4c7b7dedaa027e2e83ff8774eaa2533daef2c7129c8fad971f70dd8e5dad1d6e5d90d0468779fc27b9a0f95be5e608d7bcd52472815a2249ab50785c3fd4cba5adba240d2e4376b669aa297521e12b18032b6691a587251a11b5af12e507c34a33694606e80ebbd55df4a791f068061f59b4dd319885b4955e7e20fdaf40efd3758298d493b3cc65f4e253e27e47257938e9cfd00ff651dd870c2d49e402b35729482b4c10aa0cf0037808f7dc45fd8da1f580d20045b5f56270962b258eef63f6d97aec609f7048e43ac779eaf571116bb591223ab6233822d3c3cd8173d2f46f30ec27715b4fe92b90eac5294965ad0f2ee6e2c011c605aec6868c05c7d6c2523cdd5e28f74086fc7c0ead66b621cc05845f8049b51174d93b20c1edc12e8bf241f4b9860b65a688ebe47d6eea3db3060391d02c17f72d151e83311314f0580d852754a9658795dc97b81fbe40e7ad09bf3ac20680f45f638e3aaa5a6e0f3143ca2b3c7f3c4ffaeb1e6b5abcf00bd20a4a7ef248dc26b9796d7fabebb454df3f4307126efd8e25f66df3a54baed20e62f3c6035fe2f5add42a911b544903ac4c643b30131f948f53c5c34ff4a17fe53d0a26622cb9fa69bb929cc88c92776ec6ecfbb01453a36c2c66bb21e0a40186b16ef15325ef6d61ea5686861fba74ee80dc95532b438cac40a9fd739cee4b4e782ebe01a2dc47fddbf38ce1073ea89030b86d04bd2350fa929c830ac7bc5b6564b999d0c4721227f923294db92518250cf08b433679e0ca73a93b8db97c548c928136e28d5e8791f2e9ae1de58699afa3837ef0e74971a7b5a50d49fcc77a80939a7d11978dac1fa460c8a9602dee7920b76837daf85ff4b6c89c001ebc73d1209846221c3ce67ec363a60e68a5e855dee8dddd2c284b1d4d8bed60cb2d076ff774cda1e17e8192f4e693ee926a1b5a7e62bb754946ea31861218d0be42c0a1443ee7a1c74cc32c7b94622d60acf3251be1b64f04d9f9ce35a44032277e655dffe36ea15525511e3f16e9e996295bffcb7204a933b35633613270fd87cd306a71a42460cd56b56abf609cc4e2060933b5398848f8de25c1839e08c36e2baa70a0214623e71730faa3d68fde37f6bb3bb420028b5090b17d17002c3a19ec3ecc758802020bd3a21ee1773e6a6973fd3815774f4133263dbd28f16bba6c03c5dd2641610055d2dee0a69077cafbc5f1fc672409277d15a60ea33da04bd75bb3f7a2519a6249b8cd4c481ce8e75cfe94922677036bd82e3075df31a4693886cb411b2465220f5b419a4e2e300e2637983131365726af4fd314de3d91e3f217e3cf3364e05260fa92c8c79ac111e90a159c384a9dd5ffd0d34e1325c0cf302af0b634cfc3b173f07f51791b80fdbf8031404c9ccdce2c74cb9b1a05ca2250e49e9ba9fd7a32423f4a35cf5065d0b8ca5a1b476c7ecaa42c9712790eee74b2da3ca1fbda536206116a00311f79d44ab53f9a92647951825daf4113b3c97117a2fcbb668b04b2aa18e051924b723cfdc2ddb04fd327bf760c317425099a17f3be488f5be0cf63e4263b31ebeca75600ec32ce1fc17fc4b16a4307e9e2bf1f5fe5c468392c92326c12c5a1fdb2853eeeb6513e8181ecd9c83043f4d4ff014bceba807ae25de3a295cdef24738a3849c7504d37ec3b64f09edbb83dba696091e0cad01526fac510450ce21da714635b9c6515ff0ce15abdc2b12f3b7359ffe765093e67dc67bf3097c03eea5801c363775be754384c533fb877d1c34be3c38126796e4546ae92d14ea011c6c84a793c89a860bd3c3b180358cccf0f71143bfe875dee91ad10e190d93df5bd08b9964505d548192e0ad8a84dbf5312645de3ab0c0bfa607cf49863d9c3711e6f4a79f14abc9cb001e442803a59d0bf905acf12fc9016ce180741131a06aead169c1656cf2e61258f6584a224fa0ec15219a36b0adff31acfb890c0d7347f7d1e2fe9aa7c84167de740d854df1914591ab396d79e424b6552ad18a26211937f897ed25d1e5e79ac4bb07e1d01786d6160581ec142ced76828e4c162daef9a16d1af478c48c235ed79eebea74f2f8bae7d8bd47abe79514bc87de3e17b7d1621252095eb62df2ec57bad6eca46c6f1f07217cdcec89e0e9af6b0ab918e9edba3d133af5a1e39bf748d36135114807d47f01f361b46c207ad98aac2616f1db71f0cbf30e408e41a74678531b03e034d7b4ed95ec047a279f54455c110b63c76e4362f47b9ba4dbd1a0ee8259f3b6f85518d09178bebaabdbfad3dbda3593cf2551b97ac48d324d47571b52ea63189bb54d54bd968741926e66450e6a0f0be87755d48e5b12f7cfa11a1aab65b4b3c3955790f0bb901ecc63469742c61d0779aed22450bf021acfc2d7526f43c3d61151e968418af46f7e5c1801f7df16adcd87932d282264b63bcf3d82316f35b773a42983953dec9b09fbf93418c72c2ed56c2914ee02a14cbd17664c47114ab673b8e983de17a4312b6462ba3044045ba9ae9cfef599898e3b4bc5d7084c72787f3f5a7dcd7fea8b191e6c029ad92691ae499b18a10570ead25a3e5c754eb3cb355d8b0e8100d4997c0ef9f02bd13ff1120611c179dc00796d644f94597587d3fd9c5d14f45165101eb74f7c94b319a61d6426083417e83c6f76903be1a671a79b1e3c638e19b1700fb68f3f8fcb39cc9efc51c9cf83bec0ef56cead140ac0a7ef400d1141deb5a2d9528b305380103c6180017eb5c7f48c887ce0e2d21acea30d7ab022861e1350b469e74818482e1d168705708a38d97a8cb741d39c0c828992aa91467b81c6d7eeea3c58a004307f50096866a0a85f00990de2bb6879fa592ad18f9ccdd03697d5a4f4d81fcba76e04ae34b13860cf10a0c2e010c9767a0949838c50fea1b09d0239c3be185f8313071c5bdca84c33898f9ab493d1da4cae8f44e0c5ceacc6b6ecdc825dd297912bd578da9e8cd0a5e07f60e4b9317c0c6afc806603147e4c6b02eccc795d1a3c8a6c7077686487dfb59a3d240bcb96263e99dc737ef5ec974bd95a0e8910d78962eba6adf1d81a45510f63cec7d258133532e599c015194e0a3106e33f2863062dab059f77333b00923a1acdbce5e68b3e6275f21c26c0503cb97ebe2b80ac02dd283f37e189630a68570aaed35e205f74fc2737dc2403748382d7ebadb2ec98d17a766ccd8753756fe1a8abb3c19036634af0e6b5b062a2f5d8981fb8e796aaee756d56c2e279de8f56653d9be68baadb05725597059567d6beaa1f25af523d4e5b2f6a90a2241a496c003883bdd84219de6fb1dfb6601be8fafbba8a73241dc533a3b808a5126e8d3b14b523d97e37221d7725bc97b6a6ee51242fb942f804402a1331a4424411e0f641a80e7503380c4c9f34806f9f0310e55b59bab3123b21c67c3502106809269d0ae2a4ab79ca340193f0733e89a21bae1cc8b2dda80cdef07d97d30f01ac875a7b7119b521dd322f540abb39a925fa3fbcbb65f50fb01cf6074098f12c469437070b5ae513c562f52e19269c749fe68d71583edcf89d2bd2db1e03d46db8775337cd219cf94318cbeeb33507aba9fe6a67d3e0761038bd5b380b66342b913e936bc77a26d6efb91172fc462ee18a77a0ae2705eb0fb7b9a2b934af28be6c2e9a961febfe12258d7e0ec6e85e158c445d2830ddcd9b8ccf6d17715813b43b9feff08f4e8554cf49ffbeeb155d16f133bb12564347ec03df34c1dd2b09d732690adf14fc65f80e78cc047b124bd3d51a4a8f067d27e61d0807aac7f70b88a3dbb1f17bc9452b479fd19b6f9cd634d03ff99045ff5d0db477afd4536038bbb6894763b923e3af9eb26930a26404e9c8486562e2d6d3541aecffe6f2e4a2ba27468e66a37104e1e33dadc77e26f2e9824dd6831189f0712e000000005dffee918824d76de0bded93b95c2a1b60bfc65fc62e0f3b5bc63931cb955eabac75c5abc684a55b2c6a2f76bb89e304ad00d40174b82188ee286acdd26e110eb10e4653b13bbc7db646d3f3e2392b66b570cd7da3b5e0b5dfbb727323fea6b40e1834bdd431f925caac4465ba8892e80dbfbfa6b4b12939a43e289afcb09d0c99740a1543c3f804fe941957a007b044205bb5bf70a1a2e5724f6da8fd23782402b8e10134db47d4a091c1d26e717b38d3ab7250a10a1b1696aaf34d7962ab2d0a0000000000000000c2556442cef83ef408f2d9faf4b75e60bac0e05b88a662331854c754f20e28129505845a3061c26773a55beadb8b1c74847416dc48d2f99f810988820fc2dc3d diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt deleted file mode 100644 index ed5efc3c53e..00000000000 --- a/zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt +++ /dev/null @@ -1 +0,0 @@ -0104b4218e2d32270720146a7c76a4d1ab1564acd3ca1f8f0ba0ba7bc96bbcd8500dbbc0f12aef29a8e393fafcc85f26a45e3a015c61f0a306f88770e2981341332659a87059dda189d896d6f0a22d6c331d2012094fc0ef5077dccbfae57bf659b095bb6958e926bfff912f66dcac8ac682bced678da09a755aed0f54f4557234013f75de160d1830a3affbe4168eae1718fc0edcf925844cbb75f50d7cc27ec4974f4abc41257bbbf0143e5c9f9329fa63a70cb34fbbc7ae001ce184d035470032a10891edb6f5749c8b2d87943e766d8557331c0217f52a4bd980d5bad46b6d24b660bd441dcd0ccd68cf7a0b247771386798c555471b0bc15e2f2ba30402b4edd1bf488792977190e99cabf0d4ccb518afda1d4dea5b053fc022b07f4e0677cc042599d5485c779a1a634fb4119a1ef77aedb8331857f02f128fb6c662ce065e9dac4bc30781155cb72f1fc8182976ce697b8ea1c561a4de07f261527c9ba6fe0d1a4f73c5cb532c7df54cad1d848cc104d36b965b7d6bb357ecbb30edbf34b7297594dc3511e51d31d9fea1fc8f25a87de6ed069e01499216796bf214508c6d75589a485094cab2eb61ac73074cc8071fefb24a50d33d9f27f72c5d1fa906ce12058493f78535a02830e61a67a747c3dfcf2c557e73658fdfe5d82869faed26c2370f9f3445dcee43252d76b4185bda1ac675a9320eccb40ce1e50b4c7a8aaef73a101aa24f8f76e5d300896f7eb13a68caa1cc88cab4dbe68039da62dd2439c56b85a8df6c67c8bcb43fd0740b1c55c9de5bd08bf91f539250286191b0c1eb105876a84755876afeb2ca7036fb2e4191afb682be903a45ef4f6b8b5790965c9dc5e052534c2d143fa5b4602c32643104557cb46069a78e6df003fa0858248f53892d1d70724eed8b603edfdc4b87b6fa438692d7e0376bd262c7f443f5ab239954c2ea667b64530411a5dacb7d27aa629bda918dad052b833c1b9f05f895547e4b13f29320a6b71000a823b7f403cac4b23a3e75c5f8628d005d74cd3e520a5ca884dcf108be40d628174fd1410ef64c6a520f25a10c1dd39da962381b2d85227565558825a0670260aa267f90c169a1d1601f426668adae318fe7473706f579068efb8a1b92667a869c708954764649406d3c75326b53370929f9f270b0cc2d92fb254cd97659e671dc96c1fcfa3182f95c8ea4b2e55f28a64a1d3172cd76d52355ee7583a961b99f6d2878ffad15716d83b90a22ae5590c5eb47e024b871849bc99a0598b3cb97b94a213b31cbf6ca1fa8028e8aa639a52bfd50a8f1800587a61b94c815f6c52c4bc6e174257f9a33f76186dedef54f846bb24d838d7a66ae20fbbd5d92a5e336c91a2bd90794df64d75e2ff77651c0bcc20d3d8f2fdde84d3fa11ef412d89ff8e6c46a403f15654b6b9006db79563a99ba18c551c7aace73878edaf7d46d2a17956d9d77566fe33aee511bfb656dd0e25ec25153520c92d005f546e1d21aca64f9abbb1ad42b7f91315b7ba325b72ea393abc3305cfb01b0610ee3ecf398e40a1efe51f496207637401b566adc8c79755fe4aef4085c0410c8012ba4c9e924560572023f4c7ea06ba38ec442c23a98c323e9372401b3c7ed41f1c0cd650ff2e5c5e0f16b538c71043e449da1e5fdedcaf81e6eb5b5e6bc2d41cea188685a8b3421bcdcd44bb79af61908278a3a25f64610096f2dfbf70e5e8eb778264e6e0b4a92e7e1af1569f8cd0350f5a329230d9b402ee2a56f78ca1bd0807747592c3f72443e67cd094fbf5b7eccbaed5a5cd7d19c71ff3e014c5428851697bf02dc43fa5900f78b260d418444b888b57d7a639c2e117e6ba85190e0b6ffbbb1582d24b168bb7f41301829636d24eb4583c81a515c7aff6e7831c120b2bf49ada2be1cb167f3a5098effdb1e28840aeb8bc9b5955cc2fef9d093b1577900faad8269e69abcb7b34bb3a67c69256f2d98bfc6a20d37fe544e3c31496e73b132475fda4489250013f06b8c169f338ed8bd17469e14d97e2513e877df17df60336426c4749c93ab9afeb27e49d9fd0152e6b3b5cc26bf7fdd1afb443d5189ccffd779f6c50ab160ed63f88407d426943c1870daf628cc48906adc1d8ed969d3f6929726200411eab1c76af5909ee3c29659d77b4e96bc252fb25e8ea43de63d32837cc74ece212b97d6879b976346867c95db0d7e945f2357c77eaaa3cbffd7021b9d0781dc9197f360afd671135b1bf225a4ad9f2443995ce183e19d040698642912d84aa90907218c1a612e2210687ce218a6c220ccf9138916cf166b3350b2f6b92ec2e1f5043135c6bb4c9795f5cfb6a62c41b9cdb55108cce8c563ed029daf71d84c464a7db384fe9ea3ce9ac65d9d280ad05266692a5f0171bbafa3d52f5234cd7962aad8d705be814b54fc6ccb3724bb6154db525a9a038c9e42b80944645b419f291e726dfb0dd3afb6f279f8767e4596f04eea7d4540ebb2478fe84d2bd1432cb899ad8a530797a39d0f6ada2fcf9f2f047f3240a751813a49bc62194a95e4ac502f1715e8c5c3142e648b93e8bffee0455c06e4bd5b3ff04f9c1991613eb21964e6c854dca09e0ddb992fd91d4940b4eb79ab35c558886e5d48015a662cda9bcd721e7277e3b1718103dfe5610fd0710d56d719202d69e0ed805985e417f22f513fac60b192f56cae05144210ac7e441a0aa683407572bdc50a4076e3a2158fb697be00c2b0f891ce0e6224ce403ec47851848233b15a350018a4a4c1f037f4ece9b19a6f63edde425821a6147aecc70a8c7c10745e1af1feb962c70df72c5cd6a71982b8c5f86f2e32f7e2d337ab529bacbdf6b186372ab57194f8b2f5fc046a317aee2dd3efd1681f105cb9686869c7d8e1e8ea3306ae78021999cfacf089ec1981422e5f8e0202633520b8a3b976aa65a391044becbefd892504e0e303e023702a00553ce336b97b4b683071b0dc466051677e1433b4fde3674cb2036ae0b8a310b718f3f4fd7a7e65912e3169f2ebcadea1d1f18b534f42e52396042d4f01612825dc4220a75b47c46e2ac37bd23d378f697106ad26e1b94cfd9ffed6ff9fdff1b1cac8c894fe831ab963d97d0b3ef728bb66a6ca3c78bac737dae26d49fff940daec55e525f01816c3cae0c84c4fe76d45669d2534d06e9186b329e98d0952cdc228f0c6305377c8736fbd963784c266330b031c293b09b832b2d3b026150c984e0db111e4f76e906ef270a0538bd5d4840423e46b82274970340e57b6b9faeea8346c161b52770822b440e825eecd88c4c461bf9435e6ce2be3033e1f9cda4b1296849206771b1f06f4575779812423fd7206df83f19831ce2ae1c73ad5a789b462e6feee505f60eea2ccc3d274d55d2018520e2f243ee0b1815065283a622d7693f7059b03c744a1535eb78773964aaa7da447fd79b5f64aa6dd218464d0a068e763344192585c3e33c17a79f978cd66d2f988572697ea7a9d1035f4e77c99d1391fb77f673f534f90a56ca4acbe34a75b0ea99a0c6236494d4fe1fde67c78dddfd664729af37c6bba192836987820be802baa920e9441d2c0705690e6cce1132f674b2cece349b82d49f1fb84d268e77a2d5830ae9bf910477419abe6f3b11be344895fc11dfdd4a88030c19bdc74af3ec066410dbec6dde62121c6f211d4c6a03517188a809e8ddbd918424956a838cebb0f5215d3114157c2cb4996c403094f69db9a9cbec7a0776a44586ba83ab25b7cfbdda45bd3a645522724962835289dd2ca3e337d073eb90ad222884fd62ebfc614cbc1bdc12607b6bd213b0e4bda3829c4560c211241484900aa67ef83a957cd402a4ac1ea86a72a30604a926f4ab1091ab93b87c02d919515df55501dfa2922ab12d991cfe2669f8d5072e94328ac2dff6af005bf56c41f820fce61a04665741438f6a8313b2e5b65a45d6e2d9f992f5a69109bb24db0ad1bc145a8bdf48818d5abeda7bc3447aa8c6ca057235ba879104da0e460aa43816730331fe98f0f4f7b1a7db32c622d21b273fd95657acf356c9cb2372f2fcf68c6ec366c957efc54e8327d84c25cfc133de7849c58bc09e4cff5ab24aad405221f69da27c7630fb46bcfeb856d6da9237902d161385ce0a280209a94a10d6cb6f91cfe38c631d63163c740941fe847aebb862a76133fac2a52a0db378985902511b0cc0e5579243350de3be0335d80149ee7900bd9238d41fd07976ace70023d4c89122a8f2ca97bb6616475d004b8242ceb01f4241477e5dd2394f2923056927ec5c955b8e161758f16a92640aa7e931a0108cb1fb93788214866fbfc666a1f8528125966956a5289e3572fc321539f6f4e42f7219c40ea21f2ad6dad3332a377d99d638d8da0e71d236e1e3866ffdba178811296d1c080d73c371b45bb5c5c9f4d86abae81af2ea89d62390df0a548f5879a6e418f42acfd5663936be6949292e44598ce91e35d71bf3f2301dc8d83617b7489562b997aadb7060120ae15b6da3abdc0c58565054b1a754218857aedc5f928652cd5c1fa53b1ea91d20be8fbb33371c6a6ef5bb2dd591919ee38b82794e5ca8721f9ab4d78ea9b19caa153c0813ebe9461e5b0059c93d12f0eb7ceb186225feff85c11077856d451f234ba58c28a3ed3f8d91dfb538baad12557dd2bb70daf26e2a611d5eaad226fe68fd5bc94999aced4c73aa43f3358df18ee283e51dbab837ab1b09683de526441bea0b929d03c0c2dc4e1acbeb0bb3afae5c560cea6437844378065fa183e032d572f9ed0db6daf46af776e28333681f7f2ade9df8f7cb09802f794959a030000000000000000000000000000000000000000000000000000000000000000fda02e7dacc52e92cd44fd3ebcfad1af54696a193aabd37353987ed996d1da7a31eda11484bc9542396baa21bb9cfa39cde73dbddee5a989edaa901c7e1d59c69568297f42e251856b99dfce07ecdb9a0980d0a1a7e8631486448c5cf2eee6ff805e9a21e7749f029d37fbf33608afcc6093a5c1cd11a2585c4df8cde0a3714a38ca229c8a57d5293421117814793a0f551d037eb919a26f9a81f770f163ea3d5256b7c148af6882111f71a860065bf867473ee751261d2c58090beb904f3580d44a23ea140e31fe90f90c79b2f1fb4d8860f0cff9532bb841f744bbdd9b8bc6cc9790a7c3d5b1e509ee23b15d7ed417bb549645e63725c177e8390e76048c83850881f3f1349ee0859ed5e40874674d3f625168c0829c938ec10f7375989b7993e2abffaa0e539df8d46621b21c5391706d7713e12bd4b5a8bda826fd6b4758ae3b8497de97e912cd7c9169b0ceba7a9de3bfafd38fe68d1ac6fcbbdb8ac054536127366126c38e1b36c6180a302686a99bdcb3975d130c43b1cbc17e40813bddd9aceedc2121c26ebdae47cd6e574f5cafc5144f54f8ee4f659f2f3877b40fd9a29580480b44e5945a88561fb507ef5a26233b84aee132efd47ecf866c93ea01a3bd6f94d9761eaa57d1e1d0428a2146ee08b081ee3d1ff83916c92b7ff2a9fe07abf4f822c614eb1e0f1425ad760b58b0b3b8507149f1505fd65c379ab66aa7b18d31dcf29336aba69bc02293f4b0eab08fcbfc6112b99ef8391738037992730021a274a141917ce7a1d27cb17fbdd1fcfe7a78c6f656395e4cae8fb39872748a838a94c46f342be94c35d71841dd543b09907a86873214bc47ac89827b816a31b3bdf03d6734f0d7b2d25bb354738d0fde86d7ee0ec581dc664ad89ed47ae918071a346b263fe4597d689834c31adb460270b541bf61f15d2e7acb397cbf9663331d96bb2426e31588b4da32772b79ca4570dd5f3080d1438f5c22ddab9d98a19568270212d97fe2985d72b690ef6e86acb2da45a30b906c9530246d1f30c19eb1cfbc64dc405608a8bec1acdfcfaa544f6386f96d377202b9e9a0bdfb5cf35eabf33c06dfc70644838f902ec65bfe90004c076e57f25b08c597fb54e62ea21784eee73527a0f4f20e9f14772bb5fcb5eb55b54bcec5990f5889e64ee56f0a5b3bdf2edb3fa6b99d9a579c57f7c40c34ac51d524a8a811ae028ad17c0c0cb56c233c8d01275a2d3a3f134f955383231007a4b756d5c6c474fb50d44d824d0ea7936e7be0df12473f701e2623b4329681970bfce8b10f21407d13423fb427720a05ea8b94ca552b5a52732bc8cdaf0acdb672d40eae29d57f90d56c319b518fb721eb0031b8a58a0c76742aed49f566dab86b6efb955f14273f6f613a0474a21229b83431bb678473dba07e93a305b819f392f468b9e5744fb9e901efba3d3c65387a30946170c453037059d87ef5274e1d13a2e1f6f10c413fce33dcaa23ccb69bda7bd8014fb020e4d4105faa12d3225e4c99db2444e9e0ba6831b3a19fd0bca592207c5dedfa50981e6d9d31304846ea963b30bebe5da360df1a6a25c844c9af9787385f0037677279b6a5dc9194489b078597444f165cd62eb4cfe58f488cae37c3ff803df8a7c8d0e0a63846cb4ee64fee716c4bfa58ec406283f938152d85286bb417be2204c0e101ca03e92531730c56b65600dafd8dc55a969295f69a1c3932e7a355ff050629883fd2d643fe0e4681be3cefb2a39c6ddd75fd53149c8b5dcd5edf78f32deadb4e07236583658349292f0d54cfdabe32d57f206f0400207def2b32d62d532f4d95c9fb0e498463fcd98f1b18f1467cc8a3ce96a9d2560e2f296a985fd9cf3c4ed750ad3c306d9925de11c311da93a3eab918d9796072254fb261a234017b5d79f03c5245233029bcb249691e36d167617bf43066547c33210b045004317b6c4b4d239c6ab0fc972d2a2667c5e3e7e3c55294b239043d268dcdba30966ae442936b1ed456af578cbffcafec14d6710c965f4f91ff9983863769e14f298eb43d0738334b50336e51b773c2b6ac3ed654b656fa105216b9a0bf67469b3ba5a882065c7b60cb4b2cfb27f868ad1b867a1222490d04a06b0892f2574d8072ac1b9e7b0a565798e01e0d1d93e9e1c95857e54a41c72d6b96830aa8893b52478f490c7b7a64a443bfdbfe8c10d53fe75ce422726d4c860946f63beee5dbab3413dc232195ec46de416adb875d6d482eace910c576830f452c1e23a351a55e240f06772a404a83c9c7fe3d7dd5bd4b9d28be0d4ec9bfd3fe8769b8344dd189b2fc0c40282ca9b08953564249de486088879bb7b62e8c14d7698e8232f1597260e3656635dbb25b9e181f6012badf2de8eb234762ca02c250067631182799953f586a370ed80f036d6d58c82acf0f3b44542499480b5f40dd307d06c0ec8da041caa5b840bf7ffe30f1f1db59b440469faabcc55bf5411dc8aa748bcfb3f1b6f5fd828e5317fc0b1b1fd1ba3ba43b2381c9c781d8dddd658e17ea3dd0cf5aa22dc7ed3722cb77a07ad974040b85a6d4a50bd2b6253e97ccc56024a9cc457beb19773d539fee57dfe94e1854ad51fcc6e7dfbcbcc58ff295d1c41f86976ee35f18d7c5d633ba7f08c5438808375764257f33465dffb21e7daaf6648d28e9b1be2da9b126c8fd7677b68d75e2858e00349c7e24e6674e50592541a792048a563555300c732fb1b3ba2c2e27482cdfd3dd13f85bc862ce704ba06c9a23e6ba5363ffdf921f51f01e697e037bec2079a070de828e7875315c3243ec1abe84357440e0b9567644f39e951ca37f24a482eeee356bb6684a96c11173af5f348011ddb2b78c37f3557b34c4a9f9b31f0f398c45f108d58ec0dbe74d439df8b91401b201c02417f38501ba93b7add869ad6190845f4feb769ce80113ea31ac90a6738bed3af6930b5429592bb503daff4fc7f8c3c597f71d7772f610b4c6979d501687ec38b0d0c9bb0bcae313173839c05302207887759690ac30fa8e99590e35ea49641746e7027e1b14955def5cb3528714e4f793a7818aeb93d7ba2d311e3bdeb00d423fccd029ffc3570a6e28f8deb2502a830e54a2e63d97ce4c348ab78ef0848720191450a2c6f3ca57a7bbe1f01ca1e4a162c4f531f2a0d52514922df9ad7e354b0eaae325a962334c84e881c9260d8045ac9e9b5bf90301bd49aaa1e0cc3c1aaf7b781b7d0c1b469ed0e730b9fc435360c0a5f8e7c86386e5c60780816d89e04fcae475d3cac71ccd4d6911dae10a664333cbd7c10f3496347995a2c9dd5981ddf1958f25a7a6bb3a1c62e81ca906ca28f7d56dbf4222ec05e43f05e32aca02d11bc47c5961c85923f9984406b002f457c4d99a6338d7283d7dbe1621b9ac814778d28d1f1bb54ec1cccc932029c7bbc57b0a9a87525e3a0fb7b81f41a24343480db9b4f0457939b1d0a5d6fcee753eed402c0e01f59ca89d8fec314150554dd5a1d98da715fa31a2e8a899d1f82c5abcb9f961b57cbbe64b7b38adeaa449c9732ba8fe7cd2e5b5d2c89335892cd46fcc1506775efc467ae42232098a3ad7ad344306a42f9012d2bdeb0e8f7b022ef9662df76237a9801349da34b9be97fecf29d00c547f3c177d65e4d4babbd16dbbfeac4d1020cf21256e43259316da96e85a984e0c094d746a410cafb84bc017bb1c92c2593d8faedcb4dfcd3e0c7edecca1471c0690c04c562db0c142135bc64d1cd355a9d2586e3466fe75885e5271832c94a67f602c111d951787a5979efbcd3a4db59ce641efb4f788f832f7fd84fd30071a0981fe5e4f6e2fbe067cf0b4a316368e37b758ef1916711900b149f52497cc24155e6faba0701598598d6176c2813c96c1f43e6f175af46221f9d3c19b1b33043e7bf2390fcfc6374074b32af7989d06ac296d097e641c4f9fc56b4f22d93ba026b014b1788ca561a1d9cb21157670b43266afbba0a2bd570d1e6119b949bfc84631605adb26165d67c179da538ace0b86b757dc69d5113dba00cec3d0f25bf05bb52fbbd161f7c29eda090198b66dd21652d978921edfe2a519f97eb258a0211b03b3d0205331e65edd50ac3fe04987ecacb4a7d7fc5ddb14a825302343c9521a14ff3b08e8386253523eb36607d1a27632158adaf788272482f8ae7cd5427503be65d9428eabcfedf443954237ffb075798b694473b990a6631cdf8d8c37d03779900824bd76f6e4e5e17d28148cdfea14c2d91d0e8277013d78fcda78332efd7850084578dfdedc4c9962d6dd94eabb7baa5e979fc9f8190a30755ff6accfee6c1e7fdab54285880c631f0f2c25bdb562e85328eef7a3895f0e63fa05d9b76e12e257f7f45a3e1435a7c772fb5540e5d9021a788fe33a00f299be431e61eca215a46357dbad795a37fd6ab7eea69efc42b33b29eb189036787bb5274cec989addb17982b95ae0c650818fa631980677977aecae6b126b220358e4dba660151ac6337210ceb1f288834afe0008b050c51f2fc22384159a046ff324bbd7574c4e7d017e596f5f2ec78dca7293b46dbe2f6f5e064ca3c9bd18efbbbb716511d672b71e1194f219fd7d709198ed2a41dfb4d592e26bcf93d3343dd4445e37cca638cb81ddafc7f7f59dfeab54d092c05b80449b66cf6e31773f58cdfa0a499e53286f508916f2345582b317738ea768a047ed3136975c3b0b2c7ff175e8fa9a85c3a5f5075919048cbfdb75cb4ad883897989d12c60d1c6e91af93fd0c35691474e235738d98b70ece3615c43ff41ac0076a89c66bec91fe631365524da413f966611400702f0d36520ffa59b98c4fa293f94eedc10c3816516671ea3af832a3afb61542e1be6e5cf1477c7932161b0cff811a2434af3e25c2e6f6a81882e9c4712da43cb8e98ab0d233ee4824d8b9d0ccc0d7679235af45f1f412b4fd9e9e3222407147a5878254cb485e0e7fae6243c53d6f45f611112912062530f732b5c9fed47518079c55535c716df1984de9c7354858ea81cc4f4f502d176b6c2bddd52c9b3e83418e543859223b225353156d84c19ee2f87bdba4d0ae2dd2b56048b4cfdd4690b1db98061b70aa58d18d224090eec6e222c7ef31703afc95fe4424d55a879908d9c66ad9a2dbd0e476f27f6245061705ef3c4ca6d19799f9f53cb0210e77a6f8c9b8969a3448522859c379fb2577540964c6ee8c71d1d92077df0844a39c121784b699f860066673631d8e97310e43d618f2ba8fc23620c24c507b12a4c3cbea030d1652bc39c5a216c7d5c297e512765f229fdc905ef9aa91b551e04ba99dca9e199c043e0135227821e282bc2e28cc4a487ee6d11c8f3a3cb322a7e41795199b2ba96e7c79a753a7e3a21ecdd6fcdad110dc6f73df079359c88f83d70b9d359b2a35415a5bc10b9c250cbc7e25fa6cd0359577d25275e13e2826d87fc1daa89f0b26f788135458319164ffac594bce3b46d5b3f284ab258e86eed08f2dddcacc69605153425b8c30a47565756a47e0d6cc48b25028dcdd8c8a9578caae6161b9a186cf0e5406b02f5b3f5659f22a129fa2f4b703ad884bf7f9cb101fbbc55629862ffd7d31df1bfca2de9cf889f895ddab26b840ecc492d70ecc787c2fbe90d01e86245917cbcbc4b35ce5b61a24fadfb7a77593a3aae1cfd553ef4235da87df7718cc3b24eee4f5dca81e1decdbc22520024dd0273522cb7c86aa908e36e76bcbaefe7d7fb7a71a853927c6030e69d3cf1b39a24cbd97b79ae58972b3a9bf9839e75681d07f4ad7b3719b4103f93d5cc1c8e613956114d0b816af2bcf0b76d854e0eb23be6c745c064dc9731fb2ae95f545a00217480284ae74efecf2f346114ad637fc9ac3e1501fc5bdf35dd1a0b7f17512013d3ca5d1a0c5c66309cc8e73706c135a987694bc0b2a95cfd935dbdc165c8ed319b33b3b1ad50f43ea3e52043fab10e0d5cc048ccad37cf05da61416d190a3c2755273e5739079c050e9cb7073b24f0625ddad6571db849525ee4011cac454237c70522a3be53819ea1655bba4ad686f6458fc2c52d584252d6105dde0ef6d50b222471ee229645ffa96927d5c0960b7beb46721b5ca7fd1c7c11f83e842e403ab2ec883bfa3eca7798a0b0ff550c9d17d0ecbe295ec17b8a28e730f194ea751f8ff8e7449f255b4a2ab9b08a0cd18791dc6bdac729a96f84e94b5e241a92130198ef081abc70a5e91b33620b54d4d6423081c91133ea525a7c703bda57a089128ed360b0b49cb974c6b04731b014703952de74808f8e75d4a01bd52b1e668a221751c25c53f4005ede6acc843c2f1aff59a1318d076038a1ff7394259d8a8103f98376279869dd71c1de35dd170b3ccd34d76e904338448dd36a09a9f7d503343204e43974e468104ddacfa9b70506d0a0ba2a430098458dc3da4641f6e7ef3704784cdd3f93353d658a0d419e0ff2a27dab07f1bc250e3e022d4813f7081902d074f3f54dbbe3354f1004e3938fd0255d3c950dccf851f5146f1719f100001f09bec0532e4d4e7d7c23637d8e574356f59abb535d00e24b7774fd80e049671051e5f73c0c596b1cb7b3dfcdf35ec4c83aefe38df662d95bde75388a1493000b79a09b60540b3feb0875861b6aa0ffad5714b0196f94b38917f51a578f4b30386d621311095277a35bfa0831590d56f09fc853c1b3d8fa9b1c0dc2f82ed82537866a88d66fa0e5fe8459a4b64b9719404cf6d16a4fe3c89dc4526135a5e689088848919e6281245f75f2d890fb6cd7a28c02de7ef0b0c02c11a15b1f4e9f6e099994061f69182046710412186f96adc0305e105d115df11e4dd41ac502189030a36f9a96d239d400301aab36e743e1c0e74c13ee5522b69be88f7f624872df3014b30bd65384ffaa60b398cb2d39d8e4fa06947f6cab238857b9c7855fbb4c2bdd6ae8e561dd8fb9604ad6e8b7f212a4e4c05a5cf9c0b2451544043bb0ae3609927ac8f3c98d70911d06ac7b8d0396969cbc18a4227b912868fd13a3afb463352d56aeaa31baa2072a1ff6c967661903f9bb6ee09e1ddf25878b8cf182b6111a3df165bdd8b2ddd506bf759daf45bc1cc8da19fa8096906b3305a3ab73d71e1f0ea88894ab64d50363a4cb3461af833619fee8b3284ba604706883090ad6872db2568f6e6921e77b4fb2a598d81aa516ad9451ed667ff7b9c73d56fdd2c5e321dc816a5c1d867f488ae4c9313fde6dccc9aaae253ab7b58500aaa338380cc031ad72f4bc1f40551def8675f99aa35d110b9193f556be7e0964c79ad901c55325dd288d37bea8458291d9c71e1ed9b82512d85aca6e388360e7d33d0e83e29836847cf42b4b1d2bd813695b5773bc1157ee902fc31c8306742593a23443148b27c7bdb9256e43f96510d559707402ce15f1c47c0d646554c4e3265660f2a8482c3d3242e948d9686f1106b3b15f515297eb4f6b99500d285aaabf700a1bb38e04bf729ea025bf0fc207405920404ea87e95853a412b6fc3fc84451d93b2e83307a1a2a193f0f66a2d085af7c4ac9d9952ac42e175a53fec484d2eaf8b9b1ba43ae52551bb134c9850af202e768a6c40d616d5b344a1045eb4d677f7b43012f42b819d6f58ef96dfc36eb63aa086480950047189df816b0242cf353a9c46c8171166bb8beb79b8c9e37409d8bf4808b9789f2c5d38645fc8614116653ae43bd00346978c3d54be2bbb3760730212de714fa81a022934516385c11ca987bdd1e30d06f2da0613d90627f495455908fe303a5b051220d80bbeccf4d782bfb950fc17f7466aff0d75cd69f20e8ecf0c1d2b31bc91f1e8f42314d6218f9a9ba68ded0788cad67d267d9623d2dc414feb2ff41e52ef133a6165a4d1c2705419e4dfc6007498efd62e8f9e306a8ff58f1c83c6d79ab73f96f91e11ce1f2a3c88a42bf43652e2b07b089db8e026b1d68bbef2e2c58ae32f106070adf869a1c886a45d662a808deb5e5a8e44246a4e7ac386e66b1d6e47b8cb7d1ccc0d790371f862c684320c7652373230be6fd28c51733ad3ae0c155200f15e62c6e2047b90f036fafe03c1cc3ce74659cdd64acbbf081928f3705bd37ce58786480b6016011fb948a937906455330f0b1e4e1b9bbcafe048c7bf3ecf3bf9122f16b4e348b717b5b9722e53495f4b48cbec6cc2a235bbac30ebd9f106b2363467cc41e9755244a93c8f03f7fb9257cdbbb9ae321577dde1558db439698513d865b9280f73eba3bd4f500eb26f756eb51baab6b29cb1f2c69518f2d5d21c2606a1abf4861f65a3a50749054961543d065c5e5f8978f875c6d679b999e8dbdc7169a44fe82603b2b7e9873516d9e56d67b4cf94a7f4f6d41498c6d7ca8fd5356f8962f57d96d2afcd3e3e03ee87ffcf0175ba7af2a081a4e27de6b56c6449b8c57826fc1c27e4df42053715c1fa0679bd22e6e31813c57738f35831f2701c98345574dce924c02581eee1326c1f3d1205241e62040396533b2319ef0ca654100d5042c0c5c8fd36ba6ed6340cabbe9e987028436c2d7db27c62927b50874a9fb3d7e28144180b282dbd812a25454c7e83916111a8765d8168233558950bbc725bf05735a77a45067cef72015d6774b9cc137653334151210675a6f36b734985b7a72a8eec9b30c7a8aeff29734c0fa3de5ce3aaed8eaf90d603ba17b218cc5faa902a86fdae9781aeab8501e197c3946e14bb0fceb863757233a757cddbf20489332290493540d97adc000778dd3d3d3eec8c008d2e059530166790c0ae83bb3928e02fb18bad3a5bc80c31528d863be5e7398d0c36c653ab728644c0ecefe683e72d7eaadc21a3e15e4518004d859252700796023345761bbcb119df86a8edf45fd21382c304b00e145200df1e3d80997f009f5fcad1415841e8a5ae5ff6259a2be8425035c772aac9171f5febfbb558252db42e1445e16443e68b06f1ee5ebd846f29c1af3103f280cd2ab51178a5b7fe561775502eedcc86b5b8e1ad3e43c6e20fae14b131a8b0b5d930498359efe13f026a5ce58edde9c95999cb77dc721c3a8850c8bdc42fb8c873184e9b9750e7a64f2a6e4348144cebcdaf19fa48837d8a113ac618be363e5f650ba9f005af5e280f012e53a7f748c29b9a24b6135bca5bf52ad722706deb2f910894af4d24f92a5475fe604ab7159bd49bf0c388ecf81587a2a2c4f2551fd68419039ab2ec83e2b8d8dd3891622688cd8187e4f6570c2220a9cb2892e166aabb32db1ad8c19ad34eeead9fcf519f74ef284716a56e0e2f98586f8428afcb9a5e389804b1aacb671c781929daa2b142d76eb8f42d17219a53b72717429e143570176d0afaf573ee562296c832149ba5622dcf7f933fadfe7c599d8801854a2ee11c39729f9a36e94680c3f10d6916b3d436712905c4c88496f9134e0cc911ee4b21d7bff8f5d4e8f9b9aedf48ebdc23457d2d233b9acd885ec250395c56599b57248684bfd1808a090da5afc93889aa281e86449baffed5ab8c573afb30a72e99192fc2e61f6d7b6e10e700cca7c8c55edd466ebccbc294fff3bd7daa00b5c4e10c28224737f5039b7cf3199f412fe91aee54f65ebe8f7c0d28ce172335b511d33bd1537a2f600130fe4d705f858d42d8fb562def49f63581ff64e916c2caf53322ac3f7720e574217993a3c83920ab6c7a597e8bd616b86e2c26cf2db1fc668210138254d8d827205629aa310d9598c7ea1d03e2182a81dbd52525a46fa842f23d9b005e4a9c085f8995d56aa02e86d90cdfc08f92aa1552006e27539a7c815d1ad57eddfc9d3761463849cf167b17a14f7ef901b3148eca44271eedc3e25ffb1c8006493f36e45d1f837bc6cdc339add644d1084fa18f7a670127c716797e853c4c4bc4a4630bfc610e4dddc09d64c34c828741b1d6b76b7ff2215eb202c2001eae004796ca1d5d6ea6fb760b9e1b95da7a8502cb7d70954ea263dfae2e5b25334c777a6759597b3744b7ae6ebea45bca90dd73940cbaf9f762c8cc674074371dafc6258841f9d3505a7d48dba55c02d436771537fb81789cd1dd63eaa1dc77165fc14ea2f3cbb7ca03d70386dcb32326dd1d218d9edb4a3e60c1a72aea03993c56a5e30246e23a6d452923fdce421cae6b6f1086406b37010c23c1d177d90e30c17704d19ec3357ce55a1f81d974627cd02a5c9e1189d73e2edee431dc36451e9a0cd88b36b3192f03428a6706022f8741ae86ec5fc1811386678568ef278807362dd6c794958b8764f6808840c184a97cc717f22eef201213eef7b11521f80f5d36d6a68ff21ed775628fbef4bf66a98f22b8562a9367b2fa207bc9b8f7971bd50b7f1985e7aa94133e829c29d4d4efb72bb606e3003b69b615852cff442e3d4d1a29785057f9984806bf49c45df40081a740f4a77d7fd77ef74126c461b60f63598f859b3242f5d50d2e02e679cb82177641c0dea7cfcead60f3f62a12a029862278bc3f055616142af68fb4e518561684be4dee8bd8955ba298d6e5ed8d07782daaf1526a52a3b199ba0bd0567c3a5d389d26d570d9fdbb4aed74dcaa1c0ecd660f886625d7a4b49f1d7925ff8068df58005a9c0668f182538b376601223e2e0f1760a4c64313c51a21cbb49c375d698c79f31d9c60a81b77cf28b6db981a715ca48b14cd95bb539e747b588851d46f1a1e29e6dead20d5ed63f70d148a075d70b7aa691de88755e755d24dd088fbc1f2d8383767a48bb6c953a1fd00d019b71994b17705538b0932d3b5283f8d8c84cb2605aa3dbcbbfbd3418677759a09eea08b2a967f0813e27e725fcc814b70cd3ea3a5d376aca030193fe52e446f13ca9bbe0b06b47e65ba1c22d78e3b35a177d785d46c062a88f24195cd8663ae21718e169916b79019bfd1cccf26c1b0170088b3407c906b7c84734895ce5b8c0cd03349d0ef2d623554ec768cf45c6a7eb581bb4c1fdecf57773ae13320a69b30718c20fdf93cb93b9dfe64df0c20103318f93dc51c4fb68a2a0e9a2fab12243639025614f3448b4ce6e8db513dcc9ab94cb94f9a85b83ac9a1ea23d40fb8a40ff4de0c0f591f4c82665a941306e145ef32c40e6bc1b7a1819b0efb10b8e2670e21db4195329b9e2729e0c8c76c23c2702450758db02074c3216f4c3440657516c4d222f6f564c9c09883a8782e8e6048acd28e684bc5d760e7fbacbbc00fdb1bb293667180276db2e8d112112741328d39295f4917543558121292a94ec0f71ace85592641386ad7f6a34c7cb4ba4db16bf14776bf2fd1c73f0155e8cc462418de580812276696865ea15e3daabf1a447476aac8bc7628fcc1fd8bfef26b4522df4523223e0603ee47a3378193473104476354b01834b368df51d28371a33715e7a3bdbd93b87947b782292fd403f6150742229da40cf3cdc4d55ae6d56a37237881e6f5e254a748dd04dc1806709fe106db8d54941b974f7b6960cf5b1d3429b8371a252cd3d1a2f53746921276b0bed3ed487d1e8829672d49b45b16a88c2e288dc13b0e799c4533b3d62071a25667121c5fe367d712fe5e0e818e6e417405d7abfd3c541feeadb27ff48d28a2105cd6536a7bed76d8283cafbeaeefa9d20d1972f28327f02220ea60ab0d1901b6de09ed855136815d1d3fe6fd951d76352c795c7114cb3e007f53fe68bbdae52a4cb233a61360cfd8b9f26be93fc665c929cc7fe43c51fb590a5947d11fde613331952c55eb5fe752e94b15179844077b1736c67ae4e1a28224928bc6d47bfa11727dcbca821fe5af6584bbb8940540b013f32d668606cb432150d00572d76afc491c315b0b4aa25e799df7c69218c10a33bb18a03c7b03c1bf3dab2f8ef355195df0f818acf9b5c266098aa0e1bed063190fb2ac963dacff6d89ccf5868720734f994241417337eaf6013d621dfe4ca30aeed0f1d303dd2f0941036c8d2841c4485286195825a42689ca519727b6f21502acaea0cb533b424016e534aa5c84819dd062a63dacebf88b2f4e987f50ab9f0cad4635be6fc3b3e8b41db41832b970afb2a8f64574e986d206397b215f8f4c1e3b4ef7edb31f1b2b9fe6537cee12079191857f36de8ce71c36ac49c8f19b4d0d0f3c286c6912ccf2375006f06db05622f55f684e1603da62e63424d7daf1653cf8336a8efeb8efdeef640e02489e5534b973a5655729e28b26ae5814beb7623ff46e67c0fffdf884b0fb714ca4ce66119af7948d5745fd719be740481fe6440830d0e08e682e5c975f7e16ed2431bb8671527a6c941eb35e1fd5df69c73c3f1eb658b25a6fbcc4f7dfeb1f0f1a977272aefe4ba4413c1b1c2a5c56be7e67e3249cd3e81eed79a6bb7f4c3ccc824afc1fa9898db36cc54f349c991273b01f4039c75aa7c8de89986a3909d3c75bc8b20aeb1073a2eec67eb301965f32bb4a8804473e09139d681274b0a9a72096fe5ab42d6bde125bea04152f35077756bcc816079da5e361378da1787199dce7e0dc014ec5979570dab511ed044628bfc03e265776d934eb5513d8de396e5b7b30fcbd48abeda807df8dd48a0de66425b28a3bf265377153697382ff7cb3768dd8620be1fb5909adee4bfa1632ef1df62a4822c11fc8dd3aa12920374cbbbbc81a7fc1093f4ee1f8865f1414d46e4283f2510d393687c7b89a8c492d44006bb70215f8da652eb480c1e919953aaa914912161b617b336789e4d1a144d34fb91bb2e2dfbc5219f6d0d95965137c2130294d59225a1f7ce86873a85c3aa3d79959775260e9d72f7ce93ed3312953059987c87e112e1579664138ae7a5b4e972759fcac3cff7757bc740e2d362c014db56ad0f4148e4f6f1751a8585cd410c7c04738bb3d0b3bcc75d1e69dd739e78a405722a11b9a7799aac72de6f321ee972e7ee07c1b070bedba2bc3b01c218148359877cc3e3e61e537dc421c6ecf842792239464dcccef8f531348dcb4c3a0435f3cb4e60444c5e0e0514b1e9603e55ec8aefebcef77286b6d45a8b943bd35a0e18f61703e776e4994952a3da52579024f2438371b625d2c7ab23c896028fc15ca3742872b7942a94a530ec48cd667054f93c6481de840330a936adbd38e64e435082a2409bdeb1f641eac31212ff58146793f262e425c02ad2b954bec3ced25631052cd11749acae9c3e5a76bf813426b68af83f974bf6fc37344627718337bd7a0a2f009087800bcd163e316d3680f7999a89e022ad66af0d7184d6caa65700bcd78bc2670cdcf6d597fa71e289010f9d9afbb4797069c2c0be1d32e846daf36dc34da387736302dd24e3bf6eed6071d4d3663fdfeb14965339257f5dae2b7659e29a0336637ce0b76c9296a3ac96d2299b501e64fdb4cbe7978e95e2098410858db121cb48bc244cba2565195f1d590ae2ae5bb452b57f08186525f74d15c0b2c3a092494ab7f02a41d3e42ab367e1cb648cb4a6239f62d8742b9630017bb37268d7a0e239fba461a89485ba0cc0138b58aceea2d7787e1e4595c8f190d4fe813749125b2724161eada1abb22f8d38430a97b65cc13788aba7b0eeb2cbfee82c56905091bc071fc5e0a37672d075dc6fa4fea8087eefb41ec5dc6941935cff06fe49d2d5b9d704b796202c6d1b2285973704e080ef2bffbc0a925030201c1a4f0d93e1390e0b34819513651145e45c3821302dd25fc7eba838f8bdc53f5afd34f857301bc07d8be9a8f0ef93cc720296d21fd8ebc758f2aa6c250624c20a14ae67f8c15e143b0f06d4d49d4a6e3fbf3f488c7a114f96a557612813bfa0aa68a2d17802116cc26278babd0a548c86baa541803b573f2e3557c9fd0f18dd3fc0a6b825f22fdbe54241fa609d5c820f874535e8c388dac154528e9d59ec768d4b7717bef1d8a401c86142e6620dc4832737766ef01d750f7bcc830784c3991ca02ef92ef2ac5069298d00e0a3106e39bbdce02ecd784d8dd1081ca715a07ecda81dd5a832cbe9573db892c1028320f3d8cabdf6ef29d848372717c847eee43cd50ca01d00afcd7f92521ebaf1c9ee7aa14922c0a7ceb28acc4ab377e7bbeb12364eaed0919a619a7b826b3dc88600ac010680b0187e219d0200129aeae04b6cb1c96428d2406928208fb2d1aa42cd9bcd6408e737f99bf9edd1cb4c7ad4027492ddac9b53f504ea9630fade4198d94b42903a600a8232ab9b1a6338e9175a7ba687d38142874ef5d2232463d038c0bf7bd4334b573088899ebabb951362456fc3a9bb544192a4ff8eb38e0056ad0886b5204e6b8528ee19cce735140084778e9eaf7de72233438ca50d8abf83f0d0b876b866b3a2ad605c8f3003e3605383e93e141128a096b003b3875ba2ca931a9526c1aae4a4ff8a8c518a55a7160704459edc8400507228e3a595c1ebbeb858ce07b7546e8fb81302fca41ade32570f65063284e582cfedf6e2b06031a44c3a32576e04ddbf0694a3f710f42d7a8f6769b39a158892a380ceb897ba8274ec8430a2bf7a74b0ce25cb1c4c94d1fe1a49fe44aa9376305f33e2c7abaddbf0e644a22c82ad1c66806bf5803295f2becfa27b47d98bbff3b954e72f244b54dd82990774eee84198e74bf218cc72a7d2bc12ea0201645a90061dea78a04b48153924429d56e26b48ade3b2f4afa5ede7be8751693a1f3022c7ba0d3aec0c0958a61cf3dad2015de752c64f8adb23064a3b9e3f77f5d2e3504112b55f3852ce2b450412d36c74df06135761e4ba8eee24985637aef6c618514ba5c8e756b916502f5a00a5a1ff34ab744434e72bd0b5675f77d25701d0f4107617f8c547dc2253039b196b9d3b03487a73f3480acde5e4dc6c9f1ec0e46f01403c80aa59b837dc16b0e96dee322de0516901d3840f0641b1ff43909cd86543d246a244ec03f4bf04331cb363e9c21544b054802905472561f70901d667388138faa53b95c25c310735c9caaf421d8b7731007b9736c455175d76050a1513e32761e1e0b644a5ae967814100632b6a20340a644be1883af6620baf772133d70a4e30fdd9ee44f91be3d896c350945ada19d2a9cdd62cea68c0cd7d42bedac723c0e8af1f6609a83e6d1c0fec6a308f29dfe10d28304be8ab3ed315d73c05222b0830c3259616def7f81be4799ff9ce21f638446d538bb1ead90869023ecf390f0f812daa897c775b62458632e3096be2d02c0db628e244946aea3879f5b714170f4b10db86abed4b1279767455a307e70e5d220e110394f74cab1efe7affd60ae8d35a23ed20849dd9e95c5ab90fdb23fc1789d3087bbf76f90ea13b7758592ca79abfbbede1be367af756f7fef57473129a7afd97d6a0c9854c87e75b9dbd20cbc7c0e0139043275d504d1488b14058b91d8c4ecb4a7cf08b4d1861e82c5b33ad66c71d56822ff2b86d0f72750283b1d3f95919f7deac4ef6f3bffd9a7bab2904dabd6b54fe03b35d286c178440be2fc8effaaad655d0b33d98454c17e9081605bff13e9a1b8e6a2f42713b3159bcd52e8813ed0a71ee16700f3cb5a6291a328c06b2d9d29da41664bd40523c3c4257f1f121192ac16be996fcfeec655e04010d6d83d0b09f4d0e3e313e4e8a29867d2816c168f7a6606189919ae07b7de103b13e814c874f56b0a39e020430adb6a230624fa6391ac9378e9fa09a7868f727ad04e0d8864fe7f1d0d7afd9178b07161814c0d6bfdc1f75a0d07d53e25ffe2573abd78f73629ce621673fc17945f3bb259a59214c02d607f8fb7cbf24b4960ddc590b95e7f2355ed7ee76a7d711ce85f19be168328492b56b52c63a7f630d2774da3188c9305badaa55f62525392083a16075dd074a8162ff9452dc3b6a26b059c8559b27559943aeabb4d8eb2c2ecbf7201dd8ec0d169139ffcdea4bb27601788e5ff7539e9d12b87799af72c9b3eae1a69884e6b39adc332c892e9f5dd820924d9ced170c3566ebef1fb2ea9f8d5e214328b9bab969bff320131f46666baace4c300d69b68b3244c98e40d63eefe2dcf75d7540331677c4eb61b2287606863042d9b3c529c43dffa4b29c0902e211f48fcac62b15371bfd13bf44be259d0dfa6774cc35ce8dcef4784648d7c4545669039099251124e750332003acadde17c1f42248049cb726cc2e1ae2161e890518d969237eb3a9a15f4dbe14d47d331a8998f946e7cfc314738004da997f4b596de71e41f563c144fe5b2acbe9c7c684f6024f47836cf1b4d70cbbc71eed0ede8812d195a25ad7b246a9ee4a48338d1cdbdaca3e5219ca64d6368bd03f9abca0251b1d9071c06469c958d924c6a4468af6dba755fc630d0278c0fd6de474e9bf591f2ef901cd7d5519932b20fe2466319b6438b5ce754efc222e4eb64460aea358efcfc1d05d815d33934392383e629d0e62594ce03f2437e4761258c44aa40bdf6a9cbdb046de786008daefa57acc882bdb313ffc6fc6a8630e3ed9a89a812697e34f646e63b4acb5a5c0686dd2e4b033328e8695a7741a262565f27a7a5d8e693f48854ee4851dbb0b2b8d8d88f88eaba5c2f8f5f4c2a74cc749d5c8af93031392004d19561095cfa6c1b46786259ec37aed34c7ae047bba7fae4b9c07a5804a2bfbd49f842e3b4302313ff0c9be193535a7470775078148f316b2f90247cb95f37a279aed403fba855277358c6a3a4b47080ef9890bc56435780ab3fa36ed7fe3544d47497fa4827bd54189c2b5a23e72a75e3fbfb2cd7049b9881f60563221f382b8083da479e847fa958845b723300bb93417f2ea97597d6d3b29ac3d36f1a6f8271f64731d21c5f66249ef59138ae77c245083e2aaa617496411704878526bc100fbce7b3702c799a4412df63758f0744a7647f171eed14f200563cf7c38cb2745d20e5de7b81d57238ee9f32ada5e7dc5a0e59d7d22d5f02f6a73df352237b5ea03e932ab66597f858b5d262f0000000022999e98706e4d97993173900743091984643d7a7900566702e48df0d193ac8982c7bd25b8ab4bfda8f8554a6931795edbe2ec16347b00f187770bb062475f3c10620bedab4ebb9d1c53a9c50568323e212033f3ecdf9ab1c558617fa878a3889ccc71d7ca93e697dedcbf8c89dc9fe767d3056619cbfd6445e81f548bed7f16a6c5456fea34727bebc87816871c4479fd4054dfcf7e6a0937c553ff8b7f703ded65db30d500680bd715b30fd0fb36de9aeb2e9a5c1ec5f24d11d0f85e4970386127c337b84ca7d127b511434eeb11d5f81f827aea5e85af47a1de346d68e9b3f6e372304c455d9d5a391e5ca7df8415ba5e4f200d8a19409a377ace44fcdc0c0a0000000000000000823a79c70baa9c94d837330cd2da43a411c6321595f80792bafdbfa075d7688474403f13afbb91a37193c2f1db56f6195cc29b7bf1d41e0c12ac6d6419e59007 diff --git a/zebra-test/src/vectors/orchard-shielded-data-vanilla-1.txt b/zebra-test/src/vectors/orchard-vanilla-shielded-data-1.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-vanilla-1.txt rename to zebra-test/src/vectors/orchard-vanilla-shielded-data-1.txt diff --git a/zebra-test/src/vectors/orchard-shielded-data-vanilla-2.txt b/zebra-test/src/vectors/orchard-vanilla-shielded-data-2.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-vanilla-2.txt rename to zebra-test/src/vectors/orchard-vanilla-shielded-data-2.txt diff --git a/zebra-test/src/vectors/orchard-shielded-data-vanilla-3.txt b/zebra-test/src/vectors/orchard-vanilla-shielded-data-3.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-vanilla-3.txt rename to zebra-test/src/vectors/orchard-vanilla-shielded-data-3.txt diff --git a/zebra-test/src/vectors/orchard-shielded-data-vanilla-4.txt b/zebra-test/src/vectors/orchard-vanilla-shielded-data-4.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-vanilla-4.txt rename to zebra-test/src/vectors/orchard-vanilla-shielded-data-4.txt diff --git a/zebra-test/src/vectors/orchard-zsa-shielded-data-1.txt b/zebra-test/src/vectors/orchard-zsa-shielded-data-1.txt new file mode 100644 index 00000000000..fb2c040185a --- /dev/null +++ b/zebra-test/src/vectors/orchard-zsa-shielded-data-1.txt @@ -0,0 +1,2 @@ +01024f3b1b4de23383f8266b54629446bf287f117f153fa5cd87b39a6d7e0d1ff79dfd24051fb4a5a6e21227834fb8d9d1ff8bca7ea7b76d3e8c061b2c58837cba37137aabc3773fbbe4b0b996f8f139cfea6931074cf75c3927fbd6530031d05f095130b94772a7a585523112bca3c7cf083dfdf11fefae84b0ebb36517bf121634866c8e3dfe5730d86ed8a8e6da11ed2878229c2ebd7d6a4dc6075710a393ce14f80e2e9a0b07f0f2768769bf5fce00e536579c3e9629fd88bb90a0220c0657b36de4bc04a98934925a4bba939c9454612abd0cc44c166ff6e17131ce6f3dccc1df74a39c4f318a9ce11131b7b29e20cb55fb664cbe6cb52fca3044a8a4606bea2713985055223d9bf95fbe242c2ed153732cb8224544a501ca8028aa02586430aae74b7ba6675e7c50b700222650a8f92af2755465949347ef64264446e7baccdd24dfe5eed8b875e28a68dc076627f4ca233bb46bc7f6f1c7782f256f84bfacf46a53e5725c33b43dd4c09658609bace1225560d98f9f95d0e8baf08801eacfe760b5c8e1a0da5091072384bd2d1a89255ad8f15af94b92283a40c280ba27099cabc61953944a3d3ac8386cbfe06071c764c366d918618f21c9bdbb14bacf0c64ddc52052282772f25c01980d4e4bf08bf70fa92fb3ab55728d9bab3af961d5042b5e4e3a237ecc3ee5b3a75145b7ba95aa2ac755211b70c73adf39dcb9823bdb4817aa673cfcb9a9e93f65fbfc4b383c5e6f9d8165cac7c6040368488627752edd8df31d516e359d8a96b522a32e9d1ccdc71773ea34b67de0549d736810e7e107fadc5490c068c6c422e196dcf2630abbb0732e4e21bf610a5e6fcd737ee544fb7f431037dc373fc2645648d140b91f772e22d1c5d107c4b1bf55349cca7fccff69babcda70aec29b87ce22698781fcc01e2cee5cdf244a821fd0d112d5e11e6e8939627218faecebbd9b1cf53211a8cbaedb8d2cb4e25ea424a89275ebab0797f248778f74237fdb3c48631ae3bf48b45ac3ea7147eda2db9b5c14952335b3628dd08a6270dc9d71623a0ffef56b6f426ae5596b00c796b3ec3c82791469ce92f406621a818872e42646c68d4fdcdf1c33d3fbec2090b9af99754c64ae752c06e25978cd6f809c67fcad98cf281709f137e45e488d13b6aac6594d907df375b9fe74584c1f2621ce55de3b8361789673a92701e2a76da503cb9790c1802259b57b8ad6b8567fcb097d75067ab11dcd9dcfa11d4fb6f807adf81749cec10b0bb20c3b8ae543fead2985c1c68946c0f8c2793a89b66f8254ff98bea0045ff4e0530c657be54ae45b8f50322752459e5c9d33b67c40cb341430a8886abef137d0cd98d4b528ce440fd0cd26209b8479a5fabd14f67bd1b0f9cf6fd228fc182adcc729fe6bdb999df4706f87b8ff5f841556762ab0b8e75cc351073e9e5dfc688e88fe78879e79b3ed17ab7ae05dba2fd68f479766741d65986db5d7745ada9895e047f76d6330f13ce0d89ff504c665dc6eb2d4816d9cb2c55e234134eb967438cbc7a3a2252aa6038a4442184d9becc59de88426f2096a9f8f83332020ffe1db8093a87a982f4f9315c6a009c986675faa6ec306994bb88db010c18b2cc502405be8e10b44ffc3e5c444dbdfb4830e2e6d365633b6aa49993b8bc0217228e8869f4a942616556d3274ead57c3e844997389f834e22568bc027c5ba500af7ee2c30d60a0136ece1defc4df879d161878110ba19d354bfe3db352c7a5c9b535a9a7c5397ea9ba2742b243e01a839933764c58deb9367bf1260151ccd04f85edcf67cd2737a2fb9eb6ee6c19a086e2bcbe7f4ff030611e8be36e7d308eb3a9548f949b364b030b5a3dcc973b9333e195ad0c02f554e0e92b8cb0dfccc8dd2f23038a2db7b13875c9959996505f56f35965b10a5965cdc8ce2e59350133f7101b078e0c544a9869bc22ad7bf283974b4bbbae2775f9bb1f3a903dc7690281cfaa1c56c6489ed2347977e82ba8f82fb4a48dc2046ce367e50668a2b49680eaca7a7a88690fcdb67c745ea2d2758ea8c678d45262ef6af5b0f4f6151f9457eaa17caccd58117f6f9933465fbd10e9b73a884c810506c2a2efbed5dd10e3cb4a14412a28a22458b35f19570c5b87a3c53781bf9651abee5c08c54ac21b4c4477c8c536695f738dc10da66f97fb1e00663b56c424e530fd66453035a3fdcccdf6d585dde0012ccb1460e03d48c4eceef63cb00715752dc591c2e0e3fe3228b53d6f797e4e29d6680db82941e7d67ac29cb6b841ff4c1b92a4a4f327e8a556bd6eaed35518dace042f385516e88f449495ba33df9eac5bf21ef85d3901192868e74f54321fb191bb351e21eac264f5d02929f332a6f88e93164877cdaa06d372ba1bafd7298f9cae2871e3c0300000000000000000000000000000000000000000000000000000000000000000000000000fde01c17cfd1b7aa8632813e611ba8502084522f3cb4c9a4a9fc2ae8fb0902de65b68f068fba988b8c181bdad47d44d3a2e1ecf69c2c49f8b69ede82cfafc67924ad81448ebce0db9bec9d0e3761e25e809257ff0d7b29cff484c336da2ce38dc5941c011d8039e72b6b53f008f030d221264242cf1efb966e9179d71c4792df9c2a353765544107080f76893ee30230faea7659e979816db3b6db9ea59f4b947d7504a74fdd9856cf69f30382bebe722723a09a22afc0cd63ad75703581472e23c4b1c7a72617a868bab3790a46e243c060b7e97d3e5f77f81e3ddb8d10c6fd05e2b25058ec4dd4470a72fab4f53e41eba59f4bb0d9457036820aeb847c7bc1647581328f86fb96dc1f5dcac5d7cbc221cb5513cf57964b7c9aa07fd1c94d4548700744a6387bc253804a2acd781ae4463be6aa7cc1ed046cb9233c00591f2dda4dbedfb37558c24bb85d05e2cf4c1f72d9d9e3c0176b980d7771686c0bedf0f423a370edd5158e75d4aba724309fd52157f5e7ea6a0b31adfa70f86c5f01eadd361d167bd4880f4d32498dd5e8cfd23ca90f925fa79e7ea7560bb04f7434c4803e95314e74c15a62671b830eeea026a718dd0969710465e99282ce78f208a5f8313015cd2feb1613f21712840279ce07b64146c0425a1482ea99e9b616d31e8d4c346e49dccf30456bca5d1480e77341a717f7288beaaf960ee15d844ad681fdf3be342e377d9847d19ade5132a978a8ff14d2e2cc80742f0d89b682fd245f651f3c729674cf50c872a75691c255316dc04cd0ddd11a3182fdad371a52116659fd876fd68303513feb3701c9df8935c9c86a8075210d401eaf2c7815d317f709f22153f5d9f2652aca2fbd0627ae5a38ccc8b61a13cef40c6caf3b5ad51afd5c3a076fb6a2587a215849d9c62f565bc977167186e6aa8b29f05c382a028ae85e0d2bca52326ebb0528e9e9adac1eb7085d816a7cbff6ee1df0530722b125681cfdaa5a2522138422fed411a164ef599072c7dfd11dbbf7e73baba76e19fbd556679a7fa3e3c14334c61995d9028cfde2d5d3454c608fa3167aa40b0be494fceb3da27fad031d03a4538958d3fe556599af0bc4e565a44488100e0b591fb59f2400058e5447a55fdfe1d4fac969ae8d54cfde99b3f0189d5405cd9bb5f813551022a6e3f5b07c916064b9da98580dc0689d3a10dcbd9da061a8fddaf36c23b1b4c918fd47721072bff8ab52825f0ca00ea1911338cba97a933279ea39ec47c20a2e0ed118a77caa5737bbf4494ca070490a081cc6949bff6241a6e89ab4cd83869c29690d5eadc29e07f9322b25e7e0a66bdf225d443d5584e2df54eab02186573d9d729949fae28230998d792b1a0d05ea1ee0ee1fa6d1631392e0ee1b606223ab2fa109ae349b8dd520ec5dd246fd4dce7fc116d802a581c4aef4bff21ac533ba11646f7b51c7a63f85c80ad1c31e640322ae7af1b7005ed386e8713ed64a37c29ae0a94c6f43031dc7f82e08479fd413a9c5c21b02c99c638c0a8166139e996d1baeb0b1fd30a1f51bfa2ee552c3fd17f517da095cfb58c7db31e03a92c3db1fac4886255a9ac23c6d569cdd1996ad45ff45940930a997318d451e80914d9b6418fd9779bae9764af5d2ba1990c7f01828c18416528ccd3edd362ca6e002b38290c74e77810478889a761d764ce1186f8a1dea8712e01629c9ae17c0b63d205cb410bd82766e0f8b392c6570d7004ff956fd1e89e306fd9519a5db3e465e06aa024801341651f3b6bdfea21012c5699c2726b6c4d911124ab7b8dcfc00766c2a338d4aea2522a4fb31b4c8638f636a4fbcae0c347af7dbba573169121870c8091fc70671734d48af6d51159716749a075b852416a95bfecc264beb21a769ff4e3c9c5023cf797e71a67df709d0b3d00ff717f9c701ae0fcaae410bdb0f47b996119c28965ef68afb173edfce1c4c0ba64099914f968837098ac1d17b9d5678c580be16c419e9928bf9dec96c361c1b4f395aaec054850bff51b1736adf3595b7bad6518588c8de3d940e90237b5ea7f56334e2c83058e336cdcca14d62b1e0e229b9c470d9746f644efeb23fc9bac52beb2ab70cff3e67528b0d9044637a10193864fe68567f45dc2f142e39a38ec6c12941850440353d31b9472a8c9aeb3d1b37725164848f604b9a6454eb9e24ff936f2aaad3a455484877684ebac2ec7568800ac3e804d35807cebcea9b374ecc9787f5077c7c10691d269ad84a1df62ec5233edbb7dc0e1317b126ca8ead9a28fbafdfac1bf3ae4937c468423567c166c618d758ac92e857252b854832545fa8a74721aa4a8c82822999eb2c80b007279c2fc084becb59184fc1a020f4b31276a774f671a84db1148ac389d00afccf74fb9c4e9531a12b17c9f75196cb33492941d733fd0fbf08554dd7ee858607b90cb1052e7c7755fcb45193d96b88e5efbe519fc703c2b19ca09b4d88d07d35f9943904b80354d65b62d6417f46ead03a6107ee1735dde1a2fb8236e233399c52e5771ff1ce0112bb9e3da40d3a79f403aa58dab7ac9d13cabe3ebaa34b4dff2b2ef73276ec2be8ff54c684dc6f3ace3a1247b14e55bde8b8687710590dea7fb51f4024f8522a3440a4703fd1af635641e6d936c03c03fd69eef8449f6239301dc1541dada303536a16d2ce1eda2e3de2ac3ef36e74698d08c96d1ddf46dd3aeab0192994c69701b0bd093e733c20ee0c3b0f4b496997edd1a089cca6388bdddaf44a3bbeb56831fe0cedfbf25c21460a64ef8e9b93b54dacdd407e9adcf425fd2a63351925966bda7d50f3823029434db64123563f886eb6f7d7b28ac14b7c6b5f5727eb19ed24ca18ea060c2042a66147120964354364f405ab49fd1e8b05ea34f23c630d8765ec6a73b70eae2abb5f780e93e677ece84d541d651aceaf5284bba032021ddc7a15012290fd1a933ad3844822d65643eec51a7ea5873968844088671b05b4b3411b00a55b512ab6ff74d8db8e260db4ba47792c692160c89723901705fbe445aa71c5adc8257699cabbdd22f25b60fb5c889ad09c7a2830f6df3cfc0e82ee5d7f165b5dac9beb6bb48deeca18da046817595c2c0f4cd46c4b5c113d31a5d15090997960ba2e854f0263611f698110241ebf7231af3fe6439c886ac71d9375b7c45b87f4ac6abe5cf826ea820d4b678d65bc29ae3b8b37d5e1bd157805ce1273b9e56fed0b3a2afec754a759327f6704a6ff42371421f9afdd5ec7a30a7ccddc4b0b04562f1fd16a02bedd4c97539400fee5782be45041750e5f4daf048ecd59915696c62171e8314ad09f2d604d582b7735572cfd5210ac2fc7251a043e5ffc19b1c4d04135053bfd48ad1eae26c99a9b631dd5f6d43b8af7933f9834c5a00c5698d91618d75dbf6b7121557e7a094fdadcc5254e3366f4de490ab30b9eb207cac1022590319db8d3626a0d81aa0f205d3891484dcc6d8b407942ff0fd94de791b15d46cbb1d62cd90a3fc41f72519b53f28cff7fb3d30941d6696c382ff08cd14a783b6e593f2c88f5604313f2b7b80bea6740b2368af266d45c09339e3ba3b227ca88c6d03083b6fd46049c7c0aa82c21d46c397dbb33253b30600fe31f796950dc09932bac3363c76c705d7f23f3de0e1bce3a42c00d30c169690dbd20cea04f096ac6b4c4dfa260496edfb84032d3a348430fb5357e8aa7871f0849ee5973d5669de1efce65863748997c75033d25ad84304510acd3f94005e42b670a147fb04b02a74e9d1b5273ff0204ea956c5611ff5468fa9b1d474611f80b0fb6dde99477826f196c9168f314b7196781ceec2ee5ec210c94bd90726c5317b0cab154d7e382d97f006169730477deaa81a2501c9ddd2a6a8746681442aa2b4290e35103ca6b39df34e5e6ef6c1427d0ea9d71749188962d896ca859157c17473058c66d851baaf051d5021e349cbf171db9c8c06ae11bf7fca1cbecc0f21f7942bfb6504a57c82373474b4ce1bf5af9b7a8198982bf17e63492ec943aca3e1f5a69cbd46c5337d224944d82a5aa219f3ea05902cf4ef4e83e98f27d95a82555eccf59067c502e1151cca43f37426684105f78513436ed138859b22a14da1eef7405a285fbbe1f72ed7ebf8a5907da9360d2ffb1d067dda10de9b4768acf13689ff9bf23c35b4c6e0a645d293ccd0b46d5f26ca4a2b38df6b5884ca0329929e72a2485f81aa2366541ffb1a733435c30917cd7387c1a0671d5c40a426da601da1e2d8bb09da80b791870713a8e60507ee576c5438f9dd6423adae12f93a91eede37edab8308253dc4f7db84d488f9a82d4cf680a633246f40d341752421627e01ab9db6caf27baf27fed19c3a208d7439b482a9ba3435ab53b42494616ba138fb7c56f05332cdd647d9e8ec518c01937e4665bd9fc7ee7b072452b82b3443ebf75874bcbde6c585440caecf2b6d659f344fdd92d8bfa840a6084787e7cbf03b664b0b3c52210590bce1041d64826e2c6c8ede27bf00dabb30ca85b44881b14a83ac3af83656ebbb389ab5c34b459232848fe67fc51ea957dfbea48390fce0502f44454dfb1915a717d796f2bc18f06d8d0a739f3751f92b3157a4a0138de35ca09e90ffcb94862f959688fa86d2f9526c28853f73b934add66b7463c573b315ca934bd55540d80d15c67f9f67175523821f13504c3f3d6a3b8aa672c8f020544dad3af78fd6a962c1babaf654cd3280bf763b444cb28eaee3d0578ff6b9b3401152d5ed101ef9fbe4c08df45c55153d77d46098a39a7045e9e663a7053a63c7186c010bec8756837c352dc459976ebd9da5e7b45a1835739a84ec1f4ec7214cf524642d3c06ee129b98f6bed17629667e8ae05706824ffaa6f5e157e92cf1a639a55ff8d5ef045c06417a0b959e5eb93d23479915bc231f53aaf9584e7da1f6388c9027b3ae01035c0fde3cf300bcbc289921be8a148dcf83418a9a885e829349545972df1e526c4256abf288ed3483b9d7f7c9772fa577518d24775174f1b765a3c54cb8c8d1a4eb898aaad023daa3b58423145cca88e7d6382a0fe25c2196b37b2e0d037e8ba8fa294caa29bf35b36c458217922ec76cb61214c5b27412fad9cbd34e596d36a2ac909ed004917cadc54d874c5b93041594c8c8a1885b020540e75e2ba6fe86491775057630f1399df495344db366c59c3c8551b05f7ff31e9ef34f36e0ff99ae1853c7b8536fdcba0456b937023b9b296afb2e501e46130b3953a1d3fdfef4fcc55539b23d67cd65b759ae468fefe0f4a7b5211ddee123b5ed08921014b471d54f065c8ea750ea25e7755468d6277710692536152db5a29f3dec2c4296631766ef280b07d1da8f12efe6c771df9b9a6fa64d2b26c030a17a086fbf4c3a72fdb7351d1e7a9d9b2214e0c6accf0ce3336d867738699ce023113a3e2a30b01e84ad0e906361d0b5f501bf7a75b9c71e4580e47dee12391870cc132d6bd2e7961e87be6ce1aa90c5085fdbbc0d126adb57a27342a0a9f27ae021468ba4ea45e535a2f095fe3e78071fefae9a97c29a609fd7fcbde1bbaabd211442f22ab226f5098cf596751e1ca852425cc11c26407dbb8de3bee681f1cdc3bb1c104204a8f3b91c9d0698c739eb1b03941cbf6728800a0a92289841bb6cd17004f8ec77a2566622b3e6447708a89d8465ae985528a3e5b6c6eddfdb94caa3e88bc9c1def29f403889f25ecd9af8a8f95ebd5e6c167c870188793903afe901efe47aeba1c9f79348f36aae4343a1f703b9ac018d7001a937f57b51e5c502b3b51f8e77805055ecd408b1fc59435ceac43ae205ee3e069b6e7c20d51878e9a07c8cb7c3a6159a2b1bcc002264f7bebc6b35e1b6895c21682f6d6e0f289261629acade803146b5c2850949a2ee9d8c080d121f6ade9c5f9032b6ca244c3479a1b5d30e59cfe033f2777748eeca7684efa05bdcf59963e9e4d6aa90ca24e09512a8ec4f6bb1f6c9c8d8ace283f3bd36efe40b5f6d1403f45e5846b05299bb6d7254a4ddd0a36b1b893791fe318e05b2432f5a0bb2926a7f3d4530d28d7eb4c7a251ee068fcf981c33b680a31bad210b9ba6eea516137ef4d6ae42a542b034c6c0912e4f86adf41e86463b5b6b6ded2314c93629a636e7169391ae885ec08369023c600954ea059e2e081f39cc95fa77bd963ce335fafca84353ca1136138da2f20dc88ff68a499abf9e83353f7e1ed528b19b6b5881a0184098ce60d7e3eeb620209b05303c2ce34524415ca4885ee1a39d4299aa900750f4762275a6ad624431477f840c58df2ecd0c5fbb925402d6ad457148f5895aeac562c48f9f0ad2fb10fa7cd9629347820e3f98fb51b6f174407ba6c858ac1aa43a3d61c8b5431ca740eb8d798fca971c47e59606573812b3fd7b197f393f27748b64f023f814641903c7a96d59746b3124f36c55f820a1409881775789a83dd66fa5366bb3fe645021aa63ea89e5dbed007cb7772812eed82b6e2cbd94b3b2f94091c1d22142131d20bcd0b9b3536a2f451598019ba8ce69e7e3f60d14bffff429b2f6a0891b21016365058dc069b75a4404eabe3dbdb9105e3025cfa212dff7e83559110847d20713b72d1da9c3b86e7f05e92ab57ef6e64b4e2f649605a73c2e837d69baae7ebd000ed3a947b766b03e2bbe50ccfcddc0851b2b374efee1af5668a50688c4b65bd3ba900cfc67b3aae5746e109afc7321fbd5dc5758703a29f90b669fb2f53de8c30206e2e89a47242b50b22fc532cacd1827a71ce52fc7a65e829dcfa8d65334b1af54ee32b3327b16d3d5a1f7bd11b35470cc336f12615e5128c554ad88ba99a2849d6f9a5bbb5886dd4a61393aacd0081ccaf880879aff5c10da8c216fbe4182edf2fa6b14fe97da97a62f4d052543c80657d5ef828cba8a2ceab3afca17271140f7ad539ceee75a83d93cee1b33d09302ec7d1255be8f03422733586e817a51bb066eebf376ec3f57435a76572c9677008ea62ae6ec06e2372771f60ee42250b156d8dda94f4dbe4a05852e1ae65b07d0fc754c7eb5a34bb90083d1611786c22519b1b208d4c20bb7a8622ed7f745b29676acfbeb9fe9894bd405c279ea3c007e6c66d42b7b10dbf2160c1645ee97affa14345b32363d4c5b08f688df07dd3177b23822e9a3e6bfb4fab1c933952de849e15d6f9797ba62cd63cce033185e112f9ed91cb1ef00197ef7c9c8eeceb48c2065b957558e3a6295e5a7be8ddf7583e3e3ac6bf3759a4a8e62830c785899132e87e2ea36dd07684142bfdde3bdf1e0f4a84d6d4478a134b7722a9d9f04f0182b91dbb10d49e0651a8c8af144bc8e62ff0e276ec1632cbf83d74423b286d091fec4666b84d852b27408feecf0037ea384d91c3c832cf8d6f2cceeec0444747aff65daf6404a4d6af7325f17182fd151b4de835faf3c34882b73d49d61363e58d2cdf3fb34fe6a47367cd78ced76091237353c403a42f7a7db06c71bd53056af8ff42ec9422d126e4f4eca8a64d151f2e6499293bb7646f949926ff28d52f03550467e353043ee2934153e939e40b4415db2f4ef11b4a8766b935ac8f3d4d623664b9c9dc8b1d241512ab8bb9e06af913e0c7b7962d41951d304aac35369b58819b42d9bf2511bf9b9976607f6027e627ad8787cd8c984a1bf42deeb484506f1f9967f2bcee7e09c60812bda9e13f9f3d2b7f93d78515b3e16ef497875a04ac9cceb8d5501962e98111ca2a236c9a4330bb9b16d3753b20f016fbb809893bb4a51f361a6eff0b87a956c742cf439ff916a4c55c2bb443cf4f9836c4e67c71833d050a53459f5583489a91b23adb764b1a9839789901d31eae4f83e8530405af73f66d0963e960d021ca9be5919df5ec2ea7b34d5243b10beb3fc755863316836b2fbb53414c1dde45fe7002abad1b8c3cf9f702465ef59c51fa34221e686ddc29cdc9c80f6531b0a2fcb96cab3cf48a13dd426567b1980d758fdda6ed900957e7b8667133f89119cd5cc022f8862ee7023c154ed3c7482da0b1205bae66292585684cc82f1822679ba7c6e31794eef0244a4fea5a452162e47093378183cc99ac0c68d569abac05da14ef0a9a3d2aa907d948d4a19ffceb086305ec684f011e67c2079519708ca2bd215ba9501ba75c30d1fe2b669792c51ad132e2f39a47af98eab7f38cdf43d342c0c3992e07bcea3c18aa0fd0c6164a48e2f21065d3d8695b43f42ccc3b0e449ae0e58b3e6255550dbc16c612968010500cbe8bd75ef6bb607df81e9d540e56c4c176a363d5a31e34dcb7a6be9f556dc9bd5fb187dacbe45c2bdd8df82f4e4e2835bcf85310371832b2190d0596ef8f818c600a81fb10b46098c46b2209d8b0296d1fb1b4b3f8372ffae2101d248e417b53b61606920c10246921c18d8dda130e403b3937368af801fc4f515313425c97adb525e4ab15a8664d25b815ac25f1fdc5be58b68d00b01ac9a622dbc0af1b63ccfa30ed0602efbef486dd8e7945943d89177e215153d9331960b5a3feed03b95fbe684e9f0e8f9b924713e28e99f1f64a4f70949ffc323e21d65612e385c115624a7f246fa392bd98d1d87fd2cecccead2a96444f665e34758713301b919f70fb31a4ed19cbe95b9851d90d584769f4afcfa8e4a6c44a10e56e8dd838471b20af352d499daf5446b0dbb5070ca265edaae5ad62804fcb2faf08b54c35c44a57bc7a5850407203af2bfaca86201545b721f1f32dd761ff12991ff1809ef1e4bcd7cf1820d2857281aab9dbd2aebf47a15ad968f24060bc3d419fdae05012bd9c159fe09b17f7b6462bb08bcd78ea4b705c7aead08c7d1a0e5679903da539932a92bd78ab3edc6f8bfd3af8d4bd789c7dad1079f6186e8e28e64408b6d48335c5fe8c316a2131b70471e3665a4bab350f97bf4c4794326711019ae19cad1304b2abc790da3824c19d2ad8ddf331933c5f200f9ee8e8a7451cfb356918cccf62ff6716911f782fcbfe4ab9cd39dcde7b90a65a676da464650fd3a4b4a75074dd7bcbfe0cae5d2eaf8f9e865f29172ae83b63b4ee1a6bdc0709a885908505afa4cd847fd58fad4e5ff96fa39d3ee5e0890aeaf428c29d6500154d1522655533c2421bbfade685f8b9217d781dd8fa413133a2859485b186e810c344cfd49df117487a4696986dffe4d34e3cfda36895973daae012265b396d01489e67a4e0b1ccf60c630fa018aad7d65a89b9dcbe631ba5891df5580c735b2e124789d6d04515bd06896677f2f6ffe3f07b418875ba36773e558e6c8cbfa53d3e35cf7c1ea6247861f9353db27826b95bcaf0afdc54d44bce63e9f65b9d592b2fb0ebbc2d09532ea15fa1a57b5b44ee9f478efd2454a52c46ff3d4f8df39daedaf0a1927ec46a38b69e44ba19a110a98ae5ada516d21951eb46d2f2641160181932d9a1baacd097f67b2d258c54d93dd0fc6cb3db130aeb2ca376b2560b7d013bf92f618c3735c7ebdd38db122629f12e32d27dfda83bcf8c20dc65f22eab9f393a55b355dbdb496e321f4f82c14484887b085ca62a0a3a4d0c2d6dfa804d3e7b920cc0a12975c1e2a9a1a68255164abe07a17b5ffa4cb0a87b18b3e9e4cb89e1d27cfa1eb0242fd8585e4a1bd5a4744b680b558ec3aefc9455f002f418b5b9bbe08954ea57b0a06cd0c6437ab4ec33f396f5eb8a2c3e63450a3ab8781bdc9564372f743416b1a60bf71393ed69a2666e30f75841d04bf2e56e3afe8cdaa381336faca15c2746416318ff73de73213b0afa5a1ae1c855b94d9b92b2c1514695bb02655b4082fcf1c5004841adef51a51f9fa2f736fdf573e5717a2e1e220b349c15aa1b8860d42a65e8fff39ed78f51eca12a0154225f630dc67b6136810b2942d9a713a8b950166865831de348634a24a2dc9e035015069cb2a84cdde0cfa6cf066be8a82cd4567fb5c6b90fdf1bf2fef482b02c9641d0dbc66ad55e12ed04d4d8915a493abd8bee7ec670058a9bb41972c200d8b0a35ddcb82d9576ad228f357c26d2f8c51e7b1c9015124ef46c52e5ac4b6c9c1bc48f7ce13eea301ef88abf3a8b191e782543db418293a3fa451fa830b411fd20360283b20439f862dba3c6cf2e0831c2c3aa1fb56ce734caf6d092b91facbf3df554ebbb606d615904b3631d8782fa3a3ea0581fdb68a7d87cc4c3ba59645dff6834a0bb409e5a496a07e1a77ae0a3053740f8b9fd5bff8f6bec65d622b1e55c80cd991aaac2693c9aa9179a9fb6f81fbf10a4f0f8094e1855b0f44a7c57cf19340bc81bec340a58d1a314b8b6ec697b023d500b5f9577667f42f0e7578dcd0ebddcc7e58ab5e59198145dff35115ce9223d7ecd668d14e60d5976014ff80e131089c929615541c8e182b9e862e0ae2f70a67263ca6dfca71f6866ffacb78119b9cef7d962b4f2d75e2440902dc0e620c83eaaaab7eee2fcd18828124c5fc4a8f1147b017df22e99331b69ba08e7c27c5398a562374c1b5d874a7758e1cc530ac90454af1ba5f73a5b8251bdb4671f1b0ea7cbd33f4358eb52eb04c7fea14b54e1564f59431405668e2b3afaa2e4ac975d382059a7bb60404d7ffec82af648bc4be634797c4d44c2ea3cfaa6180225d75cd76ce05b98268a3b6bba050f2f33ceb126ab31287bd341a0120a000000000000008bdc33e41bbfac714be1a07b266b120263af89add962df7e752c0bb7c039ebb3879fdc162c1f7072e7670c16cc824ff719ffa8fdafb900fd3b5c04ea718b2b2e + diff --git a/zebra-test/src/vectors/orchard-zsa-shielded-data-2.txt b/zebra-test/src/vectors/orchard-zsa-shielded-data-2.txt new file mode 100644 index 00000000000..3f1e99966c6 --- /dev/null +++ b/zebra-test/src/vectors/orchard-zsa-shielded-data-2.txt @@ -0,0 +1,2 @@ +0102f4290671353bef3137938ad3c19f403ce031cd02b2bd7a9ff0ca5931c926f11b8dcaeedc218a06c9b18cad3cfd2325ef92175e4c56d3f3736a6f955bbde34f2f43da326927a4fe6c6c908da15c119f97ad7d6717e8c435a79c2a52c18dbc4a2485d4dd59237372e1bf05271fccb957c0b2a73653b1a37c7673462fa093d581254059ad5b842b4ab3c3bff9c28280997fd86ca2280924bb0446a071aa526ff4b77a5d8a454b0dad7c5e8dd68bc56ce1dc6ff12e3e2ebde71ebd2eb890212804633efd9978683d03e2d34c6c877b6eae49b10764196463c17e7ba55b84e3f6b37fd94ac2f838ea1564e3148f7eeddeb96371066ba3af4c457fb99639af4cbb83a015aaa05fdc88b8aa13a4c5e95204c5e5cc06857db9f4db4f7350f494d40bca23ce813690e217380899d274f1bfc8a827e553530285aa991818d87e377aa400be8c6f42f2539a50ac9b948be567db444c074668f01c8b34e22ef5850fc18a84090b435f1ce2543b3fd0b1c08da3af5da34b37356cc3b3f41ada1f1a71cc45fbe8efe3f5d66fbfbd3cc270115646d9d3c4df0c2648d7d035ce81b915e8dba15d5023c4f03dfe10165ada52751ae623ce8f67d751e46fe0fb240360f31b90e687a0501833085ff66cedc379d0120dfd0a19c526118b673a31ddc38faa944a6aa9e3da4612d99df26e34570c5905cfac8c574bf064833ecd7ab54ee079abab62a24e346db3256d0209019cd16b94cc4e01f19cd603950d26f5b489175331aca94de6ac8651cfc03bb19f68ac96b3c92286502866c8e928125df7206e319b914873b03dd1a2834aded1f83e8cfc52cf7ab9549543ee4786d22f38a97923ef045fdbb10b46acde7462b4468be762c9b7303f0ec00f4dd9baab2a1bd87bd4f230de86f819c92c893bd75a5ae92ff02ecc42ce997e07d194a3e23cb22ec6ccf9cb40d891da0ac7a250c5946975d161040acd6a5cf23bacc06914db40998b207c2111cc7f3422b622adc257f2bdd2d4686d91d060c1570ffc0978740fd0a76bb3fcb30882b6d385a9ebb76a4fd8b8fd54b38231fd163bee73c6a244855f000290b105ef894eb192144b76d9b5d90b36497bd47386a2d3a10a7f680f2d21a76fad444a9ac7854c348556b3f027ce157b38ca9f10087e4710b087d5e1c24390780980ff46117ab7a16c3ac5a7ed2302d7c0b83eefe000ce2d728cc0008f1730eb171abca1739ee06ef3dbfb6e08ce39149cdd86a6f58500381bbf8308719098881b8a07b3680964fad01d12dc126b51ace097c878fb6f51c21ddefe16ebf79ae90f03adf4a7ba95996784f3b1cc36a238f7918f2e9362d5918d08c2f2cc6287b2b0c83495ae58efb8bf41239c52fde650301f09bf41e3e49c222bd44340ea62e694e225800f454454f57caf94cb8d2aeb46d74cf14e3bf6082fd096b1a5cc9482fb38033e0f211b57de4eb6bdb10a1eefcc95ab60c032a16f79f6410905a22753009fc52a386c3b75904037fc54231389ae0feae1bcf1ba4448c443afffbabde645cc1f979b4946d69b377d2ed69f5cd54d70b487d75c64f69b7f992d878feb01d55f01ab04a72d9ace2ddea585a07e4f3a630a4819082bac6886aa30b997ecf42716025ffd9fbe71e30a60f4cb5d33f06958120df4c13c6881eaeb584de08f15509c8a6113c9e345111256782d0a80d1498129aedfb7cbfe363ba19cb580310a4e0a344935a83ff5453e11a5d92d8eb417f5a9597612958b1010e0b905fdea6ab82757265786da6f1f795c5d17043f87c9ef39373e8e56c4293ce2d395c7fa9cfed867a957685202c8ede20d68aa246d1691384189ab13f5d447feec2f5e42d3069b10d9a7c10fe092e24230eddf2e3d4610aa9ffa0f34f470c0f8fb266a04910f72df83d288ca5f7a63fa91a09b073abede9e8ac69b66ae6eecb6b1d3be70beb96900daefe17c115e8314d67450400e041814102a288a12a46dbffca9f4a5c9eb4dd662b2a77accac11e2be2232702604ab20bcff9c5fafeea3c0de46d9206b8b76602d622a4887d14e65152d4e8661f0d2bc8d36854b2fa1f53d049f80dc91d38200de7d8d2b76c62a40a95ba0eed75c875db840a936adf112efa309fc0671dcac6ffe391b6575a30dad023d82eb8445cb44724108d464ac67f699326f65d02c60fa7bdcdd59693be492471daa14273785d095dcbd2192a71923f598f93699c82ce20b5b0360a877d0c99ec62d343cf0dba820309b6ea373a17a02ea0521e284a7be8fb1da91068ad18bf48865a39c8ebf9aeb1bffc5647a2b215c37da597a550f4f78ea49ac8356b9ab32d3d65d2a498656a6677c529c47f4f12851750c51fe22cc839c381fac04a57edc9fc61d660e28c5aa87f89a96ef64a1ab686a8457dbf548605409956ad15e4146f40300000000000000000000000000000000000000000000000000000000000000000000000000fde01ca162328d9306fe484d816701fb73093249a96dd4ec6ff6acdc0ce67be149ea8494778c5f33b6d752ca2c91317b3ff8191be4fa5a3373dc5a078d560a60a604b67d81e5584a0498b57b0a0878facbce7b163bc2b494b2b74fd33b0b9a009a3837204fdbfd817deec75c2977436b14668f121a3006328537cf05771d52e46eb73e452cd2cd453a7fb98613f012d8567c09cdfbf054c7e5ab3a08530baef1bbda1cb0f14ca307ce1c68a49b61d4dfde19fe099d7bfa7db5b48a7aad65feb45d3ab11d4e3da76fe91423b389b7ff6cf15c70e1b63737353ad62ed7655972a7697907be97e1f10f3736fee0bbc4fbebffcc2d473acb6d7371f13b26e99cdf83464e14efd04b449d10f98c70d81be2a92d3a29eb00881a9d1951dd206fe2ff97792524ff7c6a2353ef42877d2a78b9efa7e1f0d81c568e8482929279e987f0367f111835dc4c0fd63fffc6360d5b9fd220596d213dbd84bce8a362dc7d80c723774c034d83baea8188b8eb6f37cbf0e66ad0877821e1fb006d2c4bb36a8652fadc940a5dad25833c568866ea6440d8b598e5b3d89d46f471dbd37914477b7b7bb0b12a4d66b789b14b69f9aeabf755b221606d3e48bbbb9f80bbfdd51c99da28eb8e2bbac7ee190a9e9fd3da880ab8df8e06d48c790b46616bdda639ed5bad615c658bd4268331fa9fa49901345c92c01c4ddacf053e0cba3e1bfbf1ab5af8687b28a64559df8cd361fd0dc34fd89d70956528a6c298571e7b8abe4e3b1c72a42fe39b0398d4e70633f13283bb9bfb7965c9dbe5275100c9e34eb21f38bf91b6e2fb2d95d7f35196ff177e3d36fa59c3a68f959045bc3894fe9d88040bac7759f23f89f12d48424f175ecad466af42d570578785d81de73fe749ade7a217f220ccec8a1a71e9ac7c19cac2dac858297849f180382af001b178427acf1f008b8be0fe1f726ce7aa9efae9a39e1b09dfdc19d97b673c88fe4d0e7447427d53b93c98ab034b5dd84f7100f1d10643ee477fb24027878b802404041bbdfc7b591c9c51c990afbe746d9510a3dc71fac2f9e4a1557fcf93ac8f81f49eb2c1eb6176f6ab8093bb5c2de52930eac3f794001bbefc6b8b76648dae98ec6e64715d01cd06665581b3b29d0e30a3ecacf57bd1578230c8bbdd392524072d4cabf43d821dcd57bd2e9559d85683e33c959aec75276607095aa6eadf9cc257be3187d6c7b2bf898cb3fbcf723b7e5831ec18f07cfee4a679527fd45d6384acd22d93a18e669b0b9c3b9eaca06e1b36aa1bf7133d5a702f8678c2b46d1531c86004cf3530c3174f6395f1c1fd593278a7c75f2603844599f2cd0f3d7f061472958e7a8796269337d023a190082fd7f4b0106c0e8693e1eee8362ad16907742b26b124fec8fb8fd4050686aa3a84d123b980741dbec476b42428a391c360fc3fd3f4dac03674d1745b2122eec227fe4f005410525c9fe2c43b10e037243920b4cc334f4b721c0f752d1fd54de00a9b863cfb3b4de8e4009dbe7755adbc45b775eb80735e55f61c7b110797d68acd3738fa9f66d8613c182c6b3c6112f4220407dce6127cf7811d31702b7d78c4375b31e8b3b7609dc64807f76f9a5cb73959d70ed753e230883ddf6d9cefc9d71d9d7c2bdcb4930bc2ec5f235369ba6a83c8c0c7f2ec96574e0ea86e03324039e9f9607ad709090bf91c718a39b9d0074fa8ede6df0072d9b627dfdb3a483e9d82bef830afe31026818236c60b3ddef30cd98bb364248e6ed26c5d6218debf859ba227e4d270c78ea267c0978a4442437bdb0eba01b9dc6b5b24c68d13fbd57d13a926ad73f04782b7cb7f9b990ee13d8432e169cf00233c0bff5489957993166109be00b138ea1ef707d2ced481a5f79c55bf77597debc76e24e72bab5078a9cdabb9d696108aafdd1fe9fa46bae35e514fb7b90e32b28092264a6f150fe62627013280c87c242b3738bd825efc1c422eec42bae5ff7c927ea554aabce89c122d79df63f01794fa6ea080d4799ef132ce994c64feda5200e59b5f558ca31406ff9e749779510506c258498d67ae8cf177a8b6c9777dedb7a2d785d91926fac8009085b70980b3a3069477a8196de03c47c0c40162448fa7c849a6841fe6f0974c9ed87d0ed277ca1aa471fabf5d54e0758bbe2efca2d46e4ab9a4a0b356834217ec5f1f9d107b03fb39836a8423959455c784f9888f237b8661b7f61e64739015dae72cadf9d0f0e89fdbff5fa92f2d9c2b46379cefe274df4b73351161b8301281f900daad4b74bb7b8fd1b6de293cd6fc0e44e0c1256a3c88e487b5c6396f56d82e7fce06fd6df72553211e381369f2997d6067a5b25a2c79fd13b445cee1a8e9b1f33ae635f028feb2d47716813817cea8dcbaf512aaeb6db30e3b924fc9c0017f06e1de15453c2a9ddccc5b899374a0a1d415872ae7e2e9880b1b99f7b149689f42eb0cc4a56c26190ef40bdd0b31b8a46c48cf2784f0926ccb291a58940b595f33064990d3ea82aea1537c7ad5d5c77119b0aff8cd52048a191b40f4df7d0647ce324c9e7befef9b6bcdc050ee8d974912b3568833262272ea3f89312be68f98cd2aa6169b9991df68810c06ba52d32f44087bd9fe7adbb95f2b72a6d137eaece59ba7e1ab652d8942a4b940723982e287fae4178ce6bbc7b72cafe5afa6f09062c75e437c04b12a288e9baaccf31204eada712c00e323bf731fca404b7edba0181beb597a2510e16968c397ebe66211de340093c1522ea5c111aa7998a838ad84319a1999df57667c31f52973f016b85806296900aca2a18b3470b473cb8dfd4909d5c73959269100907f97c6c019aa750f837b8c086f3ad81fb4bdd846a6c4703e33af76764c113a5b843b22c429bada4d871c09461421550c7bc70a8100e3eae97806342cde5232b75fbd55a1eb0be009df690c9ae6d7a52c3fd459bff0845ddbaa98a85fe488e8b47d165a6e10156ece45ebbe9ac0d00e31aadaca171b75b60d92bee482b64c3c8a46a77066f9fd00e4863939074499a21a64cfc3d2663fa8f9de44382fc2bea725da3e16b151ae8183438e24ad5ea5571e3bd6499a91a3a58879f26ce3d94aabc4d2a7a61f9b3b6e1a2f90eb19de10fd3e4299a6d162ef8adfc289652a43241b4b30f35b0458437d17b21aba6e60d61f2f9939ebd684cd23211c04e6a0e66639b2172beb4ecb11461a0755671bd1819422a279b8eb07900a8d28457da27c11f662530aeb2b1860a50834da3ebe4d63af3baf263519aebc02f783114e7fb4f663c8e04118d6b739d34974f3707cc4fea70ec761d7ae98bec4603980b2ab408535cc952da8e8ffac1fb0b4f91f2df2451e14f0ab5deded57abce0102a07074662fdab890817cfb1f57f67d93f4348794ea20ec2707aff9fd41d73349af94fe7160c7c67b388989d8326d02a055f9f99f4a38efcc6fe2a7495d2ad7f6d745da9b98cbb7c517fb31ff076ac6937cd974c5f23b32cf9e7eaba5f143c74c4aae9deea5a79d846a739a0ce194b651a45c4ada742ab9e599aa66dc52eedcc0a25d022c27decd1a71282b0209783e9d443d937e1f08ceb39566da5055e2185f3fe20dc879fba6f0a810dda7acdef8390b699f530638e040d4c99a59cbdc8489fcb565c635fedf9546fbe53548b3d7c02686882f683c1d8c689f22db125f6fd2c27db33302a2e932c2e2a6d192d6e4b3a25739839d382457c91cee7408a11a8de41072f6627a8b4c52ae739ac438cd0c62eb31f580223fa7dce00a141b07000677ee4b04dc7113c554a03598c621cc240c11fef91e055593e2c285fc0595cfba2ae88b8f76e03e5514b53460cdb4206485b01005da19fdc3e59c30744867b645b0f8ac8179e3c32b5963939ca204d755ce5cbaf892157032f19c78111ad999ad0dc7eb7563fa3e418bca2c307c83ba205ae72d468613ae8f6e025a3cb00c13fa01a52cbc4e7f492071946a7cef8b4d79f0fe031f23077d7cc2fbc33d142bc4f2f74c6bc4b6a4b876c26e9bb4db17dc5433eaa1c68322259ad5a9ab0c100a064d8fba364a9b1a11849862664e022a3cc8445d21063e16d972d5a31978ff14ad5e8d64327f241914054c1d864aff5c554abf465b9e8e03c6fb24afd104891f74cf99c7fc0e3350388c135b1df3c07d472344e6f66dc2247698e01c4011d30eaf285a1520cb95d11e8c8d94bfc460467bb39dc652fbfa1b221a7c75e113fe4974f963580e2beb9966111779c24ad5810691068d35bcb73e462faa9e8a57e450f8420f536e35d45bff98f35d51def1895c7746bc8886112ce29fef65c65b1e51a0c74e179dec89f3d18e47210f7e24388b47d559ba1c8308a39cecb0108bf58095325922483759eefa9739f9e4fb02a027b998f2e41481141ccaf16c440f442a95cd4245f540a3e3bc797745b2f9e864c7480a1cff44c000f3a62aa94cfd03e1a4069de03e9dfa2ba7e51b90a33edc4752d7b7540600c4222c4962b0c273576a0d9fcac66999d58fcf1359ea2750e726036c34ea95b7e83335a4e7797aeb8426d64aa897c4d386553e852b3ecf3203e7be174acb43017413af97be803df2bc91958ddde78ef42d5e7d08c147edaea65a36b5110d07c29c017700daed2d58e4c6083bdb7b9d36b900034ea4f9fe801bcc1c3b9a04115fab30990b640d4d645cfc35e01defbec27c88401604068850da516f9a2cf0a05b0c1a15f1e766fa992dfa6ce1d0b6ca95be2d62860cf2902d08163c3a5361c5bf470cad51018e2f7c251688d2bb475b33c3c03573eae0be23ba5335d82638199dc12994270ac7ec85d2eb1aec9debaaa6060b20d1dc8ede3bb4eef745064aba65050b1981edf8be86bbb479e79552eb8b62e7296e19e9ee7d1f73efe9810413718b075b217279c05fefe063ba0a2f9aff7156881467464b671a6199bf15cfe579a23dd260a2c3fc824839fd808ea9a132c0e25898613709fcb341fd6dcdbf6d6f2c093f9229e690febd6e0aca45c173c5496928a0c478d0036607f4500cb7014e8a2432b661be42e60a498d29ffacfcc5a3897780a3d4a701a9cb1729dabe01a420388e2cf5768a355114ae58665aeb0cb7200db10eddf343f13cbb3bc935b17f0037a0536b908b968797c702d3b275f97d859b00a13ed6a4a520b5e1e0d1661f4806ecfa8085e6ef1d137f50acca6fb4ddf7f08b48b7e321b6dcd76e525c7abbed0a87fefd01e1a545518c636e644ba994163cb33e7d071b9d0df66ef8482c28d111e0f7a8846f86490d91ea645e5d79849959bed3eede7e76597c6c52bec7e4a539c196f10ba257d8bb5d28a6d2e6c4f71eb1cf80def43db8517d4b04f626c6a81ceab9a697d95234e15d89d2665e3c30ea4ba404df7ae8a61333595fa3978c2927c519d665043d5591280879c0e171f5c7ba73edbcc4aa9f4acdc0f1a128f2e82bed5e93e060785e18d897396bae1096a77ed47900a21dc76b5dac4ee874975608bad3d12f8b384dcb11aff6033f0e3d42db636c325a73e8d52fc73cdac3887711ef9ba886b33007ee7e181c3bb65045286f4b9f58631787d3f2069a88817b7a0600b1c0a8ef5855302bb696de787d3971194a967e14392d693431b9089c4fdd35e2d7fc7e1779bb8a937991dc7cc508caf6c428e70b98f288b30556e79ce87116e4c6da53f914af76800d4b39b21c951cbc0c27b70f4c1326a9360a21f07f9003f25bac96ef4b0c5cbf8c08585e4aa9fc7783682c227e5157dcd4a2dafadd8d0abc183327cee74d26ae495d541dedbd80c58eceeafb6a51ed9edf0db5baecab0aa6d4b37e3f5235b3e9cdef7e36d49b62d7607f2ed9691ff6250bc95d53b1932460c702a3eaaa202c91158a54c4456cd52e397dbd12ce9283273b7fcb4c6c1211d04136867fc6e097f92d0369b061a22fc261f30f6883c79e6fc43e3de4adc90d904261f1605836a509e63d71c0944951b55a785158fe585192f4975c40e64227b007ee4a929a71356e5c544a094d340cff1c6369453331f9d706a3c1b62ce5015d9aabe25abe59d77065762948bdd79d9bbb7be3a1528db8d291530e859a592f29c5e161affc67d93015b642070d1e99ea1e08b52d4243b658c6ff103377f8364c3ef216004a10a004928c6ab59e1b43a6f67165989308579b9bb9bdcd8aea136fc249ebf5169577c2aefd433cfe25b3f79acf8e2edbfed9c21df68cd2fa321aa67870bb3fc6b0f2e9ff6df33c3afd5baa4c460e58e8c53b544984339a329910e4df7d4d6a6792cb6e18bd89d4dc7ffd1c6e9abdc1352a18c0ba6851a9279f091cab2f13d86b1940751b6fee1c45e321622fcd8ecba25680d732e7cd05bb3531323c8418c5003de6777b0fb43794a1536a1d9227d37736702d1318601972063e10501b2fc335b39d29b3de1beb100f09f8947cc3c8a2bcb221b3dac76dfecc305a488f6533060bfdbb078c9a66ac1d267e6da37b601843c2edc0d6c93711a030e0a3b6a94df5d2f3327d686e80f7c19add6fe90b7fd78fababb975cb638dd730c14df21e3f6c410268e856727b6e7b3a074e32b5d83b2e78c5f810a7d67835394d8cdfa98f74dcd1f913719b91a471f7b4e87b473beed4f466dc33d4e3f2ef018945d1ba3b90a7930ea6ce25783ac121f27a8da60414a8aaf8e12f342880a435f888420bacbfc8ec04d19bd5af2beb8651549966c017b9f1cbfae18c74c5d72f67eebfff65210284f3af647902e9ee2623043ed4b5024d60807b62a7575dac0b7b6a24bf84576903154d21a8d112b829fbc867818e43522033d03b09c88896064ff6a2bf3eb09f90236e856b0e8f5c3b8eba0fcfdc1f6429decfe93c0f447231bd3017d0f93c548c4f2de132822664ea9a9f3e35027641195f070787176499382ba6bf5bc24c4281b4e33d4759c7d3373350423cc3342898c40ccf8f7d0ac90387dc1129ae8349f3fc08ae5695235a60c16c775d9027a5dfbaff2ff13c14af32fd5b7d95d8ea77c45d7aeb97d85f2119528c7f1bc646a5280786b51ee3ebe433613b8b324f492da4f4d9cd905eb613733cde62c468b40fde0e665ce6e485081f8245338c196dd93206d84d336651debb3fa32747062dd22409670e2264cc311212357ed7260c0ce60c07f4700353b8bded183d0dbe89466b0ae5e61fc6e55f3a9dfdf7ccbc6c141edb0676ca9637f3b7cf133ea6026b19167cad0ed20145d83f822dc6b34da671ef93a797037c83cd6a78bf4887a77a3bd448ce36b7419a361d23bbfc380809eae943a1d745dd48adba14cbec5047802adf7cf14c42cb7fad14ccda903312a370c16008765e92131eaaad3543640a730536ad219ba26c71a638f89d68023ff84180ad2bba492ec225829023371250c8391786b56c9cf3037912851f15610af6f0ebc92ac3beaeb3f0d8e2bad0f71d8927c8531eef02c57d5f0430245a0792a1d43d6940a2ec42a982d10c6ccc4cf04271b42f7af9b1f7106d2653fdb3140e70fb09de43cbe161edf6a87854cb095e8cb258cb721c1bb89ac327447da14ac9ffc24cf0f0f5cd1c76f2afbd6af7b6a4d100c7051f55a06fcaa6166b1a16ab3d59cfb5ecf620fbea9e3119012fc50cb72ba19c0f27dd05c09efa1038b38f2f210095babcdee74b31285981590109945f7dd1c0723a52ec606df118f6662c2036cf95602abe35b285e3003d4cf4d61fe7e43801c296424f066e792ae1b40ef4d4743b5187b36f1d0069b3bf8b2eac27e9e1f6c185bd0745ed2e35117f8d72c7d2f7baf560788ecdb2a5c2d78478bbffd56ee74e3abf27b57ea128166d34bd3680b02ebe149e863a52c29041184ef47ba9ec306cfa946f935160f311d0317eff2d9b915b4c2af8c5a74a1c540b0e429346375e547194a2cf0971983cab1e30c26a4192961b1eeff6c40d698e8bcc3bbb9afc8812e4cd7077675f800eb7cc82fe6fcd06697f67b12f4fccfb0dc93d2863ad9565c250c2c9290c6caf1a648f70cd7e23ccbe4c8221e2f6d1c1f6467d22888723b787fee45cdd33345a0815f9032fab1cf968703caeb08ee9ddbbd42d0872ce861afaa9390df4df51321912e620e9437811c14b425e1df6eb3da98e4589b2864065ee7178aa811b78770f260283386172f00ce67c7456a736b1f0735a5a97426993a160febbe28be75817d991743d26ae0374455118d9291445c1f4da308f425cad02555c90301e39c9238477e4546d4e9ebfede49ba184b95b58f09722c1a040c86fd24a993a3b05281088c3e30d5d1b948e7b2d8b4cee07ebc63c274eec8e7695acc030fe0dc164a631c5a8cf792fbfb0d5b046d7debac64decad1c97b8c6fe7dd95f45f78bb79d8726088dd7bc87977a1b559cb9795df85c435ffa7303e80136879fb27e1cc131e410d82f4da0786015038bd5dbd506eedf9b16a5bff2212c3bfab58d58d37da1372e2fb222406c7913e6d7ab7112baab458ab0953f37d583c6a6683848b29bfe713ee73ac634387657834af96228b5b472dcd7099fd9e10fbc7077d214eefef09b1ef001784a9e8d3f86fe0f8094d1a0edbcc858c1ba499753378b900ebf9ee4281a39015fd7d0dab5f2049037045c37056c6a840d5f813566fd90a824d516515e034f1242d42359a794a5688a9b271aec6f659b2807d994fb551ed86fa7be25c82670dc34859bb54dfa125538784fa27d374324e1614885f1d7e2114e792be1dc027bdf37005e669bd40647d143e61ec6b8d8644251a01d5a3a08e7a1bca4aa8419101498ad3736c655c55b997912c599c0342ec64acfa9c1c75e0ee2d3a172ac3d622b990a80dd2aeca2b8e3b06bdb7f662f4c60f4ee0846ea76fb7dccccd363072842fb961abce07c5895522f0ca58413a60b1db0f5f43d3a30729784b9d8723dd72372666cc131a332ae8671ba456d2f72f7be517bd419b9410d1af20c10b60d4411ffc6e691ec9ba84df4ba049a2be9e95120de7a8f36825c71c916992e1e1b14643b991c5e025f035530929afbaaa6a8593e0e08c535c9c3319621648edc1cfd6c6c6109075b19b7474581ccf4aaa8814ae1d83da11cec030eacffb8fb6d3b1b0c86ced3f1e5ffb7fdc59bc77a0811132dc24bbf6645a65511406ade0166900a2d271e574e26c8ad8f2bd2f29969cb255f0127ff43285c9989313257a63a0f2e7ed88b31070fcc34f7c1f1f8fdd911311724bfdb488c0798043d62bbba7e27f1763291abe668b9c59fdcb0ee261193b5f09ffa91311547d925962130d1843e237d30d01fb65860df9831e88157e556ddfe9b81916bfc95e2a7da9a8643b337d4ed2afd8a5dd99f577f4a677855501edc111552889d2e8eed3b36819957ed2d20bcec1a8a41028b4e882e06732155498b20860d8f55805edfbba9b088b61891ce678657cb4b57c57eb03720f44df7563103214e5da7d1c9b009b6bb4474bb9160f75a932ce961fb5ed2d0e284b7d9d0c179ba62c6abed15c38c8279d4416991d38929f9e5556ac24d474cb9437b9df730380f5cebd62927e946449328355cae01388889f5530f033bc7c88dcc846aa42c6b77488de5972868ea1fb0d733721b2b453bac88f8c1d5c9f6261868bec190e83c19a4a3c08ae958648eb093a2cca85d5146b9a4912d2c6ace1712f648600c5b7b2f79d6167ce64052f50df731dfa4870172013cdc3ba806cf110583b3a3112ca744497a1a5b4986418e5a065f492de9b43839b7b293ab1dde4630591bd5ce75155598b1d27d2a7d8372d31e73713be2fad3aecaa64052eedc3551364aa1d3b13f35f09a1eff9df6e78ab67cd114ace23de31f0c16cc9f8cfd96cd737a3db7e172c079a80726a60568bfbd05d1bd9177678f34617a78efdadff4fd4c952475bd38b0da71d1254550384079abcedb9b76b074c8e43836dc835ab6165db7e27385edced26bb995ee7728a17f7809852b4db1724d2988b241ad7bfa94ddf5d54ef581f3d6ad8a4d11f3f443362e353f2c2c3e5db8461d43fe5bfb98f59a412dbc8d99feac52668cc62738789ad4d7f82d63608fa050b3b0bfe98ae6a431f6505b9d1e178534324ac0f255ecc40930d5babca2a49f0b2d8e5c491cc57194b326c4dc0666a1007d812c498f618de8dd21a0822b5ccf889570c23503fc5b936df320bba2fbd3fdf0c28bbb6258cad892a7aafcf45b69a87896d87ca74a8ff7d967b02007f9c794b12963c62c7bd7dad5c9915ccd1e442851c66133b7fdf42384942f020fdd58c7984c906dd02d816d375cbabba2e7af574620db72aea85de10031ac3f948a41ddfdbaefb7ba80329f2e52bfdfdee01d0f1752102cf0c4fe52e647d07e13854628669ccbec3d1ae54e5a8912ca24c40992cfde82d0b079e3f2edf496f7d42af0a4e6af0a0d9144780d7016b692bb79f37e56c2994268449cf35d55a9f3f325f258e1f4c7d29e9b695ba523057af3f83ba7f5ae40c60120bea6b48943c751957e03004a40ab372ce134bae029c60c6b47c5affd297c7af982b1453b158010dc511c8174d7de15ad75f295e69eed725e83d8bb44d3f9a378461ca9824393225ece5e2fbce467c25a7ac5347d3cc8df6e386ca5a8c8a4296c54a276b403ff035913c51ff4ace6213438dc24eb99d7f477c5429fc397c116408fcf6ac736f46b151d601352d9c599ab401456433e0a00000000000000c514e674b2a4acbb7f91836216bb7dd917eda1bb61b997ba5c9d11f5b560a9bcaff624ef9a8204123e2fb05613c79617ce79185122f3af203847ebcef900463e + diff --git a/zebra-test/src/vectors/orchard-zsa-shielded-data-3.txt b/zebra-test/src/vectors/orchard-zsa-shielded-data-3.txt new file mode 100644 index 00000000000..ce1f63fc782 --- /dev/null +++ b/zebra-test/src/vectors/orchard-zsa-shielded-data-3.txt @@ -0,0 +1,2 @@ +0103ed2e55fe065508f141dc03d6c18a3b0affdd1fa65fe080a84ec40720c2d36ebc5272e5a5f810345fb6cddb4e526a375c7ce45aaea9acd00efa2279b8bc2cff234614bb9372f5fe6180783dddba7e44585c362da61552bb73645a422d7bdcb9b8e16f3e5b5d40c2d806d0f585a54ba61510172e612713232ec2da3c0075280d36181e7869205422509238404bad7f16da27a7eb8c01ed61d784e9396f788aa33cdade57165e84558086b7722ccfc88071e6729ef652e2600d8c1e800555f5e11e0f4ed32e545d3381106acee5c329282e1cdcfc4f138ff97e90e7dabcafca6d3bcb600f472b14b93e43166880d1b8398146028e8f8d007d4035661406a0b7853c91f05befd8836230f7118cc61bd32512b2771ebf80c5991611d955c8c3e3cc8d83d8a6e1adbf5d71528bf2276070c607178702245ec0e3f6f8a302f709db577fb82a1990a879bfe7df3b5a2a42aaaa8b701e5ad2a449579934f5b2c92f47a6ca62b0adabc22f4abee89ccfd2842ebcf088df34794da0416349564649422848dd6cf21ae592afeac3fd5bd140689e4b45dfe7b65aed403a4e32fdc89dd81647e15a9b7a38b428487331ccf966eb60a66b4d7ba69ea0c17a6e51bde0146a3db14764434642247a27a8f6c38f570600d783eccd522ad08a8344489f18efb05f6ffa45a2c39f3e805e6a287dc42ab6e9acf08afeb406d870b1a39bd903cf54e836459de0d3004189b86d2d5c3ad03f6b96cb4556554ef63ab4dc2fc5dcb4663bd49c481773e3e98dd6c8a1d9bdd4224d9d646f1ec446227b2573386715d96c0f14ba5a92a4bcea9f5878f75dd30528d307d4706caa855a7955029905150e0b9224f07f22e9477ad67ab6a375f1fda01da59b45b05e4c302e87a95b92ab90f8bd9fe4c923c061f36dbae32765822a6c14c73d6dab812f31d61f447b70b7d126de98cd9bf5ec25bdc87b9f7e184d55dd61d0e46c1aeaab817ef22ff43da7514438bd6bda9e684a07aa3650677eea9d3510041d0f45b0f956d02ddecd615a9c7ec3f137b17d4fd45dd13c933a08f8e0a638d3c5501b07df334b358b2d6cf71fc0e1717fddfd5c55cfb02f234332e1f4b8892f03e7315bada12d92c236d097b6041a5292b4a21c71019731d6daae7497243c16883da375fce31aca5e105ba66177cf382196d58d037b0d0882be766b410f46de7035960e27864064cb8e40a8ece60890be813b3632fd61d1dc8daea61eb80b5e8cdb74ca1d3796265b82fbeda0a40be43a3b386fc8d6b892b8dd6acaa699a492f09881da0cde963ddc1f34540d8ff4a9d78ae9750404a863909e14d110f0f447b23d824d11a75ac6e127c01db79d3c11d44aae5955c4625f1dd127869e72dd55ff9c95e30f5a0442a39059292b8cf23e11b966c9e1a127b6553da9ae4bc52d6e9774085231aead6c346bbf324e71277887647a02a6284fd3f5f06ff1e62df3790f9fbbe08922864481f46f7569295d2e3678a6e2ac94918c7baaacf08a8d2c5a34b0475c64a7f92daa6284a97472b55cb65d97363c8fdd090d0ae30dbc2c2e0d526f165afc115a48ee60841dc517f87be40abd81f929d42c3c996d6035a4a943dd233d66ef2b0dc941bae55912548cfdda6d5995495d2e2d2add2c12d302e8193044ee09c2d47fe5a1e2794cba0077a8a5b654966f7432a4fdee6a4b7017b0c48cacbe7b4ea933a17faf14024b74368243328b77a773e872659da2ca9620eabda87d82f65160d90b1d52ec8d62eb50151148c5c923b06e2abf95c1fa370bd0dc23726fa841a119c436e9e7b0ecfb6579538a95bdfe70a7414c85f0a21edb0d6bad5c025f80806390af5dbac15a96251c125566f58a2811c975274122d56fb1bebf47cb66ddf56f7100aaeee1614e784b2bd51cd3bdccb8d3cfd28107392be64b1014e6721305dad73ac07f394914a53e255dc16c7f20a968a050c288e2261a22a982e9069090a672589f399c3608132d066fde22e370ab725471dd3c8d397bba18f8c428f2a115d128c3281aab2b398a9df7711428a6238bbe0359addd8f38a78be52f58fab72e1022a161d9865ea6c98d31e6d6f34fc4351299a1579a1edfed90b620c5e87c8227f6a241909053cfc0df3b12ba850ab79d3f58da14752e60665e902fe00a83e77308a9144e9675826e726d972e7fc9687e983eeb14488939b71052aa9029d0ee3cccd5193899ae5a80af14d766bb3dd26088d22ad1522e8d855eec3b56da382d03e3cd564dfffd6b53863373be509fd395799554a2a0583d23f0d9a934a91524431dbdf921f5cabcb136490f4e757763712de7fb00048e7e027fdf471c14bc82b23d234eb5ff76452a9a2f0994b90b216c348a76dae65e355b1f0d2bade27ef62cac2c9debc3d027f59431b0c1c4fee2f26a07a44fc1c2ea56672b76c14056dc23a8c87d654e586fe873e0fc3c087b25822730d695a26876c00ad31fed19d85843bbad58f9ca97aff5b8c39ffe7d407a48239916e48889a6692d70e09323f62277f24415cbd7ee1117f6f073abcae20ae120204c2027f9858bf345e41e8a9755e4b56c40dc2e6624dbf7bea9fd80555b3112fb12219c94805351964bd56a31921fcd89e5db7c7397a19ca78bba6a4835f4aa0648dba44cad7cfb1fa12d81097b50ddbd99f82e395a4f0573f51093e74ec774e4ea12bb990c5b161126ab8fb1440c2993bfd25491206220436c3ff619cac39a717c7f003dc5eabc372803d3473d03d966a7ecc6558d2db257e5992de1003fe56dea3fed54b5085ef002ebe00991c473047a84959d1fca33b2fc0f64d78d1af5dad1029bf7c862d04e66ff345d8b7fb142a5932f8a14e20c14231a0d460db486ec2bd5dedcb3b2ecee5cece1fe677caff36c7521367c4cbc42c3848ca6a574e57ce716c77b509b554549a7eaf08cdf9299447c1ec6b91b85efae2a40898eb09fa4184447ac18fb6e7935fd360c5666523205975ab5c01d129ac75d818f0f3be92e7e2c0e84c79f3a5343a9033f694ae133991df87dc4959d16130fb91296837aa501e77e0992bc8560192396f64d9e2d8910018f4729ada0099a6ccc2ea623f5c895d4d98182d1d25e357b48e2eb846a14954771ef4dc60d5a00fac7312d88631c2a8e7dda8d4c9ead9c14ea8bc84e3821c0d126abaede2695ab8a7bc74f30f3a056d8041e563989776de72eca7323fe89125a359e226bc28cf5f5b2daf81b6bb011ff4a4bb4bf8c5300f6118fb8b42a39cec9626ca1d8197185c5a26ae3e5c13ee17079e5e417f934d5623d8b9896a50a99277723e6c335e941fa5716ed3651ce0e7fd11effa11e58207589311a6cc0a7afc45f1b3f0072701cef5de450023552e625e77d666264154a3dbe0897ba00a7a0f5209ad03e2951ce81d6168c348268259da35c459455c24c50e72386f54cce07f60fc648ad2c8e1d3cb78bda095c7317db25ae2455442595c3019cbcfb84b9223facc841c51baae1c345e5e063aead519d94812e7fa57996b9801fa4c138b9d3ac8d09601c7f6c08d18774c322a4ef05186865b17c1e8c5066ee5484a9270a7714c0c2bd5b1226288e32472ccc057035a9c41d0ab7d5c5a31c92c2298320290a17880300000000000000000000000000000000000000000000000000000000000000000000000000fdc025182a8902b4a3793bc4cfa8ccddd717185c3ccb9b9a327fedce3377eeab36ba3e2cd23fdf22ff824a58d2444c02e2b2ad39a32de12e62072de4b2d3c14eaded0e25fa1690591fdc286bcb29d452b8d478b6f463ca50816ee14e749032c141001fc264c14af6893894fdf25e9c6b69f62a904654e220517af1d486dbe0844bd012ca7f297a43a5daf345ed0fa8249666201c3405af3bef0a79eba95f72f72faf1a67d6cd04ebc21a280d56ca7b955a23f94ce614a98892c88f7504ab3ab9ae223f6b76d52293cd618fd2b03c76562cfd8d70008f67b30d964f153075b9199563a4b0d5ae8d17cce108084e22cc211117316545f81069b55ae0f2051d79414e858796e1396b5440ef6350aaa44c3620dfd5a4d8dd5d470509fa59d0ea95853043bf913ce59645517b2470bf9415ab689a023fce0df410c8204423b5d1d16c72ce32232b6e090195ef53fa2efcf311a6ca1962411a68197a750138060bf56cfc8eb7a7f9738556ad74e0a2f92d017441631f9ed527431ea30e59f003900d890970279f4fecba621072c8b2c2eaf40afce48735ff56bae0dac0d0700ab1a78d1d39185b84e76829377f066758c07c594f0c3d8b998a35b54bc3bcf89bc5b6d3aff7bf90e5e451cfa79dc60bce2c0d1be3cf5191dbe013c59dd92bf047d2fda46e292b77070c1892605a7eefffd4e01c0eb79bf97810a758d6198bec2e0a6c6aaa249d40a354f149c192ac8a77148a3a8aede7c76ab28b4fa76984105c72b306f42a3ec6c4bd102e00198a603dc27644048b0688642cb129b76a03eee5cfd752788e1312d44f83724ff10419da66457f9688f0670d7c6bda1a77653fa207705cca051ba132db7f4a28ea83d25f7bbbca64db74a17b45c340704498d314532ee6b11093a1ebc763a63b234efe3c7944490c222d4aff1d6cbb3b43e43849503480084e2f950c5abf1e05a6c36b4854fea2e27ba11f779f8c1b7d9e7fa5d17b6f67777e06adccd7df8950b7f1ee32fea85fbc9ed12509b5a6a2e7d87c6dff9108b29e881a15873e799644c085c7da4ca4ebc281ae1171b0d57f69880906188761229862845ad0573ae53d3ec74a321b2dd1f948c7f23c7a86aef4673606454757c9aa6880dfa333d44ff11db14aa7624c482d3e0c1eb2efa609df912eee2bf793f72d062e093de6afea94e86b01ca86f81b18bd4247cb621b5180a9ff3209be39d0952c179cbd7a71701cb122cdcb7b6a14af29877a56b0657e2aee606d072c8442a5a2386fd6f555f8cc0ce1cad545c437af97d8b6f6cd5aeb73160fdf5679ff4b1c9ebf6877a800e3498e406cd4ff18fc05fd65ce186a4787fc08089f707fcac6885b3583f4818ba3a1ddbc5cb1b7db76ceec245fa9b91f35e0c9279d1a7b3a4783138b74a5b5b85a4290435dd8e658b00dcaa33484e4b3de2bf80975fa73b0a090b08d3242c7e0a33833b6572a35fcaa7d4cd0e2f9434743adf4e07e7d49333ea1078ecd21aabb7dcec6861940ef05cdb8a8efa7dc11721030da88c85e8e639ef2f8283479e06b88c8e3f095862b5c67f119a643355a35157442ab39f0013a69efaa8ad4648343393a11cb27798c3ba4fde4f9b334d21b28b21eac8f69f1945f556eaff53f0d5796d9770910965ece9695e2c86177a66281b1740a385519ef5834138f929cb5550548a3b0b1d76f6e60f49a43c57c4fe8dcce5a6f2cef94ec9537578ad7ec2509719ba5fdbe561d77c8f20d363bd3c99735d8f413566b49958aa4a329b719fd30e2ebd7c445ee78d79b83f7996de5a2e482ac1e3c2cb5ced92a784a8402f6f7bc727efc97757acfafc19f2d1c7cbfc59372f00d2d744e058746949f3d0600373298a1dbe45dcc94322f70a9a3af8da8407f4a1f22eea2e94252771cb530e13c7cd57691a7848b1f401473ab3886c16520bc0c84fd26a76949b52c5026befb00f911f0ead83e78d74c17d60a624072510dd8da3f110b742d6abef12809b4f7bcb15d4c899b444259085ebc7f4217ca1e630de9e421addea8ed8b96c785f6606d464d8c1f695811c225430deaf7d428cc1961aa1908f5345b3f757bdf82515057b5a325e4824afef6bf88e8724011ba00da5803445917c0f6e2fba34d2d90e40245a3f9f7d466e0d6bc10d51bcc50978b0b6f2fc6a7e73591c6d6decb1fba38801c19abdd66f21e61ce9034f101e296e991329bc7fc29faca2f2ad1051c47530261933d2abc7849ae42a71fd52f37d0d41f80b488173d54505343aa0a000ea57f2205b3705c1523499d8be7e60107a2bc6e8ae8300342dd9418f6239abfeadf0cd14c215d14720a8e7935e117dd572ed67e15defcba9e466c1030281bb0eee754dbf19c259add47bda2f0f6cddbd9dbdee93411b324b8e10b6a142d7c8112406d32f19618ad55991cfc90f47d628e89a1678835f45b4f32ceb241612c9abaaee8959cf9c76da8022822af6a967e87847acc41fef08d87b2237bb4d9a793e7c63e5535914fd1477f334c3ed523f7ac9360dca7a9832480457d7ef63b7cbbb83c11932586d41bf2b0bc81f0e0edd1a00de2d715efeef3715f82737fab942996cb49cf5f63bff304d8e23bcf6769ffae6c372218bece4a66bc60ef4104fb3ea6d4dba9384e87996cf16050821aca71e5e0765f6db238b3661e00c413f1fe377f7c6c805389415a6f40cf01fea0b0d42397f9fc5f6375cbaaefdfd5db218919d490e47b0cd62ec141959952e78ade7e6f3ee4b4e1c735800cd03d346e74c5b6531c1b98579d718c9eb3df71254a88f99ee833b317f9b281cc2c0928b09c123856e30c42ec5750453c7b0fe820b3a2efe02b83e36bcba3344fd272f8674bcd255047161dae8656543f6cd7fb9356c8365a7733667cbcb49eecb4b5ff1e91f31714b02db69291ad7bfb20b0e12790810c483e3d20c108bb93ccc1f31d83221628f8a5f7dcab5d05fa4319df315a4112409b91ef18abaf81a806a739120fcb441d3099e86d4a97010acea334b867f685757851fbbe82d83686f2c671f25b31f922e90a367b806025310aea71b090d65fd0bad33f69310e93f277580985c8d1310cc54afceaf3afdc7ee763d96446ced414cde8d9fef4b6e2f873f9868dd395b79193e1db155d1bca0e4ed3edc2155f603bd2463cdbdd3fa5f18bfe3e04545114ae0fbed2a1e7cedc10cbfd5fff385c6b8e7527732e989f4a6acccfa4d9b3067f12f395fbca48d8b6c9a3e4a7a6fbf7f79af8bcba08b454e0d7010efcd9aa663810a337ee56469738ebf693a804b61b2f2f33d7e0370cbe5f122aefaa669c79c29b3e789c6114791037fff7db3546ac70a5032425c55d431b347d63cb808e98c034a034d637e7dec8fb27076c6094d4e21ed5751dd8e21ef1139929563dd4fd173e40fb98ac23b9cafa7a4a7b1c1f385078fd96f2ebfa92e2790c5e0113c4c28007bcfeda38b06f5da7e3bf60593898af6e80acf23e3000f6811594e49fc945a214a134e8fe22f6d081c456e82fb4839cd906bdfb97698be7ad2bf99795dd754500b437ef8048c572289b4b3179267dc202bc699203c2a625f479764acc4d73b534e5656ecf8a8b3319502dda95748b4de8d27419f23c8691983a19434665cdb406eb5740d43908910206f7e54b19736e8ad2eff910fa7fe16395eccc4a1d27210630b2efaeaf1cfbcfa009a13bc83c3d20d2f28b50acbbae0c9293221a5340ef3dd784f659df3e8838f273af5526b93f71d18e0f9efc82b2cb2f5430d8b748722e9c4de76327417c0b2ddbf90c0a1fb31e623b4d549c5505a24e4b19ba0aa37a302d715dc87314987cc65074090fd723d88f21693f21f5df8d006f0afaf4df9732c93eb35aa9dd65336c5ce4672d2b5a0c22710dea62bcdd9f4772f7e737ef132bfb59d99a3bdc2670a0a5915ae6290086c24c7c1602f6b060bb39ff187f10bb3f7442557696e943de62d6a90cfcdac9bfcf6ef25d927dddebdf51fdb8856c2e384b44749c31b2179bed543022ff3248706340482c3cdf7fa71d1bbefd99aaab1693fd06f0176e5fdc97dee40d57598ab1ce8d07819cdbb23fb2db14ab33ce6f127d522acc6a945772f1039b03965b3487c79cb4c6a6aa6f90bbd76a6f9f97553366f274510d2e4bf9261eabbc8dec5c96b25f9e2e5a6f715f048b2412f1fcdc243a8051ab5e61722ca66c2d0ec397919204dc22ebf951160c91a3604880e72520138d38f31cc2abfc204d82fa9a0bb7ad962a0f83ddf97fb65b934a5af615c23aee56d8feedd155e9c01ccf201e8f453a3ef138e02e7f08e15befeb75a16d3812c9bf9464c92f7b0b493e82034a758291115ada4fce8d666566e28667040f6e01b5de9917795eba14cbe9969b0e8fd7f2fa6feea2af20f213657a1dc4c0797e28322ada29d781b0d78fc5e1f2fe2c7198382dcfb3dc512f90248d6a49aacd991ea77d34348f330e71436dfff776eaf69eaaa58d50f751438ce7d5acabb27aea197c2275a85121454a51c19f406be3f6262b45b804fe8697793a84483ff0aa6f1fc0d5b0d1bd9ea1bc1b439831ee5b9b4d6937e20be05fd0a4a655138b29fcbb086603fca7c61f39fe1fcfafb90b3ae89b7f446684ffd6e058c49aa5455886e63fb01e4246c92f5ece028567b6cb6fe0a4d8cb566d8ff8f00403220616981bdc154e437968c32487d263d677c35886e530d57433339a72121662c4de2d278c9e0469b1cfa71bc03aa5256570a74e9d8720b6d46385c7e50022b91bda9826df4820aa6d08f04e7c2b32c87c34d1e97904db63c97318eab4203ec9ef6d8a7ae7bc000beeac841e0151f56a08e40c02e41cd9d05f1572af57a03bff14d560f00ce60cff1d8adcd8833f5efb719e3b06500568718a9718534e53d8bc2c7285b2b52122ee97196aab9f6acf49164762beadbc0f7971b0f7c90a3c202a72f2b65acc940961f3abc0ed0d01f88a0bb9f20cb1d3b7240e9f9d04c26d23b029001d7d3dc307ab050095411a4b6d199b55651eaeaba0939b49dead6317e0be8558dc1faa7f2ed49c1e870cdcd9d20ffa02a23c15dfc8c99c8ada2964a96bcae65148f021f23ed2e5e14be1e78efdc8fd16301c23859ec22e4bba867b4ef905e5cb776647cf3edf33010f5dc2628df5a8b285feae5e3280214992ac99e92b9c6cdaea15ee450870d3b42adb545f2586766c6223ee31bbe497cea00a3c7e301714d6cc0900723df7386d562185346cf315138f2dd047e5b71893d60b72c443237909c71e3b590894e03923da374d8cf7ed9dbe5c6a6fba22d1d0bb1290d077909d0433c3444008d93c8eca683563c0f56e73597ba763349102f2f46eec2e8cb845215e05344735a79c727ae13d7a2164a882e0fe9e88f60c2d4315301595ffc3eb063477957d01b5f5f6ea39e0ea96355f16f7f8b276b8a9431a31baeb82e0234ac90cc426390bc4dd0b7c862cf18a8a987169c355c292e7f51ed8d928f68b874099cfe863422c21645786d382b3ece28e1b22b4546396e7429bf82235ba4bded306121b7e1f350ffd44b037ccc7e7993fcaddc477f356eb29328f876955a3929bf450dc40fa160f491d0782396ae5dd68b5f22478ca34052696667cd8511795e5db94e2253930f2bf7a2d2a7134a3abb9f9f7fa3217d548d0099a2cd932a66335d6a3f7993d2777ae3499f6627bb583178709225664f72b42fcf0111b10ce9db3ded7af9e06155483949b058db23d12bf1ff3033052c10f8cb2815294bcc331886eb15562ff13aa370dfa80e5991b5f9d96a6151ef73d782b14cac899ecece7bf6e85c744d8193a1a2da774d3c610590084c6f0bef9f9adbf763bf337777a967a5b1411854e2b78bec43f80c9dd89aae712b0914c00b762a2a79a9df2c4a6b02531164896592defa6cb54d4a2e9eeea1976eb10f6fbb749cfb7c877153f26d44a07a3b7004723aac06ee9bb2066a6de50aa9114884c210ae69e2dff6686e06a4e59df4dfbd72da33b256b05b9119ee67b753a7664ab02aef200a90dfaf43a5e4aa0d91fa84210e2b5e1c442788f4cb4d71b64e8adc517dcefea1a97bb51d1fb210ffab3b2211a0537385c337e55dd7a83abd2f39ae9d75bec890d9be8031c16672e2a77f91114df19158c70181d5f8f43a8dc3b262cd28ddc1a485b917cdfdca1115962aa832a74b448e0531416b53043f8bc7fe0a967ba4b67892855b08a1d27219e55506634a72e25a490bff570d21efac780db6073f2698e3b295ba3949f3f81c7a858e63ce61db5e82bdad1f860c47f4b88191c2e7066a0da11e1ebf30ea90d8b6e39bf209ae8a88648095a74033ea38515eb6a44809a8440fbeb525fc1a069b4269d481490e32c55fd3c77b182a70236ddd035e3085e9a24262657f775bb99aaaa785917e32e783bb4413f7e62a818312acbf3a16753c52c6057751a0f3403be68c7792fabc3428b92c5e70ca6b833b3aec58fe9397c0a8c11a5c98b12d288e20663a6147171bf92352482e86e6cd714f01ad39f81fb2d9e0f1a0f38a323dd51c193fc1cdce3f1acf3ddc6bd5c78ff51746a742f8656e122f2f3cf6a17c1eb9ca08e302d2257411da47ca07b5a881cf8230cd33a32ff9e1d4c1bddd7359fb2fd4f16e111888cb7e7dafc41508f06d23870fc25aded68dfd8a73d9b20d55f6ed47373e638517c8300476ae7afed6bd8ec76f46ba0f46f679cf34c1b4e89bfa5de39c0a1004ee568a59b7130285b5b63111d11c0fe40050ce33770dbfdb82c89e47906360c616679df1e18042f91efe59e2750a0e0a8408c2e25fa6ab9329a767e86cbb40a58e52d49ea15e2f29193c8fa15c9540834e807b34c51d019cf6ca5bb38683627a993dccc1235a8b4dc26d04e45a2afd7d55a153812e60a52442c399f452c0500a0284f1260dac5c72ec6cd2bf35b4a8ea4d1beccbdd1cf969095d83e85749c3db79f69e7f0e3fe28ca19e042eaeadd4a4be2ad3aac47a68d9987189f6c731a274ebffd786230015319b8d063c3c02a63f1644d29292cde32465723e337cf0f132b1904588b0bad0d2e98589cbc332d6f40c556aa3dd43be9d68ef43122235005b6541c31bf4b4e60178e8c45f8fc93ffe1fc36b43f0f32477093812afc74b30ad395ad6fae4911b48b715a410651b2d42664ae5bf374e10ddb32b3c5d0f17c3a2d6a9537b3684b6f97f69ef7c26eed77ce981499046809aa2be27b0a4224e908b08b49bbab299968de2cf3bc2b1888d9fa3408aad2c7657925048fb70cbb8217e4eb7915ea2b65e32c40e2f969208fe39774bb4c18dbccb00f6f9a7514a80f0bfa6e51a8e790b939556a57d8b32be1da720af980ce799ce960e22c165a44e8278a0a63bad886664bfdd37b49a00eb0c9d77130631be26173b1ad06dd0eaf151cc832da2ab40050c09397ea9d1500e0fea6bbec09b49763954e743cba3ae5eb072223e7bd8544eab01aafffb27b023253c43a208b6d5652fdf066fe41d4630f3f29b9b54e964fa7b7063d52b6114b922c77df523fa462d7aacca7c8756744b32b04c8d67b62042aae128cf75e563e991d46ca8830b797d4e03f03d46a4255730a361da9abf9b821a313c8158d9794bef6e5a993170a91a47b2194e2e526f7390f8f01da7d75ef5996ae037275ccbb66da04b5cbce4707dfb036d7a0f515c4b414cb1beb5b4638a2dc7883a380447445e6ac0ce570d62b69078f30f5f28ff1bd0eab3448b9f6428cf3f56c537c0be0eb349fff60dd79fc2506636c8e692b772e322a968d64c8950be356b027a3fe86a4019bc3f724642415e2d585db0ede13630f3a4c340d117426576878f6e620fd67d3c1ee5d1f0bbfcf3c64b36d1c24264c1da96ac77ced1647b7a46ff430bbb1b352051ece9652e807cf9f502ada762be60d096efb7a8c503dcb147a5003c2befde2c140ccdd2d9708635ddaff36328d7b177354efd57b8c9fa1266b63f1e77ed9bcdd7107d606c7f178ec854509d47e9424c8330237ab960a90de04f233dfe4b31725d55b09b95dcf04170ca0cbd5bb463b8834a73230c00628b3281b4c7e99e483c2b0c4ab4d3671015f62e710d439392ab058f4755252c8314331f4366ff692562e241f15ec8e1de48c56113067f8241c263973557094dc0ce7c21daeb59e99d2d451dfa211d75add61cb603c6dfa8a0e2b25e3dffa409237d8ed3d0e24f08c97a4e2eb2b0837762a85444ef5d7303436fcacc67f1878b4cd47682571ce2b60926738a4c5812b3b56f6b1c76a0e21b4255727b9c8d709f81e1591e04207f8accd81ff781feef5c5c1eeee737ec5f0c61f3785fecb0b0be5463759a0acd3c9841fcccd2b95284313df36ebb6000957b53645b8132b9237e1de8e23d11e5a3061cce514194bbf2551e235eba09f3a029f0855334ae08c3fa3bc3329ea3f21867712a495d9f3b5b2a9fe9575eccd6814a418d95324a4ebc71f9211430eaab9974d39a2343e8a9c55461788149101b75b4c1dad7e0899f3a2398fb23ab891face3020d2aa48a976204778f5729b0eee4a6027940decb86bd216aa5d25f7801a049870c8aee20cebfcb4e7082376eae71d910e800d25c2554c1af6442f58c7f7e7acb2d6871858a33b2b0400e66374182fe113fae8627650973a851ed66379a026ca28d523172624ea3f2e42825ec977b09f1508f54ca99b4a9fb415e143a19c660609550d58059b8cc3acdd770b3e57d5d607057e8ed6a3331443187bb58bc58cde0cd04992e2eba23bcbfa56b92b6bdc881a770385af2553a9262f7e15c1f7e41e52e0db95c5248f208e6412e8628dc64a0103c39b1b16bdd65bcdcef15ee55ef3396493f58f95bef1d8909a03c150b6600178555aed6b10a46399ff37752ceb127ac246a79b92bd1f80e6f7fe673ff8673cd80ec9c729b19d792e55e0e8c819c29d9c8c97f5ad67596a56948fc495311b10b012c537fa598fe2f6b0114a761f8c9b1d43da70d63e4013747d5692e38fd4062a315786c0f31880d826ba72d7d417b09db547a9271d55f0925b8effac33b82b3b585c7f55635d29c68e44452e49f1de93e76d8b2d8d8b3c7d83885b50ce7b026b839ec416aa5d5e423cc6ec74ffd9cdf56b81d8b73e666764548d8ac2cb363ee594b96636f943b71f26b7e8376bbce80b703a2a20d86af7a366a202c04fe81a77e3017e225a468e71673ad9849f54d1c7c59444d757dd92864a6ee9749340297cda7ce5b5961015a7effba5bd6b6966b70ef3d4e04fc77ad582a7f153d5aa01797611de0c1f6f80d185d079db55d2f2468556ba0312a4fd14e89a978a1e2c1a6316827064ebb70d01afea9cb5419bf37ae94b8d8404771cce4b8c0e0e6ad91efbd012fce412b87bc5d5d1e6cdfdd30a6faa7844122fe2c25cf153d6f5dbd6041df051647ae8e7c71e4fdb103f65010c9683e84e3e3b3b5e3696d0ed8c344e21aeb105e07ef44b60a1316ded99b938c7a604c36df9f2690b65d9a018831d5c14b4d62240e1f54a2fea30df9afeb230b8a0166e2f50f3136a62595f2eba71d5069d8d68434a322e29830e5d2c977e512fe672a6677675f4fd90bf056180aee6313f169142a0d163df5dcf0e8c78018b8f3fc32b29a0d3ab20539a62ea3535cd01a644dfc3b21834610b5c77504ec3afff783e43f3f21b8e3ce8e3af28bf004c2bab266657faad53888b90889765648d29af6354a977d7d10d09db603793a9fd0c3677fac179d02f679499c61428b61b4d6b2e38b90ff77d6810b01da9c5f3f8320e5b5fa8b2735e117e6f778d186267bf6c1c8052f08135eafd488f1ec7dbc31a25deeb1de657da8383efcd5275c0147555e21e1514e38bda69d0f164cbc35a24f3084f3fc9d037016f250f708613f1d14addb975aacc1ea141fc74cb27876315b194ea5fc8c5803a9e3ea962f6f19185a51a246f7cba95fea0633f47aa3d511ded73c5ad640d4852163edfb412c3958b34be0444fa91c47e777614760f544139e673dc495bd7881bd8a6247c12d81d8504265ceca63faba56923b929c104b9124d57d34fc986b30c102f8a10622399e1f28341d74473c812fbc76d1ee6d3671dde51fe4acd47433824408e82065f965cc3e286983f6932831a49c768282487032a0832a8a4ea0db766c9441cf8598a1aa2a1ac2a77cc9cb8cd0ef0b5a1585a235b611026ec97739f01243f39456c13b9a81d17ece5242a8dcd933a948eb2dc01de591732a03e76cd4f05633602631df8e4c519ef945cedb6c67682f2f354c01f9e8a5892f654655d5f667bbd13bbb6a7c936a033b69369351a71116877205d38cf70a43b6b3c4453afd078b9cf9ba7de2f954afe5d470484d99cad735f19e90f67572b943bcee16cfc9e249e9c810919b54d788355e1ab05dabf5e628b007e334dd8e8f263c2072cc776b323bc9ba44b7e567fadb74d87ec266ff30b39992828ebc675e161c5579f3921285945fd0fbf38dade79a93a5d2472681a94325d1411d3eef8b366c0041b079b4634571e918904de6cc66f9054128ea20460530a6a1472125bcd89bedf69068a4ce21abe352985703c1f1b4c5c806121c4577af18d1ef7760ac19698961d3abe49a91036ddfbf8acda5931963f6f3f201121733f8c3837792617e543ddd7fb21486d561c89317fdef684fca4cfa9d930e3c2818ad02f7da67fdee5f2595d953babde700ea1f02262fd728f7729896043255ce17389059d713f3771c6ebd6140b848c2369357267614e23e04ea360b82250bdbd5bf10685276dd89de3dd72b160220087bf76024118b229ffcb9a9af90d73b05fffbf34dcf9365bdea53aea88e398e8b974c36532bfb71851dd60d3437428f896a77536206db82c8a9e61c071686c2475f5a44ad6d5a58e35cb5b0e4fd5993b27daa01880b2db8ad4f516010306169d98acbe25ec62b3d9a930efb20b5a60e4edfc75370b4ba0e3507f5b1d28e73d257a59d467d3fa617a33abd5776a8a24998396552aad9076aa1c882e12a7df682e96b57946f7166e2c84c63e0bce2fb38b9618500d765ab040839ff7bd08fc5937de066b65f6619fef01307616384c3cc9909265217546f0da5e4a62e5aa4ea575ba369efefe605c56f28be2ea7ad3134843ff8d21cefd42f7c089f6d1b2a1614bb99f9f3dbbc1cac695241247b4203e0fbab18106faa81a4899ede001f64b829c3ca639b111b1b47148f75f116160ffa484b0590a91318c934795ce2e6113f5dab44d6549bf239ccc1cc80c2596bd7e12c9e90f13827cb925e4f748fd924c460da5c0ad2ef83851bfb575297ac182776811cb6a2170ec7687629f7da7260346b87fbd072feca5efe570f9d0adf105751c259242190cc992e5f7fdc0202ba6284a8fb9fe8b0663cfd3e73f3036a8255b041245631c22b8ab546efa65dd6ca03676c9dbd891f3d8191b4be9a6ab8ba8da8ca0b4a03df90137c6e4de3a01d5ce63b75e7cb7d88a0716eec876da05618cb68fe0cc4220ee6a5a539696baa8ed122029821ae7243fef89341fa47b80d7c727a8425f4a147df65c6a2da1f784ecfbfe5296e84bbde6f6d4c0f112f0cfe5f406c00b0f73280daa09f747d41aff44380431f3feede05054f8a6bc87c0ee986429c090243d3aba05998c156381ad3925d86f14a4b0e57271a2795d77f351f84de808a4cb7c13ca6a1f4c1b29835e11626d28977b0d88684baa190140c422aa232cc84c372f35e82b6c992c1a6473a9248f340421cc572e2ac8d8d102257e57bd3fb1e10c7b2e0ba921f643238429237e10d31641b5de2370c0c2e2b400da5870ff23d9540c3f5872559924448b96f278fbc9701319c42ef7e87c4d5be63d1958f1141ae26e3a5678e1d92f9a4a72bd4fe44042bcd0aeea7575f5a309ffc4cbbaa9116ddb0e363b1a206f78e3785f0ff8a4b68b2f313ea6d27795da1710f5a0b86c4256177335143be2e552f316018036177177c8d6168331ed6014257960b7e69bef55d48f2a4398bf30ffc63f959a341de2073e91667eb3d32d876fba93d6c1b18d28dbd23904a285252402939ef8e425fb5aeedb7fb2b693c3c179ada7ca19a173d361111a66f7837a5349125a5afb924a2a91dc0820b22c86259739e113156854dd1ad924f599d0ea861083c6aafbec4861b480db2688f9bba94c5139e5b9d8450a81850140074ed040bee3714c12ecc3141da177321ee4701f83d9109559056f113f8b2e09be9000581078b442358170c1c74595ad2fd9720ac7fbeb958ff1eb0e16cb208391d30fbe84657818052c9887cd3705933c87b8db7670b697a0fa16d51948188929086cedcbaac7db4d16b497779fe4a9f9ee2b4935ed6ee7f654b0abb3ee8ad65ed2ace59bc8a5fcebba38e7d8e92c9de0386309883b0fe63c135b508c232b2373dc1fa4658172dad6908b2313d512816bdb84a04ef65f777efb10ed49e51f5b055d1f3b0408bee406f279346374a06ccdad0ddfc6844fffe005022a4a492ebf9fcd0065277e0d9a9715ec8446bd2a72f84c72e23baf4208ccfaf3f181ce33ab4ec93dc5a66c953f1c973e32263dcf5e8b24e232ffed4e7c729aab68d0d82db34b2c2f88f690d09737264dd5b5bf5ed73cae82b31f074c1029ddefb607240418c34f5f133c7266582d0f822111e0dbd011e644c30ec0780501eea66e701fb3466a5acba3b95d77d1ba2e1f13984cce00a99a91f2c222b2014be7354e18dc8617d44afa0e1746305f674dc195b4f773fc8bb6f04a393d73f69fbac7e7ae77956225eb2e1ec9a185933230adb4bbbb86c3dc8f90e3276b46606a62f390c7ba8571ca5e0d21ac84fca33eae24199bbef8f0da35b443e21c341d701e1677261c1e483d67e9451fa6cbcd9256e2b7fff4897657a0ada198cddd339b4f4281e54e9c5080d03bd4f182ea97dc24a1baf77eff050e670dd2a575d80d71ca0ffec39c81ed5fd174a42da8e17f9dcae943baee37cdbf302e9b04a2bae913d4afa7df222c85a5e2d637ef8eb186da1f9ac294a77a336ca8533c51cecb905d8c83e86240a5b0bfcf37483d54e4f3b29901ee8768b0b19d7649a236c3a822475eb0f16c2e37aeb2a251266c877009bbf5ead26983691aa5de59f83c44f8927298c0475762a9c443b37fafdb2ef7584ad02579150700a3ce15abe67f786f8c840083da241f0a91679680899ab643c3bf72701ec95c142fe71414aebbbfb80f8e787110e03415d29e7612702c183839998eeeded5b6cb14713d05e97e4d09edbbeb6fb2c88297b94b57b85425ed6acd227a8cfc8e996f69bdf0a0cc90505115e12f17d8e36c00624407481a91c534dbf13f50f578bcca3f7a667a71a07d61ac149b2e54f3fc0934d718376d5a0e18c848515ada3a1b1e038a219d73ac25863236aad3141267b54ff44f3b43af6377c95f059c3cd84b1f0383376a6b82e676beecf976a0111327002a88a3f44f19ceeb0d40e7874941de4e917f66ad8690f8810959f629f7a23ca85a988c2ccefaa8d237ef06ce418f3edbeb75377a595856afe5e91d0b4ca9aac165ff6d7b4a25d20ad0ee82f8e224f064c6b6bbffe8b157d8b28c503268f8b1129f75f24fd52ec0dbad5053008fab6b99b079009ec44dc27ff6003b81746383060dbc7504939b0ab09e3b84cea547d170c51c93f0048f815b414da5d4a18f38b82e3094b749c566922099712580b37474b78c99b336eb84c728c394e918061e9067d6c924a9b5a7f00ffd7a8f90ba930f533de19b2d91664c789a8f49abfd9172f7c7516d7d0315eb6d35b09ef0f08790a98e5488f31d6ea1f1d97d597a7d2bd3ba93143289593fb9ebdb96de6dd4702ba58ce1bdfdfc6b98cb14c6d8551a3c51f2ff317b4ac823d8a542f859bd478ac1e4edc618969ee990d8177c3124562481b4f6c46cb5b5b6315caa98003cb6df3c4bc7f50efb043a325c94553e9fb139f03ad59ad8f7bf54006b96a067614065d383dbf690f4860a611985ae4035612e0a000000000000000fb96269a43f661871dbb5f875ead7f000aaa3289f0389b3211f2abff1434ab316814f210ddb691c89ed0d2332b4758c08d1e5a92aa228f781025c21bf531521 + diff --git a/zebra-test/src/vectors/orchard-zsa-shielded-data-4.txt b/zebra-test/src/vectors/orchard-zsa-shielded-data-4.txt new file mode 100644 index 00000000000..31f33779a97 --- /dev/null +++ b/zebra-test/src/vectors/orchard-zsa-shielded-data-4.txt @@ -0,0 +1,2 @@ +01045657a7f63b0b91b7853f04e96e4ecaa76fc32015a3882e205ff0e38c5565c41c71a8b38ae742735596adcd4a876186aab5b89ddf29c72fa3f8a10a689ec0db098eb4682e1e4e46a10d7b1ac40f7c040b42743bf9c9eeacba41c3699db1aee5a90e5a955705db832d49c84ce14e83091ff5076b5f902fdc2c84629cc99bbda01fe22ee765a73fca7a1ffb8bb32c7d3c3233942bb5c64b573fa68421a0c8cc32ac3642bf84bc270af56491f5a1933bd3eb30f41a36ea37fb0f6daf5b7eb47f729b555eb44912f2a8e33c0ebb89833cdb040665f1849b1ed716149c8455c227e7d3f909c8d01471d017f58e1b0a254878310c4923094c0388abbf814a66a898985cca42877582dd705e1d19203190848b8d9aa64f67ad49a832c49229761dfa0e87012b580f6750a16c77ab7c48b847442b245274380fd469a049411c5da871085de88fdd20d2f393bf14dda5ad2d7aefd428d8e5bf19af6e720bf1dab9b857db7bc5258eadf526876f79dbd1a0d1a95c4ca93527fd7524b3fdf8389af606ee89600c549b1d0746bb88933f66838e3297d8576aa7d1a568982568671d08811c3b4bd7173a7a227cfa4fd28d45518052a5e8e683ad79831e00b59877a66e62097892b87623468d862f5cdad08e129ea243941c935915871619fdc4cdde1b507a387efb20a653f6d6d139eadac1861757b59cb15ba6d2835e7937cb464d40fb4d5abf2c82d463f3027eabcbbc86f968d401c4870415d8cd2967eb275850128ec3b2c730f57dea7de5b9dc874357cbaeea4104e9b804dce22c11ef7a07f5f3813e405bf5f1c8e5f23e2871bf8fb283538d1b4fa8cb9911efb5e80a20d7f9b3f9db337a8b3060080f555e21d6ff43eb170683fd3e6b21e2f9396ae8183385038a050dc17effee95ddaed126301a2407ee2c90bf10f43df756f8aa87abdfc90b5c79a19fe468df2061846d4e788ea07ce4b38cc0124d69dc37144a56b174eab33d669418c127323aa9e25b17c945747da687f07402df66ac228e58e88cab652d4266660116b05550d4e6edd6741040256cbb239698a37b80f3be9dda26d726ea06bc1281fd9b0f16722b6d7f82fbfcaf79fdc087194421fd63e634796a6eeb44104f47610b3d4dce52a0d0556f018acedecb39189d10341708a95ad8e103e5ef53de85574c1c734958be9914285bbe15d17b5edf2f73deeed82be29264855efd620f321b634a381ff4c1ae4bd5f40e3913c252b8e49a2da80bc9e3d5d24dd276f60523ed758fe266b86ebf4ace3e7a6eca3cbeebfd4d620d78bcbe780839f6a55ac5269b8fae359202a8f9507dee1948b008fa13f0ca7ea637e887afa718ee94702777b1382b70da0c8574b3078cae818041fea38f16373334bc5994e6deb7ba58872017839c86ca0aafbcc4f15d3b01c3395f8ccadad20c452ea435094063ea3e580b8621536f51ee1742450b2c48bf2647a09d4babd92c2e92c89762ef4d48c9881e8d3b76e605678586f658ca06df6d533cfbac4aca93b7b76e09408686b9be1a0b61fb36c2b82e14a0202095e54017172ecdb8a2922f270fdcdab4e9e5af8aee777a5caef4f614cd6e55013fbd25282b027c17ccec2b7c676a718781e559e7c755ecb70d386245201411eb5520e9013156a02918cb299998e843d4850b5ab52cafe429e3b31f96d1cbf96e5216d4777d4aec8729aef0739e9f98a89b74b3fa58da137efaecb3cd5cd2f4e4df14a473d59e24fd1bbb1e8db8dabe2255efdeeacbe4c278645230f8b55ee65db1f187ee97f5a55fefd54a80bd99304448c8098092a4644e16a8f321365dd05bf8a0d15d19a883b43c4b540bb13bf98fe0e37f5970bfc91d31cddd34a52d27c82e0aa03f5a0c7cbd1f56d3ad38fcd8f634f62c1bd108e47613cc93309c960537672dea56dd014689ceed7167c0adff0954acb51d746087dfa5c6eca234b3918373af11559d44c766cefbb8c0f597fd397b658ae1cf7ae32096dcd2bd15f0aa9273254f0be42cd50dcb40c556712f2a3e2617755e7a9db2d1ea5115e14f2fe1651dbaf639c3f24cd32430320d15d459fe509fb64ac4714bb770d250f2b750231409c090a230fd4cb9c64464389e64c56415490fc699b85486b099628481b7540a79ab986f2a8405176a6ef4741c27feea550d7236e144c2396dde91d56d407fca11fc84134b1d18f35243ca03df9036d6ca3aa39103510bb5310e9fdea40d078bf27cfd06e64087bfccb17f5a6b03e7626e934ec6a4ebe9f38f98a256c74cca06fd93c4ceba22dd46229e89bc626dfc748df1b61a7ee95a13e2f79803272651ec52ab087af7960dbdbc0075d029b635c167f88d48e03410e88425d6581baa36982b6e5efc75f5835e3a576f22e86a1b9ceb8dbb2f1107d4764ca484f19c92ccd27288f1efcc7d33b1815b4c14f25048486d89495a496f3de3b931818b0553a4fa34b261301ccf52ceac03a9d4cd631fee99e401b1de7e8fa641568d769dfd03e44432e656d0622f335532b84f83038c07233121243010317af6e315c0f8a3b296a958bc7fae8fb74e1e27f9e3823dbe6c2aa3aa2ec9efbaee4a280b6928933e1ead6717110ccc089042f5b11a51109fbc1f1180e4ca77a2f1da176565dec82624ae3cc39aaa74fde38f81dde34396661e4cb4bacbac9a78b1dfd7c22417054876309f72204714dbc906d127851b05ddd06b48eeb7ed05d5c33fad4436c5b8d5aab1ec56c06fb7d46c3998e3c44b8bbeef9fdcf4e751736ea11ae6a79b9682553845eb38fd9f9ac6814f530916617dc82adcc374288ab19dfedce2ba4084ca4a4a180abe2289f67468d560d018ff6d4e3b5801c74c0b410ec726e1022f6d185fba9934398f1a5ca6ba4bd711c3d74b37c5b09522a7a9c590d8d740bee6fe950f5c246065ed1d949252a0aa2c31808469efebd6d1421b3dac541141064d0d7c6288ffb1ef4f1ad6bcbc797429174286849c57c77b7fd49569273cdb125a0e6d5f06ed05e8a448b36d9306fc7e3230140c185504798c822ed09f9f494759760fa1c496cb127fa625f3d6a0e470db81289d727c7bc06dba7987bc1fe1129b9d26523b5fdc4199de027731cdffa29a1b551ee479c311cb095655b6a697036fc656fab91a0d0029a7d8b581f06df3c6265ec176d02ce44638788530ea7a808f7e73e622876212364a83ccc435b7700b3d3a61412193a24502af998fc4a4b960cf662297d286b2ae23c4770ff47b3fe109ec48d3f0b4573c399eaab77638ee1c7ac0f809713715d1763fddddc6e13b713307359d68a451755872eab1b9186f8b8b9f9c51edb27659f61d74234f49e0aa76a4db752c455fc2475d93018d1ea9d2938c3b1686ede401ec607167b86766811bcaa0764f4223a6e31663ff8bc059d1ab82e56494179d04108ba27506d6da2b78a5c2527393f17d5aec3189b7c06e3c7256eae7a399e9e63efaf52445542587fa13c2d0c7c4ebbe1c8a32ab8e2f2c76fb331f1c7f2518e8876e6c4502b150e306fb8d19208d26403dcfbceb89b99d048f0e694d0cd781ae42998fd07cb041624c6c51c08c158a88b000363758527f6262a5d1c2ac88c7873d891ac52295803f93596d6926fa85f793f4dc05911ca3acdb9dc5f42289eaad9734aa3e76c4f38c39b0713f1efd810c0ba4ca48054b4394aa363429f316259f33d652e05ded16bde9a53b04c7aa2697aa9be8e4b3caba62620d1693675f968ac6cf0417a721b8f28519ca84c56995a1959c36135ceb4c5bbd24935b4993a96575f70664c0eeb479cf8b1ed86fb1095b4eec2c7cb2f9f20d3300938a3b293bf46c27bab17ab0cc6b281da52e7ce393fba11079f01c2a80c194c297c321b81852d9149c67323db04b57f15a7fbb879f6153d7dd9d2e924258cce846af9ae77f90673ec23342b29c7e709b0ea00d4d1dfa4e97fcb3ab79a715d33534a0febc4f7fa84a4247980fcd9028e793e2450f0e4be47ff533f2921d724d2cd0d2ebce935b9a51ea936cd00c32b691f84af198b08962794fc7f7360f22399bf8a6e5ab99b1916dd55fdb7af1b54b7a817d6640f873182f50b18305205f23317fcaf00dc2806d0c9c804ea904f3fa8a7dc6809132223737cc8b23aa3e5a4497c13dfe6cfc1b145e4c16a4f24a7914a0a14223cf53b9665056559edb234563c3693ebd6e05224ff0e63c72c278189bdd2cda047e8c206413a032034d3826268c5501a372e1f4044296bc9bde02f385862ac1175c4d1fd649ab0787791d9ba11a792d2ebabeb531b4eb8c61e961a7fda7dde1e52830656ed14af2a41f2ee26c0d8f7649eb34ce4fe7864b7fa4a7decca73e7c2a4b12c7c90a752877333da7b324a600014a20f9eeaeb1e0302f380c97caa3f4150effdb5c854ad661798d6f094226f02deb9ed20c1d94f12097c69d76b92d1fec4a846f026839419d67815f90616be38163616cb18e2816c688ac301fd55d3260ea660371549d6c9cb63111afd3c183aa0d2533fa0467816c9d04d01f54fe5cce2f54ecb01c9be5c508b7ca75610f2ad40f26c93361ad01a488fb4ac9aeecb58e503df2f43ff6ba4e1fe5551c307dd107f32439fdae2e2c43b6a8c0e1ad20fb90392b7dbfaf7e78d2c8937877c5b0f6eae2b58a2e67e132203087094f73655fd09caf9d488a81faa049f073993a7260ecf1ef788eaf578c11fa28d4769b3f0d5bf16cc1531be532f9ac89dff1793eb5decf8b8939bea1819aef444734a7cf0ff7e4e4a4721322b6acab8b6340af1497042c442f997bf2dd37a9a602a83b912a1a2abdcf128ac937cad5c40051672df256a2d586b2bf610300000000000000000000000000000000000000000000000000000000000000000000000000fda02ec1e22a9a7b6ae8853409e7a8dab9bd384502bcec91f852080a7916fc77ed9b3706a645e8cd7718861b6a647adc3bd7ce02cba30070b8c5ef7fa168c53fbacc007dc9100b7ab16d69b58d4d5617a2949dfae7752a3afd488dbd00182163687c26a49f25b50a1155ffe0b412dcc798022118c96e34850758595ee6728a981264971e7f70ac7b77a244d4ada133b976ab472afea1048a213dffc9208a75a06f5d8ae3803ce6f867a634ded599d4b01ad464e3e1d9db35531dd41bc731affb888ba8cd213c0a85dfae04f10085027b7a5c7b986a214f7158a6ea49f149074cffee3dcfd03a791131a0286a4a2b06a2016ccec8e7c67dc7a5f3838d96e688bdf47783d135580e1742d68c89fa9de5f73a456fa39e9514be267fac1e673e222b979b19ffcda88a6e0dd8cbf300e81b324bbdcabd24f3ed81ecfd527d415132e2b8e09fc0a6bed9be2d63ae9c3b5e18f19ea303b9bfd3208b9b6af6635fe2aa3e811d91bcc4a3f522ff6705f67d1adc05beef30f37451e6c58902e40cf5dac16317aabbd40faccc6e1f7dd725ea85534974a0c7786dd7ad1e1276ec79038c5f60a90728e0934c72f1d30a363e567e842d2a323803bb20de1710765845ca006855229f10c4a4efd38990084b46bfdb2a1c91bbc2e94dad2d8e8ae0350fc05eff450ce799e547efafbe77f67ab16ffa4376eca0a1b22fc421eede9091e3914eba9d5936bc584f0f6b749a60cbe2847945eb0106a49c43531d8a7040e1f1f47e74dc8bde0ea1427b0973483b0722e41876cab360b9ba407bf7118046b859c5307af5422da3080bf5bdb226974a02d0625cb2a024a2773a0c507172e7c6cea0719d09c7d32540026a89813e4e5e2ded17e05f12a6b36fa995d6e0f604e23a14d4a8a68d6909091f34850fee64d9f4599a6307369de4cd9c79eefdc1cc9e1ec7c868a5bf3fbacb2f6ac1d68100221da6f99c00ac84f618d6b57237e83c3c4f03cd5b262d7534fee127682ca86fdc739fe4dc0ce96db2a35caac25528a75999709fbe5bc16639a20bb4dc71ffc07320d6311c180ebd91d3133681a28ec5875d8638283d75772b178e6e061f699cfaf6f954680bacf232eea3efee50c1eb9c3135aa51ea82088222fecd2e252366c6a3112b31075bb34117dd45b635f5cc9ce31acb803ac91f3500c1cfeee9ec7c3e85d34e0c41e71b546cf6448d1c458256f8f5b5745fd22bbf8ab81c4ed7d6f7308f3689864dc201b3feb748da5f021f755dcb0e49f854113166a796ce3d2c91ee2668f54ffe8739e09bbe189ceaeaadb6cdfee3bc3a4526241ae83812a3e45839245500ed82694ec79f5bd720d286b082dc3fcb913bbab28b7fffe55fa01bf70630040bbcf116ff5aa8a686e12d06d33be1bbde50504584b7f7160be802c30f4e7286e3acae65e3b20bd2cf8664797ec242c8d1ec1911542caae6dbdc41099b46f8e4f39625adb6ebcf2891e0655fd0a585938bbc8ccbdfac45c1cf51ae5ab25922f708107f2b26d994a6c58ab2024b614e481241dc30fdbb890b05fc5824717bb4635ef1473b596ebf5ccb1155480c9231d9b80729e4ce1cebe59d291f9c5b4215013425fdb4c889f307626952e3012c4e427974e483a0b2b3e77386b81f0abf11eee92bb4652deed3ce7522b94ccb485e1b3cdfc5ef7629cc3775986c006f5baa41a10842edc723da5079030be0e2960439778827026901f7c7f55794e6457d781d6bd2f64bccb0b95f86c562e6058dd7f179902141e5a03539353cea2e9f60b7c37388821e3e87d92fb8c4ede7e8568bbd2a5f7ad85284b545549489292bcd1e50431ac98be4e5268bd815a20b70989db00006cb26ee9a46eba4d47bb18f8e8c41355e85d9a417da69965617ba90b42ecb0fd647f88d85504a324856bc82858bfed6611fb044864dbec0543c28c1fb8df2844ef3bd73a31289f0b3eac9ffc007ec130d2bb0e8d00996d1edce7ba125b52d1dd3317f919ff4082a69b76b80abfd932b2e0a8705af68053420d53ed8a5b88ce3ee07cac8bbf31d4c75a312c32142be047371667d486ef6aec7e87f840b42a7be686c0f678f3d4da43c736c1a0765a012401c27c58d0c717212bb1ebbd9ee2292976bc7d02eb1abdded2ff6740e0cc4a38701ac7ef45da612d01e67ea5b072210f256ddf5b8fe594dd78f21afcf4bbf20ba81df68698110e371b5c79597dc6c76f66c9dbe841a13278248426ddd8865ff44db1efce92f379447d4797f2aadcac719ad86a5353c1567e1dbe7e77a02e94525eb49bc47bc6f7755f7b813c917f788085543e39c2639b349734120f7b39ca231a5687ee4f89462711cf09cd4048871fa17208cbd6bfe166919321a4fb5cf7f84a3426424c174938e97d8b5cb171836acfdec2f9c4a13047fb43585d6fb5a0c7beb4c81516ef2eea347671036e2e17c41addb67a3a7ee4a53eb7f4b4c7a9051133c63a8d8866e4bd539827bbfa65e54f99f2e03964bd5d474e1abd2708c22f73b19060569cae8065540f7b2e42af82bd7d9e0d92b69cf9e0679fbd93321b738c93f826e0d86ab6b8212a768b060dd72b95bd82f358989d416cd27bef6244c3798ee25e54bc5f2db1988114a7295bd2c9a3d1b75253074631cb01d653912bb9013d07380e0cb88a47c0c6b1ac0188a788092c66a33716d874b51460ba7801d1ab1f9af8076db5a2f43351d30fb39ba580243cc9b0714d5beb46a70b7e8d6a16ed00e234cff498096a6d57f4e17c0fd4940b6a08a2563bdc06bb6fc489960099372265de1cd57dc0e64d9f0e7e3d877234fabfc87a075bdbe47c51683d046c31617fd090ade8438a686cc2860cb0773fbdf8018ec89c3a67053231c0f7313f9705db54215725c5197e6f79dc73f0ddf58dcefcf4b27e9d1018b6842621d4906e545cd03f68b4a073410bb10390ea252bb31c5456a017c16c19398e9d60ed072758f72b97683af005f8502e9cceeebf989cba68906b1a3bddb024daa4348407f1723a16d5945bc9c829a0ef637a881fd87f35ddb8225b85672b3373460e35a405a23024462cac383a1c4549eba95b88902a91dedc6056d69b15473a16b20283e5f9bcb8f6b739896c4bdd4f2cb4f9cc084795b5f8204952fed1f37dd18758723f6516839912b8556f420d4e403bbaa55d7e96ca0e72f4b827da366d4436e6cd674b60ec9b9554c71285a408a244a903e4efc4ae345bfb43922f1cdcf34a411e995901c1113dd8c2e7ab0150ccd3ed1ad45d5e4f347bf2a9e5a838d00ef74f929bb1cec67c20b785399153b99fbef3ebc4c4dba3c48ab61088fddacf078d4563bbe40b0dd68d03c41022001d072265826b45dab649e2b8641795dcfaf6c37d82b3f470b824e3f23772d7fe123c4a409e0366a43f6a89871590196a012a1de65ddbc6956a543f32264fa0332369bc856fda3105980fb835bb6040033c3b596e771f6e214f9d367733b84c4877a762e3bf47efc3689131c735dba5fe5d22d8f75898a67bf7b90ecdfa938447ba1241bcaf76fce84f3173fcc6a31a72e108de1cb2e14f03a78a1afb036c1041fb4b24a4b8d8ac99584fb37a58d2dcf3b328efb90815eb850c12f576186adcd23aaf7112c6e49d6e70c85309b3aecc15ee24a53a74083017a165a503ba5fe99fc58e6dd9c9d4b99eb5722176fb8ade041dc15588713f9d9ad861bb3291e394dc18c0b75599da9194484df9fc8dd94901133d23c4aacb74c937c549ecb189fccf99d19044035a73573b3770669594614cd87f6e984b4e205278f31a51c096da5b29efa974a93cb4b79f30b10366328f80d0cab3601635175a2e82c6447a095913636c009c414ef2602289b0511c7042ef0c2864b664bc9b16187a8daca950bf54643f794cddf898706b6e3136ca290b38838fae18b06de6d66becd54bf4ed3c2e37b8baebae771b9081b3a3b25cf07afd3c93aeeb0eff97b56bff0ee80418d1c6bb9a04544eab9801a511ca96b2ec2f533dfd5637cd0c9ba5deaa9e576d1f0afeae1bacd9498211c4282b7ace673eae201e63a19b590c353931932e10686c7351a2df98eb287e97e26547708c6781cce72c89e03b95c2f2f4de5db4d6176f2cfdb214a1495e045ecd7720d87c10765bc07f79daaf0a4592386dcc14a3d641617812588893bc59c74a056b1a6cf45a24bdaf9ecd515517da7fb141140bd0c4dfe83176f7afa0defdbb9e6bd09a7ec9aaa0cc73cfa093212fc1c033e9f7713f181a5839d1a36f12440555b73b96711ce953ee9fd5217e2527384f7ac94df4c2c911bc5bb3a02b4b207f418352647138f13b67a5f3694dd5b61009f8c472312f70f58ed8ffdbc68ff0caf51ef1a736ff18cc16f826654002b0d634716606305d052bdfe94df4d4563f409cd02b1b4c0b36efc1dd7434ec1b5238684345839d624cc3d3c07d1b42baacf43b5961ea987993fc11d0aa44ba3709038cc48c36732ebb0cc4aab707c58d4bbd688f8243e60f376ca3c8cbb6a67405b96eed6c9b48309840de72b577494151070d8a0339778d934f4484d924f83a2d5ff53573ddf33c499d4ca3e37f4abbb1c1b12a004f7c5c967051a4cc842911f9929932ea55a8b4466302bf599f6f00686015af83b44761fec9bf847e63b4cb304ad59efb5236de3149ac96ee6946f1420bfb24e04851c51bbfb43fbe77464f1bba0f0657d1cfd6ed56f221c1e735b4f27e75bf018b3f6848679205f60c0156bf6c9257783477689a38ea87c52f0d97a65e847ef05bf1bde0698c04ef84754aa03b2fc5d3e273ee968c8c3ce6a4039d8412081b7018854e7927f857dbb01628d9aaacd249863ac527a9cfcf42f4912b577dc0fbc126255164eea1a335fbe42021770c7c4877f82363e4f1741fc1c0f5c00a914211146dbd5c4c70ea61bb965789dc680353a89a91cf377c08be5ae0cb0e008a2f12355ca63e822082674145c43ca187227dad3e7082744bdb058c587c2dbdbdfee07725cd2ec5200b591031e23521d665f12adfd659c1ffd73048b85984121e4bd0d612860ce39357efe930af398f9d6d50a4996510dc7a8c481fd7adfbe8134803e30b28de64ce85a6cb314b1a28a5a8d57bee3a502e8cf70c19325db3d11469f3f733b3556695d84e088bafaff1301e2f529406aee12ccfce302db8dcd2dbf461bd009011f52fa6441a3e9483d3f8a0d9ff8fe645b31054a731ff02fc332f95a11a572f8d2632fa8f20f3a443e75b32727fc528bb34f21af86378301ad5492431beb4641c7d5b464163e3631508fbe84f7dd939ba7987449b85efb6664ee0c2c1322bf71aa854bceeb4907158529e89d750e56c3e4f7765fba7cddd29d5a69ff220ee807b63246ba892fa1678cce0e6160306f1ec0600ecd88bea0b8ffc69bb12972ed716fa09350ea3cd20168916006912b0678ea8953b1e7741a6a0c4771d6358e6027dbb3873441eeced0a9b00e1dae9fdd6bfccc041286557ba9b74fea5f0f3beb555cdcf16f8faf2b4be979ab87940907d7850952ccb2679eefa2e5a23a21a873817444253277cda4f9e03d11579bb1547ffd1b9450a6a82534ce7d7f0f00039ab2d9778c909de5f94284a5d9e325d9a5a4d92d83f380e3eb46f5432e000fbee857d52e16cac323910ef1cb2c47eb631b16e59256b50aa99e22da50152023ab73bfac5dfb95569280b369b402ee609022e13675ca3de0697ba8021e81c23969876026246b4cbe3ab51036c90cdc51c8be73f5fa6e5bd13cd176d52865bb25413df4b8518a7e03736af94b9bce90edc74a4531ad90c3170570c593be4c4e18e2d3b85a853265bed4bf9b1bae993a77277e2d8b400cc0fa2c48818475977e1f5bd89c0ab5481512e45b4f03fe39a5696da2eb25a5933387555ed9264a0a4306bc8fbd20e9e540c9c20cf2ff3224ffccc78ce5a6b878bf6e1d205afeeb303d0846e28eb9cd9c3e741acd97b362b44d62f3d43cd35cb3de854e53ab0df34bfb3f76ae240d4f348cfcbda45c14f96b4773c03000abba45649c235ba4459f4a3539cdd596c39d20c33503dd4662af3c9e0fde24898aef54d35ffbad0c06ea712e09a3ac98d038a5edf24d9752d11a3b07bb725df170d136b2275cdd4e7aecc4d306dc9c08c027cc70ace88524778f81e117afbb277675f6477a2cdd288930f1b018852e87108a080ee04a7fceb7b536cf650435d773c7c78811a7b2df47a3807429c92e62e26e3daebc1abee2b8b41cb50b8000e844c623f43865a4fa63fdd8501829e2dd7e7c8e3093109ed3a5459f4050e568d0dd57b89892930e06d60222c504c375cc8acc866c48ad1cf589bfdb728a13d300fd7099e45abfeb90b5fd70ff20e59b14f98b836783c7874e1f9f781557be3e3a5d0eed5b21b3f4c8e887f9de34fdd11bd75da1ced14e0473d2917780ff787a17be227e637a2e92db6a9964e313807e3b25d7d0617310e2a91693b82d331d7f4a4c6f2095c0b20dfd731f63c92bf150e6511473d9ce07cbb51f212cb1a47210b0ccf8a010edeb8a0dd07d3785229ce884325cc00523f766328a5582142c692cb5d197fa18311b8aa01ff34f1126c94c98f5bde08ef5c172c202d3918f800952261bcd9d799f521d2e00cbab2832ab6505431aab4a9a0333c2c3bae91152e6e16890d12912d2d21aaee6a7a0621d0eb3cb8534fc0fdaa896f54e0d14d378b252d3cb8b9cf394a11cee6053c4172d7e1d02ce0c48c5d4064a2c8536ddd86a9a36a4e6667a88ae880566a1e5f6252c628ab5f04f69e52c7ba4648a22a65645b2d2ea2dbe064d536f739004e0c47b09b6258e68afdeef764d4eee2858fe5642ea6bd170f65c58ca317f98ae687d9e154a1260f6936b661bc846000309ac6b9d932b56f277bec7891cc39bf8b83e6035c427a1a1c999dd6b74a64a41426026a4be6405fee4185525579d4e47c818b60d5bd712bdf1344c7c2de881586843c7646d2f1749f95220223912a5c1f47a4d075e044719c1ac42e89f96e097ed940521f68fc8978465b337d6d36ddd42094e303113fac47617028457c6f3bc2e2188456ef59689c426b089ee44c3ba50f73120037ed7bac08c27ac7243e9579d2105da4437683446adef8e5c15f9935ecbca0553bc802c96a88fda391bc7cf4ddbd47a7db54d0cbfa1b35b3a8dbd264022b83c7927a413817ad8b57d5b4f842114df6b0329ceadd742f3f47595520b77541900ccee94e02f04ce577506e38ea4220ebfafd32c7467f3e5fe3fc75131adf63528c2829bdbb6133e3326fc752856fa4435135cec51e5ab94abf97cf1ea9299461debbd4648a4593df89a178029020e7226dde961478c23bb188a1a7845aff50e0c7f062a04fbb9f6b985ecee4d7e948de6c30e4595fdb5498d3cb740aab6944c1b9ff0abc21041d42415d1c41ff132c9ab73d91a90fd786d748755f8a55a4fef23b23ffd9023a66b7864e9e9d632e904f5abbd897c6b4d6d6ad9c30105d7bcc634597f42579e1a6f145bf80349bcf398dad77e4fa12e67b592915c7946e444fe3e2f6b5c2f5b9178e01dba5461aebfcd0809e23cd8111799dc166117c4c1f7ca01f78a2e452ceeb18284ac549b95a73535d6950d96f329503479eda94f54e9e028978ded84a69682c4a084a66e5dc5ab16fb1fa4c7540116f812d24c287a3b0119e87a3aa8b69a11d7be71026cf03ec15f2313f1d01d27462cf1e2c5ababaa9f274066824f0c5aafc317c74e3ef5b8598f2bfd12f229453d2b6854ae145d57751285d9c057bca93c7f4776dedc03fe55651e8f346a9abbb3dd121a23e0d5431b2a14b9cc4890ea215544565dbd0b98368975ecc7e8d12492832b76b32c8c44783e6f72fe086cae6e1d16991f63621093910e57ed76baea5e4a0713545b6ba84f1689b37c61dd2cf9eef46f551adfc6342ab21c9478ac8817f9f3ff3a7e940d300da47dd1cb88bdfa64df6d019a67d09839b3136127fb459b5a7407212f0e2b3f345d3933c0d17cd2c63f2d9336ea29073e890173dc744dff66cd1a11ac17256c2325b5f41f1267ebd419603af348ecd4e1b34710a6b92b738d6238484fcbebd515d914c6f0d97fa59fcbabb50fcaf9af105f0d4eb47c7f75edd83f80c0c47b111e76a6905da2194d62d12028a5c76f06b8b02e145b927b9d88c49d0774413f093fd801f73ff8e8cc061188088380b526dd3c146a2630613820a04e7b6afb71f002d20f729bccf63d2f08f2a283dbf4e949607f68429d6ba81505ca4f5dd3c4b3113521c3c577d07f4a0fc100546b59e3061044600bc78522efa121e168df0cf9257a628373e06894baebd44643cb626ef5a8dcd8941c03907b8378bcf877b6f51af69937e27fa743b4ecce270238298f1420ddfec19f3379d2bddbd32bfa0c782ba90b46e2c0cebb408567261c65b9135bec68b8b7302dc8f2b4cfc8cb333a7b23401137145964676b5c57754192568110c5c7627528f2580454a25ce312d03b1c1e9e755394619c2582378047dc52d5a669e74a3696676f167f21aedda8211027746ab01ef8ae6b1be15ae95f15f7de5443a833af53007c5e941e7b38eb06fc02adb0860cb1fb379c9f55a226f1fe1ff1481cfec3aec1f30bcaf3daf33122402647ae3faaf3f3bc71f681935c89c845a92ae16164f24f1a152c07760551ab7d1b2208707818dfa213ff7fa3ab7c5e8ebf16b252da1588f87b3379f86799023b2e4b4f4641c277ac8149c0b27b8e7c14569bc5a152bb19ec9552f8ee293a70da2944de86c6a5cdda7a13065adb6c11693ce4b59b76fc83c933dd87366e0f6ca7002ace55351659701b2d83ddffcdd6f559a5bc4140574789142c6d23ded0dec8144805bf4cae2d351ad9cdedf72ef052a8caecc96e81a90c208f285c228262830c45ed2891a0c7c1b5adca3c808f84f2ac51f932131ea23359ae971a238ec38225605fea5ed37bd0dea4b92c37998576c9e6c75ac9f84f2bc2277148486bd66517d7914a94a0571f99af5828eee0be31062a9e80b2be73413cc2b3fc4c77f692164dd9a90b2fed552f7f0ab8d1a840c538824417afc61b954da7098449e39ec72287ca2a4425d4b368dd2f04936e90b0772c6cd17229973152a93d63fdc767d03b921c973e1b83fb7a51b551d39d311f574bd3a4dd0d3ee80bfeb612f0f5c51315bf72d84851bfd23a22b6e6b23da3c2763e739e912df732dbedfc1c572cef3f19f1db23d934c55431b94eaea8e2d1944e3948ef6ea34f3deb76f1067f332d4c186c7c8c2c411836133c30ca68e590ed74244a85219a34339dea483683a21c791f548f9cd8d4f7ff29285b9069553d1600be992871f164560cb775930fb6b69e187284195c4286b6ac8f1fd024e3230c6009679110398a7fdde14206d256dcd82981154bd8dc9da5c07e4185c96e22db3de4ed4b9840569710653eaa8d435a8a2bf008640400e6798171a0988ade63ae691fee01751405f5def545290374dfee24c9b0d4299eb87422a63717b8c680afa3af0ec21c4de3e0719bd202b06b8f742829c1e6af367de4f6652111ed862c81d7f90bf162a818842636ab2a19c872b3231fc320b9c1bffdaa36a48da7f11b77e6ee5865399f7b3f867eb06d6b81d68d0c9234158b9a5beb48d3144ac725cacf593c568d5382d9738bdd87bb5f6f17891e842652943f27aff2ec84646bfcd7cb19264228aa722693e84cff07afcdce4203be1e5242c015826e1061625c556e9057be34fb41b433a3bbe71827399497b3158ec02a1f07fb6b6455efbb1632a3720fc20ac00437e851541d57573eca8bd53eb53bbbca222cbf561990d60eec850afde3b2b318ad784a5e0d705a8ef029520b46bad87012460d3d63dd72720d1a47f46765e1e1b80b08f201f432fb3a733e39106ab32d84230cedbd11dcb747ee6d8143df2dc0150d45b1eda048126169333fee911b7074f6d89464d3e4db4f413129e9e7f01021424f2ae0a40b23bd59e40bd11eb31616fc79f36d196a86e5efbf38f7e043f666c6f0f353e4ec18b8d1243a729ff98cbd9614a4a13a1b5b6a8bcdf8b7580e808e899951034adde3d7dd470cce9b5fa23e0856f2a97c2f9c5cc77b3ec11faa188d20fc67b6357bd755985e19921289502d7ca0340e784531aba53aa0d6772a0483e81d634c7e5f1f8086d420da08c18b751a6a755f98fd0b0e7f2f2145229206882cbf5ddb55378a6244b60b3750a7606f67abc0fdc311ad98f9867d287e44ff53aa7ef860c1c1a0d53d713490502ef5a5917c9b60246983000c0d893a00d033e87cc45b69c173b95b51041fcc593f32cfe82472c92d33873ccd195cf19af9d99e068d5745ed2ee04a19ba3af41bf72e6975044a9a3402fa931ff2bea46b1e39b2cff5933514911d0df18032f1910bcd71d5b03140dde5ea95a46b9380acfb769840221086abffadec02a21c36782f31fcd1c185c2f1601e2b6c95cfb2b7467dbc7936bbe814102bc66f1e376938ac6deaa1e3056b15465d1f63a4eeb15797eeeac6aa422dc29c59b4c2f105d84cdf1c328ec24fabe6eb0ed45cddbd6bd0072c09a716f0001ad2ffb77f9b3aba51c58880220937653dc6082ca1ac1b0359bea80cb4a06a4ba841772129b23263851f00e48fff4d2e001c7981fb17268d1e30a97d78cdb6c95d428f717b69223fe40e8964f37617e945ad0bcd51ca21d0001423b12b7df229022143a8a1f0229b815fd419ab11efb5c3f6fbed61989072da67ad8ae90187e5a06e62f9fd182f7dc77f5529494d21f2c06a8438d262ed118d6dd32039a03760323e657c9a9d0c47f6cabdbed19d84559455fa40e78bfe1d9f8eb3e737863846e4f5fb2bec5804adc08d9ba1565e387287529f9f562538f86ff480520eac01c4ac1cf3a9a5db1040db9a7383d05cb1064b6e4449f41feff10277e52cd45694ee703bbfd73cab1441311b0976375c28deedded4cf0df488227bbf5065298d066413953c40b1b01a330e00243de9d9ced3508167400c1404588584798565fb1e91a8c4c12b607405b3de3e90d234d3cd0d6243e2de4a96d30c1c813af58c8295a590a6af6dba8a092e94dcc73a1f2edea2fff48f3bde49b8d6e16ee7b022c3df2743fe86720eee1e1207271d47d5e2acec6ee27182888718f5c8a6905488cb70569303193f5bb30e31acab1c6ee22dae707ee88af3075a485ac591db002b393a47b250fec2b48b2c11c2e4c4d179eea23a07cffa16431a73d21602835ef49dd53b5934468fa3ad3e59d901d83c0eed64fd8acd0c0eb07962e28aab552ea39e00b3454a1fd6c39417ef220b2e4556dbac2c904a6d9549a0d4a297fab1f8f1b38b2b4e7cbecd8bc7040b6dec8f181ac5447dce53a866ccd92125041d6b99aea02b6d039f284621a525fbf2be6e8d7bcb1d8c60efabaa2e2bda7a87feab334304cf9f435e4523b659329e9aa4a90343402225ebfc653f29dfa97269f06bfa5ffd6f4f5921f77303c01c30dc45cdb583fe8eec13afbb034705e6ce5c8a6f4ce54e27cdbf0a8c03806c370343500414d9f31b926e379697896e7cf29b6b6d398d390b24878238faa6363ac75222875af12f3155cbea75ba76ffb8cb79316e35ff4cac29d978f53bd6bc0c9496346d5b21723311f0993b7f3b5f6b895a9f2bbfd0a4f9a975e68be1b977357704a4feb75d5160ed640de35fda1f189e076f6ea447bb8c99a5490205ae123a2724c929aa3f4b94058bc34542421107e06ad26299a943bd741d990be547cc00cac5a42017578808f88e3c4e55bd5db487f890ebeb16ad1d8dc798f36b68ce383650517ed3517a8b11e447fb396750495aeb1997924c37ad339d12642ccab42a22e1db92fd0d56830184e42a13cf1c32f705fd0c076c039fa41b400aa9db8e0caddbfa782bf86ff58bc9446fb97bd3eba5faef09b9c241fccff5d18c3dcbb31e9b8ff02051cddb678f64db087ddcc1eb6656bb59c9a60a02052e5e4959ae3303623d69e2088ec12b29e0909d2888ad455ad0999cdadcdabb698bb5222ef3731f017f728eeee534d475120e31861ffafb0ee6c5ff0780f0e8e2f1ca65cb876731ed113b2893a6fd9999a06b280e2fb04754089ef456c7fcec367be99cbf4b671c002631fc22a3116950b0a8a6da7fb9b81fd212b2074e8a4dbcce424d967fee1ae04ff4dd7153ca518b61becff30bdfc2368c6ea73b0e3daf85cab610a29fad019767947985cfc62c81d79eae9a1e418fba49bbf52851bdb848512488cecda50b471e0ec10463f8666c8960a768558dccdca9748acdb07510bd6461a58fdef72710a74c2afe12fe38f5a04da7f0191b0a78f8d65c7e3fd1db376b15c1669a4313d2ff68944c97316107353b0c0237aaf941ab854125938a0a2295a5161a50eb29d274fe75e650ba73ffac7cb6e82c6cf5a7e8ee8e0e536060b40d74b9b9ad6e3ef5a2e7f3510ec9804fd7c41febad6f038db65c57857f81a83c9b983db2ec90342702f8526c5e920eb4566aa05c0103473ae7db1062bfdd023c76625babcd753cb71813807bf485b69196933fc749033f83712c217039ba565a8a71d093c7870677ddd4c96436cc2a74e1de515d596c51e7f72d4adafffe5d59f6145b4335cd16ff1f0c7759bab04cb5ee49d072b4285eb987a5e318d3cbad1ba1e49d4828d7086b6fd79699046cf140b07b013989f7330d2cf6e48df5f656463312c2291b652bc857a06aa9c047f1b245f277496fccfeb3a82c27d9a3c5a82b6f9c12b59db3074e1fc7b0f796a16003d84be6ffa00bd9b304533ee0ed5d536eed86e7bdb92a0e0cef64c727b0120abd5d854aa4c346384acfb0cd1ce39bde31cc8a9f997a001150a7ddf91cce8ea57ff6a720b3706dc0813eb87f5f59bbb5a51ce021ffc5cb191ccc1276c54fb564a25a9fddc91dd98ea7648d9d342670dabfe0333f3f7ed518b18dbb27b0fa4b58b175e69ac5eb4482c892d07d94d7eff271508072408e6b0e5a2efedf5e72c53351301d3802b360a2ffe196a21796b6e8edaf5aa3319b240915e069c468d0fca39b337ce9509f9cfda8482a9cd45aba6b6089fe9403b34b13c8f348d5032381ee6bfe40f79196bb835be3d798f8be0ada38477e386e27342e2899e7976faf7a4acbedff498cd78286bc460f4fdbe64e85259be016eeead118390aadb1d41a838b7d3722b097eac17db047baee7a9b55402882008b1868bf0f9ad2ceb43a8ad5e15c7313aff12f0ad045c4970ab4a27d501ed4bd1a0831e01a6502662424c4d45038d963716d90be7419a2db0ce620425fae00025999a3532e23a5e8f9b25116aa69ba7fb00afa261698559b09ed0555283f66a0e522418b30a5b7bc944346eac86c659d7c1ecf286a0f0d7a9072cb81c6428d3f6eaa8ebf3819f42c6e65fdb30468817f9036d5ec148d842ee9d6d1cb06278fcba65fc6371efffcf75e90ee8b16e57bea3a00d91b6eb0457269951ef77c42dad47cc7e2381269cb6e5d6bc3c98237db67b126ad3176f6bb810aa12fea539286ee1eae787d34095ac62ea324883693abc214f618cae9adc3f9027dd62d62d2ab57e694546913ef9ca7e47a50248ad1c89029f41f8c6ce823a268b440276eea283dd1cd34aa2dba06f064d7c39b45fc9a839a2cb967dcc28ea7f9db3310391eb079b057034d28091e8238ea96ee601ad18cd069015cf9195daf8cadfac40cbe0893f22255523cc2ec5553c75b1b64e522bae4da14672e174c36c26d1c3c3987facd520e855317f81bfd019dc30758aa8812a3f8a6f2b8ee656189674baa89d0183a2b7c450a324333ff6f5a8e17165be8b3d2af9fe51923a12682b8ad0273cbc4ddd699e8b3278c96269c8a20b9fea7fdf692296a663f3603e34bf5b99049f4da59192c4af8219bb8d1cb4177d2cc8fceabd1efdb5333bdf26dd4f0630cd1791c7f07e3c2f6082c7f8f1a938d10866260042d3073ce804fac593345d46ebbbdc1c7fdf6e2f034bfaec4e916e95b3b81c97329543f0090113e30e581f70e21841bbdae8de259024e05a1a26eaecbaea91470d825ab9a72ba9c423a9715cd1e80714fdf97513f200a89cfb9521e606ba1c7da6f2963481c59dc8de91081025da46e94ebe50c4b39127477fc1096c5567005ea196f1875efa6d6f9fcc5dbf15fb548afc1d19a18262a4720aad938010d57c3bb221fb3c900816a06640f75b900639f2b31ffb9e81888ed6e2bce67387ac1b5184379f8981c28517e3cbeb8019091e5a5d8512a1103cce28fc45a9a006f0714adba5308a272675ebcd91f0a2ccc3a2eaf0a1ba0302e61ba6981253dcce355473b0f011cc4ca592ead33a28e5243dd32947d01220f374e3f4280d2549c911ec92ea29a006606f9b77b67092413160588da3f07f1d12d1ece9e3a29a0d17658770889ee1ed64f6851ba3b7974b65de06a798bd9e9d92f4d64121420c59cd73712e440c749b0ab87c246bae4e82584f6681b6ff8838d30cfcc41647866ccf5b9de3d8085cdc597387e0d21c96d71ccc814a7e181053c30ae2dfded348f927a74ddecc1be5b4f54bf6b964484bc0708f644faab34c6e52fcde40e03aa622fce5f57669dd473528acaedfe49a22eda03028e46dbcfddc01ff18e276dc642a50fcfcedd07f5d94b3a8ce021adf2177d4df45e5e5e864ddc14952e4fbf2c48c1dcd8f778b969e5026d4648e290dd9c1819729c786f7f8ae60cb3d46cedfca0c7aab10e8cb7bdcce517f5c391c380c64432dc8de1693017552c0ce3335d9925b97993c29e65bd51b3b5c736e5f033f948e6416aa5de88a5210e31300f3e291fef821489eb61a3a8fac79c9371404c6f4ec508dae4bc7960c0397a801b20d82306a92073618d0d7024c81e8d69297110aa0058b40f228f71ab21f7ece49048e1a5befb2d0e4d7aea8355d81491084edc6bf5c89f27e014ac880f024bc6c9c9b4bc8e32cf96e63adb18617f23fb2754b2de26aa0b0f480d84d734436debd05d11e69c7912a3710755a446d43a48a128b6b1b9b471531a36d0190ccc80f011ad4db1cbfc82ac44d72f57ac7a4f18198f4816efbacdc661d6553a0ea106d1175c51ec575340a0f10e67bd3deeed5a053951da5092cca0fb772850261d3bf96db0f8fef71eced5d500aa09dc3dda8ecea3dab2267519a031df88c208965121e05e30bd9f65d7b28b0eef7b12d75e0275328443c75981ab5eacb5063c78c67cc784a8766e3efdc1791eb221e81435b65637a835523d952fa339ee0931f2317cae7d96f8878e8773de3cbee9272b9cb6e72c444b9441615069be089e1ea4b8179644bc4b7dfd7e3b6a4c229e33dbd564e355f2e6716a78d01a1ebd8621171e770e8ddedaaaf18cb1925d1940c718b85fd5a5685fa21e5b91c0e0736f2b6f1c55e05218f648e222ffb43d78aac0f31242e5ca0cb516808b20c94c1d1e1583a5ea8bba033f2d057b1f09f85b78aa6adc304e7a48f8f0947f56aef1054a01531cf8c99983726d4db2f7de7550f649b8fe0c988d76dc72f8fb4d9970795037d3e8bf9da6c2025e87ba2dbbf5ee957125488e30d9a96cb6d1b9552f9223858019359c96a0323db0f1e3f5cc63920c73aeb01c66d8f0f9c80ef1b7e964e54615490c77fff7d8ba68dd44ae05e1ede888bed3d3075941dc920a9c541066b42033b40d454b195bd766c20f75411379782b238601d574e79f4d25a8a4b2a617681a81c51886f3c2623a5b493b00a85dafbe12b9289b9c9df74dda83a69defdf770ece36ed2aab7c1da93b7dfc585b5eb1b1f1b918a97958053f2dc8b3c4dacdc338e9db3c5c259dc6275f7c664789b4d949a7e45dfa43cd8c3e905c7ea7b5d69516d3847fa6b85ab9b525b21a0765517bb226e40522d889f9eb742ae60b134a6f2424fec4284fd5f00ef051ab166cc44d9a28827d5725b30ff5de6e0de1d8e1e61db2fc7de7e6ab82f1fa07e3b07681a450565e836c101b6efcf02347238cb842122d14a5ca4aade68d2eb8b61addc6f6d43c61378c929135ce5938efc28716d8825b86da2c64341a4ac4da0c3b1b7e19ef8d264f8a8ce25a1405f92b5faf188199c8a4543809706b9e4eaa5633ccdbc1b07c48d61a81b82730283454c1dff7f72a593fbba8ef32933b7e68a76c448f77902cd8c9a1c7acfdb0f63997baddbb8b314b90ad81ccee835c039278fb9d8964e648164dd5b47f32358cea390ccd8b4f2e738355964bbc487f203a0e7ff7f9bfac3e6d759c4af11e6b4a250eb3587a501ae0232d0ca3072620877c5645f26e991401b66afc2e4323b43c347765baec0697c37d708e1196455405b4cbc40a26a54bb763e0f64baf07ba9880f46758a034ae2ddb441c9a5e6330ee71d6c9d91d3762bf4fdea3c47c3881fa71d52ad50a5910c66818a2e4b9c8cca7c89f12b2d27dd073ac9a867436fd8ce02583deff56e41656a52be368ee0abb6d4e1c5d3033ca73676d12d7c647498afb288053a74f3fb79edd0509637a75eac87f32bd485e4e3720aea28e3d67659a694719ab09fe2628caa63fb79b714ec1e0a0551de6179782d5cd9227288fdb2364526b8b19cb14135cb2a214ce796b2793c97fbcd39fcecdca5997ee146f8db75ba5004b2b5012111ce1f5e8fdaedc4899cef394cd47c7e554c2ff71a080c5b6a9487f30e0d2910e2a422815d8dcb04b5b7b3550dc89c2a10f683c425208f6820bb016729c88e42402f602b2e4942edfef92d30fdc5368fad72ed901c257d17af04f99e99a7acdadf38de1c237614ff2a090a13e82b3a8b901b5851cb5b39ccb2fe955874e2c64122534d14b2435caa74e15e9727647341684b1cfa7725a9e18709a4ff87f792b2f848f93e457a783ad0e45da874348c9b3f516e1b7fce60e1d91bb71b87bfcb33c7bfff67bd6e71f45b836da0ad193362eac5378a253acc9b3b04d4c0401b1693c94953ac4a8e0f2de7ecf185cd91e5970a5928444e9ef82f91c38a7fc6bac39b7a139b03c435f18962cb5cbb575b72db9e25726aeef37db7a2963c0b4883197271043ba81cedb697d4560d1540e6b8722e94e65f1cbe047253113b78430ff843713b3a66418a5a5de402498cd16d1629f5905171c296a0efe75cc57369dfd730c220e161a26d922b839711654afa6a865e8926fe09c2cfcd225b77563c7b5869d6d394c9eb24f580020d953ad7025578eec4a8830d8543d3ae4e5436d85bffb0001ef08930d9c10e57db4c4e6404886c7eea8362beadaac7045ea3fae6abc97129c8234a7e653bbac64aae1bed046faa8cd5243dbc52789ba4da93080a7e9c0030a00000000000000cae3981bd9a3d856131e6cfbd3644906942c69d678c8950ce339b6b06002449543e58c5524d00e2120d3c37d467f60a77d631a254ebe7fc286f584ab8e4edf15 + diff --git a/zebra-test/src/vectors/orchard_shielded_data_vanilla.rs b/zebra-test/src/vectors/orchard_shielded_data_vanilla.rs deleted file mode 100644 index ed9a98ca0b7..00000000000 --- a/zebra-test/src/vectors/orchard_shielded_data_vanilla.rs +++ /dev/null @@ -1,34 +0,0 @@ -//! OrchardVanilla shielded data (with Actions) test vectors -//! -//! Generated by `zebra_chain::primitives::halo2::tests::generate_test_vectors()` -//! -//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` -//! instances, care should be used when using them to test functionality beyond -//! verifying a standalone Orchard Acton Halo2 proof. - -#![allow(missing_docs)] - -use hex::FromHex; -use lazy_static::lazy_static; - -lazy_static! { - pub static ref ORCHARD_SHIELDED_DATA_VANILLA: Vec<&'static [u8]> = [ - ORCHARD_SHIELDED_DATA_VANILLA_1_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_VANILLA_2_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_VANILLA_3_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_VANILLA_4_BYTES.as_ref(), - ] - .to_vec(); - pub static ref ORCHARD_SHIELDED_DATA_VANILLA_1_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-vanilla-1.txt").trim()) - .expect("Orchard shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_VANILLA_2_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-vanilla-2.txt").trim()) - .expect("Orchard shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_VANILLA_3_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-vanilla-3.txt").trim()) - .expect("Orchard shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_VANILLA_4_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-vanilla-4.txt").trim()) - .expect("Orchard shielded data bytes are in valid hex representation"); -} diff --git a/zebra-test/src/vectors/orchard_shielded_data_zsa.rs b/zebra-test/src/vectors/orchard_shielded_data_zsa.rs deleted file mode 100644 index 58713e436c3..00000000000 --- a/zebra-test/src/vectors/orchard_shielded_data_zsa.rs +++ /dev/null @@ -1,34 +0,0 @@ -//! OrchardZSA shielded data (with Actions) test vectors -//! -//! Generated by `zebra_chain::primitives::halo2::tests::generate_zsa_test_vectors()` -//! -//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` -//! instances, care should be used when using them to test functionality beyond -//! verifying a standalone Orchard Acton Halo2 proof. - -#![allow(missing_docs)] - -use hex::FromHex; -use lazy_static::lazy_static; - -lazy_static! { - pub static ref ORCHARD_SHIELDED_DATA_ZSA: Vec<&'static [u8]> = [ - ORCHARD_SHIELDED_DATA_ZSA_1_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_ZSA_2_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_ZSA_3_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_ZSA_4_BYTES.as_ref(), - ] - .to_vec(); - pub static ref ORCHARD_SHIELDED_DATA_ZSA_1_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-zsa-1.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_ZSA_2_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-zsa-2.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_ZSA_3_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-zsa-3.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_ZSA_4_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-zsa-4.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); -} diff --git a/zebra-test/src/vectors/orchard_note_encryption.rs b/zebra-test/src/vectors/orchard_vanilla_note_encryption.rs similarity index 100% rename from zebra-test/src/vectors/orchard_note_encryption.rs rename to zebra-test/src/vectors/orchard_vanilla_note_encryption.rs diff --git a/zebra-test/src/vectors/orchard_vanilla_shielded_data.rs b/zebra-test/src/vectors/orchard_vanilla_shielded_data.rs new file mode 100644 index 00000000000..de1639e55e9 --- /dev/null +++ b/zebra-test/src/vectors/orchard_vanilla_shielded_data.rs @@ -0,0 +1,34 @@ +//! OrchardVanilla shielded data (with Actions) test vectors +//! +//! Generated by `zebra_chain::primitives::halo2::tests::generate_test_vectors()` +//! +//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` +//! instances, care should be used when using them to test functionality beyond +//! verifying a standalone Orchard Acton Halo2 proof. + +#![allow(missing_docs)] + +use hex::FromHex; +use lazy_static::lazy_static; + +lazy_static! { + pub static ref ORCHARD_VANILLA_SHIELDED_DATA: Vec<&'static [u8]> = [ + ORCHARD_VANILLA_SHIELDED_DATA_1_BYTES.as_ref(), + ORCHARD_VANILLA_SHIELDED_DATA_2_BYTES.as_ref(), + ORCHARD_VANILLA_SHIELDED_DATA_3_BYTES.as_ref(), + ORCHARD_VANILLA_SHIELDED_DATA_4_BYTES.as_ref(), + ] + .to_vec(); + pub static ref ORCHARD_VANILLA_SHIELDED_DATA_1_BYTES: Vec = + >::from_hex(include_str!("orchard-vanilla-shielded-data-1.txt").trim()) + .expect("Orchard shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_VANILLA_SHIELDED_DATA_2_BYTES: Vec = + >::from_hex(include_str!("orchard-vanilla-shielded-data-2.txt").trim()) + .expect("Orchard shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_VANILLA_SHIELDED_DATA_3_BYTES: Vec = + >::from_hex(include_str!("orchard-vanilla-shielded-data-3.txt").trim()) + .expect("Orchard shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_VANILLA_SHIELDED_DATA_4_BYTES: Vec = + >::from_hex(include_str!("orchard-vanilla-shielded-data-4.txt").trim()) + .expect("Orchard shielded data bytes are in valid hex representation"); +} diff --git a/zebra-test/src/vectors/orchard_zsa_shielded_data.rs b/zebra-test/src/vectors/orchard_zsa_shielded_data.rs new file mode 100644 index 00000000000..8091036f65d --- /dev/null +++ b/zebra-test/src/vectors/orchard_zsa_shielded_data.rs @@ -0,0 +1,34 @@ +//! OrchardZSA shielded data (with Actions) test vectors +//! +//! Generated by `zebra_chain::primitives::halo2::tests::generate_zsa_test_vectors()` +//! +//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` +//! instances, care should be used when using them to test functionality beyond +//! verifying a standalone Orchard Acton Halo2 proof. + +#![allow(missing_docs)] + +use hex::FromHex; +use lazy_static::lazy_static; + +lazy_static! { + pub static ref ORCHARD_ZSA_SHIELDED_DATA: Vec<&'static [u8]> = [ + ORCHARD_ZSA_SHIELDED_DATA_1_BYTES.as_ref(), + ORCHARD_ZSA_SHIELDED_DATA_2_BYTES.as_ref(), + ORCHARD_ZSA_SHIELDED_DATA_3_BYTES.as_ref(), + ORCHARD_ZSA_SHIELDED_DATA_4_BYTES.as_ref(), + ] + .to_vec(); + pub static ref ORCHARD_ZSA_SHIELDED_DATA_1_BYTES: Vec = + >::from_hex(include_str!("orchard-zsa-shielded-data-1.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_ZSA_SHIELDED_DATA_2_BYTES: Vec = + >::from_hex(include_str!("orchard-zsa-shielded-data-2.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_ZSA_SHIELDED_DATA_3_BYTES: Vec = + >::from_hex(include_str!("orchard-zsa-shielded-data-3.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_ZSA_SHIELDED_DATA_4_BYTES: Vec = + >::from_hex(include_str!("orchard-zsa-shielded-data-4.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); +} diff --git a/zebra-test/src/vectors/zsa.rs b/zebra-test/src/vectors/orchard_zsa_workflow_blocks.rs similarity index 99% rename from zebra-test/src/vectors/zsa.rs rename to zebra-test/src/vectors/orchard_zsa_workflow_blocks.rs index 7018a8a1cbe..7ce770ecf65 100644 --- a/zebra-test/src/vectors/zsa.rs +++ b/zebra-test/src/vectors/orchard_zsa_workflow_blocks.rs @@ -1,4 +1,4 @@ -//! ZSA test vectors +//! OrchardZSA test vectors #![allow(missing_docs)] @@ -6,7 +6,7 @@ use hex::FromHex; use lazy_static::lazy_static; lazy_static! { - pub static ref ZSA_WORKFLOW_BLOCKS: [Vec; 5] = [ +pub static ref ORCHARD_ZSA_WORKFLOW_BLOCKS: [Vec; 5] = [ "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f027f6043d927d72f8b5df9984fdd36d2e2e1fd1ff8f7ee04a2b7da9306c14551c40000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000100000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000001029063000c87d7145492f9ded4d37b4ffdee769a1c41b0e17d622cce77f122d70ddb74fb50c5c36666482476bf5e8e190dcd8f5ed280af209b3f679d4dc06a213508774e2f7fa82dff9a985866919085523b13b0af4f534975228468feb62cb12575681e6101284f0fba5628e2ea531e9dad53d864c854e419e4c5b91fb7b35d00597572f98db1bb9f3049dbb9a08d403efd824d9d118a68493191e059ca00b2982252a2ffe5c3918a79171c294481fa267e83272858592d5890884feb90752347f33cfc9443e70a9f30d6150652eb2bb04327ee72b9c5e42462d4d2bd92725df50ce267c1588d29b08b25a719738e836f9c26ee47ce3945f9b627c4b9d3bc8ae755d8b78b840f1fcd055cd179af2ae0637f49fcc44cc975abb478fbd9922c15e946e681ff6aa64ac7275d58c7811c3d87c4e48dc97e35ca68780218e256f8bd7d9c1677bff6d75f663d24802a7b433f4461d686e1a0fd3d214b81b1398f8f79d062c4e92381741c3f96f3e81f455c96d05a623985e39c1d16361928424286483b40cc9b1249032dad9bf92a563bcd978c329ede5eb5c7933f937b6f2b73507c8ed0a2d4ca972281ed79bfe367b474b6fc89a29f20c913a7e42287074a185ea83fca9d0db796cce2cca07f3cd379eba7efdabf86a594e6743b0f30d3315daedd2afe289422cc0a5b73c3e837dc2efb5975e4fa8183fbe68b5688bd827472c41248bacde976d8f16700b4f6c9d6c83afc134e3766b7afdd85be2e373f98a7ef0d2ae19e98bfab76f3362888f3e81917b22236c6eae7c79ed9489410903bfbacf77bc1f0de11692cae0289c786ea3eb08f7fc652146d2529d0217801e2dab9d67c13cdbadd189fa302fbd402c4befe5823e70a802dd9c712396c20028f4f7c94a49409b169fa46a7569fe289d7189adb3e5e9d9dc63903aed828ecc3ec0144b59592a6a88c589577b976b7c781b3b43eba304130bf38971784c7caf8e5994d2ae59eede5ba220d7c43378b492e69c0d7b06445a49174b6aa27d08dc186b7bb5ec6b6b6e3b94185d5d10a07887b5f66f9991aadc239b578426ebb61b85ad40bd80aef5c4707963c2d2d9b79dd9cc416a597aa83c4e74cdebda03d6b7a1cd0238e88161d8ba579987335998fe39a909488455b11937e11d751f425ce7cdee73e8a99042f03eec4b4c00329da7dd90b75ac8918924205cb98346c5ab54096e7a91c9f44c4b21a885d36813221546da0609be857260bd691dff247d867f224ab98015aae153ec30248e15b5c0b2a0731496cf0518d9c63202f93d9f2023022d3fd3c83ec465ad3695d0e0d1ea0fb4eaf9dd8f6f92919ba1461e2d6e80f5d89e6b9b6d5241bffe1d91604c02e13592ef10a4b87612f82ce32b50550f0c46eb4cd6d081152b2123b0ae617e74a6f31f8721e8fcddee49e4c9269517fe55d7e364407b9fec4fb22711585c535bd6a3a656634cf034e30d4bed6e14c56ae98646a3fc42bc4906eb02cc80afdc9c5cd824ca22772567d8aec88c3b4fdc91d34133e8bb2a2787c4fddb3e5065fab306caf686f2684635aab39232c71d9211358eb2491ae39d0c5464efc0ae97b166821956d3c3e70acc7871b3d3c7a00e54e0974236fc1243caa57e04d1ddc3c42d67e23607830aff5540a806c6abc2621035f7e4280c7cd0eaf70db3e88d84da095e0c1a4d0d62728c2f8a939ac274fcddc1442b9993bd8b7f1a965b31af20637c789d93aa5e09fa6eeb4b55393f68cd9bc1a8c67f6d484b9c2134a25478e1fd28e0960ffcf8e36492e4b12f0c787fb16e80d7d0e92ab94a34e53c1b1c0b63db557e54c8e0c919073ff2366c83a4ca9b07b639172dc6df0b6602b3e8977ec3becf6b716c55fcdbaea993494e50b49a9dc8e7c09118942432ea3c5a036d4267928f2393072dc3734dd841e0c37cb2d50fe2f75c5dc77ff9e1540a52b136967862312de74af7071d4f17de67775adf87f1e540161a4eaef191a93aef5daa5ff7d42e36fcb31dd1edd73ba829b32a6d0ee48878bd6ff3ef472f48e9e8bc1f479c34f3d5509288f3181a49a8f3d7771c5cd076533924dc67b96da721ec8a19a85f903c2a2eba21c0146526dff8a8be77831f558be214c43efa29ed6e9be6a2d8e712a745bdcd0f9bce70f997da5928cee6775164168bb343d2613821b4814a1198df32cdab2da48c0188dfeeacef916472529503d8a63c4b2092133c31770d79ac922976417ba6a2d92b4108ca7ae496e039a7ef38deb19d22e1116e92e9cdd0a371b27226e6dcfb14ef5855adaf2949d1e764c6f83bd7e4259dfcf4d1831e2d9b80145128ebbcb0259e3cae8ac973204fb2bbdc5e9d967c6f7e5e4c6f0c139b4a07aa6b63430ff511c223c64933f5fd8ea367d4829c63938a2ee54b3469383824bab4807ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82f0000000000fde01c1ce7832fe7add3bc1fd885958fc5fa1697a0336a4504ebac5d683237a8510183f29c22defb607c48816c49704d3ce388ea27bbc7765a43961fba354af095dc9984dd6b892f223256347a3a59083aed6de70dd327a95e0f3dd1531d01f874829d8095242883e06045c1186ab08124b5dd0b5ec86c6bdd12f5713fb6ce125c0203d9191bc63a1de897698f59060b124cd81b8cea5e2a026577ebae2edf3e238203b670331c0cb32a229e263305484d7f3ef896c4e03bad52bee2250296698b47bea4f60342a23e0ab908a3c094543fbeff20748c3e75b7cf9755813388d5d8871f862bd444e3469e9e72302321bf35114dc6c8341c838f962debbeebf9727a132ea1a03a0141d6965bf152fcaa6d18ef7c24e32103cbebd9c1c87f0601da6e4f07af42615a0b2d41aebfe02e1c2ffaaced5c3d996c8fea947adf7975c4d6419b20aa0c804b867530bc1d1d6103ee6a6674530fed4b4a1289d4376902fc5ed33392111c323f6e73a07ba04c69f8e4214be8074e76124e84990d53091a4b95a9d482a0b2447d911255bb3f312c706151d8a87d284aaa0e4e24c059c07f4952d3fb0308acbbe1513842cf7881159080f10bd0f169169d0c0c126770a9b7985f0aed262ba2749b2c9a237fafefdaac68b8756c2a628f5bf2b7bdd804d23e2a8b9eb70dd38586c842d7a0e3c71dcbe5e651343375adde02e5501107339538b0e2dc45a9cb2eb8831ad77bb61d0359ad4c1a2dc31b29a850a31d7e72d00b978de4b570a9a4e4a403156cdf351154975975d424bd9933415081cdca5eeb411c4a723b6a2d19ab96d3a9ff273d5e923d158425319cce5c63c6ee3adbc5b36e05597472669d4bb48a292271a10a85ff7274a74e5a96e223d0705c08da720425e98ef270f907a20085babb3f642bf67dd8eb3fda67592b6dee4360895e22713783899ec9fe37f861e73cd5261a0be04af440b5f35fcefd345bba49a02f7e754bd5276e343a8f1f081f7e904295a12f57d8b0927be322b35368c463525415e5fc01e43c7064331258ef895a5f0f23bdc7b2095c2d27011bf17dbe37eca66d44ef565ab7cf9280a64651a39635b042ac1b74bbbfcf792e92cadaba08677a836f10bb0d1acbf1318c7b39dfed8b7ca0d64a24ca09d717dc618e036818ea11c743aa6e6a2fbbdd0c42f7c59122392bb90515b425b62ccc85b311d880cf24e621f100cdb8552c4e02360583676ae33cd314bf49a5b6979e6a7fc379759bf1dc9ac51b62c8b1851b87a58ac9fd2a9f30a61e7d96546ce53f8476b575777a533484777fa4ad9d921aa589f4d880de9c28c93c26e6d4284a3ce64ddd454490f73c9db8f4f1f49e9cc939405d635f6ba3be2511c2c1462d65905d8f2f40fb82d112141fd9591bf88ec98f82aee3e7d0a8c0156bbad06fd3eeab3da041ba47c572b3be65bae532893ae1b69d3e37a055c02e994e8429aba5dd5b455335144c63d6ebc6171423f2dd8ac600e648d34512929d7fb66b5fdb19f004c7e75e5e1d5e7af29a5acc9b87c8563c97b1c4cfc848676b1a38ac76ef4ab441f9235325dc1416911bf07ed7c598f6fc1c16b7d4a92489b5821f7151a11ce2dfe04d95d661a5cf284b4bbf83baee5165a3ceba103d36d15fc1a9739229e21789210581f9206323cf03526e2aa38f614bb59853128dd688b711afaf15986e89cac8b4b93b1ee24d55bc40743a4783746caf4f5bcad200363785c754d6af2dd5d519a4151223148e4f5c89703dfd209d8a38b5bc55c5f1f644e6e071bdd8f6597141c37530b7ef9e513c49f9b7b0e0c743830931ae2958c73b14ab1f35e2618298db2c437c95d6d4b13c41b4bdb51f13c1813762e213e18655382d670f55d97b2ed83c695488efe5831ec82656c6d42baa154388d4e212fb5c980b87476e62f4d8e84302f23c54b95b7b1b74e0e44219dabb8e8b4d4830a7494b627e1f6e62a634b86dc821dbaef4e3e3b53e69ad670f1588f2aebdb702828098508060b53cca72fa8c92881a20a852eb1315c2439ec89fa183e67a81c6590dd51a743553fa48fa9f10495c6249c7bbc51ed08e703ce7103e28b12a263fbe66466ad66c11bd9c66c27494b9815e1600bcb2e4248a514a421bd0b0363d8888ad8c9c3605b005a51e77af8a3ae4009f34a24ee242a60cf5c0b2860c715cc56337fe9983a893be43fe75c87997d6eff3e87ca34923fb39993dbfddca1d9861b9314bf420dfef04b0edd9fc9a5b6d7ecedbb7d669a5cdb5045f9a7217f83c62e3eaab4fcaeb347062b02857e7c073eee827e0f1a9c37f4fc3a914b2f583f5632a2fb974aa64f08245c706ad94e29f7b8d1b8b5a423bc3b5b4dd9106d1fa787a9d5d6f64f3273f3758600ff39b6ff0690d7f4dde701aa04e664c9c3f622622736704a523f78bcfad7e882cec28183bf15316370dbd4f3164bdb1224f49a27121e57f7cbb7f8a28650fd2589cd109ac1040194c44bcb8479d655800cac9fe82717e9496bf32e8d3e3a4b5fa7826f4cc86878fd4ef9857640c59b60ba7276af3e449679fa78939dc590c1fc392b854c7e8c4528108bda4e4a0c14d27adff03c0429bdabbe2df4249311d5f7a7ec35f023b166f7de5a1a521615db0376cc1237ec902a4f76624a8a5c65a293d4ef3344429aadb482633bccdcbe1160dcd098b71deb84153068083cc6976cb9fdb46dbe226fa587970fdb4fb14b07720de20cae800014c66da833530b84d7f5f1977f74813507715dda0071e845f9c291fcc4fa4513b24af47000d230d72ee0a42c0a356c1f96fca44b313396c974b0849aa95d0062562d0fbb31d47af78e4e857cdbb43f2014ebaa8cf796067863b0444bf7a3a207816c5eb8dac792d15a01f7ce0bd48a5a3687cbd8bedd364d176106561493bb8e83f63bc67fd07f8b11fcf3bf99b2a1daac1a001ee09d6f8d3973c623b8838988b4faaa1d9151233ff1cb89e947ccf322d59b0011fbc1bf66f5a2867c0a35385d55463cb7fd01db5932b9a163ee6cc11ef0d19e09e2dde4245571fa01b8624926e27a9bae527a27dbfa1fec4c5687a6193a5336469ff40fe03eb0338889dadd86d84a6381b2f65cdb3b6880ee67de08572d6fae5c5df6b2ec4e1216a5999cb3c2bbdffacb157d1e94061b4eb985d153b8840c537463e8a15e5533215522f1d4ab74f09a21b1e9c851688c2131f7da84c95f390eebae35dbdfe1e28d5d0755d419707317ea45d75e88c40d5df34316fcc7f59de8af82e1cb0ba3e10ff1775b8d6f6ba2141a1f83b21b577afea554f709fb4c373f6dbc66a4e97c31a500129684d7315874633453e7ac8c10f63ae4708b28361c772725a110fd3e626b020d8b5b3820faf67e02e3feb9d13ba99f40b6ae834ce75881c44d8124f3f234cd003d5cdda116a218c3dfd1019690b31ec2546b0be2660aeea3b11d375cc19ca2c57fb3ca817a53dd3357cd5f0b72c3a06dffee32ee613eb53a0f679662108f42002ea24bf40c2db026dc595710d23bd9ef571dd37134955083c25ab968d23bae81d22c3a16f10f3d75cfd7eac8337226dda9554093db1c60261931c278b11846796d56a477f454ee04053268709b935b198ffa096dce5c9d3bb1bbbd8fc19a38d529603881a9d449f522650aefa9e0530d92f2712c6122bc874587fc80c29beeee0c2f532607cc63aa8a91413bbc351a2a355b40b3fad7871976b6a46491ca94607f27b2018af66a8d6e429b8955a68e10f3585666b40005248f39fa274020d57f76af52e860f6004f20b33174e16b184d39f90ad5c563da44be6a526de1b258a20649fe5b084b546417385ede6ef19ab6770dd56583d2f3d36901aab371a341c1fbf11929950845b05b833dabff5608b2b0346d8f41ffb24b2be3187cd2ca86d06e8adaedd3f3e9ca9f6e1cbb85bf6c34eb3dcdd9931edf2312e4348481d3ba48a33ee57a314c77196fd28b63546963da0c3edb742934e33daed72cbd80b1ff33a716e22fcff53b93b8791238a92f62070a6c8f74d3c16116c1f9743bf100e0fe3e1dfd512e60fb075f193b3d100f8327a8b7011b1a12c519ec902d7183a09958adbb491a9e9de0070fc685b3963f1617112aa4edd1a4bd35bb459ad121e34851230f78913c59ac8d766b84ab510f657257a109de229ddb30b3db025f620604df250741b4eb757f6a0b6d2a0ba2cee7ac1046800eae0519243380c404a133766b685997236bfc73e3317e2da32c9f449aecebbd02c28c5e62226aeec140e4c38dabc0c6ae4d6fbd5aedab7abe0d2b0b0c7533367db3ab39ca127f688ef34aa4a61bf2cd2ca5a0f598b8009e5610efb05da12495c0bf02eec37fb857f7d1943f8f76093a27b422a910f4904cfb836f62d7ac295760ab9f2587f60e83d402854e9a3550a190f59fbcc5c94e6f6bcf9e9d7527ef7e6c4afb13b928fd2fbba2ae008f19da2d385881dfece30a3c9433909bae080e01f09e987a059f368d7712246839159ec183345e5a8607e860bf1948134d1ab791c2446094d012e14e1a82fa5d95106c0c9626df1e7e56cb7e6cbcfbea965f64cc4255319eff09bcc40ab3ccc7294ac369701ac1f083b615e532d13ea809eb68967b031fff2b0536b781e08688a51de3629d4c8e3e29987b4ddbccea41b7060ed9f635da106145bbd4dd2045f2215546edfe71205f5a139bf5e9af5b68d4c34acc19307d23b7971da98ec2ebc8282aeabba8f1a46af4baf00276aa0e9e5c212865d763687335e1ec2d6c813a516bb2f2b79056100b07488ce2fd5089be296ead42ce345ef58f73543ab102ed79e426521fea60dcce47e498180ee94f1e69bf862c9e014ad60f6041819f01107812803c986e547a5fb744dd766b92e22ca8621b56190ab1a7019eb9e288114c4c450d08a95da7282278239f7fa073a8ce444506ae171e0dcd54d1861362f12957b366b92dcb0480017c6a397b27506c55238e1656355786704489fb54bf1257e90a246f92ead455166c4217b610682a6446514a1b59d5facfc7041d4e639046e60262097557cec24c59629b891229e714db79a80e830af7fa7a2112e60ff1fb95741f39c51d37c3be241e9990bf14c325e558483f65408ba25c4cf85e10122cd5cba6010db487930eed9bedac4d533825c657aac9cb709920f6c9a537b76194eab8c330fcc7891e24207f5ca76980d94bd1b6db41692ee6bee117544e98620de4390da019b63757bc78ea7d0e27c2fc6b92d8c0366e23ff1d5a38130e5183340a905cefed2bd332d443c6fc6c3f4601bd3e4927b40388c00c842c93d01ac365bb6272f28ad28ecdbc05dc2e4f61175cd36f5fa5a4771e0dfb6e13cc2ba910e28f11fa13728bf2dc57e279ec67f8046187bdb99cabeb0c3c008c6ef26ca382f9940e0b02771fa6c2f69f1116baac1adedfae6ff68dc8cb249c112ce6f9a6208cf1fb4c4183995326dd690bc4531de9ac85a0be2f6b0795b6f9bc700b7628c272f245de3210d89fb7b552a731672779675ece0963c2835ba8c6ece9cc4e55b2d077489cc8a83558a1261a452dce0317cb8ef4e8642f3d13090305ad345906b180e50dece886830f7a349e3477a0f10df57a81a5f895e8c043085d331cd1bec20f7b8792871912776be3ef4b8b411ca9cd9a9dbd92d1f66c90b23d35b1d0cad3acbffab5141b5171336753289274d897c2449e9316c3d19fecd86e454a51c820c080ceef6421565d481792501b582190d960776cc5c6bcc3f6a33a92e213f7c2e932d8f1513d1d2bc31cdb0c9550ea21fb9d5db1acb01eaa804c594f98777652a7af27184e4ada612201c80f18d1cbd5f9a4a535444934b72f6262d582ac5802bc17c106bcc4a53eb4af6334ec1eec602bef40366d91f4b4df477f2b3b6be2111e0e6223c5f43811ccbb3c31f8f4c2138927377521cee9954a493340596fa0431fb953e7ee3c0a15b37f47592fc4cef4b47c759d6278b4fe5be6519c9927e9c08f6e89c6ff99ca69c9f89e27133b52197520b873c578ade66962bc18d0726db271671bfbe8c21c16eced0675a58ff1497cb00e239481adc4656537b80830b37264e7f1b50e3780f32ea57c9125c73f07e33cb30a51ec6c4dc98c4f9337d62152ba544eebe4d7a8eaef723ab85570d549fb90687f3b4782f7647988ca3e97b6736bdbd7cfb10393405a86118ccc415a16e7614230828430728618da31e37792f043e3777049052d58957a352e54c16b3d93c8595220a2e8322f2da669f11be3817955f1a350d3591ac81d7e627015b0653cff1eae964f89acfa41663a833e65235627eb67d30738f170da134de1d58499997315a329dcb52fedc30171f948f6f23a2be30b49398a2162f469eb161e752faa487c533e0ac6aae88c6d7ed64892a0ae4afbc2b30ace36ca7ddf4f1334b6731641599b0d2540c4fef4ae6d9c0b81c2d356b98178360b853a501dc1866343e81fccfe0e99b1042d10a38ef3a5cb20434118e16eb23244446ae69bcc1a1e699cb5981c206689578a9a2b3f6aa3ca37f1e09346fa2f4f7695a6b8f7087e9763f52d06de4208a4cc02e92801883f89ecd396248db5f0d2ef527a75d924216fcae8c76178c0b7c27f618331fac021e6c9a3a9e585d1c160f53eb39ebf4b1b3d84d97b2cb9d0f616e9b2ae10bb9e592580f27918e4a17be2570f5e4283aa8420189f72137606e2be0a9e2ca81fb2312caa0208747005ffea881f8a44add38303e7d080e4be30b44271aeb4feb37101c201d0f8504e711324ecd3b4dee9d69348c22656b7edc5f68b236030273890e9cad41258e1445ec934f9b4b2b2792365b52d0b44bbccbc721494a5671a60ed4fa289e203c68ab3c4b88ac36f9adc91a4a6c8cc4c52feb2eb34b64667a74c3bcdcd6e438e20d2b6c499500f488edc872165133fadb4fb7713a49de17f60ca4d780918f3cfe19ca1447f83761ee1808436e310fb7cc32db065c5923a4537d233be2f3311a5ea416c6bf280850647c650ac01835351eede816511edf33e59f467d0936af21a4cad0df6fbdd6711e198d896115cc3dcfac0948522e231b34e47dcfd05b921df497b190af5d621c59c94c34bd405c9be00b6dd72cde87e93ea313039c01633335044ffa8bdea20d3b8ca5db2c4516b5a59512d09d281b187722c8a5c9ebdb2064871229640354e9aea165dddafddfee4dfc1001d38229e51ab7fc33460b4b1720300aede7973a8c940e6ff297225d53bfaa6880b2b4c0ac261668eef9d6823dd5b0c6215d16c00df561e9c4abaad3ef0da84ddd599d56691dd1b121a6120c3408bdcdd972f77d207d382983b0a044647cd2b86c91b8bf19426c5742b7378e2f21c0f09bff8669f6b0bf6187d44c3bd1e50dfb65aff3aa88ad00c2e12735ee384347379d2b48ab3f0b36f712e0c1bca9698d29f17924f0343fc573a1115981161036b71f96ed9659b52eafb7794ff9a05b42f5b96aa530e45f1892f49dcde62ee824ab3dd0fd9c511bd8eda0d60eda753cd5d444c0294aac617b6c6453ce8b2274b0cbc5beb68e2761897b1e2ac612d8e6f8605830113bc800c91bdc4d4c89394d33c25f6465d813a453bf89eb3f0baf3b83856665a33d1e0a291b527d6b5704221b5b343a6fcb70f561cb496b727fbff07e48b56cc924ef51b3459449fb5211c02ff081c90645ca392d5e7a13f13160acb5b53ed20b8e01390cc4d1d7ea9533b2e7a21e9ccaf0461f1d5562c1ae28c04c138083f4ebd11f75e3298b2321a20395d3fc685d8c4986eaacc4e97d6481149aed040e07239c051d761379faecbb3c3356ba37358353b204bbe96765bcd4b9375470fac05907fceec5d94cb1195227e02f7b66005f9a76ad9ce1fbae7097b0ba824c9e415f82b0812a3bc6d6ae3824dd1d04837ca39047cc27d57dd5655f2d52e1b28ff24af701c93a169bbde2201b4ef36ef361f111838e2a59b2f1ff32410c91be4b2ca0d4d434a70c0d03d8ca0db8c9cb7b27ef0743c8a0579d6c4df5a76644637bee0d45ffc4ff83a1ff779f22e49e65550b60c279aeef6aeb89c1ff6a8cff8ae5eb645e9e15d694350ac0f7127ecf632f218759eafc04a988a3d23d1347a44b6fb1f79a2a40e41f441bb87823856b221e7cde3652a62b824d5f64b08570320f7729b500e138252a6220da6811707c097dee8d29123511a236f030381533cd5233b1d2b19da47cfefd49179430b70bce17969888c2c02b75d07bf84de64dc91fbaa6cf91052d40001bf83cdd18e8860b3527d9f72895ff0c398d4945ddd569c2c568bbce302506b5bfaaaa9e24f435e73c236730bedd4b8940bccce1cdaa2abd388646474e3d9c0afd61e28a1ebbc83ac84ed644039a7ea3aa270eac6f46f21fbaedd49ce21fe133060e416b03e28059d753b025f0c2b9f25e6fe146bf9f58956083e1baab33570493573b9d05104ec9bd2764793d655bb033c646af6ff8f8bb268d35c43acf614206bd4f5635de334ae2768e8621f24457bd6cc3f81a50c8fff871037415bd543e5515df44253f93ae05241cdeec2eca35eb2908ab07dcee8c795cf0a7442ca1213449a5c03282478bf0c0755fd7f62ca140a303867ebceffc631e8db2249c2c8a9806033a201f6e59becf382ccd5167ad5d1d7a3de10492c6bda89121bb8b075e3b6a5d1b09f6ad972c0605f1fe1610c38f42ab22625341b41c252be0fa80c9d082f56fee0669d7d4eb9762af0fd827e545ac5cb6b225571540f2e6820ad79311ed2fe57e30d12239771d79ad47577647068ae6ec7fa3602e86379f7c56709f822db68b5d35440e855509a2b86ebf86dcaae220a89b6f7dea85fe1fa5cf2d54ea4b242edf1a0b3c1a0b04b398e8a67c3ebd093e4429c9554605e2f4360449420a5fb5aebc158d80ee10349d23e9d68196cebbedbd98afd16670b66231f0f7dd9c0a4404da2db7a00172ff4f48b486183b2cc8d49b126acbf5e04af0a16b36291875c187ca2a65aeb240729167674cf5e26c2eb9f8464605279f47b57ef7584ba7b6662f221cead6f89825748ae7bf4a22d54715db9fa80609be5175c30a50025e54d11ba22ac4cb17fca2ec160184e6bacaa6e49a836697106511a1e65c679cf240b128ce1974b42812eb02105bcc59226faa7f085adf7b7ef5d0b2d5d88f59563e3d2edb1aa9ae253fda7e66996f2426d52ce0d36d5e38c07b94551851f4f1057e10beab078c85c6e1fd86b2200eee7345f0e9713061e0060b6333e91fcb7621d57333d80eeef03e912c2da7985a7dbc393aa597abd67b8240a3e72330488aaf26b53d671fe2effee1db167f747594de4de80bc1f0fd5b1786d276fe31d8a631556ad4080d7674b69f1cda2403280fe1eb962bef003d4df61cba3dd906aba9c01e5644dcba01dd790611da5bc46ee24e2ba26a4abaf8ec1c78ac48e0c5eb9c3079f802ca0dfc6550ba410b8d76885506b27efeb3bca592c2475def2dbd4f5d7ed4836abf086ce8b23d617701275a8d452085043d8b30bf66e0739471bc432a155f249f1c1c58e4fa37a02ae653b0ec71e22b9fcd3d9a00037bcfcbae7c0106d6d13dc60fad3f734ebdcc0d3fe9c29031716c746b52bf7c9db5a09cfe19bd9f0b87cd12f8a6c5e36153e0bf5587c959f3636618864362195078c591502325864283ccd1ebb071baca04a50f4069f1eaea8d8d2af49e76f29e88108df904d59a6631686be5adfca48571442a01cdb1a3de6de174fa9496e9ca50d2db065e61d82c16ef01438125a96e6300de69c30967c58545aa8f96fb66725959eb0bfeb99a54e7286740bdefc161115a404556a1dd0381f772b7ab8c1f7f1ddc0cc0ac782619fad570aa1590eb439455a642cd3122b0edfe9322a19360a98193bc75e4b8d2babaf0764099f36e3dfbce751a8fdac684ca46b0945ba593b6b18514d39542a803a3305b55b8f7c3c5adb4e516379db8ea4570020e95d69afbe165e6559636d9bb9d2936ff3272d757d393937ba4ee4edcc329e17426a7b5ab99aacbd804e453f147bc0439022a3c78b5f4df3f0cc24ea8993bc98fa7e5b4d628d36ecaa66231f2c612837b8c3704ac12862a67df9127885a8b4ce8f06d7dd0d8d2d25e6a9f77ed217869ad2d461c26059d689e4ed9774890e18dfe007ed3ae55f862abd7e4b0a53018c9c18129ec6983491c8fc9bfb26cf5bddddb1fd8db5ba17b8ae0cbaeed5ff553db2f0784cbcd76429699e3490c01a2090cba4b230fba3258d7e5cb18edc5427c1061206a1a5c3dc81e5681777216ec66cfbba42b7b506ce92664db7bfa51a9323eea0169c4cb0e83f756d3ea980461313e39d208ef70dc011722ebf284f75f07cde322ba23f211815e4b616f092652f949e369188a815613f8268a1338fc8f932e4b845739564983555417ac7b0170eb036bb80479ccdc3e9867ace0604f06da016321031402b21ad4ade201e208eed72004c59ba0fc7316c32e3735ba7c8c0dfa322ccef89e50b984bb020571702c2ec6f08d0471e72acbc1d19520ef5c9a110b953ae66ccb4278dd291b08af4621d3bd4d51e84604f6315b9cc52ed68f48f6fb51332718b3bc5e006aca5b50b1bd106ac2fcd300c77ace7517b7badc33ce9b5f0302e752cc1e3f0217cb1fe79e4202cd3614da5cad5ce95ac1c22038df2e690582130000000000000000e77c5fe5829689989e0736353bc0ffd6b69fd0512b5aa1d5292167ba63dc5719c978be1cd9cabdb5c757be48c025e5efbe17937c24504332ec6dcdcfac80e23a01ce2c6d87d0184c1799a254ed03047cf57a3bfd49b8a4438d496d741cf5aca6bd02cc36601959213b6b0cdb96a75c17c3a668a97f0d6a8c5ce164a518ea9ba9a50ea75191fd861b0ff10e62b000000000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4162bdd8d72b03b4e2f279a05dee99e05f68f38a4b1d7f6952cfafdca675fafbb0a65f0db75a331b2c04f82fed81c6edc0291ace5edb0794c285a5338f20c891195bc1e9d7134d3c05c62b251ccb3ab8473cb5dafc7b19f3b6750e41bf24c6ad882802a60d88a2fb0fd642095e8030000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed41691c948450f0844a9eaa60503567dd7c87ed664db6236c4368575d4beade9741856f5e328f9ba28c32610207662b9638281878e43a31d3f2de4e440d6a792a01a00ecd37228b00c8973da400337300587f48997465959efe09ac5e012e14f51eb2403e78f9aa4048344a45119dc45ebfb2fdd1806662aee645a85d9951b714a42ada39d7b268db0db118784846efe571b2feca12d5dbb15ad28d23c933987607fa4", "04000000045a150838106cf1bb1431cf7a7a41bdd26aa0180ea70a37258739c1915171621fc8b74000a4594700861a5e1a9eabc521772e8c0675238b3d87c47343024d8497e9a7826aa3d4e1e0e48e32e760799f2a3fe2202d90d43ea589a8a3894ded5f0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000200000000000000000000000000000600008077777777d80a1977000000001c1d1c0000000000010277428e76d2263100d08f73d9e12b480494f1a361b1497a85d1cac168b76e149e9d16da0b28025e804fdbcb283f932d1aa8cc19002505940524fb43bbe78d04033893550a22b3cfa9ea4ad9a19161451455d1669c9021c9f877dbc4641259ad250333e21e2620c8914b6e28bcb1a214a19a391cf371e089337397f7535951441b6b529032525a70d975fa5d7c22e78fb5059fae45391202f00a689803f908deabaf1bdba80cde3409e605aee987a754ce805f2fc008dff17023ef9bcd75972b85ecf641a245f6a6b1e8414ba0a33db1b0f0c4cead6ac87a32cfe9328773fe7357284f0c0fa89c33723326892785e8954b6b175a5b9d80b28ab20653296b132b0a8ec7c5fe1ee4cb5ef5822445173b8bbf26e75f8118f7f2e8b34c001faedaf9c341f42691a0b0964391067bb026a2743922e5a72bef9006c05656a9e8814c9d98ea8056681fcbcfda9aadb559d0e57c88b77495670aff6272820b4af9eaceef3a8b659cf01e1859b2d0825a039dffbc9618eea2653167fde9aa700f8ea376a7dee10a0e3d24e6df07ae33063ae54de5f245a9a90f7b5d67c4a0a2d94943a81831465a5cb640c4f432f5e9efe6b0249f333b2cb7f6654b73483cf2e081536dc03aaf659fff9ef18f87ca4701b37d62cf9f4e9e0dc224a29223cd41dd229795123cdf29e4c82f16b163179333bae17cc1451910b5442ef9f4fe612407c28ea32037cbcd4ddcff9a3de920186ad441430007e4c09639b0a54739dd9d12ba4f0f8b5c653fbef6332645f636bdd6979614a06ab14c88869343f82b3db59639ce053ebf3c391b745554a2e375b6e72e912abfc50b5c5fc4a3b0ec42ff5ba331738182590c57e6015723d13a66f5c532dbbe0cd9d067d8b92ff232a444263a349803853abfc628973ec6024b65c3e7048689ed09a52c122bd7803234d3d8768e7ca8606ec674f8dd1e29450ff8ff43faf889d9fe259bc4c8abf2d3f403a95f00dff79c786ed476fff2b66f01536528e757e447f10b053c81482e6d8eb2a74fe0cf29249a64396f52d5d323487f6c6dda51bc3ea95bd4f90952288c389e7562c87ea01b280e4669d3bce31bdab9b99aaa5b1c6b9cfddb25dd067dd3c73736e65bf6f2db6b90491509ab57844b2642f53ad442ffe4107d8f7b9d5cb4795e3b83316d08398f6cb80d66bf6083b655a0cf4b21c7b43f1b97b49c547f28d82496e0bb708047c5690e629ad6565c0d73452daaf2181c78e76d5129a882bffd3964937c507deda57156c9c92dbfd7e81ff37945bba2f88c4710693b23f142ca1a8c90f95c37324cc3b352e1af16b3f89c28bdcb418370346dd0971580ea7d571d490880c332a0616233d3c72196789702d506720c417b0405ff352dc097bcbfac30aa22055d210e94c34428fe2c303613ebcaccb38fafab15acc62a6d86fb6557be639e33b9aa1f56062885a0d5cb6390f898dfd592053a72c9c64af4d26f44ab10db8ed7edc22e1a77419330e501974409ef77ce6c1e5ca703eea10471423c61114437e7ff649add0b6d538934169b072739e79ae8890f1272b2c5d464628ae73d3bcec693b86b3e8ba15f153918f5ad43b9658cfdc36fda8a0ca0a0f0c79ae7cb4998b4143e1110528fce4ce51b182dee8cf013f0ac159f15d00985f3bdf5fdc1bff9cafd6db2b86cf8fc6249ac975acf77f05a6b54a4cec711b43e129edcab0f298323e8c9b5d2ef4534cf66790667dc5f109cdbf7d74dfeba3e4505ce6aa8d67fda3191d51e69223ce8cd19f982a1daf7d27d117e32033a10608b7b5023500bf9a60b6ad30675948946ec7090dc61d154200916be1510fb304372a125f6a6f96c1a88d695d5a47e564e5071f1af9aa1d788f95a41ff701d17ccb36f7dc752f74feb77815ba2ca3ecb4ccf83535e44cf09df32034c987a633901d8c3394c211c193a5e932653854385b17b8e4dda86bbf5554bc039761133190882e36c0f16eff703c4b6e5dcc325ebe04c6a4f2ba33c4e3a7a726df7f7e7fb2c583ba7ca265633bc5f43cbb6c8e4c83bf3bad74ef83e476d0846a4acd4ca93ce56480e3d8a85398c8b9c0f962cb256d77ed938add67186a4e2dcadb09448fd85c649ec4d3abcfb90800b9237f7d66e104503d6439f4b243c4941d4419efa4ca94003a43653016ecf9f854ca76959f460affcbc17629b4771564cd3f19a08bd354f1127a2cc7e8b3434a76a2b961dfac91e67ed3cb2e2a988053ebf72179e64c92fb7829498becf406ded41016166c8f1f1ca97a7a1f8510759db1c92c618a882dc5de4be10228e658fea553aedb02ed33ed5119ba633358891671ea3abf278e21595368d3af137f1a0356edf4e468d6a71e7feab0260393800d8057e27ae468471b537cf7e03c32adeb87621858dcd44f3e432d207c1460514c0a5c079379f5b8b79352d7886b606826f97f1e5dc8402022154f8260000000000fde01c5f5b7f01d9f6bb2bbce93ac4a2f7c11565394b684a5d4817f09dbd77158d07bb95a563d9ca60dfd5ef734c70c9f23704f8778f8723c80c48e8f4e7b6394dba2aefa2c710ea5584de3342d646e8d576b8242c2a6149eae2f2e7448cf16fc274a5a1e4e824849faaadde1134c281758bbaec714ebb084526647dce64b979f32a843c691dec4e8b233de6d0ce19a6adb483da78403bb169ef1fd1e711e72424639e2af8a107264810248f14aa931e357d9975302a04f063bb34adedd232fee2ee2339c3ebabbb2f273a0342f4a4ae99739764eca9c87cedab344da51c90ecc37fa201652ff7b920db0000d2d9f88226a228dcfd432b659a6c57798b44ce7891a79a6838f9d4e98c918e0c81449ac0b7d2a00817be55f9dd38f090e476058b49068faa104313d91aa024f0e40e50a0decf81603fc9be9b3c0d956ca6eb6f7445473bbe83e1337af0743c7001c1cd1f4a6d66c67f1730619ae6310b14cf8db46a931cc5c7a5e02b3288219d8693afae979edaf3e7458184cb67a0d835d440f6dcc724666e3d8879d63d9bf9771be9a863de20ab9ee301f6e2910ff058657c61197aadab9617470f9b7a1a2d37dea851ac09364a7230221a0e3929d8ffc5cafd92dc040f5c6e34edc6443e2e4f52974fce8516cb246a9eb086e1487385b5928aba8d9f5aab5ef96ef8645674bad7a567b74f43a3767a28f7b2764bfa612d197b20e8853b54532df7a813bf05c9bd1837e88b8d54f1c77f18c147b0b53164b13a5c602e97a883c88770349e646b3f657a1d8025a56325b04e5b0623b6d8d2b92464cbba20f206183733380485b86333ce2ad4b9e0920f8ccc77ca85a1b4b574335dfe252006d04f05e2d7f6734fe5cc0958aa49e94422c68259f28a51acfa9ed88d7736abdb65400399714306d6ec226cdd9df59bdf549e1120755c838808fd943709be4dea89c47d58f9a4d4a39aa3f83d7eb79f292d9788c804946648d43d00212a0ca630e4c231879784b4695f80db42ca086b0cbcf6d96de4bb589cc9d415bb5f24272dcde52ac4fafa1e7e95cc330711a77d03dfd26cae6acffe7f1f955bedca1d8f726c47fdfc6f8491fae50288f2d7fa38b3c1ce6bddc0faf257e769e3e25b8d24c3cd7eef7e3f63732791b90de42f7b926d50d1ca5836bfcbc38d39f21f780c4df8841f7dd680acdf1548bcdd5da69ac0462054d099f9704bac788463ac3c0d49515338fcbdce587f6260b056591e4e4ec9d4744e3147aae1b31bea39d70f3bd6fe63b243619713251b4231c55b7947986fdf77c681ddcb9a4f38723b6006b9d28cbc4a8e5550a9e066b0e2f72d32c40df54e8edd8f38a6d5eceabd56f2518695cc499d8f18e1876f4a9e65ba6d982da17c7dfc154a9ff84eb660c1599a8a905e97fdcbca383131fc0bd09595c9e92195f8634d8d8537b5f7692bfd600347949f0e7c628c7f5090dd95885d383b444f602a4603f2f9bb2ebe28d8d90a071daacebda8a2b0bb23f0e21b251635a31f63ca52416f5754373076822c319fb98bac4603ccca9df843802ee3a25bf536243854726d1bbef2673e897c057983606ab5fee343612d933df7eee4d3085361767a996c872587a242c5a1c0aff3ab904b184a5fc97eec9cb6dd956e113f8253892dc111fbaac6633a92e4e1bb789f727e96b757515af3815b19f5e821a2f3bdb5018a81253b712a2e92a9813dacd0db9110ab3bc43bb6b8eda9d9eaed7d3c676ef98b7f47c7deb88eea72bc3874226f45206e195a84968a2eec341d7e51a398e742f6c7b283ee6b20fede54740caab1be3baaa7cd046fc90bc8a3c3ad59572bee829dd6d5c996f0fc2a7afc80fea51091b377ca9d31cbdb87f9e316e7a4be26c8e72a6cdaebe0cd6c5e095048523086582ffe6aa6ee29943a5a3052ae25b252af6467fa6090e2ef7bb8bed2f52b4a7b479f2c4def5bd5f427b59ef8cfaaa4a482712e2866dc582d7dd6f7c8c26bf2b3650bbf4f83110a2feb1fe8c7bf91dee1b3b40cc7693d7c7b3762c699c627562bbda24591981715aaa4d993a43cdb1c8c5c9eb4ab9f4ece1e6267ec2d24f37f73d4827484fff9cb6855737905081a7dec9990c400d5450ef9e06dca4595f8c0f840231f1419819c0e49275f187b60fc751565c3c14605c96f368da6316caa0d249a0651df95544a6042feed75f0d5483dbb44c90059ec6a7b4453ae6c8465e68e95b1718e0f86f8ab7e85f2bfc3397c7ad8c41818bb708d1e19c3e78a95848ddd1d8e6c99430b07fc8342145492961361ba1aaac73a023bd7e08b9e1484635451d930669d35f00ec636d6dbec5a8633645b97241dfb40534c79d0c924d0d30c1a128d61e1a41842ce4e6f74af2956a0599cf49247e66d08d751710647560042b9923284b83b1e5f15d5fdd10f068672dc30348a24170481bb7932385b565b740d5f0fc980326c6f258885de458be538960dca77a015e1082d67c1fa9a769e7f25453b367bef7b28554e85012eb60dff27d7d965e2ed36d60e68df89c78df5b568931a8c8282afc010829fd7c71d04c0a53c4922892745639d56f7d0cacbb098959a292872274b1de7c2b072d1aa331140b435bc1305a9b56e86b3839d2d7c9f001432f300edcfe061e4da44cf7c12b4429c17c8a6ddcbec7ff1828c1d039861c6e20affe7d208f91c7c7570a0174b98213f9e4ffb7631d853094278e31c59158b651f268779b2fb04ff5db94e525c22d45bf3dcab3769afd978e82c4fc4dbeb60b70caf072dc92a8d53786d68d0e734407c5c05353bae108e5ab0977ac6c75ff2731efd57e31e659dbc5c885f542825209e5add0507aa11e5ab5257e0089b3b55b415486e1f4a78ae81439ff3c0480484b10417ac6e72eed5682fbdd8c0ad7b383f26c67da605d632824816ce2f89298e9904f72ae3e05365ffbbce328bef1f2d62064db87dd089795e9b1cc9f41a6b3b7ccca6f7add2a0fd659b6aeea04a7c4749094a9db31b9d58ee0307877f1c3ce5b52ec0a82285a2592148ee95d100895b182a020c884a79bfd6df0bb521a2d18991d20939e10dec1f1e2886ab1522fcad6b0ed8d8851fa635032c09cfe231b54d702ca3d11856517f7042a7b406ef8193e31de76cc220e0e278293fece97107fea0785b9e0e81a57cd846bcb93638f47db90220583cc3c1575ac33bbcfd8cce592d2e4436ab22248a57b19f52973a85dbc61bab2804b6e94282df891998e45dc21858faa190cfb4587efaf633c2c264afff21841024add376cdb62d2633a648623ccf6e07d51b054f25e07479f5aff5627917d845aa11d6b25ebae859fecb95e3d3f75f46a2db06473bd20746f1b44540f706d9596393e39b7309f79a15471ccd3905f446467dca1941ebfdd161c75fa1841966dff77b2f2dcd8d7c31474f6b1c627530cd11cc002333c0b1fd06c88aed070074c2f087080a3e844b8a32f35bcf7aee15be92e1ad6e94ed3c1bd975409af526364746350b5c5ff414e27db55db958cf9235cbc27c9a7552988dfdd7b03bd90b07dbf3ffeeeb7a5710cb9d619ddee547c298a380c96b05c730b0de36c1e17235618d52eda4649baccceed7696d72962f6b8015d65cc41fcebe57a99fe26dca1416505596da41a2d2bbd1995e7fdeee17b264158df354c8be4c96846e00ece9092efd4d31df72db8220cfb53b0cb3d189263274ae17ce0a45ea5da15bd2d8df3a26dc211e75881b96700dbe918058b1d5f47e82476cfa3b04149d770f2b0e6124d0abb631ce6aa840d5801ee701bc4c4a7d1896dd37126c89669c55b13a87fc0c4e8dd5ee3271a2f8217a6b289753a6be37438f078bf6592655fb55407e9509079a16f418aca002826da7d772c7b370c02d964842e3710a26a81a70cd08ba0f00ec9a5add6912c15620aa1b97015e7e43e3093cf78d21ac656c1c2ba1b08a35284f29c4bc6cad0f0b6114b309a1d36c2119f9a7c4089e2d36070db1446b4350200049a308ba00f480b7b76a12c185e8dd409e3f6083ca214cbe8eb59254d39e23e827da803d321c4fae26fff2ae719179292d31f41a6b6d806290afa867ae06158af4fbd654d82e6fa4e54501b03a024f3a713c8a853bef9599947a2d3f14390df2d29a39e03defb74b6715f4a06e165c933255562b71578880d420f93dc0740306fb66a61def4751a6a564ceb951f1e4f301c71801f4ee7e9512a44054dee51c141b5e191a1a9d5549431c0e234088df11f7616f56c52a904482a9f6b883c11a469a1ed65f553c61ab58517a2b6c39518898660322132f011a0576b18afd3d17831a60d8569086420a571e80265793e2150d565947cd1febc29a43e5b34d3d294e1cb533e3c54d54590e6a7245688d1a353a79189ba29efc075eee5578c3d403d58585b9d28aafb1bbbebbed378c22ff18d588c01f0e19abe3d48637f71595339307ecd2f45c861940a0edde8c52756c78ca261a87c4a846e72efdefdb2119303fdd31d38fa2de10576ba5be8e034da418120cb5b822e17aeb7d60aec84e7d3924e07ab7d9041330b4f16133613817388e241b87ef2f15b6d514c36bbba812269826be519c6f15d10edc1f7783000adc6c3b9b73f500d0b7b94ac980f7ceb01839a5e6ba66bb823f84dd59f78f741fb3e6213cdfb1489af600d629630d6ce62eca9957816c97f1d224ae7d46908786b539d39471c62a2ff0727bed8d13b61b20df341e8bc535a4fedf4c96599c6455fb1b912eb941e86ae21f2d60cf95a0ae107e6c8c0ce61e39a7d65797b6199e040f1bdea88b615bd792d732f4bd7f6e4d153d723b58521c48a479ea38fe33689e29d9c675a8d8085358e1f4e26b6accc415d88c76cf1fef0575b2045792f86644092fdba99ee25eb313681c732d9c54b40d3bd136c8ec53b0f5f1b23504037e0f36a18ad80eb4fb0880de68150fde5b4e149089db88b538a0ee7bcdcfae5311db63072fc2ed9472f44f73e640ddfaefed1c621d3a0f8403b26da929b80e5b383f51dd7e4ef6c04d4211da39a6b6232fab187b379970915f566a4365f91f6e5ae9781a47902ade4eecef522977f9cbe8933dfd5220ec3afa8b59276b9612ccfcbc2c3aeb3c98af42e2b24dae01ed94706e25d76b3344b124a50dfa4b94b1cfd9f335c31b05cb15cbdd40f9f07313ef792e22182c9641991e9ec35d2e2e80c3cb8ae112a2efe329dd77e843caa4cdb1c3b439f8128d2214d3becbe602fc616d8922c4dce4ac9205458c1e5b4d7c082826153746243c04b95a9b48f8c637a6229791e13789e9f424c11e401a5a684ced9ee7272aef7c63a6f79d864f25234a9cd45feeabe5a2345db0c7d8e8f5420e81a65a2cf6c1857efac87f889e6a40cd7833e13bc47e2722b3ff26085a832e3ab7951e144a3012e935353261db512a761c783ab7d9d54d880a1412b1a9a5b4e521386d086107701190a4255e4df3951d3d8cce874ab8792bb0aade5aace3f72624b59506649a6cf1549241219efc79abbec787e51fe2a6c5c14b957a1e801fb9cea2ed31fe69407798de057aff0993bc626b0393434ee0430e97e7318b7d5f4cc8741f21d1b044beaf5f4f18dccaaf344be1a9f461c988f596561ac1d50d5cde25cb571f343552a53c32850be39674463d24d2503d6c2357b86ff0da726f1cb62c397c10d61ff182908369be72d9d843d45604e72da908d0f68eeb20022b049a67007028df6d724410d96e38f75399e9eea7a0af2f21b99c8e1e1d45c3ec18a62771c734426aa1d979342838259c2f1fa6cc5e8b07b2895970cc36ce51acad66f0e36d226747548918a36e7b8354677c05daff9f2a9856206bd367a1ea359d284615b60b85be649a7d8005813c7bacb7831f3b09f38fa4301ffbbfc5c7ab222640dbc8382e95ca381c38d2d30c04f0dc91802278e2c86bb0f04908169a183fb7dc75ce079ac2409f03f4c9f2e845a72c3af7e9ca63f52cb773faccfc306b9d5ca3ced3255fb435fe864fa013da761aa15e810dc090bec759bc19ba9ceca86b1dc30d4931968d412410d772159aa5b83e0406953ba8ca2d58b893caf4a01400978f40e915d681416f59402aa56921f6e8298d5624b46e658524956031804edb7cd3e86d0a84e2298c54edffce36578d7f4499a75b4ea6d5ae6b5723995e869d795fc582149a27dc5ac33c8e7595a99e32359b5d96beffa41a22481a7ede41c239eef63e2dccb61fccb71a97591d5fab53ef944ddac6325d12479c36184223cdfbcf96c816f1b9cd1cd114b84c879f26127bd95e8a45587596e1154fb15b0630507f5a5e0a966eff2a049620e6de591089fd00525616d7d41fcb86602c64b58100aba6fb2300c38607d219f6f1976ac7c50269183e3b58f4eb202e8fdabf73d7e19ab5400eb8f482771c8d8ad060ce38ef8a7000c04c925663348ae7121d6e69e56e46b433623aa63336aea5522ef386c6b2a35464e0ad87edf3a2dd59ecf8db4b05d4f62577692aa687269482a1ffca8efc5eca9798ada5cb7bb1cc9fc9def13da0d80a1ffd8f1ffc0adb9fbde4bb208b07940a903076d0f51224164ce050c0d67db17703bbb38cfb5d67ba2211059ce12f3f3d4ff7b2bcdba0c9508334d6a1a45c889e15c02a128b6a2a31c6aaf2303fa726edb3931b03a8b0d7768a055a74e280dd811f07e3702b903c3c54c7163603926c5c7b026e376d6b2cfa74725b876c39818c09e36ac45acb677a8971b0f1c10fbf349897aedf9fdcd29526c5026c6f0828bc201c497c4819e662bc2c756ef6ae288116e78567980c00556c7da5c042dc009e3dcb5026b0f29038560512f75af1c237e281b758bf0ac28cb46ac7f22cf095850170dc2ef24162661163ee3080e44c9d8baff9049d15a4deb59619123341fa8a3bf3977acd61739d45e89918064d79a94b9727f306e4323c4763feb5fcd08e100d7f8f7b16a856353dc0615a0d6803211bccad6bf4ef542ae042d1b54967119429fca21d9b133654b24bfffa93ab8b9bcb63fb341dd8e6c0aa63b8bf67e89f0b3f48fdebd1006d41b7ae8edebc08199d8f175cd05c094b8636fac7e62b879d9119fcccc7484fd0b00a73fcd3350456df57e84d37eaa6081e5846b1c164cb249413fcc2a0da4c281979e23ae1137839a619b78355ef3d6f130ba09de8556d2dfb2d52b3ed6ea6ac5586d9984c19688003c6aa7587381a2ffba589bf954f0744cb02f9e40a254b3e4ae475d335c4526469c6ddd5ef15f68477b7994e7e7e4a33e33cb05469825ab87d3ff5e77c494482fb4e8c67dc823d1a79478b3a921fc483051f009a5e4489dd1a8a2226ad309ea7a452a2f1c599273e60045c569d993f400e09331d32d09198b4c188d42e5786adb91076cff9b9d0fe3e257bb005c86cc85f0176b6b8e9e9db7c08a62cf245f1afe89cf899cbcccc209ee73fd0b5e0c9d60c1c4ea90500043d45911c50851b91a0baf55ed50a758b49b530b82b0a5909005c1c0b42ab96f5fad958be72547fdf142a7732e2f987675e36db6c86b44b64adfe26da104f7362a061337d710c80815998a146516313bcfd81fe271ccc63f5ef8a26e54fe461c5309cc62f84f6c28241f8fd5a91d26f182b4e63818d56edb5c31931c8479ee3814849606e1a2f12c4ff79fa2629278a3cbd0f2e8af6e38a6b6a163f90e17411788b805b3ded17da1633e0780d8d8dcccfbeb7a1a8cd8001d562601042c1527a2d13d0147ce104f0b7e7efb8cf7d405954d81f38cb24c0dc704a6e1b1e0e15ac47fe8bbaa3d6d80ed06f1e12f68ea9d97538f4096f92c0d35b35c31e87dad3043a4f4e7a2620c94da9876024ecb5f0176a6881c1a34048fd96a5440666f93c4df9d987d4a5af51a5de2b816816f2817ed3e7c53b47dd5d799d44de20688892f35329100424b359b4094315ca4109571e3625c563451ddc51c151c336a43e9506026738da16452f9865231993d15373ef6f5e2c7979b78ee0f083e132e30a04a565530848666bba73f62b1585bd49c249e16499822e21094a356a3c36418acff77b28e894fa80ac8619199a2f26100ede26e34facdbf3c07e7cb0af36b37c15f6bc0ee6fc1e59f41011d913570f885a0b13617103d9762c34aa5bd20bfccc7036191a266cd059097a3d749a3b3f30770729fb8ad2de4fa97c9b42163bfad2c943a30aa9cd72f065535dc8679916e3f7718960a25dfe592893bb2d410a207c0c172c24e3f02013447e836d474eee559c7d43d2e8256a4f96eb6596a610339cbc005acd000dd5e24a3b81f2dd7731cbf9de138ba803b9eacb6c6eb8533f3443a5ff569f97c5db388443193f753e97058437c1a2de32e43dc8d37402ee07843d574ab980f2e6486a0da96ffc51005ca65701dc0b26fdc08624ad993dd930aa595e22daed87af42ff6aa0308c6c7b7c4e397054b8eafb7240024c0f09e80bfda2ae4eea26ded33cb018ec5aefc04ce45ac0581fca27c7274889104b8d2914e3cf37fa27fcba9e1f5e02aa76bfc5073b04bd7b7f2b3947204a5167f879733a8788de4dea7cd8f4cca6e796165633b24dc97444a29d9b6339fe50b3b00d08109f6b971c4bede9c400920a3e308d92c195353e42ca132c6aea2fef7bb1f8932a97270047b6179692bd1030a5cea0de226f415adf937669acde0174873d363c2fbb82545895303cbdc91339a66ec97e042a836a30f03b7c1933d6c2ab80023f1992ed5f914d243a3fa668a0319bd47e5f89eda4751d72ed6c39558db626c67e237bc0904658cc492c4624ba497ec50e1c3e764d4203e5bd929cbfcc0f1e6ab01ccf0b15c2ac6eca9ce6d87ef1fb1034053b68922f6f842e14d6397de6bf5bb406abaa81aad78a977cef4b95abcf57d13f99254947bba18751434cd1cdcd119f0687953197679e2de0fb1fba3cd8d692336ebac6dac2cac0136937b557ee91c4065f65e50be6c260be6d0d2c087b890e70159e9328a2d2bc0a64bb4cc51cf8be3d62a3225d12cb45b6476caff1faf1fc20e33f138da6e3b5fd6c412788b05b723741cb9aba0092d11382b04b19726042933cf6055e8b0be63351a1f8596b471b147f3dc0c119ed540c29fa3e629f977865c359e6a76fd2c73a9be1ecf85518a72634c8f494f6863f28a09e0de35e749bfae1746dc2e0d4e7e85f45cb2fe4b81304f802f9cc403344593367a139b47fe6cb72b701fedbb2889535db9fb2984e1b0a8fd785864374d85b77035343d8d9d8b9b35de6a5203f2ed64723f8ecd31f882da867969dc4ea2dc8cd2cfa75a79ab22fa0250b4615706c8abcd1be27c4990b30e8f20cca2757c204868719af5acb7aa61f94595f5ee3eceb730a83af53409204ac6ce777c200dd4b5efd6f1ac7a6f8d276b8679d05149d2230e974e4dc599c13776c07d64defd03f0fc7373d7fe197f75a0a5ab2413040e6455837dfe9bdb5a7127ed2c9bc8362815582314f1b17df67853e47cd1d718fb2be813f183c92663cc60c2d0b0e0ad7ac2895600bcf757cd4a57145efc25b1d86000ad90d048d2985ce2505394f7ef6d0c41efdf5f175e84fd54718a0ae0a0e8813defa9a68fb960b8ceba58d17318dd0b8b41e7f785a5265401769b034f3692e5e29b41f0f815f0b6a10d6554fbd20c671f7cec90fad2d11fc6f54c79d2fcb40c087ac05f7df3f17b3442d1de69264ece23b9866ef37cddfd88e860c84ff9c9c740da06ec6a1ac9965162bfac11307e86e608336ba037e047773272c9ba68262a355160a42468919b48bb9c04e395dd901f0e2294587b56b46cc0339f7ce1516a038cacd4debe48b1429bf66a09f23c05c1940d351b2e7a3a3ac4f7fb3d09ef57a3dde809cea050f97f8f14ced397434ea778fe6c2db7614988d1ee7b0f616d74991a935aa73671b66ef0ff6a4972451546b61ed23765b5377068a94e584fe4bf7c5290d43c228380896ef7ac779f596aadd22f6e07184de85af22eb2fc75339f16b23ca16e6cf3cedb661d297994432f86d2c8f28e4e8b2b1e3e57cbb1480d573fae7bb50004e1dfc3d315763809531fe09536b2dc4d85a4d3259ff0ee91f58e7627db5de29b49268067ecf7a9f8e877802d33a2045db36ea6881d7bf0d619645cf639fa1fb7027db73c04521918393a7a789a7ae1639245e640767dc664445ee9eb1e7d9a9f5be5381e2b232d1006be42b3e0b972fea958604b808588203569bf43a876ab4240bc349cbbb2a4113c510953a64ffb935531d7401d6bad817d170343f01443f86282e263a21569f3b67b37e4769de9c694848e07c75dcb87778fa64397720b13e8e38d86127e48ea3222ceeadc247d2e61525e2989986943c5851814b4bb518f596a1673a335b4b97eafa9d51cd915bc7f87223cb47585cceca66fba57b3ddc3110643f5ed362eb2413fb3042b5aac8e1c4c659bbad0b4d383d8283660cf389e030216f543d37044218e9b1a8eab0f91e8e418ac842c1e2f99fde11bbe7f7cef9023c4bdc6065bf41615370e9e69a5afa547633146902839b88cb6bca91dd15051966952e5f62f2b4a65225e1394d7f6f4784bbb8db457fca477e34303016a84b28412bab26a001baf05eada79fd337d2020b56367c6035c3ba052552dca09214aa29a07c9a1b406950109b30f3b69d72d9782a368614895e6ed2c89d71de52313c0000000000000000b311e74f42e7c3c2f3020d12678b87cd7a16e8442000411c2326cdae179e7db0841fcd7b4e892ad85c9fcc11a22a1c87e3e2fa36add273bf150b04fe1c19b43600", "04000000454789e1a27f3e0206b16254d58d17029bd5ad228109096c26117b4402ccaa8d7af0b2ef5aeed1d5fe7d09013785cd1ae671da0c8e2f9c14bd9cbbc1178588824ad83a269a743f8bb908dfdfa2a23c6832f9dc0a2a84f9cef5c2f24a434fad3a0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000300000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102e4cf041ce2714fce6b2deac48e63d661ce0fb4622102f16275ac8da3f0b1adb066a16328d511763a00fe5e4f92d22b3514fd59b1d6e202a5c6d9890b557105000d9f2ca6f1f8fa39915aa49ec722018c2101077c22bfa250492b61703d1af03530d23486638dd2f5ba49d537d1d8c45f965ce6a0a14dd5097f44532166e534255d6477b31173feb480ec9ba5aae0db74252def312bcef41a011166d5f33d8e0789112c7aa60ed86d96287cfbe3e8e20be82b94c97e4d41f6b819fc36649ba91bc2ce274613dc06a6ef8fca001acc4c5028dab519f2b9b6fff9baf676d1a69857e50de5f7c37602e6a7eb953bc3e1ca4e6e14c024d59a145ed5289fb3498b53f0da8f5a4354703b12b06388f307741479fe70ffc95ae1430cd853ba53778ec33be771d78e312bd02494c462e258fd807615516d5dea59679f859b63ee04c82b4fd43fab331b5fc84f5bfe149c71adc42b60e857a7cad23f484a5b7bc7b0ef66e4fba0eef3d3747bd0a63729bf9cc5d9dd917b040368dd6b0ca7bf7a6070ee954e40d901f2ffa6d50caaf4d721653d5fe254e82fc50ddebb91c05e8b83e55bc4dafc45b078fce6391cc4d0456128dd80ee1c9965a9371d2f6c7533a6a49af3ad85da81bce5148b23589443166ae62137855c0d698309d0108f0793e7a9a852a9c7597b1040fafeb9d693219648a3b677e6c07c635539523c6a555317a925489a9da78cd8192437886b07473ce2ca2a3a7c48726e842d93a80c85fa2022738a4325f287880ba6b6e8accddfbd5ca28e67e5645328c9986e6e4b38557bd175e5dc92592331df1701c8a1bcfebfbf091ec246a46ca1e0b4799c5c35796015b8727a2e823f9430e25db23c96ba4e5ac3ff3ff05a9467f032a4550a3a777659973d5d8f7366e6a96e2f79655c2e885018096d0460db04b9238020812d6164818427da0e58ea6212eb91094c7c2ad13b124c965097da1c43e40a2274f1870fc60f26cad967a8f15258e591e3a7f7dbd17ba04389e482bbc79cbc73f2f30e861c927bd24f6bc825de62778ec9b61225d8ef0559ab122f2090de38933cc0f2007dce12edaea60f6be5560de16ec336e78e693355191b02ba0641dce17315ad08ae6b03bd71efe5b5bd24c692c50d6c165d2c8807abeed676f9de986cd45790ca193cbab1f0cb07ac42cbcc89cb8a7b5b709fa94aa85174978c868f349d10c5c65df30cf5343a5c0f13a8b36dab8f86ad272a64888078b8c996f506c2cbdb73056664d1f5c9e27aded03d5f22382c43de50db28ab28af1b9e00813b8bbbbd6173766789143824af9d003367225c018f6215587b5cc76763bd24b1be9d6026de65ce9354e1bfcd9d44ce81b2eca498f81660e17ea08c2d1dac1f8571e426f131dec26cc390884acee64da070eff9c381a4e6da1bd9adeb13b20de77b8ca9b9849a028c2c2f079c74fca62c34bf6672fdd2226713800e96b10fef3e60de8263a2618bbc49f5e641697fb8ba4fc4ae2ad8c7241a91a09f4dffe1986dd01590623216c72d70ee84e13154db0cf8342d6f36b00ba1bf8f640868d14c69fbc6765d9fee53f1bf4fdbd73240ef4a6969bb3791b2206badb2dcf97173c99cab5a39bd3a4ffe49355e294b33cb9153fe32dfd196842e3761f51cdce3ae0df0ce51b14e5a6eedf3a9a57c9cecc0f19730f6b82c362cc79c0001e2122a1c8fc781a0670e09110f2c64613286fadf33d16e64ce192c8dec9de63e6bc7734cc5b1d24598b616e83edf9fb228ee724bc0d0dc8a858efdc01bf8978ae1a9b1cdc23ac54b4af01ea7312bfdf3316b23aeeec8f51c8a12a89a8416ac1b5f7bbafd83dded33485e68f150e39a35e70b6ea6514fcfd13c5e10be2dc52a3c2e05f37e327f8b2eea2907d670b592b31a877c3e8cc326e2be8a64bd9a5802aaad49df3716dae08cd1704ca950c645705332302895ab0613e1d8d14db5d9e46282a1051f07f3902b69776166829ecc3c2381039c1d892c662898eb9de09432f2ee145ff7701aac2d4e76e215917dad18d91ab4abe068e20471e071bcd120d36f824a77f0f628ccdfdf28bfb7789a745d6b30d8ebcb1031d55c50b651b2b23883bb37b8b753822dfa61ef703aba2b7eb84fd9aff965af4225e16773a79cdb85e22b0dc4a3ae7e3ad62a573446eea70d51238e529ed0eb1c0c71f80e0a62dd8f9a830a05cd0494548aad157a2a7fb2d611084431a1ff9724d8879984a881259dd3355452f08eb4faf2905f26c22c00ac57fdf6ad417207034a9914916a163b37de4c86154813448e8a06fa64b7dd6b62164f96d0f5214ab6c135dac363034ccd4aba000d388e6b259e531bf00be1870efe6157604ce0f90b5a226c07fb134cb17b172d27f45d94a7308cad63bf070c7c3785e47bb1b99b2952460763426eab8f9a114424138529f6773f4c4293c47c5b8311b8d0182ad0d49e823900000000015fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4160700000000000000fde01ccb8336bd914d2840536422f47a495f99fb275a94036bdc26357196da4bfcbd8f1c0558e6698c8f5de4d92c97baf06de243383ee008944a81f75506237ac1dc049cb22a12c152b1eeda269b4756e8ef1f6e4fe50f2bd65fb00acfb460d178fc365b437135582d045f54b623eb978efc37452f119b1989169ffcb8948054972a93a1413b9364c3d8c2709c7fc71c4bb43cf678b295727103d0c573eed11b4d138573d9068a7bcff134ff25c0ba6ae65f7f0eae31f129d238e4e855b6d46033613f4bff845aeb9036b440b8d821c3c01527b797fb5177b13856b0b0a417bc8b1ea6b076f4bad29d5746f76aa64e8da22b33db49bc6be2938b56864402c69c96849d0b5caa8ae0411a1724cdfb42cb7d86cb30a8bba11575dc72bf9aa6c296dc710420c9aa6d864de981fd735f00efbc392087d927a4fe65bbc0b6fc89facfcc3eafb5d6e00ed6d567a6dbaff95b57e858fb4303a0d108080638a1ac7cc6ce0a86a16b8fc3d16178e3dc946675af10d1f964d1f391a8673b7277bfd0eabe35db6fb98a465ed64ff1e311aebe7c4bc6c62d744304454e701699b71ceb69fefa80770ff25191d4fd2c23bc9b8790833df08d383df7248236ee9d492ff18d901a7dc230039231d1cc7742deff6a359640b6eff588d2a3137ccb04c0cff68cfd05394fbbfd4dd09e290f3842af42eb170fc403659180d38112dd0e5b6247c56ec5ccf3ac8398bb136247de11037a94005897399805533748e9a71723a6c7d791be744134d46835bb3818da353915edfd05e538cbe1a30d64a079f5056a9b5fed8bbeae99bea0b3e0b54c50f8a0fdc42db5eccf41f57e2fac38c0310f07b8d6d5255d723e9ff1776847795d137224ca2954e125547963678967da6b44216b9c53d6c9b33bacd913203e08f3551a334dd4d7780487d68bed9631ebd46a4bcdd08e4b13e7aa51a279c45cf31fb00a68ba389bde4e033ae6b4359428f50062c69fe23042c824b5712806cf8ebd110a792d399f50d6657b714401475c868f1cc000a26fcb23243860940449e08c7983497ac88ff431242abd6d0a2e489f2f47c046bff32ef29774a3fe93fd710b6d45da4fe9785d07bd47cd9bef1050a125b3b4518a44cf3baf050ecef26b2f80d3f28c648e8e44695e2e605fdcad802d0216afb932754e092a3d2c450aa42c5011159206180004be19598ed9fdaa0f27bf77542f9709270615ff5827646e11533285e466b8cf1af3674b2f4ac74d77745ee5f8143c8606c40af15c612a5d2e65b4eafbdafe0a68e57eb6e0c85f8bb703a9a8ab1b7515ef67a924479a03d7e710f67b342159c340e88df29d30d7c0edb572002da039a07bf9af819355602c019720e17873c0f73a359ed9fd1136d5478a2605de995482060c9c83f4bdd4d000280fe96e40e2c968918ea53ab2159b94aca623843dd9923fe6b609ad501fe6d002bb36775f274eeebe449b8cea00ce80b9e82c97d59808fd2ebc8d3e5d0245f0c4d5b7ae85af3b3a36f9f40dda9bd282e35f2bd2608d1137a992be3ed200e36ea82a93c59f37a1d657e1e13b76496408fbfecd9dafa4a8fec72cd9ccc036cf48ccc81b8a0e792f3d97689259bd9c846bbdf2e51cd2356f2c5e17eef3d0d4a33b44701b18e3475ea42d37639fed6abfba19498483de9c26e297265b721ddaf3c6ebee876a9b4a310ad1df24f6db2b6614d88b414cc5df778d690f750083ecce0a779d713b088c01b1f0010106f9290afbf92c85cc9d0aa9d8730539fa2a43f8aae9d19194edeac1a8571044061f0c922492f179c5cd54470f90ab5c074e83575645c0345c540ef09e3f934fa6d09210c101ac83152ed5480acfb64cc5cdc59408e1899c038eb0b0254a130920222a549c17992c445e46522928a6033b89fd07122063ab40ffa3cd9724cf2c5f1b170577ad9418666aa43f537d3f35bcc475f89930dc9f5a9c2b3f88aeefcd6689a14ee59b632adad7cf08db8832533281dc4f5fdefbcbc06f8c923ed2591458925cb42971f7d1b469086da757827044300a8ed82cd362dd8f73ce39cd2f7d511dfcde84f7fb230c2f03dc1fbc163c650d7a6b6316196b5571c07cf4bf00c142a307d55b57bc8cf5f91d67a7019bf3a42bc4083f455594f5cdaee0ab2e4f49608ac53d9a9dbf7e2d9b6e97f6668d8eedf234fbc05e5d15e42d45a68c4fdebf20173c2a713eecc3797aa34822f580668da9daa71875189a0be00ad2882e14a4052291943d416157e08e800b479927e87603502553a51210a19716beb98a1ac009066d7a811228aa3361b151e25031490c3b3e2b7333eb20cc1fd30ddd02d57f531d0bcb8ed67b851c14366e41cc9dff350bcb0dfb6a09b8b2a5261291f850f86efd21f53bd8a1dbcca9c98453dab7a08ee7b0698b3b63d65964cf8764c961c3f4100b02a71ddaaf1cc06d210cf83598846bd95e74795b5a374db1cb0e3642706583f9e53cf37c760b0710d2d8030bf2113166450b46e82169467aa0e5de3afad785dd7593ca67c5331d5d2b5ff31ef22cd6212ad04872bfd5d049ed92fc9d58759cc09c529259bbdb789f7e2b3a0af540c8dcb224abdbeef9daa3db99d789c57d01f75867a8f8dd4db47d67f49c1cc04ef8dbcead3931919f434846f43ffa096ee0ee4ecfc2ed9e7a48585769ea029a5137a00a34c97429694c757b6d2e37ed4ebe3713e951f026c35af69df0bc0d6fc9d064953c8f310b085b2f7c0f3dc7713dbcd5381ef1b1a6fbfb0a594e1102c0e1cc95232c3f38e5146a999764483ccbe9336b24998bb35c12861c0a8cf930f04f137b85315a84caef02cb669ad4f363896f98ec3ab4e5d7f81329748dfa261add21a21683ea70f13764cd14dc5037b6216777b145f01b8e76177ad76a3120f4d8ac9e19d4fc0a389ede0dc9a0485fb8321e82802e5ca7ec5dcc462604430ce1a6e857f274c1c56d2cbe9deab852559e65887dd2ecd951327eabd5f6a9cc1ece73218f9c4cd23148258f8800dddce551810cd8935f8d2df2e483a2b8657d27646aa378b8e14d69db375839c94599c298c4a784e471ce188483534d1aa9f1057e87a8b8f34be2c47723b7bd424f168a2518e1f39d0c246920517e8ad28ef538628554494f11b23959ddac9ef39ae2298fb6e9a9ad1e476aca957dcbab5c882d82af5268bdff02a50d91f4bd65e7fc60ced2c256100ad4fe8f2e78201a707e14e539012f535677ee2101411905a723c34141fcc36a7ade3e2617e2e3b395f234eb2bf69ffbda482ecee215a07558a73311c1bcaed764f2230c286c1b99745303dff24d5c6fca5e1151d457a60fb84d7c6d6884f405008bab90ecaf8bb36a0d2c8505eec1f8dddcd5e66915e129298bd1b260fd8f4a381057adfe6f4124e5723226d7f8a48560350c626ca6452d597a4502911e9fd29a6900d3d343586758842f4cae3f41d6d5d8b4f1664788c4b2181d1d8eaa179fe0b9a80982d6a5930ee40e506fc38da4ec19f921f5173b74965a0139af6d9e971c3e5b38d5088620b2bc19d336e0a09758647124935f1c0b0102e06435a8096f15c8665d7317f98b69ac2a6622cdbdb780f684e801f5e4f181ee4adfd0cc9a799716bbc84d300f49c2af06fdf173e45ac5d8c3ff4de464004dd1058da5bdf8df2197d551df5575eeba4806c3821cae37fbf483e3bb65cf5f9b62ac0d61d9d97d8ebfdbc74fbfb59a22a407e5dfddd931b186a0df52c2ae60ff5d963913f282bbedad9674fb6a0fbf32460e1746ef08c3ad2b0157db386a982485ead2ad1b977b92d066725e4a76df59a10a508e9c00d8832eaf72b84c7f276e1504ad16357db8378a71a60023c900796226602ee97277b899917d71fcf11b4f4125c5b454dc1dec2971424319ffb195c910cedd226576dc82b3b84e2cb3ec8956a1805a7a4fdf5a9e49b6034fb1c7f2d131368c9cf1daabd8ebfc93f499d737e411792656a0e8fb0c89db1f351a10458a2c8d5803c4e8ca672b3e63c8be3bb545bada8261912bd4dc018fba6d916c2aa80fbb7d4f591d915b21d87ce73b52673d6a3f8d765ca584bffe6e68140e7d501a20cba127dae5ce023bd6495261e8d4aff031385c693b7499444c41e95dce8ce00027ba5c6882f309e7c01fedcb3cc95bfe5322b5d95ad15405c062a3c0d9977906c2686a3950a50694fe971fbaee9b2c8e6be04c2d4795dd0e96ea3d263fa57f3598c010e7a6497e3200cb2efc3cb9b155953eb20cc616f811b975adfaf7ab5009c2f07ceb4f8858295fc05743ae13112e8f8cb4fc5dd964df755c3f01d184a33f5a6543ddd09eff839d06902bde1cccea58c42ffb0ab1d0d1a0edcf9753b51a026d0695d39dbcfba0d2fe88636926147e59ede5387411cabc27be6b90ae06291da3c69147ab757fd19529b66421cfa0ad364808d2a07420943ddc5797c1f9bb3cd02f9c017587df52e3b552a8c4c91a6d79f688ee83f869e67de7195de505f21c6872a4f0434c9445a62e2d93d3d87badb66eff3a5c7eb612e1e2bd17fd26c43fa24197fbaa348ee35166a2c68d7e81499736e501fbbc8ec8d3fc9179d717a4143310e64ff307dac933283f34a8d0aee966df245af33756f1aa2664604c0d30046f030c8a366c0f411f56732881682ed3d04c26a1d2bdc54a87922725db56420da091e86c61b76437ab3deda0d0c74c480fde36de78fd370710e32dd9e752ed1625657f3cb769b649b368beed5c1cbcd5b7990160326cee961e9b9a1af9c344375cf19987687045db03e645ada5d20ed4529fc4cfcbdefa42727c9d4176d347033b5928a3ff90bce5579bb00e87d1d9e040d1adca7d188410e55b8bcbd7bff5012a0171f84962c88e2ef2a2b209a1f7b8b3d7dc1bb60c249832defbb9027aa80f5e119cef25e405249540c042313f2b7603470e84ecdeb1059e8c19a09e5cae35018df0ce514487e78af238b23279f39833c4b56af83644cdd121fe632db58c2eecdf0619164f3a89f9afe8f6a05dfb9ce0511b4dd280c0e7bff4ef90c5e2d22e9b10bf04cbb342dac0728bbfaa0849ebf06f38b786ba7c64e6c0f2e5365f972b46a87ea2273bf745530fa51f226110518e5e6cf95f66693ad58ecfd19d9aac1d9776aa4ab53e9d189d25ed4d1fa49b828ecb8fa54d53aa56ba564f7ba4853637522f4371228ceb84829121e75e05cd2f0bc71dce3dc3061d9afceda45ef8e038a72996745b6cf555e1697ff9a986194a80fd8b81729db5963f683467aff5261f752297f8baf392bc5761a85c75d58bd810e2a4f09d2b0d903e154d92ecf8b3193d0a4b4458f65d86f81af18fb399241e2b3359c2fb9d2671177633e24616f61e6bf61b2e9cc2dccf775066c4077ac92e972eb4652a7a7b60bd8701704bf418094b9c6eb3b30bbd770f1bdbc4e66f2f956b1237e0332eb1289cf85099147b3e33cd0c45d522b334f7d76ac203a8cae76d2807e8b769861ac3c9e448badca71c03510b1cab65ee97b907389e6941fc6c386f053f2145f6ebb25da1406cdf4c593b70dd9852008e88ba56e5c3f7a3f54a7df1646018b2801d34ed49093e91f1471f76a9d569381887f64b8072044953d5a877f96f41b13c25170b15a5a218ea210291f71c67ff6d7b4d9470710c6eef3908cd4d901f66b5c8af81f6a5596a75df335e29940f214c83312bbb418d0cff219e61aa2e7faca6346038f8444cfce6a435ac9046ed94038a5ff32fb5d62ea76de4a73c411dca8e49f04fcfefb7cecbce23f56c384a4b81fa3abea4bbe37dd13cec998d6df62efb23ee87d5824acceebc0115d4f7d84d4aaf691b0cd25d0f059ff7a9ea560a999ad43a8896186a9f787227a368f5febea348a67a748f566f5671b71708030a7063188bf3a008173fe0870c44c70231a47febfde1d5dcb0e3ed4ecfc0a5a1218c9b1ecc4e5aefabc4f3580392b6285a25e7f3b224db2a3509ab7be4699504f4f3711ecc6467e3a69d1f9101dec579726aec9f2e707cee2d337d7e96524e1ea2a925682cde94b0d943972c042fe1e0a404d8ce137f912c4a890d7ede7ccff30b5a001810f75ffe6b337afa2c0f3bba8fc4e94afe7529305632c2b4ae925ecfd55473fcd562a719ea19a7ab255b4375bb812fe9e228d39f20c33c3d2cbf431652a6876df80c3d6fdad1b60e2d70163584c6a50d2855691b8256aeb1e84d7dabf0ff83f7f0ed17c1a9c72dc416d35b8744ff12640c39f4b86c0b33299405c924357a4aa4db8f8a88cb49934b329d09a0ed5c23a5250ee2d0d25b86b0f07f1fc62c63578de9c308ac886e77fe033c8da42ccd70b3e627e5620552ab972edf72021e480e2c82a829f705d3ac8015aabcaa6bd2a1b68f002991853e02f7e440ef3cfa15b840b6e6aa926020d7e43356cbb434259703150e163422eb5c74d159aefb59e8f961f8f68710085ba76114a8a0de5a2b14f72e7976b106e1e0cf91b706f6a7c490dcb8001320e0db5d1012ba71c1026954844685193e6dbdbd202d4a7aa36d9c0644ea2165fccf260fa91a792816cc882b7da2270928b48f34ca15b5ae406f9f8fde325e4b306eb2772e10635fa7ca2b23576e35af57b29f2f5ecb01da489c90988c71959f6bf3d3b491238fd4c13bd6862ed1841983121c58c257f1943fbd4b523018e444538ae5699e2cf4c34bb4fad51180adbfffb2797049984f62f317acc0aefd7b49ef2394f41a019a11541f26141a1c35e1bcc05a9230fce3582b9ea160f935ded5c9dd515e7e27a68244a2e91392bcbdc0573658feb349140fd93d8715f6bcdff9bdd4186716192c80be3fcd7c338434c5fcfebb4339765c15b8c0ac0ab14ff03799d2454bed171a4a528d94e6026b3836f5deffdab2b77d9a32b24112e97abc3271e93c32bf2c1eff42acd1726233299e7855c1e2423cc35d3bcc2823d4cf52b5ec2fa172da26d00da0aee048bbaadf2ab1fb28289b0d6f02038a266c7160dc516cf7674632028f8144c44a971be620b43199a3466dd622cb71b7ae3aa06eee385cf59a17bb32a08c90057f131dc03952d4a35d86a6d6979f4b672fbca7da5dcfe082d69c3f09135f499eee82071299a6350ad74fe5cce702505175df85f680ef531f640ada162ff6f070814d78e8d28fc3316b54f170f508bbb29d8a96618a6cc211776ae30038a1e904942f2728591344da49984736b456ed59507d5c6053c3cfbecb5e11046d87a300a6bedf6ac18a8beb3daae79cc3ac4603b1d2d705b2d215f8fffdd5038b1ee7d4cacd86114cf8f6feed76bb810e542561c4c848affb71d12c630f9b29de4509b00203948b139065e1feaeeaee13c2f574530f90a277be135f75806221f631c744355189d1390330709b2bbcb61f548d8fc7f39f54413a3090d09a962e283442bbe01b6f7b7a6055620ac94ebdfdf95982722b844e3b708af50f3f9601a44f5c4757e7a5067dbc41ebd9ce6e2eebbe0f3547ffbfce538287f39adb5826117dc146bc621d617d0b4811c053e1aa2e2f8343d269cadead9ab4110531ef03f973cb43ddd89f6ced52238cb693b8850e9df3d9cdbcb97c4c84749eec92b823f29721c7c200f69db415277456626814d646ae57ef136e36a0273ac76d51fb11b37631d928a901238718eb4ff8336a0a750a5819bf6a2da76da1a06964ef4800b865d3bd026d0edd315e74337fc9fa692fff61c4c7153cfcfba2f5a16209460f90c5a353f6d581c6529bc2290799b615a9dfc1acf6889967d9b979c62ee16e3a997dceaf1fc020d4b28ec3c80ecc8f2163244895b67ab4eff8239a805252cf2e19e58e0c4fdbf595402b5625fb261e641a1a9c938faad9848ce84f41004e682748e5a9a8d4c181c9837f8b5ce33e10b74d24337dc4a67ed066979a45d52f6c3cbdc5c49b62f41eb54287907abe5fad99c5776a167d918b5747da356d373cd313d8c3fb3b30b7040ed00d815e0782b6595bb4341105d84db9e4edb0684f60f20bc9652f58cd8abb5bf1813e6d3f2c1d75a2279c1ba7951eb34126601fe497e93b9cb642bfbe13ad396863d499e762467f2e22b5c78428b775e523007747338b2b8c2ceee59ce16f03479892e129573e914da841d58d43a33a1331e9ef7d96ad374534e386b677cf3b438a642d4fc04a8bf71326cdf2e6ea25739d89aae37abd09eb8481a32821f6d6789875c2d56425c31ecf2bf179d125a003c5d9b79181182705a357170ac031985e1e182ed63be6c5e600a77fbbbf23ac8d18c9edb79cee2b4e529563a6019ef4b4805bbd84b2c27dae627728a39a3c3c91578fb4bc362223751e67c939a5c3f89ab2ea85c27b70d1cc0d96972070cbcaf8440f8b2505653de677ab2976646be75a7bccd3bbcef3a25019096f9e558328daa4f3af6d458d3b1a395079858ff3d6bd6cbe810def364a44bc2a3ff558f29dd4dd1c6087034b32e1ccaabce7cfa25951985c9e00c69de2ef5d0c8181f47b81f747db86e5ed291574dcb8ac53e22407900be677b9723104216ad0577762d6ec7fb694551d72e5357d62fcdef4900596efee13259d3a2557dea28153d4b6d65ef8ef4ce2acd92101423a38997febe2582661862c5bdde0e64db509562965c7ae8042a1887485f21a4880fd1345792e1f5462d63e6e2fa9c8d63a3203101902f0c8e17aca5cca2d0d205a3b8269cc1af7177775778db264785c5bc520494b2039062633421f09651be1a01467d3214e19c020eb3992f771a44f1d22dd5bdc708f1414ea342d0f2a3ea8356b497e7552c447d1c59acc00ec92293552998c4eac2a6051d2f4a9ebdd26722c03d8693add2429e77dcf35943d81dc0860c13035aaac4e19197f86dd400148302abf7910c45c738926ad3fcd92ff1e639b03c4dba5938c58d0c09c16051751026e87b436ca7a14f21eaffca3e9b6eccc8c8a8f91653fce0aa1e8c983fd3eeb5f2948254c6069479302431663ff869ce60b24d3bf668ab9d899d4525f79287ba041b510c70f683b40489c44d9f36d56d36d7562d0d73ab7d68727dbb169035b385676015e7cb44fc925ad773e7ac28b367029c57851d0c90520cac906f426c75afd7269124d7e2114c8511b331ef1d43ad5e758be645a2469590f5d2bc7321f739034608fe9bfec9622c5d89e9dd9ed8a0b63c23edb5a26a49b7fc681a33ea3c56b87ca36f7ac4079125e426fe01837fc0dadefe253f6db601c824d246a19b6fd3621eaa9835b58b3c00fbcdd6558203678e9ab1e113deabcbdad998f320cec5e7fb20d619f1a66fd6a73d7b51a0c2a18e5e7dd82e8adbea481485bc6b535c445995d221a43333e4d8f986d91a7bb24044c4f84216e7739077979f065c63df0bebb771053211ffaebd3c97fc978bfe1057f3ecd99019d475bc28cbc5e408946ecf651792c14bb15f27b52074bafc8b4386932f56d9ad57568a511a9daf1af3b89e571226c4419d06a3198a04fc473e67115201c6ed1c82fc049bb1f330914fee317b7dd7b48df0ecf5684c68ba3db8222d65486c4548509c00e1f1da0f8bd8db2e3e5573e1e94380b3e4f6c8644db45debfff88336be787fe7fc76ede488f1328a87e0ea6df38a622601a1bf26ccafea3e9f53b88816cedb7c03f7a1cc29e204fd3dcec39ae72728b9149d8982cef971077e05cd27636da2967a1ec1a0cb823d76dbb310fe948cf1d4bffee9be1ebb7f545c51258d6dd0a95cc54be6d24274d2500363dcd6d8ee0c30088a6eb8129fe8943e91adce089c90ab4e484a4898183dfcf0ca08b0b46e4a06fe66cb2eb4e7bceddb6b1147b0812eaf9a9997456202bf1f04d912efef7c2b58adbaaa031a66e06ed91a8d7a8c332414bd8d42957aa2519d610b09f2fc2905a189aa190b3e339804447c72ae0879c5675594045d60ea6e3e602e419bde86dd178e34f7c031f8b53a3cfe700ad4c870651f95223ccbe528fc4ce15483035ce3d7165cf5682b05736456c52daab2617ff4eba928a4d9e16610b42fc7c329e9313454f0879d4cc7c9c5d9a343a1d7652255c39f3eefdb5889658c023157f010d27b866a2d93df072c2be7fd60680178075c362082e6d2378ef6078e4342fa5b2b4f70003d640bbfbd589b93cab2d468d2316b089565bbea2717f9478b4f77d8cb0e80578a1245dd7044e7dc1ae5d248054b479be44522e4710f699046873681f6538d863a5b53ffe1c2732ca8b083148fbf2b42458040782880511f92b272b7b3eeaa96d395041ea2ca7d6d99dfd2156a250d521cccc09a7339da1caa6b099ff863d90dd9f41c66ed95502bc719006fd4a92011d364c2f4fc8ccf9cbdbe3b5efd50626854f400ea1769eeac79a54d7feecc37abe462f82a9a0fc1c10f0cc2a5083e201377370ca8f3f0b726cc48c0a94e5981eaca90137ba2b6eafa89b1a9170be15b92d3f3d483e1a1bf27667418d805a470fe9cd8b0bcf3d6c7588271f64227c70d449067d0325eb915a81e26db947e9bb27bb093813ca81e515192f34eaf86a9fc6761f8c5fa2c2f76203c04da59467ce5457f2de037886ecc2af9ae1f8b3c716fe5642d3f4bc3aaadfb942622a203e71407fc5490feee383364bafb5058f555df593ff316a62f4eb8ddee3e48d08f9e11566c2919e4edae58dc84a468dc25529669a9f4a9e869edb5c8ed0c91cc7d56ced84086f150000000000000000d48768c7d4846c02bfe34721adaad00b4b6baada2039ff05afa1b9dfa2920c3a8a61a2b2a836d3f18023ad165c251b3e97214beda5a1e885d24a55a614ccee3e000600008077777777d80a1977000000001c1d1c000000000001020384f589f53dbe67b156b476ec6c556473c7f5a581751f925e0a7977d8ea8a01fb93f0f2fff17a559dd6b52a5df79dfd35ed51207418d6ec1c8eb857b8944b17d08df0faf8810e7204fc012c3950923014a934c92d380c7f90cb16967f0a9784494a335f3fed476c58493e9c837415ff4fbb0b0fff46ca3557e8318b9c77d701736313060b28518920c70eae1982fa7a4043ce3703e4d4d5840eb8d87cc5dcbe5fc9eace2679e54b588ff5e478d9766a63c2c60e6b968ee3c8e01137da480709496656a909c2bd381bbe7688747fe7cef49556ed726f6f1241fef480027dc6771db3529ca4ad558528136721dabf2ce775db8f399e834faa0536d7d416ffccf60b4e23fd8b5d2ab36168e04214f3365c21b2157f6b1842fb1d7679845d276f06b74efe3514df0ce3c17d549de9a5145d4f46a4c65d6c6700fdf6c33af90c1e86585dd96de4c31fa40d0254c0c49a10061f966c0cfed6284f6ae200886aa201e48b26383d4f6bba596ea9bb2da4e79dc93ebf74a1616ea13a9d2292635681f121ae87ef722bb4e21a20522cff5add2d9219761302d01cf8d6f449810cbe60cfb4ff705488c618a96b799e15ce3640a8c0669228a2409ed64f4515776a02b678172a9bd04f78c199dd7437d563b3db076d3ce875679aa164ac3963645605a86d7cf1be63e049710871520521c2ca877fb48ed74d49ab17c90603d22007c156e25c09a1c32009e950b35b98fad179583c673a6f19599d9e9222ae255f594d68861cedda28d7f975d467daba081cb2ec2295770acd0fdc51fec23b6e4482be8eeeafebddb2974c789ad3b531783f11fa9f1beceb8ea11eb4365085d87b8c92895ebabe527a41009e28d6ee75fa3dac57d7bf12aaade832ef6d95f64055e1eba1fa2beac660ca9705494b0475c8c34bcc47f10acd023c5e621b2108c1ae6bdca9d8b3da04a549aa1a63e87fe84e875be4245402646e2151e789f5385ad46523d0eaf2525d02dba3b5623d7e2ba3151fffca158092a52d8cdc3aecee5c663ff1a5da3e6887de4050963333eba2bc59ce10d89b3c9070bb63f8af2db54be24554890648db11870cf731534a03b2aabf4d0476ac41f41406a8b2fbd0513c2ede4a1ab0cc930864b8b7c18253179e772392e0c7eaf473c966d587e6bacd00e3e68119d372dea195b286ef68e19b06c20cad46beeb5601988e2762c71d7cea86a6c498e1ed0d186c40e8da6c60b897332da6a0b0b2950a3f883d1a12650f6a3c89c1dd5928fee288d730fbcc470276acee3aa45db665e356266bef179823577f7f7dabd94a5aa7587b4cc03befec5e5e9bb241ab283fd0bcbc5ff178d19cde301c4aac4afa036500014fec6109fe3c2337b770ecad6761892bc72ead06584e4458668616587b280050e262cecce65491e6a9c93bbb264cef27d7f247058816c6026adf8b040ecb3ba559209fcc7c24827c460221541a7bcd97e87d1ec7b96efb31a48f429654cacb12c80c94b43a8cab2fb461ccfae31356b89d476d139cfc0398a29a6b40cda8a3cc619ea3e824a4a5854a93f03a6786325cde806b0866ece63583c45f512884f07a9596b55f84c1ce36b450d7d9ce07cf54524667191ea2da407d0a4781f2a8dc1980da32ed545bc58307c2e561f03119d1e2246466d96ca630265f49050bc11b4055e6b47162e92c9db77ec05b706d406a4c8cc1dd1cca1c5d9dc0319d1494c40088fd6417bad12883631f27aa61d0bdff6a7da203c8418d4414166e47d6b779c9bf1c8464d8221e2151af634f3e7a9c75f2d5e66ac0b080a9c3196c6437171100d109fbe04e7c116cbcbc46328aea1b4cdc0e8d6af423b9a8da48f3c238409faa01b32a6d9b16dd5fd413aa28ff3545d99882d68d4b44eb0d9c5a71b33da94b65c4d5185e847f3560e780df75270161f1dc9bdfd394b48ae34c63096a553d930d75d9c48b8dd6391b0f4ee6bf8643b4a35f40f6ac65bd33a5934f2232a1550a74bc811fb85ec55a78a8b61a36d388297c77b16100c2d72c10ad2ff1d3104b3387da460c3e8919675521ddf2ed8ce8860f2230b461cd88890f25942f2b7dccf13b500cbd867856e962c447bba5bce644f745876ea8fb6e00bf10007d7faf2e433220f1903bf24f28d72f775faf631509fbcebe068411da6831d8b652eb0f899237304d6b7b76db2000378d46f31e264e3cbcbddbd2b2aeaa2fbc5a29d05221cceff5a35dbc1dd70f5a045f1c8630d5dd228cc1dbec06f1d635a1de31df355f92d1f0e3f836f0f4008d49e9eec0062ed09b13a6454dbfd52e437871836b81b586717d7bacba215b83bca49f4a40c00052841159b8edeb45c5dc2c29a63db78e123567f94c3a09574d90a1c5de03443ffb9e5e7f789e1280102da6cdc69a1a3d58d63f7d988a0763426eab8f9a114424138529f6773f4c4293c47c5b8311b8d0182ad0d49e823900000000015fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4160200000000000000fde01c19a4c0b6d89d27687ee204a5bc6b5ea42abdf1f05229d7331d10dc4288e513a6b0e8894cf2dc34070af46eb9b75f80f8f891596b4bd40785cb3ad03988201b99f780524ad252cd2127e789847c8557662f80893fc9f4c3e281b8cf21e6c0e7968e399edae0fe6c8d34b3eba51c44f5a40f3589ca682c5c37883ddec39f1bd8b9c33b5249f5f20fec00c0a0b214e67e812fdf95504f0bbe50a4c8f85ac9d000932e325aacce525bfb4d2eac7ab12313951a380de403b43fcf0f873e04a889953a125aa505f05fa796513aeb72e0f0580c62f6e12bbee42ce820e9389c1697c80865908efd821767bfdd763ec7ae50ffc6259efd47bf8174e0a7c73da2f955a6189cf7e87391589f9ac59e61da8982e81f371a27f6d930ebdd76cc91d8611052adbf23a4179cd3b10d6a399164487e776e4f4577004718bdab42599ec4bf97d9b1d7a3e9591465e7eea5e483ae77d4dd02a5cdbc665bad1af457edb5b27d359c15f576292f740c926c438050f1f53fe7c1a8a0fd43696dcbca9d1be00558b33431a660b4b8ea0c2d4eb2e1c0262a4736a8ec5a74aacb27b661c13985e02813f12e7635adb84ac53624a77ce147bf1b409123ed37968dbd6dd7e89059c36ebad29f48ee55712a6ba94324ac978901bacd3343a1909d8e240e8b0084f75def3e3dabeb9a9650a19973d8b16976a790d4ab6ddaf1ac44b89569b61733860c6e7911810b8f7d916dda6b11df8a5adcda6e4faf128d80108690c551b2a6abdc4118e6b441857c145bed5bfe71d74579e14534cab2c80ec02071abfc44e019ae4bf09d39e626873a838440fa4a9766a0ef4f761692ee2828d099e86461aaba9635157f2b9076a93e1beb36fdcb6c6a9951b57b87afe3965ef71d3ced48fc65615e5d100b7bbaaa93f3dbb85ca8c14bf8591187d2fcff59a5f0bc9016569998e4c9378318aae999bdedf5dc48521cd088a96bfc01cac3cea0824fe5fa172545e97f55422ba1bbe17a9a37332493df8b7cc15edfe3c468fb1dc70633e9a225d8420badbe01a0a090b8ee23799b3617cbc741247ff7bec2b31c39a92c5038c25c2472047701109252132066b208a67c397b183ba0ad5f89744b85f61901c5441808d1ee8a3f765a5e26df200e95276499de8d241a007524ef1ade07dba6b48d153d4077f33022503a21683948059281b641f06cafec840420ce97e314989a4043706e9e838c36be15c518c58560855a9548634dc03a0deabc4c509998e5c5aeeb8e0045a436a9690354613d924ae4d1c0866972f877a9918917ca8bf3f1bbe7de3bae426c92e82f4320e500754ee69e94837d93bc5a47de31d06810d2da7124d200ecb8038a4169630f9f2847bf57e0710ae9e94330c3b29d44f56044419ced22ec028a689641513a7a81acfa2a62d85bd7749c78c37b6adc71b9c2da0a0e14cdae67fdc616a1f68931c1ca1b56a49cbca6c3457ca0fedbd15ac85967b9f4abea106ae3630de2040d84455bc6878304be38bdd8ab6f146d2afc47a09997a4441be1474d44b497347c3e3491c83b2a0e1f29743e1766acd36e8512f36c252fc3cca9a936ce9787e0166097779446c90843e03dde533196070bba9e6f08214d53da20f09ea50541567415ea7b24b3027f59bf68c8bb858914af7fddfe6a3aa018a67af7c65a33c7225b04e723d0bd21ff76a6afb8d3ca8a9a7772c1f72ff78a8c94ddeb13cd371ee6d7886cf5b38946e4d081a70fb475b8569aaaefc5799b773c9e0de70d08be90d3499a99fbdc31e695de27787bba5a3e752b7b311224d3119cd19ec467a4b015a179426fd8cdfa59be798d461c2944f2e4461d80e9a98499979d5e3c916aaad820ac2dd05d16e608c79fa595476c0906c178a85e6823f843701fbc1f59bf027099fbe7dac41d0b8c889bc4d44ee81b44df4580b20c9ad1ec0088fac0ef62a0fed24f7dc4cc2fb7aba41bed1160ee4afe95e811a9662708cf0f0534d4f5b30f2e64a79ff42c2483848c650166f9568f7189b398ada635e87340282edc1ea81e85e23b8b37b20755f92ff068ed5468495bd705b7dc28b82bd70435ca3293a3b59c88d6b148a26a7c22d4499e4aa3777bd56c148745c316607cba9041c4ba8005fadf294dc9d275e203927205056fa122ad2651e557700ba4a0eb21aa8f2fe60d12c4962f86fed97385e16afd662ecf6e881749f67538b76287d56cdeef957c22b3139093947d7328882b5cdc6fcf9e01f9e850c7d9940f855d0e605fcae62d3c4756f5e5dd9f9b5881755c4d8079efba410792c5a3a13b8295161b916133f615275d317b264c434dd16d83a2c5859a1f842b43d81416edc3ae14deecbbc6beb33621b9fc3aba9d2443a4e6923f5e6e41408eda4b2af7f417b3741764fa324d02f739a1b0dd7a6b61853527b4a298f94be16cf972e2550417d124dc04005d110ef86c08287065d5f5d1561777794f78cd95de31513f3838cf10568b23d89ab8170345a8c1002e2f69061fc402e7f0f332406642df71589849408517ea68d4d03f29921d93c0137f9a76a89d9c1abcec36cd5886fbe75a931537bdbbd7afe9fc2e37f4f81d02d63ff52e19a6d6f85f86d62eb499131a919a58f40d36eb3c83fc1e4c57d9510671affecb8e7690dfc03084fcaad6f85a39e631557a484f342c9c17ba9255fc52dd5c8e9f65748b2f484191090bfcbe391849c19a38c7a0bed4910b20863d135d28c1caba429677412e06c23e228a353dfcdeb22d5bfd71a63c1724ad25f6dc9cc8a8756b8e5840cb4fd4607041618abff02ea7c7f8971daec8b10025257099ea27c4fecfb00c9774cce098f6168ce15615efe8aa6ec82c136ca93e6d7ba57e6a00a1d5b33d32c4938d0c87096f08d3263620efe5a74ec96e01a40dc5ea0e04755984e9690b121ba6cfa1af5a0f428bd415a34dab80aaf12ca4e43337b3294d33189d039f7a66c15c75484ea8c40fde16527c1d6659e493b538d1006ba89185616298dcbbeda58f418f02754cc30e416bdae781697a05f9a09edf288012cb8004c5683fc190cd4294bece2feb5928519cd00671f98b1d3c7533e4137a7f5bff4eb3a212bb257ac1478602c27984ae60bb793e0fbcda2ec18c79153cebbe93b15784eeb2d275095837cd471264bf80761b48eb3c6fe57a37590b44116ab23b1b6b7a76f6650874609ca41551bba8ee4266f9f66348a3851f0fcae725c1c8a9757cf15e36f815e9a52794ccc663af4d9a092e0ebdd37f40d3e3ad313f53dd3af43c14ea0e0399170ca3583fc0689bf33853ce1309b09d269369d65d222abac736738926d3eab0160c4f1c47f8c429c43806c74968513681d539d163319334f2d95da3f720827f0c4083f1903390efb3959c8f97902dd0440d0a4b22349c440b3b9512244d0c10bd673514cc4ec5d946ea8b7252635a5381eb9bce4d1ed7568a9fdad59fb927486762b82037c733a15e26bca1e819219486e1ccaca1015ddfcac49355cb1fa3002c1d8e89459870fb8f006dea98acd5edc6a1525f7e25d51929d3013acbb760e5e0bd7f412290cc3f84b41ed8ac0958b9b2846299913807e9cb0850316746fb50bac24f1cdd9f6a8a0839815e030190fed2429a530c01bc59724e26377aa86bf6cb2a7d7d3e07ee90c7efb4110328725259c8fd3e151e4a40858f2c74e4e1cb08a49c300c30d176d1c94f11133a133bfec6a768c9233043b8fe2de46f3fb297837d5ce6cb036b33aad3b3ff087be7bb248f8d2796ba1866f7e1f9d1a28f91c001b8733dadd13a1ff2afdd7dc7b78edd108b3f686a5e2392f67e5a81a2d73ad99ea1c3e28b3bb60f7d8e88322b3e1bc92cac958fc2fb157ea156f4d19f025d87efbdc1cee5cf97a480e3ec60a9e92ba94db1ccd3ff73376377650d161f454ff09b2acc074b72a3d6955c9e3b44731b6d86dbcf04affb346e2f49dd001c7a74dc86651a50b03a2d9a774255fe6ebd66204a0ac308c3ab2a55e2fd3973b2079eded3769b2c1b98c1a84a92815067e8f774a7640dc4b6e03b8c9f443740d5093dfc2c02d459af1f4351fe07232383e39b975e0fb3ffc5d108d74b356922eb363f43addf1e838309c7bbfbce1ae4cba1e2e68d891302a55a24db72796b8c00674e55191594435cb55d5faf5067de865a7715cf90bb5fa005170f99ab0614040538d4cb200738f4c095012f374c493e67d91a5197e51468a5229633476b6e806c3c11fc17f838473463b0658c9fd5319a71af551d34417e4916381e9432a84efde20aafe6273c67a91ab505cd6bb1439d4b3baf9fc51a84d8070b7ad885597d3571a2555ff3959a3d3144fec942e62658a28a527eae3363ae302fc9118100a2f2b29fd4869978b48a7e3abe3546536fd72f0d2b0679a914943b58b7df350b504344999838ab632b0c09d791ace77968ba435aded173a8820501ced83a4a43ed324b83d66e7ca22a0016f8475d88948e188f02d70b7b90afed02e868202125d9e1f9b15e21ccb40c06bce591de9eb29cfc64705a52f705b4eb321ef6d806c17bf0f3ff8d40c222f780f72b7e7c1e1d0fc9d83e2db94eb026b803a5e87878b92efed14cdc3ca75fe2ccd0e9e39ea9c538e23deadcabc2dc5ae526bf0112a6e4eec377ea9a98fdeacff21ae7815b543f2d29ac7dce63e5075356210b5b711d2a2b667809ec75b1f4ea967e552e3e49ee24867072ec1ddf47eab60fd949c6ec7b7e918f88bdaeb870dd95b4f621805210eece080578a02a41961b3da9515eb61df05c561b7725218e3fa2514a92fc267251d340f2e9b9507dc1ad1936bea06d3b81bbb81a572c0514c57cba5710880cc5916a9cce089d69a0250919c04fdf99f2491837d53ae457428077c863247b5479f2b3b59c4291440a75943ba702ed6bab80a430a27baa6f186424098684da5acff62423e5221b032566a534139aee34bd5bf1765c7e915a57e5830a1b1d310033a7d17d3bc0d62001c9760fe135468ffdaffd62e4b1597305f37fd9ea804ffabfc218f06046bf39018ef13f53d554499082297b80a55535c4a8192fe2749e43bf57d955d610dcb58d186617dfea892de5093083703d3b56adc057a0a86b11a1f2b620d003e7d2c0590f19044a65e5daf2506a6caba8ea8f617dc75841d2949480f52a4ddd83b3d37bb49d2e98e3e5111187b982d97c0447f4a7a113f92a4e6a8f453bb23ee481464402803e1494333d9c2437ce54235026e4b74dadebe6b2a76eb04aeeb26cb069a2b3882379456245dc4083f92ed47403778cd8c22627557a6e57de06a54bb3ff1eef6420045cf2aba353307999c99bcf8151b2532b609c41c2ff8368320b308c87c93c16ea900f5440008b4b830db86620d0ab4ad6cc8f7df879e76e9fc7290038d5b51b1b2aedffd1170085295d0a1ad65e8a55b52739fa524fbc3e011608e50578aa09123340f2a6c6ec640acaf862ad4762beeaf38c409fd4380765b346fcaae3af2ec1cd40e32c1cc36f045c18ad3cb45f6f0b47b1630c2ccbf211ac4812a0b92b2c1562605bfe0a4a010b031d9859eb2f2c08bafb04a6fb7ed3faf3c9b3f47683335b0f06d59c2b121430b0039f3eef3d71826857b5ad643f6c1ae65066d637e30c8b7d0dcbb809aae68da17d8fefd51ede72c31ae05d3d2203fa5e7f06ce63c6370d7cbaafa5bdd14bc406457a301f91e8e837de2c6a6e18e767b7d4bbe2002138e4dd836feb78d1f0aceaa735c08b07747cacb592515642132efef3b3037fe5218ac7988d5b6d150374cb57e50eb0b1efa335e05e0be9ec52ce3b12a7f7f44116f758fbdc9fcee665e3bbe6da45609cda02e11afe6faf55ab06c885b289b8c520cc6961497441361ccc72547eca4ccc8a85b6acce8e7ad93b07e155d06f282c0fad64b15245dc7a0dae557599b05f9f4beb1b09405dfee97917f502acccb9a63f3a1a4175b5cb6ef96b66be25169c2e4ff683239bd2d5300514ad6a0be8493b14e721306c233bce3076bf31e1326dbf9159bdeb6684ded56ec1682f2d3cef0c056df2d3451f8a3a2f50b7fe1f3ea219ab2d63f29d212ee7f7250d9f14d95a5338e8e7735b1eb0b3d82b53934639370e560129f7d789f6ea1948a34a362a14ef3d74a16ff682530aaf751377f9e51c585aacbe97c1b0c9b0c978b93352bff70e3376d07ff4691933a88ecfe9a567549d1ec99ccca674403f5a91b39cf5214c03189d049bf7bec642be5dd028d027e35d536e6d76f758dfb995615f4c85251d2e24bb46ef6a050b8b22c3ce03b1a95a5b7c3eb2e680c32216268a266c794884c50de4025e1626878baf2b1c6d6c8bb034fe68e6c4947c39b12c5a496eb03d03053cdd8981b7c7141a7ebe3c371a2eb2b3fc2951a3dfb787f77fe15b7413d1e1bf0135c6ac189ac272d7fccdc16df0bf5241a06b18484b6809e9d7ed3bbe09bc6b038be8b62d33848e55487f4ee7923a6cd41c52e54a61a02eaa7168d16a632f2b298ecedd947725cd022c090e5e61498d529e443f0c481f7ecb3972ca240c032f3be9410a6fbec75115cfbc801a2e5ff53dc8280d2f68760c68240eed2ace16fd1618ed004055846dba422ae23dfb8889e680154df2a6e7e4b64037e1593a06b2118290dcf47770150491c2ff2a9e38294eb568c3afe3fc359c2e85aa080ff44c3298f1dcf828a3da96a1dd84f1345e41c45c7313091e8a56d65bc710f59f3a720ac23cb3d78d05e14102029257d1a524083bf24ed5985ca5f4b0732d6cbb2c6806f475428cede69709aa6e2d1b0f2f32e7bbde2523c3c42499165a9615cc2e7c33fdaa4ee7e8e87237c531948f718574cf8126183348b21dca1e0b332cf73fb72eba76d4d4cbe1dc0fd11bf6bf43e3a8902ce5d84d0dd18786b63588cfe5f14b370bbe49f7cffe4ad9943f84c3b1509d60ff2ce8b1ec7f3f3d32ec9cc464cb1d081be2595f572cf9abec6eebd0eb4a2deeaf47d727e4745ce51b3c49630aecab02d306d503a93922d261f6af5e784fe6efe9d4b2889562a1ed8cecc3dc43658b2bc078357f83d0982ac7e4e8d6bc775626cfd81a543153592e79636974577a2027af517184ab4b0a83b28de16886118e34e527f0604aeb97bcb622a14783338818a449318b96676b96143660e8e68edf124e29b5f2191567e0cff9c8394d291e24266c172446ce92f52a5403c87607b837c101219386efaf43ed8363ce8bf3362c1fb3f3a1b05cba0bb70679c33f439173358fc4f4b0defd1fbcd460c21aa251042e12eefdaac187cbe2509e44983dba90daaa9f02d5424ed1dba6a028f06117000d592ac65b5480960bcb19d83e0049c6680af325207be3ab317320f8035a0f3ef6b0b1371d1dfabd08aaf3aae6ab75fc273ea73004fae87854743f6a249e8b17b183654283d37685fa6607597058b8b678503b4d198cac92e010ea5123a72d098a2630edec6d02a2e27030159d8939fcd4898b28307060c3755e6e6ce1df3e273b56de1ae9165e9f3e775c03e099744f14d1af4a188570a2a751e301f6764b2866583ef0577e72eda194472a9ab0d54971116af59f2507b5e9c0d592bf9b40332359b4e607369fe5bf3814587b3f4d6370494f292dd1a3578f731ea5103a652b7fe5337acf79f1fa70b4a82fc28db4520abbaa6981d883709afff95191300127a7882bec3a990b79733a81e5200c6ac57ba2867863015bb0921c07bae40f8a31814d87e213c5447ef816b1870b71006f033bfe14b5b037e1cda6b3e945358c1c97f35cf5db2a917529d0e9b502484c25451dfb40d825cf99bf3e122630a7571619f351cc988f0a4549aa3c9d7ec5de25587202f46b1f7b7d3e66432f8e078b2689c9aea041027782e9bebc1f15b9a17c0de3139fa075538d490f59b89440791051d75887da2a892a7bd36cae79345c1357340a79e0910f90b48acfbe4aa9dc2d03d9a2b7ef37f70199dfefb48770f3eac69b55f7d05f0a18891cade1b4077538b4039bb623b0b1fcc97b1f757908052d0a6df76432f84377ba7087698e9841114b403acf5415deb6673120396b716606ee23f54e9e81562751d7cfd9e832e01cb2c0bed2b1eacaeca766a97315483abad781c792d278e94dd9cecad727084a26bb24a42fca18b7672e6e893d78bc20871abf6c4b73de1e99c74a5cc840d197113812724b7d8f95c513dfa076b3d6fbf5e4bf55fb37e4d678470bfd57d198b3251012432b929fe94a4aaf01bdef22baf295c3de1f50a055b1e12ae9e1359ccd297ea6d69949c0a228089f758390e31ec340e7b964b7d58f9888a11b37f50c1e1d1216b910546bd9b8249708f32ab69689d5110a6a60c32d4f4215974f00b5163442aea9669db9bb677b2ba4043c890f0f28d089890a9174294c10acdd47b0cd1422424b4d5860a92bf6f30ee0d1f4e8eff47ab168407938a54c68c2ad370c77334a1d84577f93f2d3b1ef02b92aa9cab4c92643c545763a23826d1892de88bf2efc675ca76c0ffe5e3ff8d7cda04915dad357fc0db2369b85128dfdea57e9251d3e0a23410f1fc5259fa8e5a9d0dcde99ced0604ffbcbc9018b3db0a7a9d36326dd0afd0e74d87ad8af132bbff13343fef9134c8428c84fce9086183add1c2b194c2682ef02d578a0da8e62ff8df85eba69c016b739a1aafcff4c4f54b87a3a0bc276cee2818c68fc3ac557ee7416393df40db820210d10a0c0e8c426e77b9700f48d1c23372363a65f6ae46a5d82dd4bebd93d44fde397243dcd1adea8bab70d3a67fea6e9371ebe9685ba22f40429e4666a902b1605ebc6dc7770921741ed38ce97e450fb89b6040fa63d5c668dc662980b105df3ddc982257124a255e1431c71f47b9a8e9c323c9ba86bec06dfe7ee7755cc4fd28e0d247c27b423d43d323a1b60734fec82506101373c612ddad3aabc7cc79cc554fca87d6b3b47891f9e272111abe2c9408319506bc7cbd4ccdbee625c698ac400e9a02f2e36b525d1b0287dfef18dc0a1f9bddcc496894e205a8c7241d26b15498238460c93b9d54807308a12fc74b94ea35e8959b5cb4d80af29de50490bf49e1603ee15e66a519d801fe936f4578c16d4b404f78f27422970c177a4d87d8befc931b6b5d8f2b50b2414170a2bf47dde4b582122c521ce483299f8d0b4145b971007bc6a4b9982dc1a0e7913f92a4eb12cb2a6143eefdb27b9428d3c992bdaa220831a61dbf8972cb31a6238257892d6fe030ee27b451bf5cbf266b851d62c80df9fc24d8064ad28fd1aabe7ec33f8636b83f830b1d441a1dc0cfb655229656109e7cf56ff426d907f383d54b7e8b77dc558dddd0c16443ffda07a477c1122193bedd17f0454967a142918a4946b90f75a7071aaab03b5ec89afbdead6f3f67a0720b1fd2c99687519b64b048ab13cd13ac74f5ec4a2b622d8d0e1388cc659cb0007d01afd115808c8871665f15dedfca02e7dd177210dbff0d20c36a1d4dbaaae648b6d48b8fdb5c628d36ee737610100f1073e12d8b70aa9f9ff3a8985e5cd4f4bd79cf83513074c2b45032bde07b22731403052b8419dd1803a74781b7331ce0659cc6d3dd7e5c29f03360fc05c14301b3f53d7d988fd71a348a4a0a776a3708d0557e7377ecebd984f8e7b6e3a59573811a0b609d28b2a137947488a4cdfa0ed6f98fc7c63970c2ec7cf7581841bc2d774838bc6aef836c3a24dcc70e5e629548470ef45f5657288254eaaadc346600edcb3d078c6596730a35189833bc037dfffd06457dd29bb80bd2369f24f068dd9ae012540de432230f8846e301ce4fb085e970c8bc3e30daded87fc12b0225179b4bb1fc0e03c3c736198a7efcd32a4ef2d043a642fcc7313ed873336edf8ef41abbf5bb82f6666ab60cbd64f5daf9af8cc24b5badb419e3001cf98f2d6365011e9fd5724d06a4db46a07c7e320e5ec776eb2698dd055e220586a392a466e77d539af3e1edc875288d19e735ef086426af589e1e92075851ca64bca470102c773e4732be56cb5f5eff6a4618a3ab232547b60d7f31da8ae29b7cdaae68666a966d6f103e4e0b459f9849f53495bd563e3ab61c41267e939078996c1ff16875059425d1f7e21fbd72e1bc23ca82d44c4621cfac844358fd23ba986f81718e7cf53237398c2c15694f46cf3632595c2f1753fa56980d300761bf1010d47545b466bc7cf0915f996b6335cc4c7fe23e5bf21b59ed558b8882982fdbc4bcc0e230d7103dc7d51e1d957ad92dbdd7bd46b80ce196dd00f8dac512725bdcdeea6bdf678a3e77e0b36accb44f75b23343903d68b39639608096d7e0fd941374f1691324fa7e6a5c7ad89fff086fb5160a9ef7366dafd082c68887d8a808276f7504fef460af7b0823444a2a30a6257ff588bf8075add929c262c7fb4e9837b7503fded41fc4e3eaf4ebede1718905522c60e18033fbc5b0701c79400a97391c87f0604b26b9ddf23184b0d74283e008e22ae17b27fe4296c0401050ac0e1556e7c069f033213f196fb1c141480439ba875005fc2cd0dd0ffcbfc5e109ff36104964b2a8f85497023e534dbdd50233ca9a54e93f40a6add13b69a391bc6ff243b0c78052b5ce4a827f3def88abf005856bfdb129a39d199dcc589b2be190ff508cdc8dc3e439b00473941404a0492ea2d95f0fbb944078288f204f42e0000000000000000d2cf92dfe685660efd09f2d12328b6d4b3833137dce6988fd0dbd21181ac2f827736607cf0ff13a942b92975e1591b5d15cf81ff6095652a36c1a1d6c29d2a2f00", From b102b604c552316a8ec87a258ba8275868f197b4 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Sun, 4 May 2025 21:54:26 +0200 Subject: [PATCH 204/230] Added a doc comment for orchard_zsa workflow test (zebra-consensus/src/orchard_zsa tests.rs module) --- zebra-consensus/src/orchard_zsa/tests.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/zebra-consensus/src/orchard_zsa/tests.rs b/zebra-consensus/src/orchard_zsa/tests.rs index 6b09f7cc02c..237e73b2983 100644 --- a/zebra-consensus/src/orchard_zsa/tests.rs +++ b/zebra-consensus/src/orchard_zsa/tests.rs @@ -1,3 +1,17 @@ +//! Simulates a full Zebra node’s block‐processing pipeline on a predefined Orchard/ZSA workflow. +//! +//! This integration test reads a sequence of serialized regtest blocks (including Orchard burns +//! and ZSA issuance), feeds them through the node’s deserialization, consensus router, and state +//! service exactly as if they arrived from the network, and verifies that each block is accepted +//! (or fails at the injected point). +//! +//! In a future PR, we will add tracking and verification of issuance/burn state changes so that +//! the test can also assert that on-chain asset state (total supply and finalization flags) +//! matches the expected values computed in memory. +//! +//! In short, it demonstrates end-to-end handling of Orchard asset burns and ZSA issuance through +//! consensus (with state verification to follow in the next PR). + use std::sync::Arc; use color_eyre::eyre::Report; From bb4c8724011dd48f9f09ca5180b2acedfdeec716 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 7 May 2025 11:06:31 +0200 Subject: [PATCH 205/230] Remove ValueCommitment::with_asset and introduce a ValueCommitment::new variant gated by the tx-v6 feature flag. Use ValueSum from the orchard crate as the value type to support both Amount (value balance) and NoteValue (burn). Add TODO comments for future orchard crate enhancements to simplify type conversions by reusing existing APIs. --- zebra-chain/src/orchard/commitment.rs | 43 ++++++++++++++++++++---- zebra-chain/src/orchard/shielded_data.rs | 32 +++++++++++++----- zebra-chain/src/orchard_zsa/burn.rs | 9 +++-- 3 files changed, 66 insertions(+), 18 deletions(-) diff --git a/zebra-chain/src/orchard/commitment.rs b/zebra-chain/src/orchard/commitment.rs index 0724a2e9d1b..2097558e445 100644 --- a/zebra-chain/src/orchard/commitment.rs +++ b/zebra-chain/src/orchard/commitment.rs @@ -14,7 +14,11 @@ use halo2::{ use lazy_static::lazy_static; use rand_core::{CryptoRng, RngCore}; -use orchard::{note::AssetBase, value::NoteValue}; +#[cfg(feature = "tx-v6")] +use orchard::{ + note::AssetBase, + value::{ValueCommitTrapdoor, ValueSum}, +}; use crate::{ amount::Amount, @@ -232,13 +236,29 @@ impl ValueCommitment { /// Generate a new _ValueCommitment_. /// /// + // TODO: Remove `#[allow(clippy::unwrap_in_result)]` after making + // `ValueSum::from_raw` public in the `orchard` crate. + #[allow(clippy::unwrap_in_result)] pub fn randomized(csprng: &mut T, value: Amount) -> Result where T: RngCore + CryptoRng, { let rcv = generate_trapdoor(csprng)?; - Ok(Self::new(rcv, value)) + // Build the right commitment depending on whether tx-v6 is enabled + #[cfg(feature = "tx-v6")] + let vc = Self::new( + rcv, + // TODO: Make the `ValueSum::from_raw` function public in the `orchard` crate + // and use `ValueSum::from_raw(value.into())` instead of the next line + (ValueSum::default() + i64::from(value)).unwrap(), + AssetBase::native(), + ); + + #[cfg(not(feature = "tx-v6"))] + let vc = Self::new(rcv, value); + + Ok(vc) } /// Generate a new `ValueCommitment` from an existing `rcv on a `value`. @@ -246,6 +266,7 @@ impl ValueCommitment { /// ValueCommit^Orchard(v) := /// /// + #[cfg(not(feature = "tx-v6"))] #[allow(non_snake_case)] pub fn new(rcv: pallas::Scalar, value: Amount) -> Self { let v = pallas::Scalar::from(value); @@ -255,10 +276,20 @@ impl ValueCommitment { /// Generate a new `ValueCommitment` from an existing `rcv on a `value` (ZSA version). #[cfg(feature = "tx-v6")] #[allow(non_snake_case)] - pub fn with_asset(rcv: pallas::Scalar, value: NoteValue, asset: &AssetBase) -> Self { - let v = pallas::Scalar::from(value.inner()); - let V_zsa = asset.cv_base(); - Self::from(V_zsa * v + *R * rcv) + pub fn new(rcv: pallas::Scalar, value: ValueSum, asset: AssetBase) -> Self { + // TODO: Add `pub` methods to `ValueCommitTrapdoor` and `ValueCommitment` in `orchard` + // to simplify type conversions when calling `orchard::value::ValueCommitment::derive`. + Self( + pallas::Affine::from_bytes( + &orchard::value::ValueCommitment::derive( + value, + ValueCommitTrapdoor::from_bytes(rcv.to_repr()).unwrap(), + asset, + ) + .to_bytes(), + ) + .unwrap(), + ) } } diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index 9260cccb52e..2b19e8776af 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -20,6 +20,9 @@ use crate::{ }, }; +#[cfg(feature = "tx-v6")] +use orchard::{note::AssetBase, value::ValueSum}; + use super::{OrchardVanilla, ShieldedDataFlavor}; /// A bundle of [`Action`] descriptions and signature data. @@ -115,17 +118,28 @@ impl ShieldedData { /// pub fn binding_verification_key(&self) -> reddsa::VerificationKeyBytes { let cv: ValueCommitment = self.actions().map(|action| action.cv).sum(); - let cv_balance = ValueCommitment::new(pallas::Scalar::zero(), self.value_balance); - - // For TX-V6 assign a proper value commitment to the burn - // otherwise use a zero value commitment - let burn_value_commitment = if cfg!(feature = "tx-v6") { - self.burn.clone().into() - } else { - ValueCommitment::new(pallas::Scalar::zero(), Amount::zero()) + + #[cfg(not(feature = "tx-v6"))] + let key = { + let cv_balance = ValueCommitment::new(pallas::Scalar::zero(), self.value_balance); + cv - cv_balance + }; + + #[cfg(feature = "tx-v6")] + let key = { + let cv_balance = ValueCommitment::new( + pallas::Scalar::zero(), + // TODO: Make the `ValueSum::from_raw` function public in the `orchard` crate + // and use `ValueSum::from_raw(self.value_balance.into())` instead of the + // next line + (ValueSum::default() + i64::from(self.value_balance)).unwrap(), + AssetBase::native(), + ); + let burn_value_commitment = self.burn.clone().into(); + cv - cv_balance - burn_value_commitment }; - let key_bytes: [u8; 32] = (cv - cv_balance - burn_value_commitment).into(); + let key_bytes: [u8; 32] = key.into(); key_bytes.into() } diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index 3422393d2f7..b57638020ad 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -9,7 +9,6 @@ use orchard::{note::AssetBase, value::NoteValue}; use zcash_primitives::transaction::components::orchard::{read_burn, write_burn}; use crate::{ - amount::Amount, orchard::ValueCommitment, serialization::{ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize}, }; @@ -104,7 +103,11 @@ impl From<&[(AssetBase, NoteValue)]> for NoBurn { impl From for ValueCommitment { fn from(_burn: NoBurn) -> ValueCommitment { - ValueCommitment::new(pallas::Scalar::zero(), Amount::zero()) + ValueCommitment::new( + pallas::Scalar::zero(), + NoteValue::from_raw(0).into(), + AssetBase::native(), + ) } } @@ -153,7 +156,7 @@ impl From for ValueCommitment { .into_iter() .map(|BurnItem(asset, amount)| { // The trapdoor for the burn which is public is always zero. - ValueCommitment::with_asset(pallas::Scalar::zero(), amount, &asset) + ValueCommitment::new(pallas::Scalar::zero(), amount.into(), asset) }) .sum() } From fc1cd7460ffb4bbd7f05d8a5960839ad43b206ed Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 19 May 2025 10:23:28 +0200 Subject: [PATCH 206/230] Rename orchard test vectors modules, data files and constants in zebra-test (for vanilla - restore the original names, i.e. remove vanilla suffix, for zsa - move zsa suffix to the end) --- zebra-consensus/src/orchard_zsa/tests.rs | 4 +-- zebra-consensus/src/primitives/halo2/tests.rs | 12 +++---- zebra-test/src/vectors.rs | 16 ++++----- ...data-1.txt => orchard-shielded-data-1.txt} | 0 ...data-2.txt => orchard-shielded-data-2.txt} | 0 ...data-3.txt => orchard-shielded-data-3.txt} | 0 ...data-4.txt => orchard-shielded-data-4.txt} | 0 ...-1.txt => orchard-shielded-data-zsa-1.txt} | 0 ...-2.txt => orchard-shielded-data-zsa-2.txt} | 0 ...-3.txt => orchard-shielded-data-zsa-3.txt} | 0 ...-4.txt => orchard-shielded-data-zsa-4.txt} | 0 ...cryption.rs => orchard_note_encryption.rs} | 0 .../src/vectors/orchard_shielded_data.rs | 34 +++++++++++++++++++ .../src/vectors/orchard_shielded_data_zsa.rs | 34 +++++++++++++++++++ .../vectors/orchard_vanilla_shielded_data.rs | 34 ------------------- ...ocks.rs => orchard_workflow_blocks_zsa.rs} | 2 +- .../src/vectors/orchard_zsa_shielded_data.rs | 34 ------------------- 17 files changed, 84 insertions(+), 86 deletions(-) rename zebra-test/src/vectors/{orchard-vanilla-shielded-data-1.txt => orchard-shielded-data-1.txt} (100%) rename zebra-test/src/vectors/{orchard-vanilla-shielded-data-2.txt => orchard-shielded-data-2.txt} (100%) rename zebra-test/src/vectors/{orchard-vanilla-shielded-data-3.txt => orchard-shielded-data-3.txt} (100%) rename zebra-test/src/vectors/{orchard-vanilla-shielded-data-4.txt => orchard-shielded-data-4.txt} (100%) rename zebra-test/src/vectors/{orchard-zsa-shielded-data-1.txt => orchard-shielded-data-zsa-1.txt} (100%) rename zebra-test/src/vectors/{orchard-zsa-shielded-data-2.txt => orchard-shielded-data-zsa-2.txt} (100%) rename zebra-test/src/vectors/{orchard-zsa-shielded-data-3.txt => orchard-shielded-data-zsa-3.txt} (100%) rename zebra-test/src/vectors/{orchard-zsa-shielded-data-4.txt => orchard-shielded-data-zsa-4.txt} (100%) rename zebra-test/src/vectors/{orchard_vanilla_note_encryption.rs => orchard_note_encryption.rs} (100%) create mode 100644 zebra-test/src/vectors/orchard_shielded_data.rs create mode 100644 zebra-test/src/vectors/orchard_shielded_data_zsa.rs delete mode 100644 zebra-test/src/vectors/orchard_vanilla_shielded_data.rs rename zebra-test/src/vectors/{orchard_zsa_workflow_blocks.rs => orchard_workflow_blocks_zsa.rs} (99%) delete mode 100644 zebra-test/src/vectors/orchard_zsa_shielded_data.rs diff --git a/zebra-consensus/src/orchard_zsa/tests.rs b/zebra-consensus/src/orchard_zsa/tests.rs index 237e73b2983..7783c454d74 100644 --- a/zebra-consensus/src/orchard_zsa/tests.rs +++ b/zebra-consensus/src/orchard_zsa/tests.rs @@ -24,14 +24,14 @@ use zebra_chain::{ use zebra_test::{ transcript::{ExpectedTranscriptError, Transcript}, - vectors::ORCHARD_ZSA_WORKFLOW_BLOCKS, + vectors::ORCHARD_WORKFLOW_BLOCKS_ZSA, }; use crate::{block::Request, Config}; fn create_transcript_data() -> impl Iterator)> { - let workflow_blocks = ORCHARD_ZSA_WORKFLOW_BLOCKS.iter().map(|block_bytes| { + let workflow_blocks = ORCHARD_WORKFLOW_BLOCKS_ZSA.iter().map(|block_bytes| { Arc::new(Block::zcash_deserialize(&block_bytes[..]).expect("block should deserialize")) }); diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 75844723f2d..5e8414ab77e 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -193,16 +193,14 @@ where #[tokio::test(flavor = "multi_thread")] async fn verify_generated_halo2_proofs_vanilla() { - verify_generated_halo2_proofs::( - &zebra_test::vectors::ORCHARD_VANILLA_SHIELDED_DATA, - ) - .await + verify_generated_halo2_proofs::(&zebra_test::vectors::ORCHARD_SHIELDED_DATA) + .await } #[cfg(feature = "tx-v6")] #[tokio::test(flavor = "multi_thread")] async fn verify_generated_halo2_proofs_zsa() { - verify_generated_halo2_proofs::(&zebra_test::vectors::ORCHARD_ZSA_SHIELDED_DATA) + verify_generated_halo2_proofs::(&zebra_test::vectors::ORCHARD_SHIELDED_DATA_ZSA) .await } @@ -285,7 +283,7 @@ async fn correctly_err_on_invalid_halo2_proofs( #[tokio::test(flavor = "multi_thread")] async fn correctly_err_on_invalid_halo2_proofs_vanilla() { correctly_err_on_invalid_halo2_proofs::( - &zebra_test::vectors::ORCHARD_VANILLA_SHIELDED_DATA, + &zebra_test::vectors::ORCHARD_SHIELDED_DATA, ) .await } @@ -294,7 +292,7 @@ async fn correctly_err_on_invalid_halo2_proofs_vanilla() { #[tokio::test(flavor = "multi_thread")] async fn correctly_err_on_invalid_halo2_proofs_zsa() { correctly_err_on_invalid_halo2_proofs::( - &zebra_test::vectors::ORCHARD_ZSA_SHIELDED_DATA, + &zebra_test::vectors::ORCHARD_SHIELDED_DATA_ZSA, ) .await } diff --git a/zebra-test/src/vectors.rs b/zebra-test/src/vectors.rs index 028ae6ed393..b558d0eac6d 100644 --- a/zebra-test/src/vectors.rs +++ b/zebra-test/src/vectors.rs @@ -4,16 +4,16 @@ use hex::FromHex; use lazy_static::lazy_static; mod block; -mod orchard_vanilla_note_encryption; -mod orchard_vanilla_shielded_data; -mod orchard_zsa_shielded_data; -mod orchard_zsa_workflow_blocks; +mod orchard_note_encryption; +mod orchard_shielded_data; +mod orchard_shielded_data_zsa; +mod orchard_workflow_blocks_zsa; pub use block::*; -pub use orchard_vanilla_note_encryption::*; -pub use orchard_vanilla_shielded_data::*; -pub use orchard_zsa_shielded_data::*; -pub use orchard_zsa_workflow_blocks::*; +pub use orchard_note_encryption::*; +pub use orchard_shielded_data::*; +pub use orchard_shielded_data_zsa::*; +pub use orchard_workflow_blocks_zsa::*; /// A testnet transaction test vector /// diff --git a/zebra-test/src/vectors/orchard-vanilla-shielded-data-1.txt b/zebra-test/src/vectors/orchard-shielded-data-1.txt similarity index 100% rename from zebra-test/src/vectors/orchard-vanilla-shielded-data-1.txt rename to zebra-test/src/vectors/orchard-shielded-data-1.txt diff --git a/zebra-test/src/vectors/orchard-vanilla-shielded-data-2.txt b/zebra-test/src/vectors/orchard-shielded-data-2.txt similarity index 100% rename from zebra-test/src/vectors/orchard-vanilla-shielded-data-2.txt rename to zebra-test/src/vectors/orchard-shielded-data-2.txt diff --git a/zebra-test/src/vectors/orchard-vanilla-shielded-data-3.txt b/zebra-test/src/vectors/orchard-shielded-data-3.txt similarity index 100% rename from zebra-test/src/vectors/orchard-vanilla-shielded-data-3.txt rename to zebra-test/src/vectors/orchard-shielded-data-3.txt diff --git a/zebra-test/src/vectors/orchard-vanilla-shielded-data-4.txt b/zebra-test/src/vectors/orchard-shielded-data-4.txt similarity index 100% rename from zebra-test/src/vectors/orchard-vanilla-shielded-data-4.txt rename to zebra-test/src/vectors/orchard-shielded-data-4.txt diff --git a/zebra-test/src/vectors/orchard-zsa-shielded-data-1.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt similarity index 100% rename from zebra-test/src/vectors/orchard-zsa-shielded-data-1.txt rename to zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt diff --git a/zebra-test/src/vectors/orchard-zsa-shielded-data-2.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt similarity index 100% rename from zebra-test/src/vectors/orchard-zsa-shielded-data-2.txt rename to zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt diff --git a/zebra-test/src/vectors/orchard-zsa-shielded-data-3.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt similarity index 100% rename from zebra-test/src/vectors/orchard-zsa-shielded-data-3.txt rename to zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt diff --git a/zebra-test/src/vectors/orchard-zsa-shielded-data-4.txt b/zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt similarity index 100% rename from zebra-test/src/vectors/orchard-zsa-shielded-data-4.txt rename to zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt diff --git a/zebra-test/src/vectors/orchard_vanilla_note_encryption.rs b/zebra-test/src/vectors/orchard_note_encryption.rs similarity index 100% rename from zebra-test/src/vectors/orchard_vanilla_note_encryption.rs rename to zebra-test/src/vectors/orchard_note_encryption.rs diff --git a/zebra-test/src/vectors/orchard_shielded_data.rs b/zebra-test/src/vectors/orchard_shielded_data.rs new file mode 100644 index 00000000000..26ea56a15a5 --- /dev/null +++ b/zebra-test/src/vectors/orchard_shielded_data.rs @@ -0,0 +1,34 @@ +//! OrchardVanilla shielded data (with Actions) test vectors +//! +//! Generated by `zebra_chain::primitives::halo2::tests::generate_test_vectors()` +//! +//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` +//! instances, care should be used when using them to test functionality beyond +//! verifying a standalone Orchard Acton Halo2 proof. + +#![allow(missing_docs)] + +use hex::FromHex; +use lazy_static::lazy_static; + +lazy_static! { + pub static ref ORCHARD_SHIELDED_DATA: Vec<&'static [u8]> = [ + ORCHARD_SHIELDED_DATA_1_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_2_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_3_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_4_BYTES.as_ref(), + ] + .to_vec(); + pub static ref ORCHARD_SHIELDED_DATA_1_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-1.txt").trim()) + .expect("Orchard shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_SHIELDED_DATA_2_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-2.txt").trim()) + .expect("Orchard shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_SHIELDED_DATA_3_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-3.txt").trim()) + .expect("Orchard shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_SHIELDED_DATA_4_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-4.txt").trim()) + .expect("Orchard shielded data bytes are in valid hex representation"); +} diff --git a/zebra-test/src/vectors/orchard_shielded_data_zsa.rs b/zebra-test/src/vectors/orchard_shielded_data_zsa.rs new file mode 100644 index 00000000000..58713e436c3 --- /dev/null +++ b/zebra-test/src/vectors/orchard_shielded_data_zsa.rs @@ -0,0 +1,34 @@ +//! OrchardZSA shielded data (with Actions) test vectors +//! +//! Generated by `zebra_chain::primitives::halo2::tests::generate_zsa_test_vectors()` +//! +//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` +//! instances, care should be used when using them to test functionality beyond +//! verifying a standalone Orchard Acton Halo2 proof. + +#![allow(missing_docs)] + +use hex::FromHex; +use lazy_static::lazy_static; + +lazy_static! { + pub static ref ORCHARD_SHIELDED_DATA_ZSA: Vec<&'static [u8]> = [ + ORCHARD_SHIELDED_DATA_ZSA_1_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_ZSA_2_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_ZSA_3_BYTES.as_ref(), + ORCHARD_SHIELDED_DATA_ZSA_4_BYTES.as_ref(), + ] + .to_vec(); + pub static ref ORCHARD_SHIELDED_DATA_ZSA_1_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-zsa-1.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_SHIELDED_DATA_ZSA_2_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-zsa-2.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_SHIELDED_DATA_ZSA_3_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-zsa-3.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_SHIELDED_DATA_ZSA_4_BYTES: Vec = + >::from_hex(include_str!("orchard-shielded-data-zsa-4.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); +} diff --git a/zebra-test/src/vectors/orchard_vanilla_shielded_data.rs b/zebra-test/src/vectors/orchard_vanilla_shielded_data.rs deleted file mode 100644 index de1639e55e9..00000000000 --- a/zebra-test/src/vectors/orchard_vanilla_shielded_data.rs +++ /dev/null @@ -1,34 +0,0 @@ -//! OrchardVanilla shielded data (with Actions) test vectors -//! -//! Generated by `zebra_chain::primitives::halo2::tests::generate_test_vectors()` -//! -//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` -//! instances, care should be used when using them to test functionality beyond -//! verifying a standalone Orchard Acton Halo2 proof. - -#![allow(missing_docs)] - -use hex::FromHex; -use lazy_static::lazy_static; - -lazy_static! { - pub static ref ORCHARD_VANILLA_SHIELDED_DATA: Vec<&'static [u8]> = [ - ORCHARD_VANILLA_SHIELDED_DATA_1_BYTES.as_ref(), - ORCHARD_VANILLA_SHIELDED_DATA_2_BYTES.as_ref(), - ORCHARD_VANILLA_SHIELDED_DATA_3_BYTES.as_ref(), - ORCHARD_VANILLA_SHIELDED_DATA_4_BYTES.as_ref(), - ] - .to_vec(); - pub static ref ORCHARD_VANILLA_SHIELDED_DATA_1_BYTES: Vec = - >::from_hex(include_str!("orchard-vanilla-shielded-data-1.txt").trim()) - .expect("Orchard shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_VANILLA_SHIELDED_DATA_2_BYTES: Vec = - >::from_hex(include_str!("orchard-vanilla-shielded-data-2.txt").trim()) - .expect("Orchard shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_VANILLA_SHIELDED_DATA_3_BYTES: Vec = - >::from_hex(include_str!("orchard-vanilla-shielded-data-3.txt").trim()) - .expect("Orchard shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_VANILLA_SHIELDED_DATA_4_BYTES: Vec = - >::from_hex(include_str!("orchard-vanilla-shielded-data-4.txt").trim()) - .expect("Orchard shielded data bytes are in valid hex representation"); -} diff --git a/zebra-test/src/vectors/orchard_zsa_workflow_blocks.rs b/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs similarity index 99% rename from zebra-test/src/vectors/orchard_zsa_workflow_blocks.rs rename to zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs index 7ce770ecf65..12c34612145 100644 --- a/zebra-test/src/vectors/orchard_zsa_workflow_blocks.rs +++ b/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs @@ -6,7 +6,7 @@ use hex::FromHex; use lazy_static::lazy_static; lazy_static! { -pub static ref ORCHARD_ZSA_WORKFLOW_BLOCKS: [Vec; 5] = [ +pub static ref ORCHARD_WORKFLOW_BLOCKS_ZSA: [Vec; 5] = [ "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f027f6043d927d72f8b5df9984fdd36d2e2e1fd1ff8f7ee04a2b7da9306c14551c40000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000100000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000001029063000c87d7145492f9ded4d37b4ffdee769a1c41b0e17d622cce77f122d70ddb74fb50c5c36666482476bf5e8e190dcd8f5ed280af209b3f679d4dc06a213508774e2f7fa82dff9a985866919085523b13b0af4f534975228468feb62cb12575681e6101284f0fba5628e2ea531e9dad53d864c854e419e4c5b91fb7b35d00597572f98db1bb9f3049dbb9a08d403efd824d9d118a68493191e059ca00b2982252a2ffe5c3918a79171c294481fa267e83272858592d5890884feb90752347f33cfc9443e70a9f30d6150652eb2bb04327ee72b9c5e42462d4d2bd92725df50ce267c1588d29b08b25a719738e836f9c26ee47ce3945f9b627c4b9d3bc8ae755d8b78b840f1fcd055cd179af2ae0637f49fcc44cc975abb478fbd9922c15e946e681ff6aa64ac7275d58c7811c3d87c4e48dc97e35ca68780218e256f8bd7d9c1677bff6d75f663d24802a7b433f4461d686e1a0fd3d214b81b1398f8f79d062c4e92381741c3f96f3e81f455c96d05a623985e39c1d16361928424286483b40cc9b1249032dad9bf92a563bcd978c329ede5eb5c7933f937b6f2b73507c8ed0a2d4ca972281ed79bfe367b474b6fc89a29f20c913a7e42287074a185ea83fca9d0db796cce2cca07f3cd379eba7efdabf86a594e6743b0f30d3315daedd2afe289422cc0a5b73c3e837dc2efb5975e4fa8183fbe68b5688bd827472c41248bacde976d8f16700b4f6c9d6c83afc134e3766b7afdd85be2e373f98a7ef0d2ae19e98bfab76f3362888f3e81917b22236c6eae7c79ed9489410903bfbacf77bc1f0de11692cae0289c786ea3eb08f7fc652146d2529d0217801e2dab9d67c13cdbadd189fa302fbd402c4befe5823e70a802dd9c712396c20028f4f7c94a49409b169fa46a7569fe289d7189adb3e5e9d9dc63903aed828ecc3ec0144b59592a6a88c589577b976b7c781b3b43eba304130bf38971784c7caf8e5994d2ae59eede5ba220d7c43378b492e69c0d7b06445a49174b6aa27d08dc186b7bb5ec6b6b6e3b94185d5d10a07887b5f66f9991aadc239b578426ebb61b85ad40bd80aef5c4707963c2d2d9b79dd9cc416a597aa83c4e74cdebda03d6b7a1cd0238e88161d8ba579987335998fe39a909488455b11937e11d751f425ce7cdee73e8a99042f03eec4b4c00329da7dd90b75ac8918924205cb98346c5ab54096e7a91c9f44c4b21a885d36813221546da0609be857260bd691dff247d867f224ab98015aae153ec30248e15b5c0b2a0731496cf0518d9c63202f93d9f2023022d3fd3c83ec465ad3695d0e0d1ea0fb4eaf9dd8f6f92919ba1461e2d6e80f5d89e6b9b6d5241bffe1d91604c02e13592ef10a4b87612f82ce32b50550f0c46eb4cd6d081152b2123b0ae617e74a6f31f8721e8fcddee49e4c9269517fe55d7e364407b9fec4fb22711585c535bd6a3a656634cf034e30d4bed6e14c56ae98646a3fc42bc4906eb02cc80afdc9c5cd824ca22772567d8aec88c3b4fdc91d34133e8bb2a2787c4fddb3e5065fab306caf686f2684635aab39232c71d9211358eb2491ae39d0c5464efc0ae97b166821956d3c3e70acc7871b3d3c7a00e54e0974236fc1243caa57e04d1ddc3c42d67e23607830aff5540a806c6abc2621035f7e4280c7cd0eaf70db3e88d84da095e0c1a4d0d62728c2f8a939ac274fcddc1442b9993bd8b7f1a965b31af20637c789d93aa5e09fa6eeb4b55393f68cd9bc1a8c67f6d484b9c2134a25478e1fd28e0960ffcf8e36492e4b12f0c787fb16e80d7d0e92ab94a34e53c1b1c0b63db557e54c8e0c919073ff2366c83a4ca9b07b639172dc6df0b6602b3e8977ec3becf6b716c55fcdbaea993494e50b49a9dc8e7c09118942432ea3c5a036d4267928f2393072dc3734dd841e0c37cb2d50fe2f75c5dc77ff9e1540a52b136967862312de74af7071d4f17de67775adf87f1e540161a4eaef191a93aef5daa5ff7d42e36fcb31dd1edd73ba829b32a6d0ee48878bd6ff3ef472f48e9e8bc1f479c34f3d5509288f3181a49a8f3d7771c5cd076533924dc67b96da721ec8a19a85f903c2a2eba21c0146526dff8a8be77831f558be214c43efa29ed6e9be6a2d8e712a745bdcd0f9bce70f997da5928cee6775164168bb343d2613821b4814a1198df32cdab2da48c0188dfeeacef916472529503d8a63c4b2092133c31770d79ac922976417ba6a2d92b4108ca7ae496e039a7ef38deb19d22e1116e92e9cdd0a371b27226e6dcfb14ef5855adaf2949d1e764c6f83bd7e4259dfcf4d1831e2d9b80145128ebbcb0259e3cae8ac973204fb2bbdc5e9d967c6f7e5e4c6f0c139b4a07aa6b63430ff511c223c64933f5fd8ea367d4829c63938a2ee54b3469383824bab4807ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82f0000000000fde01c1ce7832fe7add3bc1fd885958fc5fa1697a0336a4504ebac5d683237a8510183f29c22defb607c48816c49704d3ce388ea27bbc7765a43961fba354af095dc9984dd6b892f223256347a3a59083aed6de70dd327a95e0f3dd1531d01f874829d8095242883e06045c1186ab08124b5dd0b5ec86c6bdd12f5713fb6ce125c0203d9191bc63a1de897698f59060b124cd81b8cea5e2a026577ebae2edf3e238203b670331c0cb32a229e263305484d7f3ef896c4e03bad52bee2250296698b47bea4f60342a23e0ab908a3c094543fbeff20748c3e75b7cf9755813388d5d8871f862bd444e3469e9e72302321bf35114dc6c8341c838f962debbeebf9727a132ea1a03a0141d6965bf152fcaa6d18ef7c24e32103cbebd9c1c87f0601da6e4f07af42615a0b2d41aebfe02e1c2ffaaced5c3d996c8fea947adf7975c4d6419b20aa0c804b867530bc1d1d6103ee6a6674530fed4b4a1289d4376902fc5ed33392111c323f6e73a07ba04c69f8e4214be8074e76124e84990d53091a4b95a9d482a0b2447d911255bb3f312c706151d8a87d284aaa0e4e24c059c07f4952d3fb0308acbbe1513842cf7881159080f10bd0f169169d0c0c126770a9b7985f0aed262ba2749b2c9a237fafefdaac68b8756c2a628f5bf2b7bdd804d23e2a8b9eb70dd38586c842d7a0e3c71dcbe5e651343375adde02e5501107339538b0e2dc45a9cb2eb8831ad77bb61d0359ad4c1a2dc31b29a850a31d7e72d00b978de4b570a9a4e4a403156cdf351154975975d424bd9933415081cdca5eeb411c4a723b6a2d19ab96d3a9ff273d5e923d158425319cce5c63c6ee3adbc5b36e05597472669d4bb48a292271a10a85ff7274a74e5a96e223d0705c08da720425e98ef270f907a20085babb3f642bf67dd8eb3fda67592b6dee4360895e22713783899ec9fe37f861e73cd5261a0be04af440b5f35fcefd345bba49a02f7e754bd5276e343a8f1f081f7e904295a12f57d8b0927be322b35368c463525415e5fc01e43c7064331258ef895a5f0f23bdc7b2095c2d27011bf17dbe37eca66d44ef565ab7cf9280a64651a39635b042ac1b74bbbfcf792e92cadaba08677a836f10bb0d1acbf1318c7b39dfed8b7ca0d64a24ca09d717dc618e036818ea11c743aa6e6a2fbbdd0c42f7c59122392bb90515b425b62ccc85b311d880cf24e621f100cdb8552c4e02360583676ae33cd314bf49a5b6979e6a7fc379759bf1dc9ac51b62c8b1851b87a58ac9fd2a9f30a61e7d96546ce53f8476b575777a533484777fa4ad9d921aa589f4d880de9c28c93c26e6d4284a3ce64ddd454490f73c9db8f4f1f49e9cc939405d635f6ba3be2511c2c1462d65905d8f2f40fb82d112141fd9591bf88ec98f82aee3e7d0a8c0156bbad06fd3eeab3da041ba47c572b3be65bae532893ae1b69d3e37a055c02e994e8429aba5dd5b455335144c63d6ebc6171423f2dd8ac600e648d34512929d7fb66b5fdb19f004c7e75e5e1d5e7af29a5acc9b87c8563c97b1c4cfc848676b1a38ac76ef4ab441f9235325dc1416911bf07ed7c598f6fc1c16b7d4a92489b5821f7151a11ce2dfe04d95d661a5cf284b4bbf83baee5165a3ceba103d36d15fc1a9739229e21789210581f9206323cf03526e2aa38f614bb59853128dd688b711afaf15986e89cac8b4b93b1ee24d55bc40743a4783746caf4f5bcad200363785c754d6af2dd5d519a4151223148e4f5c89703dfd209d8a38b5bc55c5f1f644e6e071bdd8f6597141c37530b7ef9e513c49f9b7b0e0c743830931ae2958c73b14ab1f35e2618298db2c437c95d6d4b13c41b4bdb51f13c1813762e213e18655382d670f55d97b2ed83c695488efe5831ec82656c6d42baa154388d4e212fb5c980b87476e62f4d8e84302f23c54b95b7b1b74e0e44219dabb8e8b4d4830a7494b627e1f6e62a634b86dc821dbaef4e3e3b53e69ad670f1588f2aebdb702828098508060b53cca72fa8c92881a20a852eb1315c2439ec89fa183e67a81c6590dd51a743553fa48fa9f10495c6249c7bbc51ed08e703ce7103e28b12a263fbe66466ad66c11bd9c66c27494b9815e1600bcb2e4248a514a421bd0b0363d8888ad8c9c3605b005a51e77af8a3ae4009f34a24ee242a60cf5c0b2860c715cc56337fe9983a893be43fe75c87997d6eff3e87ca34923fb39993dbfddca1d9861b9314bf420dfef04b0edd9fc9a5b6d7ecedbb7d669a5cdb5045f9a7217f83c62e3eaab4fcaeb347062b02857e7c073eee827e0f1a9c37f4fc3a914b2f583f5632a2fb974aa64f08245c706ad94e29f7b8d1b8b5a423bc3b5b4dd9106d1fa787a9d5d6f64f3273f3758600ff39b6ff0690d7f4dde701aa04e664c9c3f622622736704a523f78bcfad7e882cec28183bf15316370dbd4f3164bdb1224f49a27121e57f7cbb7f8a28650fd2589cd109ac1040194c44bcb8479d655800cac9fe82717e9496bf32e8d3e3a4b5fa7826f4cc86878fd4ef9857640c59b60ba7276af3e449679fa78939dc590c1fc392b854c7e8c4528108bda4e4a0c14d27adff03c0429bdabbe2df4249311d5f7a7ec35f023b166f7de5a1a521615db0376cc1237ec902a4f76624a8a5c65a293d4ef3344429aadb482633bccdcbe1160dcd098b71deb84153068083cc6976cb9fdb46dbe226fa587970fdb4fb14b07720de20cae800014c66da833530b84d7f5f1977f74813507715dda0071e845f9c291fcc4fa4513b24af47000d230d72ee0a42c0a356c1f96fca44b313396c974b0849aa95d0062562d0fbb31d47af78e4e857cdbb43f2014ebaa8cf796067863b0444bf7a3a207816c5eb8dac792d15a01f7ce0bd48a5a3687cbd8bedd364d176106561493bb8e83f63bc67fd07f8b11fcf3bf99b2a1daac1a001ee09d6f8d3973c623b8838988b4faaa1d9151233ff1cb89e947ccf322d59b0011fbc1bf66f5a2867c0a35385d55463cb7fd01db5932b9a163ee6cc11ef0d19e09e2dde4245571fa01b8624926e27a9bae527a27dbfa1fec4c5687a6193a5336469ff40fe03eb0338889dadd86d84a6381b2f65cdb3b6880ee67de08572d6fae5c5df6b2ec4e1216a5999cb3c2bbdffacb157d1e94061b4eb985d153b8840c537463e8a15e5533215522f1d4ab74f09a21b1e9c851688c2131f7da84c95f390eebae35dbdfe1e28d5d0755d419707317ea45d75e88c40d5df34316fcc7f59de8af82e1cb0ba3e10ff1775b8d6f6ba2141a1f83b21b577afea554f709fb4c373f6dbc66a4e97c31a500129684d7315874633453e7ac8c10f63ae4708b28361c772725a110fd3e626b020d8b5b3820faf67e02e3feb9d13ba99f40b6ae834ce75881c44d8124f3f234cd003d5cdda116a218c3dfd1019690b31ec2546b0be2660aeea3b11d375cc19ca2c57fb3ca817a53dd3357cd5f0b72c3a06dffee32ee613eb53a0f679662108f42002ea24bf40c2db026dc595710d23bd9ef571dd37134955083c25ab968d23bae81d22c3a16f10f3d75cfd7eac8337226dda9554093db1c60261931c278b11846796d56a477f454ee04053268709b935b198ffa096dce5c9d3bb1bbbd8fc19a38d529603881a9d449f522650aefa9e0530d92f2712c6122bc874587fc80c29beeee0c2f532607cc63aa8a91413bbc351a2a355b40b3fad7871976b6a46491ca94607f27b2018af66a8d6e429b8955a68e10f3585666b40005248f39fa274020d57f76af52e860f6004f20b33174e16b184d39f90ad5c563da44be6a526de1b258a20649fe5b084b546417385ede6ef19ab6770dd56583d2f3d36901aab371a341c1fbf11929950845b05b833dabff5608b2b0346d8f41ffb24b2be3187cd2ca86d06e8adaedd3f3e9ca9f6e1cbb85bf6c34eb3dcdd9931edf2312e4348481d3ba48a33ee57a314c77196fd28b63546963da0c3edb742934e33daed72cbd80b1ff33a716e22fcff53b93b8791238a92f62070a6c8f74d3c16116c1f9743bf100e0fe3e1dfd512e60fb075f193b3d100f8327a8b7011b1a12c519ec902d7183a09958adbb491a9e9de0070fc685b3963f1617112aa4edd1a4bd35bb459ad121e34851230f78913c59ac8d766b84ab510f657257a109de229ddb30b3db025f620604df250741b4eb757f6a0b6d2a0ba2cee7ac1046800eae0519243380c404a133766b685997236bfc73e3317e2da32c9f449aecebbd02c28c5e62226aeec140e4c38dabc0c6ae4d6fbd5aedab7abe0d2b0b0c7533367db3ab39ca127f688ef34aa4a61bf2cd2ca5a0f598b8009e5610efb05da12495c0bf02eec37fb857f7d1943f8f76093a27b422a910f4904cfb836f62d7ac295760ab9f2587f60e83d402854e9a3550a190f59fbcc5c94e6f6bcf9e9d7527ef7e6c4afb13b928fd2fbba2ae008f19da2d385881dfece30a3c9433909bae080e01f09e987a059f368d7712246839159ec183345e5a8607e860bf1948134d1ab791c2446094d012e14e1a82fa5d95106c0c9626df1e7e56cb7e6cbcfbea965f64cc4255319eff09bcc40ab3ccc7294ac369701ac1f083b615e532d13ea809eb68967b031fff2b0536b781e08688a51de3629d4c8e3e29987b4ddbccea41b7060ed9f635da106145bbd4dd2045f2215546edfe71205f5a139bf5e9af5b68d4c34acc19307d23b7971da98ec2ebc8282aeabba8f1a46af4baf00276aa0e9e5c212865d763687335e1ec2d6c813a516bb2f2b79056100b07488ce2fd5089be296ead42ce345ef58f73543ab102ed79e426521fea60dcce47e498180ee94f1e69bf862c9e014ad60f6041819f01107812803c986e547a5fb744dd766b92e22ca8621b56190ab1a7019eb9e288114c4c450d08a95da7282278239f7fa073a8ce444506ae171e0dcd54d1861362f12957b366b92dcb0480017c6a397b27506c55238e1656355786704489fb54bf1257e90a246f92ead455166c4217b610682a6446514a1b59d5facfc7041d4e639046e60262097557cec24c59629b891229e714db79a80e830af7fa7a2112e60ff1fb95741f39c51d37c3be241e9990bf14c325e558483f65408ba25c4cf85e10122cd5cba6010db487930eed9bedac4d533825c657aac9cb709920f6c9a537b76194eab8c330fcc7891e24207f5ca76980d94bd1b6db41692ee6bee117544e98620de4390da019b63757bc78ea7d0e27c2fc6b92d8c0366e23ff1d5a38130e5183340a905cefed2bd332d443c6fc6c3f4601bd3e4927b40388c00c842c93d01ac365bb6272f28ad28ecdbc05dc2e4f61175cd36f5fa5a4771e0dfb6e13cc2ba910e28f11fa13728bf2dc57e279ec67f8046187bdb99cabeb0c3c008c6ef26ca382f9940e0b02771fa6c2f69f1116baac1adedfae6ff68dc8cb249c112ce6f9a6208cf1fb4c4183995326dd690bc4531de9ac85a0be2f6b0795b6f9bc700b7628c272f245de3210d89fb7b552a731672779675ece0963c2835ba8c6ece9cc4e55b2d077489cc8a83558a1261a452dce0317cb8ef4e8642f3d13090305ad345906b180e50dece886830f7a349e3477a0f10df57a81a5f895e8c043085d331cd1bec20f7b8792871912776be3ef4b8b411ca9cd9a9dbd92d1f66c90b23d35b1d0cad3acbffab5141b5171336753289274d897c2449e9316c3d19fecd86e454a51c820c080ceef6421565d481792501b582190d960776cc5c6bcc3f6a33a92e213f7c2e932d8f1513d1d2bc31cdb0c9550ea21fb9d5db1acb01eaa804c594f98777652a7af27184e4ada612201c80f18d1cbd5f9a4a535444934b72f6262d582ac5802bc17c106bcc4a53eb4af6334ec1eec602bef40366d91f4b4df477f2b3b6be2111e0e6223c5f43811ccbb3c31f8f4c2138927377521cee9954a493340596fa0431fb953e7ee3c0a15b37f47592fc4cef4b47c759d6278b4fe5be6519c9927e9c08f6e89c6ff99ca69c9f89e27133b52197520b873c578ade66962bc18d0726db271671bfbe8c21c16eced0675a58ff1497cb00e239481adc4656537b80830b37264e7f1b50e3780f32ea57c9125c73f07e33cb30a51ec6c4dc98c4f9337d62152ba544eebe4d7a8eaef723ab85570d549fb90687f3b4782f7647988ca3e97b6736bdbd7cfb10393405a86118ccc415a16e7614230828430728618da31e37792f043e3777049052d58957a352e54c16b3d93c8595220a2e8322f2da669f11be3817955f1a350d3591ac81d7e627015b0653cff1eae964f89acfa41663a833e65235627eb67d30738f170da134de1d58499997315a329dcb52fedc30171f948f6f23a2be30b49398a2162f469eb161e752faa487c533e0ac6aae88c6d7ed64892a0ae4afbc2b30ace36ca7ddf4f1334b6731641599b0d2540c4fef4ae6d9c0b81c2d356b98178360b853a501dc1866343e81fccfe0e99b1042d10a38ef3a5cb20434118e16eb23244446ae69bcc1a1e699cb5981c206689578a9a2b3f6aa3ca37f1e09346fa2f4f7695a6b8f7087e9763f52d06de4208a4cc02e92801883f89ecd396248db5f0d2ef527a75d924216fcae8c76178c0b7c27f618331fac021e6c9a3a9e585d1c160f53eb39ebf4b1b3d84d97b2cb9d0f616e9b2ae10bb9e592580f27918e4a17be2570f5e4283aa8420189f72137606e2be0a9e2ca81fb2312caa0208747005ffea881f8a44add38303e7d080e4be30b44271aeb4feb37101c201d0f8504e711324ecd3b4dee9d69348c22656b7edc5f68b236030273890e9cad41258e1445ec934f9b4b2b2792365b52d0b44bbccbc721494a5671a60ed4fa289e203c68ab3c4b88ac36f9adc91a4a6c8cc4c52feb2eb34b64667a74c3bcdcd6e438e20d2b6c499500f488edc872165133fadb4fb7713a49de17f60ca4d780918f3cfe19ca1447f83761ee1808436e310fb7cc32db065c5923a4537d233be2f3311a5ea416c6bf280850647c650ac01835351eede816511edf33e59f467d0936af21a4cad0df6fbdd6711e198d896115cc3dcfac0948522e231b34e47dcfd05b921df497b190af5d621c59c94c34bd405c9be00b6dd72cde87e93ea313039c01633335044ffa8bdea20d3b8ca5db2c4516b5a59512d09d281b187722c8a5c9ebdb2064871229640354e9aea165dddafddfee4dfc1001d38229e51ab7fc33460b4b1720300aede7973a8c940e6ff297225d53bfaa6880b2b4c0ac261668eef9d6823dd5b0c6215d16c00df561e9c4abaad3ef0da84ddd599d56691dd1b121a6120c3408bdcdd972f77d207d382983b0a044647cd2b86c91b8bf19426c5742b7378e2f21c0f09bff8669f6b0bf6187d44c3bd1e50dfb65aff3aa88ad00c2e12735ee384347379d2b48ab3f0b36f712e0c1bca9698d29f17924f0343fc573a1115981161036b71f96ed9659b52eafb7794ff9a05b42f5b96aa530e45f1892f49dcde62ee824ab3dd0fd9c511bd8eda0d60eda753cd5d444c0294aac617b6c6453ce8b2274b0cbc5beb68e2761897b1e2ac612d8e6f8605830113bc800c91bdc4d4c89394d33c25f6465d813a453bf89eb3f0baf3b83856665a33d1e0a291b527d6b5704221b5b343a6fcb70f561cb496b727fbff07e48b56cc924ef51b3459449fb5211c02ff081c90645ca392d5e7a13f13160acb5b53ed20b8e01390cc4d1d7ea9533b2e7a21e9ccaf0461f1d5562c1ae28c04c138083f4ebd11f75e3298b2321a20395d3fc685d8c4986eaacc4e97d6481149aed040e07239c051d761379faecbb3c3356ba37358353b204bbe96765bcd4b9375470fac05907fceec5d94cb1195227e02f7b66005f9a76ad9ce1fbae7097b0ba824c9e415f82b0812a3bc6d6ae3824dd1d04837ca39047cc27d57dd5655f2d52e1b28ff24af701c93a169bbde2201b4ef36ef361f111838e2a59b2f1ff32410c91be4b2ca0d4d434a70c0d03d8ca0db8c9cb7b27ef0743c8a0579d6c4df5a76644637bee0d45ffc4ff83a1ff779f22e49e65550b60c279aeef6aeb89c1ff6a8cff8ae5eb645e9e15d694350ac0f7127ecf632f218759eafc04a988a3d23d1347a44b6fb1f79a2a40e41f441bb87823856b221e7cde3652a62b824d5f64b08570320f7729b500e138252a6220da6811707c097dee8d29123511a236f030381533cd5233b1d2b19da47cfefd49179430b70bce17969888c2c02b75d07bf84de64dc91fbaa6cf91052d40001bf83cdd18e8860b3527d9f72895ff0c398d4945ddd569c2c568bbce302506b5bfaaaa9e24f435e73c236730bedd4b8940bccce1cdaa2abd388646474e3d9c0afd61e28a1ebbc83ac84ed644039a7ea3aa270eac6f46f21fbaedd49ce21fe133060e416b03e28059d753b025f0c2b9f25e6fe146bf9f58956083e1baab33570493573b9d05104ec9bd2764793d655bb033c646af6ff8f8bb268d35c43acf614206bd4f5635de334ae2768e8621f24457bd6cc3f81a50c8fff871037415bd543e5515df44253f93ae05241cdeec2eca35eb2908ab07dcee8c795cf0a7442ca1213449a5c03282478bf0c0755fd7f62ca140a303867ebceffc631e8db2249c2c8a9806033a201f6e59becf382ccd5167ad5d1d7a3de10492c6bda89121bb8b075e3b6a5d1b09f6ad972c0605f1fe1610c38f42ab22625341b41c252be0fa80c9d082f56fee0669d7d4eb9762af0fd827e545ac5cb6b225571540f2e6820ad79311ed2fe57e30d12239771d79ad47577647068ae6ec7fa3602e86379f7c56709f822db68b5d35440e855509a2b86ebf86dcaae220a89b6f7dea85fe1fa5cf2d54ea4b242edf1a0b3c1a0b04b398e8a67c3ebd093e4429c9554605e2f4360449420a5fb5aebc158d80ee10349d23e9d68196cebbedbd98afd16670b66231f0f7dd9c0a4404da2db7a00172ff4f48b486183b2cc8d49b126acbf5e04af0a16b36291875c187ca2a65aeb240729167674cf5e26c2eb9f8464605279f47b57ef7584ba7b6662f221cead6f89825748ae7bf4a22d54715db9fa80609be5175c30a50025e54d11ba22ac4cb17fca2ec160184e6bacaa6e49a836697106511a1e65c679cf240b128ce1974b42812eb02105bcc59226faa7f085adf7b7ef5d0b2d5d88f59563e3d2edb1aa9ae253fda7e66996f2426d52ce0d36d5e38c07b94551851f4f1057e10beab078c85c6e1fd86b2200eee7345f0e9713061e0060b6333e91fcb7621d57333d80eeef03e912c2da7985a7dbc393aa597abd67b8240a3e72330488aaf26b53d671fe2effee1db167f747594de4de80bc1f0fd5b1786d276fe31d8a631556ad4080d7674b69f1cda2403280fe1eb962bef003d4df61cba3dd906aba9c01e5644dcba01dd790611da5bc46ee24e2ba26a4abaf8ec1c78ac48e0c5eb9c3079f802ca0dfc6550ba410b8d76885506b27efeb3bca592c2475def2dbd4f5d7ed4836abf086ce8b23d617701275a8d452085043d8b30bf66e0739471bc432a155f249f1c1c58e4fa37a02ae653b0ec71e22b9fcd3d9a00037bcfcbae7c0106d6d13dc60fad3f734ebdcc0d3fe9c29031716c746b52bf7c9db5a09cfe19bd9f0b87cd12f8a6c5e36153e0bf5587c959f3636618864362195078c591502325864283ccd1ebb071baca04a50f4069f1eaea8d8d2af49e76f29e88108df904d59a6631686be5adfca48571442a01cdb1a3de6de174fa9496e9ca50d2db065e61d82c16ef01438125a96e6300de69c30967c58545aa8f96fb66725959eb0bfeb99a54e7286740bdefc161115a404556a1dd0381f772b7ab8c1f7f1ddc0cc0ac782619fad570aa1590eb439455a642cd3122b0edfe9322a19360a98193bc75e4b8d2babaf0764099f36e3dfbce751a8fdac684ca46b0945ba593b6b18514d39542a803a3305b55b8f7c3c5adb4e516379db8ea4570020e95d69afbe165e6559636d9bb9d2936ff3272d757d393937ba4ee4edcc329e17426a7b5ab99aacbd804e453f147bc0439022a3c78b5f4df3f0cc24ea8993bc98fa7e5b4d628d36ecaa66231f2c612837b8c3704ac12862a67df9127885a8b4ce8f06d7dd0d8d2d25e6a9f77ed217869ad2d461c26059d689e4ed9774890e18dfe007ed3ae55f862abd7e4b0a53018c9c18129ec6983491c8fc9bfb26cf5bddddb1fd8db5ba17b8ae0cbaeed5ff553db2f0784cbcd76429699e3490c01a2090cba4b230fba3258d7e5cb18edc5427c1061206a1a5c3dc81e5681777216ec66cfbba42b7b506ce92664db7bfa51a9323eea0169c4cb0e83f756d3ea980461313e39d208ef70dc011722ebf284f75f07cde322ba23f211815e4b616f092652f949e369188a815613f8268a1338fc8f932e4b845739564983555417ac7b0170eb036bb80479ccdc3e9867ace0604f06da016321031402b21ad4ade201e208eed72004c59ba0fc7316c32e3735ba7c8c0dfa322ccef89e50b984bb020571702c2ec6f08d0471e72acbc1d19520ef5c9a110b953ae66ccb4278dd291b08af4621d3bd4d51e84604f6315b9cc52ed68f48f6fb51332718b3bc5e006aca5b50b1bd106ac2fcd300c77ace7517b7badc33ce9b5f0302e752cc1e3f0217cb1fe79e4202cd3614da5cad5ce95ac1c22038df2e690582130000000000000000e77c5fe5829689989e0736353bc0ffd6b69fd0512b5aa1d5292167ba63dc5719c978be1cd9cabdb5c757be48c025e5efbe17937c24504332ec6dcdcfac80e23a01ce2c6d87d0184c1799a254ed03047cf57a3bfd49b8a4438d496d741cf5aca6bd02cc36601959213b6b0cdb96a75c17c3a668a97f0d6a8c5ce164a518ea9ba9a50ea75191fd861b0ff10e62b000000000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4162bdd8d72b03b4e2f279a05dee99e05f68f38a4b1d7f6952cfafdca675fafbb0a65f0db75a331b2c04f82fed81c6edc0291ace5edb0794c285a5338f20c891195bc1e9d7134d3c05c62b251ccb3ab8473cb5dafc7b19f3b6750e41bf24c6ad882802a60d88a2fb0fd642095e8030000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed41691c948450f0844a9eaa60503567dd7c87ed664db6236c4368575d4beade9741856f5e328f9ba28c32610207662b9638281878e43a31d3f2de4e440d6a792a01a00ecd37228b00c8973da400337300587f48997465959efe09ac5e012e14f51eb2403e78f9aa4048344a45119dc45ebfb2fdd1806662aee645a85d9951b714a42ada39d7b268db0db118784846efe571b2feca12d5dbb15ad28d23c933987607fa4", "04000000045a150838106cf1bb1431cf7a7a41bdd26aa0180ea70a37258739c1915171621fc8b74000a4594700861a5e1a9eabc521772e8c0675238b3d87c47343024d8497e9a7826aa3d4e1e0e48e32e760799f2a3fe2202d90d43ea589a8a3894ded5f0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000200000000000000000000000000000600008077777777d80a1977000000001c1d1c0000000000010277428e76d2263100d08f73d9e12b480494f1a361b1497a85d1cac168b76e149e9d16da0b28025e804fdbcb283f932d1aa8cc19002505940524fb43bbe78d04033893550a22b3cfa9ea4ad9a19161451455d1669c9021c9f877dbc4641259ad250333e21e2620c8914b6e28bcb1a214a19a391cf371e089337397f7535951441b6b529032525a70d975fa5d7c22e78fb5059fae45391202f00a689803f908deabaf1bdba80cde3409e605aee987a754ce805f2fc008dff17023ef9bcd75972b85ecf641a245f6a6b1e8414ba0a33db1b0f0c4cead6ac87a32cfe9328773fe7357284f0c0fa89c33723326892785e8954b6b175a5b9d80b28ab20653296b132b0a8ec7c5fe1ee4cb5ef5822445173b8bbf26e75f8118f7f2e8b34c001faedaf9c341f42691a0b0964391067bb026a2743922e5a72bef9006c05656a9e8814c9d98ea8056681fcbcfda9aadb559d0e57c88b77495670aff6272820b4af9eaceef3a8b659cf01e1859b2d0825a039dffbc9618eea2653167fde9aa700f8ea376a7dee10a0e3d24e6df07ae33063ae54de5f245a9a90f7b5d67c4a0a2d94943a81831465a5cb640c4f432f5e9efe6b0249f333b2cb7f6654b73483cf2e081536dc03aaf659fff9ef18f87ca4701b37d62cf9f4e9e0dc224a29223cd41dd229795123cdf29e4c82f16b163179333bae17cc1451910b5442ef9f4fe612407c28ea32037cbcd4ddcff9a3de920186ad441430007e4c09639b0a54739dd9d12ba4f0f8b5c653fbef6332645f636bdd6979614a06ab14c88869343f82b3db59639ce053ebf3c391b745554a2e375b6e72e912abfc50b5c5fc4a3b0ec42ff5ba331738182590c57e6015723d13a66f5c532dbbe0cd9d067d8b92ff232a444263a349803853abfc628973ec6024b65c3e7048689ed09a52c122bd7803234d3d8768e7ca8606ec674f8dd1e29450ff8ff43faf889d9fe259bc4c8abf2d3f403a95f00dff79c786ed476fff2b66f01536528e757e447f10b053c81482e6d8eb2a74fe0cf29249a64396f52d5d323487f6c6dda51bc3ea95bd4f90952288c389e7562c87ea01b280e4669d3bce31bdab9b99aaa5b1c6b9cfddb25dd067dd3c73736e65bf6f2db6b90491509ab57844b2642f53ad442ffe4107d8f7b9d5cb4795e3b83316d08398f6cb80d66bf6083b655a0cf4b21c7b43f1b97b49c547f28d82496e0bb708047c5690e629ad6565c0d73452daaf2181c78e76d5129a882bffd3964937c507deda57156c9c92dbfd7e81ff37945bba2f88c4710693b23f142ca1a8c90f95c37324cc3b352e1af16b3f89c28bdcb418370346dd0971580ea7d571d490880c332a0616233d3c72196789702d506720c417b0405ff352dc097bcbfac30aa22055d210e94c34428fe2c303613ebcaccb38fafab15acc62a6d86fb6557be639e33b9aa1f56062885a0d5cb6390f898dfd592053a72c9c64af4d26f44ab10db8ed7edc22e1a77419330e501974409ef77ce6c1e5ca703eea10471423c61114437e7ff649add0b6d538934169b072739e79ae8890f1272b2c5d464628ae73d3bcec693b86b3e8ba15f153918f5ad43b9658cfdc36fda8a0ca0a0f0c79ae7cb4998b4143e1110528fce4ce51b182dee8cf013f0ac159f15d00985f3bdf5fdc1bff9cafd6db2b86cf8fc6249ac975acf77f05a6b54a4cec711b43e129edcab0f298323e8c9b5d2ef4534cf66790667dc5f109cdbf7d74dfeba3e4505ce6aa8d67fda3191d51e69223ce8cd19f982a1daf7d27d117e32033a10608b7b5023500bf9a60b6ad30675948946ec7090dc61d154200916be1510fb304372a125f6a6f96c1a88d695d5a47e564e5071f1af9aa1d788f95a41ff701d17ccb36f7dc752f74feb77815ba2ca3ecb4ccf83535e44cf09df32034c987a633901d8c3394c211c193a5e932653854385b17b8e4dda86bbf5554bc039761133190882e36c0f16eff703c4b6e5dcc325ebe04c6a4f2ba33c4e3a7a726df7f7e7fb2c583ba7ca265633bc5f43cbb6c8e4c83bf3bad74ef83e476d0846a4acd4ca93ce56480e3d8a85398c8b9c0f962cb256d77ed938add67186a4e2dcadb09448fd85c649ec4d3abcfb90800b9237f7d66e104503d6439f4b243c4941d4419efa4ca94003a43653016ecf9f854ca76959f460affcbc17629b4771564cd3f19a08bd354f1127a2cc7e8b3434a76a2b961dfac91e67ed3cb2e2a988053ebf72179e64c92fb7829498becf406ded41016166c8f1f1ca97a7a1f8510759db1c92c618a882dc5de4be10228e658fea553aedb02ed33ed5119ba633358891671ea3abf278e21595368d3af137f1a0356edf4e468d6a71e7feab0260393800d8057e27ae468471b537cf7e03c32adeb87621858dcd44f3e432d207c1460514c0a5c079379f5b8b79352d7886b606826f97f1e5dc8402022154f8260000000000fde01c5f5b7f01d9f6bb2bbce93ac4a2f7c11565394b684a5d4817f09dbd77158d07bb95a563d9ca60dfd5ef734c70c9f23704f8778f8723c80c48e8f4e7b6394dba2aefa2c710ea5584de3342d646e8d576b8242c2a6149eae2f2e7448cf16fc274a5a1e4e824849faaadde1134c281758bbaec714ebb084526647dce64b979f32a843c691dec4e8b233de6d0ce19a6adb483da78403bb169ef1fd1e711e72424639e2af8a107264810248f14aa931e357d9975302a04f063bb34adedd232fee2ee2339c3ebabbb2f273a0342f4a4ae99739764eca9c87cedab344da51c90ecc37fa201652ff7b920db0000d2d9f88226a228dcfd432b659a6c57798b44ce7891a79a6838f9d4e98c918e0c81449ac0b7d2a00817be55f9dd38f090e476058b49068faa104313d91aa024f0e40e50a0decf81603fc9be9b3c0d956ca6eb6f7445473bbe83e1337af0743c7001c1cd1f4a6d66c67f1730619ae6310b14cf8db46a931cc5c7a5e02b3288219d8693afae979edaf3e7458184cb67a0d835d440f6dcc724666e3d8879d63d9bf9771be9a863de20ab9ee301f6e2910ff058657c61197aadab9617470f9b7a1a2d37dea851ac09364a7230221a0e3929d8ffc5cafd92dc040f5c6e34edc6443e2e4f52974fce8516cb246a9eb086e1487385b5928aba8d9f5aab5ef96ef8645674bad7a567b74f43a3767a28f7b2764bfa612d197b20e8853b54532df7a813bf05c9bd1837e88b8d54f1c77f18c147b0b53164b13a5c602e97a883c88770349e646b3f657a1d8025a56325b04e5b0623b6d8d2b92464cbba20f206183733380485b86333ce2ad4b9e0920f8ccc77ca85a1b4b574335dfe252006d04f05e2d7f6734fe5cc0958aa49e94422c68259f28a51acfa9ed88d7736abdb65400399714306d6ec226cdd9df59bdf549e1120755c838808fd943709be4dea89c47d58f9a4d4a39aa3f83d7eb79f292d9788c804946648d43d00212a0ca630e4c231879784b4695f80db42ca086b0cbcf6d96de4bb589cc9d415bb5f24272dcde52ac4fafa1e7e95cc330711a77d03dfd26cae6acffe7f1f955bedca1d8f726c47fdfc6f8491fae50288f2d7fa38b3c1ce6bddc0faf257e769e3e25b8d24c3cd7eef7e3f63732791b90de42f7b926d50d1ca5836bfcbc38d39f21f780c4df8841f7dd680acdf1548bcdd5da69ac0462054d099f9704bac788463ac3c0d49515338fcbdce587f6260b056591e4e4ec9d4744e3147aae1b31bea39d70f3bd6fe63b243619713251b4231c55b7947986fdf77c681ddcb9a4f38723b6006b9d28cbc4a8e5550a9e066b0e2f72d32c40df54e8edd8f38a6d5eceabd56f2518695cc499d8f18e1876f4a9e65ba6d982da17c7dfc154a9ff84eb660c1599a8a905e97fdcbca383131fc0bd09595c9e92195f8634d8d8537b5f7692bfd600347949f0e7c628c7f5090dd95885d383b444f602a4603f2f9bb2ebe28d8d90a071daacebda8a2b0bb23f0e21b251635a31f63ca52416f5754373076822c319fb98bac4603ccca9df843802ee3a25bf536243854726d1bbef2673e897c057983606ab5fee343612d933df7eee4d3085361767a996c872587a242c5a1c0aff3ab904b184a5fc97eec9cb6dd956e113f8253892dc111fbaac6633a92e4e1bb789f727e96b757515af3815b19f5e821a2f3bdb5018a81253b712a2e92a9813dacd0db9110ab3bc43bb6b8eda9d9eaed7d3c676ef98b7f47c7deb88eea72bc3874226f45206e195a84968a2eec341d7e51a398e742f6c7b283ee6b20fede54740caab1be3baaa7cd046fc90bc8a3c3ad59572bee829dd6d5c996f0fc2a7afc80fea51091b377ca9d31cbdb87f9e316e7a4be26c8e72a6cdaebe0cd6c5e095048523086582ffe6aa6ee29943a5a3052ae25b252af6467fa6090e2ef7bb8bed2f52b4a7b479f2c4def5bd5f427b59ef8cfaaa4a482712e2866dc582d7dd6f7c8c26bf2b3650bbf4f83110a2feb1fe8c7bf91dee1b3b40cc7693d7c7b3762c699c627562bbda24591981715aaa4d993a43cdb1c8c5c9eb4ab9f4ece1e6267ec2d24f37f73d4827484fff9cb6855737905081a7dec9990c400d5450ef9e06dca4595f8c0f840231f1419819c0e49275f187b60fc751565c3c14605c96f368da6316caa0d249a0651df95544a6042feed75f0d5483dbb44c90059ec6a7b4453ae6c8465e68e95b1718e0f86f8ab7e85f2bfc3397c7ad8c41818bb708d1e19c3e78a95848ddd1d8e6c99430b07fc8342145492961361ba1aaac73a023bd7e08b9e1484635451d930669d35f00ec636d6dbec5a8633645b97241dfb40534c79d0c924d0d30c1a128d61e1a41842ce4e6f74af2956a0599cf49247e66d08d751710647560042b9923284b83b1e5f15d5fdd10f068672dc30348a24170481bb7932385b565b740d5f0fc980326c6f258885de458be538960dca77a015e1082d67c1fa9a769e7f25453b367bef7b28554e85012eb60dff27d7d965e2ed36d60e68df89c78df5b568931a8c8282afc010829fd7c71d04c0a53c4922892745639d56f7d0cacbb098959a292872274b1de7c2b072d1aa331140b435bc1305a9b56e86b3839d2d7c9f001432f300edcfe061e4da44cf7c12b4429c17c8a6ddcbec7ff1828c1d039861c6e20affe7d208f91c7c7570a0174b98213f9e4ffb7631d853094278e31c59158b651f268779b2fb04ff5db94e525c22d45bf3dcab3769afd978e82c4fc4dbeb60b70caf072dc92a8d53786d68d0e734407c5c05353bae108e5ab0977ac6c75ff2731efd57e31e659dbc5c885f542825209e5add0507aa11e5ab5257e0089b3b55b415486e1f4a78ae81439ff3c0480484b10417ac6e72eed5682fbdd8c0ad7b383f26c67da605d632824816ce2f89298e9904f72ae3e05365ffbbce328bef1f2d62064db87dd089795e9b1cc9f41a6b3b7ccca6f7add2a0fd659b6aeea04a7c4749094a9db31b9d58ee0307877f1c3ce5b52ec0a82285a2592148ee95d100895b182a020c884a79bfd6df0bb521a2d18991d20939e10dec1f1e2886ab1522fcad6b0ed8d8851fa635032c09cfe231b54d702ca3d11856517f7042a7b406ef8193e31de76cc220e0e278293fece97107fea0785b9e0e81a57cd846bcb93638f47db90220583cc3c1575ac33bbcfd8cce592d2e4436ab22248a57b19f52973a85dbc61bab2804b6e94282df891998e45dc21858faa190cfb4587efaf633c2c264afff21841024add376cdb62d2633a648623ccf6e07d51b054f25e07479f5aff5627917d845aa11d6b25ebae859fecb95e3d3f75f46a2db06473bd20746f1b44540f706d9596393e39b7309f79a15471ccd3905f446467dca1941ebfdd161c75fa1841966dff77b2f2dcd8d7c31474f6b1c627530cd11cc002333c0b1fd06c88aed070074c2f087080a3e844b8a32f35bcf7aee15be92e1ad6e94ed3c1bd975409af526364746350b5c5ff414e27db55db958cf9235cbc27c9a7552988dfdd7b03bd90b07dbf3ffeeeb7a5710cb9d619ddee547c298a380c96b05c730b0de36c1e17235618d52eda4649baccceed7696d72962f6b8015d65cc41fcebe57a99fe26dca1416505596da41a2d2bbd1995e7fdeee17b264158df354c8be4c96846e00ece9092efd4d31df72db8220cfb53b0cb3d189263274ae17ce0a45ea5da15bd2d8df3a26dc211e75881b96700dbe918058b1d5f47e82476cfa3b04149d770f2b0e6124d0abb631ce6aa840d5801ee701bc4c4a7d1896dd37126c89669c55b13a87fc0c4e8dd5ee3271a2f8217a6b289753a6be37438f078bf6592655fb55407e9509079a16f418aca002826da7d772c7b370c02d964842e3710a26a81a70cd08ba0f00ec9a5add6912c15620aa1b97015e7e43e3093cf78d21ac656c1c2ba1b08a35284f29c4bc6cad0f0b6114b309a1d36c2119f9a7c4089e2d36070db1446b4350200049a308ba00f480b7b76a12c185e8dd409e3f6083ca214cbe8eb59254d39e23e827da803d321c4fae26fff2ae719179292d31f41a6b6d806290afa867ae06158af4fbd654d82e6fa4e54501b03a024f3a713c8a853bef9599947a2d3f14390df2d29a39e03defb74b6715f4a06e165c933255562b71578880d420f93dc0740306fb66a61def4751a6a564ceb951f1e4f301c71801f4ee7e9512a44054dee51c141b5e191a1a9d5549431c0e234088df11f7616f56c52a904482a9f6b883c11a469a1ed65f553c61ab58517a2b6c39518898660322132f011a0576b18afd3d17831a60d8569086420a571e80265793e2150d565947cd1febc29a43e5b34d3d294e1cb533e3c54d54590e6a7245688d1a353a79189ba29efc075eee5578c3d403d58585b9d28aafb1bbbebbed378c22ff18d588c01f0e19abe3d48637f71595339307ecd2f45c861940a0edde8c52756c78ca261a87c4a846e72efdefdb2119303fdd31d38fa2de10576ba5be8e034da418120cb5b822e17aeb7d60aec84e7d3924e07ab7d9041330b4f16133613817388e241b87ef2f15b6d514c36bbba812269826be519c6f15d10edc1f7783000adc6c3b9b73f500d0b7b94ac980f7ceb01839a5e6ba66bb823f84dd59f78f741fb3e6213cdfb1489af600d629630d6ce62eca9957816c97f1d224ae7d46908786b539d39471c62a2ff0727bed8d13b61b20df341e8bc535a4fedf4c96599c6455fb1b912eb941e86ae21f2d60cf95a0ae107e6c8c0ce61e39a7d65797b6199e040f1bdea88b615bd792d732f4bd7f6e4d153d723b58521c48a479ea38fe33689e29d9c675a8d8085358e1f4e26b6accc415d88c76cf1fef0575b2045792f86644092fdba99ee25eb313681c732d9c54b40d3bd136c8ec53b0f5f1b23504037e0f36a18ad80eb4fb0880de68150fde5b4e149089db88b538a0ee7bcdcfae5311db63072fc2ed9472f44f73e640ddfaefed1c621d3a0f8403b26da929b80e5b383f51dd7e4ef6c04d4211da39a6b6232fab187b379970915f566a4365f91f6e5ae9781a47902ade4eecef522977f9cbe8933dfd5220ec3afa8b59276b9612ccfcbc2c3aeb3c98af42e2b24dae01ed94706e25d76b3344b124a50dfa4b94b1cfd9f335c31b05cb15cbdd40f9f07313ef792e22182c9641991e9ec35d2e2e80c3cb8ae112a2efe329dd77e843caa4cdb1c3b439f8128d2214d3becbe602fc616d8922c4dce4ac9205458c1e5b4d7c082826153746243c04b95a9b48f8c637a6229791e13789e9f424c11e401a5a684ced9ee7272aef7c63a6f79d864f25234a9cd45feeabe5a2345db0c7d8e8f5420e81a65a2cf6c1857efac87f889e6a40cd7833e13bc47e2722b3ff26085a832e3ab7951e144a3012e935353261db512a761c783ab7d9d54d880a1412b1a9a5b4e521386d086107701190a4255e4df3951d3d8cce874ab8792bb0aade5aace3f72624b59506649a6cf1549241219efc79abbec787e51fe2a6c5c14b957a1e801fb9cea2ed31fe69407798de057aff0993bc626b0393434ee0430e97e7318b7d5f4cc8741f21d1b044beaf5f4f18dccaaf344be1a9f461c988f596561ac1d50d5cde25cb571f343552a53c32850be39674463d24d2503d6c2357b86ff0da726f1cb62c397c10d61ff182908369be72d9d843d45604e72da908d0f68eeb20022b049a67007028df6d724410d96e38f75399e9eea7a0af2f21b99c8e1e1d45c3ec18a62771c734426aa1d979342838259c2f1fa6cc5e8b07b2895970cc36ce51acad66f0e36d226747548918a36e7b8354677c05daff9f2a9856206bd367a1ea359d284615b60b85be649a7d8005813c7bacb7831f3b09f38fa4301ffbbfc5c7ab222640dbc8382e95ca381c38d2d30c04f0dc91802278e2c86bb0f04908169a183fb7dc75ce079ac2409f03f4c9f2e845a72c3af7e9ca63f52cb773faccfc306b9d5ca3ced3255fb435fe864fa013da761aa15e810dc090bec759bc19ba9ceca86b1dc30d4931968d412410d772159aa5b83e0406953ba8ca2d58b893caf4a01400978f40e915d681416f59402aa56921f6e8298d5624b46e658524956031804edb7cd3e86d0a84e2298c54edffce36578d7f4499a75b4ea6d5ae6b5723995e869d795fc582149a27dc5ac33c8e7595a99e32359b5d96beffa41a22481a7ede41c239eef63e2dccb61fccb71a97591d5fab53ef944ddac6325d12479c36184223cdfbcf96c816f1b9cd1cd114b84c879f26127bd95e8a45587596e1154fb15b0630507f5a5e0a966eff2a049620e6de591089fd00525616d7d41fcb86602c64b58100aba6fb2300c38607d219f6f1976ac7c50269183e3b58f4eb202e8fdabf73d7e19ab5400eb8f482771c8d8ad060ce38ef8a7000c04c925663348ae7121d6e69e56e46b433623aa63336aea5522ef386c6b2a35464e0ad87edf3a2dd59ecf8db4b05d4f62577692aa687269482a1ffca8efc5eca9798ada5cb7bb1cc9fc9def13da0d80a1ffd8f1ffc0adb9fbde4bb208b07940a903076d0f51224164ce050c0d67db17703bbb38cfb5d67ba2211059ce12f3f3d4ff7b2bcdba0c9508334d6a1a45c889e15c02a128b6a2a31c6aaf2303fa726edb3931b03a8b0d7768a055a74e280dd811f07e3702b903c3c54c7163603926c5c7b026e376d6b2cfa74725b876c39818c09e36ac45acb677a8971b0f1c10fbf349897aedf9fdcd29526c5026c6f0828bc201c497c4819e662bc2c756ef6ae288116e78567980c00556c7da5c042dc009e3dcb5026b0f29038560512f75af1c237e281b758bf0ac28cb46ac7f22cf095850170dc2ef24162661163ee3080e44c9d8baff9049d15a4deb59619123341fa8a3bf3977acd61739d45e89918064d79a94b9727f306e4323c4763feb5fcd08e100d7f8f7b16a856353dc0615a0d6803211bccad6bf4ef542ae042d1b54967119429fca21d9b133654b24bfffa93ab8b9bcb63fb341dd8e6c0aa63b8bf67e89f0b3f48fdebd1006d41b7ae8edebc08199d8f175cd05c094b8636fac7e62b879d9119fcccc7484fd0b00a73fcd3350456df57e84d37eaa6081e5846b1c164cb249413fcc2a0da4c281979e23ae1137839a619b78355ef3d6f130ba09de8556d2dfb2d52b3ed6ea6ac5586d9984c19688003c6aa7587381a2ffba589bf954f0744cb02f9e40a254b3e4ae475d335c4526469c6ddd5ef15f68477b7994e7e7e4a33e33cb05469825ab87d3ff5e77c494482fb4e8c67dc823d1a79478b3a921fc483051f009a5e4489dd1a8a2226ad309ea7a452a2f1c599273e60045c569d993f400e09331d32d09198b4c188d42e5786adb91076cff9b9d0fe3e257bb005c86cc85f0176b6b8e9e9db7c08a62cf245f1afe89cf899cbcccc209ee73fd0b5e0c9d60c1c4ea90500043d45911c50851b91a0baf55ed50a758b49b530b82b0a5909005c1c0b42ab96f5fad958be72547fdf142a7732e2f987675e36db6c86b44b64adfe26da104f7362a061337d710c80815998a146516313bcfd81fe271ccc63f5ef8a26e54fe461c5309cc62f84f6c28241f8fd5a91d26f182b4e63818d56edb5c31931c8479ee3814849606e1a2f12c4ff79fa2629278a3cbd0f2e8af6e38a6b6a163f90e17411788b805b3ded17da1633e0780d8d8dcccfbeb7a1a8cd8001d562601042c1527a2d13d0147ce104f0b7e7efb8cf7d405954d81f38cb24c0dc704a6e1b1e0e15ac47fe8bbaa3d6d80ed06f1e12f68ea9d97538f4096f92c0d35b35c31e87dad3043a4f4e7a2620c94da9876024ecb5f0176a6881c1a34048fd96a5440666f93c4df9d987d4a5af51a5de2b816816f2817ed3e7c53b47dd5d799d44de20688892f35329100424b359b4094315ca4109571e3625c563451ddc51c151c336a43e9506026738da16452f9865231993d15373ef6f5e2c7979b78ee0f083e132e30a04a565530848666bba73f62b1585bd49c249e16499822e21094a356a3c36418acff77b28e894fa80ac8619199a2f26100ede26e34facdbf3c07e7cb0af36b37c15f6bc0ee6fc1e59f41011d913570f885a0b13617103d9762c34aa5bd20bfccc7036191a266cd059097a3d749a3b3f30770729fb8ad2de4fa97c9b42163bfad2c943a30aa9cd72f065535dc8679916e3f7718960a25dfe592893bb2d410a207c0c172c24e3f02013447e836d474eee559c7d43d2e8256a4f96eb6596a610339cbc005acd000dd5e24a3b81f2dd7731cbf9de138ba803b9eacb6c6eb8533f3443a5ff569f97c5db388443193f753e97058437c1a2de32e43dc8d37402ee07843d574ab980f2e6486a0da96ffc51005ca65701dc0b26fdc08624ad993dd930aa595e22daed87af42ff6aa0308c6c7b7c4e397054b8eafb7240024c0f09e80bfda2ae4eea26ded33cb018ec5aefc04ce45ac0581fca27c7274889104b8d2914e3cf37fa27fcba9e1f5e02aa76bfc5073b04bd7b7f2b3947204a5167f879733a8788de4dea7cd8f4cca6e796165633b24dc97444a29d9b6339fe50b3b00d08109f6b971c4bede9c400920a3e308d92c195353e42ca132c6aea2fef7bb1f8932a97270047b6179692bd1030a5cea0de226f415adf937669acde0174873d363c2fbb82545895303cbdc91339a66ec97e042a836a30f03b7c1933d6c2ab80023f1992ed5f914d243a3fa668a0319bd47e5f89eda4751d72ed6c39558db626c67e237bc0904658cc492c4624ba497ec50e1c3e764d4203e5bd929cbfcc0f1e6ab01ccf0b15c2ac6eca9ce6d87ef1fb1034053b68922f6f842e14d6397de6bf5bb406abaa81aad78a977cef4b95abcf57d13f99254947bba18751434cd1cdcd119f0687953197679e2de0fb1fba3cd8d692336ebac6dac2cac0136937b557ee91c4065f65e50be6c260be6d0d2c087b890e70159e9328a2d2bc0a64bb4cc51cf8be3d62a3225d12cb45b6476caff1faf1fc20e33f138da6e3b5fd6c412788b05b723741cb9aba0092d11382b04b19726042933cf6055e8b0be63351a1f8596b471b147f3dc0c119ed540c29fa3e629f977865c359e6a76fd2c73a9be1ecf85518a72634c8f494f6863f28a09e0de35e749bfae1746dc2e0d4e7e85f45cb2fe4b81304f802f9cc403344593367a139b47fe6cb72b701fedbb2889535db9fb2984e1b0a8fd785864374d85b77035343d8d9d8b9b35de6a5203f2ed64723f8ecd31f882da867969dc4ea2dc8cd2cfa75a79ab22fa0250b4615706c8abcd1be27c4990b30e8f20cca2757c204868719af5acb7aa61f94595f5ee3eceb730a83af53409204ac6ce777c200dd4b5efd6f1ac7a6f8d276b8679d05149d2230e974e4dc599c13776c07d64defd03f0fc7373d7fe197f75a0a5ab2413040e6455837dfe9bdb5a7127ed2c9bc8362815582314f1b17df67853e47cd1d718fb2be813f183c92663cc60c2d0b0e0ad7ac2895600bcf757cd4a57145efc25b1d86000ad90d048d2985ce2505394f7ef6d0c41efdf5f175e84fd54718a0ae0a0e8813defa9a68fb960b8ceba58d17318dd0b8b41e7f785a5265401769b034f3692e5e29b41f0f815f0b6a10d6554fbd20c671f7cec90fad2d11fc6f54c79d2fcb40c087ac05f7df3f17b3442d1de69264ece23b9866ef37cddfd88e860c84ff9c9c740da06ec6a1ac9965162bfac11307e86e608336ba037e047773272c9ba68262a355160a42468919b48bb9c04e395dd901f0e2294587b56b46cc0339f7ce1516a038cacd4debe48b1429bf66a09f23c05c1940d351b2e7a3a3ac4f7fb3d09ef57a3dde809cea050f97f8f14ced397434ea778fe6c2db7614988d1ee7b0f616d74991a935aa73671b66ef0ff6a4972451546b61ed23765b5377068a94e584fe4bf7c5290d43c228380896ef7ac779f596aadd22f6e07184de85af22eb2fc75339f16b23ca16e6cf3cedb661d297994432f86d2c8f28e4e8b2b1e3e57cbb1480d573fae7bb50004e1dfc3d315763809531fe09536b2dc4d85a4d3259ff0ee91f58e7627db5de29b49268067ecf7a9f8e877802d33a2045db36ea6881d7bf0d619645cf639fa1fb7027db73c04521918393a7a789a7ae1639245e640767dc664445ee9eb1e7d9a9f5be5381e2b232d1006be42b3e0b972fea958604b808588203569bf43a876ab4240bc349cbbb2a4113c510953a64ffb935531d7401d6bad817d170343f01443f86282e263a21569f3b67b37e4769de9c694848e07c75dcb87778fa64397720b13e8e38d86127e48ea3222ceeadc247d2e61525e2989986943c5851814b4bb518f596a1673a335b4b97eafa9d51cd915bc7f87223cb47585cceca66fba57b3ddc3110643f5ed362eb2413fb3042b5aac8e1c4c659bbad0b4d383d8283660cf389e030216f543d37044218e9b1a8eab0f91e8e418ac842c1e2f99fde11bbe7f7cef9023c4bdc6065bf41615370e9e69a5afa547633146902839b88cb6bca91dd15051966952e5f62f2b4a65225e1394d7f6f4784bbb8db457fca477e34303016a84b28412bab26a001baf05eada79fd337d2020b56367c6035c3ba052552dca09214aa29a07c9a1b406950109b30f3b69d72d9782a368614895e6ed2c89d71de52313c0000000000000000b311e74f42e7c3c2f3020d12678b87cd7a16e8442000411c2326cdae179e7db0841fcd7b4e892ad85c9fcc11a22a1c87e3e2fa36add273bf150b04fe1c19b43600", "04000000454789e1a27f3e0206b16254d58d17029bd5ad228109096c26117b4402ccaa8d7af0b2ef5aeed1d5fe7d09013785cd1ae671da0c8e2f9c14bd9cbbc1178588824ad83a269a743f8bb908dfdfa2a23c6832f9dc0a2a84f9cef5c2f24a434fad3a0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000300000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102e4cf041ce2714fce6b2deac48e63d661ce0fb4622102f16275ac8da3f0b1adb066a16328d511763a00fe5e4f92d22b3514fd59b1d6e202a5c6d9890b557105000d9f2ca6f1f8fa39915aa49ec722018c2101077c22bfa250492b61703d1af03530d23486638dd2f5ba49d537d1d8c45f965ce6a0a14dd5097f44532166e534255d6477b31173feb480ec9ba5aae0db74252def312bcef41a011166d5f33d8e0789112c7aa60ed86d96287cfbe3e8e20be82b94c97e4d41f6b819fc36649ba91bc2ce274613dc06a6ef8fca001acc4c5028dab519f2b9b6fff9baf676d1a69857e50de5f7c37602e6a7eb953bc3e1ca4e6e14c024d59a145ed5289fb3498b53f0da8f5a4354703b12b06388f307741479fe70ffc95ae1430cd853ba53778ec33be771d78e312bd02494c462e258fd807615516d5dea59679f859b63ee04c82b4fd43fab331b5fc84f5bfe149c71adc42b60e857a7cad23f484a5b7bc7b0ef66e4fba0eef3d3747bd0a63729bf9cc5d9dd917b040368dd6b0ca7bf7a6070ee954e40d901f2ffa6d50caaf4d721653d5fe254e82fc50ddebb91c05e8b83e55bc4dafc45b078fce6391cc4d0456128dd80ee1c9965a9371d2f6c7533a6a49af3ad85da81bce5148b23589443166ae62137855c0d698309d0108f0793e7a9a852a9c7597b1040fafeb9d693219648a3b677e6c07c635539523c6a555317a925489a9da78cd8192437886b07473ce2ca2a3a7c48726e842d93a80c85fa2022738a4325f287880ba6b6e8accddfbd5ca28e67e5645328c9986e6e4b38557bd175e5dc92592331df1701c8a1bcfebfbf091ec246a46ca1e0b4799c5c35796015b8727a2e823f9430e25db23c96ba4e5ac3ff3ff05a9467f032a4550a3a777659973d5d8f7366e6a96e2f79655c2e885018096d0460db04b9238020812d6164818427da0e58ea6212eb91094c7c2ad13b124c965097da1c43e40a2274f1870fc60f26cad967a8f15258e591e3a7f7dbd17ba04389e482bbc79cbc73f2f30e861c927bd24f6bc825de62778ec9b61225d8ef0559ab122f2090de38933cc0f2007dce12edaea60f6be5560de16ec336e78e693355191b02ba0641dce17315ad08ae6b03bd71efe5b5bd24c692c50d6c165d2c8807abeed676f9de986cd45790ca193cbab1f0cb07ac42cbcc89cb8a7b5b709fa94aa85174978c868f349d10c5c65df30cf5343a5c0f13a8b36dab8f86ad272a64888078b8c996f506c2cbdb73056664d1f5c9e27aded03d5f22382c43de50db28ab28af1b9e00813b8bbbbd6173766789143824af9d003367225c018f6215587b5cc76763bd24b1be9d6026de65ce9354e1bfcd9d44ce81b2eca498f81660e17ea08c2d1dac1f8571e426f131dec26cc390884acee64da070eff9c381a4e6da1bd9adeb13b20de77b8ca9b9849a028c2c2f079c74fca62c34bf6672fdd2226713800e96b10fef3e60de8263a2618bbc49f5e641697fb8ba4fc4ae2ad8c7241a91a09f4dffe1986dd01590623216c72d70ee84e13154db0cf8342d6f36b00ba1bf8f640868d14c69fbc6765d9fee53f1bf4fdbd73240ef4a6969bb3791b2206badb2dcf97173c99cab5a39bd3a4ffe49355e294b33cb9153fe32dfd196842e3761f51cdce3ae0df0ce51b14e5a6eedf3a9a57c9cecc0f19730f6b82c362cc79c0001e2122a1c8fc781a0670e09110f2c64613286fadf33d16e64ce192c8dec9de63e6bc7734cc5b1d24598b616e83edf9fb228ee724bc0d0dc8a858efdc01bf8978ae1a9b1cdc23ac54b4af01ea7312bfdf3316b23aeeec8f51c8a12a89a8416ac1b5f7bbafd83dded33485e68f150e39a35e70b6ea6514fcfd13c5e10be2dc52a3c2e05f37e327f8b2eea2907d670b592b31a877c3e8cc326e2be8a64bd9a5802aaad49df3716dae08cd1704ca950c645705332302895ab0613e1d8d14db5d9e46282a1051f07f3902b69776166829ecc3c2381039c1d892c662898eb9de09432f2ee145ff7701aac2d4e76e215917dad18d91ab4abe068e20471e071bcd120d36f824a77f0f628ccdfdf28bfb7789a745d6b30d8ebcb1031d55c50b651b2b23883bb37b8b753822dfa61ef703aba2b7eb84fd9aff965af4225e16773a79cdb85e22b0dc4a3ae7e3ad62a573446eea70d51238e529ed0eb1c0c71f80e0a62dd8f9a830a05cd0494548aad157a2a7fb2d611084431a1ff9724d8879984a881259dd3355452f08eb4faf2905f26c22c00ac57fdf6ad417207034a9914916a163b37de4c86154813448e8a06fa64b7dd6b62164f96d0f5214ab6c135dac363034ccd4aba000d388e6b259e531bf00be1870efe6157604ce0f90b5a226c07fb134cb17b172d27f45d94a7308cad63bf070c7c3785e47bb1b99b2952460763426eab8f9a114424138529f6773f4c4293c47c5b8311b8d0182ad0d49e823900000000015fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4160700000000000000fde01ccb8336bd914d2840536422f47a495f99fb275a94036bdc26357196da4bfcbd8f1c0558e6698c8f5de4d92c97baf06de243383ee008944a81f75506237ac1dc049cb22a12c152b1eeda269b4756e8ef1f6e4fe50f2bd65fb00acfb460d178fc365b437135582d045f54b623eb978efc37452f119b1989169ffcb8948054972a93a1413b9364c3d8c2709c7fc71c4bb43cf678b295727103d0c573eed11b4d138573d9068a7bcff134ff25c0ba6ae65f7f0eae31f129d238e4e855b6d46033613f4bff845aeb9036b440b8d821c3c01527b797fb5177b13856b0b0a417bc8b1ea6b076f4bad29d5746f76aa64e8da22b33db49bc6be2938b56864402c69c96849d0b5caa8ae0411a1724cdfb42cb7d86cb30a8bba11575dc72bf9aa6c296dc710420c9aa6d864de981fd735f00efbc392087d927a4fe65bbc0b6fc89facfcc3eafb5d6e00ed6d567a6dbaff95b57e858fb4303a0d108080638a1ac7cc6ce0a86a16b8fc3d16178e3dc946675af10d1f964d1f391a8673b7277bfd0eabe35db6fb98a465ed64ff1e311aebe7c4bc6c62d744304454e701699b71ceb69fefa80770ff25191d4fd2c23bc9b8790833df08d383df7248236ee9d492ff18d901a7dc230039231d1cc7742deff6a359640b6eff588d2a3137ccb04c0cff68cfd05394fbbfd4dd09e290f3842af42eb170fc403659180d38112dd0e5b6247c56ec5ccf3ac8398bb136247de11037a94005897399805533748e9a71723a6c7d791be744134d46835bb3818da353915edfd05e538cbe1a30d64a079f5056a9b5fed8bbeae99bea0b3e0b54c50f8a0fdc42db5eccf41f57e2fac38c0310f07b8d6d5255d723e9ff1776847795d137224ca2954e125547963678967da6b44216b9c53d6c9b33bacd913203e08f3551a334dd4d7780487d68bed9631ebd46a4bcdd08e4b13e7aa51a279c45cf31fb00a68ba389bde4e033ae6b4359428f50062c69fe23042c824b5712806cf8ebd110a792d399f50d6657b714401475c868f1cc000a26fcb23243860940449e08c7983497ac88ff431242abd6d0a2e489f2f47c046bff32ef29774a3fe93fd710b6d45da4fe9785d07bd47cd9bef1050a125b3b4518a44cf3baf050ecef26b2f80d3f28c648e8e44695e2e605fdcad802d0216afb932754e092a3d2c450aa42c5011159206180004be19598ed9fdaa0f27bf77542f9709270615ff5827646e11533285e466b8cf1af3674b2f4ac74d77745ee5f8143c8606c40af15c612a5d2e65b4eafbdafe0a68e57eb6e0c85f8bb703a9a8ab1b7515ef67a924479a03d7e710f67b342159c340e88df29d30d7c0edb572002da039a07bf9af819355602c019720e17873c0f73a359ed9fd1136d5478a2605de995482060c9c83f4bdd4d000280fe96e40e2c968918ea53ab2159b94aca623843dd9923fe6b609ad501fe6d002bb36775f274eeebe449b8cea00ce80b9e82c97d59808fd2ebc8d3e5d0245f0c4d5b7ae85af3b3a36f9f40dda9bd282e35f2bd2608d1137a992be3ed200e36ea82a93c59f37a1d657e1e13b76496408fbfecd9dafa4a8fec72cd9ccc036cf48ccc81b8a0e792f3d97689259bd9c846bbdf2e51cd2356f2c5e17eef3d0d4a33b44701b18e3475ea42d37639fed6abfba19498483de9c26e297265b721ddaf3c6ebee876a9b4a310ad1df24f6db2b6614d88b414cc5df778d690f750083ecce0a779d713b088c01b1f0010106f9290afbf92c85cc9d0aa9d8730539fa2a43f8aae9d19194edeac1a8571044061f0c922492f179c5cd54470f90ab5c074e83575645c0345c540ef09e3f934fa6d09210c101ac83152ed5480acfb64cc5cdc59408e1899c038eb0b0254a130920222a549c17992c445e46522928a6033b89fd07122063ab40ffa3cd9724cf2c5f1b170577ad9418666aa43f537d3f35bcc475f89930dc9f5a9c2b3f88aeefcd6689a14ee59b632adad7cf08db8832533281dc4f5fdefbcbc06f8c923ed2591458925cb42971f7d1b469086da757827044300a8ed82cd362dd8f73ce39cd2f7d511dfcde84f7fb230c2f03dc1fbc163c650d7a6b6316196b5571c07cf4bf00c142a307d55b57bc8cf5f91d67a7019bf3a42bc4083f455594f5cdaee0ab2e4f49608ac53d9a9dbf7e2d9b6e97f6668d8eedf234fbc05e5d15e42d45a68c4fdebf20173c2a713eecc3797aa34822f580668da9daa71875189a0be00ad2882e14a4052291943d416157e08e800b479927e87603502553a51210a19716beb98a1ac009066d7a811228aa3361b151e25031490c3b3e2b7333eb20cc1fd30ddd02d57f531d0bcb8ed67b851c14366e41cc9dff350bcb0dfb6a09b8b2a5261291f850f86efd21f53bd8a1dbcca9c98453dab7a08ee7b0698b3b63d65964cf8764c961c3f4100b02a71ddaaf1cc06d210cf83598846bd95e74795b5a374db1cb0e3642706583f9e53cf37c760b0710d2d8030bf2113166450b46e82169467aa0e5de3afad785dd7593ca67c5331d5d2b5ff31ef22cd6212ad04872bfd5d049ed92fc9d58759cc09c529259bbdb789f7e2b3a0af540c8dcb224abdbeef9daa3db99d789c57d01f75867a8f8dd4db47d67f49c1cc04ef8dbcead3931919f434846f43ffa096ee0ee4ecfc2ed9e7a48585769ea029a5137a00a34c97429694c757b6d2e37ed4ebe3713e951f026c35af69df0bc0d6fc9d064953c8f310b085b2f7c0f3dc7713dbcd5381ef1b1a6fbfb0a594e1102c0e1cc95232c3f38e5146a999764483ccbe9336b24998bb35c12861c0a8cf930f04f137b85315a84caef02cb669ad4f363896f98ec3ab4e5d7f81329748dfa261add21a21683ea70f13764cd14dc5037b6216777b145f01b8e76177ad76a3120f4d8ac9e19d4fc0a389ede0dc9a0485fb8321e82802e5ca7ec5dcc462604430ce1a6e857f274c1c56d2cbe9deab852559e65887dd2ecd951327eabd5f6a9cc1ece73218f9c4cd23148258f8800dddce551810cd8935f8d2df2e483a2b8657d27646aa378b8e14d69db375839c94599c298c4a784e471ce188483534d1aa9f1057e87a8b8f34be2c47723b7bd424f168a2518e1f39d0c246920517e8ad28ef538628554494f11b23959ddac9ef39ae2298fb6e9a9ad1e476aca957dcbab5c882d82af5268bdff02a50d91f4bd65e7fc60ced2c256100ad4fe8f2e78201a707e14e539012f535677ee2101411905a723c34141fcc36a7ade3e2617e2e3b395f234eb2bf69ffbda482ecee215a07558a73311c1bcaed764f2230c286c1b99745303dff24d5c6fca5e1151d457a60fb84d7c6d6884f405008bab90ecaf8bb36a0d2c8505eec1f8dddcd5e66915e129298bd1b260fd8f4a381057adfe6f4124e5723226d7f8a48560350c626ca6452d597a4502911e9fd29a6900d3d343586758842f4cae3f41d6d5d8b4f1664788c4b2181d1d8eaa179fe0b9a80982d6a5930ee40e506fc38da4ec19f921f5173b74965a0139af6d9e971c3e5b38d5088620b2bc19d336e0a09758647124935f1c0b0102e06435a8096f15c8665d7317f98b69ac2a6622cdbdb780f684e801f5e4f181ee4adfd0cc9a799716bbc84d300f49c2af06fdf173e45ac5d8c3ff4de464004dd1058da5bdf8df2197d551df5575eeba4806c3821cae37fbf483e3bb65cf5f9b62ac0d61d9d97d8ebfdbc74fbfb59a22a407e5dfddd931b186a0df52c2ae60ff5d963913f282bbedad9674fb6a0fbf32460e1746ef08c3ad2b0157db386a982485ead2ad1b977b92d066725e4a76df59a10a508e9c00d8832eaf72b84c7f276e1504ad16357db8378a71a60023c900796226602ee97277b899917d71fcf11b4f4125c5b454dc1dec2971424319ffb195c910cedd226576dc82b3b84e2cb3ec8956a1805a7a4fdf5a9e49b6034fb1c7f2d131368c9cf1daabd8ebfc93f499d737e411792656a0e8fb0c89db1f351a10458a2c8d5803c4e8ca672b3e63c8be3bb545bada8261912bd4dc018fba6d916c2aa80fbb7d4f591d915b21d87ce73b52673d6a3f8d765ca584bffe6e68140e7d501a20cba127dae5ce023bd6495261e8d4aff031385c693b7499444c41e95dce8ce00027ba5c6882f309e7c01fedcb3cc95bfe5322b5d95ad15405c062a3c0d9977906c2686a3950a50694fe971fbaee9b2c8e6be04c2d4795dd0e96ea3d263fa57f3598c010e7a6497e3200cb2efc3cb9b155953eb20cc616f811b975adfaf7ab5009c2f07ceb4f8858295fc05743ae13112e8f8cb4fc5dd964df755c3f01d184a33f5a6543ddd09eff839d06902bde1cccea58c42ffb0ab1d0d1a0edcf9753b51a026d0695d39dbcfba0d2fe88636926147e59ede5387411cabc27be6b90ae06291da3c69147ab757fd19529b66421cfa0ad364808d2a07420943ddc5797c1f9bb3cd02f9c017587df52e3b552a8c4c91a6d79f688ee83f869e67de7195de505f21c6872a4f0434c9445a62e2d93d3d87badb66eff3a5c7eb612e1e2bd17fd26c43fa24197fbaa348ee35166a2c68d7e81499736e501fbbc8ec8d3fc9179d717a4143310e64ff307dac933283f34a8d0aee966df245af33756f1aa2664604c0d30046f030c8a366c0f411f56732881682ed3d04c26a1d2bdc54a87922725db56420da091e86c61b76437ab3deda0d0c74c480fde36de78fd370710e32dd9e752ed1625657f3cb769b649b368beed5c1cbcd5b7990160326cee961e9b9a1af9c344375cf19987687045db03e645ada5d20ed4529fc4cfcbdefa42727c9d4176d347033b5928a3ff90bce5579bb00e87d1d9e040d1adca7d188410e55b8bcbd7bff5012a0171f84962c88e2ef2a2b209a1f7b8b3d7dc1bb60c249832defbb9027aa80f5e119cef25e405249540c042313f2b7603470e84ecdeb1059e8c19a09e5cae35018df0ce514487e78af238b23279f39833c4b56af83644cdd121fe632db58c2eecdf0619164f3a89f9afe8f6a05dfb9ce0511b4dd280c0e7bff4ef90c5e2d22e9b10bf04cbb342dac0728bbfaa0849ebf06f38b786ba7c64e6c0f2e5365f972b46a87ea2273bf745530fa51f226110518e5e6cf95f66693ad58ecfd19d9aac1d9776aa4ab53e9d189d25ed4d1fa49b828ecb8fa54d53aa56ba564f7ba4853637522f4371228ceb84829121e75e05cd2f0bc71dce3dc3061d9afceda45ef8e038a72996745b6cf555e1697ff9a986194a80fd8b81729db5963f683467aff5261f752297f8baf392bc5761a85c75d58bd810e2a4f09d2b0d903e154d92ecf8b3193d0a4b4458f65d86f81af18fb399241e2b3359c2fb9d2671177633e24616f61e6bf61b2e9cc2dccf775066c4077ac92e972eb4652a7a7b60bd8701704bf418094b9c6eb3b30bbd770f1bdbc4e66f2f956b1237e0332eb1289cf85099147b3e33cd0c45d522b334f7d76ac203a8cae76d2807e8b769861ac3c9e448badca71c03510b1cab65ee97b907389e6941fc6c386f053f2145f6ebb25da1406cdf4c593b70dd9852008e88ba56e5c3f7a3f54a7df1646018b2801d34ed49093e91f1471f76a9d569381887f64b8072044953d5a877f96f41b13c25170b15a5a218ea210291f71c67ff6d7b4d9470710c6eef3908cd4d901f66b5c8af81f6a5596a75df335e29940f214c83312bbb418d0cff219e61aa2e7faca6346038f8444cfce6a435ac9046ed94038a5ff32fb5d62ea76de4a73c411dca8e49f04fcfefb7cecbce23f56c384a4b81fa3abea4bbe37dd13cec998d6df62efb23ee87d5824acceebc0115d4f7d84d4aaf691b0cd25d0f059ff7a9ea560a999ad43a8896186a9f787227a368f5febea348a67a748f566f5671b71708030a7063188bf3a008173fe0870c44c70231a47febfde1d5dcb0e3ed4ecfc0a5a1218c9b1ecc4e5aefabc4f3580392b6285a25e7f3b224db2a3509ab7be4699504f4f3711ecc6467e3a69d1f9101dec579726aec9f2e707cee2d337d7e96524e1ea2a925682cde94b0d943972c042fe1e0a404d8ce137f912c4a890d7ede7ccff30b5a001810f75ffe6b337afa2c0f3bba8fc4e94afe7529305632c2b4ae925ecfd55473fcd562a719ea19a7ab255b4375bb812fe9e228d39f20c33c3d2cbf431652a6876df80c3d6fdad1b60e2d70163584c6a50d2855691b8256aeb1e84d7dabf0ff83f7f0ed17c1a9c72dc416d35b8744ff12640c39f4b86c0b33299405c924357a4aa4db8f8a88cb49934b329d09a0ed5c23a5250ee2d0d25b86b0f07f1fc62c63578de9c308ac886e77fe033c8da42ccd70b3e627e5620552ab972edf72021e480e2c82a829f705d3ac8015aabcaa6bd2a1b68f002991853e02f7e440ef3cfa15b840b6e6aa926020d7e43356cbb434259703150e163422eb5c74d159aefb59e8f961f8f68710085ba76114a8a0de5a2b14f72e7976b106e1e0cf91b706f6a7c490dcb8001320e0db5d1012ba71c1026954844685193e6dbdbd202d4a7aa36d9c0644ea2165fccf260fa91a792816cc882b7da2270928b48f34ca15b5ae406f9f8fde325e4b306eb2772e10635fa7ca2b23576e35af57b29f2f5ecb01da489c90988c71959f6bf3d3b491238fd4c13bd6862ed1841983121c58c257f1943fbd4b523018e444538ae5699e2cf4c34bb4fad51180adbfffb2797049984f62f317acc0aefd7b49ef2394f41a019a11541f26141a1c35e1bcc05a9230fce3582b9ea160f935ded5c9dd515e7e27a68244a2e91392bcbdc0573658feb349140fd93d8715f6bcdff9bdd4186716192c80be3fcd7c338434c5fcfebb4339765c15b8c0ac0ab14ff03799d2454bed171a4a528d94e6026b3836f5deffdab2b77d9a32b24112e97abc3271e93c32bf2c1eff42acd1726233299e7855c1e2423cc35d3bcc2823d4cf52b5ec2fa172da26d00da0aee048bbaadf2ab1fb28289b0d6f02038a266c7160dc516cf7674632028f8144c44a971be620b43199a3466dd622cb71b7ae3aa06eee385cf59a17bb32a08c90057f131dc03952d4a35d86a6d6979f4b672fbca7da5dcfe082d69c3f09135f499eee82071299a6350ad74fe5cce702505175df85f680ef531f640ada162ff6f070814d78e8d28fc3316b54f170f508bbb29d8a96618a6cc211776ae30038a1e904942f2728591344da49984736b456ed59507d5c6053c3cfbecb5e11046d87a300a6bedf6ac18a8beb3daae79cc3ac4603b1d2d705b2d215f8fffdd5038b1ee7d4cacd86114cf8f6feed76bb810e542561c4c848affb71d12c630f9b29de4509b00203948b139065e1feaeeaee13c2f574530f90a277be135f75806221f631c744355189d1390330709b2bbcb61f548d8fc7f39f54413a3090d09a962e283442bbe01b6f7b7a6055620ac94ebdfdf95982722b844e3b708af50f3f9601a44f5c4757e7a5067dbc41ebd9ce6e2eebbe0f3547ffbfce538287f39adb5826117dc146bc621d617d0b4811c053e1aa2e2f8343d269cadead9ab4110531ef03f973cb43ddd89f6ced52238cb693b8850e9df3d9cdbcb97c4c84749eec92b823f29721c7c200f69db415277456626814d646ae57ef136e36a0273ac76d51fb11b37631d928a901238718eb4ff8336a0a750a5819bf6a2da76da1a06964ef4800b865d3bd026d0edd315e74337fc9fa692fff61c4c7153cfcfba2f5a16209460f90c5a353f6d581c6529bc2290799b615a9dfc1acf6889967d9b979c62ee16e3a997dceaf1fc020d4b28ec3c80ecc8f2163244895b67ab4eff8239a805252cf2e19e58e0c4fdbf595402b5625fb261e641a1a9c938faad9848ce84f41004e682748e5a9a8d4c181c9837f8b5ce33e10b74d24337dc4a67ed066979a45d52f6c3cbdc5c49b62f41eb54287907abe5fad99c5776a167d918b5747da356d373cd313d8c3fb3b30b7040ed00d815e0782b6595bb4341105d84db9e4edb0684f60f20bc9652f58cd8abb5bf1813e6d3f2c1d75a2279c1ba7951eb34126601fe497e93b9cb642bfbe13ad396863d499e762467f2e22b5c78428b775e523007747338b2b8c2ceee59ce16f03479892e129573e914da841d58d43a33a1331e9ef7d96ad374534e386b677cf3b438a642d4fc04a8bf71326cdf2e6ea25739d89aae37abd09eb8481a32821f6d6789875c2d56425c31ecf2bf179d125a003c5d9b79181182705a357170ac031985e1e182ed63be6c5e600a77fbbbf23ac8d18c9edb79cee2b4e529563a6019ef4b4805bbd84b2c27dae627728a39a3c3c91578fb4bc362223751e67c939a5c3f89ab2ea85c27b70d1cc0d96972070cbcaf8440f8b2505653de677ab2976646be75a7bccd3bbcef3a25019096f9e558328daa4f3af6d458d3b1a395079858ff3d6bd6cbe810def364a44bc2a3ff558f29dd4dd1c6087034b32e1ccaabce7cfa25951985c9e00c69de2ef5d0c8181f47b81f747db86e5ed291574dcb8ac53e22407900be677b9723104216ad0577762d6ec7fb694551d72e5357d62fcdef4900596efee13259d3a2557dea28153d4b6d65ef8ef4ce2acd92101423a38997febe2582661862c5bdde0e64db509562965c7ae8042a1887485f21a4880fd1345792e1f5462d63e6e2fa9c8d63a3203101902f0c8e17aca5cca2d0d205a3b8269cc1af7177775778db264785c5bc520494b2039062633421f09651be1a01467d3214e19c020eb3992f771a44f1d22dd5bdc708f1414ea342d0f2a3ea8356b497e7552c447d1c59acc00ec92293552998c4eac2a6051d2f4a9ebdd26722c03d8693add2429e77dcf35943d81dc0860c13035aaac4e19197f86dd400148302abf7910c45c738926ad3fcd92ff1e639b03c4dba5938c58d0c09c16051751026e87b436ca7a14f21eaffca3e9b6eccc8c8a8f91653fce0aa1e8c983fd3eeb5f2948254c6069479302431663ff869ce60b24d3bf668ab9d899d4525f79287ba041b510c70f683b40489c44d9f36d56d36d7562d0d73ab7d68727dbb169035b385676015e7cb44fc925ad773e7ac28b367029c57851d0c90520cac906f426c75afd7269124d7e2114c8511b331ef1d43ad5e758be645a2469590f5d2bc7321f739034608fe9bfec9622c5d89e9dd9ed8a0b63c23edb5a26a49b7fc681a33ea3c56b87ca36f7ac4079125e426fe01837fc0dadefe253f6db601c824d246a19b6fd3621eaa9835b58b3c00fbcdd6558203678e9ab1e113deabcbdad998f320cec5e7fb20d619f1a66fd6a73d7b51a0c2a18e5e7dd82e8adbea481485bc6b535c445995d221a43333e4d8f986d91a7bb24044c4f84216e7739077979f065c63df0bebb771053211ffaebd3c97fc978bfe1057f3ecd99019d475bc28cbc5e408946ecf651792c14bb15f27b52074bafc8b4386932f56d9ad57568a511a9daf1af3b89e571226c4419d06a3198a04fc473e67115201c6ed1c82fc049bb1f330914fee317b7dd7b48df0ecf5684c68ba3db8222d65486c4548509c00e1f1da0f8bd8db2e3e5573e1e94380b3e4f6c8644db45debfff88336be787fe7fc76ede488f1328a87e0ea6df38a622601a1bf26ccafea3e9f53b88816cedb7c03f7a1cc29e204fd3dcec39ae72728b9149d8982cef971077e05cd27636da2967a1ec1a0cb823d76dbb310fe948cf1d4bffee9be1ebb7f545c51258d6dd0a95cc54be6d24274d2500363dcd6d8ee0c30088a6eb8129fe8943e91adce089c90ab4e484a4898183dfcf0ca08b0b46e4a06fe66cb2eb4e7bceddb6b1147b0812eaf9a9997456202bf1f04d912efef7c2b58adbaaa031a66e06ed91a8d7a8c332414bd8d42957aa2519d610b09f2fc2905a189aa190b3e339804447c72ae0879c5675594045d60ea6e3e602e419bde86dd178e34f7c031f8b53a3cfe700ad4c870651f95223ccbe528fc4ce15483035ce3d7165cf5682b05736456c52daab2617ff4eba928a4d9e16610b42fc7c329e9313454f0879d4cc7c9c5d9a343a1d7652255c39f3eefdb5889658c023157f010d27b866a2d93df072c2be7fd60680178075c362082e6d2378ef6078e4342fa5b2b4f70003d640bbfbd589b93cab2d468d2316b089565bbea2717f9478b4f77d8cb0e80578a1245dd7044e7dc1ae5d248054b479be44522e4710f699046873681f6538d863a5b53ffe1c2732ca8b083148fbf2b42458040782880511f92b272b7b3eeaa96d395041ea2ca7d6d99dfd2156a250d521cccc09a7339da1caa6b099ff863d90dd9f41c66ed95502bc719006fd4a92011d364c2f4fc8ccf9cbdbe3b5efd50626854f400ea1769eeac79a54d7feecc37abe462f82a9a0fc1c10f0cc2a5083e201377370ca8f3f0b726cc48c0a94e5981eaca90137ba2b6eafa89b1a9170be15b92d3f3d483e1a1bf27667418d805a470fe9cd8b0bcf3d6c7588271f64227c70d449067d0325eb915a81e26db947e9bb27bb093813ca81e515192f34eaf86a9fc6761f8c5fa2c2f76203c04da59467ce5457f2de037886ecc2af9ae1f8b3c716fe5642d3f4bc3aaadfb942622a203e71407fc5490feee383364bafb5058f555df593ff316a62f4eb8ddee3e48d08f9e11566c2919e4edae58dc84a468dc25529669a9f4a9e869edb5c8ed0c91cc7d56ced84086f150000000000000000d48768c7d4846c02bfe34721adaad00b4b6baada2039ff05afa1b9dfa2920c3a8a61a2b2a836d3f18023ad165c251b3e97214beda5a1e885d24a55a614ccee3e000600008077777777d80a1977000000001c1d1c000000000001020384f589f53dbe67b156b476ec6c556473c7f5a581751f925e0a7977d8ea8a01fb93f0f2fff17a559dd6b52a5df79dfd35ed51207418d6ec1c8eb857b8944b17d08df0faf8810e7204fc012c3950923014a934c92d380c7f90cb16967f0a9784494a335f3fed476c58493e9c837415ff4fbb0b0fff46ca3557e8318b9c77d701736313060b28518920c70eae1982fa7a4043ce3703e4d4d5840eb8d87cc5dcbe5fc9eace2679e54b588ff5e478d9766a63c2c60e6b968ee3c8e01137da480709496656a909c2bd381bbe7688747fe7cef49556ed726f6f1241fef480027dc6771db3529ca4ad558528136721dabf2ce775db8f399e834faa0536d7d416ffccf60b4e23fd8b5d2ab36168e04214f3365c21b2157f6b1842fb1d7679845d276f06b74efe3514df0ce3c17d549de9a5145d4f46a4c65d6c6700fdf6c33af90c1e86585dd96de4c31fa40d0254c0c49a10061f966c0cfed6284f6ae200886aa201e48b26383d4f6bba596ea9bb2da4e79dc93ebf74a1616ea13a9d2292635681f121ae87ef722bb4e21a20522cff5add2d9219761302d01cf8d6f449810cbe60cfb4ff705488c618a96b799e15ce3640a8c0669228a2409ed64f4515776a02b678172a9bd04f78c199dd7437d563b3db076d3ce875679aa164ac3963645605a86d7cf1be63e049710871520521c2ca877fb48ed74d49ab17c90603d22007c156e25c09a1c32009e950b35b98fad179583c673a6f19599d9e9222ae255f594d68861cedda28d7f975d467daba081cb2ec2295770acd0fdc51fec23b6e4482be8eeeafebddb2974c789ad3b531783f11fa9f1beceb8ea11eb4365085d87b8c92895ebabe527a41009e28d6ee75fa3dac57d7bf12aaade832ef6d95f64055e1eba1fa2beac660ca9705494b0475c8c34bcc47f10acd023c5e621b2108c1ae6bdca9d8b3da04a549aa1a63e87fe84e875be4245402646e2151e789f5385ad46523d0eaf2525d02dba3b5623d7e2ba3151fffca158092a52d8cdc3aecee5c663ff1a5da3e6887de4050963333eba2bc59ce10d89b3c9070bb63f8af2db54be24554890648db11870cf731534a03b2aabf4d0476ac41f41406a8b2fbd0513c2ede4a1ab0cc930864b8b7c18253179e772392e0c7eaf473c966d587e6bacd00e3e68119d372dea195b286ef68e19b06c20cad46beeb5601988e2762c71d7cea86a6c498e1ed0d186c40e8da6c60b897332da6a0b0b2950a3f883d1a12650f6a3c89c1dd5928fee288d730fbcc470276acee3aa45db665e356266bef179823577f7f7dabd94a5aa7587b4cc03befec5e5e9bb241ab283fd0bcbc5ff178d19cde301c4aac4afa036500014fec6109fe3c2337b770ecad6761892bc72ead06584e4458668616587b280050e262cecce65491e6a9c93bbb264cef27d7f247058816c6026adf8b040ecb3ba559209fcc7c24827c460221541a7bcd97e87d1ec7b96efb31a48f429654cacb12c80c94b43a8cab2fb461ccfae31356b89d476d139cfc0398a29a6b40cda8a3cc619ea3e824a4a5854a93f03a6786325cde806b0866ece63583c45f512884f07a9596b55f84c1ce36b450d7d9ce07cf54524667191ea2da407d0a4781f2a8dc1980da32ed545bc58307c2e561f03119d1e2246466d96ca630265f49050bc11b4055e6b47162e92c9db77ec05b706d406a4c8cc1dd1cca1c5d9dc0319d1494c40088fd6417bad12883631f27aa61d0bdff6a7da203c8418d4414166e47d6b779c9bf1c8464d8221e2151af634f3e7a9c75f2d5e66ac0b080a9c3196c6437171100d109fbe04e7c116cbcbc46328aea1b4cdc0e8d6af423b9a8da48f3c238409faa01b32a6d9b16dd5fd413aa28ff3545d99882d68d4b44eb0d9c5a71b33da94b65c4d5185e847f3560e780df75270161f1dc9bdfd394b48ae34c63096a553d930d75d9c48b8dd6391b0f4ee6bf8643b4a35f40f6ac65bd33a5934f2232a1550a74bc811fb85ec55a78a8b61a36d388297c77b16100c2d72c10ad2ff1d3104b3387da460c3e8919675521ddf2ed8ce8860f2230b461cd88890f25942f2b7dccf13b500cbd867856e962c447bba5bce644f745876ea8fb6e00bf10007d7faf2e433220f1903bf24f28d72f775faf631509fbcebe068411da6831d8b652eb0f899237304d6b7b76db2000378d46f31e264e3cbcbddbd2b2aeaa2fbc5a29d05221cceff5a35dbc1dd70f5a045f1c8630d5dd228cc1dbec06f1d635a1de31df355f92d1f0e3f836f0f4008d49e9eec0062ed09b13a6454dbfd52e437871836b81b586717d7bacba215b83bca49f4a40c00052841159b8edeb45c5dc2c29a63db78e123567f94c3a09574d90a1c5de03443ffb9e5e7f789e1280102da6cdc69a1a3d58d63f7d988a0763426eab8f9a114424138529f6773f4c4293c47c5b8311b8d0182ad0d49e823900000000015fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4160200000000000000fde01c19a4c0b6d89d27687ee204a5bc6b5ea42abdf1f05229d7331d10dc4288e513a6b0e8894cf2dc34070af46eb9b75f80f8f891596b4bd40785cb3ad03988201b99f780524ad252cd2127e789847c8557662f80893fc9f4c3e281b8cf21e6c0e7968e399edae0fe6c8d34b3eba51c44f5a40f3589ca682c5c37883ddec39f1bd8b9c33b5249f5f20fec00c0a0b214e67e812fdf95504f0bbe50a4c8f85ac9d000932e325aacce525bfb4d2eac7ab12313951a380de403b43fcf0f873e04a889953a125aa505f05fa796513aeb72e0f0580c62f6e12bbee42ce820e9389c1697c80865908efd821767bfdd763ec7ae50ffc6259efd47bf8174e0a7c73da2f955a6189cf7e87391589f9ac59e61da8982e81f371a27f6d930ebdd76cc91d8611052adbf23a4179cd3b10d6a399164487e776e4f4577004718bdab42599ec4bf97d9b1d7a3e9591465e7eea5e483ae77d4dd02a5cdbc665bad1af457edb5b27d359c15f576292f740c926c438050f1f53fe7c1a8a0fd43696dcbca9d1be00558b33431a660b4b8ea0c2d4eb2e1c0262a4736a8ec5a74aacb27b661c13985e02813f12e7635adb84ac53624a77ce147bf1b409123ed37968dbd6dd7e89059c36ebad29f48ee55712a6ba94324ac978901bacd3343a1909d8e240e8b0084f75def3e3dabeb9a9650a19973d8b16976a790d4ab6ddaf1ac44b89569b61733860c6e7911810b8f7d916dda6b11df8a5adcda6e4faf128d80108690c551b2a6abdc4118e6b441857c145bed5bfe71d74579e14534cab2c80ec02071abfc44e019ae4bf09d39e626873a838440fa4a9766a0ef4f761692ee2828d099e86461aaba9635157f2b9076a93e1beb36fdcb6c6a9951b57b87afe3965ef71d3ced48fc65615e5d100b7bbaaa93f3dbb85ca8c14bf8591187d2fcff59a5f0bc9016569998e4c9378318aae999bdedf5dc48521cd088a96bfc01cac3cea0824fe5fa172545e97f55422ba1bbe17a9a37332493df8b7cc15edfe3c468fb1dc70633e9a225d8420badbe01a0a090b8ee23799b3617cbc741247ff7bec2b31c39a92c5038c25c2472047701109252132066b208a67c397b183ba0ad5f89744b85f61901c5441808d1ee8a3f765a5e26df200e95276499de8d241a007524ef1ade07dba6b48d153d4077f33022503a21683948059281b641f06cafec840420ce97e314989a4043706e9e838c36be15c518c58560855a9548634dc03a0deabc4c509998e5c5aeeb8e0045a436a9690354613d924ae4d1c0866972f877a9918917ca8bf3f1bbe7de3bae426c92e82f4320e500754ee69e94837d93bc5a47de31d06810d2da7124d200ecb8038a4169630f9f2847bf57e0710ae9e94330c3b29d44f56044419ced22ec028a689641513a7a81acfa2a62d85bd7749c78c37b6adc71b9c2da0a0e14cdae67fdc616a1f68931c1ca1b56a49cbca6c3457ca0fedbd15ac85967b9f4abea106ae3630de2040d84455bc6878304be38bdd8ab6f146d2afc47a09997a4441be1474d44b497347c3e3491c83b2a0e1f29743e1766acd36e8512f36c252fc3cca9a936ce9787e0166097779446c90843e03dde533196070bba9e6f08214d53da20f09ea50541567415ea7b24b3027f59bf68c8bb858914af7fddfe6a3aa018a67af7c65a33c7225b04e723d0bd21ff76a6afb8d3ca8a9a7772c1f72ff78a8c94ddeb13cd371ee6d7886cf5b38946e4d081a70fb475b8569aaaefc5799b773c9e0de70d08be90d3499a99fbdc31e695de27787bba5a3e752b7b311224d3119cd19ec467a4b015a179426fd8cdfa59be798d461c2944f2e4461d80e9a98499979d5e3c916aaad820ac2dd05d16e608c79fa595476c0906c178a85e6823f843701fbc1f59bf027099fbe7dac41d0b8c889bc4d44ee81b44df4580b20c9ad1ec0088fac0ef62a0fed24f7dc4cc2fb7aba41bed1160ee4afe95e811a9662708cf0f0534d4f5b30f2e64a79ff42c2483848c650166f9568f7189b398ada635e87340282edc1ea81e85e23b8b37b20755f92ff068ed5468495bd705b7dc28b82bd70435ca3293a3b59c88d6b148a26a7c22d4499e4aa3777bd56c148745c316607cba9041c4ba8005fadf294dc9d275e203927205056fa122ad2651e557700ba4a0eb21aa8f2fe60d12c4962f86fed97385e16afd662ecf6e881749f67538b76287d56cdeef957c22b3139093947d7328882b5cdc6fcf9e01f9e850c7d9940f855d0e605fcae62d3c4756f5e5dd9f9b5881755c4d8079efba410792c5a3a13b8295161b916133f615275d317b264c434dd16d83a2c5859a1f842b43d81416edc3ae14deecbbc6beb33621b9fc3aba9d2443a4e6923f5e6e41408eda4b2af7f417b3741764fa324d02f739a1b0dd7a6b61853527b4a298f94be16cf972e2550417d124dc04005d110ef86c08287065d5f5d1561777794f78cd95de31513f3838cf10568b23d89ab8170345a8c1002e2f69061fc402e7f0f332406642df71589849408517ea68d4d03f29921d93c0137f9a76a89d9c1abcec36cd5886fbe75a931537bdbbd7afe9fc2e37f4f81d02d63ff52e19a6d6f85f86d62eb499131a919a58f40d36eb3c83fc1e4c57d9510671affecb8e7690dfc03084fcaad6f85a39e631557a484f342c9c17ba9255fc52dd5c8e9f65748b2f484191090bfcbe391849c19a38c7a0bed4910b20863d135d28c1caba429677412e06c23e228a353dfcdeb22d5bfd71a63c1724ad25f6dc9cc8a8756b8e5840cb4fd4607041618abff02ea7c7f8971daec8b10025257099ea27c4fecfb00c9774cce098f6168ce15615efe8aa6ec82c136ca93e6d7ba57e6a00a1d5b33d32c4938d0c87096f08d3263620efe5a74ec96e01a40dc5ea0e04755984e9690b121ba6cfa1af5a0f428bd415a34dab80aaf12ca4e43337b3294d33189d039f7a66c15c75484ea8c40fde16527c1d6659e493b538d1006ba89185616298dcbbeda58f418f02754cc30e416bdae781697a05f9a09edf288012cb8004c5683fc190cd4294bece2feb5928519cd00671f98b1d3c7533e4137a7f5bff4eb3a212bb257ac1478602c27984ae60bb793e0fbcda2ec18c79153cebbe93b15784eeb2d275095837cd471264bf80761b48eb3c6fe57a37590b44116ab23b1b6b7a76f6650874609ca41551bba8ee4266f9f66348a3851f0fcae725c1c8a9757cf15e36f815e9a52794ccc663af4d9a092e0ebdd37f40d3e3ad313f53dd3af43c14ea0e0399170ca3583fc0689bf33853ce1309b09d269369d65d222abac736738926d3eab0160c4f1c47f8c429c43806c74968513681d539d163319334f2d95da3f720827f0c4083f1903390efb3959c8f97902dd0440d0a4b22349c440b3b9512244d0c10bd673514cc4ec5d946ea8b7252635a5381eb9bce4d1ed7568a9fdad59fb927486762b82037c733a15e26bca1e819219486e1ccaca1015ddfcac49355cb1fa3002c1d8e89459870fb8f006dea98acd5edc6a1525f7e25d51929d3013acbb760e5e0bd7f412290cc3f84b41ed8ac0958b9b2846299913807e9cb0850316746fb50bac24f1cdd9f6a8a0839815e030190fed2429a530c01bc59724e26377aa86bf6cb2a7d7d3e07ee90c7efb4110328725259c8fd3e151e4a40858f2c74e4e1cb08a49c300c30d176d1c94f11133a133bfec6a768c9233043b8fe2de46f3fb297837d5ce6cb036b33aad3b3ff087be7bb248f8d2796ba1866f7e1f9d1a28f91c001b8733dadd13a1ff2afdd7dc7b78edd108b3f686a5e2392f67e5a81a2d73ad99ea1c3e28b3bb60f7d8e88322b3e1bc92cac958fc2fb157ea156f4d19f025d87efbdc1cee5cf97a480e3ec60a9e92ba94db1ccd3ff73376377650d161f454ff09b2acc074b72a3d6955c9e3b44731b6d86dbcf04affb346e2f49dd001c7a74dc86651a50b03a2d9a774255fe6ebd66204a0ac308c3ab2a55e2fd3973b2079eded3769b2c1b98c1a84a92815067e8f774a7640dc4b6e03b8c9f443740d5093dfc2c02d459af1f4351fe07232383e39b975e0fb3ffc5d108d74b356922eb363f43addf1e838309c7bbfbce1ae4cba1e2e68d891302a55a24db72796b8c00674e55191594435cb55d5faf5067de865a7715cf90bb5fa005170f99ab0614040538d4cb200738f4c095012f374c493e67d91a5197e51468a5229633476b6e806c3c11fc17f838473463b0658c9fd5319a71af551d34417e4916381e9432a84efde20aafe6273c67a91ab505cd6bb1439d4b3baf9fc51a84d8070b7ad885597d3571a2555ff3959a3d3144fec942e62658a28a527eae3363ae302fc9118100a2f2b29fd4869978b48a7e3abe3546536fd72f0d2b0679a914943b58b7df350b504344999838ab632b0c09d791ace77968ba435aded173a8820501ced83a4a43ed324b83d66e7ca22a0016f8475d88948e188f02d70b7b90afed02e868202125d9e1f9b15e21ccb40c06bce591de9eb29cfc64705a52f705b4eb321ef6d806c17bf0f3ff8d40c222f780f72b7e7c1e1d0fc9d83e2db94eb026b803a5e87878b92efed14cdc3ca75fe2ccd0e9e39ea9c538e23deadcabc2dc5ae526bf0112a6e4eec377ea9a98fdeacff21ae7815b543f2d29ac7dce63e5075356210b5b711d2a2b667809ec75b1f4ea967e552e3e49ee24867072ec1ddf47eab60fd949c6ec7b7e918f88bdaeb870dd95b4f621805210eece080578a02a41961b3da9515eb61df05c561b7725218e3fa2514a92fc267251d340f2e9b9507dc1ad1936bea06d3b81bbb81a572c0514c57cba5710880cc5916a9cce089d69a0250919c04fdf99f2491837d53ae457428077c863247b5479f2b3b59c4291440a75943ba702ed6bab80a430a27baa6f186424098684da5acff62423e5221b032566a534139aee34bd5bf1765c7e915a57e5830a1b1d310033a7d17d3bc0d62001c9760fe135468ffdaffd62e4b1597305f37fd9ea804ffabfc218f06046bf39018ef13f53d554499082297b80a55535c4a8192fe2749e43bf57d955d610dcb58d186617dfea892de5093083703d3b56adc057a0a86b11a1f2b620d003e7d2c0590f19044a65e5daf2506a6caba8ea8f617dc75841d2949480f52a4ddd83b3d37bb49d2e98e3e5111187b982d97c0447f4a7a113f92a4e6a8f453bb23ee481464402803e1494333d9c2437ce54235026e4b74dadebe6b2a76eb04aeeb26cb069a2b3882379456245dc4083f92ed47403778cd8c22627557a6e57de06a54bb3ff1eef6420045cf2aba353307999c99bcf8151b2532b609c41c2ff8368320b308c87c93c16ea900f5440008b4b830db86620d0ab4ad6cc8f7df879e76e9fc7290038d5b51b1b2aedffd1170085295d0a1ad65e8a55b52739fa524fbc3e011608e50578aa09123340f2a6c6ec640acaf862ad4762beeaf38c409fd4380765b346fcaae3af2ec1cd40e32c1cc36f045c18ad3cb45f6f0b47b1630c2ccbf211ac4812a0b92b2c1562605bfe0a4a010b031d9859eb2f2c08bafb04a6fb7ed3faf3c9b3f47683335b0f06d59c2b121430b0039f3eef3d71826857b5ad643f6c1ae65066d637e30c8b7d0dcbb809aae68da17d8fefd51ede72c31ae05d3d2203fa5e7f06ce63c6370d7cbaafa5bdd14bc406457a301f91e8e837de2c6a6e18e767b7d4bbe2002138e4dd836feb78d1f0aceaa735c08b07747cacb592515642132efef3b3037fe5218ac7988d5b6d150374cb57e50eb0b1efa335e05e0be9ec52ce3b12a7f7f44116f758fbdc9fcee665e3bbe6da45609cda02e11afe6faf55ab06c885b289b8c520cc6961497441361ccc72547eca4ccc8a85b6acce8e7ad93b07e155d06f282c0fad64b15245dc7a0dae557599b05f9f4beb1b09405dfee97917f502acccb9a63f3a1a4175b5cb6ef96b66be25169c2e4ff683239bd2d5300514ad6a0be8493b14e721306c233bce3076bf31e1326dbf9159bdeb6684ded56ec1682f2d3cef0c056df2d3451f8a3a2f50b7fe1f3ea219ab2d63f29d212ee7f7250d9f14d95a5338e8e7735b1eb0b3d82b53934639370e560129f7d789f6ea1948a34a362a14ef3d74a16ff682530aaf751377f9e51c585aacbe97c1b0c9b0c978b93352bff70e3376d07ff4691933a88ecfe9a567549d1ec99ccca674403f5a91b39cf5214c03189d049bf7bec642be5dd028d027e35d536e6d76f758dfb995615f4c85251d2e24bb46ef6a050b8b22c3ce03b1a95a5b7c3eb2e680c32216268a266c794884c50de4025e1626878baf2b1c6d6c8bb034fe68e6c4947c39b12c5a496eb03d03053cdd8981b7c7141a7ebe3c371a2eb2b3fc2951a3dfb787f77fe15b7413d1e1bf0135c6ac189ac272d7fccdc16df0bf5241a06b18484b6809e9d7ed3bbe09bc6b038be8b62d33848e55487f4ee7923a6cd41c52e54a61a02eaa7168d16a632f2b298ecedd947725cd022c090e5e61498d529e443f0c481f7ecb3972ca240c032f3be9410a6fbec75115cfbc801a2e5ff53dc8280d2f68760c68240eed2ace16fd1618ed004055846dba422ae23dfb8889e680154df2a6e7e4b64037e1593a06b2118290dcf47770150491c2ff2a9e38294eb568c3afe3fc359c2e85aa080ff44c3298f1dcf828a3da96a1dd84f1345e41c45c7313091e8a56d65bc710f59f3a720ac23cb3d78d05e14102029257d1a524083bf24ed5985ca5f4b0732d6cbb2c6806f475428cede69709aa6e2d1b0f2f32e7bbde2523c3c42499165a9615cc2e7c33fdaa4ee7e8e87237c531948f718574cf8126183348b21dca1e0b332cf73fb72eba76d4d4cbe1dc0fd11bf6bf43e3a8902ce5d84d0dd18786b63588cfe5f14b370bbe49f7cffe4ad9943f84c3b1509d60ff2ce8b1ec7f3f3d32ec9cc464cb1d081be2595f572cf9abec6eebd0eb4a2deeaf47d727e4745ce51b3c49630aecab02d306d503a93922d261f6af5e784fe6efe9d4b2889562a1ed8cecc3dc43658b2bc078357f83d0982ac7e4e8d6bc775626cfd81a543153592e79636974577a2027af517184ab4b0a83b28de16886118e34e527f0604aeb97bcb622a14783338818a449318b96676b96143660e8e68edf124e29b5f2191567e0cff9c8394d291e24266c172446ce92f52a5403c87607b837c101219386efaf43ed8363ce8bf3362c1fb3f3a1b05cba0bb70679c33f439173358fc4f4b0defd1fbcd460c21aa251042e12eefdaac187cbe2509e44983dba90daaa9f02d5424ed1dba6a028f06117000d592ac65b5480960bcb19d83e0049c6680af325207be3ab317320f8035a0f3ef6b0b1371d1dfabd08aaf3aae6ab75fc273ea73004fae87854743f6a249e8b17b183654283d37685fa6607597058b8b678503b4d198cac92e010ea5123a72d098a2630edec6d02a2e27030159d8939fcd4898b28307060c3755e6e6ce1df3e273b56de1ae9165e9f3e775c03e099744f14d1af4a188570a2a751e301f6764b2866583ef0577e72eda194472a9ab0d54971116af59f2507b5e9c0d592bf9b40332359b4e607369fe5bf3814587b3f4d6370494f292dd1a3578f731ea5103a652b7fe5337acf79f1fa70b4a82fc28db4520abbaa6981d883709afff95191300127a7882bec3a990b79733a81e5200c6ac57ba2867863015bb0921c07bae40f8a31814d87e213c5447ef816b1870b71006f033bfe14b5b037e1cda6b3e945358c1c97f35cf5db2a917529d0e9b502484c25451dfb40d825cf99bf3e122630a7571619f351cc988f0a4549aa3c9d7ec5de25587202f46b1f7b7d3e66432f8e078b2689c9aea041027782e9bebc1f15b9a17c0de3139fa075538d490f59b89440791051d75887da2a892a7bd36cae79345c1357340a79e0910f90b48acfbe4aa9dc2d03d9a2b7ef37f70199dfefb48770f3eac69b55f7d05f0a18891cade1b4077538b4039bb623b0b1fcc97b1f757908052d0a6df76432f84377ba7087698e9841114b403acf5415deb6673120396b716606ee23f54e9e81562751d7cfd9e832e01cb2c0bed2b1eacaeca766a97315483abad781c792d278e94dd9cecad727084a26bb24a42fca18b7672e6e893d78bc20871abf6c4b73de1e99c74a5cc840d197113812724b7d8f95c513dfa076b3d6fbf5e4bf55fb37e4d678470bfd57d198b3251012432b929fe94a4aaf01bdef22baf295c3de1f50a055b1e12ae9e1359ccd297ea6d69949c0a228089f758390e31ec340e7b964b7d58f9888a11b37f50c1e1d1216b910546bd9b8249708f32ab69689d5110a6a60c32d4f4215974f00b5163442aea9669db9bb677b2ba4043c890f0f28d089890a9174294c10acdd47b0cd1422424b4d5860a92bf6f30ee0d1f4e8eff47ab168407938a54c68c2ad370c77334a1d84577f93f2d3b1ef02b92aa9cab4c92643c545763a23826d1892de88bf2efc675ca76c0ffe5e3ff8d7cda04915dad357fc0db2369b85128dfdea57e9251d3e0a23410f1fc5259fa8e5a9d0dcde99ced0604ffbcbc9018b3db0a7a9d36326dd0afd0e74d87ad8af132bbff13343fef9134c8428c84fce9086183add1c2b194c2682ef02d578a0da8e62ff8df85eba69c016b739a1aafcff4c4f54b87a3a0bc276cee2818c68fc3ac557ee7416393df40db820210d10a0c0e8c426e77b9700f48d1c23372363a65f6ae46a5d82dd4bebd93d44fde397243dcd1adea8bab70d3a67fea6e9371ebe9685ba22f40429e4666a902b1605ebc6dc7770921741ed38ce97e450fb89b6040fa63d5c668dc662980b105df3ddc982257124a255e1431c71f47b9a8e9c323c9ba86bec06dfe7ee7755cc4fd28e0d247c27b423d43d323a1b60734fec82506101373c612ddad3aabc7cc79cc554fca87d6b3b47891f9e272111abe2c9408319506bc7cbd4ccdbee625c698ac400e9a02f2e36b525d1b0287dfef18dc0a1f9bddcc496894e205a8c7241d26b15498238460c93b9d54807308a12fc74b94ea35e8959b5cb4d80af29de50490bf49e1603ee15e66a519d801fe936f4578c16d4b404f78f27422970c177a4d87d8befc931b6b5d8f2b50b2414170a2bf47dde4b582122c521ce483299f8d0b4145b971007bc6a4b9982dc1a0e7913f92a4eb12cb2a6143eefdb27b9428d3c992bdaa220831a61dbf8972cb31a6238257892d6fe030ee27b451bf5cbf266b851d62c80df9fc24d8064ad28fd1aabe7ec33f8636b83f830b1d441a1dc0cfb655229656109e7cf56ff426d907f383d54b7e8b77dc558dddd0c16443ffda07a477c1122193bedd17f0454967a142918a4946b90f75a7071aaab03b5ec89afbdead6f3f67a0720b1fd2c99687519b64b048ab13cd13ac74f5ec4a2b622d8d0e1388cc659cb0007d01afd115808c8871665f15dedfca02e7dd177210dbff0d20c36a1d4dbaaae648b6d48b8fdb5c628d36ee737610100f1073e12d8b70aa9f9ff3a8985e5cd4f4bd79cf83513074c2b45032bde07b22731403052b8419dd1803a74781b7331ce0659cc6d3dd7e5c29f03360fc05c14301b3f53d7d988fd71a348a4a0a776a3708d0557e7377ecebd984f8e7b6e3a59573811a0b609d28b2a137947488a4cdfa0ed6f98fc7c63970c2ec7cf7581841bc2d774838bc6aef836c3a24dcc70e5e629548470ef45f5657288254eaaadc346600edcb3d078c6596730a35189833bc037dfffd06457dd29bb80bd2369f24f068dd9ae012540de432230f8846e301ce4fb085e970c8bc3e30daded87fc12b0225179b4bb1fc0e03c3c736198a7efcd32a4ef2d043a642fcc7313ed873336edf8ef41abbf5bb82f6666ab60cbd64f5daf9af8cc24b5badb419e3001cf98f2d6365011e9fd5724d06a4db46a07c7e320e5ec776eb2698dd055e220586a392a466e77d539af3e1edc875288d19e735ef086426af589e1e92075851ca64bca470102c773e4732be56cb5f5eff6a4618a3ab232547b60d7f31da8ae29b7cdaae68666a966d6f103e4e0b459f9849f53495bd563e3ab61c41267e939078996c1ff16875059425d1f7e21fbd72e1bc23ca82d44c4621cfac844358fd23ba986f81718e7cf53237398c2c15694f46cf3632595c2f1753fa56980d300761bf1010d47545b466bc7cf0915f996b6335cc4c7fe23e5bf21b59ed558b8882982fdbc4bcc0e230d7103dc7d51e1d957ad92dbdd7bd46b80ce196dd00f8dac512725bdcdeea6bdf678a3e77e0b36accb44f75b23343903d68b39639608096d7e0fd941374f1691324fa7e6a5c7ad89fff086fb5160a9ef7366dafd082c68887d8a808276f7504fef460af7b0823444a2a30a6257ff588bf8075add929c262c7fb4e9837b7503fded41fc4e3eaf4ebede1718905522c60e18033fbc5b0701c79400a97391c87f0604b26b9ddf23184b0d74283e008e22ae17b27fe4296c0401050ac0e1556e7c069f033213f196fb1c141480439ba875005fc2cd0dd0ffcbfc5e109ff36104964b2a8f85497023e534dbdd50233ca9a54e93f40a6add13b69a391bc6ff243b0c78052b5ce4a827f3def88abf005856bfdb129a39d199dcc589b2be190ff508cdc8dc3e439b00473941404a0492ea2d95f0fbb944078288f204f42e0000000000000000d2cf92dfe685660efd09f2d12328b6d4b3833137dce6988fd0dbd21181ac2f827736607cf0ff13a942b92975e1591b5d15cf81ff6095652a36c1a1d6c29d2a2f00", diff --git a/zebra-test/src/vectors/orchard_zsa_shielded_data.rs b/zebra-test/src/vectors/orchard_zsa_shielded_data.rs deleted file mode 100644 index 8091036f65d..00000000000 --- a/zebra-test/src/vectors/orchard_zsa_shielded_data.rs +++ /dev/null @@ -1,34 +0,0 @@ -//! OrchardZSA shielded data (with Actions) test vectors -//! -//! Generated by `zebra_chain::primitives::halo2::tests::generate_zsa_test_vectors()` -//! -//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` -//! instances, care should be used when using them to test functionality beyond -//! verifying a standalone Orchard Acton Halo2 proof. - -#![allow(missing_docs)] - -use hex::FromHex; -use lazy_static::lazy_static; - -lazy_static! { - pub static ref ORCHARD_ZSA_SHIELDED_DATA: Vec<&'static [u8]> = [ - ORCHARD_ZSA_SHIELDED_DATA_1_BYTES.as_ref(), - ORCHARD_ZSA_SHIELDED_DATA_2_BYTES.as_ref(), - ORCHARD_ZSA_SHIELDED_DATA_3_BYTES.as_ref(), - ORCHARD_ZSA_SHIELDED_DATA_4_BYTES.as_ref(), - ] - .to_vec(); - pub static ref ORCHARD_ZSA_SHIELDED_DATA_1_BYTES: Vec = - >::from_hex(include_str!("orchard-zsa-shielded-data-1.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_ZSA_SHIELDED_DATA_2_BYTES: Vec = - >::from_hex(include_str!("orchard-zsa-shielded-data-2.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_ZSA_SHIELDED_DATA_3_BYTES: Vec = - >::from_hex(include_str!("orchard-zsa-shielded-data-3.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_ZSA_SHIELDED_DATA_4_BYTES: Vec = - >::from_hex(include_str!("orchard-zsa-shielded-data-4.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); -} From 8850c5a5d069bc383da5168e4cced6087f2d8ee0 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 19 May 2025 10:32:14 +0200 Subject: [PATCH 207/230] Remove serialization tests from orchard_zsa in zebra-chain (as there're no such tests for Vanilla Orchard, tests from zebra-chain/src/transaction/tests/vectors.rs used instead - so we need to add ZSA related tests there) --- zebra-chain/src/orchard_zsa.rs | 3 - zebra-chain/src/orchard_zsa/tests.rs | 3 - .../src/orchard_zsa/tests/issue_blocks.rs | 28 - zebra-chain/src/orchard_zsa/tests/vectors.rs | 3 - .../orchard_zsa/tests/vectors/issue_blocks.rs | 4354 ----------------- 5 files changed, 4391 deletions(-) delete mode 100644 zebra-chain/src/orchard_zsa/tests.rs delete mode 100644 zebra-chain/src/orchard_zsa/tests/issue_blocks.rs delete mode 100644 zebra-chain/src/orchard_zsa/tests/vectors.rs delete mode 100644 zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index 74fda4202a5..a76b388ca6e 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -3,9 +3,6 @@ #[cfg(any(test, feature = "proptest-impl"))] mod arbitrary; -#[cfg(test)] -mod tests; - mod burn; mod issuance; diff --git a/zebra-chain/src/orchard_zsa/tests.rs b/zebra-chain/src/orchard_zsa/tests.rs deleted file mode 100644 index 29dcc9b64e9..00000000000 --- a/zebra-chain/src/orchard_zsa/tests.rs +++ /dev/null @@ -1,3 +0,0 @@ -/// FIXME: refactor orchard_zsa/tests (possibly use vectors from zebra-tests instead of redefining them here). -mod issue_blocks; -mod vectors; diff --git a/zebra-chain/src/orchard_zsa/tests/issue_blocks.rs b/zebra-chain/src/orchard_zsa/tests/issue_blocks.rs deleted file mode 100644 index ebb672519a0..00000000000 --- a/zebra-chain/src/orchard_zsa/tests/issue_blocks.rs +++ /dev/null @@ -1,28 +0,0 @@ -use crate::{block::Block, serialization::ZcashDeserialize, transaction::Transaction}; - -use super::vectors::BLOCKS; - -#[test] -fn deserialize_blocks() { - let issuance_block = - Block::zcash_deserialize(BLOCKS[1]).expect("issuance block should deserialize"); - let _transfer_block = - Block::zcash_deserialize(BLOCKS[2]).expect("transfer block should deserialize"); - let _burn_block = Block::zcash_deserialize(BLOCKS[3]).expect("burn block should deserialize"); - - for transaction in issuance_block.transactions { - if let Transaction::V6 { - orchard_zsa_issue_data, - .. - } = transaction.as_ref() - { - let issue_bundle = orchard_zsa_issue_data - .as_ref() - .expect("V6 transaction in the issuance test block has orchard_zsa_issue_data") - .inner(); - - assert_eq!(issue_bundle.actions().len(), 1); - assert_eq!(issue_bundle.actions()[0].notes().len(), 2); - } - } -} diff --git a/zebra-chain/src/orchard_zsa/tests/vectors.rs b/zebra-chain/src/orchard_zsa/tests/vectors.rs deleted file mode 100644 index 61e7b45fe88..00000000000 --- a/zebra-chain/src/orchard_zsa/tests/vectors.rs +++ /dev/null @@ -1,3 +0,0 @@ -mod issue_blocks; - -pub(crate) use issue_blocks::BLOCKS; diff --git a/zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs b/zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs deleted file mode 100644 index 44d0c26662c..00000000000 --- a/zebra-chain/src/orchard_zsa/tests/vectors/issue_blocks.rs +++ /dev/null @@ -1,4354 +0,0 @@ -pub(crate) const BLOCKS: [&[u8]; 6] = [ - // Genesis block - &[], - &[ - 0x04, 0x00, 0x00, 0x00, 0x27, 0xe3, 0x01, 0x34, 0xd6, 0x20, 0xe9, 0xfe, 0x61, 0xf7, 0x19, - 0x93, 0x83, 0x20, 0xba, 0xb6, 0x3e, 0x7e, 0x72, 0xc9, 0x1b, 0x5e, 0x23, 0x02, 0x56, 0x76, - 0xf9, 0x0e, 0xd8, 0x11, 0x9f, 0x02, 0x7f, 0x60, 0x43, 0xd9, 0x27, 0xd7, 0x2f, 0x8b, 0x5d, - 0xf9, 0x98, 0x4f, 0xdd, 0x36, 0xd2, 0xe2, 0xe1, 0xfd, 0x1f, 0xf8, 0xf7, 0xee, 0x04, 0xa2, - 0xb7, 0xda, 0x93, 0x06, 0xc1, 0x45, 0x51, 0xc4, 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, 0xf2, 0xfa, 0x49, 0x4d, 0x3f, - 0xa6, 0x0c, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, - 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, - 0xff, 0xff, 0xff, 0x02, 0x51, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, - 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x90, 0x63, 0x00, 0x0c, 0x87, 0xd7, 0x14, 0x54, 0x92, 0xf9, 0xde, 0xd4, 0xd3, 0x7b, 0x4f, - 0xfd, 0xee, 0x76, 0x9a, 0x1c, 0x41, 0xb0, 0xe1, 0x7d, 0x62, 0x2c, 0xce, 0x77, 0xf1, 0x22, - 0xd7, 0x0d, 0xdb, 0x74, 0xfb, 0x50, 0xc5, 0xc3, 0x66, 0x66, 0x48, 0x24, 0x76, 0xbf, 0x5e, - 0x8e, 0x19, 0x0d, 0xcd, 0x8f, 0x5e, 0xd2, 0x80, 0xaf, 0x20, 0x9b, 0x3f, 0x67, 0x9d, 0x4d, - 0xc0, 0x6a, 0x21, 0x35, 0x08, 0x77, 0x4e, 0x2f, 0x7f, 0xa8, 0x2d, 0xff, 0x9a, 0x98, 0x58, - 0x66, 0x91, 0x90, 0x85, 0x52, 0x3b, 0x13, 0xb0, 0xaf, 0x4f, 0x53, 0x49, 0x75, 0x22, 0x84, - 0x68, 0xfe, 0xb6, 0x2c, 0xb1, 0x25, 0x75, 0x68, 0x1e, 0x61, 0x01, 0x28, 0x4f, 0x0f, 0xba, - 0x56, 0x28, 0xe2, 0xea, 0x53, 0x1e, 0x9d, 0xad, 0x53, 0xd8, 0x64, 0xc8, 0x54, 0xe4, 0x19, - 0xe4, 0xc5, 0xb9, 0x1f, 0xb7, 0xb3, 0x5d, 0x00, 0x59, 0x75, 0x72, 0xf9, 0x8d, 0xb1, 0xbb, - 0x9f, 0x30, 0x49, 0xdb, 0xb9, 0xa0, 0x8d, 0x40, 0x3e, 0xfd, 0x82, 0x4d, 0x9d, 0x11, 0x8a, - 0x68, 0x49, 0x31, 0x91, 0xe0, 0x59, 0xca, 0x00, 0xb2, 0x98, 0x22, 0x52, 0xa2, 0xff, 0xe5, - 0xc3, 0x91, 0x8a, 0x79, 0x17, 0x1c, 0x29, 0x44, 0x81, 0xfa, 0x26, 0x7e, 0x83, 0x27, 0x28, - 0x58, 0x59, 0x2d, 0x58, 0x90, 0x88, 0x4f, 0xeb, 0x90, 0x75, 0x23, 0x47, 0xf3, 0x3c, 0xfc, - 0x94, 0x43, 0xe7, 0x0a, 0x9f, 0x30, 0xd6, 0x15, 0x06, 0x52, 0xeb, 0x2b, 0xb0, 0x43, 0x27, - 0xee, 0x72, 0xb9, 0xc5, 0xe4, 0x24, 0x62, 0xd4, 0xd2, 0xbd, 0x92, 0x72, 0x5d, 0xf5, 0x0c, - 0xe2, 0x67, 0xc1, 0x58, 0x8d, 0x29, 0xb0, 0x8b, 0x25, 0xa7, 0x19, 0x73, 0x8e, 0x83, 0x6f, - 0x9c, 0x26, 0xee, 0x47, 0xce, 0x39, 0x45, 0xf9, 0xb6, 0x27, 0xc4, 0xb9, 0xd3, 0xbc, 0x8a, - 0xe7, 0x55, 0xd8, 0xb7, 0x8b, 0x84, 0x0f, 0x1f, 0xcd, 0x05, 0x5c, 0xd1, 0x79, 0xaf, 0x2a, - 0xe0, 0x63, 0x7f, 0x49, 0xfc, 0xc4, 0x4c, 0xc9, 0x75, 0xab, 0xb4, 0x78, 0xfb, 0xd9, 0x92, - 0x2c, 0x15, 0xe9, 0x46, 0xe6, 0x81, 0xff, 0x6a, 0xa6, 0x4a, 0xc7, 0x27, 0x5d, 0x58, 0xc7, - 0x81, 0x1c, 0x3d, 0x87, 0xc4, 0xe4, 0x8d, 0xc9, 0x7e, 0x35, 0xca, 0x68, 0x78, 0x02, 0x18, - 0xe2, 0x56, 0xf8, 0xbd, 0x7d, 0x9c, 0x16, 0x77, 0xbf, 0xf6, 0xd7, 0x5f, 0x66, 0x3d, 0x24, - 0x80, 0x2a, 0x7b, 0x43, 0x3f, 0x44, 0x61, 0xd6, 0x86, 0xe1, 0xa0, 0xfd, 0x3d, 0x21, 0x4b, - 0x81, 0xb1, 0x39, 0x8f, 0x8f, 0x79, 0xd0, 0x62, 0xc4, 0xe9, 0x23, 0x81, 0x74, 0x1c, 0x3f, - 0x96, 0xf3, 0xe8, 0x1f, 0x45, 0x5c, 0x96, 0xd0, 0x5a, 0x62, 0x39, 0x85, 0xe3, 0x9c, 0x1d, - 0x16, 0x36, 0x19, 0x28, 0x42, 0x42, 0x86, 0x48, 0x3b, 0x40, 0xcc, 0x9b, 0x12, 0x49, 0x03, - 0x2d, 0xad, 0x9b, 0xf9, 0x2a, 0x56, 0x3b, 0xcd, 0x97, 0x8c, 0x32, 0x9e, 0xde, 0x5e, 0xb5, - 0xc7, 0x93, 0x3f, 0x93, 0x7b, 0x6f, 0x2b, 0x73, 0x50, 0x7c, 0x8e, 0xd0, 0xa2, 0xd4, 0xca, - 0x97, 0x22, 0x81, 0xed, 0x79, 0xbf, 0xe3, 0x67, 0xb4, 0x74, 0xb6, 0xfc, 0x89, 0xa2, 0x9f, - 0x20, 0xc9, 0x13, 0xa7, 0xe4, 0x22, 0x87, 0x07, 0x4a, 0x18, 0x5e, 0xa8, 0x3f, 0xca, 0x9d, - 0x0d, 0xb7, 0x96, 0xcc, 0xe2, 0xcc, 0xa0, 0x7f, 0x3c, 0xd3, 0x79, 0xeb, 0xa7, 0xef, 0xda, - 0xbf, 0x86, 0xa5, 0x94, 0xe6, 0x74, 0x3b, 0x0f, 0x30, 0xd3, 0x31, 0x5d, 0xae, 0xdd, 0x2a, - 0xfe, 0x28, 0x94, 0x22, 0xcc, 0x0a, 0x5b, 0x73, 0xc3, 0xe8, 0x37, 0xdc, 0x2e, 0xfb, 0x59, - 0x75, 0xe4, 0xfa, 0x81, 0x83, 0xfb, 0xe6, 0x8b, 0x56, 0x88, 0xbd, 0x82, 0x74, 0x72, 0xc4, - 0x12, 0x48, 0xba, 0xcd, 0xe9, 0x76, 0xd8, 0xf1, 0x67, 0x00, 0xb4, 0xf6, 0xc9, 0xd6, 0xc8, - 0x3a, 0xfc, 0x13, 0x4e, 0x37, 0x66, 0xb7, 0xaf, 0xdd, 0x85, 0xbe, 0x2e, 0x37, 0x3f, 0x98, - 0xa7, 0xef, 0x0d, 0x2a, 0xe1, 0x9e, 0x98, 0xbf, 0xab, 0x76, 0xf3, 0x36, 0x28, 0x88, 0xf3, - 0xe8, 0x19, 0x17, 0xb2, 0x22, 0x36, 0xc6, 0xea, 0xe7, 0xc7, 0x9e, 0xd9, 0x48, 0x94, 0x10, - 0x90, 0x3b, 0xfb, 0xac, 0xf7, 0x7b, 0xc1, 0xf0, 0xde, 0x11, 0x69, 0x2c, 0xae, 0x02, 0x89, - 0xc7, 0x86, 0xea, 0x3e, 0xb0, 0x8f, 0x7f, 0xc6, 0x52, 0x14, 0x6d, 0x25, 0x29, 0xd0, 0x21, - 0x78, 0x01, 0xe2, 0xda, 0xb9, 0xd6, 0x7c, 0x13, 0xcd, 0xba, 0xdd, 0x18, 0x9f, 0xa3, 0x02, - 0xfb, 0xd4, 0x02, 0xc4, 0xbe, 0xfe, 0x58, 0x23, 0xe7, 0x0a, 0x80, 0x2d, 0xd9, 0xc7, 0x12, - 0x39, 0x6c, 0x20, 0x02, 0x8f, 0x4f, 0x7c, 0x94, 0xa4, 0x94, 0x09, 0xb1, 0x69, 0xfa, 0x46, - 0xa7, 0x56, 0x9f, 0xe2, 0x89, 0xd7, 0x18, 0x9a, 0xdb, 0x3e, 0x5e, 0x9d, 0x9d, 0xc6, 0x39, - 0x03, 0xae, 0xd8, 0x28, 0xec, 0xc3, 0xec, 0x01, 0x44, 0xb5, 0x95, 0x92, 0xa6, 0xa8, 0x8c, - 0x58, 0x95, 0x77, 0xb9, 0x76, 0xb7, 0xc7, 0x81, 0xb3, 0xb4, 0x3e, 0xba, 0x30, 0x41, 0x30, - 0xbf, 0x38, 0x97, 0x17, 0x84, 0xc7, 0xca, 0xf8, 0xe5, 0x99, 0x4d, 0x2a, 0xe5, 0x9e, 0xed, - 0xe5, 0xba, 0x22, 0x0d, 0x7c, 0x43, 0x37, 0x8b, 0x49, 0x2e, 0x69, 0xc0, 0xd7, 0xb0, 0x64, - 0x45, 0xa4, 0x91, 0x74, 0xb6, 0xaa, 0x27, 0xd0, 0x8d, 0xc1, 0x86, 0xb7, 0xbb, 0x5e, 0xc6, - 0xb6, 0xb6, 0xe3, 0xb9, 0x41, 0x85, 0xd5, 0xd1, 0x0a, 0x07, 0x88, 0x7b, 0x5f, 0x66, 0xf9, - 0x99, 0x1a, 0xad, 0xc2, 0x39, 0xb5, 0x78, 0x42, 0x6e, 0xbb, 0x61, 0xb8, 0x5a, 0xd4, 0x0b, - 0xd8, 0x0a, 0xef, 0x5c, 0x47, 0x07, 0x96, 0x3c, 0x2d, 0x2d, 0x9b, 0x79, 0xdd, 0x9c, 0xc4, - 0x16, 0xa5, 0x97, 0xaa, 0x83, 0xc4, 0xe7, 0x4c, 0xde, 0xbd, 0xa0, 0x3d, 0x6b, 0x7a, 0x1c, - 0xd0, 0x23, 0x8e, 0x88, 0x16, 0x1d, 0x8b, 0xa5, 0x79, 0x98, 0x73, 0x35, 0x99, 0x8f, 0xe3, - 0x9a, 0x90, 0x94, 0x88, 0x45, 0x5b, 0x11, 0x93, 0x7e, 0x11, 0xd7, 0x51, 0xf4, 0x25, 0xce, - 0x7c, 0xde, 0xe7, 0x3e, 0x8a, 0x99, 0x04, 0x2f, 0x03, 0xee, 0xc4, 0xb4, 0xc0, 0x03, 0x29, - 0xda, 0x7d, 0xd9, 0x0b, 0x75, 0xac, 0x89, 0x18, 0x92, 0x42, 0x05, 0xcb, 0x98, 0x34, 0x6c, - 0x5a, 0xb5, 0x40, 0x96, 0xe7, 0xa9, 0x1c, 0x9f, 0x44, 0xc4, 0xb2, 0x1a, 0x88, 0x5d, 0x36, - 0x81, 0x32, 0x21, 0x54, 0x6d, 0xa0, 0x60, 0x9b, 0xe8, 0x57, 0x26, 0x0b, 0xd6, 0x91, 0xdf, - 0xf2, 0x47, 0xd8, 0x67, 0xf2, 0x24, 0xab, 0x98, 0x01, 0x5a, 0xae, 0x15, 0x3e, 0xc3, 0x02, - 0x48, 0xe1, 0x5b, 0x5c, 0x0b, 0x2a, 0x07, 0x31, 0x49, 0x6c, 0xf0, 0x51, 0x8d, 0x9c, 0x63, - 0x20, 0x2f, 0x93, 0xd9, 0xf2, 0x02, 0x30, 0x22, 0xd3, 0xfd, 0x3c, 0x83, 0xec, 0x46, 0x5a, - 0xd3, 0x69, 0x5d, 0x0e, 0x0d, 0x1e, 0xa0, 0xfb, 0x4e, 0xaf, 0x9d, 0xd8, 0xf6, 0xf9, 0x29, - 0x19, 0xba, 0x14, 0x61, 0xe2, 0xd6, 0xe8, 0x0f, 0x5d, 0x89, 0xe6, 0xb9, 0xb6, 0xd5, 0x24, - 0x1b, 0xff, 0xe1, 0xd9, 0x16, 0x04, 0xc0, 0x2e, 0x13, 0x59, 0x2e, 0xf1, 0x0a, 0x4b, 0x87, - 0x61, 0x2f, 0x82, 0xce, 0x32, 0xb5, 0x05, 0x50, 0xf0, 0xc4, 0x6e, 0xb4, 0xcd, 0x6d, 0x08, - 0x11, 0x52, 0xb2, 0x12, 0x3b, 0x0a, 0xe6, 0x17, 0xe7, 0x4a, 0x6f, 0x31, 0xf8, 0x72, 0x1e, - 0x8f, 0xcd, 0xde, 0xe4, 0x9e, 0x4c, 0x92, 0x69, 0x51, 0x7f, 0xe5, 0x5d, 0x7e, 0x36, 0x44, - 0x07, 0xb9, 0xfe, 0xc4, 0xfb, 0x22, 0x71, 0x15, 0x85, 0xc5, 0x35, 0xbd, 0x6a, 0x3a, 0x65, - 0x66, 0x34, 0xcf, 0x03, 0x4e, 0x30, 0xd4, 0xbe, 0xd6, 0xe1, 0x4c, 0x56, 0xae, 0x98, 0x64, - 0x6a, 0x3f, 0xc4, 0x2b, 0xc4, 0x90, 0x6e, 0xb0, 0x2c, 0xc8, 0x0a, 0xfd, 0xc9, 0xc5, 0xcd, - 0x82, 0x4c, 0xa2, 0x27, 0x72, 0x56, 0x7d, 0x8a, 0xec, 0x88, 0xc3, 0xb4, 0xfd, 0xc9, 0x1d, - 0x34, 0x13, 0x3e, 0x8b, 0xb2, 0xa2, 0x78, 0x7c, 0x4f, 0xdd, 0xb3, 0xe5, 0x06, 0x5f, 0xab, - 0x30, 0x6c, 0xaf, 0x68, 0x6f, 0x26, 0x84, 0x63, 0x5a, 0xab, 0x39, 0x23, 0x2c, 0x71, 0xd9, - 0x21, 0x13, 0x58, 0xeb, 0x24, 0x91, 0xae, 0x39, 0xd0, 0xc5, 0x46, 0x4e, 0xfc, 0x0a, 0xe9, - 0x7b, 0x16, 0x68, 0x21, 0x95, 0x6d, 0x3c, 0x3e, 0x70, 0xac, 0xc7, 0x87, 0x1b, 0x3d, 0x3c, - 0x7a, 0x00, 0xe5, 0x4e, 0x09, 0x74, 0x23, 0x6f, 0xc1, 0x24, 0x3c, 0xaa, 0x57, 0xe0, 0x4d, - 0x1d, 0xdc, 0x3c, 0x42, 0xd6, 0x7e, 0x23, 0x60, 0x78, 0x30, 0xaf, 0xf5, 0x54, 0x0a, 0x80, - 0x6c, 0x6a, 0xbc, 0x26, 0x21, 0x03, 0x5f, 0x7e, 0x42, 0x80, 0xc7, 0xcd, 0x0e, 0xaf, 0x70, - 0xdb, 0x3e, 0x88, 0xd8, 0x4d, 0xa0, 0x95, 0xe0, 0xc1, 0xa4, 0xd0, 0xd6, 0x27, 0x28, 0xc2, - 0xf8, 0xa9, 0x39, 0xac, 0x27, 0x4f, 0xcd, 0xdc, 0x14, 0x42, 0xb9, 0x99, 0x3b, 0xd8, 0xb7, - 0xf1, 0xa9, 0x65, 0xb3, 0x1a, 0xf2, 0x06, 0x37, 0xc7, 0x89, 0xd9, 0x3a, 0xa5, 0xe0, 0x9f, - 0xa6, 0xee, 0xb4, 0xb5, 0x53, 0x93, 0xf6, 0x8c, 0xd9, 0xbc, 0x1a, 0x8c, 0x67, 0xf6, 0xd4, - 0x84, 0xb9, 0xc2, 0x13, 0x4a, 0x25, 0x47, 0x8e, 0x1f, 0xd2, 0x8e, 0x09, 0x60, 0xff, 0xcf, - 0x8e, 0x36, 0x49, 0x2e, 0x4b, 0x12, 0xf0, 0xc7, 0x87, 0xfb, 0x16, 0xe8, 0x0d, 0x7d, 0x0e, - 0x92, 0xab, 0x94, 0xa3, 0x4e, 0x53, 0xc1, 0xb1, 0xc0, 0xb6, 0x3d, 0xb5, 0x57, 0xe5, 0x4c, - 0x8e, 0x0c, 0x91, 0x90, 0x73, 0xff, 0x23, 0x66, 0xc8, 0x3a, 0x4c, 0xa9, 0xb0, 0x7b, 0x63, - 0x91, 0x72, 0xdc, 0x6d, 0xf0, 0xb6, 0x60, 0x2b, 0x3e, 0x89, 0x77, 0xec, 0x3b, 0xec, 0xf6, - 0xb7, 0x16, 0xc5, 0x5f, 0xcd, 0xba, 0xea, 0x99, 0x34, 0x94, 0xe5, 0x0b, 0x49, 0xa9, 0xdc, - 0x8e, 0x7c, 0x09, 0x11, 0x89, 0x42, 0x43, 0x2e, 0xa3, 0xc5, 0xa0, 0x36, 0xd4, 0x26, 0x79, - 0x28, 0xf2, 0x39, 0x30, 0x72, 0xdc, 0x37, 0x34, 0xdd, 0x84, 0x1e, 0x0c, 0x37, 0xcb, 0x2d, - 0x50, 0xfe, 0x2f, 0x75, 0xc5, 0xdc, 0x77, 0xff, 0x9e, 0x15, 0x40, 0xa5, 0x2b, 0x13, 0x69, - 0x67, 0x86, 0x23, 0x12, 0xde, 0x74, 0xaf, 0x70, 0x71, 0xd4, 0xf1, 0x7d, 0xe6, 0x77, 0x75, - 0xad, 0xf8, 0x7f, 0x1e, 0x54, 0x01, 0x61, 0xa4, 0xea, 0xef, 0x19, 0x1a, 0x93, 0xae, 0xf5, - 0xda, 0xa5, 0xff, 0x7d, 0x42, 0xe3, 0x6f, 0xcb, 0x31, 0xdd, 0x1e, 0xdd, 0x73, 0xba, 0x82, - 0x9b, 0x32, 0xa6, 0xd0, 0xee, 0x48, 0x87, 0x8b, 0xd6, 0xff, 0x3e, 0xf4, 0x72, 0xf4, 0x8e, - 0x9e, 0x8b, 0xc1, 0xf4, 0x79, 0xc3, 0x4f, 0x3d, 0x55, 0x09, 0x28, 0x8f, 0x31, 0x81, 0xa4, - 0x9a, 0x8f, 0x3d, 0x77, 0x71, 0xc5, 0xcd, 0x07, 0x65, 0x33, 0x92, 0x4d, 0xc6, 0x7b, 0x96, - 0xda, 0x72, 0x1e, 0xc8, 0xa1, 0x9a, 0x85, 0xf9, 0x03, 0xc2, 0xa2, 0xeb, 0xa2, 0x1c, 0x01, - 0x46, 0x52, 0x6d, 0xff, 0x8a, 0x8b, 0xe7, 0x78, 0x31, 0xf5, 0x58, 0xbe, 0x21, 0x4c, 0x43, - 0xef, 0xa2, 0x9e, 0xd6, 0xe9, 0xbe, 0x6a, 0x2d, 0x8e, 0x71, 0x2a, 0x74, 0x5b, 0xdc, 0xd0, - 0xf9, 0xbc, 0xe7, 0x0f, 0x99, 0x7d, 0xa5, 0x92, 0x8c, 0xee, 0x67, 0x75, 0x16, 0x41, 0x68, - 0xbb, 0x34, 0x3d, 0x26, 0x13, 0x82, 0x1b, 0x48, 0x14, 0xa1, 0x19, 0x8d, 0xf3, 0x2c, 0xda, - 0xb2, 0xda, 0x48, 0xc0, 0x18, 0x8d, 0xfe, 0xea, 0xce, 0xf9, 0x16, 0x47, 0x25, 0x29, 0x50, - 0x3d, 0x8a, 0x63, 0xc4, 0xb2, 0x09, 0x21, 0x33, 0xc3, 0x17, 0x70, 0xd7, 0x9a, 0xc9, 0x22, - 0x97, 0x64, 0x17, 0xba, 0x6a, 0x2d, 0x92, 0xb4, 0x10, 0x8c, 0xa7, 0xae, 0x49, 0x6e, 0x03, - 0x9a, 0x7e, 0xf3, 0x8d, 0xeb, 0x19, 0xd2, 0x2e, 0x11, 0x16, 0xe9, 0x2e, 0x9c, 0xdd, 0x0a, - 0x37, 0x1b, 0x27, 0x22, 0x6e, 0x6d, 0xcf, 0xb1, 0x4e, 0xf5, 0x85, 0x5a, 0xda, 0xf2, 0x94, - 0x9d, 0x1e, 0x76, 0x4c, 0x6f, 0x83, 0xbd, 0x7e, 0x42, 0x59, 0xdf, 0xcf, 0x4d, 0x18, 0x31, - 0xe2, 0xd9, 0xb8, 0x01, 0x45, 0x12, 0x8e, 0xbb, 0xcb, 0x02, 0x59, 0xe3, 0xca, 0xe8, 0xac, - 0x97, 0x32, 0x04, 0xfb, 0x2b, 0xbd, 0xc5, 0xe9, 0xd9, 0x67, 0xc6, 0xf7, 0xe5, 0xe4, 0xc6, - 0xf0, 0xc1, 0x39, 0xb4, 0xa0, 0x7a, 0xa6, 0xb6, 0x34, 0x30, 0xff, 0x51, 0x1c, 0x22, 0x3c, - 0x64, 0x93, 0x3f, 0x5f, 0xd8, 0xea, 0x36, 0x7d, 0x48, 0x29, 0xc6, 0x39, 0x38, 0xa2, 0xee, - 0x54, 0xb3, 0x46, 0x93, 0x83, 0x82, 0x4b, 0xab, 0x48, 0x07, 0xae, 0x29, 0x35, 0xf1, 0xdf, - 0xd8, 0xa2, 0x4a, 0xed, 0x7c, 0x70, 0xdf, 0x7d, 0xe3, 0xa6, 0x68, 0xeb, 0x7a, 0x49, 0xb1, - 0x31, 0x98, 0x80, 0xdd, 0xe2, 0xbb, 0xd9, 0x03, 0x1a, 0xe5, 0xd8, 0x2f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfd, 0xe0, 0x1c, 0x1c, 0xe7, 0x83, 0x2f, 0xe7, 0xad, 0xd3, 0xbc, 0x1f, 0xd8, - 0x85, 0x95, 0x8f, 0xc5, 0xfa, 0x16, 0x97, 0xa0, 0x33, 0x6a, 0x45, 0x04, 0xeb, 0xac, 0x5d, - 0x68, 0x32, 0x37, 0xa8, 0x51, 0x01, 0x83, 0xf2, 0x9c, 0x22, 0xde, 0xfb, 0x60, 0x7c, 0x48, - 0x81, 0x6c, 0x49, 0x70, 0x4d, 0x3c, 0xe3, 0x88, 0xea, 0x27, 0xbb, 0xc7, 0x76, 0x5a, 0x43, - 0x96, 0x1f, 0xba, 0x35, 0x4a, 0xf0, 0x95, 0xdc, 0x99, 0x84, 0xdd, 0x6b, 0x89, 0x2f, 0x22, - 0x32, 0x56, 0x34, 0x7a, 0x3a, 0x59, 0x08, 0x3a, 0xed, 0x6d, 0xe7, 0x0d, 0xd3, 0x27, 0xa9, - 0x5e, 0x0f, 0x3d, 0xd1, 0x53, 0x1d, 0x01, 0xf8, 0x74, 0x82, 0x9d, 0x80, 0x95, 0x24, 0x28, - 0x83, 0xe0, 0x60, 0x45, 0xc1, 0x18, 0x6a, 0xb0, 0x81, 0x24, 0xb5, 0xdd, 0x0b, 0x5e, 0xc8, - 0x6c, 0x6b, 0xdd, 0x12, 0xf5, 0x71, 0x3f, 0xb6, 0xce, 0x12, 0x5c, 0x02, 0x03, 0xd9, 0x19, - 0x1b, 0xc6, 0x3a, 0x1d, 0xe8, 0x97, 0x69, 0x8f, 0x59, 0x06, 0x0b, 0x12, 0x4c, 0xd8, 0x1b, - 0x8c, 0xea, 0x5e, 0x2a, 0x02, 0x65, 0x77, 0xeb, 0xae, 0x2e, 0xdf, 0x3e, 0x23, 0x82, 0x03, - 0xb6, 0x70, 0x33, 0x1c, 0x0c, 0xb3, 0x2a, 0x22, 0x9e, 0x26, 0x33, 0x05, 0x48, 0x4d, 0x7f, - 0x3e, 0xf8, 0x96, 0xc4, 0xe0, 0x3b, 0xad, 0x52, 0xbe, 0xe2, 0x25, 0x02, 0x96, 0x69, 0x8b, - 0x47, 0xbe, 0xa4, 0xf6, 0x03, 0x42, 0xa2, 0x3e, 0x0a, 0xb9, 0x08, 0xa3, 0xc0, 0x94, 0x54, - 0x3f, 0xbe, 0xff, 0x20, 0x74, 0x8c, 0x3e, 0x75, 0xb7, 0xcf, 0x97, 0x55, 0x81, 0x33, 0x88, - 0xd5, 0xd8, 0x87, 0x1f, 0x86, 0x2b, 0xd4, 0x44, 0xe3, 0x46, 0x9e, 0x9e, 0x72, 0x30, 0x23, - 0x21, 0xbf, 0x35, 0x11, 0x4d, 0xc6, 0xc8, 0x34, 0x1c, 0x83, 0x8f, 0x96, 0x2d, 0xeb, 0xbe, - 0xeb, 0xf9, 0x72, 0x7a, 0x13, 0x2e, 0xa1, 0xa0, 0x3a, 0x01, 0x41, 0xd6, 0x96, 0x5b, 0xf1, - 0x52, 0xfc, 0xaa, 0x6d, 0x18, 0xef, 0x7c, 0x24, 0xe3, 0x21, 0x03, 0xcb, 0xeb, 0xd9, 0xc1, - 0xc8, 0x7f, 0x06, 0x01, 0xda, 0x6e, 0x4f, 0x07, 0xaf, 0x42, 0x61, 0x5a, 0x0b, 0x2d, 0x41, - 0xae, 0xbf, 0xe0, 0x2e, 0x1c, 0x2f, 0xfa, 0xac, 0xed, 0x5c, 0x3d, 0x99, 0x6c, 0x8f, 0xea, - 0x94, 0x7a, 0xdf, 0x79, 0x75, 0xc4, 0xd6, 0x41, 0x9b, 0x20, 0xaa, 0x0c, 0x80, 0x4b, 0x86, - 0x75, 0x30, 0xbc, 0x1d, 0x1d, 0x61, 0x03, 0xee, 0x6a, 0x66, 0x74, 0x53, 0x0f, 0xed, 0x4b, - 0x4a, 0x12, 0x89, 0xd4, 0x37, 0x69, 0x02, 0xfc, 0x5e, 0xd3, 0x33, 0x92, 0x11, 0x1c, 0x32, - 0x3f, 0x6e, 0x73, 0xa0, 0x7b, 0xa0, 0x4c, 0x69, 0xf8, 0xe4, 0x21, 0x4b, 0xe8, 0x07, 0x4e, - 0x76, 0x12, 0x4e, 0x84, 0x99, 0x0d, 0x53, 0x09, 0x1a, 0x4b, 0x95, 0xa9, 0xd4, 0x82, 0xa0, - 0xb2, 0x44, 0x7d, 0x91, 0x12, 0x55, 0xbb, 0x3f, 0x31, 0x2c, 0x70, 0x61, 0x51, 0xd8, 0xa8, - 0x7d, 0x28, 0x4a, 0xaa, 0x0e, 0x4e, 0x24, 0xc0, 0x59, 0xc0, 0x7f, 0x49, 0x52, 0xd3, 0xfb, - 0x03, 0x08, 0xac, 0xbb, 0xe1, 0x51, 0x38, 0x42, 0xcf, 0x78, 0x81, 0x15, 0x90, 0x80, 0xf1, - 0x0b, 0xd0, 0xf1, 0x69, 0x16, 0x9d, 0x0c, 0x0c, 0x12, 0x67, 0x70, 0xa9, 0xb7, 0x98, 0x5f, - 0x0a, 0xed, 0x26, 0x2b, 0xa2, 0x74, 0x9b, 0x2c, 0x9a, 0x23, 0x7f, 0xaf, 0xef, 0xda, 0xac, - 0x68, 0xb8, 0x75, 0x6c, 0x2a, 0x62, 0x8f, 0x5b, 0xf2, 0xb7, 0xbd, 0xd8, 0x04, 0xd2, 0x3e, - 0x2a, 0x8b, 0x9e, 0xb7, 0x0d, 0xd3, 0x85, 0x86, 0xc8, 0x42, 0xd7, 0xa0, 0xe3, 0xc7, 0x1d, - 0xcb, 0xe5, 0xe6, 0x51, 0x34, 0x33, 0x75, 0xad, 0xde, 0x02, 0xe5, 0x50, 0x11, 0x07, 0x33, - 0x95, 0x38, 0xb0, 0xe2, 0xdc, 0x45, 0xa9, 0xcb, 0x2e, 0xb8, 0x83, 0x1a, 0xd7, 0x7b, 0xb6, - 0x1d, 0x03, 0x59, 0xad, 0x4c, 0x1a, 0x2d, 0xc3, 0x1b, 0x29, 0xa8, 0x50, 0xa3, 0x1d, 0x7e, - 0x72, 0xd0, 0x0b, 0x97, 0x8d, 0xe4, 0xb5, 0x70, 0xa9, 0xa4, 0xe4, 0xa4, 0x03, 0x15, 0x6c, - 0xdf, 0x35, 0x11, 0x54, 0x97, 0x59, 0x75, 0xd4, 0x24, 0xbd, 0x99, 0x33, 0x41, 0x50, 0x81, - 0xcd, 0xca, 0x5e, 0xeb, 0x41, 0x1c, 0x4a, 0x72, 0x3b, 0x6a, 0x2d, 0x19, 0xab, 0x96, 0xd3, - 0xa9, 0xff, 0x27, 0x3d, 0x5e, 0x92, 0x3d, 0x15, 0x84, 0x25, 0x31, 0x9c, 0xce, 0x5c, 0x63, - 0xc6, 0xee, 0x3a, 0xdb, 0xc5, 0xb3, 0x6e, 0x05, 0x59, 0x74, 0x72, 0x66, 0x9d, 0x4b, 0xb4, - 0x8a, 0x29, 0x22, 0x71, 0xa1, 0x0a, 0x85, 0xff, 0x72, 0x74, 0xa7, 0x4e, 0x5a, 0x96, 0xe2, - 0x23, 0xd0, 0x70, 0x5c, 0x08, 0xda, 0x72, 0x04, 0x25, 0xe9, 0x8e, 0xf2, 0x70, 0xf9, 0x07, - 0xa2, 0x00, 0x85, 0xba, 0xbb, 0x3f, 0x64, 0x2b, 0xf6, 0x7d, 0xd8, 0xeb, 0x3f, 0xda, 0x67, - 0x59, 0x2b, 0x6d, 0xee, 0x43, 0x60, 0x89, 0x5e, 0x22, 0x71, 0x37, 0x83, 0x89, 0x9e, 0xc9, - 0xfe, 0x37, 0xf8, 0x61, 0xe7, 0x3c, 0xd5, 0x26, 0x1a, 0x0b, 0xe0, 0x4a, 0xf4, 0x40, 0xb5, - 0xf3, 0x5f, 0xce, 0xfd, 0x34, 0x5b, 0xba, 0x49, 0xa0, 0x2f, 0x7e, 0x75, 0x4b, 0xd5, 0x27, - 0x6e, 0x34, 0x3a, 0x8f, 0x1f, 0x08, 0x1f, 0x7e, 0x90, 0x42, 0x95, 0xa1, 0x2f, 0x57, 0xd8, - 0xb0, 0x92, 0x7b, 0xe3, 0x22, 0xb3, 0x53, 0x68, 0xc4, 0x63, 0x52, 0x54, 0x15, 0xe5, 0xfc, - 0x01, 0xe4, 0x3c, 0x70, 0x64, 0x33, 0x12, 0x58, 0xef, 0x89, 0x5a, 0x5f, 0x0f, 0x23, 0xbd, - 0xc7, 0xb2, 0x09, 0x5c, 0x2d, 0x27, 0x01, 0x1b, 0xf1, 0x7d, 0xbe, 0x37, 0xec, 0xa6, 0x6d, - 0x44, 0xef, 0x56, 0x5a, 0xb7, 0xcf, 0x92, 0x80, 0xa6, 0x46, 0x51, 0xa3, 0x96, 0x35, 0xb0, - 0x42, 0xac, 0x1b, 0x74, 0xbb, 0xbf, 0xcf, 0x79, 0x2e, 0x92, 0xca, 0xda, 0xba, 0x08, 0x67, - 0x7a, 0x83, 0x6f, 0x10, 0xbb, 0x0d, 0x1a, 0xcb, 0xf1, 0x31, 0x8c, 0x7b, 0x39, 0xdf, 0xed, - 0x8b, 0x7c, 0xa0, 0xd6, 0x4a, 0x24, 0xca, 0x09, 0xd7, 0x17, 0xdc, 0x61, 0x8e, 0x03, 0x68, - 0x18, 0xea, 0x11, 0xc7, 0x43, 0xaa, 0x6e, 0x6a, 0x2f, 0xbb, 0xdd, 0x0c, 0x42, 0xf7, 0xc5, - 0x91, 0x22, 0x39, 0x2b, 0xb9, 0x05, 0x15, 0xb4, 0x25, 0xb6, 0x2c, 0xcc, 0x85, 0xb3, 0x11, - 0xd8, 0x80, 0xcf, 0x24, 0xe6, 0x21, 0xf1, 0x00, 0xcd, 0xb8, 0x55, 0x2c, 0x4e, 0x02, 0x36, - 0x05, 0x83, 0x67, 0x6a, 0xe3, 0x3c, 0xd3, 0x14, 0xbf, 0x49, 0xa5, 0xb6, 0x97, 0x9e, 0x6a, - 0x7f, 0xc3, 0x79, 0x75, 0x9b, 0xf1, 0xdc, 0x9a, 0xc5, 0x1b, 0x62, 0xc8, 0xb1, 0x85, 0x1b, - 0x87, 0xa5, 0x8a, 0xc9, 0xfd, 0x2a, 0x9f, 0x30, 0xa6, 0x1e, 0x7d, 0x96, 0x54, 0x6c, 0xe5, - 0x3f, 0x84, 0x76, 0xb5, 0x75, 0x77, 0x7a, 0x53, 0x34, 0x84, 0x77, 0x7f, 0xa4, 0xad, 0x9d, - 0x92, 0x1a, 0xa5, 0x89, 0xf4, 0xd8, 0x80, 0xde, 0x9c, 0x28, 0xc9, 0x3c, 0x26, 0xe6, 0xd4, - 0x28, 0x4a, 0x3c, 0xe6, 0x4d, 0xdd, 0x45, 0x44, 0x90, 0xf7, 0x3c, 0x9d, 0xb8, 0xf4, 0xf1, - 0xf4, 0x9e, 0x9c, 0xc9, 0x39, 0x40, 0x5d, 0x63, 0x5f, 0x6b, 0xa3, 0xbe, 0x25, 0x11, 0xc2, - 0xc1, 0x46, 0x2d, 0x65, 0x90, 0x5d, 0x8f, 0x2f, 0x40, 0xfb, 0x82, 0xd1, 0x12, 0x14, 0x1f, - 0xd9, 0x59, 0x1b, 0xf8, 0x8e, 0xc9, 0x8f, 0x82, 0xae, 0xe3, 0xe7, 0xd0, 0xa8, 0xc0, 0x15, - 0x6b, 0xba, 0xd0, 0x6f, 0xd3, 0xee, 0xab, 0x3d, 0xa0, 0x41, 0xba, 0x47, 0xc5, 0x72, 0xb3, - 0xbe, 0x65, 0xba, 0xe5, 0x32, 0x89, 0x3a, 0xe1, 0xb6, 0x9d, 0x3e, 0x37, 0xa0, 0x55, 0xc0, - 0x2e, 0x99, 0x4e, 0x84, 0x29, 0xab, 0xa5, 0xdd, 0x5b, 0x45, 0x53, 0x35, 0x14, 0x4c, 0x63, - 0xd6, 0xeb, 0xc6, 0x17, 0x14, 0x23, 0xf2, 0xdd, 0x8a, 0xc6, 0x00, 0xe6, 0x48, 0xd3, 0x45, - 0x12, 0x92, 0x9d, 0x7f, 0xb6, 0x6b, 0x5f, 0xdb, 0x19, 0xf0, 0x04, 0xc7, 0xe7, 0x5e, 0x5e, - 0x1d, 0x5e, 0x7a, 0xf2, 0x9a, 0x5a, 0xcc, 0x9b, 0x87, 0xc8, 0x56, 0x3c, 0x97, 0xb1, 0xc4, - 0xcf, 0xc8, 0x48, 0x67, 0x6b, 0x1a, 0x38, 0xac, 0x76, 0xef, 0x4a, 0xb4, 0x41, 0xf9, 0x23, - 0x53, 0x25, 0xdc, 0x14, 0x16, 0x91, 0x1b, 0xf0, 0x7e, 0xd7, 0xc5, 0x98, 0xf6, 0xfc, 0x1c, - 0x16, 0xb7, 0xd4, 0xa9, 0x24, 0x89, 0xb5, 0x82, 0x1f, 0x71, 0x51, 0xa1, 0x1c, 0xe2, 0xdf, - 0xe0, 0x4d, 0x95, 0xd6, 0x61, 0xa5, 0xcf, 0x28, 0x4b, 0x4b, 0xbf, 0x83, 0xba, 0xee, 0x51, - 0x65, 0xa3, 0xce, 0xba, 0x10, 0x3d, 0x36, 0xd1, 0x5f, 0xc1, 0xa9, 0x73, 0x92, 0x29, 0xe2, - 0x17, 0x89, 0x21, 0x05, 0x81, 0xf9, 0x20, 0x63, 0x23, 0xcf, 0x03, 0x52, 0x6e, 0x2a, 0xa3, - 0x8f, 0x61, 0x4b, 0xb5, 0x98, 0x53, 0x12, 0x8d, 0xd6, 0x88, 0xb7, 0x11, 0xaf, 0xaf, 0x15, - 0x98, 0x6e, 0x89, 0xca, 0xc8, 0xb4, 0xb9, 0x3b, 0x1e, 0xe2, 0x4d, 0x55, 0xbc, 0x40, 0x74, - 0x3a, 0x47, 0x83, 0x74, 0x6c, 0xaf, 0x4f, 0x5b, 0xca, 0xd2, 0x00, 0x36, 0x37, 0x85, 0xc7, - 0x54, 0xd6, 0xaf, 0x2d, 0xd5, 0xd5, 0x19, 0xa4, 0x15, 0x12, 0x23, 0x14, 0x8e, 0x4f, 0x5c, - 0x89, 0x70, 0x3d, 0xfd, 0x20, 0x9d, 0x8a, 0x38, 0xb5, 0xbc, 0x55, 0xc5, 0xf1, 0xf6, 0x44, - 0xe6, 0xe0, 0x71, 0xbd, 0xd8, 0xf6, 0x59, 0x71, 0x41, 0xc3, 0x75, 0x30, 0xb7, 0xef, 0x9e, - 0x51, 0x3c, 0x49, 0xf9, 0xb7, 0xb0, 0xe0, 0xc7, 0x43, 0x83, 0x09, 0x31, 0xae, 0x29, 0x58, - 0xc7, 0x3b, 0x14, 0xab, 0x1f, 0x35, 0xe2, 0x61, 0x82, 0x98, 0xdb, 0x2c, 0x43, 0x7c, 0x95, - 0xd6, 0xd4, 0xb1, 0x3c, 0x41, 0xb4, 0xbd, 0xb5, 0x1f, 0x13, 0xc1, 0x81, 0x37, 0x62, 0xe2, - 0x13, 0xe1, 0x86, 0x55, 0x38, 0x2d, 0x67, 0x0f, 0x55, 0xd9, 0x7b, 0x2e, 0xd8, 0x3c, 0x69, - 0x54, 0x88, 0xef, 0xe5, 0x83, 0x1e, 0xc8, 0x26, 0x56, 0xc6, 0xd4, 0x2b, 0xaa, 0x15, 0x43, - 0x88, 0xd4, 0xe2, 0x12, 0xfb, 0x5c, 0x98, 0x0b, 0x87, 0x47, 0x6e, 0x62, 0xf4, 0xd8, 0xe8, - 0x43, 0x02, 0xf2, 0x3c, 0x54, 0xb9, 0x5b, 0x7b, 0x1b, 0x74, 0xe0, 0xe4, 0x42, 0x19, 0xda, - 0xbb, 0x8e, 0x8b, 0x4d, 0x48, 0x30, 0xa7, 0x49, 0x4b, 0x62, 0x7e, 0x1f, 0x6e, 0x62, 0xa6, - 0x34, 0xb8, 0x6d, 0xc8, 0x21, 0xdb, 0xae, 0xf4, 0xe3, 0xe3, 0xb5, 0x3e, 0x69, 0xad, 0x67, - 0x0f, 0x15, 0x88, 0xf2, 0xae, 0xbd, 0xb7, 0x02, 0x82, 0x80, 0x98, 0x50, 0x80, 0x60, 0xb5, - 0x3c, 0xca, 0x72, 0xfa, 0x8c, 0x92, 0x88, 0x1a, 0x20, 0xa8, 0x52, 0xeb, 0x13, 0x15, 0xc2, - 0x43, 0x9e, 0xc8, 0x9f, 0xa1, 0x83, 0xe6, 0x7a, 0x81, 0xc6, 0x59, 0x0d, 0xd5, 0x1a, 0x74, - 0x35, 0x53, 0xfa, 0x48, 0xfa, 0x9f, 0x10, 0x49, 0x5c, 0x62, 0x49, 0xc7, 0xbb, 0xc5, 0x1e, - 0xd0, 0x8e, 0x70, 0x3c, 0xe7, 0x10, 0x3e, 0x28, 0xb1, 0x2a, 0x26, 0x3f, 0xbe, 0x66, 0x46, - 0x6a, 0xd6, 0x6c, 0x11, 0xbd, 0x9c, 0x66, 0xc2, 0x74, 0x94, 0xb9, 0x81, 0x5e, 0x16, 0x00, - 0xbc, 0xb2, 0xe4, 0x24, 0x8a, 0x51, 0x4a, 0x42, 0x1b, 0xd0, 0xb0, 0x36, 0x3d, 0x88, 0x88, - 0xad, 0x8c, 0x9c, 0x36, 0x05, 0xb0, 0x05, 0xa5, 0x1e, 0x77, 0xaf, 0x8a, 0x3a, 0xe4, 0x00, - 0x9f, 0x34, 0xa2, 0x4e, 0xe2, 0x42, 0xa6, 0x0c, 0xf5, 0xc0, 0xb2, 0x86, 0x0c, 0x71, 0x5c, - 0xc5, 0x63, 0x37, 0xfe, 0x99, 0x83, 0xa8, 0x93, 0xbe, 0x43, 0xfe, 0x75, 0xc8, 0x79, 0x97, - 0xd6, 0xef, 0xf3, 0xe8, 0x7c, 0xa3, 0x49, 0x23, 0xfb, 0x39, 0x99, 0x3d, 0xbf, 0xdd, 0xca, - 0x1d, 0x98, 0x61, 0xb9, 0x31, 0x4b, 0xf4, 0x20, 0xdf, 0xef, 0x04, 0xb0, 0xed, 0xd9, 0xfc, - 0x9a, 0x5b, 0x6d, 0x7e, 0xce, 0xdb, 0xb7, 0xd6, 0x69, 0xa5, 0xcd, 0xb5, 0x04, 0x5f, 0x9a, - 0x72, 0x17, 0xf8, 0x3c, 0x62, 0xe3, 0xea, 0xab, 0x4f, 0xca, 0xeb, 0x34, 0x70, 0x62, 0xb0, - 0x28, 0x57, 0xe7, 0xc0, 0x73, 0xee, 0xe8, 0x27, 0xe0, 0xf1, 0xa9, 0xc3, 0x7f, 0x4f, 0xc3, - 0xa9, 0x14, 0xb2, 0xf5, 0x83, 0xf5, 0x63, 0x2a, 0x2f, 0xb9, 0x74, 0xaa, 0x64, 0xf0, 0x82, - 0x45, 0xc7, 0x06, 0xad, 0x94, 0xe2, 0x9f, 0x7b, 0x8d, 0x1b, 0x8b, 0x5a, 0x42, 0x3b, 0xc3, - 0xb5, 0xb4, 0xdd, 0x91, 0x06, 0xd1, 0xfa, 0x78, 0x7a, 0x9d, 0x5d, 0x6f, 0x64, 0xf3, 0x27, - 0x3f, 0x37, 0x58, 0x60, 0x0f, 0xf3, 0x9b, 0x6f, 0xf0, 0x69, 0x0d, 0x7f, 0x4d, 0xde, 0x70, - 0x1a, 0xa0, 0x4e, 0x66, 0x4c, 0x9c, 0x3f, 0x62, 0x26, 0x22, 0x73, 0x67, 0x04, 0xa5, 0x23, - 0xf7, 0x8b, 0xcf, 0xad, 0x7e, 0x88, 0x2c, 0xec, 0x28, 0x18, 0x3b, 0xf1, 0x53, 0x16, 0x37, - 0x0d, 0xbd, 0x4f, 0x31, 0x64, 0xbd, 0xb1, 0x22, 0x4f, 0x49, 0xa2, 0x71, 0x21, 0xe5, 0x7f, - 0x7c, 0xbb, 0x7f, 0x8a, 0x28, 0x65, 0x0f, 0xd2, 0x58, 0x9c, 0xd1, 0x09, 0xac, 0x10, 0x40, - 0x19, 0x4c, 0x44, 0xbc, 0xb8, 0x47, 0x9d, 0x65, 0x58, 0x00, 0xca, 0xc9, 0xfe, 0x82, 0x71, - 0x7e, 0x94, 0x96, 0xbf, 0x32, 0xe8, 0xd3, 0xe3, 0xa4, 0xb5, 0xfa, 0x78, 0x26, 0xf4, 0xcc, - 0x86, 0x87, 0x8f, 0xd4, 0xef, 0x98, 0x57, 0x64, 0x0c, 0x59, 0xb6, 0x0b, 0xa7, 0x27, 0x6a, - 0xf3, 0xe4, 0x49, 0x67, 0x9f, 0xa7, 0x89, 0x39, 0xdc, 0x59, 0x0c, 0x1f, 0xc3, 0x92, 0xb8, - 0x54, 0xc7, 0xe8, 0xc4, 0x52, 0x81, 0x08, 0xbd, 0xa4, 0xe4, 0xa0, 0xc1, 0x4d, 0x27, 0xad, - 0xff, 0x03, 0xc0, 0x42, 0x9b, 0xda, 0xbb, 0xe2, 0xdf, 0x42, 0x49, 0x31, 0x1d, 0x5f, 0x7a, - 0x7e, 0xc3, 0x5f, 0x02, 0x3b, 0x16, 0x6f, 0x7d, 0xe5, 0xa1, 0xa5, 0x21, 0x61, 0x5d, 0xb0, - 0x37, 0x6c, 0xc1, 0x23, 0x7e, 0xc9, 0x02, 0xa4, 0xf7, 0x66, 0x24, 0xa8, 0xa5, 0xc6, 0x5a, - 0x29, 0x3d, 0x4e, 0xf3, 0x34, 0x44, 0x29, 0xaa, 0xdb, 0x48, 0x26, 0x33, 0xbc, 0xcd, 0xcb, - 0xe1, 0x16, 0x0d, 0xcd, 0x09, 0x8b, 0x71, 0xde, 0xb8, 0x41, 0x53, 0x06, 0x80, 0x83, 0xcc, - 0x69, 0x76, 0xcb, 0x9f, 0xdb, 0x46, 0xdb, 0xe2, 0x26, 0xfa, 0x58, 0x79, 0x70, 0xfd, 0xb4, - 0xfb, 0x14, 0xb0, 0x77, 0x20, 0xde, 0x20, 0xca, 0xe8, 0x00, 0x01, 0x4c, 0x66, 0xda, 0x83, - 0x35, 0x30, 0xb8, 0x4d, 0x7f, 0x5f, 0x19, 0x77, 0xf7, 0x48, 0x13, 0x50, 0x77, 0x15, 0xdd, - 0xa0, 0x07, 0x1e, 0x84, 0x5f, 0x9c, 0x29, 0x1f, 0xcc, 0x4f, 0xa4, 0x51, 0x3b, 0x24, 0xaf, - 0x47, 0x00, 0x0d, 0x23, 0x0d, 0x72, 0xee, 0x0a, 0x42, 0xc0, 0xa3, 0x56, 0xc1, 0xf9, 0x6f, - 0xca, 0x44, 0xb3, 0x13, 0x39, 0x6c, 0x97, 0x4b, 0x08, 0x49, 0xaa, 0x95, 0xd0, 0x06, 0x25, - 0x62, 0xd0, 0xfb, 0xb3, 0x1d, 0x47, 0xaf, 0x78, 0xe4, 0xe8, 0x57, 0xcd, 0xbb, 0x43, 0xf2, - 0x01, 0x4e, 0xba, 0xa8, 0xcf, 0x79, 0x60, 0x67, 0x86, 0x3b, 0x04, 0x44, 0xbf, 0x7a, 0x3a, - 0x20, 0x78, 0x16, 0xc5, 0xeb, 0x8d, 0xac, 0x79, 0x2d, 0x15, 0xa0, 0x1f, 0x7c, 0xe0, 0xbd, - 0x48, 0xa5, 0xa3, 0x68, 0x7c, 0xbd, 0x8b, 0xed, 0xd3, 0x64, 0xd1, 0x76, 0x10, 0x65, 0x61, - 0x49, 0x3b, 0xb8, 0xe8, 0x3f, 0x63, 0xbc, 0x67, 0xfd, 0x07, 0xf8, 0xb1, 0x1f, 0xcf, 0x3b, - 0xf9, 0x9b, 0x2a, 0x1d, 0xaa, 0xc1, 0xa0, 0x01, 0xee, 0x09, 0xd6, 0xf8, 0xd3, 0x97, 0x3c, - 0x62, 0x3b, 0x88, 0x38, 0x98, 0x8b, 0x4f, 0xaa, 0xa1, 0xd9, 0x15, 0x12, 0x33, 0xff, 0x1c, - 0xb8, 0x9e, 0x94, 0x7c, 0xcf, 0x32, 0x2d, 0x59, 0xb0, 0x01, 0x1f, 0xbc, 0x1b, 0xf6, 0x6f, - 0x5a, 0x28, 0x67, 0xc0, 0xa3, 0x53, 0x85, 0xd5, 0x54, 0x63, 0xcb, 0x7f, 0xd0, 0x1d, 0xb5, - 0x93, 0x2b, 0x9a, 0x16, 0x3e, 0xe6, 0xcc, 0x11, 0xef, 0x0d, 0x19, 0xe0, 0x9e, 0x2d, 0xde, - 0x42, 0x45, 0x57, 0x1f, 0xa0, 0x1b, 0x86, 0x24, 0x92, 0x6e, 0x27, 0xa9, 0xba, 0xe5, 0x27, - 0xa2, 0x7d, 0xbf, 0xa1, 0xfe, 0xc4, 0xc5, 0x68, 0x7a, 0x61, 0x93, 0xa5, 0x33, 0x64, 0x69, - 0xff, 0x40, 0xfe, 0x03, 0xeb, 0x03, 0x38, 0x88, 0x9d, 0xad, 0xd8, 0x6d, 0x84, 0xa6, 0x38, - 0x1b, 0x2f, 0x65, 0xcd, 0xb3, 0xb6, 0x88, 0x0e, 0xe6, 0x7d, 0xe0, 0x85, 0x72, 0xd6, 0xfa, - 0xe5, 0xc5, 0xdf, 0x6b, 0x2e, 0xc4, 0xe1, 0x21, 0x6a, 0x59, 0x99, 0xcb, 0x3c, 0x2b, 0xbd, - 0xff, 0xac, 0xb1, 0x57, 0xd1, 0xe9, 0x40, 0x61, 0xb4, 0xeb, 0x98, 0x5d, 0x15, 0x3b, 0x88, - 0x40, 0xc5, 0x37, 0x46, 0x3e, 0x8a, 0x15, 0xe5, 0x53, 0x32, 0x15, 0x52, 0x2f, 0x1d, 0x4a, - 0xb7, 0x4f, 0x09, 0xa2, 0x1b, 0x1e, 0x9c, 0x85, 0x16, 0x88, 0xc2, 0x13, 0x1f, 0x7d, 0xa8, - 0x4c, 0x95, 0xf3, 0x90, 0xee, 0xba, 0xe3, 0x5d, 0xbd, 0xfe, 0x1e, 0x28, 0xd5, 0xd0, 0x75, - 0x5d, 0x41, 0x97, 0x07, 0x31, 0x7e, 0xa4, 0x5d, 0x75, 0xe8, 0x8c, 0x40, 0xd5, 0xdf, 0x34, - 0x31, 0x6f, 0xcc, 0x7f, 0x59, 0xde, 0x8a, 0xf8, 0x2e, 0x1c, 0xb0, 0xba, 0x3e, 0x10, 0xff, - 0x17, 0x75, 0xb8, 0xd6, 0xf6, 0xba, 0x21, 0x41, 0xa1, 0xf8, 0x3b, 0x21, 0xb5, 0x77, 0xaf, - 0xea, 0x55, 0x4f, 0x70, 0x9f, 0xb4, 0xc3, 0x73, 0xf6, 0xdb, 0xc6, 0x6a, 0x4e, 0x97, 0xc3, - 0x1a, 0x50, 0x01, 0x29, 0x68, 0x4d, 0x73, 0x15, 0x87, 0x46, 0x33, 0x45, 0x3e, 0x7a, 0xc8, - 0xc1, 0x0f, 0x63, 0xae, 0x47, 0x08, 0xb2, 0x83, 0x61, 0xc7, 0x72, 0x72, 0x5a, 0x11, 0x0f, - 0xd3, 0xe6, 0x26, 0xb0, 0x20, 0xd8, 0xb5, 0xb3, 0x82, 0x0f, 0xaf, 0x67, 0xe0, 0x2e, 0x3f, - 0xeb, 0x9d, 0x13, 0xba, 0x99, 0xf4, 0x0b, 0x6a, 0xe8, 0x34, 0xce, 0x75, 0x88, 0x1c, 0x44, - 0xd8, 0x12, 0x4f, 0x3f, 0x23, 0x4c, 0xd0, 0x03, 0xd5, 0xcd, 0xda, 0x11, 0x6a, 0x21, 0x8c, - 0x3d, 0xfd, 0x10, 0x19, 0x69, 0x0b, 0x31, 0xec, 0x25, 0x46, 0xb0, 0xbe, 0x26, 0x60, 0xae, - 0xea, 0x3b, 0x11, 0xd3, 0x75, 0xcc, 0x19, 0xca, 0x2c, 0x57, 0xfb, 0x3c, 0xa8, 0x17, 0xa5, - 0x3d, 0xd3, 0x35, 0x7c, 0xd5, 0xf0, 0xb7, 0x2c, 0x3a, 0x06, 0xdf, 0xfe, 0xe3, 0x2e, 0xe6, - 0x13, 0xeb, 0x53, 0xa0, 0xf6, 0x79, 0x66, 0x21, 0x08, 0xf4, 0x20, 0x02, 0xea, 0x24, 0xbf, - 0x40, 0xc2, 0xdb, 0x02, 0x6d, 0xc5, 0x95, 0x71, 0x0d, 0x23, 0xbd, 0x9e, 0xf5, 0x71, 0xdd, - 0x37, 0x13, 0x49, 0x55, 0x08, 0x3c, 0x25, 0xab, 0x96, 0x8d, 0x23, 0xba, 0xe8, 0x1d, 0x22, - 0xc3, 0xa1, 0x6f, 0x10, 0xf3, 0xd7, 0x5c, 0xfd, 0x7e, 0xac, 0x83, 0x37, 0x22, 0x6d, 0xda, - 0x95, 0x54, 0x09, 0x3d, 0xb1, 0xc6, 0x02, 0x61, 0x93, 0x1c, 0x27, 0x8b, 0x11, 0x84, 0x67, - 0x96, 0xd5, 0x6a, 0x47, 0x7f, 0x45, 0x4e, 0xe0, 0x40, 0x53, 0x26, 0x87, 0x09, 0xb9, 0x35, - 0xb1, 0x98, 0xff, 0xa0, 0x96, 0xdc, 0xe5, 0xc9, 0xd3, 0xbb, 0x1b, 0xbb, 0xd8, 0xfc, 0x19, - 0xa3, 0x8d, 0x52, 0x96, 0x03, 0x88, 0x1a, 0x9d, 0x44, 0x9f, 0x52, 0x26, 0x50, 0xae, 0xfa, - 0x9e, 0x05, 0x30, 0xd9, 0x2f, 0x27, 0x12, 0xc6, 0x12, 0x2b, 0xc8, 0x74, 0x58, 0x7f, 0xc8, - 0x0c, 0x29, 0xbe, 0xee, 0xe0, 0xc2, 0xf5, 0x32, 0x60, 0x7c, 0xc6, 0x3a, 0xa8, 0xa9, 0x14, - 0x13, 0xbb, 0xc3, 0x51, 0xa2, 0xa3, 0x55, 0xb4, 0x0b, 0x3f, 0xad, 0x78, 0x71, 0x97, 0x6b, - 0x6a, 0x46, 0x49, 0x1c, 0xa9, 0x46, 0x07, 0xf2, 0x7b, 0x20, 0x18, 0xaf, 0x66, 0xa8, 0xd6, - 0xe4, 0x29, 0xb8, 0x95, 0x5a, 0x68, 0xe1, 0x0f, 0x35, 0x85, 0x66, 0x6b, 0x40, 0x00, 0x52, - 0x48, 0xf3, 0x9f, 0xa2, 0x74, 0x02, 0x0d, 0x57, 0xf7, 0x6a, 0xf5, 0x2e, 0x86, 0x0f, 0x60, - 0x04, 0xf2, 0x0b, 0x33, 0x17, 0x4e, 0x16, 0xb1, 0x84, 0xd3, 0x9f, 0x90, 0xad, 0x5c, 0x56, - 0x3d, 0xa4, 0x4b, 0xe6, 0xa5, 0x26, 0xde, 0x1b, 0x25, 0x8a, 0x20, 0x64, 0x9f, 0xe5, 0xb0, - 0x84, 0xb5, 0x46, 0x41, 0x73, 0x85, 0xed, 0xe6, 0xef, 0x19, 0xab, 0x67, 0x70, 0xdd, 0x56, - 0x58, 0x3d, 0x2f, 0x3d, 0x36, 0x90, 0x1a, 0xab, 0x37, 0x1a, 0x34, 0x1c, 0x1f, 0xbf, 0x11, - 0x92, 0x99, 0x50, 0x84, 0x5b, 0x05, 0xb8, 0x33, 0xda, 0xbf, 0xf5, 0x60, 0x8b, 0x2b, 0x03, - 0x46, 0xd8, 0xf4, 0x1f, 0xfb, 0x24, 0xb2, 0xbe, 0x31, 0x87, 0xcd, 0x2c, 0xa8, 0x6d, 0x06, - 0xe8, 0xad, 0xae, 0xdd, 0x3f, 0x3e, 0x9c, 0xa9, 0xf6, 0xe1, 0xcb, 0xb8, 0x5b, 0xf6, 0xc3, - 0x4e, 0xb3, 0xdc, 0xdd, 0x99, 0x31, 0xed, 0xf2, 0x31, 0x2e, 0x43, 0x48, 0x48, 0x1d, 0x3b, - 0xa4, 0x8a, 0x33, 0xee, 0x57, 0xa3, 0x14, 0xc7, 0x71, 0x96, 0xfd, 0x28, 0xb6, 0x35, 0x46, - 0x96, 0x3d, 0xa0, 0xc3, 0xed, 0xb7, 0x42, 0x93, 0x4e, 0x33, 0xda, 0xed, 0x72, 0xcb, 0xd8, - 0x0b, 0x1f, 0xf3, 0x3a, 0x71, 0x6e, 0x22, 0xfc, 0xff, 0x53, 0xb9, 0x3b, 0x87, 0x91, 0x23, - 0x8a, 0x92, 0xf6, 0x20, 0x70, 0xa6, 0xc8, 0xf7, 0x4d, 0x3c, 0x16, 0x11, 0x6c, 0x1f, 0x97, - 0x43, 0xbf, 0x10, 0x0e, 0x0f, 0xe3, 0xe1, 0xdf, 0xd5, 0x12, 0xe6, 0x0f, 0xb0, 0x75, 0xf1, - 0x93, 0xb3, 0xd1, 0x00, 0xf8, 0x32, 0x7a, 0x8b, 0x70, 0x11, 0xb1, 0xa1, 0x2c, 0x51, 0x9e, - 0xc9, 0x02, 0xd7, 0x18, 0x3a, 0x09, 0x95, 0x8a, 0xdb, 0xb4, 0x91, 0xa9, 0xe9, 0xde, 0x00, - 0x70, 0xfc, 0x68, 0x5b, 0x39, 0x63, 0xf1, 0x61, 0x71, 0x12, 0xaa, 0x4e, 0xdd, 0x1a, 0x4b, - 0xd3, 0x5b, 0xb4, 0x59, 0xad, 0x12, 0x1e, 0x34, 0x85, 0x12, 0x30, 0xf7, 0x89, 0x13, 0xc5, - 0x9a, 0xc8, 0xd7, 0x66, 0xb8, 0x4a, 0xb5, 0x10, 0xf6, 0x57, 0x25, 0x7a, 0x10, 0x9d, 0xe2, - 0x29, 0xdd, 0xb3, 0x0b, 0x3d, 0xb0, 0x25, 0xf6, 0x20, 0x60, 0x4d, 0xf2, 0x50, 0x74, 0x1b, - 0x4e, 0xb7, 0x57, 0xf6, 0xa0, 0xb6, 0xd2, 0xa0, 0xba, 0x2c, 0xee, 0x7a, 0xc1, 0x04, 0x68, - 0x00, 0xea, 0xe0, 0x51, 0x92, 0x43, 0x38, 0x0c, 0x40, 0x4a, 0x13, 0x37, 0x66, 0xb6, 0x85, - 0x99, 0x72, 0x36, 0xbf, 0xc7, 0x3e, 0x33, 0x17, 0xe2, 0xda, 0x32, 0xc9, 0xf4, 0x49, 0xae, - 0xce, 0xbb, 0xd0, 0x2c, 0x28, 0xc5, 0xe6, 0x22, 0x26, 0xae, 0xec, 0x14, 0x0e, 0x4c, 0x38, - 0xda, 0xbc, 0x0c, 0x6a, 0xe4, 0xd6, 0xfb, 0xd5, 0xae, 0xda, 0xb7, 0xab, 0xe0, 0xd2, 0xb0, - 0xb0, 0xc7, 0x53, 0x33, 0x67, 0xdb, 0x3a, 0xb3, 0x9c, 0xa1, 0x27, 0xf6, 0x88, 0xef, 0x34, - 0xaa, 0x4a, 0x61, 0xbf, 0x2c, 0xd2, 0xca, 0x5a, 0x0f, 0x59, 0x8b, 0x80, 0x09, 0xe5, 0x61, - 0x0e, 0xfb, 0x05, 0xda, 0x12, 0x49, 0x5c, 0x0b, 0xf0, 0x2e, 0xec, 0x37, 0xfb, 0x85, 0x7f, - 0x7d, 0x19, 0x43, 0xf8, 0xf7, 0x60, 0x93, 0xa2, 0x7b, 0x42, 0x2a, 0x91, 0x0f, 0x49, 0x04, - 0xcf, 0xb8, 0x36, 0xf6, 0x2d, 0x7a, 0xc2, 0x95, 0x76, 0x0a, 0xb9, 0xf2, 0x58, 0x7f, 0x60, - 0xe8, 0x3d, 0x40, 0x28, 0x54, 0xe9, 0xa3, 0x55, 0x0a, 0x19, 0x0f, 0x59, 0xfb, 0xcc, 0x5c, - 0x94, 0xe6, 0xf6, 0xbc, 0xf9, 0xe9, 0xd7, 0x52, 0x7e, 0xf7, 0xe6, 0xc4, 0xaf, 0xb1, 0x3b, - 0x92, 0x8f, 0xd2, 0xfb, 0xba, 0x2a, 0xe0, 0x08, 0xf1, 0x9d, 0xa2, 0xd3, 0x85, 0x88, 0x1d, - 0xfe, 0xce, 0x30, 0xa3, 0xc9, 0x43, 0x39, 0x09, 0xba, 0xe0, 0x80, 0xe0, 0x1f, 0x09, 0xe9, - 0x87, 0xa0, 0x59, 0xf3, 0x68, 0xd7, 0x71, 0x22, 0x46, 0x83, 0x91, 0x59, 0xec, 0x18, 0x33, - 0x45, 0xe5, 0xa8, 0x60, 0x7e, 0x86, 0x0b, 0xf1, 0x94, 0x81, 0x34, 0xd1, 0xab, 0x79, 0x1c, - 0x24, 0x46, 0x09, 0x4d, 0x01, 0x2e, 0x14, 0xe1, 0xa8, 0x2f, 0xa5, 0xd9, 0x51, 0x06, 0xc0, - 0xc9, 0x62, 0x6d, 0xf1, 0xe7, 0xe5, 0x6c, 0xb7, 0xe6, 0xcb, 0xcf, 0xbe, 0xa9, 0x65, 0xf6, - 0x4c, 0xc4, 0x25, 0x53, 0x19, 0xef, 0xf0, 0x9b, 0xcc, 0x40, 0xab, 0x3c, 0xcc, 0x72, 0x94, - 0xac, 0x36, 0x97, 0x01, 0xac, 0x1f, 0x08, 0x3b, 0x61, 0x5e, 0x53, 0x2d, 0x13, 0xea, 0x80, - 0x9e, 0xb6, 0x89, 0x67, 0xb0, 0x31, 0xff, 0xf2, 0xb0, 0x53, 0x6b, 0x78, 0x1e, 0x08, 0x68, - 0x8a, 0x51, 0xde, 0x36, 0x29, 0xd4, 0xc8, 0xe3, 0xe2, 0x99, 0x87, 0xb4, 0xdd, 0xbc, 0xce, - 0xa4, 0x1b, 0x70, 0x60, 0xed, 0x9f, 0x63, 0x5d, 0xa1, 0x06, 0x14, 0x5b, 0xbd, 0x4d, 0xd2, - 0x04, 0x5f, 0x22, 0x15, 0x54, 0x6e, 0xdf, 0xe7, 0x12, 0x05, 0xf5, 0xa1, 0x39, 0xbf, 0x5e, - 0x9a, 0xf5, 0xb6, 0x8d, 0x4c, 0x34, 0xac, 0xc1, 0x93, 0x07, 0xd2, 0x3b, 0x79, 0x71, 0xda, - 0x98, 0xec, 0x2e, 0xbc, 0x82, 0x82, 0xae, 0xab, 0xba, 0x8f, 0x1a, 0x46, 0xaf, 0x4b, 0xaf, - 0x00, 0x27, 0x6a, 0xa0, 0xe9, 0xe5, 0xc2, 0x12, 0x86, 0x5d, 0x76, 0x36, 0x87, 0x33, 0x5e, - 0x1e, 0xc2, 0xd6, 0xc8, 0x13, 0xa5, 0x16, 0xbb, 0x2f, 0x2b, 0x79, 0x05, 0x61, 0x00, 0xb0, - 0x74, 0x88, 0xce, 0x2f, 0xd5, 0x08, 0x9b, 0xe2, 0x96, 0xea, 0xd4, 0x2c, 0xe3, 0x45, 0xef, - 0x58, 0xf7, 0x35, 0x43, 0xab, 0x10, 0x2e, 0xd7, 0x9e, 0x42, 0x65, 0x21, 0xfe, 0xa6, 0x0d, - 0xcc, 0xe4, 0x7e, 0x49, 0x81, 0x80, 0xee, 0x94, 0xf1, 0xe6, 0x9b, 0xf8, 0x62, 0xc9, 0xe0, - 0x14, 0xad, 0x60, 0xf6, 0x04, 0x18, 0x19, 0xf0, 0x11, 0x07, 0x81, 0x28, 0x03, 0xc9, 0x86, - 0xe5, 0x47, 0xa5, 0xfb, 0x74, 0x4d, 0xd7, 0x66, 0xb9, 0x2e, 0x22, 0xca, 0x86, 0x21, 0xb5, - 0x61, 0x90, 0xab, 0x1a, 0x70, 0x19, 0xeb, 0x9e, 0x28, 0x81, 0x14, 0xc4, 0xc4, 0x50, 0xd0, - 0x8a, 0x95, 0xda, 0x72, 0x82, 0x27, 0x82, 0x39, 0xf7, 0xfa, 0x07, 0x3a, 0x8c, 0xe4, 0x44, - 0x50, 0x6a, 0xe1, 0x71, 0xe0, 0xdc, 0xd5, 0x4d, 0x18, 0x61, 0x36, 0x2f, 0x12, 0x95, 0x7b, - 0x36, 0x6b, 0x92, 0xdc, 0xb0, 0x48, 0x00, 0x17, 0xc6, 0xa3, 0x97, 0xb2, 0x75, 0x06, 0xc5, - 0x52, 0x38, 0xe1, 0x65, 0x63, 0x55, 0x78, 0x67, 0x04, 0x48, 0x9f, 0xb5, 0x4b, 0xf1, 0x25, - 0x7e, 0x90, 0xa2, 0x46, 0xf9, 0x2e, 0xad, 0x45, 0x51, 0x66, 0xc4, 0x21, 0x7b, 0x61, 0x06, - 0x82, 0xa6, 0x44, 0x65, 0x14, 0xa1, 0xb5, 0x9d, 0x5f, 0xac, 0xfc, 0x70, 0x41, 0xd4, 0xe6, - 0x39, 0x04, 0x6e, 0x60, 0x26, 0x20, 0x97, 0x55, 0x7c, 0xec, 0x24, 0xc5, 0x96, 0x29, 0xb8, - 0x91, 0x22, 0x9e, 0x71, 0x4d, 0xb7, 0x9a, 0x80, 0xe8, 0x30, 0xaf, 0x7f, 0xa7, 0xa2, 0x11, - 0x2e, 0x60, 0xff, 0x1f, 0xb9, 0x57, 0x41, 0xf3, 0x9c, 0x51, 0xd3, 0x7c, 0x3b, 0xe2, 0x41, - 0xe9, 0x99, 0x0b, 0xf1, 0x4c, 0x32, 0x5e, 0x55, 0x84, 0x83, 0xf6, 0x54, 0x08, 0xba, 0x25, - 0xc4, 0xcf, 0x85, 0xe1, 0x01, 0x22, 0xcd, 0x5c, 0xba, 0x60, 0x10, 0xdb, 0x48, 0x79, 0x30, - 0xee, 0xd9, 0xbe, 0xda, 0xc4, 0xd5, 0x33, 0x82, 0x5c, 0x65, 0x7a, 0xac, 0x9c, 0xb7, 0x09, - 0x92, 0x0f, 0x6c, 0x9a, 0x53, 0x7b, 0x76, 0x19, 0x4e, 0xab, 0x8c, 0x33, 0x0f, 0xcc, 0x78, - 0x91, 0xe2, 0x42, 0x07, 0xf5, 0xca, 0x76, 0x98, 0x0d, 0x94, 0xbd, 0x1b, 0x6d, 0xb4, 0x16, - 0x92, 0xee, 0x6b, 0xee, 0x11, 0x75, 0x44, 0xe9, 0x86, 0x20, 0xde, 0x43, 0x90, 0xda, 0x01, - 0x9b, 0x63, 0x75, 0x7b, 0xc7, 0x8e, 0xa7, 0xd0, 0xe2, 0x7c, 0x2f, 0xc6, 0xb9, 0x2d, 0x8c, - 0x03, 0x66, 0xe2, 0x3f, 0xf1, 0xd5, 0xa3, 0x81, 0x30, 0xe5, 0x18, 0x33, 0x40, 0xa9, 0x05, - 0xce, 0xfe, 0xd2, 0xbd, 0x33, 0x2d, 0x44, 0x3c, 0x6f, 0xc6, 0xc3, 0xf4, 0x60, 0x1b, 0xd3, - 0xe4, 0x92, 0x7b, 0x40, 0x38, 0x8c, 0x00, 0xc8, 0x42, 0xc9, 0x3d, 0x01, 0xac, 0x36, 0x5b, - 0xb6, 0x27, 0x2f, 0x28, 0xad, 0x28, 0xec, 0xdb, 0xc0, 0x5d, 0xc2, 0xe4, 0xf6, 0x11, 0x75, - 0xcd, 0x36, 0xf5, 0xfa, 0x5a, 0x47, 0x71, 0xe0, 0xdf, 0xb6, 0xe1, 0x3c, 0xc2, 0xba, 0x91, - 0x0e, 0x28, 0xf1, 0x1f, 0xa1, 0x37, 0x28, 0xbf, 0x2d, 0xc5, 0x7e, 0x27, 0x9e, 0xc6, 0x7f, - 0x80, 0x46, 0x18, 0x7b, 0xdb, 0x99, 0xca, 0xbe, 0xb0, 0xc3, 0xc0, 0x08, 0xc6, 0xef, 0x26, - 0xca, 0x38, 0x2f, 0x99, 0x40, 0xe0, 0xb0, 0x27, 0x71, 0xfa, 0x6c, 0x2f, 0x69, 0xf1, 0x11, - 0x6b, 0xaa, 0xc1, 0xad, 0xed, 0xfa, 0xe6, 0xff, 0x68, 0xdc, 0x8c, 0xb2, 0x49, 0xc1, 0x12, - 0xce, 0x6f, 0x9a, 0x62, 0x08, 0xcf, 0x1f, 0xb4, 0xc4, 0x18, 0x39, 0x95, 0x32, 0x6d, 0xd6, - 0x90, 0xbc, 0x45, 0x31, 0xde, 0x9a, 0xc8, 0x5a, 0x0b, 0xe2, 0xf6, 0xb0, 0x79, 0x5b, 0x6f, - 0x9b, 0xc7, 0x00, 0xb7, 0x62, 0x8c, 0x27, 0x2f, 0x24, 0x5d, 0xe3, 0x21, 0x0d, 0x89, 0xfb, - 0x7b, 0x55, 0x2a, 0x73, 0x16, 0x72, 0x77, 0x96, 0x75, 0xec, 0xe0, 0x96, 0x3c, 0x28, 0x35, - 0xba, 0x8c, 0x6e, 0xce, 0x9c, 0xc4, 0xe5, 0x5b, 0x2d, 0x07, 0x74, 0x89, 0xcc, 0x8a, 0x83, - 0x55, 0x8a, 0x12, 0x61, 0xa4, 0x52, 0xdc, 0xe0, 0x31, 0x7c, 0xb8, 0xef, 0x4e, 0x86, 0x42, - 0xf3, 0xd1, 0x30, 0x90, 0x30, 0x5a, 0xd3, 0x45, 0x90, 0x6b, 0x18, 0x0e, 0x50, 0xde, 0xce, - 0x88, 0x68, 0x30, 0xf7, 0xa3, 0x49, 0xe3, 0x47, 0x7a, 0x0f, 0x10, 0xdf, 0x57, 0xa8, 0x1a, - 0x5f, 0x89, 0x5e, 0x8c, 0x04, 0x30, 0x85, 0xd3, 0x31, 0xcd, 0x1b, 0xec, 0x20, 0xf7, 0xb8, - 0x79, 0x28, 0x71, 0x91, 0x27, 0x76, 0xbe, 0x3e, 0xf4, 0xb8, 0xb4, 0x11, 0xca, 0x9c, 0xd9, - 0xa9, 0xdb, 0xd9, 0x2d, 0x1f, 0x66, 0xc9, 0x0b, 0x23, 0xd3, 0x5b, 0x1d, 0x0c, 0xad, 0x3a, - 0xcb, 0xff, 0xab, 0x51, 0x41, 0xb5, 0x17, 0x13, 0x36, 0x75, 0x32, 0x89, 0x27, 0x4d, 0x89, - 0x7c, 0x24, 0x49, 0xe9, 0x31, 0x6c, 0x3d, 0x19, 0xfe, 0xcd, 0x86, 0xe4, 0x54, 0xa5, 0x1c, - 0x82, 0x0c, 0x08, 0x0c, 0xee, 0xf6, 0x42, 0x15, 0x65, 0xd4, 0x81, 0x79, 0x25, 0x01, 0xb5, - 0x82, 0x19, 0x0d, 0x96, 0x07, 0x76, 0xcc, 0x5c, 0x6b, 0xcc, 0x3f, 0x6a, 0x33, 0xa9, 0x2e, - 0x21, 0x3f, 0x7c, 0x2e, 0x93, 0x2d, 0x8f, 0x15, 0x13, 0xd1, 0xd2, 0xbc, 0x31, 0xcd, 0xb0, - 0xc9, 0x55, 0x0e, 0xa2, 0x1f, 0xb9, 0xd5, 0xdb, 0x1a, 0xcb, 0x01, 0xea, 0xa8, 0x04, 0xc5, - 0x94, 0xf9, 0x87, 0x77, 0x65, 0x2a, 0x7a, 0xf2, 0x71, 0x84, 0xe4, 0xad, 0xa6, 0x12, 0x20, - 0x1c, 0x80, 0xf1, 0x8d, 0x1c, 0xbd, 0x5f, 0x9a, 0x4a, 0x53, 0x54, 0x44, 0x93, 0x4b, 0x72, - 0xf6, 0x26, 0x2d, 0x58, 0x2a, 0xc5, 0x80, 0x2b, 0xc1, 0x7c, 0x10, 0x6b, 0xcc, 0x4a, 0x53, - 0xeb, 0x4a, 0xf6, 0x33, 0x4e, 0xc1, 0xee, 0xc6, 0x02, 0xbe, 0xf4, 0x03, 0x66, 0xd9, 0x1f, - 0x4b, 0x4d, 0xf4, 0x77, 0xf2, 0xb3, 0xb6, 0xbe, 0x21, 0x11, 0xe0, 0xe6, 0x22, 0x3c, 0x5f, - 0x43, 0x81, 0x1c, 0xcb, 0xb3, 0xc3, 0x1f, 0x8f, 0x4c, 0x21, 0x38, 0x92, 0x73, 0x77, 0x52, - 0x1c, 0xee, 0x99, 0x54, 0xa4, 0x93, 0x34, 0x05, 0x96, 0xfa, 0x04, 0x31, 0xfb, 0x95, 0x3e, - 0x7e, 0xe3, 0xc0, 0xa1, 0x5b, 0x37, 0xf4, 0x75, 0x92, 0xfc, 0x4c, 0xef, 0x4b, 0x47, 0xc7, - 0x59, 0xd6, 0x27, 0x8b, 0x4f, 0xe5, 0xbe, 0x65, 0x19, 0xc9, 0x92, 0x7e, 0x9c, 0x08, 0xf6, - 0xe8, 0x9c, 0x6f, 0xf9, 0x9c, 0xa6, 0x9c, 0x9f, 0x89, 0xe2, 0x71, 0x33, 0xb5, 0x21, 0x97, - 0x52, 0x0b, 0x87, 0x3c, 0x57, 0x8a, 0xde, 0x66, 0x96, 0x2b, 0xc1, 0x8d, 0x07, 0x26, 0xdb, - 0x27, 0x16, 0x71, 0xbf, 0xbe, 0x8c, 0x21, 0xc1, 0x6e, 0xce, 0xd0, 0x67, 0x5a, 0x58, 0xff, - 0x14, 0x97, 0xcb, 0x00, 0xe2, 0x39, 0x48, 0x1a, 0xdc, 0x46, 0x56, 0x53, 0x7b, 0x80, 0x83, - 0x0b, 0x37, 0x26, 0x4e, 0x7f, 0x1b, 0x50, 0xe3, 0x78, 0x0f, 0x32, 0xea, 0x57, 0xc9, 0x12, - 0x5c, 0x73, 0xf0, 0x7e, 0x33, 0xcb, 0x30, 0xa5, 0x1e, 0xc6, 0xc4, 0xdc, 0x98, 0xc4, 0xf9, - 0x33, 0x7d, 0x62, 0x15, 0x2b, 0xa5, 0x44, 0xee, 0xbe, 0x4d, 0x7a, 0x8e, 0xae, 0xf7, 0x23, - 0xab, 0x85, 0x57, 0x0d, 0x54, 0x9f, 0xb9, 0x06, 0x87, 0xf3, 0xb4, 0x78, 0x2f, 0x76, 0x47, - 0x98, 0x8c, 0xa3, 0xe9, 0x7b, 0x67, 0x36, 0xbd, 0xbd, 0x7c, 0xfb, 0x10, 0x39, 0x34, 0x05, - 0xa8, 0x61, 0x18, 0xcc, 0xc4, 0x15, 0xa1, 0x6e, 0x76, 0x14, 0x23, 0x08, 0x28, 0x43, 0x07, - 0x28, 0x61, 0x8d, 0xa3, 0x1e, 0x37, 0x79, 0x2f, 0x04, 0x3e, 0x37, 0x77, 0x04, 0x90, 0x52, - 0xd5, 0x89, 0x57, 0xa3, 0x52, 0xe5, 0x4c, 0x16, 0xb3, 0xd9, 0x3c, 0x85, 0x95, 0x22, 0x0a, - 0x2e, 0x83, 0x22, 0xf2, 0xda, 0x66, 0x9f, 0x11, 0xbe, 0x38, 0x17, 0x95, 0x5f, 0x1a, 0x35, - 0x0d, 0x35, 0x91, 0xac, 0x81, 0xd7, 0xe6, 0x27, 0x01, 0x5b, 0x06, 0x53, 0xcf, 0xf1, 0xea, - 0xe9, 0x64, 0xf8, 0x9a, 0xcf, 0xa4, 0x16, 0x63, 0xa8, 0x33, 0xe6, 0x52, 0x35, 0x62, 0x7e, - 0xb6, 0x7d, 0x30, 0x73, 0x8f, 0x17, 0x0d, 0xa1, 0x34, 0xde, 0x1d, 0x58, 0x49, 0x99, 0x97, - 0x31, 0x5a, 0x32, 0x9d, 0xcb, 0x52, 0xfe, 0xdc, 0x30, 0x17, 0x1f, 0x94, 0x8f, 0x6f, 0x23, - 0xa2, 0xbe, 0x30, 0xb4, 0x93, 0x98, 0xa2, 0x16, 0x2f, 0x46, 0x9e, 0xb1, 0x61, 0xe7, 0x52, - 0xfa, 0xa4, 0x87, 0xc5, 0x33, 0xe0, 0xac, 0x6a, 0xae, 0x88, 0xc6, 0xd7, 0xed, 0x64, 0x89, - 0x2a, 0x0a, 0xe4, 0xaf, 0xbc, 0x2b, 0x30, 0xac, 0xe3, 0x6c, 0xa7, 0xdd, 0xf4, 0xf1, 0x33, - 0x4b, 0x67, 0x31, 0x64, 0x15, 0x99, 0xb0, 0xd2, 0x54, 0x0c, 0x4f, 0xef, 0x4a, 0xe6, 0xd9, - 0xc0, 0xb8, 0x1c, 0x2d, 0x35, 0x6b, 0x98, 0x17, 0x83, 0x60, 0xb8, 0x53, 0xa5, 0x01, 0xdc, - 0x18, 0x66, 0x34, 0x3e, 0x81, 0xfc, 0xcf, 0xe0, 0xe9, 0x9b, 0x10, 0x42, 0xd1, 0x0a, 0x38, - 0xef, 0x3a, 0x5c, 0xb2, 0x04, 0x34, 0x11, 0x8e, 0x16, 0xeb, 0x23, 0x24, 0x44, 0x46, 0xae, - 0x69, 0xbc, 0xc1, 0xa1, 0xe6, 0x99, 0xcb, 0x59, 0x81, 0xc2, 0x06, 0x68, 0x95, 0x78, 0xa9, - 0xa2, 0xb3, 0xf6, 0xaa, 0x3c, 0xa3, 0x7f, 0x1e, 0x09, 0x34, 0x6f, 0xa2, 0xf4, 0xf7, 0x69, - 0x5a, 0x6b, 0x8f, 0x70, 0x87, 0xe9, 0x76, 0x3f, 0x52, 0xd0, 0x6d, 0xe4, 0x20, 0x8a, 0x4c, - 0xc0, 0x2e, 0x92, 0x80, 0x18, 0x83, 0xf8, 0x9e, 0xcd, 0x39, 0x62, 0x48, 0xdb, 0x5f, 0x0d, - 0x2e, 0xf5, 0x27, 0xa7, 0x5d, 0x92, 0x42, 0x16, 0xfc, 0xae, 0x8c, 0x76, 0x17, 0x8c, 0x0b, - 0x7c, 0x27, 0xf6, 0x18, 0x33, 0x1f, 0xac, 0x02, 0x1e, 0x6c, 0x9a, 0x3a, 0x9e, 0x58, 0x5d, - 0x1c, 0x16, 0x0f, 0x53, 0xeb, 0x39, 0xeb, 0xf4, 0xb1, 0xb3, 0xd8, 0x4d, 0x97, 0xb2, 0xcb, - 0x9d, 0x0f, 0x61, 0x6e, 0x9b, 0x2a, 0xe1, 0x0b, 0xb9, 0xe5, 0x92, 0x58, 0x0f, 0x27, 0x91, - 0x8e, 0x4a, 0x17, 0xbe, 0x25, 0x70, 0xf5, 0xe4, 0x28, 0x3a, 0xa8, 0x42, 0x01, 0x89, 0xf7, - 0x21, 0x37, 0x60, 0x6e, 0x2b, 0xe0, 0xa9, 0xe2, 0xca, 0x81, 0xfb, 0x23, 0x12, 0xca, 0xa0, - 0x20, 0x87, 0x47, 0x00, 0x5f, 0xfe, 0xa8, 0x81, 0xf8, 0xa4, 0x4a, 0xdd, 0x38, 0x30, 0x3e, - 0x7d, 0x08, 0x0e, 0x4b, 0xe3, 0x0b, 0x44, 0x27, 0x1a, 0xeb, 0x4f, 0xeb, 0x37, 0x10, 0x1c, - 0x20, 0x1d, 0x0f, 0x85, 0x04, 0xe7, 0x11, 0x32, 0x4e, 0xcd, 0x3b, 0x4d, 0xee, 0x9d, 0x69, - 0x34, 0x8c, 0x22, 0x65, 0x6b, 0x7e, 0xdc, 0x5f, 0x68, 0xb2, 0x36, 0x03, 0x02, 0x73, 0x89, - 0x0e, 0x9c, 0xad, 0x41, 0x25, 0x8e, 0x14, 0x45, 0xec, 0x93, 0x4f, 0x9b, 0x4b, 0x2b, 0x27, - 0x92, 0x36, 0x5b, 0x52, 0xd0, 0xb4, 0x4b, 0xbc, 0xcb, 0xc7, 0x21, 0x49, 0x4a, 0x56, 0x71, - 0xa6, 0x0e, 0xd4, 0xfa, 0x28, 0x9e, 0x20, 0x3c, 0x68, 0xab, 0x3c, 0x4b, 0x88, 0xac, 0x36, - 0xf9, 0xad, 0xc9, 0x1a, 0x4a, 0x6c, 0x8c, 0xc4, 0xc5, 0x2f, 0xeb, 0x2e, 0xb3, 0x4b, 0x64, - 0x66, 0x7a, 0x74, 0xc3, 0xbc, 0xdc, 0xd6, 0xe4, 0x38, 0xe2, 0x0d, 0x2b, 0x6c, 0x49, 0x95, - 0x00, 0xf4, 0x88, 0xed, 0xc8, 0x72, 0x16, 0x51, 0x33, 0xfa, 0xdb, 0x4f, 0xb7, 0x71, 0x3a, - 0x49, 0xde, 0x17, 0xf6, 0x0c, 0xa4, 0xd7, 0x80, 0x91, 0x8f, 0x3c, 0xfe, 0x19, 0xca, 0x14, - 0x47, 0xf8, 0x37, 0x61, 0xee, 0x18, 0x08, 0x43, 0x6e, 0x31, 0x0f, 0xb7, 0xcc, 0x32, 0xdb, - 0x06, 0x5c, 0x59, 0x23, 0xa4, 0x53, 0x7d, 0x23, 0x3b, 0xe2, 0xf3, 0x31, 0x1a, 0x5e, 0xa4, - 0x16, 0xc6, 0xbf, 0x28, 0x08, 0x50, 0x64, 0x7c, 0x65, 0x0a, 0xc0, 0x18, 0x35, 0x35, 0x1e, - 0xed, 0xe8, 0x16, 0x51, 0x1e, 0xdf, 0x33, 0xe5, 0x9f, 0x46, 0x7d, 0x09, 0x36, 0xaf, 0x21, - 0xa4, 0xca, 0xd0, 0xdf, 0x6f, 0xbd, 0xd6, 0x71, 0x1e, 0x19, 0x8d, 0x89, 0x61, 0x15, 0xcc, - 0x3d, 0xcf, 0xac, 0x09, 0x48, 0x52, 0x2e, 0x23, 0x1b, 0x34, 0xe4, 0x7d, 0xcf, 0xd0, 0x5b, - 0x92, 0x1d, 0xf4, 0x97, 0xb1, 0x90, 0xaf, 0x5d, 0x62, 0x1c, 0x59, 0xc9, 0x4c, 0x34, 0xbd, - 0x40, 0x5c, 0x9b, 0xe0, 0x0b, 0x6d, 0xd7, 0x2c, 0xde, 0x87, 0xe9, 0x3e, 0xa3, 0x13, 0x03, - 0x9c, 0x01, 0x63, 0x33, 0x35, 0x04, 0x4f, 0xfa, 0x8b, 0xde, 0xa2, 0x0d, 0x3b, 0x8c, 0xa5, - 0xdb, 0x2c, 0x45, 0x16, 0xb5, 0xa5, 0x95, 0x12, 0xd0, 0x9d, 0x28, 0x1b, 0x18, 0x77, 0x22, - 0xc8, 0xa5, 0xc9, 0xeb, 0xdb, 0x20, 0x64, 0x87, 0x12, 0x29, 0x64, 0x03, 0x54, 0xe9, 0xae, - 0xa1, 0x65, 0xdd, 0xda, 0xfd, 0xdf, 0xee, 0x4d, 0xfc, 0x10, 0x01, 0xd3, 0x82, 0x29, 0xe5, - 0x1a, 0xb7, 0xfc, 0x33, 0x46, 0x0b, 0x4b, 0x17, 0x20, 0x30, 0x0a, 0xed, 0xe7, 0x97, 0x3a, - 0x8c, 0x94, 0x0e, 0x6f, 0xf2, 0x97, 0x22, 0x5d, 0x53, 0xbf, 0xaa, 0x68, 0x80, 0xb2, 0xb4, - 0xc0, 0xac, 0x26, 0x16, 0x68, 0xee, 0xf9, 0xd6, 0x82, 0x3d, 0xd5, 0xb0, 0xc6, 0x21, 0x5d, - 0x16, 0xc0, 0x0d, 0xf5, 0x61, 0xe9, 0xc4, 0xab, 0xaa, 0xd3, 0xef, 0x0d, 0xa8, 0x4d, 0xdd, - 0x59, 0x9d, 0x56, 0x69, 0x1d, 0xd1, 0xb1, 0x21, 0xa6, 0x12, 0x0c, 0x34, 0x08, 0xbd, 0xcd, - 0xd9, 0x72, 0xf7, 0x7d, 0x20, 0x7d, 0x38, 0x29, 0x83, 0xb0, 0xa0, 0x44, 0x64, 0x7c, 0xd2, - 0xb8, 0x6c, 0x91, 0xb8, 0xbf, 0x19, 0x42, 0x6c, 0x57, 0x42, 0xb7, 0x37, 0x8e, 0x2f, 0x21, - 0xc0, 0xf0, 0x9b, 0xff, 0x86, 0x69, 0xf6, 0xb0, 0xbf, 0x61, 0x87, 0xd4, 0x4c, 0x3b, 0xd1, - 0xe5, 0x0d, 0xfb, 0x65, 0xaf, 0xf3, 0xaa, 0x88, 0xad, 0x00, 0xc2, 0xe1, 0x27, 0x35, 0xee, - 0x38, 0x43, 0x47, 0x37, 0x9d, 0x2b, 0x48, 0xab, 0x3f, 0x0b, 0x36, 0xf7, 0x12, 0xe0, 0xc1, - 0xbc, 0xa9, 0x69, 0x8d, 0x29, 0xf1, 0x79, 0x24, 0xf0, 0x34, 0x3f, 0xc5, 0x73, 0xa1, 0x11, - 0x59, 0x81, 0x16, 0x10, 0x36, 0xb7, 0x1f, 0x96, 0xed, 0x96, 0x59, 0xb5, 0x2e, 0xaf, 0xb7, - 0x79, 0x4f, 0xf9, 0xa0, 0x5b, 0x42, 0xf5, 0xb9, 0x6a, 0xa5, 0x30, 0xe4, 0x5f, 0x18, 0x92, - 0xf4, 0x9d, 0xcd, 0xe6, 0x2e, 0xe8, 0x24, 0xab, 0x3d, 0xd0, 0xfd, 0x9c, 0x51, 0x1b, 0xd8, - 0xed, 0xa0, 0xd6, 0x0e, 0xda, 0x75, 0x3c, 0xd5, 0xd4, 0x44, 0xc0, 0x29, 0x4a, 0xac, 0x61, - 0x7b, 0x6c, 0x64, 0x53, 0xce, 0x8b, 0x22, 0x74, 0xb0, 0xcb, 0xc5, 0xbe, 0xb6, 0x8e, 0x27, - 0x61, 0x89, 0x7b, 0x1e, 0x2a, 0xc6, 0x12, 0xd8, 0xe6, 0xf8, 0x60, 0x58, 0x30, 0x11, 0x3b, - 0xc8, 0x00, 0xc9, 0x1b, 0xdc, 0x4d, 0x4c, 0x89, 0x39, 0x4d, 0x33, 0xc2, 0x5f, 0x64, 0x65, - 0xd8, 0x13, 0xa4, 0x53, 0xbf, 0x89, 0xeb, 0x3f, 0x0b, 0xaf, 0x3b, 0x83, 0x85, 0x66, 0x65, - 0xa3, 0x3d, 0x1e, 0x0a, 0x29, 0x1b, 0x52, 0x7d, 0x6b, 0x57, 0x04, 0x22, 0x1b, 0x5b, 0x34, - 0x3a, 0x6f, 0xcb, 0x70, 0xf5, 0x61, 0xcb, 0x49, 0x6b, 0x72, 0x7f, 0xbf, 0xf0, 0x7e, 0x48, - 0xb5, 0x6c, 0xc9, 0x24, 0xef, 0x51, 0xb3, 0x45, 0x94, 0x49, 0xfb, 0x52, 0x11, 0xc0, 0x2f, - 0xf0, 0x81, 0xc9, 0x06, 0x45, 0xca, 0x39, 0x2d, 0x5e, 0x7a, 0x13, 0xf1, 0x31, 0x60, 0xac, - 0xb5, 0xb5, 0x3e, 0xd2, 0x0b, 0x8e, 0x01, 0x39, 0x0c, 0xc4, 0xd1, 0xd7, 0xea, 0x95, 0x33, - 0xb2, 0xe7, 0xa2, 0x1e, 0x9c, 0xca, 0xf0, 0x46, 0x1f, 0x1d, 0x55, 0x62, 0xc1, 0xae, 0x28, - 0xc0, 0x4c, 0x13, 0x80, 0x83, 0xf4, 0xeb, 0xd1, 0x1f, 0x75, 0xe3, 0x29, 0x8b, 0x23, 0x21, - 0xa2, 0x03, 0x95, 0xd3, 0xfc, 0x68, 0x5d, 0x8c, 0x49, 0x86, 0xea, 0xac, 0xc4, 0xe9, 0x7d, - 0x64, 0x81, 0x14, 0x9a, 0xed, 0x04, 0x0e, 0x07, 0x23, 0x9c, 0x05, 0x1d, 0x76, 0x13, 0x79, - 0xfa, 0xec, 0xbb, 0x3c, 0x33, 0x56, 0xba, 0x37, 0x35, 0x83, 0x53, 0xb2, 0x04, 0xbb, 0xe9, - 0x67, 0x65, 0xbc, 0xd4, 0xb9, 0x37, 0x54, 0x70, 0xfa, 0xc0, 0x59, 0x07, 0xfc, 0xee, 0xc5, - 0xd9, 0x4c, 0xb1, 0x19, 0x52, 0x27, 0xe0, 0x2f, 0x7b, 0x66, 0x00, 0x5f, 0x9a, 0x76, 0xad, - 0x9c, 0xe1, 0xfb, 0xae, 0x70, 0x97, 0xb0, 0xba, 0x82, 0x4c, 0x9e, 0x41, 0x5f, 0x82, 0xb0, - 0x81, 0x2a, 0x3b, 0xc6, 0xd6, 0xae, 0x38, 0x24, 0xdd, 0x1d, 0x04, 0x83, 0x7c, 0xa3, 0x90, - 0x47, 0xcc, 0x27, 0xd5, 0x7d, 0xd5, 0x65, 0x5f, 0x2d, 0x52, 0xe1, 0xb2, 0x8f, 0xf2, 0x4a, - 0xf7, 0x01, 0xc9, 0x3a, 0x16, 0x9b, 0xbd, 0xe2, 0x20, 0x1b, 0x4e, 0xf3, 0x6e, 0xf3, 0x61, - 0xf1, 0x11, 0x83, 0x8e, 0x2a, 0x59, 0xb2, 0xf1, 0xff, 0x32, 0x41, 0x0c, 0x91, 0xbe, 0x4b, - 0x2c, 0xa0, 0xd4, 0xd4, 0x34, 0xa7, 0x0c, 0x0d, 0x03, 0xd8, 0xca, 0x0d, 0xb8, 0xc9, 0xcb, - 0x7b, 0x27, 0xef, 0x07, 0x43, 0xc8, 0xa0, 0x57, 0x9d, 0x6c, 0x4d, 0xf5, 0xa7, 0x66, 0x44, - 0x63, 0x7b, 0xee, 0x0d, 0x45, 0xff, 0xc4, 0xff, 0x83, 0xa1, 0xff, 0x77, 0x9f, 0x22, 0xe4, - 0x9e, 0x65, 0x55, 0x0b, 0x60, 0xc2, 0x79, 0xae, 0xef, 0x6a, 0xeb, 0x89, 0xc1, 0xff, 0x6a, - 0x8c, 0xff, 0x8a, 0xe5, 0xeb, 0x64, 0x5e, 0x9e, 0x15, 0xd6, 0x94, 0x35, 0x0a, 0xc0, 0xf7, - 0x12, 0x7e, 0xcf, 0x63, 0x2f, 0x21, 0x87, 0x59, 0xea, 0xfc, 0x04, 0xa9, 0x88, 0xa3, 0xd2, - 0x3d, 0x13, 0x47, 0xa4, 0x4b, 0x6f, 0xb1, 0xf7, 0x9a, 0x2a, 0x40, 0xe4, 0x1f, 0x44, 0x1b, - 0xb8, 0x78, 0x23, 0x85, 0x6b, 0x22, 0x1e, 0x7c, 0xde, 0x36, 0x52, 0xa6, 0x2b, 0x82, 0x4d, - 0x5f, 0x64, 0xb0, 0x85, 0x70, 0x32, 0x0f, 0x77, 0x29, 0xb5, 0x00, 0xe1, 0x38, 0x25, 0x2a, - 0x62, 0x20, 0xda, 0x68, 0x11, 0x70, 0x7c, 0x09, 0x7d, 0xee, 0x8d, 0x29, 0x12, 0x35, 0x11, - 0xa2, 0x36, 0xf0, 0x30, 0x38, 0x15, 0x33, 0xcd, 0x52, 0x33, 0xb1, 0xd2, 0xb1, 0x9d, 0xa4, - 0x7c, 0xfe, 0xfd, 0x49, 0x17, 0x94, 0x30, 0xb7, 0x0b, 0xce, 0x17, 0x96, 0x98, 0x88, 0xc2, - 0xc0, 0x2b, 0x75, 0xd0, 0x7b, 0xf8, 0x4d, 0xe6, 0x4d, 0xc9, 0x1f, 0xba, 0xa6, 0xcf, 0x91, - 0x05, 0x2d, 0x40, 0x00, 0x1b, 0xf8, 0x3c, 0xdd, 0x18, 0xe8, 0x86, 0x0b, 0x35, 0x27, 0xd9, - 0xf7, 0x28, 0x95, 0xff, 0x0c, 0x39, 0x8d, 0x49, 0x45, 0xdd, 0xd5, 0x69, 0xc2, 0xc5, 0x68, - 0xbb, 0xce, 0x30, 0x25, 0x06, 0xb5, 0xbf, 0xaa, 0xaa, 0x9e, 0x24, 0xf4, 0x35, 0xe7, 0x3c, - 0x23, 0x67, 0x30, 0xbe, 0xdd, 0x4b, 0x89, 0x40, 0xbc, 0xcc, 0xe1, 0xcd, 0xaa, 0x2a, 0xbd, - 0x38, 0x86, 0x46, 0x47, 0x4e, 0x3d, 0x9c, 0x0a, 0xfd, 0x61, 0xe2, 0x8a, 0x1e, 0xbb, 0xc8, - 0x3a, 0xc8, 0x4e, 0xd6, 0x44, 0x03, 0x9a, 0x7e, 0xa3, 0xaa, 0x27, 0x0e, 0xac, 0x6f, 0x46, - 0xf2, 0x1f, 0xba, 0xed, 0xd4, 0x9c, 0xe2, 0x1f, 0xe1, 0x33, 0x06, 0x0e, 0x41, 0x6b, 0x03, - 0xe2, 0x80, 0x59, 0xd7, 0x53, 0xb0, 0x25, 0xf0, 0xc2, 0xb9, 0xf2, 0x5e, 0x6f, 0xe1, 0x46, - 0xbf, 0x9f, 0x58, 0x95, 0x60, 0x83, 0xe1, 0xba, 0xab, 0x33, 0x57, 0x04, 0x93, 0x57, 0x3b, - 0x9d, 0x05, 0x10, 0x4e, 0xc9, 0xbd, 0x27, 0x64, 0x79, 0x3d, 0x65, 0x5b, 0xb0, 0x33, 0xc6, - 0x46, 0xaf, 0x6f, 0xf8, 0xf8, 0xbb, 0x26, 0x8d, 0x35, 0xc4, 0x3a, 0xcf, 0x61, 0x42, 0x06, - 0xbd, 0x4f, 0x56, 0x35, 0xde, 0x33, 0x4a, 0xe2, 0x76, 0x8e, 0x86, 0x21, 0xf2, 0x44, 0x57, - 0xbd, 0x6c, 0xc3, 0xf8, 0x1a, 0x50, 0xc8, 0xff, 0xf8, 0x71, 0x03, 0x74, 0x15, 0xbd, 0x54, - 0x3e, 0x55, 0x15, 0xdf, 0x44, 0x25, 0x3f, 0x93, 0xae, 0x05, 0x24, 0x1c, 0xde, 0xec, 0x2e, - 0xca, 0x35, 0xeb, 0x29, 0x08, 0xab, 0x07, 0xdc, 0xee, 0x8c, 0x79, 0x5c, 0xf0, 0xa7, 0x44, - 0x2c, 0xa1, 0x21, 0x34, 0x49, 0xa5, 0xc0, 0x32, 0x82, 0x47, 0x8b, 0xf0, 0xc0, 0x75, 0x5f, - 0xd7, 0xf6, 0x2c, 0xa1, 0x40, 0xa3, 0x03, 0x86, 0x7e, 0xbc, 0xef, 0xfc, 0x63, 0x1e, 0x8d, - 0xb2, 0x24, 0x9c, 0x2c, 0x8a, 0x98, 0x06, 0x03, 0x3a, 0x20, 0x1f, 0x6e, 0x59, 0xbe, 0xcf, - 0x38, 0x2c, 0xcd, 0x51, 0x67, 0xad, 0x5d, 0x1d, 0x7a, 0x3d, 0xe1, 0x04, 0x92, 0xc6, 0xbd, - 0xa8, 0x91, 0x21, 0xbb, 0x8b, 0x07, 0x5e, 0x3b, 0x6a, 0x5d, 0x1b, 0x09, 0xf6, 0xad, 0x97, - 0x2c, 0x06, 0x05, 0xf1, 0xfe, 0x16, 0x10, 0xc3, 0x8f, 0x42, 0xab, 0x22, 0x62, 0x53, 0x41, - 0xb4, 0x1c, 0x25, 0x2b, 0xe0, 0xfa, 0x80, 0xc9, 0xd0, 0x82, 0xf5, 0x6f, 0xee, 0x06, 0x69, - 0xd7, 0xd4, 0xeb, 0x97, 0x62, 0xaf, 0x0f, 0xd8, 0x27, 0xe5, 0x45, 0xac, 0x5c, 0xb6, 0xb2, - 0x25, 0x57, 0x15, 0x40, 0xf2, 0xe6, 0x82, 0x0a, 0xd7, 0x93, 0x11, 0xed, 0x2f, 0xe5, 0x7e, - 0x30, 0xd1, 0x22, 0x39, 0x77, 0x1d, 0x79, 0xad, 0x47, 0x57, 0x76, 0x47, 0x06, 0x8a, 0xe6, - 0xec, 0x7f, 0xa3, 0x60, 0x2e, 0x86, 0x37, 0x9f, 0x7c, 0x56, 0x70, 0x9f, 0x82, 0x2d, 0xb6, - 0x8b, 0x5d, 0x35, 0x44, 0x0e, 0x85, 0x55, 0x09, 0xa2, 0xb8, 0x6e, 0xbf, 0x86, 0xdc, 0xaa, - 0xe2, 0x20, 0xa8, 0x9b, 0x6f, 0x7d, 0xea, 0x85, 0xfe, 0x1f, 0xa5, 0xcf, 0x2d, 0x54, 0xea, - 0x4b, 0x24, 0x2e, 0xdf, 0x1a, 0x0b, 0x3c, 0x1a, 0x0b, 0x04, 0xb3, 0x98, 0xe8, 0xa6, 0x7c, - 0x3e, 0xbd, 0x09, 0x3e, 0x44, 0x29, 0xc9, 0x55, 0x46, 0x05, 0xe2, 0xf4, 0x36, 0x04, 0x49, - 0x42, 0x0a, 0x5f, 0xb5, 0xae, 0xbc, 0x15, 0x8d, 0x80, 0xee, 0x10, 0x34, 0x9d, 0x23, 0xe9, - 0xd6, 0x81, 0x96, 0xce, 0xbb, 0xed, 0xbd, 0x98, 0xaf, 0xd1, 0x66, 0x70, 0xb6, 0x62, 0x31, - 0xf0, 0xf7, 0xdd, 0x9c, 0x0a, 0x44, 0x04, 0xda, 0x2d, 0xb7, 0xa0, 0x01, 0x72, 0xff, 0x4f, - 0x48, 0xb4, 0x86, 0x18, 0x3b, 0x2c, 0xc8, 0xd4, 0x9b, 0x12, 0x6a, 0xcb, 0xf5, 0xe0, 0x4a, - 0xf0, 0xa1, 0x6b, 0x36, 0x29, 0x18, 0x75, 0xc1, 0x87, 0xca, 0x2a, 0x65, 0xae, 0xb2, 0x40, - 0x72, 0x91, 0x67, 0x67, 0x4c, 0xf5, 0xe2, 0x6c, 0x2e, 0xb9, 0xf8, 0x46, 0x46, 0x05, 0x27, - 0x9f, 0x47, 0xb5, 0x7e, 0xf7, 0x58, 0x4b, 0xa7, 0xb6, 0x66, 0x2f, 0x22, 0x1c, 0xea, 0xd6, - 0xf8, 0x98, 0x25, 0x74, 0x8a, 0xe7, 0xbf, 0x4a, 0x22, 0xd5, 0x47, 0x15, 0xdb, 0x9f, 0xa8, - 0x06, 0x09, 0xbe, 0x51, 0x75, 0xc3, 0x0a, 0x50, 0x02, 0x5e, 0x54, 0xd1, 0x1b, 0xa2, 0x2a, - 0xc4, 0xcb, 0x17, 0xfc, 0xa2, 0xec, 0x16, 0x01, 0x84, 0xe6, 0xba, 0xca, 0xa6, 0xe4, 0x9a, - 0x83, 0x66, 0x97, 0x10, 0x65, 0x11, 0xa1, 0xe6, 0x5c, 0x67, 0x9c, 0xf2, 0x40, 0xb1, 0x28, - 0xce, 0x19, 0x74, 0xb4, 0x28, 0x12, 0xeb, 0x02, 0x10, 0x5b, 0xcc, 0x59, 0x22, 0x6f, 0xaa, - 0x7f, 0x08, 0x5a, 0xdf, 0x7b, 0x7e, 0xf5, 0xd0, 0xb2, 0xd5, 0xd8, 0x8f, 0x59, 0x56, 0x3e, - 0x3d, 0x2e, 0xdb, 0x1a, 0xa9, 0xae, 0x25, 0x3f, 0xda, 0x7e, 0x66, 0x99, 0x6f, 0x24, 0x26, - 0xd5, 0x2c, 0xe0, 0xd3, 0x6d, 0x5e, 0x38, 0xc0, 0x7b, 0x94, 0x55, 0x18, 0x51, 0xf4, 0xf1, - 0x05, 0x7e, 0x10, 0xbe, 0xab, 0x07, 0x8c, 0x85, 0xc6, 0xe1, 0xfd, 0x86, 0xb2, 0x20, 0x0e, - 0xee, 0x73, 0x45, 0xf0, 0xe9, 0x71, 0x30, 0x61, 0xe0, 0x06, 0x0b, 0x63, 0x33, 0xe9, 0x1f, - 0xcb, 0x76, 0x21, 0xd5, 0x73, 0x33, 0xd8, 0x0e, 0xee, 0xf0, 0x3e, 0x91, 0x2c, 0x2d, 0xa7, - 0x98, 0x5a, 0x7d, 0xbc, 0x39, 0x3a, 0xa5, 0x97, 0xab, 0xd6, 0x7b, 0x82, 0x40, 0xa3, 0xe7, - 0x23, 0x30, 0x48, 0x8a, 0xaf, 0x26, 0xb5, 0x3d, 0x67, 0x1f, 0xe2, 0xef, 0xfe, 0xe1, 0xdb, - 0x16, 0x7f, 0x74, 0x75, 0x94, 0xde, 0x4d, 0xe8, 0x0b, 0xc1, 0xf0, 0xfd, 0x5b, 0x17, 0x86, - 0xd2, 0x76, 0xfe, 0x31, 0xd8, 0xa6, 0x31, 0x55, 0x6a, 0xd4, 0x08, 0x0d, 0x76, 0x74, 0xb6, - 0x9f, 0x1c, 0xda, 0x24, 0x03, 0x28, 0x0f, 0xe1, 0xeb, 0x96, 0x2b, 0xef, 0x00, 0x3d, 0x4d, - 0xf6, 0x1c, 0xba, 0x3d, 0xd9, 0x06, 0xab, 0xa9, 0xc0, 0x1e, 0x56, 0x44, 0xdc, 0xba, 0x01, - 0xdd, 0x79, 0x06, 0x11, 0xda, 0x5b, 0xc4, 0x6e, 0xe2, 0x4e, 0x2b, 0xa2, 0x6a, 0x4a, 0xba, - 0xf8, 0xec, 0x1c, 0x78, 0xac, 0x48, 0xe0, 0xc5, 0xeb, 0x9c, 0x30, 0x79, 0xf8, 0x02, 0xca, - 0x0d, 0xfc, 0x65, 0x50, 0xba, 0x41, 0x0b, 0x8d, 0x76, 0x88, 0x55, 0x06, 0xb2, 0x7e, 0xfe, - 0xb3, 0xbc, 0xa5, 0x92, 0xc2, 0x47, 0x5d, 0xef, 0x2d, 0xbd, 0x4f, 0x5d, 0x7e, 0xd4, 0x83, - 0x6a, 0xbf, 0x08, 0x6c, 0xe8, 0xb2, 0x3d, 0x61, 0x77, 0x01, 0x27, 0x5a, 0x8d, 0x45, 0x20, - 0x85, 0x04, 0x3d, 0x8b, 0x30, 0xbf, 0x66, 0xe0, 0x73, 0x94, 0x71, 0xbc, 0x43, 0x2a, 0x15, - 0x5f, 0x24, 0x9f, 0x1c, 0x1c, 0x58, 0xe4, 0xfa, 0x37, 0xa0, 0x2a, 0xe6, 0x53, 0xb0, 0xec, - 0x71, 0xe2, 0x2b, 0x9f, 0xcd, 0x3d, 0x9a, 0x00, 0x03, 0x7b, 0xcf, 0xcb, 0xae, 0x7c, 0x01, - 0x06, 0xd6, 0xd1, 0x3d, 0xc6, 0x0f, 0xad, 0x3f, 0x73, 0x4e, 0xbd, 0xcc, 0x0d, 0x3f, 0xe9, - 0xc2, 0x90, 0x31, 0x71, 0x6c, 0x74, 0x6b, 0x52, 0xbf, 0x7c, 0x9d, 0xb5, 0xa0, 0x9c, 0xfe, - 0x19, 0xbd, 0x9f, 0x0b, 0x87, 0xcd, 0x12, 0xf8, 0xa6, 0xc5, 0xe3, 0x61, 0x53, 0xe0, 0xbf, - 0x55, 0x87, 0xc9, 0x59, 0xf3, 0x63, 0x66, 0x18, 0x86, 0x43, 0x62, 0x19, 0x50, 0x78, 0xc5, - 0x91, 0x50, 0x23, 0x25, 0x86, 0x42, 0x83, 0xcc, 0xd1, 0xeb, 0xb0, 0x71, 0xba, 0xca, 0x04, - 0xa5, 0x0f, 0x40, 0x69, 0xf1, 0xea, 0xea, 0x8d, 0x8d, 0x2a, 0xf4, 0x9e, 0x76, 0xf2, 0x9e, - 0x88, 0x10, 0x8d, 0xf9, 0x04, 0xd5, 0x9a, 0x66, 0x31, 0x68, 0x6b, 0xe5, 0xad, 0xfc, 0xa4, - 0x85, 0x71, 0x44, 0x2a, 0x01, 0xcd, 0xb1, 0xa3, 0xde, 0x6d, 0xe1, 0x74, 0xfa, 0x94, 0x96, - 0xe9, 0xca, 0x50, 0xd2, 0xdb, 0x06, 0x5e, 0x61, 0xd8, 0x2c, 0x16, 0xef, 0x01, 0x43, 0x81, - 0x25, 0xa9, 0x6e, 0x63, 0x00, 0xde, 0x69, 0xc3, 0x09, 0x67, 0xc5, 0x85, 0x45, 0xaa, 0x8f, - 0x96, 0xfb, 0x66, 0x72, 0x59, 0x59, 0xeb, 0x0b, 0xfe, 0xb9, 0x9a, 0x54, 0xe7, 0x28, 0x67, - 0x40, 0xbd, 0xef, 0xc1, 0x61, 0x11, 0x5a, 0x40, 0x45, 0x56, 0xa1, 0xdd, 0x03, 0x81, 0xf7, - 0x72, 0xb7, 0xab, 0x8c, 0x1f, 0x7f, 0x1d, 0xdc, 0x0c, 0xc0, 0xac, 0x78, 0x26, 0x19, 0xfa, - 0xd5, 0x70, 0xaa, 0x15, 0x90, 0xeb, 0x43, 0x94, 0x55, 0xa6, 0x42, 0xcd, 0x31, 0x22, 0xb0, - 0xed, 0xfe, 0x93, 0x22, 0xa1, 0x93, 0x60, 0xa9, 0x81, 0x93, 0xbc, 0x75, 0xe4, 0xb8, 0xd2, - 0xba, 0xba, 0xf0, 0x76, 0x40, 0x99, 0xf3, 0x6e, 0x3d, 0xfb, 0xce, 0x75, 0x1a, 0x8f, 0xda, - 0xc6, 0x84, 0xca, 0x46, 0xb0, 0x94, 0x5b, 0xa5, 0x93, 0xb6, 0xb1, 0x85, 0x14, 0xd3, 0x95, - 0x42, 0xa8, 0x03, 0xa3, 0x30, 0x5b, 0x55, 0xb8, 0xf7, 0xc3, 0xc5, 0xad, 0xb4, 0xe5, 0x16, - 0x37, 0x9d, 0xb8, 0xea, 0x45, 0x70, 0x02, 0x0e, 0x95, 0xd6, 0x9a, 0xfb, 0xe1, 0x65, 0xe6, - 0x55, 0x96, 0x36, 0xd9, 0xbb, 0x9d, 0x29, 0x36, 0xff, 0x32, 0x72, 0xd7, 0x57, 0xd3, 0x93, - 0x93, 0x7b, 0xa4, 0xee, 0x4e, 0xdc, 0xc3, 0x29, 0xe1, 0x74, 0x26, 0xa7, 0xb5, 0xab, 0x99, - 0xaa, 0xcb, 0xd8, 0x04, 0xe4, 0x53, 0xf1, 0x47, 0xbc, 0x04, 0x39, 0x02, 0x2a, 0x3c, 0x78, - 0xb5, 0xf4, 0xdf, 0x3f, 0x0c, 0xc2, 0x4e, 0xa8, 0x99, 0x3b, 0xc9, 0x8f, 0xa7, 0xe5, 0xb4, - 0xd6, 0x28, 0xd3, 0x6e, 0xca, 0xa6, 0x62, 0x31, 0xf2, 0xc6, 0x12, 0x83, 0x7b, 0x8c, 0x37, - 0x04, 0xac, 0x12, 0x86, 0x2a, 0x67, 0xdf, 0x91, 0x27, 0x88, 0x5a, 0x8b, 0x4c, 0xe8, 0xf0, - 0x6d, 0x7d, 0xd0, 0xd8, 0xd2, 0xd2, 0x5e, 0x6a, 0x9f, 0x77, 0xed, 0x21, 0x78, 0x69, 0xad, - 0x2d, 0x46, 0x1c, 0x26, 0x05, 0x9d, 0x68, 0x9e, 0x4e, 0xd9, 0x77, 0x48, 0x90, 0xe1, 0x8d, - 0xfe, 0x00, 0x7e, 0xd3, 0xae, 0x55, 0xf8, 0x62, 0xab, 0xd7, 0xe4, 0xb0, 0xa5, 0x30, 0x18, - 0xc9, 0xc1, 0x81, 0x29, 0xec, 0x69, 0x83, 0x49, 0x1c, 0x8f, 0xc9, 0xbf, 0xb2, 0x6c, 0xf5, - 0xbd, 0xdd, 0xdb, 0x1f, 0xd8, 0xdb, 0x5b, 0xa1, 0x7b, 0x8a, 0xe0, 0xcb, 0xae, 0xed, 0x5f, - 0xf5, 0x53, 0xdb, 0x2f, 0x07, 0x84, 0xcb, 0xcd, 0x76, 0x42, 0x96, 0x99, 0xe3, 0x49, 0x0c, - 0x01, 0xa2, 0x09, 0x0c, 0xba, 0x4b, 0x23, 0x0f, 0xba, 0x32, 0x58, 0xd7, 0xe5, 0xcb, 0x18, - 0xed, 0xc5, 0x42, 0x7c, 0x10, 0x61, 0x20, 0x6a, 0x1a, 0x5c, 0x3d, 0xc8, 0x1e, 0x56, 0x81, - 0x77, 0x72, 0x16, 0xec, 0x66, 0xcf, 0xbb, 0xa4, 0x2b, 0x7b, 0x50, 0x6c, 0xe9, 0x26, 0x64, - 0xdb, 0x7b, 0xfa, 0x51, 0xa9, 0x32, 0x3e, 0xea, 0x01, 0x69, 0xc4, 0xcb, 0x0e, 0x83, 0xf7, - 0x56, 0xd3, 0xea, 0x98, 0x04, 0x61, 0x31, 0x3e, 0x39, 0xd2, 0x08, 0xef, 0x70, 0xdc, 0x01, - 0x17, 0x22, 0xeb, 0xf2, 0x84, 0xf7, 0x5f, 0x07, 0xcd, 0xe3, 0x22, 0xba, 0x23, 0xf2, 0x11, - 0x81, 0x5e, 0x4b, 0x61, 0x6f, 0x09, 0x26, 0x52, 0xf9, 0x49, 0xe3, 0x69, 0x18, 0x8a, 0x81, - 0x56, 0x13, 0xf8, 0x26, 0x8a, 0x13, 0x38, 0xfc, 0x8f, 0x93, 0x2e, 0x4b, 0x84, 0x57, 0x39, - 0x56, 0x49, 0x83, 0x55, 0x54, 0x17, 0xac, 0x7b, 0x01, 0x70, 0xeb, 0x03, 0x6b, 0xb8, 0x04, - 0x79, 0xcc, 0xdc, 0x3e, 0x98, 0x67, 0xac, 0xe0, 0x60, 0x4f, 0x06, 0xda, 0x01, 0x63, 0x21, - 0x03, 0x14, 0x02, 0xb2, 0x1a, 0xd4, 0xad, 0xe2, 0x01, 0xe2, 0x08, 0xee, 0xd7, 0x20, 0x04, - 0xc5, 0x9b, 0xa0, 0xfc, 0x73, 0x16, 0xc3, 0x2e, 0x37, 0x35, 0xba, 0x7c, 0x8c, 0x0d, 0xfa, - 0x32, 0x2c, 0xce, 0xf8, 0x9e, 0x50, 0xb9, 0x84, 0xbb, 0x02, 0x05, 0x71, 0x70, 0x2c, 0x2e, - 0xc6, 0xf0, 0x8d, 0x04, 0x71, 0xe7, 0x2a, 0xcb, 0xc1, 0xd1, 0x95, 0x20, 0xef, 0x5c, 0x9a, - 0x11, 0x0b, 0x95, 0x3a, 0xe6, 0x6c, 0xcb, 0x42, 0x78, 0xdd, 0x29, 0x1b, 0x08, 0xaf, 0x46, - 0x21, 0xd3, 0xbd, 0x4d, 0x51, 0xe8, 0x46, 0x04, 0xf6, 0x31, 0x5b, 0x9c, 0xc5, 0x2e, 0xd6, - 0x8f, 0x48, 0xf6, 0xfb, 0x51, 0x33, 0x27, 0x18, 0xb3, 0xbc, 0x5e, 0x00, 0x6a, 0xca, 0x5b, - 0x50, 0xb1, 0xbd, 0x10, 0x6a, 0xc2, 0xfc, 0xd3, 0x00, 0xc7, 0x7a, 0xce, 0x75, 0x17, 0xb7, - 0xba, 0xdc, 0x33, 0xce, 0x9b, 0x5f, 0x03, 0x02, 0xe7, 0x52, 0xcc, 0x1e, 0x3f, 0x02, 0x17, - 0xcb, 0x1f, 0xe7, 0x9e, 0x42, 0x02, 0xcd, 0x36, 0x14, 0xda, 0x5c, 0xad, 0x5c, 0xe9, 0x5a, - 0xc1, 0xc2, 0x20, 0x38, 0xdf, 0x2e, 0x69, 0x05, 0x82, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe7, 0x7c, 0x5f, 0xe5, 0x82, 0x96, 0x89, 0x98, 0x9e, 0x07, 0x36, 0x35, - 0x3b, 0xc0, 0xff, 0xd6, 0xb6, 0x9f, 0xd0, 0x51, 0x2b, 0x5a, 0xa1, 0xd5, 0x29, 0x21, 0x67, - 0xba, 0x63, 0xdc, 0x57, 0x19, 0xc9, 0x78, 0xbe, 0x1c, 0xd9, 0xca, 0xbd, 0xb5, 0xc7, 0x57, - 0xbe, 0x48, 0xc0, 0x25, 0xe5, 0xef, 0xbe, 0x17, 0x93, 0x7c, 0x24, 0x50, 0x43, 0x32, 0xec, - 0x6d, 0xcd, 0xcf, 0xac, 0x80, 0xe2, 0x3a, 0x01, 0xce, 0x2c, 0x6d, 0x87, 0xd0, 0x18, 0x4c, - 0x17, 0x99, 0xa2, 0x54, 0xed, 0x03, 0x04, 0x7c, 0xf5, 0x7a, 0x3b, 0xfd, 0x49, 0xb8, 0xa4, - 0x43, 0x8d, 0x49, 0x6d, 0x74, 0x1c, 0xf5, 0xac, 0xa6, 0xbd, 0x02, 0xcc, 0x36, 0x60, 0x19, - 0x59, 0x21, 0x3b, 0x6b, 0x0c, 0xdb, 0x96, 0xa7, 0x5c, 0x17, 0xc3, 0xa6, 0x68, 0xa9, 0x7f, - 0x0d, 0x6a, 0x8c, 0x5c, 0xe1, 0x64, 0xa5, 0x18, 0xea, 0x9b, 0xa9, 0xa5, 0x0e, 0xa7, 0x51, - 0x91, 0xfd, 0x86, 0x1b, 0x0f, 0xf1, 0x0e, 0x62, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5f, 0xd2, 0x81, 0x52, 0x14, 0x44, 0x95, 0x7b, 0xab, 0x12, 0xf4, 0x71, 0x04, - 0xf5, 0xff, 0x29, 0x56, 0x20, 0xfd, 0x17, 0xdb, 0xdb, 0x79, 0x9f, 0x81, 0x3f, 0x97, 0x3e, - 0x1e, 0xae, 0xd4, 0x16, 0x2b, 0xdd, 0x8d, 0x72, 0xb0, 0x3b, 0x4e, 0x2f, 0x27, 0x9a, 0x05, - 0xde, 0xe9, 0x9e, 0x05, 0xf6, 0x8f, 0x38, 0xa4, 0xb1, 0xd7, 0xf6, 0x95, 0x2c, 0xfa, 0xfd, - 0xca, 0x67, 0x5f, 0xaf, 0xbb, 0x0a, 0x65, 0xf0, 0xdb, 0x75, 0xa3, 0x31, 0xb2, 0xc0, 0x4f, - 0x82, 0xfe, 0xd8, 0x1c, 0x6e, 0xdc, 0x02, 0x91, 0xac, 0xe5, 0xed, 0xb0, 0x79, 0x4c, 0x28, - 0x5a, 0x53, 0x38, 0xf2, 0x0c, 0x89, 0x11, 0x95, 0xbc, 0x1e, 0x9d, 0x71, 0x34, 0xd3, 0xc0, - 0x5c, 0x62, 0xb2, 0x51, 0xcc, 0xb3, 0xab, 0x84, 0x73, 0xcb, 0x5d, 0xaf, 0xc7, 0xb1, 0x9f, - 0x3b, 0x67, 0x50, 0xe4, 0x1b, 0xf2, 0x4c, 0x6a, 0xd8, 0x82, 0x80, 0x2a, 0x60, 0xd8, 0x8a, - 0x2f, 0xb0, 0xfd, 0x64, 0x20, 0x95, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, - 0xd2, 0x81, 0x52, 0x14, 0x44, 0x95, 0x7b, 0xab, 0x12, 0xf4, 0x71, 0x04, 0xf5, 0xff, 0x29, - 0x56, 0x20, 0xfd, 0x17, 0xdb, 0xdb, 0x79, 0x9f, 0x81, 0x3f, 0x97, 0x3e, 0x1e, 0xae, 0xd4, - 0x16, 0x91, 0xc9, 0x48, 0x45, 0x0f, 0x08, 0x44, 0xa9, 0xea, 0xa6, 0x05, 0x03, 0x56, 0x7d, - 0xd7, 0xc8, 0x7e, 0xd6, 0x64, 0xdb, 0x62, 0x36, 0xc4, 0x36, 0x85, 0x75, 0xd4, 0xbe, 0xad, - 0xe9, 0x74, 0x18, 0x56, 0xf5, 0xe3, 0x28, 0xf9, 0xba, 0x28, 0xc3, 0x26, 0x10, 0x20, 0x76, - 0x62, 0xb9, 0x63, 0x82, 0x81, 0x87, 0x8e, 0x43, 0xa3, 0x1d, 0x3f, 0x2d, 0xe4, 0xe4, 0x40, - 0xd6, 0xa7, 0x92, 0xa0, 0x1a, 0x00, 0xec, 0xd3, 0x72, 0x28, 0xb0, 0x0c, 0x89, 0x73, 0xda, - 0x40, 0x03, 0x37, 0x30, 0x05, 0x87, 0xf4, 0x89, 0x97, 0x46, 0x59, 0x59, 0xef, 0xe0, 0x9a, - 0xc5, 0xe0, 0x12, 0xe1, 0x4f, 0x51, 0xeb, 0x24, 0x03, 0xe7, 0x8f, 0x9a, 0xa4, 0x04, 0x83, - 0x44, 0xa4, 0x51, 0x19, 0xdc, 0x45, 0xeb, 0xfb, 0x2f, 0xdd, 0x18, 0x06, 0x66, 0x2a, 0xee, - 0x64, 0x5a, 0x85, 0xd9, 0x95, 0x1b, 0x71, 0x4a, 0x42, 0xad, 0xa3, 0x9d, 0x7b, 0x26, 0x8d, - 0xb0, 0xdb, 0x11, 0x87, 0x84, 0x84, 0x6e, 0xfe, 0x57, 0x1b, 0x2f, 0xec, 0xa1, 0x2d, 0x5d, - 0xbb, 0x15, 0xad, 0x28, 0xd2, 0x3c, 0x93, 0x39, 0x87, 0x60, 0x7f, 0xa4, - ], - &[ - 0x04, 0x00, 0x00, 0x00, 0x04, 0x5a, 0x15, 0x08, 0x38, 0x10, 0x6c, 0xf1, 0xbb, 0x14, 0x31, - 0xcf, 0x7a, 0x7a, 0x41, 0xbd, 0xd2, 0x6a, 0xa0, 0x18, 0x0e, 0xa7, 0x0a, 0x37, 0x25, 0x87, - 0x39, 0xc1, 0x91, 0x51, 0x71, 0x62, 0x1f, 0xc8, 0xb7, 0x40, 0x00, 0xa4, 0x59, 0x47, 0x00, - 0x86, 0x1a, 0x5e, 0x1a, 0x9e, 0xab, 0xc5, 0x21, 0x77, 0x2e, 0x8c, 0x06, 0x75, 0x23, 0x8b, - 0x3d, 0x87, 0xc4, 0x73, 0x43, 0x02, 0x4d, 0x84, 0x97, 0xe9, 0xa7, 0x82, 0x6a, 0xa3, 0xd4, - 0xe1, 0xe0, 0xe4, 0x8e, 0x32, 0xe7, 0x60, 0x79, 0x9f, 0x2a, 0x3f, 0xe2, 0x20, 0x2d, 0x90, - 0xd4, 0x3e, 0xa5, 0x89, 0xa8, 0xa3, 0x89, 0x4d, 0xed, 0x5f, 0x0a, 0x10, 0x4a, 0x4d, 0x0f, - 0x0f, 0x0f, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, - 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, - 0xff, 0xff, 0xff, 0x02, 0x52, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, - 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x77, 0x42, 0x8e, 0x76, 0xd2, 0x26, 0x31, 0x00, 0xd0, 0x8f, 0x73, 0xd9, 0xe1, 0x2b, 0x48, - 0x04, 0x94, 0xf1, 0xa3, 0x61, 0xb1, 0x49, 0x7a, 0x85, 0xd1, 0xca, 0xc1, 0x68, 0xb7, 0x6e, - 0x14, 0x9e, 0x9d, 0x16, 0xda, 0x0b, 0x28, 0x02, 0x5e, 0x80, 0x4f, 0xdb, 0xcb, 0x28, 0x3f, - 0x93, 0x2d, 0x1a, 0xa8, 0xcc, 0x19, 0x00, 0x25, 0x05, 0x94, 0x05, 0x24, 0xfb, 0x43, 0xbb, - 0xe7, 0x8d, 0x04, 0x03, 0x38, 0x93, 0x55, 0x0a, 0x22, 0xb3, 0xcf, 0xa9, 0xea, 0x4a, 0xd9, - 0xa1, 0x91, 0x61, 0x45, 0x14, 0x55, 0xd1, 0x66, 0x9c, 0x90, 0x21, 0xc9, 0xf8, 0x77, 0xdb, - 0xc4, 0x64, 0x12, 0x59, 0xad, 0x25, 0x03, 0x33, 0xe2, 0x1e, 0x26, 0x20, 0xc8, 0x91, 0x4b, - 0x6e, 0x28, 0xbc, 0xb1, 0xa2, 0x14, 0xa1, 0x9a, 0x39, 0x1c, 0xf3, 0x71, 0xe0, 0x89, 0x33, - 0x73, 0x97, 0xf7, 0x53, 0x59, 0x51, 0x44, 0x1b, 0x6b, 0x52, 0x90, 0x32, 0x52, 0x5a, 0x70, - 0xd9, 0x75, 0xfa, 0x5d, 0x7c, 0x22, 0xe7, 0x8f, 0xb5, 0x05, 0x9f, 0xae, 0x45, 0x39, 0x12, - 0x02, 0xf0, 0x0a, 0x68, 0x98, 0x03, 0xf9, 0x08, 0xde, 0xab, 0xaf, 0x1b, 0xdb, 0xa8, 0x0c, - 0xde, 0x34, 0x09, 0xe6, 0x05, 0xae, 0xe9, 0x87, 0xa7, 0x54, 0xce, 0x80, 0x5f, 0x2f, 0xc0, - 0x08, 0xdf, 0xf1, 0x70, 0x23, 0xef, 0x9b, 0xcd, 0x75, 0x97, 0x2b, 0x85, 0xec, 0xf6, 0x41, - 0xa2, 0x45, 0xf6, 0xa6, 0xb1, 0xe8, 0x41, 0x4b, 0xa0, 0xa3, 0x3d, 0xb1, 0xb0, 0xf0, 0xc4, - 0xce, 0xad, 0x6a, 0xc8, 0x7a, 0x32, 0xcf, 0xe9, 0x32, 0x87, 0x73, 0xfe, 0x73, 0x57, 0x28, - 0x4f, 0x0c, 0x0f, 0xa8, 0x9c, 0x33, 0x72, 0x33, 0x26, 0x89, 0x27, 0x85, 0xe8, 0x95, 0x4b, - 0x6b, 0x17, 0x5a, 0x5b, 0x9d, 0x80, 0xb2, 0x8a, 0xb2, 0x06, 0x53, 0x29, 0x6b, 0x13, 0x2b, - 0x0a, 0x8e, 0xc7, 0xc5, 0xfe, 0x1e, 0xe4, 0xcb, 0x5e, 0xf5, 0x82, 0x24, 0x45, 0x17, 0x3b, - 0x8b, 0xbf, 0x26, 0xe7, 0x5f, 0x81, 0x18, 0xf7, 0xf2, 0xe8, 0xb3, 0x4c, 0x00, 0x1f, 0xae, - 0xda, 0xf9, 0xc3, 0x41, 0xf4, 0x26, 0x91, 0xa0, 0xb0, 0x96, 0x43, 0x91, 0x06, 0x7b, 0xb0, - 0x26, 0xa2, 0x74, 0x39, 0x22, 0xe5, 0xa7, 0x2b, 0xef, 0x90, 0x06, 0xc0, 0x56, 0x56, 0xa9, - 0xe8, 0x81, 0x4c, 0x9d, 0x98, 0xea, 0x80, 0x56, 0x68, 0x1f, 0xcb, 0xcf, 0xda, 0x9a, 0xad, - 0xb5, 0x59, 0xd0, 0xe5, 0x7c, 0x88, 0xb7, 0x74, 0x95, 0x67, 0x0a, 0xff, 0x62, 0x72, 0x82, - 0x0b, 0x4a, 0xf9, 0xea, 0xce, 0xef, 0x3a, 0x8b, 0x65, 0x9c, 0xf0, 0x1e, 0x18, 0x59, 0xb2, - 0xd0, 0x82, 0x5a, 0x03, 0x9d, 0xff, 0xbc, 0x96, 0x18, 0xee, 0xa2, 0x65, 0x31, 0x67, 0xfd, - 0xe9, 0xaa, 0x70, 0x0f, 0x8e, 0xa3, 0x76, 0xa7, 0xde, 0xe1, 0x0a, 0x0e, 0x3d, 0x24, 0xe6, - 0xdf, 0x07, 0xae, 0x33, 0x06, 0x3a, 0xe5, 0x4d, 0xe5, 0xf2, 0x45, 0xa9, 0xa9, 0x0f, 0x7b, - 0x5d, 0x67, 0xc4, 0xa0, 0xa2, 0xd9, 0x49, 0x43, 0xa8, 0x18, 0x31, 0x46, 0x5a, 0x5c, 0xb6, - 0x40, 0xc4, 0xf4, 0x32, 0xf5, 0xe9, 0xef, 0xe6, 0xb0, 0x24, 0x9f, 0x33, 0x3b, 0x2c, 0xb7, - 0xf6, 0x65, 0x4b, 0x73, 0x48, 0x3c, 0xf2, 0xe0, 0x81, 0x53, 0x6d, 0xc0, 0x3a, 0xaf, 0x65, - 0x9f, 0xff, 0x9e, 0xf1, 0x8f, 0x87, 0xca, 0x47, 0x01, 0xb3, 0x7d, 0x62, 0xcf, 0x9f, 0x4e, - 0x9e, 0x0d, 0xc2, 0x24, 0xa2, 0x92, 0x23, 0xcd, 0x41, 0xdd, 0x22, 0x97, 0x95, 0x12, 0x3c, - 0xdf, 0x29, 0xe4, 0xc8, 0x2f, 0x16, 0xb1, 0x63, 0x17, 0x93, 0x33, 0xba, 0xe1, 0x7c, 0xc1, - 0x45, 0x19, 0x10, 0xb5, 0x44, 0x2e, 0xf9, 0xf4, 0xfe, 0x61, 0x24, 0x07, 0xc2, 0x8e, 0xa3, - 0x20, 0x37, 0xcb, 0xcd, 0x4d, 0xdc, 0xff, 0x9a, 0x3d, 0xe9, 0x20, 0x18, 0x6a, 0xd4, 0x41, - 0x43, 0x00, 0x07, 0xe4, 0xc0, 0x96, 0x39, 0xb0, 0xa5, 0x47, 0x39, 0xdd, 0x9d, 0x12, 0xba, - 0x4f, 0x0f, 0x8b, 0x5c, 0x65, 0x3f, 0xbe, 0xf6, 0x33, 0x26, 0x45, 0xf6, 0x36, 0xbd, 0xd6, - 0x97, 0x96, 0x14, 0xa0, 0x6a, 0xb1, 0x4c, 0x88, 0x86, 0x93, 0x43, 0xf8, 0x2b, 0x3d, 0xb5, - 0x96, 0x39, 0xce, 0x05, 0x3e, 0xbf, 0x3c, 0x39, 0x1b, 0x74, 0x55, 0x54, 0xa2, 0xe3, 0x75, - 0xb6, 0xe7, 0x2e, 0x91, 0x2a, 0xbf, 0xc5, 0x0b, 0x5c, 0x5f, 0xc4, 0xa3, 0xb0, 0xec, 0x42, - 0xff, 0x5b, 0xa3, 0x31, 0x73, 0x81, 0x82, 0x59, 0x0c, 0x57, 0xe6, 0x01, 0x57, 0x23, 0xd1, - 0x3a, 0x66, 0xf5, 0xc5, 0x32, 0xdb, 0xbe, 0x0c, 0xd9, 0xd0, 0x67, 0xd8, 0xb9, 0x2f, 0xf2, - 0x32, 0xa4, 0x44, 0x26, 0x3a, 0x34, 0x98, 0x03, 0x85, 0x3a, 0xbf, 0xc6, 0x28, 0x97, 0x3e, - 0xc6, 0x02, 0x4b, 0x65, 0xc3, 0xe7, 0x04, 0x86, 0x89, 0xed, 0x09, 0xa5, 0x2c, 0x12, 0x2b, - 0xd7, 0x80, 0x32, 0x34, 0xd3, 0xd8, 0x76, 0x8e, 0x7c, 0xa8, 0x60, 0x6e, 0xc6, 0x74, 0xf8, - 0xdd, 0x1e, 0x29, 0x45, 0x0f, 0xf8, 0xff, 0x43, 0xfa, 0xf8, 0x89, 0xd9, 0xfe, 0x25, 0x9b, - 0xc4, 0xc8, 0xab, 0xf2, 0xd3, 0xf4, 0x03, 0xa9, 0x5f, 0x00, 0xdf, 0xf7, 0x9c, 0x78, 0x6e, - 0xd4, 0x76, 0xff, 0xf2, 0xb6, 0x6f, 0x01, 0x53, 0x65, 0x28, 0xe7, 0x57, 0xe4, 0x47, 0xf1, - 0x0b, 0x05, 0x3c, 0x81, 0x48, 0x2e, 0x6d, 0x8e, 0xb2, 0xa7, 0x4f, 0xe0, 0xcf, 0x29, 0x24, - 0x9a, 0x64, 0x39, 0x6f, 0x52, 0xd5, 0xd3, 0x23, 0x48, 0x7f, 0x6c, 0x6d, 0xda, 0x51, 0xbc, - 0x3e, 0xa9, 0x5b, 0xd4, 0xf9, 0x09, 0x52, 0x28, 0x8c, 0x38, 0x9e, 0x75, 0x62, 0xc8, 0x7e, - 0xa0, 0x1b, 0x28, 0x0e, 0x46, 0x69, 0xd3, 0xbc, 0xe3, 0x1b, 0xda, 0xb9, 0xb9, 0x9a, 0xaa, - 0x5b, 0x1c, 0x6b, 0x9c, 0xfd, 0xdb, 0x25, 0xdd, 0x06, 0x7d, 0xd3, 0xc7, 0x37, 0x36, 0xe6, - 0x5b, 0xf6, 0xf2, 0xdb, 0x6b, 0x90, 0x49, 0x15, 0x09, 0xab, 0x57, 0x84, 0x4b, 0x26, 0x42, - 0xf5, 0x3a, 0xd4, 0x42, 0xff, 0xe4, 0x10, 0x7d, 0x8f, 0x7b, 0x9d, 0x5c, 0xb4, 0x79, 0x5e, - 0x3b, 0x83, 0x31, 0x6d, 0x08, 0x39, 0x8f, 0x6c, 0xb8, 0x0d, 0x66, 0xbf, 0x60, 0x83, 0xb6, - 0x55, 0xa0, 0xcf, 0x4b, 0x21, 0xc7, 0xb4, 0x3f, 0x1b, 0x97, 0xb4, 0x9c, 0x54, 0x7f, 0x28, - 0xd8, 0x24, 0x96, 0xe0, 0xbb, 0x70, 0x80, 0x47, 0xc5, 0x69, 0x0e, 0x62, 0x9a, 0xd6, 0x56, - 0x5c, 0x0d, 0x73, 0x45, 0x2d, 0xaa, 0xf2, 0x18, 0x1c, 0x78, 0xe7, 0x6d, 0x51, 0x29, 0xa8, - 0x82, 0xbf, 0xfd, 0x39, 0x64, 0x93, 0x7c, 0x50, 0x7d, 0xed, 0xa5, 0x71, 0x56, 0xc9, 0xc9, - 0x2d, 0xbf, 0xd7, 0xe8, 0x1f, 0xf3, 0x79, 0x45, 0xbb, 0xa2, 0xf8, 0x8c, 0x47, 0x10, 0x69, - 0x3b, 0x23, 0xf1, 0x42, 0xca, 0x1a, 0x8c, 0x90, 0xf9, 0x5c, 0x37, 0x32, 0x4c, 0xc3, 0xb3, - 0x52, 0xe1, 0xaf, 0x16, 0xb3, 0xf8, 0x9c, 0x28, 0xbd, 0xcb, 0x41, 0x83, 0x70, 0x34, 0x6d, - 0xd0, 0x97, 0x15, 0x80, 0xea, 0x7d, 0x57, 0x1d, 0x49, 0x08, 0x80, 0xc3, 0x32, 0xa0, 0x61, - 0x62, 0x33, 0xd3, 0xc7, 0x21, 0x96, 0x78, 0x97, 0x02, 0xd5, 0x06, 0x72, 0x0c, 0x41, 0x7b, - 0x04, 0x05, 0xff, 0x35, 0x2d, 0xc0, 0x97, 0xbc, 0xbf, 0xac, 0x30, 0xaa, 0x22, 0x05, 0x5d, - 0x21, 0x0e, 0x94, 0xc3, 0x44, 0x28, 0xfe, 0x2c, 0x30, 0x36, 0x13, 0xeb, 0xca, 0xcc, 0xb3, - 0x8f, 0xaf, 0xab, 0x15, 0xac, 0xc6, 0x2a, 0x6d, 0x86, 0xfb, 0x65, 0x57, 0xbe, 0x63, 0x9e, - 0x33, 0xb9, 0xaa, 0x1f, 0x56, 0x06, 0x28, 0x85, 0xa0, 0xd5, 0xcb, 0x63, 0x90, 0xf8, 0x98, - 0xdf, 0xd5, 0x92, 0x05, 0x3a, 0x72, 0xc9, 0xc6, 0x4a, 0xf4, 0xd2, 0x6f, 0x44, 0xab, 0x10, - 0xdb, 0x8e, 0xd7, 0xed, 0xc2, 0x2e, 0x1a, 0x77, 0x41, 0x93, 0x30, 0xe5, 0x01, 0x97, 0x44, - 0x09, 0xef, 0x77, 0xce, 0x6c, 0x1e, 0x5c, 0xa7, 0x03, 0xee, 0xa1, 0x04, 0x71, 0x42, 0x3c, - 0x61, 0x11, 0x44, 0x37, 0xe7, 0xff, 0x64, 0x9a, 0xdd, 0x0b, 0x6d, 0x53, 0x89, 0x34, 0x16, - 0x9b, 0x07, 0x27, 0x39, 0xe7, 0x9a, 0xe8, 0x89, 0x0f, 0x12, 0x72, 0xb2, 0xc5, 0xd4, 0x64, - 0x62, 0x8a, 0xe7, 0x3d, 0x3b, 0xce, 0xc6, 0x93, 0xb8, 0x6b, 0x3e, 0x8b, 0xa1, 0x5f, 0x15, - 0x39, 0x18, 0xf5, 0xad, 0x43, 0xb9, 0x65, 0x8c, 0xfd, 0xc3, 0x6f, 0xda, 0x8a, 0x0c, 0xa0, - 0xa0, 0xf0, 0xc7, 0x9a, 0xe7, 0xcb, 0x49, 0x98, 0xb4, 0x14, 0x3e, 0x11, 0x10, 0x52, 0x8f, - 0xce, 0x4c, 0xe5, 0x1b, 0x18, 0x2d, 0xee, 0x8c, 0xf0, 0x13, 0xf0, 0xac, 0x15, 0x9f, 0x15, - 0xd0, 0x09, 0x85, 0xf3, 0xbd, 0xf5, 0xfd, 0xc1, 0xbf, 0xf9, 0xca, 0xfd, 0x6d, 0xb2, 0xb8, - 0x6c, 0xf8, 0xfc, 0x62, 0x49, 0xac, 0x97, 0x5a, 0xcf, 0x77, 0xf0, 0x5a, 0x6b, 0x54, 0xa4, - 0xce, 0xc7, 0x11, 0xb4, 0x3e, 0x12, 0x9e, 0xdc, 0xab, 0x0f, 0x29, 0x83, 0x23, 0xe8, 0xc9, - 0xb5, 0xd2, 0xef, 0x45, 0x34, 0xcf, 0x66, 0x79, 0x06, 0x67, 0xdc, 0x5f, 0x10, 0x9c, 0xdb, - 0xf7, 0xd7, 0x4d, 0xfe, 0xba, 0x3e, 0x45, 0x05, 0xce, 0x6a, 0xa8, 0xd6, 0x7f, 0xda, 0x31, - 0x91, 0xd5, 0x1e, 0x69, 0x22, 0x3c, 0xe8, 0xcd, 0x19, 0xf9, 0x82, 0xa1, 0xda, 0xf7, 0xd2, - 0x7d, 0x11, 0x7e, 0x32, 0x03, 0x3a, 0x10, 0x60, 0x8b, 0x7b, 0x50, 0x23, 0x50, 0x0b, 0xf9, - 0xa6, 0x0b, 0x6a, 0xd3, 0x06, 0x75, 0x94, 0x89, 0x46, 0xec, 0x70, 0x90, 0xdc, 0x61, 0xd1, - 0x54, 0x20, 0x09, 0x16, 0xbe, 0x15, 0x10, 0xfb, 0x30, 0x43, 0x72, 0xa1, 0x25, 0xf6, 0xa6, - 0xf9, 0x6c, 0x1a, 0x88, 0xd6, 0x95, 0xd5, 0xa4, 0x7e, 0x56, 0x4e, 0x50, 0x71, 0xf1, 0xaf, - 0x9a, 0xa1, 0xd7, 0x88, 0xf9, 0x5a, 0x41, 0xff, 0x70, 0x1d, 0x17, 0xcc, 0xb3, 0x6f, 0x7d, - 0xc7, 0x52, 0xf7, 0x4f, 0xeb, 0x77, 0x81, 0x5b, 0xa2, 0xca, 0x3e, 0xcb, 0x4c, 0xcf, 0x83, - 0x53, 0x5e, 0x44, 0xcf, 0x09, 0xdf, 0x32, 0x03, 0x4c, 0x98, 0x7a, 0x63, 0x39, 0x01, 0xd8, - 0xc3, 0x39, 0x4c, 0x21, 0x1c, 0x19, 0x3a, 0x5e, 0x93, 0x26, 0x53, 0x85, 0x43, 0x85, 0xb1, - 0x7b, 0x8e, 0x4d, 0xda, 0x86, 0xbb, 0xf5, 0x55, 0x4b, 0xc0, 0x39, 0x76, 0x11, 0x33, 0x19, - 0x08, 0x82, 0xe3, 0x6c, 0x0f, 0x16, 0xef, 0xf7, 0x03, 0xc4, 0xb6, 0xe5, 0xdc, 0xc3, 0x25, - 0xeb, 0xe0, 0x4c, 0x6a, 0x4f, 0x2b, 0xa3, 0x3c, 0x4e, 0x3a, 0x7a, 0x72, 0x6d, 0xf7, 0xf7, - 0xe7, 0xfb, 0x2c, 0x58, 0x3b, 0xa7, 0xca, 0x26, 0x56, 0x33, 0xbc, 0x5f, 0x43, 0xcb, 0xb6, - 0xc8, 0xe4, 0xc8, 0x3b, 0xf3, 0xba, 0xd7, 0x4e, 0xf8, 0x3e, 0x47, 0x6d, 0x08, 0x46, 0xa4, - 0xac, 0xd4, 0xca, 0x93, 0xce, 0x56, 0x48, 0x0e, 0x3d, 0x8a, 0x85, 0x39, 0x8c, 0x8b, 0x9c, - 0x0f, 0x96, 0x2c, 0xb2, 0x56, 0xd7, 0x7e, 0xd9, 0x38, 0xad, 0xd6, 0x71, 0x86, 0xa4, 0xe2, - 0xdc, 0xad, 0xb0, 0x94, 0x48, 0xfd, 0x85, 0xc6, 0x49, 0xec, 0x4d, 0x3a, 0xbc, 0xfb, 0x90, - 0x80, 0x0b, 0x92, 0x37, 0xf7, 0xd6, 0x6e, 0x10, 0x45, 0x03, 0xd6, 0x43, 0x9f, 0x4b, 0x24, - 0x3c, 0x49, 0x41, 0xd4, 0x41, 0x9e, 0xfa, 0x4c, 0xa9, 0x40, 0x03, 0xa4, 0x36, 0x53, 0x01, - 0x6e, 0xcf, 0x9f, 0x85, 0x4c, 0xa7, 0x69, 0x59, 0xf4, 0x60, 0xaf, 0xfc, 0xbc, 0x17, 0x62, - 0x9b, 0x47, 0x71, 0x56, 0x4c, 0xd3, 0xf1, 0x9a, 0x08, 0xbd, 0x35, 0x4f, 0x11, 0x27, 0xa2, - 0xcc, 0x7e, 0x8b, 0x34, 0x34, 0xa7, 0x6a, 0x2b, 0x96, 0x1d, 0xfa, 0xc9, 0x1e, 0x67, 0xed, - 0x3c, 0xb2, 0xe2, 0xa9, 0x88, 0x05, 0x3e, 0xbf, 0x72, 0x17, 0x9e, 0x64, 0xc9, 0x2f, 0xb7, - 0x82, 0x94, 0x98, 0xbe, 0xcf, 0x40, 0x6d, 0xed, 0x41, 0x01, 0x61, 0x66, 0xc8, 0xf1, 0xf1, - 0xca, 0x97, 0xa7, 0xa1, 0xf8, 0x51, 0x07, 0x59, 0xdb, 0x1c, 0x92, 0xc6, 0x18, 0xa8, 0x82, - 0xdc, 0x5d, 0xe4, 0xbe, 0x10, 0x22, 0x8e, 0x65, 0x8f, 0xea, 0x55, 0x3a, 0xed, 0xb0, 0x2e, - 0xd3, 0x3e, 0xd5, 0x11, 0x9b, 0xa6, 0x33, 0x35, 0x88, 0x91, 0x67, 0x1e, 0xa3, 0xab, 0xf2, - 0x78, 0xe2, 0x15, 0x95, 0x36, 0x8d, 0x3a, 0xf1, 0x37, 0xf1, 0xa0, 0x35, 0x6e, 0xdf, 0x4e, - 0x46, 0x8d, 0x6a, 0x71, 0xe7, 0xfe, 0xab, 0x02, 0x60, 0x39, 0x38, 0x00, 0xd8, 0x05, 0x7e, - 0x27, 0xae, 0x46, 0x84, 0x71, 0xb5, 0x37, 0xcf, 0x7e, 0x03, 0xc3, 0x2a, 0xde, 0xb8, 0x76, - 0x21, 0x85, 0x8d, 0xcd, 0x44, 0xf3, 0xe4, 0x32, 0xd2, 0x07, 0xc1, 0x46, 0x05, 0x14, 0xc0, - 0xa5, 0xc0, 0x79, 0x37, 0x9f, 0x5b, 0x8b, 0x79, 0x35, 0x2d, 0x78, 0x86, 0xb6, 0x06, 0x82, - 0x6f, 0x97, 0xf1, 0xe5, 0xdc, 0x84, 0x02, 0x02, 0x21, 0x54, 0xf8, 0x26, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfd, 0xe0, 0x1c, 0x5f, 0x5b, 0x7f, 0x01, 0xd9, 0xf6, 0xbb, 0x2b, 0xbc, 0xe9, - 0x3a, 0xc4, 0xa2, 0xf7, 0xc1, 0x15, 0x65, 0x39, 0x4b, 0x68, 0x4a, 0x5d, 0x48, 0x17, 0xf0, - 0x9d, 0xbd, 0x77, 0x15, 0x8d, 0x07, 0xbb, 0x95, 0xa5, 0x63, 0xd9, 0xca, 0x60, 0xdf, 0xd5, - 0xef, 0x73, 0x4c, 0x70, 0xc9, 0xf2, 0x37, 0x04, 0xf8, 0x77, 0x8f, 0x87, 0x23, 0xc8, 0x0c, - 0x48, 0xe8, 0xf4, 0xe7, 0xb6, 0x39, 0x4d, 0xba, 0x2a, 0xef, 0xa2, 0xc7, 0x10, 0xea, 0x55, - 0x84, 0xde, 0x33, 0x42, 0xd6, 0x46, 0xe8, 0xd5, 0x76, 0xb8, 0x24, 0x2c, 0x2a, 0x61, 0x49, - 0xea, 0xe2, 0xf2, 0xe7, 0x44, 0x8c, 0xf1, 0x6f, 0xc2, 0x74, 0xa5, 0xa1, 0xe4, 0xe8, 0x24, - 0x84, 0x9f, 0xaa, 0xad, 0xde, 0x11, 0x34, 0xc2, 0x81, 0x75, 0x8b, 0xba, 0xec, 0x71, 0x4e, - 0xbb, 0x08, 0x45, 0x26, 0x64, 0x7d, 0xce, 0x64, 0xb9, 0x79, 0xf3, 0x2a, 0x84, 0x3c, 0x69, - 0x1d, 0xec, 0x4e, 0x8b, 0x23, 0x3d, 0xe6, 0xd0, 0xce, 0x19, 0xa6, 0xad, 0xb4, 0x83, 0xda, - 0x78, 0x40, 0x3b, 0xb1, 0x69, 0xef, 0x1f, 0xd1, 0xe7, 0x11, 0xe7, 0x24, 0x24, 0x63, 0x9e, - 0x2a, 0xf8, 0xa1, 0x07, 0x26, 0x48, 0x10, 0x24, 0x8f, 0x14, 0xaa, 0x93, 0x1e, 0x35, 0x7d, - 0x99, 0x75, 0x30, 0x2a, 0x04, 0xf0, 0x63, 0xbb, 0x34, 0xad, 0xed, 0xd2, 0x32, 0xfe, 0xe2, - 0xee, 0x23, 0x39, 0xc3, 0xeb, 0xab, 0xbb, 0x2f, 0x27, 0x3a, 0x03, 0x42, 0xf4, 0xa4, 0xae, - 0x99, 0x73, 0x97, 0x64, 0xec, 0xa9, 0xc8, 0x7c, 0xed, 0xab, 0x34, 0x4d, 0xa5, 0x1c, 0x90, - 0xec, 0xc3, 0x7f, 0xa2, 0x01, 0x65, 0x2f, 0xf7, 0xb9, 0x20, 0xdb, 0x00, 0x00, 0xd2, 0xd9, - 0xf8, 0x82, 0x26, 0xa2, 0x28, 0xdc, 0xfd, 0x43, 0x2b, 0x65, 0x9a, 0x6c, 0x57, 0x79, 0x8b, - 0x44, 0xce, 0x78, 0x91, 0xa7, 0x9a, 0x68, 0x38, 0xf9, 0xd4, 0xe9, 0x8c, 0x91, 0x8e, 0x0c, - 0x81, 0x44, 0x9a, 0xc0, 0xb7, 0xd2, 0xa0, 0x08, 0x17, 0xbe, 0x55, 0xf9, 0xdd, 0x38, 0xf0, - 0x90, 0xe4, 0x76, 0x05, 0x8b, 0x49, 0x06, 0x8f, 0xaa, 0x10, 0x43, 0x13, 0xd9, 0x1a, 0xa0, - 0x24, 0xf0, 0xe4, 0x0e, 0x50, 0xa0, 0xde, 0xcf, 0x81, 0x60, 0x3f, 0xc9, 0xbe, 0x9b, 0x3c, - 0x0d, 0x95, 0x6c, 0xa6, 0xeb, 0x6f, 0x74, 0x45, 0x47, 0x3b, 0xbe, 0x83, 0xe1, 0x33, 0x7a, - 0xf0, 0x74, 0x3c, 0x70, 0x01, 0xc1, 0xcd, 0x1f, 0x4a, 0x6d, 0x66, 0xc6, 0x7f, 0x17, 0x30, - 0x61, 0x9a, 0xe6, 0x31, 0x0b, 0x14, 0xcf, 0x8d, 0xb4, 0x6a, 0x93, 0x1c, 0xc5, 0xc7, 0xa5, - 0xe0, 0x2b, 0x32, 0x88, 0x21, 0x9d, 0x86, 0x93, 0xaf, 0xae, 0x97, 0x9e, 0xda, 0xf3, 0xe7, - 0x45, 0x81, 0x84, 0xcb, 0x67, 0xa0, 0xd8, 0x35, 0xd4, 0x40, 0xf6, 0xdc, 0xc7, 0x24, 0x66, - 0x6e, 0x3d, 0x88, 0x79, 0xd6, 0x3d, 0x9b, 0xf9, 0x77, 0x1b, 0xe9, 0xa8, 0x63, 0xde, 0x20, - 0xab, 0x9e, 0xe3, 0x01, 0xf6, 0xe2, 0x91, 0x0f, 0xf0, 0x58, 0x65, 0x7c, 0x61, 0x19, 0x7a, - 0xad, 0xab, 0x96, 0x17, 0x47, 0x0f, 0x9b, 0x7a, 0x1a, 0x2d, 0x37, 0xde, 0xa8, 0x51, 0xac, - 0x09, 0x36, 0x4a, 0x72, 0x30, 0x22, 0x1a, 0x0e, 0x39, 0x29, 0xd8, 0xff, 0xc5, 0xca, 0xfd, - 0x92, 0xdc, 0x04, 0x0f, 0x5c, 0x6e, 0x34, 0xed, 0xc6, 0x44, 0x3e, 0x2e, 0x4f, 0x52, 0x97, - 0x4f, 0xce, 0x85, 0x16, 0xcb, 0x24, 0x6a, 0x9e, 0xb0, 0x86, 0xe1, 0x48, 0x73, 0x85, 0xb5, - 0x92, 0x8a, 0xba, 0x8d, 0x9f, 0x5a, 0xab, 0x5e, 0xf9, 0x6e, 0xf8, 0x64, 0x56, 0x74, 0xba, - 0xd7, 0xa5, 0x67, 0xb7, 0x4f, 0x43, 0xa3, 0x76, 0x7a, 0x28, 0xf7, 0xb2, 0x76, 0x4b, 0xfa, - 0x61, 0x2d, 0x19, 0x7b, 0x20, 0xe8, 0x85, 0x3b, 0x54, 0x53, 0x2d, 0xf7, 0xa8, 0x13, 0xbf, - 0x05, 0xc9, 0xbd, 0x18, 0x37, 0xe8, 0x8b, 0x8d, 0x54, 0xf1, 0xc7, 0x7f, 0x18, 0xc1, 0x47, - 0xb0, 0xb5, 0x31, 0x64, 0xb1, 0x3a, 0x5c, 0x60, 0x2e, 0x97, 0xa8, 0x83, 0xc8, 0x87, 0x70, - 0x34, 0x9e, 0x64, 0x6b, 0x3f, 0x65, 0x7a, 0x1d, 0x80, 0x25, 0xa5, 0x63, 0x25, 0xb0, 0x4e, - 0x5b, 0x06, 0x23, 0xb6, 0xd8, 0xd2, 0xb9, 0x24, 0x64, 0xcb, 0xba, 0x20, 0xf2, 0x06, 0x18, - 0x37, 0x33, 0x38, 0x04, 0x85, 0xb8, 0x63, 0x33, 0xce, 0x2a, 0xd4, 0xb9, 0xe0, 0x92, 0x0f, - 0x8c, 0xcc, 0x77, 0xca, 0x85, 0xa1, 0xb4, 0xb5, 0x74, 0x33, 0x5d, 0xfe, 0x25, 0x20, 0x06, - 0xd0, 0x4f, 0x05, 0xe2, 0xd7, 0xf6, 0x73, 0x4f, 0xe5, 0xcc, 0x09, 0x58, 0xaa, 0x49, 0xe9, - 0x44, 0x22, 0xc6, 0x82, 0x59, 0xf2, 0x8a, 0x51, 0xac, 0xfa, 0x9e, 0xd8, 0x8d, 0x77, 0x36, - 0xab, 0xdb, 0x65, 0x40, 0x03, 0x99, 0x71, 0x43, 0x06, 0xd6, 0xec, 0x22, 0x6c, 0xdd, 0x9d, - 0xf5, 0x9b, 0xdf, 0x54, 0x9e, 0x11, 0x20, 0x75, 0x5c, 0x83, 0x88, 0x08, 0xfd, 0x94, 0x37, - 0x09, 0xbe, 0x4d, 0xea, 0x89, 0xc4, 0x7d, 0x58, 0xf9, 0xa4, 0xd4, 0xa3, 0x9a, 0xa3, 0xf8, - 0x3d, 0x7e, 0xb7, 0x9f, 0x29, 0x2d, 0x97, 0x88, 0xc8, 0x04, 0x94, 0x66, 0x48, 0xd4, 0x3d, - 0x00, 0x21, 0x2a, 0x0c, 0xa6, 0x30, 0xe4, 0xc2, 0x31, 0x87, 0x97, 0x84, 0xb4, 0x69, 0x5f, - 0x80, 0xdb, 0x42, 0xca, 0x08, 0x6b, 0x0c, 0xbc, 0xf6, 0xd9, 0x6d, 0xe4, 0xbb, 0x58, 0x9c, - 0xc9, 0xd4, 0x15, 0xbb, 0x5f, 0x24, 0x27, 0x2d, 0xcd, 0xe5, 0x2a, 0xc4, 0xfa, 0xfa, 0x1e, - 0x7e, 0x95, 0xcc, 0x33, 0x07, 0x11, 0xa7, 0x7d, 0x03, 0xdf, 0xd2, 0x6c, 0xae, 0x6a, 0xcf, - 0xfe, 0x7f, 0x1f, 0x95, 0x5b, 0xed, 0xca, 0x1d, 0x8f, 0x72, 0x6c, 0x47, 0xfd, 0xfc, 0x6f, - 0x84, 0x91, 0xfa, 0xe5, 0x02, 0x88, 0xf2, 0xd7, 0xfa, 0x38, 0xb3, 0xc1, 0xce, 0x6b, 0xdd, - 0xc0, 0xfa, 0xf2, 0x57, 0xe7, 0x69, 0xe3, 0xe2, 0x5b, 0x8d, 0x24, 0xc3, 0xcd, 0x7e, 0xef, - 0x7e, 0x3f, 0x63, 0x73, 0x27, 0x91, 0xb9, 0x0d, 0xe4, 0x2f, 0x7b, 0x92, 0x6d, 0x50, 0xd1, - 0xca, 0x58, 0x36, 0xbf, 0xcb, 0xc3, 0x8d, 0x39, 0xf2, 0x1f, 0x78, 0x0c, 0x4d, 0xf8, 0x84, - 0x1f, 0x7d, 0xd6, 0x80, 0xac, 0xdf, 0x15, 0x48, 0xbc, 0xdd, 0x5d, 0xa6, 0x9a, 0xc0, 0x46, - 0x20, 0x54, 0xd0, 0x99, 0xf9, 0x70, 0x4b, 0xac, 0x78, 0x84, 0x63, 0xac, 0x3c, 0x0d, 0x49, - 0x51, 0x53, 0x38, 0xfc, 0xbd, 0xce, 0x58, 0x7f, 0x62, 0x60, 0xb0, 0x56, 0x59, 0x1e, 0x4e, - 0x4e, 0xc9, 0xd4, 0x74, 0x4e, 0x31, 0x47, 0xaa, 0xe1, 0xb3, 0x1b, 0xea, 0x39, 0xd7, 0x0f, - 0x3b, 0xd6, 0xfe, 0x63, 0xb2, 0x43, 0x61, 0x97, 0x13, 0x25, 0x1b, 0x42, 0x31, 0xc5, 0x5b, - 0x79, 0x47, 0x98, 0x6f, 0xdf, 0x77, 0xc6, 0x81, 0xdd, 0xcb, 0x9a, 0x4f, 0x38, 0x72, 0x3b, - 0x60, 0x06, 0xb9, 0xd2, 0x8c, 0xbc, 0x4a, 0x8e, 0x55, 0x50, 0xa9, 0xe0, 0x66, 0xb0, 0xe2, - 0xf7, 0x2d, 0x32, 0xc4, 0x0d, 0xf5, 0x4e, 0x8e, 0xdd, 0x8f, 0x38, 0xa6, 0xd5, 0xec, 0xea, - 0xbd, 0x56, 0xf2, 0x51, 0x86, 0x95, 0xcc, 0x49, 0x9d, 0x8f, 0x18, 0xe1, 0x87, 0x6f, 0x4a, - 0x9e, 0x65, 0xba, 0x6d, 0x98, 0x2d, 0xa1, 0x7c, 0x7d, 0xfc, 0x15, 0x4a, 0x9f, 0xf8, 0x4e, - 0xb6, 0x60, 0xc1, 0x59, 0x9a, 0x8a, 0x90, 0x5e, 0x97, 0xfd, 0xcb, 0xca, 0x38, 0x31, 0x31, - 0xfc, 0x0b, 0xd0, 0x95, 0x95, 0xc9, 0xe9, 0x21, 0x95, 0xf8, 0x63, 0x4d, 0x8d, 0x85, 0x37, - 0xb5, 0xf7, 0x69, 0x2b, 0xfd, 0x60, 0x03, 0x47, 0x94, 0x9f, 0x0e, 0x7c, 0x62, 0x8c, 0x7f, - 0x50, 0x90, 0xdd, 0x95, 0x88, 0x5d, 0x38, 0x3b, 0x44, 0x4f, 0x60, 0x2a, 0x46, 0x03, 0xf2, - 0xf9, 0xbb, 0x2e, 0xbe, 0x28, 0xd8, 0xd9, 0x0a, 0x07, 0x1d, 0xaa, 0xce, 0xbd, 0xa8, 0xa2, - 0xb0, 0xbb, 0x23, 0xf0, 0xe2, 0x1b, 0x25, 0x16, 0x35, 0xa3, 0x1f, 0x63, 0xca, 0x52, 0x41, - 0x6f, 0x57, 0x54, 0x37, 0x30, 0x76, 0x82, 0x2c, 0x31, 0x9f, 0xb9, 0x8b, 0xac, 0x46, 0x03, - 0xcc, 0xca, 0x9d, 0xf8, 0x43, 0x80, 0x2e, 0xe3, 0xa2, 0x5b, 0xf5, 0x36, 0x24, 0x38, 0x54, - 0x72, 0x6d, 0x1b, 0xbe, 0xf2, 0x67, 0x3e, 0x89, 0x7c, 0x05, 0x79, 0x83, 0x60, 0x6a, 0xb5, - 0xfe, 0xe3, 0x43, 0x61, 0x2d, 0x93, 0x3d, 0xf7, 0xee, 0xe4, 0xd3, 0x08, 0x53, 0x61, 0x76, - 0x7a, 0x99, 0x6c, 0x87, 0x25, 0x87, 0xa2, 0x42, 0xc5, 0xa1, 0xc0, 0xaf, 0xf3, 0xab, 0x90, - 0x4b, 0x18, 0x4a, 0x5f, 0xc9, 0x7e, 0xec, 0x9c, 0xb6, 0xdd, 0x95, 0x6e, 0x11, 0x3f, 0x82, - 0x53, 0x89, 0x2d, 0xc1, 0x11, 0xfb, 0xaa, 0xc6, 0x63, 0x3a, 0x92, 0xe4, 0xe1, 0xbb, 0x78, - 0x9f, 0x72, 0x7e, 0x96, 0xb7, 0x57, 0x51, 0x5a, 0xf3, 0x81, 0x5b, 0x19, 0xf5, 0xe8, 0x21, - 0xa2, 0xf3, 0xbd, 0xb5, 0x01, 0x8a, 0x81, 0x25, 0x3b, 0x71, 0x2a, 0x2e, 0x92, 0xa9, 0x81, - 0x3d, 0xac, 0xd0, 0xdb, 0x91, 0x10, 0xab, 0x3b, 0xc4, 0x3b, 0xb6, 0xb8, 0xed, 0xa9, 0xd9, - 0xea, 0xed, 0x7d, 0x3c, 0x67, 0x6e, 0xf9, 0x8b, 0x7f, 0x47, 0xc7, 0xde, 0xb8, 0x8e, 0xea, - 0x72, 0xbc, 0x38, 0x74, 0x22, 0x6f, 0x45, 0x20, 0x6e, 0x19, 0x5a, 0x84, 0x96, 0x8a, 0x2e, - 0xec, 0x34, 0x1d, 0x7e, 0x51, 0xa3, 0x98, 0xe7, 0x42, 0xf6, 0xc7, 0xb2, 0x83, 0xee, 0x6b, - 0x20, 0xfe, 0xde, 0x54, 0x74, 0x0c, 0xaa, 0xb1, 0xbe, 0x3b, 0xaa, 0xa7, 0xcd, 0x04, 0x6f, - 0xc9, 0x0b, 0xc8, 0xa3, 0xc3, 0xad, 0x59, 0x57, 0x2b, 0xee, 0x82, 0x9d, 0xd6, 0xd5, 0xc9, - 0x96, 0xf0, 0xfc, 0x2a, 0x7a, 0xfc, 0x80, 0xfe, 0xa5, 0x10, 0x91, 0xb3, 0x77, 0xca, 0x9d, - 0x31, 0xcb, 0xdb, 0x87, 0xf9, 0xe3, 0x16, 0xe7, 0xa4, 0xbe, 0x26, 0xc8, 0xe7, 0x2a, 0x6c, - 0xda, 0xeb, 0xe0, 0xcd, 0x6c, 0x5e, 0x09, 0x50, 0x48, 0x52, 0x30, 0x86, 0x58, 0x2f, 0xfe, - 0x6a, 0xa6, 0xee, 0x29, 0x94, 0x3a, 0x5a, 0x30, 0x52, 0xae, 0x25, 0xb2, 0x52, 0xaf, 0x64, - 0x67, 0xfa, 0x60, 0x90, 0xe2, 0xef, 0x7b, 0xb8, 0xbe, 0xd2, 0xf5, 0x2b, 0x4a, 0x7b, 0x47, - 0x9f, 0x2c, 0x4d, 0xef, 0x5b, 0xd5, 0xf4, 0x27, 0xb5, 0x9e, 0xf8, 0xcf, 0xaa, 0xa4, 0xa4, - 0x82, 0x71, 0x2e, 0x28, 0x66, 0xdc, 0x58, 0x2d, 0x7d, 0xd6, 0xf7, 0xc8, 0xc2, 0x6b, 0xf2, - 0xb3, 0x65, 0x0b, 0xbf, 0x4f, 0x83, 0x11, 0x0a, 0x2f, 0xeb, 0x1f, 0xe8, 0xc7, 0xbf, 0x91, - 0xde, 0xe1, 0xb3, 0xb4, 0x0c, 0xc7, 0x69, 0x3d, 0x7c, 0x7b, 0x37, 0x62, 0xc6, 0x99, 0xc6, - 0x27, 0x56, 0x2b, 0xbd, 0xa2, 0x45, 0x91, 0x98, 0x17, 0x15, 0xaa, 0xa4, 0xd9, 0x93, 0xa4, - 0x3c, 0xdb, 0x1c, 0x8c, 0x5c, 0x9e, 0xb4, 0xab, 0x9f, 0x4e, 0xce, 0x1e, 0x62, 0x67, 0xec, - 0x2d, 0x24, 0xf3, 0x7f, 0x73, 0xd4, 0x82, 0x74, 0x84, 0xff, 0xf9, 0xcb, 0x68, 0x55, 0x73, - 0x79, 0x05, 0x08, 0x1a, 0x7d, 0xec, 0x99, 0x90, 0xc4, 0x00, 0xd5, 0x45, 0x0e, 0xf9, 0xe0, - 0x6d, 0xca, 0x45, 0x95, 0xf8, 0xc0, 0xf8, 0x40, 0x23, 0x1f, 0x14, 0x19, 0x81, 0x9c, 0x0e, - 0x49, 0x27, 0x5f, 0x18, 0x7b, 0x60, 0xfc, 0x75, 0x15, 0x65, 0xc3, 0xc1, 0x46, 0x05, 0xc9, - 0x6f, 0x36, 0x8d, 0xa6, 0x31, 0x6c, 0xaa, 0x0d, 0x24, 0x9a, 0x06, 0x51, 0xdf, 0x95, 0x54, - 0x4a, 0x60, 0x42, 0xfe, 0xed, 0x75, 0xf0, 0xd5, 0x48, 0x3d, 0xbb, 0x44, 0xc9, 0x00, 0x59, - 0xec, 0x6a, 0x7b, 0x44, 0x53, 0xae, 0x6c, 0x84, 0x65, 0xe6, 0x8e, 0x95, 0xb1, 0x71, 0x8e, - 0x0f, 0x86, 0xf8, 0xab, 0x7e, 0x85, 0xf2, 0xbf, 0xc3, 0x39, 0x7c, 0x7a, 0xd8, 0xc4, 0x18, - 0x18, 0xbb, 0x70, 0x8d, 0x1e, 0x19, 0xc3, 0xe7, 0x8a, 0x95, 0x84, 0x8d, 0xdd, 0x1d, 0x8e, - 0x6c, 0x99, 0x43, 0x0b, 0x07, 0xfc, 0x83, 0x42, 0x14, 0x54, 0x92, 0x96, 0x13, 0x61, 0xba, - 0x1a, 0xaa, 0xc7, 0x3a, 0x02, 0x3b, 0xd7, 0xe0, 0x8b, 0x9e, 0x14, 0x84, 0x63, 0x54, 0x51, - 0xd9, 0x30, 0x66, 0x9d, 0x35, 0xf0, 0x0e, 0xc6, 0x36, 0xd6, 0xdb, 0xec, 0x5a, 0x86, 0x33, - 0x64, 0x5b, 0x97, 0x24, 0x1d, 0xfb, 0x40, 0x53, 0x4c, 0x79, 0xd0, 0xc9, 0x24, 0xd0, 0xd3, - 0x0c, 0x1a, 0x12, 0x8d, 0x61, 0xe1, 0xa4, 0x18, 0x42, 0xce, 0x4e, 0x6f, 0x74, 0xaf, 0x29, - 0x56, 0xa0, 0x59, 0x9c, 0xf4, 0x92, 0x47, 0xe6, 0x6d, 0x08, 0xd7, 0x51, 0x71, 0x06, 0x47, - 0x56, 0x00, 0x42, 0xb9, 0x92, 0x32, 0x84, 0xb8, 0x3b, 0x1e, 0x5f, 0x15, 0xd5, 0xfd, 0xd1, - 0x0f, 0x06, 0x86, 0x72, 0xdc, 0x30, 0x34, 0x8a, 0x24, 0x17, 0x04, 0x81, 0xbb, 0x79, 0x32, - 0x38, 0x5b, 0x56, 0x5b, 0x74, 0x0d, 0x5f, 0x0f, 0xc9, 0x80, 0x32, 0x6c, 0x6f, 0x25, 0x88, - 0x85, 0xde, 0x45, 0x8b, 0xe5, 0x38, 0x96, 0x0d, 0xca, 0x77, 0xa0, 0x15, 0xe1, 0x08, 0x2d, - 0x67, 0xc1, 0xfa, 0x9a, 0x76, 0x9e, 0x7f, 0x25, 0x45, 0x3b, 0x36, 0x7b, 0xef, 0x7b, 0x28, - 0x55, 0x4e, 0x85, 0x01, 0x2e, 0xb6, 0x0d, 0xff, 0x27, 0xd7, 0xd9, 0x65, 0xe2, 0xed, 0x36, - 0xd6, 0x0e, 0x68, 0xdf, 0x89, 0xc7, 0x8d, 0xf5, 0xb5, 0x68, 0x93, 0x1a, 0x8c, 0x82, 0x82, - 0xaf, 0xc0, 0x10, 0x82, 0x9f, 0xd7, 0xc7, 0x1d, 0x04, 0xc0, 0xa5, 0x3c, 0x49, 0x22, 0x89, - 0x27, 0x45, 0x63, 0x9d, 0x56, 0xf7, 0xd0, 0xca, 0xcb, 0xb0, 0x98, 0x95, 0x9a, 0x29, 0x28, - 0x72, 0x27, 0x4b, 0x1d, 0xe7, 0xc2, 0xb0, 0x72, 0xd1, 0xaa, 0x33, 0x11, 0x40, 0xb4, 0x35, - 0xbc, 0x13, 0x05, 0xa9, 0xb5, 0x6e, 0x86, 0xb3, 0x83, 0x9d, 0x2d, 0x7c, 0x9f, 0x00, 0x14, - 0x32, 0xf3, 0x00, 0xed, 0xcf, 0xe0, 0x61, 0xe4, 0xda, 0x44, 0xcf, 0x7c, 0x12, 0xb4, 0x42, - 0x9c, 0x17, 0xc8, 0xa6, 0xdd, 0xcb, 0xec, 0x7f, 0xf1, 0x82, 0x8c, 0x1d, 0x03, 0x98, 0x61, - 0xc6, 0xe2, 0x0a, 0xff, 0xe7, 0xd2, 0x08, 0xf9, 0x1c, 0x7c, 0x75, 0x70, 0xa0, 0x17, 0x4b, - 0x98, 0x21, 0x3f, 0x9e, 0x4f, 0xfb, 0x76, 0x31, 0xd8, 0x53, 0x09, 0x42, 0x78, 0xe3, 0x1c, - 0x59, 0x15, 0x8b, 0x65, 0x1f, 0x26, 0x87, 0x79, 0xb2, 0xfb, 0x04, 0xff, 0x5d, 0xb9, 0x4e, - 0x52, 0x5c, 0x22, 0xd4, 0x5b, 0xf3, 0xdc, 0xab, 0x37, 0x69, 0xaf, 0xd9, 0x78, 0xe8, 0x2c, - 0x4f, 0xc4, 0xdb, 0xeb, 0x60, 0xb7, 0x0c, 0xaf, 0x07, 0x2d, 0xc9, 0x2a, 0x8d, 0x53, 0x78, - 0x6d, 0x68, 0xd0, 0xe7, 0x34, 0x40, 0x7c, 0x5c, 0x05, 0x35, 0x3b, 0xae, 0x10, 0x8e, 0x5a, - 0xb0, 0x97, 0x7a, 0xc6, 0xc7, 0x5f, 0xf2, 0x73, 0x1e, 0xfd, 0x57, 0xe3, 0x1e, 0x65, 0x9d, - 0xbc, 0x5c, 0x88, 0x5f, 0x54, 0x28, 0x25, 0x20, 0x9e, 0x5a, 0xdd, 0x05, 0x07, 0xaa, 0x11, - 0xe5, 0xab, 0x52, 0x57, 0xe0, 0x08, 0x9b, 0x3b, 0x55, 0xb4, 0x15, 0x48, 0x6e, 0x1f, 0x4a, - 0x78, 0xae, 0x81, 0x43, 0x9f, 0xf3, 0xc0, 0x48, 0x04, 0x84, 0xb1, 0x04, 0x17, 0xac, 0x6e, - 0x72, 0xee, 0xd5, 0x68, 0x2f, 0xbd, 0xd8, 0xc0, 0xad, 0x7b, 0x38, 0x3f, 0x26, 0xc6, 0x7d, - 0xa6, 0x05, 0xd6, 0x32, 0x82, 0x48, 0x16, 0xce, 0x2f, 0x89, 0x29, 0x8e, 0x99, 0x04, 0xf7, - 0x2a, 0xe3, 0xe0, 0x53, 0x65, 0xff, 0xbb, 0xce, 0x32, 0x8b, 0xef, 0x1f, 0x2d, 0x62, 0x06, - 0x4d, 0xb8, 0x7d, 0xd0, 0x89, 0x79, 0x5e, 0x9b, 0x1c, 0xc9, 0xf4, 0x1a, 0x6b, 0x3b, 0x7c, - 0xcc, 0xa6, 0xf7, 0xad, 0xd2, 0xa0, 0xfd, 0x65, 0x9b, 0x6a, 0xee, 0xa0, 0x4a, 0x7c, 0x47, - 0x49, 0x09, 0x4a, 0x9d, 0xb3, 0x1b, 0x9d, 0x58, 0xee, 0x03, 0x07, 0x87, 0x7f, 0x1c, 0x3c, - 0xe5, 0xb5, 0x2e, 0xc0, 0xa8, 0x22, 0x85, 0xa2, 0x59, 0x21, 0x48, 0xee, 0x95, 0xd1, 0x00, - 0x89, 0x5b, 0x18, 0x2a, 0x02, 0x0c, 0x88, 0x4a, 0x79, 0xbf, 0xd6, 0xdf, 0x0b, 0xb5, 0x21, - 0xa2, 0xd1, 0x89, 0x91, 0xd2, 0x09, 0x39, 0xe1, 0x0d, 0xec, 0x1f, 0x1e, 0x28, 0x86, 0xab, - 0x15, 0x22, 0xfc, 0xad, 0x6b, 0x0e, 0xd8, 0xd8, 0x85, 0x1f, 0xa6, 0x35, 0x03, 0x2c, 0x09, - 0xcf, 0xe2, 0x31, 0xb5, 0x4d, 0x70, 0x2c, 0xa3, 0xd1, 0x18, 0x56, 0x51, 0x7f, 0x70, 0x42, - 0xa7, 0xb4, 0x06, 0xef, 0x81, 0x93, 0xe3, 0x1d, 0xe7, 0x6c, 0xc2, 0x20, 0xe0, 0xe2, 0x78, - 0x29, 0x3f, 0xec, 0xe9, 0x71, 0x07, 0xfe, 0xa0, 0x78, 0x5b, 0x9e, 0x0e, 0x81, 0xa5, 0x7c, - 0xd8, 0x46, 0xbc, 0xb9, 0x36, 0x38, 0xf4, 0x7d, 0xb9, 0x02, 0x20, 0x58, 0x3c, 0xc3, 0xc1, - 0x57, 0x5a, 0xc3, 0x3b, 0xbc, 0xfd, 0x8c, 0xce, 0x59, 0x2d, 0x2e, 0x44, 0x36, 0xab, 0x22, - 0x24, 0x8a, 0x57, 0xb1, 0x9f, 0x52, 0x97, 0x3a, 0x85, 0xdb, 0xc6, 0x1b, 0xab, 0x28, 0x04, - 0xb6, 0xe9, 0x42, 0x82, 0xdf, 0x89, 0x19, 0x98, 0xe4, 0x5d, 0xc2, 0x18, 0x58, 0xfa, 0xa1, - 0x90, 0xcf, 0xb4, 0x58, 0x7e, 0xfa, 0xf6, 0x33, 0xc2, 0xc2, 0x64, 0xaf, 0xff, 0x21, 0x84, - 0x10, 0x24, 0xad, 0xd3, 0x76, 0xcd, 0xb6, 0x2d, 0x26, 0x33, 0xa6, 0x48, 0x62, 0x3c, 0xcf, - 0x6e, 0x07, 0xd5, 0x1b, 0x05, 0x4f, 0x25, 0xe0, 0x74, 0x79, 0xf5, 0xaf, 0xf5, 0x62, 0x79, - 0x17, 0xd8, 0x45, 0xaa, 0x11, 0xd6, 0xb2, 0x5e, 0xba, 0xe8, 0x59, 0xfe, 0xcb, 0x95, 0xe3, - 0xd3, 0xf7, 0x5f, 0x46, 0xa2, 0xdb, 0x06, 0x47, 0x3b, 0xd2, 0x07, 0x46, 0xf1, 0xb4, 0x45, - 0x40, 0xf7, 0x06, 0xd9, 0x59, 0x63, 0x93, 0xe3, 0x9b, 0x73, 0x09, 0xf7, 0x9a, 0x15, 0x47, - 0x1c, 0xcd, 0x39, 0x05, 0xf4, 0x46, 0x46, 0x7d, 0xca, 0x19, 0x41, 0xeb, 0xfd, 0xd1, 0x61, - 0xc7, 0x5f, 0xa1, 0x84, 0x19, 0x66, 0xdf, 0xf7, 0x7b, 0x2f, 0x2d, 0xcd, 0x8d, 0x7c, 0x31, - 0x47, 0x4f, 0x6b, 0x1c, 0x62, 0x75, 0x30, 0xcd, 0x11, 0xcc, 0x00, 0x23, 0x33, 0xc0, 0xb1, - 0xfd, 0x06, 0xc8, 0x8a, 0xed, 0x07, 0x00, 0x74, 0xc2, 0xf0, 0x87, 0x08, 0x0a, 0x3e, 0x84, - 0x4b, 0x8a, 0x32, 0xf3, 0x5b, 0xcf, 0x7a, 0xee, 0x15, 0xbe, 0x92, 0xe1, 0xad, 0x6e, 0x94, - 0xed, 0x3c, 0x1b, 0xd9, 0x75, 0x40, 0x9a, 0xf5, 0x26, 0x36, 0x47, 0x46, 0x35, 0x0b, 0x5c, - 0x5f, 0xf4, 0x14, 0xe2, 0x7d, 0xb5, 0x5d, 0xb9, 0x58, 0xcf, 0x92, 0x35, 0xcb, 0xc2, 0x7c, - 0x9a, 0x75, 0x52, 0x98, 0x8d, 0xfd, 0xd7, 0xb0, 0x3b, 0xd9, 0x0b, 0x07, 0xdb, 0xf3, 0xff, - 0xee, 0xeb, 0x7a, 0x57, 0x10, 0xcb, 0x9d, 0x61, 0x9d, 0xde, 0xe5, 0x47, 0xc2, 0x98, 0xa3, - 0x80, 0xc9, 0x6b, 0x05, 0xc7, 0x30, 0xb0, 0xde, 0x36, 0xc1, 0xe1, 0x72, 0x35, 0x61, 0x8d, - 0x52, 0xed, 0xa4, 0x64, 0x9b, 0xac, 0xcc, 0xee, 0xd7, 0x69, 0x6d, 0x72, 0x96, 0x2f, 0x6b, - 0x80, 0x15, 0xd6, 0x5c, 0xc4, 0x1f, 0xce, 0xbe, 0x57, 0xa9, 0x9f, 0xe2, 0x6d, 0xca, 0x14, - 0x16, 0x50, 0x55, 0x96, 0xda, 0x41, 0xa2, 0xd2, 0xbb, 0xd1, 0x99, 0x5e, 0x7f, 0xde, 0xee, - 0x17, 0xb2, 0x64, 0x15, 0x8d, 0xf3, 0x54, 0xc8, 0xbe, 0x4c, 0x96, 0x84, 0x6e, 0x00, 0xec, - 0xe9, 0x09, 0x2e, 0xfd, 0x4d, 0x31, 0xdf, 0x72, 0xdb, 0x82, 0x20, 0xcf, 0xb5, 0x3b, 0x0c, - 0xb3, 0xd1, 0x89, 0x26, 0x32, 0x74, 0xae, 0x17, 0xce, 0x0a, 0x45, 0xea, 0x5d, 0xa1, 0x5b, - 0xd2, 0xd8, 0xdf, 0x3a, 0x26, 0xdc, 0x21, 0x1e, 0x75, 0x88, 0x1b, 0x96, 0x70, 0x0d, 0xbe, - 0x91, 0x80, 0x58, 0xb1, 0xd5, 0xf4, 0x7e, 0x82, 0x47, 0x6c, 0xfa, 0x3b, 0x04, 0x14, 0x9d, - 0x77, 0x0f, 0x2b, 0x0e, 0x61, 0x24, 0xd0, 0xab, 0xb6, 0x31, 0xce, 0x6a, 0xa8, 0x40, 0xd5, - 0x80, 0x1e, 0xe7, 0x01, 0xbc, 0x4c, 0x4a, 0x7d, 0x18, 0x96, 0xdd, 0x37, 0x12, 0x6c, 0x89, - 0x66, 0x9c, 0x55, 0xb1, 0x3a, 0x87, 0xfc, 0x0c, 0x4e, 0x8d, 0xd5, 0xee, 0x32, 0x71, 0xa2, - 0xf8, 0x21, 0x7a, 0x6b, 0x28, 0x97, 0x53, 0xa6, 0xbe, 0x37, 0x43, 0x8f, 0x07, 0x8b, 0xf6, - 0x59, 0x26, 0x55, 0xfb, 0x55, 0x40, 0x7e, 0x95, 0x09, 0x07, 0x9a, 0x16, 0xf4, 0x18, 0xac, - 0xa0, 0x02, 0x82, 0x6d, 0xa7, 0xd7, 0x72, 0xc7, 0xb3, 0x70, 0xc0, 0x2d, 0x96, 0x48, 0x42, - 0xe3, 0x71, 0x0a, 0x26, 0xa8, 0x1a, 0x70, 0xcd, 0x08, 0xba, 0x0f, 0x00, 0xec, 0x9a, 0x5a, - 0xdd, 0x69, 0x12, 0xc1, 0x56, 0x20, 0xaa, 0x1b, 0x97, 0x01, 0x5e, 0x7e, 0x43, 0xe3, 0x09, - 0x3c, 0xf7, 0x8d, 0x21, 0xac, 0x65, 0x6c, 0x1c, 0x2b, 0xa1, 0xb0, 0x8a, 0x35, 0x28, 0x4f, - 0x29, 0xc4, 0xbc, 0x6c, 0xad, 0x0f, 0x0b, 0x61, 0x14, 0xb3, 0x09, 0xa1, 0xd3, 0x6c, 0x21, - 0x19, 0xf9, 0xa7, 0xc4, 0x08, 0x9e, 0x2d, 0x36, 0x07, 0x0d, 0xb1, 0x44, 0x6b, 0x43, 0x50, - 0x20, 0x00, 0x49, 0xa3, 0x08, 0xba, 0x00, 0xf4, 0x80, 0xb7, 0xb7, 0x6a, 0x12, 0xc1, 0x85, - 0xe8, 0xdd, 0x40, 0x9e, 0x3f, 0x60, 0x83, 0xca, 0x21, 0x4c, 0xbe, 0x8e, 0xb5, 0x92, 0x54, - 0xd3, 0x9e, 0x23, 0xe8, 0x27, 0xda, 0x80, 0x3d, 0x32, 0x1c, 0x4f, 0xae, 0x26, 0xff, 0xf2, - 0xae, 0x71, 0x91, 0x79, 0x29, 0x2d, 0x31, 0xf4, 0x1a, 0x6b, 0x6d, 0x80, 0x62, 0x90, 0xaf, - 0xa8, 0x67, 0xae, 0x06, 0x15, 0x8a, 0xf4, 0xfb, 0xd6, 0x54, 0xd8, 0x2e, 0x6f, 0xa4, 0xe5, - 0x45, 0x01, 0xb0, 0x3a, 0x02, 0x4f, 0x3a, 0x71, 0x3c, 0x8a, 0x85, 0x3b, 0xef, 0x95, 0x99, - 0x94, 0x7a, 0x2d, 0x3f, 0x14, 0x39, 0x0d, 0xf2, 0xd2, 0x9a, 0x39, 0xe0, 0x3d, 0xef, 0xb7, - 0x4b, 0x67, 0x15, 0xf4, 0xa0, 0x6e, 0x16, 0x5c, 0x93, 0x32, 0x55, 0x56, 0x2b, 0x71, 0x57, - 0x88, 0x80, 0xd4, 0x20, 0xf9, 0x3d, 0xc0, 0x74, 0x03, 0x06, 0xfb, 0x66, 0xa6, 0x1d, 0xef, - 0x47, 0x51, 0xa6, 0xa5, 0x64, 0xce, 0xb9, 0x51, 0xf1, 0xe4, 0xf3, 0x01, 0xc7, 0x18, 0x01, - 0xf4, 0xee, 0x7e, 0x95, 0x12, 0xa4, 0x40, 0x54, 0xde, 0xe5, 0x1c, 0x14, 0x1b, 0x5e, 0x19, - 0x1a, 0x1a, 0x9d, 0x55, 0x49, 0x43, 0x1c, 0x0e, 0x23, 0x40, 0x88, 0xdf, 0x11, 0xf7, 0x61, - 0x6f, 0x56, 0xc5, 0x2a, 0x90, 0x44, 0x82, 0xa9, 0xf6, 0xb8, 0x83, 0xc1, 0x1a, 0x46, 0x9a, - 0x1e, 0xd6, 0x5f, 0x55, 0x3c, 0x61, 0xab, 0x58, 0x51, 0x7a, 0x2b, 0x6c, 0x39, 0x51, 0x88, - 0x98, 0x66, 0x03, 0x22, 0x13, 0x2f, 0x01, 0x1a, 0x05, 0x76, 0xb1, 0x8a, 0xfd, 0x3d, 0x17, - 0x83, 0x1a, 0x60, 0xd8, 0x56, 0x90, 0x86, 0x42, 0x0a, 0x57, 0x1e, 0x80, 0x26, 0x57, 0x93, - 0xe2, 0x15, 0x0d, 0x56, 0x59, 0x47, 0xcd, 0x1f, 0xeb, 0xc2, 0x9a, 0x43, 0xe5, 0xb3, 0x4d, - 0x3d, 0x29, 0x4e, 0x1c, 0xb5, 0x33, 0xe3, 0xc5, 0x4d, 0x54, 0x59, 0x0e, 0x6a, 0x72, 0x45, - 0x68, 0x8d, 0x1a, 0x35, 0x3a, 0x79, 0x18, 0x9b, 0xa2, 0x9e, 0xfc, 0x07, 0x5e, 0xee, 0x55, - 0x78, 0xc3, 0xd4, 0x03, 0xd5, 0x85, 0x85, 0xb9, 0xd2, 0x8a, 0xaf, 0xb1, 0xbb, 0xbe, 0xbb, - 0xed, 0x37, 0x8c, 0x22, 0xff, 0x18, 0xd5, 0x88, 0xc0, 0x1f, 0x0e, 0x19, 0xab, 0xe3, 0xd4, - 0x86, 0x37, 0xf7, 0x15, 0x95, 0x33, 0x93, 0x07, 0xec, 0xd2, 0xf4, 0x5c, 0x86, 0x19, 0x40, - 0xa0, 0xed, 0xde, 0x8c, 0x52, 0x75, 0x6c, 0x78, 0xca, 0x26, 0x1a, 0x87, 0xc4, 0xa8, 0x46, - 0xe7, 0x2e, 0xfd, 0xef, 0xdb, 0x21, 0x19, 0x30, 0x3f, 0xdd, 0x31, 0xd3, 0x8f, 0xa2, 0xde, - 0x10, 0x57, 0x6b, 0xa5, 0xbe, 0x8e, 0x03, 0x4d, 0xa4, 0x18, 0x12, 0x0c, 0xb5, 0xb8, 0x22, - 0xe1, 0x7a, 0xeb, 0x7d, 0x60, 0xae, 0xc8, 0x4e, 0x7d, 0x39, 0x24, 0xe0, 0x7a, 0xb7, 0xd9, - 0x04, 0x13, 0x30, 0xb4, 0xf1, 0x61, 0x33, 0x61, 0x38, 0x17, 0x38, 0x8e, 0x24, 0x1b, 0x87, - 0xef, 0x2f, 0x15, 0xb6, 0xd5, 0x14, 0xc3, 0x6b, 0xbb, 0xa8, 0x12, 0x26, 0x98, 0x26, 0xbe, - 0x51, 0x9c, 0x6f, 0x15, 0xd1, 0x0e, 0xdc, 0x1f, 0x77, 0x83, 0x00, 0x0a, 0xdc, 0x6c, 0x3b, - 0x9b, 0x73, 0xf5, 0x00, 0xd0, 0xb7, 0xb9, 0x4a, 0xc9, 0x80, 0xf7, 0xce, 0xb0, 0x18, 0x39, - 0xa5, 0xe6, 0xba, 0x66, 0xbb, 0x82, 0x3f, 0x84, 0xdd, 0x59, 0xf7, 0x8f, 0x74, 0x1f, 0xb3, - 0xe6, 0x21, 0x3c, 0xdf, 0xb1, 0x48, 0x9a, 0xf6, 0x00, 0xd6, 0x29, 0x63, 0x0d, 0x6c, 0xe6, - 0x2e, 0xca, 0x99, 0x57, 0x81, 0x6c, 0x97, 0xf1, 0xd2, 0x24, 0xae, 0x7d, 0x46, 0x90, 0x87, - 0x86, 0xb5, 0x39, 0xd3, 0x94, 0x71, 0xc6, 0x2a, 0x2f, 0xf0, 0x72, 0x7b, 0xed, 0x8d, 0x13, - 0xb6, 0x1b, 0x20, 0xdf, 0x34, 0x1e, 0x8b, 0xc5, 0x35, 0xa4, 0xfe, 0xdf, 0x4c, 0x96, 0x59, - 0x9c, 0x64, 0x55, 0xfb, 0x1b, 0x91, 0x2e, 0xb9, 0x41, 0xe8, 0x6a, 0xe2, 0x1f, 0x2d, 0x60, - 0xcf, 0x95, 0xa0, 0xae, 0x10, 0x7e, 0x6c, 0x8c, 0x0c, 0xe6, 0x1e, 0x39, 0xa7, 0xd6, 0x57, - 0x97, 0xb6, 0x19, 0x9e, 0x04, 0x0f, 0x1b, 0xde, 0xa8, 0x8b, 0x61, 0x5b, 0xd7, 0x92, 0xd7, - 0x32, 0xf4, 0xbd, 0x7f, 0x6e, 0x4d, 0x15, 0x3d, 0x72, 0x3b, 0x58, 0x52, 0x1c, 0x48, 0xa4, - 0x79, 0xea, 0x38, 0xfe, 0x33, 0x68, 0x9e, 0x29, 0xd9, 0xc6, 0x75, 0xa8, 0xd8, 0x08, 0x53, - 0x58, 0xe1, 0xf4, 0xe2, 0x6b, 0x6a, 0xcc, 0xc4, 0x15, 0xd8, 0x8c, 0x76, 0xcf, 0x1f, 0xef, - 0x05, 0x75, 0xb2, 0x04, 0x57, 0x92, 0xf8, 0x66, 0x44, 0x09, 0x2f, 0xdb, 0xa9, 0x9e, 0xe2, - 0x5e, 0xb3, 0x13, 0x68, 0x1c, 0x73, 0x2d, 0x9c, 0x54, 0xb4, 0x0d, 0x3b, 0xd1, 0x36, 0xc8, - 0xec, 0x53, 0xb0, 0xf5, 0xf1, 0xb2, 0x35, 0x04, 0x03, 0x7e, 0x0f, 0x36, 0xa1, 0x8a, 0xd8, - 0x0e, 0xb4, 0xfb, 0x08, 0x80, 0xde, 0x68, 0x15, 0x0f, 0xde, 0x5b, 0x4e, 0x14, 0x90, 0x89, - 0xdb, 0x88, 0xb5, 0x38, 0xa0, 0xee, 0x7b, 0xcd, 0xcf, 0xae, 0x53, 0x11, 0xdb, 0x63, 0x07, - 0x2f, 0xc2, 0xed, 0x94, 0x72, 0xf4, 0x4f, 0x73, 0xe6, 0x40, 0xdd, 0xfa, 0xef, 0xed, 0x1c, - 0x62, 0x1d, 0x3a, 0x0f, 0x84, 0x03, 0xb2, 0x6d, 0xa9, 0x29, 0xb8, 0x0e, 0x5b, 0x38, 0x3f, - 0x51, 0xdd, 0x7e, 0x4e, 0xf6, 0xc0, 0x4d, 0x42, 0x11, 0xda, 0x39, 0xa6, 0xb6, 0x23, 0x2f, - 0xab, 0x18, 0x7b, 0x37, 0x99, 0x70, 0x91, 0x5f, 0x56, 0x6a, 0x43, 0x65, 0xf9, 0x1f, 0x6e, - 0x5a, 0xe9, 0x78, 0x1a, 0x47, 0x90, 0x2a, 0xde, 0x4e, 0xec, 0xef, 0x52, 0x29, 0x77, 0xf9, - 0xcb, 0xe8, 0x93, 0x3d, 0xfd, 0x52, 0x20, 0xec, 0x3a, 0xfa, 0x8b, 0x59, 0x27, 0x6b, 0x96, - 0x12, 0xcc, 0xfc, 0xbc, 0x2c, 0x3a, 0xeb, 0x3c, 0x98, 0xaf, 0x42, 0xe2, 0xb2, 0x4d, 0xae, - 0x01, 0xed, 0x94, 0x70, 0x6e, 0x25, 0xd7, 0x6b, 0x33, 0x44, 0xb1, 0x24, 0xa5, 0x0d, 0xfa, - 0x4b, 0x94, 0xb1, 0xcf, 0xd9, 0xf3, 0x35, 0xc3, 0x1b, 0x05, 0xcb, 0x15, 0xcb, 0xdd, 0x40, - 0xf9, 0xf0, 0x73, 0x13, 0xef, 0x79, 0x2e, 0x22, 0x18, 0x2c, 0x96, 0x41, 0x99, 0x1e, 0x9e, - 0xc3, 0x5d, 0x2e, 0x2e, 0x80, 0xc3, 0xcb, 0x8a, 0xe1, 0x12, 0xa2, 0xef, 0xe3, 0x29, 0xdd, - 0x77, 0xe8, 0x43, 0xca, 0xa4, 0xcd, 0xb1, 0xc3, 0xb4, 0x39, 0xf8, 0x12, 0x8d, 0x22, 0x14, - 0xd3, 0xbe, 0xcb, 0xe6, 0x02, 0xfc, 0x61, 0x6d, 0x89, 0x22, 0xc4, 0xdc, 0xe4, 0xac, 0x92, - 0x05, 0x45, 0x8c, 0x1e, 0x5b, 0x4d, 0x7c, 0x08, 0x28, 0x26, 0x15, 0x37, 0x46, 0x24, 0x3c, - 0x04, 0xb9, 0x5a, 0x9b, 0x48, 0xf8, 0xc6, 0x37, 0xa6, 0x22, 0x97, 0x91, 0xe1, 0x37, 0x89, - 0xe9, 0xf4, 0x24, 0xc1, 0x1e, 0x40, 0x1a, 0x5a, 0x68, 0x4c, 0xed, 0x9e, 0xe7, 0x27, 0x2a, - 0xef, 0x7c, 0x63, 0xa6, 0xf7, 0x9d, 0x86, 0x4f, 0x25, 0x23, 0x4a, 0x9c, 0xd4, 0x5f, 0xee, - 0xab, 0xe5, 0xa2, 0x34, 0x5d, 0xb0, 0xc7, 0xd8, 0xe8, 0xf5, 0x42, 0x0e, 0x81, 0xa6, 0x5a, - 0x2c, 0xf6, 0xc1, 0x85, 0x7e, 0xfa, 0xc8, 0x7f, 0x88, 0x9e, 0x6a, 0x40, 0xcd, 0x78, 0x33, - 0xe1, 0x3b, 0xc4, 0x7e, 0x27, 0x22, 0xb3, 0xff, 0x26, 0x08, 0x5a, 0x83, 0x2e, 0x3a, 0xb7, - 0x95, 0x1e, 0x14, 0x4a, 0x30, 0x12, 0xe9, 0x35, 0x35, 0x32, 0x61, 0xdb, 0x51, 0x2a, 0x76, - 0x1c, 0x78, 0x3a, 0xb7, 0xd9, 0xd5, 0x4d, 0x88, 0x0a, 0x14, 0x12, 0xb1, 0xa9, 0xa5, 0xb4, - 0xe5, 0x21, 0x38, 0x6d, 0x08, 0x61, 0x07, 0x70, 0x11, 0x90, 0xa4, 0x25, 0x5e, 0x4d, 0xf3, - 0x95, 0x1d, 0x3d, 0x8c, 0xce, 0x87, 0x4a, 0xb8, 0x79, 0x2b, 0xb0, 0xaa, 0xde, 0x5a, 0xac, - 0xe3, 0xf7, 0x26, 0x24, 0xb5, 0x95, 0x06, 0x64, 0x9a, 0x6c, 0xf1, 0x54, 0x92, 0x41, 0x21, - 0x9e, 0xfc, 0x79, 0xab, 0xbe, 0xc7, 0x87, 0xe5, 0x1f, 0xe2, 0xa6, 0xc5, 0xc1, 0x4b, 0x95, - 0x7a, 0x1e, 0x80, 0x1f, 0xb9, 0xce, 0xa2, 0xed, 0x31, 0xfe, 0x69, 0x40, 0x77, 0x98, 0xde, - 0x05, 0x7a, 0xff, 0x09, 0x93, 0xbc, 0x62, 0x6b, 0x03, 0x93, 0x43, 0x4e, 0xe0, 0x43, 0x0e, - 0x97, 0xe7, 0x31, 0x8b, 0x7d, 0x5f, 0x4c, 0xc8, 0x74, 0x1f, 0x21, 0xd1, 0xb0, 0x44, 0xbe, - 0xaf, 0x5f, 0x4f, 0x18, 0xdc, 0xca, 0xaf, 0x34, 0x4b, 0xe1, 0xa9, 0xf4, 0x61, 0xc9, 0x88, - 0xf5, 0x96, 0x56, 0x1a, 0xc1, 0xd5, 0x0d, 0x5c, 0xde, 0x25, 0xcb, 0x57, 0x1f, 0x34, 0x35, - 0x52, 0xa5, 0x3c, 0x32, 0x85, 0x0b, 0xe3, 0x96, 0x74, 0x46, 0x3d, 0x24, 0xd2, 0x50, 0x3d, - 0x6c, 0x23, 0x57, 0xb8, 0x6f, 0xf0, 0xda, 0x72, 0x6f, 0x1c, 0xb6, 0x2c, 0x39, 0x7c, 0x10, - 0xd6, 0x1f, 0xf1, 0x82, 0x90, 0x83, 0x69, 0xbe, 0x72, 0xd9, 0xd8, 0x43, 0xd4, 0x56, 0x04, - 0xe7, 0x2d, 0xa9, 0x08, 0xd0, 0xf6, 0x8e, 0xeb, 0x20, 0x02, 0x2b, 0x04, 0x9a, 0x67, 0x00, - 0x70, 0x28, 0xdf, 0x6d, 0x72, 0x44, 0x10, 0xd9, 0x6e, 0x38, 0xf7, 0x53, 0x99, 0xe9, 0xee, - 0xa7, 0xa0, 0xaf, 0x2f, 0x21, 0xb9, 0x9c, 0x8e, 0x1e, 0x1d, 0x45, 0xc3, 0xec, 0x18, 0xa6, - 0x27, 0x71, 0xc7, 0x34, 0x42, 0x6a, 0xa1, 0xd9, 0x79, 0x34, 0x28, 0x38, 0x25, 0x9c, 0x2f, - 0x1f, 0xa6, 0xcc, 0x5e, 0x8b, 0x07, 0xb2, 0x89, 0x59, 0x70, 0xcc, 0x36, 0xce, 0x51, 0xac, - 0xad, 0x66, 0xf0, 0xe3, 0x6d, 0x22, 0x67, 0x47, 0x54, 0x89, 0x18, 0xa3, 0x6e, 0x7b, 0x83, - 0x54, 0x67, 0x7c, 0x05, 0xda, 0xff, 0x9f, 0x2a, 0x98, 0x56, 0x20, 0x6b, 0xd3, 0x67, 0xa1, - 0xea, 0x35, 0x9d, 0x28, 0x46, 0x15, 0xb6, 0x0b, 0x85, 0xbe, 0x64, 0x9a, 0x7d, 0x80, 0x05, - 0x81, 0x3c, 0x7b, 0xac, 0xb7, 0x83, 0x1f, 0x3b, 0x09, 0xf3, 0x8f, 0xa4, 0x30, 0x1f, 0xfb, - 0xbf, 0xc5, 0xc7, 0xab, 0x22, 0x26, 0x40, 0xdb, 0xc8, 0x38, 0x2e, 0x95, 0xca, 0x38, 0x1c, - 0x38, 0xd2, 0xd3, 0x0c, 0x04, 0xf0, 0xdc, 0x91, 0x80, 0x22, 0x78, 0xe2, 0xc8, 0x6b, 0xb0, - 0xf0, 0x49, 0x08, 0x16, 0x9a, 0x18, 0x3f, 0xb7, 0xdc, 0x75, 0xce, 0x07, 0x9a, 0xc2, 0x40, - 0x9f, 0x03, 0xf4, 0xc9, 0xf2, 0xe8, 0x45, 0xa7, 0x2c, 0x3a, 0xf7, 0xe9, 0xca, 0x63, 0xf5, - 0x2c, 0xb7, 0x73, 0xfa, 0xcc, 0xfc, 0x30, 0x6b, 0x9d, 0x5c, 0xa3, 0xce, 0xd3, 0x25, 0x5f, - 0xb4, 0x35, 0xfe, 0x86, 0x4f, 0xa0, 0x13, 0xda, 0x76, 0x1a, 0xa1, 0x5e, 0x81, 0x0d, 0xc0, - 0x90, 0xbe, 0xc7, 0x59, 0xbc, 0x19, 0xba, 0x9c, 0xec, 0xa8, 0x6b, 0x1d, 0xc3, 0x0d, 0x49, - 0x31, 0x96, 0x8d, 0x41, 0x24, 0x10, 0xd7, 0x72, 0x15, 0x9a, 0xa5, 0xb8, 0x3e, 0x04, 0x06, - 0x95, 0x3b, 0xa8, 0xca, 0x2d, 0x58, 0xb8, 0x93, 0xca, 0xf4, 0xa0, 0x14, 0x00, 0x97, 0x8f, - 0x40, 0xe9, 0x15, 0xd6, 0x81, 0x41, 0x6f, 0x59, 0x40, 0x2a, 0xa5, 0x69, 0x21, 0xf6, 0xe8, - 0x29, 0x8d, 0x56, 0x24, 0xb4, 0x6e, 0x65, 0x85, 0x24, 0x95, 0x60, 0x31, 0x80, 0x4e, 0xdb, - 0x7c, 0xd3, 0xe8, 0x6d, 0x0a, 0x84, 0xe2, 0x29, 0x8c, 0x54, 0xed, 0xff, 0xce, 0x36, 0x57, - 0x8d, 0x7f, 0x44, 0x99, 0xa7, 0x5b, 0x4e, 0xa6, 0xd5, 0xae, 0x6b, 0x57, 0x23, 0x99, 0x5e, - 0x86, 0x9d, 0x79, 0x5f, 0xc5, 0x82, 0x14, 0x9a, 0x27, 0xdc, 0x5a, 0xc3, 0x3c, 0x8e, 0x75, - 0x95, 0xa9, 0x9e, 0x32, 0x35, 0x9b, 0x5d, 0x96, 0xbe, 0xff, 0xa4, 0x1a, 0x22, 0x48, 0x1a, - 0x7e, 0xde, 0x41, 0xc2, 0x39, 0xee, 0xf6, 0x3e, 0x2d, 0xcc, 0xb6, 0x1f, 0xcc, 0xb7, 0x1a, - 0x97, 0x59, 0x1d, 0x5f, 0xab, 0x53, 0xef, 0x94, 0x4d, 0xda, 0xc6, 0x32, 0x5d, 0x12, 0x47, - 0x9c, 0x36, 0x18, 0x42, 0x23, 0xcd, 0xfb, 0xcf, 0x96, 0xc8, 0x16, 0xf1, 0xb9, 0xcd, 0x1c, - 0xd1, 0x14, 0xb8, 0x4c, 0x87, 0x9f, 0x26, 0x12, 0x7b, 0xd9, 0x5e, 0x8a, 0x45, 0x58, 0x75, - 0x96, 0xe1, 0x15, 0x4f, 0xb1, 0x5b, 0x06, 0x30, 0x50, 0x7f, 0x5a, 0x5e, 0x0a, 0x96, 0x6e, - 0xff, 0x2a, 0x04, 0x96, 0x20, 0xe6, 0xde, 0x59, 0x10, 0x89, 0xfd, 0x00, 0x52, 0x56, 0x16, - 0xd7, 0xd4, 0x1f, 0xcb, 0x86, 0x60, 0x2c, 0x64, 0xb5, 0x81, 0x00, 0xab, 0xa6, 0xfb, 0x23, - 0x00, 0xc3, 0x86, 0x07, 0xd2, 0x19, 0xf6, 0xf1, 0x97, 0x6a, 0xc7, 0xc5, 0x02, 0x69, 0x18, - 0x3e, 0x3b, 0x58, 0xf4, 0xeb, 0x20, 0x2e, 0x8f, 0xda, 0xbf, 0x73, 0xd7, 0xe1, 0x9a, 0xb5, - 0x40, 0x0e, 0xb8, 0xf4, 0x82, 0x77, 0x1c, 0x8d, 0x8a, 0xd0, 0x60, 0xce, 0x38, 0xef, 0x8a, - 0x70, 0x00, 0xc0, 0x4c, 0x92, 0x56, 0x63, 0x34, 0x8a, 0xe7, 0x12, 0x1d, 0x6e, 0x69, 0xe5, - 0x6e, 0x46, 0xb4, 0x33, 0x62, 0x3a, 0xa6, 0x33, 0x36, 0xae, 0xa5, 0x52, 0x2e, 0xf3, 0x86, - 0xc6, 0xb2, 0xa3, 0x54, 0x64, 0xe0, 0xad, 0x87, 0xed, 0xf3, 0xa2, 0xdd, 0x59, 0xec, 0xf8, - 0xdb, 0x4b, 0x05, 0xd4, 0xf6, 0x25, 0x77, 0x69, 0x2a, 0xa6, 0x87, 0x26, 0x94, 0x82, 0xa1, - 0xff, 0xca, 0x8e, 0xfc, 0x5e, 0xca, 0x97, 0x98, 0xad, 0xa5, 0xcb, 0x7b, 0xb1, 0xcc, 0x9f, - 0xc9, 0xde, 0xf1, 0x3d, 0xa0, 0xd8, 0x0a, 0x1f, 0xfd, 0x8f, 0x1f, 0xfc, 0x0a, 0xdb, 0x9f, - 0xbd, 0xe4, 0xbb, 0x20, 0x8b, 0x07, 0x94, 0x0a, 0x90, 0x30, 0x76, 0xd0, 0xf5, 0x12, 0x24, - 0x16, 0x4c, 0xe0, 0x50, 0xc0, 0xd6, 0x7d, 0xb1, 0x77, 0x03, 0xbb, 0xb3, 0x8c, 0xfb, 0x5d, - 0x67, 0xba, 0x22, 0x11, 0x05, 0x9c, 0xe1, 0x2f, 0x3f, 0x3d, 0x4f, 0xf7, 0xb2, 0xbc, 0xdb, - 0xa0, 0xc9, 0x50, 0x83, 0x34, 0xd6, 0xa1, 0xa4, 0x5c, 0x88, 0x9e, 0x15, 0xc0, 0x2a, 0x12, - 0x8b, 0x6a, 0x2a, 0x31, 0xc6, 0xaa, 0xf2, 0x30, 0x3f, 0xa7, 0x26, 0xed, 0xb3, 0x93, 0x1b, - 0x03, 0xa8, 0xb0, 0xd7, 0x76, 0x8a, 0x05, 0x5a, 0x74, 0xe2, 0x80, 0xdd, 0x81, 0x1f, 0x07, - 0xe3, 0x70, 0x2b, 0x90, 0x3c, 0x3c, 0x54, 0xc7, 0x16, 0x36, 0x03, 0x92, 0x6c, 0x5c, 0x7b, - 0x02, 0x6e, 0x37, 0x6d, 0x6b, 0x2c, 0xfa, 0x74, 0x72, 0x5b, 0x87, 0x6c, 0x39, 0x81, 0x8c, - 0x09, 0xe3, 0x6a, 0xc4, 0x5a, 0xcb, 0x67, 0x7a, 0x89, 0x71, 0xb0, 0xf1, 0xc1, 0x0f, 0xbf, - 0x34, 0x98, 0x97, 0xae, 0xdf, 0x9f, 0xdc, 0xd2, 0x95, 0x26, 0xc5, 0x02, 0x6c, 0x6f, 0x08, - 0x28, 0xbc, 0x20, 0x1c, 0x49, 0x7c, 0x48, 0x19, 0xe6, 0x62, 0xbc, 0x2c, 0x75, 0x6e, 0xf6, - 0xae, 0x28, 0x81, 0x16, 0xe7, 0x85, 0x67, 0x98, 0x0c, 0x00, 0x55, 0x6c, 0x7d, 0xa5, 0xc0, - 0x42, 0xdc, 0x00, 0x9e, 0x3d, 0xcb, 0x50, 0x26, 0xb0, 0xf2, 0x90, 0x38, 0x56, 0x05, 0x12, - 0xf7, 0x5a, 0xf1, 0xc2, 0x37, 0xe2, 0x81, 0xb7, 0x58, 0xbf, 0x0a, 0xc2, 0x8c, 0xb4, 0x6a, - 0xc7, 0xf2, 0x2c, 0xf0, 0x95, 0x85, 0x01, 0x70, 0xdc, 0x2e, 0xf2, 0x41, 0x62, 0x66, 0x11, - 0x63, 0xee, 0x30, 0x80, 0xe4, 0x4c, 0x9d, 0x8b, 0xaf, 0xf9, 0x04, 0x9d, 0x15, 0xa4, 0xde, - 0xb5, 0x96, 0x19, 0x12, 0x33, 0x41, 0xfa, 0x8a, 0x3b, 0xf3, 0x97, 0x7a, 0xcd, 0x61, 0x73, - 0x9d, 0x45, 0xe8, 0x99, 0x18, 0x06, 0x4d, 0x79, 0xa9, 0x4b, 0x97, 0x27, 0xf3, 0x06, 0xe4, - 0x32, 0x3c, 0x47, 0x63, 0xfe, 0xb5, 0xfc, 0xd0, 0x8e, 0x10, 0x0d, 0x7f, 0x8f, 0x7b, 0x16, - 0xa8, 0x56, 0x35, 0x3d, 0xc0, 0x61, 0x5a, 0x0d, 0x68, 0x03, 0x21, 0x1b, 0xcc, 0xad, 0x6b, - 0xf4, 0xef, 0x54, 0x2a, 0xe0, 0x42, 0xd1, 0xb5, 0x49, 0x67, 0x11, 0x94, 0x29, 0xfc, 0xa2, - 0x1d, 0x9b, 0x13, 0x36, 0x54, 0xb2, 0x4b, 0xff, 0xfa, 0x93, 0xab, 0x8b, 0x9b, 0xcb, 0x63, - 0xfb, 0x34, 0x1d, 0xd8, 0xe6, 0xc0, 0xaa, 0x63, 0xb8, 0xbf, 0x67, 0xe8, 0x9f, 0x0b, 0x3f, - 0x48, 0xfd, 0xeb, 0xd1, 0x00, 0x6d, 0x41, 0xb7, 0xae, 0x8e, 0xde, 0xbc, 0x08, 0x19, 0x9d, - 0x8f, 0x17, 0x5c, 0xd0, 0x5c, 0x09, 0x4b, 0x86, 0x36, 0xfa, 0xc7, 0xe6, 0x2b, 0x87, 0x9d, - 0x91, 0x19, 0xfc, 0xcc, 0xc7, 0x48, 0x4f, 0xd0, 0xb0, 0x0a, 0x73, 0xfc, 0xd3, 0x35, 0x04, - 0x56, 0xdf, 0x57, 0xe8, 0x4d, 0x37, 0xea, 0xa6, 0x08, 0x1e, 0x58, 0x46, 0xb1, 0xc1, 0x64, - 0xcb, 0x24, 0x94, 0x13, 0xfc, 0xc2, 0xa0, 0xda, 0x4c, 0x28, 0x19, 0x79, 0xe2, 0x3a, 0xe1, - 0x13, 0x78, 0x39, 0xa6, 0x19, 0xb7, 0x83, 0x55, 0xef, 0x3d, 0x6f, 0x13, 0x0b, 0xa0, 0x9d, - 0xe8, 0x55, 0x6d, 0x2d, 0xfb, 0x2d, 0x52, 0xb3, 0xed, 0x6e, 0xa6, 0xac, 0x55, 0x86, 0xd9, - 0x98, 0x4c, 0x19, 0x68, 0x80, 0x03, 0xc6, 0xaa, 0x75, 0x87, 0x38, 0x1a, 0x2f, 0xfb, 0xa5, - 0x89, 0xbf, 0x95, 0x4f, 0x07, 0x44, 0xcb, 0x02, 0xf9, 0xe4, 0x0a, 0x25, 0x4b, 0x3e, 0x4a, - 0xe4, 0x75, 0xd3, 0x35, 0xc4, 0x52, 0x64, 0x69, 0xc6, 0xdd, 0xd5, 0xef, 0x15, 0xf6, 0x84, - 0x77, 0xb7, 0x99, 0x4e, 0x7e, 0x7e, 0x4a, 0x33, 0xe3, 0x3c, 0xb0, 0x54, 0x69, 0x82, 0x5a, - 0xb8, 0x7d, 0x3f, 0xf5, 0xe7, 0x7c, 0x49, 0x44, 0x82, 0xfb, 0x4e, 0x8c, 0x67, 0xdc, 0x82, - 0x3d, 0x1a, 0x79, 0x47, 0x8b, 0x3a, 0x92, 0x1f, 0xc4, 0x83, 0x05, 0x1f, 0x00, 0x9a, 0x5e, - 0x44, 0x89, 0xdd, 0x1a, 0x8a, 0x22, 0x26, 0xad, 0x30, 0x9e, 0xa7, 0xa4, 0x52, 0xa2, 0xf1, - 0xc5, 0x99, 0x27, 0x3e, 0x60, 0x04, 0x5c, 0x56, 0x9d, 0x99, 0x3f, 0x40, 0x0e, 0x09, 0x33, - 0x1d, 0x32, 0xd0, 0x91, 0x98, 0xb4, 0xc1, 0x88, 0xd4, 0x2e, 0x57, 0x86, 0xad, 0xb9, 0x10, - 0x76, 0xcf, 0xf9, 0xb9, 0xd0, 0xfe, 0x3e, 0x25, 0x7b, 0xb0, 0x05, 0xc8, 0x6c, 0xc8, 0x5f, - 0x01, 0x76, 0xb6, 0xb8, 0xe9, 0xe9, 0xdb, 0x7c, 0x08, 0xa6, 0x2c, 0xf2, 0x45, 0xf1, 0xaf, - 0xe8, 0x9c, 0xf8, 0x99, 0xcb, 0xcc, 0xcc, 0x20, 0x9e, 0xe7, 0x3f, 0xd0, 0xb5, 0xe0, 0xc9, - 0xd6, 0x0c, 0x1c, 0x4e, 0xa9, 0x05, 0x00, 0x04, 0x3d, 0x45, 0x91, 0x1c, 0x50, 0x85, 0x1b, - 0x91, 0xa0, 0xba, 0xf5, 0x5e, 0xd5, 0x0a, 0x75, 0x8b, 0x49, 0xb5, 0x30, 0xb8, 0x2b, 0x0a, - 0x59, 0x09, 0x00, 0x5c, 0x1c, 0x0b, 0x42, 0xab, 0x96, 0xf5, 0xfa, 0xd9, 0x58, 0xbe, 0x72, - 0x54, 0x7f, 0xdf, 0x14, 0x2a, 0x77, 0x32, 0xe2, 0xf9, 0x87, 0x67, 0x5e, 0x36, 0xdb, 0x6c, - 0x86, 0xb4, 0x4b, 0x64, 0xad, 0xfe, 0x26, 0xda, 0x10, 0x4f, 0x73, 0x62, 0xa0, 0x61, 0x33, - 0x7d, 0x71, 0x0c, 0x80, 0x81, 0x59, 0x98, 0xa1, 0x46, 0x51, 0x63, 0x13, 0xbc, 0xfd, 0x81, - 0xfe, 0x27, 0x1c, 0xcc, 0x63, 0xf5, 0xef, 0x8a, 0x26, 0xe5, 0x4f, 0xe4, 0x61, 0xc5, 0x30, - 0x9c, 0xc6, 0x2f, 0x84, 0xf6, 0xc2, 0x82, 0x41, 0xf8, 0xfd, 0x5a, 0x91, 0xd2, 0x6f, 0x18, - 0x2b, 0x4e, 0x63, 0x81, 0x8d, 0x56, 0xed, 0xb5, 0xc3, 0x19, 0x31, 0xc8, 0x47, 0x9e, 0xe3, - 0x81, 0x48, 0x49, 0x60, 0x6e, 0x1a, 0x2f, 0x12, 0xc4, 0xff, 0x79, 0xfa, 0x26, 0x29, 0x27, - 0x8a, 0x3c, 0xbd, 0x0f, 0x2e, 0x8a, 0xf6, 0xe3, 0x8a, 0x6b, 0x6a, 0x16, 0x3f, 0x90, 0xe1, - 0x74, 0x11, 0x78, 0x8b, 0x80, 0x5b, 0x3d, 0xed, 0x17, 0xda, 0x16, 0x33, 0xe0, 0x78, 0x0d, - 0x8d, 0x8d, 0xcc, 0xcf, 0xbe, 0xb7, 0xa1, 0xa8, 0xcd, 0x80, 0x01, 0xd5, 0x62, 0x60, 0x10, - 0x42, 0xc1, 0x52, 0x7a, 0x2d, 0x13, 0xd0, 0x14, 0x7c, 0xe1, 0x04, 0xf0, 0xb7, 0xe7, 0xef, - 0xb8, 0xcf, 0x7d, 0x40, 0x59, 0x54, 0xd8, 0x1f, 0x38, 0xcb, 0x24, 0xc0, 0xdc, 0x70, 0x4a, - 0x6e, 0x1b, 0x1e, 0x0e, 0x15, 0xac, 0x47, 0xfe, 0x8b, 0xba, 0xa3, 0xd6, 0xd8, 0x0e, 0xd0, - 0x6f, 0x1e, 0x12, 0xf6, 0x8e, 0xa9, 0xd9, 0x75, 0x38, 0xf4, 0x09, 0x6f, 0x92, 0xc0, 0xd3, - 0x5b, 0x35, 0xc3, 0x1e, 0x87, 0xda, 0xd3, 0x04, 0x3a, 0x4f, 0x4e, 0x7a, 0x26, 0x20, 0xc9, - 0x4d, 0xa9, 0x87, 0x60, 0x24, 0xec, 0xb5, 0xf0, 0x17, 0x6a, 0x68, 0x81, 0xc1, 0xa3, 0x40, - 0x48, 0xfd, 0x96, 0xa5, 0x44, 0x06, 0x66, 0xf9, 0x3c, 0x4d, 0xf9, 0xd9, 0x87, 0xd4, 0xa5, - 0xaf, 0x51, 0xa5, 0xde, 0x2b, 0x81, 0x68, 0x16, 0xf2, 0x81, 0x7e, 0xd3, 0xe7, 0xc5, 0x3b, - 0x47, 0xdd, 0x5d, 0x79, 0x9d, 0x44, 0xde, 0x20, 0x68, 0x88, 0x92, 0xf3, 0x53, 0x29, 0x10, - 0x04, 0x24, 0xb3, 0x59, 0xb4, 0x09, 0x43, 0x15, 0xca, 0x41, 0x09, 0x57, 0x1e, 0x36, 0x25, - 0xc5, 0x63, 0x45, 0x1d, 0xdc, 0x51, 0xc1, 0x51, 0xc3, 0x36, 0xa4, 0x3e, 0x95, 0x06, 0x02, - 0x67, 0x38, 0xda, 0x16, 0x45, 0x2f, 0x98, 0x65, 0x23, 0x19, 0x93, 0xd1, 0x53, 0x73, 0xef, - 0x6f, 0x5e, 0x2c, 0x79, 0x79, 0xb7, 0x8e, 0xe0, 0xf0, 0x83, 0xe1, 0x32, 0xe3, 0x0a, 0x04, - 0xa5, 0x65, 0x53, 0x08, 0x48, 0x66, 0x6b, 0xba, 0x73, 0xf6, 0x2b, 0x15, 0x85, 0xbd, 0x49, - 0xc2, 0x49, 0xe1, 0x64, 0x99, 0x82, 0x2e, 0x21, 0x09, 0x4a, 0x35, 0x6a, 0x3c, 0x36, 0x41, - 0x8a, 0xcf, 0xf7, 0x7b, 0x28, 0xe8, 0x94, 0xfa, 0x80, 0xac, 0x86, 0x19, 0x19, 0x9a, 0x2f, - 0x26, 0x10, 0x0e, 0xde, 0x26, 0xe3, 0x4f, 0xac, 0xdb, 0xf3, 0xc0, 0x7e, 0x7c, 0xb0, 0xaf, - 0x36, 0xb3, 0x7c, 0x15, 0xf6, 0xbc, 0x0e, 0xe6, 0xfc, 0x1e, 0x59, 0xf4, 0x10, 0x11, 0xd9, - 0x13, 0x57, 0x0f, 0x88, 0x5a, 0x0b, 0x13, 0x61, 0x71, 0x03, 0xd9, 0x76, 0x2c, 0x34, 0xaa, - 0x5b, 0xd2, 0x0b, 0xfc, 0xcc, 0x70, 0x36, 0x19, 0x1a, 0x26, 0x6c, 0xd0, 0x59, 0x09, 0x7a, - 0x3d, 0x74, 0x9a, 0x3b, 0x3f, 0x30, 0x77, 0x07, 0x29, 0xfb, 0x8a, 0xd2, 0xde, 0x4f, 0xa9, - 0x7c, 0x9b, 0x42, 0x16, 0x3b, 0xfa, 0xd2, 0xc9, 0x43, 0xa3, 0x0a, 0xa9, 0xcd, 0x72, 0xf0, - 0x65, 0x53, 0x5d, 0xc8, 0x67, 0x99, 0x16, 0xe3, 0xf7, 0x71, 0x89, 0x60, 0xa2, 0x5d, 0xfe, - 0x59, 0x28, 0x93, 0xbb, 0x2d, 0x41, 0x0a, 0x20, 0x7c, 0x0c, 0x17, 0x2c, 0x24, 0xe3, 0xf0, - 0x20, 0x13, 0x44, 0x7e, 0x83, 0x6d, 0x47, 0x4e, 0xee, 0x55, 0x9c, 0x7d, 0x43, 0xd2, 0xe8, - 0x25, 0x6a, 0x4f, 0x96, 0xeb, 0x65, 0x96, 0xa6, 0x10, 0x33, 0x9c, 0xbc, 0x00, 0x5a, 0xcd, - 0x00, 0x0d, 0xd5, 0xe2, 0x4a, 0x3b, 0x81, 0xf2, 0xdd, 0x77, 0x31, 0xcb, 0xf9, 0xde, 0x13, - 0x8b, 0xa8, 0x03, 0xb9, 0xea, 0xcb, 0x6c, 0x6e, 0xb8, 0x53, 0x3f, 0x34, 0x43, 0xa5, 0xff, - 0x56, 0x9f, 0x97, 0xc5, 0xdb, 0x38, 0x84, 0x43, 0x19, 0x3f, 0x75, 0x3e, 0x97, 0x05, 0x84, - 0x37, 0xc1, 0xa2, 0xde, 0x32, 0xe4, 0x3d, 0xc8, 0xd3, 0x74, 0x02, 0xee, 0x07, 0x84, 0x3d, - 0x57, 0x4a, 0xb9, 0x80, 0xf2, 0xe6, 0x48, 0x6a, 0x0d, 0xa9, 0x6f, 0xfc, 0x51, 0x00, 0x5c, - 0xa6, 0x57, 0x01, 0xdc, 0x0b, 0x26, 0xfd, 0xc0, 0x86, 0x24, 0xad, 0x99, 0x3d, 0xd9, 0x30, - 0xaa, 0x59, 0x5e, 0x22, 0xda, 0xed, 0x87, 0xaf, 0x42, 0xff, 0x6a, 0xa0, 0x30, 0x8c, 0x6c, - 0x7b, 0x7c, 0x4e, 0x39, 0x70, 0x54, 0xb8, 0xea, 0xfb, 0x72, 0x40, 0x02, 0x4c, 0x0f, 0x09, - 0xe8, 0x0b, 0xfd, 0xa2, 0xae, 0x4e, 0xea, 0x26, 0xde, 0xd3, 0x3c, 0xb0, 0x18, 0xec, 0x5a, - 0xef, 0xc0, 0x4c, 0xe4, 0x5a, 0xc0, 0x58, 0x1f, 0xca, 0x27, 0xc7, 0x27, 0x48, 0x89, 0x10, - 0x4b, 0x8d, 0x29, 0x14, 0xe3, 0xcf, 0x37, 0xfa, 0x27, 0xfc, 0xba, 0x9e, 0x1f, 0x5e, 0x02, - 0xaa, 0x76, 0xbf, 0xc5, 0x07, 0x3b, 0x04, 0xbd, 0x7b, 0x7f, 0x2b, 0x39, 0x47, 0x20, 0x4a, - 0x51, 0x67, 0xf8, 0x79, 0x73, 0x3a, 0x87, 0x88, 0xde, 0x4d, 0xea, 0x7c, 0xd8, 0xf4, 0xcc, - 0xa6, 0xe7, 0x96, 0x16, 0x56, 0x33, 0xb2, 0x4d, 0xc9, 0x74, 0x44, 0xa2, 0x9d, 0x9b, 0x63, - 0x39, 0xfe, 0x50, 0xb3, 0xb0, 0x0d, 0x08, 0x10, 0x9f, 0x6b, 0x97, 0x1c, 0x4b, 0xed, 0xe9, - 0xc4, 0x00, 0x92, 0x0a, 0x3e, 0x30, 0x8d, 0x92, 0xc1, 0x95, 0x35, 0x3e, 0x42, 0xca, 0x13, - 0x2c, 0x6a, 0xea, 0x2f, 0xef, 0x7b, 0xb1, 0xf8, 0x93, 0x2a, 0x97, 0x27, 0x00, 0x47, 0xb6, - 0x17, 0x96, 0x92, 0xbd, 0x10, 0x30, 0xa5, 0xce, 0xa0, 0xde, 0x22, 0x6f, 0x41, 0x5a, 0xdf, - 0x93, 0x76, 0x69, 0xac, 0xde, 0x01, 0x74, 0x87, 0x3d, 0x36, 0x3c, 0x2f, 0xbb, 0x82, 0x54, - 0x58, 0x95, 0x30, 0x3c, 0xbd, 0xc9, 0x13, 0x39, 0xa6, 0x6e, 0xc9, 0x7e, 0x04, 0x2a, 0x83, - 0x6a, 0x30, 0xf0, 0x3b, 0x7c, 0x19, 0x33, 0xd6, 0xc2, 0xab, 0x80, 0x02, 0x3f, 0x19, 0x92, - 0xed, 0x5f, 0x91, 0x4d, 0x24, 0x3a, 0x3f, 0xa6, 0x68, 0xa0, 0x31, 0x9b, 0xd4, 0x7e, 0x5f, - 0x89, 0xed, 0xa4, 0x75, 0x1d, 0x72, 0xed, 0x6c, 0x39, 0x55, 0x8d, 0xb6, 0x26, 0xc6, 0x7e, - 0x23, 0x7b, 0xc0, 0x90, 0x46, 0x58, 0xcc, 0x49, 0x2c, 0x46, 0x24, 0xba, 0x49, 0x7e, 0xc5, - 0x0e, 0x1c, 0x3e, 0x76, 0x4d, 0x42, 0x03, 0xe5, 0xbd, 0x92, 0x9c, 0xbf, 0xcc, 0x0f, 0x1e, - 0x6a, 0xb0, 0x1c, 0xcf, 0x0b, 0x15, 0xc2, 0xac, 0x6e, 0xca, 0x9c, 0xe6, 0xd8, 0x7e, 0xf1, - 0xfb, 0x10, 0x34, 0x05, 0x3b, 0x68, 0x92, 0x2f, 0x6f, 0x84, 0x2e, 0x14, 0xd6, 0x39, 0x7d, - 0xe6, 0xbf, 0x5b, 0xb4, 0x06, 0xab, 0xaa, 0x81, 0xaa, 0xd7, 0x8a, 0x97, 0x7c, 0xef, 0x4b, - 0x95, 0xab, 0xcf, 0x57, 0xd1, 0x3f, 0x99, 0x25, 0x49, 0x47, 0xbb, 0xa1, 0x87, 0x51, 0x43, - 0x4c, 0xd1, 0xcd, 0xcd, 0x11, 0x9f, 0x06, 0x87, 0x95, 0x31, 0x97, 0x67, 0x9e, 0x2d, 0xe0, - 0xfb, 0x1f, 0xba, 0x3c, 0xd8, 0xd6, 0x92, 0x33, 0x6e, 0xba, 0xc6, 0xda, 0xc2, 0xca, 0xc0, - 0x13, 0x69, 0x37, 0xb5, 0x57, 0xee, 0x91, 0xc4, 0x06, 0x5f, 0x65, 0xe5, 0x0b, 0xe6, 0xc2, - 0x60, 0xbe, 0x6d, 0x0d, 0x2c, 0x08, 0x7b, 0x89, 0x0e, 0x70, 0x15, 0x9e, 0x93, 0x28, 0xa2, - 0xd2, 0xbc, 0x0a, 0x64, 0xbb, 0x4c, 0xc5, 0x1c, 0xf8, 0xbe, 0x3d, 0x62, 0xa3, 0x22, 0x5d, - 0x12, 0xcb, 0x45, 0xb6, 0x47, 0x6c, 0xaf, 0xf1, 0xfa, 0xf1, 0xfc, 0x20, 0xe3, 0x3f, 0x13, - 0x8d, 0xa6, 0xe3, 0xb5, 0xfd, 0x6c, 0x41, 0x27, 0x88, 0xb0, 0x5b, 0x72, 0x37, 0x41, 0xcb, - 0x9a, 0xba, 0x00, 0x92, 0xd1, 0x13, 0x82, 0xb0, 0x4b, 0x19, 0x72, 0x60, 0x42, 0x93, 0x3c, - 0xf6, 0x05, 0x5e, 0x8b, 0x0b, 0xe6, 0x33, 0x51, 0xa1, 0xf8, 0x59, 0x6b, 0x47, 0x1b, 0x14, - 0x7f, 0x3d, 0xc0, 0xc1, 0x19, 0xed, 0x54, 0x0c, 0x29, 0xfa, 0x3e, 0x62, 0x9f, 0x97, 0x78, - 0x65, 0xc3, 0x59, 0xe6, 0xa7, 0x6f, 0xd2, 0xc7, 0x3a, 0x9b, 0xe1, 0xec, 0xf8, 0x55, 0x18, - 0xa7, 0x26, 0x34, 0xc8, 0xf4, 0x94, 0xf6, 0x86, 0x3f, 0x28, 0xa0, 0x9e, 0x0d, 0xe3, 0x5e, - 0x74, 0x9b, 0xfa, 0xe1, 0x74, 0x6d, 0xc2, 0xe0, 0xd4, 0xe7, 0xe8, 0x5f, 0x45, 0xcb, 0x2f, - 0xe4, 0xb8, 0x13, 0x04, 0xf8, 0x02, 0xf9, 0xcc, 0x40, 0x33, 0x44, 0x59, 0x33, 0x67, 0xa1, - 0x39, 0xb4, 0x7f, 0xe6, 0xcb, 0x72, 0xb7, 0x01, 0xfe, 0xdb, 0xb2, 0x88, 0x95, 0x35, 0xdb, - 0x9f, 0xb2, 0x98, 0x4e, 0x1b, 0x0a, 0x8f, 0xd7, 0x85, 0x86, 0x43, 0x74, 0xd8, 0x5b, 0x77, - 0x03, 0x53, 0x43, 0xd8, 0xd9, 0xd8, 0xb9, 0xb3, 0x5d, 0xe6, 0xa5, 0x20, 0x3f, 0x2e, 0xd6, - 0x47, 0x23, 0xf8, 0xec, 0xd3, 0x1f, 0x88, 0x2d, 0xa8, 0x67, 0x96, 0x9d, 0xc4, 0xea, 0x2d, - 0xc8, 0xcd, 0x2c, 0xfa, 0x75, 0xa7, 0x9a, 0xb2, 0x2f, 0xa0, 0x25, 0x0b, 0x46, 0x15, 0x70, - 0x6c, 0x8a, 0xbc, 0xd1, 0xbe, 0x27, 0xc4, 0x99, 0x0b, 0x30, 0xe8, 0xf2, 0x0c, 0xca, 0x27, - 0x57, 0xc2, 0x04, 0x86, 0x87, 0x19, 0xaf, 0x5a, 0xcb, 0x7a, 0xa6, 0x1f, 0x94, 0x59, 0x5f, - 0x5e, 0xe3, 0xec, 0xeb, 0x73, 0x0a, 0x83, 0xaf, 0x53, 0x40, 0x92, 0x04, 0xac, 0x6c, 0xe7, - 0x77, 0xc2, 0x00, 0xdd, 0x4b, 0x5e, 0xfd, 0x6f, 0x1a, 0xc7, 0xa6, 0xf8, 0xd2, 0x76, 0xb8, - 0x67, 0x9d, 0x05, 0x14, 0x9d, 0x22, 0x30, 0xe9, 0x74, 0xe4, 0xdc, 0x59, 0x9c, 0x13, 0x77, - 0x6c, 0x07, 0xd6, 0x4d, 0xef, 0xd0, 0x3f, 0x0f, 0xc7, 0x37, 0x3d, 0x7f, 0xe1, 0x97, 0xf7, - 0x5a, 0x0a, 0x5a, 0xb2, 0x41, 0x30, 0x40, 0xe6, 0x45, 0x58, 0x37, 0xdf, 0xe9, 0xbd, 0xb5, - 0xa7, 0x12, 0x7e, 0xd2, 0xc9, 0xbc, 0x83, 0x62, 0x81, 0x55, 0x82, 0x31, 0x4f, 0x1b, 0x17, - 0xdf, 0x67, 0x85, 0x3e, 0x47, 0xcd, 0x1d, 0x71, 0x8f, 0xb2, 0xbe, 0x81, 0x3f, 0x18, 0x3c, - 0x92, 0x66, 0x3c, 0xc6, 0x0c, 0x2d, 0x0b, 0x0e, 0x0a, 0xd7, 0xac, 0x28, 0x95, 0x60, 0x0b, - 0xcf, 0x75, 0x7c, 0xd4, 0xa5, 0x71, 0x45, 0xef, 0xc2, 0x5b, 0x1d, 0x86, 0x00, 0x0a, 0xd9, - 0x0d, 0x04, 0x8d, 0x29, 0x85, 0xce, 0x25, 0x05, 0x39, 0x4f, 0x7e, 0xf6, 0xd0, 0xc4, 0x1e, - 0xfd, 0xf5, 0xf1, 0x75, 0xe8, 0x4f, 0xd5, 0x47, 0x18, 0xa0, 0xae, 0x0a, 0x0e, 0x88, 0x13, - 0xde, 0xfa, 0x9a, 0x68, 0xfb, 0x96, 0x0b, 0x8c, 0xeb, 0xa5, 0x8d, 0x17, 0x31, 0x8d, 0xd0, - 0xb8, 0xb4, 0x1e, 0x7f, 0x78, 0x5a, 0x52, 0x65, 0x40, 0x17, 0x69, 0xb0, 0x34, 0xf3, 0x69, - 0x2e, 0x5e, 0x29, 0xb4, 0x1f, 0x0f, 0x81, 0x5f, 0x0b, 0x6a, 0x10, 0xd6, 0x55, 0x4f, 0xbd, - 0x20, 0xc6, 0x71, 0xf7, 0xce, 0xc9, 0x0f, 0xad, 0x2d, 0x11, 0xfc, 0x6f, 0x54, 0xc7, 0x9d, - 0x2f, 0xcb, 0x40, 0xc0, 0x87, 0xac, 0x05, 0xf7, 0xdf, 0x3f, 0x17, 0xb3, 0x44, 0x2d, 0x1d, - 0xe6, 0x92, 0x64, 0xec, 0xe2, 0x3b, 0x98, 0x66, 0xef, 0x37, 0xcd, 0xdf, 0xd8, 0x8e, 0x86, - 0x0c, 0x84, 0xff, 0x9c, 0x9c, 0x74, 0x0d, 0xa0, 0x6e, 0xc6, 0xa1, 0xac, 0x99, 0x65, 0x16, - 0x2b, 0xfa, 0xc1, 0x13, 0x07, 0xe8, 0x6e, 0x60, 0x83, 0x36, 0xba, 0x03, 0x7e, 0x04, 0x77, - 0x73, 0x27, 0x2c, 0x9b, 0xa6, 0x82, 0x62, 0xa3, 0x55, 0x16, 0x0a, 0x42, 0x46, 0x89, 0x19, - 0xb4, 0x8b, 0xb9, 0xc0, 0x4e, 0x39, 0x5d, 0xd9, 0x01, 0xf0, 0xe2, 0x29, 0x45, 0x87, 0xb5, - 0x6b, 0x46, 0xcc, 0x03, 0x39, 0xf7, 0xce, 0x15, 0x16, 0xa0, 0x38, 0xca, 0xcd, 0x4d, 0xeb, - 0xe4, 0x8b, 0x14, 0x29, 0xbf, 0x66, 0xa0, 0x9f, 0x23, 0xc0, 0x5c, 0x19, 0x40, 0xd3, 0x51, - 0xb2, 0xe7, 0xa3, 0xa3, 0xac, 0x4f, 0x7f, 0xb3, 0xd0, 0x9e, 0xf5, 0x7a, 0x3d, 0xde, 0x80, - 0x9c, 0xea, 0x05, 0x0f, 0x97, 0xf8, 0xf1, 0x4c, 0xed, 0x39, 0x74, 0x34, 0xea, 0x77, 0x8f, - 0xe6, 0xc2, 0xdb, 0x76, 0x14, 0x98, 0x8d, 0x1e, 0xe7, 0xb0, 0xf6, 0x16, 0xd7, 0x49, 0x91, - 0xa9, 0x35, 0xaa, 0x73, 0x67, 0x1b, 0x66, 0xef, 0x0f, 0xf6, 0xa4, 0x97, 0x24, 0x51, 0x54, - 0x6b, 0x61, 0xed, 0x23, 0x76, 0x5b, 0x53, 0x77, 0x06, 0x8a, 0x94, 0xe5, 0x84, 0xfe, 0x4b, - 0xf7, 0xc5, 0x29, 0x0d, 0x43, 0xc2, 0x28, 0x38, 0x08, 0x96, 0xef, 0x7a, 0xc7, 0x79, 0xf5, - 0x96, 0xaa, 0xdd, 0x22, 0xf6, 0xe0, 0x71, 0x84, 0xde, 0x85, 0xaf, 0x22, 0xeb, 0x2f, 0xc7, - 0x53, 0x39, 0xf1, 0x6b, 0x23, 0xca, 0x16, 0xe6, 0xcf, 0x3c, 0xed, 0xb6, 0x61, 0xd2, 0x97, - 0x99, 0x44, 0x32, 0xf8, 0x6d, 0x2c, 0x8f, 0x28, 0xe4, 0xe8, 0xb2, 0xb1, 0xe3, 0xe5, 0x7c, - 0xbb, 0x14, 0x80, 0xd5, 0x73, 0xfa, 0xe7, 0xbb, 0x50, 0x00, 0x4e, 0x1d, 0xfc, 0x3d, 0x31, - 0x57, 0x63, 0x80, 0x95, 0x31, 0xfe, 0x09, 0x53, 0x6b, 0x2d, 0xc4, 0xd8, 0x5a, 0x4d, 0x32, - 0x59, 0xff, 0x0e, 0xe9, 0x1f, 0x58, 0xe7, 0x62, 0x7d, 0xb5, 0xde, 0x29, 0xb4, 0x92, 0x68, - 0x06, 0x7e, 0xcf, 0x7a, 0x9f, 0x8e, 0x87, 0x78, 0x02, 0xd3, 0x3a, 0x20, 0x45, 0xdb, 0x36, - 0xea, 0x68, 0x81, 0xd7, 0xbf, 0x0d, 0x61, 0x96, 0x45, 0xcf, 0x63, 0x9f, 0xa1, 0xfb, 0x70, - 0x27, 0xdb, 0x73, 0xc0, 0x45, 0x21, 0x91, 0x83, 0x93, 0xa7, 0xa7, 0x89, 0xa7, 0xae, 0x16, - 0x39, 0x24, 0x5e, 0x64, 0x07, 0x67, 0xdc, 0x66, 0x44, 0x45, 0xee, 0x9e, 0xb1, 0xe7, 0xd9, - 0xa9, 0xf5, 0xbe, 0x53, 0x81, 0xe2, 0xb2, 0x32, 0xd1, 0x00, 0x6b, 0xe4, 0x2b, 0x3e, 0x0b, - 0x97, 0x2f, 0xea, 0x95, 0x86, 0x04, 0xb8, 0x08, 0x58, 0x82, 0x03, 0x56, 0x9b, 0xf4, 0x3a, - 0x87, 0x6a, 0xb4, 0x24, 0x0b, 0xc3, 0x49, 0xcb, 0xbb, 0x2a, 0x41, 0x13, 0xc5, 0x10, 0x95, - 0x3a, 0x64, 0xff, 0xb9, 0x35, 0x53, 0x1d, 0x74, 0x01, 0xd6, 0xba, 0xd8, 0x17, 0xd1, 0x70, - 0x34, 0x3f, 0x01, 0x44, 0x3f, 0x86, 0x28, 0x2e, 0x26, 0x3a, 0x21, 0x56, 0x9f, 0x3b, 0x67, - 0xb3, 0x7e, 0x47, 0x69, 0xde, 0x9c, 0x69, 0x48, 0x48, 0xe0, 0x7c, 0x75, 0xdc, 0xb8, 0x77, - 0x78, 0xfa, 0x64, 0x39, 0x77, 0x20, 0xb1, 0x3e, 0x8e, 0x38, 0xd8, 0x61, 0x27, 0xe4, 0x8e, - 0xa3, 0x22, 0x2c, 0xee, 0xad, 0xc2, 0x47, 0xd2, 0xe6, 0x15, 0x25, 0xe2, 0x98, 0x99, 0x86, - 0x94, 0x3c, 0x58, 0x51, 0x81, 0x4b, 0x4b, 0xb5, 0x18, 0xf5, 0x96, 0xa1, 0x67, 0x3a, 0x33, - 0x5b, 0x4b, 0x97, 0xea, 0xfa, 0x9d, 0x51, 0xcd, 0x91, 0x5b, 0xc7, 0xf8, 0x72, 0x23, 0xcb, - 0x47, 0x58, 0x5c, 0xce, 0xca, 0x66, 0xfb, 0xa5, 0x7b, 0x3d, 0xdc, 0x31, 0x10, 0x64, 0x3f, - 0x5e, 0xd3, 0x62, 0xeb, 0x24, 0x13, 0xfb, 0x30, 0x42, 0xb5, 0xaa, 0xc8, 0xe1, 0xc4, 0xc6, - 0x59, 0xbb, 0xad, 0x0b, 0x4d, 0x38, 0x3d, 0x82, 0x83, 0x66, 0x0c, 0xf3, 0x89, 0xe0, 0x30, - 0x21, 0x6f, 0x54, 0x3d, 0x37, 0x04, 0x42, 0x18, 0xe9, 0xb1, 0xa8, 0xea, 0xb0, 0xf9, 0x1e, - 0x8e, 0x41, 0x8a, 0xc8, 0x42, 0xc1, 0xe2, 0xf9, 0x9f, 0xde, 0x11, 0xbb, 0xe7, 0xf7, 0xce, - 0xf9, 0x02, 0x3c, 0x4b, 0xdc, 0x60, 0x65, 0xbf, 0x41, 0x61, 0x53, 0x70, 0xe9, 0xe6, 0x9a, - 0x5a, 0xfa, 0x54, 0x76, 0x33, 0x14, 0x69, 0x02, 0x83, 0x9b, 0x88, 0xcb, 0x6b, 0xca, 0x91, - 0xdd, 0x15, 0x05, 0x19, 0x66, 0x95, 0x2e, 0x5f, 0x62, 0xf2, 0xb4, 0xa6, 0x52, 0x25, 0xe1, - 0x39, 0x4d, 0x7f, 0x6f, 0x47, 0x84, 0xbb, 0xb8, 0xdb, 0x45, 0x7f, 0xca, 0x47, 0x7e, 0x34, - 0x30, 0x30, 0x16, 0xa8, 0x4b, 0x28, 0x41, 0x2b, 0xab, 0x26, 0xa0, 0x01, 0xba, 0xf0, 0x5e, - 0xad, 0xa7, 0x9f, 0xd3, 0x37, 0xd2, 0x02, 0x0b, 0x56, 0x36, 0x7c, 0x60, 0x35, 0xc3, 0xba, - 0x05, 0x25, 0x52, 0xdc, 0xa0, 0x92, 0x14, 0xaa, 0x29, 0xa0, 0x7c, 0x9a, 0x1b, 0x40, 0x69, - 0x50, 0x10, 0x9b, 0x30, 0xf3, 0xb6, 0x9d, 0x72, 0xd9, 0x78, 0x2a, 0x36, 0x86, 0x14, 0x89, - 0x5e, 0x6e, 0xd2, 0xc8, 0x9d, 0x71, 0xde, 0x52, 0x31, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xb3, 0x11, 0xe7, 0x4f, 0x42, 0xe7, 0xc3, 0xc2, 0xf3, 0x02, 0x0d, 0x12, - 0x67, 0x8b, 0x87, 0xcd, 0x7a, 0x16, 0xe8, 0x44, 0x20, 0x00, 0x41, 0x1c, 0x23, 0x26, 0xcd, - 0xae, 0x17, 0x9e, 0x7d, 0xb0, 0x84, 0x1f, 0xcd, 0x7b, 0x4e, 0x89, 0x2a, 0xd8, 0x5c, 0x9f, - 0xcc, 0x11, 0xa2, 0x2a, 0x1c, 0x87, 0xe3, 0xe2, 0xfa, 0x36, 0xad, 0xd2, 0x73, 0xbf, 0x15, - 0x0b, 0x04, 0xfe, 0x1c, 0x19, 0xb4, 0x36, 0x00, - ], - &[ - 0x04, 0x00, 0x00, 0x00, 0x45, 0x47, 0x89, 0xe1, 0xa2, 0x7f, 0x3e, 0x02, 0x06, 0xb1, 0x62, - 0x54, 0xd5, 0x8d, 0x17, 0x02, 0x9b, 0xd5, 0xad, 0x22, 0x81, 0x09, 0x09, 0x6c, 0x26, 0x11, - 0x7b, 0x44, 0x02, 0xcc, 0xaa, 0x8d, 0x7a, 0xf0, 0xb2, 0xef, 0x5a, 0xee, 0xd1, 0xd5, 0xfe, - 0x7d, 0x09, 0x01, 0x37, 0x85, 0xcd, 0x1a, 0xe6, 0x71, 0xda, 0x0c, 0x8e, 0x2f, 0x9c, 0x14, - 0xbd, 0x9c, 0xbb, 0xc1, 0x17, 0x85, 0x88, 0x82, 0x4a, 0xd8, 0x3a, 0x26, 0x9a, 0x74, 0x3f, - 0x8b, 0xb9, 0x08, 0xdf, 0xdf, 0xa2, 0xa2, 0x3c, 0x68, 0x32, 0xf9, 0xdc, 0x0a, 0x2a, 0x84, - 0xf9, 0xce, 0xf5, 0xc2, 0xf2, 0x4a, 0x43, 0x4f, 0xad, 0x3a, 0x0a, 0x10, 0x4a, 0x4d, 0x0f, - 0x0f, 0x0f, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, - 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, - 0xff, 0xff, 0xff, 0x02, 0x53, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, - 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0xe4, 0xcf, 0x04, 0x1c, 0xe2, 0x71, 0x4f, 0xce, 0x6b, 0x2d, 0xea, 0xc4, 0x8e, 0x63, 0xd6, - 0x61, 0xce, 0x0f, 0xb4, 0x62, 0x21, 0x02, 0xf1, 0x62, 0x75, 0xac, 0x8d, 0xa3, 0xf0, 0xb1, - 0xad, 0xb0, 0x66, 0xa1, 0x63, 0x28, 0xd5, 0x11, 0x76, 0x3a, 0x00, 0xfe, 0x5e, 0x4f, 0x92, - 0xd2, 0x2b, 0x35, 0x14, 0xfd, 0x59, 0xb1, 0xd6, 0xe2, 0x02, 0xa5, 0xc6, 0xd9, 0x89, 0x0b, - 0x55, 0x71, 0x05, 0x00, 0x0d, 0x9f, 0x2c, 0xa6, 0xf1, 0xf8, 0xfa, 0x39, 0x91, 0x5a, 0xa4, - 0x9e, 0xc7, 0x22, 0x01, 0x8c, 0x21, 0x01, 0x07, 0x7c, 0x22, 0xbf, 0xa2, 0x50, 0x49, 0x2b, - 0x61, 0x70, 0x3d, 0x1a, 0xf0, 0x35, 0x30, 0xd2, 0x34, 0x86, 0x63, 0x8d, 0xd2, 0xf5, 0xba, - 0x49, 0xd5, 0x37, 0xd1, 0xd8, 0xc4, 0x5f, 0x96, 0x5c, 0xe6, 0xa0, 0xa1, 0x4d, 0xd5, 0x09, - 0x7f, 0x44, 0x53, 0x21, 0x66, 0xe5, 0x34, 0x25, 0x5d, 0x64, 0x77, 0xb3, 0x11, 0x73, 0xfe, - 0xb4, 0x80, 0xec, 0x9b, 0xa5, 0xaa, 0xe0, 0xdb, 0x74, 0x25, 0x2d, 0xef, 0x31, 0x2b, 0xce, - 0xf4, 0x1a, 0x01, 0x11, 0x66, 0xd5, 0xf3, 0x3d, 0x8e, 0x07, 0x89, 0x11, 0x2c, 0x7a, 0xa6, - 0x0e, 0xd8, 0x6d, 0x96, 0x28, 0x7c, 0xfb, 0xe3, 0xe8, 0xe2, 0x0b, 0xe8, 0x2b, 0x94, 0xc9, - 0x7e, 0x4d, 0x41, 0xf6, 0xb8, 0x19, 0xfc, 0x36, 0x64, 0x9b, 0xa9, 0x1b, 0xc2, 0xce, 0x27, - 0x46, 0x13, 0xdc, 0x06, 0xa6, 0xef, 0x8f, 0xca, 0x00, 0x1a, 0xcc, 0x4c, 0x50, 0x28, 0xda, - 0xb5, 0x19, 0xf2, 0xb9, 0xb6, 0xff, 0xf9, 0xba, 0xf6, 0x76, 0xd1, 0xa6, 0x98, 0x57, 0xe5, - 0x0d, 0xe5, 0xf7, 0xc3, 0x76, 0x02, 0xe6, 0xa7, 0xeb, 0x95, 0x3b, 0xc3, 0xe1, 0xca, 0x4e, - 0x6e, 0x14, 0xc0, 0x24, 0xd5, 0x9a, 0x14, 0x5e, 0xd5, 0x28, 0x9f, 0xb3, 0x49, 0x8b, 0x53, - 0xf0, 0xda, 0x8f, 0x5a, 0x43, 0x54, 0x70, 0x3b, 0x12, 0xb0, 0x63, 0x88, 0xf3, 0x07, 0x74, - 0x14, 0x79, 0xfe, 0x70, 0xff, 0xc9, 0x5a, 0xe1, 0x43, 0x0c, 0xd8, 0x53, 0xba, 0x53, 0x77, - 0x8e, 0xc3, 0x3b, 0xe7, 0x71, 0xd7, 0x8e, 0x31, 0x2b, 0xd0, 0x24, 0x94, 0xc4, 0x62, 0xe2, - 0x58, 0xfd, 0x80, 0x76, 0x15, 0x51, 0x6d, 0x5d, 0xea, 0x59, 0x67, 0x9f, 0x85, 0x9b, 0x63, - 0xee, 0x04, 0xc8, 0x2b, 0x4f, 0xd4, 0x3f, 0xab, 0x33, 0x1b, 0x5f, 0xc8, 0x4f, 0x5b, 0xfe, - 0x14, 0x9c, 0x71, 0xad, 0xc4, 0x2b, 0x60, 0xe8, 0x57, 0xa7, 0xca, 0xd2, 0x3f, 0x48, 0x4a, - 0x5b, 0x7b, 0xc7, 0xb0, 0xef, 0x66, 0xe4, 0xfb, 0xa0, 0xee, 0xf3, 0xd3, 0x74, 0x7b, 0xd0, - 0xa6, 0x37, 0x29, 0xbf, 0x9c, 0xc5, 0xd9, 0xdd, 0x91, 0x7b, 0x04, 0x03, 0x68, 0xdd, 0x6b, - 0x0c, 0xa7, 0xbf, 0x7a, 0x60, 0x70, 0xee, 0x95, 0x4e, 0x40, 0xd9, 0x01, 0xf2, 0xff, 0xa6, - 0xd5, 0x0c, 0xaa, 0xf4, 0xd7, 0x21, 0x65, 0x3d, 0x5f, 0xe2, 0x54, 0xe8, 0x2f, 0xc5, 0x0d, - 0xde, 0xbb, 0x91, 0xc0, 0x5e, 0x8b, 0x83, 0xe5, 0x5b, 0xc4, 0xda, 0xfc, 0x45, 0xb0, 0x78, - 0xfc, 0xe6, 0x39, 0x1c, 0xc4, 0xd0, 0x45, 0x61, 0x28, 0xdd, 0x80, 0xee, 0x1c, 0x99, 0x65, - 0xa9, 0x37, 0x1d, 0x2f, 0x6c, 0x75, 0x33, 0xa6, 0xa4, 0x9a, 0xf3, 0xad, 0x85, 0xda, 0x81, - 0xbc, 0xe5, 0x14, 0x8b, 0x23, 0x58, 0x94, 0x43, 0x16, 0x6a, 0xe6, 0x21, 0x37, 0x85, 0x5c, - 0x0d, 0x69, 0x83, 0x09, 0xd0, 0x10, 0x8f, 0x07, 0x93, 0xe7, 0xa9, 0xa8, 0x52, 0xa9, 0xc7, - 0x59, 0x7b, 0x10, 0x40, 0xfa, 0xfe, 0xb9, 0xd6, 0x93, 0x21, 0x96, 0x48, 0xa3, 0xb6, 0x77, - 0xe6, 0xc0, 0x7c, 0x63, 0x55, 0x39, 0x52, 0x3c, 0x6a, 0x55, 0x53, 0x17, 0xa9, 0x25, 0x48, - 0x9a, 0x9d, 0xa7, 0x8c, 0xd8, 0x19, 0x24, 0x37, 0x88, 0x6b, 0x07, 0x47, 0x3c, 0xe2, 0xca, - 0x2a, 0x3a, 0x7c, 0x48, 0x72, 0x6e, 0x84, 0x2d, 0x93, 0xa8, 0x0c, 0x85, 0xfa, 0x20, 0x22, - 0x73, 0x8a, 0x43, 0x25, 0xf2, 0x87, 0x88, 0x0b, 0xa6, 0xb6, 0xe8, 0xac, 0xcd, 0xdf, 0xbd, - 0x5c, 0xa2, 0x8e, 0x67, 0xe5, 0x64, 0x53, 0x28, 0xc9, 0x98, 0x6e, 0x6e, 0x4b, 0x38, 0x55, - 0x7b, 0xd1, 0x75, 0xe5, 0xdc, 0x92, 0x59, 0x23, 0x31, 0xdf, 0x17, 0x01, 0xc8, 0xa1, 0xbc, - 0xfe, 0xbf, 0xbf, 0x09, 0x1e, 0xc2, 0x46, 0xa4, 0x6c, 0xa1, 0xe0, 0xb4, 0x79, 0x9c, 0x5c, - 0x35, 0x79, 0x60, 0x15, 0xb8, 0x72, 0x7a, 0x2e, 0x82, 0x3f, 0x94, 0x30, 0xe2, 0x5d, 0xb2, - 0x3c, 0x96, 0xba, 0x4e, 0x5a, 0xc3, 0xff, 0x3f, 0xf0, 0x5a, 0x94, 0x67, 0xf0, 0x32, 0xa4, - 0x55, 0x0a, 0x3a, 0x77, 0x76, 0x59, 0x97, 0x3d, 0x5d, 0x8f, 0x73, 0x66, 0xe6, 0xa9, 0x6e, - 0x2f, 0x79, 0x65, 0x5c, 0x2e, 0x88, 0x50, 0x18, 0x09, 0x6d, 0x04, 0x60, 0xdb, 0x04, 0xb9, - 0x23, 0x80, 0x20, 0x81, 0x2d, 0x61, 0x64, 0x81, 0x84, 0x27, 0xda, 0x0e, 0x58, 0xea, 0x62, - 0x12, 0xeb, 0x91, 0x09, 0x4c, 0x7c, 0x2a, 0xd1, 0x3b, 0x12, 0x4c, 0x96, 0x50, 0x97, 0xda, - 0x1c, 0x43, 0xe4, 0x0a, 0x22, 0x74, 0xf1, 0x87, 0x0f, 0xc6, 0x0f, 0x26, 0xca, 0xd9, 0x67, - 0xa8, 0xf1, 0x52, 0x58, 0xe5, 0x91, 0xe3, 0xa7, 0xf7, 0xdb, 0xd1, 0x7b, 0xa0, 0x43, 0x89, - 0xe4, 0x82, 0xbb, 0xc7, 0x9c, 0xbc, 0x73, 0xf2, 0xf3, 0x0e, 0x86, 0x1c, 0x92, 0x7b, 0xd2, - 0x4f, 0x6b, 0xc8, 0x25, 0xde, 0x62, 0x77, 0x8e, 0xc9, 0xb6, 0x12, 0x25, 0xd8, 0xef, 0x05, - 0x59, 0xab, 0x12, 0x2f, 0x20, 0x90, 0xde, 0x38, 0x93, 0x3c, 0xc0, 0xf2, 0x00, 0x7d, 0xce, - 0x12, 0xed, 0xae, 0xa6, 0x0f, 0x6b, 0xe5, 0x56, 0x0d, 0xe1, 0x6e, 0xc3, 0x36, 0xe7, 0x8e, - 0x69, 0x33, 0x55, 0x19, 0x1b, 0x02, 0xba, 0x06, 0x41, 0xdc, 0xe1, 0x73, 0x15, 0xad, 0x08, - 0xae, 0x6b, 0x03, 0xbd, 0x71, 0xef, 0xe5, 0xb5, 0xbd, 0x24, 0xc6, 0x92, 0xc5, 0x0d, 0x6c, - 0x16, 0x5d, 0x2c, 0x88, 0x07, 0xab, 0xee, 0xd6, 0x76, 0xf9, 0xde, 0x98, 0x6c, 0xd4, 0x57, - 0x90, 0xca, 0x19, 0x3c, 0xba, 0xb1, 0xf0, 0xcb, 0x07, 0xac, 0x42, 0xcb, 0xcc, 0x89, 0xcb, - 0x8a, 0x7b, 0x5b, 0x70, 0x9f, 0xa9, 0x4a, 0xa8, 0x51, 0x74, 0x97, 0x8c, 0x86, 0x8f, 0x34, - 0x9d, 0x10, 0xc5, 0xc6, 0x5d, 0xf3, 0x0c, 0xf5, 0x34, 0x3a, 0x5c, 0x0f, 0x13, 0xa8, 0xb3, - 0x6d, 0xab, 0x8f, 0x86, 0xad, 0x27, 0x2a, 0x64, 0x88, 0x80, 0x78, 0xb8, 0xc9, 0x96, 0xf5, - 0x06, 0xc2, 0xcb, 0xdb, 0x73, 0x05, 0x66, 0x64, 0xd1, 0xf5, 0xc9, 0xe2, 0x7a, 0xde, 0xd0, - 0x3d, 0x5f, 0x22, 0x38, 0x2c, 0x43, 0xde, 0x50, 0xdb, 0x28, 0xab, 0x28, 0xaf, 0x1b, 0x9e, - 0x00, 0x81, 0x3b, 0x8b, 0xbb, 0xbd, 0x61, 0x73, 0x76, 0x67, 0x89, 0x14, 0x38, 0x24, 0xaf, - 0x9d, 0x00, 0x33, 0x67, 0x22, 0x5c, 0x01, 0x8f, 0x62, 0x15, 0x58, 0x7b, 0x5c, 0xc7, 0x67, - 0x63, 0xbd, 0x24, 0xb1, 0xbe, 0x9d, 0x60, 0x26, 0xde, 0x65, 0xce, 0x93, 0x54, 0xe1, 0xbf, - 0xcd, 0x9d, 0x44, 0xce, 0x81, 0xb2, 0xec, 0xa4, 0x98, 0xf8, 0x16, 0x60, 0xe1, 0x7e, 0xa0, - 0x8c, 0x2d, 0x1d, 0xac, 0x1f, 0x85, 0x71, 0xe4, 0x26, 0xf1, 0x31, 0xde, 0xc2, 0x6c, 0xc3, - 0x90, 0x88, 0x4a, 0xce, 0xe6, 0x4d, 0xa0, 0x70, 0xef, 0xf9, 0xc3, 0x81, 0xa4, 0xe6, 0xda, - 0x1b, 0xd9, 0xad, 0xeb, 0x13, 0xb2, 0x0d, 0xe7, 0x7b, 0x8c, 0xa9, 0xb9, 0x84, 0x9a, 0x02, - 0x8c, 0x2c, 0x2f, 0x07, 0x9c, 0x74, 0xfc, 0xa6, 0x2c, 0x34, 0xbf, 0x66, 0x72, 0xfd, 0xd2, - 0x22, 0x67, 0x13, 0x80, 0x0e, 0x96, 0xb1, 0x0f, 0xef, 0x3e, 0x60, 0xde, 0x82, 0x63, 0xa2, - 0x61, 0x8b, 0xbc, 0x49, 0xf5, 0xe6, 0x41, 0x69, 0x7f, 0xb8, 0xba, 0x4f, 0xc4, 0xae, 0x2a, - 0xd8, 0xc7, 0x24, 0x1a, 0x91, 0xa0, 0x9f, 0x4d, 0xff, 0xe1, 0x98, 0x6d, 0xd0, 0x15, 0x90, - 0x62, 0x32, 0x16, 0xc7, 0x2d, 0x70, 0xee, 0x84, 0xe1, 0x31, 0x54, 0xdb, 0x0c, 0xf8, 0x34, - 0x2d, 0x6f, 0x36, 0xb0, 0x0b, 0xa1, 0xbf, 0x8f, 0x64, 0x08, 0x68, 0xd1, 0x4c, 0x69, 0xfb, - 0xc6, 0x76, 0x5d, 0x9f, 0xee, 0x53, 0xf1, 0xbf, 0x4f, 0xdb, 0xd7, 0x32, 0x40, 0xef, 0x4a, - 0x69, 0x69, 0xbb, 0x37, 0x91, 0xb2, 0x20, 0x6b, 0xad, 0xb2, 0xdc, 0xf9, 0x71, 0x73, 0xc9, - 0x9c, 0xab, 0x5a, 0x39, 0xbd, 0x3a, 0x4f, 0xfe, 0x49, 0x35, 0x5e, 0x29, 0x4b, 0x33, 0xcb, - 0x91, 0x53, 0xfe, 0x32, 0xdf, 0xd1, 0x96, 0x84, 0x2e, 0x37, 0x61, 0xf5, 0x1c, 0xdc, 0xe3, - 0xae, 0x0d, 0xf0, 0xce, 0x51, 0xb1, 0x4e, 0x5a, 0x6e, 0xed, 0xf3, 0xa9, 0xa5, 0x7c, 0x9c, - 0xec, 0xc0, 0xf1, 0x97, 0x30, 0xf6, 0xb8, 0x2c, 0x36, 0x2c, 0xc7, 0x9c, 0x00, 0x01, 0xe2, - 0x12, 0x2a, 0x1c, 0x8f, 0xc7, 0x81, 0xa0, 0x67, 0x0e, 0x09, 0x11, 0x0f, 0x2c, 0x64, 0x61, - 0x32, 0x86, 0xfa, 0xdf, 0x33, 0xd1, 0x6e, 0x64, 0xce, 0x19, 0x2c, 0x8d, 0xec, 0x9d, 0xe6, - 0x3e, 0x6b, 0xc7, 0x73, 0x4c, 0xc5, 0xb1, 0xd2, 0x45, 0x98, 0xb6, 0x16, 0xe8, 0x3e, 0xdf, - 0x9f, 0xb2, 0x28, 0xee, 0x72, 0x4b, 0xc0, 0xd0, 0xdc, 0x8a, 0x85, 0x8e, 0xfd, 0xc0, 0x1b, - 0xf8, 0x97, 0x8a, 0xe1, 0xa9, 0xb1, 0xcd, 0xc2, 0x3a, 0xc5, 0x4b, 0x4a, 0xf0, 0x1e, 0xa7, - 0x31, 0x2b, 0xfd, 0xf3, 0x31, 0x6b, 0x23, 0xae, 0xee, 0xc8, 0xf5, 0x1c, 0x8a, 0x12, 0xa8, - 0x9a, 0x84, 0x16, 0xac, 0x1b, 0x5f, 0x7b, 0xba, 0xfd, 0x83, 0xdd, 0xed, 0x33, 0x48, 0x5e, - 0x68, 0xf1, 0x50, 0xe3, 0x9a, 0x35, 0xe7, 0x0b, 0x6e, 0xa6, 0x51, 0x4f, 0xcf, 0xd1, 0x3c, - 0x5e, 0x10, 0xbe, 0x2d, 0xc5, 0x2a, 0x3c, 0x2e, 0x05, 0xf3, 0x7e, 0x32, 0x7f, 0x8b, 0x2e, - 0xea, 0x29, 0x07, 0xd6, 0x70, 0xb5, 0x92, 0xb3, 0x1a, 0x87, 0x7c, 0x3e, 0x8c, 0xc3, 0x26, - 0xe2, 0xbe, 0x8a, 0x64, 0xbd, 0x9a, 0x58, 0x02, 0xaa, 0xad, 0x49, 0xdf, 0x37, 0x16, 0xda, - 0xe0, 0x8c, 0xd1, 0x70, 0x4c, 0xa9, 0x50, 0xc6, 0x45, 0x70, 0x53, 0x32, 0x30, 0x28, 0x95, - 0xab, 0x06, 0x13, 0xe1, 0xd8, 0xd1, 0x4d, 0xb5, 0xd9, 0xe4, 0x62, 0x82, 0xa1, 0x05, 0x1f, - 0x07, 0xf3, 0x90, 0x2b, 0x69, 0x77, 0x61, 0x66, 0x82, 0x9e, 0xcc, 0x3c, 0x23, 0x81, 0x03, - 0x9c, 0x1d, 0x89, 0x2c, 0x66, 0x28, 0x98, 0xeb, 0x9d, 0xe0, 0x94, 0x32, 0xf2, 0xee, 0x14, - 0x5f, 0xf7, 0x70, 0x1a, 0xac, 0x2d, 0x4e, 0x76, 0xe2, 0x15, 0x91, 0x7d, 0xad, 0x18, 0xd9, - 0x1a, 0xb4, 0xab, 0xe0, 0x68, 0xe2, 0x04, 0x71, 0xe0, 0x71, 0xbc, 0xd1, 0x20, 0xd3, 0x6f, - 0x82, 0x4a, 0x77, 0xf0, 0xf6, 0x28, 0xcc, 0xdf, 0xdf, 0x28, 0xbf, 0xb7, 0x78, 0x9a, 0x74, - 0x5d, 0x6b, 0x30, 0xd8, 0xeb, 0xcb, 0x10, 0x31, 0xd5, 0x5c, 0x50, 0xb6, 0x51, 0xb2, 0xb2, - 0x38, 0x83, 0xbb, 0x37, 0xb8, 0xb7, 0x53, 0x82, 0x2d, 0xfa, 0x61, 0xef, 0x70, 0x3a, 0xba, - 0x2b, 0x7e, 0xb8, 0x4f, 0xd9, 0xaf, 0xf9, 0x65, 0xaf, 0x42, 0x25, 0xe1, 0x67, 0x73, 0xa7, - 0x9c, 0xdb, 0x85, 0xe2, 0x2b, 0x0d, 0xc4, 0xa3, 0xae, 0x7e, 0x3a, 0xd6, 0x2a, 0x57, 0x34, - 0x46, 0xee, 0xa7, 0x0d, 0x51, 0x23, 0x8e, 0x52, 0x9e, 0xd0, 0xeb, 0x1c, 0x0c, 0x71, 0xf8, - 0x0e, 0x0a, 0x62, 0xdd, 0x8f, 0x9a, 0x83, 0x0a, 0x05, 0xcd, 0x04, 0x94, 0x54, 0x8a, 0xad, - 0x15, 0x7a, 0x2a, 0x7f, 0xb2, 0xd6, 0x11, 0x08, 0x44, 0x31, 0xa1, 0xff, 0x97, 0x24, 0xd8, - 0x87, 0x99, 0x84, 0xa8, 0x81, 0x25, 0x9d, 0xd3, 0x35, 0x54, 0x52, 0xf0, 0x8e, 0xb4, 0xfa, - 0xf2, 0x90, 0x5f, 0x26, 0xc2, 0x2c, 0x00, 0xac, 0x57, 0xfd, 0xf6, 0xad, 0x41, 0x72, 0x07, - 0x03, 0x4a, 0x99, 0x14, 0x91, 0x6a, 0x16, 0x3b, 0x37, 0xde, 0x4c, 0x86, 0x15, 0x48, 0x13, - 0x44, 0x8e, 0x8a, 0x06, 0xfa, 0x64, 0xb7, 0xdd, 0x6b, 0x62, 0x16, 0x4f, 0x96, 0xd0, 0xf5, - 0x21, 0x4a, 0xb6, 0xc1, 0x35, 0xda, 0xc3, 0x63, 0x03, 0x4c, 0xcd, 0x4a, 0xba, 0x00, 0x0d, - 0x38, 0x8e, 0x6b, 0x25, 0x9e, 0x53, 0x1b, 0xf0, 0x0b, 0xe1, 0x87, 0x0e, 0xfe, 0x61, 0x57, - 0x60, 0x4c, 0xe0, 0xf9, 0x0b, 0x5a, 0x22, 0x6c, 0x07, 0xfb, 0x13, 0x4c, 0xb1, 0x7b, 0x17, - 0x2d, 0x27, 0xf4, 0x5d, 0x94, 0xa7, 0x30, 0x8c, 0xad, 0x63, 0xbf, 0x07, 0x0c, 0x7c, 0x37, - 0x85, 0xe4, 0x7b, 0xb1, 0xb9, 0x9b, 0x29, 0x52, 0x46, 0x07, 0x63, 0x42, 0x6e, 0xab, 0x8f, - 0x9a, 0x11, 0x44, 0x24, 0x13, 0x85, 0x29, 0xf6, 0x77, 0x3f, 0x4c, 0x42, 0x93, 0xc4, 0x7c, - 0x5b, 0x83, 0x11, 0xb8, 0xd0, 0x18, 0x2a, 0xd0, 0xd4, 0x9e, 0x82, 0x39, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x5f, 0xd2, 0x81, 0x52, 0x14, 0x44, 0x95, 0x7b, 0xab, 0x12, 0xf4, 0x71, 0x04, - 0xf5, 0xff, 0x29, 0x56, 0x20, 0xfd, 0x17, 0xdb, 0xdb, 0x79, 0x9f, 0x81, 0x3f, 0x97, 0x3e, - 0x1e, 0xae, 0xd4, 0x16, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xe0, 0x1c, - 0xcb, 0x83, 0x36, 0xbd, 0x91, 0x4d, 0x28, 0x40, 0x53, 0x64, 0x22, 0xf4, 0x7a, 0x49, 0x5f, - 0x99, 0xfb, 0x27, 0x5a, 0x94, 0x03, 0x6b, 0xdc, 0x26, 0x35, 0x71, 0x96, 0xda, 0x4b, 0xfc, - 0xbd, 0x8f, 0x1c, 0x05, 0x58, 0xe6, 0x69, 0x8c, 0x8f, 0x5d, 0xe4, 0xd9, 0x2c, 0x97, 0xba, - 0xf0, 0x6d, 0xe2, 0x43, 0x38, 0x3e, 0xe0, 0x08, 0x94, 0x4a, 0x81, 0xf7, 0x55, 0x06, 0x23, - 0x7a, 0xc1, 0xdc, 0x04, 0x9c, 0xb2, 0x2a, 0x12, 0xc1, 0x52, 0xb1, 0xee, 0xda, 0x26, 0x9b, - 0x47, 0x56, 0xe8, 0xef, 0x1f, 0x6e, 0x4f, 0xe5, 0x0f, 0x2b, 0xd6, 0x5f, 0xb0, 0x0a, 0xcf, - 0xb4, 0x60, 0xd1, 0x78, 0xfc, 0x36, 0x5b, 0x43, 0x71, 0x35, 0x58, 0x2d, 0x04, 0x5f, 0x54, - 0xb6, 0x23, 0xeb, 0x97, 0x8e, 0xfc, 0x37, 0x45, 0x2f, 0x11, 0x9b, 0x19, 0x89, 0x16, 0x9f, - 0xfc, 0xb8, 0x94, 0x80, 0x54, 0x97, 0x2a, 0x93, 0xa1, 0x41, 0x3b, 0x93, 0x64, 0xc3, 0xd8, - 0xc2, 0x70, 0x9c, 0x7f, 0xc7, 0x1c, 0x4b, 0xb4, 0x3c, 0xf6, 0x78, 0xb2, 0x95, 0x72, 0x71, - 0x03, 0xd0, 0xc5, 0x73, 0xee, 0xd1, 0x1b, 0x4d, 0x13, 0x85, 0x73, 0xd9, 0x06, 0x8a, 0x7b, - 0xcf, 0xf1, 0x34, 0xff, 0x25, 0xc0, 0xba, 0x6a, 0xe6, 0x5f, 0x7f, 0x0e, 0xae, 0x31, 0xf1, - 0x29, 0xd2, 0x38, 0xe4, 0xe8, 0x55, 0xb6, 0xd4, 0x60, 0x33, 0x61, 0x3f, 0x4b, 0xff, 0x84, - 0x5a, 0xeb, 0x90, 0x36, 0xb4, 0x40, 0xb8, 0xd8, 0x21, 0xc3, 0xc0, 0x15, 0x27, 0xb7, 0x97, - 0xfb, 0x51, 0x77, 0xb1, 0x38, 0x56, 0xb0, 0xb0, 0xa4, 0x17, 0xbc, 0x8b, 0x1e, 0xa6, 0xb0, - 0x76, 0xf4, 0xba, 0xd2, 0x9d, 0x57, 0x46, 0xf7, 0x6a, 0xa6, 0x4e, 0x8d, 0xa2, 0x2b, 0x33, - 0xdb, 0x49, 0xbc, 0x6b, 0xe2, 0x93, 0x8b, 0x56, 0x86, 0x44, 0x02, 0xc6, 0x9c, 0x96, 0x84, - 0x9d, 0x0b, 0x5c, 0xaa, 0x8a, 0xe0, 0x41, 0x1a, 0x17, 0x24, 0xcd, 0xfb, 0x42, 0xcb, 0x7d, - 0x86, 0xcb, 0x30, 0xa8, 0xbb, 0xa1, 0x15, 0x75, 0xdc, 0x72, 0xbf, 0x9a, 0xa6, 0xc2, 0x96, - 0xdc, 0x71, 0x04, 0x20, 0xc9, 0xaa, 0x6d, 0x86, 0x4d, 0xe9, 0x81, 0xfd, 0x73, 0x5f, 0x00, - 0xef, 0xbc, 0x39, 0x20, 0x87, 0xd9, 0x27, 0xa4, 0xfe, 0x65, 0xbb, 0xc0, 0xb6, 0xfc, 0x89, - 0xfa, 0xcf, 0xcc, 0x3e, 0xaf, 0xb5, 0xd6, 0xe0, 0x0e, 0xd6, 0xd5, 0x67, 0xa6, 0xdb, 0xaf, - 0xf9, 0x5b, 0x57, 0xe8, 0x58, 0xfb, 0x43, 0x03, 0xa0, 0xd1, 0x08, 0x08, 0x06, 0x38, 0xa1, - 0xac, 0x7c, 0xc6, 0xce, 0x0a, 0x86, 0xa1, 0x6b, 0x8f, 0xc3, 0xd1, 0x61, 0x78, 0xe3, 0xdc, - 0x94, 0x66, 0x75, 0xaf, 0x10, 0xd1, 0xf9, 0x64, 0xd1, 0xf3, 0x91, 0xa8, 0x67, 0x3b, 0x72, - 0x77, 0xbf, 0xd0, 0xea, 0xbe, 0x35, 0xdb, 0x6f, 0xb9, 0x8a, 0x46, 0x5e, 0xd6, 0x4f, 0xf1, - 0xe3, 0x11, 0xae, 0xbe, 0x7c, 0x4b, 0xc6, 0xc6, 0x2d, 0x74, 0x43, 0x04, 0x45, 0x4e, 0x70, - 0x16, 0x99, 0xb7, 0x1c, 0xeb, 0x69, 0xfe, 0xfa, 0x80, 0x77, 0x0f, 0xf2, 0x51, 0x91, 0xd4, - 0xfd, 0x2c, 0x23, 0xbc, 0x9b, 0x87, 0x90, 0x83, 0x3d, 0xf0, 0x8d, 0x38, 0x3d, 0xf7, 0x24, - 0x82, 0x36, 0xee, 0x9d, 0x49, 0x2f, 0xf1, 0x8d, 0x90, 0x1a, 0x7d, 0xc2, 0x30, 0x03, 0x92, - 0x31, 0xd1, 0xcc, 0x77, 0x42, 0xde, 0xff, 0x6a, 0x35, 0x96, 0x40, 0xb6, 0xef, 0xf5, 0x88, - 0xd2, 0xa3, 0x13, 0x7c, 0xcb, 0x04, 0xc0, 0xcf, 0xf6, 0x8c, 0xfd, 0x05, 0x39, 0x4f, 0xbb, - 0xfd, 0x4d, 0xd0, 0x9e, 0x29, 0x0f, 0x38, 0x42, 0xaf, 0x42, 0xeb, 0x17, 0x0f, 0xc4, 0x03, - 0x65, 0x91, 0x80, 0xd3, 0x81, 0x12, 0xdd, 0x0e, 0x5b, 0x62, 0x47, 0xc5, 0x6e, 0xc5, 0xcc, - 0xf3, 0xac, 0x83, 0x98, 0xbb, 0x13, 0x62, 0x47, 0xde, 0x11, 0x03, 0x7a, 0x94, 0x00, 0x58, - 0x97, 0x39, 0x98, 0x05, 0x53, 0x37, 0x48, 0xe9, 0xa7, 0x17, 0x23, 0xa6, 0xc7, 0xd7, 0x91, - 0xbe, 0x74, 0x41, 0x34, 0xd4, 0x68, 0x35, 0xbb, 0x38, 0x18, 0xda, 0x35, 0x39, 0x15, 0xed, - 0xfd, 0x05, 0xe5, 0x38, 0xcb, 0xe1, 0xa3, 0x0d, 0x64, 0xa0, 0x79, 0xf5, 0x05, 0x6a, 0x9b, - 0x5f, 0xed, 0x8b, 0xbe, 0xae, 0x99, 0xbe, 0xa0, 0xb3, 0xe0, 0xb5, 0x4c, 0x50, 0xf8, 0xa0, - 0xfd, 0xc4, 0x2d, 0xb5, 0xec, 0xcf, 0x41, 0xf5, 0x7e, 0x2f, 0xac, 0x38, 0xc0, 0x31, 0x0f, - 0x07, 0xb8, 0xd6, 0xd5, 0x25, 0x5d, 0x72, 0x3e, 0x9f, 0xf1, 0x77, 0x68, 0x47, 0x79, 0x5d, - 0x13, 0x72, 0x24, 0xca, 0x29, 0x54, 0xe1, 0x25, 0x54, 0x79, 0x63, 0x67, 0x89, 0x67, 0xda, - 0x6b, 0x44, 0x21, 0x6b, 0x9c, 0x53, 0xd6, 0xc9, 0xb3, 0x3b, 0xac, 0xd9, 0x13, 0x20, 0x3e, - 0x08, 0xf3, 0x55, 0x1a, 0x33, 0x4d, 0xd4, 0xd7, 0x78, 0x04, 0x87, 0xd6, 0x8b, 0xed, 0x96, - 0x31, 0xeb, 0xd4, 0x6a, 0x4b, 0xcd, 0xd0, 0x8e, 0x4b, 0x13, 0xe7, 0xaa, 0x51, 0xa2, 0x79, - 0xc4, 0x5c, 0xf3, 0x1f, 0xb0, 0x0a, 0x68, 0xba, 0x38, 0x9b, 0xde, 0x4e, 0x03, 0x3a, 0xe6, - 0xb4, 0x35, 0x94, 0x28, 0xf5, 0x00, 0x62, 0xc6, 0x9f, 0xe2, 0x30, 0x42, 0xc8, 0x24, 0xb5, - 0x71, 0x28, 0x06, 0xcf, 0x8e, 0xbd, 0x11, 0x0a, 0x79, 0x2d, 0x39, 0x9f, 0x50, 0xd6, 0x65, - 0x7b, 0x71, 0x44, 0x01, 0x47, 0x5c, 0x86, 0x8f, 0x1c, 0xc0, 0x00, 0xa2, 0x6f, 0xcb, 0x23, - 0x24, 0x38, 0x60, 0x94, 0x04, 0x49, 0xe0, 0x8c, 0x79, 0x83, 0x49, 0x7a, 0xc8, 0x8f, 0xf4, - 0x31, 0x24, 0x2a, 0xbd, 0x6d, 0x0a, 0x2e, 0x48, 0x9f, 0x2f, 0x47, 0xc0, 0x46, 0xbf, 0xf3, - 0x2e, 0xf2, 0x97, 0x74, 0xa3, 0xfe, 0x93, 0xfd, 0x71, 0x0b, 0x6d, 0x45, 0xda, 0x4f, 0xe9, - 0x78, 0x5d, 0x07, 0xbd, 0x47, 0xcd, 0x9b, 0xef, 0x10, 0x50, 0xa1, 0x25, 0xb3, 0xb4, 0x51, - 0x8a, 0x44, 0xcf, 0x3b, 0xaf, 0x05, 0x0e, 0xce, 0xf2, 0x6b, 0x2f, 0x80, 0xd3, 0xf2, 0x8c, - 0x64, 0x8e, 0x8e, 0x44, 0x69, 0x5e, 0x2e, 0x60, 0x5f, 0xdc, 0xad, 0x80, 0x2d, 0x02, 0x16, - 0xaf, 0xb9, 0x32, 0x75, 0x4e, 0x09, 0x2a, 0x3d, 0x2c, 0x45, 0x0a, 0xa4, 0x2c, 0x50, 0x11, - 0x15, 0x92, 0x06, 0x18, 0x00, 0x04, 0xbe, 0x19, 0x59, 0x8e, 0xd9, 0xfd, 0xaa, 0x0f, 0x27, - 0xbf, 0x77, 0x54, 0x2f, 0x97, 0x09, 0x27, 0x06, 0x15, 0xff, 0x58, 0x27, 0x64, 0x6e, 0x11, - 0x53, 0x32, 0x85, 0xe4, 0x66, 0xb8, 0xcf, 0x1a, 0xf3, 0x67, 0x4b, 0x2f, 0x4a, 0xc7, 0x4d, - 0x77, 0x74, 0x5e, 0xe5, 0xf8, 0x14, 0x3c, 0x86, 0x06, 0xc4, 0x0a, 0xf1, 0x5c, 0x61, 0x2a, - 0x5d, 0x2e, 0x65, 0xb4, 0xea, 0xfb, 0xda, 0xfe, 0x0a, 0x68, 0xe5, 0x7e, 0xb6, 0xe0, 0xc8, - 0x5f, 0x8b, 0xb7, 0x03, 0xa9, 0xa8, 0xab, 0x1b, 0x75, 0x15, 0xef, 0x67, 0xa9, 0x24, 0x47, - 0x9a, 0x03, 0xd7, 0xe7, 0x10, 0xf6, 0x7b, 0x34, 0x21, 0x59, 0xc3, 0x40, 0xe8, 0x8d, 0xf2, - 0x9d, 0x30, 0xd7, 0xc0, 0xed, 0xb5, 0x72, 0x00, 0x2d, 0xa0, 0x39, 0xa0, 0x7b, 0xf9, 0xaf, - 0x81, 0x93, 0x55, 0x60, 0x2c, 0x01, 0x97, 0x20, 0xe1, 0x78, 0x73, 0xc0, 0xf7, 0x3a, 0x35, - 0x9e, 0xd9, 0xfd, 0x11, 0x36, 0xd5, 0x47, 0x8a, 0x26, 0x05, 0xde, 0x99, 0x54, 0x82, 0x06, - 0x0c, 0x9c, 0x83, 0xf4, 0xbd, 0xd4, 0xd0, 0x00, 0x28, 0x0f, 0xe9, 0x6e, 0x40, 0xe2, 0xc9, - 0x68, 0x91, 0x8e, 0xa5, 0x3a, 0xb2, 0x15, 0x9b, 0x94, 0xac, 0xa6, 0x23, 0x84, 0x3d, 0xd9, - 0x92, 0x3f, 0xe6, 0xb6, 0x09, 0xad, 0x50, 0x1f, 0xe6, 0xd0, 0x02, 0xbb, 0x36, 0x77, 0x5f, - 0x27, 0x4e, 0xee, 0xbe, 0x44, 0x9b, 0x8c, 0xea, 0x00, 0xce, 0x80, 0xb9, 0xe8, 0x2c, 0x97, - 0xd5, 0x98, 0x08, 0xfd, 0x2e, 0xbc, 0x8d, 0x3e, 0x5d, 0x02, 0x45, 0xf0, 0xc4, 0xd5, 0xb7, - 0xae, 0x85, 0xaf, 0x3b, 0x3a, 0x36, 0xf9, 0xf4, 0x0d, 0xda, 0x9b, 0xd2, 0x82, 0xe3, 0x5f, - 0x2b, 0xd2, 0x60, 0x8d, 0x11, 0x37, 0xa9, 0x92, 0xbe, 0x3e, 0xd2, 0x00, 0xe3, 0x6e, 0xa8, - 0x2a, 0x93, 0xc5, 0x9f, 0x37, 0xa1, 0xd6, 0x57, 0xe1, 0xe1, 0x3b, 0x76, 0x49, 0x64, 0x08, - 0xfb, 0xfe, 0xcd, 0x9d, 0xaf, 0xa4, 0xa8, 0xfe, 0xc7, 0x2c, 0xd9, 0xcc, 0xc0, 0x36, 0xcf, - 0x48, 0xcc, 0xc8, 0x1b, 0x8a, 0x0e, 0x79, 0x2f, 0x3d, 0x97, 0x68, 0x92, 0x59, 0xbd, 0x9c, - 0x84, 0x6b, 0xbd, 0xf2, 0xe5, 0x1c, 0xd2, 0x35, 0x6f, 0x2c, 0x5e, 0x17, 0xee, 0xf3, 0xd0, - 0xd4, 0xa3, 0x3b, 0x44, 0x70, 0x1b, 0x18, 0xe3, 0x47, 0x5e, 0xa4, 0x2d, 0x37, 0x63, 0x9f, - 0xed, 0x6a, 0xbf, 0xba, 0x19, 0x49, 0x84, 0x83, 0xde, 0x9c, 0x26, 0xe2, 0x97, 0x26, 0x5b, - 0x72, 0x1d, 0xda, 0xf3, 0xc6, 0xeb, 0xee, 0x87, 0x6a, 0x9b, 0x4a, 0x31, 0x0a, 0xd1, 0xdf, - 0x24, 0xf6, 0xdb, 0x2b, 0x66, 0x14, 0xd8, 0x8b, 0x41, 0x4c, 0xc5, 0xdf, 0x77, 0x8d, 0x69, - 0x0f, 0x75, 0x00, 0x83, 0xec, 0xce, 0x0a, 0x77, 0x9d, 0x71, 0x3b, 0x08, 0x8c, 0x01, 0xb1, - 0xf0, 0x01, 0x01, 0x06, 0xf9, 0x29, 0x0a, 0xfb, 0xf9, 0x2c, 0x85, 0xcc, 0x9d, 0x0a, 0xa9, - 0xd8, 0x73, 0x05, 0x39, 0xfa, 0x2a, 0x43, 0xf8, 0xaa, 0xe9, 0xd1, 0x91, 0x94, 0xed, 0xea, - 0xc1, 0xa8, 0x57, 0x10, 0x44, 0x06, 0x1f, 0x0c, 0x92, 0x24, 0x92, 0xf1, 0x79, 0xc5, 0xcd, - 0x54, 0x47, 0x0f, 0x90, 0xab, 0x5c, 0x07, 0x4e, 0x83, 0x57, 0x56, 0x45, 0xc0, 0x34, 0x5c, - 0x54, 0x0e, 0xf0, 0x9e, 0x3f, 0x93, 0x4f, 0xa6, 0xd0, 0x92, 0x10, 0xc1, 0x01, 0xac, 0x83, - 0x15, 0x2e, 0xd5, 0x48, 0x0a, 0xcf, 0xb6, 0x4c, 0xc5, 0xcd, 0xc5, 0x94, 0x08, 0xe1, 0x89, - 0x9c, 0x03, 0x8e, 0xb0, 0xb0, 0x25, 0x4a, 0x13, 0x09, 0x20, 0x22, 0x2a, 0x54, 0x9c, 0x17, - 0x99, 0x2c, 0x44, 0x5e, 0x46, 0x52, 0x29, 0x28, 0xa6, 0x03, 0x3b, 0x89, 0xfd, 0x07, 0x12, - 0x20, 0x63, 0xab, 0x40, 0xff, 0xa3, 0xcd, 0x97, 0x24, 0xcf, 0x2c, 0x5f, 0x1b, 0x17, 0x05, - 0x77, 0xad, 0x94, 0x18, 0x66, 0x6a, 0xa4, 0x3f, 0x53, 0x7d, 0x3f, 0x35, 0xbc, 0xc4, 0x75, - 0xf8, 0x99, 0x30, 0xdc, 0x9f, 0x5a, 0x9c, 0x2b, 0x3f, 0x88, 0xae, 0xef, 0xcd, 0x66, 0x89, - 0xa1, 0x4e, 0xe5, 0x9b, 0x63, 0x2a, 0xda, 0xd7, 0xcf, 0x08, 0xdb, 0x88, 0x32, 0x53, 0x32, - 0x81, 0xdc, 0x4f, 0x5f, 0xde, 0xfb, 0xcb, 0xc0, 0x6f, 0x8c, 0x92, 0x3e, 0xd2, 0x59, 0x14, - 0x58, 0x92, 0x5c, 0xb4, 0x29, 0x71, 0xf7, 0xd1, 0xb4, 0x69, 0x08, 0x6d, 0xa7, 0x57, 0x82, - 0x70, 0x44, 0x30, 0x0a, 0x8e, 0xd8, 0x2c, 0xd3, 0x62, 0xdd, 0x8f, 0x73, 0xce, 0x39, 0xcd, - 0x2f, 0x7d, 0x51, 0x1d, 0xfc, 0xde, 0x84, 0xf7, 0xfb, 0x23, 0x0c, 0x2f, 0x03, 0xdc, 0x1f, - 0xbc, 0x16, 0x3c, 0x65, 0x0d, 0x7a, 0x6b, 0x63, 0x16, 0x19, 0x6b, 0x55, 0x71, 0xc0, 0x7c, - 0xf4, 0xbf, 0x00, 0xc1, 0x42, 0xa3, 0x07, 0xd5, 0x5b, 0x57, 0xbc, 0x8c, 0xf5, 0xf9, 0x1d, - 0x67, 0xa7, 0x01, 0x9b, 0xf3, 0xa4, 0x2b, 0xc4, 0x08, 0x3f, 0x45, 0x55, 0x94, 0xf5, 0xcd, - 0xae, 0xe0, 0xab, 0x2e, 0x4f, 0x49, 0x60, 0x8a, 0xc5, 0x3d, 0x9a, 0x9d, 0xbf, 0x7e, 0x2d, - 0x9b, 0x6e, 0x97, 0xf6, 0x66, 0x8d, 0x8e, 0xed, 0xf2, 0x34, 0xfb, 0xc0, 0x5e, 0x5d, 0x15, - 0xe4, 0x2d, 0x45, 0xa6, 0x8c, 0x4f, 0xde, 0xbf, 0x20, 0x17, 0x3c, 0x2a, 0x71, 0x3e, 0xec, - 0xc3, 0x79, 0x7a, 0xa3, 0x48, 0x22, 0xf5, 0x80, 0x66, 0x8d, 0xa9, 0xda, 0xa7, 0x18, 0x75, - 0x18, 0x9a, 0x0b, 0xe0, 0x0a, 0xd2, 0x88, 0x2e, 0x14, 0xa4, 0x05, 0x22, 0x91, 0x94, 0x3d, - 0x41, 0x61, 0x57, 0xe0, 0x8e, 0x80, 0x0b, 0x47, 0x99, 0x27, 0xe8, 0x76, 0x03, 0x50, 0x25, - 0x53, 0xa5, 0x12, 0x10, 0xa1, 0x97, 0x16, 0xbe, 0xb9, 0x8a, 0x1a, 0xc0, 0x09, 0x06, 0x6d, - 0x7a, 0x81, 0x12, 0x28, 0xaa, 0x33, 0x61, 0xb1, 0x51, 0xe2, 0x50, 0x31, 0x49, 0x0c, 0x3b, - 0x3e, 0x2b, 0x73, 0x33, 0xeb, 0x20, 0xcc, 0x1f, 0xd3, 0x0d, 0xdd, 0x02, 0xd5, 0x7f, 0x53, - 0x1d, 0x0b, 0xcb, 0x8e, 0xd6, 0x7b, 0x85, 0x1c, 0x14, 0x36, 0x6e, 0x41, 0xcc, 0x9d, 0xff, - 0x35, 0x0b, 0xcb, 0x0d, 0xfb, 0x6a, 0x09, 0xb8, 0xb2, 0xa5, 0x26, 0x12, 0x91, 0xf8, 0x50, - 0xf8, 0x6e, 0xfd, 0x21, 0xf5, 0x3b, 0xd8, 0xa1, 0xdb, 0xcc, 0xa9, 0xc9, 0x84, 0x53, 0xda, - 0xb7, 0xa0, 0x8e, 0xe7, 0xb0, 0x69, 0x8b, 0x3b, 0x63, 0xd6, 0x59, 0x64, 0xcf, 0x87, 0x64, - 0xc9, 0x61, 0xc3, 0xf4, 0x10, 0x0b, 0x02, 0xa7, 0x1d, 0xda, 0xaf, 0x1c, 0xc0, 0x6d, 0x21, - 0x0c, 0xf8, 0x35, 0x98, 0x84, 0x6b, 0xd9, 0x5e, 0x74, 0x79, 0x5b, 0x5a, 0x37, 0x4d, 0xb1, - 0xcb, 0x0e, 0x36, 0x42, 0x70, 0x65, 0x83, 0xf9, 0xe5, 0x3c, 0xf3, 0x7c, 0x76, 0x0b, 0x07, - 0x10, 0xd2, 0xd8, 0x03, 0x0b, 0xf2, 0x11, 0x31, 0x66, 0x45, 0x0b, 0x46, 0xe8, 0x21, 0x69, - 0x46, 0x7a, 0xa0, 0xe5, 0xde, 0x3a, 0xfa, 0xd7, 0x85, 0xdd, 0x75, 0x93, 0xca, 0x67, 0xc5, - 0x33, 0x1d, 0x5d, 0x2b, 0x5f, 0xf3, 0x1e, 0xf2, 0x2c, 0xd6, 0x21, 0x2a, 0xd0, 0x48, 0x72, - 0xbf, 0xd5, 0xd0, 0x49, 0xed, 0x92, 0xfc, 0x9d, 0x58, 0x75, 0x9c, 0xc0, 0x9c, 0x52, 0x92, - 0x59, 0xbb, 0xdb, 0x78, 0x9f, 0x7e, 0x2b, 0x3a, 0x0a, 0xf5, 0x40, 0xc8, 0xdc, 0xb2, 0x24, - 0xab, 0xdb, 0xee, 0xf9, 0xda, 0xa3, 0xdb, 0x99, 0xd7, 0x89, 0xc5, 0x7d, 0x01, 0xf7, 0x58, - 0x67, 0xa8, 0xf8, 0xdd, 0x4d, 0xb4, 0x7d, 0x67, 0xf4, 0x9c, 0x1c, 0xc0, 0x4e, 0xf8, 0xdb, - 0xce, 0xad, 0x39, 0x31, 0x91, 0x9f, 0x43, 0x48, 0x46, 0xf4, 0x3f, 0xfa, 0x09, 0x6e, 0xe0, - 0xee, 0x4e, 0xcf, 0xc2, 0xed, 0x9e, 0x7a, 0x48, 0x58, 0x57, 0x69, 0xea, 0x02, 0x9a, 0x51, - 0x37, 0xa0, 0x0a, 0x34, 0xc9, 0x74, 0x29, 0x69, 0x4c, 0x75, 0x7b, 0x6d, 0x2e, 0x37, 0xed, - 0x4e, 0xbe, 0x37, 0x13, 0xe9, 0x51, 0xf0, 0x26, 0xc3, 0x5a, 0xf6, 0x9d, 0xf0, 0xbc, 0x0d, - 0x6f, 0xc9, 0xd0, 0x64, 0x95, 0x3c, 0x8f, 0x31, 0x0b, 0x08, 0x5b, 0x2f, 0x7c, 0x0f, 0x3d, - 0xc7, 0x71, 0x3d, 0xbc, 0xd5, 0x38, 0x1e, 0xf1, 0xb1, 0xa6, 0xfb, 0xfb, 0x0a, 0x59, 0x4e, - 0x11, 0x02, 0xc0, 0xe1, 0xcc, 0x95, 0x23, 0x2c, 0x3f, 0x38, 0xe5, 0x14, 0x6a, 0x99, 0x97, - 0x64, 0x48, 0x3c, 0xcb, 0xe9, 0x33, 0x6b, 0x24, 0x99, 0x8b, 0xb3, 0x5c, 0x12, 0x86, 0x1c, - 0x0a, 0x8c, 0xf9, 0x30, 0xf0, 0x4f, 0x13, 0x7b, 0x85, 0x31, 0x5a, 0x84, 0xca, 0xef, 0x02, - 0xcb, 0x66, 0x9a, 0xd4, 0xf3, 0x63, 0x89, 0x6f, 0x98, 0xec, 0x3a, 0xb4, 0xe5, 0xd7, 0xf8, - 0x13, 0x29, 0x74, 0x8d, 0xfa, 0x26, 0x1a, 0xdd, 0x21, 0xa2, 0x16, 0x83, 0xea, 0x70, 0xf1, - 0x37, 0x64, 0xcd, 0x14, 0xdc, 0x50, 0x37, 0xb6, 0x21, 0x67, 0x77, 0xb1, 0x45, 0xf0, 0x1b, - 0x8e, 0x76, 0x17, 0x7a, 0xd7, 0x6a, 0x31, 0x20, 0xf4, 0xd8, 0xac, 0x9e, 0x19, 0xd4, 0xfc, - 0x0a, 0x38, 0x9e, 0xde, 0x0d, 0xc9, 0xa0, 0x48, 0x5f, 0xb8, 0x32, 0x1e, 0x82, 0x80, 0x2e, - 0x5c, 0xa7, 0xec, 0x5d, 0xcc, 0x46, 0x26, 0x04, 0x43, 0x0c, 0xe1, 0xa6, 0xe8, 0x57, 0xf2, - 0x74, 0xc1, 0xc5, 0x6d, 0x2c, 0xbe, 0x9d, 0xea, 0xb8, 0x52, 0x55, 0x9e, 0x65, 0x88, 0x7d, - 0xd2, 0xec, 0xd9, 0x51, 0x32, 0x7e, 0xab, 0xd5, 0xf6, 0xa9, 0xcc, 0x1e, 0xce, 0x73, 0x21, - 0x8f, 0x9c, 0x4c, 0xd2, 0x31, 0x48, 0x25, 0x8f, 0x88, 0x00, 0xdd, 0xdc, 0xe5, 0x51, 0x81, - 0x0c, 0xd8, 0x93, 0x5f, 0x8d, 0x2d, 0xf2, 0xe4, 0x83, 0xa2, 0xb8, 0x65, 0x7d, 0x27, 0x64, - 0x6a, 0xa3, 0x78, 0xb8, 0xe1, 0x4d, 0x69, 0xdb, 0x37, 0x58, 0x39, 0xc9, 0x45, 0x99, 0xc2, - 0x98, 0xc4, 0xa7, 0x84, 0xe4, 0x71, 0xce, 0x18, 0x84, 0x83, 0x53, 0x4d, 0x1a, 0xa9, 0xf1, - 0x05, 0x7e, 0x87, 0xa8, 0xb8, 0xf3, 0x4b, 0xe2, 0xc4, 0x77, 0x23, 0xb7, 0xbd, 0x42, 0x4f, - 0x16, 0x8a, 0x25, 0x18, 0xe1, 0xf3, 0x9d, 0x0c, 0x24, 0x69, 0x20, 0x51, 0x7e, 0x8a, 0xd2, - 0x8e, 0xf5, 0x38, 0x62, 0x85, 0x54, 0x49, 0x4f, 0x11, 0xb2, 0x39, 0x59, 0xdd, 0xac, 0x9e, - 0xf3, 0x9a, 0xe2, 0x29, 0x8f, 0xb6, 0xe9, 0xa9, 0xad, 0x1e, 0x47, 0x6a, 0xca, 0x95, 0x7d, - 0xcb, 0xab, 0x5c, 0x88, 0x2d, 0x82, 0xaf, 0x52, 0x68, 0xbd, 0xff, 0x02, 0xa5, 0x0d, 0x91, - 0xf4, 0xbd, 0x65, 0xe7, 0xfc, 0x60, 0xce, 0xd2, 0xc2, 0x56, 0x10, 0x0a, 0xd4, 0xfe, 0x8f, - 0x2e, 0x78, 0x20, 0x1a, 0x70, 0x7e, 0x14, 0xe5, 0x39, 0x01, 0x2f, 0x53, 0x56, 0x77, 0xee, - 0x21, 0x01, 0x41, 0x19, 0x05, 0xa7, 0x23, 0xc3, 0x41, 0x41, 0xfc, 0xc3, 0x6a, 0x7a, 0xde, - 0x3e, 0x26, 0x17, 0xe2, 0xe3, 0xb3, 0x95, 0xf2, 0x34, 0xeb, 0x2b, 0xf6, 0x9f, 0xfb, 0xda, - 0x48, 0x2e, 0xce, 0xe2, 0x15, 0xa0, 0x75, 0x58, 0xa7, 0x33, 0x11, 0xc1, 0xbc, 0xae, 0xd7, - 0x64, 0xf2, 0x23, 0x0c, 0x28, 0x6c, 0x1b, 0x99, 0x74, 0x53, 0x03, 0xdf, 0xf2, 0x4d, 0x5c, - 0x6f, 0xca, 0x5e, 0x11, 0x51, 0xd4, 0x57, 0xa6, 0x0f, 0xb8, 0x4d, 0x7c, 0x6d, 0x68, 0x84, - 0xf4, 0x05, 0x00, 0x8b, 0xab, 0x90, 0xec, 0xaf, 0x8b, 0xb3, 0x6a, 0x0d, 0x2c, 0x85, 0x05, - 0xee, 0xc1, 0xf8, 0xdd, 0xdc, 0xd5, 0xe6, 0x69, 0x15, 0xe1, 0x29, 0x29, 0x8b, 0xd1, 0xb2, - 0x60, 0xfd, 0x8f, 0x4a, 0x38, 0x10, 0x57, 0xad, 0xfe, 0x6f, 0x41, 0x24, 0xe5, 0x72, 0x32, - 0x26, 0xd7, 0xf8, 0xa4, 0x85, 0x60, 0x35, 0x0c, 0x62, 0x6c, 0xa6, 0x45, 0x2d, 0x59, 0x7a, - 0x45, 0x02, 0x91, 0x1e, 0x9f, 0xd2, 0x9a, 0x69, 0x00, 0xd3, 0xd3, 0x43, 0x58, 0x67, 0x58, - 0x84, 0x2f, 0x4c, 0xae, 0x3f, 0x41, 0xd6, 0xd5, 0xd8, 0xb4, 0xf1, 0x66, 0x47, 0x88, 0xc4, - 0xb2, 0x18, 0x1d, 0x1d, 0x8e, 0xaa, 0x17, 0x9f, 0xe0, 0xb9, 0xa8, 0x09, 0x82, 0xd6, 0xa5, - 0x93, 0x0e, 0xe4, 0x0e, 0x50, 0x6f, 0xc3, 0x8d, 0xa4, 0xec, 0x19, 0xf9, 0x21, 0xf5, 0x17, - 0x3b, 0x74, 0x96, 0x5a, 0x01, 0x39, 0xaf, 0x6d, 0x9e, 0x97, 0x1c, 0x3e, 0x5b, 0x38, 0xd5, - 0x08, 0x86, 0x20, 0xb2, 0xbc, 0x19, 0xd3, 0x36, 0xe0, 0xa0, 0x97, 0x58, 0x64, 0x71, 0x24, - 0x93, 0x5f, 0x1c, 0x0b, 0x01, 0x02, 0xe0, 0x64, 0x35, 0xa8, 0x09, 0x6f, 0x15, 0xc8, 0x66, - 0x5d, 0x73, 0x17, 0xf9, 0x8b, 0x69, 0xac, 0x2a, 0x66, 0x22, 0xcd, 0xbd, 0xb7, 0x80, 0xf6, - 0x84, 0xe8, 0x01, 0xf5, 0xe4, 0xf1, 0x81, 0xee, 0x4a, 0xdf, 0xd0, 0xcc, 0x9a, 0x79, 0x97, - 0x16, 0xbb, 0xc8, 0x4d, 0x30, 0x0f, 0x49, 0xc2, 0xaf, 0x06, 0xfd, 0xf1, 0x73, 0xe4, 0x5a, - 0xc5, 0xd8, 0xc3, 0xff, 0x4d, 0xe4, 0x64, 0x00, 0x4d, 0xd1, 0x05, 0x8d, 0xa5, 0xbd, 0xf8, - 0xdf, 0x21, 0x97, 0xd5, 0x51, 0xdf, 0x55, 0x75, 0xee, 0xba, 0x48, 0x06, 0xc3, 0x82, 0x1c, - 0xae, 0x37, 0xfb, 0xf4, 0x83, 0xe3, 0xbb, 0x65, 0xcf, 0x5f, 0x9b, 0x62, 0xac, 0x0d, 0x61, - 0xd9, 0xd9, 0x7d, 0x8e, 0xbf, 0xdb, 0xc7, 0x4f, 0xbf, 0xb5, 0x9a, 0x22, 0xa4, 0x07, 0xe5, - 0xdf, 0xdd, 0xd9, 0x31, 0xb1, 0x86, 0xa0, 0xdf, 0x52, 0xc2, 0xae, 0x60, 0xff, 0x5d, 0x96, - 0x39, 0x13, 0xf2, 0x82, 0xbb, 0xed, 0xad, 0x96, 0x74, 0xfb, 0x6a, 0x0f, 0xbf, 0x32, 0x46, - 0x0e, 0x17, 0x46, 0xef, 0x08, 0xc3, 0xad, 0x2b, 0x01, 0x57, 0xdb, 0x38, 0x6a, 0x98, 0x24, - 0x85, 0xea, 0xd2, 0xad, 0x1b, 0x97, 0x7b, 0x92, 0xd0, 0x66, 0x72, 0x5e, 0x4a, 0x76, 0xdf, - 0x59, 0xa1, 0x0a, 0x50, 0x8e, 0x9c, 0x00, 0xd8, 0x83, 0x2e, 0xaf, 0x72, 0xb8, 0x4c, 0x7f, - 0x27, 0x6e, 0x15, 0x04, 0xad, 0x16, 0x35, 0x7d, 0xb8, 0x37, 0x8a, 0x71, 0xa6, 0x00, 0x23, - 0xc9, 0x00, 0x79, 0x62, 0x26, 0x60, 0x2e, 0xe9, 0x72, 0x77, 0xb8, 0x99, 0x91, 0x7d, 0x71, - 0xfc, 0xf1, 0x1b, 0x4f, 0x41, 0x25, 0xc5, 0xb4, 0x54, 0xdc, 0x1d, 0xec, 0x29, 0x71, 0x42, - 0x43, 0x19, 0xff, 0xb1, 0x95, 0xc9, 0x10, 0xce, 0xdd, 0x22, 0x65, 0x76, 0xdc, 0x82, 0xb3, - 0xb8, 0x4e, 0x2c, 0xb3, 0xec, 0x89, 0x56, 0xa1, 0x80, 0x5a, 0x7a, 0x4f, 0xdf, 0x5a, 0x9e, - 0x49, 0xb6, 0x03, 0x4f, 0xb1, 0xc7, 0xf2, 0xd1, 0x31, 0x36, 0x8c, 0x9c, 0xf1, 0xda, 0xab, - 0xd8, 0xeb, 0xfc, 0x93, 0xf4, 0x99, 0xd7, 0x37, 0xe4, 0x11, 0x79, 0x26, 0x56, 0xa0, 0xe8, - 0xfb, 0x0c, 0x89, 0xdb, 0x1f, 0x35, 0x1a, 0x10, 0x45, 0x8a, 0x2c, 0x8d, 0x58, 0x03, 0xc4, - 0xe8, 0xca, 0x67, 0x2b, 0x3e, 0x63, 0xc8, 0xbe, 0x3b, 0xb5, 0x45, 0xba, 0xda, 0x82, 0x61, - 0x91, 0x2b, 0xd4, 0xdc, 0x01, 0x8f, 0xba, 0x6d, 0x91, 0x6c, 0x2a, 0xa8, 0x0f, 0xbb, 0x7d, - 0x4f, 0x59, 0x1d, 0x91, 0x5b, 0x21, 0xd8, 0x7c, 0xe7, 0x3b, 0x52, 0x67, 0x3d, 0x6a, 0x3f, - 0x8d, 0x76, 0x5c, 0xa5, 0x84, 0xbf, 0xfe, 0x6e, 0x68, 0x14, 0x0e, 0x7d, 0x50, 0x1a, 0x20, - 0xcb, 0xa1, 0x27, 0xda, 0xe5, 0xce, 0x02, 0x3b, 0xd6, 0x49, 0x52, 0x61, 0xe8, 0xd4, 0xaf, - 0xf0, 0x31, 0x38, 0x5c, 0x69, 0x3b, 0x74, 0x99, 0x44, 0x4c, 0x41, 0xe9, 0x5d, 0xce, 0x8c, - 0xe0, 0x00, 0x27, 0xba, 0x5c, 0x68, 0x82, 0xf3, 0x09, 0xe7, 0xc0, 0x1f, 0xed, 0xcb, 0x3c, - 0xc9, 0x5b, 0xfe, 0x53, 0x22, 0xb5, 0xd9, 0x5a, 0xd1, 0x54, 0x05, 0xc0, 0x62, 0xa3, 0xc0, - 0xd9, 0x97, 0x79, 0x06, 0xc2, 0x68, 0x6a, 0x39, 0x50, 0xa5, 0x06, 0x94, 0xfe, 0x97, 0x1f, - 0xba, 0xee, 0x9b, 0x2c, 0x8e, 0x6b, 0xe0, 0x4c, 0x2d, 0x47, 0x95, 0xdd, 0x0e, 0x96, 0xea, - 0x3d, 0x26, 0x3f, 0xa5, 0x7f, 0x35, 0x98, 0xc0, 0x10, 0xe7, 0xa6, 0x49, 0x7e, 0x32, 0x00, - 0xcb, 0x2e, 0xfc, 0x3c, 0xb9, 0xb1, 0x55, 0x95, 0x3e, 0xb2, 0x0c, 0xc6, 0x16, 0xf8, 0x11, - 0xb9, 0x75, 0xad, 0xfa, 0xf7, 0xab, 0x50, 0x09, 0xc2, 0xf0, 0x7c, 0xeb, 0x4f, 0x88, 0x58, - 0x29, 0x5f, 0xc0, 0x57, 0x43, 0xae, 0x13, 0x11, 0x2e, 0x8f, 0x8c, 0xb4, 0xfc, 0x5d, 0xd9, - 0x64, 0xdf, 0x75, 0x5c, 0x3f, 0x01, 0xd1, 0x84, 0xa3, 0x3f, 0x5a, 0x65, 0x43, 0xdd, 0xd0, - 0x9e, 0xff, 0x83, 0x9d, 0x06, 0x90, 0x2b, 0xde, 0x1c, 0xcc, 0xea, 0x58, 0xc4, 0x2f, 0xfb, - 0x0a, 0xb1, 0xd0, 0xd1, 0xa0, 0xed, 0xcf, 0x97, 0x53, 0xb5, 0x1a, 0x02, 0x6d, 0x06, 0x95, - 0xd3, 0x9d, 0xbc, 0xfb, 0xa0, 0xd2, 0xfe, 0x88, 0x63, 0x69, 0x26, 0x14, 0x7e, 0x59, 0xed, - 0xe5, 0x38, 0x74, 0x11, 0xca, 0xbc, 0x27, 0xbe, 0x6b, 0x90, 0xae, 0x06, 0x29, 0x1d, 0xa3, - 0xc6, 0x91, 0x47, 0xab, 0x75, 0x7f, 0xd1, 0x95, 0x29, 0xb6, 0x64, 0x21, 0xcf, 0xa0, 0xad, - 0x36, 0x48, 0x08, 0xd2, 0xa0, 0x74, 0x20, 0x94, 0x3d, 0xdc, 0x57, 0x97, 0xc1, 0xf9, 0xbb, - 0x3c, 0xd0, 0x2f, 0x9c, 0x01, 0x75, 0x87, 0xdf, 0x52, 0xe3, 0xb5, 0x52, 0xa8, 0xc4, 0xc9, - 0x1a, 0x6d, 0x79, 0xf6, 0x88, 0xee, 0x83, 0xf8, 0x69, 0xe6, 0x7d, 0xe7, 0x19, 0x5d, 0xe5, - 0x05, 0xf2, 0x1c, 0x68, 0x72, 0xa4, 0xf0, 0x43, 0x4c, 0x94, 0x45, 0xa6, 0x2e, 0x2d, 0x93, - 0xd3, 0xd8, 0x7b, 0xad, 0xb6, 0x6e, 0xff, 0x3a, 0x5c, 0x7e, 0xb6, 0x12, 0xe1, 0xe2, 0xbd, - 0x17, 0xfd, 0x26, 0xc4, 0x3f, 0xa2, 0x41, 0x97, 0xfb, 0xaa, 0x34, 0x8e, 0xe3, 0x51, 0x66, - 0xa2, 0xc6, 0x8d, 0x7e, 0x81, 0x49, 0x97, 0x36, 0xe5, 0x01, 0xfb, 0xbc, 0x8e, 0xc8, 0xd3, - 0xfc, 0x91, 0x79, 0xd7, 0x17, 0xa4, 0x14, 0x33, 0x10, 0xe6, 0x4f, 0xf3, 0x07, 0xda, 0xc9, - 0x33, 0x28, 0x3f, 0x34, 0xa8, 0xd0, 0xae, 0xe9, 0x66, 0xdf, 0x24, 0x5a, 0xf3, 0x37, 0x56, - 0xf1, 0xaa, 0x26, 0x64, 0x60, 0x4c, 0x0d, 0x30, 0x04, 0x6f, 0x03, 0x0c, 0x8a, 0x36, 0x6c, - 0x0f, 0x41, 0x1f, 0x56, 0x73, 0x28, 0x81, 0x68, 0x2e, 0xd3, 0xd0, 0x4c, 0x26, 0xa1, 0xd2, - 0xbd, 0xc5, 0x4a, 0x87, 0x92, 0x27, 0x25, 0xdb, 0x56, 0x42, 0x0d, 0xa0, 0x91, 0xe8, 0x6c, - 0x61, 0xb7, 0x64, 0x37, 0xab, 0x3d, 0xed, 0xa0, 0xd0, 0xc7, 0x4c, 0x48, 0x0f, 0xde, 0x36, - 0xde, 0x78, 0xfd, 0x37, 0x07, 0x10, 0xe3, 0x2d, 0xd9, 0xe7, 0x52, 0xed, 0x16, 0x25, 0x65, - 0x7f, 0x3c, 0xb7, 0x69, 0xb6, 0x49, 0xb3, 0x68, 0xbe, 0xed, 0x5c, 0x1c, 0xbc, 0xd5, 0xb7, - 0x99, 0x01, 0x60, 0x32, 0x6c, 0xee, 0x96, 0x1e, 0x9b, 0x9a, 0x1a, 0xf9, 0xc3, 0x44, 0x37, - 0x5c, 0xf1, 0x99, 0x87, 0x68, 0x70, 0x45, 0xdb, 0x03, 0xe6, 0x45, 0xad, 0xa5, 0xd2, 0x0e, - 0xd4, 0x52, 0x9f, 0xc4, 0xcf, 0xcb, 0xde, 0xfa, 0x42, 0x72, 0x7c, 0x9d, 0x41, 0x76, 0xd3, - 0x47, 0x03, 0x3b, 0x59, 0x28, 0xa3, 0xff, 0x90, 0xbc, 0xe5, 0x57, 0x9b, 0xb0, 0x0e, 0x87, - 0xd1, 0xd9, 0xe0, 0x40, 0xd1, 0xad, 0xca, 0x7d, 0x18, 0x84, 0x10, 0xe5, 0x5b, 0x8b, 0xcb, - 0xd7, 0xbf, 0xf5, 0x01, 0x2a, 0x01, 0x71, 0xf8, 0x49, 0x62, 0xc8, 0x8e, 0x2e, 0xf2, 0xa2, - 0xb2, 0x09, 0xa1, 0xf7, 0xb8, 0xb3, 0xd7, 0xdc, 0x1b, 0xb6, 0x0c, 0x24, 0x98, 0x32, 0xde, - 0xfb, 0xb9, 0x02, 0x7a, 0xa8, 0x0f, 0x5e, 0x11, 0x9c, 0xef, 0x25, 0xe4, 0x05, 0x24, 0x95, - 0x40, 0xc0, 0x42, 0x31, 0x3f, 0x2b, 0x76, 0x03, 0x47, 0x0e, 0x84, 0xec, 0xde, 0xb1, 0x05, - 0x9e, 0x8c, 0x19, 0xa0, 0x9e, 0x5c, 0xae, 0x35, 0x01, 0x8d, 0xf0, 0xce, 0x51, 0x44, 0x87, - 0xe7, 0x8a, 0xf2, 0x38, 0xb2, 0x32, 0x79, 0xf3, 0x98, 0x33, 0xc4, 0xb5, 0x6a, 0xf8, 0x36, - 0x44, 0xcd, 0xd1, 0x21, 0xfe, 0x63, 0x2d, 0xb5, 0x8c, 0x2e, 0xec, 0xdf, 0x06, 0x19, 0x16, - 0x4f, 0x3a, 0x89, 0xf9, 0xaf, 0xe8, 0xf6, 0xa0, 0x5d, 0xfb, 0x9c, 0xe0, 0x51, 0x1b, 0x4d, - 0xd2, 0x80, 0xc0, 0xe7, 0xbf, 0xf4, 0xef, 0x90, 0xc5, 0xe2, 0xd2, 0x2e, 0x9b, 0x10, 0xbf, - 0x04, 0xcb, 0xb3, 0x42, 0xda, 0xc0, 0x72, 0x8b, 0xbf, 0xaa, 0x08, 0x49, 0xeb, 0xf0, 0x6f, - 0x38, 0xb7, 0x86, 0xba, 0x7c, 0x64, 0xe6, 0xc0, 0xf2, 0xe5, 0x36, 0x5f, 0x97, 0x2b, 0x46, - 0xa8, 0x7e, 0xa2, 0x27, 0x3b, 0xf7, 0x45, 0x53, 0x0f, 0xa5, 0x1f, 0x22, 0x61, 0x10, 0x51, - 0x8e, 0x5e, 0x6c, 0xf9, 0x5f, 0x66, 0x69, 0x3a, 0xd5, 0x8e, 0xcf, 0xd1, 0x9d, 0x9a, 0xac, - 0x1d, 0x97, 0x76, 0xaa, 0x4a, 0xb5, 0x3e, 0x9d, 0x18, 0x9d, 0x25, 0xed, 0x4d, 0x1f, 0xa4, - 0x9b, 0x82, 0x8e, 0xcb, 0x8f, 0xa5, 0x4d, 0x53, 0xaa, 0x56, 0xba, 0x56, 0x4f, 0x7b, 0xa4, - 0x85, 0x36, 0x37, 0x52, 0x2f, 0x43, 0x71, 0x22, 0x8c, 0xeb, 0x84, 0x82, 0x91, 0x21, 0xe7, - 0x5e, 0x05, 0xcd, 0x2f, 0x0b, 0xc7, 0x1d, 0xce, 0x3d, 0xc3, 0x06, 0x1d, 0x9a, 0xfc, 0xed, - 0xa4, 0x5e, 0xf8, 0xe0, 0x38, 0xa7, 0x29, 0x96, 0x74, 0x5b, 0x6c, 0xf5, 0x55, 0xe1, 0x69, - 0x7f, 0xf9, 0xa9, 0x86, 0x19, 0x4a, 0x80, 0xfd, 0x8b, 0x81, 0x72, 0x9d, 0xb5, 0x96, 0x3f, - 0x68, 0x34, 0x67, 0xaf, 0xf5, 0x26, 0x1f, 0x75, 0x22, 0x97, 0xf8, 0xba, 0xf3, 0x92, 0xbc, - 0x57, 0x61, 0xa8, 0x5c, 0x75, 0xd5, 0x8b, 0xd8, 0x10, 0xe2, 0xa4, 0xf0, 0x9d, 0x2b, 0x0d, - 0x90, 0x3e, 0x15, 0x4d, 0x92, 0xec, 0xf8, 0xb3, 0x19, 0x3d, 0x0a, 0x4b, 0x44, 0x58, 0xf6, - 0x5d, 0x86, 0xf8, 0x1a, 0xf1, 0x8f, 0xb3, 0x99, 0x24, 0x1e, 0x2b, 0x33, 0x59, 0xc2, 0xfb, - 0x9d, 0x26, 0x71, 0x17, 0x76, 0x33, 0xe2, 0x46, 0x16, 0xf6, 0x1e, 0x6b, 0xf6, 0x1b, 0x2e, - 0x9c, 0xc2, 0xdc, 0xcf, 0x77, 0x50, 0x66, 0xc4, 0x07, 0x7a, 0xc9, 0x2e, 0x97, 0x2e, 0xb4, - 0x65, 0x2a, 0x7a, 0x7b, 0x60, 0xbd, 0x87, 0x01, 0x70, 0x4b, 0xf4, 0x18, 0x09, 0x4b, 0x9c, - 0x6e, 0xb3, 0xb3, 0x0b, 0xbd, 0x77, 0x0f, 0x1b, 0xdb, 0xc4, 0xe6, 0x6f, 0x2f, 0x95, 0x6b, - 0x12, 0x37, 0xe0, 0x33, 0x2e, 0xb1, 0x28, 0x9c, 0xf8, 0x50, 0x99, 0x14, 0x7b, 0x3e, 0x33, - 0xcd, 0x0c, 0x45, 0xd5, 0x22, 0xb3, 0x34, 0xf7, 0xd7, 0x6a, 0xc2, 0x03, 0xa8, 0xca, 0xe7, - 0x6d, 0x28, 0x07, 0xe8, 0xb7, 0x69, 0x86, 0x1a, 0xc3, 0xc9, 0xe4, 0x48, 0xba, 0xdc, 0xa7, - 0x1c, 0x03, 0x51, 0x0b, 0x1c, 0xab, 0x65, 0xee, 0x97, 0xb9, 0x07, 0x38, 0x9e, 0x69, 0x41, - 0xfc, 0x6c, 0x38, 0x6f, 0x05, 0x3f, 0x21, 0x45, 0xf6, 0xeb, 0xb2, 0x5d, 0xa1, 0x40, 0x6c, - 0xdf, 0x4c, 0x59, 0x3b, 0x70, 0xdd, 0x98, 0x52, 0x00, 0x8e, 0x88, 0xba, 0x56, 0xe5, 0xc3, - 0xf7, 0xa3, 0xf5, 0x4a, 0x7d, 0xf1, 0x64, 0x60, 0x18, 0xb2, 0x80, 0x1d, 0x34, 0xed, 0x49, - 0x09, 0x3e, 0x91, 0xf1, 0x47, 0x1f, 0x76, 0xa9, 0xd5, 0x69, 0x38, 0x18, 0x87, 0xf6, 0x4b, - 0x80, 0x72, 0x04, 0x49, 0x53, 0xd5, 0xa8, 0x77, 0xf9, 0x6f, 0x41, 0xb1, 0x3c, 0x25, 0x17, - 0x0b, 0x15, 0xa5, 0xa2, 0x18, 0xea, 0x21, 0x02, 0x91, 0xf7, 0x1c, 0x67, 0xff, 0x6d, 0x7b, - 0x4d, 0x94, 0x70, 0x71, 0x0c, 0x6e, 0xef, 0x39, 0x08, 0xcd, 0x4d, 0x90, 0x1f, 0x66, 0xb5, - 0xc8, 0xaf, 0x81, 0xf6, 0xa5, 0x59, 0x6a, 0x75, 0xdf, 0x33, 0x5e, 0x29, 0x94, 0x0f, 0x21, - 0x4c, 0x83, 0x31, 0x2b, 0xbb, 0x41, 0x8d, 0x0c, 0xff, 0x21, 0x9e, 0x61, 0xaa, 0x2e, 0x7f, - 0xac, 0xa6, 0x34, 0x60, 0x38, 0xf8, 0x44, 0x4c, 0xfc, 0xe6, 0xa4, 0x35, 0xac, 0x90, 0x46, - 0xed, 0x94, 0x03, 0x8a, 0x5f, 0xf3, 0x2f, 0xb5, 0xd6, 0x2e, 0xa7, 0x6d, 0xe4, 0xa7, 0x3c, - 0x41, 0x1d, 0xca, 0x8e, 0x49, 0xf0, 0x4f, 0xcf, 0xef, 0xb7, 0xce, 0xcb, 0xce, 0x23, 0xf5, - 0x6c, 0x38, 0x4a, 0x4b, 0x81, 0xfa, 0x3a, 0xbe, 0xa4, 0xbb, 0xe3, 0x7d, 0xd1, 0x3c, 0xec, - 0x99, 0x8d, 0x6d, 0xf6, 0x2e, 0xfb, 0x23, 0xee, 0x87, 0xd5, 0x82, 0x4a, 0xcc, 0xee, 0xbc, - 0x01, 0x15, 0xd4, 0xf7, 0xd8, 0x4d, 0x4a, 0xaf, 0x69, 0x1b, 0x0c, 0xd2, 0x5d, 0x0f, 0x05, - 0x9f, 0xf7, 0xa9, 0xea, 0x56, 0x0a, 0x99, 0x9a, 0xd4, 0x3a, 0x88, 0x96, 0x18, 0x6a, 0x9f, - 0x78, 0x72, 0x27, 0xa3, 0x68, 0xf5, 0xfe, 0xbe, 0xa3, 0x48, 0xa6, 0x7a, 0x74, 0x8f, 0x56, - 0x6f, 0x56, 0x71, 0xb7, 0x17, 0x08, 0x03, 0x0a, 0x70, 0x63, 0x18, 0x8b, 0xf3, 0xa0, 0x08, - 0x17, 0x3f, 0xe0, 0x87, 0x0c, 0x44, 0xc7, 0x02, 0x31, 0xa4, 0x7f, 0xeb, 0xfd, 0xe1, 0xd5, - 0xdc, 0xb0, 0xe3, 0xed, 0x4e, 0xcf, 0xc0, 0xa5, 0xa1, 0x21, 0x8c, 0x9b, 0x1e, 0xcc, 0x4e, - 0x5a, 0xef, 0xab, 0xc4, 0xf3, 0x58, 0x03, 0x92, 0xb6, 0x28, 0x5a, 0x25, 0xe7, 0xf3, 0xb2, - 0x24, 0xdb, 0x2a, 0x35, 0x09, 0xab, 0x7b, 0xe4, 0x69, 0x95, 0x04, 0xf4, 0xf3, 0x71, 0x1e, - 0xcc, 0x64, 0x67, 0xe3, 0xa6, 0x9d, 0x1f, 0x91, 0x01, 0xde, 0xc5, 0x79, 0x72, 0x6a, 0xec, - 0x9f, 0x2e, 0x70, 0x7c, 0xee, 0x2d, 0x33, 0x7d, 0x7e, 0x96, 0x52, 0x4e, 0x1e, 0xa2, 0xa9, - 0x25, 0x68, 0x2c, 0xde, 0x94, 0xb0, 0xd9, 0x43, 0x97, 0x2c, 0x04, 0x2f, 0xe1, 0xe0, 0xa4, - 0x04, 0xd8, 0xce, 0x13, 0x7f, 0x91, 0x2c, 0x4a, 0x89, 0x0d, 0x7e, 0xde, 0x7c, 0xcf, 0xf3, - 0x0b, 0x5a, 0x00, 0x18, 0x10, 0xf7, 0x5f, 0xfe, 0x6b, 0x33, 0x7a, 0xfa, 0x2c, 0x0f, 0x3b, - 0xba, 0x8f, 0xc4, 0xe9, 0x4a, 0xfe, 0x75, 0x29, 0x30, 0x56, 0x32, 0xc2, 0xb4, 0xae, 0x92, - 0x5e, 0xcf, 0xd5, 0x54, 0x73, 0xfc, 0xd5, 0x62, 0xa7, 0x19, 0xea, 0x19, 0xa7, 0xab, 0x25, - 0x5b, 0x43, 0x75, 0xbb, 0x81, 0x2f, 0xe9, 0xe2, 0x28, 0xd3, 0x9f, 0x20, 0xc3, 0x3c, 0x3d, - 0x2c, 0xbf, 0x43, 0x16, 0x52, 0xa6, 0x87, 0x6d, 0xf8, 0x0c, 0x3d, 0x6f, 0xda, 0xd1, 0xb6, - 0x0e, 0x2d, 0x70, 0x16, 0x35, 0x84, 0xc6, 0xa5, 0x0d, 0x28, 0x55, 0x69, 0x1b, 0x82, 0x56, - 0xae, 0xb1, 0xe8, 0x4d, 0x7d, 0xab, 0xf0, 0xff, 0x83, 0xf7, 0xf0, 0xed, 0x17, 0xc1, 0xa9, - 0xc7, 0x2d, 0xc4, 0x16, 0xd3, 0x5b, 0x87, 0x44, 0xff, 0x12, 0x64, 0x0c, 0x39, 0xf4, 0xb8, - 0x6c, 0x0b, 0x33, 0x29, 0x94, 0x05, 0xc9, 0x24, 0x35, 0x7a, 0x4a, 0xa4, 0xdb, 0x8f, 0x8a, - 0x88, 0xcb, 0x49, 0x93, 0x4b, 0x32, 0x9d, 0x09, 0xa0, 0xed, 0x5c, 0x23, 0xa5, 0x25, 0x0e, - 0xe2, 0xd0, 0xd2, 0x5b, 0x86, 0xb0, 0xf0, 0x7f, 0x1f, 0xc6, 0x2c, 0x63, 0x57, 0x8d, 0xe9, - 0xc3, 0x08, 0xac, 0x88, 0x6e, 0x77, 0xfe, 0x03, 0x3c, 0x8d, 0xa4, 0x2c, 0xcd, 0x70, 0xb3, - 0xe6, 0x27, 0xe5, 0x62, 0x05, 0x52, 0xab, 0x97, 0x2e, 0xdf, 0x72, 0x02, 0x1e, 0x48, 0x0e, - 0x2c, 0x82, 0xa8, 0x29, 0xf7, 0x05, 0xd3, 0xac, 0x80, 0x15, 0xaa, 0xbc, 0xaa, 0x6b, 0xd2, - 0xa1, 0xb6, 0x8f, 0x00, 0x29, 0x91, 0x85, 0x3e, 0x02, 0xf7, 0xe4, 0x40, 0xef, 0x3c, 0xfa, - 0x15, 0xb8, 0x40, 0xb6, 0xe6, 0xaa, 0x92, 0x60, 0x20, 0xd7, 0xe4, 0x33, 0x56, 0xcb, 0xb4, - 0x34, 0x25, 0x97, 0x03, 0x15, 0x0e, 0x16, 0x34, 0x22, 0xeb, 0x5c, 0x74, 0xd1, 0x59, 0xae, - 0xfb, 0x59, 0xe8, 0xf9, 0x61, 0xf8, 0xf6, 0x87, 0x10, 0x08, 0x5b, 0xa7, 0x61, 0x14, 0xa8, - 0xa0, 0xde, 0x5a, 0x2b, 0x14, 0xf7, 0x2e, 0x79, 0x76, 0xb1, 0x06, 0xe1, 0xe0, 0xcf, 0x91, - 0xb7, 0x06, 0xf6, 0xa7, 0xc4, 0x90, 0xdc, 0xb8, 0x00, 0x13, 0x20, 0xe0, 0xdb, 0x5d, 0x10, - 0x12, 0xba, 0x71, 0xc1, 0x02, 0x69, 0x54, 0x84, 0x46, 0x85, 0x19, 0x3e, 0x6d, 0xbd, 0xbd, - 0x20, 0x2d, 0x4a, 0x7a, 0xa3, 0x6d, 0x9c, 0x06, 0x44, 0xea, 0x21, 0x65, 0xfc, 0xcf, 0x26, - 0x0f, 0xa9, 0x1a, 0x79, 0x28, 0x16, 0xcc, 0x88, 0x2b, 0x7d, 0xa2, 0x27, 0x09, 0x28, 0xb4, - 0x8f, 0x34, 0xca, 0x15, 0xb5, 0xae, 0x40, 0x6f, 0x9f, 0x8f, 0xde, 0x32, 0x5e, 0x4b, 0x30, - 0x6e, 0xb2, 0x77, 0x2e, 0x10, 0x63, 0x5f, 0xa7, 0xca, 0x2b, 0x23, 0x57, 0x6e, 0x35, 0xaf, - 0x57, 0xb2, 0x9f, 0x2f, 0x5e, 0xcb, 0x01, 0xda, 0x48, 0x9c, 0x90, 0x98, 0x8c, 0x71, 0x95, - 0x9f, 0x6b, 0xf3, 0xd3, 0xb4, 0x91, 0x23, 0x8f, 0xd4, 0xc1, 0x3b, 0xd6, 0x86, 0x2e, 0xd1, - 0x84, 0x19, 0x83, 0x12, 0x1c, 0x58, 0xc2, 0x57, 0xf1, 0x94, 0x3f, 0xbd, 0x4b, 0x52, 0x30, - 0x18, 0xe4, 0x44, 0x53, 0x8a, 0xe5, 0x69, 0x9e, 0x2c, 0xf4, 0xc3, 0x4b, 0xb4, 0xfa, 0xd5, - 0x11, 0x80, 0xad, 0xbf, 0xff, 0xb2, 0x79, 0x70, 0x49, 0x98, 0x4f, 0x62, 0xf3, 0x17, 0xac, - 0xc0, 0xae, 0xfd, 0x7b, 0x49, 0xef, 0x23, 0x94, 0xf4, 0x1a, 0x01, 0x9a, 0x11, 0x54, 0x1f, - 0x26, 0x14, 0x1a, 0x1c, 0x35, 0xe1, 0xbc, 0xc0, 0x5a, 0x92, 0x30, 0xfc, 0xe3, 0x58, 0x2b, - 0x9e, 0xa1, 0x60, 0xf9, 0x35, 0xde, 0xd5, 0xc9, 0xdd, 0x51, 0x5e, 0x7e, 0x27, 0xa6, 0x82, - 0x44, 0xa2, 0xe9, 0x13, 0x92, 0xbc, 0xbd, 0xc0, 0x57, 0x36, 0x58, 0xfe, 0xb3, 0x49, 0x14, - 0x0f, 0xd9, 0x3d, 0x87, 0x15, 0xf6, 0xbc, 0xdf, 0xf9, 0xbd, 0xd4, 0x18, 0x67, 0x16, 0x19, - 0x2c, 0x80, 0xbe, 0x3f, 0xcd, 0x7c, 0x33, 0x84, 0x34, 0xc5, 0xfc, 0xfe, 0xbb, 0x43, 0x39, - 0x76, 0x5c, 0x15, 0xb8, 0xc0, 0xac, 0x0a, 0xb1, 0x4f, 0xf0, 0x37, 0x99, 0xd2, 0x45, 0x4b, - 0xed, 0x17, 0x1a, 0x4a, 0x52, 0x8d, 0x94, 0xe6, 0x02, 0x6b, 0x38, 0x36, 0xf5, 0xde, 0xff, - 0xda, 0xb2, 0xb7, 0x7d, 0x9a, 0x32, 0xb2, 0x41, 0x12, 0xe9, 0x7a, 0xbc, 0x32, 0x71, 0xe9, - 0x3c, 0x32, 0xbf, 0x2c, 0x1e, 0xff, 0x42, 0xac, 0xd1, 0x72, 0x62, 0x33, 0x29, 0x9e, 0x78, - 0x55, 0xc1, 0xe2, 0x42, 0x3c, 0xc3, 0x5d, 0x3b, 0xcc, 0x28, 0x23, 0xd4, 0xcf, 0x52, 0xb5, - 0xec, 0x2f, 0xa1, 0x72, 0xda, 0x26, 0xd0, 0x0d, 0xa0, 0xae, 0xe0, 0x48, 0xbb, 0xaa, 0xdf, - 0x2a, 0xb1, 0xfb, 0x28, 0x28, 0x9b, 0x0d, 0x6f, 0x02, 0x03, 0x8a, 0x26, 0x6c, 0x71, 0x60, - 0xdc, 0x51, 0x6c, 0xf7, 0x67, 0x46, 0x32, 0x02, 0x8f, 0x81, 0x44, 0xc4, 0x4a, 0x97, 0x1b, - 0xe6, 0x20, 0xb4, 0x31, 0x99, 0xa3, 0x46, 0x6d, 0xd6, 0x22, 0xcb, 0x71, 0xb7, 0xae, 0x3a, - 0xa0, 0x6e, 0xee, 0x38, 0x5c, 0xf5, 0x9a, 0x17, 0xbb, 0x32, 0xa0, 0x8c, 0x90, 0x05, 0x7f, - 0x13, 0x1d, 0xc0, 0x39, 0x52, 0xd4, 0xa3, 0x5d, 0x86, 0xa6, 0xd6, 0x97, 0x9f, 0x4b, 0x67, - 0x2f, 0xbc, 0xa7, 0xda, 0x5d, 0xcf, 0xe0, 0x82, 0xd6, 0x9c, 0x3f, 0x09, 0x13, 0x5f, 0x49, - 0x9e, 0xee, 0x82, 0x07, 0x12, 0x99, 0xa6, 0x35, 0x0a, 0xd7, 0x4f, 0xe5, 0xcc, 0xe7, 0x02, - 0x50, 0x51, 0x75, 0xdf, 0x85, 0xf6, 0x80, 0xef, 0x53, 0x1f, 0x64, 0x0a, 0xda, 0x16, 0x2f, - 0xf6, 0xf0, 0x70, 0x81, 0x4d, 0x78, 0xe8, 0xd2, 0x8f, 0xc3, 0x31, 0x6b, 0x54, 0xf1, 0x70, - 0xf5, 0x08, 0xbb, 0xb2, 0x9d, 0x8a, 0x96, 0x61, 0x8a, 0x6c, 0xc2, 0x11, 0x77, 0x6a, 0xe3, - 0x00, 0x38, 0xa1, 0xe9, 0x04, 0x94, 0x2f, 0x27, 0x28, 0x59, 0x13, 0x44, 0xda, 0x49, 0x98, - 0x47, 0x36, 0xb4, 0x56, 0xed, 0x59, 0x50, 0x7d, 0x5c, 0x60, 0x53, 0xc3, 0xcf, 0xbe, 0xcb, - 0x5e, 0x11, 0x04, 0x6d, 0x87, 0xa3, 0x00, 0xa6, 0xbe, 0xdf, 0x6a, 0xc1, 0x8a, 0x8b, 0xeb, - 0x3d, 0xaa, 0xe7, 0x9c, 0xc3, 0xac, 0x46, 0x03, 0xb1, 0xd2, 0xd7, 0x05, 0xb2, 0xd2, 0x15, - 0xf8, 0xff, 0xfd, 0xd5, 0x03, 0x8b, 0x1e, 0xe7, 0xd4, 0xca, 0xcd, 0x86, 0x11, 0x4c, 0xf8, - 0xf6, 0xfe, 0xed, 0x76, 0xbb, 0x81, 0x0e, 0x54, 0x25, 0x61, 0xc4, 0xc8, 0x48, 0xaf, 0xfb, - 0x71, 0xd1, 0x2c, 0x63, 0x0f, 0x9b, 0x29, 0xde, 0x45, 0x09, 0xb0, 0x02, 0x03, 0x94, 0x8b, - 0x13, 0x90, 0x65, 0xe1, 0xfe, 0xae, 0xea, 0xee, 0x13, 0xc2, 0xf5, 0x74, 0x53, 0x0f, 0x90, - 0xa2, 0x77, 0xbe, 0x13, 0x5f, 0x75, 0x80, 0x62, 0x21, 0xf6, 0x31, 0xc7, 0x44, 0x35, 0x51, - 0x89, 0xd1, 0x39, 0x03, 0x30, 0x70, 0x9b, 0x2b, 0xbc, 0xb6, 0x1f, 0x54, 0x8d, 0x8f, 0xc7, - 0xf3, 0x9f, 0x54, 0x41, 0x3a, 0x30, 0x90, 0xd0, 0x9a, 0x96, 0x2e, 0x28, 0x34, 0x42, 0xbb, - 0xe0, 0x1b, 0x6f, 0x7b, 0x7a, 0x60, 0x55, 0x62, 0x0a, 0xc9, 0x4e, 0xbd, 0xfd, 0xf9, 0x59, - 0x82, 0x72, 0x2b, 0x84, 0x4e, 0x3b, 0x70, 0x8a, 0xf5, 0x0f, 0x3f, 0x96, 0x01, 0xa4, 0x4f, - 0x5c, 0x47, 0x57, 0xe7, 0xa5, 0x06, 0x7d, 0xbc, 0x41, 0xeb, 0xd9, 0xce, 0x6e, 0x2e, 0xeb, - 0xbe, 0x0f, 0x35, 0x47, 0xff, 0xbf, 0xce, 0x53, 0x82, 0x87, 0xf3, 0x9a, 0xdb, 0x58, 0x26, - 0x11, 0x7d, 0xc1, 0x46, 0xbc, 0x62, 0x1d, 0x61, 0x7d, 0x0b, 0x48, 0x11, 0xc0, 0x53, 0xe1, - 0xaa, 0x2e, 0x2f, 0x83, 0x43, 0xd2, 0x69, 0xca, 0xde, 0xad, 0x9a, 0xb4, 0x11, 0x05, 0x31, - 0xef, 0x03, 0xf9, 0x73, 0xcb, 0x43, 0xdd, 0xd8, 0x9f, 0x6c, 0xed, 0x52, 0x23, 0x8c, 0xb6, - 0x93, 0xb8, 0x85, 0x0e, 0x9d, 0xf3, 0xd9, 0xcd, 0xbc, 0xb9, 0x7c, 0x4c, 0x84, 0x74, 0x9e, - 0xec, 0x92, 0xb8, 0x23, 0xf2, 0x97, 0x21, 0xc7, 0xc2, 0x00, 0xf6, 0x9d, 0xb4, 0x15, 0x27, - 0x74, 0x56, 0x62, 0x68, 0x14, 0xd6, 0x46, 0xae, 0x57, 0xef, 0x13, 0x6e, 0x36, 0xa0, 0x27, - 0x3a, 0xc7, 0x6d, 0x51, 0xfb, 0x11, 0xb3, 0x76, 0x31, 0xd9, 0x28, 0xa9, 0x01, 0x23, 0x87, - 0x18, 0xeb, 0x4f, 0xf8, 0x33, 0x6a, 0x0a, 0x75, 0x0a, 0x58, 0x19, 0xbf, 0x6a, 0x2d, 0xa7, - 0x6d, 0xa1, 0xa0, 0x69, 0x64, 0xef, 0x48, 0x00, 0xb8, 0x65, 0xd3, 0xbd, 0x02, 0x6d, 0x0e, - 0xdd, 0x31, 0x5e, 0x74, 0x33, 0x7f, 0xc9, 0xfa, 0x69, 0x2f, 0xff, 0x61, 0xc4, 0xc7, 0x15, - 0x3c, 0xfc, 0xfb, 0xa2, 0xf5, 0xa1, 0x62, 0x09, 0x46, 0x0f, 0x90, 0xc5, 0xa3, 0x53, 0xf6, - 0xd5, 0x81, 0xc6, 0x52, 0x9b, 0xc2, 0x29, 0x07, 0x99, 0xb6, 0x15, 0xa9, 0xdf, 0xc1, 0xac, - 0xf6, 0x88, 0x99, 0x67, 0xd9, 0xb9, 0x79, 0xc6, 0x2e, 0xe1, 0x6e, 0x3a, 0x99, 0x7d, 0xce, - 0xaf, 0x1f, 0xc0, 0x20, 0xd4, 0xb2, 0x8e, 0xc3, 0xc8, 0x0e, 0xcc, 0x8f, 0x21, 0x63, 0x24, - 0x48, 0x95, 0xb6, 0x7a, 0xb4, 0xef, 0xf8, 0x23, 0x9a, 0x80, 0x52, 0x52, 0xcf, 0x2e, 0x19, - 0xe5, 0x8e, 0x0c, 0x4f, 0xdb, 0xf5, 0x95, 0x40, 0x2b, 0x56, 0x25, 0xfb, 0x26, 0x1e, 0x64, - 0x1a, 0x1a, 0x9c, 0x93, 0x8f, 0xaa, 0xd9, 0x84, 0x8c, 0xe8, 0x4f, 0x41, 0x00, 0x4e, 0x68, - 0x27, 0x48, 0xe5, 0xa9, 0xa8, 0xd4, 0xc1, 0x81, 0xc9, 0x83, 0x7f, 0x8b, 0x5c, 0xe3, 0x3e, - 0x10, 0xb7, 0x4d, 0x24, 0x33, 0x7d, 0xc4, 0xa6, 0x7e, 0xd0, 0x66, 0x97, 0x9a, 0x45, 0xd5, - 0x2f, 0x6c, 0x3c, 0xbd, 0xc5, 0xc4, 0x9b, 0x62, 0xf4, 0x1e, 0xb5, 0x42, 0x87, 0x90, 0x7a, - 0xbe, 0x5f, 0xad, 0x99, 0xc5, 0x77, 0x6a, 0x16, 0x7d, 0x91, 0x8b, 0x57, 0x47, 0xda, 0x35, - 0x6d, 0x37, 0x3c, 0xd3, 0x13, 0xd8, 0xc3, 0xfb, 0x3b, 0x30, 0xb7, 0x04, 0x0e, 0xd0, 0x0d, - 0x81, 0x5e, 0x07, 0x82, 0xb6, 0x59, 0x5b, 0xb4, 0x34, 0x11, 0x05, 0xd8, 0x4d, 0xb9, 0xe4, - 0xed, 0xb0, 0x68, 0x4f, 0x60, 0xf2, 0x0b, 0xc9, 0x65, 0x2f, 0x58, 0xcd, 0x8a, 0xbb, 0x5b, - 0xf1, 0x81, 0x3e, 0x6d, 0x3f, 0x2c, 0x1d, 0x75, 0xa2, 0x27, 0x9c, 0x1b, 0xa7, 0x95, 0x1e, - 0xb3, 0x41, 0x26, 0x60, 0x1f, 0xe4, 0x97, 0xe9, 0x3b, 0x9c, 0xb6, 0x42, 0xbf, 0xbe, 0x13, - 0xad, 0x39, 0x68, 0x63, 0xd4, 0x99, 0xe7, 0x62, 0x46, 0x7f, 0x2e, 0x22, 0xb5, 0xc7, 0x84, - 0x28, 0xb7, 0x75, 0xe5, 0x23, 0x00, 0x77, 0x47, 0x33, 0x8b, 0x2b, 0x8c, 0x2c, 0xee, 0xe5, - 0x9c, 0xe1, 0x6f, 0x03, 0x47, 0x98, 0x92, 0xe1, 0x29, 0x57, 0x3e, 0x91, 0x4d, 0xa8, 0x41, - 0xd5, 0x8d, 0x43, 0xa3, 0x3a, 0x13, 0x31, 0xe9, 0xef, 0x7d, 0x96, 0xad, 0x37, 0x45, 0x34, - 0xe3, 0x86, 0xb6, 0x77, 0xcf, 0x3b, 0x43, 0x8a, 0x64, 0x2d, 0x4f, 0xc0, 0x4a, 0x8b, 0xf7, - 0x13, 0x26, 0xcd, 0xf2, 0xe6, 0xea, 0x25, 0x73, 0x9d, 0x89, 0xaa, 0xe3, 0x7a, 0xbd, 0x09, - 0xeb, 0x84, 0x81, 0xa3, 0x28, 0x21, 0xf6, 0xd6, 0x78, 0x98, 0x75, 0xc2, 0xd5, 0x64, 0x25, - 0xc3, 0x1e, 0xcf, 0x2b, 0xf1, 0x79, 0xd1, 0x25, 0xa0, 0x03, 0xc5, 0xd9, 0xb7, 0x91, 0x81, - 0x18, 0x27, 0x05, 0xa3, 0x57, 0x17, 0x0a, 0xc0, 0x31, 0x98, 0x5e, 0x1e, 0x18, 0x2e, 0xd6, - 0x3b, 0xe6, 0xc5, 0xe6, 0x00, 0xa7, 0x7f, 0xbb, 0xbf, 0x23, 0xac, 0x8d, 0x18, 0xc9, 0xed, - 0xb7, 0x9c, 0xee, 0x2b, 0x4e, 0x52, 0x95, 0x63, 0xa6, 0x01, 0x9e, 0xf4, 0xb4, 0x80, 0x5b, - 0xbd, 0x84, 0xb2, 0xc2, 0x7d, 0xae, 0x62, 0x77, 0x28, 0xa3, 0x9a, 0x3c, 0x3c, 0x91, 0x57, - 0x8f, 0xb4, 0xbc, 0x36, 0x22, 0x23, 0x75, 0x1e, 0x67, 0xc9, 0x39, 0xa5, 0xc3, 0xf8, 0x9a, - 0xb2, 0xea, 0x85, 0xc2, 0x7b, 0x70, 0xd1, 0xcc, 0x0d, 0x96, 0x97, 0x20, 0x70, 0xcb, 0xca, - 0xf8, 0x44, 0x0f, 0x8b, 0x25, 0x05, 0x65, 0x3d, 0xe6, 0x77, 0xab, 0x29, 0x76, 0x64, 0x6b, - 0xe7, 0x5a, 0x7b, 0xcc, 0xd3, 0xbb, 0xce, 0xf3, 0xa2, 0x50, 0x19, 0x09, 0x6f, 0x9e, 0x55, - 0x83, 0x28, 0xda, 0xa4, 0xf3, 0xaf, 0x6d, 0x45, 0x8d, 0x3b, 0x1a, 0x39, 0x50, 0x79, 0x85, - 0x8f, 0xf3, 0xd6, 0xbd, 0x6c, 0xbe, 0x81, 0x0d, 0xef, 0x36, 0x4a, 0x44, 0xbc, 0x2a, 0x3f, - 0xf5, 0x58, 0xf2, 0x9d, 0xd4, 0xdd, 0x1c, 0x60, 0x87, 0x03, 0x4b, 0x32, 0xe1, 0xcc, 0xaa, - 0xbc, 0xe7, 0xcf, 0xa2, 0x59, 0x51, 0x98, 0x5c, 0x9e, 0x00, 0xc6, 0x9d, 0xe2, 0xef, 0x5d, - 0x0c, 0x81, 0x81, 0xf4, 0x7b, 0x81, 0xf7, 0x47, 0xdb, 0x86, 0xe5, 0xed, 0x29, 0x15, 0x74, - 0xdc, 0xb8, 0xac, 0x53, 0xe2, 0x24, 0x07, 0x90, 0x0b, 0xe6, 0x77, 0xb9, 0x72, 0x31, 0x04, - 0x21, 0x6a, 0xd0, 0x57, 0x77, 0x62, 0xd6, 0xec, 0x7f, 0xb6, 0x94, 0x55, 0x1d, 0x72, 0xe5, - 0x35, 0x7d, 0x62, 0xfc, 0xde, 0xf4, 0x90, 0x05, 0x96, 0xef, 0xee, 0x13, 0x25, 0x9d, 0x3a, - 0x25, 0x57, 0xde, 0xa2, 0x81, 0x53, 0xd4, 0xb6, 0xd6, 0x5e, 0xf8, 0xef, 0x4c, 0xe2, 0xac, - 0xd9, 0x21, 0x01, 0x42, 0x3a, 0x38, 0x99, 0x7f, 0xeb, 0xe2, 0x58, 0x26, 0x61, 0x86, 0x2c, - 0x5b, 0xdd, 0xe0, 0xe6, 0x4d, 0xb5, 0x09, 0x56, 0x29, 0x65, 0xc7, 0xae, 0x80, 0x42, 0xa1, - 0x88, 0x74, 0x85, 0xf2, 0x1a, 0x48, 0x80, 0xfd, 0x13, 0x45, 0x79, 0x2e, 0x1f, 0x54, 0x62, - 0xd6, 0x3e, 0x6e, 0x2f, 0xa9, 0xc8, 0xd6, 0x3a, 0x32, 0x03, 0x10, 0x19, 0x02, 0xf0, 0xc8, - 0xe1, 0x7a, 0xca, 0x5c, 0xca, 0x2d, 0x0d, 0x20, 0x5a, 0x3b, 0x82, 0x69, 0xcc, 0x1a, 0xf7, - 0x17, 0x77, 0x75, 0x77, 0x8d, 0xb2, 0x64, 0x78, 0x5c, 0x5b, 0xc5, 0x20, 0x49, 0x4b, 0x20, - 0x39, 0x06, 0x26, 0x33, 0x42, 0x1f, 0x09, 0x65, 0x1b, 0xe1, 0xa0, 0x14, 0x67, 0xd3, 0x21, - 0x4e, 0x19, 0xc0, 0x20, 0xeb, 0x39, 0x92, 0xf7, 0x71, 0xa4, 0x4f, 0x1d, 0x22, 0xdd, 0x5b, - 0xdc, 0x70, 0x8f, 0x14, 0x14, 0xea, 0x34, 0x2d, 0x0f, 0x2a, 0x3e, 0xa8, 0x35, 0x6b, 0x49, - 0x7e, 0x75, 0x52, 0xc4, 0x47, 0xd1, 0xc5, 0x9a, 0xcc, 0x00, 0xec, 0x92, 0x29, 0x35, 0x52, - 0x99, 0x8c, 0x4e, 0xac, 0x2a, 0x60, 0x51, 0xd2, 0xf4, 0xa9, 0xeb, 0xdd, 0x26, 0x72, 0x2c, - 0x03, 0xd8, 0x69, 0x3a, 0xdd, 0x24, 0x29, 0xe7, 0x7d, 0xcf, 0x35, 0x94, 0x3d, 0x81, 0xdc, - 0x08, 0x60, 0xc1, 0x30, 0x35, 0xaa, 0xac, 0x4e, 0x19, 0x19, 0x7f, 0x86, 0xdd, 0x40, 0x01, - 0x48, 0x30, 0x2a, 0xbf, 0x79, 0x10, 0xc4, 0x5c, 0x73, 0x89, 0x26, 0xad, 0x3f, 0xcd, 0x92, - 0xff, 0x1e, 0x63, 0x9b, 0x03, 0xc4, 0xdb, 0xa5, 0x93, 0x8c, 0x58, 0xd0, 0xc0, 0x9c, 0x16, - 0x05, 0x17, 0x51, 0x02, 0x6e, 0x87, 0xb4, 0x36, 0xca, 0x7a, 0x14, 0xf2, 0x1e, 0xaf, 0xfc, - 0xa3, 0xe9, 0xb6, 0xec, 0xcc, 0x8c, 0x8a, 0x8f, 0x91, 0x65, 0x3f, 0xce, 0x0a, 0xa1, 0xe8, - 0xc9, 0x83, 0xfd, 0x3e, 0xeb, 0x5f, 0x29, 0x48, 0x25, 0x4c, 0x60, 0x69, 0x47, 0x93, 0x02, - 0x43, 0x16, 0x63, 0xff, 0x86, 0x9c, 0xe6, 0x0b, 0x24, 0xd3, 0xbf, 0x66, 0x8a, 0xb9, 0xd8, - 0x99, 0xd4, 0x52, 0x5f, 0x79, 0x28, 0x7b, 0xa0, 0x41, 0xb5, 0x10, 0xc7, 0x0f, 0x68, 0x3b, - 0x40, 0x48, 0x9c, 0x44, 0xd9, 0xf3, 0x6d, 0x56, 0xd3, 0x6d, 0x75, 0x62, 0xd0, 0xd7, 0x3a, - 0xb7, 0xd6, 0x87, 0x27, 0xdb, 0xb1, 0x69, 0x03, 0x5b, 0x38, 0x56, 0x76, 0x01, 0x5e, 0x7c, - 0xb4, 0x4f, 0xc9, 0x25, 0xad, 0x77, 0x3e, 0x7a, 0xc2, 0x8b, 0x36, 0x70, 0x29, 0xc5, 0x78, - 0x51, 0xd0, 0xc9, 0x05, 0x20, 0xca, 0xc9, 0x06, 0xf4, 0x26, 0xc7, 0x5a, 0xfd, 0x72, 0x69, - 0x12, 0x4d, 0x7e, 0x21, 0x14, 0xc8, 0x51, 0x1b, 0x33, 0x1e, 0xf1, 0xd4, 0x3a, 0xd5, 0xe7, - 0x58, 0xbe, 0x64, 0x5a, 0x24, 0x69, 0x59, 0x0f, 0x5d, 0x2b, 0xc7, 0x32, 0x1f, 0x73, 0x90, - 0x34, 0x60, 0x8f, 0xe9, 0xbf, 0xec, 0x96, 0x22, 0xc5, 0xd8, 0x9e, 0x9d, 0xd9, 0xed, 0x8a, - 0x0b, 0x63, 0xc2, 0x3e, 0xdb, 0x5a, 0x26, 0xa4, 0x9b, 0x7f, 0xc6, 0x81, 0xa3, 0x3e, 0xa3, - 0xc5, 0x6b, 0x87, 0xca, 0x36, 0xf7, 0xac, 0x40, 0x79, 0x12, 0x5e, 0x42, 0x6f, 0xe0, 0x18, - 0x37, 0xfc, 0x0d, 0xad, 0xef, 0xe2, 0x53, 0xf6, 0xdb, 0x60, 0x1c, 0x82, 0x4d, 0x24, 0x6a, - 0x19, 0xb6, 0xfd, 0x36, 0x21, 0xea, 0xa9, 0x83, 0x5b, 0x58, 0xb3, 0xc0, 0x0f, 0xbc, 0xdd, - 0x65, 0x58, 0x20, 0x36, 0x78, 0xe9, 0xab, 0x1e, 0x11, 0x3d, 0xea, 0xbc, 0xbd, 0xad, 0x99, - 0x8f, 0x32, 0x0c, 0xec, 0x5e, 0x7f, 0xb2, 0x0d, 0x61, 0x9f, 0x1a, 0x66, 0xfd, 0x6a, 0x73, - 0xd7, 0xb5, 0x1a, 0x0c, 0x2a, 0x18, 0xe5, 0xe7, 0xdd, 0x82, 0xe8, 0xad, 0xbe, 0xa4, 0x81, - 0x48, 0x5b, 0xc6, 0xb5, 0x35, 0xc4, 0x45, 0x99, 0x5d, 0x22, 0x1a, 0x43, 0x33, 0x3e, 0x4d, - 0x8f, 0x98, 0x6d, 0x91, 0xa7, 0xbb, 0x24, 0x04, 0x4c, 0x4f, 0x84, 0x21, 0x6e, 0x77, 0x39, - 0x07, 0x79, 0x79, 0xf0, 0x65, 0xc6, 0x3d, 0xf0, 0xbe, 0xbb, 0x77, 0x10, 0x53, 0x21, 0x1f, - 0xfa, 0xeb, 0xd3, 0xc9, 0x7f, 0xc9, 0x78, 0xbf, 0xe1, 0x05, 0x7f, 0x3e, 0xcd, 0x99, 0x01, - 0x9d, 0x47, 0x5b, 0xc2, 0x8c, 0xbc, 0x5e, 0x40, 0x89, 0x46, 0xec, 0xf6, 0x51, 0x79, 0x2c, - 0x14, 0xbb, 0x15, 0xf2, 0x7b, 0x52, 0x07, 0x4b, 0xaf, 0xc8, 0xb4, 0x38, 0x69, 0x32, 0xf5, - 0x6d, 0x9a, 0xd5, 0x75, 0x68, 0xa5, 0x11, 0xa9, 0xda, 0xf1, 0xaf, 0x3b, 0x89, 0xe5, 0x71, - 0x22, 0x6c, 0x44, 0x19, 0xd0, 0x6a, 0x31, 0x98, 0xa0, 0x4f, 0xc4, 0x73, 0xe6, 0x71, 0x15, - 0x20, 0x1c, 0x6e, 0xd1, 0xc8, 0x2f, 0xc0, 0x49, 0xbb, 0x1f, 0x33, 0x09, 0x14, 0xfe, 0xe3, - 0x17, 0xb7, 0xdd, 0x7b, 0x48, 0xdf, 0x0e, 0xcf, 0x56, 0x84, 0xc6, 0x8b, 0xa3, 0xdb, 0x82, - 0x22, 0xd6, 0x54, 0x86, 0xc4, 0x54, 0x85, 0x09, 0xc0, 0x0e, 0x1f, 0x1d, 0xa0, 0xf8, 0xbd, - 0x8d, 0xb2, 0xe3, 0xe5, 0x57, 0x3e, 0x1e, 0x94, 0x38, 0x0b, 0x3e, 0x4f, 0x6c, 0x86, 0x44, - 0xdb, 0x45, 0xde, 0xbf, 0xff, 0x88, 0x33, 0x6b, 0xe7, 0x87, 0xfe, 0x7f, 0xc7, 0x6e, 0xde, - 0x48, 0x8f, 0x13, 0x28, 0xa8, 0x7e, 0x0e, 0xa6, 0xdf, 0x38, 0xa6, 0x22, 0x60, 0x1a, 0x1b, - 0xf2, 0x6c, 0xca, 0xfe, 0xa3, 0xe9, 0xf5, 0x3b, 0x88, 0x81, 0x6c, 0xed, 0xb7, 0xc0, 0x3f, - 0x7a, 0x1c, 0xc2, 0x9e, 0x20, 0x4f, 0xd3, 0xdc, 0xec, 0x39, 0xae, 0x72, 0x72, 0x8b, 0x91, - 0x49, 0xd8, 0x98, 0x2c, 0xef, 0x97, 0x10, 0x77, 0xe0, 0x5c, 0xd2, 0x76, 0x36, 0xda, 0x29, - 0x67, 0xa1, 0xec, 0x1a, 0x0c, 0xb8, 0x23, 0xd7, 0x6d, 0xbb, 0x31, 0x0f, 0xe9, 0x48, 0xcf, - 0x1d, 0x4b, 0xff, 0xee, 0x9b, 0xe1, 0xeb, 0xb7, 0xf5, 0x45, 0xc5, 0x12, 0x58, 0xd6, 0xdd, - 0x0a, 0x95, 0xcc, 0x54, 0xbe, 0x6d, 0x24, 0x27, 0x4d, 0x25, 0x00, 0x36, 0x3d, 0xcd, 0x6d, - 0x8e, 0xe0, 0xc3, 0x00, 0x88, 0xa6, 0xeb, 0x81, 0x29, 0xfe, 0x89, 0x43, 0xe9, 0x1a, 0xdc, - 0xe0, 0x89, 0xc9, 0x0a, 0xb4, 0xe4, 0x84, 0xa4, 0x89, 0x81, 0x83, 0xdf, 0xcf, 0x0c, 0xa0, - 0x8b, 0x0b, 0x46, 0xe4, 0xa0, 0x6f, 0xe6, 0x6c, 0xb2, 0xeb, 0x4e, 0x7b, 0xce, 0xdd, 0xb6, - 0xb1, 0x14, 0x7b, 0x08, 0x12, 0xea, 0xf9, 0xa9, 0x99, 0x74, 0x56, 0x20, 0x2b, 0xf1, 0xf0, - 0x4d, 0x91, 0x2e, 0xfe, 0xf7, 0xc2, 0xb5, 0x8a, 0xdb, 0xaa, 0xa0, 0x31, 0xa6, 0x6e, 0x06, - 0xed, 0x91, 0xa8, 0xd7, 0xa8, 0xc3, 0x32, 0x41, 0x4b, 0xd8, 0xd4, 0x29, 0x57, 0xaa, 0x25, - 0x19, 0xd6, 0x10, 0xb0, 0x9f, 0x2f, 0xc2, 0x90, 0x5a, 0x18, 0x9a, 0xa1, 0x90, 0xb3, 0xe3, - 0x39, 0x80, 0x44, 0x47, 0xc7, 0x2a, 0xe0, 0x87, 0x9c, 0x56, 0x75, 0x59, 0x40, 0x45, 0xd6, - 0x0e, 0xa6, 0xe3, 0xe6, 0x02, 0xe4, 0x19, 0xbd, 0xe8, 0x6d, 0xd1, 0x78, 0xe3, 0x4f, 0x7c, - 0x03, 0x1f, 0x8b, 0x53, 0xa3, 0xcf, 0xe7, 0x00, 0xad, 0x4c, 0x87, 0x06, 0x51, 0xf9, 0x52, - 0x23, 0xcc, 0xbe, 0x52, 0x8f, 0xc4, 0xce, 0x15, 0x48, 0x30, 0x35, 0xce, 0x3d, 0x71, 0x65, - 0xcf, 0x56, 0x82, 0xb0, 0x57, 0x36, 0x45, 0x6c, 0x52, 0xda, 0xab, 0x26, 0x17, 0xff, 0x4e, - 0xba, 0x92, 0x8a, 0x4d, 0x9e, 0x16, 0x61, 0x0b, 0x42, 0xfc, 0x7c, 0x32, 0x9e, 0x93, 0x13, - 0x45, 0x4f, 0x08, 0x79, 0xd4, 0xcc, 0x7c, 0x9c, 0x5d, 0x9a, 0x34, 0x3a, 0x1d, 0x76, 0x52, - 0x25, 0x5c, 0x39, 0xf3, 0xee, 0xfd, 0xb5, 0x88, 0x96, 0x58, 0xc0, 0x23, 0x15, 0x7f, 0x01, - 0x0d, 0x27, 0xb8, 0x66, 0xa2, 0xd9, 0x3d, 0xf0, 0x72, 0xc2, 0xbe, 0x7f, 0xd6, 0x06, 0x80, - 0x17, 0x80, 0x75, 0xc3, 0x62, 0x08, 0x2e, 0x6d, 0x23, 0x78, 0xef, 0x60, 0x78, 0xe4, 0x34, - 0x2f, 0xa5, 0xb2, 0xb4, 0xf7, 0x00, 0x03, 0xd6, 0x40, 0xbb, 0xfb, 0xd5, 0x89, 0xb9, 0x3c, - 0xab, 0x2d, 0x46, 0x8d, 0x23, 0x16, 0xb0, 0x89, 0x56, 0x5b, 0xbe, 0xa2, 0x71, 0x7f, 0x94, - 0x78, 0xb4, 0xf7, 0x7d, 0x8c, 0xb0, 0xe8, 0x05, 0x78, 0xa1, 0x24, 0x5d, 0xd7, 0x04, 0x4e, - 0x7d, 0xc1, 0xae, 0x5d, 0x24, 0x80, 0x54, 0xb4, 0x79, 0xbe, 0x44, 0x52, 0x2e, 0x47, 0x10, - 0xf6, 0x99, 0x04, 0x68, 0x73, 0x68, 0x1f, 0x65, 0x38, 0xd8, 0x63, 0xa5, 0xb5, 0x3f, 0xfe, - 0x1c, 0x27, 0x32, 0xca, 0x8b, 0x08, 0x31, 0x48, 0xfb, 0xf2, 0xb4, 0x24, 0x58, 0x04, 0x07, - 0x82, 0x88, 0x05, 0x11, 0xf9, 0x2b, 0x27, 0x2b, 0x7b, 0x3e, 0xea, 0xa9, 0x6d, 0x39, 0x50, - 0x41, 0xea, 0x2c, 0xa7, 0xd6, 0xd9, 0x9d, 0xfd, 0x21, 0x56, 0xa2, 0x50, 0xd5, 0x21, 0xcc, - 0xcc, 0x09, 0xa7, 0x33, 0x9d, 0xa1, 0xca, 0xa6, 0xb0, 0x99, 0xff, 0x86, 0x3d, 0x90, 0xdd, - 0x9f, 0x41, 0xc6, 0x6e, 0xd9, 0x55, 0x02, 0xbc, 0x71, 0x90, 0x06, 0xfd, 0x4a, 0x92, 0x01, - 0x1d, 0x36, 0x4c, 0x2f, 0x4f, 0xc8, 0xcc, 0xf9, 0xcb, 0xdb, 0xe3, 0xb5, 0xef, 0xd5, 0x06, - 0x26, 0x85, 0x4f, 0x40, 0x0e, 0xa1, 0x76, 0x9e, 0xea, 0xc7, 0x9a, 0x54, 0xd7, 0xfe, 0xec, - 0xc3, 0x7a, 0xbe, 0x46, 0x2f, 0x82, 0xa9, 0xa0, 0xfc, 0x1c, 0x10, 0xf0, 0xcc, 0x2a, 0x50, - 0x83, 0xe2, 0x01, 0x37, 0x73, 0x70, 0xca, 0x8f, 0x3f, 0x0b, 0x72, 0x6c, 0xc4, 0x8c, 0x0a, - 0x94, 0xe5, 0x98, 0x1e, 0xac, 0xa9, 0x01, 0x37, 0xba, 0x2b, 0x6e, 0xaf, 0xa8, 0x9b, 0x1a, - 0x91, 0x70, 0xbe, 0x15, 0xb9, 0x2d, 0x3f, 0x3d, 0x48, 0x3e, 0x1a, 0x1b, 0xf2, 0x76, 0x67, - 0x41, 0x8d, 0x80, 0x5a, 0x47, 0x0f, 0xe9, 0xcd, 0x8b, 0x0b, 0xcf, 0x3d, 0x6c, 0x75, 0x88, - 0x27, 0x1f, 0x64, 0x22, 0x7c, 0x70, 0xd4, 0x49, 0x06, 0x7d, 0x03, 0x25, 0xeb, 0x91, 0x5a, - 0x81, 0xe2, 0x6d, 0xb9, 0x47, 0xe9, 0xbb, 0x27, 0xbb, 0x09, 0x38, 0x13, 0xca, 0x81, 0xe5, - 0x15, 0x19, 0x2f, 0x34, 0xea, 0xf8, 0x6a, 0x9f, 0xc6, 0x76, 0x1f, 0x8c, 0x5f, 0xa2, 0xc2, - 0xf7, 0x62, 0x03, 0xc0, 0x4d, 0xa5, 0x94, 0x67, 0xce, 0x54, 0x57, 0xf2, 0xde, 0x03, 0x78, - 0x86, 0xec, 0xc2, 0xaf, 0x9a, 0xe1, 0xf8, 0xb3, 0xc7, 0x16, 0xfe, 0x56, 0x42, 0xd3, 0xf4, - 0xbc, 0x3a, 0xaa, 0xdf, 0xb9, 0x42, 0x62, 0x2a, 0x20, 0x3e, 0x71, 0x40, 0x7f, 0xc5, 0x49, - 0x0f, 0xee, 0xe3, 0x83, 0x36, 0x4b, 0xaf, 0xb5, 0x05, 0x8f, 0x55, 0x5d, 0xf5, 0x93, 0xff, - 0x31, 0x6a, 0x62, 0xf4, 0xeb, 0x8d, 0xde, 0xe3, 0xe4, 0x8d, 0x08, 0xf9, 0xe1, 0x15, 0x66, - 0xc2, 0x91, 0x9e, 0x4e, 0xda, 0xe5, 0x8d, 0xc8, 0x4a, 0x46, 0x8d, 0xc2, 0x55, 0x29, 0x66, - 0x9a, 0x9f, 0x4a, 0x9e, 0x86, 0x9e, 0xdb, 0x5c, 0x8e, 0xd0, 0xc9, 0x1c, 0xc7, 0xd5, 0x6c, - 0xed, 0x84, 0x08, 0x6f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x87, - 0x68, 0xc7, 0xd4, 0x84, 0x6c, 0x02, 0xbf, 0xe3, 0x47, 0x21, 0xad, 0xaa, 0xd0, 0x0b, 0x4b, - 0x6b, 0xaa, 0xda, 0x20, 0x39, 0xff, 0x05, 0xaf, 0xa1, 0xb9, 0xdf, 0xa2, 0x92, 0x0c, 0x3a, - 0x8a, 0x61, 0xa2, 0xb2, 0xa8, 0x36, 0xd3, 0xf1, 0x80, 0x23, 0xad, 0x16, 0x5c, 0x25, 0x1b, - 0x3e, 0x97, 0x21, 0x4b, 0xed, 0xa5, 0xa1, 0xe8, 0x85, 0xd2, 0x4a, 0x55, 0xa6, 0x14, 0xcc, - 0xee, 0x3e, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, 0x77, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, - 0x84, 0xf5, 0x89, 0xf5, 0x3d, 0xbe, 0x67, 0xb1, 0x56, 0xb4, 0x76, 0xec, 0x6c, 0x55, 0x64, - 0x73, 0xc7, 0xf5, 0xa5, 0x81, 0x75, 0x1f, 0x92, 0x5e, 0x0a, 0x79, 0x77, 0xd8, 0xea, 0x8a, - 0x01, 0xfb, 0x93, 0xf0, 0xf2, 0xff, 0xf1, 0x7a, 0x55, 0x9d, 0xd6, 0xb5, 0x2a, 0x5d, 0xf7, - 0x9d, 0xfd, 0x35, 0xed, 0x51, 0x20, 0x74, 0x18, 0xd6, 0xec, 0x1c, 0x8e, 0xb8, 0x57, 0xb8, - 0x94, 0x4b, 0x17, 0xd0, 0x8d, 0xf0, 0xfa, 0xf8, 0x81, 0x0e, 0x72, 0x04, 0xfc, 0x01, 0x2c, - 0x39, 0x50, 0x92, 0x30, 0x14, 0xa9, 0x34, 0xc9, 0x2d, 0x38, 0x0c, 0x7f, 0x90, 0xcb, 0x16, - 0x96, 0x7f, 0x0a, 0x97, 0x84, 0x49, 0x4a, 0x33, 0x5f, 0x3f, 0xed, 0x47, 0x6c, 0x58, 0x49, - 0x3e, 0x9c, 0x83, 0x74, 0x15, 0xff, 0x4f, 0xbb, 0x0b, 0x0f, 0xff, 0x46, 0xca, 0x35, 0x57, - 0xe8, 0x31, 0x8b, 0x9c, 0x77, 0xd7, 0x01, 0x73, 0x63, 0x13, 0x06, 0x0b, 0x28, 0x51, 0x89, - 0x20, 0xc7, 0x0e, 0xae, 0x19, 0x82, 0xfa, 0x7a, 0x40, 0x43, 0xce, 0x37, 0x03, 0xe4, 0xd4, - 0xd5, 0x84, 0x0e, 0xb8, 0xd8, 0x7c, 0xc5, 0xdc, 0xbe, 0x5f, 0xc9, 0xea, 0xce, 0x26, 0x79, - 0xe5, 0x4b, 0x58, 0x8f, 0xf5, 0xe4, 0x78, 0xd9, 0x76, 0x6a, 0x63, 0xc2, 0xc6, 0x0e, 0x6b, - 0x96, 0x8e, 0xe3, 0xc8, 0xe0, 0x11, 0x37, 0xda, 0x48, 0x07, 0x09, 0x49, 0x66, 0x56, 0xa9, - 0x09, 0xc2, 0xbd, 0x38, 0x1b, 0xbe, 0x76, 0x88, 0x74, 0x7f, 0xe7, 0xce, 0xf4, 0x95, 0x56, - 0xed, 0x72, 0x6f, 0x6f, 0x12, 0x41, 0xfe, 0xf4, 0x80, 0x02, 0x7d, 0xc6, 0x77, 0x1d, 0xb3, - 0x52, 0x9c, 0xa4, 0xad, 0x55, 0x85, 0x28, 0x13, 0x67, 0x21, 0xda, 0xbf, 0x2c, 0xe7, 0x75, - 0xdb, 0x8f, 0x39, 0x9e, 0x83, 0x4f, 0xaa, 0x05, 0x36, 0xd7, 0xd4, 0x16, 0xff, 0xcc, 0xf6, - 0x0b, 0x4e, 0x23, 0xfd, 0x8b, 0x5d, 0x2a, 0xb3, 0x61, 0x68, 0xe0, 0x42, 0x14, 0xf3, 0x36, - 0x5c, 0x21, 0xb2, 0x15, 0x7f, 0x6b, 0x18, 0x42, 0xfb, 0x1d, 0x76, 0x79, 0x84, 0x5d, 0x27, - 0x6f, 0x06, 0xb7, 0x4e, 0xfe, 0x35, 0x14, 0xdf, 0x0c, 0xe3, 0xc1, 0x7d, 0x54, 0x9d, 0xe9, - 0xa5, 0x14, 0x5d, 0x4f, 0x46, 0xa4, 0xc6, 0x5d, 0x6c, 0x67, 0x00, 0xfd, 0xf6, 0xc3, 0x3a, - 0xf9, 0x0c, 0x1e, 0x86, 0x58, 0x5d, 0xd9, 0x6d, 0xe4, 0xc3, 0x1f, 0xa4, 0x0d, 0x02, 0x54, - 0xc0, 0xc4, 0x9a, 0x10, 0x06, 0x1f, 0x96, 0x6c, 0x0c, 0xfe, 0xd6, 0x28, 0x4f, 0x6a, 0xe2, - 0x00, 0x88, 0x6a, 0xa2, 0x01, 0xe4, 0x8b, 0x26, 0x38, 0x3d, 0x4f, 0x6b, 0xba, 0x59, 0x6e, - 0xa9, 0xbb, 0x2d, 0xa4, 0xe7, 0x9d, 0xc9, 0x3e, 0xbf, 0x74, 0xa1, 0x61, 0x6e, 0xa1, 0x3a, - 0x9d, 0x22, 0x92, 0x63, 0x56, 0x81, 0xf1, 0x21, 0xae, 0x87, 0xef, 0x72, 0x2b, 0xb4, 0xe2, - 0x1a, 0x20, 0x52, 0x2c, 0xff, 0x5a, 0xdd, 0x2d, 0x92, 0x19, 0x76, 0x13, 0x02, 0xd0, 0x1c, - 0xf8, 0xd6, 0xf4, 0x49, 0x81, 0x0c, 0xbe, 0x60, 0xcf, 0xb4, 0xff, 0x70, 0x54, 0x88, 0xc6, - 0x18, 0xa9, 0x6b, 0x79, 0x9e, 0x15, 0xce, 0x36, 0x40, 0xa8, 0xc0, 0x66, 0x92, 0x28, 0xa2, - 0x40, 0x9e, 0xd6, 0x4f, 0x45, 0x15, 0x77, 0x6a, 0x02, 0xb6, 0x78, 0x17, 0x2a, 0x9b, 0xd0, - 0x4f, 0x78, 0xc1, 0x99, 0xdd, 0x74, 0x37, 0xd5, 0x63, 0xb3, 0xdb, 0x07, 0x6d, 0x3c, 0xe8, - 0x75, 0x67, 0x9a, 0xa1, 0x64, 0xac, 0x39, 0x63, 0x64, 0x56, 0x05, 0xa8, 0x6d, 0x7c, 0xf1, - 0xbe, 0x63, 0xe0, 0x49, 0x71, 0x08, 0x71, 0x52, 0x05, 0x21, 0xc2, 0xca, 0x87, 0x7f, 0xb4, - 0x8e, 0xd7, 0x4d, 0x49, 0xab, 0x17, 0xc9, 0x06, 0x03, 0xd2, 0x20, 0x07, 0xc1, 0x56, 0xe2, - 0x5c, 0x09, 0xa1, 0xc3, 0x20, 0x09, 0xe9, 0x50, 0xb3, 0x5b, 0x98, 0xfa, 0xd1, 0x79, 0x58, - 0x3c, 0x67, 0x3a, 0x6f, 0x19, 0x59, 0x9d, 0x9e, 0x92, 0x22, 0xae, 0x25, 0x5f, 0x59, 0x4d, - 0x68, 0x86, 0x1c, 0xed, 0xda, 0x28, 0xd7, 0xf9, 0x75, 0xd4, 0x67, 0xda, 0xba, 0x08, 0x1c, - 0xb2, 0xec, 0x22, 0x95, 0x77, 0x0a, 0xcd, 0x0f, 0xdc, 0x51, 0xfe, 0xc2, 0x3b, 0x6e, 0x44, - 0x82, 0xbe, 0x8e, 0xee, 0xaf, 0xeb, 0xdd, 0xb2, 0x97, 0x4c, 0x78, 0x9a, 0xd3, 0xb5, 0x31, - 0x78, 0x3f, 0x11, 0xfa, 0x9f, 0x1b, 0xec, 0xeb, 0x8e, 0xa1, 0x1e, 0xb4, 0x36, 0x50, 0x85, - 0xd8, 0x7b, 0x8c, 0x92, 0x89, 0x5e, 0xba, 0xbe, 0x52, 0x7a, 0x41, 0x00, 0x9e, 0x28, 0xd6, - 0xee, 0x75, 0xfa, 0x3d, 0xac, 0x57, 0xd7, 0xbf, 0x12, 0xaa, 0xad, 0xe8, 0x32, 0xef, 0x6d, - 0x95, 0xf6, 0x40, 0x55, 0xe1, 0xeb, 0xa1, 0xfa, 0x2b, 0xea, 0xc6, 0x60, 0xca, 0x97, 0x05, - 0x49, 0x4b, 0x04, 0x75, 0xc8, 0xc3, 0x4b, 0xcc, 0x47, 0xf1, 0x0a, 0xcd, 0x02, 0x3c, 0x5e, - 0x62, 0x1b, 0x21, 0x08, 0xc1, 0xae, 0x6b, 0xdc, 0xa9, 0xd8, 0xb3, 0xda, 0x04, 0xa5, 0x49, - 0xaa, 0x1a, 0x63, 0xe8, 0x7f, 0xe8, 0x4e, 0x87, 0x5b, 0xe4, 0x24, 0x54, 0x02, 0x64, 0x6e, - 0x21, 0x51, 0xe7, 0x89, 0xf5, 0x38, 0x5a, 0xd4, 0x65, 0x23, 0xd0, 0xea, 0xf2, 0x52, 0x5d, - 0x02, 0xdb, 0xa3, 0xb5, 0x62, 0x3d, 0x7e, 0x2b, 0xa3, 0x15, 0x1f, 0xff, 0xca, 0x15, 0x80, - 0x92, 0xa5, 0x2d, 0x8c, 0xdc, 0x3a, 0xec, 0xee, 0x5c, 0x66, 0x3f, 0xf1, 0xa5, 0xda, 0x3e, - 0x68, 0x87, 0xde, 0x40, 0x50, 0x96, 0x33, 0x33, 0xeb, 0xa2, 0xbc, 0x59, 0xce, 0x10, 0xd8, - 0x9b, 0x3c, 0x90, 0x70, 0xbb, 0x63, 0xf8, 0xaf, 0x2d, 0xb5, 0x4b, 0xe2, 0x45, 0x54, 0x89, - 0x06, 0x48, 0xdb, 0x11, 0x87, 0x0c, 0xf7, 0x31, 0x53, 0x4a, 0x03, 0xb2, 0xaa, 0xbf, 0x4d, - 0x04, 0x76, 0xac, 0x41, 0xf4, 0x14, 0x06, 0xa8, 0xb2, 0xfb, 0xd0, 0x51, 0x3c, 0x2e, 0xde, - 0x4a, 0x1a, 0xb0, 0xcc, 0x93, 0x08, 0x64, 0xb8, 0xb7, 0xc1, 0x82, 0x53, 0x17, 0x9e, 0x77, - 0x23, 0x92, 0xe0, 0xc7, 0xea, 0xf4, 0x73, 0xc9, 0x66, 0xd5, 0x87, 0xe6, 0xba, 0xcd, 0x00, - 0xe3, 0xe6, 0x81, 0x19, 0xd3, 0x72, 0xde, 0xa1, 0x95, 0xb2, 0x86, 0xef, 0x68, 0xe1, 0x9b, - 0x06, 0xc2, 0x0c, 0xad, 0x46, 0xbe, 0xeb, 0x56, 0x01, 0x98, 0x8e, 0x27, 0x62, 0xc7, 0x1d, - 0x7c, 0xea, 0x86, 0xa6, 0xc4, 0x98, 0xe1, 0xed, 0x0d, 0x18, 0x6c, 0x40, 0xe8, 0xda, 0x6c, - 0x60, 0xb8, 0x97, 0x33, 0x2d, 0xa6, 0xa0, 0xb0, 0xb2, 0x95, 0x0a, 0x3f, 0x88, 0x3d, 0x1a, - 0x12, 0x65, 0x0f, 0x6a, 0x3c, 0x89, 0xc1, 0xdd, 0x59, 0x28, 0xfe, 0xe2, 0x88, 0xd7, 0x30, - 0xfb, 0xcc, 0x47, 0x02, 0x76, 0xac, 0xee, 0x3a, 0xa4, 0x5d, 0xb6, 0x65, 0xe3, 0x56, 0x26, - 0x6b, 0xef, 0x17, 0x98, 0x23, 0x57, 0x7f, 0x7f, 0x7d, 0xab, 0xd9, 0x4a, 0x5a, 0xa7, 0x58, - 0x7b, 0x4c, 0xc0, 0x3b, 0xef, 0xec, 0x5e, 0x5e, 0x9b, 0xb2, 0x41, 0xab, 0x28, 0x3f, 0xd0, - 0xbc, 0xbc, 0x5f, 0xf1, 0x78, 0xd1, 0x9c, 0xde, 0x30, 0x1c, 0x4a, 0xac, 0x4a, 0xfa, 0x03, - 0x65, 0x00, 0x01, 0x4f, 0xec, 0x61, 0x09, 0xfe, 0x3c, 0x23, 0x37, 0xb7, 0x70, 0xec, 0xad, - 0x67, 0x61, 0x89, 0x2b, 0xc7, 0x2e, 0xad, 0x06, 0x58, 0x4e, 0x44, 0x58, 0x66, 0x86, 0x16, - 0x58, 0x7b, 0x28, 0x00, 0x50, 0xe2, 0x62, 0xce, 0xcc, 0xe6, 0x54, 0x91, 0xe6, 0xa9, 0xc9, - 0x3b, 0xbb, 0x26, 0x4c, 0xef, 0x27, 0xd7, 0xf2, 0x47, 0x05, 0x88, 0x16, 0xc6, 0x02, 0x6a, - 0xdf, 0x8b, 0x04, 0x0e, 0xcb, 0x3b, 0xa5, 0x59, 0x20, 0x9f, 0xcc, 0x7c, 0x24, 0x82, 0x7c, - 0x46, 0x02, 0x21, 0x54, 0x1a, 0x7b, 0xcd, 0x97, 0xe8, 0x7d, 0x1e, 0xc7, 0xb9, 0x6e, 0xfb, - 0x31, 0xa4, 0x8f, 0x42, 0x96, 0x54, 0xca, 0xcb, 0x12, 0xc8, 0x0c, 0x94, 0xb4, 0x3a, 0x8c, - 0xab, 0x2f, 0xb4, 0x61, 0xcc, 0xfa, 0xe3, 0x13, 0x56, 0xb8, 0x9d, 0x47, 0x6d, 0x13, 0x9c, - 0xfc, 0x03, 0x98, 0xa2, 0x9a, 0x6b, 0x40, 0xcd, 0xa8, 0xa3, 0xcc, 0x61, 0x9e, 0xa3, 0xe8, - 0x24, 0xa4, 0xa5, 0x85, 0x4a, 0x93, 0xf0, 0x3a, 0x67, 0x86, 0x32, 0x5c, 0xde, 0x80, 0x6b, - 0x08, 0x66, 0xec, 0xe6, 0x35, 0x83, 0xc4, 0x5f, 0x51, 0x28, 0x84, 0xf0, 0x7a, 0x95, 0x96, - 0xb5, 0x5f, 0x84, 0xc1, 0xce, 0x36, 0xb4, 0x50, 0xd7, 0xd9, 0xce, 0x07, 0xcf, 0x54, 0x52, - 0x46, 0x67, 0x19, 0x1e, 0xa2, 0xda, 0x40, 0x7d, 0x0a, 0x47, 0x81, 0xf2, 0xa8, 0xdc, 0x19, - 0x80, 0xda, 0x32, 0xed, 0x54, 0x5b, 0xc5, 0x83, 0x07, 0xc2, 0xe5, 0x61, 0xf0, 0x31, 0x19, - 0xd1, 0xe2, 0x24, 0x64, 0x66, 0xd9, 0x6c, 0xa6, 0x30, 0x26, 0x5f, 0x49, 0x05, 0x0b, 0xc1, - 0x1b, 0x40, 0x55, 0xe6, 0xb4, 0x71, 0x62, 0xe9, 0x2c, 0x9d, 0xb7, 0x7e, 0xc0, 0x5b, 0x70, - 0x6d, 0x40, 0x6a, 0x4c, 0x8c, 0xc1, 0xdd, 0x1c, 0xca, 0x1c, 0x5d, 0x9d, 0xc0, 0x31, 0x9d, - 0x14, 0x94, 0xc4, 0x00, 0x88, 0xfd, 0x64, 0x17, 0xba, 0xd1, 0x28, 0x83, 0x63, 0x1f, 0x27, - 0xaa, 0x61, 0xd0, 0xbd, 0xff, 0x6a, 0x7d, 0xa2, 0x03, 0xc8, 0x41, 0x8d, 0x44, 0x14, 0x16, - 0x6e, 0x47, 0xd6, 0xb7, 0x79, 0xc9, 0xbf, 0x1c, 0x84, 0x64, 0xd8, 0x22, 0x1e, 0x21, 0x51, - 0xaf, 0x63, 0x4f, 0x3e, 0x7a, 0x9c, 0x75, 0xf2, 0xd5, 0xe6, 0x6a, 0xc0, 0xb0, 0x80, 0xa9, - 0xc3, 0x19, 0x6c, 0x64, 0x37, 0x17, 0x11, 0x00, 0xd1, 0x09, 0xfb, 0xe0, 0x4e, 0x7c, 0x11, - 0x6c, 0xbc, 0xbc, 0x46, 0x32, 0x8a, 0xea, 0x1b, 0x4c, 0xdc, 0x0e, 0x8d, 0x6a, 0xf4, 0x23, - 0xb9, 0xa8, 0xda, 0x48, 0xf3, 0xc2, 0x38, 0x40, 0x9f, 0xaa, 0x01, 0xb3, 0x2a, 0x6d, 0x9b, - 0x16, 0xdd, 0x5f, 0xd4, 0x13, 0xaa, 0x28, 0xff, 0x35, 0x45, 0xd9, 0x98, 0x82, 0xd6, 0x8d, - 0x4b, 0x44, 0xeb, 0x0d, 0x9c, 0x5a, 0x71, 0xb3, 0x3d, 0xa9, 0x4b, 0x65, 0xc4, 0xd5, 0x18, - 0x5e, 0x84, 0x7f, 0x35, 0x60, 0xe7, 0x80, 0xdf, 0x75, 0x27, 0x01, 0x61, 0xf1, 0xdc, 0x9b, - 0xdf, 0xd3, 0x94, 0xb4, 0x8a, 0xe3, 0x4c, 0x63, 0x09, 0x6a, 0x55, 0x3d, 0x93, 0x0d, 0x75, - 0xd9, 0xc4, 0x8b, 0x8d, 0xd6, 0x39, 0x1b, 0x0f, 0x4e, 0xe6, 0xbf, 0x86, 0x43, 0xb4, 0xa3, - 0x5f, 0x40, 0xf6, 0xac, 0x65, 0xbd, 0x33, 0xa5, 0x93, 0x4f, 0x22, 0x32, 0xa1, 0x55, 0x0a, - 0x74, 0xbc, 0x81, 0x1f, 0xb8, 0x5e, 0xc5, 0x5a, 0x78, 0xa8, 0xb6, 0x1a, 0x36, 0xd3, 0x88, - 0x29, 0x7c, 0x77, 0xb1, 0x61, 0x00, 0xc2, 0xd7, 0x2c, 0x10, 0xad, 0x2f, 0xf1, 0xd3, 0x10, - 0x4b, 0x33, 0x87, 0xda, 0x46, 0x0c, 0x3e, 0x89, 0x19, 0x67, 0x55, 0x21, 0xdd, 0xf2, 0xed, - 0x8c, 0xe8, 0x86, 0x0f, 0x22, 0x30, 0xb4, 0x61, 0xcd, 0x88, 0x89, 0x0f, 0x25, 0x94, 0x2f, - 0x2b, 0x7d, 0xcc, 0xf1, 0x3b, 0x50, 0x0c, 0xbd, 0x86, 0x78, 0x56, 0xe9, 0x62, 0xc4, 0x47, - 0xbb, 0xa5, 0xbc, 0xe6, 0x44, 0xf7, 0x45, 0x87, 0x6e, 0xa8, 0xfb, 0x6e, 0x00, 0xbf, 0x10, - 0x00, 0x7d, 0x7f, 0xaf, 0x2e, 0x43, 0x32, 0x20, 0xf1, 0x90, 0x3b, 0xf2, 0x4f, 0x28, 0xd7, - 0x2f, 0x77, 0x5f, 0xaf, 0x63, 0x15, 0x09, 0xfb, 0xce, 0xbe, 0x06, 0x84, 0x11, 0xda, 0x68, - 0x31, 0xd8, 0xb6, 0x52, 0xeb, 0x0f, 0x89, 0x92, 0x37, 0x30, 0x4d, 0x6b, 0x7b, 0x76, 0xdb, - 0x20, 0x00, 0x37, 0x8d, 0x46, 0xf3, 0x1e, 0x26, 0x4e, 0x3c, 0xbc, 0xbd, 0xdb, 0xd2, 0xb2, - 0xae, 0xaa, 0x2f, 0xbc, 0x5a, 0x29, 0xd0, 0x52, 0x21, 0xcc, 0xef, 0xf5, 0xa3, 0x5d, 0xbc, - 0x1d, 0xd7, 0x0f, 0x5a, 0x04, 0x5f, 0x1c, 0x86, 0x30, 0xd5, 0xdd, 0x22, 0x8c, 0xc1, 0xdb, - 0xec, 0x06, 0xf1, 0xd6, 0x35, 0xa1, 0xde, 0x31, 0xdf, 0x35, 0x5f, 0x92, 0xd1, 0xf0, 0xe3, - 0xf8, 0x36, 0xf0, 0xf4, 0x00, 0x8d, 0x49, 0xe9, 0xee, 0xc0, 0x06, 0x2e, 0xd0, 0x9b, 0x13, - 0xa6, 0x45, 0x4d, 0xbf, 0xd5, 0x2e, 0x43, 0x78, 0x71, 0x83, 0x6b, 0x81, 0xb5, 0x86, 0x71, - 0x7d, 0x7b, 0xac, 0xba, 0x21, 0x5b, 0x83, 0xbc, 0xa4, 0x9f, 0x4a, 0x40, 0xc0, 0x00, 0x52, - 0x84, 0x11, 0x59, 0xb8, 0xed, 0xeb, 0x45, 0xc5, 0xdc, 0x2c, 0x29, 0xa6, 0x3d, 0xb7, 0x8e, - 0x12, 0x35, 0x67, 0xf9, 0x4c, 0x3a, 0x09, 0x57, 0x4d, 0x90, 0xa1, 0xc5, 0xde, 0x03, 0x44, - 0x3f, 0xfb, 0x9e, 0x5e, 0x7f, 0x78, 0x9e, 0x12, 0x80, 0x10, 0x2d, 0xa6, 0xcd, 0xc6, 0x9a, - 0x1a, 0x3d, 0x58, 0xd6, 0x3f, 0x7d, 0x98, 0x8a, 0x07, 0x63, 0x42, 0x6e, 0xab, 0x8f, 0x9a, - 0x11, 0x44, 0x24, 0x13, 0x85, 0x29, 0xf6, 0x77, 0x3f, 0x4c, 0x42, 0x93, 0xc4, 0x7c, 0x5b, - 0x83, 0x11, 0xb8, 0xd0, 0x18, 0x2a, 0xd0, 0xd4, 0x9e, 0x82, 0x39, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x5f, 0xd2, 0x81, 0x52, 0x14, 0x44, 0x95, 0x7b, 0xab, 0x12, 0xf4, 0x71, 0x04, 0xf5, - 0xff, 0x29, 0x56, 0x20, 0xfd, 0x17, 0xdb, 0xdb, 0x79, 0x9f, 0x81, 0x3f, 0x97, 0x3e, 0x1e, - 0xae, 0xd4, 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xe0, 0x1c, 0x19, - 0xa4, 0xc0, 0xb6, 0xd8, 0x9d, 0x27, 0x68, 0x7e, 0xe2, 0x04, 0xa5, 0xbc, 0x6b, 0x5e, 0xa4, - 0x2a, 0xbd, 0xf1, 0xf0, 0x52, 0x29, 0xd7, 0x33, 0x1d, 0x10, 0xdc, 0x42, 0x88, 0xe5, 0x13, - 0xa6, 0xb0, 0xe8, 0x89, 0x4c, 0xf2, 0xdc, 0x34, 0x07, 0x0a, 0xf4, 0x6e, 0xb9, 0xb7, 0x5f, - 0x80, 0xf8, 0xf8, 0x91, 0x59, 0x6b, 0x4b, 0xd4, 0x07, 0x85, 0xcb, 0x3a, 0xd0, 0x39, 0x88, - 0x20, 0x1b, 0x99, 0xf7, 0x80, 0x52, 0x4a, 0xd2, 0x52, 0xcd, 0x21, 0x27, 0xe7, 0x89, 0x84, - 0x7c, 0x85, 0x57, 0x66, 0x2f, 0x80, 0x89, 0x3f, 0xc9, 0xf4, 0xc3, 0xe2, 0x81, 0xb8, 0xcf, - 0x21, 0xe6, 0xc0, 0xe7, 0x96, 0x8e, 0x39, 0x9e, 0xda, 0xe0, 0xfe, 0x6c, 0x8d, 0x34, 0xb3, - 0xeb, 0xa5, 0x1c, 0x44, 0xf5, 0xa4, 0x0f, 0x35, 0x89, 0xca, 0x68, 0x2c, 0x5c, 0x37, 0x88, - 0x3d, 0xde, 0xc3, 0x9f, 0x1b, 0xd8, 0xb9, 0xc3, 0x3b, 0x52, 0x49, 0xf5, 0xf2, 0x0f, 0xec, - 0x00, 0xc0, 0xa0, 0xb2, 0x14, 0xe6, 0x7e, 0x81, 0x2f, 0xdf, 0x95, 0x50, 0x4f, 0x0b, 0xbe, - 0x50, 0xa4, 0xc8, 0xf8, 0x5a, 0xc9, 0xd0, 0x00, 0x93, 0x2e, 0x32, 0x5a, 0xac, 0xce, 0x52, - 0x5b, 0xfb, 0x4d, 0x2e, 0xac, 0x7a, 0xb1, 0x23, 0x13, 0x95, 0x1a, 0x38, 0x0d, 0xe4, 0x03, - 0xb4, 0x3f, 0xcf, 0x0f, 0x87, 0x3e, 0x04, 0xa8, 0x89, 0x95, 0x3a, 0x12, 0x5a, 0xa5, 0x05, - 0xf0, 0x5f, 0xa7, 0x96, 0x51, 0x3a, 0xeb, 0x72, 0xe0, 0xf0, 0x58, 0x0c, 0x62, 0xf6, 0xe1, - 0x2b, 0xbe, 0xe4, 0x2c, 0xe8, 0x20, 0xe9, 0x38, 0x9c, 0x16, 0x97, 0xc8, 0x08, 0x65, 0x90, - 0x8e, 0xfd, 0x82, 0x17, 0x67, 0xbf, 0xdd, 0x76, 0x3e, 0xc7, 0xae, 0x50, 0xff, 0xc6, 0x25, - 0x9e, 0xfd, 0x47, 0xbf, 0x81, 0x74, 0xe0, 0xa7, 0xc7, 0x3d, 0xa2, 0xf9, 0x55, 0xa6, 0x18, - 0x9c, 0xf7, 0xe8, 0x73, 0x91, 0x58, 0x9f, 0x9a, 0xc5, 0x9e, 0x61, 0xda, 0x89, 0x82, 0xe8, - 0x1f, 0x37, 0x1a, 0x27, 0xf6, 0xd9, 0x30, 0xeb, 0xdd, 0x76, 0xcc, 0x91, 0xd8, 0x61, 0x10, - 0x52, 0xad, 0xbf, 0x23, 0xa4, 0x17, 0x9c, 0xd3, 0xb1, 0x0d, 0x6a, 0x39, 0x91, 0x64, 0x48, - 0x7e, 0x77, 0x6e, 0x4f, 0x45, 0x77, 0x00, 0x47, 0x18, 0xbd, 0xab, 0x42, 0x59, 0x9e, 0xc4, - 0xbf, 0x97, 0xd9, 0xb1, 0xd7, 0xa3, 0xe9, 0x59, 0x14, 0x65, 0xe7, 0xee, 0xa5, 0xe4, 0x83, - 0xae, 0x77, 0xd4, 0xdd, 0x02, 0xa5, 0xcd, 0xbc, 0x66, 0x5b, 0xad, 0x1a, 0xf4, 0x57, 0xed, - 0xb5, 0xb2, 0x7d, 0x35, 0x9c, 0x15, 0xf5, 0x76, 0x29, 0x2f, 0x74, 0x0c, 0x92, 0x6c, 0x43, - 0x80, 0x50, 0xf1, 0xf5, 0x3f, 0xe7, 0xc1, 0xa8, 0xa0, 0xfd, 0x43, 0x69, 0x6d, 0xcb, 0xca, - 0x9d, 0x1b, 0xe0, 0x05, 0x58, 0xb3, 0x34, 0x31, 0xa6, 0x60, 0xb4, 0xb8, 0xea, 0x0c, 0x2d, - 0x4e, 0xb2, 0xe1, 0xc0, 0x26, 0x2a, 0x47, 0x36, 0xa8, 0xec, 0x5a, 0x74, 0xaa, 0xcb, 0x27, - 0xb6, 0x61, 0xc1, 0x39, 0x85, 0xe0, 0x28, 0x13, 0xf1, 0x2e, 0x76, 0x35, 0xad, 0xb8, 0x4a, - 0xc5, 0x36, 0x24, 0xa7, 0x7c, 0xe1, 0x47, 0xbf, 0x1b, 0x40, 0x91, 0x23, 0xed, 0x37, 0x96, - 0x8d, 0xbd, 0x6d, 0xd7, 0xe8, 0x90, 0x59, 0xc3, 0x6e, 0xba, 0xd2, 0x9f, 0x48, 0xee, 0x55, - 0x71, 0x2a, 0x6b, 0xa9, 0x43, 0x24, 0xac, 0x97, 0x89, 0x01, 0xba, 0xcd, 0x33, 0x43, 0xa1, - 0x90, 0x9d, 0x8e, 0x24, 0x0e, 0x8b, 0x00, 0x84, 0xf7, 0x5d, 0xef, 0x3e, 0x3d, 0xab, 0xeb, - 0x9a, 0x96, 0x50, 0xa1, 0x99, 0x73, 0xd8, 0xb1, 0x69, 0x76, 0xa7, 0x90, 0xd4, 0xab, 0x6d, - 0xda, 0xf1, 0xac, 0x44, 0xb8, 0x95, 0x69, 0xb6, 0x17, 0x33, 0x86, 0x0c, 0x6e, 0x79, 0x11, - 0x81, 0x0b, 0x8f, 0x7d, 0x91, 0x6d, 0xda, 0x6b, 0x11, 0xdf, 0x8a, 0x5a, 0xdc, 0xda, 0x6e, - 0x4f, 0xaf, 0x12, 0x8d, 0x80, 0x10, 0x86, 0x90, 0xc5, 0x51, 0xb2, 0xa6, 0xab, 0xdc, 0x41, - 0x18, 0xe6, 0xb4, 0x41, 0x85, 0x7c, 0x14, 0x5b, 0xed, 0x5b, 0xfe, 0x71, 0xd7, 0x45, 0x79, - 0xe1, 0x45, 0x34, 0xca, 0xb2, 0xc8, 0x0e, 0xc0, 0x20, 0x71, 0xab, 0xfc, 0x44, 0xe0, 0x19, - 0xae, 0x4b, 0xf0, 0x9d, 0x39, 0xe6, 0x26, 0x87, 0x3a, 0x83, 0x84, 0x40, 0xfa, 0x4a, 0x97, - 0x66, 0xa0, 0xef, 0x4f, 0x76, 0x16, 0x92, 0xee, 0x28, 0x28, 0xd0, 0x99, 0xe8, 0x64, 0x61, - 0xaa, 0xba, 0x96, 0x35, 0x15, 0x7f, 0x2b, 0x90, 0x76, 0xa9, 0x3e, 0x1b, 0xeb, 0x36, 0xfd, - 0xcb, 0x6c, 0x6a, 0x99, 0x51, 0xb5, 0x7b, 0x87, 0xaf, 0xe3, 0x96, 0x5e, 0xf7, 0x1d, 0x3c, - 0xed, 0x48, 0xfc, 0x65, 0x61, 0x5e, 0x5d, 0x10, 0x0b, 0x7b, 0xba, 0xaa, 0x93, 0xf3, 0xdb, - 0xb8, 0x5c, 0xa8, 0xc1, 0x4b, 0xf8, 0x59, 0x11, 0x87, 0xd2, 0xfc, 0xff, 0x59, 0xa5, 0xf0, - 0xbc, 0x90, 0x16, 0x56, 0x99, 0x98, 0xe4, 0xc9, 0x37, 0x83, 0x18, 0xaa, 0xe9, 0x99, 0xbd, - 0xed, 0xf5, 0xdc, 0x48, 0x52, 0x1c, 0xd0, 0x88, 0xa9, 0x6b, 0xfc, 0x01, 0xca, 0xc3, 0xce, - 0xa0, 0x82, 0x4f, 0xe5, 0xfa, 0x17, 0x25, 0x45, 0xe9, 0x7f, 0x55, 0x42, 0x2b, 0xa1, 0xbb, - 0xe1, 0x7a, 0x9a, 0x37, 0x33, 0x24, 0x93, 0xdf, 0x8b, 0x7c, 0xc1, 0x5e, 0xdf, 0xe3, 0xc4, - 0x68, 0xfb, 0x1d, 0xc7, 0x06, 0x33, 0xe9, 0xa2, 0x25, 0xd8, 0x42, 0x0b, 0xad, 0xbe, 0x01, - 0xa0, 0xa0, 0x90, 0xb8, 0xee, 0x23, 0x79, 0x9b, 0x36, 0x17, 0xcb, 0xc7, 0x41, 0x24, 0x7f, - 0xf7, 0xbe, 0xc2, 0xb3, 0x1c, 0x39, 0xa9, 0x2c, 0x50, 0x38, 0xc2, 0x5c, 0x24, 0x72, 0x04, - 0x77, 0x01, 0x10, 0x92, 0x52, 0x13, 0x20, 0x66, 0xb2, 0x08, 0xa6, 0x7c, 0x39, 0x7b, 0x18, - 0x3b, 0xa0, 0xad, 0x5f, 0x89, 0x74, 0x4b, 0x85, 0xf6, 0x19, 0x01, 0xc5, 0x44, 0x18, 0x08, - 0xd1, 0xee, 0x8a, 0x3f, 0x76, 0x5a, 0x5e, 0x26, 0xdf, 0x20, 0x0e, 0x95, 0x27, 0x64, 0x99, - 0xde, 0x8d, 0x24, 0x1a, 0x00, 0x75, 0x24, 0xef, 0x1a, 0xde, 0x07, 0xdb, 0xa6, 0xb4, 0x8d, - 0x15, 0x3d, 0x40, 0x77, 0xf3, 0x30, 0x22, 0x50, 0x3a, 0x21, 0x68, 0x39, 0x48, 0x05, 0x92, - 0x81, 0xb6, 0x41, 0xf0, 0x6c, 0xaf, 0xec, 0x84, 0x04, 0x20, 0xce, 0x97, 0xe3, 0x14, 0x98, - 0x9a, 0x40, 0x43, 0x70, 0x6e, 0x9e, 0x83, 0x8c, 0x36, 0xbe, 0x15, 0xc5, 0x18, 0xc5, 0x85, - 0x60, 0x85, 0x5a, 0x95, 0x48, 0x63, 0x4d, 0xc0, 0x3a, 0x0d, 0xea, 0xbc, 0x4c, 0x50, 0x99, - 0x98, 0xe5, 0xc5, 0xae, 0xeb, 0x8e, 0x00, 0x45, 0xa4, 0x36, 0xa9, 0x69, 0x03, 0x54, 0x61, - 0x3d, 0x92, 0x4a, 0xe4, 0xd1, 0xc0, 0x86, 0x69, 0x72, 0xf8, 0x77, 0xa9, 0x91, 0x89, 0x17, - 0xca, 0x8b, 0xf3, 0xf1, 0xbb, 0xe7, 0xde, 0x3b, 0xae, 0x42, 0x6c, 0x92, 0xe8, 0x2f, 0x43, - 0x20, 0xe5, 0x00, 0x75, 0x4e, 0xe6, 0x9e, 0x94, 0x83, 0x7d, 0x93, 0xbc, 0x5a, 0x47, 0xde, - 0x31, 0xd0, 0x68, 0x10, 0xd2, 0xda, 0x71, 0x24, 0xd2, 0x00, 0xec, 0xb8, 0x03, 0x8a, 0x41, - 0x69, 0x63, 0x0f, 0x9f, 0x28, 0x47, 0xbf, 0x57, 0xe0, 0x71, 0x0a, 0xe9, 0xe9, 0x43, 0x30, - 0xc3, 0xb2, 0x9d, 0x44, 0xf5, 0x60, 0x44, 0x41, 0x9c, 0xed, 0x22, 0xec, 0x02, 0x8a, 0x68, - 0x96, 0x41, 0x51, 0x3a, 0x7a, 0x81, 0xac, 0xfa, 0x2a, 0x62, 0xd8, 0x5b, 0xd7, 0x74, 0x9c, - 0x78, 0xc3, 0x7b, 0x6a, 0xdc, 0x71, 0xb9, 0xc2, 0xda, 0x0a, 0x0e, 0x14, 0xcd, 0xae, 0x67, - 0xfd, 0xc6, 0x16, 0xa1, 0xf6, 0x89, 0x31, 0xc1, 0xca, 0x1b, 0x56, 0xa4, 0x9c, 0xbc, 0xa6, - 0xc3, 0x45, 0x7c, 0xa0, 0xfe, 0xdb, 0xd1, 0x5a, 0xc8, 0x59, 0x67, 0xb9, 0xf4, 0xab, 0xea, - 0x10, 0x6a, 0xe3, 0x63, 0x0d, 0xe2, 0x04, 0x0d, 0x84, 0x45, 0x5b, 0xc6, 0x87, 0x83, 0x04, - 0xbe, 0x38, 0xbd, 0xd8, 0xab, 0x6f, 0x14, 0x6d, 0x2a, 0xfc, 0x47, 0xa0, 0x99, 0x97, 0xa4, - 0x44, 0x1b, 0xe1, 0x47, 0x4d, 0x44, 0xb4, 0x97, 0x34, 0x7c, 0x3e, 0x34, 0x91, 0xc8, 0x3b, - 0x2a, 0x0e, 0x1f, 0x29, 0x74, 0x3e, 0x17, 0x66, 0xac, 0xd3, 0x6e, 0x85, 0x12, 0xf3, 0x6c, - 0x25, 0x2f, 0xc3, 0xcc, 0xa9, 0xa9, 0x36, 0xce, 0x97, 0x87, 0xe0, 0x16, 0x60, 0x97, 0x77, - 0x94, 0x46, 0xc9, 0x08, 0x43, 0xe0, 0x3d, 0xde, 0x53, 0x31, 0x96, 0x07, 0x0b, 0xba, 0x9e, - 0x6f, 0x08, 0x21, 0x4d, 0x53, 0xda, 0x20, 0xf0, 0x9e, 0xa5, 0x05, 0x41, 0x56, 0x74, 0x15, - 0xea, 0x7b, 0x24, 0xb3, 0x02, 0x7f, 0x59, 0xbf, 0x68, 0xc8, 0xbb, 0x85, 0x89, 0x14, 0xaf, - 0x7f, 0xdd, 0xfe, 0x6a, 0x3a, 0xa0, 0x18, 0xa6, 0x7a, 0xf7, 0xc6, 0x5a, 0x33, 0xc7, 0x22, - 0x5b, 0x04, 0xe7, 0x23, 0xd0, 0xbd, 0x21, 0xff, 0x76, 0xa6, 0xaf, 0xb8, 0xd3, 0xca, 0x8a, - 0x9a, 0x77, 0x72, 0xc1, 0xf7, 0x2f, 0xf7, 0x8a, 0x8c, 0x94, 0xdd, 0xeb, 0x13, 0xcd, 0x37, - 0x1e, 0xe6, 0xd7, 0x88, 0x6c, 0xf5, 0xb3, 0x89, 0x46, 0xe4, 0xd0, 0x81, 0xa7, 0x0f, 0xb4, - 0x75, 0xb8, 0x56, 0x9a, 0xaa, 0xef, 0xc5, 0x79, 0x9b, 0x77, 0x3c, 0x9e, 0x0d, 0xe7, 0x0d, - 0x08, 0xbe, 0x90, 0xd3, 0x49, 0x9a, 0x99, 0xfb, 0xdc, 0x31, 0xe6, 0x95, 0xde, 0x27, 0x78, - 0x7b, 0xba, 0x5a, 0x3e, 0x75, 0x2b, 0x7b, 0x31, 0x12, 0x24, 0xd3, 0x11, 0x9c, 0xd1, 0x9e, - 0xc4, 0x67, 0xa4, 0xb0, 0x15, 0xa1, 0x79, 0x42, 0x6f, 0xd8, 0xcd, 0xfa, 0x59, 0xbe, 0x79, - 0x8d, 0x46, 0x1c, 0x29, 0x44, 0xf2, 0xe4, 0x46, 0x1d, 0x80, 0xe9, 0xa9, 0x84, 0x99, 0x97, - 0x9d, 0x5e, 0x3c, 0x91, 0x6a, 0xaa, 0xd8, 0x20, 0xac, 0x2d, 0xd0, 0x5d, 0x16, 0xe6, 0x08, - 0xc7, 0x9f, 0xa5, 0x95, 0x47, 0x6c, 0x09, 0x06, 0xc1, 0x78, 0xa8, 0x5e, 0x68, 0x23, 0xf8, - 0x43, 0x70, 0x1f, 0xbc, 0x1f, 0x59, 0xbf, 0x02, 0x70, 0x99, 0xfb, 0xe7, 0xda, 0xc4, 0x1d, - 0x0b, 0x8c, 0x88, 0x9b, 0xc4, 0xd4, 0x4e, 0xe8, 0x1b, 0x44, 0xdf, 0x45, 0x80, 0xb2, 0x0c, - 0x9a, 0xd1, 0xec, 0x00, 0x88, 0xfa, 0xc0, 0xef, 0x62, 0xa0, 0xfe, 0xd2, 0x4f, 0x7d, 0xc4, - 0xcc, 0x2f, 0xb7, 0xab, 0xa4, 0x1b, 0xed, 0x11, 0x60, 0xee, 0x4a, 0xfe, 0x95, 0xe8, 0x11, - 0xa9, 0x66, 0x27, 0x08, 0xcf, 0x0f, 0x05, 0x34, 0xd4, 0xf5, 0xb3, 0x0f, 0x2e, 0x64, 0xa7, - 0x9f, 0xf4, 0x2c, 0x24, 0x83, 0x84, 0x8c, 0x65, 0x01, 0x66, 0xf9, 0x56, 0x8f, 0x71, 0x89, - 0xb3, 0x98, 0xad, 0xa6, 0x35, 0xe8, 0x73, 0x40, 0x28, 0x2e, 0xdc, 0x1e, 0xa8, 0x1e, 0x85, - 0xe2, 0x3b, 0x8b, 0x37, 0xb2, 0x07, 0x55, 0xf9, 0x2f, 0xf0, 0x68, 0xed, 0x54, 0x68, 0x49, - 0x5b, 0xd7, 0x05, 0xb7, 0xdc, 0x28, 0xb8, 0x2b, 0xd7, 0x04, 0x35, 0xca, 0x32, 0x93, 0xa3, - 0xb5, 0x9c, 0x88, 0xd6, 0xb1, 0x48, 0xa2, 0x6a, 0x7c, 0x22, 0xd4, 0x49, 0x9e, 0x4a, 0xa3, - 0x77, 0x7b, 0xd5, 0x6c, 0x14, 0x87, 0x45, 0xc3, 0x16, 0x60, 0x7c, 0xba, 0x90, 0x41, 0xc4, - 0xba, 0x80, 0x05, 0xfa, 0xdf, 0x29, 0x4d, 0xc9, 0xd2, 0x75, 0xe2, 0x03, 0x92, 0x72, 0x05, - 0x05, 0x6f, 0xa1, 0x22, 0xad, 0x26, 0x51, 0xe5, 0x57, 0x70, 0x0b, 0xa4, 0xa0, 0xeb, 0x21, - 0xaa, 0x8f, 0x2f, 0xe6, 0x0d, 0x12, 0xc4, 0x96, 0x2f, 0x86, 0xfe, 0xd9, 0x73, 0x85, 0xe1, - 0x6a, 0xfd, 0x66, 0x2e, 0xcf, 0x6e, 0x88, 0x17, 0x49, 0xf6, 0x75, 0x38, 0xb7, 0x62, 0x87, - 0xd5, 0x6c, 0xde, 0xef, 0x95, 0x7c, 0x22, 0xb3, 0x13, 0x90, 0x93, 0x94, 0x7d, 0x73, 0x28, - 0x88, 0x2b, 0x5c, 0xdc, 0x6f, 0xcf, 0x9e, 0x01, 0xf9, 0xe8, 0x50, 0xc7, 0xd9, 0x94, 0x0f, - 0x85, 0x5d, 0x0e, 0x60, 0x5f, 0xca, 0xe6, 0x2d, 0x3c, 0x47, 0x56, 0xf5, 0xe5, 0xdd, 0x9f, - 0x9b, 0x58, 0x81, 0x75, 0x5c, 0x4d, 0x80, 0x79, 0xef, 0xba, 0x41, 0x07, 0x92, 0xc5, 0xa3, - 0xa1, 0x3b, 0x82, 0x95, 0x16, 0x1b, 0x91, 0x61, 0x33, 0xf6, 0x15, 0x27, 0x5d, 0x31, 0x7b, - 0x26, 0x4c, 0x43, 0x4d, 0xd1, 0x6d, 0x83, 0xa2, 0xc5, 0x85, 0x9a, 0x1f, 0x84, 0x2b, 0x43, - 0xd8, 0x14, 0x16, 0xed, 0xc3, 0xae, 0x14, 0xde, 0xec, 0xbb, 0xc6, 0xbe, 0xb3, 0x36, 0x21, - 0xb9, 0xfc, 0x3a, 0xba, 0x9d, 0x24, 0x43, 0xa4, 0xe6, 0x92, 0x3f, 0x5e, 0x6e, 0x41, 0x40, - 0x8e, 0xda, 0x4b, 0x2a, 0xf7, 0xf4, 0x17, 0xb3, 0x74, 0x17, 0x64, 0xfa, 0x32, 0x4d, 0x02, - 0xf7, 0x39, 0xa1, 0xb0, 0xdd, 0x7a, 0x6b, 0x61, 0x85, 0x35, 0x27, 0xb4, 0xa2, 0x98, 0xf9, - 0x4b, 0xe1, 0x6c, 0xf9, 0x72, 0xe2, 0x55, 0x04, 0x17, 0xd1, 0x24, 0xdc, 0x04, 0x00, 0x5d, - 0x11, 0x0e, 0xf8, 0x6c, 0x08, 0x28, 0x70, 0x65, 0xd5, 0xf5, 0xd1, 0x56, 0x17, 0x77, 0x79, - 0x4f, 0x78, 0xcd, 0x95, 0xde, 0x31, 0x51, 0x3f, 0x38, 0x38, 0xcf, 0x10, 0x56, 0x8b, 0x23, - 0xd8, 0x9a, 0xb8, 0x17, 0x03, 0x45, 0xa8, 0xc1, 0x00, 0x2e, 0x2f, 0x69, 0x06, 0x1f, 0xc4, - 0x02, 0xe7, 0xf0, 0xf3, 0x32, 0x40, 0x66, 0x42, 0xdf, 0x71, 0x58, 0x98, 0x49, 0x40, 0x85, - 0x17, 0xea, 0x68, 0xd4, 0xd0, 0x3f, 0x29, 0x92, 0x1d, 0x93, 0xc0, 0x13, 0x7f, 0x9a, 0x76, - 0xa8, 0x9d, 0x9c, 0x1a, 0xbc, 0xec, 0x36, 0xcd, 0x58, 0x86, 0xfb, 0xe7, 0x5a, 0x93, 0x15, - 0x37, 0xbd, 0xbb, 0xd7, 0xaf, 0xe9, 0xfc, 0x2e, 0x37, 0xf4, 0xf8, 0x1d, 0x02, 0xd6, 0x3f, - 0xf5, 0x2e, 0x19, 0xa6, 0xd6, 0xf8, 0x5f, 0x86, 0xd6, 0x2e, 0xb4, 0x99, 0x13, 0x1a, 0x91, - 0x9a, 0x58, 0xf4, 0x0d, 0x36, 0xeb, 0x3c, 0x83, 0xfc, 0x1e, 0x4c, 0x57, 0xd9, 0x51, 0x06, - 0x71, 0xaf, 0xfe, 0xcb, 0x8e, 0x76, 0x90, 0xdf, 0xc0, 0x30, 0x84, 0xfc, 0xaa, 0xd6, 0xf8, - 0x5a, 0x39, 0xe6, 0x31, 0x55, 0x7a, 0x48, 0x4f, 0x34, 0x2c, 0x9c, 0x17, 0xba, 0x92, 0x55, - 0xfc, 0x52, 0xdd, 0x5c, 0x8e, 0x9f, 0x65, 0x74, 0x8b, 0x2f, 0x48, 0x41, 0x91, 0x09, 0x0b, - 0xfc, 0xbe, 0x39, 0x18, 0x49, 0xc1, 0x9a, 0x38, 0xc7, 0xa0, 0xbe, 0xd4, 0x91, 0x0b, 0x20, - 0x86, 0x3d, 0x13, 0x5d, 0x28, 0xc1, 0xca, 0xba, 0x42, 0x96, 0x77, 0x41, 0x2e, 0x06, 0xc2, - 0x3e, 0x22, 0x8a, 0x35, 0x3d, 0xfc, 0xde, 0xb2, 0x2d, 0x5b, 0xfd, 0x71, 0xa6, 0x3c, 0x17, - 0x24, 0xad, 0x25, 0xf6, 0xdc, 0x9c, 0xc8, 0xa8, 0x75, 0x6b, 0x8e, 0x58, 0x40, 0xcb, 0x4f, - 0xd4, 0x60, 0x70, 0x41, 0x61, 0x8a, 0xbf, 0xf0, 0x2e, 0xa7, 0xc7, 0xf8, 0x97, 0x1d, 0xae, - 0xc8, 0xb1, 0x00, 0x25, 0x25, 0x70, 0x99, 0xea, 0x27, 0xc4, 0xfe, 0xcf, 0xb0, 0x0c, 0x97, - 0x74, 0xcc, 0xe0, 0x98, 0xf6, 0x16, 0x8c, 0xe1, 0x56, 0x15, 0xef, 0xe8, 0xaa, 0x6e, 0xc8, - 0x2c, 0x13, 0x6c, 0xa9, 0x3e, 0x6d, 0x7b, 0xa5, 0x7e, 0x6a, 0x00, 0xa1, 0xd5, 0xb3, 0x3d, - 0x32, 0xc4, 0x93, 0x8d, 0x0c, 0x87, 0x09, 0x6f, 0x08, 0xd3, 0x26, 0x36, 0x20, 0xef, 0xe5, - 0xa7, 0x4e, 0xc9, 0x6e, 0x01, 0xa4, 0x0d, 0xc5, 0xea, 0x0e, 0x04, 0x75, 0x59, 0x84, 0xe9, - 0x69, 0x0b, 0x12, 0x1b, 0xa6, 0xcf, 0xa1, 0xaf, 0x5a, 0x0f, 0x42, 0x8b, 0xd4, 0x15, 0xa3, - 0x4d, 0xab, 0x80, 0xaa, 0xf1, 0x2c, 0xa4, 0xe4, 0x33, 0x37, 0xb3, 0x29, 0x4d, 0x33, 0x18, - 0x9d, 0x03, 0x9f, 0x7a, 0x66, 0xc1, 0x5c, 0x75, 0x48, 0x4e, 0xa8, 0xc4, 0x0f, 0xde, 0x16, - 0x52, 0x7c, 0x1d, 0x66, 0x59, 0xe4, 0x93, 0xb5, 0x38, 0xd1, 0x00, 0x6b, 0xa8, 0x91, 0x85, - 0x61, 0x62, 0x98, 0xdc, 0xbb, 0xed, 0xa5, 0x8f, 0x41, 0x8f, 0x02, 0x75, 0x4c, 0xc3, 0x0e, - 0x41, 0x6b, 0xda, 0xe7, 0x81, 0x69, 0x7a, 0x05, 0xf9, 0xa0, 0x9e, 0xdf, 0x28, 0x80, 0x12, - 0xcb, 0x80, 0x04, 0xc5, 0x68, 0x3f, 0xc1, 0x90, 0xcd, 0x42, 0x94, 0xbe, 0xce, 0x2f, 0xeb, - 0x59, 0x28, 0x51, 0x9c, 0xd0, 0x06, 0x71, 0xf9, 0x8b, 0x1d, 0x3c, 0x75, 0x33, 0xe4, 0x13, - 0x7a, 0x7f, 0x5b, 0xff, 0x4e, 0xb3, 0xa2, 0x12, 0xbb, 0x25, 0x7a, 0xc1, 0x47, 0x86, 0x02, - 0xc2, 0x79, 0x84, 0xae, 0x60, 0xbb, 0x79, 0x3e, 0x0f, 0xbc, 0xda, 0x2e, 0xc1, 0x8c, 0x79, - 0x15, 0x3c, 0xeb, 0xbe, 0x93, 0xb1, 0x57, 0x84, 0xee, 0xb2, 0xd2, 0x75, 0x09, 0x58, 0x37, - 0xcd, 0x47, 0x12, 0x64, 0xbf, 0x80, 0x76, 0x1b, 0x48, 0xeb, 0x3c, 0x6f, 0xe5, 0x7a, 0x37, - 0x59, 0x0b, 0x44, 0x11, 0x6a, 0xb2, 0x3b, 0x1b, 0x6b, 0x7a, 0x76, 0xf6, 0x65, 0x08, 0x74, - 0x60, 0x9c, 0xa4, 0x15, 0x51, 0xbb, 0xa8, 0xee, 0x42, 0x66, 0xf9, 0xf6, 0x63, 0x48, 0xa3, - 0x85, 0x1f, 0x0f, 0xca, 0xe7, 0x25, 0xc1, 0xc8, 0xa9, 0x75, 0x7c, 0xf1, 0x5e, 0x36, 0xf8, - 0x15, 0xe9, 0xa5, 0x27, 0x94, 0xcc, 0xc6, 0x63, 0xaf, 0x4d, 0x9a, 0x09, 0x2e, 0x0e, 0xbd, - 0xd3, 0x7f, 0x40, 0xd3, 0xe3, 0xad, 0x31, 0x3f, 0x53, 0xdd, 0x3a, 0xf4, 0x3c, 0x14, 0xea, - 0x0e, 0x03, 0x99, 0x17, 0x0c, 0xa3, 0x58, 0x3f, 0xc0, 0x68, 0x9b, 0xf3, 0x38, 0x53, 0xce, - 0x13, 0x09, 0xb0, 0x9d, 0x26, 0x93, 0x69, 0xd6, 0x5d, 0x22, 0x2a, 0xba, 0xc7, 0x36, 0x73, - 0x89, 0x26, 0xd3, 0xea, 0xb0, 0x16, 0x0c, 0x4f, 0x1c, 0x47, 0xf8, 0xc4, 0x29, 0xc4, 0x38, - 0x06, 0xc7, 0x49, 0x68, 0x51, 0x36, 0x81, 0xd5, 0x39, 0xd1, 0x63, 0x31, 0x93, 0x34, 0xf2, - 0xd9, 0x5d, 0xa3, 0xf7, 0x20, 0x82, 0x7f, 0x0c, 0x40, 0x83, 0xf1, 0x90, 0x33, 0x90, 0xef, - 0xb3, 0x95, 0x9c, 0x8f, 0x97, 0x90, 0x2d, 0xd0, 0x44, 0x0d, 0x0a, 0x4b, 0x22, 0x34, 0x9c, - 0x44, 0x0b, 0x3b, 0x95, 0x12, 0x24, 0x4d, 0x0c, 0x10, 0xbd, 0x67, 0x35, 0x14, 0xcc, 0x4e, - 0xc5, 0xd9, 0x46, 0xea, 0x8b, 0x72, 0x52, 0x63, 0x5a, 0x53, 0x81, 0xeb, 0x9b, 0xce, 0x4d, - 0x1e, 0xd7, 0x56, 0x8a, 0x9f, 0xda, 0xd5, 0x9f, 0xb9, 0x27, 0x48, 0x67, 0x62, 0xb8, 0x20, - 0x37, 0xc7, 0x33, 0xa1, 0x5e, 0x26, 0xbc, 0xa1, 0xe8, 0x19, 0x21, 0x94, 0x86, 0xe1, 0xcc, - 0xac, 0xa1, 0x01, 0x5d, 0xdf, 0xca, 0xc4, 0x93, 0x55, 0xcb, 0x1f, 0xa3, 0x00, 0x2c, 0x1d, - 0x8e, 0x89, 0x45, 0x98, 0x70, 0xfb, 0x8f, 0x00, 0x6d, 0xea, 0x98, 0xac, 0xd5, 0xed, 0xc6, - 0xa1, 0x52, 0x5f, 0x7e, 0x25, 0xd5, 0x19, 0x29, 0xd3, 0x01, 0x3a, 0xcb, 0xb7, 0x60, 0xe5, - 0xe0, 0xbd, 0x7f, 0x41, 0x22, 0x90, 0xcc, 0x3f, 0x84, 0xb4, 0x1e, 0xd8, 0xac, 0x09, 0x58, - 0xb9, 0xb2, 0x84, 0x62, 0x99, 0x91, 0x38, 0x07, 0xe9, 0xcb, 0x08, 0x50, 0x31, 0x67, 0x46, - 0xfb, 0x50, 0xba, 0xc2, 0x4f, 0x1c, 0xdd, 0x9f, 0x6a, 0x8a, 0x08, 0x39, 0x81, 0x5e, 0x03, - 0x01, 0x90, 0xfe, 0xd2, 0x42, 0x9a, 0x53, 0x0c, 0x01, 0xbc, 0x59, 0x72, 0x4e, 0x26, 0x37, - 0x7a, 0xa8, 0x6b, 0xf6, 0xcb, 0x2a, 0x7d, 0x7d, 0x3e, 0x07, 0xee, 0x90, 0xc7, 0xef, 0xb4, - 0x11, 0x03, 0x28, 0x72, 0x52, 0x59, 0xc8, 0xfd, 0x3e, 0x15, 0x1e, 0x4a, 0x40, 0x85, 0x8f, - 0x2c, 0x74, 0xe4, 0xe1, 0xcb, 0x08, 0xa4, 0x9c, 0x30, 0x0c, 0x30, 0xd1, 0x76, 0xd1, 0xc9, - 0x4f, 0x11, 0x13, 0x3a, 0x13, 0x3b, 0xfe, 0xc6, 0xa7, 0x68, 0xc9, 0x23, 0x30, 0x43, 0xb8, - 0xfe, 0x2d, 0xe4, 0x6f, 0x3f, 0xb2, 0x97, 0x83, 0x7d, 0x5c, 0xe6, 0xcb, 0x03, 0x6b, 0x33, - 0xaa, 0xd3, 0xb3, 0xff, 0x08, 0x7b, 0xe7, 0xbb, 0x24, 0x8f, 0x8d, 0x27, 0x96, 0xba, 0x18, - 0x66, 0xf7, 0xe1, 0xf9, 0xd1, 0xa2, 0x8f, 0x91, 0xc0, 0x01, 0xb8, 0x73, 0x3d, 0xad, 0xd1, - 0x3a, 0x1f, 0xf2, 0xaf, 0xdd, 0x7d, 0xc7, 0xb7, 0x8e, 0xdd, 0x10, 0x8b, 0x3f, 0x68, 0x6a, - 0x5e, 0x23, 0x92, 0xf6, 0x7e, 0x5a, 0x81, 0xa2, 0xd7, 0x3a, 0xd9, 0x9e, 0xa1, 0xc3, 0xe2, - 0x8b, 0x3b, 0xb6, 0x0f, 0x7d, 0x8e, 0x88, 0x32, 0x2b, 0x3e, 0x1b, 0xc9, 0x2c, 0xac, 0x95, - 0x8f, 0xc2, 0xfb, 0x15, 0x7e, 0xa1, 0x56, 0xf4, 0xd1, 0x9f, 0x02, 0x5d, 0x87, 0xef, 0xbd, - 0xc1, 0xce, 0xe5, 0xcf, 0x97, 0xa4, 0x80, 0xe3, 0xec, 0x60, 0xa9, 0xe9, 0x2b, 0xa9, 0x4d, - 0xb1, 0xcc, 0xd3, 0xff, 0x73, 0x37, 0x63, 0x77, 0x65, 0x0d, 0x16, 0x1f, 0x45, 0x4f, 0xf0, - 0x9b, 0x2a, 0xcc, 0x07, 0x4b, 0x72, 0xa3, 0xd6, 0x95, 0x5c, 0x9e, 0x3b, 0x44, 0x73, 0x1b, - 0x6d, 0x86, 0xdb, 0xcf, 0x04, 0xaf, 0xfb, 0x34, 0x6e, 0x2f, 0x49, 0xdd, 0x00, 0x1c, 0x7a, - 0x74, 0xdc, 0x86, 0x65, 0x1a, 0x50, 0xb0, 0x3a, 0x2d, 0x9a, 0x77, 0x42, 0x55, 0xfe, 0x6e, - 0xbd, 0x66, 0x20, 0x4a, 0x0a, 0xc3, 0x08, 0xc3, 0xab, 0x2a, 0x55, 0xe2, 0xfd, 0x39, 0x73, - 0xb2, 0x07, 0x9e, 0xde, 0xd3, 0x76, 0x9b, 0x2c, 0x1b, 0x98, 0xc1, 0xa8, 0x4a, 0x92, 0x81, - 0x50, 0x67, 0xe8, 0xf7, 0x74, 0xa7, 0x64, 0x0d, 0xc4, 0xb6, 0xe0, 0x3b, 0x8c, 0x9f, 0x44, - 0x37, 0x40, 0xd5, 0x09, 0x3d, 0xfc, 0x2c, 0x02, 0xd4, 0x59, 0xaf, 0x1f, 0x43, 0x51, 0xfe, - 0x07, 0x23, 0x23, 0x83, 0xe3, 0x9b, 0x97, 0x5e, 0x0f, 0xb3, 0xff, 0xc5, 0xd1, 0x08, 0xd7, - 0x4b, 0x35, 0x69, 0x22, 0xeb, 0x36, 0x3f, 0x43, 0xad, 0xdf, 0x1e, 0x83, 0x83, 0x09, 0xc7, - 0xbb, 0xfb, 0xce, 0x1a, 0xe4, 0xcb, 0xa1, 0xe2, 0xe6, 0x8d, 0x89, 0x13, 0x02, 0xa5, 0x5a, - 0x24, 0xdb, 0x72, 0x79, 0x6b, 0x8c, 0x00, 0x67, 0x4e, 0x55, 0x19, 0x15, 0x94, 0x43, 0x5c, - 0xb5, 0x5d, 0x5f, 0xaf, 0x50, 0x67, 0xde, 0x86, 0x5a, 0x77, 0x15, 0xcf, 0x90, 0xbb, 0x5f, - 0xa0, 0x05, 0x17, 0x0f, 0x99, 0xab, 0x06, 0x14, 0x04, 0x05, 0x38, 0xd4, 0xcb, 0x20, 0x07, - 0x38, 0xf4, 0xc0, 0x95, 0x01, 0x2f, 0x37, 0x4c, 0x49, 0x3e, 0x67, 0xd9, 0x1a, 0x51, 0x97, - 0xe5, 0x14, 0x68, 0xa5, 0x22, 0x96, 0x33, 0x47, 0x6b, 0x6e, 0x80, 0x6c, 0x3c, 0x11, 0xfc, - 0x17, 0xf8, 0x38, 0x47, 0x34, 0x63, 0xb0, 0x65, 0x8c, 0x9f, 0xd5, 0x31, 0x9a, 0x71, 0xaf, - 0x55, 0x1d, 0x34, 0x41, 0x7e, 0x49, 0x16, 0x38, 0x1e, 0x94, 0x32, 0xa8, 0x4e, 0xfd, 0xe2, - 0x0a, 0xaf, 0xe6, 0x27, 0x3c, 0x67, 0xa9, 0x1a, 0xb5, 0x05, 0xcd, 0x6b, 0xb1, 0x43, 0x9d, - 0x4b, 0x3b, 0xaf, 0x9f, 0xc5, 0x1a, 0x84, 0xd8, 0x07, 0x0b, 0x7a, 0xd8, 0x85, 0x59, 0x7d, - 0x35, 0x71, 0xa2, 0x55, 0x5f, 0xf3, 0x95, 0x9a, 0x3d, 0x31, 0x44, 0xfe, 0xc9, 0x42, 0xe6, - 0x26, 0x58, 0xa2, 0x8a, 0x52, 0x7e, 0xae, 0x33, 0x63, 0xae, 0x30, 0x2f, 0xc9, 0x11, 0x81, - 0x00, 0xa2, 0xf2, 0xb2, 0x9f, 0xd4, 0x86, 0x99, 0x78, 0xb4, 0x8a, 0x7e, 0x3a, 0xbe, 0x35, - 0x46, 0x53, 0x6f, 0xd7, 0x2f, 0x0d, 0x2b, 0x06, 0x79, 0xa9, 0x14, 0x94, 0x3b, 0x58, 0xb7, - 0xdf, 0x35, 0x0b, 0x50, 0x43, 0x44, 0x99, 0x98, 0x38, 0xab, 0x63, 0x2b, 0x0c, 0x09, 0xd7, - 0x91, 0xac, 0xe7, 0x79, 0x68, 0xba, 0x43, 0x5a, 0xde, 0xd1, 0x73, 0xa8, 0x82, 0x05, 0x01, - 0xce, 0xd8, 0x3a, 0x4a, 0x43, 0xed, 0x32, 0x4b, 0x83, 0xd6, 0x6e, 0x7c, 0xa2, 0x2a, 0x00, - 0x16, 0xf8, 0x47, 0x5d, 0x88, 0x94, 0x8e, 0x18, 0x8f, 0x02, 0xd7, 0x0b, 0x7b, 0x90, 0xaf, - 0xed, 0x02, 0xe8, 0x68, 0x20, 0x21, 0x25, 0xd9, 0xe1, 0xf9, 0xb1, 0x5e, 0x21, 0xcc, 0xb4, - 0x0c, 0x06, 0xbc, 0xe5, 0x91, 0xde, 0x9e, 0xb2, 0x9c, 0xfc, 0x64, 0x70, 0x5a, 0x52, 0xf7, - 0x05, 0xb4, 0xeb, 0x32, 0x1e, 0xf6, 0xd8, 0x06, 0xc1, 0x7b, 0xf0, 0xf3, 0xff, 0x8d, 0x40, - 0xc2, 0x22, 0xf7, 0x80, 0xf7, 0x2b, 0x7e, 0x7c, 0x1e, 0x1d, 0x0f, 0xc9, 0xd8, 0x3e, 0x2d, - 0xb9, 0x4e, 0xb0, 0x26, 0xb8, 0x03, 0xa5, 0xe8, 0x78, 0x78, 0xb9, 0x2e, 0xfe, 0xd1, 0x4c, - 0xdc, 0x3c, 0xa7, 0x5f, 0xe2, 0xcc, 0xd0, 0xe9, 0xe3, 0x9e, 0xa9, 0xc5, 0x38, 0xe2, 0x3d, - 0xea, 0xdc, 0xab, 0xc2, 0xdc, 0x5a, 0xe5, 0x26, 0xbf, 0x01, 0x12, 0xa6, 0xe4, 0xee, 0xc3, - 0x77, 0xea, 0x9a, 0x98, 0xfd, 0xea, 0xcf, 0xf2, 0x1a, 0xe7, 0x81, 0x5b, 0x54, 0x3f, 0x2d, - 0x29, 0xac, 0x7d, 0xce, 0x63, 0xe5, 0x07, 0x53, 0x56, 0x21, 0x0b, 0x5b, 0x71, 0x1d, 0x2a, - 0x2b, 0x66, 0x78, 0x09, 0xec, 0x75, 0xb1, 0xf4, 0xea, 0x96, 0x7e, 0x55, 0x2e, 0x3e, 0x49, - 0xee, 0x24, 0x86, 0x70, 0x72, 0xec, 0x1d, 0xdf, 0x47, 0xea, 0xb6, 0x0f, 0xd9, 0x49, 0xc6, - 0xec, 0x7b, 0x7e, 0x91, 0x8f, 0x88, 0xbd, 0xae, 0xb8, 0x70, 0xdd, 0x95, 0xb4, 0xf6, 0x21, - 0x80, 0x52, 0x10, 0xee, 0xce, 0x08, 0x05, 0x78, 0xa0, 0x2a, 0x41, 0x96, 0x1b, 0x3d, 0xa9, - 0x51, 0x5e, 0xb6, 0x1d, 0xf0, 0x5c, 0x56, 0x1b, 0x77, 0x25, 0x21, 0x8e, 0x3f, 0xa2, 0x51, - 0x4a, 0x92, 0xfc, 0x26, 0x72, 0x51, 0xd3, 0x40, 0xf2, 0xe9, 0xb9, 0x50, 0x7d, 0xc1, 0xad, - 0x19, 0x36, 0xbe, 0xa0, 0x6d, 0x3b, 0x81, 0xbb, 0xb8, 0x1a, 0x57, 0x2c, 0x05, 0x14, 0xc5, - 0x7c, 0xba, 0x57, 0x10, 0x88, 0x0c, 0xc5, 0x91, 0x6a, 0x9c, 0xce, 0x08, 0x9d, 0x69, 0xa0, - 0x25, 0x09, 0x19, 0xc0, 0x4f, 0xdf, 0x99, 0xf2, 0x49, 0x18, 0x37, 0xd5, 0x3a, 0xe4, 0x57, - 0x42, 0x80, 0x77, 0xc8, 0x63, 0x24, 0x7b, 0x54, 0x79, 0xf2, 0xb3, 0xb5, 0x9c, 0x42, 0x91, - 0x44, 0x0a, 0x75, 0x94, 0x3b, 0xa7, 0x02, 0xed, 0x6b, 0xab, 0x80, 0xa4, 0x30, 0xa2, 0x7b, - 0xaa, 0x6f, 0x18, 0x64, 0x24, 0x09, 0x86, 0x84, 0xda, 0x5a, 0xcf, 0xf6, 0x24, 0x23, 0xe5, - 0x22, 0x1b, 0x03, 0x25, 0x66, 0xa5, 0x34, 0x13, 0x9a, 0xee, 0x34, 0xbd, 0x5b, 0xf1, 0x76, - 0x5c, 0x7e, 0x91, 0x5a, 0x57, 0xe5, 0x83, 0x0a, 0x1b, 0x1d, 0x31, 0x00, 0x33, 0xa7, 0xd1, - 0x7d, 0x3b, 0xc0, 0xd6, 0x20, 0x01, 0xc9, 0x76, 0x0f, 0xe1, 0x35, 0x46, 0x8f, 0xfd, 0xaf, - 0xfd, 0x62, 0xe4, 0xb1, 0x59, 0x73, 0x05, 0xf3, 0x7f, 0xd9, 0xea, 0x80, 0x4f, 0xfa, 0xbf, - 0xc2, 0x18, 0xf0, 0x60, 0x46, 0xbf, 0x39, 0x01, 0x8e, 0xf1, 0x3f, 0x53, 0xd5, 0x54, 0x49, - 0x90, 0x82, 0x29, 0x7b, 0x80, 0xa5, 0x55, 0x35, 0xc4, 0xa8, 0x19, 0x2f, 0xe2, 0x74, 0x9e, - 0x43, 0xbf, 0x57, 0xd9, 0x55, 0xd6, 0x10, 0xdc, 0xb5, 0x8d, 0x18, 0x66, 0x17, 0xdf, 0xea, - 0x89, 0x2d, 0xe5, 0x09, 0x30, 0x83, 0x70, 0x3d, 0x3b, 0x56, 0xad, 0xc0, 0x57, 0xa0, 0xa8, - 0x6b, 0x11, 0xa1, 0xf2, 0xb6, 0x20, 0xd0, 0x03, 0xe7, 0xd2, 0xc0, 0x59, 0x0f, 0x19, 0x04, - 0x4a, 0x65, 0xe5, 0xda, 0xf2, 0x50, 0x6a, 0x6c, 0xab, 0xa8, 0xea, 0x8f, 0x61, 0x7d, 0xc7, - 0x58, 0x41, 0xd2, 0x94, 0x94, 0x80, 0xf5, 0x2a, 0x4d, 0xdd, 0x83, 0xb3, 0xd3, 0x7b, 0xb4, - 0x9d, 0x2e, 0x98, 0xe3, 0xe5, 0x11, 0x11, 0x87, 0xb9, 0x82, 0xd9, 0x7c, 0x04, 0x47, 0xf4, - 0xa7, 0xa1, 0x13, 0xf9, 0x2a, 0x4e, 0x6a, 0x8f, 0x45, 0x3b, 0xb2, 0x3e, 0xe4, 0x81, 0x46, - 0x44, 0x02, 0x80, 0x3e, 0x14, 0x94, 0x33, 0x3d, 0x9c, 0x24, 0x37, 0xce, 0x54, 0x23, 0x50, - 0x26, 0xe4, 0xb7, 0x4d, 0xad, 0xeb, 0xe6, 0xb2, 0xa7, 0x6e, 0xb0, 0x4a, 0xee, 0xb2, 0x6c, - 0xb0, 0x69, 0xa2, 0xb3, 0x88, 0x23, 0x79, 0x45, 0x62, 0x45, 0xdc, 0x40, 0x83, 0xf9, 0x2e, - 0xd4, 0x74, 0x03, 0x77, 0x8c, 0xd8, 0xc2, 0x26, 0x27, 0x55, 0x7a, 0x6e, 0x57, 0xde, 0x06, - 0xa5, 0x4b, 0xb3, 0xff, 0x1e, 0xef, 0x64, 0x20, 0x04, 0x5c, 0xf2, 0xab, 0xa3, 0x53, 0x30, - 0x79, 0x99, 0xc9, 0x9b, 0xcf, 0x81, 0x51, 0xb2, 0x53, 0x2b, 0x60, 0x9c, 0x41, 0xc2, 0xff, - 0x83, 0x68, 0x32, 0x0b, 0x30, 0x8c, 0x87, 0xc9, 0x3c, 0x16, 0xea, 0x90, 0x0f, 0x54, 0x40, - 0x00, 0x8b, 0x4b, 0x83, 0x0d, 0xb8, 0x66, 0x20, 0xd0, 0xab, 0x4a, 0xd6, 0xcc, 0x8f, 0x7d, - 0xf8, 0x79, 0xe7, 0x6e, 0x9f, 0xc7, 0x29, 0x00, 0x38, 0xd5, 0xb5, 0x1b, 0x1b, 0x2a, 0xed, - 0xff, 0xd1, 0x17, 0x00, 0x85, 0x29, 0x5d, 0x0a, 0x1a, 0xd6, 0x5e, 0x8a, 0x55, 0xb5, 0x27, - 0x39, 0xfa, 0x52, 0x4f, 0xbc, 0x3e, 0x01, 0x16, 0x08, 0xe5, 0x05, 0x78, 0xaa, 0x09, 0x12, - 0x33, 0x40, 0xf2, 0xa6, 0xc6, 0xec, 0x64, 0x0a, 0xca, 0xf8, 0x62, 0xad, 0x47, 0x62, 0xbe, - 0xea, 0xf3, 0x8c, 0x40, 0x9f, 0xd4, 0x38, 0x07, 0x65, 0xb3, 0x46, 0xfc, 0xaa, 0xe3, 0xaf, - 0x2e, 0xc1, 0xcd, 0x40, 0xe3, 0x2c, 0x1c, 0xc3, 0x6f, 0x04, 0x5c, 0x18, 0xad, 0x3c, 0xb4, - 0x5f, 0x6f, 0x0b, 0x47, 0xb1, 0x63, 0x0c, 0x2c, 0xcb, 0xf2, 0x11, 0xac, 0x48, 0x12, 0xa0, - 0xb9, 0x2b, 0x2c, 0x15, 0x62, 0x60, 0x5b, 0xfe, 0x0a, 0x4a, 0x01, 0x0b, 0x03, 0x1d, 0x98, - 0x59, 0xeb, 0x2f, 0x2c, 0x08, 0xba, 0xfb, 0x04, 0xa6, 0xfb, 0x7e, 0xd3, 0xfa, 0xf3, 0xc9, - 0xb3, 0xf4, 0x76, 0x83, 0x33, 0x5b, 0x0f, 0x06, 0xd5, 0x9c, 0x2b, 0x12, 0x14, 0x30, 0xb0, - 0x03, 0x9f, 0x3e, 0xef, 0x3d, 0x71, 0x82, 0x68, 0x57, 0xb5, 0xad, 0x64, 0x3f, 0x6c, 0x1a, - 0xe6, 0x50, 0x66, 0xd6, 0x37, 0xe3, 0x0c, 0x8b, 0x7d, 0x0d, 0xcb, 0xb8, 0x09, 0xaa, 0xe6, - 0x8d, 0xa1, 0x7d, 0x8f, 0xef, 0xd5, 0x1e, 0xde, 0x72, 0xc3, 0x1a, 0xe0, 0x5d, 0x3d, 0x22, - 0x03, 0xfa, 0x5e, 0x7f, 0x06, 0xce, 0x63, 0xc6, 0x37, 0x0d, 0x7c, 0xba, 0xaf, 0xa5, 0xbd, - 0xd1, 0x4b, 0xc4, 0x06, 0x45, 0x7a, 0x30, 0x1f, 0x91, 0xe8, 0xe8, 0x37, 0xde, 0x2c, 0x6a, - 0x6e, 0x18, 0xe7, 0x67, 0xb7, 0xd4, 0xbb, 0xe2, 0x00, 0x21, 0x38, 0xe4, 0xdd, 0x83, 0x6f, - 0xeb, 0x78, 0xd1, 0xf0, 0xac, 0xea, 0xa7, 0x35, 0xc0, 0x8b, 0x07, 0x74, 0x7c, 0xac, 0xb5, - 0x92, 0x51, 0x56, 0x42, 0x13, 0x2e, 0xfe, 0xf3, 0xb3, 0x03, 0x7f, 0xe5, 0x21, 0x8a, 0xc7, - 0x98, 0x8d, 0x5b, 0x6d, 0x15, 0x03, 0x74, 0xcb, 0x57, 0xe5, 0x0e, 0xb0, 0xb1, 0xef, 0xa3, - 0x35, 0xe0, 0x5e, 0x0b, 0xe9, 0xec, 0x52, 0xce, 0x3b, 0x12, 0xa7, 0xf7, 0xf4, 0x41, 0x16, - 0xf7, 0x58, 0xfb, 0xdc, 0x9f, 0xce, 0xe6, 0x65, 0xe3, 0xbb, 0xe6, 0xda, 0x45, 0x60, 0x9c, - 0xda, 0x02, 0xe1, 0x1a, 0xfe, 0x6f, 0xaf, 0x55, 0xab, 0x06, 0xc8, 0x85, 0xb2, 0x89, 0xb8, - 0xc5, 0x20, 0xcc, 0x69, 0x61, 0x49, 0x74, 0x41, 0x36, 0x1c, 0xcc, 0x72, 0x54, 0x7e, 0xca, - 0x4c, 0xcc, 0x8a, 0x85, 0xb6, 0xac, 0xce, 0x8e, 0x7a, 0xd9, 0x3b, 0x07, 0xe1, 0x55, 0xd0, - 0x6f, 0x28, 0x2c, 0x0f, 0xad, 0x64, 0xb1, 0x52, 0x45, 0xdc, 0x7a, 0x0d, 0xae, 0x55, 0x75, - 0x99, 0xb0, 0x5f, 0x9f, 0x4b, 0xeb, 0x1b, 0x09, 0x40, 0x5d, 0xfe, 0xe9, 0x79, 0x17, 0xf5, - 0x02, 0xac, 0xcc, 0xb9, 0xa6, 0x3f, 0x3a, 0x1a, 0x41, 0x75, 0xb5, 0xcb, 0x6e, 0xf9, 0x6b, - 0x66, 0xbe, 0x25, 0x16, 0x9c, 0x2e, 0x4f, 0xf6, 0x83, 0x23, 0x9b, 0xd2, 0xd5, 0x30, 0x05, - 0x14, 0xad, 0x6a, 0x0b, 0xe8, 0x49, 0x3b, 0x14, 0xe7, 0x21, 0x30, 0x6c, 0x23, 0x3b, 0xce, - 0x30, 0x76, 0xbf, 0x31, 0xe1, 0x32, 0x6d, 0xbf, 0x91, 0x59, 0xbd, 0xeb, 0x66, 0x84, 0xde, - 0xd5, 0x6e, 0xc1, 0x68, 0x2f, 0x2d, 0x3c, 0xef, 0x0c, 0x05, 0x6d, 0xf2, 0xd3, 0x45, 0x1f, - 0x8a, 0x3a, 0x2f, 0x50, 0xb7, 0xfe, 0x1f, 0x3e, 0xa2, 0x19, 0xab, 0x2d, 0x63, 0xf2, 0x9d, - 0x21, 0x2e, 0xe7, 0xf7, 0x25, 0x0d, 0x9f, 0x14, 0xd9, 0x5a, 0x53, 0x38, 0xe8, 0xe7, 0x73, - 0x5b, 0x1e, 0xb0, 0xb3, 0xd8, 0x2b, 0x53, 0x93, 0x46, 0x39, 0x37, 0x0e, 0x56, 0x01, 0x29, - 0xf7, 0xd7, 0x89, 0xf6, 0xea, 0x19, 0x48, 0xa3, 0x4a, 0x36, 0x2a, 0x14, 0xef, 0x3d, 0x74, - 0xa1, 0x6f, 0xf6, 0x82, 0x53, 0x0a, 0xaf, 0x75, 0x13, 0x77, 0xf9, 0xe5, 0x1c, 0x58, 0x5a, - 0xac, 0xbe, 0x97, 0xc1, 0xb0, 0xc9, 0xb0, 0xc9, 0x78, 0xb9, 0x33, 0x52, 0xbf, 0xf7, 0x0e, - 0x33, 0x76, 0xd0, 0x7f, 0xf4, 0x69, 0x19, 0x33, 0xa8, 0x8e, 0xcf, 0xe9, 0xa5, 0x67, 0x54, - 0x9d, 0x1e, 0xc9, 0x9c, 0xcc, 0xa6, 0x74, 0x40, 0x3f, 0x5a, 0x91, 0xb3, 0x9c, 0xf5, 0x21, - 0x4c, 0x03, 0x18, 0x9d, 0x04, 0x9b, 0xf7, 0xbe, 0xc6, 0x42, 0xbe, 0x5d, 0xd0, 0x28, 0xd0, - 0x27, 0xe3, 0x5d, 0x53, 0x6e, 0x6d, 0x76, 0xf7, 0x58, 0xdf, 0xb9, 0x95, 0x61, 0x5f, 0x4c, - 0x85, 0x25, 0x1d, 0x2e, 0x24, 0xbb, 0x46, 0xef, 0x6a, 0x05, 0x0b, 0x8b, 0x22, 0xc3, 0xce, - 0x03, 0xb1, 0xa9, 0x5a, 0x5b, 0x7c, 0x3e, 0xb2, 0xe6, 0x80, 0xc3, 0x22, 0x16, 0x26, 0x8a, - 0x26, 0x6c, 0x79, 0x48, 0x84, 0xc5, 0x0d, 0xe4, 0x02, 0x5e, 0x16, 0x26, 0x87, 0x8b, 0xaf, - 0x2b, 0x1c, 0x6d, 0x6c, 0x8b, 0xb0, 0x34, 0xfe, 0x68, 0xe6, 0xc4, 0x94, 0x7c, 0x39, 0xb1, - 0x2c, 0x5a, 0x49, 0x6e, 0xb0, 0x3d, 0x03, 0x05, 0x3c, 0xdd, 0x89, 0x81, 0xb7, 0xc7, 0x14, - 0x1a, 0x7e, 0xbe, 0x3c, 0x37, 0x1a, 0x2e, 0xb2, 0xb3, 0xfc, 0x29, 0x51, 0xa3, 0xdf, 0xb7, - 0x87, 0xf7, 0x7f, 0xe1, 0x5b, 0x74, 0x13, 0xd1, 0xe1, 0xbf, 0x01, 0x35, 0xc6, 0xac, 0x18, - 0x9a, 0xc2, 0x72, 0xd7, 0xfc, 0xcd, 0xc1, 0x6d, 0xf0, 0xbf, 0x52, 0x41, 0xa0, 0x6b, 0x18, - 0x48, 0x4b, 0x68, 0x09, 0xe9, 0xd7, 0xed, 0x3b, 0xbe, 0x09, 0xbc, 0x6b, 0x03, 0x8b, 0xe8, - 0xb6, 0x2d, 0x33, 0x84, 0x8e, 0x55, 0x48, 0x7f, 0x4e, 0xe7, 0x92, 0x3a, 0x6c, 0xd4, 0x1c, - 0x52, 0xe5, 0x4a, 0x61, 0xa0, 0x2e, 0xaa, 0x71, 0x68, 0xd1, 0x6a, 0x63, 0x2f, 0x2b, 0x29, - 0x8e, 0xce, 0xdd, 0x94, 0x77, 0x25, 0xcd, 0x02, 0x2c, 0x09, 0x0e, 0x5e, 0x61, 0x49, 0x8d, - 0x52, 0x9e, 0x44, 0x3f, 0x0c, 0x48, 0x1f, 0x7e, 0xcb, 0x39, 0x72, 0xca, 0x24, 0x0c, 0x03, - 0x2f, 0x3b, 0xe9, 0x41, 0x0a, 0x6f, 0xbe, 0xc7, 0x51, 0x15, 0xcf, 0xbc, 0x80, 0x1a, 0x2e, - 0x5f, 0xf5, 0x3d, 0xc8, 0x28, 0x0d, 0x2f, 0x68, 0x76, 0x0c, 0x68, 0x24, 0x0e, 0xed, 0x2a, - 0xce, 0x16, 0xfd, 0x16, 0x18, 0xed, 0x00, 0x40, 0x55, 0x84, 0x6d, 0xba, 0x42, 0x2a, 0xe2, - 0x3d, 0xfb, 0x88, 0x89, 0xe6, 0x80, 0x15, 0x4d, 0xf2, 0xa6, 0xe7, 0xe4, 0xb6, 0x40, 0x37, - 0xe1, 0x59, 0x3a, 0x06, 0xb2, 0x11, 0x82, 0x90, 0xdc, 0xf4, 0x77, 0x70, 0x15, 0x04, 0x91, - 0xc2, 0xff, 0x2a, 0x9e, 0x38, 0x29, 0x4e, 0xb5, 0x68, 0xc3, 0xaf, 0xe3, 0xfc, 0x35, 0x9c, - 0x2e, 0x85, 0xaa, 0x08, 0x0f, 0xf4, 0x4c, 0x32, 0x98, 0xf1, 0xdc, 0xf8, 0x28, 0xa3, 0xda, - 0x96, 0xa1, 0xdd, 0x84, 0xf1, 0x34, 0x5e, 0x41, 0xc4, 0x5c, 0x73, 0x13, 0x09, 0x1e, 0x8a, - 0x56, 0xd6, 0x5b, 0xc7, 0x10, 0xf5, 0x9f, 0x3a, 0x72, 0x0a, 0xc2, 0x3c, 0xb3, 0xd7, 0x8d, - 0x05, 0xe1, 0x41, 0x02, 0x02, 0x92, 0x57, 0xd1, 0xa5, 0x24, 0x08, 0x3b, 0xf2, 0x4e, 0xd5, - 0x98, 0x5c, 0xa5, 0xf4, 0xb0, 0x73, 0x2d, 0x6c, 0xbb, 0x2c, 0x68, 0x06, 0xf4, 0x75, 0x42, - 0x8c, 0xed, 0xe6, 0x97, 0x09, 0xaa, 0x6e, 0x2d, 0x1b, 0x0f, 0x2f, 0x32, 0xe7, 0xbb, 0xde, - 0x25, 0x23, 0xc3, 0xc4, 0x24, 0x99, 0x16, 0x5a, 0x96, 0x15, 0xcc, 0x2e, 0x7c, 0x33, 0xfd, - 0xaa, 0x4e, 0xe7, 0xe8, 0xe8, 0x72, 0x37, 0xc5, 0x31, 0x94, 0x8f, 0x71, 0x85, 0x74, 0xcf, - 0x81, 0x26, 0x18, 0x33, 0x48, 0xb2, 0x1d, 0xca, 0x1e, 0x0b, 0x33, 0x2c, 0xf7, 0x3f, 0xb7, - 0x2e, 0xba, 0x76, 0xd4, 0xd4, 0xcb, 0xe1, 0xdc, 0x0f, 0xd1, 0x1b, 0xf6, 0xbf, 0x43, 0xe3, - 0xa8, 0x90, 0x2c, 0xe5, 0xd8, 0x4d, 0x0d, 0xd1, 0x87, 0x86, 0xb6, 0x35, 0x88, 0xcf, 0xe5, - 0xf1, 0x4b, 0x37, 0x0b, 0xbe, 0x49, 0xf7, 0xcf, 0xfe, 0x4a, 0xd9, 0x94, 0x3f, 0x84, 0xc3, - 0xb1, 0x50, 0x9d, 0x60, 0xff, 0x2c, 0xe8, 0xb1, 0xec, 0x7f, 0x3f, 0x3d, 0x32, 0xec, 0x9c, - 0xc4, 0x64, 0xcb, 0x1d, 0x08, 0x1b, 0xe2, 0x59, 0x5f, 0x57, 0x2c, 0xf9, 0xab, 0xec, 0x6e, - 0xeb, 0xd0, 0xeb, 0x4a, 0x2d, 0xee, 0xaf, 0x47, 0xd7, 0x27, 0xe4, 0x74, 0x5c, 0xe5, 0x1b, - 0x3c, 0x49, 0x63, 0x0a, 0xec, 0xab, 0x02, 0xd3, 0x06, 0xd5, 0x03, 0xa9, 0x39, 0x22, 0xd2, - 0x61, 0xf6, 0xaf, 0x5e, 0x78, 0x4f, 0xe6, 0xef, 0xe9, 0xd4, 0xb2, 0x88, 0x95, 0x62, 0xa1, - 0xed, 0x8c, 0xec, 0xc3, 0xdc, 0x43, 0x65, 0x8b, 0x2b, 0xc0, 0x78, 0x35, 0x7f, 0x83, 0xd0, - 0x98, 0x2a, 0xc7, 0xe4, 0xe8, 0xd6, 0xbc, 0x77, 0x56, 0x26, 0xcf, 0xd8, 0x1a, 0x54, 0x31, - 0x53, 0x59, 0x2e, 0x79, 0x63, 0x69, 0x74, 0x57, 0x7a, 0x20, 0x27, 0xaf, 0x51, 0x71, 0x84, - 0xab, 0x4b, 0x0a, 0x83, 0xb2, 0x8d, 0xe1, 0x68, 0x86, 0x11, 0x8e, 0x34, 0xe5, 0x27, 0xf0, - 0x60, 0x4a, 0xeb, 0x97, 0xbc, 0xb6, 0x22, 0xa1, 0x47, 0x83, 0x33, 0x88, 0x18, 0xa4, 0x49, - 0x31, 0x8b, 0x96, 0x67, 0x6b, 0x96, 0x14, 0x36, 0x60, 0xe8, 0xe6, 0x8e, 0xdf, 0x12, 0x4e, - 0x29, 0xb5, 0xf2, 0x19, 0x15, 0x67, 0xe0, 0xcf, 0xf9, 0xc8, 0x39, 0x4d, 0x29, 0x1e, 0x24, - 0x26, 0x6c, 0x17, 0x24, 0x46, 0xce, 0x92, 0xf5, 0x2a, 0x54, 0x03, 0xc8, 0x76, 0x07, 0xb8, - 0x37, 0xc1, 0x01, 0x21, 0x93, 0x86, 0xef, 0xaf, 0x43, 0xed, 0x83, 0x63, 0xce, 0x8b, 0xf3, - 0x36, 0x2c, 0x1f, 0xb3, 0xf3, 0xa1, 0xb0, 0x5c, 0xba, 0x0b, 0xb7, 0x06, 0x79, 0xc3, 0x3f, - 0x43, 0x91, 0x73, 0x35, 0x8f, 0xc4, 0xf4, 0xb0, 0xde, 0xfd, 0x1f, 0xbc, 0xd4, 0x60, 0xc2, - 0x1a, 0xa2, 0x51, 0x04, 0x2e, 0x12, 0xee, 0xfd, 0xaa, 0xc1, 0x87, 0xcb, 0xe2, 0x50, 0x9e, - 0x44, 0x98, 0x3d, 0xba, 0x90, 0xda, 0xaa, 0x9f, 0x02, 0xd5, 0x42, 0x4e, 0xd1, 0xdb, 0xa6, - 0xa0, 0x28, 0xf0, 0x61, 0x17, 0x00, 0x0d, 0x59, 0x2a, 0xc6, 0x5b, 0x54, 0x80, 0x96, 0x0b, - 0xcb, 0x19, 0xd8, 0x3e, 0x00, 0x49, 0xc6, 0x68, 0x0a, 0xf3, 0x25, 0x20, 0x7b, 0xe3, 0xab, - 0x31, 0x73, 0x20, 0xf8, 0x03, 0x5a, 0x0f, 0x3e, 0xf6, 0xb0, 0xb1, 0x37, 0x1d, 0x1d, 0xfa, - 0xbd, 0x08, 0xaa, 0xf3, 0xaa, 0xe6, 0xab, 0x75, 0xfc, 0x27, 0x3e, 0xa7, 0x30, 0x04, 0xfa, - 0xe8, 0x78, 0x54, 0x74, 0x3f, 0x6a, 0x24, 0x9e, 0x8b, 0x17, 0xb1, 0x83, 0x65, 0x42, 0x83, - 0xd3, 0x76, 0x85, 0xfa, 0x66, 0x07, 0x59, 0x70, 0x58, 0xb8, 0xb6, 0x78, 0x50, 0x3b, 0x4d, - 0x19, 0x8c, 0xac, 0x92, 0xe0, 0x10, 0xea, 0x51, 0x23, 0xa7, 0x2d, 0x09, 0x8a, 0x26, 0x30, - 0xed, 0xec, 0x6d, 0x02, 0xa2, 0xe2, 0x70, 0x30, 0x15, 0x9d, 0x89, 0x39, 0xfc, 0xd4, 0x89, - 0x8b, 0x28, 0x30, 0x70, 0x60, 0xc3, 0x75, 0x5e, 0x6e, 0x6c, 0xe1, 0xdf, 0x3e, 0x27, 0x3b, - 0x56, 0xde, 0x1a, 0xe9, 0x16, 0x5e, 0x9f, 0x3e, 0x77, 0x5c, 0x03, 0xe0, 0x99, 0x74, 0x4f, - 0x14, 0xd1, 0xaf, 0x4a, 0x18, 0x85, 0x70, 0xa2, 0xa7, 0x51, 0xe3, 0x01, 0xf6, 0x76, 0x4b, - 0x28, 0x66, 0x58, 0x3e, 0xf0, 0x57, 0x7e, 0x72, 0xed, 0xa1, 0x94, 0x47, 0x2a, 0x9a, 0xb0, - 0xd5, 0x49, 0x71, 0x11, 0x6a, 0xf5, 0x9f, 0x25, 0x07, 0xb5, 0xe9, 0xc0, 0xd5, 0x92, 0xbf, - 0x9b, 0x40, 0x33, 0x23, 0x59, 0xb4, 0xe6, 0x07, 0x36, 0x9f, 0xe5, 0xbf, 0x38, 0x14, 0x58, - 0x7b, 0x3f, 0x4d, 0x63, 0x70, 0x49, 0x4f, 0x29, 0x2d, 0xd1, 0xa3, 0x57, 0x8f, 0x73, 0x1e, - 0xa5, 0x10, 0x3a, 0x65, 0x2b, 0x7f, 0xe5, 0x33, 0x7a, 0xcf, 0x79, 0xf1, 0xfa, 0x70, 0xb4, - 0xa8, 0x2f, 0xc2, 0x8d, 0xb4, 0x52, 0x0a, 0xbb, 0xaa, 0x69, 0x81, 0xd8, 0x83, 0x70, 0x9a, - 0xff, 0xf9, 0x51, 0x91, 0x30, 0x01, 0x27, 0xa7, 0x88, 0x2b, 0xec, 0x3a, 0x99, 0x0b, 0x79, - 0x73, 0x3a, 0x81, 0xe5, 0x20, 0x0c, 0x6a, 0xc5, 0x7b, 0xa2, 0x86, 0x78, 0x63, 0x01, 0x5b, - 0xb0, 0x92, 0x1c, 0x07, 0xba, 0xe4, 0x0f, 0x8a, 0x31, 0x81, 0x4d, 0x87, 0xe2, 0x13, 0xc5, - 0x44, 0x7e, 0xf8, 0x16, 0xb1, 0x87, 0x0b, 0x71, 0x00, 0x6f, 0x03, 0x3b, 0xfe, 0x14, 0xb5, - 0xb0, 0x37, 0xe1, 0xcd, 0xa6, 0xb3, 0xe9, 0x45, 0x35, 0x8c, 0x1c, 0x97, 0xf3, 0x5c, 0xf5, - 0xdb, 0x2a, 0x91, 0x75, 0x29, 0xd0, 0xe9, 0xb5, 0x02, 0x48, 0x4c, 0x25, 0x45, 0x1d, 0xfb, - 0x40, 0xd8, 0x25, 0xcf, 0x99, 0xbf, 0x3e, 0x12, 0x26, 0x30, 0xa7, 0x57, 0x16, 0x19, 0xf3, - 0x51, 0xcc, 0x98, 0x8f, 0x0a, 0x45, 0x49, 0xaa, 0x3c, 0x9d, 0x7e, 0xc5, 0xde, 0x25, 0x58, - 0x72, 0x02, 0xf4, 0x6b, 0x1f, 0x7b, 0x7d, 0x3e, 0x66, 0x43, 0x2f, 0x8e, 0x07, 0x8b, 0x26, - 0x89, 0xc9, 0xae, 0xa0, 0x41, 0x02, 0x77, 0x82, 0xe9, 0xbe, 0xbc, 0x1f, 0x15, 0xb9, 0xa1, - 0x7c, 0x0d, 0xe3, 0x13, 0x9f, 0xa0, 0x75, 0x53, 0x8d, 0x49, 0x0f, 0x59, 0xb8, 0x94, 0x40, - 0x79, 0x10, 0x51, 0xd7, 0x58, 0x87, 0xda, 0x2a, 0x89, 0x2a, 0x7b, 0xd3, 0x6c, 0xae, 0x79, - 0x34, 0x5c, 0x13, 0x57, 0x34, 0x0a, 0x79, 0xe0, 0x91, 0x0f, 0x90, 0xb4, 0x8a, 0xcf, 0xbe, - 0x4a, 0xa9, 0xdc, 0x2d, 0x03, 0xd9, 0xa2, 0xb7, 0xef, 0x37, 0xf7, 0x01, 0x99, 0xdf, 0xef, - 0xb4, 0x87, 0x70, 0xf3, 0xea, 0xc6, 0x9b, 0x55, 0xf7, 0xd0, 0x5f, 0x0a, 0x18, 0x89, 0x1c, - 0xad, 0xe1, 0xb4, 0x07, 0x75, 0x38, 0xb4, 0x03, 0x9b, 0xb6, 0x23, 0xb0, 0xb1, 0xfc, 0xc9, - 0x7b, 0x1f, 0x75, 0x79, 0x08, 0x05, 0x2d, 0x0a, 0x6d, 0xf7, 0x64, 0x32, 0xf8, 0x43, 0x77, - 0xba, 0x70, 0x87, 0x69, 0x8e, 0x98, 0x41, 0x11, 0x4b, 0x40, 0x3a, 0xcf, 0x54, 0x15, 0xde, - 0xb6, 0x67, 0x31, 0x20, 0x39, 0x6b, 0x71, 0x66, 0x06, 0xee, 0x23, 0xf5, 0x4e, 0x9e, 0x81, - 0x56, 0x27, 0x51, 0xd7, 0xcf, 0xd9, 0xe8, 0x32, 0xe0, 0x1c, 0xb2, 0xc0, 0xbe, 0xd2, 0xb1, - 0xea, 0xca, 0xec, 0xa7, 0x66, 0xa9, 0x73, 0x15, 0x48, 0x3a, 0xba, 0xd7, 0x81, 0xc7, 0x92, - 0xd2, 0x78, 0xe9, 0x4d, 0xd9, 0xce, 0xca, 0xd7, 0x27, 0x08, 0x4a, 0x26, 0xbb, 0x24, 0xa4, - 0x2f, 0xca, 0x18, 0xb7, 0x67, 0x2e, 0x6e, 0x89, 0x3d, 0x78, 0xbc, 0x20, 0x87, 0x1a, 0xbf, - 0x6c, 0x4b, 0x73, 0xde, 0x1e, 0x99, 0xc7, 0x4a, 0x5c, 0xc8, 0x40, 0xd1, 0x97, 0x11, 0x38, - 0x12, 0x72, 0x4b, 0x7d, 0x8f, 0x95, 0xc5, 0x13, 0xdf, 0xa0, 0x76, 0xb3, 0xd6, 0xfb, 0xf5, - 0xe4, 0xbf, 0x55, 0xfb, 0x37, 0xe4, 0xd6, 0x78, 0x47, 0x0b, 0xfd, 0x57, 0xd1, 0x98, 0xb3, - 0x25, 0x10, 0x12, 0x43, 0x2b, 0x92, 0x9f, 0xe9, 0x4a, 0x4a, 0xaf, 0x01, 0xbd, 0xef, 0x22, - 0xba, 0xf2, 0x95, 0xc3, 0xde, 0x1f, 0x50, 0xa0, 0x55, 0xb1, 0xe1, 0x2a, 0xe9, 0xe1, 0x35, - 0x9c, 0xcd, 0x29, 0x7e, 0xa6, 0xd6, 0x99, 0x49, 0xc0, 0xa2, 0x28, 0x08, 0x9f, 0x75, 0x83, - 0x90, 0xe3, 0x1e, 0xc3, 0x40, 0xe7, 0xb9, 0x64, 0xb7, 0xd5, 0x8f, 0x98, 0x88, 0xa1, 0x1b, - 0x37, 0xf5, 0x0c, 0x1e, 0x1d, 0x12, 0x16, 0xb9, 0x10, 0x54, 0x6b, 0xd9, 0xb8, 0x24, 0x97, - 0x08, 0xf3, 0x2a, 0xb6, 0x96, 0x89, 0xd5, 0x11, 0x0a, 0x6a, 0x60, 0xc3, 0x2d, 0x4f, 0x42, - 0x15, 0x97, 0x4f, 0x00, 0xb5, 0x16, 0x34, 0x42, 0xae, 0xa9, 0x66, 0x9d, 0xb9, 0xbb, 0x67, - 0x7b, 0x2b, 0xa4, 0x04, 0x3c, 0x89, 0x0f, 0x0f, 0x28, 0xd0, 0x89, 0x89, 0x0a, 0x91, 0x74, - 0x29, 0x4c, 0x10, 0xac, 0xdd, 0x47, 0xb0, 0xcd, 0x14, 0x22, 0x42, 0x4b, 0x4d, 0x58, 0x60, - 0xa9, 0x2b, 0xf6, 0xf3, 0x0e, 0xe0, 0xd1, 0xf4, 0xe8, 0xef, 0xf4, 0x7a, 0xb1, 0x68, 0x40, - 0x79, 0x38, 0xa5, 0x4c, 0x68, 0xc2, 0xad, 0x37, 0x0c, 0x77, 0x33, 0x4a, 0x1d, 0x84, 0x57, - 0x7f, 0x93, 0xf2, 0xd3, 0xb1, 0xef, 0x02, 0xb9, 0x2a, 0xa9, 0xca, 0xb4, 0xc9, 0x26, 0x43, - 0xc5, 0x45, 0x76, 0x3a, 0x23, 0x82, 0x6d, 0x18, 0x92, 0xde, 0x88, 0xbf, 0x2e, 0xfc, 0x67, - 0x5c, 0xa7, 0x6c, 0x0f, 0xfe, 0x5e, 0x3f, 0xf8, 0xd7, 0xcd, 0xa0, 0x49, 0x15, 0xda, 0xd3, - 0x57, 0xfc, 0x0d, 0xb2, 0x36, 0x9b, 0x85, 0x12, 0x8d, 0xfd, 0xea, 0x57, 0xe9, 0x25, 0x1d, - 0x3e, 0x0a, 0x23, 0x41, 0x0f, 0x1f, 0xc5, 0x25, 0x9f, 0xa8, 0xe5, 0xa9, 0xd0, 0xdc, 0xde, - 0x99, 0xce, 0xd0, 0x60, 0x4f, 0xfb, 0xcb, 0xc9, 0x01, 0x8b, 0x3d, 0xb0, 0xa7, 0xa9, 0xd3, - 0x63, 0x26, 0xdd, 0x0a, 0xfd, 0x0e, 0x74, 0xd8, 0x7a, 0xd8, 0xaf, 0x13, 0x2b, 0xbf, 0xf1, - 0x33, 0x43, 0xfe, 0xf9, 0x13, 0x4c, 0x84, 0x28, 0xc8, 0x4f, 0xce, 0x90, 0x86, 0x18, 0x3a, - 0xdd, 0x1c, 0x2b, 0x19, 0x4c, 0x26, 0x82, 0xef, 0x02, 0xd5, 0x78, 0xa0, 0xda, 0x8e, 0x62, - 0xff, 0x8d, 0xf8, 0x5e, 0xba, 0x69, 0xc0, 0x16, 0xb7, 0x39, 0xa1, 0xaa, 0xfc, 0xff, 0x4c, - 0x4f, 0x54, 0xb8, 0x7a, 0x3a, 0x0b, 0xc2, 0x76, 0xce, 0xe2, 0x81, 0x8c, 0x68, 0xfc, 0x3a, - 0xc5, 0x57, 0xee, 0x74, 0x16, 0x39, 0x3d, 0xf4, 0x0d, 0xb8, 0x20, 0x21, 0x0d, 0x10, 0xa0, - 0xc0, 0xe8, 0xc4, 0x26, 0xe7, 0x7b, 0x97, 0x00, 0xf4, 0x8d, 0x1c, 0x23, 0x37, 0x23, 0x63, - 0xa6, 0x5f, 0x6a, 0xe4, 0x6a, 0x5d, 0x82, 0xdd, 0x4b, 0xeb, 0xd9, 0x3d, 0x44, 0xfd, 0xe3, - 0x97, 0x24, 0x3d, 0xcd, 0x1a, 0xde, 0xa8, 0xba, 0xb7, 0x0d, 0x3a, 0x67, 0xfe, 0xa6, 0xe9, - 0x37, 0x1e, 0xbe, 0x96, 0x85, 0xba, 0x22, 0xf4, 0x04, 0x29, 0xe4, 0x66, 0x6a, 0x90, 0x2b, - 0x16, 0x05, 0xeb, 0xc6, 0xdc, 0x77, 0x70, 0x92, 0x17, 0x41, 0xed, 0x38, 0xce, 0x97, 0xe4, - 0x50, 0xfb, 0x89, 0xb6, 0x04, 0x0f, 0xa6, 0x3d, 0x5c, 0x66, 0x8d, 0xc6, 0x62, 0x98, 0x0b, - 0x10, 0x5d, 0xf3, 0xdd, 0xc9, 0x82, 0x25, 0x71, 0x24, 0xa2, 0x55, 0xe1, 0x43, 0x1c, 0x71, - 0xf4, 0x7b, 0x9a, 0x8e, 0x9c, 0x32, 0x3c, 0x9b, 0xa8, 0x6b, 0xec, 0x06, 0xdf, 0xe7, 0xee, - 0x77, 0x55, 0xcc, 0x4f, 0xd2, 0x8e, 0x0d, 0x24, 0x7c, 0x27, 0xb4, 0x23, 0xd4, 0x3d, 0x32, - 0x3a, 0x1b, 0x60, 0x73, 0x4f, 0xec, 0x82, 0x50, 0x61, 0x01, 0x37, 0x3c, 0x61, 0x2d, 0xda, - 0xd3, 0xaa, 0xbc, 0x7c, 0xc7, 0x9c, 0xc5, 0x54, 0xfc, 0xa8, 0x7d, 0x6b, 0x3b, 0x47, 0x89, - 0x1f, 0x9e, 0x27, 0x21, 0x11, 0xab, 0xe2, 0xc9, 0x40, 0x83, 0x19, 0x50, 0x6b, 0xc7, 0xcb, - 0xd4, 0xcc, 0xdb, 0xee, 0x62, 0x5c, 0x69, 0x8a, 0xc4, 0x00, 0xe9, 0xa0, 0x2f, 0x2e, 0x36, - 0xb5, 0x25, 0xd1, 0xb0, 0x28, 0x7d, 0xfe, 0xf1, 0x8d, 0xc0, 0xa1, 0xf9, 0xbd, 0xdc, 0xc4, - 0x96, 0x89, 0x4e, 0x20, 0x5a, 0x8c, 0x72, 0x41, 0xd2, 0x6b, 0x15, 0x49, 0x82, 0x38, 0x46, - 0x0c, 0x93, 0xb9, 0xd5, 0x48, 0x07, 0x30, 0x8a, 0x12, 0xfc, 0x74, 0xb9, 0x4e, 0xa3, 0x5e, - 0x89, 0x59, 0xb5, 0xcb, 0x4d, 0x80, 0xaf, 0x29, 0xde, 0x50, 0x49, 0x0b, 0xf4, 0x9e, 0x16, - 0x03, 0xee, 0x15, 0xe6, 0x6a, 0x51, 0x9d, 0x80, 0x1f, 0xe9, 0x36, 0xf4, 0x57, 0x8c, 0x16, - 0xd4, 0xb4, 0x04, 0xf7, 0x8f, 0x27, 0x42, 0x29, 0x70, 0xc1, 0x77, 0xa4, 0xd8, 0x7d, 0x8b, - 0xef, 0xc9, 0x31, 0xb6, 0xb5, 0xd8, 0xf2, 0xb5, 0x0b, 0x24, 0x14, 0x17, 0x0a, 0x2b, 0xf4, - 0x7d, 0xde, 0x4b, 0x58, 0x21, 0x22, 0xc5, 0x21, 0xce, 0x48, 0x32, 0x99, 0xf8, 0xd0, 0xb4, - 0x14, 0x5b, 0x97, 0x10, 0x07, 0xbc, 0x6a, 0x4b, 0x99, 0x82, 0xdc, 0x1a, 0x0e, 0x79, 0x13, - 0xf9, 0x2a, 0x4e, 0xb1, 0x2c, 0xb2, 0xa6, 0x14, 0x3e, 0xef, 0xdb, 0x27, 0xb9, 0x42, 0x8d, - 0x3c, 0x99, 0x2b, 0xda, 0xa2, 0x20, 0x83, 0x1a, 0x61, 0xdb, 0xf8, 0x97, 0x2c, 0xb3, 0x1a, - 0x62, 0x38, 0x25, 0x78, 0x92, 0xd6, 0xfe, 0x03, 0x0e, 0xe2, 0x7b, 0x45, 0x1b, 0xf5, 0xcb, - 0xf2, 0x66, 0xb8, 0x51, 0xd6, 0x2c, 0x80, 0xdf, 0x9f, 0xc2, 0x4d, 0x80, 0x64, 0xad, 0x28, - 0xfd, 0x1a, 0xab, 0xe7, 0xec, 0x33, 0xf8, 0x63, 0x6b, 0x83, 0xf8, 0x30, 0xb1, 0xd4, 0x41, - 0xa1, 0xdc, 0x0c, 0xfb, 0x65, 0x52, 0x29, 0x65, 0x61, 0x09, 0xe7, 0xcf, 0x56, 0xff, 0x42, - 0x6d, 0x90, 0x7f, 0x38, 0x3d, 0x54, 0xb7, 0xe8, 0xb7, 0x7d, 0xc5, 0x58, 0xdd, 0xdd, 0x0c, - 0x16, 0x44, 0x3f, 0xfd, 0xa0, 0x7a, 0x47, 0x7c, 0x11, 0x22, 0x19, 0x3b, 0xed, 0xd1, 0x7f, - 0x04, 0x54, 0x96, 0x7a, 0x14, 0x29, 0x18, 0xa4, 0x94, 0x6b, 0x90, 0xf7, 0x5a, 0x70, 0x71, - 0xaa, 0xab, 0x03, 0xb5, 0xec, 0x89, 0xaf, 0xbd, 0xea, 0xd6, 0xf3, 0xf6, 0x7a, 0x07, 0x20, - 0xb1, 0xfd, 0x2c, 0x99, 0x68, 0x75, 0x19, 0xb6, 0x4b, 0x04, 0x8a, 0xb1, 0x3c, 0xd1, 0x3a, - 0xc7, 0x4f, 0x5e, 0xc4, 0xa2, 0xb6, 0x22, 0xd8, 0xd0, 0xe1, 0x38, 0x8c, 0xc6, 0x59, 0xcb, - 0x00, 0x07, 0xd0, 0x1a, 0xfd, 0x11, 0x58, 0x08, 0xc8, 0x87, 0x16, 0x65, 0xf1, 0x5d, 0xed, - 0xfc, 0xa0, 0x2e, 0x7d, 0xd1, 0x77, 0x21, 0x0d, 0xbf, 0xf0, 0xd2, 0x0c, 0x36, 0xa1, 0xd4, - 0xdb, 0xaa, 0xae, 0x64, 0x8b, 0x6d, 0x48, 0xb8, 0xfd, 0xb5, 0xc6, 0x28, 0xd3, 0x6e, 0xe7, - 0x37, 0x61, 0x01, 0x00, 0xf1, 0x07, 0x3e, 0x12, 0xd8, 0xb7, 0x0a, 0xa9, 0xf9, 0xff, 0x3a, - 0x89, 0x85, 0xe5, 0xcd, 0x4f, 0x4b, 0xd7, 0x9c, 0xf8, 0x35, 0x13, 0x07, 0x4c, 0x2b, 0x45, - 0x03, 0x2b, 0xde, 0x07, 0xb2, 0x27, 0x31, 0x40, 0x30, 0x52, 0xb8, 0x41, 0x9d, 0xd1, 0x80, - 0x3a, 0x74, 0x78, 0x1b, 0x73, 0x31, 0xce, 0x06, 0x59, 0xcc, 0x6d, 0x3d, 0xd7, 0xe5, 0xc2, - 0x9f, 0x03, 0x36, 0x0f, 0xc0, 0x5c, 0x14, 0x30, 0x1b, 0x3f, 0x53, 0xd7, 0xd9, 0x88, 0xfd, - 0x71, 0xa3, 0x48, 0xa4, 0xa0, 0xa7, 0x76, 0xa3, 0x70, 0x8d, 0x05, 0x57, 0xe7, 0x37, 0x7e, - 0xce, 0xbd, 0x98, 0x4f, 0x8e, 0x7b, 0x6e, 0x3a, 0x59, 0x57, 0x38, 0x11, 0xa0, 0xb6, 0x09, - 0xd2, 0x8b, 0x2a, 0x13, 0x79, 0x47, 0x48, 0x8a, 0x4c, 0xdf, 0xa0, 0xed, 0x6f, 0x98, 0xfc, - 0x7c, 0x63, 0x97, 0x0c, 0x2e, 0xc7, 0xcf, 0x75, 0x81, 0x84, 0x1b, 0xc2, 0xd7, 0x74, 0x83, - 0x8b, 0xc6, 0xae, 0xf8, 0x36, 0xc3, 0xa2, 0x4d, 0xcc, 0x70, 0xe5, 0xe6, 0x29, 0x54, 0x84, - 0x70, 0xef, 0x45, 0xf5, 0x65, 0x72, 0x88, 0x25, 0x4e, 0xaa, 0xad, 0xc3, 0x46, 0x60, 0x0e, - 0xdc, 0xb3, 0xd0, 0x78, 0xc6, 0x59, 0x67, 0x30, 0xa3, 0x51, 0x89, 0x83, 0x3b, 0xc0, 0x37, - 0xdf, 0xff, 0xd0, 0x64, 0x57, 0xdd, 0x29, 0xbb, 0x80, 0xbd, 0x23, 0x69, 0xf2, 0x4f, 0x06, - 0x8d, 0xd9, 0xae, 0x01, 0x25, 0x40, 0xde, 0x43, 0x22, 0x30, 0xf8, 0x84, 0x6e, 0x30, 0x1c, - 0xe4, 0xfb, 0x08, 0x5e, 0x97, 0x0c, 0x8b, 0xc3, 0xe3, 0x0d, 0xad, 0xed, 0x87, 0xfc, 0x12, - 0xb0, 0x22, 0x51, 0x79, 0xb4, 0xbb, 0x1f, 0xc0, 0xe0, 0x3c, 0x3c, 0x73, 0x61, 0x98, 0xa7, - 0xef, 0xcd, 0x32, 0xa4, 0xef, 0x2d, 0x04, 0x3a, 0x64, 0x2f, 0xcc, 0x73, 0x13, 0xed, 0x87, - 0x33, 0x36, 0xed, 0xf8, 0xef, 0x41, 0xab, 0xbf, 0x5b, 0xb8, 0x2f, 0x66, 0x66, 0xab, 0x60, - 0xcb, 0xd6, 0x4f, 0x5d, 0xaf, 0x9a, 0xf8, 0xcc, 0x24, 0xb5, 0xba, 0xdb, 0x41, 0x9e, 0x30, - 0x01, 0xcf, 0x98, 0xf2, 0xd6, 0x36, 0x50, 0x11, 0xe9, 0xfd, 0x57, 0x24, 0xd0, 0x6a, 0x4d, - 0xb4, 0x6a, 0x07, 0xc7, 0xe3, 0x20, 0xe5, 0xec, 0x77, 0x6e, 0xb2, 0x69, 0x8d, 0xd0, 0x55, - 0xe2, 0x20, 0x58, 0x6a, 0x39, 0x2a, 0x46, 0x6e, 0x77, 0xd5, 0x39, 0xaf, 0x3e, 0x1e, 0xdc, - 0x87, 0x52, 0x88, 0xd1, 0x9e, 0x73, 0x5e, 0xf0, 0x86, 0x42, 0x6a, 0xf5, 0x89, 0xe1, 0xe9, - 0x20, 0x75, 0x85, 0x1c, 0xa6, 0x4b, 0xca, 0x47, 0x01, 0x02, 0xc7, 0x73, 0xe4, 0x73, 0x2b, - 0xe5, 0x6c, 0xb5, 0xf5, 0xef, 0xf6, 0xa4, 0x61, 0x8a, 0x3a, 0xb2, 0x32, 0x54, 0x7b, 0x60, - 0xd7, 0xf3, 0x1d, 0xa8, 0xae, 0x29, 0xb7, 0xcd, 0xaa, 0xe6, 0x86, 0x66, 0xa9, 0x66, 0xd6, - 0xf1, 0x03, 0xe4, 0xe0, 0xb4, 0x59, 0xf9, 0x84, 0x9f, 0x53, 0x49, 0x5b, 0xd5, 0x63, 0xe3, - 0xab, 0x61, 0xc4, 0x12, 0x67, 0xe9, 0x39, 0x07, 0x89, 0x96, 0xc1, 0xff, 0x16, 0x87, 0x50, - 0x59, 0x42, 0x5d, 0x1f, 0x7e, 0x21, 0xfb, 0xd7, 0x2e, 0x1b, 0xc2, 0x3c, 0xa8, 0x2d, 0x44, - 0xc4, 0x62, 0x1c, 0xfa, 0xc8, 0x44, 0x35, 0x8f, 0xd2, 0x3b, 0xa9, 0x86, 0xf8, 0x17, 0x18, - 0xe7, 0xcf, 0x53, 0x23, 0x73, 0x98, 0xc2, 0xc1, 0x56, 0x94, 0xf4, 0x6c, 0xf3, 0x63, 0x25, - 0x95, 0xc2, 0xf1, 0x75, 0x3f, 0xa5, 0x69, 0x80, 0xd3, 0x00, 0x76, 0x1b, 0xf1, 0x01, 0x0d, - 0x47, 0x54, 0x5b, 0x46, 0x6b, 0xc7, 0xcf, 0x09, 0x15, 0xf9, 0x96, 0xb6, 0x33, 0x5c, 0xc4, - 0xc7, 0xfe, 0x23, 0xe5, 0xbf, 0x21, 0xb5, 0x9e, 0xd5, 0x58, 0xb8, 0x88, 0x29, 0x82, 0xfd, - 0xbc, 0x4b, 0xcc, 0x0e, 0x23, 0x0d, 0x71, 0x03, 0xdc, 0x7d, 0x51, 0xe1, 0xd9, 0x57, 0xad, - 0x92, 0xdb, 0xdd, 0x7b, 0xd4, 0x6b, 0x80, 0xce, 0x19, 0x6d, 0xd0, 0x0f, 0x8d, 0xac, 0x51, - 0x27, 0x25, 0xbd, 0xcd, 0xee, 0xa6, 0xbd, 0xf6, 0x78, 0xa3, 0xe7, 0x7e, 0x0b, 0x36, 0xac, - 0xcb, 0x44, 0xf7, 0x5b, 0x23, 0x34, 0x39, 0x03, 0xd6, 0x8b, 0x39, 0x63, 0x96, 0x08, 0x09, - 0x6d, 0x7e, 0x0f, 0xd9, 0x41, 0x37, 0x4f, 0x16, 0x91, 0x32, 0x4f, 0xa7, 0xe6, 0xa5, 0xc7, - 0xad, 0x89, 0xff, 0xf0, 0x86, 0xfb, 0x51, 0x60, 0xa9, 0xef, 0x73, 0x66, 0xda, 0xfd, 0x08, - 0x2c, 0x68, 0x88, 0x7d, 0x8a, 0x80, 0x82, 0x76, 0xf7, 0x50, 0x4f, 0xef, 0x46, 0x0a, 0xf7, - 0xb0, 0x82, 0x34, 0x44, 0xa2, 0xa3, 0x0a, 0x62, 0x57, 0xff, 0x58, 0x8b, 0xf8, 0x07, 0x5a, - 0xdd, 0x92, 0x9c, 0x26, 0x2c, 0x7f, 0xb4, 0xe9, 0x83, 0x7b, 0x75, 0x03, 0xfd, 0xed, 0x41, - 0xfc, 0x4e, 0x3e, 0xaf, 0x4e, 0xbe, 0xde, 0x17, 0x18, 0x90, 0x55, 0x22, 0xc6, 0x0e, 0x18, - 0x03, 0x3f, 0xbc, 0x5b, 0x07, 0x01, 0xc7, 0x94, 0x00, 0xa9, 0x73, 0x91, 0xc8, 0x7f, 0x06, - 0x04, 0xb2, 0x6b, 0x9d, 0xdf, 0x23, 0x18, 0x4b, 0x0d, 0x74, 0x28, 0x3e, 0x00, 0x8e, 0x22, - 0xae, 0x17, 0xb2, 0x7f, 0xe4, 0x29, 0x6c, 0x04, 0x01, 0x05, 0x0a, 0xc0, 0xe1, 0x55, 0x6e, - 0x7c, 0x06, 0x9f, 0x03, 0x32, 0x13, 0xf1, 0x96, 0xfb, 0x1c, 0x14, 0x14, 0x80, 0x43, 0x9b, - 0xa8, 0x75, 0x00, 0x5f, 0xc2, 0xcd, 0x0d, 0xd0, 0xff, 0xcb, 0xfc, 0x5e, 0x10, 0x9f, 0xf3, - 0x61, 0x04, 0x96, 0x4b, 0x2a, 0x8f, 0x85, 0x49, 0x70, 0x23, 0xe5, 0x34, 0xdb, 0xdd, 0x50, - 0x23, 0x3c, 0xa9, 0xa5, 0x4e, 0x93, 0xf4, 0x0a, 0x6a, 0xdd, 0x13, 0xb6, 0x9a, 0x39, 0x1b, - 0xc6, 0xff, 0x24, 0x3b, 0x0c, 0x78, 0x05, 0x2b, 0x5c, 0xe4, 0xa8, 0x27, 0xf3, 0xde, 0xf8, - 0x8a, 0xbf, 0x00, 0x58, 0x56, 0xbf, 0xdb, 0x12, 0x9a, 0x39, 0xd1, 0x99, 0xdc, 0xc5, 0x89, - 0xb2, 0xbe, 0x19, 0x0f, 0xf5, 0x08, 0xcd, 0xc8, 0xdc, 0x3e, 0x43, 0x9b, 0x00, 0x47, 0x39, - 0x41, 0x40, 0x4a, 0x04, 0x92, 0xea, 0x2d, 0x95, 0xf0, 0xfb, 0xb9, 0x44, 0x07, 0x82, 0x88, - 0xf2, 0x04, 0xf4, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xcf, 0x92, - 0xdf, 0xe6, 0x85, 0x66, 0x0e, 0xfd, 0x09, 0xf2, 0xd1, 0x23, 0x28, 0xb6, 0xd4, 0xb3, 0x83, - 0x31, 0x37, 0xdc, 0xe6, 0x98, 0x8f, 0xd0, 0xdb, 0xd2, 0x11, 0x81, 0xac, 0x2f, 0x82, 0x77, - 0x36, 0x60, 0x7c, 0xf0, 0xff, 0x13, 0xa9, 0x42, 0xb9, 0x29, 0x75, 0xe1, 0x59, 0x1b, 0x5d, - 0x15, 0xcf, 0x81, 0xff, 0x60, 0x95, 0x65, 0x2a, 0x36, 0xc1, 0xa1, 0xd6, 0xc2, 0x9d, 0x2a, - 0x2f, 0x00, - ], - &[ - 0x04, 0x00, 0x00, 0x00, 0x18, 0xe6, 0x46, 0xc0, 0x1f, 0xbe, 0x9f, 0xab, 0xae, 0xa1, 0x22, - 0x9b, 0xf5, 0x92, 0x9e, 0xee, 0x72, 0xf8, 0x5d, 0x23, 0x65, 0xe3, 0xe3, 0x3d, 0x8d, 0x23, - 0xda, 0xdd, 0x32, 0x7e, 0x52, 0xec, 0xd6, 0x05, 0x36, 0x0a, 0xc6, 0x81, 0xeb, 0xec, 0x11, - 0x65, 0x32, 0xd8, 0x24, 0x73, 0xff, 0x1f, 0xe9, 0xdf, 0x07, 0xf2, 0x6d, 0xba, 0x25, 0xdb, - 0x1b, 0xf4, 0xfc, 0xf3, 0xa7, 0x97, 0x0f, 0x99, 0xa6, 0x60, 0x51, 0x42, 0xb7, 0x4e, 0x9d, - 0xf5, 0x37, 0xa6, 0x67, 0xfd, 0xbe, 0x1e, 0xb3, 0x8f, 0x2e, 0x30, 0x6e, 0xbe, 0x5b, 0xb4, - 0x00, 0xb1, 0x90, 0xb0, 0x1a, 0x13, 0x98, 0xee, 0x9d, 0x51, 0x22, 0x25, 0x4a, 0x4d, 0x0f, - 0x0f, 0x0f, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, - 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, - 0xff, 0xff, 0xff, 0x02, 0x54, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, - 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x62, 0x8d, 0x75, 0xcb, 0xbd, 0x65, 0x07, 0x7f, 0x6e, 0x38, 0x6c, 0x9e, 0xc6, 0x36, 0xb2, - 0x5b, 0x23, 0x87, 0x1b, 0xdf, 0x31, 0xfb, 0xfe, 0x21, 0xc2, 0xac, 0xa2, 0x3b, 0xf4, 0x9d, - 0x6f, 0x0a, 0x02, 0xe8, 0x3d, 0xdf, 0xd6, 0xca, 0xcd, 0xd6, 0x4c, 0x1b, 0xcb, 0xe4, 0x6a, - 0x9a, 0x97, 0x44, 0x25, 0xa4, 0x62, 0x30, 0xb5, 0x54, 0x1a, 0x4e, 0x9e, 0x0a, 0x31, 0xb4, - 0xe0, 0x56, 0x8c, 0x34, 0x26, 0xa9, 0x90, 0xd5, 0x2e, 0xbe, 0x77, 0x04, 0x79, 0x93, 0x5b, - 0x39, 0xa1, 0xe9, 0xf4, 0x23, 0xe7, 0x50, 0x65, 0xb7, 0xf9, 0x0f, 0x28, 0xfb, 0x68, 0x39, - 0xf5, 0x4c, 0x71, 0xd2, 0xb1, 0x0f, 0x24, 0xc2, 0x5a, 0x78, 0x00, 0x0b, 0x6b, 0x25, 0x5e, - 0x7b, 0xff, 0x5d, 0x96, 0xd0, 0xfd, 0x99, 0xaf, 0x36, 0x04, 0x0d, 0xe2, 0xef, 0x94, 0x1a, - 0x13, 0x5b, 0x35, 0x61, 0x32, 0x97, 0x15, 0x17, 0x77, 0xbe, 0xae, 0x47, 0x06, 0xde, 0xfb, - 0x39, 0xcf, 0xc0, 0xa8, 0x5a, 0xe8, 0xc2, 0x52, 0x7f, 0xa0, 0xeb, 0x74, 0xdb, 0xe1, 0x85, - 0x98, 0xed, 0xc1, 0x21, 0xd3, 0x0e, 0x65, 0x7d, 0x60, 0x37, 0x9b, 0xd5, 0xba, 0x33, 0x24, - 0xee, 0x10, 0xbb, 0xbd, 0x99, 0xfc, 0x44, 0xbf, 0x15, 0x15, 0x01, 0x7b, 0x08, 0x08, 0x95, - 0x25, 0x58, 0x19, 0xf5, 0x13, 0x81, 0xa4, 0x66, 0x23, 0x50, 0x3e, 0x46, 0xd9, 0x5a, 0x70, - 0x0b, 0xa7, 0xf5, 0xd1, 0xcc, 0xba, 0xf5, 0x8b, 0x89, 0x4e, 0x33, 0xe7, 0x3e, 0x65, 0x8f, - 0xff, 0xbc, 0xd0, 0x26, 0xef, 0x13, 0x25, 0x86, 0x3a, 0xe5, 0x89, 0x16, 0xca, 0xf2, 0xb0, - 0x27, 0x88, 0x93, 0xc1, 0x0e, 0x25, 0x17, 0xfc, 0xa0, 0xc1, 0x37, 0xb9, 0x19, 0x7b, 0x70, - 0x9f, 0x66, 0xcf, 0xb4, 0x0c, 0x4e, 0x68, 0x83, 0x03, 0xd3, 0x52, 0xa1, 0xaa, 0x26, 0x9f, - 0x45, 0x68, 0x8d, 0x19, 0x02, 0x3f, 0x08, 0xae, 0xe0, 0xe0, 0x00, 0x09, 0x45, 0x33, 0x2b, - 0x41, 0x1b, 0x37, 0xb4, 0xbd, 0xd5, 0xa3, 0xb8, 0x4c, 0xf7, 0xec, 0x9a, 0x8e, 0xfc, 0x76, - 0x0b, 0xac, 0xaa, 0x50, 0x74, 0x8a, 0x6c, 0x7f, 0x06, 0xfe, 0xd1, 0x92, 0xd3, 0x84, 0xb4, - 0x78, 0x4c, 0x96, 0xc2, 0x00, 0x2e, 0x58, 0x22, 0xda, 0x37, 0x8f, 0xc8, 0x59, 0x49, 0x96, - 0xe6, 0x1e, 0x12, 0xe6, 0x13, 0x5f, 0x42, 0xca, 0xd1, 0x56, 0x8d, 0x50, 0xec, 0xc4, 0x10, - 0x5c, 0xf8, 0x8c, 0x02, 0xe7, 0xce, 0x22, 0x28, 0x4d, 0x02, 0xca, 0x32, 0xcd, 0x9f, 0x94, - 0xd3, 0xeb, 0xa6, 0xa5, 0xe4, 0x62, 0xa2, 0xec, 0xe6, 0xe1, 0xfa, 0x93, 0x84, 0x61, 0x8e, - 0x52, 0xcf, 0xe2, 0x98, 0x2b, 0xd8, 0xaa, 0xf7, 0xd9, 0xd1, 0xcd, 0x55, 0x16, 0xd8, 0x10, - 0xd2, 0x64, 0xcf, 0xb4, 0x53, 0x84, 0x4c, 0x57, 0x70, 0x9d, 0x3f, 0x1b, 0xbd, 0xfc, 0x1d, - 0x43, 0x9c, 0x93, 0xa1, 0x3d, 0x49, 0xea, 0x3a, 0xc2, 0x2e, 0xfd, 0xd9, 0x0f, 0xa2, 0xae, - 0x9e, 0xb0, 0x07, 0x3f, 0x74, 0xb5, 0x44, 0x88, 0x78, 0x8b, 0xe9, 0x8e, 0xe8, 0xf4, 0xf9, - 0xa5, 0x33, 0x58, 0xe4, 0x88, 0x4c, 0x3d, 0x1b, 0x83, 0x1d, 0x70, 0x24, 0x4b, 0x5f, 0x93, - 0x7f, 0xf0, 0xa5, 0x85, 0x77, 0x1f, 0x5b, 0x71, 0x36, 0x2d, 0x87, 0x19, 0x04, 0xe4, 0xaa, - 0x7c, 0x58, 0xbf, 0x76, 0x2a, 0x87, 0x53, 0x86, 0xdb, 0x9c, 0x9e, 0x02, 0x2d, 0x6a, 0x5d, - 0x52, 0xbe, 0x19, 0x2b, 0x02, 0xfd, 0x5d, 0xe1, 0x05, 0xca, 0x6f, 0x3a, 0xe7, 0x8b, 0xe5, - 0x1a, 0xef, 0xdd, 0xb1, 0xd0, 0x9d, 0x58, 0x64, 0xef, 0xe2, 0xe6, 0xc5, 0x7f, 0xcf, 0x94, - 0x06, 0x96, 0x2a, 0xa0, 0xac, 0x60, 0x5d, 0x94, 0x85, 0x4f, 0xb4, 0x0b, 0xb5, 0x29, 0x53, - 0x34, 0x08, 0xeb, 0xed, 0x13, 0xda, 0xce, 0x74, 0x70, 0x2a, 0x9d, 0x3b, 0x67, 0x4b, 0x3d, - 0x1f, 0x77, 0x70, 0x40, 0x35, 0xd1, 0x56, 0x74, 0x2e, 0x60, 0x2c, 0xf6, 0xfa, 0xab, 0xa2, - 0x58, 0xf2, 0xd7, 0x4c, 0xd6, 0xc2, 0xab, 0x38, 0xc7, 0x47, 0xca, 0x5b, 0x6c, 0xd5, 0x33, - 0x75, 0x56, 0x8a, 0xef, 0xcf, 0x50, 0x09, 0x77, 0x88, 0xc4, 0x9b, 0x1b, 0x93, 0xa5, 0x51, - 0xe1, 0x3d, 0xf4, 0xb3, 0x9d, 0x07, 0xb3, 0x8d, 0x04, 0xcd, 0x49, 0x49, 0xeb, 0x4b, 0x34, - 0x04, 0x39, 0x0e, 0x66, 0x5f, 0xbf, 0x4c, 0x7a, 0x29, 0x1a, 0xa6, 0x08, 0x82, 0x1d, 0xcf, - 0xf2, 0x37, 0x71, 0x0e, 0xe3, 0x53, 0x34, 0xa8, 0xf2, 0xc9, 0x15, 0x46, 0x17, 0x7c, 0x66, - 0x7c, 0x1a, 0x3a, 0x26, 0x1a, 0x8b, 0xdf, 0xd7, 0x3a, 0x25, 0xbb, 0xd4, 0xdf, 0x5d, 0x9e, - 0xc1, 0x33, 0xdc, 0x56, 0xca, 0x7b, 0x02, 0x12, 0xa8, 0xe1, 0x06, 0x23, 0x94, 0x04, 0xce, - 0xce, 0x3f, 0x19, 0x6d, 0x82, 0xd5, 0x8f, 0x97, 0xc7, 0x49, 0xf1, 0x47, 0x94, 0x1c, 0xa9, - 0xac, 0x36, 0xe5, 0xa2, 0x03, 0xb2, 0x88, 0x28, 0xb0, 0x0a, 0xb1, 0xb6, 0x64, 0xda, 0xc9, - 0x3f, 0xcf, 0x6f, 0x1f, 0xdd, 0x8f, 0x9b, 0xbb, 0x6a, 0x81, 0xb5, 0xa2, 0x70, 0xbf, 0x16, - 0x91, 0x46, 0x63, 0xbf, 0x23, 0x29, 0x09, 0x0c, 0xca, 0x86, 0x22, 0x27, 0x69, 0x11, 0x7c, - 0x6e, 0xcb, 0x89, 0x25, 0x67, 0x62, 0xd5, 0x29, 0xfc, 0xb0, 0x0f, 0xb8, 0x67, 0x7f, 0xba, - 0x1e, 0xb6, 0x78, 0x1c, 0x1c, 0xc4, 0xce, 0x0c, 0x37, 0x5a, 0x79, 0x91, 0xe2, 0x9d, 0x79, - 0xe8, 0xaa, 0x0f, 0xd9, 0xb6, 0xdf, 0xc3, 0x89, 0xff, 0xaa, 0xe2, 0x57, 0x6e, 0xf7, 0x0d, - 0xfb, 0x61, 0x08, 0x4c, 0x06, 0xf7, 0xcc, 0xa6, 0x5f, 0xf7, 0x1d, 0x13, 0x0e, 0x2a, 0xa2, - 0x32, 0xa9, 0xe0, 0x87, 0xe1, 0x19, 0x9a, 0x78, 0x14, 0x66, 0xf3, 0x08, 0x7e, 0xc6, 0x09, - 0xd7, 0xae, 0x57, 0x65, 0x8d, 0x1a, 0x6b, 0xdf, 0x3f, 0x94, 0x8b, 0xd4, 0x4e, 0xc0, 0xd1, - 0xb8, 0xa5, 0x69, 0xbd, 0x0b, 0x02, 0x73, 0xd5, 0x18, 0xd4, 0x7e, 0x2d, 0xf2, 0x95, 0xcc, - 0x3a, 0x74, 0x00, 0x75, 0xb2, 0xaa, 0xce, 0xa9, 0xcb, 0x66, 0x73, 0xe6, 0xa6, 0xb9, 0xa5, - 0x3b, 0x5e, 0x9e, 0x4f, 0x9f, 0xad, 0xbf, 0xcf, 0x1f, 0x95, 0xbe, 0x41, 0xf5, 0xa4, 0x6e, - 0x31, 0xc4, 0x66, 0x0a, 0x39, 0x2a, 0x54, 0x8c, 0x74, 0xd5, 0x74, 0x21, 0xd1, 0x0c, 0xc0, - 0xc7, 0x35, 0x18, 0xac, 0xe9, 0x75, 0xeb, 0x39, 0xff, 0x43, 0x45, 0xef, 0xab, 0x21, 0x5d, - 0xa2, 0x58, 0xd4, 0xff, 0xe5, 0xb5, 0xf9, 0x84, 0xf4, 0x74, 0x5c, 0x43, 0x56, 0xbd, 0x14, - 0x39, 0xe7, 0x1a, 0x34, 0xd7, 0x13, 0xa0, 0x69, 0x54, 0xce, 0xf0, 0x67, 0x38, 0x71, 0x7e, - 0x9d, 0x7d, 0x6d, 0xdf, 0xbc, 0xe8, 0x28, 0x92, 0x78, 0xb3, 0x85, 0xe9, 0xf5, 0x62, 0x50, - 0x1d, 0xd5, 0x23, 0x23, 0xf9, 0x0e, 0xc2, 0x4f, 0x4d, 0x7a, 0xb3, 0xaa, 0x54, 0x88, 0x08, - 0x5c, 0xe2, 0x34, 0x4f, 0xd3, 0x86, 0x0a, 0xd6, 0xd0, 0x1a, 0x6a, 0xae, 0xcb, 0x7c, 0xa9, - 0x02, 0xe6, 0x05, 0x50, 0x34, 0xf6, 0x3d, 0x40, 0x41, 0x1c, 0x6f, 0x0c, 0x95, 0xd5, 0x77, - 0x76, 0x50, 0xd0, 0x32, 0x0b, 0x8a, 0x27, 0xf0, 0xc8, 0x10, 0x0f, 0x37, 0xe5, 0x2e, 0xe6, - 0x6d, 0x43, 0x7a, 0x62, 0x2f, 0x1b, 0x12, 0xbd, 0x51, 0x0f, 0x41, 0x54, 0x6b, 0xd8, 0x82, - 0xc2, 0xa8, 0x78, 0x57, 0xbf, 0x4b, 0x47, 0x80, 0x4d, 0x03, 0x90, 0xcb, 0xd1, 0x21, 0x5a, - 0x8a, 0x1b, 0xb5, 0x68, 0x0a, 0x8a, 0x30, 0x22, 0x8b, 0xa6, 0x64, 0x2c, 0xd6, 0x75, 0x45, - 0x87, 0x92, 0x33, 0xec, 0xb4, 0x10, 0x27, 0x01, 0x23, 0xfb, 0x8d, 0xc3, 0x37, 0xf5, 0xa7, - 0x8b, 0x3a, 0xdc, 0xb2, 0x14, 0x5e, 0x38, 0xd1, 0x12, 0x03, 0x1d, 0x8a, 0x14, 0x6b, 0x6c, - 0xa3, 0x60, 0xd6, 0x81, 0x67, 0x68, 0x78, 0x3b, 0x66, 0xcb, 0x65, 0x42, 0x58, 0xd9, 0x1d, - 0x05, 0xe3, 0x33, 0x30, 0x49, 0x54, 0x33, 0xd3, 0x98, 0xb1, 0xee, 0x2a, 0xcd, 0x96, 0xbb, - 0x1f, 0x16, 0x71, 0xf9, 0x77, 0x09, 0x12, 0xc2, 0x92, 0xcd, 0x65, 0x28, 0x05, 0xa3, 0x72, - 0xb5, 0xeb, 0xf3, 0x21, 0x60, 0x20, 0xcd, 0x01, 0x0b, 0x3c, 0x9f, 0x7b, 0x48, 0xec, 0x60, - 0x1c, 0xaa, 0x66, 0x7b, 0x0c, 0xe6, 0xbc, 0x6e, 0x98, 0xe9, 0x8d, 0xb2, 0x6d, 0x2f, 0xee, - 0x3e, 0xe4, 0x48, 0x49, 0xcc, 0xaf, 0x78, 0xbe, 0x2f, 0x19, 0x7f, 0x5e, 0x48, 0xad, 0x2b, - 0x74, 0xa2, 0x1b, 0x7e, 0x39, 0xf9, 0xa2, 0x6c, 0x44, 0x2d, 0x92, 0x1f, 0xb9, 0x80, 0xe2, - 0x8f, 0xc9, 0xb6, 0xff, 0xec, 0x0e, 0xb4, 0x65, 0x6e, 0x89, 0xea, 0xff, 0x62, 0xf0, 0x52, - 0x58, 0xf3, 0x83, 0x4d, 0xe4, 0x59, 0xeb, 0x20, 0x66, 0xdb, 0xfd, 0x87, 0x6d, 0x76, 0x52, - 0xb6, 0xb0, 0x67, 0x1b, 0xbe, 0x5a, 0x38, 0x04, 0x0a, 0x6a, 0x1f, 0x58, 0xfe, 0x78, 0x06, - 0x99, 0x0c, 0xb8, 0x3b, 0xc7, 0xf8, 0x91, 0xf7, 0xd3, 0xd3, 0xc3, 0x11, 0xaf, 0x30, 0x5a, - 0xb9, 0x4c, 0xa4, 0x60, 0xec, 0x09, 0x28, 0xbc, 0x74, 0x33, 0xd4, 0xa8, 0xdb, 0x0d, 0x4d, - 0x3f, 0xa0, 0xee, 0x6c, 0xb1, 0x81, 0xe6, 0x87, 0x7d, 0x62, 0xf9, 0xa1, 0xa9, 0xeb, 0x5c, - 0x78, 0x67, 0x64, 0x51, 0x5a, 0x9c, 0x2a, 0x8f, 0xca, 0x74, 0x57, 0x9c, 0x12, 0xf4, 0x4e, - 0xab, 0x04, 0x07, 0x55, 0xc7, 0x25, 0x48, 0x39, 0x35, 0x77, 0xf8, 0xad, 0x01, 0x35, 0x7d, - 0xd5, 0x4a, 0x29, 0x68, 0x11, 0x56, 0xf3, 0xf3, 0xa5, 0x10, 0x2c, 0x86, 0xa2, 0x17, 0xed, - 0x37, 0x5d, 0x68, 0x5a, 0xa4, 0x67, 0x75, 0xf3, 0x3b, 0xaf, 0xd7, 0xe4, 0xe8, 0x98, 0x6f, - 0x0a, 0x6c, 0x21, 0xbc, 0x86, 0x01, 0xfe, 0x92, 0x4b, 0xa2, 0x66, 0x8d, 0xc6, 0x7b, 0xc6, - 0xdc, 0xd6, 0x81, 0x63, 0x9a, 0xa5, 0x74, 0x22, 0x97, 0x13, 0xcd, 0xeb, 0xd1, 0x93, 0x99, - 0xb6, 0xd1, 0x63, 0x47, 0x53, 0x55, 0xab, 0x95, 0x2c, 0x27, 0x6c, 0x79, 0x72, 0x3b, 0x52, - 0x99, 0x58, 0xb2, 0xe4, 0x95, 0x44, 0xb1, 0x71, 0xb2, 0xaa, 0x9c, 0xac, 0x58, 0xd1, 0xd9, - 0x8c, 0xf8, 0x07, 0x2d, 0xa9, 0xbb, 0xa9, 0xca, 0xef, 0x89, 0x94, 0x88, 0xea, 0xcc, 0x1d, - 0xd5, 0xfe, 0xba, 0xd0, 0xf1, 0x71, 0x4a, 0x0d, 0xdc, 0x43, 0xc7, 0x5b, 0xc7, 0x70, 0x26, - 0x8e, 0x15, 0xfd, 0x22, 0xa5, 0x9c, 0x16, 0xb7, 0xf5, 0xa0, 0x16, 0xf6, 0xa1, 0xfd, 0xf2, - 0x10, 0x0b, 0x6b, 0x64, 0x55, 0x17, 0x3d, 0x12, 0x1d, 0xde, 0x17, 0xb8, 0xff, 0x78, 0x02, - 0x0d, 0xf4, 0xa0, 0xeb, 0x45, 0xbb, 0x32, 0x12, 0x86, 0x2f, 0x56, 0xad, 0x9b, 0x10, 0x9f, - 0xdb, 0x7e, 0x02, 0x43, 0x40, 0x23, 0x6f, 0x7b, 0xf8, 0xbf, 0xa6, 0xda, 0xa2, 0x2e, 0x19, - 0x93, 0xbe, 0xcc, 0xca, 0x4c, 0xc7, 0x88, 0x3d, 0xe8, 0x9a, 0x89, 0x0c, 0x19, 0xec, 0x2d, - 0x32, 0xea, 0x4e, 0x3c, 0xb0, 0x86, 0xdc, 0xd4, 0x45, 0xf6, 0x28, 0x47, 0xd0, 0xd4, 0x46, - 0x63, 0xbe, 0xf8, 0x2f, 0xe0, 0x9f, 0x8c, 0x69, 0x7d, 0x04, 0x7a, 0xf9, 0xae, 0x3b, 0x53, - 0x64, 0x4c, 0x53, 0xff, 0xdf, 0x32, 0x15, 0x03, 0x8b, 0x3e, 0xd0, 0xab, 0x02, 0x70, 0xc3, - 0x3d, 0xb0, 0xa7, 0x97, 0xb9, 0x4a, 0x5b, 0x2d, 0xf8, 0x7c, 0x4d, 0xad, 0x0c, 0x93, 0x7f, - 0x1e, 0xff, 0x4b, 0x66, 0xee, 0x74, 0x34, 0x4f, 0xf1, 0x4e, 0x8a, 0x7e, 0x86, 0xac, 0x60, - 0xc6, 0xed, 0x6d, 0x0c, 0xab, 0x5d, 0xb5, 0x26, 0xf8, 0xef, 0x46, 0xca, 0xf8, 0x6b, 0xad, - 0x6e, 0xf0, 0xcc, 0x0d, 0x39, 0xd2, 0xb9, 0x3d, 0xa5, 0xd8, 0x7c, 0xda, 0x08, 0x4b, 0xc8, - 0xd7, 0x3c, 0x01, 0xcb, 0x06, 0x70, 0xfb, 0x17, 0x9e, 0xde, 0x41, 0xb4, 0xb3, 0x90, 0xf5, - 0xa8, 0xac, 0x29, 0xbb, 0x87, 0xaa, 0xe9, 0xad, 0xbc, 0x43, 0xa6, 0x8e, 0xea, 0xaa, 0xa7, - 0x04, 0xb9, 0x24, 0x2f, 0xce, 0x41, 0x9a, 0x51, 0x7e, 0xb3, 0xab, 0x44, 0xb4, 0x70, 0x3e, - 0x97, 0x8d, 0xa9, 0x3d, 0x8f, 0x1f, 0x6c, 0x0d, 0x66, 0xc8, 0xb5, 0x32, 0x27, 0xf7, 0x8b, - 0x14, 0x46, 0x95, 0x57, 0x39, 0xdc, 0x57, 0xfb, 0xcc, 0xcd, 0xa7, 0xc9, 0x8b, 0xcb, 0x05, - 0xdc, 0xa0, 0x8d, 0xa2, 0x5d, 0x93, 0x1d, 0x22, 0xf0, 0x36, 0xd8, 0x73, 0x64, 0xe5, 0x5c, - 0x62, 0x4e, 0x76, 0x4e, 0x40, 0xd1, 0x67, 0xff, 0xac, 0xbb, 0x2c, 0x96, 0xb4, 0x5b, 0xa7, - 0xd3, 0xf2, 0x21, 0xec, 0x40, 0xd5, 0x18, 0x60, 0x14, 0x4e, 0x4a, 0xcb, 0x53, 0x02, 0x2c, - 0x68, 0x5e, 0x63, 0x65, 0xe2, 0xf2, 0x68, 0xef, 0x13, 0x07, 0x37, 0x3e, 0x74, 0x3d, 0x5f, - 0x92, 0x04, 0x03, 0x62, 0xa6, 0x9f, 0xbf, 0x8a, 0x45, 0x4f, 0x79, 0xe0, 0xe0, 0x4d, 0x12, - 0xaf, 0xb8, 0x14, 0xcd, 0x8e, 0x67, 0xd8, 0x0b, 0x72, 0x39, 0x15, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfd, 0xe0, 0x1c, 0x9d, 0x33, 0xce, 0xd8, 0x35, 0xb1, 0x54, 0x52, 0xfa, 0x08, - 0x6a, 0xd5, 0x33, 0x91, 0xb2, 0x8c, 0xcd, 0xf0, 0x21, 0x02, 0x06, 0xe3, 0x52, 0x39, 0xf3, - 0xfe, 0xe0, 0x0a, 0xd8, 0x8a, 0xba, 0xa5, 0x82, 0xfa, 0x2d, 0x6c, 0xb9, 0x45, 0xbd, 0x30, - 0x9c, 0xa0, 0xb5, 0x79, 0x3d, 0xc4, 0xce, 0x80, 0x14, 0x37, 0x7b, 0x8f, 0xff, 0x43, 0x70, - 0x1b, 0x62, 0x7c, 0xb1, 0xb4, 0x71, 0xc1, 0x96, 0x9a, 0x22, 0x7a, 0x8b, 0x77, 0x85, 0xde, - 0x0d, 0xed, 0x21, 0x38, 0x99, 0x66, 0x39, 0x62, 0xb4, 0xfd, 0xa7, 0x35, 0x1b, 0xce, 0xd8, - 0x0a, 0x0d, 0x4e, 0xd2, 0x73, 0x4e, 0xcc, 0x6e, 0x9b, 0x32, 0xaa, 0xde, 0x99, 0x0b, 0x7c, - 0x25, 0x53, 0xb7, 0xb1, 0x42, 0xed, 0x38, 0x7a, 0xe2, 0x71, 0x90, 0x2f, 0x1b, 0x7b, 0x86, - 0x4c, 0x6d, 0x00, 0xcc, 0xb1, 0x05, 0xbb, 0xe9, 0xfc, 0x00, 0x37, 0x79, 0x87, 0x59, 0x3c, - 0xda, 0x4a, 0x31, 0xbb, 0x93, 0x86, 0x4a, 0x9b, 0x6e, 0x31, 0x73, 0xf8, 0x65, 0xbd, 0x36, - 0x6b, 0x19, 0x9d, 0x58, 0xae, 0xa0, 0x8a, 0x8c, 0x22, 0xdf, 0xb0, 0xbd, 0x57, 0x9f, 0x38, - 0x7d, 0xf5, 0x43, 0xc3, 0xcd, 0xae, 0xf1, 0xc9, 0xc3, 0x0c, 0x79, 0x70, 0x8e, 0x13, 0xf1, - 0x87, 0xc7, 0x35, 0xef, 0x6c, 0xcc, 0x20, 0xf0, 0xed, 0x0d, 0x2d, 0xba, 0x1c, 0xf4, 0x71, - 0xcc, 0x8c, 0xc6, 0x41, 0x0f, 0xfb, 0xf0, 0xac, 0xd2, 0xa3, 0x51, 0xcd, 0x66, 0xde, 0xb1, - 0xf1, 0x5e, 0xf4, 0x9f, 0x94, 0xdb, 0x58, 0xe7, 0x4f, 0x41, 0x65, 0x46, 0xd2, 0x14, 0x95, - 0x9d, 0x48, 0xca, 0x38, 0x73, 0x87, 0xde, 0x7f, 0x03, 0x70, 0x5b, 0x18, 0xb9, 0x65, 0x8e, - 0x77, 0x2b, 0x51, 0xc7, 0xa0, 0x85, 0xe5, 0x57, 0xd7, 0xcf, 0xf3, 0x76, 0xb0, 0x51, 0xb1, - 0x57, 0x6f, 0x6d, 0x6d, 0xf0, 0x34, 0xa8, 0x81, 0x57, 0xb7, 0x3f, 0xf9, 0x0e, 0xdb, 0xfa, - 0xbe, 0x51, 0x85, 0xf9, 0x94, 0x77, 0x7e, 0x14, 0xe8, 0x81, 0x2d, 0x70, 0xf4, 0x44, 0x1a, - 0x3f, 0xf8, 0xa5, 0x24, 0x73, 0x82, 0xd6, 0xa9, 0xa0, 0x9e, 0x6c, 0x70, 0x94, 0x71, 0x16, - 0x9a, 0x89, 0x12, 0x3e, 0x76, 0xe5, 0x2e, 0x9b, 0x81, 0xae, 0xcd, 0x09, 0xee, 0xc6, 0x71, - 0x1b, 0x7b, 0x52, 0x06, 0xee, 0xbb, 0x5d, 0x6e, 0xe6, 0x94, 0x0f, 0xc6, 0x9b, 0x6d, 0x04, - 0xfe, 0x1a, 0x28, 0x1d, 0x21, 0x77, 0xdc, 0x3f, 0x58, 0x78, 0x48, 0x82, 0x8d, 0xac, 0x47, - 0xa1, 0xa8, 0x4c, 0x2a, 0x8d, 0xf8, 0x45, 0x2a, 0x94, 0x52, 0x26, 0xb0, 0x9b, 0xc0, 0xbe, - 0x5f, 0x0d, 0xd6, 0x37, 0x56, 0x59, 0x35, 0xc3, 0x73, 0x14, 0x9f, 0xcf, 0x10, 0x00, 0x90, - 0x25, 0x8b, 0x15, 0x90, 0xbe, 0xaa, 0x4c, 0x7f, 0x07, 0x43, 0xac, 0xc9, 0x14, 0x18, 0x5c, - 0xac, 0x7f, 0xef, 0xae, 0x52, 0xf8, 0x6b, 0xe9, 0x40, 0xc3, 0x09, 0xe7, 0x07, 0xa6, 0x72, - 0x0a, 0xb5, 0xa5, 0x99, 0x4e, 0x35, 0x98, 0x14, 0x87, 0xd9, 0x8a, 0x65, 0xff, 0x69, 0xe4, - 0xb1, 0x52, 0x11, 0x18, 0xa0, 0x41, 0xad, 0x02, 0x9a, 0xa8, 0x04, 0x66, 0x62, 0xa9, 0xc6, - 0x1a, 0x63, 0x49, 0x77, 0xb5, 0xc2, 0xb8, 0xb3, 0x8a, 0x7c, 0x50, 0x19, 0xc2, 0x30, 0x2a, - 0xb4, 0x6c, 0x0c, 0x02, 0x6b, 0x81, 0x7e, 0xbe, 0x63, 0x5f, 0x1d, 0xf2, 0xff, 0x16, 0x8c, - 0xbc, 0x3e, 0x96, 0x49, 0x71, 0xf2, 0xf9, 0x6e, 0x4a, 0xc8, 0xc3, 0xfe, 0x47, 0xb3, 0x2a, - 0x69, 0x73, 0x3c, 0x8a, 0x95, 0x60, 0x9f, 0xd0, 0x59, 0xc6, 0x8f, 0x35, 0xf7, 0xb9, 0xba, - 0x39, 0xce, 0x38, 0x75, 0x0e, 0xe2, 0x3f, 0x6e, 0x94, 0x47, 0x8f, 0x9f, 0x72, 0x51, 0x7e, - 0xb0, 0xe6, 0x8f, 0x44, 0xef, 0x2a, 0x18, 0xa2, 0xa5, 0x6f, 0x87, 0x6b, 0x44, 0x08, 0x48, - 0x62, 0x65, 0xda, 0x09, 0x27, 0x96, 0x85, 0x51, 0xef, 0x85, 0x8d, 0xf8, 0xdc, 0x5d, 0x66, - 0xf4, 0x3c, 0x6e, 0xd1, 0x61, 0x19, 0x48, 0x22, 0x0c, 0xde, 0xa7, 0x74, 0x3a, 0xc2, 0xfa, - 0xd4, 0xb7, 0x81, 0x2c, 0x85, 0xdc, 0x4a, 0xc2, 0x01, 0xe3, 0xa7, 0x65, 0x19, 0x06, 0xe2, - 0xb6, 0x7b, 0x66, 0x96, 0x40, 0xf2, 0x1a, 0x98, 0x5f, 0x53, 0x29, 0xb4, 0x5f, 0x58, 0x35, - 0xc0, 0x8f, 0x53, 0xcb, 0x34, 0xd2, 0x8b, 0xe4, 0xd5, 0xcb, 0xf3, 0xeb, 0x46, 0x5f, 0x11, - 0x87, 0x33, 0x26, 0x1d, 0x49, 0x23, 0x7c, 0xa6, 0xab, 0xf2, 0x4e, 0xd6, 0x10, 0x2a, 0x8a, - 0x56, 0xbd, 0x36, 0x71, 0x44, 0xb6, 0x4c, 0x58, 0xae, 0xc2, 0x1c, 0x8d, 0x7a, 0x92, 0x74, - 0x66, 0x5c, 0x98, 0x5a, 0x04, 0x28, 0x54, 0xd6, 0xee, 0xb7, 0xed, 0xf7, 0x42, 0x06, 0x98, - 0x0d, 0x57, 0xf0, 0x06, 0x64, 0xf9, 0x63, 0xd0, 0x96, 0xdd, 0x09, 0x7d, 0x8c, 0x40, 0xcf, - 0x64, 0x7a, 0x1a, 0xd0, 0xfb, 0xe4, 0x44, 0xdf, 0x67, 0x87, 0x16, 0xdd, 0x2d, 0xf8, 0x49, - 0x57, 0x08, 0x4d, 0xe8, 0x9b, 0xc0, 0x7c, 0x44, 0xde, 0x34, 0x07, 0x83, 0x8d, 0xe5, 0xee, - 0xf9, 0x0f, 0x7b, 0xfd, 0xea, 0xb0, 0xd8, 0x47, 0x43, 0x63, 0x81, 0xd4, 0xea, 0x87, 0xd0, - 0x6a, 0x2e, 0x6f, 0x0f, 0x02, 0xa1, 0xc8, 0xc3, 0x4e, 0xfb, 0x2b, 0xad, 0x3f, 0x14, 0x06, - 0xf0, 0x68, 0xd2, 0xa9, 0xa9, 0xac, 0x62, 0x18, 0xfb, 0x29, 0xf1, 0x30, 0xe0, 0x71, 0x2a, - 0xc6, 0x53, 0xdd, 0x70, 0x42, 0x22, 0x7e, 0xf3, 0x60, 0x86, 0xe9, 0xe1, 0x9e, 0x69, 0x81, - 0x36, 0x69, 0xc3, 0x81, 0x8a, 0x9e, 0xeb, 0x44, 0xf2, 0x9b, 0x6c, 0x8f, 0x77, 0x03, 0xad, - 0xe7, 0x7d, 0xee, 0x1d, 0x12, 0xe2, 0x9a, 0x86, 0x28, 0x3c, 0x6d, 0xca, 0x16, 0x43, 0x6e, - 0x90, 0x42, 0x4e, 0x50, 0x65, 0xc5, 0xd2, 0xe1, 0xb0, 0xdf, 0xb9, 0x1c, 0x6c, 0x3a, 0xb1, - 0x65, 0x8e, 0xe7, 0x7b, 0xd7, 0xe0, 0x37, 0x44, 0x2c, 0x3e, 0x52, 0xc1, 0xbf, 0x24, 0x93, - 0xcc, 0x24, 0x3b, 0x22, 0x6b, 0x01, 0x75, 0x40, 0xce, 0x22, 0xe5, 0x0b, 0xd2, 0xa0, 0x3e, - 0xa5, 0xb8, 0x0c, 0x6a, 0x43, 0x9a, 0x06, 0x68, 0x3c, 0x62, 0x21, 0x8c, 0x13, 0x2e, 0xe0, - 0x79, 0x87, 0x25, 0x25, 0xc3, 0xe6, 0x60, 0x71, 0x33, 0x80, 0x29, 0xe3, 0xf7, 0x7b, 0x04, - 0xc4, 0x71, 0xbb, 0x5b, 0xbc, 0xed, 0xe4, 0x0b, 0x15, 0xa7, 0x33, 0xcd, 0x91, 0x1a, 0xf5, - 0xb9, 0xb5, 0xbe, 0xe0, 0x24, 0x71, 0xa3, 0xc4, 0x37, 0x34, 0xfe, 0xd2, 0x9f, 0xde, 0xb1, - 0x8d, 0xef, 0xaf, 0x0d, 0x3c, 0xd0, 0x0c, 0xd1, 0xb8, 0xc6, 0x00, 0x7d, 0xfa, 0x54, 0x82, - 0x17, 0x5a, 0x1e, 0xe3, 0x29, 0xad, 0x9a, 0x7e, 0xf1, 0x73, 0xe8, 0xd8, 0x33, 0x89, 0x68, - 0x7b, 0xae, 0xd2, 0xec, 0xf5, 0xaa, 0x4f, 0x48, 0xfa, 0xe7, 0x12, 0x54, 0xc9, 0x71, 0xc9, - 0xae, 0xa4, 0x85, 0xaa, 0x0e, 0x0a, 0xd4, 0x3d, 0x74, 0xe9, 0xc1, 0xcf, 0xcc, 0xd1, 0x71, - 0x98, 0x3a, 0xde, 0xa2, 0xf0, 0x80, 0xe1, 0xfc, 0x21, 0xf8, 0x65, 0x03, 0x72, 0xd6, 0xb6, - 0x27, 0x22, 0xf8, 0xa8, 0x20, 0x8c, 0x76, 0x94, 0x95, 0x8c, 0x47, 0x0a, 0x2a, 0x15, 0x0d, - 0x15, 0xc9, 0x10, 0xbf, 0xba, 0xd9, 0x4c, 0xc6, 0xc9, 0xe3, 0x73, 0xa4, 0xc0, 0xd7, 0x4b, - 0x55, 0xa8, 0x1f, 0x5e, 0x34, 0x30, 0x22, 0x21, 0x02, 0x4f, 0x21, 0x24, 0x80, 0xfe, 0x7b, - 0x1d, 0x6e, 0x35, 0x4e, 0x42, 0xf4, 0x85, 0x5f, 0x0e, 0xac, 0x89, 0x6c, 0xd1, 0x0f, 0x68, - 0x89, 0x8e, 0xdf, 0x3d, 0xc2, 0xcd, 0xf1, 0xe0, 0x31, 0x71, 0xd1, 0xfb, 0xda, 0xcb, 0xc9, - 0xf1, 0xdf, 0x99, 0xbd, 0xef, 0x1c, 0xb4, 0xe9, 0xdb, 0x03, 0x25, 0x0f, 0x9f, 0xfa, 0xd6, - 0x33, 0x69, 0x91, 0xdf, 0xff, 0x8b, 0xb8, 0x7e, 0xa0, 0xfe, 0x3b, 0x2a, 0xbc, 0x36, 0x8a, - 0xbd, 0x04, 0x9f, 0x3d, 0x60, 0xd9, 0xd5, 0x45, 0x9f, 0x27, 0x71, 0x37, 0x5c, 0xce, 0x4c, - 0x72, 0x1b, 0xc8, 0x62, 0x84, 0x43, 0xf3, 0x4f, 0xbb, 0x68, 0x12, 0xe4, 0x02, 0xe1, 0x29, - 0x50, 0xb4, 0xc9, 0xa1, 0x07, 0x47, 0x4e, 0xd6, 0xe1, 0x8d, 0x16, 0xa0, 0x06, 0x32, 0x93, - 0x2b, 0xd6, 0x57, 0xd0, 0xc2, 0x7b, 0x1f, 0xda, 0x17, 0x61, 0xb8, 0xc6, 0xaf, 0x73, 0xb1, - 0xf7, 0x79, 0x19, 0x6b, 0xbd, 0xeb, 0x0c, 0xe8, 0xf0, 0x17, 0xc6, 0xf5, 0x23, 0xc0, 0xe0, - 0xc9, 0xa5, 0xa5, 0xdb, 0x62, 0x84, 0xa8, 0x2e, 0x10, 0x63, 0xb9, 0x67, 0x5e, 0xe7, 0x39, - 0xac, 0x1e, 0x66, 0xcf, 0x95, 0x16, 0x21, 0x6c, 0x50, 0x6a, 0xca, 0x35, 0x39, 0x7f, 0xb5, - 0xf7, 0x32, 0x1a, 0xdc, 0x10, 0xf5, 0xec, 0x62, 0xc5, 0x7b, 0x23, 0xce, 0x65, 0xd5, 0xc6, - 0x2f, 0x91, 0x05, 0x3c, 0xb1, 0x36, 0xa7, 0x3c, 0x2e, 0x22, 0xef, 0xe8, 0x39, 0x40, 0xe0, - 0x58, 0xe7, 0x6b, 0xa2, 0x47, 0x61, 0x9a, 0xc9, 0x7e, 0x7a, 0xd0, 0x93, 0x53, 0x96, 0x0a, - 0xff, 0x16, 0x3f, 0x4a, 0xe1, 0xb0, 0xee, 0xbe, 0xd1, 0x70, 0x6e, 0x79, 0x8b, 0x44, 0x58, - 0x2f, 0xaf, 0xb4, 0xf3, 0x99, 0xff, 0x61, 0x07, 0xd9, 0xd3, 0xf9, 0xab, 0x64, 0x4d, 0x76, - 0x41, 0xe2, 0x18, 0xc7, 0x27, 0xe1, 0xfb, 0x31, 0x6d, 0xfe, 0x12, 0x4b, 0x69, 0x0c, 0x1b, - 0x52, 0xa1, 0x96, 0xd3, 0x99, 0xce, 0x8d, 0x99, 0x8f, 0x25, 0x87, 0x5a, 0x44, 0x41, 0x81, - 0xb7, 0x18, 0xb0, 0x8e, 0x55, 0x31, 0xbc, 0xd2, 0xb7, 0xa4, 0x3c, 0x93, 0x6d, 0xe0, 0x78, - 0xcf, 0xdf, 0xb5, 0xd6, 0x85, 0x1e, 0x9d, 0x13, 0xa4, 0x4d, 0xf8, 0x64, 0xb0, 0xc8, 0x5c, - 0xb8, 0xa3, 0xf1, 0x16, 0x2b, 0xd9, 0x3d, 0xf9, 0xd1, 0x96, 0xc1, 0x00, 0xd6, 0x52, 0x94, - 0x46, 0x16, 0x47, 0xbd, 0x36, 0x90, 0xfb, 0x01, 0xf4, 0xe5, 0xeb, 0xe2, 0x3f, 0x28, 0xf4, - 0xc2, 0x57, 0xb3, 0x62, 0x22, 0x98, 0x94, 0x03, 0xe7, 0x76, 0x65, 0x31, 0x83, 0x09, 0x2b, - 0x3e, 0x89, 0xeb, 0x2f, 0x06, 0x5d, 0x85, 0xca, 0xc5, 0x3c, 0x65, 0xd2, 0x75, 0xfb, 0x84, - 0xb3, 0xf9, 0x8f, 0x1e, 0x40, 0xf5, 0x67, 0xe8, 0x0d, 0x74, 0x10, 0xc3, 0x62, 0xc7, 0xec, - 0xbc, 0xbd, 0xe4, 0xa5, 0x8a, 0xcb, 0x59, 0xbe, 0xb6, 0xcf, 0x91, 0x56, 0x37, 0x5b, 0x96, - 0xe8, 0xf4, 0x8f, 0x88, 0xe1, 0x58, 0x18, 0x4f, 0x75, 0xe5, 0xf4, 0x85, 0xe1, 0x59, 0x4b, - 0xad, 0x2a, 0x2b, 0xb6, 0x66, 0xc7, 0x82, 0xf6, 0xde, 0xa4, 0xf8, 0x51, 0xd1, 0xb3, 0x18, - 0x6c, 0x39, 0xd3, 0x3a, 0xd1, 0x56, 0x38, 0x6a, 0x20, 0xd3, 0x1a, 0x98, 0x01, 0x8d, 0x7e, - 0xe0, 0x2a, 0x06, 0x7d, 0x33, 0x95, 0xf5, 0x6f, 0x37, 0x04, 0x3e, 0x88, 0xda, 0xed, 0xf8, - 0x00, 0xa3, 0xa9, 0x8a, 0x14, 0x47, 0x07, 0xba, 0x04, 0x16, 0xa4, 0x2a, 0xc0, 0xb8, 0x26, - 0xa2, 0x9d, 0x96, 0x61, 0xd5, 0x66, 0x16, 0x52, 0x58, 0x1a, 0xf4, 0x06, 0x78, 0x3f, 0x6c, - 0xab, 0xce, 0xe7, 0x63, 0xd0, 0x08, 0xa5, 0x2b, 0xa8, 0x85, 0xe5, 0xc6, 0x7b, 0xa3, 0x26, - 0x97, 0x67, 0x4f, 0x57, 0xdc, 0xf4, 0x42, 0xc4, 0x94, 0x0e, 0x18, 0x80, 0x3c, 0xf5, 0xa5, - 0x21, 0xb4, 0x7a, 0x66, 0xbf, 0xab, 0xf1, 0xe9, 0x99, 0xfd, 0x62, 0x9a, 0xb5, 0x22, 0xe1, - 0x09, 0x17, 0x85, 0x81, 0x43, 0x97, 0x4d, 0x9a, 0x96, 0x9a, 0x28, 0x9d, 0x93, 0x65, 0xe4, - 0xdd, 0xa9, 0x24, 0x12, 0x45, 0x61, 0x7a, 0x41, 0x7f, 0xbc, 0x3a, 0x9e, 0xca, 0x17, 0x41, - 0x45, 0x76, 0x6a, 0x08, 0x97, 0x40, 0xa2, 0xaf, 0x58, 0xbe, 0xe4, 0x80, 0x84, 0x60, 0x14, - 0xad, 0x01, 0x31, 0xe1, 0x1b, 0xe1, 0xa7, 0x33, 0xb2, 0x1e, 0xc8, 0x96, 0xa3, 0xf5, 0x41, - 0x98, 0xf9, 0xab, 0xb4, 0xa5, 0xa7, 0x5c, 0x00, 0x80, 0x45, 0x27, 0xaf, 0xef, 0xfe, 0x0c, - 0xd2, 0xe7, 0x22, 0xbb, 0x3d, 0x83, 0x2f, 0x24, 0x84, 0xca, 0xea, 0x22, 0xa3, 0xab, 0x6b, - 0x0b, 0xf4, 0x07, 0xfa, 0x5e, 0xf1, 0x9a, 0x52, 0x57, 0xf1, 0xa5, 0xce, 0x59, 0xad, 0xa0, - 0xf3, 0x0a, 0x69, 0x7a, 0xb4, 0xc9, 0xe7, 0x61, 0x1a, 0xf3, 0xaa, 0x32, 0x64, 0x01, 0x69, - 0xdf, 0x8a, 0x7d, 0xe5, 0x57, 0x59, 0x86, 0x7d, 0x9c, 0x53, 0x1d, 0xfd, 0xdd, 0xf9, 0x53, - 0xa4, 0xa6, 0x9f, 0x35, 0x5f, 0x6d, 0x08, 0x02, 0x82, 0x5a, 0xb7, 0xc8, 0x77, 0x11, 0x91, - 0x83, 0xa1, 0x42, 0x73, 0x24, 0x22, 0x1e, 0xfb, 0x21, 0xa0, 0x97, 0x2a, 0x47, 0xcd, 0x0f, - 0xe1, 0x09, 0xa7, 0xe3, 0x74, 0x90, 0x7a, 0x80, 0x4c, 0xb0, 0x67, 0x33, 0x5e, 0x5a, 0x60, - 0x62, 0xe1, 0x7f, 0x6e, 0x49, 0xca, 0x89, 0xe3, 0xb9, 0x7e, 0x51, 0xe1, 0x61, 0xb1, 0xb0, - 0x08, 0xae, 0xff, 0x38, 0x69, 0x50, 0xf7, 0x3b, 0x26, 0xd2, 0xc3, 0x3a, 0x43, 0x58, 0x9b, - 0xca, 0xdd, 0x60, 0xa3, 0x4b, 0x28, 0x59, 0x6f, 0x55, 0xcb, 0x9e, 0xa0, 0x75, 0xdc, 0x86, - 0xb8, 0x28, 0x0e, 0xc0, 0x4f, 0x0a, 0x64, 0x81, 0x67, 0x21, 0x8a, 0x4f, 0x24, 0x74, 0xa7, - 0xde, 0x0b, 0x09, 0x73, 0x4b, 0x99, 0x5d, 0x65, 0x14, 0xd6, 0xfe, 0xe7, 0xaa, 0x97, 0xc5, - 0x71, 0x89, 0xe5, 0x40, 0x5a, 0xda, 0x73, 0x40, 0xe9, 0x1c, 0xd0, 0x0c, 0x18, 0xcc, 0x40, - 0xb4, 0xf2, 0xeb, 0x74, 0x42, 0xdb, 0xf6, 0x2e, 0xc9, 0x53, 0xe4, 0x08, 0x36, 0x78, 0x46, - 0x38, 0x5f, 0x49, 0xd3, 0xd7, 0x0a, 0x19, 0x75, 0x55, 0x12, 0x8f, 0xde, 0x6c, 0x2b, 0xbc, - 0x7e, 0xa6, 0x99, 0x89, 0x16, 0x7a, 0xb0, 0x57, 0x7e, 0x54, 0xfe, 0x35, 0xc2, 0x11, 0x16, - 0xa2, 0xb1, 0x41, 0x5a, 0xfa, 0x9c, 0x53, 0x93, 0x30, 0x7d, 0x4a, 0xa3, 0x50, 0x76, 0xb2, - 0x31, 0xfb, 0xad, 0x90, 0x49, 0x79, 0xb0, 0x26, 0x43, 0x53, 0x1a, 0x5c, 0x6c, 0x7b, 0x31, - 0x16, 0x6a, 0x28, 0x2e, 0x76, 0x6b, 0xd2, 0xc4, 0x0e, 0x06, 0xbc, 0x3d, 0xea, 0x81, 0xcd, - 0x0d, 0x6b, 0x1f, 0xbe, 0xb4, 0xd0, 0xcc, 0xa3, 0xc6, 0x83, 0xae, 0x91, 0xac, 0x19, 0x4a, - 0x6b, 0x20, 0xf8, 0x6c, 0x22, 0x6c, 0x25, 0x92, 0x72, 0x0b, 0xdf, 0x88, 0x24, 0xcb, 0xc5, - 0x6b, 0x5a, 0xf9, 0xc5, 0x10, 0xeb, 0x5b, 0x63, 0xf9, 0x6d, 0x7a, 0x3c, 0x53, 0x72, 0x5f, - 0x9d, 0xa2, 0x92, 0x2a, 0x02, 0xf9, 0x6e, 0xf4, 0xed, 0x1c, 0x64, 0xb6, 0x80, 0x3a, 0x28, - 0x22, 0x0a, 0xeb, 0x34, 0xa5, 0x88, 0x01, 0xb6, 0x4d, 0xcd, 0x62, 0xf8, 0xdd, 0xd4, 0x87, - 0x7f, 0xfc, 0x69, 0xa5, 0xd7, 0xbc, 0xe2, 0xf5, 0xfa, 0x4b, 0x28, 0x52, 0x86, 0xca, 0xda, - 0x88, 0x1e, 0x9e, 0xe5, 0xd9, 0x3b, 0x12, 0xcc, 0x26, 0xa5, 0x42, 0x82, 0xcd, 0x29, 0x51, - 0x30, 0xf4, 0x08, 0x83, 0xd3, 0x53, 0x8d, 0x8f, 0x68, 0xe2, 0xc0, 0xdf, 0x89, 0xfd, 0x38, - 0xf6, 0xcb, 0x5a, 0x19, 0x63, 0x5c, 0x75, 0x60, 0x38, 0x32, 0x28, 0x0c, 0x19, 0x13, 0xfd, - 0xcf, 0xd1, 0xc9, 0xd6, 0xe3, 0x41, 0xaa, 0x8b, 0x4c, 0x37, 0x0c, 0x6a, 0xc7, 0x36, 0x22, - 0xcf, 0x73, 0x22, 0x62, 0x00, 0x09, 0x5c, 0x17, 0x85, 0x9f, 0xff, 0x1c, 0x15, 0x48, 0x9e, - 0x9e, 0x51, 0x7a, 0x7b, 0x43, 0x1b, 0xbc, 0x7b, 0x55, 0xd1, 0xdf, 0x74, 0xbd, 0x7f, 0x29, - 0xcc, 0x79, 0x99, 0x91, 0x62, 0xa1, 0xf3, 0x42, 0x3f, 0x6d, 0xb1, 0xf4, 0xa3, 0xf4, 0x22, - 0x00, 0x60, 0x0a, 0xbf, 0xff, 0x3c, 0xe4, 0x51, 0x49, 0x9b, 0x50, 0x5f, 0x58, 0x2b, 0xec, - 0xd1, 0x19, 0x8a, 0x9b, 0xd1, 0x6d, 0xb5, 0x06, 0xb0, 0xfd, 0x17, 0x7a, 0xa5, 0xa8, 0x40, - 0xaf, 0x1f, 0xf5, 0x81, 0x33, 0x5d, 0xc2, 0xfc, 0x61, 0xa3, 0xf9, 0xe4, 0xfe, 0xf0, 0x3e, - 0xca, 0x50, 0x0d, 0xbe, 0x8a, 0xe7, 0x2e, 0x09, 0x9d, 0x47, 0xd8, 0x55, 0xc5, 0x2c, 0x4c, - 0x35, 0x0a, 0x41, 0x0f, 0x9b, 0xf1, 0x85, 0xf8, 0xa5, 0xf2, 0x3f, 0xd0, 0x3a, 0xfa, 0x8d, - 0x8b, 0xb7, 0xad, 0x2b, 0x6d, 0xb8, 0xd0, 0xa4, 0x2d, 0x1a, 0x7b, 0x6e, 0x26, 0x56, 0xd6, - 0x97, 0x23, 0xe5, 0xf9, 0xd7, 0x37, 0xb1, 0xac, 0xf5, 0x13, 0xa6, 0x15, 0x9e, 0x66, 0x8b, - 0xae, 0x56, 0xbb, 0x1c, 0x8e, 0x80, 0x9e, 0x25, 0x27, 0x9c, 0x96, 0xf9, 0x58, 0x3a, 0x3f, - 0xdb, 0x7a, 0x19, 0xc4, 0x40, 0xec, 0xd0, 0x19, 0xce, 0x2b, 0xc8, 0x68, 0xd8, 0xc9, 0xec, - 0x0e, 0xe5, 0xf1, 0xef, 0x18, 0x50, 0xc4, 0xc9, 0xef, 0x65, 0xef, 0xfd, 0x34, 0x8a, 0xd2, - 0x74, 0xdd, 0xbd, 0x6c, 0x8c, 0xd7, 0xe2, 0xe1, 0xe6, 0x0f, 0x1c, 0xc4, 0x6a, 0x5e, 0xc7, - 0x3a, 0xfc, 0x17, 0x7e, 0xb5, 0x0d, 0x7b, 0x53, 0xfc, 0x0e, 0x45, 0xcc, 0x8e, 0xb5, 0x9d, - 0x3b, 0x6e, 0x5e, 0x48, 0x11, 0x54, 0x32, 0x3a, 0xe2, 0x90, 0x90, 0x22, 0x8c, 0x5e, 0xcf, - 0xff, 0xad, 0xcc, 0x5c, 0x98, 0x36, 0xe0, 0xce, 0x21, 0xb9, 0x64, 0xd2, 0x39, 0xc6, 0xdd, - 0xee, 0x09, 0xdd, 0xda, 0x61, 0x2e, 0xd3, 0x89, 0xac, 0xef, 0xc1, 0xb1, 0x7a, 0x1b, 0xf7, - 0xc1, 0xa0, 0x89, 0xb8, 0xc0, 0x20, 0x65, 0xfa, 0xfb, 0x52, 0xf8, 0x3b, 0x0c, 0xba, 0x5e, - 0x4a, 0x10, 0xd1, 0x73, 0x78, 0xcb, 0x2c, 0x90, 0x90, 0x82, 0xab, 0x8e, 0xc2, 0x0c, 0x43, - 0x35, 0x63, 0x85, 0x6c, 0x2c, 0xe0, 0x00, 0x9b, 0xbb, 0xb3, 0x3b, 0x7c, 0xe3, 0xc7, 0x5c, - 0x82, 0xce, 0x9f, 0xb5, 0xb7, 0xb6, 0xa2, 0xbb, 0x7b, 0x1c, 0xa4, 0xa3, 0x7d, 0xa4, 0x66, - 0x9e, 0x78, 0x0c, 0x20, 0x50, 0x65, 0x15, 0x06, 0xe0, 0x7d, 0x6d, 0x8e, 0x4b, 0x60, 0xbd, - 0xba, 0x0e, 0xc8, 0x5f, 0xaf, 0x40, 0x80, 0x91, 0xae, 0x58, 0x7a, 0xdc, 0x21, 0x2d, 0x12, - 0x19, 0x9e, 0x00, 0x84, 0x00, 0xa2, 0xc3, 0x36, 0xd9, 0xcd, 0xe2, 0xd5, 0x05, 0x09, 0x98, - 0x44, 0x75, 0xa0, 0xce, 0x3c, 0x79, 0x11, 0x3b, 0x7a, 0x5a, 0x19, 0xa6, 0xbc, 0x92, 0x08, - 0xea, 0x70, 0xd5, 0xdd, 0x13, 0x8c, 0x23, 0x6c, 0xb6, 0xca, 0xc5, 0x83, 0x90, 0xca, 0xba, - 0x40, 0x6e, 0xf2, 0x7e, 0x5b, 0x65, 0x08, 0xf3, 0x54, 0xeb, 0xa4, 0x35, 0xe2, 0xb2, 0xab, - 0x9d, 0x95, 0x54, 0x48, 0xb6, 0x21, 0x3d, 0x57, 0x00, 0xd0, 0xc0, 0x4b, 0xb6, 0xf4, 0x9a, - 0x37, 0x1a, 0x07, 0x2d, 0x3f, 0x6a, 0x92, 0xec, 0xf5, 0xa4, 0xaa, 0xc3, 0xa2, 0x2a, 0x65, - 0x67, 0x67, 0x17, 0x1f, 0xc3, 0x0f, 0x6f, 0xee, 0xce, 0x96, 0x1d, 0x13, 0xa5, 0x52, 0x07, - 0x16, 0x9c, 0x28, 0xea, 0xc8, 0xd4, 0x82, 0x33, 0x14, 0x83, 0xaa, 0xc6, 0xaf, 0x31, 0x9f, - 0xab, 0xd2, 0xe6, 0x4d, 0x2e, 0x00, 0xde, 0x7c, 0x42, 0x3e, 0x77, 0xa2, 0x0f, 0x71, 0xe9, - 0xef, 0xda, 0xe5, 0xc0, 0xd2, 0xdf, 0xb7, 0x5e, 0x7c, 0xf3, 0x4d, 0xb3, 0xb8, 0xa4, 0xad, - 0xa4, 0x0b, 0x27, 0x64, 0xdb, 0x43, 0x2d, 0x81, 0x84, 0x47, 0x02, 0x14, 0x9d, 0x7a, 0x1f, - 0x59, 0x42, 0xc7, 0x17, 0x29, 0xb5, 0xc2, 0x31, 0xac, 0x0f, 0x29, 0x39, 0xee, 0x09, 0x98, - 0x0b, 0xfe, 0x4f, 0xe8, 0xb6, 0x51, 0xe3, 0x09, 0xe2, 0x6d, 0x6d, 0x89, 0xf2, 0x1e, 0xe1, - 0x9b, 0x0e, 0x74, 0x9a, 0x73, 0x4c, 0x2f, 0x51, 0x07, 0x50, 0x10, 0xa3, 0x78, 0xbb, 0x36, - 0x77, 0x81, 0x76, 0xea, 0x1b, 0x47, 0x90, 0x86, 0x50, 0xc5, 0xf3, 0x03, 0xc2, 0x2e, 0x51, - 0xf8, 0x4e, 0x13, 0x2a, 0xe8, 0x12, 0x7c, 0xa6, 0x5f, 0xdd, 0xb1, 0x55, 0x97, 0x44, 0x12, - 0xb3, 0xbe, 0xc4, 0x1a, 0x87, 0x33, 0x84, 0x23, 0xcc, 0x95, 0xc3, 0x96, 0xf6, 0xb7, 0x90, - 0x90, 0x14, 0x75, 0x13, 0xe0, 0x3a, 0x4b, 0x83, 0x1e, 0x88, 0x5c, 0x4f, 0x09, 0x5d, 0xf6, - 0xfc, 0x15, 0x09, 0xc1, 0xc9, 0xdf, 0x24, 0xe8, 0x8a, 0xa1, 0x2a, 0x36, 0x2e, 0x26, 0xf9, - 0x8e, 0xaa, 0x3a, 0x1c, 0x3d, 0x03, 0x99, 0x07, 0x22, 0xae, 0xe6, 0x75, 0x7b, 0x69, 0x41, - 0x67, 0xf2, 0x8f, 0x44, 0x7b, 0x5f, 0x19, 0xb7, 0x4b, 0x7c, 0xe2, 0x9e, 0xcc, 0x1a, 0xdb, - 0x1d, 0x4e, 0x92, 0xd8, 0xbf, 0x6f, 0xad, 0x0a, 0xc4, 0x2f, 0x2d, 0x74, 0x70, 0x13, 0x5d, - 0x15, 0xdd, 0x19, 0xba, 0x20, 0xf7, 0x24, 0xa9, 0x9f, 0x50, 0xfc, 0x36, 0xba, 0x3e, 0x4f, - 0x46, 0x62, 0xbf, 0x3d, 0xd4, 0x9b, 0x83, 0x8d, 0x73, 0xca, 0xd7, 0x16, 0x24, 0x1f, 0x26, - 0xce, 0xb6, 0x86, 0xbc, 0x5c, 0xe3, 0x08, 0x50, 0x14, 0x83, 0x34, 0xc5, 0x9e, 0xd3, 0x1a, - 0x42, 0xd9, 0xd1, 0x92, 0xbc, 0x5d, 0x2d, 0x6e, 0x0e, 0x13, 0x98, 0x2c, 0xbb, 0x14, 0x62, - 0x95, 0x0d, 0xe6, 0x25, 0xcb, 0xb7, 0x8e, 0xc7, 0xa2, 0x9f, 0xcc, 0x39, 0xe0, 0x79, 0x40, - 0xad, 0x06, 0x56, 0xe6, 0xbf, 0x42, 0x07, 0x4f, 0x70, 0x18, 0x3e, 0x08, 0x39, 0x44, 0xd3, - 0x19, 0xd5, 0x7c, 0xe9, 0xba, 0x51, 0xff, 0x66, 0x7c, 0x76, 0x93, 0xf6, 0x83, 0xb9, 0xb5, - 0x53, 0x62, 0xe6, 0x53, 0xb5, 0x84, 0x2f, 0xc4, 0x5e, 0xa1, 0xc1, 0x64, 0x08, 0x7b, 0x27, - 0x43, 0x7c, 0x30, 0x6a, 0x07, 0xa6, 0x5c, 0xd0, 0xa3, 0x0e, 0xbe, 0x6a, 0xea, 0xcc, 0xdc, - 0x5f, 0xce, 0x4e, 0xf9, 0x0d, 0xbc, 0x15, 0xd5, 0xfe, 0x7f, 0x48, 0x51, 0x84, 0xcd, 0x6a, - 0xfa, 0x30, 0x7f, 0x7b, 0x34, 0x9d, 0xff, 0x47, 0x19, 0xe6, 0x47, 0xca, 0xa2, 0xcf, 0x42, - 0x71, 0x54, 0xa0, 0x9f, 0x88, 0xfb, 0x3a, 0x5e, 0x6d, 0x54, 0x77, 0xbb, 0x95, 0xb5, 0x6c, - 0xc4, 0xb4, 0x82, 0xe1, 0x80, 0x37, 0x23, 0xa5, 0xce, 0xd5, 0x4f, 0xbc, 0xd9, 0x7f, 0xce, - 0x32, 0x47, 0xe2, 0xd2, 0x0f, 0x8e, 0x33, 0xd7, 0xfc, 0x5d, 0xde, 0x7d, 0xf4, 0x1d, 0x12, - 0x17, 0x2e, 0x04, 0x7b, 0xbf, 0xeb, 0x52, 0xce, 0x16, 0xc2, 0x86, 0x78, 0xb9, 0x24, 0x04, - 0xc4, 0x52, 0x5c, 0x38, 0x25, 0x91, 0xde, 0x84, 0x0d, 0x06, 0x7c, 0xd2, 0x0e, 0xd7, 0x51, - 0xde, 0x80, 0x1e, 0xab, 0xa8, 0x84, 0x58, 0x33, 0xaa, 0xa6, 0x2c, 0x1b, 0x93, 0x14, 0x5e, - 0x09, 0xfe, 0x50, 0x43, 0xda, 0x1f, 0x67, 0xb4, 0x58, 0x50, 0xd5, 0xea, 0x58, 0x1a, 0xd7, - 0x38, 0x1f, 0x2d, 0x91, 0x97, 0xd4, 0xca, 0x68, 0x08, 0xe7, 0xe9, 0x59, 0x00, 0x82, 0x63, - 0x0f, 0x10, 0x5d, 0x0f, 0xd4, 0x78, 0xa3, 0xca, 0xf7, 0x16, 0x2c, 0x74, 0x7d, 0xba, 0xb7, - 0x2f, 0xb5, 0x64, 0xdc, 0x06, 0x11, 0xd8, 0x1f, 0x8b, 0x0f, 0x29, 0xb2, 0x14, 0xe9, 0x17, - 0x2e, 0xdf, 0x0a, 0x30, 0x8d, 0xa2, 0x68, 0x4b, 0x1b, 0x48, 0x6b, 0x65, 0x1c, 0x0c, 0xec, - 0xfb, 0x76, 0x6b, 0x8e, 0x03, 0xa4, 0x63, 0x63, 0x8a, 0xeb, 0x52, 0x3f, 0x3c, 0xfc, 0xc3, - 0xfe, 0x24, 0xfd, 0x26, 0x43, 0x84, 0xe4, 0x1b, 0x0e, 0xf6, 0xa2, 0xf3, 0x1c, 0x45, 0x29, - 0x35, 0x0a, 0x6a, 0xdd, 0x82, 0x8d, 0xbd, 0x7d, 0x4d, 0xcc, 0xca, 0x51, 0xe4, 0xb5, 0x7b, - 0x43, 0x6a, 0x7d, 0x32, 0xa3, 0x33, 0xc6, 0x22, 0x61, 0xf9, 0xa1, 0x01, 0xcc, 0xd9, 0x26, - 0x68, 0x51, 0xc9, 0xc1, 0x49, 0xbc, 0x14, 0x70, 0x8c, 0xf9, 0x13, 0xf8, 0xf1, 0x9c, 0x5b, - 0xf4, 0x49, 0xe9, 0xa8, 0x15, 0x09, 0xbe, 0x0e, 0x78, 0x1a, 0x64, 0xc5, 0x53, 0x99, 0x67, - 0xc6, 0xd8, 0x8c, 0xe1, 0x57, 0xd7, 0x5d, 0x49, 0x7d, 0x3e, 0xda, 0xef, 0x9e, 0xd3, 0x0a, - 0xfc, 0x87, 0xbb, 0x5e, 0x26, 0x41, 0xcc, 0x38, 0x04, 0x44, 0x22, 0x63, 0x4a, 0x75, 0x4a, - 0x08, 0xf1, 0xc2, 0x6b, 0x15, 0x0c, 0x98, 0xe4, 0xa1, 0x14, 0xd6, 0xc0, 0xd3, 0xa6, 0x6c, - 0xcb, 0x8c, 0xb4, 0x8d, 0x94, 0x89, 0x6c, 0x44, 0x81, 0x0c, 0x73, 0x73, 0xfb, 0xb5, 0xa7, - 0x2f, 0xfc, 0x48, 0x86, 0x17, 0x3f, 0x1c, 0x56, 0xe1, 0x25, 0x72, 0xfd, 0x9d, 0xa5, 0xd0, - 0xce, 0x64, 0x91, 0xaa, 0x7d, 0xc9, 0xe0, 0x8b, 0x5d, 0xfe, 0x3b, 0x1e, 0xd8, 0x5a, 0x2b, - 0xe1, 0x9b, 0x09, 0x79, 0xfa, 0xcd, 0xa1, 0x23, 0xc2, 0x96, 0x54, 0xc6, 0x66, 0x5e, 0x75, - 0x63, 0x37, 0xa5, 0x99, 0x78, 0x25, 0xe2, 0xff, 0xbc, 0x50, 0x01, 0xb9, 0x64, 0x0d, 0x10, - 0x53, 0xb5, 0xd9, 0xf2, 0x54, 0xa6, 0x33, 0x2e, 0xf3, 0x7e, 0xda, 0xf7, 0x27, 0x0e, 0xdf, - 0x3c, 0x6a, 0xd4, 0x1b, 0x2b, 0x33, 0x69, 0x3a, 0x00, 0xde, 0x17, 0x1b, 0x36, 0x4d, 0x80, - 0x04, 0x27, 0x7f, 0x43, 0x5a, 0x14, 0xf7, 0xea, 0x77, 0xd3, 0x67, 0x29, 0x0a, 0x2e, 0x72, - 0x0f, 0xdf, 0x76, 0x14, 0xa6, 0xee, 0x9f, 0x2b, 0x6a, 0x19, 0xc9, 0x23, 0xce, 0x2b, 0x98, - 0xa0, 0x2d, 0x29, 0x83, 0xf4, 0x6c, 0xcb, 0x65, 0xa7, 0x51, 0x03, 0xf8, 0x85, 0xc3, 0xf7, - 0xe7, 0xa0, 0xe1, 0x76, 0xaa, 0x91, 0x75, 0x65, 0x46, 0x70, 0x3a, 0xb0, 0xe3, 0x13, 0x41, - 0x2b, 0x24, 0x64, 0xbb, 0x1d, 0x96, 0x36, 0xdb, 0xac, 0x20, 0x01, 0x4b, 0x51, 0x79, 0x09, - 0xe4, 0x2a, 0x74, 0x7d, 0x8f, 0x12, 0xe3, 0x85, 0xaa, 0xfa, 0xa6, 0x17, 0xf8, 0x6a, 0x48, - 0xc1, 0x5a, 0x57, 0x7e, 0x56, 0x89, 0x25, 0xa3, 0xa2, 0xdb, 0xc8, 0xc2, 0xf7, 0x3a, 0xa3, - 0x80, 0x4c, 0x65, 0xb0, 0xa5, 0xf1, 0x69, 0x52, 0xb2, 0x9a, 0xf0, 0xd1, 0x3a, 0x7a, 0x59, - 0x76, 0xb1, 0x3a, 0x22, 0xc1, 0xe1, 0x3f, 0x8a, 0x17, 0xdf, 0x3a, 0xec, 0x99, 0x0a, 0xa0, - 0x95, 0xe5, 0x7c, 0x83, 0x53, 0xdc, 0x8b, 0x2b, 0xb6, 0xdf, 0x6f, 0xd0, 0x19, 0x03, 0xa5, - 0x7d, 0xd5, 0x8c, 0xba, 0x72, 0xcc, 0xe4, 0x72, 0x62, 0x0a, 0x3a, 0x3a, 0x8c, 0x02, 0x4f, - 0xb8, 0xf0, 0x11, 0xcd, 0x03, 0x05, 0x3f, 0x25, 0x1f, 0x6e, 0xb3, 0x7d, 0xe3, 0xcf, 0x42, - 0x32, 0x5f, 0x65, 0xee, 0x65, 0x6a, 0x3e, 0x19, 0xd9, 0x41, 0x3b, 0xa5, 0x26, 0x53, 0xc2, - 0x2b, 0xdc, 0x15, 0x1f, 0x2e, 0x5a, 0xbc, 0xad, 0x20, 0x73, 0xe0, 0xa7, 0x2d, 0x7b, 0xfb, - 0xa2, 0x0e, 0x33, 0x50, 0xb8, 0x07, 0xb1, 0xc5, 0x84, 0x46, 0x34, 0x37, 0x9b, 0x89, 0x14, - 0xe4, 0xb9, 0x64, 0xa4, 0x09, 0xb3, 0xad, 0xaf, 0xa6, 0x05, 0x5a, 0x06, 0x1b, 0x53, 0x1f, - 0x1f, 0x76, 0xe1, 0x7c, 0xd2, 0x6d, 0xd8, 0x53, 0x12, 0x36, 0x2d, 0x5a, 0x6d, 0x18, 0xb7, - 0x8b, 0x0c, 0x59, 0xbf, 0xca, 0x91, 0x2e, 0x46, 0xb8, 0xcc, 0x8b, 0xdb, 0x39, 0x47, 0x59, - 0x7a, 0x0d, 0x38, 0x91, 0x34, 0xb0, 0xd8, 0xbb, 0xe7, 0x3f, 0x40, 0x56, 0xab, 0xf0, 0xbf, - 0x83, 0x56, 0xa9, 0x10, 0x60, 0xed, 0xe6, 0xce, 0x78, 0xdd, 0xb3, 0xfc, 0x1b, 0xbe, 0x8b, - 0x77, 0x29, 0x8e, 0xdf, 0x72, 0x70, 0xe9, 0xfb, 0xe4, 0x9c, 0x0f, 0x00, 0x6e, 0xf9, 0x6e, - 0x35, 0xb4, 0xae, 0x35, 0x10, 0x06, 0x46, 0x5e, 0x76, 0x56, 0xb1, 0xbf, 0x3c, 0x5f, 0x3f, - 0xfb, 0x87, 0xe7, 0xb3, 0xe2, 0x21, 0x28, 0x95, 0xff, 0xa8, 0xb7, 0x83, 0x78, 0x41, 0x78, - 0xd0, 0x6e, 0xf4, 0x3b, 0x31, 0x87, 0x5a, 0x0b, 0xff, 0x73, 0x37, 0x28, 0x5a, 0xbc, 0x31, - 0x1b, 0x56, 0x52, 0xb8, 0xe7, 0xaf, 0x4d, 0x5c, 0xe7, 0x22, 0x9e, 0x0d, 0x31, 0x5e, 0x70, - 0xf6, 0xd1, 0xa6, 0x7d, 0x79, 0x1d, 0x61, 0xe6, 0x1d, 0x1b, 0xb5, 0xf4, 0xca, 0x9e, 0x1d, - 0x65, 0xda, 0x1b, 0x31, 0xa1, 0xd1, 0xa4, 0x64, 0xe7, 0x4e, 0x1e, 0x0f, 0x97, 0xdb, 0x1d, - 0x02, 0x66, 0x8f, 0x51, 0xb1, 0xe9, 0x30, 0x5b, 0x82, 0xe8, 0x52, 0x3e, 0x7d, 0x13, 0x6e, - 0xf1, 0x32, 0x9c, 0x30, 0x02, 0x6a, 0xb8, 0xbe, 0x15, 0xff, 0x98, 0xa2, 0xc3, 0xc6, 0xaa, - 0xa1, 0x10, 0x86, 0x33, 0xae, 0x33, 0x69, 0xeb, 0x6a, 0xec, 0x93, 0xd3, 0xf1, 0x2f, 0xd5, - 0xd4, 0x4f, 0xd4, 0x10, 0x94, 0x36, 0xfe, 0x88, 0x93, 0x0f, 0x94, 0x0a, 0x82, 0x74, 0x8f, - 0x2e, 0x13, 0x40, 0x84, 0x64, 0xbb, 0xc0, 0xae, 0x53, 0x78, 0x2f, 0xc8, 0x0c, 0x3a, 0x0f, - 0x22, 0x52, 0xb3, 0x59, 0x9c, 0xd4, 0x32, 0x95, 0x95, 0x70, 0x73, 0x35, 0xbc, 0x1f, 0xae, - 0x0f, 0x9f, 0x2d, 0x61, 0x85, 0xfa, 0x5e, 0xa3, 0x22, 0x66, 0x47, 0x7b, 0xd8, 0x7c, 0x8d, - 0x66, 0xb8, 0x06, 0xeb, 0x6e, 0xe0, 0x5d, 0x76, 0x4c, 0xf2, 0xc0, 0xd7, 0x26, 0x98, 0xdc, - 0x8d, 0x38, 0x50, 0x16, 0xbf, 0x86, 0xfc, 0xc6, 0x3e, 0x12, 0xd4, 0xce, 0xe2, 0x2f, 0x4f, - 0x80, 0x9b, 0x6b, 0x8d, 0x30, 0x10, 0x44, 0xc9, 0xdc, 0xfe, 0x8c, 0x74, 0x93, 0xb7, 0x72, - 0x0e, 0xbc, 0x5f, 0x1f, 0xde, 0x30, 0x8b, 0x3d, 0xcf, 0x12, 0x37, 0x1c, 0x71, 0x39, 0xfd, - 0xaf, 0x67, 0x7e, 0xd8, 0x43, 0xf6, 0x2f, 0x7d, 0x4c, 0xdf, 0x51, 0x25, 0x33, 0xdc, 0x6a, - 0xe5, 0xa2, 0x1f, 0x1a, 0x32, 0x1c, 0xc0, 0xfd, 0xfa, 0x1d, 0x9c, 0x90, 0x52, 0xc5, 0x70, - 0x59, 0xdd, 0xda, 0xc4, 0xf3, 0x7e, 0x6c, 0xf5, 0x31, 0x72, 0x5b, 0xba, 0x7a, 0xa8, 0xa0, - 0x21, 0x89, 0x79, 0xd6, 0xa3, 0xcb, 0x68, 0x1f, 0x41, 0xea, 0x5a, 0xb5, 0xaa, 0x54, 0x50, - 0x9e, 0xc2, 0x07, 0xab, 0x55, 0x9a, 0x96, 0xd3, 0x0a, 0x8b, 0x04, 0x54, 0xd1, 0x1c, 0x34, - 0x98, 0x7b, 0xc3, 0x37, 0x00, 0x29, 0xeb, 0x87, 0x9e, 0x48, 0x9c, 0x9b, 0x05, 0x2e, 0x31, - 0xea, 0xb2, 0xb2, 0x5c, 0x7b, 0x7d, 0x1f, 0x10, 0xe7, 0xd2, 0xe6, 0x21, 0x21, 0x40, 0x31, - 0xb7, 0xb9, 0x49, 0xa1, 0xa9, 0xe6, 0x06, 0x79, 0xdd, 0x5a, 0x7b, 0x0d, 0x4d, 0x98, 0xbd, - 0x69, 0x77, 0x85, 0x22, 0xdd, 0x57, 0xb7, 0x95, 0x8a, 0x1a, 0xf5, 0x9b, 0x71, 0x21, 0x2d, - 0x0c, 0xe0, 0x07, 0x63, 0xf1, 0x00, 0x96, 0xaf, 0xde, 0x3f, 0xe9, 0xc3, 0x92, 0x09, 0xcd, - 0x2a, 0x10, 0xcc, 0x33, 0xe1, 0x42, 0xc1, 0x16, 0x5c, 0x7d, 0xa0, 0x66, 0x32, 0x71, 0x52, - 0x3d, 0x15, 0x4c, 0xe5, 0x2e, 0x36, 0xe1, 0x43, 0xce, 0x7d, 0x51, 0x84, 0x5c, 0x63, 0xfc, - 0xa3, 0xe4, 0x1d, 0x00, 0x6a, 0x22, 0x67, 0x7f, 0x3d, 0xc3, 0xd2, 0x6d, 0x7e, 0x79, 0x45, - 0xec, 0x3d, 0x6d, 0x1f, 0x8d, 0xc9, 0x42, 0xa0, 0x7a, 0x00, 0x56, 0xed, 0xd7, 0x65, 0x5c, - 0x7b, 0x46, 0x59, 0x8c, 0x6c, 0x5f, 0x78, 0x36, 0x8a, 0xe6, 0x45, 0xf0, 0x4a, 0xe7, 0x4b, - 0x33, 0xff, 0x8c, 0x93, 0xb1, 0x35, 0x60, 0xda, 0x37, 0xba, 0xf5, 0x2b, 0x2a, 0xb2, 0xfd, - 0x0b, 0xba, 0x14, 0xdb, 0x51, 0x34, 0x64, 0x5b, 0xc9, 0xa9, 0xd2, 0x5f, 0x3f, 0xa5, 0x27, - 0xb2, 0x96, 0xb5, 0xad, 0x7f, 0xf6, 0x4f, 0x03, 0x73, 0x1a, 0x66, 0x1b, 0xbb, 0x62, 0x81, - 0x7a, 0x60, 0x17, 0xc1, 0x66, 0xa8, 0x8e, 0x9b, 0x85, 0xfb, 0x3e, 0x6a, 0x3a, 0x9f, 0x3a, - 0xff, 0x9c, 0xd7, 0xdc, 0xa9, 0x45, 0xb3, 0xf6, 0x60, 0x2f, 0x0a, 0xc5, 0x75, 0xfe, 0x2f, - 0xc3, 0x90, 0xb4, 0x11, 0xbc, 0xfd, 0xa5, 0x3e, 0xb6, 0x67, 0x9d, 0x4e, 0x3b, 0xa9, 0x6b, - 0xcd, 0xe3, 0xa8, 0xf7, 0x60, 0x9c, 0x8b, 0x21, 0x86, 0x7a, 0xf5, 0x23, 0x40, 0x40, 0xf3, - 0xe3, 0xa7, 0x68, 0x51, 0x46, 0x62, 0xdb, 0x65, 0xc3, 0x86, 0xe4, 0xf1, 0x91, 0xdc, 0xe3, - 0xcb, 0xed, 0x8f, 0x7d, 0xab, 0x97, 0xba, 0x93, 0x21, 0x6a, 0x78, 0xe1, 0xe7, 0x1b, 0xa6, - 0x8e, 0x3b, 0x99, 0xa5, 0x03, 0xca, 0xaa, 0x87, 0x22, 0x52, 0xf8, 0xd1, 0x38, 0xbd, 0x06, - 0x7a, 0x5b, 0xc8, 0xc6, 0x62, 0x81, 0x0f, 0x21, 0x94, 0x7e, 0x16, 0x5d, 0x14, 0x0b, 0x79, - 0x3f, 0x82, 0x5d, 0x16, 0x01, 0x84, 0x2c, 0x7a, 0xd6, 0x42, 0x91, 0x65, 0xa2, 0x81, 0x03, - 0x9f, 0xbf, 0x92, 0x93, 0x90, 0x65, 0x11, 0x5f, 0xd2, 0x94, 0x7e, 0xd0, 0x50, 0x7d, 0x5a, - 0x30, 0x49, 0x12, 0xa5, 0x58, 0x2a, 0x2b, 0xaa, 0xc9, 0xf7, 0xa0, 0x86, 0x3c, 0xc0, 0xb2, - 0xe2, 0x4c, 0x2d, 0xe9, 0x16, 0xfb, 0xfc, 0x8b, 0xbf, 0x41, 0x98, 0xe7, 0x95, 0x36, 0x90, - 0x2c, 0x77, 0x2e, 0x4b, 0x1f, 0x8f, 0x51, 0x7f, 0xa9, 0x13, 0x57, 0x5b, 0x85, 0xfa, 0x2e, - 0x51, 0xec, 0x59, 0xf9, 0xb5, 0x05, 0xd3, 0xd3, 0xdd, 0xdd, 0x97, 0x63, 0xea, 0x76, 0x47, - 0x61, 0x26, 0xba, 0x14, 0xa4, 0x7d, 0x13, 0x65, 0x25, 0x6c, 0x9b, 0xde, 0x29, 0xfb, 0x77, - 0xaf, 0xbf, 0x66, 0x3f, 0xd5, 0xba, 0x40, 0x7d, 0xb7, 0x15, 0xcd, 0x75, 0x32, 0x90, 0x30, - 0x02, 0xb8, 0x4b, 0xfb, 0xd3, 0xdf, 0xd7, 0x26, 0x32, 0xc3, 0x69, 0x4f, 0x29, 0x81, 0x77, - 0xda, 0x69, 0x0d, 0xc1, 0x6a, 0xda, 0x4f, 0x5f, 0x7d, 0x08, 0x7f, 0x4f, 0x5c, 0x96, 0x60, - 0xf4, 0x83, 0xea, 0x6b, 0xc0, 0xd1, 0x8e, 0x00, 0xcc, 0x56, 0x11, 0x2f, 0xe5, 0x6c, 0xd5, - 0x36, 0x26, 0x93, 0xea, 0x52, 0xd0, 0x48, 0xb4, 0x19, 0x12, 0x31, 0x24, 0x44, 0x05, 0x8e, - 0x93, 0x41, 0x96, 0x2e, 0x18, 0x45, 0xf5, 0xa3, 0xdc, 0x3d, 0x91, 0x3b, 0x22, 0xba, 0x98, - 0x24, 0xb1, 0x7e, 0x46, 0x5e, 0x2b, 0x1a, 0x8f, 0x33, 0x19, 0x79, 0xdd, 0x1b, 0x4f, 0x64, - 0x5a, 0xc8, 0x7b, 0x48, 0xe0, 0x48, 0xe2, 0xea, 0x0b, 0x6e, 0xbd, 0xf2, 0x2c, 0x76, 0x2b, - 0xfc, 0x87, 0x47, 0x52, 0x2f, 0xb0, 0xbf, 0xf2, 0x96, 0x34, 0x4d, 0x87, 0xb4, 0x4d, 0xb8, - 0x37, 0x07, 0x25, 0xfd, 0x4e, 0x36, 0x03, 0x87, 0xc2, 0x48, 0x14, 0x3e, 0x4f, 0x4a, 0x23, - 0xfc, 0x25, 0xdb, 0xbb, 0x0b, 0xbb, 0x4d, 0xf1, 0xec, 0xff, 0x10, 0xb9, 0x0e, 0x04, 0xec, - 0xc9, 0x93, 0xdc, 0x5d, 0x23, 0x88, 0x2f, 0xeb, 0x00, 0x83, 0x87, 0xac, 0xd7, 0xb7, 0x92, - 0x17, 0xa8, 0x50, 0x0c, 0x9b, 0x93, 0x95, 0xb1, 0xe7, 0x12, 0x6d, 0xb1, 0xdf, 0x3b, 0x41, - 0xcb, 0x4c, 0x0b, 0x77, 0x2b, 0xb7, 0xb2, 0xdf, 0x6a, 0xa8, 0xff, 0xc1, 0x78, 0x5e, 0xfb, - 0xca, 0x92, 0x5c, 0xaa, 0x67, 0x17, 0x1c, 0x23, 0x89, 0x92, 0x76, 0x0f, 0x81, 0xcf, 0x06, - 0xb9, 0x43, 0xf5, 0xaf, 0xf5, 0x75, 0x2e, 0x8a, 0xd5, 0xc6, 0xf4, 0x30, 0xdc, 0x00, 0x33, - 0x22, 0x16, 0x0e, 0x6a, 0xc8, 0x08, 0xa4, 0x1e, 0x66, 0x6f, 0x11, 0x8b, 0x20, 0xcc, 0x46, - 0x28, 0x81, 0x57, 0xde, 0xd4, 0xdd, 0x32, 0x17, 0xc7, 0x72, 0xf1, 0x46, 0x2a, 0x3a, 0xaa, - 0xb2, 0x7b, 0x96, 0x80, 0x8f, 0x50, 0x66, 0xcb, 0x34, 0x18, 0x95, 0x37, 0xcb, 0x21, 0xd1, - 0xdf, 0x3a, 0x6f, 0x78, 0x65, 0xdb, 0xac, 0xd8, 0xe2, 0x62, 0xda, 0x96, 0x56, 0x83, 0xd4, - 0xb5, 0x8b, 0x2c, 0xc0, 0x11, 0xd1, 0xc4, 0xae, 0x9b, 0xec, 0xc3, 0x14, 0x6c, 0xfe, 0xd8, - 0x74, 0x7f, 0xb1, 0x75, 0x58, 0x50, 0x81, 0x60, 0x7a, 0xa0, 0xfd, 0xa7, 0xe8, 0x94, 0xbe, - 0xa5, 0x89, 0xbb, 0xf4, 0x4e, 0x9b, 0x5e, 0x54, 0xd7, 0xe3, 0x1a, 0xa8, 0xc9, 0x06, 0x1f, - 0xfc, 0xb9, 0xd0, 0x05, 0x1d, 0xc9, 0xdf, 0xd4, 0x50, 0xaa, 0xcd, 0xc2, 0xc3, 0x09, 0x9f, - 0x6c, 0xfb, 0xcd, 0x04, 0x5b, 0x2d, 0x5a, 0xd1, 0xa8, 0x73, 0x6c, 0x7c, 0xee, 0x6d, 0x2d, - 0x1f, 0x11, 0x40, 0xc8, 0x14, 0x65, 0x36, 0x46, 0xce, 0x20, 0x12, 0x40, 0x26, 0xad, 0x5b, - 0x62, 0x1d, 0x6a, 0xdc, 0xe6, 0x33, 0xb2, 0x1e, 0xf6, 0x96, 0xf8, 0x39, 0x30, 0x70, 0xd2, - 0x45, 0xd8, 0x1c, 0x4f, 0x65, 0xed, 0x1e, 0x52, 0x47, 0x14, 0x1c, 0x6f, 0x95, 0x29, 0x4e, - 0x47, 0xc3, 0x31, 0x18, 0x71, 0x4d, 0x0e, 0xf1, 0x80, 0x22, 0xcf, 0xed, 0xbc, 0xde, 0x5b, - 0x03, 0x80, 0x23, 0xec, 0x0f, 0x51, 0x87, 0x99, 0x47, 0xbd, 0x60, 0xfc, 0x09, 0xb1, 0x43, - 0x95, 0xe7, 0x9e, 0xd8, 0x49, 0x39, 0x73, 0xe4, 0x6b, 0x5d, 0xbb, 0xd6, 0xe6, 0x28, 0xc4, - 0x35, 0xbe, 0xc7, 0xa3, 0x80, 0x3b, 0x33, 0x97, 0x6a, 0xdd, 0xd0, 0xc6, 0x2a, 0x95, 0x94, - 0xfd, 0x93, 0xb1, 0xa6, 0x66, 0x79, 0x4c, 0x1c, 0xbb, 0x74, 0xdf, 0xbd, 0xec, 0x62, 0x2d, - 0x0f, 0x8e, 0x42, 0xca, 0xd0, 0xd8, 0x9d, 0x1f, 0x1f, 0x73, 0x63, 0xf1, 0xba, 0x7c, 0x3f, - 0xd1, 0x21, 0x32, 0x98, 0xca, 0x31, 0x46, 0x4e, 0x0e, 0x8b, 0xb6, 0x4f, 0x27, 0xdc, 0x4f, - 0x1b, 0x35, 0x21, 0x83, 0xd4, 0x75, 0x9d, 0x3c, 0x99, 0xf2, 0x24, 0xe7, 0x32, 0x9a, 0x7b, - 0x55, 0x5f, 0x52, 0x08, 0xb0, 0xc3, 0x13, 0x14, 0x07, 0x7b, 0x3e, 0xc4, 0x67, 0xa1, 0xa1, - 0x4f, 0xa7, 0x82, 0x0e, 0x69, 0xc6, 0x31, 0xf8, 0x64, 0xf1, 0x8d, 0x97, 0x34, 0xfa, 0x4e, - 0x7c, 0x89, 0x49, 0xab, 0x64, 0x89, 0xe6, 0x48, 0x81, 0x72, 0xce, 0xdf, 0xe0, 0x45, 0x36, - 0xb3, 0x3b, 0x2d, 0xd7, 0xb2, 0x9c, 0x16, 0x5d, 0x00, 0x30, 0xa1, 0x2b, 0xbd, 0x47, 0x0d, - 0x4f, 0xab, 0xa2, 0x1a, 0x02, 0x6a, 0x52, 0xec, 0xc1, 0xce, 0x10, 0xbc, 0x2d, 0xb5, 0x3b, - 0x3a, 0xd8, 0x75, 0x2d, 0x13, 0xdd, 0x3d, 0x0f, 0xea, 0x67, 0x42, 0xb2, 0x5a, 0xdd, 0xb8, - 0x25, 0x0d, 0x4c, 0xa0, 0x4b, 0x12, 0x82, 0x85, 0x60, 0x4e, 0x76, 0xc7, 0x7c, 0x72, 0x81, - 0x83, 0x3b, 0xf3, 0x0f, 0xd9, 0xbf, 0xc6, 0x8f, 0xd6, 0xae, 0x18, 0x05, 0x17, 0x0e, 0xe9, - 0xa2, 0xcc, 0xac, 0x0d, 0xc2, 0x61, 0xcf, 0xdd, 0x0a, 0x59, 0x75, 0x5a, 0x3f, 0x46, 0x14, - 0x78, 0x06, 0xf3, 0xab, 0x00, 0x5c, 0x44, 0x20, 0x9b, 0xcd, 0x15, 0x86, 0x9b, 0x76, 0x4a, - 0xea, 0xcd, 0x76, 0x73, 0x62, 0x2d, 0x07, 0x64, 0xa8, 0xf4, 0x7a, 0xdf, 0x8d, 0xad, 0xc6, - 0x3a, 0x5a, 0x9e, 0xc3, 0xe2, 0x5f, 0xf8, 0x4f, 0xa7, 0x4b, 0x8f, 0x05, 0xd8, 0x4d, 0x4a, - 0x7f, 0xec, 0xaa, 0x52, 0x15, 0xe8, 0x64, 0x09, 0x52, 0xc3, 0xd0, 0xca, 0x9e, 0xe8, 0x8e, - 0xce, 0x1f, 0x68, 0x2a, 0x7d, 0xed, 0x50, 0x97, 0x41, 0x2f, 0x9e, 0x38, 0xcd, 0x61, 0x62, - 0xac, 0xa6, 0x2d, 0xa3, 0x04, 0x73, 0x37, 0xe1, 0xa4, 0x09, 0xd7, 0x07, 0x9b, 0x15, 0x40, - 0xc7, 0x22, 0x5a, 0xd0, 0x97, 0xa3, 0xc8, 0xfd, 0xf7, 0x08, 0xda, 0x73, 0x64, 0xae, 0x07, - 0x91, 0x86, 0xf3, 0x84, 0x70, 0x9d, 0x5c, 0x41, 0x53, 0x95, 0xf8, 0x37, 0x4f, 0x74, 0x18, - 0xd1, 0x76, 0xbd, 0x8f, 0xec, 0xaf, 0x25, 0x16, 0xf6, 0x83, 0xfb, 0x0d, 0x91, 0x50, 0x69, - 0xbd, 0x14, 0x06, 0x1b, 0x1f, 0x36, 0x43, 0x01, 0xf4, 0xe3, 0xb5, 0xa5, 0xe3, 0x20, 0x8d, - 0x4b, 0x55, 0xde, 0x86, 0x40, 0xc1, 0xac, 0x3b, 0x01, 0x08, 0xf6, 0x90, 0x3e, 0xb1, 0x4a, - 0x76, 0xe6, 0x98, 0xe1, 0x09, 0x46, 0x46, 0xbe, 0xe5, 0xd9, 0x1d, 0xfc, 0x8d, 0x85, 0x00, - 0x36, 0x25, 0x84, 0x02, 0x21, 0x4c, 0x9b, 0xe7, 0xa6, 0x92, 0xea, 0xc0, 0xb7, 0xe9, 0xa8, - 0xbe, 0xe2, 0x0d, 0x42, 0x3f, 0xf0, 0xbf, 0x00, 0xa7, 0x44, 0x3c, 0x1c, 0x81, 0x15, 0xfe, - 0x5a, 0x39, 0x01, 0xfb, 0x7f, 0x30, 0x7f, 0x41, 0xfd, 0x9d, 0x1f, 0x76, 0x00, 0x04, 0x89, - 0x37, 0xfe, 0x7d, 0xac, 0x93, 0x48, 0x4d, 0xbc, 0x2c, 0xae, 0x52, 0x2d, 0xf7, 0x06, 0x50, - 0xf9, 0x8f, 0x79, 0xc3, 0x24, 0x68, 0x01, 0xe5, 0x49, 0x1a, 0x34, 0x94, 0x62, 0x90, 0x0c, - 0x95, 0x20, 0x4f, 0x29, 0x1f, 0x4b, 0xbb, 0xa1, 0xac, 0x71, 0x36, 0x0f, 0x9f, 0x3e, 0x2b, - 0x53, 0xb9, 0x57, 0x02, 0xa0, 0x20, 0x04, 0x08, 0x55, 0x7c, 0xa6, 0xc4, 0x7c, 0x02, 0xa5, - 0x76, 0x44, 0x04, 0x47, 0xa2, 0x36, 0x25, 0x44, 0xfb, 0xfb, 0xd4, 0x1e, 0xf3, 0x76, 0x1b, - 0x83, 0x4f, 0x5e, 0x3c, 0x88, 0xf0, 0x97, 0x1d, 0x2e, 0x9c, 0x81, 0x82, 0xd9, 0x05, 0x7b, - 0x3b, 0x6d, 0x5c, 0xed, 0x2b, 0x3d, 0x64, 0x18, 0x78, 0xae, 0x83, 0x29, 0xb0, 0x88, 0x11, - 0x26, 0x9a, 0x44, 0x50, 0x02, 0x66, 0xfc, 0x45, 0xf4, 0xa4, 0x15, 0x3c, 0xef, 0x3a, 0x40, - 0x9f, 0xa8, 0x79, 0xb8, 0xd7, 0x49, 0x31, 0x18, 0x13, 0x65, 0x4b, 0x93, 0x31, 0x9a, 0x07, - 0xd5, 0x21, 0x34, 0xd1, 0x01, 0x7d, 0xed, 0xb0, 0x10, 0x06, 0x91, 0x77, 0x25, 0x1d, 0x31, - 0x9d, 0xde, 0xdc, 0x39, 0xb7, 0x20, 0x81, 0x06, 0x1a, 0x95, 0xc1, 0xac, 0xab, 0x0d, 0xd3, - 0xfd, 0xd2, 0x05, 0xa3, 0x54, 0xc2, 0x00, 0xce, 0x46, 0x7d, 0x2e, 0x0d, 0xad, 0x57, 0x26, - 0x6c, 0x8b, 0x47, 0x4c, 0xc8, 0xcf, 0xe1, 0xa8, 0xd2, 0xea, 0x35, 0x61, 0xc5, 0x5b, 0xe3, - 0xa6, 0x40, 0x3e, 0xc6, 0xcd, 0x0d, 0x03, 0x01, 0x4b, 0x7b, 0x82, 0x50, 0x6a, 0xa0, 0x64, - 0xe0, 0x35, 0x44, 0x3d, 0x9c, 0x52, 0xf9, 0xe5, 0xbf, 0xcc, 0x0f, 0xbd, 0xe7, 0x3c, 0x67, - 0xe1, 0x6d, 0xae, 0x99, 0xa2, 0xa8, 0xcc, 0x85, 0x1b, 0x80, 0x04, 0xdd, 0x6e, 0x96, 0x32, - 0x89, 0x62, 0x1d, 0x08, 0xe0, 0x73, 0x63, 0xfe, 0xd5, 0x95, 0xbc, 0xfb, 0x07, 0xc4, 0xe7, - 0x3f, 0xf9, 0xd1, 0x6a, 0x39, 0x69, 0x09, 0x6c, 0x99, 0xc6, 0x71, 0xf2, 0x2f, 0x27, 0x6d, - 0x6c, 0x67, 0x88, 0xf6, 0x11, 0x1e, 0x5c, 0x25, 0xaa, 0x92, 0x48, 0x1c, 0x85, 0xc8, 0xd0, - 0xa0, 0x83, 0xde, 0x51, 0x29, 0xe1, 0x73, 0x8d, 0x68, 0x64, 0x7b, 0x64, 0xb6, 0xb8, 0x50, - 0x8c, 0xf6, 0xa8, 0x80, 0x96, 0xb0, 0xa8, 0x10, 0xf7, 0x38, 0xc4, 0x03, 0x52, 0xcd, 0xe8, - 0xe4, 0x28, 0x26, 0xb3, 0x23, 0xac, 0xd8, 0x49, 0x93, 0x72, 0x11, 0x1b, 0xf4, 0x44, 0x4a, - 0xf1, 0xad, 0x8e, 0xa1, 0x0d, 0x93, 0x56, 0x05, 0x16, 0x23, 0x2e, 0x96, 0xf2, 0xd8, 0x12, - 0x81, 0x25, 0xfb, 0x6a, 0x56, 0xab, 0x31, 0xf5, 0x74, 0x3f, 0xfe, 0x1d, 0xc3, 0x35, 0x72, - 0x69, 0x4b, 0x5f, 0x2c, 0x75, 0x85, 0x72, 0x09, 0xbc, 0x67, 0x1b, 0x0a, 0x13, 0x67, 0x4e, - 0x5e, 0xb5, 0xba, 0xba, 0xa2, 0x72, 0xa1, 0x46, 0x2d, 0x45, 0x92, 0xa4, 0xd9, 0x08, 0x3b, - 0x02, 0x80, 0x7c, 0x14, 0x39, 0x0d, 0x12, 0xc7, 0xbc, 0x9f, 0x65, 0x42, 0xee, 0x1c, 0xa0, - 0x53, 0xdd, 0x69, 0xf3, 0xd1, 0x69, 0x4a, 0x14, 0xc2, 0xd3, 0x87, 0xd8, 0x81, 0x9f, 0x5c, - 0x8c, 0x6b, 0x84, 0xa6, 0x1c, 0x8b, 0xb2, 0x5c, 0x6f, 0x3d, 0xcd, 0xcc, 0xce, 0x13, 0x73, - 0x34, 0xdd, 0x73, 0xc4, 0x98, 0x88, 0x8a, 0xb5, 0x20, 0x58, 0xe6, 0x75, 0x6a, 0x92, 0x79, - 0x53, 0xed, 0x8d, 0x11, 0x50, 0x68, 0x67, 0x26, 0x09, 0xd6, 0x03, 0xac, 0xd6, 0x5c, 0x10, - 0x98, 0xb9, 0x16, 0x53, 0x0a, 0x2a, 0x05, 0x61, 0x2d, 0x27, 0x5d, 0x41, 0x71, 0x15, 0xa3, - 0xfd, 0xc8, 0xeb, 0xd5, 0x8e, 0x74, 0x25, 0x09, 0xdd, 0x55, 0x76, 0xce, 0x40, 0x86, 0xeb, - 0x50, 0xad, 0x75, 0xcf, 0x1f, 0x39, 0xb1, 0x75, 0x3b, 0x11, 0xbe, 0x24, 0x5d, 0x62, 0xcc, - 0xe3, 0xd6, 0x23, 0xfb, 0x09, 0xdd, 0x18, 0xa3, 0x35, 0xc5, 0x1c, 0x24, 0xf4, 0x80, 0x59, - 0x73, 0x53, 0x15, 0xe1, 0x46, 0xaa, 0x29, 0x76, 0xa2, 0x12, 0xc6, 0x22, 0x59, 0x4a, 0x50, - 0x00, 0xeb, 0xf4, 0x95, 0x40, 0xc4, 0x70, 0x79, 0x96, 0xfb, 0xd2, 0x12, 0x69, 0x96, 0xad, - 0xea, 0xee, 0xff, 0x70, 0x6e, 0x7e, 0xdd, 0x0a, 0x1c, 0xbc, 0x2c, 0xb4, 0x77, 0xc1, 0xb4, - 0x85, 0x4f, 0x81, 0x28, 0x12, 0x3e, 0xa2, 0x2d, 0x7b, 0x1a, 0x6a, 0xc7, 0xc9, 0x92, 0xf0, - 0x23, 0x1a, 0xd0, 0x40, 0xac, 0xeb, 0xec, 0x0a, 0x83, 0x61, 0x30, 0xaa, 0x1b, 0xb0, 0x42, - 0xd7, 0x2f, 0x9f, 0x89, 0x81, 0xd1, 0x3b, 0xb5, 0x73, 0x25, 0x19, 0xc4, 0xf6, 0x41, 0xa9, - 0x92, 0x4c, 0xa9, 0x4a, 0x86, 0xd3, 0x3c, 0x07, 0x03, 0xcc, 0x05, 0xe3, 0x12, 0x45, 0x04, - 0x39, 0x52, 0xd2, 0x28, 0xba, 0x38, 0xb1, 0x94, 0x7c, 0x51, 0x74, 0x57, 0x47, 0xe1, 0x76, - 0xbd, 0x92, 0xed, 0x9e, 0xd5, 0x43, 0xeb, 0x97, 0x9a, 0x0c, 0x3b, 0x40, 0x48, 0xdf, 0x2b, - 0x44, 0x2e, 0xb0, 0x92, 0x73, 0x45, 0x74, 0x9e, 0xdb, 0xef, 0x3e, 0xa6, 0x54, 0x0d, 0xd2, - 0x7e, 0x96, 0x4c, 0x40, 0xde, 0x5a, 0x91, 0x5a, 0xef, 0x23, 0x74, 0x87, 0xb4, 0x5c, 0xd9, - 0x99, 0x2b, 0xc7, 0x77, 0x6e, 0x4b, 0x87, 0xba, 0x84, 0xd3, 0xf3, 0xd4, 0x04, 0x5c, 0xf2, - 0xbb, 0xd5, 0x83, 0x6e, 0x5e, 0x77, 0xa3, 0x7a, 0x45, 0x30, 0xe5, 0x40, 0x76, 0xfd, 0xe1, - 0x25, 0xad, 0x2e, 0x22, 0x73, 0x6f, 0x33, 0x57, 0xc4, 0x4a, 0x74, 0x28, 0xbe, 0xe6, 0xd9, - 0x95, 0x4d, 0x46, 0xc8, 0x21, 0xa7, 0xc9, 0xda, 0xee, 0x50, 0xbe, 0x5e, 0x90, 0x99, 0xd0, - 0x2a, 0xc1, 0xbf, 0x6c, 0x24, 0x2a, 0xf9, 0x6f, 0x81, 0x65, 0xf2, 0x16, 0x57, 0x24, 0x7b, - 0xcf, 0xc5, 0xc1, 0xa7, 0xac, 0x53, 0x21, 0x65, 0x15, 0xe7, 0x0f, 0x35, 0x14, 0x15, 0x33, - 0xaf, 0xe2, 0xbd, 0x4c, 0x9a, 0x29, 0xca, 0x27, 0x4b, 0x97, 0xbc, 0xc7, 0x1d, 0x27, 0x01, - 0x82, 0x7d, 0x27, 0x9e, 0xaf, 0x92, 0xdd, 0xbf, 0x2f, 0x3b, 0x9f, 0x6a, 0x2c, 0xe5, 0xf2, - 0x46, 0x7a, 0xa6, 0xbd, 0xd4, 0x24, 0xcb, 0x6d, 0x26, 0x33, 0x36, 0x6e, 0x93, 0x41, 0xf9, - 0x5c, 0x7f, 0x36, 0xf1, 0x55, 0xbd, 0xd2, 0x75, 0xe7, 0x65, 0xe3, 0x0c, 0x5f, 0x47, 0xa4, - 0x45, 0x08, 0x30, 0x0c, 0xa2, 0xc4, 0xcb, 0x1d, 0xc1, 0x9c, 0x3c, 0x3f, 0xb1, 0xa6, 0xd9, - 0xe5, 0x4e, 0x9b, 0xa4, 0xd3, 0x90, 0x32, 0x22, 0xf4, 0x1e, 0xf1, 0xe9, 0xd2, 0x3c, 0x49, - 0xd4, 0xbc, 0xff, 0x56, 0xbf, 0xf6, 0x8b, 0xd4, 0x73, 0xa6, 0x5f, 0x2d, 0xfb, 0x0c, 0x08, - 0xbb, 0x44, 0xbe, 0x42, 0x21, 0x00, 0x98, 0x76, 0x71, 0x69, 0xeb, 0x91, 0x58, 0x08, 0x92, - 0xe0, 0x44, 0xd8, 0x1e, 0x3b, 0x8d, 0xe0, 0xc9, 0x72, 0x02, 0x13, 0xd8, 0xf6, 0xa4, 0x44, - 0x27, 0xcd, 0xd1, 0x1d, 0x0b, 0xe1, 0xef, 0x59, 0x21, 0x3e, 0xb9, 0xf0, 0xa7, 0xf6, 0x0f, - 0xe2, 0xb3, 0xfc, 0xfc, 0x07, 0xa4, 0xbc, 0xc2, 0x53, 0xef, 0xa4, 0x22, 0x5d, 0xd8, 0xd7, - 0xdf, 0x1d, 0x28, 0xe4, 0x29, 0x13, 0xf7, 0x44, 0x30, 0x42, 0x2e, 0x5d, 0x98, 0x7d, 0x85, - 0x0b, 0x3e, 0x8e, 0xef, 0x32, 0x2c, 0xdb, 0x0a, 0x0f, 0x84, 0x4c, 0xf1, 0x34, 0x0b, 0xd9, - 0xdc, 0xb0, 0x68, 0x36, 0x30, 0x2d, 0x1d, 0xae, 0x0b, 0x13, 0x79, 0xb4, 0xa8, 0xae, 0x8a, - 0x36, 0x34, 0x60, 0x54, 0x48, 0x92, 0xfe, 0x84, 0x61, 0x65, 0x82, 0x2a, 0xaf, 0x8b, 0xba, - 0xd5, 0xd2, 0xf3, 0xe1, 0x42, 0x79, 0x2f, 0xa3, 0xab, 0x56, 0x9c, 0xf9, 0xc3, 0x99, 0x9f, - 0x4e, 0xff, 0x3b, 0x3a, 0x35, 0x1c, 0x7d, 0x51, 0x46, 0xa1, 0x93, 0x1e, 0xcc, 0x52, 0x81, - 0xad, 0x3e, 0xde, 0x14, 0x81, 0x2b, 0xf1, 0xdb, 0x04, 0x7c, 0x46, 0x91, 0x38, 0x90, 0xbc, - 0xd0, 0xa0, 0x47, 0xfe, 0x62, 0x92, 0xed, 0x70, 0xf8, 0xa2, 0x7f, 0x57, 0x8c, 0x8c, 0x9f, - 0xdb, 0xbb, 0x98, 0x35, 0xfc, 0x23, 0x13, 0x5d, 0xc7, 0x98, 0x08, 0x0f, 0x3f, 0x71, 0x83, - 0xdb, 0xdc, 0xae, 0x52, 0xc8, 0xeb, 0xdf, 0xfa, 0xe5, 0x08, 0x94, 0x44, 0xb5, 0xc5, 0x9c, - 0x27, 0xfb, 0x45, 0x4d, 0x5a, 0xcc, 0xd9, 0x4e, 0x5b, 0xc3, 0x71, 0xe1, 0x2a, 0xd1, 0xc8, - 0xbc, 0x11, 0x43, 0x45, 0xfe, 0x87, 0xbd, 0x68, 0x04, 0xe8, 0x3f, 0x66, 0x62, 0x34, 0x9e, - 0x32, 0x5a, 0xe0, 0x7a, 0xa8, 0xf3, 0xf3, 0x15, 0x72, 0x68, 0x62, 0x2e, 0xa6, 0x0b, 0x10, - 0xb8, 0x0f, 0xbb, 0x52, 0xab, 0x3f, 0x29, 0xa5, 0x17, 0x68, 0xf7, 0x93, 0x7c, 0xbd, 0xad, - 0xba, 0xf3, 0xf9, 0xd9, 0x55, 0x37, 0x31, 0x0e, 0x83, 0x1a, 0x56, 0x1f, 0x9d, 0x00, 0x58, - 0x87, 0x99, 0x9f, 0x1a, 0xde, 0x67, 0xc6, 0x9e, 0xb7, 0xf7, 0x0e, 0x04, 0x19, 0x24, 0x62, - 0x7b, 0x28, 0x8b, 0x39, 0xf3, 0x55, 0xf0, 0x6f, 0x30, 0xb7, 0x4b, 0x56, 0x9a, 0x51, 0x56, - 0xad, 0xf0, 0x34, 0x35, 0xbf, 0x6d, 0xf0, 0x03, 0x5c, 0xe9, 0x27, 0x75, 0x3d, 0x58, 0x77, - 0x47, 0x80, 0x65, 0x51, 0x14, 0xd3, 0x6b, 0x8e, 0x9a, 0xe8, 0xb5, 0xac, 0x6f, 0xea, 0xa6, - 0x00, 0x65, 0x69, 0x27, 0x77, 0x0c, 0x2f, 0xdd, 0x45, 0xb8, 0xf0, 0x05, 0x29, 0x83, 0x79, - 0x12, 0x4f, 0xaf, 0x12, 0xa0, 0x7b, 0xc1, 0xde, 0xe6, 0x66, 0xe5, 0xd8, 0x68, 0xd2, 0x43, - 0x28, 0x9f, 0x79, 0xcd, 0x14, 0x20, 0x1e, 0x2f, 0xbf, 0xe8, 0x65, 0xde, 0x6e, 0x2b, 0xa4, - 0xda, 0x15, 0x21, 0x0b, 0x95, 0x24, 0xee, 0xc6, 0xc0, 0xf6, 0xca, 0xca, 0x66, 0x50, 0xa8, - 0xf3, 0xf2, 0xae, 0x6f, 0xe6, 0x0c, 0x12, 0xa9, 0x2c, 0x2c, 0x6b, 0x94, 0xe9, 0x8a, 0x45, - 0xf4, 0xf3, 0xc8, 0x2d, 0xbd, 0xbe, 0x32, 0x4a, 0x72, 0xb2, 0x51, 0x6a, 0xf0, 0x21, 0x5e, - 0x01, 0x41, 0x8a, 0xe9, 0x38, 0x9f, 0x8f, 0x66, 0x83, 0x15, 0xa5, 0x34, 0x98, 0x43, 0x8b, - 0x59, 0x0d, 0xed, 0x49, 0x41, 0x99, 0x9d, 0x9f, 0x53, 0x7a, 0x32, 0xb8, 0x34, 0x58, 0xeb, - 0x63, 0xad, 0x01, 0x46, 0xf5, 0xf2, 0x8a, 0xc4, 0xc5, 0x71, 0xfd, 0x3d, 0xc5, 0x8c, 0x68, - 0xb3, 0x39, 0x1a, 0x16, 0x32, 0x8e, 0xc8, 0x97, 0x12, 0xe5, 0xed, 0x42, 0x56, 0x55, 0x07, - 0xb6, 0x38, 0x81, 0x0f, 0x1e, 0xdf, 0xc9, 0x3f, 0x66, 0xf6, 0xcd, 0x44, 0x13, 0x14, 0x7b, - 0x21, 0x0b, 0x11, 0x27, 0xe8, 0xb4, 0x87, 0x28, 0x2a, 0x92, 0x47, 0x4a, 0x22, 0x31, 0x6d, - 0xc5, 0x1e, 0x38, 0xc2, 0x1d, 0x31, 0x57, 0x8d, 0x48, 0x90, 0x84, 0xe3, 0xe0, 0x14, 0x81, - 0xb1, 0x88, 0x1d, 0x7a, 0xb8, 0x56, 0xca, 0x86, 0x22, 0x23, 0x3d, 0xa9, 0xea, 0xb7, 0xaa, - 0x43, 0x6b, 0xc8, 0x98, 0x2b, 0x92, 0x20, 0xb3, 0xe2, 0x2c, 0xdc, 0xf9, 0x9b, 0xe8, 0x6e, - 0x5c, 0xb8, 0xcd, 0x8a, 0x9b, 0xc6, 0x0d, 0xdc, 0xa6, 0x0c, 0xa2, 0x6c, 0xed, 0x3e, 0x01, - 0xe0, 0x69, 0x02, 0x6b, 0x51, 0x25, 0xf3, 0x2f, 0x82, 0x90, 0x1f, 0x05, 0xca, 0xf6, 0x82, - 0x14, 0xfa, 0xf2, 0x5d, 0x3f, 0xba, 0xa2, 0x5d, 0xf0, 0xd4, 0x07, 0x76, 0x20, 0xd6, 0x84, - 0xa7, 0x35, 0x52, 0x31, 0x9a, 0x65, 0x69, 0x4a, 0x08, 0xc0, 0xbc, 0x30, 0xb1, 0xe3, 0x12, - 0xde, 0xa1, 0xe5, 0x6c, 0x70, 0x40, 0x15, 0x0f, 0x2d, 0xe8, 0x07, 0x71, 0x00, 0x9b, 0x06, - 0xc6, 0x92, 0xbc, 0xd8, 0xf3, 0x63, 0x71, 0x96, 0x6c, 0xb0, 0x22, 0xec, 0x82, 0x98, 0xd5, - 0x54, 0x98, 0xb1, 0xcc, 0x20, 0x53, 0xa6, 0xe0, 0x8b, 0x3a, 0x91, 0x63, 0xff, 0xb5, 0xa1, - 0x8d, 0x5f, 0x06, 0x67, 0x1c, 0xae, 0xed, 0x00, 0xfe, 0x62, 0xae, 0xba, 0x50, 0xc9, 0x7c, - 0x39, 0x24, 0xe4, 0x9c, 0x20, 0x70, 0xb6, 0x49, 0x37, 0x78, 0xc7, 0x17, 0x90, 0xdc, 0x7a, - 0xf7, 0xc9, 0xe6, 0x24, 0x28, 0x4e, 0x67, 0xee, 0x8b, 0x4e, 0xd2, 0xc7, 0xae, 0xba, 0x16, - 0xcb, 0xef, 0x34, 0xde, 0x81, 0x92, 0x68, 0xa0, 0xe2, 0x71, 0x91, 0xc1, 0xcc, 0x45, 0x01, - 0xe4, 0x3a, 0x03, 0xc1, 0x55, 0x8c, 0xfb, 0x6e, 0x3e, 0xc2, 0x6c, 0xc2, 0x7e, 0xf0, 0x14, - 0x31, 0x6a, 0xbf, 0x8a, 0x38, 0x7f, 0x07, 0x67, 0x8b, 0x9d, 0x9f, 0x19, 0x95, 0x96, 0x8e, - 0xc4, 0xa5, 0x94, 0x2f, 0x83, 0xd4, 0xae, 0x6f, 0xc6, 0xd9, 0x36, 0xea, 0x5b, 0x8e, 0x7a, - 0x28, 0xe3, 0x7b, 0x10, 0xa2, 0xfd, 0x1f, 0xb4, 0xdb, 0x9f, 0xc5, 0xff, 0x3d, 0xc4, 0x1f, - 0xe1, 0x0c, 0xc3, 0xb8, 0xdc, 0xfa, 0x8f, 0x73, 0xf1, 0xd2, 0x1f, 0xbd, 0xe2, 0x4a, 0x8a, - 0xf1, 0xf3, 0xd6, 0x9d, 0x86, 0x9d, 0x99, 0xfe, 0x37, 0xbf, 0x84, 0xde, 0x52, 0xec, 0x96, - 0xf3, 0xbe, 0x16, 0x16, 0x3f, 0x8c, 0x85, 0x8f, 0xa7, 0xb1, 0xab, 0xcc, 0xaf, 0x31, 0x0d, - 0x3c, 0xa4, 0x79, 0x1c, 0x07, 0x89, 0x32, 0xcc, 0xa7, 0xbd, 0xd4, 0xf4, 0xe9, 0x36, 0x47, - 0x5a, 0x5b, 0x09, 0x4a, 0x68, 0xfc, 0x70, 0x0e, 0x81, 0x86, 0x00, 0xad, 0x95, 0x11, 0xff, - 0xf6, 0x42, 0xf9, 0xe4, 0x17, 0xb6, 0x3c, 0xbd, 0xdf, 0xb6, 0x4f, 0xa1, 0x86, 0x0c, 0xc4, - 0xc3, 0x64, 0x80, 0x7f, 0x49, 0x1e, 0x43, 0x7e, 0xd3, 0x15, 0xb5, 0x4b, 0x9c, 0xa9, 0xbb, - 0x14, 0xb2, 0x4d, 0x3e, 0xda, 0x10, 0x50, 0x0e, 0xc6, 0xd3, 0x90, 0x3d, 0x16, 0xc2, 0x62, - 0xaa, 0x6a, 0x2e, 0x5e, 0xf6, 0x68, 0x2d, 0x08, 0x2c, 0x9b, 0xfa, 0x37, 0x3b, 0xa2, 0x38, - 0x07, 0x9e, 0xe3, 0x7a, 0xdd, 0x4f, 0x62, 0xfc, 0x66, 0x86, 0x01, 0x24, 0x55, 0x48, 0xf4, - 0x06, 0xe4, 0xbb, 0x4b, 0x9d, 0x2d, 0x80, 0xc8, 0x08, 0xe3, 0x65, 0x05, 0x81, 0x15, 0xd4, - 0x87, 0x19, 0xb7, 0xf9, 0xa8, 0x92, 0xc1, 0x29, 0xa4, 0x57, 0x94, 0x71, 0xac, 0x59, 0xa2, - 0x4e, 0x76, 0x98, 0x9d, 0x10, 0xa9, 0xef, 0xd5, 0x7f, 0xc8, 0x82, 0xc0, 0xe7, 0x56, 0xec, - 0x98, 0xb0, 0x19, 0x1e, 0xd3, 0x81, 0x8f, 0x84, 0x09, 0xf5, 0x73, 0x39, 0xe0, 0x4f, 0xd2, - 0x44, 0x2f, 0x46, 0x27, 0x03, 0x7d, 0x5e, 0x9a, 0x58, 0x77, 0x54, 0x4d, 0x12, 0x7d, 0x9a, - 0x20, 0x08, 0xb6, 0x78, 0x6f, 0x97, 0x25, 0xab, 0xc1, 0xa3, 0xae, 0xa9, 0xf7, 0x47, 0x1d, - 0x4c, 0x77, 0xb4, 0xd6, 0xe9, 0xec, 0x29, 0x2a, 0x3c, 0x93, 0x82, 0x92, 0xc4, 0xe2, 0x6f, - 0xf1, 0xb9, 0x0d, 0xb9, 0x82, 0xdf, 0xae, 0xf3, 0x71, 0xf9, 0x24, 0x49, 0xe9, 0xdd, 0xf9, - 0x91, 0x66, 0x49, 0x48, 0x4a, 0x3b, 0x98, 0x10, 0xca, 0x88, 0x6f, 0x4e, 0x42, 0xc5, 0xb4, - 0x2b, 0x93, 0xa9, 0xdf, 0xc6, 0xde, 0x11, 0x22, 0xa7, 0xd3, 0x99, 0x7b, 0xd5, 0x3f, 0xbe, - 0x51, 0x76, 0xc9, 0x6e, 0x05, 0x8f, 0x01, 0x0b, 0x94, 0xf4, 0x5c, 0x2c, 0x87, 0x97, 0x9a, - 0x4a, 0x3b, 0x39, 0xb8, 0xf3, 0xa9, 0xe7, 0xf9, 0x90, 0x95, 0x12, 0xb5, 0x8b, 0x6f, 0x09, - 0xdc, 0xa7, 0x7f, 0x0b, 0x8d, 0x55, 0x3a, 0x1c, 0x7d, 0x9e, 0x09, 0x46, 0xc8, 0x32, 0xa9, - 0x7c, 0x42, 0xab, 0x94, 0xcd, 0x0b, 0x1c, 0xe2, 0xcf, 0x47, 0xa8, 0x01, 0x92, 0xeb, 0x82, - 0x09, 0xac, 0x00, 0xf4, 0xbd, 0x74, 0x7c, 0x95, 0xcb, 0xb6, 0xdc, 0x58, 0x69, 0x44, 0xb8, - 0xd1, 0x86, 0x0d, 0xde, 0x44, 0x71, 0x71, 0xfd, 0x27, 0x10, 0xe8, 0xfd, 0x0e, 0x42, 0xa9, - 0x25, 0xb9, 0xc6, 0x4f, 0x0f, 0x08, 0x4c, 0xc7, 0xef, 0xdf, 0xe1, 0x0b, 0x2b, 0x22, 0xc5, - 0x5a, 0xb8, 0xdf, 0x9b, 0xe2, 0xab, 0x48, 0xaa, 0x40, 0x39, 0xca, 0xdf, 0xee, 0x77, 0x1f, - 0x35, 0x7c, 0xeb, 0x85, 0xc4, 0x24, 0xc2, 0x86, 0xb0, 0xfc, 0xb1, 0x40, 0xda, 0x0a, 0x34, - 0xa0, 0x34, 0xd2, 0x10, 0x70, 0xf2, 0x01, 0x19, 0xd3, 0xf1, 0x76, 0xbc, 0x1f, 0xdb, 0xc9, - 0x4f, 0x09, 0x5a, 0x19, 0x19, 0x0b, 0x52, 0x63, 0xc3, 0x9f, 0x7f, 0x89, 0xfe, 0xc3, 0xae, - 0x7d, 0x61, 0x61, 0x31, 0x38, 0x7f, 0x35, 0x16, 0xb6, 0x26, 0x47, 0x73, 0x54, 0xec, 0xc6, - 0x52, 0x70, 0x19, 0x02, 0x81, 0xde, 0x45, 0x68, 0x8e, 0xbd, 0x8c, 0x12, 0x92, 0xfa, 0xd6, - 0xb6, 0xe1, 0x0d, 0x8c, 0x7b, 0x9d, 0x82, 0xb9, 0x5f, 0x85, 0xdc, 0xd0, 0x48, 0x7c, 0x5f, - 0x6a, 0x05, 0xc6, 0x0a, 0xb9, 0x27, 0xf3, 0x1e, 0xab, 0x28, 0x91, 0xbb, 0x85, 0xec, 0xb8, - 0x4e, 0x49, 0x13, 0x19, 0xbf, 0xe8, 0x12, 0x17, 0x62, 0x7b, 0x05, 0xbc, 0x67, 0x6e, 0x5c, - 0xb7, 0xf7, 0x94, 0xd6, 0xfb, 0xd3, 0x85, 0x26, 0x38, 0x65, 0x17, 0x36, 0xbc, 0xb6, 0xf9, - 0x21, 0x48, 0x5e, 0x93, 0xdb, 0x44, 0x40, 0x89, 0x29, 0x4b, 0xc1, 0x29, 0x90, 0x79, 0xb1, - 0x11, 0x76, 0xa6, 0x57, 0x70, 0x9c, 0x56, 0xa7, 0xf3, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x4d, 0x04, 0x6b, 0xc7, 0x27, 0xa9, 0xf1, 0x30, 0x8a, 0xa5, 0xc3, - 0x2f, 0x80, 0x7f, 0xc4, 0x4f, 0x40, 0x31, 0x7b, 0x4f, 0x57, 0x8c, 0xf5, 0x40, 0x40, 0x41, - 0x2d, 0x8f, 0x7e, 0x3e, 0x36, 0x04, 0x42, 0x89, 0x65, 0x62, 0xca, 0x45, 0xf0, 0x89, 0xbb, - 0xa0, 0xfa, 0xb8, 0x3f, 0xe2, 0x6f, 0x4f, 0xf2, 0xcb, 0xea, 0xf3, 0x69, 0x81, 0xa2, 0xf9, - 0x92, 0x95, 0xb6, 0x3a, 0xd2, 0x96, 0x25, 0x01, 0xce, 0x2c, 0x6d, 0x87, 0xd0, 0x18, 0x4c, - 0x17, 0x99, 0xa2, 0x54, 0xed, 0x03, 0x04, 0x7c, 0xf5, 0x7a, 0x3b, 0xfd, 0x49, 0xb8, 0xa4, - 0x43, 0x8d, 0x49, 0x6d, 0x74, 0x1c, 0xf5, 0xac, 0xa6, 0xbd, 0x00, 0x01, 0xec, 0xd3, 0x72, - 0x28, 0xb0, 0x0c, 0x89, 0x73, 0xda, 0x40, 0x03, 0x37, 0x30, 0x05, 0x87, 0xf4, 0x89, 0x97, - 0x46, 0x59, 0x59, 0xef, 0xe0, 0x9a, 0xc5, 0xe0, 0x12, 0xe1, 0x4f, 0x51, 0xeb, 0x24, 0xfc, - 0x1d, 0x39, 0x82, 0xd5, 0xbc, 0x09, 0x96, 0xb1, 0x9d, 0xf2, 0xd9, 0xd7, 0xae, 0x1a, 0xc5, - 0x91, 0x6a, 0xb4, 0x7e, 0xf6, 0xef, 0xa1, 0x6e, 0x12, 0xc3, 0x95, 0xd5, 0xfe, 0x2c, 0x43, - 0x22, 0x21, 0x65, 0x5b, 0xce, 0x44, 0xed, 0x91, 0xe1, 0x50, 0xbd, 0x5e, 0x25, 0x06, 0x52, - 0xdd, 0x7d, 0xca, 0x25, 0xe3, 0x4c, 0xe2, 0xed, 0xfb, 0x3e, 0x77, 0x82, 0xc2, 0x09, 0x56, - 0xcf, 0xa3, 0x05, - ], - &[ - 0x04, 0x00, 0x00, 0x00, 0xa4, 0x3f, 0x07, 0xc4, 0x88, 0xc6, 0xd5, 0x86, 0x16, 0x8c, 0x51, - 0xee, 0x2c, 0x40, 0xd7, 0x9e, 0x94, 0xcb, 0xd2, 0x0d, 0x13, 0x89, 0x66, 0x98, 0xb2, 0xb8, - 0x30, 0x08, 0x00, 0xa4, 0x1f, 0x1a, 0xd8, 0x2a, 0xde, 0xf7, 0x4a, 0x27, 0x2f, 0xb2, 0xc1, - 0x1b, 0xab, 0x1e, 0x27, 0x37, 0xac, 0x4c, 0x6f, 0x26, 0x33, 0xe0, 0xb4, 0xe2, 0x90, 0xa2, - 0x39, 0xbe, 0x72, 0x2d, 0x33, 0x4c, 0x79, 0x10, 0x83, 0x93, 0xa1, 0xbc, 0xdb, 0xd8, 0x20, - 0xf2, 0x04, 0x40, 0x0b, 0x39, 0xc0, 0x1f, 0x1b, 0x06, 0xd4, 0x22, 0x4b, 0x24, 0x2c, 0x38, - 0x89, 0xaf, 0x5a, 0x5a, 0xba, 0x02, 0x8f, 0xbe, 0x4c, 0x6a, 0x22, 0x25, 0x4a, 0x4d, 0x0f, - 0x0f, 0x0f, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0xfd, 0x40, 0x05, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, - 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x85, 0x20, 0x2f, 0x89, 0x01, 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, 0xff, - 0xff, 0xff, 0xff, 0x02, 0x55, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x40, 0xbe, 0x40, 0x25, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0x75, 0xdd, 0x6d, 0x7f, 0x4b, 0xef, 0x95, - 0xaa, 0x1f, 0xf1, 0xa7, 0x11, 0xe5, 0xbf, 0xd8, 0x53, 0xb4, 0xc6, 0xaa, 0xf8, 0x88, 0xac, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x77, 0x77, 0x77, 0x77, 0xd8, 0x0a, 0x19, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0xe6, 0x99, 0x8d, 0x77, 0xa5, 0xa5, 0x34, 0xce, 0xdf, 0x7f, 0x28, 0x3b, 0x17, 0x2f, 0x8e, - 0xf6, 0xbc, 0xa3, 0x28, 0xbd, 0x8d, 0x72, 0xde, 0x3c, 0x50, 0xd4, 0xa7, 0xfd, 0x5e, 0x99, - 0xbf, 0x22, 0xf7, 0xbd, 0xa1, 0x65, 0xdf, 0xdc, 0x54, 0x36, 0xd9, 0xc5, 0xcc, 0x28, 0x50, - 0xd9, 0x32, 0x3a, 0xfa, 0xa5, 0xfc, 0x31, 0x8a, 0x7b, 0xaa, 0xcf, 0x63, 0x3a, 0xb9, 0xb4, - 0x11, 0x48, 0x26, 0x30, 0xdf, 0xdd, 0xdf, 0x42, 0xd1, 0x44, 0x17, 0xa1, 0x32, 0xba, 0x99, - 0x04, 0x40, 0xd7, 0x94, 0xa7, 0xcf, 0x6b, 0xe1, 0x21, 0xfc, 0xbb, 0xf4, 0x34, 0xcb, 0x83, - 0x60, 0xe5, 0x4a, 0x32, 0x71, 0x80, 0xcc, 0xa6, 0xbd, 0x85, 0xf5, 0x0f, 0x5c, 0x12, 0x20, - 0x01, 0x8e, 0x37, 0x7d, 0xdd, 0x80, 0x26, 0x11, 0xe5, 0x7a, 0x5d, 0xea, 0xb4, 0xca, 0xca, - 0xc3, 0xaa, 0x2a, 0xca, 0x59, 0xa7, 0x6d, 0x21, 0x12, 0xde, 0xa5, 0xe9, 0xab, 0xf5, 0xc8, - 0x00, 0xd1, 0xdc, 0x99, 0xcc, 0x55, 0x2e, 0x65, 0x1b, 0x32, 0x28, 0x9d, 0x89, 0xb9, 0xdc, - 0xff, 0xac, 0xfc, 0x8a, 0x05, 0x2f, 0x54, 0x18, 0x46, 0x1d, 0x06, 0x79, 0x97, 0x01, 0xaf, - 0x4e, 0x17, 0x02, 0x86, 0xd7, 0xcf, 0x6a, 0xf4, 0x82, 0xc1, 0xb2, 0x0b, 0xf6, 0x2e, 0x51, - 0x46, 0xfc, 0x3d, 0x2e, 0x1d, 0xf8, 0x68, 0x6e, 0xcd, 0xb0, 0x94, 0xa4, 0xf8, 0xf7, 0x14, - 0x4d, 0xa6, 0x7a, 0x30, 0x24, 0x88, 0x7c, 0x56, 0x16, 0x4d, 0xa3, 0x82, 0xcf, 0xbc, 0xbf, - 0x20, 0xb8, 0x02, 0xfb, 0x52, 0xb7, 0x0f, 0xa4, 0xf3, 0xab, 0x4d, 0xab, 0x2e, 0xf7, 0x3f, - 0xa9, 0xd8, 0xe8, 0xea, 0xf2, 0x9a, 0x4b, 0xb8, 0xee, 0xf1, 0x57, 0xec, 0x5b, 0x9c, 0x6b, - 0x10, 0xcc, 0x44, 0x87, 0x83, 0x46, 0x29, 0x35, 0x61, 0x55, 0x3d, 0x10, 0x96, 0xba, 0x43, - 0x1e, 0x62, 0xa0, 0xde, 0x94, 0x17, 0x33, 0x01, 0x88, 0x28, 0xcc, 0xf9, 0x97, 0x9c, 0xee, - 0x01, 0x98, 0xe4, 0xb8, 0xe5, 0xa0, 0x81, 0xda, 0x9c, 0xa9, 0xd1, 0x1b, 0xdf, 0x5c, 0x81, - 0x18, 0x0a, 0x33, 0xea, 0x4a, 0x59, 0xaf, 0xbc, 0x9f, 0x0f, 0xe3, 0x96, 0xa3, 0x5e, 0x25, - 0xa1, 0x98, 0x8d, 0x2e, 0x6c, 0x99, 0xa0, 0xe4, 0xfa, 0x87, 0x19, 0xd6, 0x10, 0xdd, 0xb4, - 0xfc, 0xf2, 0xa2, 0x43, 0x05, 0x3b, 0xb8, 0x31, 0x4c, 0x39, 0xba, 0x3c, 0xdb, 0x93, 0x12, - 0x83, 0xee, 0xac, 0x89, 0x6c, 0xbd, 0x06, 0x3d, 0x4f, 0x1d, 0x0a, 0x5b, 0xcf, 0xb3, 0xff, - 0xba, 0x36, 0xef, 0x2d, 0x6e, 0xea, 0x37, 0x15, 0x50, 0x68, 0x29, 0x53, 0x56, 0x34, 0x32, - 0xff, 0x8b, 0x51, 0x22, 0x4d, 0x3d, 0xc8, 0x78, 0x99, 0xda, 0x8d, 0xf3, 0x2b, 0x01, 0xd1, - 0x7d, 0x09, 0x2e, 0x63, 0x52, 0x2e, 0x30, 0x38, 0x11, 0x38, 0x46, 0x36, 0x70, 0xdc, 0x34, - 0xce, 0x45, 0x48, 0xd6, 0x84, 0x64, 0x2f, 0x59, 0x6b, 0x43, 0xd5, 0x17, 0xb0, 0xde, 0x2e, - 0x15, 0x89, 0x12, 0x5a, 0x11, 0xb9, 0x8e, 0xe8, 0xc1, 0x19, 0x96, 0x50, 0xed, 0x12, 0xb4, - 0x74, 0x43, 0xef, 0x1b, 0xbb, 0xc9, 0x8e, 0x8e, 0x39, 0x6e, 0x21, 0xc1, 0x29, 0x6e, 0x74, - 0x1b, 0x41, 0xd4, 0x5a, 0xa5, 0xdd, 0xa9, 0xd2, 0x12, 0x10, 0x56, 0xfb, 0xd3, 0x4f, 0xc0, - 0x0e, 0xba, 0x1c, 0xaa, 0xa7, 0x68, 0x61, 0x59, 0x45, 0xfc, 0x43, 0x75, 0x27, 0xcb, 0x18, - 0x07, 0x6a, 0x48, 0x25, 0x91, 0xac, 0x96, 0x90, 0xa6, 0xc1, 0x81, 0xc8, 0xf2, 0xfa, 0xc9, - 0x6d, 0xa9, 0x1c, 0xf3, 0xd5, 0xb2, 0x55, 0xf8, 0xa5, 0x6a, 0x75, 0xdf, 0x24, 0x2f, 0x67, - 0x17, 0x36, 0x13, 0x93, 0x3b, 0xd0, 0xf9, 0xbc, 0xf0, 0xe8, 0x22, 0xee, 0x60, 0xa9, 0x98, - 0x82, 0xf9, 0x30, 0xe6, 0x7f, 0xda, 0xd2, 0xfe, 0xbc, 0xee, 0x72, 0x48, 0x25, 0x18, 0x0b, - 0x4a, 0x94, 0x06, 0x2b, 0xa0, 0xe2, 0x73, 0xf2, 0xd5, 0x11, 0x2f, 0xff, 0xa2, 0xd4, 0xff, - 0x16, 0x9d, 0xb2, 0xb0, 0x53, 0xa2, 0x24, 0x20, 0x5f, 0x13, 0xfd, 0x83, 0x04, 0x05, 0x0e, - 0x33, 0xc2, 0xe5, 0x11, 0x15, 0xec, 0x44, 0x10, 0x87, 0x40, 0xdd, 0xfc, 0xf4, 0x5a, 0x01, - 0x0e, 0xae, 0x99, 0x37, 0x7f, 0x1e, 0x50, 0x5f, 0x0d, 0x75, 0x71, 0xe4, 0xfc, 0xda, 0x2c, - 0x31, 0xf0, 0xe6, 0xf9, 0x5b, 0x4e, 0x15, 0x9a, 0x79, 0xc7, 0x16, 0x0b, 0xc2, 0xc0, 0xb9, - 0x63, 0xfd, 0xfe, 0x9c, 0x48, 0xda, 0xf8, 0xb4, 0x04, 0x80, 0x31, 0xd0, 0x1f, 0xb3, 0xb9, - 0x05, 0x9e, 0xbb, 0xea, 0x40, 0x8c, 0xaa, 0x66, 0xe8, 0x11, 0x9c, 0x37, 0x84, 0xab, 0x46, - 0x4d, 0x00, 0x2b, 0x0b, 0x7d, 0xc9, 0x98, 0x71, 0xc3, 0xa5, 0xb7, 0xc1, 0x0f, 0xe9, 0xa2, - 0x34, 0x87, 0xe7, 0x89, 0xa6, 0x08, 0x13, 0x67, 0xf8, 0xb0, 0x43, 0x16, 0x82, 0x69, 0xb0, - 0x52, 0x6e, 0xf5, 0xf8, 0xeb, 0x19, 0x1d, 0x2b, 0x1d, 0x61, 0x9d, 0x0e, 0x3a, 0x27, 0x6f, - 0x19, 0x08, 0x29, 0xcf, 0xe4, 0x79, 0x18, 0xb7, 0x8f, 0xa0, 0x38, 0x18, 0x06, 0x9b, 0xda, - 0xfc, 0xe4, 0x2c, 0x53, 0x37, 0x18, 0x58, 0xee, 0xec, 0xa7, 0x25, 0xae, 0xb2, 0xa7, 0xaf, - 0x0a, 0x46, 0x09, 0xe2, 0x5a, 0xc1, 0x4a, 0x3a, 0x0d, 0xcc, 0x8f, 0x28, 0xfe, 0x67, 0xc1, - 0xfb, 0xaf, 0x33, 0x1f, 0x67, 0x43, 0x69, 0xc4, 0x80, 0xf0, 0xdd, 0xa9, 0x4a, 0x34, 0x6e, - 0x23, 0xc4, 0xb9, 0x75, 0x4c, 0x7f, 0xeb, 0xb0, 0x16, 0x4d, 0xad, 0x9a, 0xcd, 0x66, 0x09, - 0x0a, 0x7d, 0x87, 0x0c, 0xe4, 0x2b, 0x2f, 0x87, 0x07, 0x65, 0x0e, 0x3a, 0x1c, 0x9b, 0x12, - 0xab, 0xf7, 0x3e, 0x4f, 0xd2, 0xc8, 0x84, 0x13, 0x98, 0x3b, 0xfe, 0x0a, 0xa0, 0xa8, 0x32, - 0x34, 0xf7, 0x9c, 0xf3, 0xd7, 0xe4, 0x6b, 0x8f, 0x07, 0x1d, 0x4d, 0xb1, 0x6a, 0x42, 0xba, - 0x6c, 0x74, 0xb2, 0x33, 0xbe, 0x5b, 0x4f, 0xe4, 0x32, 0xc7, 0x6d, 0xc7, 0xbd, 0xf9, 0x5a, - 0xae, 0xa4, 0x96, 0x93, 0xf5, 0x32, 0xbc, 0x3a, 0xd0, 0xc0, 0x59, 0xab, 0x28, 0x0b, 0x86, - 0x63, 0x06, 0xdb, 0x9f, 0x74, 0x3d, 0xd0, 0x4a, 0xbe, 0x4e, 0xfb, 0xe3, 0xf6, 0x23, 0x74, - 0x32, 0x4f, 0x26, 0x49, 0xa4, 0x06, 0xe8, 0x01, 0x58, 0xe3, 0xe9, 0xac, 0x7c, 0xd1, 0xdf, - 0x82, 0x43, 0x4d, 0xaa, 0x48, 0x99, 0xef, 0xdf, 0x3f, 0xeb, 0xd9, 0xdb, 0xaf, 0xb0, 0x19, - 0xe6, 0xac, 0x32, 0x65, 0xe9, 0x36, 0x31, 0xe3, 0xbd, 0x75, 0x58, 0xe8, 0xc9, 0xb4, 0x11, - 0x13, 0xe2, 0xb1, 0x1f, 0x61, 0x7c, 0x17, 0x9a, 0xcd, 0x9d, 0x57, 0x7a, 0x02, 0xa0, 0xcd, - 0xa5, 0x62, 0x36, 0xcb, 0x70, 0xe3, 0x98, 0x4f, 0xd1, 0x7d, 0xff, 0x31, 0x68, 0x6c, 0x5a, - 0x04, 0xde, 0xb6, 0x97, 0xc8, 0x5d, 0x83, 0x4b, 0xd1, 0xc0, 0x57, 0xad, 0x8f, 0x25, 0xeb, - 0xd9, 0x06, 0x5a, 0xf0, 0xb2, 0xca, 0xaf, 0x4f, 0xb7, 0x7b, 0x04, 0x57, 0x3c, 0xed, 0xad, - 0x35, 0x41, 0x0a, 0x21, 0xb7, 0xcb, 0x22, 0x55, 0x9a, 0x61, 0x84, 0x6a, 0x49, 0xeb, 0xf6, - 0x80, 0xa2, 0x9d, 0xf8, 0x84, 0x31, 0x98, 0x80, 0x94, 0x9e, 0xc7, 0x0e, 0xdb, 0xad, 0x4f, - 0x1d, 0x24, 0x47, 0xd0, 0x34, 0x1f, 0x63, 0xde, 0x68, 0xf2, 0xba, 0x0b, 0x11, 0x5e, 0x1c, - 0x61, 0x94, 0xff, 0x27, 0xba, 0xc2, 0xdd, 0xdd, 0x07, 0x9a, 0x77, 0x77, 0x68, 0x96, 0x6d, - 0x5f, 0x46, 0x40, 0xc5, 0x0d, 0x04, 0xad, 0x6d, 0x00, 0x82, 0x80, 0x8f, 0x79, 0x88, 0xa4, - 0x58, 0x03, 0x64, 0x56, 0x03, 0xd3, 0x71, 0x38, 0x0c, 0xc4, 0x51, 0xb7, 0x12, 0x99, 0xf6, - 0x51, 0x9d, 0x1e, 0x05, 0x63, 0x03, 0xb9, 0x16, 0xbf, 0x71, 0x5b, 0xf1, 0xef, 0xf1, 0xc2, - 0x13, 0x02, 0xfd, 0x3a, 0x9b, 0xee, 0x08, 0x7c, 0x3e, 0xd9, 0x04, 0xd3, 0x2d, 0xb2, 0xca, - 0xfe, 0xb4, 0xe2, 0xed, 0x4d, 0x86, 0x0c, 0x83, 0x61, 0x7b, 0x52, 0x04, 0x23, 0x36, 0xaa, - 0x11, 0xf1, 0xdf, 0x6c, 0x19, 0xcc, 0xaf, 0xa0, 0x22, 0xc2, 0x93, 0x7f, 0xa4, 0x7b, 0xf1, - 0x91, 0x8d, 0xb0, 0xfa, 0x6a, 0x08, 0xd1, 0x7d, 0x76, 0x75, 0x6b, 0xb8, 0x44, 0xfb, 0x90, - 0x94, 0x4a, 0x0e, 0x2c, 0xc6, 0x09, 0xf7, 0xc4, 0x70, 0x0e, 0xc1, 0xa8, 0x29, 0xf8, 0x00, - 0xdb, 0xd5, 0xfb, 0xdd, 0x2e, 0xff, 0x37, 0x10, 0xe3, 0x0f, 0x12, 0xa3, 0xe0, 0xd6, 0x49, - 0x9e, 0xa3, 0x42, 0x15, 0x00, 0x0f, 0xc3, 0x86, 0x23, 0x18, 0x83, 0xc2, 0x06, 0xbe, 0xd4, - 0xbb, 0x2d, 0x69, 0x48, 0x79, 0xf5, 0xff, 0xed, 0x89, 0x87, 0xa3, 0x31, 0x15, 0x39, 0x78, - 0xf0, 0xcd, 0xe7, 0x19, 0xb3, 0xbb, 0xd5, 0x25, 0x8a, 0x49, 0x6f, 0x20, 0x0b, 0xc4, 0xdf, - 0xe0, 0x42, 0x38, 0x1b, 0xeb, 0x85, 0x69, 0x96, 0x2e, 0xb8, 0x58, 0x2c, 0xf1, 0x9e, 0xdf, - 0x1b, 0x06, 0x27, 0x94, 0x38, 0x91, 0xd2, 0x1e, 0x60, 0xac, 0xb8, 0x16, 0xdc, 0x32, 0xd2, - 0x50, 0x21, 0x99, 0xbb, 0xe4, 0xcb, 0x08, 0xaf, 0xf5, 0x69, 0x23, 0xe1, 0x25, 0xfd, 0x5c, - 0xb5, 0xcd, 0x5c, 0xb7, 0x90, 0x04, 0x5d, 0x1f, 0x0b, 0x6f, 0x16, 0x3d, 0x26, 0x2e, 0x8a, - 0xdd, 0x8c, 0x0d, 0x6a, 0x24, 0xa1, 0x2a, 0xbe, 0xf2, 0xb5, 0xee, 0xfb, 0x64, 0xaf, 0x82, - 0x33, 0x31, 0x64, 0xe3, 0x1a, 0xb6, 0x66, 0x4b, 0xc1, 0x79, 0xbe, 0x74, 0xa4, 0xaf, 0x58, - 0x24, 0x7b, 0x80, 0xa5, 0x87, 0xd8, 0x10, 0xe1, 0xbc, 0x20, 0x5c, 0x4b, 0xfc, 0x51, 0xb4, - 0x41, 0xec, 0x3d, 0x59, 0xf6, 0xe7, 0x9a, 0x90, 0x2f, 0x52, 0x27, 0xd9, 0x47, 0x1b, 0x44, - 0xad, 0xd7, 0x11, 0x91, 0x6b, 0xa7, 0x29, 0x13, 0xfd, 0xbd, 0x2c, 0xd2, 0xdf, 0x40, 0x96, - 0xec, 0xcb, 0xb7, 0x49, 0xac, 0x93, 0x23, 0xc4, 0xcc, 0xb0, 0x95, 0x40, 0xcd, 0x43, 0x67, - 0xf1, 0x84, 0x6f, 0xf5, 0x7e, 0xa2, 0x39, 0xf7, 0x02, 0x49, 0x9c, 0x5d, 0x1c, 0x7b, 0x2d, - 0x79, 0x08, 0x72, 0x7c, 0x56, 0xbb, 0x65, 0x55, 0xd1, 0x2e, 0x5f, 0x83, 0xdd, 0xec, 0xec, - 0x90, 0x1c, 0x39, 0xc6, 0x27, 0x4d, 0x17, 0x12, 0xb6, 0xd4, 0x97, 0xc5, 0xf8, 0x38, 0xaf, - 0xbe, 0x07, 0xb1, 0x9e, 0x82, 0x09, 0x29, 0x7a, 0xbd, 0xd4, 0x85, 0x2e, 0x55, 0x6d, 0xd5, - 0xba, 0x7b, 0xae, 0xb0, 0x62, 0x39, 0x70, 0xa2, 0x7f, 0x4c, 0x3d, 0xc5, 0xab, 0xe3, 0xa9, - 0x96, 0x8f, 0xca, 0x0a, 0x20, 0xf2, 0x7f, 0xad, 0x05, 0x9c, 0xea, 0x22, 0xd7, 0x64, 0xf5, - 0x63, 0xa6, 0x31, 0x3c, 0x1e, 0x3b, 0xb5, 0xbb, 0x6d, 0xaa, 0x4c, 0x99, 0xc6, 0x30, 0xe3, - 0x6c, 0x74, 0x26, 0xe2, 0xac, 0x4c, 0x64, 0x84, 0x32, 0x32, 0xf4, 0xdd, 0x89, 0xea, 0x25, - 0xaf, 0xfc, 0x65, 0x50, 0x79, 0x01, 0x0f, 0x11, 0x3f, 0x67, 0xea, 0x22, 0x51, 0xd1, 0xc8, - 0xe5, 0xea, 0xb3, 0x99, 0xe3, 0x7f, 0xa9, 0xb3, 0x27, 0x2b, 0x9b, 0x12, 0xfb, 0x1c, 0xd9, - 0x55, 0xbc, 0x99, 0xb7, 0xdd, 0x17, 0xe7, 0xca, 0xc1, 0xd5, 0x22, 0xcc, 0xb4, 0x58, 0x67, - 0xf8, 0x28, 0x11, 0xcc, 0x17, 0x31, 0x92, 0x6a, 0xdf, 0x90, 0x4a, 0x6a, 0x93, 0x9d, 0x86, - 0x85, 0x9b, 0x75, 0x9d, 0xc2, 0xd7, 0x90, 0x44, 0xc2, 0xc3, 0xa6, 0x9b, 0xcc, 0xa6, 0x79, - 0x7f, 0xae, 0x83, 0x77, 0xd3, 0x36, 0x9e, 0x9f, 0x26, 0x01, 0x2b, 0xc4, 0x24, 0x5c, 0xa5, - 0x3f, 0x3f, 0x4e, 0x94, 0x40, 0x1f, 0x6b, 0x05, 0x65, 0xdf, 0xc5, 0xe6, 0x0d, 0x84, 0x36, - 0xdc, 0xcc, 0x40, 0x43, 0x0d, 0x16, 0x39, 0x09, 0x03, 0x55, 0x11, 0x7d, 0xf7, 0x1f, 0xd5, - 0xd3, 0xbb, 0x38, 0x3c, 0xf4, 0x2c, 0xaa, 0xe3, 0x35, 0xfc, 0xc8, 0x21, 0x16, 0x4d, 0x28, - 0x75, 0x8e, 0x48, 0x80, 0xab, 0xe2, 0x80, 0xe8, 0xda, 0xac, 0x36, 0x04, 0x67, 0x0a, 0x32, - 0xd9, 0x33, 0x30, 0xbf, 0x46, 0x40, 0x44, 0x96, 0x0e, 0x85, 0xb5, 0xa5, 0x25, 0xf9, 0xa0, - 0xf9, 0xf6, 0xfc, 0x45, 0x25, 0x82, 0x4c, 0x59, 0x2b, 0xd3, 0xa8, 0xd8, 0x66, 0xe8, 0x2f, - 0xa3, 0x27, 0x44, 0x44, 0x22, 0x4c, 0x3a, 0x25, 0x45, 0xe6, 0x9d, 0x04, 0xa8, 0xe8, 0x10, - 0x55, 0xc2, 0xa4, 0x4b, 0x0d, 0x74, 0x3e, 0x1f, 0x38, 0x52, 0x2b, 0xe4, 0xae, 0x25, 0xd0, - 0xd5, 0x2e, 0xbb, 0x10, 0x3a, 0x85, 0xd3, 0xf1, 0xe4, 0xc1, 0x3a, 0xca, 0x71, 0xf2, 0x87, - 0x80, 0xb6, 0xe7, 0x28, 0x20, 0x25, 0x72, 0xcd, 0x58, 0x6f, 0x9c, 0x9e, 0x29, 0xb9, 0x9a, - 0x69, 0x04, 0x9d, 0xe0, 0xad, 0x5b, 0x7c, 0xe1, 0x13, 0x07, 0x6d, 0xef, 0xee, 0x64, 0x98, - 0x08, 0xcd, 0x1e, 0xec, 0x13, 0x96, 0x6a, 0xce, 0x14, 0x68, 0x11, 0x26, 0x91, 0x6e, 0x65, - 0xa9, 0x30, 0x5e, 0xfe, 0x7a, 0xf1, 0x44, 0x0f, 0x5f, 0x40, 0x8e, 0x3b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfd, 0xe0, 0x1c, 0xa6, 0x83, 0xd8, 0x30, 0xfb, 0xef, 0xd6, 0x7b, 0x98, 0xb1, - 0xf8, 0x41, 0x25, 0xe9, 0xe2, 0xd3, 0xa8, 0x44, 0xf3, 0x8f, 0xed, 0x52, 0x40, 0x0e, 0xfb, - 0xe4, 0xf5, 0xf9, 0x25, 0x15, 0xef, 0x0b, 0xdd, 0x76, 0xfc, 0x97, 0x26, 0x43, 0xac, 0xf8, - 0xeb, 0xad, 0xd4, 0xd9, 0x7d, 0xca, 0x4c, 0x59, 0x19, 0x68, 0xec, 0xed, 0x40, 0x58, 0x20, - 0xd6, 0x08, 0xd8, 0x47, 0xa6, 0x33, 0x41, 0xb1, 0x3e, 0x49, 0x49, 0xad, 0xfd, 0x95, 0x10, - 0x6b, 0x00, 0x35, 0xaa, 0x17, 0x59, 0xa9, 0xb7, 0x68, 0x78, 0x63, 0xa3, 0x51, 0xb1, 0x2e, - 0xe9, 0x38, 0xd3, 0x7e, 0x6c, 0x3f, 0x7e, 0xfb, 0xc0, 0xd6, 0x99, 0xb9, 0x9f, 0xea, 0xd6, - 0x94, 0xf5, 0x83, 0xb6, 0x7f, 0x73, 0x59, 0xab, 0x7c, 0xe5, 0xd9, 0xf8, 0x43, 0x49, 0x1b, - 0xf8, 0xe6, 0x4f, 0xc4, 0xb5, 0x63, 0x04, 0x5d, 0xe5, 0x35, 0xa3, 0x91, 0xad, 0x07, 0xe9, - 0x69, 0x6a, 0x68, 0xbd, 0x54, 0x79, 0x2d, 0x27, 0xd5, 0x6a, 0x15, 0xc6, 0x72, 0x12, 0xcb, - 0x57, 0xc7, 0x8a, 0xbf, 0x4a, 0xe1, 0xa7, 0x89, 0x8a, 0xa9, 0xa7, 0x15, 0x6e, 0xee, 0x81, - 0x3c, 0xbc, 0x2f, 0xd2, 0x54, 0x46, 0x4c, 0x10, 0x46, 0x8a, 0x8a, 0xf8, 0x43, 0xb1, 0x58, - 0x64, 0x91, 0x9a, 0x7b, 0x00, 0x62, 0x8d, 0xfd, 0x6c, 0x43, 0x62, 0xf7, 0x2c, 0xd3, 0x65, - 0xb9, 0xa7, 0x66, 0xa9, 0xbc, 0x1e, 0x2d, 0xcf, 0x71, 0x6d, 0x7b, 0xcf, 0x59, 0xda, 0xc3, - 0xeb, 0xae, 0x1e, 0x41, 0x15, 0x99, 0x9d, 0xd8, 0xf6, 0x98, 0x5d, 0x38, 0xa3, 0x02, 0x5b, - 0xcb, 0x92, 0x00, 0x1b, 0xbc, 0xd4, 0x18, 0x5e, 0x61, 0xd4, 0x7a, 0xc5, 0x08, 0x8d, 0x9a, - 0x65, 0xc2, 0x8f, 0xf9, 0x9a, 0x26, 0xcd, 0x86, 0x48, 0xa3, 0x83, 0xf7, 0xd9, 0x3b, 0xb1, - 0x54, 0x3e, 0x7d, 0xd1, 0x2d, 0x91, 0x63, 0x9d, 0x43, 0x14, 0xde, 0xce, 0xdf, 0x85, 0x13, - 0x2b, 0x95, 0x3f, 0x6f, 0x6f, 0x1b, 0x87, 0x3f, 0x32, 0xb4, 0x4f, 0x61, 0x0d, 0x3e, 0x70, - 0x8d, 0x4e, 0x99, 0xbe, 0x9f, 0x80, 0x51, 0xac, 0xaa, 0x82, 0x14, 0x83, 0xd0, 0xa4, 0x66, - 0xc8, 0x0a, 0xbe, 0xa6, 0x98, 0x4c, 0x25, 0xf7, 0xad, 0x43, 0x8d, 0x59, 0xe5, 0x8e, 0x6b, - 0xf0, 0x08, 0x06, 0xc2, 0xcf, 0xe6, 0x61, 0x47, 0x87, 0x85, 0x05, 0x57, 0x3d, 0xdf, 0x97, - 0x83, 0xd6, 0xfd, 0x1b, 0x3d, 0x89, 0xa9, 0x09, 0x7b, 0x92, 0xe6, 0xe0, 0x3b, 0xde, 0x0c, - 0x90, 0x3d, 0x82, 0xcc, 0x6f, 0x4f, 0xda, 0xef, 0x89, 0x05, 0xca, 0x1a, 0x50, 0x71, 0xe6, - 0x38, 0x08, 0x59, 0xef, 0xf6, 0x1f, 0x11, 0xca, 0x29, 0x41, 0x1e, 0x2e, 0xfa, 0x2e, 0x94, - 0x84, 0x06, 0xe0, 0x8f, 0x59, 0xb3, 0x20, 0x1b, 0x8a, 0x69, 0xf3, 0x4f, 0xa7, 0xbe, 0x69, - 0x89, 0x9c, 0xf4, 0x0c, 0x03, 0x5c, 0x99, 0x65, 0xc3, 0x81, 0x4b, 0x79, 0x40, 0x6a, 0xd2, - 0x1c, 0x50, 0x7e, 0x58, 0xa9, 0x63, 0x2f, 0x83, 0x2a, 0xa8, 0x9c, 0xf0, 0x5c, 0xdf, 0x6b, - 0x83, 0xfc, 0x24, 0x4a, 0x8c, 0xc7, 0x43, 0x90, 0x09, 0x22, 0x6b, 0x52, 0xee, 0xeb, 0xab, - 0x5c, 0x59, 0xff, 0x87, 0x81, 0x75, 0xd1, 0x63, 0x0c, 0x3a, 0x6c, 0xce, 0x44, 0x4f, 0x3e, - 0xbb, 0xcb, 0x9d, 0xdb, 0x64, 0xa2, 0xd3, 0x4c, 0xe1, 0x66, 0xa7, 0xc1, 0x57, 0xe6, 0x70, - 0x37, 0xa5, 0x34, 0x5a, 0x8a, 0x6f, 0x4d, 0x8b, 0xe2, 0x80, 0x9d, 0x3e, 0x77, 0x16, 0x23, - 0x43, 0x4c, 0xc0, 0xc0, 0x8d, 0x93, 0xde, 0x4f, 0x32, 0xce, 0xad, 0xc2, 0x8b, 0xb2, 0x98, - 0xfe, 0x4c, 0x8b, 0xbb, 0xa1, 0x27, 0x9d, 0xcd, 0x07, 0x9a, 0xe3, 0xa0, 0xf2, 0x3c, 0x52, - 0x0f, 0x70, 0xeb, 0x1e, 0x59, 0x53, 0xa1, 0x5a, 0x0c, 0xd9, 0x11, 0x92, 0x63, 0x46, 0xe1, - 0x9e, 0x53, 0xc9, 0xbd, 0xb6, 0x46, 0x75, 0x71, 0x1f, 0x20, 0x17, 0x71, 0x58, 0x35, 0xc2, - 0xeb, 0x10, 0xb1, 0xa6, 0xf8, 0x58, 0x19, 0x2f, 0x1e, 0xd5, 0x66, 0x52, 0x11, 0x46, 0xfc, - 0x5c, 0x33, 0x0c, 0x68, 0x29, 0x19, 0xf9, 0xf5, 0x66, 0xae, 0x26, 0xd0, 0x78, 0xa1, 0x53, - 0xc2, 0x0b, 0xe6, 0x92, 0x98, 0xd3, 0x05, 0xa5, 0x4a, 0x26, 0xaa, 0x0c, 0xb2, 0x41, 0x9a, - 0xcb, 0x7f, 0x2d, 0xf2, 0x4f, 0x7f, 0xba, 0x18, 0xd6, 0x0b, 0x3f, 0x61, 0xf9, 0x2a, 0xf7, - 0xe1, 0x4c, 0x95, 0xfa, 0xe8, 0xe1, 0x4e, 0xcd, 0x06, 0x52, 0xf6, 0x6e, 0x25, 0x28, 0x7a, - 0x71, 0xb3, 0xc7, 0x66, 0x78, 0x07, 0x7a, 0x86, 0x20, 0x4b, 0x71, 0x77, 0x0a, 0xc2, 0xcf, - 0xa9, 0x37, 0x26, 0xad, 0x40, 0x85, 0xe3, 0x10, 0x02, 0xff, 0xed, 0x0c, 0x6b, 0x82, 0x04, - 0xc7, 0x5f, 0x38, 0x19, 0xfd, 0x9c, 0x42, 0x8a, 0x82, 0x70, 0x47, 0x69, 0x0e, 0xef, 0x0f, - 0x1b, 0x43, 0xe5, 0x58, 0x04, 0x70, 0xd8, 0x79, 0x02, 0x69, 0x0a, 0xa6, 0x9f, 0x92, 0x5e, - 0x33, 0xa9, 0x4d, 0x23, 0xbd, 0xfe, 0x4c, 0xdd, 0x0d, 0x67, 0x00, 0x89, 0x5e, 0xbf, 0xa4, - 0x18, 0xe8, 0xf5, 0x7b, 0xa4, 0x6b, 0x49, 0x68, 0x61, 0x50, 0x95, 0x87, 0x8b, 0x32, 0x18, - 0xa6, 0xef, 0x0f, 0x2c, 0x57, 0x4f, 0x91, 0x69, 0x12, 0xcf, 0xdc, 0x3a, 0x1d, 0xab, 0x6e, - 0xde, 0xdf, 0x87, 0x30, 0x03, 0x59, 0x08, 0x7f, 0x15, 0x7a, 0xb0, 0x22, 0xc1, 0xff, 0xc0, - 0xbb, 0xba, 0xbe, 0x24, 0x1b, 0xb5, 0x89, 0x51, 0x29, 0xbf, 0x92, 0xab, 0x6b, 0x79, 0xbe, - 0x08, 0xf3, 0xf1, 0x8f, 0xb0, 0xdb, 0x34, 0x9a, 0x8e, 0x4e, 0x72, 0x59, 0x67, 0xb6, 0xc5, - 0x79, 0x27, 0x5c, 0x5d, 0xe0, 0xc8, 0x27, 0x05, 0xcb, 0x69, 0x0b, 0xa8, 0x36, 0xc8, 0x84, - 0xa9, 0x68, 0x0b, 0x5d, 0xae, 0x63, 0x90, 0x92, 0xf5, 0x7f, 0x07, 0xe7, 0xae, 0xd1, 0x17, - 0x56, 0x5c, 0xdc, 0xd2, 0x43, 0xb9, 0xd5, 0x47, 0xfd, 0x3d, 0xaf, 0x25, 0x5d, 0xab, 0x39, - 0xe6, 0x51, 0xff, 0xb0, 0x12, 0x5e, 0xe7, 0x52, 0x41, 0xd1, 0x8e, 0xf4, 0xfa, 0x5d, 0xc6, - 0xff, 0x10, 0x33, 0x66, 0xed, 0xbc, 0x12, 0xa6, 0x2f, 0x1e, 0x8b, 0x24, 0xdb, 0xb3, 0x9e, - 0x95, 0x97, 0xe3, 0xcf, 0x0a, 0x8e, 0xf6, 0xa7, 0x37, 0x66, 0x52, 0x9e, 0x53, 0x77, 0x5b, - 0x72, 0x69, 0x3c, 0xc5, 0x61, 0x16, 0x4b, 0x9f, 0x2b, 0xb8, 0x13, 0x04, 0xf7, 0xac, 0x34, - 0xb3, 0x33, 0x4f, 0x2b, 0x56, 0xdc, 0x18, 0x07, 0xae, 0x32, 0x88, 0xef, 0x13, 0x9a, 0x0d, - 0x9e, 0x81, 0x60, 0xbf, 0x39, 0xf2, 0x58, 0x0b, 0xfe, 0xc1, 0xb3, 0xfb, 0x67, 0x15, 0x82, - 0xb3, 0x2b, 0x08, 0x6e, 0xa0, 0x72, 0x49, 0x0d, 0xc1, 0x33, 0x3b, 0x19, 0x99, 0xeb, 0x66, - 0x89, 0xce, 0x95, 0x59, 0x65, 0xd2, 0x1d, 0x2d, 0x13, 0xc3, 0x83, 0xd5, 0xef, 0xf0, 0x22, - 0x77, 0x2d, 0x18, 0xaa, 0x44, 0x49, 0xac, 0xe5, 0xed, 0x9f, 0xfc, 0x9a, 0xdc, 0xa9, 0x6d, - 0x7c, 0x07, 0xff, 0x99, 0xf4, 0x3b, 0x41, 0x18, 0x9a, 0xf2, 0x76, 0x62, 0x55, 0xac, 0xd7, - 0xe5, 0x2b, 0x14, 0xa8, 0xa3, 0xe6, 0x7d, 0x7d, 0x7f, 0x54, 0x69, 0xdb, 0x1a, 0xbd, 0x77, - 0x7b, 0x64, 0x6f, 0x50, 0x08, 0xef, 0xd1, 0x17, 0xed, 0x66, 0x31, 0x88, 0x30, 0x07, 0x9c, - 0x82, 0xc4, 0x78, 0xc5, 0x7c, 0xb0, 0x2a, 0x57, 0x5f, 0xb0, 0x02, 0x57, 0x01, 0xa4, 0x1d, - 0xb8, 0xb5, 0x5d, 0x4e, 0xae, 0x17, 0x6d, 0xe6, 0xac, 0xd3, 0xf0, 0x01, 0x3d, 0xda, 0x06, - 0x72, 0xd1, 0x84, 0x7f, 0xe2, 0x0f, 0xe2, 0xe7, 0xb4, 0xf3, 0xac, 0x0f, 0xd7, 0x54, 0x8a, - 0xd5, 0xe0, 0x91, 0x71, 0x99, 0x6d, 0x28, 0x7c, 0x0c, 0xed, 0x00, 0xa4, 0xaf, 0xce, 0x8d, - 0xdf, 0x09, 0xa5, 0x58, 0x03, 0x8d, 0xb4, 0x50, 0xd8, 0xbb, 0x9f, 0x69, 0x8e, 0x77, 0x54, - 0x43, 0xee, 0x81, 0x55, 0x6b, 0xc9, 0x13, 0xca, 0x19, 0x1f, 0x0c, 0xc1, 0x61, 0x38, 0x06, - 0xf5, 0xa4, 0x6d, 0xaa, 0xc7, 0x51, 0x73, 0x8d, 0xb4, 0xd6, 0x09, 0x60, 0x16, 0xd6, 0x28, - 0x77, 0x5a, 0x57, 0x63, 0x6b, 0x0a, 0x8b, 0x5a, 0xff, 0x25, 0x63, 0x98, 0xea, 0x5f, 0x92, - 0x0e, 0xac, 0xe0, 0x8f, 0x49, 0xa0, 0xf1, 0xbc, 0xa6, 0xd1, 0x08, 0xa9, 0x43, 0x7c, 0xb4, - 0x73, 0x48, 0xb4, 0x4b, 0x3a, 0xe4, 0x0d, 0xb6, 0x3c, 0xe3, 0xe1, 0xf0, 0x03, 0x30, 0x16, - 0x13, 0xec, 0x6e, 0x01, 0x94, 0xe1, 0x68, 0xc1, 0x54, 0x5e, 0x1a, 0xd4, 0xe5, 0x50, 0x0a, - 0xb3, 0x30, 0xa1, 0xdb, 0x3c, 0x3b, 0xeb, 0xd5, 0xa0, 0x22, 0xb3, 0xca, 0x83, 0x80, 0x77, - 0xcc, 0x7a, 0x39, 0x6c, 0x1b, 0xcc, 0x55, 0x87, 0x8b, 0x75, 0x9f, 0x02, 0x87, 0xff, 0xbf, - 0x04, 0x5a, 0xfb, 0xbd, 0xc9, 0xa7, 0xed, 0x5c, 0xd9, 0x3f, 0x7e, 0x57, 0xe9, 0xc7, 0x29, - 0xf4, 0x23, 0x26, 0x23, 0x03, 0x3d, 0xef, 0x63, 0xeb, 0x9c, 0x92, 0x3a, 0x86, 0x70, 0xb5, - 0xc4, 0xd8, 0x8e, 0xc6, 0x5f, 0x0c, 0xf4, 0xa7, 0xb6, 0x97, 0x69, 0x51, 0xaa, 0x9d, 0xb4, - 0xd6, 0x96, 0x3f, 0x8d, 0xf2, 0x27, 0x9f, 0xeb, 0x8a, 0x24, 0x47, 0x83, 0xd0, 0x69, 0xb7, - 0xf4, 0x62, 0xe3, 0x2f, 0xd7, 0x2e, 0x4f, 0x0a, 0xb2, 0x78, 0x31, 0xea, 0xc3, 0x0a, 0x2d, - 0x45, 0xd7, 0x3a, 0x3d, 0x37, 0x86, 0xe7, 0x25, 0x2b, 0x61, 0x32, 0xd4, 0x02, 0xcb, 0x05, - 0x23, 0x40, 0x1e, 0xcb, 0x0a, 0x3d, 0x19, 0x79, 0x87, 0x20, 0xa9, 0x70, 0xd5, 0x3b, 0x2a, - 0xc1, 0xa9, 0xe3, 0x18, 0x85, 0xf4, 0x16, 0x2d, 0xa4, 0xb3, 0xe6, 0x25, 0x02, 0xbc, 0x95, - 0x5b, 0x1c, 0x7c, 0x8e, 0xee, 0x0a, 0xa9, 0xef, 0xb6, 0x14, 0x18, 0x8a, 0x4a, 0xdb, 0x53, - 0xe3, 0xff, 0x5d, 0x22, 0x31, 0x64, 0xc0, 0x14, 0x3b, 0x62, 0x41, 0x53, 0xf0, 0xed, 0x3b, - 0x50, 0x03, 0xbd, 0x2d, 0x64, 0x60, 0xc6, 0x9b, 0x38, 0xe6, 0xbc, 0x79, 0x29, 0x9a, 0x6b, - 0xba, 0x24, 0x1d, 0xb6, 0xf7, 0x57, 0xf8, 0x78, 0x13, 0x39, 0x6a, 0xc2, 0x6e, 0x06, 0xd8, - 0x88, 0x8c, 0x55, 0x1b, 0x36, 0x73, 0x65, 0x53, 0xb2, 0xeb, 0xe9, 0x6b, 0xb6, 0xfe, 0x61, - 0x20, 0xfe, 0xaa, 0x14, 0x3b, 0x05, 0x4c, 0x6f, 0x3d, 0xb9, 0x8d, 0x48, 0x89, 0xde, 0xa4, - 0x3d, 0xfa, 0xee, 0x59, 0x41, 0x40, 0x41, 0x6d, 0xe2, 0xe6, 0xda, 0xdd, 0x4c, 0x4e, 0x9b, - 0xec, 0x51, 0x9f, 0x44, 0x6e, 0x4a, 0x5c, 0xe9, 0x16, 0x15, 0xd2, 0xbd, 0x09, 0x52, 0x9e, - 0x02, 0x37, 0x58, 0x49, 0x0f, 0x5d, 0x55, 0x14, 0x63, 0x4c, 0xd8, 0x23, 0x51, 0xd6, 0x9e, - 0x64, 0x35, 0x52, 0x7a, 0xa7, 0xa2, 0xd8, 0xc0, 0x99, 0x07, 0x1a, 0x53, 0x50, 0x56, 0x13, - 0x71, 0xdb, 0xe8, 0x30, 0x74, 0xb0, 0xc6, 0xf0, 0x09, 0x85, 0xce, 0x57, 0xb1, 0xf6, 0x09, - 0x46, 0xa5, 0xe9, 0x62, 0x38, 0xbf, 0x80, 0xd5, 0x00, 0x52, 0x15, 0xa5, 0xb5, 0x63, 0xfc, - 0xcb, 0xef, 0xd1, 0x47, 0xcf, 0xb2, 0x90, 0x10, 0x77, 0xf4, 0x5e, 0xa9, 0xc9, 0xa1, 0x2f, - 0xdb, 0xfd, 0xa6, 0xc9, 0x07, 0x87, 0x7d, 0x4e, 0x3e, 0xa6, 0x4b, 0xee, 0xa3, 0x48, 0xbb, - 0xe1, 0xdf, 0xe3, 0xc4, 0x79, 0xdb, 0xe7, 0x2a, 0x70, 0xcb, 0x47, 0x43, 0x49, 0x91, 0xb1, - 0x10, 0xc0, 0x59, 0x42, 0x44, 0x97, 0x6e, 0xf2, 0xe6, 0xdc, 0x31, 0xb0, 0xca, 0x2a, 0xed, - 0x9b, 0xc0, 0x75, 0x49, 0xaa, 0x06, 0x63, 0x0b, 0xf1, 0x23, 0x20, 0x03, 0xe0, 0xc4, 0x19, - 0x7e, 0x18, 0x2e, 0xe6, 0x1e, 0x74, 0xda, 0x79, 0x03, 0xdc, 0x6e, 0x41, 0x09, 0x0d, 0x05, - 0xcd, 0xa0, 0xa7, 0x00, 0x52, 0x36, 0x99, 0x46, 0x3d, 0x33, 0x0b, 0xe1, 0xb4, 0x9e, 0x3f, - 0x30, 0x52, 0x08, 0xae, 0x23, 0x4f, 0x1a, 0xa7, 0x34, 0xb5, 0x79, 0x6f, 0xab, 0x90, 0x38, - 0x13, 0x68, 0xd3, 0xff, 0x0e, 0xd0, 0x56, 0x4c, 0xa1, 0x0c, 0xb4, 0x8c, 0x23, 0x59, 0xd6, - 0x9a, 0x33, 0x04, 0xca, 0x73, 0xdc, 0x67, 0x52, 0xcf, 0xf1, 0xc8, 0xe9, 0x32, 0xca, 0xbb, - 0xf9, 0x1a, 0xee, 0x01, 0xdc, 0x6a, 0xcc, 0x77, 0xe9, 0xbc, 0xc0, 0xfd, 0x9b, 0x0a, 0x19, - 0x87, 0x8a, 0xb1, 0xf0, 0xa1, 0x47, 0x73, 0x36, 0xe9, 0xd0, 0x46, 0xf4, 0x80, 0xb2, 0x0e, - 0x9b, 0xe0, 0xd8, 0xb1, 0x1a, 0x3a, 0x36, 0x25, 0xdd, 0x93, 0xcd, 0x5c, 0x27, 0x79, 0xe8, - 0x1a, 0x85, 0xa1, 0x4a, 0x74, 0x2a, 0x18, 0x9e, 0x6c, 0x3e, 0x51, 0x82, 0x0a, 0x09, 0xd8, - 0x3e, 0x34, 0xb3, 0xb7, 0xb5, 0x8a, 0x92, 0xa3, 0x93, 0xf5, 0x37, 0x03, 0x02, 0xd3, 0x41, - 0x44, 0x60, 0xb8, 0x3c, 0xa0, 0x80, 0xbe, 0xf5, 0x98, 0xfd, 0x8a, 0x9f, 0xa3, 0x9f, 0xd0, - 0x51, 0xa1, 0xb8, 0x90, 0x9d, 0x06, 0x29, 0x07, 0x09, 0x53, 0x17, 0x16, 0xe2, 0x4b, 0x2a, - 0xaf, 0x69, 0x20, 0x15, 0xd1, 0x8e, 0x5e, 0xa1, 0x7c, 0xad, 0x1d, 0x06, 0xf7, 0xd9, 0x07, - 0x51, 0xa4, 0xa0, 0x41, 0x24, 0xfe, 0xa4, 0x00, 0xbe, 0x3e, 0x4e, 0x5e, 0xd2, 0xe1, 0x89, - 0x5f, 0xee, 0xfd, 0x12, 0x69, 0x6b, 0xa2, 0xee, 0x86, 0x34, 0x83, 0xbe, 0x43, 0x01, 0x81, - 0x77, 0x67, 0x86, 0x71, 0x3b, 0x03, 0xc9, 0x17, 0x06, 0xe8, 0x7a, 0x0d, 0x79, 0xcf, 0xc7, - 0x28, 0xd7, 0x00, 0x64, 0x9e, 0x21, 0x10, 0xa8, 0xd4, 0x7b, 0x9a, 0x5a, 0xa6, 0x57, 0x13, - 0xa3, 0x98, 0x9b, 0xb5, 0x2b, 0x02, 0x87, 0x11, 0x20, 0xf4, 0xac, 0x4f, 0x04, 0x28, 0xe5, - 0xdd, 0x6e, 0x76, 0xa6, 0xc1, 0xdd, 0x89, 0xdf, 0xfd, 0x1a, 0x55, 0x39, 0x65, 0x4f, 0x22, - 0xdc, 0x42, 0x13, 0x55, 0xd7, 0x32, 0x96, 0x60, 0x06, 0x11, 0xf9, 0xa1, 0x87, 0xc0, 0xc3, - 0x1f, 0x99, 0x2a, 0x96, 0x85, 0xe4, 0x74, 0x6b, 0x6a, 0xd4, 0x6e, 0xdf, 0xb2, 0xe3, 0x81, - 0xb6, 0x68, 0x1e, 0x26, 0xec, 0x14, 0x7a, 0x98, 0xcf, 0xe1, 0x00, 0xc1, 0x24, 0xc1, 0xd6, - 0x8b, 0x76, 0x0d, 0xfc, 0xb3, 0x6e, 0x1f, 0x01, 0x41, 0x6e, 0x2f, 0x31, 0x33, 0x91, 0x5a, - 0x96, 0xcd, 0x8e, 0x4b, 0xc3, 0x1f, 0xed, 0x6e, 0xf9, 0x3a, 0x6f, 0xed, 0x8c, 0x4f, 0xfe, - 0x9d, 0x04, 0x19, 0xcc, 0x2a, 0xea, 0x85, 0x80, 0x0c, 0xe7, 0xb1, 0xec, 0xe3, 0x1c, 0xf0, - 0x99, 0xf7, 0xe1, 0x59, 0xa1, 0xa0, 0xb8, 0x62, 0x1b, 0x93, 0x4f, 0x63, 0xe8, 0xf1, 0x07, - 0x11, 0x07, 0xd3, 0xbd, 0x2d, 0x1d, 0x38, 0x80, 0xfd, 0x65, 0xcd, 0x39, 0xab, 0x98, 0xf5, - 0xc9, 0x8e, 0x4a, 0x0a, 0x1a, 0x25, 0xb4, 0xae, 0xdc, 0xc5, 0x7a, 0x8a, 0xaf, 0x68, 0x4a, - 0xd7, 0x4c, 0xa9, 0x56, 0x8b, 0x88, 0xf4, 0xff, 0x00, 0xc8, 0x4b, 0xef, 0x4d, 0x33, 0x1b, - 0x57, 0x52, 0x06, 0x2d, 0xc2, 0x90, 0xb0, 0x4a, 0x91, 0x7d, 0x19, 0xfa, 0xa3, 0xcc, 0xbf, - 0xef, 0x9e, 0xac, 0x43, 0xab, 0x28, 0x33, 0x36, 0x25, 0x63, 0x0c, 0x6e, 0x6f, 0x5d, 0x2b, - 0xcc, 0xaa, 0x5f, 0xb3, 0xc6, 0xc7, 0xed, 0x7f, 0x07, 0x19, 0x64, 0x5b, 0xf1, 0x59, 0x26, - 0x9b, 0x51, 0xdf, 0xf6, 0xe3, 0x58, 0xe1, 0xfb, 0x10, 0xb6, 0xc2, 0xf7, 0x07, 0x2f, 0x35, - 0x7f, 0xc1, 0x98, 0x3a, 0x8f, 0x4e, 0xa5, 0x84, 0x05, 0xec, 0xad, 0xb5, 0xde, 0x04, 0xba, - 0xdd, 0x10, 0x8f, 0x19, 0xda, 0xf3, 0xc5, 0x01, 0x20, 0xe9, 0x66, 0x23, 0x9f, 0x12, 0x02, - 0x7f, 0x85, 0xb5, 0x2b, 0x24, 0x47, 0x18, 0xa9, 0x2c, 0x01, 0x0f, 0x19, 0xb1, 0xc0, 0x77, - 0x9b, 0x2f, 0x1e, 0x5b, 0xac, 0xa9, 0x47, 0xd5, 0xc7, 0xd4, 0x8e, 0x01, 0x1d, 0xac, 0xbe, - 0x07, 0x0a, 0x6d, 0x4b, 0xc0, 0x1e, 0x4c, 0xb3, 0xc1, 0xc1, 0xef, 0xee, 0x20, 0x7a, 0x3b, - 0x13, 0x72, 0xd7, 0x67, 0x34, 0x0f, 0x85, 0x9f, 0x78, 0x86, 0x9c, 0x53, 0x4f, 0x5e, 0x14, - 0x87, 0x00, 0x55, 0x21, 0x16, 0xc5, 0x52, 0x08, 0xd5, 0xe7, 0x62, 0xda, 0x64, 0xe7, 0xf4, - 0x56, 0x89, 0x9f, 0xd6, 0xb8, 0x99, 0x57, 0xd3, 0xf2, 0xdb, 0x9b, 0x71, 0xbe, 0x98, 0x9e, - 0x22, 0x1a, 0xd8, 0x6e, 0x71, 0x24, 0x84, 0xd3, 0xa3, 0x87, 0x69, 0x5a, 0xe6, 0xca, 0x25, - 0x79, 0xf0, 0x4f, 0x17, 0xa4, 0x36, 0x74, 0xf5, 0x06, 0x19, 0xf2, 0x30, 0xaf, 0x30, 0x6e, - 0x0f, 0x33, 0x6d, 0x32, 0x91, 0x88, 0xa4, 0x1c, 0x0b, 0x64, 0x36, 0x3d, 0xca, 0xa4, 0x02, - 0x98, 0xb1, 0x2e, 0x93, 0x56, 0xf3, 0x57, 0xbb, 0x52, 0xa5, 0x7b, 0x6f, 0xc3, 0x21, 0xc8, - 0x06, 0xa8, 0xa3, 0x9c, 0xe4, 0x44, 0x1e, 0x5e, 0x32, 0x36, 0x91, 0x4f, 0xdd, 0xe7, 0x31, - 0xa2, 0xe6, 0x6a, 0x63, 0xce, 0x57, 0xe5, 0xf8, 0x18, 0x5a, 0x4f, 0xa9, 0x6e, 0x16, 0xb1, - 0x8d, 0x0b, 0x14, 0xe9, 0x29, 0x9c, 0xa0, 0xa1, 0x5f, 0x55, 0x1f, 0x16, 0x11, 0x9e, 0x38, - 0x7f, 0xd3, 0xfd, 0xc3, 0x9b, 0x8e, 0x91, 0xfe, 0x1e, 0x27, 0x3d, 0x57, 0x65, 0xc4, 0x64, - 0x1a, 0x1d, 0xf9, 0x28, 0x14, 0x02, 0x22, 0xcd, 0xb8, 0xc1, 0x61, 0xa6, 0x5c, 0x05, 0x0e, - 0x99, 0x8d, 0x02, 0x5c, 0xb2, 0x0d, 0x99, 0x72, 0x40, 0xad, 0xd7, 0xbc, 0xbc, 0x93, 0x8f, - 0x64, 0xe8, 0xce, 0xfe, 0x43, 0x12, 0x61, 0x4e, 0x89, 0xe2, 0x6f, 0x88, 0xfb, 0x2f, 0x9f, - 0x3c, 0xf7, 0xa4, 0x2f, 0x49, 0x4b, 0xd5, 0x67, 0x64, 0xf1, 0x70, 0xac, 0x7a, 0xb9, 0xac, - 0x52, 0x3c, 0x7e, 0xb8, 0x16, 0x23, 0x2b, 0x47, 0xaf, 0x57, 0x23, 0x40, 0xf7, 0x31, 0xe5, - 0xaf, 0xeb, 0x20, 0xf1, 0x3b, 0xa7, 0x88, 0x98, 0xde, 0x09, 0x95, 0x07, 0x9d, 0x56, 0x1f, - 0xd3, 0x91, 0x07, 0xfd, 0x56, 0x54, 0xe7, 0x0a, 0xc5, 0xe5, 0x7d, 0x6b, 0x5b, 0x20, 0xfc, - 0xbe, 0xba, 0x5f, 0x05, 0x20, 0x01, 0xd8, 0x50, 0xfa, 0x16, 0x56, 0x04, 0xfc, 0x64, 0x72, - 0x2e, 0x40, 0x28, 0x26, 0xc9, 0xad, 0xb2, 0x97, 0x3f, 0xb8, 0xde, 0x42, 0x38, 0x32, 0x4d, - 0xe0, 0x27, 0x47, 0x36, 0xd6, 0x89, 0x11, 0xff, 0xd2, 0x5e, 0xf9, 0x7b, 0xb3, 0x99, 0x06, - 0x25, 0xc6, 0x17, 0x52, 0xec, 0x69, 0x54, 0x1e, 0x4c, 0xa6, 0xdb, 0x1d, 0x83, 0xa9, 0x39, - 0xfb, 0xc4, 0xdc, 0xbd, 0xcc, 0xb7, 0x88, 0x84, 0x00, 0xdb, 0xc5, 0x54, 0x44, 0x0d, 0x4f, - 0x39, 0x1d, 0x9c, 0x3f, 0xfd, 0xba, 0x6e, 0xe4, 0x4e, 0x00, 0x9f, 0xf3, 0xf2, 0x14, 0xed, - 0x53, 0x99, 0x30, 0xec, 0xd6, 0x6f, 0x77, 0xe0, 0x33, 0x17, 0x23, 0x6a, 0xb8, 0xee, 0x45, - 0x8a, 0xa0, 0xdf, 0xa6, 0x53, 0x57, 0x14, 0x30, 0x8c, 0x5c, 0x51, 0x71, 0x70, 0x59, 0x81, - 0x66, 0x2f, 0xbb, 0x03, 0x25, 0x6e, 0x63, 0x41, 0x2e, 0x4e, 0xac, 0xe6, 0x03, 0xc6, 0x3e, - 0xf9, 0xb9, 0x51, 0xc8, 0x77, 0x5c, 0xf9, 0x0c, 0x4f, 0xe8, 0x9f, 0xe4, 0x5f, 0xec, 0xb6, - 0x48, 0xb4, 0xde, 0xe1, 0xaf, 0xe8, 0x5c, 0xc1, 0x09, 0x1c, 0xee, 0xb7, 0x52, 0x84, 0x28, - 0x5f, 0x81, 0x37, 0x71, 0x50, 0x35, 0x67, 0xd6, 0xbb, 0x8f, 0x29, 0x34, 0xe5, 0x06, 0x0a, - 0x82, 0x40, 0xf4, 0x70, 0x00, 0x7b, 0x62, 0xee, 0x89, 0xa9, 0x8e, 0x69, 0x83, 0x6a, 0xfd, - 0xd1, 0x1d, 0x67, 0xac, 0xe9, 0x81, 0x60, 0x0b, 0x1e, 0xfa, 0xf3, 0x44, 0x8e, 0xe7, 0xc2, - 0x83, 0x5d, 0x5f, 0xef, 0x5c, 0x04, 0x18, 0xb3, 0x2c, 0x22, 0x13, 0x42, 0x6f, 0xce, 0x3a, - 0xdd, 0x16, 0x45, 0x21, 0xa7, 0xb5, 0x60, 0x0b, 0x9d, 0xbd, 0x9f, 0x23, 0xca, 0xfb, 0xbb, - 0x92, 0x35, 0xbe, 0x20, 0xe8, 0x08, 0xeb, 0x2d, 0x0b, 0xe6, 0xb8, 0x50, 0x33, 0xc1, 0x29, - 0x28, 0x61, 0x2e, 0xd9, 0x76, 0x28, 0xf0, 0x5a, 0x49, 0xd0, 0x13, 0x13, 0x95, 0xc3, 0x50, - 0x3c, 0xb4, 0x78, 0xb1, 0xfb, 0x6c, 0xd7, 0xd6, 0x05, 0x7c, 0x61, 0x97, 0x9e, 0x49, 0xd3, - 0xef, 0xf0, 0x7f, 0x84, 0x3b, 0xcd, 0x41, 0x04, 0xa9, 0x93, 0x41, 0xe8, 0x09, 0x6e, 0xec, - 0x42, 0xbd, 0xd6, 0x0b, 0xce, 0x91, 0xf5, 0xa3, 0xb1, 0xcd, 0xba, 0x7c, 0xc1, 0xb9, 0x7c, - 0xc6, 0xdf, 0x80, 0xff, 0x72, 0xd1, 0xce, 0x3b, 0xa5, 0x23, 0xd9, 0x45, 0x9d, 0x42, 0xdf, - 0x3a, 0x3d, 0xb6, 0xf8, 0xaf, 0xc9, 0x39, 0xea, 0xc7, 0x3b, 0xa6, 0x94, 0x95, 0x75, 0x9b, - 0x83, 0xf8, 0x99, 0x0e, 0x50, 0x90, 0xe9, 0xf6, 0x07, 0xd0, 0xc6, 0x3a, 0x55, 0xda, 0x1c, - 0x69, 0x03, 0x88, 0x7d, 0xa4, 0x22, 0xc0, 0x0e, 0xc0, 0x0f, 0xce, 0x80, 0x06, 0x3c, 0xb8, - 0xb2, 0x36, 0xf6, 0x40, 0xcb, 0x3f, 0xf3, 0x51, 0x18, 0x9c, 0x1f, 0x96, 0x55, 0x2c, 0x3d, - 0xfa, 0x87, 0x9b, 0xac, 0x69, 0x6d, 0x50, 0xde, 0xe4, 0xcb, 0x68, 0xe7, 0xe7, 0xab, 0x1e, - 0xd3, 0x16, 0xe6, 0x52, 0x69, 0xee, 0xe3, 0x99, 0xdc, 0x70, 0x3c, 0xc4, 0xa0, 0x2a, 0xc0, - 0x11, 0x00, 0xa8, 0x22, 0xb1, 0xfd, 0xb3, 0x75, 0xec, 0x0c, 0xa1, 0x97, 0x82, 0x83, 0xcb, - 0xb8, 0xb0, 0xaf, 0x9a, 0x14, 0x0a, 0x3f, 0x84, 0x72, 0xf2, 0x93, 0xd1, 0xb1, 0xac, 0x22, - 0x1c, 0xfa, 0x15, 0x32, 0xf5, 0x62, 0x6f, 0x1a, 0xa0, 0x5f, 0x17, 0x98, 0x4a, 0xf7, 0xad, - 0x5e, 0x06, 0x58, 0x7c, 0x7c, 0x54, 0xba, 0x2c, 0x07, 0x88, 0x37, 0xc1, 0xa4, 0x42, 0xbe, - 0xd9, 0x87, 0x2b, 0xf7, 0x00, 0x81, 0xfb, 0x53, 0x4c, 0x33, 0xc7, 0x2e, 0x39, 0x2e, 0x97, - 0x5a, 0xf8, 0x33, 0x6f, 0x72, 0x73, 0x5f, 0xd2, 0x05, 0xa2, 0xf0, 0xed, 0x96, 0xde, 0xb8, - 0x10, 0x3b, 0x6b, 0xcd, 0x13, 0x92, 0x36, 0x12, 0x8f, 0xca, 0xa2, 0x54, 0x54, 0x64, 0x32, - 0xec, 0x64, 0x37, 0x4d, 0x20, 0x92, 0x96, 0xcd, 0x2d, 0xc0, 0x9a, 0xfa, 0xdc, 0x69, 0x7b, - 0x95, 0x6f, 0xa3, 0xda, 0x4a, 0x25, 0xb8, 0x8d, 0x00, 0x7e, 0x8b, 0x67, 0xf4, 0x90, 0x39, - 0x91, 0x1b, 0x11, 0x4b, 0x94, 0xd8, 0x3a, 0x3a, 0xe7, 0xbe, 0xe2, 0x6d, 0xa1, 0x63, 0x73, - 0x0a, 0x56, 0x74, 0xc3, 0x11, 0x06, 0xbe, 0x9f, 0x91, 0x7d, 0x1f, 0xff, 0x30, 0x1f, 0xd9, - 0x09, 0x2f, 0x05, 0x06, 0x13, 0xb6, 0x09, 0xaf, 0x7b, 0x36, 0x50, 0x30, 0x80, 0xc3, 0x75, - 0xe3, 0xc4, 0xa8, 0xcf, 0x8e, 0xa3, 0x42, 0xc7, 0x41, 0x56, 0x2d, 0x8a, 0x19, 0x77, 0x3b, - 0x16, 0x6d, 0x55, 0x36, 0xbd, 0x3f, 0x50, 0x5d, 0xd1, 0xc1, 0x97, 0x88, 0xb6, 0xda, 0x29, - 0xdb, 0x3b, 0x16, 0x41, 0xa7, 0x5b, 0x4b, 0x80, 0x2b, 0x72, 0xa0, 0xde, 0xa1, 0xaa, 0x02, - 0x35, 0xab, 0x0c, 0x77, 0x18, 0x99, 0x08, 0x96, 0xb2, 0x2a, 0xa5, 0x3a, 0xd3, 0x1c, 0x91, - 0xc8, 0xe5, 0xda, 0x28, 0xaa, 0xf8, 0xba, 0x8f, 0x27, 0x97, 0x70, 0xc7, 0xff, 0x33, 0x99, - 0xf5, 0x10, 0x16, 0x15, 0xba, 0x91, 0x9b, 0xf8, 0x1d, 0x2b, 0xcb, 0x72, 0xd1, 0x55, 0x95, - 0x9f, 0x61, 0x1b, 0x06, 0x44, 0x43, 0xfd, 0x80, 0x58, 0x92, 0x47, 0xbe, 0x06, 0x6a, 0x33, - 0x8d, 0x61, 0xd2, 0x01, 0x56, 0xad, 0xc6, 0xd0, 0x63, 0x4e, 0x28, 0x24, 0xae, 0x94, 0xb9, - 0x9f, 0x3d, 0x6e, 0xb1, 0xe6, 0x47, 0x73, 0x73, 0xc2, 0xee, 0x88, 0x1d, 0x81, 0x7b, 0x85, - 0x9b, 0x4a, 0x4a, 0x5d, 0x9b, 0x00, 0xbb, 0xdf, 0x8d, 0xd5, 0x9e, 0x33, 0x84, 0x73, 0xa3, - 0x0e, 0xe5, 0xfa, 0xcf, 0xe3, 0xb9, 0xca, 0x51, 0x9d, 0xa0, 0x46, 0x5f, 0x75, 0x8a, 0x57, - 0x39, 0x82, 0x74, 0x14, 0x91, 0x74, 0x12, 0x2a, 0x3a, 0x1f, 0x06, 0xe1, 0x92, 0x89, 0xa7, - 0x55, 0x08, 0x9f, 0x6e, 0x4a, 0x85, 0x61, 0xea, 0x5b, 0x18, 0xe7, 0xee, 0x22, 0x2a, 0x35, - 0xc7, 0x66, 0xe0, 0x9b, 0x36, 0x43, 0x1d, 0x58, 0x16, 0x3c, 0x90, 0xe9, 0xef, 0xc4, 0x3a, - 0xbf, 0x28, 0xc1, 0xe9, 0xfa, 0x7c, 0x0d, 0x04, 0x6f, 0x4b, 0x8f, 0x88, 0xb8, 0x58, 0xe5, - 0xcc, 0x7a, 0xc6, 0xba, 0x7b, 0x1a, 0x25, 0x07, 0x4e, 0x54, 0x0d, 0x20, 0x1b, 0xb5, 0xa0, - 0x17, 0x48, 0x21, 0xc8, 0xed, 0x04, 0x15, 0x2f, 0x0d, 0xee, 0x28, 0x64, 0x6f, 0x9e, 0x3c, - 0xe8, 0x16, 0xbe, 0x54, 0xd5, 0xcc, 0xbf, 0xce, 0x07, 0x3f, 0x65, 0x17, 0x6d, 0x09, 0x5d, - 0x23, 0x38, 0xee, 0x41, 0x18, 0x76, 0xaf, 0x75, 0x99, 0x26, 0x8b, 0x23, 0xf6, 0x89, 0x7c, - 0xc6, 0x3b, 0x0f, 0xa7, 0x1c, 0x2e, 0xa3, 0x31, 0xfc, 0x07, 0xfd, 0x5a, 0xee, 0xf7, 0x91, - 0x24, 0x86, 0xb2, 0xc8, 0x1f, 0x90, 0x72, 0x8e, 0xa0, 0xc3, 0x0e, 0x75, 0x85, 0x80, 0xea, - 0x1d, 0xa0, 0x99, 0xba, 0xa8, 0xf8, 0x4f, 0xe0, 0xa2, 0x7b, 0xd5, 0x80, 0x48, 0x45, 0xb4, - 0xb0, 0x11, 0x04, 0x14, 0x7f, 0x38, 0x5e, 0x51, 0xd3, 0x09, 0x02, 0x8a, 0x65, 0x39, 0x84, - 0x3f, 0x75, 0xa2, 0x10, 0x51, 0x59, 0x22, 0x82, 0xe0, 0x7c, 0x1e, 0xc1, 0x32, 0xe5, 0x2a, - 0x0b, 0x69, 0x03, 0xe7, 0x27, 0x17, 0x61, 0x5e, 0x34, 0xd5, 0xc2, 0xab, 0x82, 0xe9, 0xec, - 0x74, 0xe4, 0x98, 0xe5, 0x6e, 0x20, 0xf8, 0xc3, 0x48, 0x56, 0x28, 0x86, 0x8f, 0x32, 0x05, - 0xa1, 0x11, 0x98, 0x14, 0xb0, 0x0a, 0x16, 0x37, 0xcb, 0xfc, 0x4c, 0x76, 0x69, 0xc1, 0x11, - 0xb0, 0xb2, 0x0d, 0xb5, 0xb6, 0x3a, 0x8e, 0xb8, 0xd8, 0x9b, 0x2e, 0xa6, 0xf4, 0xd6, 0xfe, - 0x2d, 0x1f, 0xf7, 0xb6, 0xdd, 0x85, 0x49, 0xbb, 0x02, 0xcc, 0x0c, 0x4b, 0xdc, 0x78, 0x93, - 0x12, 0x7d, 0x41, 0x22, 0xf6, 0x6e, 0x67, 0x03, 0x03, 0x8b, 0x81, 0x76, 0xd3, 0x61, 0xe4, - 0x54, 0xdb, 0xb1, 0x72, 0xaf, 0x31, 0x28, 0xe8, 0x6c, 0xff, 0x3a, 0x1b, 0xe1, 0xbf, 0x00, - 0x6e, 0x9c, 0x9d, 0x45, 0xb3, 0x32, 0x0f, 0x8b, 0xc9, 0x17, 0x76, 0x12, 0xd2, 0x17, 0xb5, - 0xbf, 0x29, 0xe2, 0xd9, 0x45, 0xd1, 0xda, 0x07, 0x21, 0xa8, 0x67, 0x2f, 0x2d, 0xc7, 0x3d, - 0x87, 0xa3, 0xfc, 0x5f, 0x91, 0xb7, 0x2d, 0xf2, 0x84, 0x3d, 0x34, 0xdf, 0x26, 0x20, 0xe8, - 0xbb, 0xbd, 0x2a, 0x1a, 0xe7, 0x54, 0x43, 0x3a, 0x76, 0xf7, 0xc0, 0x1f, 0xa3, 0xc3, 0x15, - 0x66, 0xdc, 0x3b, 0xc5, 0x3b, 0xae, 0xec, 0xb1, 0x3a, 0xd3, 0xae, 0x78, 0xc0, 0x32, 0xea, - 0xe5, 0x3f, 0xac, 0x51, 0x09, 0x33, 0xa1, 0x23, 0x3c, 0xd0, 0x9f, 0x77, 0xbd, 0xa5, 0x06, - 0xc4, 0x24, 0xba, 0x2c, 0xeb, 0x3e, 0xcd, 0xe9, 0x36, 0x33, 0x50, 0xa9, 0x09, 0x63, 0xa6, - 0x15, 0xb1, 0xa9, 0xd8, 0x60, 0x4f, 0xd1, 0xc3, 0xd8, 0xfa, 0xa3, 0x2d, 0x82, 0x38, 0xc1, - 0x0a, 0x03, 0xcb, 0x3d, 0xd1, 0x44, 0x2f, 0x7f, 0x4a, 0xe8, 0x84, 0x44, 0x71, 0x35, 0x36, - 0xc9, 0x9a, 0x7d, 0x4e, 0x0d, 0x82, 0xea, 0xe4, 0x46, 0x27, 0x8a, 0x57, 0x2e, 0xcf, 0x08, - 0x7f, 0x98, 0xe1, 0xf6, 0x2d, 0x25, 0x1b, 0x51, 0x11, 0xb5, 0xc0, 0x7c, 0x7c, 0x02, 0x2f, - 0x94, 0x66, 0xcb, 0x47, 0x1e, 0x0f, 0x69, 0x2e, 0x22, 0xb6, 0xa0, 0x1f, 0x48, 0x83, 0xcc, - 0xbc, 0x9a, 0xef, 0x35, 0x4b, 0x13, 0xdb, 0x3e, 0xd8, 0x61, 0x28, 0xc7, 0xb4, 0x8b, 0xfa, - 0x38, 0xaa, 0xc4, 0x81, 0xbb, 0x16, 0x4e, 0x14, 0x4c, 0xf7, 0xcc, 0x5c, 0xd9, 0xdd, 0xc8, - 0x9c, 0x39, 0x0f, 0x05, 0xc8, 0xb8, 0xf1, 0xfc, 0x61, 0x39, 0xfb, 0x90, 0xac, 0xa4, 0xf0, - 0x5b, 0x84, 0x6e, 0x72, 0x41, 0x87, 0x08, 0x3a, 0xda, 0x98, 0x26, 0x55, 0xc7, 0x28, 0x25, - 0x30, 0xb3, 0x48, 0x32, 0xf2, 0x8a, 0xf0, 0xd3, 0x41, 0xb3, 0xd2, 0x1f, 0x28, 0x1c, 0x5b, - 0x2d, 0x11, 0x38, 0x0e, 0x78, 0x89, 0x93, 0x58, 0x12, 0x1b, 0x49, 0x85, 0x53, 0x61, 0x99, - 0xdd, 0xb8, 0xbd, 0x6a, 0x1d, 0x58, 0x9c, 0x10, 0x43, 0x9f, 0x9b, 0x63, 0x07, 0x0c, 0x90, - 0x2c, 0x96, 0x91, 0x6e, 0x39, 0x2c, 0x1a, 0xac, 0xd7, 0x34, 0xca, 0x2b, 0xca, 0x4e, 0xf1, - 0x18, 0x93, 0x7a, 0xeb, 0xcf, 0x8b, 0x7f, 0x5d, 0x68, 0x92, 0xaf, 0x7a, 0xa1, 0x70, 0xab, - 0x17, 0xbf, 0x6e, 0xf1, 0x40, 0x9b, 0x12, 0x47, 0x73, 0x28, 0xe4, 0x40, 0x9b, 0x85, 0x91, - 0xa3, 0xb3, 0x2f, 0x21, 0x51, 0xa7, 0x3f, 0x5e, 0x3b, 0x82, 0x38, 0xe2, 0x4b, 0x17, 0x5a, - 0xe8, 0xe9, 0x2d, 0xa8, 0xdd, 0x8a, 0xc4, 0xa6, 0xb3, 0xe4, 0x8f, 0x9b, 0x9a, 0x93, 0xb3, - 0x28, 0x13, 0x32, 0xe0, 0x02, 0x3d, 0x61, 0x8f, 0xfd, 0x27, 0xb4, 0x02, 0xe9, 0x86, 0xe6, - 0x28, 0x69, 0xf5, 0x60, 0x33, 0xd0, 0x20, 0xc5, 0x95, 0xf7, 0x71, 0x17, 0xc8, 0x57, 0xbd, - 0xa5, 0x8e, 0x59, 0xe1, 0x0d, 0x06, 0x16, 0x5b, 0x44, 0xd8, 0x6c, 0xff, 0x78, 0xcf, 0x6a, - 0xec, 0xd3, 0xb8, 0x88, 0x44, 0x26, 0x05, 0x3a, 0xc0, 0xb3, 0x95, 0xc6, 0xe3, 0x8c, 0x8f, - 0x74, 0xd3, 0x67, 0x25, 0xa4, 0xea, 0x60, 0xb3, 0x8d, 0xcc, 0x5d, 0xa2, 0x5c, 0x69, 0x96, - 0x45, 0x3d, 0xab, 0xe2, 0x87, 0xec, 0x48, 0xad, 0x03, 0x06, 0x2c, 0xe9, 0xce, 0xae, 0xc6, - 0xc5, 0x21, 0x55, 0x4f, 0xec, 0x71, 0xe2, 0x46, 0xc1, 0xd7, 0x52, 0x8d, 0x30, 0xbb, 0xb6, - 0x3b, 0x57, 0x13, 0xf1, 0xc7, 0x98, 0xc6, 0xb8, 0x00, 0x33, 0x27, 0xb1, 0x54, 0x92, 0x79, - 0x8b, 0x80, 0x0e, 0x9f, 0xdb, 0xc4, 0xea, 0xd8, 0xe5, 0xf9, 0x99, 0xa4, 0xfc, 0xa0, 0xc8, - 0x8b, 0x47, 0xb1, 0xfc, 0xcd, 0x59, 0x98, 0xd5, 0x40, 0x95, 0xb1, 0x00, 0x3f, 0xd0, 0xb0, - 0x7f, 0x22, 0x52, 0x00, 0xa8, 0xe0, 0x44, 0xde, 0x43, 0xbc, 0x32, 0xe9, 0x2a, 0xc7, 0x2b, - 0x8e, 0xec, 0x3d, 0x9c, 0x63, 0xd4, 0xb1, 0xdb, 0x67, 0xe4, 0xdd, 0x88, 0x4d, 0xab, 0x13, - 0x66, 0xcb, 0x8c, 0x5e, 0xf8, 0xef, 0xb5, 0xb7, 0x75, 0x53, 0x92, 0x83, 0x8d, 0xd2, 0xd5, - 0xe0, 0x5c, 0xe9, 0xff, 0x33, 0x07, 0x81, 0x57, 0x1c, 0x52, 0x63, 0x49, 0x77, 0xb4, 0xca, - 0x1e, 0x16, 0x96, 0x46, 0x6c, 0x93, 0xbb, 0x61, 0xe3, 0xa1, 0xae, 0xa5, 0x29, 0x46, 0x12, - 0x1b, 0x98, 0x04, 0xcd, 0x50, 0xd0, 0x20, 0xaf, 0xe2, 0x14, 0x67, 0xf1, 0x46, 0x76, 0x0d, - 0xad, 0x8f, 0x12, 0x34, 0x90, 0xfa, 0x50, 0x74, 0xcf, 0xbc, 0x17, 0xbd, 0x86, 0x2e, 0x02, - 0x88, 0xe9, 0x3b, 0x4e, 0xa6, 0xe5, 0x37, 0x94, 0x6f, 0x2f, 0xb6, 0xb0, 0x5e, 0x5c, 0xee, - 0xb7, 0x3b, 0x85, 0x9b, 0xdf, 0x2b, 0xb6, 0x1b, 0x6f, 0x38, 0xf3, 0x32, 0xdf, 0x7e, 0xc6, - 0xb2, 0x0d, 0x37, 0xc0, 0xac, 0xe3, 0xf0, 0x30, 0x7d, 0xea, 0x51, 0x1f, 0x0d, 0xf1, 0xc8, - 0x10, 0x79, 0xd1, 0x55, 0x3a, 0x1c, 0x55, 0x0f, 0x6f, 0x65, 0xf6, 0xe9, 0x33, 0x4d, 0x64, - 0xd1, 0x9c, 0x81, 0xb9, 0xde, 0xd1, 0x13, 0xbf, 0x94, 0x5d, 0x58, 0xdf, 0x5b, 0xe0, 0x37, - 0x22, 0x75, 0xe7, 0xf5, 0x9d, 0xbd, 0x87, 0x38, 0xbf, 0x39, 0x39, 0x83, 0x6b, 0x7a, 0xa7, - 0x44, 0x2a, 0x98, 0xf0, 0x1e, 0xbf, 0x57, 0x44, 0xda, 0xcf, 0xb4, 0xf0, 0x12, 0x18, 0xab, - 0xac, 0x2c, 0x6a, 0x58, 0x38, 0x7b, 0xc7, 0x93, 0xbb, 0xdb, 0x1c, 0x04, 0x1d, 0xd5, 0x6c, - 0x14, 0xdc, 0x02, 0xf7, 0xf0, 0x69, 0x0f, 0x4a, 0xe2, 0x80, 0x05, 0x08, 0xac, 0x6f, 0xcf, - 0x8a, 0x56, 0x73, 0x37, 0x73, 0xae, 0xd9, 0xe8, 0x99, 0xee, 0xab, 0x42, 0xa7, 0x22, 0x99, - 0x71, 0xa8, 0xda, 0x89, 0x6f, 0x5b, 0x49, 0xa3, 0x44, 0xb6, 0x40, 0xd1, 0x9a, 0xe4, 0x6a, - 0x48, 0x9d, 0xda, 0x7d, 0xa3, 0x93, 0xc4, 0x23, 0xa9, 0x73, 0x00, 0xa2, 0x8c, 0x2e, 0x2b, - 0x10, 0xae, 0x58, 0x0f, 0xb0, 0x16, 0x4f, 0x83, 0xf1, 0x65, 0x5d, 0xf5, 0xe6, 0x67, 0x80, - 0xcd, 0xe6, 0x4b, 0x7b, 0xbd, 0xef, 0x16, 0x56, 0x3a, 0xcc, 0x3d, 0x65, 0xe9, 0x8d, 0xd8, - 0x00, 0xf9, 0x0b, 0x3a, 0x68, 0x5d, 0x17, 0xc2, 0xb7, 0x93, 0x71, 0xaa, 0x4c, 0x25, 0x75, - 0x7f, 0xb2, 0x06, 0xc6, 0xb1, 0xf7, 0x7c, 0x17, 0x0e, 0xc0, 0x46, 0x9c, 0x2f, 0xf6, 0x12, - 0x50, 0xac, 0xd5, 0x19, 0x2d, 0x49, 0xba, 0xd3, 0x78, 0xcf, 0x09, 0xfc, 0xa9, 0x4d, 0xe4, - 0x03, 0xbd, 0x50, 0xf0, 0xca, 0xa5, 0x1e, 0x8b, 0x59, 0xba, 0x16, 0xc7, 0x1a, 0xe0, 0x20, - 0x78, 0xd9, 0x9e, 0x3a, 0xf1, 0xb7, 0x35, 0xa3, 0x7d, 0x8a, 0xf3, 0xb8, 0x98, 0x5d, 0x44, - 0x9b, 0xa0, 0xf9, 0x05, 0x4b, 0x2b, 0xc3, 0xc8, 0x0f, 0x6c, 0xdd, 0xc9, 0xfb, 0x05, 0x84, - 0x84, 0x67, 0xaf, 0xc2, 0xa6, 0x46, 0x33, 0xd3, 0x23, 0xc8, 0x8f, 0xa7, 0xa4, 0xb7, 0xab, - 0x33, 0xf8, 0x1c, 0x6d, 0x82, 0x62, 0xc2, 0xca, 0x64, 0xe7, 0xb9, 0xf3, 0x11, 0xd1, 0x68, - 0x16, 0x1b, 0xb0, 0x6c, 0x39, 0xbd, 0x7f, 0xd7, 0xae, 0xd8, 0x14, 0x93, 0x38, 0x32, 0x54, - 0x6c, 0x27, 0x1f, 0x54, 0xeb, 0x66, 0x26, 0x89, 0xc1, 0xcd, 0x7c, 0x96, 0x7b, 0x02, 0x7b, - 0x35, 0x1b, 0xac, 0x88, 0x6c, 0xe2, 0x5f, 0xf2, 0x4e, 0x7c, 0x10, 0xa5, 0x07, 0x48, 0x9b, - 0xe5, 0x29, 0x02, 0x9f, 0x82, 0x70, 0xef, 0x99, 0xdd, 0x21, 0xe0, 0x43, 0xca, 0x7a, 0x67, - 0x5e, 0x27, 0x85, 0xd6, 0x29, 0xb2, 0x29, 0x79, 0x46, 0x4a, 0x32, 0xec, 0xda, 0xe5, 0x3c, - 0xc8, 0x7b, 0x52, 0xda, 0x6c, 0x87, 0x8a, 0x6d, 0x70, 0x73, 0xd1, 0xc3, 0xfd, 0xfc, 0x81, - 0xc3, 0x4f, 0x28, 0x46, 0xba, 0x40, 0xb9, 0x11, 0xc5, 0x36, 0xc4, 0xdd, 0xa0, 0xd4, 0x4a, - 0xe4, 0x19, 0x23, 0xd8, 0x0a, 0x7b, 0x61, 0x69, 0xaf, 0x46, 0xbe, 0xd4, 0xd6, 0x32, 0xc0, - 0x4f, 0xe5, 0x78, 0x06, 0x5e, 0x26, 0x27, 0x31, 0xff, 0x1d, 0x11, 0xd8, 0x1d, 0x80, 0x52, - 0x7e, 0x2b, 0xe1, 0x13, 0x16, 0x52, 0x0f, 0x21, 0xc8, 0x4d, 0x38, 0xb4, 0x66, 0xc0, 0xd5, - 0x8e, 0x09, 0xcf, 0x1b, 0x8d, 0x54, 0x74, 0x52, 0x64, 0xca, 0x9a, 0x81, 0x02, 0xf9, 0xd4, - 0xc8, 0xea, 0xac, 0xc5, 0xb1, 0x11, 0x11, 0xf1, 0x70, 0x96, 0xf4, 0xde, 0x3f, 0x02, 0xec, - 0x6e, 0x6f, 0x40, 0x00, 0x6a, 0xae, 0x55, 0xab, 0x4d, 0x64, 0xae, 0x4d, 0x11, 0x7b, 0xa4, - 0x86, 0xd2, 0x64, 0x37, 0x6e, 0x6c, 0x47, 0x1b, 0x85, 0x97, 0x95, 0x14, 0xea, 0x86, 0xb9, - 0x5b, 0xda, 0x4d, 0xd2, 0x96, 0x66, 0xc4, 0x56, 0x23, 0xef, 0xeb, 0x8e, 0x2f, 0x0a, 0x2a, - 0x0e, 0x7b, 0xd7, 0xe9, 0x3d, 0xe9, 0xa4, 0x2c, 0x5c, 0x14, 0x20, 0xbd, 0x0c, 0xa9, 0xd2, - 0x7a, 0xf7, 0x6a, 0x2c, 0xa3, 0xf2, 0xe8, 0x24, 0x1f, 0xa3, 0xc5, 0x21, 0xaa, 0x70, 0xf4, - 0x7c, 0x97, 0x00, 0xa4, 0xf1, 0x31, 0x47, 0x26, 0x85, 0x40, 0x9f, 0x08, 0x18, 0x23, 0xe0, - 0xf2, 0xb1, 0x1f, 0xeb, 0xf7, 0xd8, 0x7f, 0x80, 0xc9, 0xbb, 0x13, 0x9e, 0x3b, 0x91, 0x32, - 0x86, 0x72, 0xc4, 0xe3, 0x8b, 0x17, 0x54, 0x41, 0xec, 0xa1, 0x14, 0xe2, 0x57, 0x2d, 0x29, - 0xf7, 0x00, 0x66, 0x71, 0x90, 0x7f, 0xb5, 0x86, 0xda, 0xad, 0x0a, 0x59, 0x43, 0x72, 0xea, - 0x11, 0x0d, 0xab, 0xfb, 0x2f, 0x5d, 0xb5, 0x1b, 0x4e, 0xe8, 0xf2, 0xef, 0x71, 0x74, 0xdb, - 0x21, 0xec, 0x09, 0x13, 0x93, 0xa6, 0x41, 0xa2, 0xbf, 0x1d, 0x23, 0x9c, 0xc0, 0xf2, 0x30, - 0xdc, 0xf8, 0x85, 0x31, 0xfb, 0xd0, 0xf7, 0x1b, 0xa2, 0x74, 0xb8, 0x17, 0xd3, 0x56, 0xc2, - 0x0e, 0x16, 0x32, 0x95, 0xf7, 0x7a, 0x1c, 0x72, 0x03, 0x1b, 0x75, 0x44, 0x9c, 0xe4, 0x6e, - 0x0e, 0xb2, 0x6c, 0x60, 0x05, 0x6f, 0xc9, 0xa4, 0x80, 0xc4, 0x23, 0x87, 0x82, 0xa1, 0x93, - 0x15, 0x5a, 0x9c, 0x26, 0x23, 0x3e, 0x46, 0x4c, 0x82, 0xd5, 0xb2, 0x47, 0x28, 0x06, 0x80, - 0x2c, 0xad, 0x75, 0xfb, 0xba, 0x9b, 0xeb, 0x2a, 0x48, 0x4b, 0x9d, 0x5c, 0xdc, 0xb4, 0x4f, - 0xd6, 0x12, 0x28, 0xaf, 0x12, 0x1a, 0x13, 0x58, 0x0b, 0x91, 0xd3, 0xe0, 0xfa, 0xb8, 0x0f, - 0xe4, 0xd5, 0x40, 0x96, 0xb9, 0x76, 0x26, 0x19, 0x9e, 0xb9, 0x31, 0x6e, 0xc3, 0x75, 0xf4, - 0xd8, 0x62, 0xac, 0xc8, 0xac, 0x10, 0xaf, 0x9d, 0x10, 0x41, 0x44, 0xca, 0x04, 0xf6, 0xc0, - 0xc6, 0x2c, 0xc4, 0xc3, 0x86, 0x79, 0x51, 0x04, 0x7e, 0x80, 0xd0, 0x38, 0xdc, 0xb3, 0x8c, - 0xf4, 0xfa, 0xf3, 0x5a, 0x7e, 0x35, 0x72, 0x27, 0x67, 0xd4, 0x3d, 0x6c, 0x70, 0x04, 0x1f, - 0x37, 0xaa, 0x05, 0x6d, 0xb3, 0xa8, 0x5d, 0x3c, 0x36, 0x68, 0x63, 0x51, 0xb2, 0xd0, 0x01, - 0x94, 0x2a, 0x31, 0x62, 0x65, 0xee, 0x79, 0xc8, 0x84, 0x8c, 0xe1, 0x9f, 0x12, 0x76, 0xbf, - 0x7b, 0x89, 0xdf, 0xf8, 0x01, 0x80, 0xe8, 0xa5, 0x49, 0x19, 0xe7, 0xf0, 0xe3, 0x00, 0x29, - 0x9c, 0xb5, 0x74, 0xff, 0xfc, 0x41, 0xb0, 0x17, 0x2a, 0x06, 0xa0, 0x68, 0x2e, 0xb1, 0x2b, - 0x0a, 0xfb, 0xc4, 0x05, 0x56, 0xfa, 0xc7, 0x0a, 0xbb, 0x6c, 0xb2, 0x44, 0x59, 0xd8, 0x6f, - 0x8d, 0x97, 0x67, 0x57, 0x77, 0x5e, 0x3d, 0x01, 0x14, 0x62, 0x94, 0x47, 0x94, 0xee, 0xca, - 0xdc, 0x2c, 0xd2, 0x99, 0x8e, 0x1f, 0x20, 0x2a, 0xeb, 0x7c, 0xa8, 0x13, 0xca, 0x59, 0x66, - 0x90, 0x8b, 0x3e, 0xea, 0xc3, 0x57, 0x76, 0x50, 0x01, 0x53, 0x11, 0xde, 0x2c, 0xe5, 0x84, - 0x54, 0x6d, 0xcb, 0x00, 0xa5, 0x88, 0x54, 0x1a, 0x2d, 0x73, 0xa7, 0x42, 0xd3, 0xba, 0x01, - 0xad, 0xa0, 0x79, 0x4a, 0xbb, 0x5a, 0xce, 0xbf, 0x94, 0x67, 0xef, 0x4c, 0x40, 0xb4, 0x3a, - 0xe9, 0x44, 0x26, 0xcb, 0x06, 0x07, 0x74, 0x51, 0xe6, 0x96, 0x6c, 0xf2, 0xc9, 0xf3, 0x05, - 0x0b, 0xd8, 0x9c, 0xfd, 0xec, 0x23, 0x31, 0x30, 0x66, 0x0a, 0x66, 0x83, 0xb5, 0xac, 0x32, - 0x0b, 0x55, 0x43, 0xdd, 0x77, 0xe9, 0xc1, 0x1a, 0xd1, 0xe9, 0xb5, 0x38, 0x5a, 0x0c, 0x93, - 0x76, 0x58, 0x58, 0xed, 0x20, 0x83, 0x3c, 0x6c, 0x26, 0x28, 0x41, 0xe5, 0xaa, 0x3a, 0x5f, - 0xaf, 0x3e, 0x94, 0x4d, 0xeb, 0x4a, 0x16, 0x11, 0xbe, 0x21, 0xe3, 0x4c, 0xda, 0x9d, 0x02, - 0x1c, 0x0a, 0x4f, 0x0c, 0x09, 0xe0, 0x01, 0xf9, 0x41, 0x2e, 0x12, 0x72, 0xa2, 0x1a, 0xa0, - 0x37, 0x44, 0xf1, 0x75, 0xf1, 0xac, 0xe6, 0xc9, 0x0e, 0xbf, 0x20, 0x3b, 0xfc, 0x8f, 0xbe, - 0x43, 0x6c, 0x3b, 0x83, 0xf0, 0x34, 0x17, 0xc1, 0xc4, 0x86, 0x53, 0x2a, 0x6a, 0x62, 0x1e, - 0x81, 0x26, 0x53, 0x89, 0xb1, 0x0c, 0xea, 0xd3, 0x4c, 0x15, 0x77, 0xfa, 0xca, 0x3b, 0xbb, - 0xc5, 0x3d, 0xd9, 0xe9, 0xd9, 0x5b, 0xd1, 0x41, 0x1b, 0xba, 0x48, 0xa2, 0x9a, 0xcf, 0x79, - 0x70, 0x71, 0x16, 0x6b, 0x3b, 0xaf, 0x12, 0xb1, 0xba, 0x41, 0xba, 0xe9, 0xd5, 0xc6, 0xe2, - 0x01, 0x63, 0x48, 0x01, 0x51, 0x6e, 0x2a, 0x3e, 0xb1, 0xa7, 0xdc, 0x43, 0x1f, 0x0a, 0xd5, - 0x07, 0x4c, 0xd2, 0x72, 0x3e, 0x60, 0x61, 0xb5, 0x07, 0x10, 0xd2, 0x13, 0xe5, 0x2e, 0xff, - 0x59, 0x16, 0x38, 0xee, 0xec, 0xa8, 0x33, 0xe2, 0x42, 0x96, 0x52, 0xf1, 0x58, 0x64, 0xa7, - 0x25, 0xf2, 0xd9, 0x66, 0x13, 0x54, 0x7b, 0x16, 0x6c, 0xab, 0x7a, 0x63, 0x7d, 0x19, 0x99, - 0x78, 0xfc, 0x16, 0x0e, 0x1e, 0x5e, 0xe8, 0xbb, 0x9e, 0x23, 0xd3, 0xf4, 0xcf, 0x0f, 0x3d, - 0x16, 0x2d, 0xf9, 0x30, 0x59, 0x70, 0x7f, 0xd0, 0xf4, 0xe8, 0xcc, 0xe5, 0xfb, 0x00, 0xcb, - 0xd4, 0xf4, 0xfb, 0xfa, 0x10, 0x61, 0x26, 0x5a, 0x21, 0x0a, 0x0c, 0xe1, 0xa7, 0xa7, 0xaa, - 0x81, 0x3d, 0x83, 0x5e, 0xbf, 0x6e, 0x6b, 0xda, 0x32, 0x39, 0x9b, 0xff, 0x4c, 0xfb, 0x33, - 0xdb, 0x8c, 0x36, 0xe4, 0x69, 0x35, 0xa0, 0xfd, 0x04, 0xab, 0x7d, 0x73, 0x4c, 0x2d, 0x94, - 0x84, 0x0e, 0x60, 0x4d, 0x78, 0x71, 0xd4, 0x32, 0x84, 0x75, 0x7f, 0x01, 0xf0, 0x99, 0x20, - 0x1a, 0x7e, 0xca, 0x57, 0x6f, 0xed, 0x8d, 0x72, 0x72, 0x73, 0x20, 0xe2, 0xa2, 0x45, 0x73, - 0x4e, 0x78, 0x40, 0x23, 0x12, 0xdc, 0x40, 0x73, 0xef, 0xce, 0x49, 0x10, 0xd2, 0x00, 0x54, - 0x8e, 0x68, 0xba, 0xd9, 0x2c, 0x8b, 0xf7, 0x16, 0x7a, 0xd0, 0x59, 0x98, 0x38, 0x6f, 0xd9, - 0xd0, 0x2a, 0x0c, 0xc5, 0xae, 0x81, 0xbd, 0x02, 0x1b, 0x81, 0x0f, 0x98, 0xb6, 0xa6, 0xab, - 0xc6, 0xec, 0x94, 0xdb, 0xaa, 0xc2, 0x25, 0x55, 0xbd, 0xc7, 0xb6, 0x76, 0xc3, 0x1c, 0x2b, - 0xdc, 0x2a, 0xc5, 0xc6, 0x14, 0x66, 0x71, 0x5b, 0x73, 0x22, 0x51, 0x71, 0xd0, 0xf8, 0x9d, - 0x05, 0x62, 0xcb, 0x7f, 0x99, 0x12, 0x0e, 0x71, 0x66, 0x03, 0x51, 0xc8, 0x22, 0x30, 0x37, - 0x8b, 0x31, 0x34, 0xb6, 0x1d, 0x52, 0x2b, 0xb2, 0xc0, 0xd8, 0xaa, 0x67, 0x1d, 0x12, 0xd0, - 0x48, 0xdf, 0x3b, 0xec, 0x31, 0xc7, 0x78, 0xe1, 0x52, 0xb5, 0x67, 0xf8, 0x8d, 0x93, 0x13, - 0x7b, 0x33, 0x80, 0x31, 0x8c, 0xab, 0xe2, 0x0f, 0x73, 0xc2, 0x10, 0xf9, 0x17, 0x01, 0x76, - 0x3c, 0xea, 0x06, 0xdf, 0x6c, 0xe9, 0x66, 0xe2, 0xf0, 0x2c, 0x57, 0xcb, 0xda, 0x0f, 0xee, - 0xee, 0xf5, 0x5b, 0xfe, 0xbf, 0x1b, 0xfa, 0x77, 0xf7, 0xfc, 0x5e, 0x8c, 0xf3, 0x0c, 0x55, - 0xd6, 0xe6, 0xf6, 0xd9, 0x75, 0x26, 0x70, 0xd8, 0x27, 0x01, 0xc5, 0x73, 0x7d, 0xcc, 0xdd, - 0x36, 0xb5, 0x39, 0xf2, 0x2f, 0x9d, 0x12, 0x2b, 0xab, 0xd0, 0x40, 0x82, 0x74, 0xc2, 0xff, - 0x56, 0xeb, 0x47, 0x25, 0x46, 0x61, 0x95, 0xc4, 0xaa, 0x5b, 0xd2, 0x8e, 0x9b, 0x24, 0x1e, - 0xce, 0x4a, 0xaa, 0x86, 0xaa, 0x18, 0xa0, 0x4d, 0xfb, 0x07, 0x6f, 0xf6, 0x25, 0x7c, 0x08, - 0x93, 0xb2, 0xe6, 0x5f, 0x5b, 0xa6, 0x2d, 0x45, 0x40, 0xf1, 0xf1, 0x9d, 0x82, 0x8b, 0x0c, - 0x9c, 0xb4, 0xe3, 0x37, 0xc1, 0x15, 0x6a, 0xce, 0x7b, 0x55, 0x07, 0x05, 0x41, 0x1b, 0x38, - 0xbc, 0xe1, 0xa6, 0x8b, 0xcc, 0xc9, 0x18, 0x4f, 0x27, 0xaa, 0x03, 0xf6, 0xfd, 0x6f, 0xc3, - 0x14, 0x53, 0xef, 0x53, 0x72, 0x54, 0xde, 0x04, 0x3d, 0xfd, 0x46, 0x13, 0x61, 0x38, 0x1b, - 0x48, 0x64, 0x57, 0x3c, 0xa8, 0xe0, 0x60, 0x46, 0xf8, 0xd5, 0x00, 0xd1, 0xe6, 0x0b, 0x79, - 0xc5, 0x47, 0x63, 0xfd, 0x5e, 0x24, 0x40, 0x42, 0xe7, 0xf7, 0x7f, 0xef, 0xd1, 0x69, 0x12, - 0x29, 0xf6, 0xa6, 0x21, 0xdb, 0x13, 0x2b, 0x88, 0x11, 0xd0, 0xf3, 0x2e, 0x98, 0x71, 0xbf, - 0x85, 0xff, 0xd8, 0x1a, 0x08, 0x8f, 0x90, 0x22, 0x80, 0x08, 0x1b, 0x53, 0xb3, 0x02, 0x6f, - 0xdb, 0x66, 0x32, 0x9c, 0xaf, 0xcb, 0x3c, 0x9e, 0xe0, 0xb1, 0xc1, 0x21, 0x3d, 0x19, 0x0e, - 0x86, 0xd9, 0x90, 0xf4, 0xb1, 0xa4, 0xb7, 0xa9, 0xc3, 0x60, 0xb8, 0x00, 0x50, 0xfc, 0x2a, - 0xf6, 0xf1, 0xb7, 0x3d, 0x30, 0x84, 0xd3, 0x17, 0x3b, 0x86, 0x89, 0xea, 0xb3, 0x65, 0xe1, - 0x81, 0xe2, 0xc1, 0xe4, 0x55, 0x46, 0x14, 0xb4, 0xac, 0x65, 0x8a, 0x46, 0x84, 0xcc, 0x9e, - 0x97, 0x6e, 0xee, 0x41, 0x9a, 0xff, 0x25, 0x36, 0x83, 0x2d, 0x5f, 0x2e, 0xb6, 0xc6, 0x3f, - 0xf7, 0xa9, 0xfe, 0x98, 0x7d, 0x51, 0x65, 0x79, 0x8e, 0xd5, 0x73, 0x1e, 0xd3, 0x87, 0x7a, - 0xf8, 0xe5, 0xb8, 0x8f, 0x10, 0xb8, 0xde, 0xce, 0x15, 0x92, 0xb8, 0xc5, 0xe7, 0xcb, 0x67, - 0x65, 0xe0, 0x36, 0x86, 0x51, 0xa1, 0x07, 0xa6, 0x27, 0x35, 0x39, 0xac, 0x15, 0x5f, 0x40, - 0x30, 0xd9, 0xcd, 0x84, 0x22, 0x70, 0xbb, 0x28, 0x4f, 0x76, 0x18, 0x4e, 0x66, 0x4e, 0x8e, - 0x7d, 0x89, 0x71, 0x0b, 0x66, 0x76, 0xce, 0x2c, 0xaf, 0xef, 0x24, 0x51, 0xb1, 0x1c, 0x09, - 0x2d, 0xd4, 0x9a, 0x16, 0x03, 0xf1, 0xf8, 0xee, 0xb7, 0x01, 0x0f, 0xf7, 0x2e, 0xdd, 0x2f, - 0x91, 0x70, 0x06, 0x34, 0xd1, 0xd2, 0x4e, 0xb5, 0xad, 0x70, 0xef, 0x68, 0x62, 0xcd, 0x4e, - 0x12, 0x23, 0x04, 0xea, 0xf8, 0x4e, 0x6f, 0x3e, 0x14, 0xc3, 0xd6, 0x20, 0x6b, 0xf6, 0x20, - 0x75, 0x44, 0xa4, 0x8c, 0xb4, 0xf2, 0xf4, 0xa6, 0x7b, 0xbc, 0x73, 0x1b, 0xe3, 0xba, 0xbd, - 0xd1, 0x87, 0x23, 0x15, 0xc2, 0x39, 0xc9, 0xce, 0xb2, 0x34, 0xaa, 0x40, 0x17, 0x55, 0x49, - 0xea, 0x1e, 0x02, 0x9b, 0xee, 0x42, 0xce, 0xea, 0xe3, 0xfc, 0x3c, 0x9e, 0x0c, 0x88, 0x96, - 0xee, 0xa9, 0x3b, 0x82, 0x91, 0x02, 0xb6, 0xf0, 0x6c, 0x8c, 0x3a, 0x91, 0xe9, 0x95, 0xae, - 0xde, 0x46, 0x73, 0x1f, 0xc2, 0x60, 0x86, 0x2a, 0x6e, 0x47, 0xee, 0xb0, 0xbc, 0x9f, 0x37, - 0x7b, 0x48, 0x93, 0xdd, 0x54, 0x2d, 0x90, 0x28, 0x35, 0xaf, 0xa6, 0xf8, 0x61, 0x8e, 0xfc, - 0xa6, 0xa1, 0x91, 0x24, 0x67, 0x17, 0xf8, 0xaf, 0xcd, 0x80, 0xbf, 0x92, 0xc6, 0xd1, 0xd3, - 0x5c, 0x22, 0xc3, 0x7e, 0x5b, 0xb2, 0x69, 0x68, 0xf1, 0x6b, 0x05, 0x7b, 0x28, 0x5d, 0xf3, - 0x74, 0x43, 0x3a, 0x25, 0x17, 0x81, 0xf7, 0x06, 0x9e, 0x9c, 0xa0, 0x69, 0xfe, 0xe5, 0x26, - 0x07, 0xf1, 0x1c, 0x23, 0x8e, 0xa0, 0xe3, 0xc4, 0xd7, 0x0e, 0x2f, 0x11, 0x15, 0xec, 0x64, - 0x21, 0x60, 0x30, 0xab, 0x1a, 0x0e, 0x35, 0x68, 0x72, 0x11, 0xd2, 0x76, 0x76, 0xd6, 0x79, - 0xa5, 0x10, 0xa4, 0x30, 0x06, 0x9b, 0xe1, 0xb0, 0xb7, 0xa1, 0xb8, 0x77, 0xca, 0xae, 0xd3, - 0x72, 0x30, 0xac, 0x7a, 0x83, 0x3c, 0xf7, 0xaa, 0x5e, 0xcb, 0xfa, 0x06, 0x3f, 0x38, 0xdc, - 0x3c, 0xac, 0x5c, 0x66, 0x3b, 0x67, 0xb8, 0x67, 0x39, 0x15, 0x17, 0x13, 0xda, 0x11, 0x70, - 0x6a, 0xf9, 0x8b, 0xdf, 0x0e, 0xb0, 0xee, 0x1f, 0xd8, 0xbc, 0x94, 0xdd, 0x31, 0x03, 0x3a, - 0x10, 0x84, 0xd6, 0xbd, 0x52, 0x0d, 0x93, 0x99, 0xe4, 0xda, 0xc4, 0x6f, 0xff, 0x62, 0xbc, - 0x81, 0x9a, 0xc5, 0xe0, 0xbd, 0x85, 0x6c, 0x19, 0x4e, 0x05, 0xc6, 0x70, 0x8a, 0x65, 0x71, - 0x2f, 0x6b, 0x4b, 0xba, 0x42, 0x44, 0x97, 0xde, 0xf0, 0xf6, 0xb1, 0x08, 0xfd, 0x8f, 0x23, - 0xcc, 0x20, 0xdc, 0x14, 0x09, 0x84, 0x2f, 0xac, 0x7c, 0xc8, 0x08, 0x34, 0xa3, 0x1d, 0xb1, - 0xbe, 0x8d, 0x01, 0xd5, 0xf9, 0x20, 0x57, 0x9e, 0xef, 0xe2, 0x15, 0x5c, 0xe9, 0x73, 0x83, - 0x1f, 0x72, 0x3d, 0x5a, 0x41, 0x51, 0xa7, 0xd2, 0x50, 0x8c, 0xcb, 0x09, 0xa2, 0xd2, 0x6d, - 0x32, 0x82, 0xe8, 0xd6, 0x30, 0x1e, 0x46, 0xa5, 0xe1, 0xef, 0x1b, 0x5e, 0x22, 0x43, 0xd8, - 0xf8, 0xa8, 0x7c, 0x78, 0x7d, 0x92, 0xc4, 0x89, 0x75, 0xe6, 0x15, 0x15, 0x3d, 0x13, 0x18, - 0xa8, 0xfb, 0x4e, 0xbb, 0x47, 0xd8, 0x09, 0x08, 0xe6, 0xf6, 0x36, 0x22, 0xa6, 0x10, 0x09, - 0x59, 0x3b, 0x57, 0x40, 0x24, 0x92, 0x11, 0x19, 0x76, 0x5e, 0x9c, 0x7d, 0x19, 0xcd, 0xb7, - 0x30, 0xbe, 0x5c, 0x53, 0x33, 0x64, 0xe1, 0x29, 0x21, 0xb1, 0x32, 0x67, 0xc2, 0xa6, 0x47, - 0x83, 0xed, 0x78, 0x82, 0x74, 0x83, 0x0e, 0x2f, 0x80, 0x63, 0x30, 0xd1, 0x7d, 0xf3, 0xe0, - 0x93, 0x5b, 0x9c, 0x5c, 0xba, 0x64, 0xc2, 0x81, 0x57, 0x83, 0x31, 0xfa, 0x0d, 0x6c, 0x9e, - 0xff, 0x7b, 0x1b, 0x10, 0xaf, 0xd8, 0xbb, 0x4d, 0xbc, 0xa9, 0xf5, 0xa8, 0xdc, 0x3a, 0x35, - 0xe6, 0x8b, 0x05, 0x45, 0xd3, 0x08, 0x92, 0x34, 0xcb, 0xd6, 0x5b, 0x37, 0x2c, 0x29, 0xd5, - 0xa0, 0x52, 0x65, 0x77, 0xa2, 0x40, 0x2f, 0xcd, 0xc7, 0x33, 0xd9, 0x04, 0x98, 0x6e, 0x32, - 0x7a, 0x0d, 0x3f, 0xd6, 0xe2, 0x9e, 0xa6, 0x2f, 0x18, 0x3b, 0xbf, 0xa7, 0xdb, 0x74, 0x37, - 0x93, 0xe8, 0xcf, 0x19, 0x12, 0x37, 0x0c, 0x7d, 0xa5, 0xae, 0xf6, 0xf9, 0x1c, 0x00, 0x73, - 0x24, 0x28, 0x98, 0x80, 0x91, 0x1d, 0xc7, 0x9e, 0xef, 0x63, 0x11, 0x18, 0x9e, 0xda, 0x70, - 0x2a, 0x38, 0xde, 0xec, 0x8a, 0xf5, 0x8b, 0xf3, 0xd6, 0x9a, 0x8f, 0xdd, 0xeb, 0x48, 0x26, - 0xd7, 0x66, 0x69, 0x0d, 0x0b, 0xbc, 0x51, 0xb1, 0xe8, 0x7e, 0x62, 0x0f, 0xe8, 0x53, 0x3a, - 0x25, 0xb9, 0xf9, 0x3f, 0x8d, 0x40, 0xb6, 0x4b, 0x15, 0xcd, 0x4f, 0x0f, 0x76, 0x1d, 0x36, - 0xeb, 0xb9, 0x74, 0xb2, 0xcc, 0x51, 0xbe, 0x0c, 0x98, 0x38, 0x11, 0x31, 0xdc, 0x05, 0xcf, - 0x33, 0x1e, 0x3a, 0x63, 0x64, 0x05, 0x17, 0x46, 0x38, 0xf1, 0x10, 0x1c, 0x62, 0xfc, 0xca, - 0x19, 0x31, 0x03, 0x81, 0x46, 0x86, 0x75, 0x8a, 0xda, 0xe2, 0x86, 0x62, 0xc0, 0xc7, 0xb8, - 0x0a, 0xb5, 0xbd, 0x2c, 0x58, 0xab, 0xae, 0x34, 0xb2, 0xf3, 0x63, 0x3b, 0xc7, 0x9c, 0xc8, - 0x8c, 0x19, 0x5e, 0x72, 0x81, 0x92, 0x9f, 0x5e, 0xcf, 0x9e, 0xc4, 0xf2, 0x33, 0x0a, 0x14, - 0xd9, 0x92, 0xd6, 0xe2, 0xbc, 0x84, 0x9b, 0x15, 0x8b, 0x34, 0x04, 0xa0, 0x2c, 0x53, 0xd1, - 0x85, 0x84, 0x86, 0x0d, 0xdb, 0xcf, 0xba, 0xed, 0xc9, 0xb4, 0x32, 0x17, 0x61, 0xb5, 0x6b, - 0xef, 0xa5, 0x7b, 0x59, 0xb2, 0xb5, 0x66, 0xa1, 0x25, 0xaa, 0x26, 0x3a, 0x03, 0x7c, 0x6b, - 0x0c, 0xac, 0x72, 0xe1, 0xf6, 0x86, 0xae, 0xc5, 0x27, 0xe7, 0x30, 0x6c, 0x4a, 0x1b, 0x30, - 0xe5, 0xc5, 0xbf, 0xff, 0xa4, 0x0c, 0x2f, 0xc5, 0xe8, 0x47, 0x5a, 0x07, 0x33, 0xad, 0xd8, - 0x01, 0x29, 0x20, 0xbe, 0x17, 0x59, 0xcf, 0x39, 0x26, 0xa8, 0xf9, 0x8c, 0x16, 0x6c, 0x7b, - 0x39, 0x11, 0x84, 0xf9, 0x92, 0xf7, 0x48, 0x38, 0x58, 0xbf, 0x65, 0x00, 0xbf, 0xe9, 0xb5, - 0x2a, 0x1e, 0x2d, 0xb4, 0x38, 0x12, 0x29, 0x96, 0xf7, 0x3b, 0x25, 0x14, 0xff, 0xc0, 0x17, - 0x55, 0x67, 0xec, 0xe1, 0xba, 0xda, 0xe3, 0x9b, 0x6a, 0x9c, 0x71, 0x9e, 0x32, 0xa1, 0x48, - 0x98, 0xc8, 0xab, 0xf5, 0xb9, 0x25, 0x83, 0xd1, 0x36, 0x95, 0x48, 0x06, 0x77, 0x67, 0x3f, - 0x20, 0x47, 0x5f, 0x27, 0x19, 0x19, 0xd6, 0x09, 0x15, 0x42, 0x3d, 0x69, 0x6e, 0x86, 0x8f, - 0xdd, 0xfa, 0x60, 0xe8, 0x89, 0xa7, 0x58, 0x6d, 0x51, 0x0c, 0x62, 0xc6, 0x3a, 0x16, 0xb1, - 0x99, 0x8c, 0xf6, 0x59, 0x51, 0x39, 0x9d, 0x78, 0x92, 0xd1, 0x37, 0xac, 0x91, 0x68, 0xe0, - 0x9b, 0xc4, 0x3b, 0x59, 0x89, 0xc7, 0x9a, 0x44, 0x2a, 0x09, 0x1c, 0x8f, 0xff, 0x19, 0x1c, - 0x50, 0x66, 0xe2, 0x89, 0xe9, 0x8f, 0x85, 0x5c, 0xcf, 0xfd, 0xf9, 0x96, 0x15, 0x7e, 0x9c, - 0xfa, 0x91, 0x7c, 0x24, 0x4d, 0xa4, 0xba, 0x3e, 0x0c, 0xaf, 0xd2, 0x80, 0x46, 0xc9, 0xa9, - 0xae, 0xa3, 0xdf, 0x72, 0xae, 0x68, 0xb0, 0xc2, 0x75, 0xb8, 0x78, 0xaa, 0xe4, 0x6a, 0x91, - 0x39, 0xb2, 0x13, 0x9c, 0x61, 0x93, 0xf9, 0xb7, 0x65, 0xf9, 0x01, 0xfc, 0x5b, 0x3e, 0x41, - 0xd5, 0x98, 0x6a, 0xec, 0x0c, 0x42, 0x7d, 0x75, 0x42, 0xd5, 0x39, 0x9e, 0xd3, 0xa5, 0x8f, - 0xf5, 0xc4, 0x0d, 0xa1, 0x64, 0x8d, 0x13, 0x79, 0xa8, 0x90, 0xe4, 0xf8, 0x2d, 0x58, 0xf2, - 0x9b, 0xa2, 0x25, 0xa9, 0x4a, 0x62, 0xde, 0xfc, 0x33, 0x3f, 0x12, 0x33, 0x5d, 0xbe, 0x55, - 0x9b, 0x70, 0xf4, 0xc9, 0x59, 0x23, 0xa1, 0x2d, 0xce, 0x67, 0x09, 0x67, 0xa2, 0x1e, 0xaf, - 0xf1, 0x04, 0x38, 0x35, 0x6d, 0x92, 0x76, 0x30, 0x5a, 0x9d, 0x0a, 0x33, 0xf5, 0xb1, 0x52, - 0xe8, 0x8d, 0x7e, 0x98, 0xf2, 0x04, 0x02, 0xcf, 0x32, 0x7b, 0x18, 0x1a, 0x14, 0x79, 0x01, - 0x9b, 0xac, 0x5e, 0xa4, 0x37, 0x81, 0xac, 0x07, 0x26, 0xff, 0x80, 0x27, 0x18, 0x12, 0x15, - 0xb3, 0x69, 0x95, 0xfc, 0xc3, 0x58, 0x17, 0x79, 0x0d, 0x6b, 0x08, 0x82, 0x80, 0x1f, 0x18, - 0xdf, 0xe9, 0x53, 0x90, 0xc4, 0x40, 0x46, 0x59, 0x83, 0x43, 0x5d, 0x9e, 0xf3, 0x10, 0x4e, - 0x49, 0x16, 0xce, 0xc4, 0xf0, 0x34, 0x68, 0x99, 0x04, 0x8a, 0x2e, 0x6f, 0xc1, 0xa3, 0x89, - 0xc2, 0xeb, 0xb9, 0xef, 0xa2, 0x0b, 0xb1, 0x45, 0x87, 0xf1, 0x08, 0xd2, 0x32, 0xd4, 0xcc, - 0xcb, 0x83, 0x3c, 0x3c, 0xc4, 0x6f, 0x44, 0xb7, 0x35, 0xcf, 0xf0, 0x7c, 0x1e, 0x6e, 0x4d, - 0xbe, 0x4b, 0x1c, 0x4d, 0xb9, 0x26, 0x36, 0x8d, 0xe1, 0x64, 0x3c, 0xb0, 0xee, 0x20, 0x94, - 0xe2, 0xbb, 0x9e, 0x77, 0x4c, 0x34, 0xe6, 0x68, 0x83, 0x2d, 0x59, 0xac, 0xca, 0x65, 0xc3, - 0x3c, 0x92, 0xfb, 0x85, 0x0b, 0x5b, 0xe9, 0x66, 0x50, 0xac, 0xa5, 0xc0, 0x70, 0xd3, 0x12, - 0xed, 0xd0, 0x15, 0x83, 0x10, 0xc6, 0xf5, 0x75, 0xe6, 0x46, 0xf5, 0x29, 0xd1, 0x95, 0xf7, - 0x22, 0xd3, 0xb5, 0x66, 0x58, 0x5b, 0x21, 0xe9, 0x99, 0x50, 0x70, 0x21, 0x56, 0x14, 0x4c, - 0x0a, 0x59, 0xce, 0xbc, 0xd4, 0x75, 0x86, 0x98, 0x9c, 0x7b, 0x96, 0xb9, 0x24, 0x19, 0x6f, - 0x23, 0x6c, 0xa2, 0x3b, 0xf9, 0x5a, 0xa8, 0xfd, 0x17, 0x00, 0x46, 0x28, 0x8d, 0x3a, 0xc5, - 0xe2, 0xa0, 0x16, 0xd0, 0xb8, 0xc4, 0xdf, 0xe2, 0x26, 0x6f, 0x8a, 0x14, 0x4c, 0x16, 0x46, - 0xd2, 0x1f, 0x8f, 0x2e, 0xd5, 0x82, 0x09, 0x10, 0x3e, 0xaf, 0x13, 0xa3, 0x3d, 0xa2, 0xda, - 0xac, 0x85, 0x52, 0x37, 0x66, 0xd8, 0x1d, 0x04, 0x64, 0x7a, 0x79, 0x46, 0x07, 0xb6, 0x10, - 0x2a, 0xe6, 0x23, 0xb4, 0xa8, 0x14, 0x2e, 0xf3, 0xc3, 0x18, 0x95, 0x9c, 0xf2, 0xb8, 0xda, - 0x65, 0x66, 0x16, 0x0a, 0xcf, 0xf4, 0x6f, 0x5f, 0x6f, 0xdb, 0x4e, 0x13, 0xdf, 0x14, 0x8f, - 0x5e, 0x20, 0x62, 0xc1, 0xb7, 0x61, 0x1a, 0xe1, 0xba, 0x5e, 0x77, 0x55, 0xc4, 0x9b, 0xab, - 0x6d, 0x7c, 0x51, 0x1a, 0x37, 0x15, 0x2c, 0xf0, 0x9b, 0xee, 0xc0, 0x09, 0x2c, 0x7b, 0xb0, - 0x26, 0xec, 0x39, 0xab, 0x79, 0x83, 0x92, 0xd4, 0xb9, 0x77, 0xb1, 0xab, 0x0e, 0x1d, 0x61, - 0x3a, 0x0e, 0x2c, 0xcf, 0x2e, 0xca, 0x1d, 0x73, 0x9c, 0xf1, 0x86, 0x23, 0x96, 0xa8, 0xf3, - 0xb2, 0xb3, 0x3c, 0x14, 0x48, 0xba, 0xd4, 0xb3, 0xb3, 0xe3, 0xfd, 0x57, 0x43, 0xc1, 0xae, - 0xd1, 0x01, 0xf2, 0x13, 0xc9, 0x73, 0x5a, 0x62, 0x2d, 0x1f, 0xee, 0x43, 0x49, 0x99, 0x5c, - 0xbc, 0x33, 0x2f, 0x8d, 0xac, 0xc8, 0x6e, 0xf9, 0x2a, 0xba, 0xc2, 0xcd, 0xf7, 0x79, 0x3e, - 0xae, 0x4d, 0xec, 0x69, 0xc6, 0x85, 0x69, 0x55, 0x26, 0x0a, 0x8a, 0xd3, 0x4b, 0xd8, 0xde, - 0xef, 0x0b, 0x25, 0xed, 0xad, 0xa3, 0xee, 0x95, 0x85, 0x9c, 0xb5, 0x20, 0x24, 0x0b, 0x19, - 0xfa, 0x23, 0xab, 0x57, 0x89, 0x0c, 0x7f, 0x7f, 0xcc, 0x53, 0xde, 0x65, 0x11, 0xc6, 0xbf, - 0xae, 0x98, 0x89, 0xbd, 0x1b, 0x2b, 0x25, 0xc5, 0x1a, 0x09, 0x3f, 0x82, 0xb2, 0xb7, 0xe1, - 0x03, 0xc5, 0x67, 0x08, 0xf2, 0x64, 0xed, 0x4f, 0x6a, 0x57, 0x7f, 0x30, 0x02, 0xb6, 0x39, - 0x92, 0x15, 0x87, 0x81, 0xd3, 0x94, 0xc8, 0x22, 0x7e, 0xab, 0xfb, 0x03, 0x9c, 0xd1, 0xad, - 0xb2, 0x99, 0x3e, 0xc9, 0xf6, 0xd6, 0xc5, 0xcd, 0x16, 0x29, 0x76, 0xb1, 0xba, 0x16, 0x94, - 0x3a, 0x03, 0x06, 0xff, 0x6a, 0x2c, 0xf6, 0x7f, 0xc2, 0x73, 0x89, 0xd6, 0xfa, 0x88, 0xe1, - 0x09, 0x20, 0x93, 0x2f, 0x36, 0xa4, 0xa5, 0xaa, 0x30, 0xb3, 0x22, 0xd0, 0x5c, 0xeb, 0x77, - 0xe4, 0x71, 0xec, 0x23, 0xf2, 0x98, 0x53, 0x74, 0x32, 0xb6, 0x6e, 0x6b, 0x81, 0xbc, 0x22, - 0x71, 0x82, 0x0e, 0x4f, 0x3c, 0xf4, 0x74, 0x1b, 0xfc, 0xc9, 0x42, 0xf1, 0xff, 0xf1, 0xe4, - 0x22, 0x8e, 0xc6, 0x86, 0x1d, 0x16, 0xc0, 0xe6, 0xed, 0x6e, 0x06, 0xc5, 0xe0, 0xce, 0x0c, - 0x0b, 0xb4, 0x1d, 0x0a, 0x2c, 0x04, 0x6b, 0x0e, 0x93, 0xe1, 0x97, 0xcd, 0x28, 0xd6, 0x62, - 0x0c, 0xe5, 0xa8, 0xe0, 0x51, 0x16, 0xc7, 0x9e, 0xad, 0x7f, 0x9d, 0x57, 0xe3, 0x10, 0x59, - 0xad, 0xa9, 0x08, 0xbe, 0x81, 0x4c, 0xb0, 0xcc, 0x31, 0x4d, 0xc1, 0x47, 0xb5, 0x27, 0x8f, - 0xf7, 0xb0, 0x2e, 0x3b, 0xa2, 0xa6, 0xf8, 0xb1, 0xf0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xfe, 0x2d, 0x83, 0x86, 0x5e, 0xc6, 0xd0, 0xe1, 0x80, 0x21, 0x04, 0x7a, - 0x13, 0xef, 0xf3, 0x31, 0x2e, 0xf1, 0x98, 0xd0, 0x6f, 0x7d, 0xc7, 0x22, 0x94, 0x94, 0xa5, - 0xb8, 0x71, 0xbc, 0xbd, 0x0a, 0x02, 0x50, 0xce, 0x39, 0xb1, 0x76, 0xb7, 0x32, 0x72, 0x8c, - 0xb8, 0x72, 0x8a, 0x59, 0xf1, 0x2f, 0x8d, 0xd4, 0xc8, 0xef, 0x87, 0x4a, 0xe5, 0x8d, 0x00, - 0x9e, 0x62, 0xc6, 0x5f, 0x67, 0x87, 0x36, 0x01, 0xce, 0x2c, 0x6d, 0x87, 0xd0, 0x18, 0x4c, - 0x17, 0x99, 0xa2, 0x54, 0xed, 0x03, 0x04, 0x7c, 0xf5, 0x7a, 0x3b, 0xfd, 0x49, 0xb8, 0xa4, - 0x43, 0x8d, 0x49, 0x6d, 0x74, 0x1c, 0xf5, 0xac, 0xa6, 0xbd, 0x01, 0xbc, 0x1e, 0x9d, 0x71, - 0x34, 0xd3, 0xc0, 0x5c, 0x62, 0xb2, 0x51, 0xcc, 0xb3, 0xab, 0x84, 0x73, 0xcb, 0x5d, 0xaf, - 0xc7, 0xb1, 0x9f, 0x3b, 0x67, 0x50, 0xe4, 0x1b, 0xf2, 0x4c, 0x6a, 0xd8, 0x82, 0x80, 0x2a, - 0x60, 0xd8, 0x8a, 0x2f, 0xb0, 0xfd, 0x64, 0x20, 0x95, 0xd0, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5f, 0xd2, 0x81, 0x52, 0x14, 0x44, 0x95, 0x7b, 0xab, 0x12, 0xf4, 0x71, 0x04, - 0xf5, 0xff, 0x29, 0x56, 0x20, 0xfd, 0x17, 0xdb, 0xdb, 0x79, 0x9f, 0x81, 0x3f, 0x97, 0x3e, - 0x1e, 0xae, 0xd4, 0x16, 0xb1, 0xc5, 0xec, 0xbc, 0x94, 0x95, 0xe9, 0x05, 0xa2, 0xf1, 0x67, - 0xdb, 0x06, 0x61, 0x50, 0x7a, 0x37, 0xb8, 0xd8, 0x3e, 0x6e, 0x98, 0xd4, 0x94, 0xd1, 0x00, - 0x5d, 0x6b, 0xcd, 0xb7, 0x4e, 0x33, 0x32, 0xaa, 0xf2, 0x3d, 0xfc, 0xfd, 0x38, 0x70, 0xfa, - 0xae, 0x91, 0x99, 0x6d, 0x33, 0x13, 0x5a, 0x89, 0x23, 0x19, 0xa3, 0xbf, 0xb0, 0x8d, 0x3f, - 0xbf, 0x19, 0xbf, 0x93, 0x8e, 0x68, 0x7c, 0xcf, 0x00, 0xec, 0xd3, 0x72, 0x28, 0xb0, 0x0c, - 0x89, 0x73, 0xda, 0x40, 0x03, 0x37, 0x30, 0x05, 0x87, 0xf4, 0x89, 0x97, 0x46, 0x59, 0x59, - 0xef, 0xe0, 0x9a, 0xc5, 0xe0, 0x12, 0xe1, 0x4f, 0x51, 0xeb, 0x24, 0x25, 0xb8, 0xb5, 0x3f, - 0xc4, 0xc9, 0xcf, 0xc3, 0x62, 0x7f, 0xde, 0x7c, 0x57, 0x41, 0x2b, 0x7f, 0x98, 0x58, 0x53, - 0xb0, 0xdb, 0x8f, 0x29, 0x69, 0xb1, 0x30, 0x16, 0xd9, 0x92, 0x70, 0x0e, 0xb6, 0xaf, 0x99, - 0x8d, 0x69, 0x37, 0x75, 0x59, 0x95, 0xaf, 0xd6, 0xc7, 0x69, 0x17, 0x41, 0x89, 0xb5, 0xeb, - 0x6b, 0x84, 0xfb, 0x35, 0x87, 0x1b, 0x58, 0x44, 0xb1, 0xf3, 0x20, 0xa6, 0xa1, 0x6b, 0xd8, - ], -]; From 48540e55cac425e0bf4aa893493458c81a0dcac3 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 20 May 2025 09:43:28 +0200 Subject: [PATCH 208/230] Added short comments/descriptions for test blocks in orchard_workflow_blocks_zsa.rs --- zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs b/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs index 12c34612145..68308c147d5 100644 --- a/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs +++ b/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs @@ -7,10 +7,15 @@ use lazy_static::lazy_static; lazy_static! { pub static ref ORCHARD_WORKFLOW_BLOCKS_ZSA: [Vec; 5] = [ + // Issue: 1000 "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f027f6043d927d72f8b5df9984fdd36d2e2e1fd1ff8f7ee04a2b7da9306c14551c40000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000100000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000001029063000c87d7145492f9ded4d37b4ffdee769a1c41b0e17d622cce77f122d70ddb74fb50c5c36666482476bf5e8e190dcd8f5ed280af209b3f679d4dc06a213508774e2f7fa82dff9a985866919085523b13b0af4f534975228468feb62cb12575681e6101284f0fba5628e2ea531e9dad53d864c854e419e4c5b91fb7b35d00597572f98db1bb9f3049dbb9a08d403efd824d9d118a68493191e059ca00b2982252a2ffe5c3918a79171c294481fa267e83272858592d5890884feb90752347f33cfc9443e70a9f30d6150652eb2bb04327ee72b9c5e42462d4d2bd92725df50ce267c1588d29b08b25a719738e836f9c26ee47ce3945f9b627c4b9d3bc8ae755d8b78b840f1fcd055cd179af2ae0637f49fcc44cc975abb478fbd9922c15e946e681ff6aa64ac7275d58c7811c3d87c4e48dc97e35ca68780218e256f8bd7d9c1677bff6d75f663d24802a7b433f4461d686e1a0fd3d214b81b1398f8f79d062c4e92381741c3f96f3e81f455c96d05a623985e39c1d16361928424286483b40cc9b1249032dad9bf92a563bcd978c329ede5eb5c7933f937b6f2b73507c8ed0a2d4ca972281ed79bfe367b474b6fc89a29f20c913a7e42287074a185ea83fca9d0db796cce2cca07f3cd379eba7efdabf86a594e6743b0f30d3315daedd2afe289422cc0a5b73c3e837dc2efb5975e4fa8183fbe68b5688bd827472c41248bacde976d8f16700b4f6c9d6c83afc134e3766b7afdd85be2e373f98a7ef0d2ae19e98bfab76f3362888f3e81917b22236c6eae7c79ed9489410903bfbacf77bc1f0de11692cae0289c786ea3eb08f7fc652146d2529d0217801e2dab9d67c13cdbadd189fa302fbd402c4befe5823e70a802dd9c712396c20028f4f7c94a49409b169fa46a7569fe289d7189adb3e5e9d9dc63903aed828ecc3ec0144b59592a6a88c589577b976b7c781b3b43eba304130bf38971784c7caf8e5994d2ae59eede5ba220d7c43378b492e69c0d7b06445a49174b6aa27d08dc186b7bb5ec6b6b6e3b94185d5d10a07887b5f66f9991aadc239b578426ebb61b85ad40bd80aef5c4707963c2d2d9b79dd9cc416a597aa83c4e74cdebda03d6b7a1cd0238e88161d8ba579987335998fe39a909488455b11937e11d751f425ce7cdee73e8a99042f03eec4b4c00329da7dd90b75ac8918924205cb98346c5ab54096e7a91c9f44c4b21a885d36813221546da0609be857260bd691dff247d867f224ab98015aae153ec30248e15b5c0b2a0731496cf0518d9c63202f93d9f2023022d3fd3c83ec465ad3695d0e0d1ea0fb4eaf9dd8f6f92919ba1461e2d6e80f5d89e6b9b6d5241bffe1d91604c02e13592ef10a4b87612f82ce32b50550f0c46eb4cd6d081152b2123b0ae617e74a6f31f8721e8fcddee49e4c9269517fe55d7e364407b9fec4fb22711585c535bd6a3a656634cf034e30d4bed6e14c56ae98646a3fc42bc4906eb02cc80afdc9c5cd824ca22772567d8aec88c3b4fdc91d34133e8bb2a2787c4fddb3e5065fab306caf686f2684635aab39232c71d9211358eb2491ae39d0c5464efc0ae97b166821956d3c3e70acc7871b3d3c7a00e54e0974236fc1243caa57e04d1ddc3c42d67e23607830aff5540a806c6abc2621035f7e4280c7cd0eaf70db3e88d84da095e0c1a4d0d62728c2f8a939ac274fcddc1442b9993bd8b7f1a965b31af20637c789d93aa5e09fa6eeb4b55393f68cd9bc1a8c67f6d484b9c2134a25478e1fd28e0960ffcf8e36492e4b12f0c787fb16e80d7d0e92ab94a34e53c1b1c0b63db557e54c8e0c919073ff2366c83a4ca9b07b639172dc6df0b6602b3e8977ec3becf6b716c55fcdbaea993494e50b49a9dc8e7c09118942432ea3c5a036d4267928f2393072dc3734dd841e0c37cb2d50fe2f75c5dc77ff9e1540a52b136967862312de74af7071d4f17de67775adf87f1e540161a4eaef191a93aef5daa5ff7d42e36fcb31dd1edd73ba829b32a6d0ee48878bd6ff3ef472f48e9e8bc1f479c34f3d5509288f3181a49a8f3d7771c5cd076533924dc67b96da721ec8a19a85f903c2a2eba21c0146526dff8a8be77831f558be214c43efa29ed6e9be6a2d8e712a745bdcd0f9bce70f997da5928cee6775164168bb343d2613821b4814a1198df32cdab2da48c0188dfeeacef916472529503d8a63c4b2092133c31770d79ac922976417ba6a2d92b4108ca7ae496e039a7ef38deb19d22e1116e92e9cdd0a371b27226e6dcfb14ef5855adaf2949d1e764c6f83bd7e4259dfcf4d1831e2d9b80145128ebbcb0259e3cae8ac973204fb2bbdc5e9d967c6f7e5e4c6f0c139b4a07aa6b63430ff511c223c64933f5fd8ea367d4829c63938a2ee54b3469383824bab4807ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82f0000000000fde01c1ce7832fe7add3bc1fd885958fc5fa1697a0336a4504ebac5d683237a8510183f29c22defb607c48816c49704d3ce388ea27bbc7765a43961fba354af095dc9984dd6b892f223256347a3a59083aed6de70dd327a95e0f3dd1531d01f874829d8095242883e06045c1186ab08124b5dd0b5ec86c6bdd12f5713fb6ce125c0203d9191bc63a1de897698f59060b124cd81b8cea5e2a026577ebae2edf3e238203b670331c0cb32a229e263305484d7f3ef896c4e03bad52bee2250296698b47bea4f60342a23e0ab908a3c094543fbeff20748c3e75b7cf9755813388d5d8871f862bd444e3469e9e72302321bf35114dc6c8341c838f962debbeebf9727a132ea1a03a0141d6965bf152fcaa6d18ef7c24e32103cbebd9c1c87f0601da6e4f07af42615a0b2d41aebfe02e1c2ffaaced5c3d996c8fea947adf7975c4d6419b20aa0c804b867530bc1d1d6103ee6a6674530fed4b4a1289d4376902fc5ed33392111c323f6e73a07ba04c69f8e4214be8074e76124e84990d53091a4b95a9d482a0b2447d911255bb3f312c706151d8a87d284aaa0e4e24c059c07f4952d3fb0308acbbe1513842cf7881159080f10bd0f169169d0c0c126770a9b7985f0aed262ba2749b2c9a237fafefdaac68b8756c2a628f5bf2b7bdd804d23e2a8b9eb70dd38586c842d7a0e3c71dcbe5e651343375adde02e5501107339538b0e2dc45a9cb2eb8831ad77bb61d0359ad4c1a2dc31b29a850a31d7e72d00b978de4b570a9a4e4a403156cdf351154975975d424bd9933415081cdca5eeb411c4a723b6a2d19ab96d3a9ff273d5e923d158425319cce5c63c6ee3adbc5b36e05597472669d4bb48a292271a10a85ff7274a74e5a96e223d0705c08da720425e98ef270f907a20085babb3f642bf67dd8eb3fda67592b6dee4360895e22713783899ec9fe37f861e73cd5261a0be04af440b5f35fcefd345bba49a02f7e754bd5276e343a8f1f081f7e904295a12f57d8b0927be322b35368c463525415e5fc01e43c7064331258ef895a5f0f23bdc7b2095c2d27011bf17dbe37eca66d44ef565ab7cf9280a64651a39635b042ac1b74bbbfcf792e92cadaba08677a836f10bb0d1acbf1318c7b39dfed8b7ca0d64a24ca09d717dc618e036818ea11c743aa6e6a2fbbdd0c42f7c59122392bb90515b425b62ccc85b311d880cf24e621f100cdb8552c4e02360583676ae33cd314bf49a5b6979e6a7fc379759bf1dc9ac51b62c8b1851b87a58ac9fd2a9f30a61e7d96546ce53f8476b575777a533484777fa4ad9d921aa589f4d880de9c28c93c26e6d4284a3ce64ddd454490f73c9db8f4f1f49e9cc939405d635f6ba3be2511c2c1462d65905d8f2f40fb82d112141fd9591bf88ec98f82aee3e7d0a8c0156bbad06fd3eeab3da041ba47c572b3be65bae532893ae1b69d3e37a055c02e994e8429aba5dd5b455335144c63d6ebc6171423f2dd8ac600e648d34512929d7fb66b5fdb19f004c7e75e5e1d5e7af29a5acc9b87c8563c97b1c4cfc848676b1a38ac76ef4ab441f9235325dc1416911bf07ed7c598f6fc1c16b7d4a92489b5821f7151a11ce2dfe04d95d661a5cf284b4bbf83baee5165a3ceba103d36d15fc1a9739229e21789210581f9206323cf03526e2aa38f614bb59853128dd688b711afaf15986e89cac8b4b93b1ee24d55bc40743a4783746caf4f5bcad200363785c754d6af2dd5d519a4151223148e4f5c89703dfd209d8a38b5bc55c5f1f644e6e071bdd8f6597141c37530b7ef9e513c49f9b7b0e0c743830931ae2958c73b14ab1f35e2618298db2c437c95d6d4b13c41b4bdb51f13c1813762e213e18655382d670f55d97b2ed83c695488efe5831ec82656c6d42baa154388d4e212fb5c980b87476e62f4d8e84302f23c54b95b7b1b74e0e44219dabb8e8b4d4830a7494b627e1f6e62a634b86dc821dbaef4e3e3b53e69ad670f1588f2aebdb702828098508060b53cca72fa8c92881a20a852eb1315c2439ec89fa183e67a81c6590dd51a743553fa48fa9f10495c6249c7bbc51ed08e703ce7103e28b12a263fbe66466ad66c11bd9c66c27494b9815e1600bcb2e4248a514a421bd0b0363d8888ad8c9c3605b005a51e77af8a3ae4009f34a24ee242a60cf5c0b2860c715cc56337fe9983a893be43fe75c87997d6eff3e87ca34923fb39993dbfddca1d9861b9314bf420dfef04b0edd9fc9a5b6d7ecedbb7d669a5cdb5045f9a7217f83c62e3eaab4fcaeb347062b02857e7c073eee827e0f1a9c37f4fc3a914b2f583f5632a2fb974aa64f08245c706ad94e29f7b8d1b8b5a423bc3b5b4dd9106d1fa787a9d5d6f64f3273f3758600ff39b6ff0690d7f4dde701aa04e664c9c3f622622736704a523f78bcfad7e882cec28183bf15316370dbd4f3164bdb1224f49a27121e57f7cbb7f8a28650fd2589cd109ac1040194c44bcb8479d655800cac9fe82717e9496bf32e8d3e3a4b5fa7826f4cc86878fd4ef9857640c59b60ba7276af3e449679fa78939dc590c1fc392b854c7e8c4528108bda4e4a0c14d27adff03c0429bdabbe2df4249311d5f7a7ec35f023b166f7de5a1a521615db0376cc1237ec902a4f76624a8a5c65a293d4ef3344429aadb482633bccdcbe1160dcd098b71deb84153068083cc6976cb9fdb46dbe226fa587970fdb4fb14b07720de20cae800014c66da833530b84d7f5f1977f74813507715dda0071e845f9c291fcc4fa4513b24af47000d230d72ee0a42c0a356c1f96fca44b313396c974b0849aa95d0062562d0fbb31d47af78e4e857cdbb43f2014ebaa8cf796067863b0444bf7a3a207816c5eb8dac792d15a01f7ce0bd48a5a3687cbd8bedd364d176106561493bb8e83f63bc67fd07f8b11fcf3bf99b2a1daac1a001ee09d6f8d3973c623b8838988b4faaa1d9151233ff1cb89e947ccf322d59b0011fbc1bf66f5a2867c0a35385d55463cb7fd01db5932b9a163ee6cc11ef0d19e09e2dde4245571fa01b8624926e27a9bae527a27dbfa1fec4c5687a6193a5336469ff40fe03eb0338889dadd86d84a6381b2f65cdb3b6880ee67de08572d6fae5c5df6b2ec4e1216a5999cb3c2bbdffacb157d1e94061b4eb985d153b8840c537463e8a15e5533215522f1d4ab74f09a21b1e9c851688c2131f7da84c95f390eebae35dbdfe1e28d5d0755d419707317ea45d75e88c40d5df34316fcc7f59de8af82e1cb0ba3e10ff1775b8d6f6ba2141a1f83b21b577afea554f709fb4c373f6dbc66a4e97c31a500129684d7315874633453e7ac8c10f63ae4708b28361c772725a110fd3e626b020d8b5b3820faf67e02e3feb9d13ba99f40b6ae834ce75881c44d8124f3f234cd003d5cdda116a218c3dfd1019690b31ec2546b0be2660aeea3b11d375cc19ca2c57fb3ca817a53dd3357cd5f0b72c3a06dffee32ee613eb53a0f679662108f42002ea24bf40c2db026dc595710d23bd9ef571dd37134955083c25ab968d23bae81d22c3a16f10f3d75cfd7eac8337226dda9554093db1c60261931c278b11846796d56a477f454ee04053268709b935b198ffa096dce5c9d3bb1bbbd8fc19a38d529603881a9d449f522650aefa9e0530d92f2712c6122bc874587fc80c29beeee0c2f532607cc63aa8a91413bbc351a2a355b40b3fad7871976b6a46491ca94607f27b2018af66a8d6e429b8955a68e10f3585666b40005248f39fa274020d57f76af52e860f6004f20b33174e16b184d39f90ad5c563da44be6a526de1b258a20649fe5b084b546417385ede6ef19ab6770dd56583d2f3d36901aab371a341c1fbf11929950845b05b833dabff5608b2b0346d8f41ffb24b2be3187cd2ca86d06e8adaedd3f3e9ca9f6e1cbb85bf6c34eb3dcdd9931edf2312e4348481d3ba48a33ee57a314c77196fd28b63546963da0c3edb742934e33daed72cbd80b1ff33a716e22fcff53b93b8791238a92f62070a6c8f74d3c16116c1f9743bf100e0fe3e1dfd512e60fb075f193b3d100f8327a8b7011b1a12c519ec902d7183a09958adbb491a9e9de0070fc685b3963f1617112aa4edd1a4bd35bb459ad121e34851230f78913c59ac8d766b84ab510f657257a109de229ddb30b3db025f620604df250741b4eb757f6a0b6d2a0ba2cee7ac1046800eae0519243380c404a133766b685997236bfc73e3317e2da32c9f449aecebbd02c28c5e62226aeec140e4c38dabc0c6ae4d6fbd5aedab7abe0d2b0b0c7533367db3ab39ca127f688ef34aa4a61bf2cd2ca5a0f598b8009e5610efb05da12495c0bf02eec37fb857f7d1943f8f76093a27b422a910f4904cfb836f62d7ac295760ab9f2587f60e83d402854e9a3550a190f59fbcc5c94e6f6bcf9e9d7527ef7e6c4afb13b928fd2fbba2ae008f19da2d385881dfece30a3c9433909bae080e01f09e987a059f368d7712246839159ec183345e5a8607e860bf1948134d1ab791c2446094d012e14e1a82fa5d95106c0c9626df1e7e56cb7e6cbcfbea965f64cc4255319eff09bcc40ab3ccc7294ac369701ac1f083b615e532d13ea809eb68967b031fff2b0536b781e08688a51de3629d4c8e3e29987b4ddbccea41b7060ed9f635da106145bbd4dd2045f2215546edfe71205f5a139bf5e9af5b68d4c34acc19307d23b7971da98ec2ebc8282aeabba8f1a46af4baf00276aa0e9e5c212865d763687335e1ec2d6c813a516bb2f2b79056100b07488ce2fd5089be296ead42ce345ef58f73543ab102ed79e426521fea60dcce47e498180ee94f1e69bf862c9e014ad60f6041819f01107812803c986e547a5fb744dd766b92e22ca8621b56190ab1a7019eb9e288114c4c450d08a95da7282278239f7fa073a8ce444506ae171e0dcd54d1861362f12957b366b92dcb0480017c6a397b27506c55238e1656355786704489fb54bf1257e90a246f92ead455166c4217b610682a6446514a1b59d5facfc7041d4e639046e60262097557cec24c59629b891229e714db79a80e830af7fa7a2112e60ff1fb95741f39c51d37c3be241e9990bf14c325e558483f65408ba25c4cf85e10122cd5cba6010db487930eed9bedac4d533825c657aac9cb709920f6c9a537b76194eab8c330fcc7891e24207f5ca76980d94bd1b6db41692ee6bee117544e98620de4390da019b63757bc78ea7d0e27c2fc6b92d8c0366e23ff1d5a38130e5183340a905cefed2bd332d443c6fc6c3f4601bd3e4927b40388c00c842c93d01ac365bb6272f28ad28ecdbc05dc2e4f61175cd36f5fa5a4771e0dfb6e13cc2ba910e28f11fa13728bf2dc57e279ec67f8046187bdb99cabeb0c3c008c6ef26ca382f9940e0b02771fa6c2f69f1116baac1adedfae6ff68dc8cb249c112ce6f9a6208cf1fb4c4183995326dd690bc4531de9ac85a0be2f6b0795b6f9bc700b7628c272f245de3210d89fb7b552a731672779675ece0963c2835ba8c6ece9cc4e55b2d077489cc8a83558a1261a452dce0317cb8ef4e8642f3d13090305ad345906b180e50dece886830f7a349e3477a0f10df57a81a5f895e8c043085d331cd1bec20f7b8792871912776be3ef4b8b411ca9cd9a9dbd92d1f66c90b23d35b1d0cad3acbffab5141b5171336753289274d897c2449e9316c3d19fecd86e454a51c820c080ceef6421565d481792501b582190d960776cc5c6bcc3f6a33a92e213f7c2e932d8f1513d1d2bc31cdb0c9550ea21fb9d5db1acb01eaa804c594f98777652a7af27184e4ada612201c80f18d1cbd5f9a4a535444934b72f6262d582ac5802bc17c106bcc4a53eb4af6334ec1eec602bef40366d91f4b4df477f2b3b6be2111e0e6223c5f43811ccbb3c31f8f4c2138927377521cee9954a493340596fa0431fb953e7ee3c0a15b37f47592fc4cef4b47c759d6278b4fe5be6519c9927e9c08f6e89c6ff99ca69c9f89e27133b52197520b873c578ade66962bc18d0726db271671bfbe8c21c16eced0675a58ff1497cb00e239481adc4656537b80830b37264e7f1b50e3780f32ea57c9125c73f07e33cb30a51ec6c4dc98c4f9337d62152ba544eebe4d7a8eaef723ab85570d549fb90687f3b4782f7647988ca3e97b6736bdbd7cfb10393405a86118ccc415a16e7614230828430728618da31e37792f043e3777049052d58957a352e54c16b3d93c8595220a2e8322f2da669f11be3817955f1a350d3591ac81d7e627015b0653cff1eae964f89acfa41663a833e65235627eb67d30738f170da134de1d58499997315a329dcb52fedc30171f948f6f23a2be30b49398a2162f469eb161e752faa487c533e0ac6aae88c6d7ed64892a0ae4afbc2b30ace36ca7ddf4f1334b6731641599b0d2540c4fef4ae6d9c0b81c2d356b98178360b853a501dc1866343e81fccfe0e99b1042d10a38ef3a5cb20434118e16eb23244446ae69bcc1a1e699cb5981c206689578a9a2b3f6aa3ca37f1e09346fa2f4f7695a6b8f7087e9763f52d06de4208a4cc02e92801883f89ecd396248db5f0d2ef527a75d924216fcae8c76178c0b7c27f618331fac021e6c9a3a9e585d1c160f53eb39ebf4b1b3d84d97b2cb9d0f616e9b2ae10bb9e592580f27918e4a17be2570f5e4283aa8420189f72137606e2be0a9e2ca81fb2312caa0208747005ffea881f8a44add38303e7d080e4be30b44271aeb4feb37101c201d0f8504e711324ecd3b4dee9d69348c22656b7edc5f68b236030273890e9cad41258e1445ec934f9b4b2b2792365b52d0b44bbccbc721494a5671a60ed4fa289e203c68ab3c4b88ac36f9adc91a4a6c8cc4c52feb2eb34b64667a74c3bcdcd6e438e20d2b6c499500f488edc872165133fadb4fb7713a49de17f60ca4d780918f3cfe19ca1447f83761ee1808436e310fb7cc32db065c5923a4537d233be2f3311a5ea416c6bf280850647c650ac01835351eede816511edf33e59f467d0936af21a4cad0df6fbdd6711e198d896115cc3dcfac0948522e231b34e47dcfd05b921df497b190af5d621c59c94c34bd405c9be00b6dd72cde87e93ea313039c01633335044ffa8bdea20d3b8ca5db2c4516b5a59512d09d281b187722c8a5c9ebdb2064871229640354e9aea165dddafddfee4dfc1001d38229e51ab7fc33460b4b1720300aede7973a8c940e6ff297225d53bfaa6880b2b4c0ac261668eef9d6823dd5b0c6215d16c00df561e9c4abaad3ef0da84ddd599d56691dd1b121a6120c3408bdcdd972f77d207d382983b0a044647cd2b86c91b8bf19426c5742b7378e2f21c0f09bff8669f6b0bf6187d44c3bd1e50dfb65aff3aa88ad00c2e12735ee384347379d2b48ab3f0b36f712e0c1bca9698d29f17924f0343fc573a1115981161036b71f96ed9659b52eafb7794ff9a05b42f5b96aa530e45f1892f49dcde62ee824ab3dd0fd9c511bd8eda0d60eda753cd5d444c0294aac617b6c6453ce8b2274b0cbc5beb68e2761897b1e2ac612d8e6f8605830113bc800c91bdc4d4c89394d33c25f6465d813a453bf89eb3f0baf3b83856665a33d1e0a291b527d6b5704221b5b343a6fcb70f561cb496b727fbff07e48b56cc924ef51b3459449fb5211c02ff081c90645ca392d5e7a13f13160acb5b53ed20b8e01390cc4d1d7ea9533b2e7a21e9ccaf0461f1d5562c1ae28c04c138083f4ebd11f75e3298b2321a20395d3fc685d8c4986eaacc4e97d6481149aed040e07239c051d761379faecbb3c3356ba37358353b204bbe96765bcd4b9375470fac05907fceec5d94cb1195227e02f7b66005f9a76ad9ce1fbae7097b0ba824c9e415f82b0812a3bc6d6ae3824dd1d04837ca39047cc27d57dd5655f2d52e1b28ff24af701c93a169bbde2201b4ef36ef361f111838e2a59b2f1ff32410c91be4b2ca0d4d434a70c0d03d8ca0db8c9cb7b27ef0743c8a0579d6c4df5a76644637bee0d45ffc4ff83a1ff779f22e49e65550b60c279aeef6aeb89c1ff6a8cff8ae5eb645e9e15d694350ac0f7127ecf632f218759eafc04a988a3d23d1347a44b6fb1f79a2a40e41f441bb87823856b221e7cde3652a62b824d5f64b08570320f7729b500e138252a6220da6811707c097dee8d29123511a236f030381533cd5233b1d2b19da47cfefd49179430b70bce17969888c2c02b75d07bf84de64dc91fbaa6cf91052d40001bf83cdd18e8860b3527d9f72895ff0c398d4945ddd569c2c568bbce302506b5bfaaaa9e24f435e73c236730bedd4b8940bccce1cdaa2abd388646474e3d9c0afd61e28a1ebbc83ac84ed644039a7ea3aa270eac6f46f21fbaedd49ce21fe133060e416b03e28059d753b025f0c2b9f25e6fe146bf9f58956083e1baab33570493573b9d05104ec9bd2764793d655bb033c646af6ff8f8bb268d35c43acf614206bd4f5635de334ae2768e8621f24457bd6cc3f81a50c8fff871037415bd543e5515df44253f93ae05241cdeec2eca35eb2908ab07dcee8c795cf0a7442ca1213449a5c03282478bf0c0755fd7f62ca140a303867ebceffc631e8db2249c2c8a9806033a201f6e59becf382ccd5167ad5d1d7a3de10492c6bda89121bb8b075e3b6a5d1b09f6ad972c0605f1fe1610c38f42ab22625341b41c252be0fa80c9d082f56fee0669d7d4eb9762af0fd827e545ac5cb6b225571540f2e6820ad79311ed2fe57e30d12239771d79ad47577647068ae6ec7fa3602e86379f7c56709f822db68b5d35440e855509a2b86ebf86dcaae220a89b6f7dea85fe1fa5cf2d54ea4b242edf1a0b3c1a0b04b398e8a67c3ebd093e4429c9554605e2f4360449420a5fb5aebc158d80ee10349d23e9d68196cebbedbd98afd16670b66231f0f7dd9c0a4404da2db7a00172ff4f48b486183b2cc8d49b126acbf5e04af0a16b36291875c187ca2a65aeb240729167674cf5e26c2eb9f8464605279f47b57ef7584ba7b6662f221cead6f89825748ae7bf4a22d54715db9fa80609be5175c30a50025e54d11ba22ac4cb17fca2ec160184e6bacaa6e49a836697106511a1e65c679cf240b128ce1974b42812eb02105bcc59226faa7f085adf7b7ef5d0b2d5d88f59563e3d2edb1aa9ae253fda7e66996f2426d52ce0d36d5e38c07b94551851f4f1057e10beab078c85c6e1fd86b2200eee7345f0e9713061e0060b6333e91fcb7621d57333d80eeef03e912c2da7985a7dbc393aa597abd67b8240a3e72330488aaf26b53d671fe2effee1db167f747594de4de80bc1f0fd5b1786d276fe31d8a631556ad4080d7674b69f1cda2403280fe1eb962bef003d4df61cba3dd906aba9c01e5644dcba01dd790611da5bc46ee24e2ba26a4abaf8ec1c78ac48e0c5eb9c3079f802ca0dfc6550ba410b8d76885506b27efeb3bca592c2475def2dbd4f5d7ed4836abf086ce8b23d617701275a8d452085043d8b30bf66e0739471bc432a155f249f1c1c58e4fa37a02ae653b0ec71e22b9fcd3d9a00037bcfcbae7c0106d6d13dc60fad3f734ebdcc0d3fe9c29031716c746b52bf7c9db5a09cfe19bd9f0b87cd12f8a6c5e36153e0bf5587c959f3636618864362195078c591502325864283ccd1ebb071baca04a50f4069f1eaea8d8d2af49e76f29e88108df904d59a6631686be5adfca48571442a01cdb1a3de6de174fa9496e9ca50d2db065e61d82c16ef01438125a96e6300de69c30967c58545aa8f96fb66725959eb0bfeb99a54e7286740bdefc161115a404556a1dd0381f772b7ab8c1f7f1ddc0cc0ac782619fad570aa1590eb439455a642cd3122b0edfe9322a19360a98193bc75e4b8d2babaf0764099f36e3dfbce751a8fdac684ca46b0945ba593b6b18514d39542a803a3305b55b8f7c3c5adb4e516379db8ea4570020e95d69afbe165e6559636d9bb9d2936ff3272d757d393937ba4ee4edcc329e17426a7b5ab99aacbd804e453f147bc0439022a3c78b5f4df3f0cc24ea8993bc98fa7e5b4d628d36ecaa66231f2c612837b8c3704ac12862a67df9127885a8b4ce8f06d7dd0d8d2d25e6a9f77ed217869ad2d461c26059d689e4ed9774890e18dfe007ed3ae55f862abd7e4b0a53018c9c18129ec6983491c8fc9bfb26cf5bddddb1fd8db5ba17b8ae0cbaeed5ff553db2f0784cbcd76429699e3490c01a2090cba4b230fba3258d7e5cb18edc5427c1061206a1a5c3dc81e5681777216ec66cfbba42b7b506ce92664db7bfa51a9323eea0169c4cb0e83f756d3ea980461313e39d208ef70dc011722ebf284f75f07cde322ba23f211815e4b616f092652f949e369188a815613f8268a1338fc8f932e4b845739564983555417ac7b0170eb036bb80479ccdc3e9867ace0604f06da016321031402b21ad4ade201e208eed72004c59ba0fc7316c32e3735ba7c8c0dfa322ccef89e50b984bb020571702c2ec6f08d0471e72acbc1d19520ef5c9a110b953ae66ccb4278dd291b08af4621d3bd4d51e84604f6315b9cc52ed68f48f6fb51332718b3bc5e006aca5b50b1bd106ac2fcd300c77ace7517b7badc33ce9b5f0302e752cc1e3f0217cb1fe79e4202cd3614da5cad5ce95ac1c22038df2e690582130000000000000000e77c5fe5829689989e0736353bc0ffd6b69fd0512b5aa1d5292167ba63dc5719c978be1cd9cabdb5c757be48c025e5efbe17937c24504332ec6dcdcfac80e23a01ce2c6d87d0184c1799a254ed03047cf57a3bfd49b8a4438d496d741cf5aca6bd02cc36601959213b6b0cdb96a75c17c3a668a97f0d6a8c5ce164a518ea9ba9a50ea75191fd861b0ff10e62b000000000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4162bdd8d72b03b4e2f279a05dee99e05f68f38a4b1d7f6952cfafdca675fafbb0a65f0db75a331b2c04f82fed81c6edc0291ace5edb0794c285a5338f20c891195bc1e9d7134d3c05c62b251ccb3ab8473cb5dafc7b19f3b6750e41bf24c6ad882802a60d88a2fb0fd642095e8030000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed41691c948450f0844a9eaa60503567dd7c87ed664db6236c4368575d4beade9741856f5e328f9ba28c32610207662b9638281878e43a31d3f2de4e440d6a792a01a00ecd37228b00c8973da400337300587f48997465959efe09ac5e012e14f51eb2403e78f9aa4048344a45119dc45ebfb2fdd1806662aee645a85d9951b714a42ada39d7b268db0db118784846efe571b2feca12d5dbb15ad28d23c933987607fa4", + // Transfer "04000000045a150838106cf1bb1431cf7a7a41bdd26aa0180ea70a37258739c1915171621fc8b74000a4594700861a5e1a9eabc521772e8c0675238b3d87c47343024d8497e9a7826aa3d4e1e0e48e32e760799f2a3fe2202d90d43ea589a8a3894ded5f0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025200ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000200000000000000000000000000000600008077777777d80a1977000000001c1d1c0000000000010277428e76d2263100d08f73d9e12b480494f1a361b1497a85d1cac168b76e149e9d16da0b28025e804fdbcb283f932d1aa8cc19002505940524fb43bbe78d04033893550a22b3cfa9ea4ad9a19161451455d1669c9021c9f877dbc4641259ad250333e21e2620c8914b6e28bcb1a214a19a391cf371e089337397f7535951441b6b529032525a70d975fa5d7c22e78fb5059fae45391202f00a689803f908deabaf1bdba80cde3409e605aee987a754ce805f2fc008dff17023ef9bcd75972b85ecf641a245f6a6b1e8414ba0a33db1b0f0c4cead6ac87a32cfe9328773fe7357284f0c0fa89c33723326892785e8954b6b175a5b9d80b28ab20653296b132b0a8ec7c5fe1ee4cb5ef5822445173b8bbf26e75f8118f7f2e8b34c001faedaf9c341f42691a0b0964391067bb026a2743922e5a72bef9006c05656a9e8814c9d98ea8056681fcbcfda9aadb559d0e57c88b77495670aff6272820b4af9eaceef3a8b659cf01e1859b2d0825a039dffbc9618eea2653167fde9aa700f8ea376a7dee10a0e3d24e6df07ae33063ae54de5f245a9a90f7b5d67c4a0a2d94943a81831465a5cb640c4f432f5e9efe6b0249f333b2cb7f6654b73483cf2e081536dc03aaf659fff9ef18f87ca4701b37d62cf9f4e9e0dc224a29223cd41dd229795123cdf29e4c82f16b163179333bae17cc1451910b5442ef9f4fe612407c28ea32037cbcd4ddcff9a3de920186ad441430007e4c09639b0a54739dd9d12ba4f0f8b5c653fbef6332645f636bdd6979614a06ab14c88869343f82b3db59639ce053ebf3c391b745554a2e375b6e72e912abfc50b5c5fc4a3b0ec42ff5ba331738182590c57e6015723d13a66f5c532dbbe0cd9d067d8b92ff232a444263a349803853abfc628973ec6024b65c3e7048689ed09a52c122bd7803234d3d8768e7ca8606ec674f8dd1e29450ff8ff43faf889d9fe259bc4c8abf2d3f403a95f00dff79c786ed476fff2b66f01536528e757e447f10b053c81482e6d8eb2a74fe0cf29249a64396f52d5d323487f6c6dda51bc3ea95bd4f90952288c389e7562c87ea01b280e4669d3bce31bdab9b99aaa5b1c6b9cfddb25dd067dd3c73736e65bf6f2db6b90491509ab57844b2642f53ad442ffe4107d8f7b9d5cb4795e3b83316d08398f6cb80d66bf6083b655a0cf4b21c7b43f1b97b49c547f28d82496e0bb708047c5690e629ad6565c0d73452daaf2181c78e76d5129a882bffd3964937c507deda57156c9c92dbfd7e81ff37945bba2f88c4710693b23f142ca1a8c90f95c37324cc3b352e1af16b3f89c28bdcb418370346dd0971580ea7d571d490880c332a0616233d3c72196789702d506720c417b0405ff352dc097bcbfac30aa22055d210e94c34428fe2c303613ebcaccb38fafab15acc62a6d86fb6557be639e33b9aa1f56062885a0d5cb6390f898dfd592053a72c9c64af4d26f44ab10db8ed7edc22e1a77419330e501974409ef77ce6c1e5ca703eea10471423c61114437e7ff649add0b6d538934169b072739e79ae8890f1272b2c5d464628ae73d3bcec693b86b3e8ba15f153918f5ad43b9658cfdc36fda8a0ca0a0f0c79ae7cb4998b4143e1110528fce4ce51b182dee8cf013f0ac159f15d00985f3bdf5fdc1bff9cafd6db2b86cf8fc6249ac975acf77f05a6b54a4cec711b43e129edcab0f298323e8c9b5d2ef4534cf66790667dc5f109cdbf7d74dfeba3e4505ce6aa8d67fda3191d51e69223ce8cd19f982a1daf7d27d117e32033a10608b7b5023500bf9a60b6ad30675948946ec7090dc61d154200916be1510fb304372a125f6a6f96c1a88d695d5a47e564e5071f1af9aa1d788f95a41ff701d17ccb36f7dc752f74feb77815ba2ca3ecb4ccf83535e44cf09df32034c987a633901d8c3394c211c193a5e932653854385b17b8e4dda86bbf5554bc039761133190882e36c0f16eff703c4b6e5dcc325ebe04c6a4f2ba33c4e3a7a726df7f7e7fb2c583ba7ca265633bc5f43cbb6c8e4c83bf3bad74ef83e476d0846a4acd4ca93ce56480e3d8a85398c8b9c0f962cb256d77ed938add67186a4e2dcadb09448fd85c649ec4d3abcfb90800b9237f7d66e104503d6439f4b243c4941d4419efa4ca94003a43653016ecf9f854ca76959f460affcbc17629b4771564cd3f19a08bd354f1127a2cc7e8b3434a76a2b961dfac91e67ed3cb2e2a988053ebf72179e64c92fb7829498becf406ded41016166c8f1f1ca97a7a1f8510759db1c92c618a882dc5de4be10228e658fea553aedb02ed33ed5119ba633358891671ea3abf278e21595368d3af137f1a0356edf4e468d6a71e7feab0260393800d8057e27ae468471b537cf7e03c32adeb87621858dcd44f3e432d207c1460514c0a5c079379f5b8b79352d7886b606826f97f1e5dc8402022154f8260000000000fde01c5f5b7f01d9f6bb2bbce93ac4a2f7c11565394b684a5d4817f09dbd77158d07bb95a563d9ca60dfd5ef734c70c9f23704f8778f8723c80c48e8f4e7b6394dba2aefa2c710ea5584de3342d646e8d576b8242c2a6149eae2f2e7448cf16fc274a5a1e4e824849faaadde1134c281758bbaec714ebb084526647dce64b979f32a843c691dec4e8b233de6d0ce19a6adb483da78403bb169ef1fd1e711e72424639e2af8a107264810248f14aa931e357d9975302a04f063bb34adedd232fee2ee2339c3ebabbb2f273a0342f4a4ae99739764eca9c87cedab344da51c90ecc37fa201652ff7b920db0000d2d9f88226a228dcfd432b659a6c57798b44ce7891a79a6838f9d4e98c918e0c81449ac0b7d2a00817be55f9dd38f090e476058b49068faa104313d91aa024f0e40e50a0decf81603fc9be9b3c0d956ca6eb6f7445473bbe83e1337af0743c7001c1cd1f4a6d66c67f1730619ae6310b14cf8db46a931cc5c7a5e02b3288219d8693afae979edaf3e7458184cb67a0d835d440f6dcc724666e3d8879d63d9bf9771be9a863de20ab9ee301f6e2910ff058657c61197aadab9617470f9b7a1a2d37dea851ac09364a7230221a0e3929d8ffc5cafd92dc040f5c6e34edc6443e2e4f52974fce8516cb246a9eb086e1487385b5928aba8d9f5aab5ef96ef8645674bad7a567b74f43a3767a28f7b2764bfa612d197b20e8853b54532df7a813bf05c9bd1837e88b8d54f1c77f18c147b0b53164b13a5c602e97a883c88770349e646b3f657a1d8025a56325b04e5b0623b6d8d2b92464cbba20f206183733380485b86333ce2ad4b9e0920f8ccc77ca85a1b4b574335dfe252006d04f05e2d7f6734fe5cc0958aa49e94422c68259f28a51acfa9ed88d7736abdb65400399714306d6ec226cdd9df59bdf549e1120755c838808fd943709be4dea89c47d58f9a4d4a39aa3f83d7eb79f292d9788c804946648d43d00212a0ca630e4c231879784b4695f80db42ca086b0cbcf6d96de4bb589cc9d415bb5f24272dcde52ac4fafa1e7e95cc330711a77d03dfd26cae6acffe7f1f955bedca1d8f726c47fdfc6f8491fae50288f2d7fa38b3c1ce6bddc0faf257e769e3e25b8d24c3cd7eef7e3f63732791b90de42f7b926d50d1ca5836bfcbc38d39f21f780c4df8841f7dd680acdf1548bcdd5da69ac0462054d099f9704bac788463ac3c0d49515338fcbdce587f6260b056591e4e4ec9d4744e3147aae1b31bea39d70f3bd6fe63b243619713251b4231c55b7947986fdf77c681ddcb9a4f38723b6006b9d28cbc4a8e5550a9e066b0e2f72d32c40df54e8edd8f38a6d5eceabd56f2518695cc499d8f18e1876f4a9e65ba6d982da17c7dfc154a9ff84eb660c1599a8a905e97fdcbca383131fc0bd09595c9e92195f8634d8d8537b5f7692bfd600347949f0e7c628c7f5090dd95885d383b444f602a4603f2f9bb2ebe28d8d90a071daacebda8a2b0bb23f0e21b251635a31f63ca52416f5754373076822c319fb98bac4603ccca9df843802ee3a25bf536243854726d1bbef2673e897c057983606ab5fee343612d933df7eee4d3085361767a996c872587a242c5a1c0aff3ab904b184a5fc97eec9cb6dd956e113f8253892dc111fbaac6633a92e4e1bb789f727e96b757515af3815b19f5e821a2f3bdb5018a81253b712a2e92a9813dacd0db9110ab3bc43bb6b8eda9d9eaed7d3c676ef98b7f47c7deb88eea72bc3874226f45206e195a84968a2eec341d7e51a398e742f6c7b283ee6b20fede54740caab1be3baaa7cd046fc90bc8a3c3ad59572bee829dd6d5c996f0fc2a7afc80fea51091b377ca9d31cbdb87f9e316e7a4be26c8e72a6cdaebe0cd6c5e095048523086582ffe6aa6ee29943a5a3052ae25b252af6467fa6090e2ef7bb8bed2f52b4a7b479f2c4def5bd5f427b59ef8cfaaa4a482712e2866dc582d7dd6f7c8c26bf2b3650bbf4f83110a2feb1fe8c7bf91dee1b3b40cc7693d7c7b3762c699c627562bbda24591981715aaa4d993a43cdb1c8c5c9eb4ab9f4ece1e6267ec2d24f37f73d4827484fff9cb6855737905081a7dec9990c400d5450ef9e06dca4595f8c0f840231f1419819c0e49275f187b60fc751565c3c14605c96f368da6316caa0d249a0651df95544a6042feed75f0d5483dbb44c90059ec6a7b4453ae6c8465e68e95b1718e0f86f8ab7e85f2bfc3397c7ad8c41818bb708d1e19c3e78a95848ddd1d8e6c99430b07fc8342145492961361ba1aaac73a023bd7e08b9e1484635451d930669d35f00ec636d6dbec5a8633645b97241dfb40534c79d0c924d0d30c1a128d61e1a41842ce4e6f74af2956a0599cf49247e66d08d751710647560042b9923284b83b1e5f15d5fdd10f068672dc30348a24170481bb7932385b565b740d5f0fc980326c6f258885de458be538960dca77a015e1082d67c1fa9a769e7f25453b367bef7b28554e85012eb60dff27d7d965e2ed36d60e68df89c78df5b568931a8c8282afc010829fd7c71d04c0a53c4922892745639d56f7d0cacbb098959a292872274b1de7c2b072d1aa331140b435bc1305a9b56e86b3839d2d7c9f001432f300edcfe061e4da44cf7c12b4429c17c8a6ddcbec7ff1828c1d039861c6e20affe7d208f91c7c7570a0174b98213f9e4ffb7631d853094278e31c59158b651f268779b2fb04ff5db94e525c22d45bf3dcab3769afd978e82c4fc4dbeb60b70caf072dc92a8d53786d68d0e734407c5c05353bae108e5ab0977ac6c75ff2731efd57e31e659dbc5c885f542825209e5add0507aa11e5ab5257e0089b3b55b415486e1f4a78ae81439ff3c0480484b10417ac6e72eed5682fbdd8c0ad7b383f26c67da605d632824816ce2f89298e9904f72ae3e05365ffbbce328bef1f2d62064db87dd089795e9b1cc9f41a6b3b7ccca6f7add2a0fd659b6aeea04a7c4749094a9db31b9d58ee0307877f1c3ce5b52ec0a82285a2592148ee95d100895b182a020c884a79bfd6df0bb521a2d18991d20939e10dec1f1e2886ab1522fcad6b0ed8d8851fa635032c09cfe231b54d702ca3d11856517f7042a7b406ef8193e31de76cc220e0e278293fece97107fea0785b9e0e81a57cd846bcb93638f47db90220583cc3c1575ac33bbcfd8cce592d2e4436ab22248a57b19f52973a85dbc61bab2804b6e94282df891998e45dc21858faa190cfb4587efaf633c2c264afff21841024add376cdb62d2633a648623ccf6e07d51b054f25e07479f5aff5627917d845aa11d6b25ebae859fecb95e3d3f75f46a2db06473bd20746f1b44540f706d9596393e39b7309f79a15471ccd3905f446467dca1941ebfdd161c75fa1841966dff77b2f2dcd8d7c31474f6b1c627530cd11cc002333c0b1fd06c88aed070074c2f087080a3e844b8a32f35bcf7aee15be92e1ad6e94ed3c1bd975409af526364746350b5c5ff414e27db55db958cf9235cbc27c9a7552988dfdd7b03bd90b07dbf3ffeeeb7a5710cb9d619ddee547c298a380c96b05c730b0de36c1e17235618d52eda4649baccceed7696d72962f6b8015d65cc41fcebe57a99fe26dca1416505596da41a2d2bbd1995e7fdeee17b264158df354c8be4c96846e00ece9092efd4d31df72db8220cfb53b0cb3d189263274ae17ce0a45ea5da15bd2d8df3a26dc211e75881b96700dbe918058b1d5f47e82476cfa3b04149d770f2b0e6124d0abb631ce6aa840d5801ee701bc4c4a7d1896dd37126c89669c55b13a87fc0c4e8dd5ee3271a2f8217a6b289753a6be37438f078bf6592655fb55407e9509079a16f418aca002826da7d772c7b370c02d964842e3710a26a81a70cd08ba0f00ec9a5add6912c15620aa1b97015e7e43e3093cf78d21ac656c1c2ba1b08a35284f29c4bc6cad0f0b6114b309a1d36c2119f9a7c4089e2d36070db1446b4350200049a308ba00f480b7b76a12c185e8dd409e3f6083ca214cbe8eb59254d39e23e827da803d321c4fae26fff2ae719179292d31f41a6b6d806290afa867ae06158af4fbd654d82e6fa4e54501b03a024f3a713c8a853bef9599947a2d3f14390df2d29a39e03defb74b6715f4a06e165c933255562b71578880d420f93dc0740306fb66a61def4751a6a564ceb951f1e4f301c71801f4ee7e9512a44054dee51c141b5e191a1a9d5549431c0e234088df11f7616f56c52a904482a9f6b883c11a469a1ed65f553c61ab58517a2b6c39518898660322132f011a0576b18afd3d17831a60d8569086420a571e80265793e2150d565947cd1febc29a43e5b34d3d294e1cb533e3c54d54590e6a7245688d1a353a79189ba29efc075eee5578c3d403d58585b9d28aafb1bbbebbed378c22ff18d588c01f0e19abe3d48637f71595339307ecd2f45c861940a0edde8c52756c78ca261a87c4a846e72efdefdb2119303fdd31d38fa2de10576ba5be8e034da418120cb5b822e17aeb7d60aec84e7d3924e07ab7d9041330b4f16133613817388e241b87ef2f15b6d514c36bbba812269826be519c6f15d10edc1f7783000adc6c3b9b73f500d0b7b94ac980f7ceb01839a5e6ba66bb823f84dd59f78f741fb3e6213cdfb1489af600d629630d6ce62eca9957816c97f1d224ae7d46908786b539d39471c62a2ff0727bed8d13b61b20df341e8bc535a4fedf4c96599c6455fb1b912eb941e86ae21f2d60cf95a0ae107e6c8c0ce61e39a7d65797b6199e040f1bdea88b615bd792d732f4bd7f6e4d153d723b58521c48a479ea38fe33689e29d9c675a8d8085358e1f4e26b6accc415d88c76cf1fef0575b2045792f86644092fdba99ee25eb313681c732d9c54b40d3bd136c8ec53b0f5f1b23504037e0f36a18ad80eb4fb0880de68150fde5b4e149089db88b538a0ee7bcdcfae5311db63072fc2ed9472f44f73e640ddfaefed1c621d3a0f8403b26da929b80e5b383f51dd7e4ef6c04d4211da39a6b6232fab187b379970915f566a4365f91f6e5ae9781a47902ade4eecef522977f9cbe8933dfd5220ec3afa8b59276b9612ccfcbc2c3aeb3c98af42e2b24dae01ed94706e25d76b3344b124a50dfa4b94b1cfd9f335c31b05cb15cbdd40f9f07313ef792e22182c9641991e9ec35d2e2e80c3cb8ae112a2efe329dd77e843caa4cdb1c3b439f8128d2214d3becbe602fc616d8922c4dce4ac9205458c1e5b4d7c082826153746243c04b95a9b48f8c637a6229791e13789e9f424c11e401a5a684ced9ee7272aef7c63a6f79d864f25234a9cd45feeabe5a2345db0c7d8e8f5420e81a65a2cf6c1857efac87f889e6a40cd7833e13bc47e2722b3ff26085a832e3ab7951e144a3012e935353261db512a761c783ab7d9d54d880a1412b1a9a5b4e521386d086107701190a4255e4df3951d3d8cce874ab8792bb0aade5aace3f72624b59506649a6cf1549241219efc79abbec787e51fe2a6c5c14b957a1e801fb9cea2ed31fe69407798de057aff0993bc626b0393434ee0430e97e7318b7d5f4cc8741f21d1b044beaf5f4f18dccaaf344be1a9f461c988f596561ac1d50d5cde25cb571f343552a53c32850be39674463d24d2503d6c2357b86ff0da726f1cb62c397c10d61ff182908369be72d9d843d45604e72da908d0f68eeb20022b049a67007028df6d724410d96e38f75399e9eea7a0af2f21b99c8e1e1d45c3ec18a62771c734426aa1d979342838259c2f1fa6cc5e8b07b2895970cc36ce51acad66f0e36d226747548918a36e7b8354677c05daff9f2a9856206bd367a1ea359d284615b60b85be649a7d8005813c7bacb7831f3b09f38fa4301ffbbfc5c7ab222640dbc8382e95ca381c38d2d30c04f0dc91802278e2c86bb0f04908169a183fb7dc75ce079ac2409f03f4c9f2e845a72c3af7e9ca63f52cb773faccfc306b9d5ca3ced3255fb435fe864fa013da761aa15e810dc090bec759bc19ba9ceca86b1dc30d4931968d412410d772159aa5b83e0406953ba8ca2d58b893caf4a01400978f40e915d681416f59402aa56921f6e8298d5624b46e658524956031804edb7cd3e86d0a84e2298c54edffce36578d7f4499a75b4ea6d5ae6b5723995e869d795fc582149a27dc5ac33c8e7595a99e32359b5d96beffa41a22481a7ede41c239eef63e2dccb61fccb71a97591d5fab53ef944ddac6325d12479c36184223cdfbcf96c816f1b9cd1cd114b84c879f26127bd95e8a45587596e1154fb15b0630507f5a5e0a966eff2a049620e6de591089fd00525616d7d41fcb86602c64b58100aba6fb2300c38607d219f6f1976ac7c50269183e3b58f4eb202e8fdabf73d7e19ab5400eb8f482771c8d8ad060ce38ef8a7000c04c925663348ae7121d6e69e56e46b433623aa63336aea5522ef386c6b2a35464e0ad87edf3a2dd59ecf8db4b05d4f62577692aa687269482a1ffca8efc5eca9798ada5cb7bb1cc9fc9def13da0d80a1ffd8f1ffc0adb9fbde4bb208b07940a903076d0f51224164ce050c0d67db17703bbb38cfb5d67ba2211059ce12f3f3d4ff7b2bcdba0c9508334d6a1a45c889e15c02a128b6a2a31c6aaf2303fa726edb3931b03a8b0d7768a055a74e280dd811f07e3702b903c3c54c7163603926c5c7b026e376d6b2cfa74725b876c39818c09e36ac45acb677a8971b0f1c10fbf349897aedf9fdcd29526c5026c6f0828bc201c497c4819e662bc2c756ef6ae288116e78567980c00556c7da5c042dc009e3dcb5026b0f29038560512f75af1c237e281b758bf0ac28cb46ac7f22cf095850170dc2ef24162661163ee3080e44c9d8baff9049d15a4deb59619123341fa8a3bf3977acd61739d45e89918064d79a94b9727f306e4323c4763feb5fcd08e100d7f8f7b16a856353dc0615a0d6803211bccad6bf4ef542ae042d1b54967119429fca21d9b133654b24bfffa93ab8b9bcb63fb341dd8e6c0aa63b8bf67e89f0b3f48fdebd1006d41b7ae8edebc08199d8f175cd05c094b8636fac7e62b879d9119fcccc7484fd0b00a73fcd3350456df57e84d37eaa6081e5846b1c164cb249413fcc2a0da4c281979e23ae1137839a619b78355ef3d6f130ba09de8556d2dfb2d52b3ed6ea6ac5586d9984c19688003c6aa7587381a2ffba589bf954f0744cb02f9e40a254b3e4ae475d335c4526469c6ddd5ef15f68477b7994e7e7e4a33e33cb05469825ab87d3ff5e77c494482fb4e8c67dc823d1a79478b3a921fc483051f009a5e4489dd1a8a2226ad309ea7a452a2f1c599273e60045c569d993f400e09331d32d09198b4c188d42e5786adb91076cff9b9d0fe3e257bb005c86cc85f0176b6b8e9e9db7c08a62cf245f1afe89cf899cbcccc209ee73fd0b5e0c9d60c1c4ea90500043d45911c50851b91a0baf55ed50a758b49b530b82b0a5909005c1c0b42ab96f5fad958be72547fdf142a7732e2f987675e36db6c86b44b64adfe26da104f7362a061337d710c80815998a146516313bcfd81fe271ccc63f5ef8a26e54fe461c5309cc62f84f6c28241f8fd5a91d26f182b4e63818d56edb5c31931c8479ee3814849606e1a2f12c4ff79fa2629278a3cbd0f2e8af6e38a6b6a163f90e17411788b805b3ded17da1633e0780d8d8dcccfbeb7a1a8cd8001d562601042c1527a2d13d0147ce104f0b7e7efb8cf7d405954d81f38cb24c0dc704a6e1b1e0e15ac47fe8bbaa3d6d80ed06f1e12f68ea9d97538f4096f92c0d35b35c31e87dad3043a4f4e7a2620c94da9876024ecb5f0176a6881c1a34048fd96a5440666f93c4df9d987d4a5af51a5de2b816816f2817ed3e7c53b47dd5d799d44de20688892f35329100424b359b4094315ca4109571e3625c563451ddc51c151c336a43e9506026738da16452f9865231993d15373ef6f5e2c7979b78ee0f083e132e30a04a565530848666bba73f62b1585bd49c249e16499822e21094a356a3c36418acff77b28e894fa80ac8619199a2f26100ede26e34facdbf3c07e7cb0af36b37c15f6bc0ee6fc1e59f41011d913570f885a0b13617103d9762c34aa5bd20bfccc7036191a266cd059097a3d749a3b3f30770729fb8ad2de4fa97c9b42163bfad2c943a30aa9cd72f065535dc8679916e3f7718960a25dfe592893bb2d410a207c0c172c24e3f02013447e836d474eee559c7d43d2e8256a4f96eb6596a610339cbc005acd000dd5e24a3b81f2dd7731cbf9de138ba803b9eacb6c6eb8533f3443a5ff569f97c5db388443193f753e97058437c1a2de32e43dc8d37402ee07843d574ab980f2e6486a0da96ffc51005ca65701dc0b26fdc08624ad993dd930aa595e22daed87af42ff6aa0308c6c7b7c4e397054b8eafb7240024c0f09e80bfda2ae4eea26ded33cb018ec5aefc04ce45ac0581fca27c7274889104b8d2914e3cf37fa27fcba9e1f5e02aa76bfc5073b04bd7b7f2b3947204a5167f879733a8788de4dea7cd8f4cca6e796165633b24dc97444a29d9b6339fe50b3b00d08109f6b971c4bede9c400920a3e308d92c195353e42ca132c6aea2fef7bb1f8932a97270047b6179692bd1030a5cea0de226f415adf937669acde0174873d363c2fbb82545895303cbdc91339a66ec97e042a836a30f03b7c1933d6c2ab80023f1992ed5f914d243a3fa668a0319bd47e5f89eda4751d72ed6c39558db626c67e237bc0904658cc492c4624ba497ec50e1c3e764d4203e5bd929cbfcc0f1e6ab01ccf0b15c2ac6eca9ce6d87ef1fb1034053b68922f6f842e14d6397de6bf5bb406abaa81aad78a977cef4b95abcf57d13f99254947bba18751434cd1cdcd119f0687953197679e2de0fb1fba3cd8d692336ebac6dac2cac0136937b557ee91c4065f65e50be6c260be6d0d2c087b890e70159e9328a2d2bc0a64bb4cc51cf8be3d62a3225d12cb45b6476caff1faf1fc20e33f138da6e3b5fd6c412788b05b723741cb9aba0092d11382b04b19726042933cf6055e8b0be63351a1f8596b471b147f3dc0c119ed540c29fa3e629f977865c359e6a76fd2c73a9be1ecf85518a72634c8f494f6863f28a09e0de35e749bfae1746dc2e0d4e7e85f45cb2fe4b81304f802f9cc403344593367a139b47fe6cb72b701fedbb2889535db9fb2984e1b0a8fd785864374d85b77035343d8d9d8b9b35de6a5203f2ed64723f8ecd31f882da867969dc4ea2dc8cd2cfa75a79ab22fa0250b4615706c8abcd1be27c4990b30e8f20cca2757c204868719af5acb7aa61f94595f5ee3eceb730a83af53409204ac6ce777c200dd4b5efd6f1ac7a6f8d276b8679d05149d2230e974e4dc599c13776c07d64defd03f0fc7373d7fe197f75a0a5ab2413040e6455837dfe9bdb5a7127ed2c9bc8362815582314f1b17df67853e47cd1d718fb2be813f183c92663cc60c2d0b0e0ad7ac2895600bcf757cd4a57145efc25b1d86000ad90d048d2985ce2505394f7ef6d0c41efdf5f175e84fd54718a0ae0a0e8813defa9a68fb960b8ceba58d17318dd0b8b41e7f785a5265401769b034f3692e5e29b41f0f815f0b6a10d6554fbd20c671f7cec90fad2d11fc6f54c79d2fcb40c087ac05f7df3f17b3442d1de69264ece23b9866ef37cddfd88e860c84ff9c9c740da06ec6a1ac9965162bfac11307e86e608336ba037e047773272c9ba68262a355160a42468919b48bb9c04e395dd901f0e2294587b56b46cc0339f7ce1516a038cacd4debe48b1429bf66a09f23c05c1940d351b2e7a3a3ac4f7fb3d09ef57a3dde809cea050f97f8f14ced397434ea778fe6c2db7614988d1ee7b0f616d74991a935aa73671b66ef0ff6a4972451546b61ed23765b5377068a94e584fe4bf7c5290d43c228380896ef7ac779f596aadd22f6e07184de85af22eb2fc75339f16b23ca16e6cf3cedb661d297994432f86d2c8f28e4e8b2b1e3e57cbb1480d573fae7bb50004e1dfc3d315763809531fe09536b2dc4d85a4d3259ff0ee91f58e7627db5de29b49268067ecf7a9f8e877802d33a2045db36ea6881d7bf0d619645cf639fa1fb7027db73c04521918393a7a789a7ae1639245e640767dc664445ee9eb1e7d9a9f5be5381e2b232d1006be42b3e0b972fea958604b808588203569bf43a876ab4240bc349cbbb2a4113c510953a64ffb935531d7401d6bad817d170343f01443f86282e263a21569f3b67b37e4769de9c694848e07c75dcb87778fa64397720b13e8e38d86127e48ea3222ceeadc247d2e61525e2989986943c5851814b4bb518f596a1673a335b4b97eafa9d51cd915bc7f87223cb47585cceca66fba57b3ddc3110643f5ed362eb2413fb3042b5aac8e1c4c659bbad0b4d383d8283660cf389e030216f543d37044218e9b1a8eab0f91e8e418ac842c1e2f99fde11bbe7f7cef9023c4bdc6065bf41615370e9e69a5afa547633146902839b88cb6bca91dd15051966952e5f62f2b4a65225e1394d7f6f4784bbb8db457fca477e34303016a84b28412bab26a001baf05eada79fd337d2020b56367c6035c3ba052552dca09214aa29a07c9a1b406950109b30f3b69d72d9782a368614895e6ed2c89d71de52313c0000000000000000b311e74f42e7c3c2f3020d12678b87cd7a16e8442000411c2326cdae179e7db0841fcd7b4e892ad85c9fcc11a22a1c87e3e2fa36add273bf150b04fe1c19b43600", + // Burn: 7, Burn: 2 "04000000454789e1a27f3e0206b16254d58d17029bd5ad228109096c26117b4402ccaa8d7af0b2ef5aeed1d5fe7d09013785cd1ae671da0c8e2f9c14bd9cbbc1178588824ad83a269a743f8bb908dfdfa2a23c6832f9dc0a2a84f9cef5c2f24a434fad3a0a104a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025300ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000300000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102e4cf041ce2714fce6b2deac48e63d661ce0fb4622102f16275ac8da3f0b1adb066a16328d511763a00fe5e4f92d22b3514fd59b1d6e202a5c6d9890b557105000d9f2ca6f1f8fa39915aa49ec722018c2101077c22bfa250492b61703d1af03530d23486638dd2f5ba49d537d1d8c45f965ce6a0a14dd5097f44532166e534255d6477b31173feb480ec9ba5aae0db74252def312bcef41a011166d5f33d8e0789112c7aa60ed86d96287cfbe3e8e20be82b94c97e4d41f6b819fc36649ba91bc2ce274613dc06a6ef8fca001acc4c5028dab519f2b9b6fff9baf676d1a69857e50de5f7c37602e6a7eb953bc3e1ca4e6e14c024d59a145ed5289fb3498b53f0da8f5a4354703b12b06388f307741479fe70ffc95ae1430cd853ba53778ec33be771d78e312bd02494c462e258fd807615516d5dea59679f859b63ee04c82b4fd43fab331b5fc84f5bfe149c71adc42b60e857a7cad23f484a5b7bc7b0ef66e4fba0eef3d3747bd0a63729bf9cc5d9dd917b040368dd6b0ca7bf7a6070ee954e40d901f2ffa6d50caaf4d721653d5fe254e82fc50ddebb91c05e8b83e55bc4dafc45b078fce6391cc4d0456128dd80ee1c9965a9371d2f6c7533a6a49af3ad85da81bce5148b23589443166ae62137855c0d698309d0108f0793e7a9a852a9c7597b1040fafeb9d693219648a3b677e6c07c635539523c6a555317a925489a9da78cd8192437886b07473ce2ca2a3a7c48726e842d93a80c85fa2022738a4325f287880ba6b6e8accddfbd5ca28e67e5645328c9986e6e4b38557bd175e5dc92592331df1701c8a1bcfebfbf091ec246a46ca1e0b4799c5c35796015b8727a2e823f9430e25db23c96ba4e5ac3ff3ff05a9467f032a4550a3a777659973d5d8f7366e6a96e2f79655c2e885018096d0460db04b9238020812d6164818427da0e58ea6212eb91094c7c2ad13b124c965097da1c43e40a2274f1870fc60f26cad967a8f15258e591e3a7f7dbd17ba04389e482bbc79cbc73f2f30e861c927bd24f6bc825de62778ec9b61225d8ef0559ab122f2090de38933cc0f2007dce12edaea60f6be5560de16ec336e78e693355191b02ba0641dce17315ad08ae6b03bd71efe5b5bd24c692c50d6c165d2c8807abeed676f9de986cd45790ca193cbab1f0cb07ac42cbcc89cb8a7b5b709fa94aa85174978c868f349d10c5c65df30cf5343a5c0f13a8b36dab8f86ad272a64888078b8c996f506c2cbdb73056664d1f5c9e27aded03d5f22382c43de50db28ab28af1b9e00813b8bbbbd6173766789143824af9d003367225c018f6215587b5cc76763bd24b1be9d6026de65ce9354e1bfcd9d44ce81b2eca498f81660e17ea08c2d1dac1f8571e426f131dec26cc390884acee64da070eff9c381a4e6da1bd9adeb13b20de77b8ca9b9849a028c2c2f079c74fca62c34bf6672fdd2226713800e96b10fef3e60de8263a2618bbc49f5e641697fb8ba4fc4ae2ad8c7241a91a09f4dffe1986dd01590623216c72d70ee84e13154db0cf8342d6f36b00ba1bf8f640868d14c69fbc6765d9fee53f1bf4fdbd73240ef4a6969bb3791b2206badb2dcf97173c99cab5a39bd3a4ffe49355e294b33cb9153fe32dfd196842e3761f51cdce3ae0df0ce51b14e5a6eedf3a9a57c9cecc0f19730f6b82c362cc79c0001e2122a1c8fc781a0670e09110f2c64613286fadf33d16e64ce192c8dec9de63e6bc7734cc5b1d24598b616e83edf9fb228ee724bc0d0dc8a858efdc01bf8978ae1a9b1cdc23ac54b4af01ea7312bfdf3316b23aeeec8f51c8a12a89a8416ac1b5f7bbafd83dded33485e68f150e39a35e70b6ea6514fcfd13c5e10be2dc52a3c2e05f37e327f8b2eea2907d670b592b31a877c3e8cc326e2be8a64bd9a5802aaad49df3716dae08cd1704ca950c645705332302895ab0613e1d8d14db5d9e46282a1051f07f3902b69776166829ecc3c2381039c1d892c662898eb9de09432f2ee145ff7701aac2d4e76e215917dad18d91ab4abe068e20471e071bcd120d36f824a77f0f628ccdfdf28bfb7789a745d6b30d8ebcb1031d55c50b651b2b23883bb37b8b753822dfa61ef703aba2b7eb84fd9aff965af4225e16773a79cdb85e22b0dc4a3ae7e3ad62a573446eea70d51238e529ed0eb1c0c71f80e0a62dd8f9a830a05cd0494548aad157a2a7fb2d611084431a1ff9724d8879984a881259dd3355452f08eb4faf2905f26c22c00ac57fdf6ad417207034a9914916a163b37de4c86154813448e8a06fa64b7dd6b62164f96d0f5214ab6c135dac363034ccd4aba000d388e6b259e531bf00be1870efe6157604ce0f90b5a226c07fb134cb17b172d27f45d94a7308cad63bf070c7c3785e47bb1b99b2952460763426eab8f9a114424138529f6773f4c4293c47c5b8311b8d0182ad0d49e823900000000015fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4160700000000000000fde01ccb8336bd914d2840536422f47a495f99fb275a94036bdc26357196da4bfcbd8f1c0558e6698c8f5de4d92c97baf06de243383ee008944a81f75506237ac1dc049cb22a12c152b1eeda269b4756e8ef1f6e4fe50f2bd65fb00acfb460d178fc365b437135582d045f54b623eb978efc37452f119b1989169ffcb8948054972a93a1413b9364c3d8c2709c7fc71c4bb43cf678b295727103d0c573eed11b4d138573d9068a7bcff134ff25c0ba6ae65f7f0eae31f129d238e4e855b6d46033613f4bff845aeb9036b440b8d821c3c01527b797fb5177b13856b0b0a417bc8b1ea6b076f4bad29d5746f76aa64e8da22b33db49bc6be2938b56864402c69c96849d0b5caa8ae0411a1724cdfb42cb7d86cb30a8bba11575dc72bf9aa6c296dc710420c9aa6d864de981fd735f00efbc392087d927a4fe65bbc0b6fc89facfcc3eafb5d6e00ed6d567a6dbaff95b57e858fb4303a0d108080638a1ac7cc6ce0a86a16b8fc3d16178e3dc946675af10d1f964d1f391a8673b7277bfd0eabe35db6fb98a465ed64ff1e311aebe7c4bc6c62d744304454e701699b71ceb69fefa80770ff25191d4fd2c23bc9b8790833df08d383df7248236ee9d492ff18d901a7dc230039231d1cc7742deff6a359640b6eff588d2a3137ccb04c0cff68cfd05394fbbfd4dd09e290f3842af42eb170fc403659180d38112dd0e5b6247c56ec5ccf3ac8398bb136247de11037a94005897399805533748e9a71723a6c7d791be744134d46835bb3818da353915edfd05e538cbe1a30d64a079f5056a9b5fed8bbeae99bea0b3e0b54c50f8a0fdc42db5eccf41f57e2fac38c0310f07b8d6d5255d723e9ff1776847795d137224ca2954e125547963678967da6b44216b9c53d6c9b33bacd913203e08f3551a334dd4d7780487d68bed9631ebd46a4bcdd08e4b13e7aa51a279c45cf31fb00a68ba389bde4e033ae6b4359428f50062c69fe23042c824b5712806cf8ebd110a792d399f50d6657b714401475c868f1cc000a26fcb23243860940449e08c7983497ac88ff431242abd6d0a2e489f2f47c046bff32ef29774a3fe93fd710b6d45da4fe9785d07bd47cd9bef1050a125b3b4518a44cf3baf050ecef26b2f80d3f28c648e8e44695e2e605fdcad802d0216afb932754e092a3d2c450aa42c5011159206180004be19598ed9fdaa0f27bf77542f9709270615ff5827646e11533285e466b8cf1af3674b2f4ac74d77745ee5f8143c8606c40af15c612a5d2e65b4eafbdafe0a68e57eb6e0c85f8bb703a9a8ab1b7515ef67a924479a03d7e710f67b342159c340e88df29d30d7c0edb572002da039a07bf9af819355602c019720e17873c0f73a359ed9fd1136d5478a2605de995482060c9c83f4bdd4d000280fe96e40e2c968918ea53ab2159b94aca623843dd9923fe6b609ad501fe6d002bb36775f274eeebe449b8cea00ce80b9e82c97d59808fd2ebc8d3e5d0245f0c4d5b7ae85af3b3a36f9f40dda9bd282e35f2bd2608d1137a992be3ed200e36ea82a93c59f37a1d657e1e13b76496408fbfecd9dafa4a8fec72cd9ccc036cf48ccc81b8a0e792f3d97689259bd9c846bbdf2e51cd2356f2c5e17eef3d0d4a33b44701b18e3475ea42d37639fed6abfba19498483de9c26e297265b721ddaf3c6ebee876a9b4a310ad1df24f6db2b6614d88b414cc5df778d690f750083ecce0a779d713b088c01b1f0010106f9290afbf92c85cc9d0aa9d8730539fa2a43f8aae9d19194edeac1a8571044061f0c922492f179c5cd54470f90ab5c074e83575645c0345c540ef09e3f934fa6d09210c101ac83152ed5480acfb64cc5cdc59408e1899c038eb0b0254a130920222a549c17992c445e46522928a6033b89fd07122063ab40ffa3cd9724cf2c5f1b170577ad9418666aa43f537d3f35bcc475f89930dc9f5a9c2b3f88aeefcd6689a14ee59b632adad7cf08db8832533281dc4f5fdefbcbc06f8c923ed2591458925cb42971f7d1b469086da757827044300a8ed82cd362dd8f73ce39cd2f7d511dfcde84f7fb230c2f03dc1fbc163c650d7a6b6316196b5571c07cf4bf00c142a307d55b57bc8cf5f91d67a7019bf3a42bc4083f455594f5cdaee0ab2e4f49608ac53d9a9dbf7e2d9b6e97f6668d8eedf234fbc05e5d15e42d45a68c4fdebf20173c2a713eecc3797aa34822f580668da9daa71875189a0be00ad2882e14a4052291943d416157e08e800b479927e87603502553a51210a19716beb98a1ac009066d7a811228aa3361b151e25031490c3b3e2b7333eb20cc1fd30ddd02d57f531d0bcb8ed67b851c14366e41cc9dff350bcb0dfb6a09b8b2a5261291f850f86efd21f53bd8a1dbcca9c98453dab7a08ee7b0698b3b63d65964cf8764c961c3f4100b02a71ddaaf1cc06d210cf83598846bd95e74795b5a374db1cb0e3642706583f9e53cf37c760b0710d2d8030bf2113166450b46e82169467aa0e5de3afad785dd7593ca67c5331d5d2b5ff31ef22cd6212ad04872bfd5d049ed92fc9d58759cc09c529259bbdb789f7e2b3a0af540c8dcb224abdbeef9daa3db99d789c57d01f75867a8f8dd4db47d67f49c1cc04ef8dbcead3931919f434846f43ffa096ee0ee4ecfc2ed9e7a48585769ea029a5137a00a34c97429694c757b6d2e37ed4ebe3713e951f026c35af69df0bc0d6fc9d064953c8f310b085b2f7c0f3dc7713dbcd5381ef1b1a6fbfb0a594e1102c0e1cc95232c3f38e5146a999764483ccbe9336b24998bb35c12861c0a8cf930f04f137b85315a84caef02cb669ad4f363896f98ec3ab4e5d7f81329748dfa261add21a21683ea70f13764cd14dc5037b6216777b145f01b8e76177ad76a3120f4d8ac9e19d4fc0a389ede0dc9a0485fb8321e82802e5ca7ec5dcc462604430ce1a6e857f274c1c56d2cbe9deab852559e65887dd2ecd951327eabd5f6a9cc1ece73218f9c4cd23148258f8800dddce551810cd8935f8d2df2e483a2b8657d27646aa378b8e14d69db375839c94599c298c4a784e471ce188483534d1aa9f1057e87a8b8f34be2c47723b7bd424f168a2518e1f39d0c246920517e8ad28ef538628554494f11b23959ddac9ef39ae2298fb6e9a9ad1e476aca957dcbab5c882d82af5268bdff02a50d91f4bd65e7fc60ced2c256100ad4fe8f2e78201a707e14e539012f535677ee2101411905a723c34141fcc36a7ade3e2617e2e3b395f234eb2bf69ffbda482ecee215a07558a73311c1bcaed764f2230c286c1b99745303dff24d5c6fca5e1151d457a60fb84d7c6d6884f405008bab90ecaf8bb36a0d2c8505eec1f8dddcd5e66915e129298bd1b260fd8f4a381057adfe6f4124e5723226d7f8a48560350c626ca6452d597a4502911e9fd29a6900d3d343586758842f4cae3f41d6d5d8b4f1664788c4b2181d1d8eaa179fe0b9a80982d6a5930ee40e506fc38da4ec19f921f5173b74965a0139af6d9e971c3e5b38d5088620b2bc19d336e0a09758647124935f1c0b0102e06435a8096f15c8665d7317f98b69ac2a6622cdbdb780f684e801f5e4f181ee4adfd0cc9a799716bbc84d300f49c2af06fdf173e45ac5d8c3ff4de464004dd1058da5bdf8df2197d551df5575eeba4806c3821cae37fbf483e3bb65cf5f9b62ac0d61d9d97d8ebfdbc74fbfb59a22a407e5dfddd931b186a0df52c2ae60ff5d963913f282bbedad9674fb6a0fbf32460e1746ef08c3ad2b0157db386a982485ead2ad1b977b92d066725e4a76df59a10a508e9c00d8832eaf72b84c7f276e1504ad16357db8378a71a60023c900796226602ee97277b899917d71fcf11b4f4125c5b454dc1dec2971424319ffb195c910cedd226576dc82b3b84e2cb3ec8956a1805a7a4fdf5a9e49b6034fb1c7f2d131368c9cf1daabd8ebfc93f499d737e411792656a0e8fb0c89db1f351a10458a2c8d5803c4e8ca672b3e63c8be3bb545bada8261912bd4dc018fba6d916c2aa80fbb7d4f591d915b21d87ce73b52673d6a3f8d765ca584bffe6e68140e7d501a20cba127dae5ce023bd6495261e8d4aff031385c693b7499444c41e95dce8ce00027ba5c6882f309e7c01fedcb3cc95bfe5322b5d95ad15405c062a3c0d9977906c2686a3950a50694fe971fbaee9b2c8e6be04c2d4795dd0e96ea3d263fa57f3598c010e7a6497e3200cb2efc3cb9b155953eb20cc616f811b975adfaf7ab5009c2f07ceb4f8858295fc05743ae13112e8f8cb4fc5dd964df755c3f01d184a33f5a6543ddd09eff839d06902bde1cccea58c42ffb0ab1d0d1a0edcf9753b51a026d0695d39dbcfba0d2fe88636926147e59ede5387411cabc27be6b90ae06291da3c69147ab757fd19529b66421cfa0ad364808d2a07420943ddc5797c1f9bb3cd02f9c017587df52e3b552a8c4c91a6d79f688ee83f869e67de7195de505f21c6872a4f0434c9445a62e2d93d3d87badb66eff3a5c7eb612e1e2bd17fd26c43fa24197fbaa348ee35166a2c68d7e81499736e501fbbc8ec8d3fc9179d717a4143310e64ff307dac933283f34a8d0aee966df245af33756f1aa2664604c0d30046f030c8a366c0f411f56732881682ed3d04c26a1d2bdc54a87922725db56420da091e86c61b76437ab3deda0d0c74c480fde36de78fd370710e32dd9e752ed1625657f3cb769b649b368beed5c1cbcd5b7990160326cee961e9b9a1af9c344375cf19987687045db03e645ada5d20ed4529fc4cfcbdefa42727c9d4176d347033b5928a3ff90bce5579bb00e87d1d9e040d1adca7d188410e55b8bcbd7bff5012a0171f84962c88e2ef2a2b209a1f7b8b3d7dc1bb60c249832defbb9027aa80f5e119cef25e405249540c042313f2b7603470e84ecdeb1059e8c19a09e5cae35018df0ce514487e78af238b23279f39833c4b56af83644cdd121fe632db58c2eecdf0619164f3a89f9afe8f6a05dfb9ce0511b4dd280c0e7bff4ef90c5e2d22e9b10bf04cbb342dac0728bbfaa0849ebf06f38b786ba7c64e6c0f2e5365f972b46a87ea2273bf745530fa51f226110518e5e6cf95f66693ad58ecfd19d9aac1d9776aa4ab53e9d189d25ed4d1fa49b828ecb8fa54d53aa56ba564f7ba4853637522f4371228ceb84829121e75e05cd2f0bc71dce3dc3061d9afceda45ef8e038a72996745b6cf555e1697ff9a986194a80fd8b81729db5963f683467aff5261f752297f8baf392bc5761a85c75d58bd810e2a4f09d2b0d903e154d92ecf8b3193d0a4b4458f65d86f81af18fb399241e2b3359c2fb9d2671177633e24616f61e6bf61b2e9cc2dccf775066c4077ac92e972eb4652a7a7b60bd8701704bf418094b9c6eb3b30bbd770f1bdbc4e66f2f956b1237e0332eb1289cf85099147b3e33cd0c45d522b334f7d76ac203a8cae76d2807e8b769861ac3c9e448badca71c03510b1cab65ee97b907389e6941fc6c386f053f2145f6ebb25da1406cdf4c593b70dd9852008e88ba56e5c3f7a3f54a7df1646018b2801d34ed49093e91f1471f76a9d569381887f64b8072044953d5a877f96f41b13c25170b15a5a218ea210291f71c67ff6d7b4d9470710c6eef3908cd4d901f66b5c8af81f6a5596a75df335e29940f214c83312bbb418d0cff219e61aa2e7faca6346038f8444cfce6a435ac9046ed94038a5ff32fb5d62ea76de4a73c411dca8e49f04fcfefb7cecbce23f56c384a4b81fa3abea4bbe37dd13cec998d6df62efb23ee87d5824acceebc0115d4f7d84d4aaf691b0cd25d0f059ff7a9ea560a999ad43a8896186a9f787227a368f5febea348a67a748f566f5671b71708030a7063188bf3a008173fe0870c44c70231a47febfde1d5dcb0e3ed4ecfc0a5a1218c9b1ecc4e5aefabc4f3580392b6285a25e7f3b224db2a3509ab7be4699504f4f3711ecc6467e3a69d1f9101dec579726aec9f2e707cee2d337d7e96524e1ea2a925682cde94b0d943972c042fe1e0a404d8ce137f912c4a890d7ede7ccff30b5a001810f75ffe6b337afa2c0f3bba8fc4e94afe7529305632c2b4ae925ecfd55473fcd562a719ea19a7ab255b4375bb812fe9e228d39f20c33c3d2cbf431652a6876df80c3d6fdad1b60e2d70163584c6a50d2855691b8256aeb1e84d7dabf0ff83f7f0ed17c1a9c72dc416d35b8744ff12640c39f4b86c0b33299405c924357a4aa4db8f8a88cb49934b329d09a0ed5c23a5250ee2d0d25b86b0f07f1fc62c63578de9c308ac886e77fe033c8da42ccd70b3e627e5620552ab972edf72021e480e2c82a829f705d3ac8015aabcaa6bd2a1b68f002991853e02f7e440ef3cfa15b840b6e6aa926020d7e43356cbb434259703150e163422eb5c74d159aefb59e8f961f8f68710085ba76114a8a0de5a2b14f72e7976b106e1e0cf91b706f6a7c490dcb8001320e0db5d1012ba71c1026954844685193e6dbdbd202d4a7aa36d9c0644ea2165fccf260fa91a792816cc882b7da2270928b48f34ca15b5ae406f9f8fde325e4b306eb2772e10635fa7ca2b23576e35af57b29f2f5ecb01da489c90988c71959f6bf3d3b491238fd4c13bd6862ed1841983121c58c257f1943fbd4b523018e444538ae5699e2cf4c34bb4fad51180adbfffb2797049984f62f317acc0aefd7b49ef2394f41a019a11541f26141a1c35e1bcc05a9230fce3582b9ea160f935ded5c9dd515e7e27a68244a2e91392bcbdc0573658feb349140fd93d8715f6bcdff9bdd4186716192c80be3fcd7c338434c5fcfebb4339765c15b8c0ac0ab14ff03799d2454bed171a4a528d94e6026b3836f5deffdab2b77d9a32b24112e97abc3271e93c32bf2c1eff42acd1726233299e7855c1e2423cc35d3bcc2823d4cf52b5ec2fa172da26d00da0aee048bbaadf2ab1fb28289b0d6f02038a266c7160dc516cf7674632028f8144c44a971be620b43199a3466dd622cb71b7ae3aa06eee385cf59a17bb32a08c90057f131dc03952d4a35d86a6d6979f4b672fbca7da5dcfe082d69c3f09135f499eee82071299a6350ad74fe5cce702505175df85f680ef531f640ada162ff6f070814d78e8d28fc3316b54f170f508bbb29d8a96618a6cc211776ae30038a1e904942f2728591344da49984736b456ed59507d5c6053c3cfbecb5e11046d87a300a6bedf6ac18a8beb3daae79cc3ac4603b1d2d705b2d215f8fffdd5038b1ee7d4cacd86114cf8f6feed76bb810e542561c4c848affb71d12c630f9b29de4509b00203948b139065e1feaeeaee13c2f574530f90a277be135f75806221f631c744355189d1390330709b2bbcb61f548d8fc7f39f54413a3090d09a962e283442bbe01b6f7b7a6055620ac94ebdfdf95982722b844e3b708af50f3f9601a44f5c4757e7a5067dbc41ebd9ce6e2eebbe0f3547ffbfce538287f39adb5826117dc146bc621d617d0b4811c053e1aa2e2f8343d269cadead9ab4110531ef03f973cb43ddd89f6ced52238cb693b8850e9df3d9cdbcb97c4c84749eec92b823f29721c7c200f69db415277456626814d646ae57ef136e36a0273ac76d51fb11b37631d928a901238718eb4ff8336a0a750a5819bf6a2da76da1a06964ef4800b865d3bd026d0edd315e74337fc9fa692fff61c4c7153cfcfba2f5a16209460f90c5a353f6d581c6529bc2290799b615a9dfc1acf6889967d9b979c62ee16e3a997dceaf1fc020d4b28ec3c80ecc8f2163244895b67ab4eff8239a805252cf2e19e58e0c4fdbf595402b5625fb261e641a1a9c938faad9848ce84f41004e682748e5a9a8d4c181c9837f8b5ce33e10b74d24337dc4a67ed066979a45d52f6c3cbdc5c49b62f41eb54287907abe5fad99c5776a167d918b5747da356d373cd313d8c3fb3b30b7040ed00d815e0782b6595bb4341105d84db9e4edb0684f60f20bc9652f58cd8abb5bf1813e6d3f2c1d75a2279c1ba7951eb34126601fe497e93b9cb642bfbe13ad396863d499e762467f2e22b5c78428b775e523007747338b2b8c2ceee59ce16f03479892e129573e914da841d58d43a33a1331e9ef7d96ad374534e386b677cf3b438a642d4fc04a8bf71326cdf2e6ea25739d89aae37abd09eb8481a32821f6d6789875c2d56425c31ecf2bf179d125a003c5d9b79181182705a357170ac031985e1e182ed63be6c5e600a77fbbbf23ac8d18c9edb79cee2b4e529563a6019ef4b4805bbd84b2c27dae627728a39a3c3c91578fb4bc362223751e67c939a5c3f89ab2ea85c27b70d1cc0d96972070cbcaf8440f8b2505653de677ab2976646be75a7bccd3bbcef3a25019096f9e558328daa4f3af6d458d3b1a395079858ff3d6bd6cbe810def364a44bc2a3ff558f29dd4dd1c6087034b32e1ccaabce7cfa25951985c9e00c69de2ef5d0c8181f47b81f747db86e5ed291574dcb8ac53e22407900be677b9723104216ad0577762d6ec7fb694551d72e5357d62fcdef4900596efee13259d3a2557dea28153d4b6d65ef8ef4ce2acd92101423a38997febe2582661862c5bdde0e64db509562965c7ae8042a1887485f21a4880fd1345792e1f5462d63e6e2fa9c8d63a3203101902f0c8e17aca5cca2d0d205a3b8269cc1af7177775778db264785c5bc520494b2039062633421f09651be1a01467d3214e19c020eb3992f771a44f1d22dd5bdc708f1414ea342d0f2a3ea8356b497e7552c447d1c59acc00ec92293552998c4eac2a6051d2f4a9ebdd26722c03d8693add2429e77dcf35943d81dc0860c13035aaac4e19197f86dd400148302abf7910c45c738926ad3fcd92ff1e639b03c4dba5938c58d0c09c16051751026e87b436ca7a14f21eaffca3e9b6eccc8c8a8f91653fce0aa1e8c983fd3eeb5f2948254c6069479302431663ff869ce60b24d3bf668ab9d899d4525f79287ba041b510c70f683b40489c44d9f36d56d36d7562d0d73ab7d68727dbb169035b385676015e7cb44fc925ad773e7ac28b367029c57851d0c90520cac906f426c75afd7269124d7e2114c8511b331ef1d43ad5e758be645a2469590f5d2bc7321f739034608fe9bfec9622c5d89e9dd9ed8a0b63c23edb5a26a49b7fc681a33ea3c56b87ca36f7ac4079125e426fe01837fc0dadefe253f6db601c824d246a19b6fd3621eaa9835b58b3c00fbcdd6558203678e9ab1e113deabcbdad998f320cec5e7fb20d619f1a66fd6a73d7b51a0c2a18e5e7dd82e8adbea481485bc6b535c445995d221a43333e4d8f986d91a7bb24044c4f84216e7739077979f065c63df0bebb771053211ffaebd3c97fc978bfe1057f3ecd99019d475bc28cbc5e408946ecf651792c14bb15f27b52074bafc8b4386932f56d9ad57568a511a9daf1af3b89e571226c4419d06a3198a04fc473e67115201c6ed1c82fc049bb1f330914fee317b7dd7b48df0ecf5684c68ba3db8222d65486c4548509c00e1f1da0f8bd8db2e3e5573e1e94380b3e4f6c8644db45debfff88336be787fe7fc76ede488f1328a87e0ea6df38a622601a1bf26ccafea3e9f53b88816cedb7c03f7a1cc29e204fd3dcec39ae72728b9149d8982cef971077e05cd27636da2967a1ec1a0cb823d76dbb310fe948cf1d4bffee9be1ebb7f545c51258d6dd0a95cc54be6d24274d2500363dcd6d8ee0c30088a6eb8129fe8943e91adce089c90ab4e484a4898183dfcf0ca08b0b46e4a06fe66cb2eb4e7bceddb6b1147b0812eaf9a9997456202bf1f04d912efef7c2b58adbaaa031a66e06ed91a8d7a8c332414bd8d42957aa2519d610b09f2fc2905a189aa190b3e339804447c72ae0879c5675594045d60ea6e3e602e419bde86dd178e34f7c031f8b53a3cfe700ad4c870651f95223ccbe528fc4ce15483035ce3d7165cf5682b05736456c52daab2617ff4eba928a4d9e16610b42fc7c329e9313454f0879d4cc7c9c5d9a343a1d7652255c39f3eefdb5889658c023157f010d27b866a2d93df072c2be7fd60680178075c362082e6d2378ef6078e4342fa5b2b4f70003d640bbfbd589b93cab2d468d2316b089565bbea2717f9478b4f77d8cb0e80578a1245dd7044e7dc1ae5d248054b479be44522e4710f699046873681f6538d863a5b53ffe1c2732ca8b083148fbf2b42458040782880511f92b272b7b3eeaa96d395041ea2ca7d6d99dfd2156a250d521cccc09a7339da1caa6b099ff863d90dd9f41c66ed95502bc719006fd4a92011d364c2f4fc8ccf9cbdbe3b5efd50626854f400ea1769eeac79a54d7feecc37abe462f82a9a0fc1c10f0cc2a5083e201377370ca8f3f0b726cc48c0a94e5981eaca90137ba2b6eafa89b1a9170be15b92d3f3d483e1a1bf27667418d805a470fe9cd8b0bcf3d6c7588271f64227c70d449067d0325eb915a81e26db947e9bb27bb093813ca81e515192f34eaf86a9fc6761f8c5fa2c2f76203c04da59467ce5457f2de037886ecc2af9ae1f8b3c716fe5642d3f4bc3aaadfb942622a203e71407fc5490feee383364bafb5058f555df593ff316a62f4eb8ddee3e48d08f9e11566c2919e4edae58dc84a468dc25529669a9f4a9e869edb5c8ed0c91cc7d56ced84086f150000000000000000d48768c7d4846c02bfe34721adaad00b4b6baada2039ff05afa1b9dfa2920c3a8a61a2b2a836d3f18023ad165c251b3e97214beda5a1e885d24a55a614ccee3e000600008077777777d80a1977000000001c1d1c000000000001020384f589f53dbe67b156b476ec6c556473c7f5a581751f925e0a7977d8ea8a01fb93f0f2fff17a559dd6b52a5df79dfd35ed51207418d6ec1c8eb857b8944b17d08df0faf8810e7204fc012c3950923014a934c92d380c7f90cb16967f0a9784494a335f3fed476c58493e9c837415ff4fbb0b0fff46ca3557e8318b9c77d701736313060b28518920c70eae1982fa7a4043ce3703e4d4d5840eb8d87cc5dcbe5fc9eace2679e54b588ff5e478d9766a63c2c60e6b968ee3c8e01137da480709496656a909c2bd381bbe7688747fe7cef49556ed726f6f1241fef480027dc6771db3529ca4ad558528136721dabf2ce775db8f399e834faa0536d7d416ffccf60b4e23fd8b5d2ab36168e04214f3365c21b2157f6b1842fb1d7679845d276f06b74efe3514df0ce3c17d549de9a5145d4f46a4c65d6c6700fdf6c33af90c1e86585dd96de4c31fa40d0254c0c49a10061f966c0cfed6284f6ae200886aa201e48b26383d4f6bba596ea9bb2da4e79dc93ebf74a1616ea13a9d2292635681f121ae87ef722bb4e21a20522cff5add2d9219761302d01cf8d6f449810cbe60cfb4ff705488c618a96b799e15ce3640a8c0669228a2409ed64f4515776a02b678172a9bd04f78c199dd7437d563b3db076d3ce875679aa164ac3963645605a86d7cf1be63e049710871520521c2ca877fb48ed74d49ab17c90603d22007c156e25c09a1c32009e950b35b98fad179583c673a6f19599d9e9222ae255f594d68861cedda28d7f975d467daba081cb2ec2295770acd0fdc51fec23b6e4482be8eeeafebddb2974c789ad3b531783f11fa9f1beceb8ea11eb4365085d87b8c92895ebabe527a41009e28d6ee75fa3dac57d7bf12aaade832ef6d95f64055e1eba1fa2beac660ca9705494b0475c8c34bcc47f10acd023c5e621b2108c1ae6bdca9d8b3da04a549aa1a63e87fe84e875be4245402646e2151e789f5385ad46523d0eaf2525d02dba3b5623d7e2ba3151fffca158092a52d8cdc3aecee5c663ff1a5da3e6887de4050963333eba2bc59ce10d89b3c9070bb63f8af2db54be24554890648db11870cf731534a03b2aabf4d0476ac41f41406a8b2fbd0513c2ede4a1ab0cc930864b8b7c18253179e772392e0c7eaf473c966d587e6bacd00e3e68119d372dea195b286ef68e19b06c20cad46beeb5601988e2762c71d7cea86a6c498e1ed0d186c40e8da6c60b897332da6a0b0b2950a3f883d1a12650f6a3c89c1dd5928fee288d730fbcc470276acee3aa45db665e356266bef179823577f7f7dabd94a5aa7587b4cc03befec5e5e9bb241ab283fd0bcbc5ff178d19cde301c4aac4afa036500014fec6109fe3c2337b770ecad6761892bc72ead06584e4458668616587b280050e262cecce65491e6a9c93bbb264cef27d7f247058816c6026adf8b040ecb3ba559209fcc7c24827c460221541a7bcd97e87d1ec7b96efb31a48f429654cacb12c80c94b43a8cab2fb461ccfae31356b89d476d139cfc0398a29a6b40cda8a3cc619ea3e824a4a5854a93f03a6786325cde806b0866ece63583c45f512884f07a9596b55f84c1ce36b450d7d9ce07cf54524667191ea2da407d0a4781f2a8dc1980da32ed545bc58307c2e561f03119d1e2246466d96ca630265f49050bc11b4055e6b47162e92c9db77ec05b706d406a4c8cc1dd1cca1c5d9dc0319d1494c40088fd6417bad12883631f27aa61d0bdff6a7da203c8418d4414166e47d6b779c9bf1c8464d8221e2151af634f3e7a9c75f2d5e66ac0b080a9c3196c6437171100d109fbe04e7c116cbcbc46328aea1b4cdc0e8d6af423b9a8da48f3c238409faa01b32a6d9b16dd5fd413aa28ff3545d99882d68d4b44eb0d9c5a71b33da94b65c4d5185e847f3560e780df75270161f1dc9bdfd394b48ae34c63096a553d930d75d9c48b8dd6391b0f4ee6bf8643b4a35f40f6ac65bd33a5934f2232a1550a74bc811fb85ec55a78a8b61a36d388297c77b16100c2d72c10ad2ff1d3104b3387da460c3e8919675521ddf2ed8ce8860f2230b461cd88890f25942f2b7dccf13b500cbd867856e962c447bba5bce644f745876ea8fb6e00bf10007d7faf2e433220f1903bf24f28d72f775faf631509fbcebe068411da6831d8b652eb0f899237304d6b7b76db2000378d46f31e264e3cbcbddbd2b2aeaa2fbc5a29d05221cceff5a35dbc1dd70f5a045f1c8630d5dd228cc1dbec06f1d635a1de31df355f92d1f0e3f836f0f4008d49e9eec0062ed09b13a6454dbfd52e437871836b81b586717d7bacba215b83bca49f4a40c00052841159b8edeb45c5dc2c29a63db78e123567f94c3a09574d90a1c5de03443ffb9e5e7f789e1280102da6cdc69a1a3d58d63f7d988a0763426eab8f9a114424138529f6773f4c4293c47c5b8311b8d0182ad0d49e823900000000015fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4160200000000000000fde01c19a4c0b6d89d27687ee204a5bc6b5ea42abdf1f05229d7331d10dc4288e513a6b0e8894cf2dc34070af46eb9b75f80f8f891596b4bd40785cb3ad03988201b99f780524ad252cd2127e789847c8557662f80893fc9f4c3e281b8cf21e6c0e7968e399edae0fe6c8d34b3eba51c44f5a40f3589ca682c5c37883ddec39f1bd8b9c33b5249f5f20fec00c0a0b214e67e812fdf95504f0bbe50a4c8f85ac9d000932e325aacce525bfb4d2eac7ab12313951a380de403b43fcf0f873e04a889953a125aa505f05fa796513aeb72e0f0580c62f6e12bbee42ce820e9389c1697c80865908efd821767bfdd763ec7ae50ffc6259efd47bf8174e0a7c73da2f955a6189cf7e87391589f9ac59e61da8982e81f371a27f6d930ebdd76cc91d8611052adbf23a4179cd3b10d6a399164487e776e4f4577004718bdab42599ec4bf97d9b1d7a3e9591465e7eea5e483ae77d4dd02a5cdbc665bad1af457edb5b27d359c15f576292f740c926c438050f1f53fe7c1a8a0fd43696dcbca9d1be00558b33431a660b4b8ea0c2d4eb2e1c0262a4736a8ec5a74aacb27b661c13985e02813f12e7635adb84ac53624a77ce147bf1b409123ed37968dbd6dd7e89059c36ebad29f48ee55712a6ba94324ac978901bacd3343a1909d8e240e8b0084f75def3e3dabeb9a9650a19973d8b16976a790d4ab6ddaf1ac44b89569b61733860c6e7911810b8f7d916dda6b11df8a5adcda6e4faf128d80108690c551b2a6abdc4118e6b441857c145bed5bfe71d74579e14534cab2c80ec02071abfc44e019ae4bf09d39e626873a838440fa4a9766a0ef4f761692ee2828d099e86461aaba9635157f2b9076a93e1beb36fdcb6c6a9951b57b87afe3965ef71d3ced48fc65615e5d100b7bbaaa93f3dbb85ca8c14bf8591187d2fcff59a5f0bc9016569998e4c9378318aae999bdedf5dc48521cd088a96bfc01cac3cea0824fe5fa172545e97f55422ba1bbe17a9a37332493df8b7cc15edfe3c468fb1dc70633e9a225d8420badbe01a0a090b8ee23799b3617cbc741247ff7bec2b31c39a92c5038c25c2472047701109252132066b208a67c397b183ba0ad5f89744b85f61901c5441808d1ee8a3f765a5e26df200e95276499de8d241a007524ef1ade07dba6b48d153d4077f33022503a21683948059281b641f06cafec840420ce97e314989a4043706e9e838c36be15c518c58560855a9548634dc03a0deabc4c509998e5c5aeeb8e0045a436a9690354613d924ae4d1c0866972f877a9918917ca8bf3f1bbe7de3bae426c92e82f4320e500754ee69e94837d93bc5a47de31d06810d2da7124d200ecb8038a4169630f9f2847bf57e0710ae9e94330c3b29d44f56044419ced22ec028a689641513a7a81acfa2a62d85bd7749c78c37b6adc71b9c2da0a0e14cdae67fdc616a1f68931c1ca1b56a49cbca6c3457ca0fedbd15ac85967b9f4abea106ae3630de2040d84455bc6878304be38bdd8ab6f146d2afc47a09997a4441be1474d44b497347c3e3491c83b2a0e1f29743e1766acd36e8512f36c252fc3cca9a936ce9787e0166097779446c90843e03dde533196070bba9e6f08214d53da20f09ea50541567415ea7b24b3027f59bf68c8bb858914af7fddfe6a3aa018a67af7c65a33c7225b04e723d0bd21ff76a6afb8d3ca8a9a7772c1f72ff78a8c94ddeb13cd371ee6d7886cf5b38946e4d081a70fb475b8569aaaefc5799b773c9e0de70d08be90d3499a99fbdc31e695de27787bba5a3e752b7b311224d3119cd19ec467a4b015a179426fd8cdfa59be798d461c2944f2e4461d80e9a98499979d5e3c916aaad820ac2dd05d16e608c79fa595476c0906c178a85e6823f843701fbc1f59bf027099fbe7dac41d0b8c889bc4d44ee81b44df4580b20c9ad1ec0088fac0ef62a0fed24f7dc4cc2fb7aba41bed1160ee4afe95e811a9662708cf0f0534d4f5b30f2e64a79ff42c2483848c650166f9568f7189b398ada635e87340282edc1ea81e85e23b8b37b20755f92ff068ed5468495bd705b7dc28b82bd70435ca3293a3b59c88d6b148a26a7c22d4499e4aa3777bd56c148745c316607cba9041c4ba8005fadf294dc9d275e203927205056fa122ad2651e557700ba4a0eb21aa8f2fe60d12c4962f86fed97385e16afd662ecf6e881749f67538b76287d56cdeef957c22b3139093947d7328882b5cdc6fcf9e01f9e850c7d9940f855d0e605fcae62d3c4756f5e5dd9f9b5881755c4d8079efba410792c5a3a13b8295161b916133f615275d317b264c434dd16d83a2c5859a1f842b43d81416edc3ae14deecbbc6beb33621b9fc3aba9d2443a4e6923f5e6e41408eda4b2af7f417b3741764fa324d02f739a1b0dd7a6b61853527b4a298f94be16cf972e2550417d124dc04005d110ef86c08287065d5f5d1561777794f78cd95de31513f3838cf10568b23d89ab8170345a8c1002e2f69061fc402e7f0f332406642df71589849408517ea68d4d03f29921d93c0137f9a76a89d9c1abcec36cd5886fbe75a931537bdbbd7afe9fc2e37f4f81d02d63ff52e19a6d6f85f86d62eb499131a919a58f40d36eb3c83fc1e4c57d9510671affecb8e7690dfc03084fcaad6f85a39e631557a484f342c9c17ba9255fc52dd5c8e9f65748b2f484191090bfcbe391849c19a38c7a0bed4910b20863d135d28c1caba429677412e06c23e228a353dfcdeb22d5bfd71a63c1724ad25f6dc9cc8a8756b8e5840cb4fd4607041618abff02ea7c7f8971daec8b10025257099ea27c4fecfb00c9774cce098f6168ce15615efe8aa6ec82c136ca93e6d7ba57e6a00a1d5b33d32c4938d0c87096f08d3263620efe5a74ec96e01a40dc5ea0e04755984e9690b121ba6cfa1af5a0f428bd415a34dab80aaf12ca4e43337b3294d33189d039f7a66c15c75484ea8c40fde16527c1d6659e493b538d1006ba89185616298dcbbeda58f418f02754cc30e416bdae781697a05f9a09edf288012cb8004c5683fc190cd4294bece2feb5928519cd00671f98b1d3c7533e4137a7f5bff4eb3a212bb257ac1478602c27984ae60bb793e0fbcda2ec18c79153cebbe93b15784eeb2d275095837cd471264bf80761b48eb3c6fe57a37590b44116ab23b1b6b7a76f6650874609ca41551bba8ee4266f9f66348a3851f0fcae725c1c8a9757cf15e36f815e9a52794ccc663af4d9a092e0ebdd37f40d3e3ad313f53dd3af43c14ea0e0399170ca3583fc0689bf33853ce1309b09d269369d65d222abac736738926d3eab0160c4f1c47f8c429c43806c74968513681d539d163319334f2d95da3f720827f0c4083f1903390efb3959c8f97902dd0440d0a4b22349c440b3b9512244d0c10bd673514cc4ec5d946ea8b7252635a5381eb9bce4d1ed7568a9fdad59fb927486762b82037c733a15e26bca1e819219486e1ccaca1015ddfcac49355cb1fa3002c1d8e89459870fb8f006dea98acd5edc6a1525f7e25d51929d3013acbb760e5e0bd7f412290cc3f84b41ed8ac0958b9b2846299913807e9cb0850316746fb50bac24f1cdd9f6a8a0839815e030190fed2429a530c01bc59724e26377aa86bf6cb2a7d7d3e07ee90c7efb4110328725259c8fd3e151e4a40858f2c74e4e1cb08a49c300c30d176d1c94f11133a133bfec6a768c9233043b8fe2de46f3fb297837d5ce6cb036b33aad3b3ff087be7bb248f8d2796ba1866f7e1f9d1a28f91c001b8733dadd13a1ff2afdd7dc7b78edd108b3f686a5e2392f67e5a81a2d73ad99ea1c3e28b3bb60f7d8e88322b3e1bc92cac958fc2fb157ea156f4d19f025d87efbdc1cee5cf97a480e3ec60a9e92ba94db1ccd3ff73376377650d161f454ff09b2acc074b72a3d6955c9e3b44731b6d86dbcf04affb346e2f49dd001c7a74dc86651a50b03a2d9a774255fe6ebd66204a0ac308c3ab2a55e2fd3973b2079eded3769b2c1b98c1a84a92815067e8f774a7640dc4b6e03b8c9f443740d5093dfc2c02d459af1f4351fe07232383e39b975e0fb3ffc5d108d74b356922eb363f43addf1e838309c7bbfbce1ae4cba1e2e68d891302a55a24db72796b8c00674e55191594435cb55d5faf5067de865a7715cf90bb5fa005170f99ab0614040538d4cb200738f4c095012f374c493e67d91a5197e51468a5229633476b6e806c3c11fc17f838473463b0658c9fd5319a71af551d34417e4916381e9432a84efde20aafe6273c67a91ab505cd6bb1439d4b3baf9fc51a84d8070b7ad885597d3571a2555ff3959a3d3144fec942e62658a28a527eae3363ae302fc9118100a2f2b29fd4869978b48a7e3abe3546536fd72f0d2b0679a914943b58b7df350b504344999838ab632b0c09d791ace77968ba435aded173a8820501ced83a4a43ed324b83d66e7ca22a0016f8475d88948e188f02d70b7b90afed02e868202125d9e1f9b15e21ccb40c06bce591de9eb29cfc64705a52f705b4eb321ef6d806c17bf0f3ff8d40c222f780f72b7e7c1e1d0fc9d83e2db94eb026b803a5e87878b92efed14cdc3ca75fe2ccd0e9e39ea9c538e23deadcabc2dc5ae526bf0112a6e4eec377ea9a98fdeacff21ae7815b543f2d29ac7dce63e5075356210b5b711d2a2b667809ec75b1f4ea967e552e3e49ee24867072ec1ddf47eab60fd949c6ec7b7e918f88bdaeb870dd95b4f621805210eece080578a02a41961b3da9515eb61df05c561b7725218e3fa2514a92fc267251d340f2e9b9507dc1ad1936bea06d3b81bbb81a572c0514c57cba5710880cc5916a9cce089d69a0250919c04fdf99f2491837d53ae457428077c863247b5479f2b3b59c4291440a75943ba702ed6bab80a430a27baa6f186424098684da5acff62423e5221b032566a534139aee34bd5bf1765c7e915a57e5830a1b1d310033a7d17d3bc0d62001c9760fe135468ffdaffd62e4b1597305f37fd9ea804ffabfc218f06046bf39018ef13f53d554499082297b80a55535c4a8192fe2749e43bf57d955d610dcb58d186617dfea892de5093083703d3b56adc057a0a86b11a1f2b620d003e7d2c0590f19044a65e5daf2506a6caba8ea8f617dc75841d2949480f52a4ddd83b3d37bb49d2e98e3e5111187b982d97c0447f4a7a113f92a4e6a8f453bb23ee481464402803e1494333d9c2437ce54235026e4b74dadebe6b2a76eb04aeeb26cb069a2b3882379456245dc4083f92ed47403778cd8c22627557a6e57de06a54bb3ff1eef6420045cf2aba353307999c99bcf8151b2532b609c41c2ff8368320b308c87c93c16ea900f5440008b4b830db86620d0ab4ad6cc8f7df879e76e9fc7290038d5b51b1b2aedffd1170085295d0a1ad65e8a55b52739fa524fbc3e011608e50578aa09123340f2a6c6ec640acaf862ad4762beeaf38c409fd4380765b346fcaae3af2ec1cd40e32c1cc36f045c18ad3cb45f6f0b47b1630c2ccbf211ac4812a0b92b2c1562605bfe0a4a010b031d9859eb2f2c08bafb04a6fb7ed3faf3c9b3f47683335b0f06d59c2b121430b0039f3eef3d71826857b5ad643f6c1ae65066d637e30c8b7d0dcbb809aae68da17d8fefd51ede72c31ae05d3d2203fa5e7f06ce63c6370d7cbaafa5bdd14bc406457a301f91e8e837de2c6a6e18e767b7d4bbe2002138e4dd836feb78d1f0aceaa735c08b07747cacb592515642132efef3b3037fe5218ac7988d5b6d150374cb57e50eb0b1efa335e05e0be9ec52ce3b12a7f7f44116f758fbdc9fcee665e3bbe6da45609cda02e11afe6faf55ab06c885b289b8c520cc6961497441361ccc72547eca4ccc8a85b6acce8e7ad93b07e155d06f282c0fad64b15245dc7a0dae557599b05f9f4beb1b09405dfee97917f502acccb9a63f3a1a4175b5cb6ef96b66be25169c2e4ff683239bd2d5300514ad6a0be8493b14e721306c233bce3076bf31e1326dbf9159bdeb6684ded56ec1682f2d3cef0c056df2d3451f8a3a2f50b7fe1f3ea219ab2d63f29d212ee7f7250d9f14d95a5338e8e7735b1eb0b3d82b53934639370e560129f7d789f6ea1948a34a362a14ef3d74a16ff682530aaf751377f9e51c585aacbe97c1b0c9b0c978b93352bff70e3376d07ff4691933a88ecfe9a567549d1ec99ccca674403f5a91b39cf5214c03189d049bf7bec642be5dd028d027e35d536e6d76f758dfb995615f4c85251d2e24bb46ef6a050b8b22c3ce03b1a95a5b7c3eb2e680c32216268a266c794884c50de4025e1626878baf2b1c6d6c8bb034fe68e6c4947c39b12c5a496eb03d03053cdd8981b7c7141a7ebe3c371a2eb2b3fc2951a3dfb787f77fe15b7413d1e1bf0135c6ac189ac272d7fccdc16df0bf5241a06b18484b6809e9d7ed3bbe09bc6b038be8b62d33848e55487f4ee7923a6cd41c52e54a61a02eaa7168d16a632f2b298ecedd947725cd022c090e5e61498d529e443f0c481f7ecb3972ca240c032f3be9410a6fbec75115cfbc801a2e5ff53dc8280d2f68760c68240eed2ace16fd1618ed004055846dba422ae23dfb8889e680154df2a6e7e4b64037e1593a06b2118290dcf47770150491c2ff2a9e38294eb568c3afe3fc359c2e85aa080ff44c3298f1dcf828a3da96a1dd84f1345e41c45c7313091e8a56d65bc710f59f3a720ac23cb3d78d05e14102029257d1a524083bf24ed5985ca5f4b0732d6cbb2c6806f475428cede69709aa6e2d1b0f2f32e7bbde2523c3c42499165a9615cc2e7c33fdaa4ee7e8e87237c531948f718574cf8126183348b21dca1e0b332cf73fb72eba76d4d4cbe1dc0fd11bf6bf43e3a8902ce5d84d0dd18786b63588cfe5f14b370bbe49f7cffe4ad9943f84c3b1509d60ff2ce8b1ec7f3f3d32ec9cc464cb1d081be2595f572cf9abec6eebd0eb4a2deeaf47d727e4745ce51b3c49630aecab02d306d503a93922d261f6af5e784fe6efe9d4b2889562a1ed8cecc3dc43658b2bc078357f83d0982ac7e4e8d6bc775626cfd81a543153592e79636974577a2027af517184ab4b0a83b28de16886118e34e527f0604aeb97bcb622a14783338818a449318b96676b96143660e8e68edf124e29b5f2191567e0cff9c8394d291e24266c172446ce92f52a5403c87607b837c101219386efaf43ed8363ce8bf3362c1fb3f3a1b05cba0bb70679c33f439173358fc4f4b0defd1fbcd460c21aa251042e12eefdaac187cbe2509e44983dba90daaa9f02d5424ed1dba6a028f06117000d592ac65b5480960bcb19d83e0049c6680af325207be3ab317320f8035a0f3ef6b0b1371d1dfabd08aaf3aae6ab75fc273ea73004fae87854743f6a249e8b17b183654283d37685fa6607597058b8b678503b4d198cac92e010ea5123a72d098a2630edec6d02a2e27030159d8939fcd4898b28307060c3755e6e6ce1df3e273b56de1ae9165e9f3e775c03e099744f14d1af4a188570a2a751e301f6764b2866583ef0577e72eda194472a9ab0d54971116af59f2507b5e9c0d592bf9b40332359b4e607369fe5bf3814587b3f4d6370494f292dd1a3578f731ea5103a652b7fe5337acf79f1fa70b4a82fc28db4520abbaa6981d883709afff95191300127a7882bec3a990b79733a81e5200c6ac57ba2867863015bb0921c07bae40f8a31814d87e213c5447ef816b1870b71006f033bfe14b5b037e1cda6b3e945358c1c97f35cf5db2a917529d0e9b502484c25451dfb40d825cf99bf3e122630a7571619f351cc988f0a4549aa3c9d7ec5de25587202f46b1f7b7d3e66432f8e078b2689c9aea041027782e9bebc1f15b9a17c0de3139fa075538d490f59b89440791051d75887da2a892a7bd36cae79345c1357340a79e0910f90b48acfbe4aa9dc2d03d9a2b7ef37f70199dfefb48770f3eac69b55f7d05f0a18891cade1b4077538b4039bb623b0b1fcc97b1f757908052d0a6df76432f84377ba7087698e9841114b403acf5415deb6673120396b716606ee23f54e9e81562751d7cfd9e832e01cb2c0bed2b1eacaeca766a97315483abad781c792d278e94dd9cecad727084a26bb24a42fca18b7672e6e893d78bc20871abf6c4b73de1e99c74a5cc840d197113812724b7d8f95c513dfa076b3d6fbf5e4bf55fb37e4d678470bfd57d198b3251012432b929fe94a4aaf01bdef22baf295c3de1f50a055b1e12ae9e1359ccd297ea6d69949c0a228089f758390e31ec340e7b964b7d58f9888a11b37f50c1e1d1216b910546bd9b8249708f32ab69689d5110a6a60c32d4f4215974f00b5163442aea9669db9bb677b2ba4043c890f0f28d089890a9174294c10acdd47b0cd1422424b4d5860a92bf6f30ee0d1f4e8eff47ab168407938a54c68c2ad370c77334a1d84577f93f2d3b1ef02b92aa9cab4c92643c545763a23826d1892de88bf2efc675ca76c0ffe5e3ff8d7cda04915dad357fc0db2369b85128dfdea57e9251d3e0a23410f1fc5259fa8e5a9d0dcde99ced0604ffbcbc9018b3db0a7a9d36326dd0afd0e74d87ad8af132bbff13343fef9134c8428c84fce9086183add1c2b194c2682ef02d578a0da8e62ff8df85eba69c016b739a1aafcff4c4f54b87a3a0bc276cee2818c68fc3ac557ee7416393df40db820210d10a0c0e8c426e77b9700f48d1c23372363a65f6ae46a5d82dd4bebd93d44fde397243dcd1adea8bab70d3a67fea6e9371ebe9685ba22f40429e4666a902b1605ebc6dc7770921741ed38ce97e450fb89b6040fa63d5c668dc662980b105df3ddc982257124a255e1431c71f47b9a8e9c323c9ba86bec06dfe7ee7755cc4fd28e0d247c27b423d43d323a1b60734fec82506101373c612ddad3aabc7cc79cc554fca87d6b3b47891f9e272111abe2c9408319506bc7cbd4ccdbee625c698ac400e9a02f2e36b525d1b0287dfef18dc0a1f9bddcc496894e205a8c7241d26b15498238460c93b9d54807308a12fc74b94ea35e8959b5cb4d80af29de50490bf49e1603ee15e66a519d801fe936f4578c16d4b404f78f27422970c177a4d87d8befc931b6b5d8f2b50b2414170a2bf47dde4b582122c521ce483299f8d0b4145b971007bc6a4b9982dc1a0e7913f92a4eb12cb2a6143eefdb27b9428d3c992bdaa220831a61dbf8972cb31a6238257892d6fe030ee27b451bf5cbf266b851d62c80df9fc24d8064ad28fd1aabe7ec33f8636b83f830b1d441a1dc0cfb655229656109e7cf56ff426d907f383d54b7e8b77dc558dddd0c16443ffda07a477c1122193bedd17f0454967a142918a4946b90f75a7071aaab03b5ec89afbdead6f3f67a0720b1fd2c99687519b64b048ab13cd13ac74f5ec4a2b622d8d0e1388cc659cb0007d01afd115808c8871665f15dedfca02e7dd177210dbff0d20c36a1d4dbaaae648b6d48b8fdb5c628d36ee737610100f1073e12d8b70aa9f9ff3a8985e5cd4f4bd79cf83513074c2b45032bde07b22731403052b8419dd1803a74781b7331ce0659cc6d3dd7e5c29f03360fc05c14301b3f53d7d988fd71a348a4a0a776a3708d0557e7377ecebd984f8e7b6e3a59573811a0b609d28b2a137947488a4cdfa0ed6f98fc7c63970c2ec7cf7581841bc2d774838bc6aef836c3a24dcc70e5e629548470ef45f5657288254eaaadc346600edcb3d078c6596730a35189833bc037dfffd06457dd29bb80bd2369f24f068dd9ae012540de432230f8846e301ce4fb085e970c8bc3e30daded87fc12b0225179b4bb1fc0e03c3c736198a7efcd32a4ef2d043a642fcc7313ed873336edf8ef41abbf5bb82f6666ab60cbd64f5daf9af8cc24b5badb419e3001cf98f2d6365011e9fd5724d06a4db46a07c7e320e5ec776eb2698dd055e220586a392a466e77d539af3e1edc875288d19e735ef086426af589e1e92075851ca64bca470102c773e4732be56cb5f5eff6a4618a3ab232547b60d7f31da8ae29b7cdaae68666a966d6f103e4e0b459f9849f53495bd563e3ab61c41267e939078996c1ff16875059425d1f7e21fbd72e1bc23ca82d44c4621cfac844358fd23ba986f81718e7cf53237398c2c15694f46cf3632595c2f1753fa56980d300761bf1010d47545b466bc7cf0915f996b6335cc4c7fe23e5bf21b59ed558b8882982fdbc4bcc0e230d7103dc7d51e1d957ad92dbdd7bd46b80ce196dd00f8dac512725bdcdeea6bdf678a3e77e0b36accb44f75b23343903d68b39639608096d7e0fd941374f1691324fa7e6a5c7ad89fff086fb5160a9ef7366dafd082c68887d8a808276f7504fef460af7b0823444a2a30a6257ff588bf8075add929c262c7fb4e9837b7503fded41fc4e3eaf4ebede1718905522c60e18033fbc5b0701c79400a97391c87f0604b26b9ddf23184b0d74283e008e22ae17b27fe4296c0401050ac0e1556e7c069f033213f196fb1c141480439ba875005fc2cd0dd0ffcbfc5e109ff36104964b2a8f85497023e534dbdd50233ca9a54e93f40a6add13b69a391bc6ff243b0c78052b5ce4a827f3def88abf005856bfdb129a39d199dcc589b2be190ff508cdc8dc3e439b00473941404a0492ea2d95f0fbb944078288f204f42e0000000000000000d2cf92dfe685660efd09f2d12328b6d4b3833137dce6988fd0dbd21181ac2f827736607cf0ff13a942b92975e1591b5d15cf81ff6095652a36c1a1d6c29d2a2f00", + // Issue: finalize "0400000018e646c01fbe9fabaea1229bf5929eee72f85d2365e3e33d8d23dadd327e52ecd605360ac681ebec116532d82473ff1fe9df07f26dba25db1bf4fcf3a7970f99a6605142b74e9df537a667fdbe1eb38f2e306ebe5bb400b190b01a1398ee9d5122254a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025400ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000400000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102628d75cbbd65077f6e386c9ec636b25b23871bdf31fbfe21c2aca23bf49d6f0a02e83ddfd6cacdd64c1bcbe46a9a974425a46230b5541a4e9e0a31b4e0568c3426a990d52ebe770479935b39a1e9f423e75065b7f90f28fb6839f54c71d2b10f24c25a78000b6b255e7bff5d96d0fd99af36040de2ef941a135b35613297151777beae4706defb39cfc0a85ae8c2527fa0eb74dbe18598edc121d30e657d60379bd5ba3324ee10bbbd99fc44bf1515017b080895255819f51381a46623503e46d95a700ba7f5d1ccbaf58b894e33e73e658fffbcd026ef1325863ae58916caf2b0278893c10e2517fca0c137b9197b709f66cfb40c4e688303d352a1aa269f45688d19023f08aee0e0000945332b411b37b4bdd5a3b84cf7ec9a8efc760bacaa50748a6c7f06fed192d384b4784c96c2002e5822da378fc8594996e61e12e6135f42cad1568d50ecc4105cf88c02e7ce22284d02ca32cd9f94d3eba6a5e462a2ece6e1fa9384618e52cfe2982bd8aaf7d9d1cd5516d810d264cfb453844c57709d3f1bbdfc1d439c93a13d49ea3ac22efdd90fa2ae9eb0073f74b54488788be98ee8f4f9a53358e4884c3d1b831d70244b5f937ff0a585771f5b71362d871904e4aa7c58bf762a875386db9c9e022d6a5d52be192b02fd5de105ca6f3ae78be51aefddb1d09d5864efe2e6c57fcf9406962aa0ac605d94854fb40bb529533408ebed13dace74702a9d3b674b3d1f77704035d156742e602cf6faaba258f2d74cd6c2ab38c747ca5b6cd53375568aefcf50097788c49b1b93a551e13df4b39d07b38d04cd4949eb4b3404390e665fbf4c7a291aa608821dcff237710ee35334a8f2c91546177c667c1a3a261a8bdfd73a25bbd4df5d9ec133dc56ca7b0212a8e106239404cece3f196d82d58f97c749f147941ca9ac36e5a203b28828b00ab1b664dac93fcf6f1fdd8f9bbb6a81b5a270bf16914663bf2329090cca86222769117c6ecb89256762d529fcb00fb8677fba1eb6781c1cc4ce0c375a7991e29d79e8aa0fd9b6dfc389ffaae2576ef70dfb61084c06f7cca65ff71d130e2aa232a9e087e1199a781466f3087ec609d7ae57658d1a6bdf3f948bd44ec0d1b8a569bd0b0273d518d47e2df295cc3a740075b2aacea9cb6673e6a6b9a53b5e9e4f9fadbfcf1f95be41f5a46e31c4660a392a548c74d57421d10cc0c73518ace975eb39ff4345efab215da258d4ffe5b5f984f4745c4356bd1439e71a34d713a06954cef06738717e9d7d6ddfbce8289278b385e9f562501dd52323f90ec24f4d7ab3aa5488085ce2344fd3860ad6d01a6aaecb7ca902e6055034f63d40411c6f0c95d5777650d0320b8a27f0c8100f37e52ee66d437a622f1b12bd510f41546bd882c2a87857bf4b47804d0390cbd1215a8a1bb5680a8a30228ba6642cd67545879233ecb410270123fb8dc337f5a78b3adcb2145e38d112031d8a146b6ca360d6816768783b66cb654258d91d05e33330495433d398b1ee2acd96bb1f1671f9770912c292cd652805a372b5ebf3216020cd010b3c9f7b48ec601caa667b0ce6bc6e98e98db26d2fee3ee44849ccaf78be2f197f5e48ad2b74a21b7e39f9a26c442d921fb980e28fc9b6ffec0eb4656e89eaff62f05258f3834de459eb2066dbfd876d7652b6b0671bbe5a38040a6a1f58fe7806990cb83bc7f891f7d3d3c311af305ab94ca460ec0928bc7433d4a8db0d4d3fa0ee6cb181e6877d62f9a1a9eb5c786764515a9c2a8fca74579c12f44eab040755c72548393577f8ad01357dd54a29681156f3f3a5102c86a217ed375d685aa46775f33bafd7e4e8986f0a6c21bc8601fe924ba2668dc67bc6dcd681639aa574229713cdebd19399b6d163475355ab952c276c79723b529958b2e49544b171b2aa9cac58d1d98cf8072da9bba9caef899488eacc1dd5febad0f1714a0ddc43c75bc770268e15fd22a59c16b7f5a016f6a1fdf2100b6b6455173d121dde17b8ff78020df4a0eb45bb3212862f56ad9b109fdb7e024340236f7bf8bfa6daa22e1993beccca4cc7883de89a890c19ec2d32ea4e3cb086dcd445f62847d0d44663bef82fe09f8c697d047af9ae3b53644c53ffdf3215038b3ed0ab0270c33db0a797b94a5b2df87c4dad0c937f1eff4b66ee74344ff14e8a7e86ac60c6ed6d0cab5db526f8ef46caf86bad6ef0cc0d39d2b93da5d87cda084bc8d73c01cb0670fb179ede41b4b390f5a8ac29bb87aae9adbc43a68eeaaaa704b9242fce419a517eb3ab44b4703e978da93d8f1f6c0d66c8b53227f78b1446955739dc57fbcccda7c98bcb05dca08da25d931d22f036d87364e55c624e764e40d167ffacbb2c96b45ba7d3f221ec40d51860144e4acb53022c685e6365e2f268ef1307373e743d5f92040362a69fbf8a454f79e0e04d12afb814cd8e67d80b723915220000000000fde01c9d33ced835b15452fa086ad53391b28ccdf0210206e35239f3fee00ad88abaa582fa2d6cb945bd309ca0b5793dc4ce8014377b8fff43701b627cb1b471c1969a227a8b7785de0ded213899663962b4fda7351bced80a0d4ed2734ecc6e9b32aade990b7c2553b7b142ed387ae271902f1b7b864c6d00ccb105bbe9fc00377987593cda4a31bb93864a9b6e3173f865bd366b199d58aea08a8c22dfb0bd579f387df543c3cdaef1c9c30c79708e13f187c735ef6ccc20f0ed0d2dba1cf471cc8cc6410ffbf0acd2a351cd66deb1f15ef49f94db58e74f416546d214959d48ca387387de7f03705b18b9658e772b51c7a085e557d7cff376b051b1576f6d6df034a88157b73ff90edbfabe5185f994777e14e8812d70f4441a3ff8a5247382d6a9a09e6c709471169a89123e76e52e9b81aecd09eec6711b7b5206eebb5d6ee6940fc69b6d04fe1a281d2177dc3f587848828dac47a1a84c2a8df8452a945226b09bc0be5f0dd637565935c373149fcf100090258b1590beaa4c7f0743acc914185cac7fefae52f86be940c309e707a6720ab5a5994e35981487d98a65ff69e4b1521118a041ad029aa8046662a9c61a634977b5c2b8b38a7c5019c2302ab46c0c026b817ebe635f1df2ff168cbc3e964971f2f96e4ac8c3fe47b32a69733c8a95609fd059c68f35f7b9ba39ce38750ee23f6e94478f9f72517eb0e68f44ef2a18a2a56f876b4408486265da0927968551ef858df8dc5d66f43c6ed1611948220cdea7743ac2fad4b7812c85dc4ac201e3a7651906e2b67b669640f21a985f5329b45f5835c08f53cb34d28be4d5cbf3eb465f118733261d49237ca6abf24ed6102a8a56bd367144b64c58aec21c8d7a9274665c985a042854d6eeb7edf74206980d57f00664f963d096dd097d8c40cf647a1ad0fbe444df678716dd2df84957084de89bc07c44de3407838de5eef90f7bfdeab0d847436381d4ea87d06a2e6f0f02a1c8c34efb2bad3f1406f068d2a9a9ac6218fb29f130e0712ac653dd7042227ef36086e9e19e69813669c3818a9eeb44f29b6c8f7703ade77dee1d12e29a86283c6dca16436e90424e5065c5d2e1b0dfb91c6c3ab1658ee77bd7e037442c3e52c1bf2493cc243b226b017540ce22e50bd2a03ea5b80c6a439a06683c62218c132ee079872525c3e66071338029e3f77b04c471bb5bbcede40b15a733cd911af5b9b5bee02471a3c43734fed29fdeb18defaf0d3cd00cd1b8c6007dfa5482175a1ee329ad9a7ef173e8d83389687baed2ecf5aa4f48fae71254c971c9aea485aa0e0ad43d74e9c1cfccd171983adea2f080e1fc21f8650372d6b62722f8a8208c7694958c470a2a150d15c910bfbad94cc6c9e373a4c0d74b55a81f5e34302221024f212480fe7b1d6e354e42f4855f0eac896cd10f68898edf3dc2cdf1e03171d1fbdacbc9f1df99bdef1cb4e9db03250f9ffad6336991dfff8bb87ea0fe3b2abc368abd049f3d60d9d5459f2771375cce4c721bc8628443f34fbb6812e402e12950b4c9a107474ed6e18d16a00632932bd657d0c27b1fda1761b8c6af73b1f779196bbdeb0ce8f017c6f523c0e0c9a5a5db6284a82e1063b9675ee739ac1e66cf9516216c506aca35397fb5f7321adc10f5ec62c57b23ce65d5c62f91053cb136a73c2e22efe83940e058e76ba247619ac97e7ad09353960aff163f4ae1b0eebed1706e798b44582fafb4f399ff6107d9d3f9ab644d7641e218c727e1fb316dfe124b690c1b52a196d399ce8d998f25875a444181b718b08e5531bcd2b7a43c936de078cfdfb5d6851e9d13a44df864b0c85cb8a3f1162bd93df9d196c100d65294461647bd3690fb01f4e5ebe23f28f4c257b36222989403e776653183092b3e89eb2f065d85cac53c65d275fb84b3f98f1e40f567e80d7410c362c7ecbcbde4a58acb59beb6cf9156375b96e8f48f88e158184f75e5f485e1594bad2a2bb666c782f6dea4f851d1b3186c39d33ad156386a20d31a98018d7ee02a067d3395f56f37043e88daedf800a3a98a144707ba0416a42ac0b826a29d9661d5661652581af406783f6cabcee763d008a52ba885e5c67ba32697674f57dcf442c4940e18803cf5a521b47a66bfabf1e999fd629ab522e10917858143974d9a969a289d9365e4dda9241245617a417fbc3a9eca174145766a089740a2af58bee480846014ad0131e11be1a733b21ec896a3f54198f9abb4a5a75c00804527afeffe0cd2e722bb3d832f2484caea22a3ab6b0bf407fa5ef19a5257f1a5ce59ada0f30a697ab4c9e7611af3aa32640169df8a7de55759867d9c531dfdddf953a4a69f355f6d0802825ab7c877119183a1427324221efb21a0972a47cd0fe109a7e374907a804cb067335e5a6062e17f6e49ca89e3b97e51e161b1b008aeff386950f73b26d2c33a43589bcadd60a34b28596f55cb9ea075dc86b8280ec04f0a648167218a4f2474a7de0b09734b995d6514d6fee7aa97c57189e5405ada7340e91cd00c18cc40b4f2eb7442dbf62ec953e408367846385f49d3d70a197555128fde6c2bbc7ea69989167ab0577e54fe35c21116a2b1415afa9c5393307d4aa35076b231fbad904979b02643531a5c6c7b31166a282e766bd2c40e06bc3dea81cd0d6b1fbeb4d0cca3c683ae91ac194a6b20f86c226c2592720bdf8824cbc56b5af9c510eb5b63f96d7a3c53725f9da2922a02f96ef4ed1c64b6803a28220aeb34a58801b64dcd62f8ddd4877ffc69a5d7bce2f5fa4b285286cada881e9ee5d93b12cc26a54282cd295130f40883d3538d8f68e2c0df89fd38f6cb5a19635c75603832280c1913fdcfd1c9d6e341aa8b4c370c6ac73622cf73226200095c17859fff1c15489e9e517a7b431bbc7b55d1df74bd7f29cc79999162a1f3423f6db1f4a3f42200600abfff3ce451499b505f582becd1198a9bd16db506b0fd177aa5a840af1ff581335dc2fc61a3f9e4fef03eca500dbe8ae72e099d47d855c52c4c350a410f9bf185f8a5f23fd03afa8d8bb7ad2b6db8d0a42d1a7b6e2656d69723e5f9d737b1acf513a6159e668bae56bb1c8e809e25279c96f9583a3fdb7a19c440ecd019ce2bc868d8c9ec0ee5f1ef1850c4c9ef65effd348ad274ddbd6c8cd7e2e1e60f1cc46a5ec73afc177eb50d7b53fc0e45cc8eb59d3b6e5e481154323ae29090228c5ecfffadcc5c9836e0ce21b964d239c6ddee09ddda612ed389acefc1b17a1bf7c1a089b8c02065fafb52f83b0cba5e4a10d17378cb2c909082ab8ec20c433563856c2ce0009bbbb33b7ce3c75c82ce9fb5b7b6a2bb7b1ca4a37da4669e780c2050651506e07d6d8e4b60bdba0ec85faf408091ae587adc212d12199e008400a2c336d9cde2d50509984475a0ce3c79113b7a5a19a6bc9208ea70d5dd138c236cb6cac58390caba406ef27e5b6508f354eba435e2b2ab9d955448b6213d5700d0c04bb6f49a371a072d3f6a92ecf5a4aac3a22a656767171fc30f6feece961d13a55207169c28eac8d482331483aac6af319fabd2e64d2e00de7c423e77a20f71e9efdae5c0d2dfb75e7cf34db3b8a4ada40b2764db432d81844702149d7a1f5942c71729b5c231ac0f2939ee09980bfe4fe8b651e309e26d6d89f21ee19b0e749a734c2f51075010a378bb36778176ea1b47908650c5f303c22e51f84e132ae8127ca65fddb155974412b3bec41a87338423cc95c396f6b79090147513e03a4b831e885c4f095df6fc1509c1c9df24e88aa12a362e26f98eaa3a1c3d03990722aee6757b694167f28f447b5f19b74b7ce29ecc1adb1d4e92d8bf6fad0ac42f2d7470135d15dd19ba20f724a99f50fc36ba3e4f4662bf3dd49b838d73cad716241f26ceb686bc5ce30850148334c59ed31a42d9d192bc5d2d6e0e13982cbb1462950de625cbb78ec7a29fcc39e07940ad0656e6bf42074f70183e083944d319d57ce9ba51ff667c7693f683b9b55362e653b5842fc45ea1c164087b27437c306a07a65cd0a30ebe6aeaccdc5fce4ef90dbc15d5fe7f485184cd6afa307f7b349dff4719e647caa2cf427154a09f88fb3a5e6d5477bb95b56cc4b482e1803723a5ced54fbcd97fce3247e2d20f8e33d7fc5dde7df41d12172e047bbfeb52ce16c28678b92404c4525c382591de840d067cd20ed751de801eaba8845833aaa62c1b93145e09fe5043da1f67b45850d5ea581ad7381f2d9197d4ca6808e7e9590082630f105d0fd478a3caf7162c747dbab72fb564dc0611d81f8b0f29b214e9172edf0a308da2684b1b486b651c0cecfb766b8e03a463638aeb523f3cfcc3fe24fd264384e41b0ef6a2f31c4529350a6add828dbd7d4dccca51e4b57b436a7d32a333c62261f9a101ccd9266851c9c149bc14708cf913f8f19c5bf449e9a81509be0e781a64c5539967c6d88ce157d75d497d3edaef9ed30afc87bb5e2641cc38044422634a754a08f1c26b150c98e4a114d6c0d3a66ccb8cb48d94896c44810c7373fbb5a72ffc4886173f1c56e12572fd9da5d0ce6491aa7dc9e08b5dfe3b1ed85a2be19b0979facda123c29654c6665e756337a5997825e2ffbc5001b9640d1053b5d9f254a6332ef37edaf7270edf3c6ad41b2b33693a00de171b364d8004277f435a14f7ea77d367290a2e720fdf7614a6ee9f2b6a19c923ce2b98a02d2983f46ccb65a75103f885c3f7e7a0e176aa91756546703ab0e313412b2464bb1d9636dbac20014b517909e42a747d8f12e385aafaa617f86a48c15a577e568925a3a2dbc8c2f73aa3804c65b0a5f16952b29af0d13a7a5976b13a22c1e13f8a17df3aec990aa095e57c8353dc8b2bb6df6fd01903a57dd58cba72cce472620a3a3a8c024fb8f011cd03053f251f6eb37de3cf42325f65ee656a3e19d9413ba52653c22bdc151f2e5abcad2073e0a72d7bfba20e3350b807b1c5844634379b8914e4b964a409b3adafa6055a061b531f1f76e17cd26dd85312362d5a6d18b78b0c59bfca912e46b8cc8bdb3947597a0d389134b0d8bbe73f4056abf0bf8356a91060ede6ce78ddb3fc1bbe8b77298edf7270e9fbe49c0f006ef96e35b4ae351006465e7656b1bf3c5f3ffb87e7b3e2212895ffa8b783784178d06ef43b31875a0bff7337285abc311b5652b8e7af4d5ce7229e0d315e70f6d1a67d791d61e61d1bb5f4ca9e1d65da1b31a1d1a464e74e1e0f97db1d02668f51b1e9305b82e8523e7d136ef1329c30026ab8be15ff98a2c3c6aaa1108633ae3369eb6aec93d3f12fd5d44fd4109436fe88930f940a82748f2e13408464bbc0ae53782fc80c3a0f2252b3599cd4329595707335bc1fae0f9f2d6185fa5ea32266477bd87c8d66b806eb6ee05d764cf2c0d72698dc8d385016bf86fcc63e12d4cee22f4f809b6b8d301044c9dcfe8c7493b7720ebc5f1fde308b3dcf12371c7139fdaf677ed843f62f7d4cdf512533dc6ae5a21f1a321cc0fdfa1d9c9052c57059dddac4f37e6cf531725bba7aa8a0218979d6a3cb681f41ea5ab5aa54509ec207ab559a96d30a8b0454d11c34987bc3370029eb879e489c9b052e31eab2b25c7b7d1f10e7d2e621214031b7b949a1a9e60679dd5a7b0d4d98bd69778522dd57b7958a1af59b71212d0ce00763f10096afde3fe9c39209cd2a10cc33e142c1165c7da0663271523d154ce52e36e143ce7d51845c63fca3e41d006a22677f3dc3d26d7e7945ec3d6d1f8dc942a07a0056edd7655c7b46598c6c5f78368ae645f04ae74b33ff8c93b13560da37baf52b2ab2fd0bba14db5134645bc9a9d25f3fa527b296b5ad7ff64f03731a661bbb62817a6017c166a88e9b85fb3e6a3a9f3aff9cd7dca945b3f6602f0ac575fe2fc390b411bcfda53eb6679d4e3ba96bcde3a8f7609c8b21867af5234040f3e3a768514662db65c386e4f191dce3cbed8f7dab97ba93216a78e1e71ba68e3b99a503caaa872252f8d138bd067a5bc8c662810f21947e165d140b793f825d1601842c7ad6429165a281039fbf92939065115fd2947ed0507d5a304912a5582a2baac9f7a0863cc0b2e24c2de916fbfc8bbf4198e79536902c772e4b1f8f517fa913575b85fa2e51ec59f9b505d3d3dddd9763ea76476126ba14a47d1365256c9bde29fb77afbf663fd5ba407db715cd7532903002b84bfbd3dfd72632c3694f298177da690dc16ada4f5f7d087f4f5c9660f483ea6bc0d18e00cc56112fe56cd5362693ea52d048b41912312444058e9341962e1845f5a3dc3d913b22ba9824b17e465e2b1a8f331979dd1b4f645ac87b48e048e2ea0b6ebdf22c762bfc8747522fb0bff296344d87b44db8370725fd4e360387c248143e4f4a23fc25dbbb0bbb4df1ecff10b90e04ecc993dc5d23882feb008387acd7b79217a8500c9b9395b1e7126db1df3b41cb4c0b772bb7b2df6aa8ffc1785efbca925caa67171c238992760f81cf06b943f5aff5752e8ad5c6f430dc003322160e6ac808a41e666f118b20cc46288157ded4dd3217c772f1462a3aaab27b96808f5066cb34189537cb21d1df3a6f7865dbacd8e262da965683d4b58b2cc011d1c4ae9becc3146cfed8747fb175585081607aa0fda7e894bea589bbf44e9b5e54d7e31aa8c9061ffcb9d0051dc9dfd450aacdc2c3099f6cfbcd045b2d5ad1a8736c7cee6d2d1f1140c814653646ce20124026ad5b621d6adce633b21ef696f8393070d245d81c4f65ed1e5247141c6f95294e47c33118714d0ef18022cfedbcde5b038023ec0f51879947bd60fc09b14395e79ed8493973e46b5dbbd6e628c435bec7a3803b33976addd0c62a9594fd93b1a666794c1cbb74dfbdec622d0f8e42cad0d89d1f1f7363f1ba7c3fd1213298ca31464e0e8bb64f27dc4f1b352183d4759d3c99f224e7329a7b555f5208b0c31314077b3ec467a1a14fa7820e69c631f864f18d9734fa4e7c8949ab6489e6488172cedfe04536b33b2dd7b29c165d0030a12bbd470d4faba21a026a52ecc1ce10bc2db53b3ad8752d13dd3d0fea6742b25addb8250d4ca04b128285604e76c77c7281833bf30fd9bfc68fd6ae1805170ee9a2ccac0dc261cfdd0a59755a3f46147806f3ab005c44209bcd15869b764aeacd7673622d0764a8f47adf8dadc63a5a9ec3e25ff84fa74b8f05d84d4a7fecaa5215e8640952c3d0ca9ee88ece1f682a7ded5097412f9e38cd6162aca62da3047337e1a409d7079b1540c7225ad097a3c8fdf708da7364ae079186f384709d5c415395f8374f7418d176bd8fecaf2516f683fb0d915069bd14061b1f364301f4e3b5a5e3208d4b55de8640c1ac3b0108f6903eb14a76e698e1094646bee5d91dfc8d850036258402214c9be7a692eac0b7e9a8bee20d423ff0bf00a7443c1c8115fe5a3901fb7f307f41fd9d1f7600048937fe7dac93484dbc2cae522df70650f98f79c3246801e5491a349462900c95204f291f4bbba1ac71360f9f3e2b53b95702a0200408557ca6c47c02a576440447a2362544fbfbd41ef3761b834f5e3c88f0971d2e9c8182d9057b3b6d5ced2b3d641878ae8329b08811269a44500266fc45f4a4153cef3a409fa879b8d749311813654b93319a07d52134d1017dedb010069177251d319ddedc39b72081061a95c1acab0dd3fdd205a354c200ce467d2e0dad57266c8b474cc8cfe1a8d2ea3561c55be3a6403ec6cd0d03014b7b82506aa064e035443d9c52f9e5bfcc0fbde73c67e16dae99a2a8cc851b8004dd6e963289621d08e07363fed595bcfb07c4e73ff9d16a3969096c99c671f22f276d6c6788f6111e5c25aa92481c85c8d0a083de5129e1738d68647b64b6b8508cf6a88096b0a810f738c40352cde8e42826b323acd8499372111bf4444af1ad8ea10d93560516232e96f2d8128125fb6a56ab31f5743ffe1dc33572694b5f2c75857209bc671b0a13674e5eb5babaa272a1462d4592a4d9083b02807c14390d12c7bc9f6542ee1ca053dd69f3d1694a14c2d387d8819f5c8c6b84a61c8bb25c6f3dcdccce137334dd73c498888ab52058e6756a927953ed8d115068672609d603acd65c1098b916530a2a05612d275d417115a3fdc8ebd58e742509dd5576ce4086eb50ad75cf1f39b1753b11be245d62cce3d623fb09dd18a335c51c24f48059735315e146aa2976a212c622594a5000ebf49540c4707996fbd2126996adeaeeff706e7edd0a1cbc2cb477c1b4854f8128123ea22d7b1a6ac7c992f0231ad040acebec0a836130aa1bb042d72f9f8981d13bb5732519c4f641a9924ca94a86d33c0703cc05e31245043952d228ba38b1947c51745747e176bd92ed9ed543eb979a0c3b4048df2b442eb0927345749edbef3ea6540dd27e964c40de5a915aef237487b45cd9992bc7776e4b87ba84d3f3d4045cf2bbd5836e5e77a37a4530e54076fde125ad2e22736f3357c44a7428bee6d9954d46c821a7c9daee50be5e9099d02ac1bf6c242af96f8165f21657247bcfc5c1a7ac53216515e70f35141533afe2bd4c9a29ca274b97bcc71d2701827d279eaf92ddbf2f3b9f6a2ce5f2467aa6bdd424cb6d2633366e9341f95c7f36f155bdd275e765e30c5f47a44508300ca2c4cb1dc19c3c3fb1a6d9e54e9ba4d3903222f41ef1e9d23c49d4bcff56bff68bd473a65f2dfb0c08bb44be42210098767169eb91580892e044d81e3b8de0c9720213d8f6a44427cdd11d0be1ef59213eb9f0a7f60fe2b3fcfc07a4bcc253efa4225dd8d7df1d28e42913f74430422e5d987d850b3e8eef322cdb0a0f844cf1340bd9dcb06836302d1dae0b1379b4a8ae8a363460544892fe846165822aaf8bbad5d2f3e142792fa3ab569cf9c3999f4eff3b3a351c7d5146a1931ecc5281ad3ede14812bf1db047c46913890bcd0a047fe6292ed70f8a27f578c8c9fdbbb9835fc23135dc798080f3f7183dbdcae52c8ebdffae5089444b5c59c27fb454d5accd94e5bc371e12ad1c8bc114345fe87bd6804e83f6662349e325ae07aa8f3f3157268622ea60b10b80fbb52ab3f29a51768f7937cbdadbaf3f9d95537310e831a561f9d005887999f1ade67c69eb7f70e041924627b288b39f355f06f30b74b569a5156adf03435bf6df0035ce927753d58774780655114d36b8e9ae8b5ac6feaa600656927770c2fdd45b8f005298379124faf12a07bc1dee666e5d868d243289f79cd14201e2fbfe865de6e2ba4da15210b9524eec6c0f6caca6650a8f3f2ae6fe60c12a92c2c6b94e98a45f4f3c82dbdbe324a72b2516af0215e01418ae9389f8f668315a53498438b590ded4941999d9f537a32b83458eb63ad0146f5f28ac4c571fd3dc58c68b3391a16328ec89712e5ed42565507b638810f1edfc93f66f6cd4413147b210b1127e8b487282a92474a22316dc51e38c21d31578d489084e3e01481b1881d7ab856ca8622233da9eab7aa436bc8982b9220b3e22cdcf99be86e5cb8cd8a9bc60ddca60ca26ced3e01e069026b5125f32f82901f05caf68214faf25d3fbaa25df0d4077620d684a73552319a65694a08c0bc30b1e312dea1e56c7040150f2de80771009b06c692bcd8f36371966cb022ec8298d55498b1cc2053a6e08b3a9163ffb5a18d5f06671caeed00fe62aeba50c97c3924e49c2070b6493778c71790dc7af7c9e624284e67ee8b4ed2c7aeba16cbef34de819268a0e27191c1cc4501e43a03c1558cfb6e3ec26cc27ef014316abf8a387f07678b9d9f1995968ec4a5942f83d4ae6fc6d936ea5b8e7a28e37b10a2fd1fb4db9fc5ff3dc41fe10cc3b8dcfa8f73f1d21fbde24a8af1f3d69d869d99fe37bf84de52ec96f3be16163f8c858fa7b1abccaf310d3ca4791c078932cca7bdd4f4e936475a5b094a68fc700e818600ad9511fff642f9e417b63cbddfb64fa1860cc4c364807f491e437ed315b54b9ca9bb14b24d3eda10500ec6d3903d16c262aa6a2e5ef6682d082c9bfa373ba238079ee37add4f62fc668601245548f406e4bb4b9d2d80c808e365058115d48719b7f9a892c129a4579471ac59a24e76989d10a9efd57fc882c0e756ec98b0191ed3818f8409f57339e04fd2442f4627037d5e9a5877544d127d9a2008b6786f9725abc1a3aea9f7471d4c77b4d6e9ec292a3c938292c4e26ff1b90db982dfaef371f92449e9ddf9916649484a3b9810ca886f4e42c5b42b93a9dfc6de1122a7d3997bd53fbe5176c96e058f010b94f45c2c87979a4a3b39b8f3a9e7f9909512b58b6f09dca77f0b8d553a1c7d9e0946c832a97c42ab94cd0b1ce2cf47a80192eb8209ac00f4bd747c95cbb6dc586944b8d1860dde447171fd2710e8fd0e42a925b9c64f0f084cc7efdfe10b2b22c55ab8df9be2ab48aa4039cadfee771f357ceb85c424c286b0fcb140da0a34a034d21070f20119d3f176bc1fdbc94f095a19190b5263c39f7f89fec3ae7d616131387f3516b626477354ecc65270190281de45688ebd8c1292fad6b6e10d8c7b9d82b95f85dcd0487c5f6a05c60ab927f31eab2891bb85ecb84e491319bfe81217627b05bc676e5cb7f794d6fbd3852638651736bcb6f921485e93db444089294bc1299079b11176a657709c56a7f33300000000000000000a4d046bc727a9f1308aa5c32f807fc44f40317b4f578cf54040412d8f7e3e360442896562ca45f089bba0fab83fe26f4ff2cbeaf36981a2f99295b63ad2962501ce2c6d87d0184c1799a254ed03047cf57a3bfd49b8a4438d496d741cf5aca6bd0001ecd37228b00c8973da400337300587f48997465959efe09ac5e012e14f51eb24fc1d3982d5bc0996b19df2d9d7ae1ac5916ab47ef6efa16e12c395d5fe2c432221655bce44ed91e150bd5e250652dd7dca25e34ce2edfb3e7782c20956cfa305", + // Try to issue: 2000 "04000000a43f07c488c6d586168c51ee2c40d79e94cbd20d13896698b2b8300800a41f1ad82adef74a272fb2c11bab1e2737ac4c6f2633e0b4e290a239be722d334c79108393a1bcdbd820f204400b39c01f1b06d4224b242c3889af5a5aba028fbe4c6a22254a4d0f0f0f200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025500ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000500000000000000000000000000000600008077777777d80a1977000000001c1d1c00000000000102e6998d77a5a534cedf7f283b172f8ef6bca328bd8d72de3c50d4a7fd5e99bf22f7bda165dfdc5436d9c5cc2850d9323afaa5fc318a7baacf633ab9b411482630dfdddf42d14417a132ba990440d794a7cf6be121fcbbf434cb8360e54a327180cca6bd85f50f5c1220018e377ddd802611e57a5deab4cacac3aa2aca59a76d2112dea5e9abf5c800d1dc99cc552e651b32289d89b9dcffacfc8a052f5418461d06799701af4e170286d7cf6af482c1b20bf62e5146fc3d2e1df8686ecdb094a4f8f7144da67a3024887c56164da382cfbcbf20b802fb52b70fa4f3ab4dab2ef73fa9d8e8eaf29a4bb8eef157ec5b9c6b10cc44878346293561553d1096ba431e62a0de941733018828ccf9979cee0198e4b8e5a081da9ca9d11bdf5c81180a33ea4a59afbc9f0fe396a35e25a1988d2e6c99a0e4fa8719d610ddb4fcf2a243053bb8314c39ba3cdb931283eeac896cbd063d4f1d0a5bcfb3ffba36ef2d6eea371550682953563432ff8b51224d3dc87899da8df32b01d17d092e63522e30381138463670dc34ce4548d684642f596b43d517b0de2e1589125a11b98ee8c1199650ed12b47443ef1bbbc98e8e396e21c1296e741b41d45aa5dda9d2121056fbd34fc00eba1caaa768615945fc437527cb18076a482591ac9690a6c181c8f2fac96da91cf3d5b255f8a56a75df242f67173613933bd0f9bcf0e822ee60a99882f930e67fdad2febcee724825180b4a94062ba0e273f2d5112fffa2d4ff169db2b053a224205f13fd8304050e33c2e51115ec44108740ddfcf45a010eae99377f1e505f0d7571e4fcda2c31f0e6f95b4e159a79c7160bc2c0b963fdfe9c48daf8b4048031d01fb3b9059ebbea408caa66e8119c3784ab464d002b0b7dc99871c3a5b7c10fe9a23487e789a6081367f8b043168269b0526ef5f8eb191d2b1d619d0e3a276f190829cfe47918b78fa03818069bdafce42c53371858eeeca725aeb2a7af0a4609e25ac14a3a0dcc8f28fe67c1fbaf331f674369c480f0dda94a346e23c4b9754c7febb0164dad9acd66090a7d870ce42b2f8707650e3a1c9b12abf73e4fd2c88413983bfe0aa0a83234f79cf3d7e46b8f071d4db16a42ba6c74b233be5b4fe432c76dc7bdf95aaea49693f532bc3ad0c059ab280b866306db9f743dd04abe4efbe3f62374324f2649a406e80158e3e9ac7cd1df82434daa4899efdf3febd9dbafb019e6ac3265e93631e3bd7558e8c9b41113e2b11f617c179acd9d577a02a0cda56236cb70e3984fd17dff31686c5a04deb697c85d834bd1c057ad8f25ebd9065af0b2caaf4fb77b04573cedad35410a21b7cb22559a61846a49ebf680a29df884319880949ec70edbad4f1d2447d0341f63de68f2ba0b115e1c6194ff27bac2dddd079a777768966d5f4640c50d04ad6d0082808f7988a45803645603d371380cc451b71299f6519d1e056303b916bf715bf1eff1c21302fd3a9bee087c3ed904d32db2cafeb4e2ed4d860c83617b52042336aa11f1df6c19ccafa022c2937fa47bf1918db0fa6a08d17d76756bb844fb90944a0e2cc609f7c4700ec1a829f800dbd5fbdd2eff3710e30f12a3e0d6499ea34215000fc386231883c206bed4bb2d694879f5ffed8987a331153978f0cde719b3bbd5258a496f200bc4dfe042381beb8569962eb8582cf19edf1b0627943891d21e60acb816dc32d2502199bbe4cb08aff56923e125fd5cb5cd5cb790045d1f0b6f163d262e8add8c0d6a24a12abef2b5eefb64af82333164e31ab6664bc179be74a4af58247b80a587d810e1bc205c4bfc51b441ec3d59f6e79a902f5227d9471b44add711916ba72913fdbd2cd2df4096eccbb749ac9323c4ccb09540cd4367f1846ff57ea239f702499c5d1c7b2d7908727c56bb6555d12e5f83ddecec901c39c6274d1712b6d497c5f838afbe07b19e8209297abdd4852e556dd5ba7baeb0623970a27f4c3dc5abe3a9968fca0a20f27fad059cea22d764f563a6313c1e3bb5bb6daa4c99c630e36c7426e2ac4c64843232f4dd89ea25affc655079010f113f67ea2251d1c8e5eab399e37fa9b3272b9b12fb1cd955bc99b7dd17e7cac1d522ccb45867f82811cc1731926adf904a6a939d86859b759dc2d79044c2c3a69bcca6797fae8377d3369e9f26012bc4245ca53f3f4e94401f6b0565dfc5e60d8436dccc40430d1639090355117df71fd5d3bb383cf42caae335fcc821164d28758e4880abe280e8daac3604670a32d93330bf464044960e85b5a525f9a0f9f6fc4525824c592bd3a8d866e82fa3274444224c3a2545e69d04a8e81055c2a44b0d743e1f38522be4ae25d0d52ebb103a85d3f1e4c13aca71f28780b6e728202572cd586f9c9e29b99a69049de0ad5b7ce113076defee649808cd1eec13966ace14681126916e65a9305efe7af1440f5f408e3b0000000000fde01ca683d830fbefd67b98b1f84125e9e2d3a844f38fed52400efbe4f5f92515ef0bdd76fc972643acf8ebadd4d97dca4c591968eced405820d608d847a63341b13e4949adfd95106b0035aa1759a9b7687863a351b12ee938d37e6c3f7efbc0d699b99fead694f583b67f7359ab7ce5d9f843491bf8e64fc4b563045de535a391ad07e9696a68bd54792d27d56a15c67212cb57c78abf4ae1a7898aa9a7156eee813cbc2fd254464c10468a8af843b15864919a7b00628dfd6c4362f72cd365b9a766a9bc1e2dcf716d7bcf59dac3ebae1e4115999dd8f6985d38a3025bcb92001bbcd4185e61d47ac5088d9a65c28ff99a26cd8648a383f7d93bb1543e7dd12d91639d4314decedf85132b953f6f6f1b873f32b44f610d3e708d4e99be9f8051acaa821483d0a466c80abea6984c25f7ad438d59e58e6bf00806c2cfe66147878505573ddf9783d6fd1b3d89a9097b92e6e03bde0c903d82cc6f4fdaef8905ca1a5071e6380859eff61f11ca29411e2efa2e948406e08f59b3201b8a69f34fa7be69899cf40c035c9965c3814b79406ad21c507e58a9632f832aa89cf05cdf6b83fc244a8cc7439009226b52eeebab5c59ff878175d1630c3a6cce444f3ebbcb9ddb64a2d34ce166a7c157e67037a5345a8a6f4d8be2809d3e771623434cc0c08d93de4f32ceadc28bb298fe4c8bbba1279dcd079ae3a0f23c520f70eb1e5953a15a0cd911926346e19e53c9bdb64675711f2017715835c2eb10b1a6f858192f1ed566521146fc5c330c682919f9f566ae26d078a153c20be69298d305a54a26aa0cb2419acb7f2df24f7fba18d60b3f61f92af7e14c95fae8e14ecd0652f66e25287a71b3c76678077a86204b71770ac2cfa93726ad4085e31002ffed0c6b8204c75f3819fd9c428a827047690eef0f1b43e5580470d87902690aa69f925e33a94d23bdfe4cdd0d6700895ebfa418e8f57ba46b4968615095878b3218a6ef0f2c574f916912cfdc3a1dab6ededf87300359087f157ab022c1ffc0bbbabe241bb5895129bf92ab6b79be08f3f18fb0db349a8e4e725967b6c579275c5de0c82705cb690ba836c884a9680b5dae639092f57f07e7aed117565cdcd243b9d547fd3daf255dab39e651ffb0125ee75241d18ef4fa5dc6ff103366edbc12a62f1e8b24dbb39e9597e3cf0a8ef6a73766529e53775b72693cc561164b9f2bb81304f7ac34b3334f2b56dc1807ae3288ef139a0d9e8160bf39f2580bfec1b3fb671582b32b086ea072490dc1333b1999eb6689ce955965d21d2d13c383d5eff022772d18aa4449ace5ed9ffc9adca96d7c07ff99f43b41189af2766255acd7e52b14a8a3e67d7d7f5469db1abd777b646f5008efd117ed66318830079c82c478c57cb02a575fb0025701a41db8b55d4eae176de6acd3f0013dda0672d1847fe20fe2e7b4f3ac0fd7548ad5e09171996d287c0ced00a4afce8ddf09a558038db450d8bb9f698e775443ee81556bc913ca191f0cc1613806f5a46daac751738db4d6096016d628775a57636b0a8b5aff256398ea5f920eace08f49a0f1bca6d108a9437cb47348b44b3ae40db63ce3e1f003301613ec6e0194e168c1545e1ad4e5500ab330a1db3c3bebd5a022b3ca838077cc7a396c1bcc55878b759f0287ffbf045afbbdc9a7ed5cd93f7e57e9c729f4232623033def63eb9c923a8670b5c4d88ec65f0cf4a7b6976951aa9db4d6963f8df2279feb8a244783d069b7f462e32fd72e4f0ab27831eac30a2d45d73a3d3786e7252b6132d402cb0523401ecb0a3d19798720a970d53b2ac1a9e31885f4162da4b3e62502bc955b1c7c8eee0aa9efb614188a4adb53e3ff5d223164c0143b624153f0ed3b5003bd2d6460c69b38e6bc79299a6bba241db6f757f87813396ac26e06d8888c551b36736553b2ebe96bb6fe6120feaa143b054c6f3db98d4889dea43dfaee594140416de2e6dadd4c4e9bec519f446e4a5ce91615d2bd09529e023758490f5d5514634cd82351d69e6435527aa7a2d8c099071a5350561371dbe83074b0c6f00985ce57b1f60946a5e96238bf80d5005215a5b563fccbefd147cfb2901077f45ea9c9a12fdbfda6c907877d4e3ea64beea348bbe1dfe3c479dbe72a70cb47434991b110c0594244976ef2e6dc31b0ca2aed9bc07549aa06630bf1232003e0c4197e182ee61e74da7903dc6e41090d05cda0a700523699463d330be1b49e3f305208ae234f1aa734b5796fab90381368d3ff0ed0564ca10cb48c2359d69a3304ca73dc6752cff1c8e932cabbf91aee01dc6acc77e9bcc0fd9b0a19878ab1f0a1477336e9d046f480b20e9be0d8b11a3a3625dd93cd5c2779e81a85a14a742a189e6c3e51820a09d83e34b3b7b58a92a393f5370302d3414460b83ca080bef598fd8a9fa39fd051a1b8909d06290709531716e24b2aaf692015d18e5ea17cad1d06f7d90751a4a04124fea400be3e4e5ed2e1895feefd12696ba2ee863483be430181776786713b03c91706e87a0d79cfc728d700649e2110a8d47b9a5aa65713a3989bb52b02871120f4ac4f0428e5dd6e76a6c1dd89dffd1a5539654f22dc421355d73296600611f9a187c0c31f992a9685e4746b6ad46edfb2e381b6681e26ec147a98cfe100c124c1d68b760dfcb36e1f01416e2f3133915a96cd8e4bc31fed6ef93a6fed8c4ffe9d0419cc2aea85800ce7b1ece31cf099f7e159a1a0b8621b934f63e8f1071107d3bd2d1d3880fd65cd39ab98f5c98e4a0a1a25b4aedcc57a8aaf684ad74ca9568b88f4ff00c84bef4d331b5752062dc290b04a917d19faa3ccbfef9eac43ab28333625630c6e6f5d2bccaa5fb3c6c7ed7f0719645bf159269b51dff6e358e1fb10b6c2f7072f357fc1983a8f4ea58405ecadb5de04badd108f19daf3c50120e966239f12027f85b52b244718a92c010f19b1c0779b2f1e5baca947d5c7d48e011dacbe070a6d4bc01e4cb3c1c1efee207a3b1372d767340f859f78869c534f5e148700552116c55208d5e762da64e7f456899fd6b89957d3f2db9b71be989e221ad86e712484d3a387695ae6ca2579f04f17a43674f50619f230af306e0f336d329188a41c0b64363dcaa40298b12e9356f357bb52a57b6fc321c806a8a39ce4441e5e3236914fdde731a2e66a63ce57e5f8185a4fa96e16b18d0b14e9299ca0a15f551f16119e387fd3fdc39b8e91fe1e273d5765c4641a1df928140222cdb8c161a65c050e998d025cb20d997240add7bcbc938f64e8cefe4312614e89e26f88fb2f9f3cf7a42f494bd56764f170ac7ab9ac523c7eb816232b47af572340f731e5afeb20f13ba78898de0995079d561fd39107fd5654e70ac5e57d6b5b20fcbeba5f052001d850fa165604fc64722e402826c9adb2973fb8de4238324de0274736d68911ffd25ef97bb3990625c61752ec69541e4ca6db1d83a939fbc4dcbdccb7888400dbc554440d4f391d9c3ffdba6ee44e009ff3f214ed539930ecd66f77e03317236ab8ee458aa0dfa6535714308c5c5171705981662fbb03256e63412e4eace603c63ef9b951c8775cf90c4fe89fe45fecb648b4dee1afe85cc1091ceeb75284285f813771503567d6bb8f2934e5060a8240f470007b62ee89a98e69836afdd11d67ace981600b1efaf3448ee7c2835d5fef5c0418b32c2213426fce3add164521a7b5600b9dbd9f23cafbbb9235be20e808eb2d0be6b85033c12928612ed97628f05a49d0131395c3503cb478b1fb6cd7d6057c61979e49d3eff07f843bcd4104a99341e8096eec42bdd60bce91f5a3b1cdba7cc1b97cc6df80ff72d1ce3ba523d9459d42df3a3db6f8afc939eac73ba69495759b83f8990e5090e9f607d0c63a55da1c6903887da422c00ec00fce80063cb8b236f640cb3ff351189c1f96552c3dfa879bac696d50dee4cb68e7e7ab1ed316e65269eee399dc703cc4a02ac01100a822b1fdb375ec0ca1978283cbb8b0af9a140a3f8472f293d1b1ac221cfa1532f5626f1aa05f17984af7ad5e06587c7c54ba2c078837c1a442bed9872bf70081fb534c33c72e392e975af8336f72735fd205a2f0ed96deb8103b6bcd139236128fcaa254546432ec64374d209296cd2dc09afadc697b956fa3da4a25b88d007e8b67f49039911b114b94d83a3ae7bee26da163730a5674c31106be9f917d1fff301fd9092f050613b609af7b36503080c375e3c4a8cf8ea342c741562d8a19773b166d5536bd3f505dd1c19788b6da29db3b1641a75b4b802b72a0dea1aa0235ab0c7718990896b22aa53ad31c91c8e5da28aaf8ba8f279770c7ff3399f5101615ba919bf81d2bcb72d155959f611b064443fd80589247be066a338d61d20156adc6d0634e2824ae94b99f3d6eb1e6477373c2ee881d817b859b4a4a5d9b00bbdf8dd59e338473a30ee5facfe3b9ca519da0465f758a57398274149174122a3a1f06e19289a755089f6e4a8561ea5b18e7ee222a35c766e09b36431d58163c90e9efc43abf28c1e9fa7c0d046f4b8f88b858e5cc7ac6ba7b1a25074e540d201bb5a0174821c8ed04152f0dee28646f9e3ce816be54d5ccbfce073f65176d095d2338ee411876af7599268b23f6897cc63b0fa71c2ea331fc07fd5aeef7912486b2c81f90728ea0c30e758580ea1da099baa8f84fe0a27bd5804845b4b01104147f385e51d309028a6539843f75a21051592282e07c1ec132e52a0b6903e72717615e34d5c2ab82e9ec74e498e56e20f8c3485628868f3205a1119814b00a1637cbfc4c7669c111b0b20db5b63a8eb8d89b2ea6f4d6fe2d1ff7b6dd8549bb02cc0c4bdc7893127d4122f66e6703038b8176d361e454dbb172af3128e86cff3a1be1bf006e9c9d45b3320f8bc9177612d217b5bf29e2d945d1da0721a8672f2dc73d87a3fc5f91b72df2843d34df2620e8bbbd2a1ae754433a76f7c01fa3c31566dc3bc53baeecb13ad3ae78c032eae53fac510933a1233cd09f77bda506c424ba2ceb3ecde9363350a90963a615b1a9d8604fd1c3d8faa32d8238c10a03cb3dd1442f7f4ae88444713536c99a7d4e0d82eae446278a572ecf087f98e1f62d251b5111b5c07c7c022f9466cb471e0f692e22b6a01f4883ccbc9aef354b13db3ed86128c7b48bfa38aac481bb164e144cf7cc5cd9ddc89c390f05c8b8f1fc6139fb90aca4f05b846e724187083ada982655c7282530b34832f28af0d341b3d21f281c5b2d11380e78899358121b4985536199ddb8bd6a1d589c10439f9b63070c902c96916e392c1aacd734ca2bca4ef118937aebcf8b7f5d6892af7aa170ab17bf6ef1409b12477328e4409b8591a3b32f2151a73f5e3b8238e24b175ae8e92da8dd8ac4a6b3e48f9b9a93b3281332e0023d618ffd27b402e986e62869f56033d020c595f77117c857bda58e59e10d06165b44d86cff78cf6aecd3b8884426053ac0b395c6e38c8f74d36725a4ea60b38dcc5da25c6996453dabe287ec48ad03062ce9ceaec6c521554fec71e246c1d7528d30bbb63b5713f1c798c6b8003327b15492798b800e9fdbc4ead8e5f999a4fca0c88b47b1fccd5998d54095b1003fd0b07f225200a8e044de43bc32e92ac72b8eec3d9c63d4b1db67e4dd884dab1366cb8c5ef8efb5b7755392838dd2d5e05ce9ff330781571c52634977b4ca1e1696466c93bb61e3a1aea52946121b9804cd50d020afe21467f146760dad8f123490fa5074cfbc17bd862e0288e93b4ea6e537946f2fb6b05e5ceeb73b859bdf2bb61b6f38f332df7ec6b20d37c0ace3f0307dea511f0df1c81079d1553a1c550f6f65f6e9334d64d19c81b9ded113bf945d58df5be0372275e7f59dbd8738bf3939836b7aa7442a98f01ebf5744dacfb4f01218abac2c6a58387bc793bbdb1c041dd56c14dc02f7f0690f4ae2800508ac6fcf8a56733773aed9e899eeab42a7229971a8da896f5b49a344b640d19ae46a489dda7da393c423a97300a28c2e2b10ae580fb0164f83f1655df5e66780cde64b7bbdef16563acc3d65e98dd800f90b3a685d17c2b79371aa4c25757fb206c6b1f77c170ec0469c2ff61250acd5192d49bad378cf09fca94de403bd50f0caa51e8b59ba16c71ae02078d99e3af1b735a37d8af3b8985d449ba0f9054b2bc3c80f6cddc9fb05848467afc2a64633d323c88fa7a4b7ab33f81c6d8262c2ca64e7b9f311d168161bb06c39bd7fd7aed814933832546c271f54eb662689c1cd7c967b027b351bac886ce25ff24e7c10a507489be529029f8270ef99dd21e043ca7a675e2785d629b22979464a32ecdae53cc87b52da6c878a6d7073d1c3fdfc81c34f2846ba40b911c536c4dda0d44ae41923d80a7b6169af46bed4d632c04fe578065e262731ff1d11d81d80527e2be11316520f21c84d38b466c0d58e09cf1b8d54745264ca9a8102f9d4c8eaacc5b11111f17096f4de3f02ec6e6f40006aae55ab4d64ae4d117ba486d264376e6c471b85979514ea86b95bda4dd29666c45623efeb8e2f0a2a0e7bd7e93de9a42c5c1420bd0ca9d27af76a2ca3f2e8241fa3c521aa70f47c9700a4f131472685409f081823e0f2b11febf7d87f80c9bb139e3b91328672c4e38b175441eca114e2572d29f7006671907fb586daad0a594372ea110dabfb2f5db51b4ee8f2ef7174db21ec091393a641a2bf1d239cc0f230dcf88531fbd0f71ba274b817d356c20e163295f77a1c72031b75449ce46e0eb26c60056fc9a480c4238782a193155a9c26233e464c82d5b2472806802cad75fbba9beb2a484b9d5cdcb44fd61228af121a13580b91d3e0fab80fe4d54096b97626199eb9316ec375f4d862acc8ac10af9d104144ca04f6c0c62cc4c3867951047e80d038dcb38cf4faf35a7e35722767d43d6c70041f37aa056db3a85d3c36686351b2d001942a316265ee79c8848ce19f1276bf7b89dff80180e8a54919e7f0e300299cb574fffc41b0172a06a0682eb12b0afbc40556fac70abb6cb24459d86f8d976757775e3d011462944794eecadc2cd2998e1f202aeb7ca813ca5966908b3eeac3577650015311de2ce584546dcb00a588541a2d73a742d3ba01ada0794abb5acebf9467ef4c40b43ae94426cb06077451e6966cf2c9f3050bd89cfdec233130660a6683b5ac320b5543dd77e9c11ad1e9b5385a0c93765858ed20833c6c262841e5aa3a5faf3e944deb4a1611be21e34cda9d021c0a4f0c09e001f9412e1272a21aa03744f175f1ace6c90ebf203bfc8fbe436c3b83f03417c1c486532a6a621e81265389b10cead34c1577faca3bbbc53dd9e9d95bd1411bba48a29acf797071166b3baf12b1ba41bae9d5c6e201634801516e2a3eb1a7dc431f0ad5074cd2723e6061b50710d213e52eff591638eeeca833e2429652f15864a725f2d96613547b166cab7a637d199978fc160e1e5ee8bb9e23d3f4cf0f3d162df93059707fd0f4e8cce5fb00cbd4f4fbfa1061265a210a0ce1a7a7aa813d835ebf6e6bda32399bff4cfb33db8c36e46935a0fd04ab7d734c2d94840e604d7871d43284757f01f099201a7eca576fed8d72727320e2a245734e78402312dc4073efce4910d200548e68bad92c8bf7167ad05998386fd9d02a0cc5ae81bd021b810f98b6a6abc6ec94dbaac22555bdc7b676c31c2bdc2ac5c61466715b73225171d0f89d0562cb7f99120e71660351c82230378b3134b61d522bb2c0d8aa671d12d048df3bec31c778e152b567f88d93137b3380318cabe20f73c210f91701763cea06df6ce966e2f02c57cbda0feeeef55bfebf1bfa77f7fc5e8cf30c55d6e6f6d9752670d82701c5737dccdd36b539f22f9d122babd0408274c2ff56eb4725466195c4aa5bd28e9b241ece4aaa86aa18a04dfb076ff6257c0893b2e65f5ba62d4540f1f19d828b0c9cb4e337c1156ace7b550705411b38bce1a68bccc9184f27aa03f6fd6fc31453ef537254de043dfd461361381b4864573ca8e06046f8d500d1e60b79c54763fd5e244042e7f77fefd1691229f6a621db132b8811d0f32e9871bf85ffd81a088f902280081b53b3026fdb66329cafcb3c9ee0b1c1213d190e86d990f4b1a4b7a9c360b80050fc2af6f1b73d3084d3173b8689eab365e181e2c1e4554614b4ac658a4684cc9e976eee419aff2536832d5f2eb6c63ff7a9fe987d5165798ed5731ed3877af8e5b88f10b8dece1592b8c5e7cb6765e0368651a107a6273539ac155f4030d9cd842270bb284f76184e664e8e7d89710b6676ce2cafef2451b11c092dd49a1603f1f8eeb7010ff72edd2f91700634d1d24eb5ad70ef6862cd4e122304eaf84e6f3e14c3d6206bf6207544a48cb4f2f4a67bbc731be3babdd1872315c239c9ceb234aa40175549ea1e029bee42ceeae3fc3c9e0c8896eea93b829102b6f06c8c3a91e995aede46731fc260862a6e47eeb0bc9f377b4893dd542d902835afa6f8618efca6a191246717f8afcd80bf92c6d1d35c22c37e5bb26968f16b057b285df374433a251781f7069e9ca069fee52607f11c238ea0e3c4d70e2f1115ec64216030ab1a0e35687211d27676d679a510a430069be1b0b7a1b877caaed37230ac7a833cf7aa5ecbfa063f38dc3cac5c663b67b86739151713da11706af98bdf0eb0ee1fd8bc94dd31033a1084d6bd520d9399e4dac46fff62bc819ac5e0bd856c194e05c6708a65712f6b4bba424497def0f6b108fd8f23cc20dc1409842fac7cc80834a31db1be8d01d5f920579eefe2155ce973831f723d5a4151a7d2508ccb09a2d26d3282e8d6301e46a5e1ef1b5e2243d8f8a87c787d92c48975e615153d1318a8fb4ebb47d80908e6f63622a61009593b574024921119765e9c7d19cdb730be5c533364e12921b13267c2a64783ed788274830e2f806330d17df3e0935b9c5cba64c281578331fa0d6c9eff7b1b10afd8bb4dbca9f5a8dc3a35e68b0545d3089234cbd65b372c29d5a0526577a2402fcdc733d904986e327a0d3fd6e29ea62f183bbfa7db743793e8cf1912370c7da5aef6f91c007324289880911dc79eef6311189eda702a38deec8af58bf3d69a8fddeb4826d766690d0bbc51b1e87e620fe8533a25b9f93f8d40b64b15cd4f0f761d36ebb974b2cc51be0c98381131dc05cf331e3a636405174638f1101c62fcca193103814686758adae28662c0c7b80ab5bd2c58abae34b2f3633bc79cc88c195e7281929f5ecf9ec4f2330a14d992d6e2bc849b158b3404a02c53d18584860ddbcfbaedc9b4321761b56befa57b59b2b566a125aa263a037c6b0cac72e1f686aec527e7306c4a1b30e5c5bfffa40c2fc5e8475a0733add8012920be1759cf3926a8f98c166c7b391184f992f7483858bf6500bfe9b52a1e2db438122996f73b2514ffc0175567ece1badae39b6a9c719e32a14898c8abf5b92583d13695480677673f20475f271919d60915423d696e868fddfa60e889a7586d510c62c63a16b1998cf65951399d7892d137ac9168e09bc43b5989c79a442a091c8fff191c5066e289e98f855ccffdf996157e9cfa917c244da4ba3e0cafd28046c9a9aea3df72ae68b0c275b878aae46a9139b2139c6193f9b765f901fc5b3e41d5986aec0c427d7542d5399ed3a58ff5c40da1648d1379a890e4f82d58f29ba225a94a62defc333f12335dbe559b70f4c95923a12dce670967a21eaff10438356d9276305a9d0a33f5b152e88d7e98f20402cf327b181a1479019bac5ea43781ac0726ff8027181215b36995fcc35817790d6b0882801f18dfe95390c440465983435d9ef3104e4916cec4f0346899048a2e6fc1a389c2ebb9efa20bb14587f108d232d4cccb833c3cc46f44b735cff07c1e6e4dbe4b1c4db926368de1643cb0ee2094e2bb9e774c34e668832d59acca65c33c92fb850b5be96650aca5c070d312edd0158310c6f575e646f529d195f722d3b566585b21e99950702156144c0a59cebcd47586989c7b96b924196f236ca23bf95aa8fd170046288d3ac5e2a016d0b8c4dfe2266f8a144c1646d21f8f2ed58209103eaf13a33da2daac85523766d81d04647a794607b6102ae623b4a8142ef3c318959cf2b8da6566160acff46f5f6fdb4e13df148f5e2062c1b7611ae1ba5e7755c49bab6d7c511a37152cf09beec0092c7bb026ec39ab798392d4b977b1ab0e1d613a0e2ccf2eca1d739cf1862396a8f3b2b33c1448bad4b3b3e3fd5743c1aed101f213c9735a622d1fee4349995cbc332f8dacc86ef92abac2cdf7793eae4dec69c6856955260a8ad34bd8deef0b25edada3ee95859cb520240b19fa23ab57890c7f7fcc53de6511c6bfae9889bd1b2b25c51a093f82b2b7e103c56708f264ed4f6a577f3002b63992158781d394c8227eabfb039cd1adb2993ec9f6d6c5cd162976b1ba16943a0306ff6a2cf67fc27389d6fa88e10920932f36a4a5aa30b322d05ceb77e471ec23f298537432b66e6b81bc2271820e4f3cf4741bfcc942f1fff1e4228ec6861d16c0e6ed6e06c5e0ce0c0bb41d0a2c046b0e93e197cd28d6620ce5a8e05116c79ead7f9d57e31059ada908be814cb0cc314dc147b5278ff7b02e3ba2a6f8b1f0210000000000000000fe2d83865ec6d0e18021047a13eff3312ef198d06f7dc7229494a5b871bcbd0a0250ce39b176b732728cb8728a59f12f8dd4c8ef874ae58d009e62c65f67873601ce2c6d87d0184c1799a254ed03047cf57a3bfd49b8a4438d496d741cf5aca6bd01bc1e9d7134d3c05c62b251ccb3ab8473cb5dafc7b19f3b6750e41bf24c6ad882802a60d88a2fb0fd642095d0070000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed416b1c5ecbc9495e905a2f167db0661507a37b8d83e6e98d494d1005d6bcdb74e3332aaf23dfcfd3870faae91996d33135a892319a3bfb08d3fbf19bf938e687ccf00ecd37228b00c8973da400337300587f48997465959efe09ac5e012e14f51eb2425b8b53fc4c9cfc3627fde7c57412b7f985853b0db8f2969b13016d992700eb6af998d6937755995afd6c769174189b5eb6b84fb35871b5844b1f320a6a16bd8", ] .map(|hex| >::from_hex(hex).expect("Block bytes are in valid hex representation")); From 90a49d74003585edcdd32a060d5a62dd9f6e8207 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 23 May 2025 11:36:34 +0200 Subject: [PATCH 209/230] Make fixes according to the second #37 review --- Cargo.toml | 3 +- zebra-chain/src/orchard/arbitrary.rs | 1 - zebra-chain/src/orchard/commitment.rs | 8 +- zebra-chain/src/orchard/shielded_data.rs | 26 ++- zebra-chain/src/orchard_zsa/burn.rs | 3 +- zebra-chain/src/orchard_zsa/issuance.rs | 5 +- .../src/primitives/zcash_note_encryption.rs | 16 +- zebra-chain/src/transaction.rs | 166 ++++++++++-------- zebra-chain/src/transaction/serialize.rs | 6 +- zebra-consensus/src/primitives/halo2.rs | 2 +- .../src/methods/get_block_template_rpcs.rs | 1 - .../src/vectors/orchard_shielded_data.rs | 2 +- .../src/vectors/orchard_shielded_data_zsa.rs | 2 +- 13 files changed, 121 insertions(+), 120 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 47664809374..4af9a635ce4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,10 +25,11 @@ resolver = "2" incrementalmerkletree = "0.5.1" orchard = "0.8.0" sapling-crypto = "0.1.3" +# The dependency versions below are in accordance with the currently used orchard version. +zcash_history = "0.4.0" zcash_address = "0.3.2" zcash_client_backend = "0.12.1" zcash_encoding = "0.2.0" -zcash_history = "0.4.0" zcash_keys = "0.2.0" zcash_primitives = "0.15.0" zcash_proofs = "0.15.0" diff --git a/zebra-chain/src/orchard/arbitrary.rs b/zebra-chain/src/orchard/arbitrary.rs index cede4a8c647..dab7cbb2840 100644 --- a/zebra-chain/src/orchard/arbitrary.rs +++ b/zebra-chain/src/orchard/arbitrary.rs @@ -59,7 +59,6 @@ impl Arbitrary for note::Nullifier { } impl Arbitrary for AuthorizedAction -// FIXME: define the constraint in ShieldedDataFlavor? where ::Strategy: 'static, { diff --git a/zebra-chain/src/orchard/commitment.rs b/zebra-chain/src/orchard/commitment.rs index 2097558e445..2b809bdbd27 100644 --- a/zebra-chain/src/orchard/commitment.rs +++ b/zebra-chain/src/orchard/commitment.rs @@ -236,8 +236,6 @@ impl ValueCommitment { /// Generate a new _ValueCommitment_. /// /// - // TODO: Remove `#[allow(clippy::unwrap_in_result)]` after making - // `ValueSum::from_raw` public in the `orchard` crate. #[allow(clippy::unwrap_in_result)] pub fn randomized(csprng: &mut T, value: Amount) -> Result where @@ -245,12 +243,12 @@ impl ValueCommitment { { let rcv = generate_trapdoor(csprng)?; - // Build the right commitment depending on whether tx-v6 is enabled #[cfg(feature = "tx-v6")] let vc = Self::new( rcv, // TODO: Make the `ValueSum::from_raw` function public in the `orchard` crate - // and use `ValueSum::from_raw(value.into())` instead of the next line + // and use `ValueSum::from_raw(value.into())` instead of the next line. + // Remove `#[allow(clippy::unwrap_in_result)]` after doing so. (ValueSum::default() + i64::from(value)).unwrap(), AssetBase::native(), ); @@ -267,7 +265,6 @@ impl ValueCommitment { /// /// #[cfg(not(feature = "tx-v6"))] - #[allow(non_snake_case)] pub fn new(rcv: pallas::Scalar, value: Amount) -> Self { let v = pallas::Scalar::from(value); Self::from(*V * v + *R * rcv) @@ -275,7 +272,6 @@ impl ValueCommitment { /// Generate a new `ValueCommitment` from an existing `rcv on a `value` (ZSA version). #[cfg(feature = "tx-v6")] - #[allow(non_snake_case)] pub fn new(rcv: pallas::Scalar, value: ValueSum, asset: AssetBase) -> Self { // TODO: Add `pub` methods to `ValueCommitTrapdoor` and `ValueCommitment` in `orchard` // to simplify type conversions when calling `orchard::value::ValueCommitment::derive`. diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index 2b19e8776af..5bc5916f5d4 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -222,7 +222,16 @@ impl AuthorizedAction { /// is constrained by these factors and cannot exceed this calculated size. pub const ACTION_MAX_ALLOCATION: u64 = (MAX_BLOCK_BYTES - 1) / Self::AUTHORIZED_ACTION_SIZE; - // Ensure ACTION_MAX_ALLOCATION is less than 2^16 on compile time + /// Enforce consensus limit at compile time: + /// + /// # Consensus + /// + /// > [NU5 onward] nSpendsSapling, nOutputsSapling, and nActionsOrchard MUST all be less than 2^16. + /// + /// https://zips.z.cash/protocol/protocol.pdf#txnconsensus + /// + /// This check works because if `ACTION_MAX_ALLOCATION` were ≥ 2^16, the subtraction below + /// would underflow for `u64`, causing a compile-time error. const _ACTION_MAX_ALLOCATION_OK: u64 = (1 << 16) - Self::ACTION_MAX_ALLOCATION; /// Split out the action and the signature for V5 transaction @@ -274,21 +283,6 @@ impl From<&Action> for ActionCommon { /// rejecting these large edge-case transactions can never break consensus. impl TrustedPreallocate for Action { fn max_allocation() -> u64 { - // # Consensus - // - // > [NU5 onward] nSpendsSapling, nOutputsSapling, and nActionsOrchard MUST all be less than 2^16. - // - // https://zips.z.cash/protocol/protocol.pdf#txnconsensus - // - // This acts as nActionsOrchard and is therefore subject to the rule. - // The maximum value is actually smaller due to the block size limit, - // but we ensure the 2^16 limit with a static assertion. - // - // TODO: FIXME: find a better way to use static check (see https://github.com/nvzqz/static-assertions/issues/40, - // https://users.rust-lang.org/t/how-do-i-static-assert-a-property-of-a-generic-u32-parameter/76307)? - // The following expression doesn't work for generics, so a workaround with _ACTION_MAX_ALLOCATION_OK in - // AuthorizedAction impl is used instead: - // static_assertions::const_assert!(AuthorizedAction::::ACTION_MAX_ALLOCATION < (1 << 16)); AuthorizedAction::::ACTION_MAX_ALLOCATION } } diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index b57638020ad..5a8cd9f18a9 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -26,7 +26,6 @@ impl ZcashDeserialize for AssetBase { } } -// TODO: FIXME: Define BurnItem (or, even Burn/NoBurn) in Orchard and reuse it here? /// OrchardZSA burn item. #[derive(Copy, Clone, Debug, PartialEq, Eq)] pub struct BurnItem(AssetBase, NoteValue); @@ -129,7 +128,7 @@ impl ZcashDeserialize for NoBurn { } } -/// OrchardZSA burn items (assets intended for burning) +/// OrchardZSA burn items. #[derive(Default, Clone, Debug, PartialEq, Eq, Serialize)] pub struct Burn(Vec); diff --git a/zebra-chain/src/orchard_zsa/issuance.rs b/zebra-chain/src/orchard_zsa/issuance.rs index e275fea2d4b..62305fc0892 100644 --- a/zebra-chain/src/orchard_zsa/issuance.rs +++ b/zebra-chain/src/orchard_zsa/issuance.rs @@ -55,8 +55,6 @@ impl ZcashSerialize for Option { } } -// We can't split IssueData out of Option deserialization, -// because the counts are read along with the arrays. impl ZcashDeserialize for Option { fn zcash_deserialize(reader: R) -> Result { Ok(read_v6_bundle(reader)?.map(IssueData)) @@ -66,7 +64,6 @@ impl ZcashDeserialize for Option { #[cfg(any(test, feature = "proptest-impl", feature = "elasticsearch"))] impl serde::Serialize for IssueData { fn serialize(&self, _serializer: S) -> Result { - // TODO: FIXME: implement Serde serialization here - unimplemented!("Serde serialization for IssueData not implemented"); + unimplemented!("Serde serialization for IssueData functionality is not needed for Zebra"); } } diff --git a/zebra-chain/src/primitives/zcash_note_encryption.rs b/zebra-chain/src/primitives/zcash_note_encryption.rs index d76d8f802ad..c1dd891f9ee 100644 --- a/zebra-chain/src/primitives/zcash_note_encryption.rs +++ b/zebra-chain/src/primitives/zcash_note_encryption.rs @@ -69,24 +69,18 @@ pub fn decrypts_successfully(transaction: &Transaction, network: &Network, heigh true } -/// Used internally to avoid code duplication when decrypting both OrchardVanilla and -/// OrchardZSA bundles, since they wrap different types but share identical behavior. +/// Checks if all actions in an Orchard bundle decrypt successfully. fn orchard_bundle_decrypts_successfully( bundle: &Bundle, ) -> bool { - for act in bundle.actions() { - if zcash_note_encryption::try_output_recovery_with_ovk( + bundle.actions().iter().all(|act| { + zcash_note_encryption::try_output_recovery_with_ovk( &orchard::domain::OrchardDomain::for_action(act), &orchard::keys::OutgoingViewingKey::from([0u8; 32]), act, act.cv_net(), &act.encrypted_note().out_ciphertext, ) - .is_none() - { - return false; - } - } - - true + .is_some() + }) } diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 9cf1b5aff50..4109d210f27 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -53,75 +53,6 @@ use crate::{ value_balance::{ValueBalance, ValueBalanceError}, }; -// Macro to iterate Orchard shielded data via mapper (avoids repeating the -// same long match block). Empty for Tx V1–V4. -macro_rules! orchard_shielded_data_iter { - ($self:expr, $mapper:expr) => { - match $self { - // No Orchard shielded data - Transaction::V1 { .. } - | Transaction::V2 { .. } - | Transaction::V3 { .. } - | Transaction::V4 { .. } => Box::new(std::iter::empty()), - - Transaction::V5 { - orchard_shielded_data, - .. - } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), - - #[cfg(feature = "tx-v6")] - Transaction::V6 { - orchard_shielded_data, - .. - } => Box::new(orchard_shielded_data.into_iter().flat_map($mapper)), - } - }; -} - -// Macro to to get an Orchard shielded data field (avoids repeating the -// same long match block). Empty for Tx V1–V4. -macro_rules! orchard_shielded_data_field { - ($self:expr, $field:ident) => { - match $self { - // No Orchard shielded data - Transaction::V1 { .. } - | Transaction::V2 { .. } - | Transaction::V3 { .. } - | Transaction::V4 { .. } => None, - - Transaction::V5 { - orchard_shielded_data, - .. - } => orchard_shielded_data.as_ref().map(|data| data.$field), - - #[cfg(feature = "tx-v6")] - Transaction::V6 { - orchard_shielded_data, - .. - } => orchard_shielded_data.as_ref().map(|data| data.$field), - } - }; -} - -// Define the macro to include the V6 variant. -// Needed only with the `tx-v6` feature to avoid duplicating code. -#[cfg(feature = "tx-v6")] -macro_rules! tx_v5_and_v6 { - { $($fields:tt)* } => { - Transaction::V5 { $($fields)* } | Transaction::V6 { $($fields)* } - }; -} - -/// Same as above, without the V6 arm. -#[cfg(not(feature = "tx-v6"))] -macro_rules! tx_v5_and_v6 { - { $($fields:tt)* } => { - Transaction::V5 { $($fields)* } - }; -} - -pub(crate) use tx_v5_and_v6; - /// A Zcash transaction. /// /// A transaction is an encoded data structure that facilitates the transfer of @@ -267,6 +198,51 @@ impl fmt::Display for Transaction { } } +// Define the macro to include the V6 variant. +// Needed only with the `tx-v6` feature to avoid duplicating code. +#[cfg(feature = "tx-v6")] +macro_rules! tx_v5_and_v6 { + { $($fields:tt)* } => { + Transaction::V5 { $($fields)* } | Transaction::V6 { $($fields)* } + }; +} + +/// Same as above, without the V6 arm. +#[cfg(not(feature = "tx-v6"))] +macro_rules! tx_v5_and_v6 { + { $($fields:tt)* } => { + Transaction::V5 { $($fields)* } + }; +} + +pub(crate) use tx_v5_and_v6; + +// Macro to get a specific field from an Orchard shielded data struct. +// Returns `None` for transaction versions that don't support Orchard (V1-V4). +// This avoids repeating the same match block pattern across multiple accessor methods. +macro_rules! orchard_shielded_data_field { + ($self:expr, $field:ident) => { + match $self { + // No Orchard shielded data + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => None, + + Transaction::V5 { + orchard_shielded_data, + .. + } => orchard_shielded_data.as_ref().map(|data| data.$field), + + #[cfg(feature = "tx-v6")] + Transaction::V6 { + orchard_shielded_data, + .. + } => orchard_shielded_data.as_ref().map(|data| data.$field), + } + }; +} + impl Transaction { // identifiers and hashes @@ -1021,12 +997,60 @@ impl Transaction { /// Iterate over the [`orchard::Action`]s in this transaction. pub fn orchard_actions(&self) -> Box + '_> { - orchard_shielded_data_iter!(self, orchard::ShieldedData::action_commons) + match self { + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => Box::new(std::iter::empty()), + + Transaction::V5 { + orchard_shielded_data, + .. + } => Box::new( + orchard_shielded_data + .into_iter() + .flat_map(orchard::ShieldedData::action_commons), + ), + + #[cfg(feature = "tx-v6")] + Transaction::V6 { + orchard_shielded_data, + .. + } => Box::new( + orchard_shielded_data + .into_iter() + .flat_map(orchard::ShieldedData::action_commons), + ), + } } /// Access the [`orchard::Nullifier`]s in this transaction. pub fn orchard_nullifiers(&self) -> Box + '_> { - orchard_shielded_data_iter!(self, orchard::ShieldedData::nullifiers) + match self { + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => Box::new(std::iter::empty()), + + Transaction::V5 { + orchard_shielded_data, + .. + } => Box::new( + orchard_shielded_data + .into_iter() + .flat_map(orchard::ShieldedData::nullifiers), + ), + + #[cfg(feature = "tx-v6")] + Transaction::V6 { + orchard_shielded_data, + .. + } => Box::new( + orchard_shielded_data + .into_iter() + .flat_map(orchard::ShieldedData::nullifiers), + ), + } } /// Access the note commitments in this transaction. diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index 599d8ab4cc9..4710785356f 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -390,15 +390,13 @@ impl ZcashSerialize for orchard::ShieldedData { } } -// TODO: FIXME: Try to avoid duplication with OrchardVanilla version #[cfg(feature = "tx-v6")] #[allow(clippy::unwrap_in_result)] impl ZcashSerialize for orchard::ShieldedData { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { // Denoted as `nActionGroupsOrchard` in the spec (ZIP 230) (must be one for V6/NU7). - CompactSizeMessage::try_from(1) - .expect("1 should convert to CompactSizeMessage") - .zcash_serialize(&mut writer)?; + let csm = CompactSizeMessage::try_from(1).unwrap_or_else(|_| unreachable!()); + csm.zcash_serialize(&mut writer)?; // Split the AuthorizedAction let (actions, sigs): (Vec>, Vec>) = self diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index 6671babe580..2d11118ae3d 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -142,7 +142,7 @@ impl From<&ShieldedData> for Item { let anchor = tree::Anchor::from_bytes(shielded_data.shared_anchor.into()).unwrap(); let flags = orchard::bundle::Flags::from_byte(shielded_data.flags.bits()) - .expect("type should not have unexpected bits"); + .expect("failed to convert flags: shielded_data.flags contains unexpected bits that are not valid in orchard::bundle::Flags"); let instances = shielded_data .actions() diff --git a/zebra-rpc/src/methods/get_block_template_rpcs.rs b/zebra-rpc/src/methods/get_block_template_rpcs.rs index 30661b664f7..2d50552cfec 100644 --- a/zebra-rpc/src/methods/get_block_template_rpcs.rs +++ b/zebra-rpc/src/methods/get_block_template_rpcs.rs @@ -1234,7 +1234,6 @@ where // Separate the funding streams into deferred and non-deferred streams .partition(|(receiver, _)| matches!(receiver, FundingStreamReceiver::Deferred)); - // FIXME: Would this work after Nu7 activation? let is_nu6 = NetworkUpgrade::current(&network, height) == NetworkUpgrade::Nu6; let [lockbox_total, funding_streams_total]: [std::result::Result< diff --git a/zebra-test/src/vectors/orchard_shielded_data.rs b/zebra-test/src/vectors/orchard_shielded_data.rs index 26ea56a15a5..405539cb2d1 100644 --- a/zebra-test/src/vectors/orchard_shielded_data.rs +++ b/zebra-test/src/vectors/orchard_shielded_data.rs @@ -1,4 +1,4 @@ -//! OrchardVanilla shielded data (with Actions) test vectors +//! Orchard shielded data (with Actions) test vectors //! //! Generated by `zebra_chain::primitives::halo2::tests::generate_test_vectors()` //! diff --git a/zebra-test/src/vectors/orchard_shielded_data_zsa.rs b/zebra-test/src/vectors/orchard_shielded_data_zsa.rs index 58713e436c3..3e0c20fa8f2 100644 --- a/zebra-test/src/vectors/orchard_shielded_data_zsa.rs +++ b/zebra-test/src/vectors/orchard_shielded_data_zsa.rs @@ -1,6 +1,6 @@ //! OrchardZSA shielded data (with Actions) test vectors //! -//! Generated by `zebra_chain::primitives::halo2::tests::generate_zsa_test_vectors()` +//! Generated by `zebra_chain::primitives::halo2::tests::generate_test_vectors()` //! //! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` //! instances, care should be used when using them to test functionality beyond From 333f59c7e1aea30e9db951a7a528b80f9ca6dda7 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Fri, 23 May 2025 13:07:22 +0200 Subject: [PATCH 210/230] Fix cargo clippy error --- zebra-chain/src/transaction.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 4109d210f27..d4c2731bc70 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -1008,7 +1008,7 @@ impl Transaction { .. } => Box::new( orchard_shielded_data - .into_iter() + .iter() .flat_map(orchard::ShieldedData::action_commons), ), @@ -1018,7 +1018,7 @@ impl Transaction { .. } => Box::new( orchard_shielded_data - .into_iter() + .iter() .flat_map(orchard::ShieldedData::action_commons), ), } @@ -1037,7 +1037,7 @@ impl Transaction { .. } => Box::new( orchard_shielded_data - .into_iter() + .iter() .flat_map(orchard::ShieldedData::nullifiers), ), @@ -1047,7 +1047,7 @@ impl Transaction { .. } => Box::new( orchard_shielded_data - .into_iter() + .iter() .flat_map(orchard::ShieldedData::nullifiers), ), } From 9bb723aba8f943dbd8c698ede2b78a83ef282f8a Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 26 May 2025 10:26:09 +0200 Subject: [PATCH 211/230] Generalize verify_v5_transaction and verify_v6_transaction functions by converting them into verify_v5_and_v6_transaction generic. The ame for verify_v6_transaction_network_upgrade function --- zebra-consensus/src/transaction.rs | 158 +++++++---------------------- 1 file changed, 39 insertions(+), 119 deletions(-) diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index 90ba7726efc..ade68d265f0 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -406,7 +406,7 @@ where orchard_shielded_data, .. } - => Self::verify_v5_transaction( + => Self::verify_v5_and_v6_transaction( &req, &network, script_verifier, @@ -419,7 +419,7 @@ where sapling_shielded_data, orchard_shielded_data, .. - } => Self::verify_v6_transaction( + } => Self::verify_v5_and_v6_transaction( &req, &network, script_verifier, @@ -503,6 +503,26 @@ where } } +trait OrchardTransaction { + const SUPPORTED_NETWORK_UPGRADES: &'static [NetworkUpgrade]; +} + +impl OrchardTransaction for orchard::OrchardVanilla { + // FIXME: is this a correct set of Nu values? + const SUPPORTED_NETWORK_UPGRADES: &'static [NetworkUpgrade] = &[ + NetworkUpgrade::Nu5, + NetworkUpgrade::Nu6, + #[cfg(feature = "tx-v6")] + NetworkUpgrade::Nu7, + ]; +} + +#[cfg(feature = "tx-v6")] +impl OrchardTransaction for orchard::OrchardZSA { + // FIXME: is this a correct set of Nu values? + const SUPPORTED_NETWORK_UPGRADES: &'static [NetworkUpgrade] = &[NetworkUpgrade::Nu7]; +} + impl Verifier where ZS: Service + Send + Clone + 'static, @@ -706,7 +726,7 @@ where } } - /// Verify a V5 transaction. + /// Verify a V5/V6 transaction. /// /// Returns a set of asynchronous checks that must all succeed for the transaction to be /// considered valid. These checks include: @@ -726,112 +746,18 @@ where /// - the sapling shielded data of the transaction, if any /// - the orchard shielded data of the transaction, if any #[allow(clippy::unwrap_in_result)] - fn verify_v5_transaction( + fn verify_v5_and_v6_transaction( request: &Request, network: &Network, script_verifier: script::Verifier, cached_ffi_transaction: Arc, sapling_shielded_data: &Option>, - orchard_shielded_data: &Option>, - ) -> Result { - let transaction = request.transaction(); - let upgrade = request.upgrade(network); - - Self::verify_v5_transaction_network_upgrade(&transaction, upgrade)?; - - let shielded_sighash = transaction.sighash( - upgrade - .branch_id() - .expect("Overwinter-onwards must have branch ID, and we checkpoint on Canopy"), - HashType::ALL, - cached_ffi_transaction.all_previous_outputs(), - None, - ); - - Ok(Self::verify_transparent_inputs_and_outputs( - request, - network, - script_verifier, - cached_ffi_transaction, - )? - .and(Self::verify_sapling_shielded_data( - sapling_shielded_data, - &shielded_sighash, - )?) - .and(Self::verify_orchard_shielded_data( - orchard_shielded_data, - &shielded_sighash, - )?)) - } - - /// Verifies if a V5 `transaction` is supported by `network_upgrade`. - fn verify_v5_transaction_network_upgrade( - transaction: &Transaction, - network_upgrade: NetworkUpgrade, - ) -> Result<(), TransactionError> { - match network_upgrade { - // Supports V5 transactions - // - // # Consensus - // - // > [NU5 onward] The transaction version number MUST be 4 or 5. - // > If the transaction version number is 4 then the version group ID MUST be 0x892F2085. - // > If the transaction version number is 5 then the version group ID MUST be 0x26A7270A. - // - // https://zips.z.cash/protocol/protocol.pdf#txnconsensus - // - // Note: Here we verify the transaction version number of the above rule, the group - // id is checked in zebra-chain crate, in the transaction serialize. - NetworkUpgrade::Nu5 | NetworkUpgrade::Nu6 | NetworkUpgrade::Nu7 => Ok(()), - - // Does not support V5 transactions - NetworkUpgrade::Genesis - | NetworkUpgrade::BeforeOverwinter - | NetworkUpgrade::Overwinter - | NetworkUpgrade::Sapling - | NetworkUpgrade::Blossom - | NetworkUpgrade::Heartwood - | NetworkUpgrade::Canopy => Err(TransactionError::UnsupportedByNetworkUpgrade( - transaction.version(), - network_upgrade, - )), - } - } - - // FIXME: Consider avoiding code duplication with verify_v5_transaction. - // FIXME: Fix the following doc comment if needed (now it's basically a copy of the same comment for V5). - /// Verify a V6 transaction. - /// - /// Returns a set of asynchronous checks that must all succeed for the transaction to be - /// considered valid. These checks include: - /// - /// - transaction support by the considered network upgrade (see [`Request::upgrade`]) - /// - transparent transfers - /// - sapling shielded data (TODO) - /// - orchard shielded data (TODO) - /// - /// The parameters of this method are: - /// - /// - the `request` to verify (that contains the transaction and other metadata, see [`Request`] - /// for more information) - /// - the `network` to consider when verifying - /// - the `script_verifier` to use for verifying the transparent transfers - /// - the prepared `cached_ffi_transaction` used by the script verifier - /// - the sapling shielded data of the transaction, if any - /// - the orchard shielded data of the transaction, if any - #[allow(clippy::unwrap_in_result)] - fn verify_v6_transaction( - request: &Request, - network: &Network, - script_verifier: script::Verifier, - cached_ffi_transaction: Arc, - sapling_shielded_data: &Option>, - orchard_shielded_data: &Option>, + orchard_shielded_data: &Option>, ) -> Result { let transaction = request.transaction(); let upgrade = request.upgrade(network); - Self::verify_v6_transaction_network_upgrade(&transaction, upgrade)?; + Self::verify_v5_and_v6_transaction_network_upgrade::(&transaction, upgrade)?; let shielded_sighash = transaction.sighash( upgrade @@ -858,14 +784,17 @@ where )?)) } - /// Verifies if a V6 `transaction` is supported by `network_upgrade`. - fn verify_v6_transaction_network_upgrade( + /// Verifies if a V5/V6 `transaction` is supported by `network_upgrade`. + fn verify_v5_and_v6_transaction_network_upgrade< + V: primitives::halo2::OrchardVerifier + OrchardTransaction, + >( transaction: &Transaction, network_upgrade: NetworkUpgrade, ) -> Result<(), TransactionError> { - match network_upgrade { - // FIXME: Fix the following comment if needed (now it's basically a copy of the same comment for V5). - // Supports V6 transactions + if V::SUPPORTED_NETWORK_UPGRADES.contains(&network_upgrade) { + // FIXME: extend comment to cover V6 + // FIXME: Should V5 support Nu5 and Nu6 or Nu7 as well? Should V6 support Nu7 only? + // Supports V5/V6 transactions // // # Consensus // @@ -877,22 +806,13 @@ where // // Note: Here we verify the transaction version number of the above rule, the group // id is checked in zebra-chain crate, in the transaction serialize. - NetworkUpgrade::Nu7 => Ok(()), - - // Does not support V6 transactions - NetworkUpgrade::Genesis - | NetworkUpgrade::BeforeOverwinter - | NetworkUpgrade::Overwinter - | NetworkUpgrade::Sapling - | NetworkUpgrade::Blossom - | NetworkUpgrade::Heartwood - | NetworkUpgrade::Canopy - // FIXME: Just checking: is it correct that we consider Nu5 and Nu6 as unsupported for V6? - | NetworkUpgrade::Nu5 - | NetworkUpgrade::Nu6 => Err(TransactionError::UnsupportedByNetworkUpgrade( + Ok(()) + } else { + // Does not support V5/V6 transactions + Err(TransactionError::UnsupportedByNetworkUpgrade( transaction.version(), network_upgrade, - )), + )) } } From d88120c368e79282c7fbec63ad81490e6e15f0be Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 26 May 2025 11:06:35 +0200 Subject: [PATCH 212/230] Fix FIXME comments in transaction.rs --- zebra-consensus/src/transaction.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index ade68d265f0..6283da8830c 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -519,7 +519,6 @@ impl OrchardTransaction for orchard::OrchardVanilla { #[cfg(feature = "tx-v6")] impl OrchardTransaction for orchard::OrchardZSA { - // FIXME: is this a correct set of Nu values? const SUPPORTED_NETWORK_UPGRADES: &'static [NetworkUpgrade] = &[NetworkUpgrade::Nu7]; } @@ -792,8 +791,11 @@ where network_upgrade: NetworkUpgrade, ) -> Result<(), TransactionError> { if V::SUPPORTED_NETWORK_UPGRADES.contains(&network_upgrade) { - // FIXME: extend comment to cover V6 - // FIXME: Should V5 support Nu5 and Nu6 or Nu7 as well? Should V6 support Nu7 only? + // FIXME: Extend this comment to include V6. Also, it may be confusing to + // mention version group IDs and other rules here since they aren’t actually + // checked. This function only verifies compatibility between the transaction + // version and the network upgrade. + // Supports V5/V6 transactions // // # Consensus From 852730ba0d5c3aa0108bbe3fb13f4259c70b25fa Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Mon, 5 May 2025 10:21:06 +0200 Subject: [PATCH 213/230] Create push-deploy.yaml --- .github/workflows/push-deploy.yaml | 57 ++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/workflows/push-deploy.yaml diff --git a/.github/workflows/push-deploy.yaml b/.github/workflows/push-deploy.yaml new file mode 100644 index 00000000000..ebce405cb7a --- /dev/null +++ b/.github/workflows/push-deploy.yaml @@ -0,0 +1,57 @@ +# This GitHub Actions workflow automates the deployment of the Zebra Server to Amazon ECS. +# It triggers on any new tag, builds a Docker image, pushes it to Amazon Elastic Container Registry (ECR), and updates the specified ECS service to use the latest image. +name: Deploy to Amazon ECS + +on: + push: + tags: + - '*' # Triggers the workflow on any new tag + +env: + AWS_REGION: ${{ vars.AWS_REGION || 'eu-central-1' }} + ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY || 'dev-zebra-server' }} + ECS_SERVICE: ${{ vars.ECS_SERVICE || 'dev-zebra' }} + ECS_CLUSTER: ${{ vars.ECS_CLUSTER || 'dev-zebra-cluster' }} + +jobs: + push-deploy: + name: Push and Deploy + runs-on: ubuntu-latest + environment: production + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - name: Get short commit hash + id: vars + run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + + - name: Build, tag, and push image to Amazon ECR + id: build-image + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG_LATEST: latest + IMAGE_TAG_COMMIT: ${{ env.SHORT_SHA }} + run: | + # Build a docker container + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT -f testnet-single-node-deploy/dockerfile . + + # Push both tags to ECR + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT + + # Output the image URIs + echo "image_latest=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST" >> $GITHUB_OUTPUT + echo "image_commit=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT" >> $GITHUB_OUTPUT From b9f7083c8c5e92f3be2c1d1f5619cfcc90bb1e97 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 28 May 2025 11:04:46 +0200 Subject: [PATCH 214/230] Remove allow(missing_docs) from zebra-test/.../orchard_workflow_blocks_zsa.rs and add a doc comment there --- zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs b/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs index 68308c147d5..87153e35be3 100644 --- a/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs +++ b/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs @@ -1,11 +1,12 @@ //! OrchardZSA test vectors -#![allow(missing_docs)] - use hex::FromHex; use lazy_static::lazy_static; lazy_static! { +/// Test blocks for a Zcash Shielded Assets (ZSA) workflow. +/// The sequence demonstrates issuing, transferring and burning a custom +/// asset, then finalising the issuance and attempting an extra issue. pub static ref ORCHARD_WORKFLOW_BLOCKS_ZSA: [Vec; 5] = [ // Issue: 1000 "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f027f6043d927d72f8b5df9984fdd36d2e2e1fd1ff8f7ee04a2b7da9306c14551c40000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000100000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000001029063000c87d7145492f9ded4d37b4ffdee769a1c41b0e17d622cce77f122d70ddb74fb50c5c36666482476bf5e8e190dcd8f5ed280af209b3f679d4dc06a213508774e2f7fa82dff9a985866919085523b13b0af4f534975228468feb62cb12575681e6101284f0fba5628e2ea531e9dad53d864c854e419e4c5b91fb7b35d00597572f98db1bb9f3049dbb9a08d403efd824d9d118a68493191e059ca00b2982252a2ffe5c3918a79171c294481fa267e83272858592d5890884feb90752347f33cfc9443e70a9f30d6150652eb2bb04327ee72b9c5e42462d4d2bd92725df50ce267c1588d29b08b25a719738e836f9c26ee47ce3945f9b627c4b9d3bc8ae755d8b78b840f1fcd055cd179af2ae0637f49fcc44cc975abb478fbd9922c15e946e681ff6aa64ac7275d58c7811c3d87c4e48dc97e35ca68780218e256f8bd7d9c1677bff6d75f663d24802a7b433f4461d686e1a0fd3d214b81b1398f8f79d062c4e92381741c3f96f3e81f455c96d05a623985e39c1d16361928424286483b40cc9b1249032dad9bf92a563bcd978c329ede5eb5c7933f937b6f2b73507c8ed0a2d4ca972281ed79bfe367b474b6fc89a29f20c913a7e42287074a185ea83fca9d0db796cce2cca07f3cd379eba7efdabf86a594e6743b0f30d3315daedd2afe289422cc0a5b73c3e837dc2efb5975e4fa8183fbe68b5688bd827472c41248bacde976d8f16700b4f6c9d6c83afc134e3766b7afdd85be2e373f98a7ef0d2ae19e98bfab76f3362888f3e81917b22236c6eae7c79ed9489410903bfbacf77bc1f0de11692cae0289c786ea3eb08f7fc652146d2529d0217801e2dab9d67c13cdbadd189fa302fbd402c4befe5823e70a802dd9c712396c20028f4f7c94a49409b169fa46a7569fe289d7189adb3e5e9d9dc63903aed828ecc3ec0144b59592a6a88c589577b976b7c781b3b43eba304130bf38971784c7caf8e5994d2ae59eede5ba220d7c43378b492e69c0d7b06445a49174b6aa27d08dc186b7bb5ec6b6b6e3b94185d5d10a07887b5f66f9991aadc239b578426ebb61b85ad40bd80aef5c4707963c2d2d9b79dd9cc416a597aa83c4e74cdebda03d6b7a1cd0238e88161d8ba579987335998fe39a909488455b11937e11d751f425ce7cdee73e8a99042f03eec4b4c00329da7dd90b75ac8918924205cb98346c5ab54096e7a91c9f44c4b21a885d36813221546da0609be857260bd691dff247d867f224ab98015aae153ec30248e15b5c0b2a0731496cf0518d9c63202f93d9f2023022d3fd3c83ec465ad3695d0e0d1ea0fb4eaf9dd8f6f92919ba1461e2d6e80f5d89e6b9b6d5241bffe1d91604c02e13592ef10a4b87612f82ce32b50550f0c46eb4cd6d081152b2123b0ae617e74a6f31f8721e8fcddee49e4c9269517fe55d7e364407b9fec4fb22711585c535bd6a3a656634cf034e30d4bed6e14c56ae98646a3fc42bc4906eb02cc80afdc9c5cd824ca22772567d8aec88c3b4fdc91d34133e8bb2a2787c4fddb3e5065fab306caf686f2684635aab39232c71d9211358eb2491ae39d0c5464efc0ae97b166821956d3c3e70acc7871b3d3c7a00e54e0974236fc1243caa57e04d1ddc3c42d67e23607830aff5540a806c6abc2621035f7e4280c7cd0eaf70db3e88d84da095e0c1a4d0d62728c2f8a939ac274fcddc1442b9993bd8b7f1a965b31af20637c789d93aa5e09fa6eeb4b55393f68cd9bc1a8c67f6d484b9c2134a25478e1fd28e0960ffcf8e36492e4b12f0c787fb16e80d7d0e92ab94a34e53c1b1c0b63db557e54c8e0c919073ff2366c83a4ca9b07b639172dc6df0b6602b3e8977ec3becf6b716c55fcdbaea993494e50b49a9dc8e7c09118942432ea3c5a036d4267928f2393072dc3734dd841e0c37cb2d50fe2f75c5dc77ff9e1540a52b136967862312de74af7071d4f17de67775adf87f1e540161a4eaef191a93aef5daa5ff7d42e36fcb31dd1edd73ba829b32a6d0ee48878bd6ff3ef472f48e9e8bc1f479c34f3d5509288f3181a49a8f3d7771c5cd076533924dc67b96da721ec8a19a85f903c2a2eba21c0146526dff8a8be77831f558be214c43efa29ed6e9be6a2d8e712a745bdcd0f9bce70f997da5928cee6775164168bb343d2613821b4814a1198df32cdab2da48c0188dfeeacef916472529503d8a63c4b2092133c31770d79ac922976417ba6a2d92b4108ca7ae496e039a7ef38deb19d22e1116e92e9cdd0a371b27226e6dcfb14ef5855adaf2949d1e764c6f83bd7e4259dfcf4d1831e2d9b80145128ebbcb0259e3cae8ac973204fb2bbdc5e9d967c6f7e5e4c6f0c139b4a07aa6b63430ff511c223c64933f5fd8ea367d4829c63938a2ee54b3469383824bab4807ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82f0000000000fde01c1ce7832fe7add3bc1fd885958fc5fa1697a0336a4504ebac5d683237a8510183f29c22defb607c48816c49704d3ce388ea27bbc7765a43961fba354af095dc9984dd6b892f223256347a3a59083aed6de70dd327a95e0f3dd1531d01f874829d8095242883e06045c1186ab08124b5dd0b5ec86c6bdd12f5713fb6ce125c0203d9191bc63a1de897698f59060b124cd81b8cea5e2a026577ebae2edf3e238203b670331c0cb32a229e263305484d7f3ef896c4e03bad52bee2250296698b47bea4f60342a23e0ab908a3c094543fbeff20748c3e75b7cf9755813388d5d8871f862bd444e3469e9e72302321bf35114dc6c8341c838f962debbeebf9727a132ea1a03a0141d6965bf152fcaa6d18ef7c24e32103cbebd9c1c87f0601da6e4f07af42615a0b2d41aebfe02e1c2ffaaced5c3d996c8fea947adf7975c4d6419b20aa0c804b867530bc1d1d6103ee6a6674530fed4b4a1289d4376902fc5ed33392111c323f6e73a07ba04c69f8e4214be8074e76124e84990d53091a4b95a9d482a0b2447d911255bb3f312c706151d8a87d284aaa0e4e24c059c07f4952d3fb0308acbbe1513842cf7881159080f10bd0f169169d0c0c126770a9b7985f0aed262ba2749b2c9a237fafefdaac68b8756c2a628f5bf2b7bdd804d23e2a8b9eb70dd38586c842d7a0e3c71dcbe5e651343375adde02e5501107339538b0e2dc45a9cb2eb8831ad77bb61d0359ad4c1a2dc31b29a850a31d7e72d00b978de4b570a9a4e4a403156cdf351154975975d424bd9933415081cdca5eeb411c4a723b6a2d19ab96d3a9ff273d5e923d158425319cce5c63c6ee3adbc5b36e05597472669d4bb48a292271a10a85ff7274a74e5a96e223d0705c08da720425e98ef270f907a20085babb3f642bf67dd8eb3fda67592b6dee4360895e22713783899ec9fe37f861e73cd5261a0be04af440b5f35fcefd345bba49a02f7e754bd5276e343a8f1f081f7e904295a12f57d8b0927be322b35368c463525415e5fc01e43c7064331258ef895a5f0f23bdc7b2095c2d27011bf17dbe37eca66d44ef565ab7cf9280a64651a39635b042ac1b74bbbfcf792e92cadaba08677a836f10bb0d1acbf1318c7b39dfed8b7ca0d64a24ca09d717dc618e036818ea11c743aa6e6a2fbbdd0c42f7c59122392bb90515b425b62ccc85b311d880cf24e621f100cdb8552c4e02360583676ae33cd314bf49a5b6979e6a7fc379759bf1dc9ac51b62c8b1851b87a58ac9fd2a9f30a61e7d96546ce53f8476b575777a533484777fa4ad9d921aa589f4d880de9c28c93c26e6d4284a3ce64ddd454490f73c9db8f4f1f49e9cc939405d635f6ba3be2511c2c1462d65905d8f2f40fb82d112141fd9591bf88ec98f82aee3e7d0a8c0156bbad06fd3eeab3da041ba47c572b3be65bae532893ae1b69d3e37a055c02e994e8429aba5dd5b455335144c63d6ebc6171423f2dd8ac600e648d34512929d7fb66b5fdb19f004c7e75e5e1d5e7af29a5acc9b87c8563c97b1c4cfc848676b1a38ac76ef4ab441f9235325dc1416911bf07ed7c598f6fc1c16b7d4a92489b5821f7151a11ce2dfe04d95d661a5cf284b4bbf83baee5165a3ceba103d36d15fc1a9739229e21789210581f9206323cf03526e2aa38f614bb59853128dd688b711afaf15986e89cac8b4b93b1ee24d55bc40743a4783746caf4f5bcad200363785c754d6af2dd5d519a4151223148e4f5c89703dfd209d8a38b5bc55c5f1f644e6e071bdd8f6597141c37530b7ef9e513c49f9b7b0e0c743830931ae2958c73b14ab1f35e2618298db2c437c95d6d4b13c41b4bdb51f13c1813762e213e18655382d670f55d97b2ed83c695488efe5831ec82656c6d42baa154388d4e212fb5c980b87476e62f4d8e84302f23c54b95b7b1b74e0e44219dabb8e8b4d4830a7494b627e1f6e62a634b86dc821dbaef4e3e3b53e69ad670f1588f2aebdb702828098508060b53cca72fa8c92881a20a852eb1315c2439ec89fa183e67a81c6590dd51a743553fa48fa9f10495c6249c7bbc51ed08e703ce7103e28b12a263fbe66466ad66c11bd9c66c27494b9815e1600bcb2e4248a514a421bd0b0363d8888ad8c9c3605b005a51e77af8a3ae4009f34a24ee242a60cf5c0b2860c715cc56337fe9983a893be43fe75c87997d6eff3e87ca34923fb39993dbfddca1d9861b9314bf420dfef04b0edd9fc9a5b6d7ecedbb7d669a5cdb5045f9a7217f83c62e3eaab4fcaeb347062b02857e7c073eee827e0f1a9c37f4fc3a914b2f583f5632a2fb974aa64f08245c706ad94e29f7b8d1b8b5a423bc3b5b4dd9106d1fa787a9d5d6f64f3273f3758600ff39b6ff0690d7f4dde701aa04e664c9c3f622622736704a523f78bcfad7e882cec28183bf15316370dbd4f3164bdb1224f49a27121e57f7cbb7f8a28650fd2589cd109ac1040194c44bcb8479d655800cac9fe82717e9496bf32e8d3e3a4b5fa7826f4cc86878fd4ef9857640c59b60ba7276af3e449679fa78939dc590c1fc392b854c7e8c4528108bda4e4a0c14d27adff03c0429bdabbe2df4249311d5f7a7ec35f023b166f7de5a1a521615db0376cc1237ec902a4f76624a8a5c65a293d4ef3344429aadb482633bccdcbe1160dcd098b71deb84153068083cc6976cb9fdb46dbe226fa587970fdb4fb14b07720de20cae800014c66da833530b84d7f5f1977f74813507715dda0071e845f9c291fcc4fa4513b24af47000d230d72ee0a42c0a356c1f96fca44b313396c974b0849aa95d0062562d0fbb31d47af78e4e857cdbb43f2014ebaa8cf796067863b0444bf7a3a207816c5eb8dac792d15a01f7ce0bd48a5a3687cbd8bedd364d176106561493bb8e83f63bc67fd07f8b11fcf3bf99b2a1daac1a001ee09d6f8d3973c623b8838988b4faaa1d9151233ff1cb89e947ccf322d59b0011fbc1bf66f5a2867c0a35385d55463cb7fd01db5932b9a163ee6cc11ef0d19e09e2dde4245571fa01b8624926e27a9bae527a27dbfa1fec4c5687a6193a5336469ff40fe03eb0338889dadd86d84a6381b2f65cdb3b6880ee67de08572d6fae5c5df6b2ec4e1216a5999cb3c2bbdffacb157d1e94061b4eb985d153b8840c537463e8a15e5533215522f1d4ab74f09a21b1e9c851688c2131f7da84c95f390eebae35dbdfe1e28d5d0755d419707317ea45d75e88c40d5df34316fcc7f59de8af82e1cb0ba3e10ff1775b8d6f6ba2141a1f83b21b577afea554f709fb4c373f6dbc66a4e97c31a500129684d7315874633453e7ac8c10f63ae4708b28361c772725a110fd3e626b020d8b5b3820faf67e02e3feb9d13ba99f40b6ae834ce75881c44d8124f3f234cd003d5cdda116a218c3dfd1019690b31ec2546b0be2660aeea3b11d375cc19ca2c57fb3ca817a53dd3357cd5f0b72c3a06dffee32ee613eb53a0f679662108f42002ea24bf40c2db026dc595710d23bd9ef571dd37134955083c25ab968d23bae81d22c3a16f10f3d75cfd7eac8337226dda9554093db1c60261931c278b11846796d56a477f454ee04053268709b935b198ffa096dce5c9d3bb1bbbd8fc19a38d529603881a9d449f522650aefa9e0530d92f2712c6122bc874587fc80c29beeee0c2f532607cc63aa8a91413bbc351a2a355b40b3fad7871976b6a46491ca94607f27b2018af66a8d6e429b8955a68e10f3585666b40005248f39fa274020d57f76af52e860f6004f20b33174e16b184d39f90ad5c563da44be6a526de1b258a20649fe5b084b546417385ede6ef19ab6770dd56583d2f3d36901aab371a341c1fbf11929950845b05b833dabff5608b2b0346d8f41ffb24b2be3187cd2ca86d06e8adaedd3f3e9ca9f6e1cbb85bf6c34eb3dcdd9931edf2312e4348481d3ba48a33ee57a314c77196fd28b63546963da0c3edb742934e33daed72cbd80b1ff33a716e22fcff53b93b8791238a92f62070a6c8f74d3c16116c1f9743bf100e0fe3e1dfd512e60fb075f193b3d100f8327a8b7011b1a12c519ec902d7183a09958adbb491a9e9de0070fc685b3963f1617112aa4edd1a4bd35bb459ad121e34851230f78913c59ac8d766b84ab510f657257a109de229ddb30b3db025f620604df250741b4eb757f6a0b6d2a0ba2cee7ac1046800eae0519243380c404a133766b685997236bfc73e3317e2da32c9f449aecebbd02c28c5e62226aeec140e4c38dabc0c6ae4d6fbd5aedab7abe0d2b0b0c7533367db3ab39ca127f688ef34aa4a61bf2cd2ca5a0f598b8009e5610efb05da12495c0bf02eec37fb857f7d1943f8f76093a27b422a910f4904cfb836f62d7ac295760ab9f2587f60e83d402854e9a3550a190f59fbcc5c94e6f6bcf9e9d7527ef7e6c4afb13b928fd2fbba2ae008f19da2d385881dfece30a3c9433909bae080e01f09e987a059f368d7712246839159ec183345e5a8607e860bf1948134d1ab791c2446094d012e14e1a82fa5d95106c0c9626df1e7e56cb7e6cbcfbea965f64cc4255319eff09bcc40ab3ccc7294ac369701ac1f083b615e532d13ea809eb68967b031fff2b0536b781e08688a51de3629d4c8e3e29987b4ddbccea41b7060ed9f635da106145bbd4dd2045f2215546edfe71205f5a139bf5e9af5b68d4c34acc19307d23b7971da98ec2ebc8282aeabba8f1a46af4baf00276aa0e9e5c212865d763687335e1ec2d6c813a516bb2f2b79056100b07488ce2fd5089be296ead42ce345ef58f73543ab102ed79e426521fea60dcce47e498180ee94f1e69bf862c9e014ad60f6041819f01107812803c986e547a5fb744dd766b92e22ca8621b56190ab1a7019eb9e288114c4c450d08a95da7282278239f7fa073a8ce444506ae171e0dcd54d1861362f12957b366b92dcb0480017c6a397b27506c55238e1656355786704489fb54bf1257e90a246f92ead455166c4217b610682a6446514a1b59d5facfc7041d4e639046e60262097557cec24c59629b891229e714db79a80e830af7fa7a2112e60ff1fb95741f39c51d37c3be241e9990bf14c325e558483f65408ba25c4cf85e10122cd5cba6010db487930eed9bedac4d533825c657aac9cb709920f6c9a537b76194eab8c330fcc7891e24207f5ca76980d94bd1b6db41692ee6bee117544e98620de4390da019b63757bc78ea7d0e27c2fc6b92d8c0366e23ff1d5a38130e5183340a905cefed2bd332d443c6fc6c3f4601bd3e4927b40388c00c842c93d01ac365bb6272f28ad28ecdbc05dc2e4f61175cd36f5fa5a4771e0dfb6e13cc2ba910e28f11fa13728bf2dc57e279ec67f8046187bdb99cabeb0c3c008c6ef26ca382f9940e0b02771fa6c2f69f1116baac1adedfae6ff68dc8cb249c112ce6f9a6208cf1fb4c4183995326dd690bc4531de9ac85a0be2f6b0795b6f9bc700b7628c272f245de3210d89fb7b552a731672779675ece0963c2835ba8c6ece9cc4e55b2d077489cc8a83558a1261a452dce0317cb8ef4e8642f3d13090305ad345906b180e50dece886830f7a349e3477a0f10df57a81a5f895e8c043085d331cd1bec20f7b8792871912776be3ef4b8b411ca9cd9a9dbd92d1f66c90b23d35b1d0cad3acbffab5141b5171336753289274d897c2449e9316c3d19fecd86e454a51c820c080ceef6421565d481792501b582190d960776cc5c6bcc3f6a33a92e213f7c2e932d8f1513d1d2bc31cdb0c9550ea21fb9d5db1acb01eaa804c594f98777652a7af27184e4ada612201c80f18d1cbd5f9a4a535444934b72f6262d582ac5802bc17c106bcc4a53eb4af6334ec1eec602bef40366d91f4b4df477f2b3b6be2111e0e6223c5f43811ccbb3c31f8f4c2138927377521cee9954a493340596fa0431fb953e7ee3c0a15b37f47592fc4cef4b47c759d6278b4fe5be6519c9927e9c08f6e89c6ff99ca69c9f89e27133b52197520b873c578ade66962bc18d0726db271671bfbe8c21c16eced0675a58ff1497cb00e239481adc4656537b80830b37264e7f1b50e3780f32ea57c9125c73f07e33cb30a51ec6c4dc98c4f9337d62152ba544eebe4d7a8eaef723ab85570d549fb90687f3b4782f7647988ca3e97b6736bdbd7cfb10393405a86118ccc415a16e7614230828430728618da31e37792f043e3777049052d58957a352e54c16b3d93c8595220a2e8322f2da669f11be3817955f1a350d3591ac81d7e627015b0653cff1eae964f89acfa41663a833e65235627eb67d30738f170da134de1d58499997315a329dcb52fedc30171f948f6f23a2be30b49398a2162f469eb161e752faa487c533e0ac6aae88c6d7ed64892a0ae4afbc2b30ace36ca7ddf4f1334b6731641599b0d2540c4fef4ae6d9c0b81c2d356b98178360b853a501dc1866343e81fccfe0e99b1042d10a38ef3a5cb20434118e16eb23244446ae69bcc1a1e699cb5981c206689578a9a2b3f6aa3ca37f1e09346fa2f4f7695a6b8f7087e9763f52d06de4208a4cc02e92801883f89ecd396248db5f0d2ef527a75d924216fcae8c76178c0b7c27f618331fac021e6c9a3a9e585d1c160f53eb39ebf4b1b3d84d97b2cb9d0f616e9b2ae10bb9e592580f27918e4a17be2570f5e4283aa8420189f72137606e2be0a9e2ca81fb2312caa0208747005ffea881f8a44add38303e7d080e4be30b44271aeb4feb37101c201d0f8504e711324ecd3b4dee9d69348c22656b7edc5f68b236030273890e9cad41258e1445ec934f9b4b2b2792365b52d0b44bbccbc721494a5671a60ed4fa289e203c68ab3c4b88ac36f9adc91a4a6c8cc4c52feb2eb34b64667a74c3bcdcd6e438e20d2b6c499500f488edc872165133fadb4fb7713a49de17f60ca4d780918f3cfe19ca1447f83761ee1808436e310fb7cc32db065c5923a4537d233be2f3311a5ea416c6bf280850647c650ac01835351eede816511edf33e59f467d0936af21a4cad0df6fbdd6711e198d896115cc3dcfac0948522e231b34e47dcfd05b921df497b190af5d621c59c94c34bd405c9be00b6dd72cde87e93ea313039c01633335044ffa8bdea20d3b8ca5db2c4516b5a59512d09d281b187722c8a5c9ebdb2064871229640354e9aea165dddafddfee4dfc1001d38229e51ab7fc33460b4b1720300aede7973a8c940e6ff297225d53bfaa6880b2b4c0ac261668eef9d6823dd5b0c6215d16c00df561e9c4abaad3ef0da84ddd599d56691dd1b121a6120c3408bdcdd972f77d207d382983b0a044647cd2b86c91b8bf19426c5742b7378e2f21c0f09bff8669f6b0bf6187d44c3bd1e50dfb65aff3aa88ad00c2e12735ee384347379d2b48ab3f0b36f712e0c1bca9698d29f17924f0343fc573a1115981161036b71f96ed9659b52eafb7794ff9a05b42f5b96aa530e45f1892f49dcde62ee824ab3dd0fd9c511bd8eda0d60eda753cd5d444c0294aac617b6c6453ce8b2274b0cbc5beb68e2761897b1e2ac612d8e6f8605830113bc800c91bdc4d4c89394d33c25f6465d813a453bf89eb3f0baf3b83856665a33d1e0a291b527d6b5704221b5b343a6fcb70f561cb496b727fbff07e48b56cc924ef51b3459449fb5211c02ff081c90645ca392d5e7a13f13160acb5b53ed20b8e01390cc4d1d7ea9533b2e7a21e9ccaf0461f1d5562c1ae28c04c138083f4ebd11f75e3298b2321a20395d3fc685d8c4986eaacc4e97d6481149aed040e07239c051d761379faecbb3c3356ba37358353b204bbe96765bcd4b9375470fac05907fceec5d94cb1195227e02f7b66005f9a76ad9ce1fbae7097b0ba824c9e415f82b0812a3bc6d6ae3824dd1d04837ca39047cc27d57dd5655f2d52e1b28ff24af701c93a169bbde2201b4ef36ef361f111838e2a59b2f1ff32410c91be4b2ca0d4d434a70c0d03d8ca0db8c9cb7b27ef0743c8a0579d6c4df5a76644637bee0d45ffc4ff83a1ff779f22e49e65550b60c279aeef6aeb89c1ff6a8cff8ae5eb645e9e15d694350ac0f7127ecf632f218759eafc04a988a3d23d1347a44b6fb1f79a2a40e41f441bb87823856b221e7cde3652a62b824d5f64b08570320f7729b500e138252a6220da6811707c097dee8d29123511a236f030381533cd5233b1d2b19da47cfefd49179430b70bce17969888c2c02b75d07bf84de64dc91fbaa6cf91052d40001bf83cdd18e8860b3527d9f72895ff0c398d4945ddd569c2c568bbce302506b5bfaaaa9e24f435e73c236730bedd4b8940bccce1cdaa2abd388646474e3d9c0afd61e28a1ebbc83ac84ed644039a7ea3aa270eac6f46f21fbaedd49ce21fe133060e416b03e28059d753b025f0c2b9f25e6fe146bf9f58956083e1baab33570493573b9d05104ec9bd2764793d655bb033c646af6ff8f8bb268d35c43acf614206bd4f5635de334ae2768e8621f24457bd6cc3f81a50c8fff871037415bd543e5515df44253f93ae05241cdeec2eca35eb2908ab07dcee8c795cf0a7442ca1213449a5c03282478bf0c0755fd7f62ca140a303867ebceffc631e8db2249c2c8a9806033a201f6e59becf382ccd5167ad5d1d7a3de10492c6bda89121bb8b075e3b6a5d1b09f6ad972c0605f1fe1610c38f42ab22625341b41c252be0fa80c9d082f56fee0669d7d4eb9762af0fd827e545ac5cb6b225571540f2e6820ad79311ed2fe57e30d12239771d79ad47577647068ae6ec7fa3602e86379f7c56709f822db68b5d35440e855509a2b86ebf86dcaae220a89b6f7dea85fe1fa5cf2d54ea4b242edf1a0b3c1a0b04b398e8a67c3ebd093e4429c9554605e2f4360449420a5fb5aebc158d80ee10349d23e9d68196cebbedbd98afd16670b66231f0f7dd9c0a4404da2db7a00172ff4f48b486183b2cc8d49b126acbf5e04af0a16b36291875c187ca2a65aeb240729167674cf5e26c2eb9f8464605279f47b57ef7584ba7b6662f221cead6f89825748ae7bf4a22d54715db9fa80609be5175c30a50025e54d11ba22ac4cb17fca2ec160184e6bacaa6e49a836697106511a1e65c679cf240b128ce1974b42812eb02105bcc59226faa7f085adf7b7ef5d0b2d5d88f59563e3d2edb1aa9ae253fda7e66996f2426d52ce0d36d5e38c07b94551851f4f1057e10beab078c85c6e1fd86b2200eee7345f0e9713061e0060b6333e91fcb7621d57333d80eeef03e912c2da7985a7dbc393aa597abd67b8240a3e72330488aaf26b53d671fe2effee1db167f747594de4de80bc1f0fd5b1786d276fe31d8a631556ad4080d7674b69f1cda2403280fe1eb962bef003d4df61cba3dd906aba9c01e5644dcba01dd790611da5bc46ee24e2ba26a4abaf8ec1c78ac48e0c5eb9c3079f802ca0dfc6550ba410b8d76885506b27efeb3bca592c2475def2dbd4f5d7ed4836abf086ce8b23d617701275a8d452085043d8b30bf66e0739471bc432a155f249f1c1c58e4fa37a02ae653b0ec71e22b9fcd3d9a00037bcfcbae7c0106d6d13dc60fad3f734ebdcc0d3fe9c29031716c746b52bf7c9db5a09cfe19bd9f0b87cd12f8a6c5e36153e0bf5587c959f3636618864362195078c591502325864283ccd1ebb071baca04a50f4069f1eaea8d8d2af49e76f29e88108df904d59a6631686be5adfca48571442a01cdb1a3de6de174fa9496e9ca50d2db065e61d82c16ef01438125a96e6300de69c30967c58545aa8f96fb66725959eb0bfeb99a54e7286740bdefc161115a404556a1dd0381f772b7ab8c1f7f1ddc0cc0ac782619fad570aa1590eb439455a642cd3122b0edfe9322a19360a98193bc75e4b8d2babaf0764099f36e3dfbce751a8fdac684ca46b0945ba593b6b18514d39542a803a3305b55b8f7c3c5adb4e516379db8ea4570020e95d69afbe165e6559636d9bb9d2936ff3272d757d393937ba4ee4edcc329e17426a7b5ab99aacbd804e453f147bc0439022a3c78b5f4df3f0cc24ea8993bc98fa7e5b4d628d36ecaa66231f2c612837b8c3704ac12862a67df9127885a8b4ce8f06d7dd0d8d2d25e6a9f77ed217869ad2d461c26059d689e4ed9774890e18dfe007ed3ae55f862abd7e4b0a53018c9c18129ec6983491c8fc9bfb26cf5bddddb1fd8db5ba17b8ae0cbaeed5ff553db2f0784cbcd76429699e3490c01a2090cba4b230fba3258d7e5cb18edc5427c1061206a1a5c3dc81e5681777216ec66cfbba42b7b506ce92664db7bfa51a9323eea0169c4cb0e83f756d3ea980461313e39d208ef70dc011722ebf284f75f07cde322ba23f211815e4b616f092652f949e369188a815613f8268a1338fc8f932e4b845739564983555417ac7b0170eb036bb80479ccdc3e9867ace0604f06da016321031402b21ad4ade201e208eed72004c59ba0fc7316c32e3735ba7c8c0dfa322ccef89e50b984bb020571702c2ec6f08d0471e72acbc1d19520ef5c9a110b953ae66ccb4278dd291b08af4621d3bd4d51e84604f6315b9cc52ed68f48f6fb51332718b3bc5e006aca5b50b1bd106ac2fcd300c77ace7517b7badc33ce9b5f0302e752cc1e3f0217cb1fe79e4202cd3614da5cad5ce95ac1c22038df2e690582130000000000000000e77c5fe5829689989e0736353bc0ffd6b69fd0512b5aa1d5292167ba63dc5719c978be1cd9cabdb5c757be48c025e5efbe17937c24504332ec6dcdcfac80e23a01ce2c6d87d0184c1799a254ed03047cf57a3bfd49b8a4438d496d741cf5aca6bd02cc36601959213b6b0cdb96a75c17c3a668a97f0d6a8c5ce164a518ea9ba9a50ea75191fd861b0ff10e62b000000000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4162bdd8d72b03b4e2f279a05dee99e05f68f38a4b1d7f6952cfafdca675fafbb0a65f0db75a331b2c04f82fed81c6edc0291ace5edb0794c285a5338f20c891195bc1e9d7134d3c05c62b251ccb3ab8473cb5dafc7b19f3b6750e41bf24c6ad882802a60d88a2fb0fd642095e8030000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed41691c948450f0844a9eaa60503567dd7c87ed664db6236c4368575d4beade9741856f5e328f9ba28c32610207662b9638281878e43a31d3f2de4e440d6a792a01a00ecd37228b00c8973da400337300587f48997465959efe09ac5e012e14f51eb2403e78f9aa4048344a45119dc45ebfb2fdd1806662aee645a85d9951b714a42ada39d7b268db0db118784846efe571b2feca12d5dbb15ad28d23c933987607fa4", From 183fe3d8b48db20d3535a2573a9aca4ec2ee978d Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Wed, 28 May 2025 12:09:11 +0200 Subject: [PATCH 215/230] Fix the code to support compilation with tx-v6 feature flag disabled, make this flag non-default in Cargo.toml files and enable it by default in .cargo/config.toml --- .cargo/config.toml | 6 +++++ zebra-chain/Cargo.toml | 3 +-- zebra-chain/src/orchard/note/ciphertexts.rs | 6 ++++- zebra-chain/src/orchard/shielded_data.rs | 15 ++++++++--- .../src/orchard/shielded_data_flavor.rs | 11 ++++---- zebra-chain/src/transaction.rs | 5 +++- zebra-chain/src/transaction/arbitrary.rs | 26 ++++++++++++++----- zebra-chain/src/transaction/serialize.rs | 14 +++++----- zebra-consensus/Cargo.toml | 3 +-- zebra-consensus/src/primitives/halo2.rs | 10 ++++++- zebra-consensus/src/primitives/halo2/tests.rs | 1 - zebra-state/Cargo.toml | 3 +-- zebra-test/Cargo.toml | 6 +++++ zebra-test/src/vectors.rs | 8 ++++++ zebrad/Cargo.toml | 2 +- 15 files changed, 86 insertions(+), 33 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 83f31157547..ec87157c946 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -3,6 +3,9 @@ # Flags that apply to all Zebra crates and configurations [target.'cfg(all())'] rustflags = [ + # Enable tx-v6 everywhere by default + "--cfg", 'feature="tx-v6"', + # TODO: Consider removing this line later (it's needed for the ZSA version of librustzcash crates) "--cfg", "zcash_unstable=\"nu6\"", @@ -85,6 +88,9 @@ rustflags = [ [build] rustdocflags = [ + # Enable tx-v6 everywhere by default + "--cfg", 'feature="tx-v6"', + # TODO: Consider removing this line later (it's needed for the ZSA version of librustzcash crates) "--cfg", "zcash_unstable=\"nu6\"", diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 4d0ff8e272f..358b556f105 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -15,8 +15,7 @@ keywords = ["zebra", "zcash"] categories = ["asynchronous", "cryptography::cryptocurrencies", "encoding"] [features] -#default = [] -default = ["tx-v6"] +default = [] # Production features that activate extra functionality diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index ae9fddfba8e..9b676ffd96b 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -109,10 +109,13 @@ impl ZcashDeserialize for WrappedNoteKey { #[cfg(test)] mod tests { use crate::{ - orchard::{OrchardVanilla, OrchardZSA, ShieldedDataFlavor, WrappedNoteKey}, + orchard::{OrchardVanilla, ShieldedDataFlavor, WrappedNoteKey}, serialization::{ZcashDeserialize, ZcashSerialize}, }; + #[cfg(feature = "tx-v6")] + use crate::orchard::OrchardZSA; + use proptest::prelude::*; fn roundtrip_encrypted_note(note: &EncryptedNote) -> EncryptedNote @@ -135,6 +138,7 @@ mod tests { } + #[cfg(feature = "tx-v6")] #[test] fn encrypted_ciphertext_roundtrip_orchard_zsa(ec in any::<::EncryptedNote>()) { let _init_guard = zebra_test::init(); diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index 5bc5916f5d4..37e84fa9a3b 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -27,10 +27,17 @@ use super::{OrchardVanilla, ShieldedDataFlavor}; /// A bundle of [`Action`] descriptions and signature data. #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] -#[serde(bound( - serialize = "Flavor::EncryptedNote: serde::Serialize, Flavor::BurnType: serde::Serialize", - deserialize = "Flavor::BurnType: serde::Deserialize<'de>" -))] +#[cfg_attr( + not(feature = "tx-v6"), + serde(bound(serialize = "Flavor::EncryptedNote: serde::Serialize")) +)] +#[cfg_attr( + feature = "tx-v6", + serde(bound( + serialize = "Flavor::EncryptedNote: serde::Serialize, Flavor::BurnType: serde::Serialize", + deserialize = "Flavor::BurnType: serde::Deserialize<'de>" + )) +)] pub struct ShieldedData { /// The orchard flags for this transaction. /// Denoted as `flagsOrchard` in the spec. diff --git a/zebra-chain/src/orchard/shielded_data_flavor.rs b/zebra-chain/src/orchard/shielded_data_flavor.rs index 3bd3a9f73dd..7535305b636 100644 --- a/zebra-chain/src/orchard/shielded_data_flavor.rs +++ b/zebra-chain/src/orchard/shielded_data_flavor.rs @@ -9,16 +9,16 @@ use orchard::{domain::OrchardDomainCommon, orchard_flavor::OrchardFlavor}; pub use orchard::orchard_flavor::OrchardVanilla; #[cfg(feature = "tx-v6")] -pub use orchard::orchard_flavor::OrchardZSA; +pub use orchard::{note::AssetBase, orchard_flavor::OrchardZSA, value::NoteValue}; +use crate::serialization::{ZcashDeserialize, ZcashSerialize}; + +#[cfg(feature = "tx-v6")] use crate::{ orchard::ValueCommitment, - serialization::{ZcashDeserialize, ZcashSerialize}, + orchard_zsa::{Burn, BurnItem, NoBurn}, }; -#[cfg(feature = "tx-v6")] -use crate::orchard_zsa::{Burn, BurnItem, NoBurn}; - use super::note; // When testing or with the proptest-impl feature, enforce Arbitrary. @@ -62,6 +62,7 @@ pub trait ShieldedDataFlavor: OrchardFlavor { + ZcashSerialize + Into + AsRef<[BurnItem]> + + for<'a> From<&'a [(AssetBase, NoteValue)]> + test_arbitrary::TestArbitrary; } diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index d4c2731bc70..9b01316cfc3 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -40,7 +40,7 @@ pub use unmined::{ use crate::{ amount::{Amount, Error as AmountError, NegativeAllowed, NonNegative}, - block, orchard, orchard_zsa, + block, orchard, parameters::{ConsensusBranchId, NetworkUpgrade}, primitives::{ed25519, Bctv14Proof, Groth16Proof}, sapling, @@ -53,6 +53,9 @@ use crate::{ value_balance::{ValueBalance, ValueBalanceError}, }; +#[cfg(feature = "tx-v6")] +use crate::orchard_zsa; + /// A Zcash transaction. /// /// A transaction is an encoded data structure that facilitates the transfer of diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index f2df6221297..8e71b63f9e9 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -880,13 +880,25 @@ impl Arbitrary for Transaction { Self::v5_strategy(ledger_state) ] .boxed(), - #[cfg(feature = "tx-v6")] - NetworkUpgrade::Nu7 => prop_oneof![ - Self::v4_strategy(ledger_state.clone()), - Self::v5_strategy(ledger_state.clone()), - Self::v6_strategy(ledger_state) - ] - .boxed(), + NetworkUpgrade::Nu7 => { + #[cfg(not(feature = "tx-v6"))] + { + prop_oneof![ + Self::v4_strategy(ledger_state.clone()), + Self::v5_strategy(ledger_state.clone()), + ] + .boxed() + } + #[cfg(feature = "tx-v6")] + { + prop_oneof![ + Self::v4_strategy(ledger_state.clone()), + Self::v5_strategy(ledger_state.clone()), + Self::v6_strategy(ledger_state), + ] + .boxed() + } + } } } diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index 4710785356f..31f3f5a70f1 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -10,20 +10,21 @@ use reddsa::{orchard::Binding, orchard::SpendAuth, Signature}; use crate::{ block::MAX_BLOCK_BYTES, - orchard::{OrchardVanilla, OrchardZSA, ShieldedDataFlavor}, - orchard_zsa::NoBurn, + orchard::{OrchardVanilla, ShieldedDataFlavor}, parameters::{OVERWINTER_VERSION_GROUP_ID, SAPLING_VERSION_GROUP_ID, TX_V5_VERSION_GROUP_ID}, primitives::{Halo2Proof, ZkSnarkProof}, serialization::{ zcash_deserialize_external_count, zcash_serialize_empty_list, - zcash_serialize_external_count, AtLeastOne, CompactSizeMessage, ReadZcashExt, - SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashDeserializeInto, - ZcashSerialize, + zcash_serialize_external_count, AtLeastOne, ReadZcashExt, SerializationError, + TrustedPreallocate, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, }, }; #[cfg(feature = "tx-v6")] -use crate::parameters::TX_V6_VERSION_GROUP_ID; +use crate::{ + orchard::OrchardZSA, orchard_zsa::NoBurn, parameters::TX_V6_VERSION_GROUP_ID, + serialization::CompactSizeMessage, +}; use super::*; use crate::sapling; @@ -503,6 +504,7 @@ impl ZcashDeserialize for Option> { Ok(Some(orchard::ShieldedData:: { flags, value_balance, + #[cfg(feature = "tx-v6")] burn: NoBurn, shared_anchor, proof, diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index 05211f296ac..3fa5de04d05 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -15,8 +15,7 @@ keywords = ["zebra", "zcash"] categories = ["asynchronous", "cryptography::cryptocurrencies"] [features] -#default = [] -default = ["tx-v6"] +default = [] # Production features that activate extra dependencies, or extra features in dependencies diff --git a/zebra-consensus/src/primitives/halo2.rs b/zebra-consensus/src/primitives/halo2.rs index 2d11118ae3d..b5f665bc5ca 100644 --- a/zebra-consensus/src/primitives/halo2.rs +++ b/zebra-consensus/src/primitives/halo2.rs @@ -19,7 +19,10 @@ use tower::{util::ServiceFn, Service}; use tower_batch_control::{Batch, BatchControl}; use tower_fallback::Fallback; -use zebra_chain::orchard::{OrchardVanilla, OrchardZSA, ShieldedData, ShieldedDataFlavor}; +use zebra_chain::orchard::{OrchardVanilla, ShieldedData, ShieldedDataFlavor}; + +#[cfg(feature = "tx-v6")] +use zebra_chain::orchard::OrchardZSA; use crate::BoxError; @@ -78,7 +81,10 @@ pub type ItemVerifyingKey = VerifyingKey; lazy_static::lazy_static! { /// The halo2 proof verifying key for Orchard Vanilla pub static ref VERIFYING_KEY_VANILLA: ItemVerifyingKey = ItemVerifyingKey::build::(); +} +#[cfg(feature = "tx-v6")] +lazy_static::lazy_static! { /// The halo2 proof verifying key for OrchardZSA pub static ref VERIFYING_KEY_ZSA: ItemVerifyingKey = ItemVerifyingKey::build::(); } @@ -241,6 +247,7 @@ pub static VERIFIER_VANILLA: Lazy = Lazy::new(create_verification_context::); /// FIXME: copy a doc from VERIFIER_VANILLA or just refer to its doc? +#[cfg(feature = "tx-v6")] pub static VERIFIER_ZSA: Lazy = Lazy::new(create_verification_context::); @@ -256,6 +263,7 @@ impl OrchardVerifier for OrchardVanilla { } } +#[cfg(feature = "tx-v6")] impl OrchardVerifier for OrchardZSA { const ZSA_ENABLED: bool = true; diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index 5e8414ab77e..e0fe52527b1 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -28,7 +28,6 @@ use crate::primitives::halo2::*; #[allow(dead_code, clippy::print_stdout)] fn generate_test_vectors() where - Flavor::BurnType: for<'a> From<&'a [(AssetBase, NoteValue)]>, ShieldedData: ZcashSerialize, { let proving_key = ProvingKey::build::(); diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index 45dcf9e96c6..2a0eec9b2ca 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -15,8 +15,7 @@ keywords = ["zebra", "zcash"] categories = ["asynchronous", "caching", "cryptography::cryptocurrencies"] [features] -#default = [] -default = ["tx-v6"] +default = [] # Production features that activate extra dependencies, or extra features in dependencies diff --git a/zebra-test/Cargo.toml b/zebra-test/Cargo.toml index c430257f5ef..f937eb8315f 100644 --- a/zebra-test/Cargo.toml +++ b/zebra-test/Cargo.toml @@ -14,6 +14,12 @@ keywords = ["zebra", "zcash"] # Must be one of categories = ["command-line-utilities", "cryptography::cryptocurrencies"] +[features] +default = [] + +# Support for transaction version 6 +tx-v6 = [] + [dependencies] hex = "0.4.3" indexmap = "2.6.0" diff --git a/zebra-test/src/vectors.rs b/zebra-test/src/vectors.rs index b558d0eac6d..f6983c95661 100644 --- a/zebra-test/src/vectors.rs +++ b/zebra-test/src/vectors.rs @@ -6,13 +6,21 @@ use lazy_static::lazy_static; mod block; mod orchard_note_encryption; mod orchard_shielded_data; + +#[cfg(feature = "tx-v6")] mod orchard_shielded_data_zsa; + +#[cfg(feature = "tx-v6")] mod orchard_workflow_blocks_zsa; pub use block::*; pub use orchard_note_encryption::*; pub use orchard_shielded_data::*; + +#[cfg(feature = "tx-v6")] pub use orchard_shielded_data_zsa::*; + +#[cfg(feature = "tx-v6")] pub use orchard_workflow_blocks_zsa::*; /// A testnet transaction test vector diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 503eb371f5b..72a8afd7dc0 100644 --- a/zebrad/Cargo.toml +++ b/zebrad/Cargo.toml @@ -52,7 +52,7 @@ features = [ [features] # In release builds, don't compile debug logging code, to improve performance. -default = ["release_max_level_info", "progress-bar", "getblocktemplate-rpcs", "tx-v6"] +default = ["release_max_level_info", "progress-bar", "getblocktemplate-rpcs"] # Default features for official ZF binary release builds default-release-binaries = ["default", "sentry"] From 2ca5e2aebb198a241ebb060069e6dd67f2fc7701 Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Wed, 28 May 2025 13:01:34 +0200 Subject: [PATCH 216/230] Allow manual triggering for push-deploy --- .github/workflows/push-deploy.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/push-deploy.yaml b/.github/workflows/push-deploy.yaml index ebce405cb7a..12d1bed16ea 100644 --- a/.github/workflows/push-deploy.yaml +++ b/.github/workflows/push-deploy.yaml @@ -6,6 +6,7 @@ on: push: tags: - '*' # Triggers the workflow on any new tag + workflow_dispatch: # Allows manual triggering env: AWS_REGION: ${{ vars.AWS_REGION || 'eu-central-1' }} From 798267c60255915e680a19a55ffb44b16fc1502f Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Thu, 26 Jun 2025 12:27:42 +0200 Subject: [PATCH 217/230] Quote variables in push-deploy.yaml to pass upstream actionlint checks The actionlint job in the ZcashFoundation/zebra repository CI reported multiple SC2086 errors. This commit quotes shell variables in push-deploy.yaml to fix the linter failures. --- .github/workflows/push-deploy.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/push-deploy.yaml b/.github/workflows/push-deploy.yaml index 12d1bed16ea..ce918790975 100644 --- a/.github/workflows/push-deploy.yaml +++ b/.github/workflows/push-deploy.yaml @@ -37,7 +37,7 @@ jobs: - name: Get short commit hash id: vars - run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV" - name: Build, tag, and push image to Amazon ECR id: build-image @@ -47,12 +47,12 @@ jobs: IMAGE_TAG_COMMIT: ${{ env.SHORT_SHA }} run: | # Build a docker container - docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT -f testnet-single-node-deploy/dockerfile . + docker build -t "$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST" -t "$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT" -f testnet-single-node-deploy/dockerfile . # Push both tags to ECR - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT + docker push "$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST" + docker push "$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT" # Output the image URIs - echo "image_latest=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST" >> $GITHUB_OUTPUT - echo "image_commit=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT" >> $GITHUB_OUTPUT + echo "image_latest=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST" >> "$GITHUB_OUTPUT" + echo "image_commit=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT" >> "$GITHUB_OUTPUT" From 50ea49cb5c6a07f402cfeac31ea5b8cd19d69adb Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Mon, 7 Jul 2025 09:16:12 +0200 Subject: [PATCH 218/230] Add split of workflow, ecr and ecs --- .github/workflows/deploy-ecs.yaml | 80 +++++++++++++++++++++ .github/workflows/push-deploy.yaml | 58 --------------- .github/workflows/push-ecr.yaml | 110 +++++++++++++++++++++++++++++ 3 files changed, 190 insertions(+), 58 deletions(-) create mode 100644 .github/workflows/deploy-ecs.yaml delete mode 100644 .github/workflows/push-deploy.yaml create mode 100644 .github/workflows/push-ecr.yaml diff --git a/.github/workflows/deploy-ecs.yaml b/.github/workflows/deploy-ecs.yaml new file mode 100644 index 00000000000..1c4276153ac --- /dev/null +++ b/.github/workflows/deploy-ecs.yaml @@ -0,0 +1,80 @@ +# This GitHub Actions workflow automates deploying the Zebra Server to Amazon ECS. +# It allows manual triggering with the ability to choose which image tag to deploy. +name: Deploy to Amazon ECS + +on: + workflow_dispatch: + inputs: + image_tag: + description: 'Docker image tag to deploy (e.g., latest, v1.0.0, commit-hash)' + required: true + type: string + default: 'latest' + +env: + AWS_REGION: ${{ vars.AWS_REGION || 'eu-central-1' }} + ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY || 'dev-zebra-server' }} + ECS_SERVICE: ${{ vars.ECS_SERVICE || 'dev-zebra' }} + ECS_CLUSTER: ${{ vars.ECS_CLUSTER || 'dev-zebra-cluster' }} + +jobs: + deploy-to-ecs: + name: Deploy to ECS + runs-on: ubuntu-latest + environment: production + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - name: Deploy to Amazon ECS + id: deploy-ecs + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG: ${{ github.event.inputs.image_tag }} + run: | + # Construct the full image URI + IMAGE_URI="$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" + + echo "Deploying image: $IMAGE_URI" + echo "ECS Service: $ECS_SERVICE" + echo "ECS Cluster: $ECS_CLUSTER" + + # Update the ECS service with the new image + aws ecs update-service \ + --cluster $ECS_CLUSTER \ + --service $ECS_SERVICE \ + --force-new-deployment + + # Wait for the service to be stable + echo "Waiting for ECS service to be stable..." + aws ecs wait services-stable \ + --cluster $ECS_CLUSTER \ + --services $ECS_SERVICE + + echo "Deployment completed successfully!" + + # Output the deployment information + echo "deployed_image=$IMAGE_URI" >> $GITHUB_OUTPUT + echo "ecs_service=$ECS_SERVICE" >> $GITHUB_OUTPUT + echo "ecs_cluster=$ECS_CLUSTER" >> $GITHUB_OUTPUT + + - name: Get deployment status + run: | + echo "Deployment Status:" + aws ecs describe-services \ + --cluster $ECS_CLUSTER \ + --services $ECS_SERVICE \ + --query 'services[0].{ServiceName:serviceName,Status:status,DesiredCount:desiredCount,RunningCount:runningCount,PendingCount:pendingCount}' \ + --output table diff --git a/.github/workflows/push-deploy.yaml b/.github/workflows/push-deploy.yaml deleted file mode 100644 index 12d1bed16ea..00000000000 --- a/.github/workflows/push-deploy.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# This GitHub Actions workflow automates the deployment of the Zebra Server to Amazon ECS. -# It triggers on any new tag, builds a Docker image, pushes it to Amazon Elastic Container Registry (ECR), and updates the specified ECS service to use the latest image. -name: Deploy to Amazon ECS - -on: - push: - tags: - - '*' # Triggers the workflow on any new tag - workflow_dispatch: # Allows manual triggering - -env: - AWS_REGION: ${{ vars.AWS_REGION || 'eu-central-1' }} - ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY || 'dev-zebra-server' }} - ECS_SERVICE: ${{ vars.ECS_SERVICE || 'dev-zebra' }} - ECS_CLUSTER: ${{ vars.ECS_CLUSTER || 'dev-zebra-cluster' }} - -jobs: - push-deploy: - name: Push and Deploy - runs-on: ubuntu-latest - environment: production - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ env.AWS_REGION }} - - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v2 - - - name: Get short commit hash - id: vars - run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - - - name: Build, tag, and push image to Amazon ECR - id: build-image - env: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - IMAGE_TAG_LATEST: latest - IMAGE_TAG_COMMIT: ${{ env.SHORT_SHA }} - run: | - # Build a docker container - docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT -f testnet-single-node-deploy/dockerfile . - - # Push both tags to ECR - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT - - # Output the image URIs - echo "image_latest=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST" >> $GITHUB_OUTPUT - echo "image_commit=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_COMMIT" >> $GITHUB_OUTPUT diff --git a/.github/workflows/push-ecr.yaml b/.github/workflows/push-ecr.yaml new file mode 100644 index 00000000000..667a8b34af5 --- /dev/null +++ b/.github/workflows/push-ecr.yaml @@ -0,0 +1,110 @@ +# This GitHub Actions workflow automates pushing the Zebra Server Docker image to Amazon ECR. +# It triggers on any new tag or manual dispatch, builds a Docker image, and pushes it to Amazon Elastic Container Registry (ECR). +name: Push to Amazon ECR + +on: + push: + tags: + - '*' # Triggers the workflow on any new tag + workflow_dispatch: + inputs: + image_tag_version: + description: 'Version to tag the Docker image' + required: false + type: string + +env: + AWS_REGION: ${{ vars.AWS_REGION || 'eu-central-1' }} + ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY || 'dev-zebra-server' }} + +jobs: + push-to-ecr: + name: Push to ECR + runs-on: ubuntu-latest + environment: production + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - name: Get Git tags and set image tags + id: vars + run: | + git fetch --tags + + # Get exact match tag if it exists (will be empty if the current commit doesn't have a tag) + GIT_TAG=$(git describe --exact-match --tags 2>/dev/null || echo "") + if [ -n "$GIT_TAG" ]; then + echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV + fi + + # Set the input IMAGE_TAG_VERSION + echo "IMAGE_TAG_VERSION=${{ github.event.inputs.image_tag_version }}" >> $GITHUB_ENV + + # Echo what we found + echo "Git Tag Discovery:" + if [ -n "$GIT_TAG" ]; then + echo " Found exact match Git tag: $GIT_TAG" + else + echo " No exact match Git tag found for current commit" + fi + echo " User-provided IMAGE_TAG_VERSION: ${{ github.event.inputs.image_tag_version }}" + + - name: Build, tag, and push image to Amazon ECR + id: build-image + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG_LATEST: latest + run: | + # Build docker container with multiple tags + DOCKER_BUILD_ARGS=() + DOCKER_BUILD_ARGS+=("-t" "$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST") + DOCKER_BUILD_ARGS+=("-t" "$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_VERSION") + + # Add exact tag if it exists + if [ -n "$GIT_TAG" ]; then + DOCKER_BUILD_ARGS+=("-t" "$ECR_REGISTRY/$ECR_REPOSITORY:$GIT_TAG") + fi + + # Echo final tags that will be pushed + echo "Docker Image Tags to be pushed:" + echo " $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST" + echo " $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_VERSION" + if [ -n "$GIT_TAG" ]; then + echo " $ECR_REGISTRY/$ECR_REPOSITORY:$GIT_TAG" + fi + echo "" + + # Build with all tags + echo "Building Docker image..." + docker build "${DOCKER_BUILD_ARGS[@]}" -f testnet-single-node-deploy/dockerfile . + + # Push all tags + echo "Pushing images to ECR..." + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_VERSION + + if [ -n "$GIT_TAG" ]; then + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$GIT_TAG + fi + + echo "All images pushed successfully" + + # Output the image URIs + echo "image_latest=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST" >> $GITHUB_OUTPUT + echo "image_version=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_VERSION" >> $GITHUB_OUTPUT + + if [ -n "$GIT_TAG" ]; then + echo "image_exact_tag=$ECR_REGISTRY/$ECR_REPOSITORY:$GIT_TAG" >> $GITHUB_OUTPUT + fi From b2866015a32bb0745c8ed25b14f73e52a902e3f6 Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Mon, 7 Jul 2025 10:21:36 +0200 Subject: [PATCH 219/230] Update --- .github/workflows/deploy-ecs.yaml | 1 - .github/workflows/push-ecr.yaml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/deploy-ecs.yaml b/.github/workflows/deploy-ecs.yaml index 1c4276153ac..f9a5ee51351 100644 --- a/.github/workflows/deploy-ecs.yaml +++ b/.github/workflows/deploy-ecs.yaml @@ -21,7 +21,6 @@ jobs: deploy-to-ecs: name: Deploy to ECS runs-on: ubuntu-latest - environment: production steps: - name: Checkout diff --git a/.github/workflows/push-ecr.yaml b/.github/workflows/push-ecr.yaml index 667a8b34af5..4023560b8eb 100644 --- a/.github/workflows/push-ecr.yaml +++ b/.github/workflows/push-ecr.yaml @@ -21,7 +21,6 @@ jobs: push-to-ecr: name: Push to ECR runs-on: ubuntu-latest - environment: production steps: - name: Checkout From afc02d3355066c190f3ab1257f3b4011251906bf Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Tue, 8 Jul 2025 00:25:50 +0200 Subject: [PATCH 220/230] Update PR comments --- .github/workflows/push-ecr.yaml | 52 +++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/.github/workflows/push-ecr.yaml b/.github/workflows/push-ecr.yaml index 4023560b8eb..3190efb6902 100644 --- a/.github/workflows/push-ecr.yaml +++ b/.github/workflows/push-ecr.yaml @@ -44,20 +44,19 @@ jobs: # Get exact match tag if it exists (will be empty if the current commit doesn't have a tag) GIT_TAG=$(git describe --exact-match --tags 2>/dev/null || echo "") - if [ -n "$GIT_TAG" ]; then - echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV - fi - - # Set the input IMAGE_TAG_VERSION - echo "IMAGE_TAG_VERSION=${{ github.event.inputs.image_tag_version }}" >> $GITHUB_ENV - # Echo what we found - echo "Git Tag Discovery:" + # Set environment variables and echo results if [ -n "$GIT_TAG" ]; then + echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV + echo "Git Tag Discovery:" echo " Found exact match Git tag: $GIT_TAG" else + echo "Git Tag Discovery:" echo " No exact match Git tag found for current commit" fi + + # Set the input IMAGE_TAG_VERSION + echo "IMAGE_TAG_VERSION=${{ github.event.inputs.image_tag_version }}" >> $GITHUB_ENV echo " User-provided IMAGE_TAG_VERSION: ${{ github.event.inputs.image_tag_version }}" - name: Build, tag, and push image to Amazon ECR @@ -78,24 +77,34 @@ jobs: # Echo final tags that will be pushed echo "Docker Image Tags to be pushed:" - echo " $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST" - echo " $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_VERSION" - if [ -n "$GIT_TAG" ]; then - echo " $ECR_REGISTRY/$ECR_REPOSITORY:$GIT_TAG" - fi + for arg in "${DOCKER_BUILD_ARGS[@]}"; do + if [[ "$arg" != "-t" ]]; then + echo " $arg" + fi + done echo "" # Build with all tags echo "Building Docker image..." docker build "${DOCKER_BUILD_ARGS[@]}" -f testnet-single-node-deploy/dockerfile . - # Push all tags + # Push all tags with error handling echo "Pushing images to ECR..." - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_VERSION - + if ! docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST; then + echo "Failed to push latest tag" + exit 1 + fi + + if ! docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_VERSION; then + echo "Failed to push version tag" + exit 1 + fi + if [ -n "$GIT_TAG" ]; then - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$GIT_TAG + if ! docker push $ECR_REGISTRY/$ECR_REPOSITORY:$GIT_TAG; then + echo "Failed to push git tag" + exit 1 + fi fi echo "All images pushed successfully" @@ -107,3 +116,10 @@ jobs: if [ -n "$GIT_TAG" ]; then echo "image_exact_tag=$ECR_REGISTRY/$ECR_REPOSITORY:$GIT_TAG" >> $GITHUB_OUTPUT fi + + # Print the public repository URL + echo "" + echo "=====================================" + echo "Public ECR Repository URL:" + echo "https://gallery.ecr.aws/$ECR_REPOSITORY" + echo "=====================================" From 953ea4e89014e6f29b4e14985a28d602e7177733 Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Tue, 8 Jul 2025 00:34:14 +0200 Subject: [PATCH 221/230] Update PR comments --- .github/workflows/deploy-ecs.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy-ecs.yaml b/.github/workflows/deploy-ecs.yaml index f9a5ee51351..ef25b8a096c 100644 --- a/.github/workflows/deploy-ecs.yaml +++ b/.github/workflows/deploy-ecs.yaml @@ -1,5 +1,6 @@ # This GitHub Actions workflow automates deploying the Zebra Server to Amazon ECS. # It allows manual triggering with the ability to choose which image tag to deploy. +# Because of the "force-new-deployment" flag, the ECS service will update to a new 'latest' image, if one was pushed. name: Deploy to Amazon ECS on: From 5111e60318cbe0235b001a35cd7bac4f9600906c Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Tue, 8 Jul 2025 16:40:40 +0200 Subject: [PATCH 222/230] Update by comments --- .github/workflows/deploy-ecs.yaml | 18 +++++++++++++++++- .github/workflows/push-ecr.yaml | 31 ++++++++++++------------------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/.github/workflows/deploy-ecs.yaml b/.github/workflows/deploy-ecs.yaml index ef25b8a096c..6aa1152bf75 100644 --- a/.github/workflows/deploy-ecs.yaml +++ b/.github/workflows/deploy-ecs.yaml @@ -63,7 +63,23 @@ jobs: --cluster $ECS_CLUSTER \ --services $ECS_SERVICE - echo "Deployment completed successfully!" + # Check the actual service status after waiting + echo "Checking service status..." + SERVICE_STATUS=$(aws ecs describe-services \ + --cluster $ECS_CLUSTER \ + --services $ECS_SERVICE \ + --query 'services[0].status' \ + --output text) + + echo "Service Status: $SERVICE_STATUS" + + # Check if deployment was successful + if [ "$SERVICE_STATUS" = "ACTIVE" ]; then + echo "Deployment completed successfully!" + else + echo "Deployment may have issues. Service status: $SERVICE_STATUS" + exit 1 + fi # Output the deployment information echo "deployed_image=$IMAGE_URI" >> $GITHUB_OUTPUT diff --git a/.github/workflows/push-ecr.yaml b/.github/workflows/push-ecr.yaml index 3190efb6902..c244ac9f550 100644 --- a/.github/workflows/push-ecr.yaml +++ b/.github/workflows/push-ecr.yaml @@ -16,6 +16,7 @@ on: env: AWS_REGION: ${{ vars.AWS_REGION || 'eu-central-1' }} ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY || 'dev-zebra-server' }} + DOCKERFILE_PATH: testnet-single-node-deploy/dockerfile jobs: push-to-ecr: @@ -86,28 +87,20 @@ jobs: # Build with all tags echo "Building Docker image..." - docker build "${DOCKER_BUILD_ARGS[@]}" -f testnet-single-node-deploy/dockerfile . + docker build "${DOCKER_BUILD_ARGS[@]}" -f $DOCKERFILE_PATH . # Push all tags with error handling - echo "Pushing images to ECR..." - if ! docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST; then - echo "Failed to push latest tag" - exit 1 - fi - - if ! docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_VERSION; then - echo "Failed to push version tag" - exit 1 - fi + for tag in "$IMAGE_TAG_LATEST" "$IMAGE_TAG_VERSION" "$GIT_TAG"; do + # Skip empty tags (e.g., if GIT_TAG is unset) + [ -z "$tag" ] && continue - if [ -n "$GIT_TAG" ]; then - if ! docker push $ECR_REGISTRY/$ECR_REPOSITORY:$GIT_TAG; then - echo "Failed to push git tag" - exit 1 - fi - fi - - echo "All images pushed successfully" + image="$ECR_REGISTRY/$ECR_REPOSITORY:$tag" + echo "Pushing $image…" + if ! docker push "$image"; then + echo "Failed to push $image" + exit 1 + fi + done # Output the image URIs echo "image_latest=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG_LATEST" >> $GITHUB_OUTPUT From 82193e36615028b712de57c9d10da39c90ef4bed Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Wed, 9 Jul 2025 15:24:25 +0200 Subject: [PATCH 223/230] Repo var for DOCKERFILE_PATH --- .github/workflows/push-ecr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push-ecr.yaml b/.github/workflows/push-ecr.yaml index c244ac9f550..859dca0efb9 100644 --- a/.github/workflows/push-ecr.yaml +++ b/.github/workflows/push-ecr.yaml @@ -16,7 +16,7 @@ on: env: AWS_REGION: ${{ vars.AWS_REGION || 'eu-central-1' }} ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY || 'dev-zebra-server' }} - DOCKERFILE_PATH: testnet-single-node-deploy/dockerfile + DOCKERFILE_PATH: ${{ vars.DOCKERFILE_PATH }} jobs: push-to-ecr: From 7c1be4c6c3b071bfe4d9e800706b399aa9937081 Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Wed, 9 Jul 2025 15:33:48 +0200 Subject: [PATCH 224/230] Add env --- .github/workflows/deploy-ecs.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy-ecs.yaml b/.github/workflows/deploy-ecs.yaml index 6aa1152bf75..7c735274ab0 100644 --- a/.github/workflows/deploy-ecs.yaml +++ b/.github/workflows/deploy-ecs.yaml @@ -22,6 +22,7 @@ jobs: deploy-to-ecs: name: Deploy to ECS runs-on: ubuntu-latest + environment: production steps: - name: Checkout From 91464b89a10e7d4b5e1edd26c5bcfddd9de0541f Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Wed, 9 Jul 2025 15:34:14 +0200 Subject: [PATCH 225/230] Add env --- .github/workflows/push-ecr.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/push-ecr.yaml b/.github/workflows/push-ecr.yaml index 859dca0efb9..6e38c2ac0dd 100644 --- a/.github/workflows/push-ecr.yaml +++ b/.github/workflows/push-ecr.yaml @@ -22,6 +22,7 @@ jobs: push-to-ecr: name: Push to ECR runs-on: ubuntu-latest + environment: production steps: - name: Checkout From 7bfdb2b33a3956bd9dcd71b789c2c50fb7594264 Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Thu, 17 Jul 2025 07:16:06 +0200 Subject: [PATCH 226/230] Update deploy-ecs.yaml --- .github/workflows/deploy-ecs.yaml | 54 ++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/.github/workflows/deploy-ecs.yaml b/.github/workflows/deploy-ecs.yaml index 7c735274ab0..80b0a4920d8 100644 --- a/.github/workflows/deploy-ecs.yaml +++ b/.github/workflows/deploy-ecs.yaml @@ -1,8 +1,7 @@ # This GitHub Actions workflow automates deploying the Zebra Server to Amazon ECS. # It allows manual triggering with the ability to choose which image tag to deploy. -# Because of the "force-new-deployment" flag, the ECS service will update to a new 'latest' image, if one was pushed. +# This version properly updates the task definition with the new image. name: Deploy to Amazon ECS - on: workflow_dispatch: inputs: @@ -11,34 +10,30 @@ on: required: true type: string default: 'latest' - env: AWS_REGION: ${{ vars.AWS_REGION || 'eu-central-1' }} ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY || 'dev-zebra-server' }} ECS_SERVICE: ${{ vars.ECS_SERVICE || 'dev-zebra' }} ECS_CLUSTER: ${{ vars.ECS_CLUSTER || 'dev-zebra-cluster' }} - + TASK_DEFINITION: ${{ vars.TASK_DEFINITION || 'dev-zebra-task' }} + CONTAINER_NAME: ${{ vars.CONTAINER_NAME || 'zebra-server' }} jobs: deploy-to-ecs: name: Deploy to ECS runs-on: ubuntu-latest environment: production - steps: - name: Checkout uses: actions/checkout@v4 - - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ env.AWS_REGION }} - - name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v2 - - name: Deploy to Amazon ECS id: deploy-ecs env: @@ -51,11 +46,40 @@ jobs: echo "Deploying image: $IMAGE_URI" echo "ECS Service: $ECS_SERVICE" echo "ECS Cluster: $ECS_CLUSTER" + echo "Task Definition: $TASK_DEFINITION" + echo "Container Name: $CONTAINER_NAME" - # Update the ECS service with the new image + # Get the current task definition + TASK_DEFINITION_ARN=$(aws ecs describe-task-definition \ + --task-definition $TASK_DEFINITION \ + --query 'taskDefinition.taskDefinitionArn' \ + --output text) + + echo "Current task definition ARN: $TASK_DEFINITION_ARN" + + # Download the current task definition + aws ecs describe-task-definition \ + --task-definition $TASK_DEFINITION \ + --query 'taskDefinition' > task-definition.json + + # Update the image in the task definition + jq --arg IMAGE_URI "$IMAGE_URI" --arg CONTAINER_NAME "$CONTAINER_NAME" \ + '.containerDefinitions |= map(if .name == $CONTAINER_NAME then .image = $IMAGE_URI else . end) | del(.taskDefinitionArn, .revision, .status, .requiresAttributes, .placementConstraints, .compatibilities, .registeredAt, .registeredBy)' \ + task-definition.json > updated-task-definition.json + + # Register the new task definition + NEW_TASK_DEFINITION_ARN=$(aws ecs register-task-definition \ + --cli-input-json file://updated-task-definition.json \ + --query 'taskDefinition.taskDefinitionArn' \ + --output text) + + echo "New task definition ARN: $NEW_TASK_DEFINITION_ARN" + + # Update the ECS service with the new task definition aws ecs update-service \ --cluster $ECS_CLUSTER \ --service $ECS_SERVICE \ + --task-definition $NEW_TASK_DEFINITION_ARN \ --force-new-deployment # Wait for the service to be stable @@ -86,12 +110,20 @@ jobs: echo "deployed_image=$IMAGE_URI" >> $GITHUB_OUTPUT echo "ecs_service=$ECS_SERVICE" >> $GITHUB_OUTPUT echo "ecs_cluster=$ECS_CLUSTER" >> $GITHUB_OUTPUT - + echo "task_definition_arn=$NEW_TASK_DEFINITION_ARN" >> $GITHUB_OUTPUT - name: Get deployment status run: | echo "Deployment Status:" aws ecs describe-services \ --cluster $ECS_CLUSTER \ --services $ECS_SERVICE \ - --query 'services[0].{ServiceName:serviceName,Status:status,DesiredCount:desiredCount,RunningCount:runningCount,PendingCount:pendingCount}' \ + --query 'services[0].{ServiceName:serviceName,Status:status,DesiredCount:desiredCount,RunningCount:runningCount,PendingCount:pendingCount,TaskDefinition:taskDefinition}' \ + --output table + + echo "" + echo "Current running tasks:" + aws ecs list-tasks \ + --cluster $ECS_CLUSTER \ + --service-name $ECS_SERVICE \ + --query 'taskArns' \ --output table From e05d170439da2c0f2428213d83f54120667a5d78 Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Thu, 17 Jul 2025 08:08:56 +0200 Subject: [PATCH 227/230] Update deploy-ecs.yaml --- .github/workflows/deploy-ecs.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-ecs.yaml b/.github/workflows/deploy-ecs.yaml index 80b0a4920d8..ec10db69169 100644 --- a/.github/workflows/deploy-ecs.yaml +++ b/.github/workflows/deploy-ecs.yaml @@ -1,6 +1,6 @@ # This GitHub Actions workflow automates deploying the Zebra Server to Amazon ECS. # It allows manual triggering with the ability to choose which image tag to deploy. -# This version properly updates the task definition with the new image. +# Because of the "force-new-deployment" flag, the ECS service will update to a new 'latest' image, if one was pushed. name: Deploy to Amazon ECS on: workflow_dispatch: @@ -16,7 +16,7 @@ env: ECS_SERVICE: ${{ vars.ECS_SERVICE || 'dev-zebra' }} ECS_CLUSTER: ${{ vars.ECS_CLUSTER || 'dev-zebra-cluster' }} TASK_DEFINITION: ${{ vars.TASK_DEFINITION || 'dev-zebra-task' }} - CONTAINER_NAME: ${{ vars.CONTAINER_NAME || 'zebra-server' }} + CONTAINER_NAME: ${{ vars.CONTAINER_NAME || 'zebra-container' }} jobs: deploy-to-ecs: name: Deploy to ECS From 6a5678d9aa0b1d9f0c925e35e98bfcdc9fc11846 Mon Sep 17 00:00:00 2001 From: Arseni Kalma Date: Thu, 17 Jul 2025 10:50:06 +0200 Subject: [PATCH 228/230] 1 time task definition download --- .github/workflows/deploy-ecs.yaml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy-ecs.yaml b/.github/workflows/deploy-ecs.yaml index ec10db69169..04e454dcb05 100644 --- a/.github/workflows/deploy-ecs.yaml +++ b/.github/workflows/deploy-ecs.yaml @@ -49,19 +49,16 @@ jobs: echo "Task Definition: $TASK_DEFINITION" echo "Container Name: $CONTAINER_NAME" - # Get the current task definition - TASK_DEFINITION_ARN=$(aws ecs describe-task-definition \ - --task-definition $TASK_DEFINITION \ - --query 'taskDefinition.taskDefinitionArn' \ - --output text) - - echo "Current task definition ARN: $TASK_DEFINITION_ARN" - # Download the current task definition aws ecs describe-task-definition \ --task-definition $TASK_DEFINITION \ --query 'taskDefinition' > task-definition.json + # Get the current task definition ARN from the downloaded file + TASK_DEFINITION_ARN=$(jq -r '.taskDefinitionArn' task-definition.json) + + echo "Current task definition ARN: $TASK_DEFINITION_ARN" + # Update the image in the task definition jq --arg IMAGE_URI "$IMAGE_URI" --arg CONTAINER_NAME "$CONTAINER_NAME" \ '.containerDefinitions |= map(if .name == $CONTAINER_NAME then .image = $IMAGE_URI else . end) | del(.taskDefinitionArn, .revision, .status, .requiresAttributes, .placementConstraints, .compatibilities, .registeredAt, .registeredBy)' \ From 6821d89560b6466bc258dc21f451f8c6dc93b5a8 Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Mon, 4 Aug 2025 10:12:20 +0200 Subject: [PATCH 229/230] First-stage ZSA integration: apply upstream feedback & refactoring (#9560) (#63) * Quote variables in push-deploy.yaml to pass upstream actionlint checks The actionlint job in the ZcashFoundation/zebra repository CI reported multiple SC2086 errors. This commit quotes shell variables in push-deploy.yaml to fix the linter failures. * Avoid to use Into ValueCommitment for ShieldedDataFlavor::BurnType, and use compute_burn_value_commitment instead * Rename generic const parameter N of EncryptedNote to SIZE * Remove shielded_data::ActionCommon introduced during ZSA integration, and replace Transaction::orchard_actions() with Transaction::orchard_action_count() * Remove Default trait constraint for BurnType, also remove FIXME comment there * Address PR #63 review comments: make compute_burn_value_commitment non-generic and move comment to the top of the function --- zebra-chain/src/orchard.rs | 2 -- zebra-chain/src/orchard/note/arbitrary.rs | 6 ++-- zebra-chain/src/orchard/note/ciphertexts.rs | 18 +++++----- zebra-chain/src/orchard/shielded_data.rs | 34 +++---------------- .../src/orchard/shielded_data_flavor.rs | 8 +---- zebra-chain/src/orchard_zsa.rs | 2 +- zebra-chain/src/orchard_zsa/burn.rs | 33 ++++++------------ zebra-chain/src/transaction.rs | 30 ++++++++-------- zebra-chain/src/transaction/unmined/zip317.rs | 2 +- zebra-consensus/src/transaction/tests.rs | 9 +++-- 10 files changed, 48 insertions(+), 96 deletions(-) diff --git a/zebra-chain/src/orchard.rs b/zebra-chain/src/orchard.rs index 290ddb4931a..5c258723c79 100644 --- a/zebra-chain/src/orchard.rs +++ b/zebra-chain/src/orchard.rs @@ -26,7 +26,5 @@ pub use note::{EncryptedNote, Note, Nullifier, WrappedNoteKey}; pub use shielded_data::{AuthorizedAction, Flags, ShieldedData}; pub use shielded_data_flavor::{OrchardVanilla, ShieldedDataFlavor}; -pub(crate) use shielded_data::ActionCommon; - #[cfg(feature = "tx-v6")] pub use shielded_data_flavor::OrchardZSA; diff --git a/zebra-chain/src/orchard/note/arbitrary.rs b/zebra-chain/src/orchard/note/arbitrary.rs index 7968877d9bd..88e34618170 100644 --- a/zebra-chain/src/orchard/note/arbitrary.rs +++ b/zebra-chain/src/orchard/note/arbitrary.rs @@ -2,13 +2,13 @@ use proptest::{collection::vec, prelude::*}; use super::*; -impl Arbitrary for EncryptedNote { +impl Arbitrary for EncryptedNote { type Parameters = (); fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - (vec(any::(), N)) + (vec(any::(), SIZE)) .prop_map(|v| { - let mut bytes = [0; N]; + let mut bytes = [0; SIZE]; bytes.copy_from_slice(v.as_slice()); Self(bytes) }) diff --git a/zebra-chain/src/orchard/note/ciphertexts.rs b/zebra-chain/src/orchard/note/ciphertexts.rs index 9b676ffd96b..7817d531c0b 100644 --- a/zebra-chain/src/orchard/note/ciphertexts.rs +++ b/zebra-chain/src/orchard/note/ciphertexts.rs @@ -10,21 +10,21 @@ use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize} /// /// Corresponds to the Orchard 'encCiphertext's #[derive(Deserialize, Serialize, Clone, Debug, Eq, PartialEq)] -pub struct EncryptedNote(#[serde(with = "BigArray")] pub(crate) [u8; N]); +pub struct EncryptedNote(#[serde(with = "BigArray")] pub(crate) [u8; SIZE]); -impl From<[u8; N]> for EncryptedNote { - fn from(bytes: [u8; N]) -> Self { +impl From<[u8; SIZE]> for EncryptedNote { + fn from(bytes: [u8; SIZE]) -> Self { Self(bytes) } } -impl From> for [u8; N] { - fn from(enc_ciphertext: EncryptedNote) -> Self { +impl From> for [u8; SIZE] { + fn from(enc_ciphertext: EncryptedNote) -> Self { enc_ciphertext.0 } } -impl TryFrom<&[u8]> for EncryptedNote { +impl TryFrom<&[u8]> for EncryptedNote { type Error = std::array::TryFromSliceError; fn try_from(bytes: &[u8]) -> Result { @@ -32,16 +32,16 @@ impl TryFrom<&[u8]> for EncryptedNote { } } -impl ZcashSerialize for EncryptedNote { +impl ZcashSerialize for EncryptedNote { fn zcash_serialize(&self, mut writer: W) -> Result<(), io::Error> { writer.write_all(&self.0[..])?; Ok(()) } } -impl ZcashDeserialize for EncryptedNote { +impl ZcashDeserialize for EncryptedNote { fn zcash_deserialize(mut reader: R) -> Result { - let mut bytes = [0; N]; + let mut bytes = [0; SIZE]; reader.read_exact(&mut bytes[..])?; Ok(Self(bytes)) } diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index 37e84fa9a3b..dc0453ef6ea 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -20,6 +20,9 @@ use crate::{ }, }; +#[cfg(feature = "tx-v6")] +use crate::orchard_zsa::compute_burn_value_commitment; + #[cfg(feature = "tx-v6")] use orchard::{note::AssetBase, value::ValueSum}; @@ -87,12 +90,6 @@ impl ShieldedData { self.actions.actions() } - /// Return an iterator for the [`ActionCommon`] copy of the Actions in this - /// transaction, in the order they appear in it. - pub fn action_commons(&self) -> impl Iterator + '_ { - self.actions.actions().map(|action| action.into()) - } - /// Collect the [`Nullifier`]s for this transaction. pub fn nullifiers(&self) -> impl Iterator { self.actions().map(|action| &action.nullifier) @@ -142,7 +139,7 @@ impl ShieldedData { (ValueSum::default() + i64::from(self.value_balance)).unwrap(), AssetBase::native(), ); - let burn_value_commitment = self.burn.clone().into(); + let burn_value_commitment = compute_burn_value_commitment(self.burn.as_ref()); cv - cv_balance - burn_value_commitment }; @@ -260,29 +257,6 @@ impl AuthorizedAction { } } -/// The common field used both in Vanilla actions and ZSA actions. -pub struct ActionCommon { - /// A value commitment to net value of the input note minus the output note - pub cv: ValueCommitment, - /// The nullifier of the input note being spent. - pub nullifier: super::note::Nullifier, - /// The randomized validating key for spendAuthSig, - pub rk: reddsa::VerificationKeyBytes, - /// The x-coordinate of the note commitment for the output note. - pub cm_x: pallas::Base, -} - -impl From<&Action> for ActionCommon { - fn from(action: &Action) -> Self { - Self { - cv: action.cv, - nullifier: action.nullifier, - rk: action.rk, - cm_x: action.cm_x, - } - } -} - /// The maximum number of orchard actions in a valid Zcash on-chain transaction V5. /// /// If a transaction contains more actions than can fit in maximally large block, it might be diff --git a/zebra-chain/src/orchard/shielded_data_flavor.rs b/zebra-chain/src/orchard/shielded_data_flavor.rs index 7535305b636..7dfae6d109a 100644 --- a/zebra-chain/src/orchard/shielded_data_flavor.rs +++ b/zebra-chain/src/orchard/shielded_data_flavor.rs @@ -14,10 +14,7 @@ pub use orchard::{note::AssetBase, orchard_flavor::OrchardZSA, value::NoteValue} use crate::serialization::{ZcashDeserialize, ZcashSerialize}; #[cfg(feature = "tx-v6")] -use crate::{ - orchard::ValueCommitment, - orchard_zsa::{Burn, BurnItem, NoBurn}, -}; +use crate::orchard_zsa::{Burn, BurnItem, NoBurn}; use super::note; @@ -54,13 +51,10 @@ pub trait ShieldedDataFlavor: OrchardFlavor { /// A type representing a burn field for this protocol version. #[cfg(feature = "tx-v6")] - // FIXME: try to get rid type BurnType: Clone + Debug - + Default + ZcashDeserialize + ZcashSerialize - + Into + AsRef<[BurnItem]> + for<'a> From<&'a [(AssetBase, NoteValue)]> + test_arbitrary::TestArbitrary; diff --git a/zebra-chain/src/orchard_zsa.rs b/zebra-chain/src/orchard_zsa.rs index a76b388ca6e..a90c115a9b3 100644 --- a/zebra-chain/src/orchard_zsa.rs +++ b/zebra-chain/src/orchard_zsa.rs @@ -6,5 +6,5 @@ mod arbitrary; mod burn; mod issuance; -pub(crate) use burn::{Burn, BurnItem, NoBurn}; +pub(crate) use burn::{compute_burn_value_commitment, Burn, BurnItem, NoBurn}; pub(crate) use issuance::IssueData; diff --git a/zebra-chain/src/orchard_zsa/burn.rs b/zebra-chain/src/orchard_zsa/burn.rs index 5a8cd9f18a9..bc738c2a7ef 100644 --- a/zebra-chain/src/orchard_zsa/burn.rs +++ b/zebra-chain/src/orchard_zsa/burn.rs @@ -100,16 +100,6 @@ impl From<&[(AssetBase, NoteValue)]> for NoBurn { } } -impl From for ValueCommitment { - fn from(_burn: NoBurn) -> ValueCommitment { - ValueCommitment::new( - pallas::Scalar::zero(), - NoteValue::from_raw(0).into(), - AssetBase::native(), - ) - } -} - impl AsRef<[BurnItem]> for NoBurn { fn as_ref(&self) -> &[BurnItem] { &[] @@ -149,18 +139,6 @@ impl From<&[(AssetBase, NoteValue)]> for Burn { } } -impl From for ValueCommitment { - fn from(burn: Burn) -> ValueCommitment { - burn.0 - .into_iter() - .map(|BurnItem(asset, amount)| { - // The trapdoor for the burn which is public is always zero. - ValueCommitment::new(pallas::Scalar::zero(), amount.into(), asset) - }) - .sum() - } -} - impl AsRef<[BurnItem]> for Burn { fn as_ref(&self) -> &[BurnItem] { &self.0 @@ -186,3 +164,14 @@ impl ZcashDeserialize for Burn { )) } } + +/// Computes the value commitment for a list of burns. +/// +/// For burns, the public trapdoor is always zero. +pub(crate) fn compute_burn_value_commitment(burn: &[BurnItem]) -> ValueCommitment { + burn.iter() + .map(|&BurnItem(asset, amount)| { + ValueCommitment::new(pallas::Scalar::zero(), amount.into(), asset) + }) + .sum() +} diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index 9b01316cfc3..4e4d8563fe6 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -193,7 +193,7 @@ impl fmt::Display for Transaction { fmter.field("sprout_joinsplits", &self.joinsplit_count()); fmter.field("sapling_spends", &self.sapling_spends_per_anchor().count()); fmter.field("sapling_outputs", &self.sapling_outputs().count()); - fmter.field("orchard_actions", &self.orchard_actions().count()); + fmter.field("orchard_actions", &self.orchard_action_count()); fmter.field("unmined_id", &self.unmined_id()); @@ -335,7 +335,7 @@ impl Transaction { pub fn has_shielded_inputs(&self) -> bool { self.joinsplit_count() > 0 || self.sapling_spends_per_anchor().count() > 0 - || (self.orchard_actions().count() > 0 + || (self.orchard_action_count() > 0 && self .orchard_flags() .unwrap_or_else(orchard::Flags::empty) @@ -353,7 +353,7 @@ impl Transaction { pub fn has_shielded_outputs(&self) -> bool { self.joinsplit_count() > 0 || self.sapling_outputs().count() > 0 - || (self.orchard_actions().count() > 0 + || (self.orchard_action_count() > 0 && self .orchard_flags() .unwrap_or_else(orchard::Flags::empty) @@ -362,7 +362,7 @@ impl Transaction { /// Does this transaction has at least one flag when we have at least one orchard action? pub fn has_enough_orchard_flags(&self) -> bool { - if self.version() < 5 || self.orchard_actions().count() == 0 { + if self.version() < 5 || self.orchard_action_count() == 0 { return true; } self.orchard_flags() @@ -999,31 +999,29 @@ impl Transaction { // orchard /// Iterate over the [`orchard::Action`]s in this transaction. - pub fn orchard_actions(&self) -> Box + '_> { + pub fn orchard_action_count(&self) -> usize { match self { Transaction::V1 { .. } | Transaction::V2 { .. } | Transaction::V3 { .. } - | Transaction::V4 { .. } => Box::new(std::iter::empty()), + | Transaction::V4 { .. } => 0, Transaction::V5 { orchard_shielded_data, .. - } => Box::new( - orchard_shielded_data - .iter() - .flat_map(orchard::ShieldedData::action_commons), - ), + } => orchard_shielded_data + .iter() + .flat_map(orchard::ShieldedData::actions) + .count(), #[cfg(feature = "tx-v6")] Transaction::V6 { orchard_shielded_data, .. - } => Box::new( - orchard_shielded_data - .iter() - .flat_map(orchard::ShieldedData::action_commons), - ), + } => orchard_shielded_data + .iter() + .flat_map(orchard::ShieldedData::actions) + .count(), } } diff --git a/zebra-chain/src/transaction/unmined/zip317.rs b/zebra-chain/src/transaction/unmined/zip317.rs index b9f04ec7597..dc6c8277378 100644 --- a/zebra-chain/src/transaction/unmined/zip317.rs +++ b/zebra-chain/src/transaction/unmined/zip317.rs @@ -153,7 +153,7 @@ pub fn conventional_actions(transaction: &Transaction) -> u32 { let n_join_split = transaction.joinsplit_count(); let n_spends_sapling = transaction.sapling_spends_per_anchor().count(); let n_outputs_sapling = transaction.sapling_outputs().count(); - let n_actions_orchard = transaction.orchard_actions().count(); + let n_actions_orchard = transaction.orchard_action_count(); let tx_in_logical_actions = div_ceil(tx_in_total_size, P2PKH_STANDARD_INPUT_SIZE); let tx_out_logical_actions = div_ceil(tx_out_total_size, P2PKH_STANDARD_OUTPUT_SIZE); diff --git a/zebra-consensus/src/transaction/tests.rs b/zebra-consensus/src/transaction/tests.rs index 5494537edb8..06aa7040b1c 100644 --- a/zebra-consensus/src/transaction/tests.rs +++ b/zebra-consensus/src/transaction/tests.rs @@ -166,7 +166,7 @@ fn v5_transaction_with_no_inputs_fails_validation() { .find(|transaction| { transaction.inputs().is_empty() && transaction.sapling_spends_per_anchor().next().is_none() - && transaction.orchard_actions().next().is_none() + && transaction.orchard_action_count() == 0 && transaction.joinsplit_count() == 0 && (!transaction.outputs().is_empty() || transaction.sapling_outputs().next().is_some()) }) @@ -800,7 +800,7 @@ fn v5_transaction_with_no_outputs_fails_validation() { .find(|transaction| { transaction.outputs().is_empty() && transaction.sapling_outputs().next().is_none() - && transaction.orchard_actions().next().is_none() + && transaction.orchard_action_count() == 0 && transaction.joinsplit_count() == 0 && (!transaction.inputs().is_empty() || transaction.sapling_spends_per_anchor().next().is_some()) @@ -2795,8 +2795,7 @@ fn coinbase_outputs_are_decryptable_for_historical_blocks_for_network( // Check if the coinbase outputs are decryptable with an all-zero key. if heartwood_onward - && (coinbase_tx.sapling_outputs().count() > 0 - || coinbase_tx.orchard_actions().count() > 0) + && (coinbase_tx.sapling_outputs().count() > 0 || coinbase_tx.orchard_action_count() > 0) { // We are only truly decrypting something if it's Heartwood-onward // and there are relevant outputs. @@ -2808,7 +2807,7 @@ fn coinbase_outputs_are_decryptable_for_historical_blocks_for_network( // For remaining transactions, check if existing outputs are NOT decryptable // with an all-zero key, if applicable. for tx in block.transactions.iter().skip(1) { - let has_outputs = tx.sapling_outputs().count() > 0 || tx.orchard_actions().count() > 0; + let has_outputs = tx.sapling_outputs().count() > 0 || tx.orchard_action_count() > 0; if has_outputs && heartwood_onward { tested_non_coinbase_txs += 1; check::coinbase_outputs_are_decryptable(tx, &network, height).expect_err( From 3c9bac204eb8d9e62ee221b87934f8802404030e Mon Sep 17 00:00:00 2001 From: Dmitry Demin Date: Tue, 5 Aug 2025 20:23:00 +0200 Subject: [PATCH 230/230] Add more V6 tests to zebra-chain, refactor OrchardZSA tests in zebra-test (#62) * Rename orchard_..._zsa test vector files to orchard_zsa_..., same for structs and consts declardd there * Add tests for empty tx v6 into zebra-chain * Add V6 roundtrip tests based on ORCHARD_ZSA_WORKFLOW_BLOCKS test vectors to zebra-chain * Address PR #62 review comments * Improve OrchardZSA V6 round-trip and conversion tests --- .../src/primitives/zcash_primitives.rs | 8 +- zebra-chain/src/transaction/tests/vectors.rs | 134 ++++++++++++++++-- zebra-consensus/src/orchard_zsa/tests.rs | 4 +- zebra-consensus/src/primitives/halo2/tests.rs | 5 +- zebra-test/src/vectors.rs | 8 +- ...-1.txt => orchard-zsa-shielded-data-1.txt} | 0 ...-2.txt => orchard-zsa-shielded-data-2.txt} | 0 ...-3.txt => orchard-zsa-shielded-data-3.txt} | 0 ...-4.txt => orchard-zsa-shielded-data-4.txt} | 0 .../src/vectors/orchard_shielded_data_zsa.rs | 34 ----- .../src/vectors/orchard_zsa_shielded_data.rs | 34 +++++ ..._zsa.rs => orchard_zsa_workflow_blocks.rs} | 2 +- 12 files changed, 170 insertions(+), 59 deletions(-) rename zebra-test/src/vectors/{orchard-shielded-data-zsa-1.txt => orchard-zsa-shielded-data-1.txt} (100%) rename zebra-test/src/vectors/{orchard-shielded-data-zsa-2.txt => orchard-zsa-shielded-data-2.txt} (100%) rename zebra-test/src/vectors/{orchard-shielded-data-zsa-3.txt => orchard-zsa-shielded-data-3.txt} (100%) rename zebra-test/src/vectors/{orchard-shielded-data-zsa-4.txt => orchard-zsa-shielded-data-4.txt} (100%) delete mode 100644 zebra-test/src/vectors/orchard_shielded_data_zsa.rs create mode 100644 zebra-test/src/vectors/orchard_zsa_shielded_data.rs rename zebra-test/src/vectors/{orchard_workflow_blocks_zsa.rs => orchard_zsa_workflow_blocks.rs} (99%) diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 2260412cdc4..90ea70324d7 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -180,12 +180,16 @@ impl TryFrom<&Transaction> for zp_tx::Transaction { Transaction::V1 { .. } | Transaction::V2 { .. } | Transaction::V3 { .. } - | Transaction::V4 { .. } => panic!("Zebra only uses librustzcash for V5 transactions"), + | Transaction::V4 { .. } => { + panic!("Zebra only uses librustzcash for V5/V6 transactions"); + } }; convert_tx_to_librustzcash( trans, - network_upgrade.branch_id().expect("V5 txs have branch IDs"), + network_upgrade + .branch_id() + .expect("V5/V6 txs have branch IDs"), ) } } diff --git a/zebra-chain/src/transaction/tests/vectors.rs b/zebra-chain/src/transaction/tests/vectors.rs index 9e0af8adf63..00bb81a783a 100644 --- a/zebra-chain/src/transaction/tests/vectors.rs +++ b/zebra-chain/src/transaction/tests/vectors.rs @@ -30,6 +30,18 @@ lazy_static! { sapling_shielded_data: None, orchard_shielded_data: None, }; + + #[cfg(feature = "tx-v6")] + pub static ref EMPTY_V6_TX: Transaction = Transaction::V6 { + network_upgrade: NetworkUpgrade::Nu7, + lock_time: LockTime::min_lock_time_timestamp(), + expiry_height: block::Height(0), + inputs: Vec::new(), + outputs: Vec::new(), + sapling_shielded_data: None, + orchard_shielded_data: None, + orchard_zsa_issue_data: None + }; } /// Build a mock output list for pre-V5 transactions, with (index+1) @@ -257,18 +269,9 @@ fn deserialize_large_transaction() { .expect_err("transaction should not deserialize due to its size"); } -// Transaction V5 test vectors - -/// An empty transaction v5, with no Orchard, Sapling, or Transparent data -/// -/// empty transaction are invalid, but Zebra only checks this rule in -/// zebra_consensus::transaction::Verifier -#[test] -fn empty_v5_round_trip() { +fn tx_round_trip(tx: &Transaction) { let _init_guard = zebra_test::init(); - let tx: &Transaction = &EMPTY_V5_TX; - let data = tx.zcash_serialize_to_vec().expect("tx should serialize"); let tx2: &Transaction = &data .zcash_deserialize_into() @@ -314,18 +317,47 @@ fn empty_v4_round_trip() { assert_eq!(data, data2, "data must be equal if structs are equal"); } -/// Check if an empty V5 transaction can be deserialized by librustzcash too. +/// An empty transaction v5, with no Orchard, Sapling, or Transparent data +/// +/// empty transaction are invalid, but Zebra only checks this rule in +/// zebra_consensus::transaction::Verifier #[test] -fn empty_v5_librustzcash_round_trip() { +fn empty_v5_round_trip() { + tx_round_trip(&EMPTY_V5_TX) +} + +#[cfg(feature = "tx-v6")] +/// An empty transaction v6, with no Orchard/OrchardZSA, Sapling, or Transparent data +/// +/// empty transaction are invalid, but Zebra only checks this rule in +/// zebra_consensus::transaction::Verifier +#[test] +fn empty_v6_round_trip() { + tx_round_trip(&EMPTY_V6_TX) +} + +fn tx_librustzcash_round_trip(tx: &Transaction) { let _init_guard = zebra_test::init(); - let tx: &Transaction = &EMPTY_V5_TX; let _alt_tx: zcash_primitives::transaction::Transaction = tx.try_into().expect( "librustzcash deserialization might work for empty zebra serialized transactions. \ Hint: if empty transactions fail, but other transactions work, delete this test", ); } +/// Check if an empty V5 transaction can be deserialized by librustzcash too. +#[test] +fn empty_v5_librustzcash_round_trip() { + tx_librustzcash_round_trip(&EMPTY_V5_TX); +} + +#[cfg(feature = "tx-v6")] +/// Check if an empty V6 transaction can be deserialized by librustzcash too. +#[test] +fn empty_v6_librustzcash_round_trip() { + tx_librustzcash_round_trip(&EMPTY_V6_TX); +} + /// Do a round-trip test on fake v5 transactions created from v4 transactions /// in the block test vectors. /// @@ -450,6 +482,54 @@ fn fake_v5_round_trip_for_network(network: Network) { } } +#[cfg(feature = "tx-v6")] +/// Do a serialization round-trip on OrchardZSA workflow blocks and their V6 +/// transactions. +#[test] +fn v6_round_trip() { + use zebra_test::vectors::ORCHARD_ZSA_WORKFLOW_BLOCKS; + + let _init_guard = zebra_test::init(); + + for block_bytes in ORCHARD_ZSA_WORKFLOW_BLOCKS.iter() { + let block = block_bytes + .zcash_deserialize_into::() + .expect("block is structurally valid"); + + // test full blocks + let block_bytes2 = block + .zcash_serialize_to_vec() + .expect("vec serialization is infallible"); + + assert_eq!( + block_bytes, &block_bytes2, + "data must be equal if structs are equal" + ); + + // test each transaction + for tx in &block.transactions { + let tx_bytes = tx + .zcash_serialize_to_vec() + .expect("vec serialization is infallible"); + + let tx2 = tx_bytes + .zcash_deserialize_into::() + .expect("tx is structurally valid"); + + assert_eq!(tx.as_ref(), &tx2); + + let tx_bytes2 = tx2 + .zcash_serialize_to_vec() + .expect("vec serialization is infallible"); + + assert_eq!( + tx_bytes, tx_bytes2, + "data must be equal if structs are equal" + ); + } + } +} + #[test] fn invalid_orchard_nullifier() { let _init_guard = zebra_test::init(); @@ -549,6 +629,34 @@ fn fake_v5_librustzcash_round_trip_for_network(network: Network) { } } +#[cfg(feature = "tx-v6")] +/// Confirms each V6 transaction in the OrchardZSA test blocks converts to librustzcash’s +/// transaction type without error. +#[test] +fn v6_librustzcash_tx_conversion() { + use zebra_test::vectors::ORCHARD_ZSA_WORKFLOW_BLOCKS; + + let _init_guard = zebra_test::init(); + + for block_bytes in ORCHARD_ZSA_WORKFLOW_BLOCKS.iter() { + let block = block_bytes + .zcash_deserialize_into::() + .expect("block is structurally valid"); + + // Test each V6 transaction + for tx in block + .transactions + .iter() + .filter(|tx| matches!(tx.as_ref(), &Transaction::V6 { .. })) + { + let _alt_tx: zcash_primitives::transaction::Transaction = tx + .as_ref() + .try_into() + .expect("librustzcash conversion must work for zebra transactions"); + } + } +} + #[test] fn zip244_round_trip() -> Result<()> { let _init_guard = zebra_test::init(); diff --git a/zebra-consensus/src/orchard_zsa/tests.rs b/zebra-consensus/src/orchard_zsa/tests.rs index 7783c454d74..237e73b2983 100644 --- a/zebra-consensus/src/orchard_zsa/tests.rs +++ b/zebra-consensus/src/orchard_zsa/tests.rs @@ -24,14 +24,14 @@ use zebra_chain::{ use zebra_test::{ transcript::{ExpectedTranscriptError, Transcript}, - vectors::ORCHARD_WORKFLOW_BLOCKS_ZSA, + vectors::ORCHARD_ZSA_WORKFLOW_BLOCKS, }; use crate::{block::Request, Config}; fn create_transcript_data() -> impl Iterator)> { - let workflow_blocks = ORCHARD_WORKFLOW_BLOCKS_ZSA.iter().map(|block_bytes| { + let workflow_blocks = ORCHARD_ZSA_WORKFLOW_BLOCKS.iter().map(|block_bytes| { Arc::new(Block::zcash_deserialize(&block_bytes[..]).expect("block should deserialize")) }); diff --git a/zebra-consensus/src/primitives/halo2/tests.rs b/zebra-consensus/src/primitives/halo2/tests.rs index e0fe52527b1..beb644a0c1f 100644 --- a/zebra-consensus/src/primitives/halo2/tests.rs +++ b/zebra-consensus/src/primitives/halo2/tests.rs @@ -24,7 +24,6 @@ use zebra_chain::{ use crate::primitives::halo2::*; -// FIXME: Where is this function called from? #[allow(dead_code, clippy::print_stdout)] fn generate_test_vectors() where @@ -199,7 +198,7 @@ async fn verify_generated_halo2_proofs_vanilla() { #[cfg(feature = "tx-v6")] #[tokio::test(flavor = "multi_thread")] async fn verify_generated_halo2_proofs_zsa() { - verify_generated_halo2_proofs::(&zebra_test::vectors::ORCHARD_SHIELDED_DATA_ZSA) + verify_generated_halo2_proofs::(&zebra_test::vectors::ORCHARD_ZSA_SHIELDED_DATA) .await } @@ -291,7 +290,7 @@ async fn correctly_err_on_invalid_halo2_proofs_vanilla() { #[tokio::test(flavor = "multi_thread")] async fn correctly_err_on_invalid_halo2_proofs_zsa() { correctly_err_on_invalid_halo2_proofs::( - &zebra_test::vectors::ORCHARD_SHIELDED_DATA_ZSA, + &zebra_test::vectors::ORCHARD_ZSA_SHIELDED_DATA, ) .await } diff --git a/zebra-test/src/vectors.rs b/zebra-test/src/vectors.rs index f6983c95661..ce0db04e8e9 100644 --- a/zebra-test/src/vectors.rs +++ b/zebra-test/src/vectors.rs @@ -8,20 +8,20 @@ mod orchard_note_encryption; mod orchard_shielded_data; #[cfg(feature = "tx-v6")] -mod orchard_shielded_data_zsa; +mod orchard_zsa_shielded_data; #[cfg(feature = "tx-v6")] -mod orchard_workflow_blocks_zsa; +mod orchard_zsa_workflow_blocks; pub use block::*; pub use orchard_note_encryption::*; pub use orchard_shielded_data::*; #[cfg(feature = "tx-v6")] -pub use orchard_shielded_data_zsa::*; +pub use orchard_zsa_shielded_data::*; #[cfg(feature = "tx-v6")] -pub use orchard_workflow_blocks_zsa::*; +pub use orchard_zsa_workflow_blocks::*; /// A testnet transaction test vector /// diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt b/zebra-test/src/vectors/orchard-zsa-shielded-data-1.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-zsa-1.txt rename to zebra-test/src/vectors/orchard-zsa-shielded-data-1.txt diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt b/zebra-test/src/vectors/orchard-zsa-shielded-data-2.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-zsa-2.txt rename to zebra-test/src/vectors/orchard-zsa-shielded-data-2.txt diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt b/zebra-test/src/vectors/orchard-zsa-shielded-data-3.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-zsa-3.txt rename to zebra-test/src/vectors/orchard-zsa-shielded-data-3.txt diff --git a/zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt b/zebra-test/src/vectors/orchard-zsa-shielded-data-4.txt similarity index 100% rename from zebra-test/src/vectors/orchard-shielded-data-zsa-4.txt rename to zebra-test/src/vectors/orchard-zsa-shielded-data-4.txt diff --git a/zebra-test/src/vectors/orchard_shielded_data_zsa.rs b/zebra-test/src/vectors/orchard_shielded_data_zsa.rs deleted file mode 100644 index 3e0c20fa8f2..00000000000 --- a/zebra-test/src/vectors/orchard_shielded_data_zsa.rs +++ /dev/null @@ -1,34 +0,0 @@ -//! OrchardZSA shielded data (with Actions) test vectors -//! -//! Generated by `zebra_chain::primitives::halo2::tests::generate_test_vectors()` -//! -//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` -//! instances, care should be used when using them to test functionality beyond -//! verifying a standalone Orchard Acton Halo2 proof. - -#![allow(missing_docs)] - -use hex::FromHex; -use lazy_static::lazy_static; - -lazy_static! { - pub static ref ORCHARD_SHIELDED_DATA_ZSA: Vec<&'static [u8]> = [ - ORCHARD_SHIELDED_DATA_ZSA_1_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_ZSA_2_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_ZSA_3_BYTES.as_ref(), - ORCHARD_SHIELDED_DATA_ZSA_4_BYTES.as_ref(), - ] - .to_vec(); - pub static ref ORCHARD_SHIELDED_DATA_ZSA_1_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-zsa-1.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_ZSA_2_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-zsa-2.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_ZSA_3_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-zsa-3.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); - pub static ref ORCHARD_SHIELDED_DATA_ZSA_4_BYTES: Vec = - >::from_hex(include_str!("orchard-shielded-data-zsa-4.txt").trim()) - .expect("OrchardZSA shielded data bytes are in valid hex representation"); -} diff --git a/zebra-test/src/vectors/orchard_zsa_shielded_data.rs b/zebra-test/src/vectors/orchard_zsa_shielded_data.rs new file mode 100644 index 00000000000..0ff29de1117 --- /dev/null +++ b/zebra-test/src/vectors/orchard_zsa_shielded_data.rs @@ -0,0 +1,34 @@ +//! OrchardZSA shielded data (with Actions) test vectors +//! +//! Generated by `zebra_chain::primitives::halo2::tests::generate_test_vectors()` +//! +//! These are artificial/incomplete `zebra_chain::orchard::ShieldedData` +//! instances, care should be used when using them to test functionality beyond +//! verifying a standalone Orchard Acton Halo2 proof. + +#![allow(missing_docs)] + +use hex::FromHex; +use lazy_static::lazy_static; + +lazy_static! { + pub static ref ORCHARD_ZSA_SHIELDED_DATA: Vec<&'static [u8]> = [ + ORCHARD_ZSA_SHIELDED_DATA_1_BYTES.as_ref(), + ORCHARD_ZSA_SHIELDED_DATA_2_BYTES.as_ref(), + ORCHARD_ZSA_SHIELDED_DATA_3_BYTES.as_ref(), + ORCHARD_ZSA_SHIELDED_DATA_4_BYTES.as_ref(), + ] + .to_vec(); + pub static ref ORCHARD_ZSA_SHIELDED_DATA_1_BYTES: Vec = + >::from_hex(include_str!("orchard-zsa-shielded-data-1.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_ZSA_SHIELDED_DATA_2_BYTES: Vec = + >::from_hex(include_str!("orchard-zsa-shielded-data-2.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_ZSA_SHIELDED_DATA_3_BYTES: Vec = + >::from_hex(include_str!("orchard-zsa-shielded-data-3.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); + pub static ref ORCHARD_ZSA_SHIELDED_DATA_4_BYTES: Vec = + >::from_hex(include_str!("orchard-zsa-shielded-data-4.txt").trim()) + .expect("OrchardZSA shielded data bytes are in valid hex representation"); +} diff --git a/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs b/zebra-test/src/vectors/orchard_zsa_workflow_blocks.rs similarity index 99% rename from zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs rename to zebra-test/src/vectors/orchard_zsa_workflow_blocks.rs index 87153e35be3..733052cf920 100644 --- a/zebra-test/src/vectors/orchard_workflow_blocks_zsa.rs +++ b/zebra-test/src/vectors/orchard_zsa_workflow_blocks.rs @@ -7,7 +7,7 @@ lazy_static! { /// Test blocks for a Zcash Shielded Assets (ZSA) workflow. /// The sequence demonstrates issuing, transferring and burning a custom /// asset, then finalising the issuance and attempting an extra issue. -pub static ref ORCHARD_WORKFLOW_BLOCKS_ZSA: [Vec; 5] = [ +pub static ref ORCHARD_ZSA_WORKFLOW_BLOCKS: [Vec; 5] = [ // Issue: 1000 "0400000027e30134d620e9fe61f719938320bab63e7e72c91b5e23025676f90ed8119f027f6043d927d72f8b5df9984fdd36d2e2e1fd1ff8f7ee04a2b7da9306c14551c40000000000000000000000000000000000000000000000000000000000000000f2fa494d3fa60c200202020202020202020202020202020202020202020202020202020202020202fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff025100ffffffff0140be4025000000001976a91475dd6d7f4bef95aa1ff1a711e5bfd853b4c6aaf888ac000000000100000000000000000000000000000600008077777777d80a1977000000001c1d1c000000000001029063000c87d7145492f9ded4d37b4ffdee769a1c41b0e17d622cce77f122d70ddb74fb50c5c36666482476bf5e8e190dcd8f5ed280af209b3f679d4dc06a213508774e2f7fa82dff9a985866919085523b13b0af4f534975228468feb62cb12575681e6101284f0fba5628e2ea531e9dad53d864c854e419e4c5b91fb7b35d00597572f98db1bb9f3049dbb9a08d403efd824d9d118a68493191e059ca00b2982252a2ffe5c3918a79171c294481fa267e83272858592d5890884feb90752347f33cfc9443e70a9f30d6150652eb2bb04327ee72b9c5e42462d4d2bd92725df50ce267c1588d29b08b25a719738e836f9c26ee47ce3945f9b627c4b9d3bc8ae755d8b78b840f1fcd055cd179af2ae0637f49fcc44cc975abb478fbd9922c15e946e681ff6aa64ac7275d58c7811c3d87c4e48dc97e35ca68780218e256f8bd7d9c1677bff6d75f663d24802a7b433f4461d686e1a0fd3d214b81b1398f8f79d062c4e92381741c3f96f3e81f455c96d05a623985e39c1d16361928424286483b40cc9b1249032dad9bf92a563bcd978c329ede5eb5c7933f937b6f2b73507c8ed0a2d4ca972281ed79bfe367b474b6fc89a29f20c913a7e42287074a185ea83fca9d0db796cce2cca07f3cd379eba7efdabf86a594e6743b0f30d3315daedd2afe289422cc0a5b73c3e837dc2efb5975e4fa8183fbe68b5688bd827472c41248bacde976d8f16700b4f6c9d6c83afc134e3766b7afdd85be2e373f98a7ef0d2ae19e98bfab76f3362888f3e81917b22236c6eae7c79ed9489410903bfbacf77bc1f0de11692cae0289c786ea3eb08f7fc652146d2529d0217801e2dab9d67c13cdbadd189fa302fbd402c4befe5823e70a802dd9c712396c20028f4f7c94a49409b169fa46a7569fe289d7189adb3e5e9d9dc63903aed828ecc3ec0144b59592a6a88c589577b976b7c781b3b43eba304130bf38971784c7caf8e5994d2ae59eede5ba220d7c43378b492e69c0d7b06445a49174b6aa27d08dc186b7bb5ec6b6b6e3b94185d5d10a07887b5f66f9991aadc239b578426ebb61b85ad40bd80aef5c4707963c2d2d9b79dd9cc416a597aa83c4e74cdebda03d6b7a1cd0238e88161d8ba579987335998fe39a909488455b11937e11d751f425ce7cdee73e8a99042f03eec4b4c00329da7dd90b75ac8918924205cb98346c5ab54096e7a91c9f44c4b21a885d36813221546da0609be857260bd691dff247d867f224ab98015aae153ec30248e15b5c0b2a0731496cf0518d9c63202f93d9f2023022d3fd3c83ec465ad3695d0e0d1ea0fb4eaf9dd8f6f92919ba1461e2d6e80f5d89e6b9b6d5241bffe1d91604c02e13592ef10a4b87612f82ce32b50550f0c46eb4cd6d081152b2123b0ae617e74a6f31f8721e8fcddee49e4c9269517fe55d7e364407b9fec4fb22711585c535bd6a3a656634cf034e30d4bed6e14c56ae98646a3fc42bc4906eb02cc80afdc9c5cd824ca22772567d8aec88c3b4fdc91d34133e8bb2a2787c4fddb3e5065fab306caf686f2684635aab39232c71d9211358eb2491ae39d0c5464efc0ae97b166821956d3c3e70acc7871b3d3c7a00e54e0974236fc1243caa57e04d1ddc3c42d67e23607830aff5540a806c6abc2621035f7e4280c7cd0eaf70db3e88d84da095e0c1a4d0d62728c2f8a939ac274fcddc1442b9993bd8b7f1a965b31af20637c789d93aa5e09fa6eeb4b55393f68cd9bc1a8c67f6d484b9c2134a25478e1fd28e0960ffcf8e36492e4b12f0c787fb16e80d7d0e92ab94a34e53c1b1c0b63db557e54c8e0c919073ff2366c83a4ca9b07b639172dc6df0b6602b3e8977ec3becf6b716c55fcdbaea993494e50b49a9dc8e7c09118942432ea3c5a036d4267928f2393072dc3734dd841e0c37cb2d50fe2f75c5dc77ff9e1540a52b136967862312de74af7071d4f17de67775adf87f1e540161a4eaef191a93aef5daa5ff7d42e36fcb31dd1edd73ba829b32a6d0ee48878bd6ff3ef472f48e9e8bc1f479c34f3d5509288f3181a49a8f3d7771c5cd076533924dc67b96da721ec8a19a85f903c2a2eba21c0146526dff8a8be77831f558be214c43efa29ed6e9be6a2d8e712a745bdcd0f9bce70f997da5928cee6775164168bb343d2613821b4814a1198df32cdab2da48c0188dfeeacef916472529503d8a63c4b2092133c31770d79ac922976417ba6a2d92b4108ca7ae496e039a7ef38deb19d22e1116e92e9cdd0a371b27226e6dcfb14ef5855adaf2949d1e764c6f83bd7e4259dfcf4d1831e2d9b80145128ebbcb0259e3cae8ac973204fb2bbdc5e9d967c6f7e5e4c6f0c139b4a07aa6b63430ff511c223c64933f5fd8ea367d4829c63938a2ee54b3469383824bab4807ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82f0000000000fde01c1ce7832fe7add3bc1fd885958fc5fa1697a0336a4504ebac5d683237a8510183f29c22defb607c48816c49704d3ce388ea27bbc7765a43961fba354af095dc9984dd6b892f223256347a3a59083aed6de70dd327a95e0f3dd1531d01f874829d8095242883e06045c1186ab08124b5dd0b5ec86c6bdd12f5713fb6ce125c0203d9191bc63a1de897698f59060b124cd81b8cea5e2a026577ebae2edf3e238203b670331c0cb32a229e263305484d7f3ef896c4e03bad52bee2250296698b47bea4f60342a23e0ab908a3c094543fbeff20748c3e75b7cf9755813388d5d8871f862bd444e3469e9e72302321bf35114dc6c8341c838f962debbeebf9727a132ea1a03a0141d6965bf152fcaa6d18ef7c24e32103cbebd9c1c87f0601da6e4f07af42615a0b2d41aebfe02e1c2ffaaced5c3d996c8fea947adf7975c4d6419b20aa0c804b867530bc1d1d6103ee6a6674530fed4b4a1289d4376902fc5ed33392111c323f6e73a07ba04c69f8e4214be8074e76124e84990d53091a4b95a9d482a0b2447d911255bb3f312c706151d8a87d284aaa0e4e24c059c07f4952d3fb0308acbbe1513842cf7881159080f10bd0f169169d0c0c126770a9b7985f0aed262ba2749b2c9a237fafefdaac68b8756c2a628f5bf2b7bdd804d23e2a8b9eb70dd38586c842d7a0e3c71dcbe5e651343375adde02e5501107339538b0e2dc45a9cb2eb8831ad77bb61d0359ad4c1a2dc31b29a850a31d7e72d00b978de4b570a9a4e4a403156cdf351154975975d424bd9933415081cdca5eeb411c4a723b6a2d19ab96d3a9ff273d5e923d158425319cce5c63c6ee3adbc5b36e05597472669d4bb48a292271a10a85ff7274a74e5a96e223d0705c08da720425e98ef270f907a20085babb3f642bf67dd8eb3fda67592b6dee4360895e22713783899ec9fe37f861e73cd5261a0be04af440b5f35fcefd345bba49a02f7e754bd5276e343a8f1f081f7e904295a12f57d8b0927be322b35368c463525415e5fc01e43c7064331258ef895a5f0f23bdc7b2095c2d27011bf17dbe37eca66d44ef565ab7cf9280a64651a39635b042ac1b74bbbfcf792e92cadaba08677a836f10bb0d1acbf1318c7b39dfed8b7ca0d64a24ca09d717dc618e036818ea11c743aa6e6a2fbbdd0c42f7c59122392bb90515b425b62ccc85b311d880cf24e621f100cdb8552c4e02360583676ae33cd314bf49a5b6979e6a7fc379759bf1dc9ac51b62c8b1851b87a58ac9fd2a9f30a61e7d96546ce53f8476b575777a533484777fa4ad9d921aa589f4d880de9c28c93c26e6d4284a3ce64ddd454490f73c9db8f4f1f49e9cc939405d635f6ba3be2511c2c1462d65905d8f2f40fb82d112141fd9591bf88ec98f82aee3e7d0a8c0156bbad06fd3eeab3da041ba47c572b3be65bae532893ae1b69d3e37a055c02e994e8429aba5dd5b455335144c63d6ebc6171423f2dd8ac600e648d34512929d7fb66b5fdb19f004c7e75e5e1d5e7af29a5acc9b87c8563c97b1c4cfc848676b1a38ac76ef4ab441f9235325dc1416911bf07ed7c598f6fc1c16b7d4a92489b5821f7151a11ce2dfe04d95d661a5cf284b4bbf83baee5165a3ceba103d36d15fc1a9739229e21789210581f9206323cf03526e2aa38f614bb59853128dd688b711afaf15986e89cac8b4b93b1ee24d55bc40743a4783746caf4f5bcad200363785c754d6af2dd5d519a4151223148e4f5c89703dfd209d8a38b5bc55c5f1f644e6e071bdd8f6597141c37530b7ef9e513c49f9b7b0e0c743830931ae2958c73b14ab1f35e2618298db2c437c95d6d4b13c41b4bdb51f13c1813762e213e18655382d670f55d97b2ed83c695488efe5831ec82656c6d42baa154388d4e212fb5c980b87476e62f4d8e84302f23c54b95b7b1b74e0e44219dabb8e8b4d4830a7494b627e1f6e62a634b86dc821dbaef4e3e3b53e69ad670f1588f2aebdb702828098508060b53cca72fa8c92881a20a852eb1315c2439ec89fa183e67a81c6590dd51a743553fa48fa9f10495c6249c7bbc51ed08e703ce7103e28b12a263fbe66466ad66c11bd9c66c27494b9815e1600bcb2e4248a514a421bd0b0363d8888ad8c9c3605b005a51e77af8a3ae4009f34a24ee242a60cf5c0b2860c715cc56337fe9983a893be43fe75c87997d6eff3e87ca34923fb39993dbfddca1d9861b9314bf420dfef04b0edd9fc9a5b6d7ecedbb7d669a5cdb5045f9a7217f83c62e3eaab4fcaeb347062b02857e7c073eee827e0f1a9c37f4fc3a914b2f583f5632a2fb974aa64f08245c706ad94e29f7b8d1b8b5a423bc3b5b4dd9106d1fa787a9d5d6f64f3273f3758600ff39b6ff0690d7f4dde701aa04e664c9c3f622622736704a523f78bcfad7e882cec28183bf15316370dbd4f3164bdb1224f49a27121e57f7cbb7f8a28650fd2589cd109ac1040194c44bcb8479d655800cac9fe82717e9496bf32e8d3e3a4b5fa7826f4cc86878fd4ef9857640c59b60ba7276af3e449679fa78939dc590c1fc392b854c7e8c4528108bda4e4a0c14d27adff03c0429bdabbe2df4249311d5f7a7ec35f023b166f7de5a1a521615db0376cc1237ec902a4f76624a8a5c65a293d4ef3344429aadb482633bccdcbe1160dcd098b71deb84153068083cc6976cb9fdb46dbe226fa587970fdb4fb14b07720de20cae800014c66da833530b84d7f5f1977f74813507715dda0071e845f9c291fcc4fa4513b24af47000d230d72ee0a42c0a356c1f96fca44b313396c974b0849aa95d0062562d0fbb31d47af78e4e857cdbb43f2014ebaa8cf796067863b0444bf7a3a207816c5eb8dac792d15a01f7ce0bd48a5a3687cbd8bedd364d176106561493bb8e83f63bc67fd07f8b11fcf3bf99b2a1daac1a001ee09d6f8d3973c623b8838988b4faaa1d9151233ff1cb89e947ccf322d59b0011fbc1bf66f5a2867c0a35385d55463cb7fd01db5932b9a163ee6cc11ef0d19e09e2dde4245571fa01b8624926e27a9bae527a27dbfa1fec4c5687a6193a5336469ff40fe03eb0338889dadd86d84a6381b2f65cdb3b6880ee67de08572d6fae5c5df6b2ec4e1216a5999cb3c2bbdffacb157d1e94061b4eb985d153b8840c537463e8a15e5533215522f1d4ab74f09a21b1e9c851688c2131f7da84c95f390eebae35dbdfe1e28d5d0755d419707317ea45d75e88c40d5df34316fcc7f59de8af82e1cb0ba3e10ff1775b8d6f6ba2141a1f83b21b577afea554f709fb4c373f6dbc66a4e97c31a500129684d7315874633453e7ac8c10f63ae4708b28361c772725a110fd3e626b020d8b5b3820faf67e02e3feb9d13ba99f40b6ae834ce75881c44d8124f3f234cd003d5cdda116a218c3dfd1019690b31ec2546b0be2660aeea3b11d375cc19ca2c57fb3ca817a53dd3357cd5f0b72c3a06dffee32ee613eb53a0f679662108f42002ea24bf40c2db026dc595710d23bd9ef571dd37134955083c25ab968d23bae81d22c3a16f10f3d75cfd7eac8337226dda9554093db1c60261931c278b11846796d56a477f454ee04053268709b935b198ffa096dce5c9d3bb1bbbd8fc19a38d529603881a9d449f522650aefa9e0530d92f2712c6122bc874587fc80c29beeee0c2f532607cc63aa8a91413bbc351a2a355b40b3fad7871976b6a46491ca94607f27b2018af66a8d6e429b8955a68e10f3585666b40005248f39fa274020d57f76af52e860f6004f20b33174e16b184d39f90ad5c563da44be6a526de1b258a20649fe5b084b546417385ede6ef19ab6770dd56583d2f3d36901aab371a341c1fbf11929950845b05b833dabff5608b2b0346d8f41ffb24b2be3187cd2ca86d06e8adaedd3f3e9ca9f6e1cbb85bf6c34eb3dcdd9931edf2312e4348481d3ba48a33ee57a314c77196fd28b63546963da0c3edb742934e33daed72cbd80b1ff33a716e22fcff53b93b8791238a92f62070a6c8f74d3c16116c1f9743bf100e0fe3e1dfd512e60fb075f193b3d100f8327a8b7011b1a12c519ec902d7183a09958adbb491a9e9de0070fc685b3963f1617112aa4edd1a4bd35bb459ad121e34851230f78913c59ac8d766b84ab510f657257a109de229ddb30b3db025f620604df250741b4eb757f6a0b6d2a0ba2cee7ac1046800eae0519243380c404a133766b685997236bfc73e3317e2da32c9f449aecebbd02c28c5e62226aeec140e4c38dabc0c6ae4d6fbd5aedab7abe0d2b0b0c7533367db3ab39ca127f688ef34aa4a61bf2cd2ca5a0f598b8009e5610efb05da12495c0bf02eec37fb857f7d1943f8f76093a27b422a910f4904cfb836f62d7ac295760ab9f2587f60e83d402854e9a3550a190f59fbcc5c94e6f6bcf9e9d7527ef7e6c4afb13b928fd2fbba2ae008f19da2d385881dfece30a3c9433909bae080e01f09e987a059f368d7712246839159ec183345e5a8607e860bf1948134d1ab791c2446094d012e14e1a82fa5d95106c0c9626df1e7e56cb7e6cbcfbea965f64cc4255319eff09bcc40ab3ccc7294ac369701ac1f083b615e532d13ea809eb68967b031fff2b0536b781e08688a51de3629d4c8e3e29987b4ddbccea41b7060ed9f635da106145bbd4dd2045f2215546edfe71205f5a139bf5e9af5b68d4c34acc19307d23b7971da98ec2ebc8282aeabba8f1a46af4baf00276aa0e9e5c212865d763687335e1ec2d6c813a516bb2f2b79056100b07488ce2fd5089be296ead42ce345ef58f73543ab102ed79e426521fea60dcce47e498180ee94f1e69bf862c9e014ad60f6041819f01107812803c986e547a5fb744dd766b92e22ca8621b56190ab1a7019eb9e288114c4c450d08a95da7282278239f7fa073a8ce444506ae171e0dcd54d1861362f12957b366b92dcb0480017c6a397b27506c55238e1656355786704489fb54bf1257e90a246f92ead455166c4217b610682a6446514a1b59d5facfc7041d4e639046e60262097557cec24c59629b891229e714db79a80e830af7fa7a2112e60ff1fb95741f39c51d37c3be241e9990bf14c325e558483f65408ba25c4cf85e10122cd5cba6010db487930eed9bedac4d533825c657aac9cb709920f6c9a537b76194eab8c330fcc7891e24207f5ca76980d94bd1b6db41692ee6bee117544e98620de4390da019b63757bc78ea7d0e27c2fc6b92d8c0366e23ff1d5a38130e5183340a905cefed2bd332d443c6fc6c3f4601bd3e4927b40388c00c842c93d01ac365bb6272f28ad28ecdbc05dc2e4f61175cd36f5fa5a4771e0dfb6e13cc2ba910e28f11fa13728bf2dc57e279ec67f8046187bdb99cabeb0c3c008c6ef26ca382f9940e0b02771fa6c2f69f1116baac1adedfae6ff68dc8cb249c112ce6f9a6208cf1fb4c4183995326dd690bc4531de9ac85a0be2f6b0795b6f9bc700b7628c272f245de3210d89fb7b552a731672779675ece0963c2835ba8c6ece9cc4e55b2d077489cc8a83558a1261a452dce0317cb8ef4e8642f3d13090305ad345906b180e50dece886830f7a349e3477a0f10df57a81a5f895e8c043085d331cd1bec20f7b8792871912776be3ef4b8b411ca9cd9a9dbd92d1f66c90b23d35b1d0cad3acbffab5141b5171336753289274d897c2449e9316c3d19fecd86e454a51c820c080ceef6421565d481792501b582190d960776cc5c6bcc3f6a33a92e213f7c2e932d8f1513d1d2bc31cdb0c9550ea21fb9d5db1acb01eaa804c594f98777652a7af27184e4ada612201c80f18d1cbd5f9a4a535444934b72f6262d582ac5802bc17c106bcc4a53eb4af6334ec1eec602bef40366d91f4b4df477f2b3b6be2111e0e6223c5f43811ccbb3c31f8f4c2138927377521cee9954a493340596fa0431fb953e7ee3c0a15b37f47592fc4cef4b47c759d6278b4fe5be6519c9927e9c08f6e89c6ff99ca69c9f89e27133b52197520b873c578ade66962bc18d0726db271671bfbe8c21c16eced0675a58ff1497cb00e239481adc4656537b80830b37264e7f1b50e3780f32ea57c9125c73f07e33cb30a51ec6c4dc98c4f9337d62152ba544eebe4d7a8eaef723ab85570d549fb90687f3b4782f7647988ca3e97b6736bdbd7cfb10393405a86118ccc415a16e7614230828430728618da31e37792f043e3777049052d58957a352e54c16b3d93c8595220a2e8322f2da669f11be3817955f1a350d3591ac81d7e627015b0653cff1eae964f89acfa41663a833e65235627eb67d30738f170da134de1d58499997315a329dcb52fedc30171f948f6f23a2be30b49398a2162f469eb161e752faa487c533e0ac6aae88c6d7ed64892a0ae4afbc2b30ace36ca7ddf4f1334b6731641599b0d2540c4fef4ae6d9c0b81c2d356b98178360b853a501dc1866343e81fccfe0e99b1042d10a38ef3a5cb20434118e16eb23244446ae69bcc1a1e699cb5981c206689578a9a2b3f6aa3ca37f1e09346fa2f4f7695a6b8f7087e9763f52d06de4208a4cc02e92801883f89ecd396248db5f0d2ef527a75d924216fcae8c76178c0b7c27f618331fac021e6c9a3a9e585d1c160f53eb39ebf4b1b3d84d97b2cb9d0f616e9b2ae10bb9e592580f27918e4a17be2570f5e4283aa8420189f72137606e2be0a9e2ca81fb2312caa0208747005ffea881f8a44add38303e7d080e4be30b44271aeb4feb37101c201d0f8504e711324ecd3b4dee9d69348c22656b7edc5f68b236030273890e9cad41258e1445ec934f9b4b2b2792365b52d0b44bbccbc721494a5671a60ed4fa289e203c68ab3c4b88ac36f9adc91a4a6c8cc4c52feb2eb34b64667a74c3bcdcd6e438e20d2b6c499500f488edc872165133fadb4fb7713a49de17f60ca4d780918f3cfe19ca1447f83761ee1808436e310fb7cc32db065c5923a4537d233be2f3311a5ea416c6bf280850647c650ac01835351eede816511edf33e59f467d0936af21a4cad0df6fbdd6711e198d896115cc3dcfac0948522e231b34e47dcfd05b921df497b190af5d621c59c94c34bd405c9be00b6dd72cde87e93ea313039c01633335044ffa8bdea20d3b8ca5db2c4516b5a59512d09d281b187722c8a5c9ebdb2064871229640354e9aea165dddafddfee4dfc1001d38229e51ab7fc33460b4b1720300aede7973a8c940e6ff297225d53bfaa6880b2b4c0ac261668eef9d6823dd5b0c6215d16c00df561e9c4abaad3ef0da84ddd599d56691dd1b121a6120c3408bdcdd972f77d207d382983b0a044647cd2b86c91b8bf19426c5742b7378e2f21c0f09bff8669f6b0bf6187d44c3bd1e50dfb65aff3aa88ad00c2e12735ee384347379d2b48ab3f0b36f712e0c1bca9698d29f17924f0343fc573a1115981161036b71f96ed9659b52eafb7794ff9a05b42f5b96aa530e45f1892f49dcde62ee824ab3dd0fd9c511bd8eda0d60eda753cd5d444c0294aac617b6c6453ce8b2274b0cbc5beb68e2761897b1e2ac612d8e6f8605830113bc800c91bdc4d4c89394d33c25f6465d813a453bf89eb3f0baf3b83856665a33d1e0a291b527d6b5704221b5b343a6fcb70f561cb496b727fbff07e48b56cc924ef51b3459449fb5211c02ff081c90645ca392d5e7a13f13160acb5b53ed20b8e01390cc4d1d7ea9533b2e7a21e9ccaf0461f1d5562c1ae28c04c138083f4ebd11f75e3298b2321a20395d3fc685d8c4986eaacc4e97d6481149aed040e07239c051d761379faecbb3c3356ba37358353b204bbe96765bcd4b9375470fac05907fceec5d94cb1195227e02f7b66005f9a76ad9ce1fbae7097b0ba824c9e415f82b0812a3bc6d6ae3824dd1d04837ca39047cc27d57dd5655f2d52e1b28ff24af701c93a169bbde2201b4ef36ef361f111838e2a59b2f1ff32410c91be4b2ca0d4d434a70c0d03d8ca0db8c9cb7b27ef0743c8a0579d6c4df5a76644637bee0d45ffc4ff83a1ff779f22e49e65550b60c279aeef6aeb89c1ff6a8cff8ae5eb645e9e15d694350ac0f7127ecf632f218759eafc04a988a3d23d1347a44b6fb1f79a2a40e41f441bb87823856b221e7cde3652a62b824d5f64b08570320f7729b500e138252a6220da6811707c097dee8d29123511a236f030381533cd5233b1d2b19da47cfefd49179430b70bce17969888c2c02b75d07bf84de64dc91fbaa6cf91052d40001bf83cdd18e8860b3527d9f72895ff0c398d4945ddd569c2c568bbce302506b5bfaaaa9e24f435e73c236730bedd4b8940bccce1cdaa2abd388646474e3d9c0afd61e28a1ebbc83ac84ed644039a7ea3aa270eac6f46f21fbaedd49ce21fe133060e416b03e28059d753b025f0c2b9f25e6fe146bf9f58956083e1baab33570493573b9d05104ec9bd2764793d655bb033c646af6ff8f8bb268d35c43acf614206bd4f5635de334ae2768e8621f24457bd6cc3f81a50c8fff871037415bd543e5515df44253f93ae05241cdeec2eca35eb2908ab07dcee8c795cf0a7442ca1213449a5c03282478bf0c0755fd7f62ca140a303867ebceffc631e8db2249c2c8a9806033a201f6e59becf382ccd5167ad5d1d7a3de10492c6bda89121bb8b075e3b6a5d1b09f6ad972c0605f1fe1610c38f42ab22625341b41c252be0fa80c9d082f56fee0669d7d4eb9762af0fd827e545ac5cb6b225571540f2e6820ad79311ed2fe57e30d12239771d79ad47577647068ae6ec7fa3602e86379f7c56709f822db68b5d35440e855509a2b86ebf86dcaae220a89b6f7dea85fe1fa5cf2d54ea4b242edf1a0b3c1a0b04b398e8a67c3ebd093e4429c9554605e2f4360449420a5fb5aebc158d80ee10349d23e9d68196cebbedbd98afd16670b66231f0f7dd9c0a4404da2db7a00172ff4f48b486183b2cc8d49b126acbf5e04af0a16b36291875c187ca2a65aeb240729167674cf5e26c2eb9f8464605279f47b57ef7584ba7b6662f221cead6f89825748ae7bf4a22d54715db9fa80609be5175c30a50025e54d11ba22ac4cb17fca2ec160184e6bacaa6e49a836697106511a1e65c679cf240b128ce1974b42812eb02105bcc59226faa7f085adf7b7ef5d0b2d5d88f59563e3d2edb1aa9ae253fda7e66996f2426d52ce0d36d5e38c07b94551851f4f1057e10beab078c85c6e1fd86b2200eee7345f0e9713061e0060b6333e91fcb7621d57333d80eeef03e912c2da7985a7dbc393aa597abd67b8240a3e72330488aaf26b53d671fe2effee1db167f747594de4de80bc1f0fd5b1786d276fe31d8a631556ad4080d7674b69f1cda2403280fe1eb962bef003d4df61cba3dd906aba9c01e5644dcba01dd790611da5bc46ee24e2ba26a4abaf8ec1c78ac48e0c5eb9c3079f802ca0dfc6550ba410b8d76885506b27efeb3bca592c2475def2dbd4f5d7ed4836abf086ce8b23d617701275a8d452085043d8b30bf66e0739471bc432a155f249f1c1c58e4fa37a02ae653b0ec71e22b9fcd3d9a00037bcfcbae7c0106d6d13dc60fad3f734ebdcc0d3fe9c29031716c746b52bf7c9db5a09cfe19bd9f0b87cd12f8a6c5e36153e0bf5587c959f3636618864362195078c591502325864283ccd1ebb071baca04a50f4069f1eaea8d8d2af49e76f29e88108df904d59a6631686be5adfca48571442a01cdb1a3de6de174fa9496e9ca50d2db065e61d82c16ef01438125a96e6300de69c30967c58545aa8f96fb66725959eb0bfeb99a54e7286740bdefc161115a404556a1dd0381f772b7ab8c1f7f1ddc0cc0ac782619fad570aa1590eb439455a642cd3122b0edfe9322a19360a98193bc75e4b8d2babaf0764099f36e3dfbce751a8fdac684ca46b0945ba593b6b18514d39542a803a3305b55b8f7c3c5adb4e516379db8ea4570020e95d69afbe165e6559636d9bb9d2936ff3272d757d393937ba4ee4edcc329e17426a7b5ab99aacbd804e453f147bc0439022a3c78b5f4df3f0cc24ea8993bc98fa7e5b4d628d36ecaa66231f2c612837b8c3704ac12862a67df9127885a8b4ce8f06d7dd0d8d2d25e6a9f77ed217869ad2d461c26059d689e4ed9774890e18dfe007ed3ae55f862abd7e4b0a53018c9c18129ec6983491c8fc9bfb26cf5bddddb1fd8db5ba17b8ae0cbaeed5ff553db2f0784cbcd76429699e3490c01a2090cba4b230fba3258d7e5cb18edc5427c1061206a1a5c3dc81e5681777216ec66cfbba42b7b506ce92664db7bfa51a9323eea0169c4cb0e83f756d3ea980461313e39d208ef70dc011722ebf284f75f07cde322ba23f211815e4b616f092652f949e369188a815613f8268a1338fc8f932e4b845739564983555417ac7b0170eb036bb80479ccdc3e9867ace0604f06da016321031402b21ad4ade201e208eed72004c59ba0fc7316c32e3735ba7c8c0dfa322ccef89e50b984bb020571702c2ec6f08d0471e72acbc1d19520ef5c9a110b953ae66ccb4278dd291b08af4621d3bd4d51e84604f6315b9cc52ed68f48f6fb51332718b3bc5e006aca5b50b1bd106ac2fcd300c77ace7517b7badc33ce9b5f0302e752cc1e3f0217cb1fe79e4202cd3614da5cad5ce95ac1c22038df2e690582130000000000000000e77c5fe5829689989e0736353bc0ffd6b69fd0512b5aa1d5292167ba63dc5719c978be1cd9cabdb5c757be48c025e5efbe17937c24504332ec6dcdcfac80e23a01ce2c6d87d0184c1799a254ed03047cf57a3bfd49b8a4438d496d741cf5aca6bd02cc36601959213b6b0cdb96a75c17c3a668a97f0d6a8c5ce164a518ea9ba9a50ea75191fd861b0ff10e62b000000000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed4162bdd8d72b03b4e2f279a05dee99e05f68f38a4b1d7f6952cfafdca675fafbb0a65f0db75a331b2c04f82fed81c6edc0291ace5edb0794c285a5338f20c891195bc1e9d7134d3c05c62b251ccb3ab8473cb5dafc7b19f3b6750e41bf24c6ad882802a60d88a2fb0fd642095e8030000000000005fd281521444957bab12f47104f5ff295620fd17dbdb799f813f973e1eaed41691c948450f0844a9eaa60503567dd7c87ed664db6236c4368575d4beade9741856f5e328f9ba28c32610207662b9638281878e43a31d3f2de4e440d6a792a01a00ecd37228b00c8973da400337300587f48997465959efe09ac5e012e14f51eb2403e78f9aa4048344a45119dc45ebfb2fdd1806662aee645a85d9951b714a42ada39d7b268db0db118784846efe571b2feca12d5dbb15ad28d23c933987607fa4", // Transfer