From 0c36a9af13c56ef2a6b452d255357593c85bc2da Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Sat, 4 Dec 2021 21:38:09 +0200 Subject: [PATCH 01/26] Refactor for 0.9.13 upstream changes --- Cargo.lock | 1857 ++++++++--------- node/Cargo.toml | 96 +- node/src/chain_specs/calamari.rs | 1 - node/src/chain_specs/manta.rs | 1 - node/src/command.rs | 20 +- node/src/service.rs | 7 +- pallets/pallet-tx-pause/Cargo.toml | 18 +- pallets/vesting/Cargo.toml | 24 +- runtime/calamari/Cargo.toml | 106 +- runtime/calamari/src/lib.rs | 61 +- .../calamari/src/weights/pallet_utility.rs | 3 + runtime/manta/Cargo.toml | 100 +- runtime/manta/src/lib.rs | 35 +- runtime/primitives/Cargo.toml | 12 +- runtime/primitives/src/lib.rs | 2 +- 15 files changed, 1166 insertions(+), 1177 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 79297f128..f846c49f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -97,15 +97,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbf688625d06217d5b1bb0ea9d9c44a1635fd0ee3534466388d18203174f4d11" -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "ansi_term" version = "0.12.1" @@ -117,9 +108,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.45" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee10e43ae4a853c0a3591d4e2ada1719e553be18199d9da9d4a83f5927c2f5c7" +checksum = "8b26702f315f53b6071259e15dd9d64528213b44d61de1ec926eca7715d62203" [[package]] name = "approx" @@ -403,23 +394,10 @@ dependencies = [ "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.27.1", + "object", "rustc-demangle", ] -[[package]] -name = "bae" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec107f431ee3d8a8e45e6dd117adab769556ef463959e77bf6a4888d5fd500cf" -dependencies = [ - "heck", - "proc-macro-error 0.4.12", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "base-x" version = "0.2.8" @@ -432,12 +410,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - [[package]] name = "base64" version = "0.13.0" @@ -456,11 +428,11 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "beefy-primitives", "fnv", - "futures 0.3.17", + "futures 0.3.18", "log", "parity-scale-codec", "parking_lot 0.11.2", @@ -484,11 +456,11 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "beefy-gadget", "beefy-primitives", - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -504,12 +476,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "scale-info", @@ -520,6 +492,12 @@ dependencies = [ "sp-std", ] +[[package]] +name = "bimap" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50ae17cabbc8a38a1e3e4c1a6a664e9a09672dc14d0896fa8d865d3a5a446b07" + [[package]] name = "bincode" version = "1.3.3" @@ -531,9 +509,9 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453c49e5950bb0eb63bb3df640e31618846c89d5b7faa54040d76e98e0134375" +checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" dependencies = [ "bitflags", "cexpr", @@ -554,18 +532,6 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "bitvec" -version = "0.19.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321" -dependencies = [ - "funty", - "radium 0.5.3", - "tap", - "wyz", -] - [[package]] name = "bitvec" version = "0.20.4" @@ -573,7 +539,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" dependencies = [ "funty", - "radium 0.6.2", + "radium", "tap", "wyz", ] @@ -699,7 +665,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "finality-grandpa", "frame-support", @@ -715,7 +681,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bp-runtime", "frame-support", @@ -727,9 +693,9 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "bitvec 0.20.4", + "bitvec", "bp-runtime", "frame-support", "frame-system", @@ -743,7 +709,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bp-messages", "bp-runtime", @@ -761,7 +727,7 @@ dependencies = [ [[package]] name = "bp-rialto" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bp-messages", "bp-runtime", @@ -776,7 +742,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -793,7 +759,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "frame-support", "hash-db", @@ -811,7 +777,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -826,7 +792,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -841,7 +807,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -919,12 +885,6 @@ dependencies = [ "iovec", ] -[[package]] -name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - [[package]] name = "bytes" version = "1.1.0" @@ -1042,14 +1002,13 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.13.1" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081e3f0755c1f380c2d010481b6fa2e02973586d5f2b24eebb7a2a1d98b143d8" +checksum = "ba2ae6de944143141f6155a473a6b02f66c7c3f9f47316f802f80204ebfe6e12" dependencies = [ "camino", "cargo-platform", - "semver 0.11.0", - "semver-parser 0.10.2", + "semver 1.0.4", "serde", "serde_json", ] @@ -1065,9 +1024,9 @@ dependencies = [ [[package]] name = "cexpr" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db507a7679252d2276ed0dd8113c6875ec56d3089f9225b2b42c30cc1f8e5c89" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ "nom", ] @@ -1165,16 +1124,16 @@ checksum = "fa66045b9cb23c2e9c1520732030608b02ee07e5cfaa5a521ec15ded7fa24c90" dependencies = [ "glob", "libc", - "libloading 0.7.1", + "libloading 0.7.2", ] [[package]] name = "clap" -version = "2.33.3" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ - "ansi_term 0.11.0", + "ansi_term", "atty", "bitflags", "strsim", @@ -1231,9 +1190,9 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpp_demangle" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea47428dc9d2237f3c6bc134472edfd63ebba0af932e783506dcfd66f10d18a" +checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" dependencies = [ "cfg-if 1.0.0", ] @@ -1258,18 +1217,18 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15013642ddda44eebcf61365b2052a23fd8b7314f90ba44aa059ec02643c5139" +checksum = "cc0cb7df82c8cf8f2e6a8dd394a0932a71369c160cc9b027dca414fced242513" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298f2a7ed5fdcb062d8e78b7496b0f4b95265d20245f2d0ca88f846dd192a3a3" +checksum = "fe4463c15fa42eee909e61e5eac4866b7c6d22d0d8c621e57a0c5380753bfa8c" dependencies = [ "cranelift-bforest", "cranelift-codegen-meta", @@ -1284,9 +1243,9 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cf504261ac62dfaf4ffb3f41d88fd885e81aba947c1241275043885bc5f0bac" +checksum = "793f6a94a053a55404ea16e1700202a88101672b8cd6b4df63e13cde950852bf" dependencies = [ "cranelift-codegen-shared", "cranelift-entity", @@ -1294,24 +1253,24 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd2a72db4301dbe7e5a4499035eedc1e82720009fb60603e20504d8691fa9cd" +checksum = "44aa1846df275bce5eb30379d65964c7afc63c05a117076e62a119c25fe174be" [[package]] name = "cranelift-entity" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48868faa07cacf948dc4a1773648813c0e453ff9467e800ff10f6a78c021b546" +checksum = "a3a45d8d6318bf8fc518154d9298eab2a8154ec068a8885ff113f6db8d69bb3a" dependencies = [ "serde", ] [[package]] name = "cranelift-frontend" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351c9d13b4ecd1a536215ec2fd1c3ee9ee8bc31af172abf1e45ed0adb7a931df" +checksum = "e07339bd461766deb7605169de039e01954768ff730fa1254e149001884a8525" dependencies = [ "cranelift-codegen", "log", @@ -1321,9 +1280,9 @@ dependencies = [ [[package]] name = "cranelift-native" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df8b556663d7611b137b24db7f6c8d9a8a27d7f29c7ea7835795152c94c1b75" +checksum = "03e2fca76ff57e0532936a71e3fc267eae6a19a86656716479c66e7f912e3d7b" dependencies = [ "cranelift-codegen", "libc", @@ -1332,9 +1291,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a69816d90db694fa79aa39b89dda7208a4ac74b6f2b8f3c4da26ee1c8bdfc5e" +checksum = "1f46fec547a1f8a32c54ea61c28be4f4ad234ad95342b718a9a9adcaadb0c778" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -1348,9 +1307,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +checksum = "738c290dfaea84fc1ca15ad9c168d083b05a714e1efddd8edaab678dc28d2836" dependencies = [ "cfg-if 1.0.0", ] @@ -1467,7 +1426,7 @@ dependencies = [ [[package]] name = "cumulus-client-cli" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "sc-cli", "sc-service", @@ -1477,12 +1436,12 @@ dependencies = [ [[package]] name = "cumulus-client-collator" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-client-consensus-common", "cumulus-client-network", "cumulus-primitives-core", - "futures 0.3.17", + "futures 0.3.18", "parity-scale-codec", "parking_lot 0.10.2", "polkadot-node-primitives", @@ -1500,12 +1459,12 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-aura" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "async-trait", "cumulus-client-consensus-common", "cumulus-primitives-core", - "futures 0.3.17", + "futures 0.3.18", "parity-scale-codec", "polkadot-client", "sc-client-api", @@ -1530,11 +1489,11 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-common" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "async-trait", "dyn-clone", - "futures 0.3.17", + "futures 0.3.18", "parity-scale-codec", "polkadot-primitives", "sc-client-api", @@ -1550,12 +1509,12 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-relay-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "async-trait", "cumulus-client-consensus-common", "cumulus-primitives-core", - "futures 0.3.17", + "futures 0.3.18", "parking_lot 0.10.2", "polkadot-client", "sc-client-api", @@ -1574,10 +1533,10 @@ dependencies = [ [[package]] name = "cumulus-client-network" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "derive_more", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "parity-scale-codec", "parking_lot 0.10.2", @@ -1597,10 +1556,10 @@ dependencies = [ [[package]] name = "cumulus-client-pov-recovery" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-primitives-core", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "parity-scale-codec", "polkadot-node-primitives", @@ -1620,7 +1579,7 @@ dependencies = [ [[package]] name = "cumulus-client-service" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-client-collator", "cumulus-client-consensus-common", @@ -1649,7 +1608,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-aura-ext" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "frame-executive", "frame-support", @@ -1667,7 +1626,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-dmp-queue" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -1685,7 +1644,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-parachain-system" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-pallet-parachain-system-proc-macro", "cumulus-primitives-core", @@ -1714,7 +1673,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-parachain-system-proc-macro" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -1725,7 +1684,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-session-benchmarking" version = "3.0.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "frame-benchmarking", "frame-support", @@ -1738,7 +1697,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-xcm" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -1755,7 +1714,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-xcmp-queue" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -1773,7 +1732,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-core" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "frame-support", "impl-trait-for-tuples", @@ -1790,7 +1749,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-parachain-inherent" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -1812,7 +1771,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-timestamp" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-primitives-core", "sp-inherents", @@ -1823,7 +1782,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-utility" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -1840,7 +1799,7 @@ dependencies = [ [[package]] name = "cumulus-test-relay-sproof-builder" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-primitives-core", "parity-scale-codec", @@ -1915,14 +1874,14 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.16" +version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38df" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version", + "rustc_version 0.4.0", "syn", ] @@ -1946,9 +1905,9 @@ dependencies = [ [[package]] name = "directories" -version = "3.0.2" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e69600ff1703123957937708eb27f7a564e48885c537782722ed0ba3189ce1d7" +checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" dependencies = [ "dirs-sys", ] @@ -2001,6 +1960,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + [[package]] name = "dyn-clonable" version = "0.9.0" @@ -2030,9 +1995,9 @@ checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf" [[package]] name = "ed25519" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4620d40f6d2601794401d6dd95a5cf69b6c157852539470eeda433a99b3c0efc" +checksum = "74e1069e39f1454367eb2de793ed062fac4c35c2934b76a81d90dd9abcd28816" dependencies = [ "signature", ] @@ -2192,7 +2157,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", ] [[package]] @@ -2242,7 +2207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8ac3ff5224ef91f3c97e03eb1de2db82743427e91aaa5ac635f454f0b164f5a" dependencies = [ "either", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "log", "num-traits", @@ -2265,9 +2230,9 @@ dependencies = [ [[package]] name = "fixedbitset" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" +checksum = "398ea4fabe40b9b0d885340a2a991a44c8a645624075ad966d21f88688e2b69e" [[package]] name = "flate2" @@ -2291,7 +2256,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", ] @@ -2309,7 +2274,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -2329,7 +2294,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "Inflector", "chrono", @@ -2355,7 +2320,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -2369,7 +2334,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -2397,7 +2362,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "bitflags", "frame-metadata", @@ -2412,6 +2377,7 @@ dependencies = [ "smallvec", "sp-arithmetic", "sp-core", + "sp-core-hashing-proc-macro", "sp-inherents", "sp-io", "sp-runtime", @@ -2419,12 +2385,13 @@ dependencies = [ "sp-state-machine", "sp-std", "sp-tracing", + "tt-call", ] [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2436,7 +2403,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2448,7 +2415,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "proc-macro2", "quote", @@ -2458,7 +2425,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "log", @@ -2475,7 +2442,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -2490,7 +2457,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "sp-api", @@ -2499,7 +2466,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "sp-api", @@ -2565,9 +2532,9 @@ checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] name = "futures" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66ca" +checksum = "8cd0210d8c325c245ff06fd95a3b13689a1a276ac8cfa8e8720cb840bfb84b9e" dependencies = [ "futures-channel", "futures-core", @@ -2580,9 +2547,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888" +checksum = "7fc8cd39e3dbf865f7340dce6a2d401d24fd37c6fe6c4f0ee0de8bfca2252d27" dependencies = [ "futures-core", "futures-sink", @@ -2590,15 +2557,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d" +checksum = "629316e42fe7c2a0b9a65b47d159ceaa5453ab14e8f0a3c5eedbb8cd55b4a445" [[package]] name = "futures-executor" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c" +checksum = "7b808bf53348a36cab739d7e04755909b9fcaaa69b7d7e588b37b6ec62704c97" dependencies = [ "futures-core", "futures-task", @@ -2608,9 +2575,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377" +checksum = "e481354db6b5c353246ccf6a728b0c5511d752c08da7260546fc0933869daa11" [[package]] name = "futures-lite" @@ -2629,12 +2596,10 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bb" +checksum = "a89f17b21645bc4ed773c69af9c9a0effd4a3f1a3876eadd453469f8854e7fdd" dependencies = [ - "autocfg", - "proc-macro-hack", "proc-macro2", "quote", "syn", @@ -2653,15 +2618,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11" +checksum = "996c6442437b62d21a32cd9906f9c41e7dc1e19a9579843fad948696769305af" [[package]] name = "futures-task" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99" +checksum = "dabf1872aaab32c886832f2276d2f5399887e2bd613698a02359e4ea83f8de12" [[package]] name = "futures-timer" @@ -2677,11 +2642,10 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481" +checksum = "41d22213122356472061ac0f1ab2cee28d2bac8491410fd68c2af53d1cedb83e" dependencies = [ - "autocfg", "futures 0.1.31", "futures-channel", "futures-core", @@ -2692,8 +2656,6 @@ dependencies = [ "memchr", "pin-project-lite 0.2.7", "pin-utils", - "proc-macro-hack", - "proc-macro-nested", "slab", ] @@ -2799,11 +2761,30 @@ dependencies = [ "web-sys", ] +[[package]] +name = "h2" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd819562fcebdac5afc5c113c3ec36f902840b70fd4fc458799c8ce4607ae55" +dependencies = [ + "bytes 1.1.0", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "handlebars" -version = "3.5.5" +version = "4.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4498fc115fa7d34de968184e473529abb40eeb6be8bc5f7faba3d08c316cb3e3" +checksum = "8ad84da8f63da982543fc85fcabaee2ad1fdd809d99d64a48887e2e942ddfe46" dependencies = [ "log", "pest", @@ -2945,9 +2926,9 @@ checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" [[package]] name = "httpdate" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "humantime" @@ -2966,14 +2947,15 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.14" +version = "0.14.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b91bb1f221b6ea1f1e4371216b70f40748774c2fb5971b450c07773fb92d26b" +checksum = "436ec0091e4f20e655156a30a0df3770fe2900aa301e548e08446ec794b6953c" dependencies = [ "bytes 1.1.0", "futures-channel", "futures-core", "futures-util", + "h2", "http", "http-body", "httparse", @@ -3054,7 +3036,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae8ab7f67bad3240049cb24fb9cb0b4c2c6af4c245840917fbbdededeee91179" dependencies = [ "async-io", - "futures 0.3.17", + "futures 0.3.18", "futures-lite", "if-addrs", "ipnet", @@ -3142,10 +3124,20 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "futures-timer 2.0.2", ] +[[package]] +name = "io-lifetimes" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "278e90d6f8a6c76a8334b336e306efa3c5f2b604048cbfd486d6f49878e3af14" +dependencies = [ + "rustc_version 0.4.0", + "winapi 0.3.9", +] + [[package]] name = "iovec" version = "0.1.4" @@ -3157,9 +3149,9 @@ dependencies = [ [[package]] name = "ip_network" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b746553d2f4a1ca26fab939943ddfb217a091f34f53571620a8e3d30691303" +checksum = "aa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1" [[package]] name = "ipconfig" @@ -3219,7 +3211,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3a" dependencies = [ "derive_more", - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-pubsub", "log", @@ -3234,7 +3226,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "futures-executor", "futures-util", "log", @@ -3249,7 +3241,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-client-transports", ] @@ -3271,7 +3263,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "hyper", "jsonrpc-core", "jsonrpc-server-utils", @@ -3287,7 +3279,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-server-utils", "log", @@ -3302,7 +3294,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-core", "lazy_static", "log", @@ -3318,7 +3310,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" dependencies = [ "bytes 1.1.0", - "futures 0.3.17", + "futures 0.3.18", "globset", "jsonrpc-core", "lazy_static", @@ -3335,7 +3327,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f892c7d766369475ab7b0669f417906302d7c0fb521285c0a0c92e52e7c8e946" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-server-utils", "log", @@ -3344,14 +3336,25 @@ dependencies = [ "slab", ] +[[package]] +name = "jsonrpsee" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373a33d987866ccfe1af4bc11b089dce941764313f9fd8b7cf13fcb51b72dc5" +dependencies = [ + "jsonrpsee-proc-macros", + "jsonrpsee-types", + "jsonrpsee-utils", + "jsonrpsee-ws-client", +] + [[package]] name = "jsonrpsee-proc-macros" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8edb341d35279b59c79d7fe9e060a51aec29d45af99cc7c72ea7caa350fa71a4" +checksum = "d802063f7a3c867456955f9d2f15eb3ee0edb5ec9ec2b5526324756759221c0f" dependencies = [ - "Inflector", - "bae", + "log", "proc-macro-crate 1.1.0", "proc-macro2", "quote", @@ -3360,10 +3363,11 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc738fd55b676ada3271ef7c383a14a0867a2a88b0fa941311bf5fc0a29d498" +checksum = "62f778cf245158fbd8f5d50823a2e9e4c708a40be164766bd35e9fb1d86715b2" dependencies = [ + "anyhow", "async-trait", "beef", "futures-channel", @@ -3372,32 +3376,43 @@ dependencies = [ "log", "serde", "serde_json", - "soketto 0.6.0", + "soketto", "thiserror", ] +[[package]] +name = "jsonrpsee-utils" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0109c4f972058f3b1925b73a17210aff7b63b65967264d0045d15ee88fe84f0c" +dependencies = [ + "arrayvec 0.7.2", + "beef", + "jsonrpsee-types", +] + [[package]] name = "jsonrpsee-ws-client" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9841352dbecf4c2ed5dc71698df9f1660262ae4e0b610e968602529bdbcf7b30" +checksum = "559aa56fc402af206c00fc913dc2be1d9d788dcde045d14df141a535245d35ef" dependencies = [ + "arrayvec 0.7.2", "async-trait", "fnv", - "futures 0.3.17", + "futures 0.3.18", + "http", "jsonrpsee-types", "log", "pin-project 1.0.8", - "rustls", "rustls-native-certs", "serde", "serde_json", - "soketto 0.6.0", + "soketto", "thiserror", "tokio", "tokio-rustls", "tokio-util", - "url 2.2.2", ] [[package]] @@ -3418,11 +3433,11 @@ dependencies = [ [[package]] name = "kusama-runtime" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "beefy-primitives", - "bitvec 0.20.4", + "bitvec", "frame-benchmarking", "frame-election-provider-support", "frame-executive", @@ -3564,9 +3579,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.107" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219" +checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119" [[package]] name = "libloading" @@ -3580,9 +3595,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cf036d15402bea3c5d4de17b3fce76b3e4a56ebc1f577be0e7a72f7c607cf0" +checksum = "afe203d669ec979b7128619bae5a63b7b42e9203c1b29146079ee05e2f604b52" dependencies = [ "cfg-if 1.0.0", "winapi 0.3.9", @@ -3596,13 +3611,13 @@ checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" [[package]] name = "libp2p" -version = "0.39.1" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9004c06878ef8f3b4b4067e69a140d87ed20bf777287f82223e49713b36ee433" +checksum = "3bec54343492ba5940a6c555e512c6721139835d28c59bc22febece72dfd0d9d" dependencies = [ "atomic", "bytes 1.1.0", - "futures 0.3.17", + "futures 0.3.18", "lazy_static", "libp2p-core", "libp2p-deflate", @@ -3612,12 +3627,14 @@ dependencies = [ "libp2p-identify", "libp2p-kad", "libp2p-mdns", + "libp2p-metrics", "libp2p-mplex", "libp2p-noise", "libp2p-ping", "libp2p-plaintext", "libp2p-pnet", "libp2p-relay", + "libp2p-rendezvous", "libp2p-request-response", "libp2p-swarm", "libp2p-swarm-derive", @@ -3635,19 +3652,19 @@ dependencies = [ [[package]] name = "libp2p-core" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af9b4abdeaa420593a297c8592f63fad4234f4b88dc9343b8fd8e736c35faa59" +checksum = "bef22d9bba1e8bcb7ec300073e6802943fe8abb8190431842262b5f1c30abba1" dependencies = [ "asn1_der", "bs58", "ed25519-dalek", "either", "fnv", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "lazy_static", - "libsecp256k1 0.5.0", + "libsecp256k1", "log", "multiaddr", "multihash 0.14.0", @@ -3656,7 +3673,7 @@ dependencies = [ "pin-project 1.0.8", "prost", "prost-build", - "rand 0.7.3", + "rand 0.8.4", "ring", "rw-stream-sink", "sha2 0.9.8", @@ -3669,23 +3686,23 @@ dependencies = [ [[package]] name = "libp2p-deflate" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66097fccc0b7f8579f90a03ea76ba6196332ea049fd07fd969490a06819dcdc8" +checksum = "51a800adb195f33de63f4b17b63fe64cfc23bf2c6a0d3d0d5321328664e65197" dependencies = [ "flate2", - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", ] [[package]] name = "libp2p-dns" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ff08b3196b85a17f202d80589e93b1660a574af67275706657fdc762e42c32" +checksum = "bb8f89d15cb6e3c5bc22afff7513b11bab7856f2872d3cfba86f7f63a06bc498" dependencies = [ "async-std-resolver", - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "log", "smallvec", @@ -3694,13 +3711,13 @@ dependencies = [ [[package]] name = "libp2p-floodsub" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "404eca8720967179dac7a5b4275eb91f904a53859c69ca8d018560ad6beb214f" +checksum = "aab3d7210901ea51b7bae2b581aa34521797af8c4ec738c980bda4a06434067f" dependencies = [ "cuckoofilter", "fnv", - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "libp2p-swarm", "log", @@ -3712,16 +3729,16 @@ dependencies = [ [[package]] name = "libp2p-gossipsub" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1cc48709bcbc3a3321f08a73560b4bbb4166a7d56f6fdb615bc775f4f91058e" +checksum = "dfeead619eb5dac46e65acc78c535a60aaec803d1428cca6407c3a4fc74d698d" dependencies = [ "asynchronous-codec 0.6.0", - "base64 0.13.0", + "base64", "byteorder", "bytes 1.1.0", "fnv", - "futures 0.3.17", + "futures 0.3.18", "hex_fmt", "libp2p-core", "libp2p-swarm", @@ -3738,14 +3755,15 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7b61f6cf07664fb97016c318c4d4512b3dd4cc07238607f3f0163245f99008e" +checksum = "cca1275574183f288ff8b72d535d5ffa5ea9292ef7829af8b47dcb197c7b0dcd" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "libp2p-swarm", "log", + "lru 0.6.6", "prost", "prost-build", "smallvec", @@ -3754,16 +3772,16 @@ dependencies = [ [[package]] name = "libp2p-kad" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ed78489c87924235665a0ab345b298ee34dff0f7ad62c0ba6608b2144fb75e" +checksum = "a2297dc0ca285f3a09d1368bde02449e539b46f94d32d53233f53f6625bcd3ba" dependencies = [ "arrayvec 0.5.2", "asynchronous-codec 0.6.0", "bytes 1.1.0", "either", "fnv", - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "libp2p-swarm", "log", @@ -3780,14 +3798,14 @@ dependencies = [ [[package]] name = "libp2p-mdns" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a29e6cbc2a24b8471b6567e580a0e8e7b70a6d0f0ea2be0844d1e842d7d4fa33" +checksum = "14c864b64bdc8a84ff3910a0df88e6535f256191a450870f1e7e10cbf8e64d45" dependencies = [ "async-io", "data-encoding", "dns-parser", - "futures 0.3.17", + "futures 0.3.18", "if-watch", "lazy_static", "libp2p-core", @@ -3799,15 +3817,29 @@ dependencies = [ "void", ] +[[package]] +name = "libp2p-metrics" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4af432fcdd2f8ba4579b846489f8f0812cfd738ced2c0af39df9b1c48bbb6ab2" +dependencies = [ + "libp2p-core", + "libp2p-identify", + "libp2p-kad", + "libp2p-ping", + "libp2p-swarm", + "open-metrics-client", +] + [[package]] name = "libp2p-mplex" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "313d9ea526c68df4425f580024e67a9d3ffd49f2c33de5154b1f5019816f7a99" +checksum = "7f2cd64ef597f40e14bfce0497f50ecb63dd6d201c61796daeb4227078834fbf" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "log", "nohash-hasher", @@ -3819,13 +3851,13 @@ dependencies = [ [[package]] name = "libp2p-noise" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f1db7212f342b6ba7c981cc40e31f76e9e56cb48e65fa4c142ecaca5839523e" +checksum = "a8772c7a99088221bb7ca9c5c0574bf55046a7ab4c319f3619b275f28c8fb87a" dependencies = [ "bytes 1.1.0", "curve25519-dalek 3.2.0", - "futures 0.3.17", + "futures 0.3.18", "lazy_static", "libp2p-core", "log", @@ -3841,11 +3873,11 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2482cfd9eb0b7a0baaf3e7b329dc4f2785181a161b1a47b7192f8d758f54a439" +checksum = "80ef7b0ec5cf06530d9eb6cf59ae49d46a2c45663bde31c25a12f682664adbcf" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "libp2p-swarm", "log", @@ -3856,13 +3888,13 @@ dependencies = [ [[package]] name = "libp2p-plaintext" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b4783e5423870b9a5c199f65a7a3bc66d86ab56b2b9beebf3c338d889cf8e4" +checksum = "5fba1a6ff33e4a274c89a3b1d78b9f34f32af13265cc5c46c16938262d4e945a" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "log", "prost", @@ -3873,11 +3905,11 @@ dependencies = [ [[package]] name = "libp2p-pnet" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07cb4dd4b917e5b40ddefe49b96b07adcd8d342e0317011d175b7b2bb1dcc974" +checksum = "0f1a458bbda880107b5b36fcb9b5a1ef0c329685da0e203ed692a8ebe64cc92c" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "log", "pin-project 1.0.8", "rand 0.7.3", @@ -3887,13 +3919,13 @@ dependencies = [ [[package]] name = "libp2p-relay" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0133f6cfd81cdc16e716de2982e012c62e6b9d4f12e41967b3ee361051c622aa" +checksum = "2852b61c90fa8ce3c8fcc2aba76e6cefc20d648f9df29157d6b3a916278ef3e3" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "libp2p-core", "libp2p-swarm", @@ -3908,20 +3940,41 @@ dependencies = [ "wasm-timer", ] +[[package]] +name = "libp2p-rendezvous" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14a6d2b9e7677eff61dc3d2854876aaf3976d84a01ef6664b610c77a0c9407c5" +dependencies = [ + "asynchronous-codec 0.6.0", + "bimap", + "futures 0.3.18", + "libp2p-core", + "libp2p-swarm", + "log", + "prost", + "prost-build", + "rand 0.8.4", + "sha2 0.9.8", + "thiserror", + "unsigned-varint 0.7.1", + "void", + "wasm-timer", +] + [[package]] name = "libp2p-request-response" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06cdae44b6821466123af93cbcdec7c9e6ba9534a8af9cdc296446d39416d241" +checksum = "a877a4ced6d46bf84677e1974e8cf61fb434af73b2e96fb48d6cb6223a4634d8" dependencies = [ "async-trait", "bytes 1.1.0", - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "libp2p-swarm", "log", - "lru 0.6.6", - "minicbor", + "lru 0.7.0", "rand 0.7.3", "smallvec", "unsigned-varint 0.7.1", @@ -3930,12 +3983,12 @@ dependencies = [ [[package]] name = "libp2p-swarm" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7083861341e1555467863b4cd802bea1e8c4787c0f7b5110097d0f1f3248f9a9" +checksum = "3f5184a508f223bc100a12665517773fb8730e9f36fc09eefb670bf01b107ae9" dependencies = [ "either", - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "log", "rand 0.7.3", @@ -3946,9 +3999,9 @@ dependencies = [ [[package]] name = "libp2p-swarm-derive" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8cb308d4fc854869f5abb54fdab0833d2cf670d407c745849dc47e6e08d79c" +checksum = "072c290f727d39bdc4e9d6d1c847978693d25a673bd757813681e33e5f6c00c2" dependencies = [ "quote", "syn", @@ -3956,12 +4009,12 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79edd26b6b4bb5feee210dcda562dca186940dfecb0024b979c3f50824b3bf28" +checksum = "7399c5b6361ef525d41c11fcf51635724f832baf5819b30d3d873eabb4fbae4b" dependencies = [ "async-io", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "if-watch", "ipnet", @@ -3973,23 +4026,23 @@ dependencies = [ [[package]] name = "libp2p-uds" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280e793440dd4e9f273d714f4497325c72cddb0fe85a49f9a03c88f41dd20182" +checksum = "b8b7563e46218165dfd60f64b96f7ce84590d75f53ecbdc74a7dd01450dc5973" dependencies = [ "async-std", - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "log", ] [[package]] name = "libp2p-wasm-ext" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f553b7140fad3d7a76f50497b0ea591e26737d9607428a75509fc191e4d1b1f6" +checksum = "1008a302b73c5020251f9708c653f5ed08368e530e247cc9cd2f109ff30042cf" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "js-sys", "libp2p-core", "parity-send-wrapper", @@ -3999,29 +4052,29 @@ dependencies = [ [[package]] name = "libp2p-websocket" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddf99dcbf5063e9d59087f61b1e85c686ceab2f5abedb472d32288065c0e5e27" +checksum = "22e12df82d1ed64969371a9e65ea92b91064658604cc2576c2757f18ead9a1cf" dependencies = [ "either", - "futures 0.3.17", + "futures 0.3.18", "futures-rustls", "libp2p-core", "log", "quicksink", "rw-stream-sink", - "soketto 0.4.2", + "soketto", "url 2.2.2", "webpki-roots", ] [[package]] name = "libp2p-yamux" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "214cc0dd9c37cbed27f0bb1eba0c41bbafdb93a8be5e9d6ae1e6b4b42cd044bf" +checksum = "4e7362abb8867d7187e7e93df17f460d554c997fc5c8ac57dc1259057f6889af" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "libp2p-core", "parking_lot 0.11.2", "thiserror", @@ -4040,44 +4093,6 @@ dependencies = [ "libc", ] -[[package]] -name = "libsecp256k1" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7" -dependencies = [ - "arrayref", - "base64 0.12.3", - "digest 0.9.0", - "hmac-drbg", - "libsecp256k1-core 0.2.2", - "libsecp256k1-gen-ecmult 0.2.1", - "libsecp256k1-gen-genmult 0.2.1", - "rand 0.7.3", - "serde", - "sha2 0.9.8", - "typenum", -] - -[[package]] -name = "libsecp256k1" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" -dependencies = [ - "arrayref", - "base64 0.12.3", - "digest 0.9.0", - "hmac-drbg", - "libsecp256k1-core 0.2.2", - "libsecp256k1-gen-ecmult 0.2.1", - "libsecp256k1-gen-genmult 0.2.1", - "rand 0.7.3", - "serde", - "sha2 0.9.8", - "typenum", -] - [[package]] name = "libsecp256k1" version = "0.7.0" @@ -4085,29 +4100,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37" dependencies = [ "arrayref", - "base64 0.13.0", + "base64", "digest 0.9.0", "hmac-drbg", - "libsecp256k1-core 0.3.0", - "libsecp256k1-gen-ecmult 0.3.0", - "libsecp256k1-gen-genmult 0.3.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", "rand 0.8.4", "serde", "sha2 0.9.8", "typenum", ] -[[package]] -name = "libsecp256k1-core" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" -dependencies = [ - "crunchy", - "digest 0.9.0", - "subtle", -] - [[package]] name = "libsecp256k1-core" version = "0.3.0" @@ -4119,31 +4123,13 @@ dependencies = [ "subtle", ] -[[package]] -name = "libsecp256k1-gen-ecmult" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" -dependencies = [ - "libsecp256k1-core 0.2.2", -] - [[package]] name = "libsecp256k1-gen-ecmult" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" dependencies = [ - "libsecp256k1-core 0.3.0", -] - -[[package]] -name = "libsecp256k1-gen-genmult" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" -dependencies = [ - "libsecp256k1-core 0.2.2", + "libsecp256k1-core", ] [[package]] @@ -4152,7 +4138,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" dependencies = [ - "libsecp256k1-core 0.3.0", + "libsecp256k1-core", ] [[package]] @@ -4191,6 +4177,12 @@ dependencies = [ "statrs", ] +[[package]] +name = "linux-raw-sys" +version = "0.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687387ff42ec7ea4f2149035a5675fedb675d26f98db90a1846ac63d3addb5f5" + [[package]] name = "lock_api" version = "0.3.4" @@ -4292,7 +4284,7 @@ dependencies = [ "cumulus-primitives-parachain-inherent", "frame-benchmarking", "frame-benchmarking-cli", - "futures 0.3.17", + "futures 0.3.18", "hex-literal", "jsonrpc-core", "log", @@ -4444,9 +4436,9 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "matrixmultiply" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a8a15b776d9dfaecd44b03c5828c2199cddff5247215858aac14624f8d6b741" +checksum = "add85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84" dependencies = [ "rawpointer", ] @@ -4466,6 +4458,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4647a11b578fead29cdbb34d4adef8dd3dc35b876c9c6d5240d83f205abfe96e" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.4" @@ -4515,11 +4516,11 @@ dependencies = [ [[package]] name = "metered-channel" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "derive_more", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "thiserror", "tracing", @@ -4531,30 +4532,16 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaa77fad8461bb1e0d01be11299e24c6e544007715ed442bfec29f165dc487ae" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "rand 0.7.3", "thrift", ] [[package]] -name = "minicbor" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51aa5bb0ca22415daca596a227b507f880ad1b2318a87fa9325312a5d285ca0d" -dependencies = [ - "minicbor-derive", -] - -[[package]] -name = "minicbor-derive" -version = "0.6.4" +name = "minimal-lexical" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54999f917cd092b13904737e26631aa2b2b88d625db68e4bab461dcd8006c788" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" @@ -4633,9 +4620,9 @@ dependencies = [ [[package]] name = "more-asserts" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" [[package]] name = "multiaddr" @@ -4703,7 +4690,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" dependencies = [ "proc-macro-crate 1.1.0", - "proc-macro-error 1.0.4", + "proc-macro-error", "proc-macro2", "quote", "syn", @@ -4723,7 +4710,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56a336acba8bc87c8876f6425407dbbe6c417bf478b22015f8fb0994ef3bc0ab" dependencies = [ "bytes 1.1.0", - "futures 0.3.17", + "futures 0.3.18", "log", "pin-project 1.0.8", "smallvec", @@ -4793,13 +4780,12 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" -version = "6.1.2" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2" +checksum = "1b1d11e1ef389c76fe5b81bcaf2ea32cf88b62bc494e19f493d0b30e7a930109" dependencies = [ - "bitvec 0.19.5", - "funty", "memchr", + "minimal-lexical", "version_check", ] @@ -4885,23 +4871,14 @@ dependencies = [ "libc", ] -[[package]] -name = "object" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39f37e50073ccad23b6d09bcb5b263f4e76d3bb6038e4a3c08e52162ffa8abc2" -dependencies = [ - "crc32fast", - "indexmap", - "memchr", -] - [[package]] name = "object" version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ + "crc32fast", + "indexmap", "memchr", ] @@ -4923,6 +4900,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "open-metrics-client" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7337d80c23c2d8b1349563981bc4fb531220733743ba8115454a67b181173f0d" +dependencies = [ + "dtoa", + "itoa", + "open-metrics-client-derive-text-encode", + "owning_ref", +] + +[[package]] +name = "open-metrics-client-derive-text-encode" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15c83b586f00268c619c1cb3340ec1a6f59dd9ba1d9833a273a68e6d5cd8ffc" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "openssl-probe" version = "0.1.4" @@ -4950,7 +4950,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -4966,7 +4966,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -4982,7 +4982,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -4997,7 +4997,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5021,7 +5021,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5041,7 +5041,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5056,7 +5056,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "beefy-primitives", "frame-support", @@ -5072,14 +5072,14 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "beefy-merkle-tree", "beefy-primitives", "frame-support", "frame-system", "hex", - "libsecp256k1 0.7.0", + "libsecp256k1", "log", "pallet-beefy", "pallet-mmr", @@ -5097,7 +5097,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5115,7 +5115,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5132,7 +5132,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5154,9 +5154,9 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "bitvec 0.20.4", + "bitvec", "bp-message-dispatch", "bp-messages", "bp-rialto", @@ -5176,7 +5176,7 @@ dependencies = [ [[package]] name = "pallet-collator-selection" version = "3.0.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "frame-benchmarking", "frame-support", @@ -5196,7 +5196,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5213,7 +5213,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5229,7 +5229,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5246,14 +5246,14 @@ dependencies = [ "sp-runtime", "sp-std", "static_assertions", - "strum 0.21.0", - "strum_macros 0.21.1", + "strum", + "strum_macros", ] [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5271,7 +5271,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5286,7 +5286,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5309,7 +5309,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5325,7 +5325,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5345,7 +5345,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5362,7 +5362,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5379,7 +5379,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5397,7 +5397,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -5413,7 +5413,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5430,7 +5430,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5445,7 +5445,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -5459,7 +5459,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -5476,7 +5476,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5499,7 +5499,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5514,7 +5514,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -5528,7 +5528,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5544,7 +5544,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -5565,7 +5565,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5581,7 +5581,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -5595,7 +5595,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5618,7 +5618,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5629,7 +5629,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "log", "sp-arithmetic", @@ -5638,7 +5638,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -5652,7 +5652,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5670,7 +5670,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5689,7 +5689,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-support", "frame-system", @@ -5706,7 +5706,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5723,7 +5723,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5734,7 +5734,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5768,7 +5768,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5784,7 +5784,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-benchmarking", "frame-support", @@ -5798,8 +5798,8 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "frame-support", "frame-system", @@ -5817,7 +5817,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.8" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "frame-benchmarking", "frame-support", @@ -5834,7 +5834,7 @@ dependencies = [ [[package]] name = "parachain-info" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#935bac869a72baef17e46d2ae1abc8c0c650cef5" +source = "git+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.13#0be8e8fc214641e306e4f913dd64ff1913e46e95" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -5846,9 +5846,9 @@ dependencies = [ [[package]] name = "parity-db" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cb5195cb862b13055cf7f7a76c55073dc73885c2a61511e322b8c1666be7332" +checksum = "78a95abf24f1097c6e3181abbbbfc3630b3b5e681470940f719b69acb4911c7f" dependencies = [ "blake2-rfc", "crc32fast", @@ -5857,7 +5857,7 @@ dependencies = [ "libc", "log", "lz4", - "memmap2", + "memmap2 0.2.3", "parking_lot 0.11.2", "rand 0.8.4", "snap", @@ -5870,7 +5870,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ "arrayvec 0.7.2", - "bitvec 0.20.4", + "bitvec", "byte-slice-cast", "impl-trait-for-tuples", "parity-scale-codec-derive", @@ -5901,7 +5901,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "libc", "log", "rand 0.7.3", @@ -6113,9 +6113,9 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f" dependencies = [ "fixedbitset", "indexmap", @@ -6187,16 +6187,16 @@ checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" [[package]] name = "platforms" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" +checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94" [[package]] name = "polkadot-approval-distribution" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -6207,10 +6207,10 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "polkadot-node-network-protocol", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -6220,11 +6220,11 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "derive_more", - "futures 0.3.17", + "futures 0.3.18", "lru 0.7.0", "parity-scale-codec", "polkadot-erasure-coding", @@ -6242,10 +6242,10 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "lru 0.7.0", "parity-scale-codec", "polkadot-erasure-coding", @@ -6262,11 +6262,11 @@ dependencies = [ [[package]] name = "polkadot-cli" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "frame-benchmarking-cli", - "futures 0.3.17", + "futures 0.3.18", "log", "polkadot-node-core-pvf", "polkadot-service", @@ -6282,8 +6282,8 @@ dependencies = [ [[package]] name = "polkadot-client" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -6312,12 +6312,12 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "always-assert", "derive_more", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "polkadot-node-network-protocol", "polkadot-node-primitives", @@ -6333,8 +6333,8 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -6346,11 +6346,11 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "derive_more", - "futures 0.3.17", + "futures 0.3.18", "lru 0.7.0", "parity-scale-codec", "polkadot-erasure-coding", @@ -6368,8 +6368,8 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -6382,10 +6382,10 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "polkadot-node-network-protocol", "polkadot-node-subsystem", @@ -6402,11 +6402,11 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "async-trait", - "futures 0.3.17", + "futures 0.3.18", "parity-scale-codec", "parking_lot 0.11.2", "polkadot-node-network-protocol", @@ -6421,10 +6421,10 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-primitives", @@ -6439,12 +6439,12 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "bitvec 0.20.4", + "bitvec", "derive_more", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "kvdb", "lru 0.7.0", @@ -6467,11 +6467,11 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "bitvec 0.20.4", - "futures 0.3.17", + "bitvec", + "futures 0.3.18", "futures-timer 3.0.2", "kvdb", "parity-scale-codec", @@ -6487,11 +6487,11 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "bitvec 0.20.4", - "futures 0.3.17", + "bitvec", + "futures 0.3.18", "polkadot-erasure-coding", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -6505,10 +6505,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", @@ -6520,11 +6520,11 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "async-trait", - "futures 0.3.17", + "futures 0.3.18", "parity-scale-codec", "polkadot-node-core-pvf", "polkadot-node-primitives", @@ -6538,10 +6538,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", @@ -6553,10 +6553,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "kvdb", "parity-scale-codec", @@ -6570,12 +6570,12 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "bitvec 0.20.4", + "bitvec", "derive_more", - "futures 0.3.17", + "futures 0.3.18", "kvdb", "parity-scale-codec", "polkadot-node-primitives", @@ -6589,10 +6589,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-participation" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-primitives", @@ -6602,11 +6602,11 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "async-trait", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "polkadot-node-subsystem", "polkadot-primitives", @@ -6619,11 +6619,11 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "bitvec 0.20.4", - "futures 0.3.17", + "bitvec", + "futures 0.3.18", "futures-timer 3.0.2", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -6634,14 +6634,14 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "always-assert", "assert_matches", "async-process", "async-std", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "libc", "parity-scale-codec", @@ -6665,10 +6665,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "memory-lru", "parity-util-mem", "polkadot-node-subsystem", @@ -6683,8 +6683,8 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "async-std", "lazy_static", @@ -6701,10 +6701,10 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "metered-channel", "substrate-prometheus-endpoint", @@ -6712,29 +6712,29 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "async-trait", "derive_more", - "futures 0.3.17", + "futures 0.3.18", "parity-scale-codec", "polkadot-node-jaeger", "polkadot-node-primitives", "polkadot-primitives", "sc-authority-discovery", "sc-network", - "strum 0.22.0", + "strum", "thiserror", ] [[package]] name = "polkadot-node-primitives" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bounded-vec", - "futures 0.3.17", + "futures 0.3.18", "parity-scale-codec", "polkadot-parachain", "polkadot-primitives", @@ -6752,8 +6752,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -6762,11 +6762,11 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "derive_more", - "futures 0.3.17", + "futures 0.3.18", "polkadot-node-jaeger", "polkadot-node-network-protocol", "polkadot-node-primitives", @@ -6781,12 +6781,12 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "async-trait", "derive_more", - "futures 0.3.17", + "futures 0.3.18", "itertools", "lru 0.7.0", "metered-channel", @@ -6808,10 +6808,10 @@ dependencies = [ [[package]] name = "polkadot-overseer" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "lru 0.7.0", "parity-util-mem", @@ -6829,11 +6829,11 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "async-trait", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "metered-channel", "pin-project 1.0.8", @@ -6846,8 +6846,8 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -6857,8 +6857,8 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "derive_more", "frame-support", @@ -6874,10 +6874,10 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ - "bitvec 0.20.4", + "bitvec", "frame-system", "hex-literal", "parity-scale-codec", @@ -6904,8 +6904,8 @@ dependencies = [ [[package]] name = "polkadot-rpc" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -6935,11 +6935,11 @@ dependencies = [ [[package]] name = "polkadot-runtime" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "beefy-primitives", - "bitvec 0.20.4", + "bitvec", "frame-benchmarking", "frame-election-provider-support", "frame-executive", @@ -6953,6 +6953,7 @@ dependencies = [ "pallet-authority-discovery", "pallet-authorship", "pallet-babe", + "pallet-bags-list", "pallet-balances", "pallet-bounties", "pallet-collective", @@ -6982,6 +6983,7 @@ dependencies = [ "pallet-treasury", "pallet-utility", "pallet-vesting", + "pallet-xcm", "parity-scale-codec", "polkadot-primitives", "polkadot-runtime-common", @@ -7008,21 +7010,24 @@ dependencies = [ "sp-version", "static_assertions", "substrate-wasm-builder", + "xcm", + "xcm-builder", + "xcm-executor", ] [[package]] name = "polkadot-runtime-common" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "beefy-primitives", - "bitvec 0.20.4", + "bitvec", "frame-benchmarking", "frame-election-provider-support", "frame-support", "frame-system", "impl-trait-for-tuples", - "libsecp256k1 0.7.0", + "libsecp256k1", "log", "pallet-authorship", "pallet-babe", @@ -7059,11 +7064,11 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "bitflags", - "bitvec 0.20.4", + "bitvec", "derive_more", "frame-benchmarking", "frame-support", @@ -7071,6 +7076,7 @@ dependencies = [ "log", "pallet-authority-discovery", "pallet-authorship", + "pallet-babe", "pallet-balances", "pallet-session", "pallet-staking", @@ -7098,14 +7104,14 @@ dependencies = [ [[package]] name = "polkadot-service" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "async-trait", "beefy-gadget", "beefy-primitives", "frame-system-rpc-runtime-api", - "futures 0.3.17", + "futures 0.3.18", "hex-literal", "kusama-runtime", "kvdb", @@ -7164,6 +7170,7 @@ dependencies = [ "sc-finality-grandpa", "sc-keystore", "sc-network", + "sc-offchain", "sc-service", "sc-sync-state-rpc", "sc-telemetry", @@ -7196,12 +7203,12 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "arrayvec 0.5.2", "derive_more", - "futures 0.3.17", + "futures 0.3.18", "indexmap", "parity-scale-codec", "polkadot-node-network-protocol", @@ -7217,8 +7224,8 @@ dependencies = [ [[package]] name = "polkadot-statement-table" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -7300,42 +7307,16 @@ dependencies = [ "toml", ] -[[package]] -name = "proc-macro-error" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18f33027081eba0a6d8aba6d1b1c3a3be58cbb12106341c2d5759fcd9b5277e7" -dependencies = [ - "proc-macro-error-attr 0.4.12", - "proc-macro2", - "quote", - "syn", - "version_check", -] - [[package]] name = "proc-macro-error" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ - "proc-macro-error-attr 1.0.4", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a5b4b77fdb63c1eca72173d68d24501c54ab1269409f6b672c85deb18af69de" -dependencies = [ + "proc-macro-error-attr", "proc-macro2", "quote", "syn", - "syn-mid", "version_check", ] @@ -7350,18 +7331,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" - -[[package]] -name = "proc-macro-nested" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" - [[package]] name = "proc-macro2" version = "1.0.32" @@ -7373,9 +7342,9 @@ dependencies = [ [[package]] name = "prometheus" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5986aa8d62380092d2f50f8b1cdba9cb9b6731ffd4b25b51fd126b6c3e05b99c" +checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504" dependencies = [ "cfg-if 1.0.0", "fnv", @@ -7387,9 +7356,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" dependencies = [ "bytes 1.1.0", "prost-derive", @@ -7397,27 +7366,29 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" dependencies = [ "bytes 1.1.0", "heck", "itertools", + "lazy_static", "log", "multimap", "petgraph", "prost", "prost-types", + "regex", "tempfile", "which", ] [[package]] name = "prost-derive" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" dependencies = [ "anyhow", "itertools", @@ -7428,9 +7399,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" dependencies = [ "bytes 1.1.0", "prost", @@ -7488,12 +7459,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "radium" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8" - [[package]] name = "radium" version = "0.6.2" @@ -7692,9 +7657,9 @@ dependencies = [ [[package]] name = "regalloc" -version = "0.0.31" +version = "0.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" +checksum = "a6304468554ed921da3d32c355ea107b8d13d7b8996c3adfb7aab48d3bc321f4" dependencies = [ "log", "rustc-hash", @@ -7742,11 +7707,10 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "env_logger 0.9.0", - "jsonrpsee-proc-macros", - "jsonrpsee-ws-client", + "jsonrpsee", "log", "parity-scale-codec", "serde", @@ -7778,9 +7742,9 @@ dependencies = [ [[package]] name = "retain_mut" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "448296241d034b96c11173591deaa1302f2c17b56092106c1f92c1bc0183a8c9" +checksum = "11000e6ba5020e53e7cc26f73b91ae7d5496b4977851479edb66b694c0675c21" [[package]] name = "ring" @@ -7819,8 +7783,8 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "beefy-primitives", "bp-messages", @@ -7901,6 +7865,23 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "rsix" +version = "0.23.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f64c5788d5aab8b75441499d99576a24eb09f76fb267b36fec7e3d970c66431" +dependencies = [ + "bitflags", + "cc", + "errno", + "io-lifetimes", + "itoa", + "libc", + "linux-raw-sys", + "once_cell", + "rustc_version 0.4.0", +] + [[package]] name = "rustc-demangle" version = "0.1.21" @@ -7928,13 +7909,22 @@ dependencies = [ "semver 0.11.0", ] +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.4", +] + [[package]] name = "rustls" version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" dependencies = [ - "base64 0.13.0", + "base64", "log", "ring", "sct", @@ -7959,22 +7949,22 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "pin-project 0.4.28", "static_assertions", ] [[package]] name = "ryu" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +checksum = "3c9613b5a66ab9ba26415184cfc41156594925a9cf3a2057e57f31ff145f6568" [[package]] name = "salsa20" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0" +checksum = "0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686" dependencies = [ "cipher", ] @@ -7990,8 +7980,8 @@ dependencies = [ [[package]] name = "sc-allocator" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +version = "4.1.0-dev" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "log", "sp-core", @@ -8002,11 +7992,11 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "derive_more", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "ip_network", "libp2p", @@ -8029,9 +8019,9 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "log", "parity-scale-codec", @@ -8052,7 +8042,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8068,9 +8058,10 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "impl-trait-for-tuples", + "memmap2 0.5.0", "parity-scale-codec", "sc-chain-spec-derive", "sc-network", @@ -8084,7 +8075,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8095,11 +8086,11 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "chrono", "fdlimit", - "futures 0.3.17", + "futures 0.3.18", "hex", "libp2p", "log", @@ -8133,10 +8124,10 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "fnv", - "futures 0.3.17", + "futures 0.3.18", "hash-db", "log", "parity-scale-codec", @@ -8161,7 +8152,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "hash-db", "kvdb", @@ -8186,10 +8177,10 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "libp2p", "log", @@ -8210,11 +8201,11 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "derive_more", - "futures 0.3.17", + "futures 0.3.18", "log", "parity-scale-codec", "sc-block-builder", @@ -8239,12 +8230,12 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "derive_more", "fork-tree", - "futures 0.3.17", + "futures 0.3.18", "log", "merlin", "num-bigint", @@ -8282,10 +8273,10 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "derive_more", - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -8306,7 +8297,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8319,10 +8310,10 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "log", "parity-scale-codec", @@ -8345,7 +8336,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "sc-client-api", "sp-authorship", @@ -8356,10 +8347,10 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "lazy_static", - "libsecp256k1 0.6.0", + "libsecp256k1", "log", "parity-scale-codec", "parking_lot 0.11.2", @@ -8368,6 +8359,7 @@ dependencies = [ "sc-executor-wasmtime", "sp-api", "sp-core", + "sp-core-hashing-proc-macro", "sp-externalities", "sp-io", "sp-panic-handler", @@ -8382,7 +8374,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "derive_more", "environmental", @@ -8400,7 +8392,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "log", "parity-scale-codec", @@ -8416,7 +8408,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8434,14 +8426,14 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "derive_more", "dyn-clone", "finality-grandpa", "fork-tree", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "log", "parity-scale-codec", @@ -8471,11 +8463,11 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "derive_more", "finality-grandpa", - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -8495,10 +8487,10 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "ansi_term 0.12.1", - "futures 0.3.17", + "ansi_term", + "futures 0.3.18", "futures-timer 3.0.2", "log", "parity-util-mem", @@ -8512,7 +8504,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "derive_more", @@ -8524,28 +8516,10 @@ dependencies = [ "sp-keystore", ] -[[package]] -name = "sc-light" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" -dependencies = [ - "hash-db", - "parity-scale-codec", - "parking_lot 0.11.2", - "sc-client-api", - "sc-executor", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-externalities", - "sp-runtime", - "sp-state-machine", -] - [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-std", "async-trait", @@ -8557,7 +8531,7 @@ dependencies = [ "either", "fnv", "fork-tree", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "hex", "ip_network", @@ -8565,7 +8539,7 @@ dependencies = [ "linked-hash-map", "linked_hash_set", "log", - "lru 0.6.6", + "lru 0.7.0", "parity-scale-codec", "parking_lot 0.11.2", "pin-project 1.0.8", @@ -8596,13 +8570,13 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "libp2p", "log", - "lru 0.6.6", + "lru 0.7.0", "sc-network", "sp-runtime", "substrate-prometheus-endpoint", @@ -8612,17 +8586,17 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "bytes 1.1.0", "fnv", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "hex", "hyper", "hyper-rustls", - "log", "num_cpus", + "once_cell", "parity-scale-codec", "parking_lot 0.11.2", "rand 0.7.3", @@ -8634,14 +8608,15 @@ dependencies = [ "sp-offchain", "sp-runtime", "threadpool", + "tracing", ] [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "libp2p", "log", "sc-utils", @@ -8651,8 +8626,8 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8661,9 +8636,9 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "hash-db", "jsonrpc-core", "jsonrpc-pubsub", @@ -8692,9 +8667,9 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -8717,9 +8692,9 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-http-server", "jsonrpc-ipc-server", @@ -8734,12 +8709,12 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "directories", "exit-future", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "hash-db", "jsonrpc-core", @@ -8758,7 +8733,6 @@ dependencies = [ "sc-executor", "sc-informant", "sc-keystore", - "sc-light", "sc-network", "sc-offchain", "sc-rpc", @@ -8799,7 +8773,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "log", "parity-scale-codec", @@ -8813,7 +8787,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8835,10 +8809,10 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "chrono", - "futures 0.3.17", + "futures 0.3.18", "libp2p", "log", "parking_lot 0.11.2", @@ -8853,12 +8827,13 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "ansi_term 0.12.1", + "ansi_term", "atty", "chrono", "lazy_static", + "libc", "log", "once_cell", "parking_lot 0.11.2", @@ -8883,7 +8858,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8894,9 +8869,9 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "intervalier", "linked-hash-map", "log", @@ -8921,10 +8896,10 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "derive_more", - "futures 0.3.17", + "futures 0.3.18", "log", "serde", "sp-blockchain", @@ -8935,9 +8910,9 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "lazy_static", "prometheus", @@ -8949,7 +8924,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c55b744399c25532d63a0d2789b109df8d46fc93752d46b0782991a931a782f" dependencies = [ - "bitvec 0.20.4", + "bitvec", "cfg-if 1.0.0", "derive_more", "parity-scale-codec", @@ -9067,6 +9042,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ "semver-parser 0.10.2", +] + +[[package]] +name = "semver" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" +dependencies = [ "serde", ] @@ -9107,9 +9090,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.69" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e466864e431129c7e0d3476b92f20458e5879919a0596c6472738d9fa2d342f8" +checksum = "d0ffa0837f2dfa6fb90868c2b5468cad482e175f7dad97e7421951e663f2b527" dependencies = [ "itoa", "ryu", @@ -9238,8 +9221,8 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "enumn", "parity-scale-codec", @@ -9281,7 +9264,7 @@ dependencies = [ "rand 0.8.4", "rand_core 0.6.3", "ring", - "rustc_version", + "rustc_version 0.3.3", "sha2 0.9.8", "subtle", "x25519-dalek", @@ -9310,29 +9293,14 @@ dependencies = [ [[package]] name = "soketto" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c71ed3d54db0a699f4948e1bb3e45b450fa31fe602621dee6680361d569c88" -dependencies = [ - "base64 0.12.3", - "bytes 0.5.6", - "flate2", - "futures 0.3.17", - "httparse", - "log", - "rand 0.7.3", - "sha-1 0.9.8", -] - -[[package]] -name = "soketto" -version = "0.6.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a74e48087dbeed4833785c2f3352b59140095dc192dce966a3bfc155020a439f" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ - "base64 0.13.0", + "base64", "bytes 1.1.0", - "futures 0.3.17", + "flate2", + "futures 0.3.18", "httparse", "log", "rand 0.8.4", @@ -9342,7 +9310,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "hash-db", "log", @@ -9359,7 +9327,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9371,7 +9339,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "scale-info", @@ -9384,7 +9352,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "integer-sqrt", "num-traits", @@ -9399,7 +9367,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "scale-info", @@ -9412,7 +9380,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "parity-scale-codec", @@ -9424,7 +9392,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "sp-api", @@ -9436,11 +9404,11 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "log", - "lru 0.6.6", + "lru 0.7.0", "parity-scale-codec", "parking_lot 0.11.2", "sp-api", @@ -9454,10 +9422,10 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", - "futures 0.3.17", + "futures 0.3.18", "futures-timer 3.0.2", "log", "parity-scale-codec", @@ -9473,7 +9441,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "parity-scale-codec", @@ -9491,7 +9459,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "merlin", @@ -9514,10 +9482,11 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "scale-info", + "serde", "sp-arithmetic", "sp-runtime", ] @@ -9525,7 +9494,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9537,20 +9506,21 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "base58", + "bitflags", "blake2-rfc", "byteorder", "dyn-clonable", "ed25519-dalek", - "futures 0.3.17", + "futures 0.3.18", "hash-db", "hash256-std-hasher", "hex", "impl-serde", "lazy_static", - "libsecp256k1 0.6.0", + "libsecp256k1", "log", "merlin", "num-traits", @@ -9565,6 +9535,7 @@ dependencies = [ "secrecy", "serde", "sha2 0.9.8", + "sp-core-hashing", "sp-debug-derive", "sp-externalities", "sp-runtime-interface", @@ -9580,10 +9551,34 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sp-core-hashing" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" +dependencies = [ + "blake2-rfc", + "byteorder", + "sha2 0.9.8", + "sp-std", + "tiny-keccak", + "twox-hash", +] + +[[package]] +name = "sp-core-hashing-proc-macro" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" +dependencies = [ + "proc-macro2", + "quote", + "sp-core-hashing", + "syn", +] + [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "kvdb", "parking_lot 0.11.2", @@ -9591,8 +9586,8 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "proc-macro2", "quote", @@ -9602,7 +9597,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "environmental", "parity-scale-codec", @@ -9613,7 +9608,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "finality-grandpa", "log", @@ -9631,7 +9626,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9645,11 +9640,11 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "hash-db", - "libsecp256k1 0.6.0", + "libsecp256k1", "log", "parity-scale-codec", "parking_lot 0.11.2", @@ -9669,22 +9664,22 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "lazy_static", "sp-core", "sp-runtime", - "strum 0.20.0", + "strum", ] [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "derive_more", - "futures 0.3.17", + "futures 0.3.18", "merlin", "parity-scale-codec", "parking_lot 0.11.2", @@ -9696,8 +9691,8 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +version = "4.1.0-dev" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "zstd", ] @@ -9705,7 +9700,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "scale-info", @@ -9720,7 +9715,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9731,7 +9726,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "sp-api", "sp-core", @@ -9740,16 +9735,18 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "backtrace", + "lazy_static", + "regex", ] [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "rustc-hash", "serde", @@ -9759,7 +9756,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "either", "hash256-std-hasher", @@ -9781,7 +9778,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9798,7 +9795,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9809,8 +9806,8 @@ dependencies = [ [[package]] name = "sp-serializer" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "serde", "serde_json", @@ -9819,7 +9816,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "scale-info", @@ -9833,7 +9830,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "scale-info", @@ -9844,7 +9841,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "hash-db", "log", @@ -9867,12 +9864,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9885,7 +9882,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "log", "sp-core", @@ -9898,7 +9895,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9914,7 +9911,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "sp-std", @@ -9926,7 +9923,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "sp-api", "sp-runtime", @@ -9935,7 +9932,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-trait", "log", @@ -9951,7 +9948,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "hash-db", "memory-db", @@ -9966,7 +9963,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9982,7 +9979,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9993,7 +9990,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10009,9 +10006,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "ss58-registry" -version = "1.5.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66cd4c4bb7ee41dc5b0c13d600574ae825d3a02e8f31326b17ac71558f2c836" +checksum = "78abb01d308934b82e34e9cf1f45846d31539246501745b129539176f4f3368d" dependencies = [ "Inflector", "proc-macro2", @@ -10095,58 +10092,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ "heck", - "proc-macro-error 1.0.4", + "proc-macro-error", "proc-macro2", "quote", "syn", ] -[[package]] -name = "strum" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" -dependencies = [ - "strum_macros 0.20.1", -] - -[[package]] -name = "strum" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" - [[package]] name = "strum" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" dependencies = [ - "strum_macros 0.22.0", -] - -[[package]] -name = "strum_macros" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "strum_macros" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", + "strum_macros", ] [[package]] @@ -10177,7 +10135,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "platforms", ] @@ -10185,10 +10143,10 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "frame-system-rpc-runtime-api", - "futures 0.3.17", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -10206,8 +10164,8 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ "async-std", "derive_more", @@ -10221,9 +10179,9 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "ansi_term 0.12.1", + "ansi_term", "build-helper", "cargo_metadata", "sp-maybe-compressed-blob", @@ -10241,26 +10199,15 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.81" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966" +checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59" dependencies = [ "proc-macro2", "quote", "unicode-xid", ] -[[package]] -name = "syn-mid" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa8e7560a164edb1621a55d18a0c59abf49d360f47aa7b821061dd7eea7fac9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "synstructure" version = "0.12.6" @@ -10424,9 +10371,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.13.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "588b2d10a336da58d877567cd8fb8a14b463e2104910f8132cd054b4b96e29ee" +checksum = "70e992e41e0d2fb9f755b37446f20900f64446ef54874f40a60c78f021ac6144" dependencies = [ "autocfg", "bytes 1.1.0", @@ -10443,9 +10390,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "114383b041aa6212c579467afa0075fbbdd0718de036100bc0ba7961d8cb9095" +checksum = "c9efc1aba077437943f7515666aa2b882dfabfbfdf89c819ea75a8d6e9eaba5e" dependencies = [ "proc-macro2", "quote", @@ -10573,10 +10520,11 @@ version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" dependencies = [ - "ansi_term 0.12.1", + "ansi_term", "chrono", "lazy_static", "matchers", + "parking_lot 0.11.2", "regex", "serde", "serde_json", @@ -10663,9 +10611,9 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.13#fcc54a72973d03afe7bf9e3ef2736050b3f33465" dependencies = [ - "jsonrpsee-ws-client", + "jsonrpsee", "log", "parity-scale-codec", "remote-externalities", @@ -10684,6 +10632,12 @@ dependencies = [ "structopt", ] +[[package]] +name = "tt-call" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e66dcbec4290c69dd03c57e76c2469ea5c7ce109c6dd4351c13055cf71ea055" + [[package]] name = "twox-hash" version = "1.6.1" @@ -10986,7 +10940,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "js-sys", "parking_lot 0.11.2", "pin-utils", @@ -11021,15 +10975,15 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.80.2" +version = "0.81.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449167e2832691a1bff24cde28d2804e90e09586a448c8e76984792c44334a6b" +checksum = "98930446519f63d00a836efdc22f67766ceae8dbcc1571379f2bcabc6b2b9abc" [[package]] name = "wasmtime" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899b1e5261e3d3420860dacfb952871ace9d7ba9f953b314f67aaf9f8e2a4d89" +checksum = "311d06b0c49346d1fbf48a17052e844036b95a7753c1afb34e8c0af3f6b5bb13" dependencies = [ "anyhow", "backtrace", @@ -11040,7 +10994,7 @@ dependencies = [ "lazy_static", "libc", "log", - "object 0.26.2", + "object", "paste", "psm", "rayon", @@ -11059,18 +11013,17 @@ dependencies = [ [[package]] name = "wasmtime-cache" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2493b81d7a9935f7af15e06beec806f256bc974a90a843685f3d61f2fc97058" +checksum = "36147930a4995137dc096e5b17a573b446799be2bbaea433e821ce6a80abe2c5" dependencies = [ "anyhow", - "base64 0.13.0", + "base64", "bincode", "directories-next", - "errno", "file-per-thread-logger", - "libc", "log", + "rsix", "serde", "sha2 0.9.8", "toml", @@ -11080,9 +11033,9 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99706bacdf5143f7f967d417f0437cce83a724cf4518cb1a3ff40e519d793021" +checksum = "ab3083a47e1ede38aac06a1d9831640d673f9aeda0b82a64e4ce002f3432e2e7" dependencies = [ "anyhow", "cranelift-codegen", @@ -11091,8 +11044,9 @@ dependencies = [ "cranelift-native", "cranelift-wasm", "gimli 0.25.0", + "log", "more-asserts", - "object 0.26.2", + "object", "target-lexicon", "thiserror", "wasmparser", @@ -11101,9 +11055,9 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac42cb562a2f98163857605f02581d719a410c5abe93606128c59a10e84de85b" +checksum = "1c2d194b655321053bc4111a1aa4ead552655c8a17d17264bc97766e70073510" dependencies = [ "anyhow", "cfg-if 1.0.0", @@ -11112,7 +11066,7 @@ dependencies = [ "indexmap", "log", "more-asserts", - "object 0.26.2", + "object", "serde", "target-lexicon", "thiserror", @@ -11122,20 +11076,20 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f46dd757225f29a419be415ea6fb8558df9b0194f07e3a6a9c99d0e14dd534" +checksum = "864ac8dfe4ce310ac59f16fdbd560c257389cb009ee5d030ac6e30523b023d11" dependencies = [ "addr2line 0.16.0", "anyhow", "bincode", "cfg-if 1.0.0", "gimli 0.25.0", - "libc", "log", "more-asserts", - "object 0.26.2", + "object", "region", + "rsix", "serde", "target-lexicon", "thiserror", @@ -11147,9 +11101,9 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0122215a44923f395487048cb0a1d60b5b32c73aab15cf9364b798dbaff0996f" +checksum = "ab97da813a26b98c9abfd3b0c2d99e42f6b78b749c0646344e2e262d212d8c8b" dependencies = [ "anyhow", "backtrace", @@ -11164,6 +11118,7 @@ dependencies = [ "more-asserts", "rand 0.8.4", "region", + "rsix", "thiserror", "wasmtime-environ", "winapi 0.3.9", @@ -11171,9 +11126,9 @@ dependencies = [ [[package]] name = "wasmtime-types" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9b01caf8a204ef634ebac99700e77ba716d3ebbb68a1abbc2ceb6b16dbec9e4" +checksum = "ff94409cc3557bfbbcce6b14520ccd6bd3727e965c0fe68d63ef2c185bf379c6" dependencies = [ "cranelift-entity", "serde", @@ -11221,11 +11176,11 @@ dependencies = [ [[package]] name = "westend-runtime" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "beefy-primitives", - "bitvec 0.20.4", + "bitvec", "frame-benchmarking", "frame-election-provider-support", "frame-executive", @@ -11401,8 +11356,8 @@ dependencies = [ [[package]] name = "xcm" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -11414,8 +11369,8 @@ dependencies = [ [[package]] name = "xcm-builder" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "frame-support", "frame-system", @@ -11434,8 +11389,8 @@ dependencies = [ [[package]] name = "xcm-executor" -version = "0.9.12" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "frame-benchmarking", "frame-support", @@ -11453,7 +11408,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003e" +source = "git+https://github.com/paritytech/polkadot.git?branch=release-v0.9.13#7d8f00b90cd6d87780123b3e08ca120cfb0c6e50" dependencies = [ "proc-macro2", "quote", @@ -11466,7 +11421,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107" dependencies = [ - "futures 0.3.17", + "futures 0.3.18", "log", "nohash-hasher", "parking_lot 0.11.2", diff --git a/node/Cargo.toml b/node/Cargo.toml index a044476eb..785719d6f 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -2,7 +2,7 @@ authors = ['Manta Network'] build = 'build.rs' description = 'Manta Parachain Node.' -edition = '2018' +edition = '2021' homepage = 'https://manta.network' license = 'GPL-3.0' name = 'manta' @@ -23,63 +23,63 @@ async-trait = "0.1.42" futures = "0.3.14" # Substrate frames -frame-benchmarking = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -frame-benchmarking-cli = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +frame-benchmarking-cli = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } # RPC related dependencies jsonrpc-core = "18.0.0" -frame-rpc-system = { package = "substrate-frame-rpc-system", git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12" } -pallet-transaction-payment-rpc = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-transaction-pool-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12" } +frame-rpc-system = { package = "substrate-frame-rpc-system", git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } +pallet-transaction-payment-rpc = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-transaction-pool-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } # Substrate client dependencies -sc-basic-authorship = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-chain-spec = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-cli = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-consensus = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-executor = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-client-api = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-keystore = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12" } -sc-rpc = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-rpc-api = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-service = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-telemetry = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-transaction-pool = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sc-tracing = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } +sc-basic-authorship = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-chain-spec = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-cli = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-consensus = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-executor = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-client-api = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-keystore = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } +sc-rpc = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-rpc-api = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-service = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-telemetry = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-transaction-pool = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sc-tracing = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } # Substrate primitives -sp-api = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-block-builder = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-consensus = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-consensus-aura = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-blockchain = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-core = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-inherents = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12" } -sp-offchain = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12" } -sp-runtime = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-session = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-timestamp = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-transaction-pool = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12" } +sp-api = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-block-builder = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-consensus = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-consensus-aura = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-blockchain = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-core = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-inherents = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } +sp-offchain = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } +sp-runtime = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-session = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-timestamp = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-transaction-pool = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } # Cumulus dependencies -cumulus-client-cli = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.12" } -cumulus-client-consensus-common = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.12" } -cumulus-client-consensus-aura = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.12" } -cumulus-client-consensus-relay-chain = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.12" } -cumulus-client-network = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.12" } -cumulus-primitives-core = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.12" } -cumulus-primitives-parachain-inherent = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.12" } -cumulus-client-service = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.12" } +cumulus-client-cli = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.13" } +cumulus-client-consensus-common = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.13" } +cumulus-client-consensus-aura = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.13" } +cumulus-client-consensus-relay-chain = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.13" } +cumulus-client-network = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.13" } +cumulus-primitives-core = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.13" } +cumulus-primitives-parachain-inherent = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.13" } +cumulus-client-service = { git = 'https://github.com/paritytech/cumulus.git', branch = "polkadot-v0.9.13" } # Polkadot dependencies -polkadot-cli = { git = 'https://github.com/paritytech/polkadot.git', branch = "release-v0.9.12" } -polkadot-parachain = { git = 'https://github.com/paritytech/polkadot.git', branch = "release-v0.9.12" } -polkadot-primitives = { git = 'https://github.com/paritytech/polkadot.git', branch = "release-v0.9.12" } -polkadot-service = { git = 'https://github.com/paritytech/polkadot.git', branch = "release-v0.9.12" } +polkadot-cli = { git = 'https://github.com/paritytech/polkadot.git', branch = "release-v0.9.13" } +polkadot-parachain = { git = 'https://github.com/paritytech/polkadot.git', branch = "release-v0.9.13" } +polkadot-primitives = { git = 'https://github.com/paritytech/polkadot.git', branch = "release-v0.9.13" } +polkadot-service = { git = 'https://github.com/paritytech/polkadot.git', branch = "release-v0.9.13" } # Self dependencies calamari-runtime = { path = '../runtime/calamari' } @@ -87,7 +87,7 @@ manta-runtime = { path = '../runtime/manta' } manta-primitives = { path = '../runtime/primitives' } [build-dependencies] -substrate-build-script-utils = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } +substrate-build-script-utils = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } [features] runtime-benchmarks = [ diff --git a/node/src/chain_specs/calamari.rs b/node/src/chain_specs/calamari.rs index f55e6b2aa..871cca058 100644 --- a/node/src/chain_specs/calamari.rs +++ b/node/src/chain_specs/calamari.rs @@ -154,7 +154,6 @@ fn calamari_dev_genesis( code: calamari_runtime::WASM_BINARY .expect("WASM binary was not build, please build it!") .to_vec(), - changes_trie_config: Default::default(), }, balances: calamari_runtime::BalancesConfig { balances: endowed_accounts[..endowed_accounts.len() / 2] diff --git a/node/src/chain_specs/manta.rs b/node/src/chain_specs/manta.rs index 7e5cf8495..ae393ea24 100644 --- a/node/src/chain_specs/manta.rs +++ b/node/src/chain_specs/manta.rs @@ -138,7 +138,6 @@ fn manta_dev_genesis( code: manta_runtime::WASM_BINARY .expect("WASM binary was not build, please build it!") .to_vec(), - changes_trie_config: Default::default(), }, balances: manta_runtime::BalancesConfig { balances: endowed_accounts[..endowed_accounts.len() / 2] diff --git a/node/src/command.rs b/node/src/command.rs index 2194acb2c..9f8036687 100644 --- a/node/src/command.rs +++ b/node/src/command.rs @@ -129,18 +129,9 @@ impl SubstrateCli for Cli { fn load_spec(&self, id: &str) -> std::result::Result, String> { if id.starts_with("manta") { - load_spec( - id, - self.run.parachain_id.unwrap_or(MANTA_PARACHAIN_ID).into(), - ) + load_spec(id, MANTA_PARACHAIN_ID.into()) } else { - load_spec( - id, - self.run - .parachain_id - .unwrap_or(CALAMARI_PARACHAIN_ID) - .into(), - ) + load_spec(id, CALAMARI_PARACHAIN_ID.into()) } } @@ -358,12 +349,7 @@ pub fn run() -> Result<()> { .chain(cli.relaychain_args.iter()), ); - let id = ParaId::from( - cli.run - .parachain_id - .or(para_id) - .unwrap_or(MANTA_PARACHAIN_ID), - ); + let id = ParaId::from(para_id.unwrap_or(MANTA_PARACHAIN_ID)); let parachain_account = AccountIdConversion::::into_account(&id); diff --git a/node/src/service.rs b/node/src/service.rs index 216ba0ccc..3d44a01a4 100644 --- a/node/src/service.rs +++ b/node/src/service.rs @@ -163,7 +163,9 @@ where let telemetry_worker_handle = telemetry.as_ref().map(|(worker, _)| worker.handle()); let telemetry = telemetry.map(|(worker, telemetry)| { - task_manager.spawn_handle().spawn("telemetry", worker.run()); + task_manager + .spawn_handle() + .spawn("telemetry", None, worker.run()); telemetry }); @@ -301,7 +303,6 @@ where transaction_pool: transaction_pool.clone(), spawn_handle: task_manager.spawn_handle(), import_queue: import_queue.clone(), - on_demand: None, block_announce_validator_builder: Some(Box::new(|_| block_announce_validator)), warp_sync: None, })?; @@ -322,8 +323,6 @@ where }; sc_service::spawn_tasks(sc_service::SpawnTasksParams { - on_demand: None, - remote_blockchain: None, rpc_extensions_builder, client: client.clone(), transaction_pool: transaction_pool.clone(), diff --git a/pallets/pallet-tx-pause/Cargo.toml b/pallets/pallet-tx-pause/Cargo.toml index 9ddde8d37..01bc1a241 100644 --- a/pallets/pallet-tx-pause/Cargo.toml +++ b/pallets/pallet-tx-pause/Cargo.toml @@ -2,7 +2,7 @@ authors = ['Manta Network'] name = "pallet-tx-pause" version = '3.1.0' -edition = "2018" +edition = "2021" homepage = 'https://manta.network' license = 'GPL-3.0' repository = 'https://github.com/Manta-Network/Manta/' @@ -10,16 +10,16 @@ repository = 'https://github.com/Manta-Network/Manta/' [dependencies] codec = { package = "parity-scale-codec", version = "2.3.1", default-features = false } scale-info = { version = "1.0", default-features = false, features = ["derive"] } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12", default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12", default-features = false } -frame-benchmarking = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12", default-features = false, optional = true } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13", default-features = false } +frame-support = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13", default-features = false } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13", default-features = false, optional = true } [dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12" } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12" } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.12" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } manta-primitives = { path = '../../runtime/primitives', default-features = false } [features] diff --git a/pallets/vesting/Cargo.toml b/pallets/vesting/Cargo.toml index 488b94354..59cc542bc 100644 --- a/pallets/vesting/Cargo.toml +++ b/pallets/vesting/Cargo.toml @@ -2,7 +2,7 @@ authors = ['Manta Network'] name = "calamari-vesting" version = '3.1.0' -edition = "2018" +edition = "2021" homepage = 'https://manta.network' license = 'GPL-3.0' repository = 'https://github.com/Manta-Network/Manta/' @@ -10,20 +10,20 @@ repository = 'https://github.com/Manta-Network/Manta/' [dependencies] codec = { package = "parity-scale-codec", version = "2.3.1", default-features = false, features = ["derive"] } scale-info = { version = "1.0", default-features = false, features = ["derive"] } -frame-benchmarking = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12", optional = true } -pallet-timestamp = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12", optional = true } -pallet-balances = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12", optional = true } -frame-support = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -frame-system = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-runtime = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-std = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13", optional = true } +pallet-timestamp = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13", optional = true } +pallet-balances = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13", optional = true } +frame-support = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +frame-system = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-runtime = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-std = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } [dev-dependencies] chrono = "0.4" -pallet-balances = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -pallet-timestamp = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-core = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } -sp-io = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } +pallet-balances = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +pallet-timestamp = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-core = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } +sp-io = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } [features] default = ["std"] diff --git a/runtime/calamari/Cargo.toml b/runtime/calamari/Cargo.toml index 49a063f3e..4b0d4846e 100644 --- a/runtime/calamari/Cargo.toml +++ b/runtime/calamari/Cargo.toml @@ -1,6 +1,6 @@ [package] authors = ['Manta Network'] -edition = '2018' +edition = '2021' homepage = 'https://manta.network' license = 'GPL-3.0' name = 'calamari-runtime' @@ -16,65 +16,65 @@ serde = { version = '1.0.119', features = ['derive'], optional = true } smallvec = "1.6.1" # Substrate primitives -sp-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-block-builder = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-consensus-aura = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-core = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-inherents = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-io = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-offchain = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-runtime = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-session = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-std = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-transaction-pool = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-version = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } +sp-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-block-builder = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-consensus-aura = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-core = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-inherents = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-io = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-offchain = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-runtime = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-session = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-std = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-transaction-pool = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-version = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } # Substrate frames -frame-benchmarking = { git = 'https://github.com/paritytech/substrate.git', default-features = false, optional = true, branch = "polkadot-v0.9.12" } -frame-system-benchmarking = { git = 'https://github.com/paritytech/substrate.git', default-features = false, optional = true, branch = "polkadot-v0.9.12" } -frame-executive = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -frame-support = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -frame-system = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -frame-system-rpc-runtime-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -frame-try-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, optional = true, branch = "polkadot-v0.9.12" } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate.git', default-features = false, optional = true, branch = "polkadot-v0.9.13" } +frame-system-benchmarking = { git = 'https://github.com/paritytech/substrate.git', default-features = false, optional = true, branch = "polkadot-v0.9.13" } +frame-executive = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +frame-support = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +frame-system = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +frame-system-rpc-runtime-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +frame-try-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, optional = true, branch = "polkadot-v0.9.13" } # Substrate pallets -pallet-aura = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-authorship = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-balances = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-multisig = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-session = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-sudo = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-timestamp = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-transaction-payment-rpc-runtime-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-utility = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-collective = { git = "https://github.com/paritytech/substrate.git", default-features = false, branch = "polkadot-v0.9.12" } -pallet-democracy = { git = "https://github.com/paritytech/substrate.git", default-features = false, branch = "polkadot-v0.9.12" } -pallet-scheduler = { git = "https://github.com/paritytech/substrate.git", default-features = false, branch = "polkadot-v0.9.12" } -pallet-membership = { git = "https://github.com/paritytech/substrate.git", default-features = false, branch = "polkadot-v0.9.12" } +pallet-aura = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-authorship = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-balances = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-multisig = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-session = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-sudo = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-timestamp = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-transaction-payment-rpc-runtime-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-utility = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-collective = { git = "https://github.com/paritytech/substrate.git", default-features = false, branch = "polkadot-v0.9.13" } +pallet-democracy = { git = "https://github.com/paritytech/substrate.git", default-features = false, branch = "polkadot-v0.9.13" } +pallet-scheduler = { git = "https://github.com/paritytech/substrate.git", default-features = false, branch = "polkadot-v0.9.13" } +pallet-membership = { git = "https://github.com/paritytech/substrate.git", default-features = false, branch = "polkadot-v0.9.13" } # Cumulus dependencies -cumulus-pallet-aura-ext = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-pallet-parachain-system = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-primitives-core = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-primitives-timestamp = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-primitives-utility = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-pallet-dmp-queue = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-pallet-session-benchmarking = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, optional = true, branch = "polkadot-v0.9.12" } -cumulus-pallet-xcmp-queue = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-pallet-xcm = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-collator-selection = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -parachain-info = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } +cumulus-pallet-aura-ext = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-pallet-parachain-system = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-primitives-core = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-primitives-timestamp = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-primitives-utility = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-pallet-dmp-queue = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-pallet-session-benchmarking = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, optional = true, branch = "polkadot-v0.9.13" } +cumulus-pallet-xcmp-queue = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-pallet-xcm = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-collator-selection = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +parachain-info = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } # Polkadot dependencies -polkadot-primitives = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -polkadot-runtime-common = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -polkadot-parachain = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -xcm = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -xcm-builder = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -xcm-executor = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -pallet-xcm = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } +polkadot-primitives = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +polkadot-runtime-common = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +polkadot-parachain = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +xcm = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +xcm-builder = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +xcm-executor = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +pallet-xcm = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } # Self dependencies manta-primitives = { path = '../primitives', default-features = false } @@ -85,7 +85,7 @@ pallet-tx-pause = { path = '../../pallets/pallet-tx-pause', default-features = f targets = ['x86_64-unknown-linux-gnu'] [build-dependencies] -substrate-wasm-builder = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } +substrate-wasm-builder = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } [features] default = ['std'] diff --git a/runtime/calamari/src/lib.rs b/runtime/calamari/src/lib.rs index 066a9b114..ebb424347 100644 --- a/runtime/calamari/src/lib.rs +++ b/runtime/calamari/src/lib.rs @@ -33,14 +33,14 @@ use sp_runtime::{ }; use sp_core::u32_trait::{_1, _2, _3, _4}; -use sp_std::prelude::*; +use sp_std::{cmp::Ordering, prelude::*}; #[cfg(feature = "std")] use sp_version::NativeVersion; use sp_version::RuntimeVersion; use frame_support::{ construct_runtime, match_type, parameter_types, - traits::{Contains, Everything, Nothing}, + traits::{Contains, Everything, Nothing, PrivilegeCmp}, weights::{ constants::{BlockExecutionWeight, ExtrinsicBaseWeight, WEIGHT_PER_SECOND}, DispatchClass, IdentityFee, Weight, @@ -65,11 +65,11 @@ use polkadot_parachain::primitives::Sibling; use polkadot_runtime_common::{BlockHashCount, RocksDbWeight, SlowAdjustingFeeUpdate}; use xcm::latest::prelude::*; use xcm_builder::{ - AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, CurrencyAdapter, - EnsureXcmOrigin, FixedWeightBounds, IsConcrete, LocationInverter, NativeAsset, - ParentAsSuperuser, ParentIsDefault, RelayChainAsNative, SiblingParachainAsNative, - SiblingParachainConvertsVia, SignedAccountId32AsNative, SovereignSignedViaLocation, - TakeWeightCredit, UsingComponents, + AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom, + AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, CurrencyAdapter, EnsureXcmOrigin, + FixedWeightBounds, IsConcrete, LocationInverter, NativeAsset, ParentAsSuperuser, + ParentIsDefault, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, + SignedAccountId32AsNative, SovereignSignedViaLocation, TakeWeightCredit, UsingComponents, }; use xcm_executor::{Config, XcmExecutor}; @@ -333,6 +333,7 @@ impl pallet_multisig::Config for Runtime { impl pallet_utility::Config for Runtime { type Event = Event; type Call = Call; + type PalletsOrigin = OriginCaller; type WeightInfo = weights::pallet_utility::SubstrateWeight; } @@ -484,15 +485,39 @@ parameter_types! { pub const MaxScheduledPerBlock: u32 = 50; } +type ScheduleOrigin = EnsureRoot; +/// Used the compare the privilege of an origin inside the scheduler. +pub struct OriginPrivilegeCmp; +impl PrivilegeCmp for OriginPrivilegeCmp { + fn cmp_privilege(left: &OriginCaller, right: &OriginCaller) -> Option { + if left == right { + return Some(Ordering::Equal); + } + + match (left, right) { + // Root is greater than anything. + (OriginCaller::system(frame_system::RawOrigin::Root), _) => Some(Ordering::Greater), + // Check which one has more yes votes. + ( + OriginCaller::Council(pallet_collective::RawOrigin::Members(l_yes_votes, l_count)), + OriginCaller::Council(pallet_collective::RawOrigin::Members(r_yes_votes, r_count)), + ) => Some((l_yes_votes * r_count).cmp(&(r_yes_votes * l_count))), + // For every other origin we don't care, as they are not used for `ScheduleOrigin`. + _ => None, + } + } +} + impl pallet_scheduler::Config for Runtime { type Event = Event; type Origin = Origin; type PalletsOrigin = OriginCaller; type Call = Call; type MaximumWeight = MaximumSchedulerWeight; - type ScheduleOrigin = EnsureRoot; + type ScheduleOrigin = ScheduleOrigin; type MaxScheduledPerBlock = MaxScheduledPerBlock; type WeightInfo = weights::pallet_scheduler::SubstrateWeight; + type OriginPrivilegeCmp = OriginPrivilegeCmp; } parameter_types! { @@ -585,12 +610,22 @@ match_type! { MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Executive, .. }) } }; } +match_type! { + pub type ParentOrSiblings: impl Contains = { + MultiLocation { parents: 1, interior: Here } | + MultiLocation { parents: 1, interior: X1(_) } + }; +} pub type Barrier = ( TakeWeightCredit, AllowTopLevelPaidExecutionFrom, + // Parent and its exec plurality get free execution AllowUnpaidExecutionFrom, - // ^^^ Parent and its exec plurality get free execution + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, ); pub struct XcmConfig; @@ -619,7 +654,7 @@ pub type LocalOriginToLocation = (); /// queues. pub type XcmRouter = ( // Two routers - use UMP to communicate with the relay chain: - cumulus_primitives_utility::ParentAsUmp, + cumulus_primitives_utility::ParentAsUmp, // ..and XCMP to communicate with the sibling chains. XcmpQueue, ); @@ -653,7 +688,7 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type Event = Event; type XcmExecutor = XcmExecutor; type ChannelInfo = ParachainSystem; - type VersionWrapper = (); + type VersionWrapper = PolkadotXcm; } impl cumulus_pallet_dmp_queue::Config for Runtime { @@ -769,7 +804,7 @@ construct_runtime!( TechnicalCommittee: pallet_collective::::{Pallet, Call, Storage, Origin, Event, Config} = 17, TechnicalMembership: pallet_membership::::{Pallet, Call, Storage, Event, Config} = 18, - // Collator support. the order of these 4 are important and shall not change. + // Collator support. the order of these 5 are important and shall not change. Authorship: pallet_authorship::{Pallet, Call, Storage} = 20, CollatorSelection: pallet_collator_selection::{Pallet, Call, Storage, Event, Config} = 21, Session: pallet_session::{Pallet, Call, Storage, Event, Config} = 22, @@ -781,7 +816,7 @@ construct_runtime!( // XCM helpers. XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event} = 30, - PolkadotXcm: pallet_xcm::{Pallet, Call, Event, Origin} = 31, + PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 31, CumulusXcm: cumulus_pallet_xcm::{Pallet, Event, Origin} = 32, DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event} = 33, diff --git a/runtime/calamari/src/weights/pallet_utility.rs b/runtime/calamari/src/weights/pallet_utility.rs index 6c941a32d..9d250716f 100644 --- a/runtime/calamari/src/weights/pallet_utility.rs +++ b/runtime/calamari/src/weights/pallet_utility.rs @@ -65,6 +65,9 @@ impl pallet_utility::WeightInfo for SubstrateWeight // Standard Error: 4_000 .saturating_add((15_469_000 as Weight).saturating_mul(c as Weight)) } + fn dispatch_as() -> Weight { + (14_795_000 as Weight) + } } // For backwards compatibility and tests diff --git a/runtime/manta/Cargo.toml b/runtime/manta/Cargo.toml index 9fb7aeef7..07c958af9 100644 --- a/runtime/manta/Cargo.toml +++ b/runtime/manta/Cargo.toml @@ -1,6 +1,6 @@ [package] authors = ['Manta Network'] -edition = '2018' +edition = '2021' homepage = 'https://manta.network' license = 'GPL-3.0' name = 'manta-runtime' @@ -15,62 +15,62 @@ scale-info = { version = "1.0.0", default-features = false, features = ["derive" serde = { version = '1.0.119', features = ['derive'], optional = true } # Substrate primitives -sp-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-block-builder = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-consensus-aura = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-core = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-inherents = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-io = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-offchain = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-runtime = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-session = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-std = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-transaction-pool = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-version = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } +sp-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-block-builder = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-consensus-aura = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-core = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-inherents = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-io = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-offchain = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-runtime = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-session = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-std = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-transaction-pool = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-version = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } # Substrate frames -frame-benchmarking = { git = 'https://github.com/paritytech/substrate.git', default-features = false, optional = true, branch = "polkadot-v0.9.12" } -frame-system-benchmarking = { git = 'https://github.com/paritytech/substrate.git', default-features = false, optional = true, branch = "polkadot-v0.9.12" } -frame-executive = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -frame-support = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -frame-system = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -frame-system-rpc-runtime-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -frame-try-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, optional = true, branch = "polkadot-v0.9.12" } +frame-benchmarking = { git = 'https://github.com/paritytech/substrate.git', default-features = false, optional = true, branch = "polkadot-v0.9.13" } +frame-system-benchmarking = { git = 'https://github.com/paritytech/substrate.git', default-features = false, optional = true, branch = "polkadot-v0.9.13" } +frame-executive = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +frame-support = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +frame-system = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +frame-system-rpc-runtime-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +frame-try-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, optional = true, branch = "polkadot-v0.9.13" } # Substrate pallets -pallet-aura = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-authorship = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-balances = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-multisig = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-scheduler = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-v0.9.12" } -pallet-session = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-sudo = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-timestamp = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-transaction-payment-rpc-runtime-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-utility = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } +pallet-aura = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-authorship = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-balances = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-multisig = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-scheduler = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-v0.9.13" } +pallet-session = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-sudo = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-timestamp = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-transaction-payment-rpc-runtime-api = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-utility = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } # Cumulus dependencies -cumulus-pallet-aura-ext = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-pallet-parachain-system = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-primitives-core = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-primitives-timestamp = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-primitives-utility = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-pallet-dmp-queue = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-pallet-session-benchmarking = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, optional = true, branch = "polkadot-v0.9.12" } -cumulus-pallet-xcmp-queue = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -cumulus-pallet-xcm = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -pallet-collator-selection = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } -parachain-info = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.12" } +cumulus-pallet-aura-ext = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-pallet-parachain-system = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-primitives-core = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-primitives-timestamp = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-primitives-utility = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-pallet-dmp-queue = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-pallet-session-benchmarking = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, optional = true, branch = "polkadot-v0.9.13" } +cumulus-pallet-xcmp-queue = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +cumulus-pallet-xcm = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +pallet-collator-selection = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } +parachain-info = { git = 'https://github.com/paritytech/cumulus.git', default-features = false, branch = "polkadot-v0.9.13" } # Polkadot dependencies -polkadot-primitives = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -polkadot-runtime-common = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -polkadot-parachain = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -xcm = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -xcm-builder = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -xcm-executor = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } -pallet-xcm = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.12" } +polkadot-primitives = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +polkadot-runtime-common = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +polkadot-parachain = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +xcm = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +xcm-builder = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +xcm-executor = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } +pallet-xcm = { git = 'https://github.com/paritytech/polkadot.git', default-features = false, branch = "release-v0.9.13" } # Self dependencies manta-primitives = { path = '../primitives', default-features = false } @@ -80,7 +80,7 @@ pallet-tx-pause = { path = '../../pallets/pallet-tx-pause', default-features = f targets = ['x86_64-unknown-linux-gnu'] [build-dependencies] -substrate-wasm-builder = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.12" } +substrate-wasm-builder = { git = 'https://github.com/paritytech/substrate.git', branch = "polkadot-v0.9.13" } [features] default = ['std'] diff --git a/runtime/manta/src/lib.rs b/runtime/manta/src/lib.rs index 39db0ab70..d775c2be1 100644 --- a/runtime/manta/src/lib.rs +++ b/runtime/manta/src/lib.rs @@ -64,11 +64,11 @@ use polkadot_parachain::primitives::Sibling; use polkadot_runtime_common::{BlockHashCount, RocksDbWeight, SlowAdjustingFeeUpdate}; use xcm::latest::prelude::*; use xcm_builder::{ - AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, CurrencyAdapter, - EnsureXcmOrigin, FixedWeightBounds, IsConcrete, LocationInverter, NativeAsset, - ParentAsSuperuser, ParentIsDefault, RelayChainAsNative, SiblingParachainAsNative, - SiblingParachainConvertsVia, SignedAccountId32AsNative, SovereignSignedViaLocation, - TakeWeightCredit, UsingComponents, + AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom, + AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, CurrencyAdapter, EnsureXcmOrigin, + FixedWeightBounds, IsConcrete, LocationInverter, NativeAsset, ParentAsSuperuser, + ParentIsDefault, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, + SignedAccountId32AsNative, SovereignSignedViaLocation, TakeWeightCredit, UsingComponents, }; use xcm_executor::{Config, XcmExecutor}; @@ -294,6 +294,7 @@ impl pallet_multisig::Config for Runtime { impl pallet_utility::Config for Runtime { type Event = Event; type Call = Call; + type PalletsOrigin = OriginCaller; type WeightInfo = pallet_utility::weights::SubstrateWeight; } @@ -312,15 +313,17 @@ parameter_types! { pub const MaxScheduledPerBlock: u32 = 50; } +type ScheduleOrigin = EnsureRoot; impl pallet_scheduler::Config for Runtime { type Event = Event; type Origin = Origin; type PalletsOrigin = OriginCaller; type Call = Call; type MaximumWeight = MaximumSchedulerWeight; - type ScheduleOrigin = EnsureRoot; + type ScheduleOrigin = ScheduleOrigin; type MaxScheduledPerBlock = MaxScheduledPerBlock; type WeightInfo = pallet_scheduler::weights::SubstrateWeight; + type OriginPrivilegeCmp = frame_support::traits::EqualPrivilegeOnly; } parameter_types! { @@ -413,12 +416,22 @@ match_type! { MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Executive, .. }) } }; } +match_type! { + pub type ParentOrSiblings: impl Contains = { + MultiLocation { parents: 1, interior: Here } | + MultiLocation { parents: 1, interior: X1(_) } + }; +} pub type Barrier = ( TakeWeightCredit, AllowTopLevelPaidExecutionFrom, + // Parent and its exec plurality get free execution AllowUnpaidExecutionFrom, - // ^^^ Parent and its exec plurality get free execution + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, ); pub struct XcmConfig; @@ -447,7 +460,7 @@ pub type LocalOriginToLocation = (); /// queues. pub type XcmRouter = ( // Two routers - use UMP to communicate with the relay chain: - cumulus_primitives_utility::ParentAsUmp, + cumulus_primitives_utility::ParentAsUmp, // ..and XCMP to communicate with the sibling chains. XcmpQueue, ); @@ -479,7 +492,7 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type Event = Event; type XcmExecutor = XcmExecutor; type ChannelInfo = ParachainSystem; - type VersionWrapper = (); + type VersionWrapper = PolkadotXcm; } impl cumulus_pallet_dmp_queue::Config for Runtime { @@ -571,7 +584,7 @@ construct_runtime!( Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 11, - // Collator support. the order of these 4 are important and shall not change. + // Collator support. the order of these 5 are important and shall not change. Authorship: pallet_authorship::{Pallet, Call, Storage} = 20, CollatorSelection: pallet_collator_selection::{Pallet, Call, Storage, Event, Config} = 21, Session: pallet_session::{Pallet, Call, Storage, Event, Config} = 22, @@ -583,7 +596,7 @@ construct_runtime!( // XCM helpers. XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event} = 30, - PolkadotXcm: pallet_xcm::{Pallet, Call, Event, Origin} = 31, + PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 31, CumulusXcm: cumulus_pallet_xcm::{Pallet, Event, Origin} = 32, DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event} = 33, diff --git a/runtime/primitives/Cargo.toml b/runtime/primitives/Cargo.toml index 36c6eb894..9f564271d 100644 --- a/runtime/primitives/Cargo.toml +++ b/runtime/primitives/Cargo.toml @@ -2,7 +2,7 @@ authors = ['Manta Network'] name = "manta-primitives" version = '3.1.0' -edition = "2018" +edition = "2021" homepage = 'https://manta.network' license = 'GPL-3.0' repository = 'https://github.com/Manta-Network/Manta/' @@ -15,11 +15,11 @@ codec = { package = "parity-scale-codec", version = "2.3.1", default-features = smallvec = "1.6.1" # Substrate primitives -sp-consensus-aura = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-core = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-std = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-io = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } -sp-runtime = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.12" } +sp-consensus-aura = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-core = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-std = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-io = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } +sp-runtime = { git = 'https://github.com/paritytech/substrate.git', default-features = false, branch = "polkadot-v0.9.13" } [features] default = ["std"] diff --git a/runtime/primitives/src/lib.rs b/runtime/primitives/src/lib.rs index 965a6cb37..c25c87131 100644 --- a/runtime/primitives/src/lib.rs +++ b/runtime/primitives/src/lib.rs @@ -52,7 +52,7 @@ pub type Header = sp_runtime::generic::Header; pub type Block = sp_runtime::generic::Block; /// Digest item type. -pub type DigestItem = sp_runtime::generic::DigestItem; +pub type DigestItem = sp_runtime::generic::DigestItem; // Aura consensus authority. pub type AuraId = sp_consensus_aura::sr25519::AuthorityId; From 71ffe8e6d9ea9ba85716a071d60c25abffc51dcb Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Sat, 4 Dec 2021 23:55:19 +0200 Subject: [PATCH 02/26] Fix docker files --- docker/calamari.Dockerfile | 3 --- docker/manta.Dockerfile | 3 --- 2 files changed, 6 deletions(-) diff --git a/docker/calamari.Dockerfile b/docker/calamari.Dockerfile index 53b83f24f..0f73deeb0 100644 --- a/docker/calamari.Dockerfile +++ b/docker/calamari.Dockerfile @@ -20,7 +20,6 @@ ARG SUBSTRATE_RPC_CORS=all ARG SUBSTRATE_RPC_METHODS=safe ARG SUBSTRATE_WS_PORT=9944 ARG SUBSTRATE_WS_MAX_CONNECTIONS=100 -ARG SUBSTRATE_PARACHAIN_ID=2084 ARG SUBSTRATE_BOOTNODE_0=/dns/crispy.calamari.systems/tcp/30333/p2p/12D3KooWNE4LBfkYB2B7D4r9vL54YMMGsfAsXdkhWfBw8VHJSEQc ARG SUBSTRATE_BOOTNODE_1=/dns/crunchy.calamari.systems/tcp/30333/p2p/12D3KooWL3ELxcoMGA6han3wPQoym5DKbYHqkWkCuqyjaCXpyJTt ARG SUBSTRATE_BOOTNODE_2=/dns/hotdog.calamari.systems/tcp/30333/p2p/12D3KooWMHdpUCCS9j8hvNLTV8PeqJ16KaVEjb5PVdYgAQUFUcCG @@ -53,7 +52,6 @@ EXPOSE $SUBSTRATE_WS_PORT ENV PARA_BINARY_PATH=$PARA_BINARY_PATH ENV PARA_GENESIS_PATH=$PARA_GENESIS_PATH ENV SUBSTRATE_BASE_PATH=$SUBSTRATE_BASE_PATH -ENV SUBSTRATE_PARACHAIN_ID=$SUBSTRATE_PARACHAIN_ID ENV SUBSTRATE_PORT=$SUBSTRATE_PORT ENV SUBSTRATE_RPC_PORT=$SUBSTRATE_RPC_PORT ENV SUBSTRATE_WS_PORT=$SUBSTRATE_WS_PORT @@ -70,7 +68,6 @@ ENV RELAY_GENESIS_PATH=$RELAY_GENESIS_PATH ENTRYPOINT $PARA_BINARY_PATH \ --chain $PARA_GENESIS_PATH \ --base-path $SUBSTRATE_BASE_PATH \ - --parachain-id $SUBSTRATE_PARACHAIN_ID \ --port $SUBSTRATE_PORT \ --ws-port $SUBSTRATE_WS_PORT \ --ws-external \ diff --git a/docker/manta.Dockerfile b/docker/manta.Dockerfile index d4adb9efe..a898922fd 100644 --- a/docker/manta.Dockerfile +++ b/docker/manta.Dockerfile @@ -20,7 +20,6 @@ ARG SUBSTRATE_RPC_CORS=all ARG SUBSTRATE_RPC_METHODS=safe ARG SUBSTRATE_WS_PORT=9944 ARG SUBSTRATE_WS_MAX_CONNECTIONS=100 -ARG SUBSTRATE_PARACHAIN_ID=2084 ARG SUBSTRATE_BOOTNODE_0=/dns/alfredi.manta.systems/tcp/30333/p2p/12D3KooWKMw84HHuEbjHep6FVqUM2sss6TCzqehfXKw3PGoB4HoG ARG SUBSTRATE_BOOTNODE_1=/dns/birostris.manta.systems/tcp/30333/p2p/12D3KooWP5ASruuz1BEnD5M1QMSS7GiiFTnXMNoDUDn7o9GmcRyZ ARG SUBSTRATE_BOOTNODE_2=/dns/eregoodootenkey.manta.systems/tcp/30333/p2p/12D3KooWCKgXKVYbpxkmouHBrCyaPGr7NJSHVAgncUPVzH9fTB5e @@ -53,7 +52,6 @@ EXPOSE $SUBSTRATE_WS_PORT ENV PARA_BINARY_PATH=$PARA_BINARY_PATH ENV PARA_GENESIS_PATH=$PARA_GENESIS_PATH ENV SUBSTRATE_BASE_PATH=$SUBSTRATE_BASE_PATH -ENV SUBSTRATE_PARACHAIN_ID=$SUBSTRATE_PARACHAIN_ID ENV SUBSTRATE_PORT=$SUBSTRATE_PORT ENV SUBSTRATE_RPC_PORT=$SUBSTRATE_RPC_PORT ENV SUBSTRATE_WS_PORT=$SUBSTRATE_WS_PORT @@ -70,7 +68,6 @@ ENV RELAY_GENESIS_PATH=$RELAY_GENESIS_PATH ENTRYPOINT $PARA_BINARY_PATH \ --chain $PARA_GENESIS_PATH \ --base-path $SUBSTRATE_BASE_PATH \ - --parachain-id $SUBSTRATE_PARACHAIN_ID \ --port $SUBSTRATE_PORT \ --ws-port $SUBSTRATE_WS_PORT \ --ws-external \ From c5738ce8dcdb19e0fc2e1a1f8c3f0b56601d0dc6 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Sun, 5 Dec 2021 11:45:23 +0200 Subject: [PATCH 03/26] Add 30 second sleeps to docker tests --- .github/workflows/docker.yml | 1 + .github/workflows/publish-draft-releases.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 0bec8f317..647ddec5f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -52,6 +52,7 @@ jobs: name: run docker image run: | sudo docker run -d mantanetwork/${{ matrix.runtime.name }}:latest > docker_id.log + sleep 30 - name: check syncing run: | diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index b6cec3f3d..a943c5eea 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -1245,6 +1245,7 @@ jobs: name: run docker image run: | sudo docker run -d ${{ matrix.runtime.name }} > docker_id.log + sleep 30 - name: check syncing run: | From de61b94ceab78eeb69578a66112495807a37f3cf Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Sun, 5 Dec 2021 18:00:44 +0200 Subject: [PATCH 04/26] Export xcm config with safe version 0. Add more sleep to integration test --- .github/workflows/publish-draft-releases.yml | 2 +- node/src/chain_specs/calamari.rs | 3 +++ node/src/chain_specs/manta.rs | 3 +++ runtime/calamari/src/lib.rs | 16 ++++++++-------- runtime/manta/src/lib.rs | 16 ++++++++-------- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index a943c5eea..d292d7d88 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -650,7 +650,7 @@ jobs: name: run test suites run: | # todo: implement moonbeam-like js test suite triggers here - sleep 210 + sleep 270 - name: stop testnet run: | diff --git a/node/src/chain_specs/calamari.rs b/node/src/chain_specs/calamari.rs index 871cca058..77e7a9421 100644 --- a/node/src/chain_specs/calamari.rs +++ b/node/src/chain_specs/calamari.rs @@ -202,6 +202,9 @@ fn calamari_dev_genesis( technical_membership: Default::default(), aura_ext: Default::default(), parachain_system: Default::default(), + xcm_pallet: calamari_runtime::XcmPalletConfig { + safe_xcm_version: Some(0), + }, } } diff --git a/node/src/chain_specs/manta.rs b/node/src/chain_specs/manta.rs index ae393ea24..a7288e300 100644 --- a/node/src/chain_specs/manta.rs +++ b/node/src/chain_specs/manta.rs @@ -175,6 +175,9 @@ fn manta_dev_genesis( }, aura_ext: Default::default(), parachain_system: Default::default(), + xcm_pallet: manta_runtime::XcmPalletConfig { + safe_xcm_version: Some(0), + }, } } diff --git a/runtime/calamari/src/lib.rs b/runtime/calamari/src/lib.rs index ebb424347..e7a2b9f11 100644 --- a/runtime/calamari/src/lib.rs +++ b/runtime/calamari/src/lib.rs @@ -623,7 +623,7 @@ pub type Barrier = ( // Parent and its exec plurality get free execution AllowUnpaidExecutionFrom, // Expected responses are OK. - AllowKnownQueryResponses, + AllowKnownQueryResponses, // Subscriptions for version tracking are OK. AllowSubscriptionsFrom, ); @@ -641,10 +641,10 @@ impl Config for XcmConfig { type Barrier = Barrier; type Weigher = FixedWeightBounds; type Trader = UsingComponents, KsmLocation, AccountId, Balances, ()>; - type ResponseHandler = PolkadotXcm; // Don't handle responses for now. - type AssetTrap = PolkadotXcm; - type AssetClaims = PolkadotXcm; - type SubscriptionService = PolkadotXcm; + type ResponseHandler = XcmPallet; // Don't handle responses for now. + type AssetTrap = XcmPallet; + type AssetClaims = XcmPallet; + type SubscriptionService = XcmPallet; } /// No one is allowed to dispatch XCM sends/executions. @@ -654,7 +654,7 @@ pub type LocalOriginToLocation = (); /// queues. pub type XcmRouter = ( // Two routers - use UMP to communicate with the relay chain: - cumulus_primitives_utility::ParentAsUmp, + cumulus_primitives_utility::ParentAsUmp, // ..and XCMP to communicate with the sibling chains. XcmpQueue, ); @@ -688,7 +688,7 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type Event = Event; type XcmExecutor = XcmExecutor; type ChannelInfo = ParachainSystem; - type VersionWrapper = PolkadotXcm; + type VersionWrapper = XcmPallet; } impl cumulus_pallet_dmp_queue::Config for Runtime { @@ -816,7 +816,7 @@ construct_runtime!( // XCM helpers. XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event} = 30, - PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 31, + XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 31, CumulusXcm: cumulus_pallet_xcm::{Pallet, Event, Origin} = 32, DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event} = 33, diff --git a/runtime/manta/src/lib.rs b/runtime/manta/src/lib.rs index d775c2be1..6e4eab7ef 100644 --- a/runtime/manta/src/lib.rs +++ b/runtime/manta/src/lib.rs @@ -429,7 +429,7 @@ pub type Barrier = ( // Parent and its exec plurality get free execution AllowUnpaidExecutionFrom, // Expected responses are OK. - AllowKnownQueryResponses, + AllowKnownQueryResponses, // Subscriptions for version tracking are OK. AllowSubscriptionsFrom, ); @@ -447,10 +447,10 @@ impl Config for XcmConfig { type Barrier = Barrier; type Weigher = FixedWeightBounds; type Trader = UsingComponents, DotLocation, AccountId, Balances, ()>; - type ResponseHandler = PolkadotXcm; - type AssetTrap = PolkadotXcm; - type AssetClaims = PolkadotXcm; - type SubscriptionService = PolkadotXcm; + type ResponseHandler = XcmPallet; + type AssetTrap = XcmPallet; + type AssetClaims = XcmPallet; + type SubscriptionService = XcmPallet; } /// No local origins on this chain are allowed to dispatch XCM sends/executions. @@ -460,7 +460,7 @@ pub type LocalOriginToLocation = (); /// queues. pub type XcmRouter = ( // Two routers - use UMP to communicate with the relay chain: - cumulus_primitives_utility::ParentAsUmp, + cumulus_primitives_utility::ParentAsUmp, // ..and XCMP to communicate with the sibling chains. XcmpQueue, ); @@ -492,7 +492,7 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type Event = Event; type XcmExecutor = XcmExecutor; type ChannelInfo = ParachainSystem; - type VersionWrapper = PolkadotXcm; + type VersionWrapper = XcmPallet; } impl cumulus_pallet_dmp_queue::Config for Runtime { @@ -596,7 +596,7 @@ construct_runtime!( // XCM helpers. XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event} = 30, - PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 31, + XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 31, CumulusXcm: cumulus_pallet_xcm::{Pallet, Event, Origin} = 32, DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event} = 33, From 5e2a02c28006416ad903395db2ef06c6bc0e4f20 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Sun, 5 Dec 2021 21:20:24 +0200 Subject: [PATCH 05/26] Revert xcm name change, try re-enabling runtime upgrade test and bump chain spec versions --- .github/workflows/publish-draft-releases.yml | 2 +- node/src/chain_specs/calamari.rs | 2 +- node/src/chain_specs/manta.rs | 2 +- runtime/calamari/src/lib.rs | 18 +++++++++--------- runtime/manta/src/lib.rs | 18 +++++++++--------- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index d292d7d88..b22e9d7c4 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -806,7 +806,7 @@ jobs: - build-runtimes - integration-test # a work around of rococo bug - # - runtime-upgrade-test + - runtime-upgrade-test - docker-image-test outputs: release_url: ${{ steps.create-release.outputs.html_url }} diff --git a/node/src/chain_specs/calamari.rs b/node/src/chain_specs/calamari.rs index 77e7a9421..a48c1e645 100644 --- a/node/src/chain_specs/calamari.rs +++ b/node/src/chain_specs/calamari.rs @@ -202,7 +202,7 @@ fn calamari_dev_genesis( technical_membership: Default::default(), aura_ext: Default::default(), parachain_system: Default::default(), - xcm_pallet: calamari_runtime::XcmPalletConfig { + polkadot_xcm: calamari_runtime::PolkadotXcmConfig { safe_xcm_version: Some(0), }, } diff --git a/node/src/chain_specs/manta.rs b/node/src/chain_specs/manta.rs index a7288e300..0e977c413 100644 --- a/node/src/chain_specs/manta.rs +++ b/node/src/chain_specs/manta.rs @@ -175,7 +175,7 @@ fn manta_dev_genesis( }, aura_ext: Default::default(), parachain_system: Default::default(), - xcm_pallet: manta_runtime::XcmPalletConfig { + polkadot_xcm: manta_runtime::PolkadotXcmConfig { safe_xcm_version: Some(0), }, } diff --git a/runtime/calamari/src/lib.rs b/runtime/calamari/src/lib.rs index e7a2b9f11..49a247531 100644 --- a/runtime/calamari/src/lib.rs +++ b/runtime/calamari/src/lib.rs @@ -107,7 +107,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("calamari"), impl_name: create_runtime_str!("calamari"), authoring_version: 1, - spec_version: 3101, + spec_version: 3102, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 2, @@ -623,7 +623,7 @@ pub type Barrier = ( // Parent and its exec plurality get free execution AllowUnpaidExecutionFrom, // Expected responses are OK. - AllowKnownQueryResponses, + AllowKnownQueryResponses, // Subscriptions for version tracking are OK. AllowSubscriptionsFrom, ); @@ -641,10 +641,10 @@ impl Config for XcmConfig { type Barrier = Barrier; type Weigher = FixedWeightBounds; type Trader = UsingComponents, KsmLocation, AccountId, Balances, ()>; - type ResponseHandler = XcmPallet; // Don't handle responses for now. - type AssetTrap = XcmPallet; - type AssetClaims = XcmPallet; - type SubscriptionService = XcmPallet; + type ResponseHandler = PolkadotXcm; // Don't handle responses for now. + type AssetTrap = PolkadotXcm; + type AssetClaims = PolkadotXcm; + type SubscriptionService = PolkadotXcm; } /// No one is allowed to dispatch XCM sends/executions. @@ -654,7 +654,7 @@ pub type LocalOriginToLocation = (); /// queues. pub type XcmRouter = ( // Two routers - use UMP to communicate with the relay chain: - cumulus_primitives_utility::ParentAsUmp, + cumulus_primitives_utility::ParentAsUmp, // ..and XCMP to communicate with the sibling chains. XcmpQueue, ); @@ -688,7 +688,7 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type Event = Event; type XcmExecutor = XcmExecutor; type ChannelInfo = ParachainSystem; - type VersionWrapper = XcmPallet; + type VersionWrapper = PolkadotXcm; } impl cumulus_pallet_dmp_queue::Config for Runtime { @@ -816,7 +816,7 @@ construct_runtime!( // XCM helpers. XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event} = 30, - XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 31, + PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 31, CumulusXcm: cumulus_pallet_xcm::{Pallet, Event, Origin} = 32, DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event} = 33, diff --git a/runtime/manta/src/lib.rs b/runtime/manta/src/lib.rs index 6e4eab7ef..f7bf6bc96 100644 --- a/runtime/manta/src/lib.rs +++ b/runtime/manta/src/lib.rs @@ -106,7 +106,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("manta"), impl_name: create_runtime_str!("manta"), authoring_version: 1, - spec_version: 3101, + spec_version: 3102, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, @@ -429,7 +429,7 @@ pub type Barrier = ( // Parent and its exec plurality get free execution AllowUnpaidExecutionFrom, // Expected responses are OK. - AllowKnownQueryResponses, + AllowKnownQueryResponses, // Subscriptions for version tracking are OK. AllowSubscriptionsFrom, ); @@ -447,10 +447,10 @@ impl Config for XcmConfig { type Barrier = Barrier; type Weigher = FixedWeightBounds; type Trader = UsingComponents, DotLocation, AccountId, Balances, ()>; - type ResponseHandler = XcmPallet; - type AssetTrap = XcmPallet; - type AssetClaims = XcmPallet; - type SubscriptionService = XcmPallet; + type ResponseHandler = PolkadotXcm; + type AssetTrap = PolkadotXcm; + type AssetClaims = PolkadotXcm; + type SubscriptionService = PolkadotXcm; } /// No local origins on this chain are allowed to dispatch XCM sends/executions. @@ -460,7 +460,7 @@ pub type LocalOriginToLocation = (); /// queues. pub type XcmRouter = ( // Two routers - use UMP to communicate with the relay chain: - cumulus_primitives_utility::ParentAsUmp, + cumulus_primitives_utility::ParentAsUmp, // ..and XCMP to communicate with the sibling chains. XcmpQueue, ); @@ -492,7 +492,7 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type Event = Event; type XcmExecutor = XcmExecutor; type ChannelInfo = ParachainSystem; - type VersionWrapper = XcmPallet; + type VersionWrapper = PolkadotXcm; } impl cumulus_pallet_dmp_queue::Config for Runtime { @@ -596,7 +596,7 @@ construct_runtime!( // XCM helpers. XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event} = 30, - XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 31, + PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 31, CumulusXcm: cumulus_pallet_xcm::{Pallet, Event, Origin} = 32, DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event} = 33, From 5a5699a7ce4dfd1f8c507fa578ccf31096630428 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Sun, 5 Dec 2021 21:44:34 +0200 Subject: [PATCH 06/26] Disable runtime upgrade test again --- .github/workflows/publish-draft-releases.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index b22e9d7c4..0cf5fb442 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -650,7 +650,7 @@ jobs: name: run test suites run: | # todo: implement moonbeam-like js test suite triggers here - sleep 270 + sleep 300 - name: stop testnet run: | @@ -806,7 +806,7 @@ jobs: - build-runtimes - integration-test # a work around of rococo bug - - runtime-upgrade-test + # - runtime-upgrade-test - docker-image-test outputs: release_url: ${{ steps.create-release.outputs.html_url }} From 391cf68ed82ee7ef954fbb59ed094a18e8007956 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Sun, 5 Dec 2021 22:00:43 +0200 Subject: [PATCH 07/26] Use 0.9.13 polkadot binary in CI --- .github/workflows/publish-draft-releases.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index 0cf5fb442..78b38888f 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -324,7 +324,7 @@ jobs: if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} name: fetch and chmod polkadot run: | - curl -L -o $HOME/.local/bin/polkadot https://github.com/paritytech/polkadot/releases/download/v0.9.12/polkadot + curl -L -o $HOME/.local/bin/polkadot https://github.com/paritytech/polkadot/releases/download/v0.9.13/polkadot chmod +x $HOME/.local/bin/polkadot ls -ahl $HOME/.local/bin/ - @@ -528,7 +528,7 @@ jobs: - name: fetch and chmod polkadot run: | - curl -L -o $HOME/.local/bin/polkadot https://github.com/paritytech/polkadot/releases/download/v0.9.12/polkadot + curl -L -o $HOME/.local/bin/polkadot https://github.com/paritytech/polkadot/releases/download/v0.9.13/polkadot chmod +x $HOME/.local/bin/polkadot ls -ahl $HOME/.local/bin/ - From c65d7a17b97a2e445387cbf4dcf0460d955c130e Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 6 Dec 2021 16:47:08 +0200 Subject: [PATCH 08/26] Revert spec version bump for now. Fix frame-weight-template.hbs. Add comments --- .github/resources/frame-weight-template.hbs | 70 ++++++++++----------- Cargo.lock | 24 +++---- runtime/calamari/src/lib.rs | 5 +- runtime/manta/src/lib.rs | 5 +- 4 files changed, 55 insertions(+), 49 deletions(-) diff --git a/.github/resources/frame-weight-template.hbs b/.github/resources/frame-weight-template.hbs index 104c2324d..df3f04601 100644 --- a/.github/resources/frame-weight-template.hbs +++ b/.github/resources/frame-weight-template.hbs @@ -21,7 +21,7 @@ //! EXECUTION: {{cmd.execution}}, WASM-EXECUTION: {{cmd.wasm_execution}}, CHAIN: {{cmd.chain}}, DB CACHE: {{cmd.db_cache}} // Executed Command: -{{#each args as |arg|~}} +{{#each args as |arg|}} // {{arg}} {{/each}} @@ -34,80 +34,80 @@ use sp_std::marker::PhantomData; /// Weight functions needed for {{pallet}}. pub trait WeightInfo { - {{~#each benchmarks as |benchmark|}} + {{#each benchmarks as |benchmark|}} fn {{benchmark.name~}} ( {{~#each benchmark.components as |c| ~}} {{c.name}}: u32, {{/each~}} ) -> Weight; - {{~/each}} + {{/each}} } /// Weights for {{pallet}} using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); -{{~#if (eq pallet "frame_system")}} +{{#if (eq pallet "frame_system")}} impl WeightInfo for SubstrateWeight { -{{~else}} -impl {{pallet}}::WeightInfo for SubstrateWeight { -{{~/if}} - {{~#each benchmarks as |benchmark|}} - {{~#each benchmark.comments as |comment|}} +{{else}} +impl WeightInfo for SubstrateWeight { +{{/if}} + {{#each benchmarks as |benchmark|}} + {{#each benchmark.comments as |comment|}} // {{comment}} - {{~/each}} + {{/each}} fn {{benchmark.name~}} ( {{~#each benchmark.components as |c| ~}} {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} ) -> Weight { ({{underscore benchmark.base_weight}} as Weight) - {{~#each benchmark.component_weight as |cw|}} + {{#each benchmark.component_weight as |cw|}} // Standard Error: {{underscore cw.error}} .saturating_add(({{underscore cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight)) - {{~/each}} - {{~#if (ne benchmark.base_reads "0")}} + {{/each}} + {{#if (ne benchmark.base_reads "0")}} .saturating_add(T::DbWeight::get().reads({{benchmark.base_reads}} as Weight)) - {{~/if}} - {{~#each benchmark.component_reads as |cr|}} + {{/if}} + {{#each benchmark.component_reads as |cr|}} .saturating_add(T::DbWeight::get().reads(({{cr.slope}} as Weight).saturating_mul({{cr.name}} as Weight))) - {{~/each}} - {{~#if (ne benchmark.base_writes "0")}} + {{/each}} + {{#if (ne benchmark.base_writes "0")}} .saturating_add(T::DbWeight::get().writes({{benchmark.base_writes}} as Weight)) - {{~/if}} - {{~#each benchmark.component_writes as |cw|}} + {{/if}} + {{#each benchmark.component_writes as |cw|}} .saturating_add(T::DbWeight::get().writes(({{cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight))) - {{~/each}} + {{/each}} } - {{~/each}} + {{/each}} } // For backwards compatibility and tests impl WeightInfo for () { - {{~#each benchmarks as |benchmark|}} - {{~#each benchmark.comments as |comment|}} + {{#each benchmarks as |benchmark|}} + {{#each benchmark.comments as |comment|}} // {{comment}} - {{~/each}} + {{/each}} fn {{benchmark.name~}} ( {{~#each benchmark.components as |c| ~}} {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} ) -> Weight { ({{underscore benchmark.base_weight}} as Weight) - {{~#each benchmark.component_weight as |cw|}} + {{#each benchmark.component_weight as |cw|}} // Standard Error: {{underscore cw.error}} .saturating_add(({{underscore cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight)) - {{~/each}} - {{~#if (ne benchmark.base_reads "0")}} + {{/each}} + {{#if (ne benchmark.base_reads "0")}} .saturating_add(RocksDbWeight::get().reads({{benchmark.base_reads}} as Weight)) - {{~/if}} - {{~#each benchmark.component_reads as |cr|}} + {{/if}} + {{#each benchmark.component_reads as |cr|}} .saturating_add(RocksDbWeight::get().reads(({{cr.slope}} as Weight).saturating_mul({{cr.name}} as Weight))) - {{~/each}} - {{~#if (ne benchmark.base_writes "0")}} + {{/each}} + {{#if (ne benchmark.base_writes "0")}} .saturating_add(RocksDbWeight::get().writes({{benchmark.base_writes}} as Weight)) - {{~/if}} - {{~#each benchmark.component_writes as |cw|}} + {{/if}} + {{#each benchmark.component_writes as |cw|}} .saturating_add(RocksDbWeight::get().writes(({{cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight))) - {{~/each}} + {{/each}} } - {{~/each}} + {{/each}} } diff --git a/Cargo.lock b/Cargo.lock index f846c49f3..64d921aa9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2750,9 +2750,9 @@ dependencies = [ [[package]] name = "gloo-timers" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f" +checksum = "6f16c88aa13d2656ef20d1c042086b8767bbe2bdb62526894275a1b062161b2e" dependencies = [ "futures-channel", "futures-core", @@ -2782,9 +2782,9 @@ dependencies = [ [[package]] name = "handlebars" -version = "4.1.5" +version = "4.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad84da8f63da982543fc85fcabaee2ad1fdd809d99d64a48887e2e942ddfe46" +checksum = "167fa173496c9eadd8749cca6f8339ac88e248f3ad2442791d0b743318a94fc0" dependencies = [ "log", "pest", @@ -3579,9 +3579,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.108" +version = "0.2.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119" +checksum = "f98a04dce437184842841303488f70d0188c5f51437d2a834dc097eafa909a01" [[package]] name = "libloading" @@ -4469,9 +4469,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ "autocfg", ] @@ -7333,9 +7333,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" +checksum = "fb37d2df5df740e582f28f8560cf425f52bb267d872fe58358eadb554909f07a" dependencies = [ "unicode-xid", ] @@ -10006,9 +10006,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "ss58-registry" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78abb01d308934b82e34e9cf1f45846d31539246501745b129539176f4f3368d" +checksum = "827441708a5dd8ca54e6b79690dc06d1bede78e61961e667f683c23c16ef964c" dependencies = [ "Inflector", "proc-macro2", diff --git a/runtime/calamari/src/lib.rs b/runtime/calamari/src/lib.rs index 49a247531..cb63cc86c 100644 --- a/runtime/calamari/src/lib.rs +++ b/runtime/calamari/src/lib.rs @@ -107,7 +107,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("calamari"), impl_name: create_runtime_str!("calamari"), authoring_version: 1, - spec_version: 3102, + spec_version: 3101, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 2, @@ -623,8 +623,11 @@ pub type Barrier = ( // Parent and its exec plurality get free execution AllowUnpaidExecutionFrom, // Expected responses are OK. + // Allows `Pending` or `VersionNotifier` query responses. AllowKnownQueryResponses, // Subscriptions for version tracking are OK. + // Allows execution of `SubscribeVersion` or `UnsubscribeVersion` instruction, + // from parent or sibling chains. AllowSubscriptionsFrom, ); diff --git a/runtime/manta/src/lib.rs b/runtime/manta/src/lib.rs index f7bf6bc96..51f7b947e 100644 --- a/runtime/manta/src/lib.rs +++ b/runtime/manta/src/lib.rs @@ -106,7 +106,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("manta"), impl_name: create_runtime_str!("manta"), authoring_version: 1, - spec_version: 3102, + spec_version: 3101, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, @@ -429,8 +429,11 @@ pub type Barrier = ( // Parent and its exec plurality get free execution AllowUnpaidExecutionFrom, // Expected responses are OK. + // Allows `Pending` or `VersionNotifier` query responses. AllowKnownQueryResponses, // Subscriptions for version tracking are OK. + // Allows execution of `SubscribeVersion` or `UnsubscribeVersion` instruction, + // from parent or sibling chains. AllowSubscriptionsFrom, ); From 53709703416d0b466d5a792046f58569837c3dc7 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 6 Dec 2021 19:26:34 +0200 Subject: [PATCH 09/26] Updatge weights for new runtime --- .github/resources/frame-weight-template.hbs | 2 +- .../generate_calamari_weights_files.yml | 10 +- pallets/vesting/src/lib.rs | 2 +- runtime/calamari/src/lib.rs | 2 +- .../calamari/src/weights/calamari_vesting.rs | 112 ++++++++ runtime/calamari/src/weights/frame_system.rs | 35 ++- runtime/calamari/src/weights/mod.rs | 1 + .../calamari/src/weights/pallet_balances.rs | 31 ++- .../calamari/src/weights/pallet_collective.rs | 151 ++++++----- .../calamari/src/weights/pallet_democracy.rs | 247 +++++++++--------- .../calamari/src/weights/pallet_membership.rs | 75 +++--- .../calamari/src/weights/pallet_multisig.rs | 111 ++++---- .../calamari/src/weights/pallet_scheduler.rs | 47 ++-- .../calamari/src/weights/pallet_session.rs | 11 +- .../calamari/src/weights/pallet_tx_pause.rs | 11 +- .../calamari/src/weights/pallet_utility.rs | 37 +-- runtime/manta/src/lib.rs | 2 +- runtime/manta/src/weights/frame_system.rs | 35 ++- runtime/manta/src/weights/mod.rs | 1 + runtime/manta/src/weights/pallet_balances.rs | 31 ++- runtime/manta/src/weights/pallet_multisig.rs | 119 +++++---- runtime/manta/src/weights/pallet_scheduler.rs | 129 +++++++++ runtime/manta/src/weights/pallet_session.rs | 11 +- runtime/manta/src/weights/pallet_tx_pause.rs | 11 +- 24 files changed, 730 insertions(+), 494 deletions(-) create mode 100644 runtime/calamari/src/weights/calamari_vesting.rs create mode 100644 runtime/manta/src/weights/pallet_scheduler.rs diff --git a/.github/resources/frame-weight-template.hbs b/.github/resources/frame-weight-template.hbs index df3f04601..938a28d4c 100644 --- a/.github/resources/frame-weight-template.hbs +++ b/.github/resources/frame-weight-template.hbs @@ -46,7 +46,7 @@ pub trait WeightInfo { /// Weights for {{pallet}} using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); {{#if (eq pallet "frame_system")}} -impl WeightInfo for SubstrateWeight { +impl {{pallet}}:: WeightInfo for SubstrateWeight { {{else}} impl WeightInfo for SubstrateWeight { {{/if}} diff --git a/.github/workflows/generate_calamari_weights_files.yml b/.github/workflows/generate_calamari_weights_files.yml index 84ea76016..dda07116f 100644 --- a/.github/workflows/generate_calamari_weights_files.yml +++ b/.github/workflows/generate_calamari_weights_files.yml @@ -2,7 +2,7 @@ # yamllint disable rule:line-length -name: Benchmark Clamari Runtime & Generate Weights Files +name: Benchmark Calamari Runtime & Generate Weights Files # yamllint disable-line rule:truthy on: @@ -192,6 +192,14 @@ jobs: id: pallet_utility name: pallet_utility iterations: 20 + - + extrinsic: + id: '*' + name: pallet_timestamp + pallet: + id: pallet_timestamp + name: pallet_timestamp + iterations: 20 steps: - uses: actions/download-artifact@v2 diff --git a/pallets/vesting/src/lib.rs b/pallets/vesting/src/lib.rs index 717100ec3..1c2f8a221 100644 --- a/pallets/vesting/src/lib.rs +++ b/pallets/vesting/src/lib.rs @@ -24,7 +24,7 @@ mod mock; mod tests; pub mod weights; -use crate::weights::WeightInfo; +pub use crate::weights::WeightInfo; use core::convert::TryFrom; use frame_support::{ ensure, diff --git a/runtime/calamari/src/lib.rs b/runtime/calamari/src/lib.rs index cb63cc86c..be4a5813a 100644 --- a/runtime/calamari/src/lib.rs +++ b/runtime/calamari/src/lib.rs @@ -777,7 +777,7 @@ impl calamari_vesting::Config for Runtime { type Timestamp = Timestamp; type MinVestedTransfer = MinVestedTransfer; type MaxScheduleLength = MaxScheduleLength; - type WeightInfo = calamari_vesting::weights::SubstrateWeight; + type WeightInfo = weights::calamari_vesting::SubstrateWeight; } // Create the runtime by composing the FRAME pallets that were previously configured. diff --git a/runtime/calamari/src/weights/calamari_vesting.rs b/runtime/calamari/src/weights/calamari_vesting.rs new file mode 100644 index 000000000..0b85c9145 --- /dev/null +++ b/runtime/calamari/src/weights/calamari_vesting.rs @@ -0,0 +1,112 @@ +// Copyright 2020-2021 Manta Network. +// This file is part of Manta. + +// Manta is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Manta is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Manta. If not, see . + +//! Autogenerated weights for calamari_vesting +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 + +// Executed Command: +// manta +// benchmark +// --chain=calamari-dev +// --pallet=calamari_vesting +// --extrinsic=* +// --execution=Wasm +// --wasm-execution=Compiled +// --heap-pages=4096 +// --repeat=20 +// --steps=50 +// --template=.github/resources/frame-weight-template.hbs +// --output=calamari_vesting.rs + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; + +/// Weight functions needed for calamari_vesting. +pub trait WeightInfo { + fn update_vesting_schedule() -> Weight; + fn vest() -> Weight; + fn vested_transfer() -> Weight; +} + +/// Weights for calamari_vesting using the Substrate node and recommended hardware. +pub struct SubstrateWeight(PhantomData); +impl calamari_vesting::WeightInfo for SubstrateWeight { + // Storage: CalamariVesting VestingSchedule (r:1 w:1) + // Storage: Timestamp Now (r:1 w:0) + fn update_vesting_schedule() -> Weight { + (44_811_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Timestamp Now (r:1 w:0) + // Storage: CalamariVesting VestingSchedule (r:1 w:0) + // Storage: CalamariVesting VestingBalances (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + fn vest() -> Weight { + (101_062_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + // Storage: CalamariVesting VestingBalances (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Timestamp Now (r:1 w:0) + // Storage: CalamariVesting VestingSchedule (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + fn vested_transfer() -> Weight { + (192_684_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } +} + +// For backwards compatibility and tests +impl WeightInfo for () { + // Storage: CalamariVesting VestingSchedule (r:1 w:1) + // Storage: Timestamp Now (r:1 w:0) + fn update_vesting_schedule() -> Weight { + (44_811_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(2 as Weight)) + .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + } + // Storage: Timestamp Now (r:1 w:0) + // Storage: CalamariVesting VestingSchedule (r:1 w:0) + // Storage: CalamariVesting VestingBalances (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + fn vest() -> Weight { + (101_062_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + // Storage: CalamariVesting VestingBalances (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Timestamp Now (r:1 w:0) + // Storage: CalamariVesting VestingSchedule (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + fn vested_transfer() -> Weight { + (192_684_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } +} diff --git a/runtime/calamari/src/weights/frame_system.rs b/runtime/calamari/src/weights/frame_system.rs index fa860e875..69cefc395 100644 --- a/runtime/calamari/src/weights/frame_system.rs +++ b/runtime/calamari/src/weights/frame_system.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for frame_system //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-16, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=frame_system.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -56,20 +55,18 @@ pub trait WeightInfo { /// Weights for frame_system using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl frame_system::WeightInfo for SubstrateWeight { - fn remark(b: u32, ) -> Weight { + fn remark(_b: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) } fn remark_with_event(b: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) } // Storage: System Digest (r:1 w:1) // Storage: unknown [0x3a686561707061676573] (r:0 w:1) fn set_heap_pages() -> Weight { - (10_640_000 as Weight) + (9_811_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -83,42 +80,40 @@ impl frame_system::WeightInfo for SubstrateWeight { // Storage: Skipped Metadata (r:0 w:0) fn set_storage(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((1_657_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 1_000 + .saturating_add((1_595_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 1_000 - .saturating_add((1_130_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((1_088_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_prefix(p: u32, ) -> Weight { (0 as Weight) // Standard Error: 1_000 - .saturating_add((1_656_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((1_591_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) } } // For backwards compatibility and tests impl WeightInfo for () { - fn remark(b: u32, ) -> Weight { + fn remark(_b: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) } fn remark_with_event(b: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) } // Storage: System Digest (r:1 w:1) // Storage: unknown [0x3a686561707061676573] (r:0 w:1) fn set_heap_pages() -> Weight { - (10_640_000 as Weight) + (9_811_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } @@ -132,22 +127,22 @@ impl WeightInfo for () { // Storage: Skipped Metadata (r:0 w:0) fn set_storage(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((1_657_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 1_000 + .saturating_add((1_595_000 as Weight).saturating_mul(i as Weight)) .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 1_000 - .saturating_add((1_130_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((1_088_000 as Weight).saturating_mul(i as Weight)) .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_prefix(p: u32, ) -> Weight { (0 as Weight) // Standard Error: 1_000 - .saturating_add((1_656_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((1_591_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) } } diff --git a/runtime/calamari/src/weights/mod.rs b/runtime/calamari/src/weights/mod.rs index 277c49aba..3c94479e2 100644 --- a/runtime/calamari/src/weights/mod.rs +++ b/runtime/calamari/src/weights/mod.rs @@ -16,6 +16,7 @@ //! A list of the different weight modules for our runtime. +pub mod calamari_vesting; pub mod frame_system; pub mod pallet_balances; pub mod pallet_collective; diff --git a/runtime/calamari/src/weights/pallet_balances.rs b/runtime/calamari/src/weights/pallet_balances.rs index aa6fb48d9..27b59af59 100644 --- a/runtime/calamari/src/weights/pallet_balances.rs +++ b/runtime/calamari/src/weights/pallet_balances.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_balances //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-05, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_balances.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -58,43 +57,43 @@ pub struct SubstrateWeight(PhantomData); impl pallet_balances::WeightInfo for SubstrateWeight { // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (156_626_000 as Weight) + (140_113_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (112_885_000 as Weight) + (102_562_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_creating() -> Weight { - (58_113_000 as Weight) + (54_011_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_killing() -> Weight { - (72_283_000 as Weight) + (66_051_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) fn force_transfer() -> Weight { - (155_696_000 as Weight) + (137_563_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_all() -> Weight { - (142_715_000 as Weight) + (127_533_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn force_unreserve() -> Weight { - (54_482_000 as Weight) + (49_861_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -104,43 +103,43 @@ impl pallet_balances::WeightInfo for SubstrateWeight impl WeightInfo for () { // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (156_626_000 as Weight) + (140_113_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (112_885_000 as Weight) + (102_562_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_creating() -> Weight { - (58_113_000 as Weight) + (54_011_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_killing() -> Weight { - (72_283_000 as Weight) + (66_051_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) fn force_transfer() -> Weight { - (155_696_000 as Weight) + (137_563_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_all() -> Weight { - (142_715_000 as Weight) + (127_533_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn force_unreserve() -> Weight { - (54_482_000 as Weight) + (49_861_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } diff --git a/runtime/calamari/src/weights/pallet_collective.rs b/runtime/calamari/src/weights/pallet_collective.rs index 040181198..3bff7c3fa 100644 --- a/runtime/calamari/src/weights/pallet_collective.rs +++ b/runtime/calamari/src/weights/pallet_collective.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_collective //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-05, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_collective.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -65,12 +64,12 @@ impl pallet_collective::WeightInfo for SubstrateWeight< // Storage: Council Prime (r:0 w:1) fn set_members(m: u32, n: u32, p: u32, ) -> Weight { (0 as Weight) - // Standard Error: 9_000 - .saturating_add((26_950_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 9_000 - .saturating_add((262_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 9_000 - .saturating_add((37_492_000 as Weight).saturating_mul(p as Weight)) + // Standard Error: 12_000 + .saturating_add((27_010_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 12_000 + .saturating_add((192_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 12_000 + .saturating_add((37_147_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(p as Weight))) .saturating_add(T::DbWeight::get().writes(2 as Weight)) @@ -78,21 +77,21 @@ impl pallet_collective::WeightInfo for SubstrateWeight< } // Storage: Council Members (r:1 w:0) fn execute(b: u32, m: u32, ) -> Weight { - (42_717_000 as Weight) + (40_323_000 as Weight) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) // Standard Error: 0 - .saturating_add((170_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((157_000 as Weight).saturating_mul(m as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) } // Storage: Council Members (r:1 w:0) // Storage: Council ProposalOf (r:1 w:0) fn propose_execute(b: u32, m: u32, ) -> Weight { - (52_656_000 as Weight) + (48_310_000 as Weight) // Standard Error: 0 .saturating_add((4_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 1_000 - .saturating_add((327_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 0 + .saturating_add((302_000 as Weight).saturating_mul(m as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) } // Storage: Council Members (r:1 w:0) @@ -101,22 +100,22 @@ impl pallet_collective::WeightInfo for SubstrateWeight< // Storage: Council ProposalCount (r:1 w:1) // Storage: Council Voting (r:0 w:1) fn propose_proposed(b: u32, m: u32, p: u32, ) -> Weight { - (76_178_000 as Weight) + (70_278_000 as Weight) // Standard Error: 0 - .saturating_add((13_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 2_000 - .saturating_add((206_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 2_000 - .saturating_add((738_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((12_000 as Weight).saturating_mul(b as Weight)) + // Standard Error: 3_000 + .saturating_add((187_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 3_000 + .saturating_add((676_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Council Members (r:1 w:0) // Storage: Council Voting (r:1 w:1) fn vote(m: u32, ) -> Weight { - (68_260_000 as Weight) + (65_263_000 as Weight) // Standard Error: 4_000 - .saturating_add((389_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((354_000 as Weight).saturating_mul(m as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -125,11 +124,11 @@ impl pallet_collective::WeightInfo for SubstrateWeight< // Storage: Council Proposals (r:1 w:1) // Storage: Council ProposalOf (r:0 w:1) fn close_early_disapproved(m: u32, p: u32, ) -> Weight { - (84_751_000 as Weight) + (79_766_000 as Weight) // Standard Error: 3_000 - .saturating_add((349_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((308_000 as Weight).saturating_mul(m as Weight)) // Standard Error: 2_000 - .saturating_add((677_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((606_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -138,13 +137,13 @@ impl pallet_collective::WeightInfo for SubstrateWeight< // Storage: Council ProposalOf (r:1 w:1) // Storage: Council Proposals (r:1 w:1) fn close_early_approved(b: u32, m: u32, p: u32, ) -> Weight { - (108_871_000 as Weight) + (100_695_000 as Weight) // Standard Error: 0 - .saturating_add((8_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((9_000 as Weight).saturating_mul(b as Weight)) // Standard Error: 3_000 - .saturating_add((379_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 2_000 - .saturating_add((750_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((326_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 3_000 + .saturating_add((680_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -154,11 +153,11 @@ impl pallet_collective::WeightInfo for SubstrateWeight< // Storage: Council Proposals (r:1 w:1) // Storage: Council ProposalOf (r:0 w:1) fn close_disapproved(m: u32, p: u32, ) -> Weight { - (96_395_000 as Weight) + (87_240_000 as Weight) // Standard Error: 2_000 - .saturating_add((333_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((325_000 as Weight).saturating_mul(m as Weight)) // Standard Error: 2_000 - .saturating_add((667_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((601_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -168,13 +167,13 @@ impl pallet_collective::WeightInfo for SubstrateWeight< // Storage: Council ProposalOf (r:1 w:1) // Storage: Council Proposals (r:1 w:1) fn close_approved(b: u32, m: u32, p: u32, ) -> Weight { - (116_620_000 as Weight) + (105_639_000 as Weight) // Standard Error: 0 .saturating_add((10_000 as Weight).saturating_mul(b as Weight)) // Standard Error: 3_000 - .saturating_add((374_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 2_000 - .saturating_add((744_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((347_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 3_000 + .saturating_add((690_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -182,9 +181,9 @@ impl pallet_collective::WeightInfo for SubstrateWeight< // Storage: Council Voting (r:0 w:1) // Storage: Council ProposalOf (r:0 w:1) fn disapprove_proposal(p: u32, ) -> Weight { - (51_365_000 as Weight) + (47_483_000 as Weight) // Standard Error: 2_000 - .saturating_add((754_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((686_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -198,12 +197,12 @@ impl WeightInfo for () { // Storage: Council Prime (r:0 w:1) fn set_members(m: u32, n: u32, p: u32, ) -> Weight { (0 as Weight) - // Standard Error: 9_000 - .saturating_add((26_950_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 9_000 - .saturating_add((262_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 9_000 - .saturating_add((37_492_000 as Weight).saturating_mul(p as Weight)) + // Standard Error: 12_000 + .saturating_add((27_010_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 12_000 + .saturating_add((192_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 12_000 + .saturating_add((37_147_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(p as Weight))) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) @@ -211,21 +210,21 @@ impl WeightInfo for () { } // Storage: Council Members (r:1 w:0) fn execute(b: u32, m: u32, ) -> Weight { - (42_717_000 as Weight) + (40_323_000 as Weight) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) // Standard Error: 0 - .saturating_add((170_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((157_000 as Weight).saturating_mul(m as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) } // Storage: Council Members (r:1 w:0) // Storage: Council ProposalOf (r:1 w:0) fn propose_execute(b: u32, m: u32, ) -> Weight { - (52_656_000 as Weight) + (48_310_000 as Weight) // Standard Error: 0 .saturating_add((4_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 1_000 - .saturating_add((327_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 0 + .saturating_add((302_000 as Weight).saturating_mul(m as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) } // Storage: Council Members (r:1 w:0) @@ -234,22 +233,22 @@ impl WeightInfo for () { // Storage: Council ProposalCount (r:1 w:1) // Storage: Council Voting (r:0 w:1) fn propose_proposed(b: u32, m: u32, p: u32, ) -> Weight { - (76_178_000 as Weight) + (70_278_000 as Weight) // Standard Error: 0 - .saturating_add((13_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 2_000 - .saturating_add((206_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 2_000 - .saturating_add((738_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((12_000 as Weight).saturating_mul(b as Weight)) + // Standard Error: 3_000 + .saturating_add((187_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 3_000 + .saturating_add((676_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().writes(4 as Weight)) } // Storage: Council Members (r:1 w:0) // Storage: Council Voting (r:1 w:1) fn vote(m: u32, ) -> Weight { - (68_260_000 as Weight) + (65_263_000 as Weight) // Standard Error: 4_000 - .saturating_add((389_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((354_000 as Weight).saturating_mul(m as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } @@ -258,11 +257,11 @@ impl WeightInfo for () { // Storage: Council Proposals (r:1 w:1) // Storage: Council ProposalOf (r:0 w:1) fn close_early_disapproved(m: u32, p: u32, ) -> Weight { - (84_751_000 as Weight) + (79_766_000 as Weight) // Standard Error: 3_000 - .saturating_add((349_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((308_000 as Weight).saturating_mul(m as Weight)) // Standard Error: 2_000 - .saturating_add((677_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((606_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -271,13 +270,13 @@ impl WeightInfo for () { // Storage: Council ProposalOf (r:1 w:1) // Storage: Council Proposals (r:1 w:1) fn close_early_approved(b: u32, m: u32, p: u32, ) -> Weight { - (108_871_000 as Weight) + (100_695_000 as Weight) // Standard Error: 0 - .saturating_add((8_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((9_000 as Weight).saturating_mul(b as Weight)) // Standard Error: 3_000 - .saturating_add((379_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 2_000 - .saturating_add((750_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((326_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 3_000 + .saturating_add((680_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -287,11 +286,11 @@ impl WeightInfo for () { // Storage: Council Proposals (r:1 w:1) // Storage: Council ProposalOf (r:0 w:1) fn close_disapproved(m: u32, p: u32, ) -> Weight { - (96_395_000 as Weight) + (87_240_000 as Weight) // Standard Error: 2_000 - .saturating_add((333_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((325_000 as Weight).saturating_mul(m as Weight)) // Standard Error: 2_000 - .saturating_add((667_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((601_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -301,13 +300,13 @@ impl WeightInfo for () { // Storage: Council ProposalOf (r:1 w:1) // Storage: Council Proposals (r:1 w:1) fn close_approved(b: u32, m: u32, p: u32, ) -> Weight { - (116_620_000 as Weight) + (105_639_000 as Weight) // Standard Error: 0 .saturating_add((10_000 as Weight).saturating_mul(b as Weight)) // Standard Error: 3_000 - .saturating_add((374_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 2_000 - .saturating_add((744_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((347_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 3_000 + .saturating_add((690_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().reads(5 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -315,9 +314,9 @@ impl WeightInfo for () { // Storage: Council Voting (r:0 w:1) // Storage: Council ProposalOf (r:0 w:1) fn disapprove_proposal(p: u32, ) -> Weight { - (51_365_000 as Weight) + (47_483_000 as Weight) // Standard Error: 2_000 - .saturating_add((754_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((686_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } diff --git a/runtime/calamari/src/weights/pallet_democracy.rs b/runtime/calamari/src/weights/pallet_democracy.rs index ffe95989f..4c4f727b3 100644 --- a/runtime/calamari/src/weights/pallet_democracy.rs +++ b/runtime/calamari/src/weights/pallet_democracy.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_democracy //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-05, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_democracy.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -80,15 +79,15 @@ impl pallet_democracy::WeightInfo for SubstrateWeight Weight { - (127_534_000 as Weight) + (116_784_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Democracy DepositOf (r:1 w:1) fn second(s: u32, ) -> Weight { - (78_475_000 as Weight) - // Standard Error: 1_000 - .saturating_add((320_000 as Weight).saturating_mul(s as Weight)) + (70_510_000 as Weight) + // Standard Error: 2_000 + .saturating_add((283_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -96,9 +95,9 @@ impl pallet_democracy::WeightInfo for SubstrateWeight Weight { - (87_029_000 as Weight) - // Standard Error: 6_000 - .saturating_add((354_000 as Weight).saturating_mul(r as Weight)) + (78_290_000 as Weight) + // Standard Error: 3_000 + .saturating_add((284_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -106,16 +105,16 @@ impl pallet_democracy::WeightInfo for SubstrateWeight Weight { - (87_405_000 as Weight) - // Standard Error: 8_000 - .saturating_add((341_000 as Weight).saturating_mul(r as Weight)) + (78_340_000 as Weight) + // Standard Error: 2_000 + .saturating_add((275_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Democracy ReferendumInfoOf (r:1 w:1) // Storage: Democracy Cancellations (r:1 w:1) fn emergency_cancel() -> Weight { - (54_048_000 as Weight) + (48_821_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -126,45 +125,45 @@ impl pallet_democracy::WeightInfo for SubstrateWeight Weight { - (148_114_000 as Weight) - // Standard Error: 8_000 - .saturating_add((918_000 as Weight).saturating_mul(p as Weight)) + (132_817_000 as Weight) + // Standard Error: 7_000 + .saturating_add((806_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(6 as Weight)) } // Storage: Democracy NextExternal (r:1 w:1) // Storage: Democracy Blacklist (r:1 w:0) fn external_propose(v: u32, ) -> Weight { - (27_909_000 as Weight) - // Standard Error: 1_000 - .saturating_add((174_000 as Weight).saturating_mul(v as Weight)) + (24_837_000 as Weight) + // Standard Error: 0 + .saturating_add((157_000 as Weight).saturating_mul(v as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Democracy NextExternal (r:0 w:1) fn external_propose_majority() -> Weight { - (6_210_000 as Weight) + (5_190_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Democracy NextExternal (r:0 w:1) fn external_propose_default() -> Weight { - (6_660_000 as Weight) + (5_370_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Democracy NextExternal (r:1 w:1) // Storage: Democracy ReferendumCount (r:1 w:1) // Storage: Democracy ReferendumInfoOf (r:0 w:1) fn fast_track() -> Weight { - (58_788_000 as Weight) + (51_252_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Democracy NextExternal (r:1 w:1) // Storage: Democracy Blacklist (r:1 w:1) fn veto_external(v: u32, ) -> Weight { - (58_543_000 as Weight) + (51_918_000 as Weight) // Standard Error: 1_000 - .saturating_add((218_000 as Weight).saturating_mul(v as Weight)) + .saturating_add((182_000 as Weight).saturating_mul(v as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -172,56 +171,58 @@ impl pallet_democracy::WeightInfo for SubstrateWeight Weight { - (93_557_000 as Weight) - // Standard Error: 3_000 - .saturating_add((852_000 as Weight).saturating_mul(p as Weight)) + (84_294_000 as Weight) + // Standard Error: 4_000 + .saturating_add((761_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Democracy ReferendumInfoOf (r:0 w:1) fn cancel_referendum() -> Weight { - (34_089_000 as Weight) + (31_031_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Scheduler Lookup (r:1 w:1) // Storage: Scheduler Agenda (r:1 w:1) fn cancel_queued(r: u32, ) -> Weight { - (61_686_000 as Weight) - // Standard Error: 33_000 - .saturating_add((3_328_000 as Weight).saturating_mul(r as Weight)) + (54_053_000 as Weight) + // Standard Error: 7_000 + .saturating_add((2_190_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } - // Storage: Democracy LowestUnbaked (r:1 w:0) + // Storage: Democracy LowestUnbaked (r:1 w:1) // Storage: Democracy ReferendumCount (r:1 w:0) // Storage: Democracy ReferendumInfoOf (r:1 w:0) fn on_initialize_base(r: u32, ) -> Weight { - (3_495_000 as Weight) - // Standard Error: 21_000 - .saturating_add((10_997_000 as Weight).saturating_mul(r as Weight)) + (11_642_000 as Weight) + // Standard Error: 10_000 + .saturating_add((10_250_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Democracy LowestUnbaked (r:1 w:0) + // Storage: Democracy LowestUnbaked (r:1 w:1) // Storage: Democracy ReferendumCount (r:1 w:0) // Storage: Democracy LastTabledWasExternal (r:1 w:0) // Storage: Democracy NextExternal (r:1 w:0) // Storage: Democracy PublicProps (r:1 w:0) // Storage: Democracy ReferendumInfoOf (r:1 w:0) fn on_initialize_base_with_launch_period(r: u32, ) -> Weight { - (19_463_000 as Weight) - // Standard Error: 15_000 - .saturating_add((11_028_000 as Weight).saturating_mul(r as Weight)) + (24_894_000 as Weight) + // Standard Error: 9_000 + .saturating_add((10_276_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Democracy VotingOf (r:3 w:3) // Storage: Democracy ReferendumInfoOf (r:1 w:1) // Storage: Balances Locks (r:1 w:1) fn delegate(r: u32, ) -> Weight { - (106_768_000 as Weight) - // Standard Error: 65_000 - .saturating_add((14_766_000 as Weight).saturating_mul(r as Weight)) + (98_072_000 as Weight) + // Standard Error: 10_000 + .saturating_add((13_471_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) .saturating_add(T::DbWeight::get().writes(4 as Weight)) @@ -230,9 +231,9 @@ impl pallet_democracy::WeightInfo for SubstrateWeight Weight { - (41_073_000 as Weight) - // Standard Error: 94_000 - .saturating_add((15_223_000 as Weight).saturating_mul(r as Weight)) + (41_112_000 as Weight) + // Standard Error: 20_000 + .saturating_add((13_636_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) .saturating_add(T::DbWeight::get().writes(2 as Weight)) @@ -240,31 +241,31 @@ impl pallet_democracy::WeightInfo for SubstrateWeight Weight { - (6_610_000 as Weight) + (5_740_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Democracy Preimages (r:1 w:1) fn note_preimage(b: u32, ) -> Weight { - (89_017_000 as Weight) + (78_977_000 as Weight) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Democracy Preimages (r:1 w:1) fn note_imminent_preimage(b: u32, ) -> Weight { - (56_559_000 as Weight) + (51_160_000 as Weight) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Democracy Preimages (r:1 w:1) // Storage: System Account (r:1 w:0) fn reap_preimage(b: u32, ) -> Weight { - (77_327_000 as Weight) + (69_373_000 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -272,9 +273,9 @@ impl pallet_democracy::WeightInfo for SubstrateWeight Weight { - (74_050_000 as Weight) - // Standard Error: 6_000 - .saturating_add((153_000 as Weight).saturating_mul(r as Weight)) + (66_891_000 as Weight) + // Standard Error: 2_000 + .saturating_add((126_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -282,27 +283,27 @@ impl pallet_democracy::WeightInfo for SubstrateWeight Weight { - (69_203_000 as Weight) - // Standard Error: 6_000 - .saturating_add((312_000 as Weight).saturating_mul(r as Weight)) + (63_292_000 as Weight) + // Standard Error: 2_000 + .saturating_add((246_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Democracy ReferendumInfoOf (r:1 w:1) // Storage: Democracy VotingOf (r:1 w:1) fn remove_vote(r: u32, ) -> Weight { - (38_714_000 as Weight) + (35_903_000 as Weight) // Standard Error: 3_000 - .saturating_add((318_000 as Weight).saturating_mul(r as Weight)) + .saturating_add((252_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Democracy ReferendumInfoOf (r:1 w:1) // Storage: Democracy VotingOf (r:1 w:1) fn remove_other_vote(r: u32, ) -> Weight { - (38_802_000 as Weight) + (36_405_000 as Weight) // Standard Error: 3_000 - .saturating_add((310_000 as Weight).saturating_mul(r as Weight)) + .saturating_add((233_000 as Weight).saturating_mul(r as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -315,15 +316,15 @@ impl WeightInfo for () { // Storage: Democracy Blacklist (r:1 w:0) // Storage: Democracy DepositOf (r:0 w:1) fn propose() -> Weight { - (127_534_000 as Weight) + (116_784_000 as Weight) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } // Storage: Democracy DepositOf (r:1 w:1) fn second(s: u32, ) -> Weight { - (78_475_000 as Weight) - // Standard Error: 1_000 - .saturating_add((320_000 as Weight).saturating_mul(s as Weight)) + (70_510_000 as Weight) + // Standard Error: 2_000 + .saturating_add((283_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } @@ -331,9 +332,9 @@ impl WeightInfo for () { // Storage: Democracy VotingOf (r:1 w:1) // Storage: Balances Locks (r:1 w:1) fn vote_new(r: u32, ) -> Weight { - (87_029_000 as Weight) - // Standard Error: 6_000 - .saturating_add((354_000 as Weight).saturating_mul(r as Weight)) + (78_290_000 as Weight) + // Standard Error: 3_000 + .saturating_add((284_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -341,16 +342,16 @@ impl WeightInfo for () { // Storage: Democracy VotingOf (r:1 w:1) // Storage: Balances Locks (r:1 w:1) fn vote_existing(r: u32, ) -> Weight { - (87_405_000 as Weight) - // Standard Error: 8_000 - .saturating_add((341_000 as Weight).saturating_mul(r as Weight)) + (78_340_000 as Weight) + // Standard Error: 2_000 + .saturating_add((275_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } // Storage: Democracy ReferendumInfoOf (r:1 w:1) // Storage: Democracy Cancellations (r:1 w:1) fn emergency_cancel() -> Weight { - (54_048_000 as Weight) + (48_821_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } @@ -361,45 +362,45 @@ impl WeightInfo for () { // Storage: Democracy DepositOf (r:1 w:1) // Storage: System Account (r:1 w:1) fn blacklist(p: u32, ) -> Weight { - (148_114_000 as Weight) - // Standard Error: 8_000 - .saturating_add((918_000 as Weight).saturating_mul(p as Weight)) + (132_817_000 as Weight) + // Standard Error: 7_000 + .saturating_add((806_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().reads(5 as Weight)) .saturating_add(RocksDbWeight::get().writes(6 as Weight)) } // Storage: Democracy NextExternal (r:1 w:1) // Storage: Democracy Blacklist (r:1 w:0) fn external_propose(v: u32, ) -> Weight { - (27_909_000 as Weight) - // Standard Error: 1_000 - .saturating_add((174_000 as Weight).saturating_mul(v as Weight)) + (24_837_000 as Weight) + // Standard Error: 0 + .saturating_add((157_000 as Weight).saturating_mul(v as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Democracy NextExternal (r:0 w:1) fn external_propose_majority() -> Weight { - (6_210_000 as Weight) + (5_190_000 as Weight) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Democracy NextExternal (r:0 w:1) fn external_propose_default() -> Weight { - (6_660_000 as Weight) + (5_370_000 as Weight) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Democracy NextExternal (r:1 w:1) // Storage: Democracy ReferendumCount (r:1 w:1) // Storage: Democracy ReferendumInfoOf (r:0 w:1) fn fast_track() -> Weight { - (58_788_000 as Weight) + (51_252_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } // Storage: Democracy NextExternal (r:1 w:1) // Storage: Democracy Blacklist (r:1 w:1) fn veto_external(v: u32, ) -> Weight { - (58_543_000 as Weight) + (51_918_000 as Weight) // Standard Error: 1_000 - .saturating_add((218_000 as Weight).saturating_mul(v as Weight)) + .saturating_add((182_000 as Weight).saturating_mul(v as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } @@ -407,56 +408,58 @@ impl WeightInfo for () { // Storage: Democracy DepositOf (r:1 w:1) // Storage: System Account (r:1 w:1) fn cancel_proposal(p: u32, ) -> Weight { - (93_557_000 as Weight) - // Standard Error: 3_000 - .saturating_add((852_000 as Weight).saturating_mul(p as Weight)) + (84_294_000 as Weight) + // Standard Error: 4_000 + .saturating_add((761_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } // Storage: Democracy ReferendumInfoOf (r:0 w:1) fn cancel_referendum() -> Weight { - (34_089_000 as Weight) + (31_031_000 as Weight) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Scheduler Lookup (r:1 w:1) // Storage: Scheduler Agenda (r:1 w:1) fn cancel_queued(r: u32, ) -> Weight { - (61_686_000 as Weight) - // Standard Error: 33_000 - .saturating_add((3_328_000 as Weight).saturating_mul(r as Weight)) + (54_053_000 as Weight) + // Standard Error: 7_000 + .saturating_add((2_190_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } - // Storage: Democracy LowestUnbaked (r:1 w:0) + // Storage: Democracy LowestUnbaked (r:1 w:1) // Storage: Democracy ReferendumCount (r:1 w:0) // Storage: Democracy ReferendumInfoOf (r:1 w:0) fn on_initialize_base(r: u32, ) -> Weight { - (3_495_000 as Weight) - // Standard Error: 21_000 - .saturating_add((10_997_000 as Weight).saturating_mul(r as Weight)) + (11_642_000 as Weight) + // Standard Error: 10_000 + .saturating_add((10_250_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) + .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } - // Storage: Democracy LowestUnbaked (r:1 w:0) + // Storage: Democracy LowestUnbaked (r:1 w:1) // Storage: Democracy ReferendumCount (r:1 w:0) // Storage: Democracy LastTabledWasExternal (r:1 w:0) // Storage: Democracy NextExternal (r:1 w:0) // Storage: Democracy PublicProps (r:1 w:0) // Storage: Democracy ReferendumInfoOf (r:1 w:0) fn on_initialize_base_with_launch_period(r: u32, ) -> Weight { - (19_463_000 as Weight) - // Standard Error: 15_000 - .saturating_add((11_028_000 as Weight).saturating_mul(r as Weight)) + (24_894_000 as Weight) + // Standard Error: 9_000 + .saturating_add((10_276_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(5 as Weight)) .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) + .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Democracy VotingOf (r:3 w:3) // Storage: Democracy ReferendumInfoOf (r:1 w:1) // Storage: Balances Locks (r:1 w:1) fn delegate(r: u32, ) -> Weight { - (106_768_000 as Weight) - // Standard Error: 65_000 - .saturating_add((14_766_000 as Weight).saturating_mul(r as Weight)) + (98_072_000 as Weight) + // Standard Error: 10_000 + .saturating_add((13_471_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) .saturating_add(RocksDbWeight::get().writes(4 as Weight)) @@ -465,9 +468,9 @@ impl WeightInfo for () { // Storage: Democracy VotingOf (r:2 w:2) // Storage: Democracy ReferendumInfoOf (r:1 w:1) fn undelegate(r: u32, ) -> Weight { - (41_073_000 as Weight) - // Standard Error: 94_000 - .saturating_add((15_223_000 as Weight).saturating_mul(r as Weight)) + (41_112_000 as Weight) + // Standard Error: 20_000 + .saturating_add((13_636_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) @@ -475,31 +478,31 @@ impl WeightInfo for () { } // Storage: Democracy PublicProps (r:0 w:1) fn clear_public_proposals() -> Weight { - (6_610_000 as Weight) + (5_740_000 as Weight) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Democracy Preimages (r:1 w:1) fn note_preimage(b: u32, ) -> Weight { - (89_017_000 as Weight) + (78_977_000 as Weight) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Democracy Preimages (r:1 w:1) fn note_imminent_preimage(b: u32, ) -> Weight { - (56_559_000 as Weight) + (51_160_000 as Weight) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Democracy Preimages (r:1 w:1) // Storage: System Account (r:1 w:0) fn reap_preimage(b: u32, ) -> Weight { - (77_327_000 as Weight) + (69_373_000 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } @@ -507,9 +510,9 @@ impl WeightInfo for () { // Storage: Balances Locks (r:1 w:1) // Storage: System Account (r:1 w:1) fn unlock_remove(r: u32, ) -> Weight { - (74_050_000 as Weight) - // Standard Error: 6_000 - .saturating_add((153_000 as Weight).saturating_mul(r as Weight)) + (66_891_000 as Weight) + // Standard Error: 2_000 + .saturating_add((126_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -517,27 +520,27 @@ impl WeightInfo for () { // Storage: Balances Locks (r:1 w:1) // Storage: System Account (r:1 w:1) fn unlock_set(r: u32, ) -> Weight { - (69_203_000 as Weight) - // Standard Error: 6_000 - .saturating_add((312_000 as Weight).saturating_mul(r as Weight)) + (63_292_000 as Weight) + // Standard Error: 2_000 + .saturating_add((246_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } // Storage: Democracy ReferendumInfoOf (r:1 w:1) // Storage: Democracy VotingOf (r:1 w:1) fn remove_vote(r: u32, ) -> Weight { - (38_714_000 as Weight) + (35_903_000 as Weight) // Standard Error: 3_000 - .saturating_add((318_000 as Weight).saturating_mul(r as Weight)) + .saturating_add((252_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Democracy ReferendumInfoOf (r:1 w:1) // Storage: Democracy VotingOf (r:1 w:1) fn remove_other_vote(r: u32, ) -> Weight { - (38_802_000 as Weight) + (36_405_000 as Weight) // Standard Error: 3_000 - .saturating_add((310_000 as Weight).saturating_mul(r as Weight)) + .saturating_add((233_000 as Weight).saturating_mul(r as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } diff --git a/runtime/calamari/src/weights/pallet_membership.rs b/runtime/calamari/src/weights/pallet_membership.rs index 0f2ea40a2..8a94cbdae 100644 --- a/runtime/calamari/src/weights/pallet_membership.rs +++ b/runtime/calamari/src/weights/pallet_membership.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_membership //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-05, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_membership.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -61,9 +60,9 @@ impl pallet_membership::WeightInfo for SubstrateWeight< // Storage: Council Members (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn add_member(m: u32, ) -> Weight { - (48_657_000 as Weight) - // Standard Error: 3_000 - .saturating_add((240_000 as Weight).saturating_mul(m as Weight)) + (43_227_000 as Weight) + // Standard Error: 4_000 + .saturating_add((218_000 as Weight).saturating_mul(m as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -73,9 +72,9 @@ impl pallet_membership::WeightInfo for SubstrateWeight< // Storage: Council Members (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn remove_member(m: u32, ) -> Weight { - (58_148_000 as Weight) - // Standard Error: 0 - .saturating_add((203_000 as Weight).saturating_mul(m as Weight)) + (53_106_000 as Weight) + // Standard Error: 3_000 + .saturating_add((173_000 as Weight).saturating_mul(m as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -85,9 +84,9 @@ impl pallet_membership::WeightInfo for SubstrateWeight< // Storage: Council Members (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn swap_member(m: u32, ) -> Weight { - (58_642_000 as Weight) + (52_441_000 as Weight) // Standard Error: 0 - .saturating_add((224_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((207_000 as Weight).saturating_mul(m as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -97,9 +96,9 @@ impl pallet_membership::WeightInfo for SubstrateWeight< // Storage: Council Members (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn reset_member(m: u32, ) -> Weight { - (60_482_000 as Weight) - // Standard Error: 1_000 - .saturating_add((472_000 as Weight).saturating_mul(m as Weight)) + (54_010_000 as Weight) + // Standard Error: 2_000 + .saturating_add((412_000 as Weight).saturating_mul(m as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -109,9 +108,9 @@ impl pallet_membership::WeightInfo for SubstrateWeight< // Storage: Council Members (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn change_key(m: u32, ) -> Weight { - (61_251_000 as Weight) - // Standard Error: 0 - .saturating_add((225_000 as Weight).saturating_mul(m as Weight)) + (55_292_000 as Weight) + // Standard Error: 1_000 + .saturating_add((205_000 as Weight).saturating_mul(m as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -119,18 +118,18 @@ impl pallet_membership::WeightInfo for SubstrateWeight< // Storage: CouncilMembership Prime (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn set_prime(m: u32, ) -> Weight { - (16_127_000 as Weight) + (14_552_000 as Weight) // Standard Error: 0 - .saturating_add((173_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((158_000 as Weight).saturating_mul(m as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: CouncilMembership Prime (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn clear_prime(m: u32, ) -> Weight { - (7_276_000 as Weight) + (6_359_000 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(m as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } } @@ -142,9 +141,9 @@ impl WeightInfo for () { // Storage: Council Members (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn add_member(m: u32, ) -> Weight { - (48_657_000 as Weight) - // Standard Error: 3_000 - .saturating_add((240_000 as Weight).saturating_mul(m as Weight)) + (43_227_000 as Weight) + // Standard Error: 4_000 + .saturating_add((218_000 as Weight).saturating_mul(m as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -154,9 +153,9 @@ impl WeightInfo for () { // Storage: Council Members (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn remove_member(m: u32, ) -> Weight { - (58_148_000 as Weight) - // Standard Error: 0 - .saturating_add((203_000 as Weight).saturating_mul(m as Weight)) + (53_106_000 as Weight) + // Standard Error: 3_000 + .saturating_add((173_000 as Weight).saturating_mul(m as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -166,9 +165,9 @@ impl WeightInfo for () { // Storage: Council Members (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn swap_member(m: u32, ) -> Weight { - (58_642_000 as Weight) + (52_441_000 as Weight) // Standard Error: 0 - .saturating_add((224_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((207_000 as Weight).saturating_mul(m as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -178,9 +177,9 @@ impl WeightInfo for () { // Storage: Council Members (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn reset_member(m: u32, ) -> Weight { - (60_482_000 as Weight) - // Standard Error: 1_000 - .saturating_add((472_000 as Weight).saturating_mul(m as Weight)) + (54_010_000 as Weight) + // Standard Error: 2_000 + .saturating_add((412_000 as Weight).saturating_mul(m as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -190,9 +189,9 @@ impl WeightInfo for () { // Storage: Council Members (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn change_key(m: u32, ) -> Weight { - (61_251_000 as Weight) - // Standard Error: 0 - .saturating_add((225_000 as Weight).saturating_mul(m as Weight)) + (55_292_000 as Weight) + // Standard Error: 1_000 + .saturating_add((205_000 as Weight).saturating_mul(m as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(4 as Weight)) } @@ -200,18 +199,18 @@ impl WeightInfo for () { // Storage: CouncilMembership Prime (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn set_prime(m: u32, ) -> Weight { - (16_127_000 as Weight) + (14_552_000 as Weight) // Standard Error: 0 - .saturating_add((173_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((158_000 as Weight).saturating_mul(m as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: CouncilMembership Prime (r:0 w:1) // Storage: Council Prime (r:0 w:1) fn clear_prime(m: u32, ) -> Weight { - (7_276_000 as Weight) + (6_359_000 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(m as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } } diff --git a/runtime/calamari/src/weights/pallet_multisig.rs b/runtime/calamari/src/weights/pallet_multisig.rs index c1ea0c59c..918c79c99 100644 --- a/runtime/calamari/src/weights/pallet_multisig.rs +++ b/runtime/calamari/src/weights/pallet_multisig.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_multisig //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_multisig.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -60,18 +59,18 @@ pub trait WeightInfo { pub struct SubstrateWeight(PhantomData); impl pallet_multisig::WeightInfo for SubstrateWeight { fn as_multi_threshold_1(z: u32, ) -> Weight { - (38_470_000 as Weight) + (36_129_000 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create(s: u32, z: u32, ) -> Weight { - (106_818_000 as Weight) - // Standard Error: 2_000 - .saturating_add((304_000 as Weight).saturating_mul(s as Weight)) + (95_459_000 as Weight) + // Standard Error: 1_000 + .saturating_add((269_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -79,32 +78,32 @@ impl pallet_multisig::WeightInfo for SubstrateWeight // Storage: Multisig Calls (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (120_488_000 as Weight) + (106_223_000 as Weight) // Standard Error: 2_000 - .saturating_add((301_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((268_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (61_695_000 as Weight) + (56_277_000 as Weight) // Standard Error: 1_000 - .saturating_add((289_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((253_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (111_795_000 as Weight) + (102_438_000 as Weight) // Standard Error: 1_000 - .saturating_add((303_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((262_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -112,29 +111,29 @@ impl pallet_multisig::WeightInfo for SubstrateWeight // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (145_333_000 as Weight) - // Standard Error: 2_000 - .saturating_add((506_000 as Weight).saturating_mul(s as Weight)) + (132_550_000 as Weight) + // Standard Error: 1_000 + .saturating_add((428_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((6_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn approve_as_multi_create(s: u32, ) -> Weight { - (105_285_000 as Weight) + (93_944_000 as Weight) // Standard Error: 1_000 - .saturating_add((299_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((277_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:0) fn approve_as_multi_approve(s: u32, ) -> Weight { - (59_755_000 as Weight) + (53_425_000 as Weight) // Standard Error: 1_000 - .saturating_add((279_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((265_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -142,18 +141,18 @@ impl pallet_multisig::WeightInfo for SubstrateWeight // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn approve_as_multi_complete(s: u32, ) -> Weight { - (206_250_000 as Weight) + (162_416_000 as Weight) // Standard Error: 1_000 - .saturating_add((502_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((466_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn cancel_as_multi(s: u32, ) -> Weight { - (165_596_000 as Weight) + (138_948_000 as Weight) // Standard Error: 1_000 - .saturating_add((307_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((282_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -162,18 +161,18 @@ impl pallet_multisig::WeightInfo for SubstrateWeight // For backwards compatibility and tests impl WeightInfo for () { fn as_multi_threshold_1(z: u32, ) -> Weight { - (38_470_000 as Weight) + (36_129_000 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create(s: u32, z: u32, ) -> Weight { - (106_818_000 as Weight) - // Standard Error: 2_000 - .saturating_add((304_000 as Weight).saturating_mul(s as Weight)) + (95_459_000 as Weight) + // Standard Error: 1_000 + .saturating_add((269_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } @@ -181,32 +180,32 @@ impl WeightInfo for () { // Storage: Multisig Calls (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (120_488_000 as Weight) + (106_223_000 as Weight) // Standard Error: 2_000 - .saturating_add((301_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((268_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (61_695_000 as Weight) + (56_277_000 as Weight) // Standard Error: 1_000 - .saturating_add((289_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((253_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (111_795_000 as Weight) + (102_438_000 as Weight) // Standard Error: 1_000 - .saturating_add((303_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((262_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } @@ -214,29 +213,29 @@ impl WeightInfo for () { // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (145_333_000 as Weight) - // Standard Error: 2_000 - .saturating_add((506_000 as Weight).saturating_mul(s as Weight)) + (132_550_000 as Weight) + // Standard Error: 1_000 + .saturating_add((428_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((6_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn approve_as_multi_create(s: u32, ) -> Weight { - (105_285_000 as Weight) + (93_944_000 as Weight) // Standard Error: 1_000 - .saturating_add((299_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((277_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:0) fn approve_as_multi_approve(s: u32, ) -> Weight { - (59_755_000 as Weight) + (53_425_000 as Weight) // Standard Error: 1_000 - .saturating_add((279_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((265_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } @@ -244,18 +243,18 @@ impl WeightInfo for () { // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn approve_as_multi_complete(s: u32, ) -> Weight { - (206_250_000 as Weight) + (162_416_000 as Weight) // Standard Error: 1_000 - .saturating_add((502_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((466_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn cancel_as_multi(s: u32, ) -> Weight { - (165_596_000 as Weight) + (138_948_000 as Weight) // Standard Error: 1_000 - .saturating_add((307_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((282_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } diff --git a/runtime/calamari/src/weights/pallet_scheduler.rs b/runtime/calamari/src/weights/pallet_scheduler.rs index 699652439..8f250248b 100644 --- a/runtime/calamari/src/weights/pallet_scheduler.rs +++ b/runtime/calamari/src/weights/pallet_scheduler.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_scheduler //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-05, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_scheduler.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -55,36 +54,36 @@ pub struct SubstrateWeight(PhantomData); impl pallet_scheduler::WeightInfo for SubstrateWeight { // Storage: Scheduler Agenda (r:1 w:1) fn schedule(s: u32, ) -> Weight { - (52_039_000 as Weight) - // Standard Error: 1_000 - .saturating_add((122_000 as Weight).saturating_mul(s as Weight)) + (47_501_000 as Weight) + // Standard Error: 2_000 + .saturating_add((113_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Scheduler Agenda (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) fn cancel(s: u32, ) -> Weight { - (49_342_000 as Weight) - // Standard Error: 7_000 - .saturating_add((2_631_000 as Weight).saturating_mul(s as Weight)) + (44_636_000 as Weight) + // Standard Error: 3_000 + .saturating_add((1_711_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Scheduler Lookup (r:1 w:1) // Storage: Scheduler Agenda (r:1 w:1) fn schedule_named(s: u32, ) -> Weight { - (65_730_000 as Weight) + (60_246_000 as Weight) // Standard Error: 2_000 - .saturating_add((133_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((136_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Scheduler Lookup (r:1 w:1) // Storage: Scheduler Agenda (r:1 w:1) fn cancel_named(s: u32, ) -> Weight { - (54_594_000 as Weight) - // Standard Error: 8_000 - .saturating_add((2_634_000 as Weight).saturating_mul(s as Weight)) + (50_699_000 as Weight) + // Standard Error: 4_000 + .saturating_add((1_710_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -94,36 +93,36 @@ impl pallet_scheduler::WeightInfo for SubstrateWeight Weight { - (52_039_000 as Weight) - // Standard Error: 1_000 - .saturating_add((122_000 as Weight).saturating_mul(s as Weight)) + (47_501_000 as Weight) + // Standard Error: 2_000 + .saturating_add((113_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Scheduler Agenda (r:1 w:1) // Storage: Scheduler Lookup (r:0 w:1) fn cancel(s: u32, ) -> Weight { - (49_342_000 as Weight) - // Standard Error: 7_000 - .saturating_add((2_631_000 as Weight).saturating_mul(s as Weight)) + (44_636_000 as Weight) + // Standard Error: 3_000 + .saturating_add((1_711_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Scheduler Lookup (r:1 w:1) // Storage: Scheduler Agenda (r:1 w:1) fn schedule_named(s: u32, ) -> Weight { - (65_730_000 as Weight) + (60_246_000 as Weight) // Standard Error: 2_000 - .saturating_add((133_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((136_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Scheduler Lookup (r:1 w:1) // Storage: Scheduler Agenda (r:1 w:1) fn cancel_named(s: u32, ) -> Weight { - (54_594_000 as Weight) - // Standard Error: 8_000 - .saturating_add((2_634_000 as Weight).saturating_mul(s as Weight)) + (50_699_000 as Weight) + // Standard Error: 4_000 + .saturating_add((1_710_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } diff --git a/runtime/calamari/src/weights/pallet_session.rs b/runtime/calamari/src/weights/pallet_session.rs index f1865dd26..be83e0ea1 100644 --- a/runtime/calamari/src/weights/pallet_session.rs +++ b/runtime/calamari/src/weights/pallet_session.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_session //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-16, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_session.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -54,14 +53,14 @@ impl pallet_session::WeightInfo for SubstrateWeight // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:1 w:1) fn set_keys() -> Weight { - (52_622_000 as Weight) + (46_332_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:0 w:1) fn purge_keys() -> Weight { - (35_392_000 as Weight) + (32_051_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -72,14 +71,14 @@ impl WeightInfo for () { // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:1 w:1) fn set_keys() -> Weight { - (52_622_000 as Weight) + (46_332_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:0 w:1) fn purge_keys() -> Weight { - (35_392_000 as Weight) + (32_051_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } diff --git a/runtime/calamari/src/weights/pallet_tx_pause.rs b/runtime/calamari/src/weights/pallet_tx_pause.rs index cfecd6eab..b3e0a2a21 100644 --- a/runtime/calamari/src/weights/pallet_tx_pause.rs +++ b/runtime/calamari/src/weights/pallet_tx_pause.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_tx_pause //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_tx_pause.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -53,13 +52,13 @@ pub struct SubstrateWeight(PhantomData); impl pallet_tx_pause::WeightInfo for SubstrateWeight { // Storage: TransactionPause PausedTransactions (r:1 w:1) fn pause_transaction() -> Weight { - (42_691_000 as Weight) + (37_922_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: TransactionPause PausedTransactions (r:1 w:1) fn unpause_transaction() -> Weight { - (43_171_000 as Weight) + (38_761_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -69,13 +68,13 @@ impl pallet_tx_pause::WeightInfo for SubstrateWeight impl WeightInfo for () { // Storage: TransactionPause PausedTransactions (r:1 w:1) fn pause_transaction() -> Weight { - (42_691_000 as Weight) + (37_922_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: TransactionPause PausedTransactions (r:1 w:1) fn unpause_transaction() -> Weight { - (43_171_000 as Weight) + (38_761_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } diff --git a/runtime/calamari/src/weights/pallet_utility.rs b/runtime/calamari/src/weights/pallet_utility.rs index 9d250716f..0ef877ff9 100644 --- a/runtime/calamari/src/weights/pallet_utility.rs +++ b/runtime/calamari/src/weights/pallet_utility.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_utility //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-26, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_utility.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -47,42 +46,46 @@ pub trait WeightInfo { fn batch(c: u32, ) -> Weight; fn as_derivative() -> Weight; fn batch_all(c: u32, ) -> Weight; + fn dispatch_as() -> Weight; } /// Weights for pallet_utility using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl pallet_utility::WeightInfo for SubstrateWeight { fn batch(c: u32, ) -> Weight { - (43_160_000 as Weight) - // Standard Error: 6_000 - .saturating_add((14_311_000 as Weight).saturating_mul(c as Weight)) + (50_302_000 as Weight) + // Standard Error: 8_000 + .saturating_add((12_826_000 as Weight).saturating_mul(c as Weight)) } fn as_derivative() -> Weight { - (7_671_000 as Weight) + (7_060_000 as Weight) } fn batch_all(c: u32, ) -> Weight { - (26_924_000 as Weight) - // Standard Error: 4_000 - .saturating_add((15_469_000 as Weight).saturating_mul(c as Weight)) + (41_751_000 as Weight) + // Standard Error: 5_000 + .saturating_add((13_849_000 as Weight).saturating_mul(c as Weight)) } fn dispatch_as() -> Weight { - (14_795_000 as Weight) + (28_301_000 as Weight) } } // For backwards compatibility and tests impl WeightInfo for () { fn batch(c: u32, ) -> Weight { - (43_160_000 as Weight) - // Standard Error: 6_000 - .saturating_add((14_311_000 as Weight).saturating_mul(c as Weight)) + (50_302_000 as Weight) + // Standard Error: 8_000 + .saturating_add((12_826_000 as Weight).saturating_mul(c as Weight)) } fn as_derivative() -> Weight { - (7_671_000 as Weight) + (7_060_000 as Weight) } fn batch_all(c: u32, ) -> Weight { - (26_924_000 as Weight) - // Standard Error: 4_000 - .saturating_add((15_469_000 as Weight).saturating_mul(c as Weight)) + (41_751_000 as Weight) + // Standard Error: 5_000 + .saturating_add((13_849_000 as Weight).saturating_mul(c as Weight)) + } + fn dispatch_as() -> Weight { + (28_301_000 as Weight) } } diff --git a/runtime/manta/src/lib.rs b/runtime/manta/src/lib.rs index 51f7b947e..43043a153 100644 --- a/runtime/manta/src/lib.rs +++ b/runtime/manta/src/lib.rs @@ -322,7 +322,7 @@ impl pallet_scheduler::Config for Runtime { type MaximumWeight = MaximumSchedulerWeight; type ScheduleOrigin = ScheduleOrigin; type MaxScheduledPerBlock = MaxScheduledPerBlock; - type WeightInfo = pallet_scheduler::weights::SubstrateWeight; + type WeightInfo = weights::pallet_scheduler::SubstrateWeight; type OriginPrivilegeCmp = frame_support::traits::EqualPrivilegeOnly; } diff --git a/runtime/manta/src/weights/frame_system.rs b/runtime/manta/src/weights/frame_system.rs index f2c98bc4e..44f04ea86 100644 --- a/runtime/manta/src/weights/frame_system.rs +++ b/runtime/manta/src/weights/frame_system.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for frame_system //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-16, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("manta-local"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=frame_system.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -56,20 +55,18 @@ pub trait WeightInfo { /// Weights for frame_system using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl frame_system::WeightInfo for SubstrateWeight { - fn remark(b: u32, ) -> Weight { + fn remark(_b: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) } fn remark_with_event(b: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) } // Storage: System Digest (r:1 w:1) // Storage: unknown [0x3a686561707061676573] (r:0 w:1) fn set_heap_pages() -> Weight { - (10_190_000 as Weight) + (9_410_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -84,41 +81,39 @@ impl frame_system::WeightInfo for SubstrateWeight { fn set_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 1_000 - .saturating_add((1_680_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((1_504_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 1_000 - .saturating_add((1_146_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((1_006_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_prefix(p: u32, ) -> Weight { (0 as Weight) - // Standard Error: 2_000 - .saturating_add((1_648_000 as Weight).saturating_mul(p as Weight)) + // Standard Error: 1_000 + .saturating_add((1_601_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) } } // For backwards compatibility and tests impl WeightInfo for () { - fn remark(b: u32, ) -> Weight { + fn remark(_b: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) } fn remark_with_event(b: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) } // Storage: System Digest (r:1 w:1) // Storage: unknown [0x3a686561707061676573] (r:0 w:1) fn set_heap_pages() -> Weight { - (10_190_000 as Weight) + (9_410_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } @@ -133,21 +128,21 @@ impl WeightInfo for () { fn set_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 1_000 - .saturating_add((1_680_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((1_504_000 as Weight).saturating_mul(i as Weight)) .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 1_000 - .saturating_add((1_146_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((1_006_000 as Weight).saturating_mul(i as Weight)) .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_prefix(p: u32, ) -> Weight { (0 as Weight) - // Standard Error: 2_000 - .saturating_add((1_648_000 as Weight).saturating_mul(p as Weight)) + // Standard Error: 1_000 + .saturating_add((1_601_000 as Weight).saturating_mul(p as Weight)) .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) } } diff --git a/runtime/manta/src/weights/mod.rs b/runtime/manta/src/weights/mod.rs index 65f7f7b1b..3ce1faa0e 100644 --- a/runtime/manta/src/weights/mod.rs +++ b/runtime/manta/src/weights/mod.rs @@ -19,6 +19,7 @@ pub mod frame_system; pub mod pallet_balances; pub mod pallet_multisig; +pub mod pallet_scheduler; pub mod pallet_session; pub mod pallet_timestamp; pub mod pallet_tx_pause; diff --git a/runtime/manta/src/weights/pallet_balances.rs b/runtime/manta/src/weights/pallet_balances.rs index 0bf991fd8..296e7dcd4 100644 --- a/runtime/manta/src/weights/pallet_balances.rs +++ b/runtime/manta/src/weights/pallet_balances.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_balances //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-10, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("manta-local"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_balances.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -58,43 +57,43 @@ pub struct SubstrateWeight(PhantomData); impl pallet_balances::WeightInfo for SubstrateWeight { // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (157_835_000 as Weight) + (131_892_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (113_574_000 as Weight) + (96_701_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_creating() -> Weight { - (66_063_000 as Weight) + (52_021_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_killing() -> Weight { - (74_223_000 as Weight) + (71_991_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) fn force_transfer() -> Weight { - (157_816_000 as Weight) + (131_502_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_all() -> Weight { - (143_696_000 as Weight) + (141_231_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn force_unreserve() -> Weight { - (56_182_000 as Weight) + (48_590_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -104,43 +103,43 @@ impl pallet_balances::WeightInfo for SubstrateWeight impl WeightInfo for () { // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (157_835_000 as Weight) + (131_892_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (113_574_000 as Weight) + (96_701_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_creating() -> Weight { - (66_063_000 as Weight) + (52_021_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_killing() -> Weight { - (74_223_000 as Weight) + (71_991_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) fn force_transfer() -> Weight { - (157_816_000 as Weight) + (131_502_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_all() -> Weight { - (143_696_000 as Weight) + (141_231_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn force_unreserve() -> Weight { - (56_182_000 as Weight) + (48_590_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } diff --git a/runtime/manta/src/weights/pallet_multisig.rs b/runtime/manta/src/weights/pallet_multisig.rs index 8dabfdd8e..c20529c01 100644 --- a/runtime/manta/src/weights/pallet_multisig.rs +++ b/runtime/manta/src/weights/pallet_multisig.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_multisig //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("manta-local"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_multisig.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -60,18 +59,18 @@ pub trait WeightInfo { pub struct SubstrateWeight(PhantomData); impl pallet_multisig::WeightInfo for SubstrateWeight { fn as_multi_threshold_1(z: u32, ) -> Weight { - (38_812_000 as Weight) + (35_562_000 as Weight) // Standard Error: 0 .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create(s: u32, z: u32, ) -> Weight { - (104_701_000 as Weight) + (96_711_000 as Weight) // Standard Error: 1_000 - .saturating_add((299_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((259_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -79,32 +78,32 @@ impl pallet_multisig::WeightInfo for SubstrateWeight // Storage: Multisig Calls (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (117_204_000 as Weight) - // Standard Error: 2_000 - .saturating_add((305_000 as Weight).saturating_mul(s as Weight)) + (106_895_000 as Weight) + // Standard Error: 1_000 + .saturating_add((263_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (62_733_000 as Weight) - // Standard Error: 1_000 - .saturating_add((276_000 as Weight).saturating_mul(s as Weight)) + (58_218_000 as Weight) + // Standard Error: 2_000 + .saturating_add((243_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (113_342_000 as Weight) + (103_376_000 as Weight) // Standard Error: 1_000 - .saturating_add((298_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((251_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -112,29 +111,29 @@ impl pallet_multisig::WeightInfo for SubstrateWeight // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (148_721_000 as Weight) - // Standard Error: 2_000 - .saturating_add((480_000 as Weight).saturating_mul(s as Weight)) + (131_242_000 as Weight) + // Standard Error: 1_000 + .saturating_add((439_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((6_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn approve_as_multi_create(s: u32, ) -> Weight { - (104_944_000 as Weight) - // Standard Error: 2_000 - .saturating_add((309_000 as Weight).saturating_mul(s as Weight)) + (93_259_000 as Weight) + // Standard Error: 1_000 + .saturating_add((279_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:0) fn approve_as_multi_approve(s: u32, ) -> Weight { - (59_238_000 as Weight) + (54_024_000 as Weight) // Standard Error: 1_000 - .saturating_add((297_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((261_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -142,18 +141,18 @@ impl pallet_multisig::WeightInfo for SubstrateWeight // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn approve_as_multi_complete(s: u32, ) -> Weight { - (203_614_000 as Weight) - // Standard Error: 2_000 - .saturating_add((495_000 as Weight).saturating_mul(s as Weight)) + (157_782_000 as Weight) + // Standard Error: 1_000 + .saturating_add((468_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn cancel_as_multi(s: u32, ) -> Weight { - (165_366_000 as Weight) + (137_100_000 as Weight) // Standard Error: 1_000 - .saturating_add((296_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((287_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -162,18 +161,18 @@ impl pallet_multisig::WeightInfo for SubstrateWeight // For backwards compatibility and tests impl WeightInfo for () { fn as_multi_threshold_1(z: u32, ) -> Weight { - (38_812_000 as Weight) + (35_562_000 as Weight) // Standard Error: 0 .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create(s: u32, z: u32, ) -> Weight { - (104_701_000 as Weight) + (96_711_000 as Weight) // Standard Error: 1_000 - .saturating_add((299_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((259_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } @@ -181,32 +180,32 @@ impl WeightInfo for () { // Storage: Multisig Calls (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (117_204_000 as Weight) - // Standard Error: 2_000 - .saturating_add((305_000 as Weight).saturating_mul(s as Weight)) + (106_895_000 as Weight) + // Standard Error: 1_000 + .saturating_add((263_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (62_733_000 as Weight) - // Standard Error: 1_000 - .saturating_add((276_000 as Weight).saturating_mul(s as Weight)) + (58_218_000 as Weight) + // Standard Error: 2_000 + .saturating_add((243_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (113_342_000 as Weight) + (103_376_000 as Weight) // Standard Error: 1_000 - .saturating_add((298_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((251_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((3_000 as Weight).saturating_mul(z as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } @@ -214,29 +213,29 @@ impl WeightInfo for () { // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (148_721_000 as Weight) - // Standard Error: 2_000 - .saturating_add((480_000 as Weight).saturating_mul(s as Weight)) + (131_242_000 as Weight) + // Standard Error: 1_000 + .saturating_add((439_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((6_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn approve_as_multi_create(s: u32, ) -> Weight { - (104_944_000 as Weight) - // Standard Error: 2_000 - .saturating_add((309_000 as Weight).saturating_mul(s as Weight)) + (93_259_000 as Weight) + // Standard Error: 1_000 + .saturating_add((279_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:0) fn approve_as_multi_approve(s: u32, ) -> Weight { - (59_238_000 as Weight) + (54_024_000 as Weight) // Standard Error: 1_000 - .saturating_add((297_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((261_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } @@ -244,18 +243,18 @@ impl WeightInfo for () { // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn approve_as_multi_complete(s: u32, ) -> Weight { - (203_614_000 as Weight) - // Standard Error: 2_000 - .saturating_add((495_000 as Weight).saturating_mul(s as Weight)) + (157_782_000 as Weight) + // Standard Error: 1_000 + .saturating_add((468_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn cancel_as_multi(s: u32, ) -> Weight { - (165_366_000 as Weight) + (137_100_000 as Weight) // Standard Error: 1_000 - .saturating_add((296_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((287_000 as Weight).saturating_mul(s as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } diff --git a/runtime/manta/src/weights/pallet_scheduler.rs b/runtime/manta/src/weights/pallet_scheduler.rs new file mode 100644 index 000000000..415ae98f6 --- /dev/null +++ b/runtime/manta/src/weights/pallet_scheduler.rs @@ -0,0 +1,129 @@ +// Copyright 2020-2021 Manta Network. +// This file is part of Manta. + +// Manta is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Manta is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Manta. If not, see . + +//! Autogenerated weights for pallet_scheduler +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("manta-local"), DB CACHE: 128 + +// Executed Command: +// manta +// benchmark +// --chain=manta-local +// --pallet=pallet_scheduler +// --extrinsic=* +// --execution=Wasm +// --wasm-execution=Compiled +// --heap-pages=4096 +// --repeat=20 +// --steps=50 +// --template=.github/resources/frame-weight-template.hbs +// --output=pallet_scheduler.rs + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; + +/// Weight functions needed for pallet_scheduler. +pub trait WeightInfo { + fn schedule(s: u32, ) -> Weight; + fn cancel(s: u32, ) -> Weight; + fn schedule_named(s: u32, ) -> Weight; + fn cancel_named(s: u32, ) -> Weight; +} + +/// Weights for pallet_scheduler using the Substrate node and recommended hardware. +pub struct SubstrateWeight(PhantomData); +impl pallet_scheduler::WeightInfo for SubstrateWeight { + // Storage: Scheduler Agenda (r:1 w:1) + fn schedule(s: u32, ) -> Weight { + (44_653_000 as Weight) + // Standard Error: 1_000 + .saturating_add((124_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Scheduler Agenda (r:1 w:1) + // Storage: Scheduler Lookup (r:0 w:1) + fn cancel(s: u32, ) -> Weight { + (42_620_000 as Weight) + // Standard Error: 2_000 + .saturating_add((1_514_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: Scheduler Lookup (r:1 w:1) + // Storage: Scheduler Agenda (r:1 w:1) + fn schedule_named(s: u32, ) -> Weight { + (56_341_000 as Weight) + // Standard Error: 2_000 + .saturating_add((147_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: Scheduler Lookup (r:1 w:1) + // Storage: Scheduler Agenda (r:1 w:1) + fn cancel_named(s: u32, ) -> Weight { + (48_102_000 as Weight) + // Standard Error: 3_000 + .saturating_add((1_508_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } +} + +// For backwards compatibility and tests +impl WeightInfo for () { + // Storage: Scheduler Agenda (r:1 w:1) + fn schedule(s: u32, ) -> Weight { + (44_653_000 as Weight) + // Standard Error: 1_000 + .saturating_add((124_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(1 as Weight)) + .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + } + // Storage: Scheduler Agenda (r:1 w:1) + // Storage: Scheduler Lookup (r:0 w:1) + fn cancel(s: u32, ) -> Weight { + (42_620_000 as Weight) + // Standard Error: 2_000 + .saturating_add((1_514_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(1 as Weight)) + .saturating_add(RocksDbWeight::get().writes(2 as Weight)) + } + // Storage: Scheduler Lookup (r:1 w:1) + // Storage: Scheduler Agenda (r:1 w:1) + fn schedule_named(s: u32, ) -> Weight { + (56_341_000 as Weight) + // Standard Error: 2_000 + .saturating_add((147_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(2 as Weight)) + .saturating_add(RocksDbWeight::get().writes(2 as Weight)) + } + // Storage: Scheduler Lookup (r:1 w:1) + // Storage: Scheduler Agenda (r:1 w:1) + fn cancel_named(s: u32, ) -> Weight { + (48_102_000 as Weight) + // Standard Error: 3_000 + .saturating_add((1_508_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(RocksDbWeight::get().reads(2 as Weight)) + .saturating_add(RocksDbWeight::get().writes(2 as Weight)) + } +} diff --git a/runtime/manta/src/weights/pallet_session.rs b/runtime/manta/src/weights/pallet_session.rs index 3d64863cb..4fe38111f 100644 --- a/runtime/manta/src/weights/pallet_session.rs +++ b/runtime/manta/src/weights/pallet_session.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_session //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-16, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("manta-local"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_session.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -54,14 +53,14 @@ impl pallet_session::WeightInfo for SubstrateWeight // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:1 w:1) fn set_keys() -> Weight { - (51_742_000 as Weight) + (46_050_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:0 w:1) fn purge_keys() -> Weight { - (40_001_000 as Weight) + (31_940_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -72,14 +71,14 @@ impl WeightInfo for () { // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:1 w:1) fn set_keys() -> Weight { - (51_742_000 as Weight) + (46_050_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:0 w:1) fn purge_keys() -> Weight { - (40_001_000 as Weight) + (31_940_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } diff --git a/runtime/manta/src/weights/pallet_tx_pause.rs b/runtime/manta/src/weights/pallet_tx_pause.rs index f65860fb8..170918044 100644 --- a/runtime/manta/src/weights/pallet_tx_pause.rs +++ b/runtime/manta/src/weights/pallet_tx_pause.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_tx_pause //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("manta-local"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_tx_pause.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -53,13 +52,13 @@ pub struct SubstrateWeight(PhantomData); impl pallet_tx_pause::WeightInfo for SubstrateWeight { // Storage: TransactionPause PausedTransactions (r:1 w:1) fn pause_transaction() -> Weight { - (42_000_000 as Weight) + (37_141_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: TransactionPause PausedTransactions (r:1 w:1) fn unpause_transaction() -> Weight { - (42_450_000 as Weight) + (38_891_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -69,13 +68,13 @@ impl pallet_tx_pause::WeightInfo for SubstrateWeight impl WeightInfo for () { // Storage: TransactionPause PausedTransactions (r:1 w:1) fn pause_transaction() -> Weight { - (42_000_000 as Weight) + (37_141_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: TransactionPause PausedTransactions (r:1 w:1) fn unpause_transaction() -> Weight { - (42_450_000 as Weight) + (38_891_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } From b2dc82ad30f0c26f2c694ed53ab70680674b5aec Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 6 Dec 2021 19:30:51 +0200 Subject: [PATCH 10/26] Bump spec version to 3120 --- runtime/calamari/src/lib.rs | 2 +- runtime/manta/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/calamari/src/lib.rs b/runtime/calamari/src/lib.rs index be4a5813a..62582c018 100644 --- a/runtime/calamari/src/lib.rs +++ b/runtime/calamari/src/lib.rs @@ -107,7 +107,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("calamari"), impl_name: create_runtime_str!("calamari"), authoring_version: 1, - spec_version: 3101, + spec_version: 3120, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/runtime/manta/src/lib.rs b/runtime/manta/src/lib.rs index 43043a153..1e7be7a30 100644 --- a/runtime/manta/src/lib.rs +++ b/runtime/manta/src/lib.rs @@ -106,7 +106,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("manta"), impl_name: create_runtime_str!("manta"), authoring_version: 1, - spec_version: 3101, + spec_version: 3120, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, From d3c512a65ef971685c14c00c600f8f7b5473ff13 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 6 Dec 2021 19:39:20 +0200 Subject: [PATCH 11/26] Bump spec version to 3110 --- runtime/calamari/src/lib.rs | 2 +- runtime/manta/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/calamari/src/lib.rs b/runtime/calamari/src/lib.rs index 62582c018..eaacc15b4 100644 --- a/runtime/calamari/src/lib.rs +++ b/runtime/calamari/src/lib.rs @@ -107,7 +107,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("calamari"), impl_name: create_runtime_str!("calamari"), authoring_version: 1, - spec_version: 3120, + spec_version: 3110, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 2, diff --git a/runtime/manta/src/lib.rs b/runtime/manta/src/lib.rs index 1e7be7a30..d50417ec7 100644 --- a/runtime/manta/src/lib.rs +++ b/runtime/manta/src/lib.rs @@ -106,7 +106,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("manta"), impl_name: create_runtime_str!("manta"), authoring_version: 1, - spec_version: 3120, + spec_version: 3110, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, From 5fffdc9b3aab5933b3645fd24e39982583e8711d Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 6 Dec 2021 23:23:07 +0200 Subject: [PATCH 12/26] Bump client to 3.1.1 --- .github/resources/frame-weight-template.hbs | 2 +- Cargo.lock | 12 ++++++------ node/Cargo.toml | 2 +- pallets/pallet-tx-pause/Cargo.toml | 2 +- pallets/vesting/Cargo.toml | 2 +- runtime/calamari/Cargo.toml | 2 +- runtime/calamari/src/weights/pallet_timestamp.rs | 11 +++++------ runtime/manta/Cargo.toml | 2 +- runtime/primitives/Cargo.toml | 2 +- 9 files changed, 18 insertions(+), 19 deletions(-) diff --git a/.github/resources/frame-weight-template.hbs b/.github/resources/frame-weight-template.hbs index 938a28d4c..15c7a69d8 100644 --- a/.github/resources/frame-weight-template.hbs +++ b/.github/resources/frame-weight-template.hbs @@ -46,7 +46,7 @@ pub trait WeightInfo { /// Weights for {{pallet}} using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); {{#if (eq pallet "frame_system")}} -impl {{pallet}}:: WeightInfo for SubstrateWeight { +impl {{pallet}}::WeightInfo for SubstrateWeight { {{else}} impl WeightInfo for SubstrateWeight { {{/if}} diff --git a/Cargo.lock b/Cargo.lock index 64d921aa9..392c15aa8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -899,7 +899,7 @@ checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" [[package]] name = "calamari-runtime" -version = "3.1.0" +version = "3.1.1" dependencies = [ "calamari-vesting", "cumulus-pallet-aura-ext", @@ -966,7 +966,7 @@ dependencies = [ [[package]] name = "calamari-vesting" -version = "3.1.0" +version = "3.1.1" dependencies = [ "chrono", "frame-benchmarking", @@ -4269,7 +4269,7 @@ dependencies = [ [[package]] name = "manta" -version = "3.1.0" +version = "3.1.1" dependencies = [ "async-trait", "calamari-runtime", @@ -4334,7 +4334,7 @@ dependencies = [ [[package]] name = "manta-primitives" -version = "3.1.0" +version = "3.1.1" dependencies = [ "parity-scale-codec", "smallvec", @@ -4347,7 +4347,7 @@ dependencies = [ [[package]] name = "manta-runtime" -version = "3.1.0" +version = "3.1.1" dependencies = [ "cumulus-pallet-aura-ext", "cumulus-pallet-dmp-queue", @@ -5750,7 +5750,7 @@ dependencies = [ [[package]] name = "pallet-tx-pause" -version = "3.1.0" +version = "3.1.1" dependencies = [ "frame-benchmarking", "frame-support", diff --git a/node/Cargo.toml b/node/Cargo.toml index 785719d6f..b7fc0bfb4 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -7,7 +7,7 @@ homepage = 'https://manta.network' license = 'GPL-3.0' name = 'manta' repository = 'https://github.com/Manta-Network/Manta/' -version = '3.1.0' +version = '3.1.1' [package.metadata.docs.rs] targets = ['x86_64-unknown-linux-gnu'] diff --git a/pallets/pallet-tx-pause/Cargo.toml b/pallets/pallet-tx-pause/Cargo.toml index 01bc1a241..b90e14ae0 100644 --- a/pallets/pallet-tx-pause/Cargo.toml +++ b/pallets/pallet-tx-pause/Cargo.toml @@ -1,7 +1,7 @@ [package] authors = ['Manta Network'] name = "pallet-tx-pause" -version = '3.1.0' +version = '3.1.1' edition = "2021" homepage = 'https://manta.network' license = 'GPL-3.0' diff --git a/pallets/vesting/Cargo.toml b/pallets/vesting/Cargo.toml index 59cc542bc..ee19e5496 100644 --- a/pallets/vesting/Cargo.toml +++ b/pallets/vesting/Cargo.toml @@ -1,7 +1,7 @@ [package] authors = ['Manta Network'] name = "calamari-vesting" -version = '3.1.0' +version = '3.1.1' edition = "2021" homepage = 'https://manta.network' license = 'GPL-3.0' diff --git a/runtime/calamari/Cargo.toml b/runtime/calamari/Cargo.toml index 4b0d4846e..6c2b34b00 100644 --- a/runtime/calamari/Cargo.toml +++ b/runtime/calamari/Cargo.toml @@ -5,7 +5,7 @@ homepage = 'https://manta.network' license = 'GPL-3.0' name = 'calamari-runtime' repository = 'https://github.com/Manta-Network/Manta/' -version = '3.1.0' +version = '3.1.1' [dependencies] codec = { package = "parity-scale-codec", version = "2.3.1", default-features = false, features = ["derive", "max-encoded-len"] } diff --git a/runtime/calamari/src/weights/pallet_timestamp.rs b/runtime/calamari/src/weights/pallet_timestamp.rs index c01ccb594..46eccf59e 100644 --- a/runtime/calamari/src/weights/pallet_timestamp.rs +++ b/runtime/calamari/src/weights/pallet_timestamp.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for pallet_timestamp //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-11-10, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-12-06, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("calamari-dev"), DB CACHE: 128 // Executed Command: @@ -34,7 +34,6 @@ // --template=.github/resources/frame-weight-template.hbs // --output=pallet_timestamp.rs - #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -53,12 +52,12 @@ pub struct SubstrateWeight(PhantomData); impl pallet_timestamp::WeightInfo for SubstrateWeight { // Storage: Timestamp Now (r:1 w:1) fn set() -> Weight { - (16_961_000 as Weight) + (15_290_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn on_finalize() -> Weight { - (9_020_000 as Weight) + (8_639_000 as Weight) } } @@ -66,11 +65,11 @@ impl pallet_timestamp::WeightInfo for SubstrateWeight Weight { - (16_961_000 as Weight) + (15_290_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } fn on_finalize() -> Weight { - (9_020_000 as Weight) + (8_639_000 as Weight) } } diff --git a/runtime/manta/Cargo.toml b/runtime/manta/Cargo.toml index 07c958af9..e6a4759e4 100644 --- a/runtime/manta/Cargo.toml +++ b/runtime/manta/Cargo.toml @@ -5,7 +5,7 @@ homepage = 'https://manta.network' license = 'GPL-3.0' name = 'manta-runtime' repository = 'https://github.com/Manta-Network/Manta/' -version = '3.1.0' +version = '3.1.1' [dependencies] smallvec = "1.6.1" diff --git a/runtime/primitives/Cargo.toml b/runtime/primitives/Cargo.toml index 9f564271d..e7db32280 100644 --- a/runtime/primitives/Cargo.toml +++ b/runtime/primitives/Cargo.toml @@ -1,7 +1,7 @@ [package] authors = ['Manta Network'] name = "manta-primitives" -version = '3.1.0' +version = '3.1.1' edition = "2021" homepage = 'https://manta.network' license = 'GPL-3.0' From 9f887c893e8b4d0c9ead1b1c8b2bcb483ca33865 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Tue, 7 Dec 2021 00:11:38 +0200 Subject: [PATCH 13/26] Clean up para-id use in CLI --- node/src/chain_specs/calamari.rs | 20 ++++++++++---------- node/src/chain_specs/manta.rs | 20 ++++++++++---------- node/src/command.rs | 29 ++++++++++------------------- 3 files changed, 30 insertions(+), 39 deletions(-) diff --git a/node/src/chain_specs/calamari.rs b/node/src/chain_specs/calamari.rs index a48c1e645..6aac8613a 100644 --- a/node/src/chain_specs/calamari.rs +++ b/node/src/chain_specs/calamari.rs @@ -15,6 +15,7 @@ // along with Manta. If not, see . use super::*; +use crate::command::CALAMARI_PARACHAIN_ID; use calamari_runtime::{CouncilConfig, DemocracyConfig, GenesisConfig, TechnicalCommitteeConfig}; @@ -45,7 +46,7 @@ pub fn calamari_properties() -> Properties { p } -pub fn calamari_development_config(id: ParaId) -> CalamariChainSpec { +pub fn calamari_development_config() -> CalamariChainSpec { let properties = calamari_properties(); CalamariChainSpec::from_genesis( @@ -68,7 +69,6 @@ pub fn calamari_development_config(id: ParaId) -> CalamariChainSpec { get_account_id_from_seed::("Alice//stash"), get_account_id_from_seed::("Bob//stash"), ], - id, ) }, vec![], @@ -77,12 +77,12 @@ pub fn calamari_development_config(id: ParaId) -> CalamariChainSpec { Some(properties), Extensions { relay_chain: KUSAMA_RELAYCHAIN_DEV_NET.into(), - para_id: id.into(), + para_id: CALAMARI_PARACHAIN_ID.into(), }, ) } -pub fn calamari_local_config(id: ParaId) -> CalamariChainSpec { +pub fn calamari_local_config() -> CalamariChainSpec { let properties = calamari_properties(); CalamariChainSpec::from_genesis( @@ -129,7 +129,6 @@ pub fn calamari_local_config(id: ParaId) -> CalamariChainSpec { get_account_id_from_seed::("Dave//stash"), get_account_id_from_seed::("Eve//stash"), ], - id, ) }, vec![], @@ -138,7 +137,7 @@ pub fn calamari_local_config(id: ParaId) -> CalamariChainSpec { Some(properties), Extensions { relay_chain: KUSAMA_RELAYCHAIN_LOCAL_NET.into(), - para_id: id.into(), + para_id: CALAMARI_PARACHAIN_ID.into(), }, ) } @@ -147,7 +146,6 @@ fn calamari_dev_genesis( invulnerables: Vec<(AccountId, AuraId)>, root_key: AccountId, endowed_accounts: Vec, - id: ParaId, ) -> calamari_runtime::GenesisConfig { calamari_runtime::GenesisConfig { system: calamari_runtime::SystemConfig { @@ -170,7 +168,9 @@ fn calamari_dev_genesis( // of this. aura: Default::default(), sudo: calamari_runtime::SudoConfig { key: root_key }, - parachain_info: calamari_runtime::ParachainInfoConfig { parachain_id: id }, + parachain_info: calamari_runtime::ParachainInfoConfig { + parachain_id: CALAMARI_PARACHAIN_ID.into(), + }, collator_selection: calamari_runtime::CollatorSelectionConfig { invulnerables: invulnerables.iter().cloned().map(|(acc, _)| acc).collect(), candidacy_bond: KMA * 1000, // How many tokens will be reserved as collator @@ -208,11 +208,11 @@ fn calamari_dev_genesis( } } -pub fn calamari_testnet_config(id: ParaId) -> Result { +pub fn calamari_testnet_config() -> Result { let mut spec = CalamariChainSpec::from_json_bytes( &include_bytes!("../../../genesis/calamari-testnet-genesis.json")[..], )?; - spec.extensions_mut().para_id = id.into(); + spec.extensions_mut().para_id = CALAMARI_PARACHAIN_ID.into(); Ok(spec) } diff --git a/node/src/chain_specs/manta.rs b/node/src/chain_specs/manta.rs index 0e977c413..7c0c33dbc 100644 --- a/node/src/chain_specs/manta.rs +++ b/node/src/chain_specs/manta.rs @@ -15,6 +15,7 @@ // along with Manta. If not, see . use super::*; +use crate::command::MANTA_PARACHAIN_ID; pub type MantaChainSpec = sc_service::GenericChainSpec; @@ -41,7 +42,7 @@ pub fn manta_properties() -> Properties { } // manta chain spec -pub fn manta_development_config(id: ParaId) -> MantaChainSpec { +pub fn manta_development_config() -> MantaChainSpec { let properties = manta_properties(); MantaChainSpec::from_genesis( @@ -64,7 +65,6 @@ pub fn manta_development_config(id: ParaId) -> MantaChainSpec { get_account_id_from_seed::("Alice//stash"), get_account_id_from_seed::("Bob//stash"), ], - id, ) }, vec![], @@ -73,12 +73,12 @@ pub fn manta_development_config(id: ParaId) -> MantaChainSpec { Some(properties), Extensions { relay_chain: POLKADOT_RELAYCHAIN_DEV_NET.into(), - para_id: id.into(), + para_id: MANTA_PARACHAIN_ID.into(), }, ) } -pub fn manta_local_config(id: ParaId) -> MantaChainSpec { +pub fn manta_local_config() -> MantaChainSpec { let properties = manta_properties(); MantaChainSpec::from_genesis( @@ -113,7 +113,6 @@ pub fn manta_local_config(id: ParaId) -> MantaChainSpec { get_account_id_from_seed::("Dave//stash"), get_account_id_from_seed::("Eve//stash"), ], - id, ) }, vec![], @@ -122,7 +121,7 @@ pub fn manta_local_config(id: ParaId) -> MantaChainSpec { Some(properties), Extensions { relay_chain: POLKADOT_RELAYCHAIN_LOCAL_NET.into(), - para_id: id.into(), + para_id: MANTA_PARACHAIN_ID.into(), }, ) } @@ -131,7 +130,6 @@ fn manta_dev_genesis( invulnerables: Vec<(AccountId, AuraId)>, root_key: AccountId, endowed_accounts: Vec, - id: ParaId, ) -> manta_runtime::GenesisConfig { manta_runtime::GenesisConfig { system: manta_runtime::SystemConfig { @@ -154,7 +152,9 @@ fn manta_dev_genesis( // of this. aura: Default::default(), sudo: manta_runtime::SudoConfig { key: root_key }, - parachain_info: manta_runtime::ParachainInfoConfig { parachain_id: id }, + parachain_info: manta_runtime::ParachainInfoConfig { + parachain_id: MANTA_PARACHAIN_ID.into(), + }, collator_selection: manta_runtime::CollatorSelectionConfig { invulnerables: invulnerables.iter().cloned().map(|(acc, _)| acc).collect(), candidacy_bond: MANTA * 10000, // How many tokens will be reserved as collator @@ -181,11 +181,11 @@ fn manta_dev_genesis( } } -pub fn manta_testnet_config(id: ParaId) -> Result { +pub fn manta_testnet_config() -> Result { let mut spec = MantaChainSpec::from_json_bytes( &include_bytes!("../../../genesis/manta-testnet-genesis.json")[..], )?; - spec.extensions_mut().para_id = id.into(); + spec.extensions_mut().para_id = MANTA_PARACHAIN_ID.into(); Ok(spec) } diff --git a/node/src/command.rs b/node/src/command.rs index 9f8036687..3ffbae564 100644 --- a/node/src/command.rs +++ b/node/src/command.rs @@ -63,20 +63,17 @@ impl IdentifyChain for T { } } -fn load_spec( - id: &str, - para_id: ParaId, -) -> std::result::Result, String> { +fn load_spec(id: &str) -> std::result::Result, String> { match id { // manta chainspec - "manta-dev" => Ok(Box::new(chain_specs::manta_development_config(para_id))), - "manta-local" => Ok(Box::new(chain_specs::manta_local_config(para_id))), - "manta-testnet" => Ok(Box::new(chain_specs::manta_testnet_config(para_id)?)), + "manta-dev" => Ok(Box::new(chain_specs::manta_development_config())), + "manta-local" => Ok(Box::new(chain_specs::manta_local_config())), + "manta-testnet" => Ok(Box::new(chain_specs::manta_testnet_config()?)), "manta" => Ok(Box::new(chain_specs::manta_config()?)), // calamari chainspec - "calamari-dev" => Ok(Box::new(chain_specs::calamari_development_config(para_id))), - "calamari-local" => Ok(Box::new(chain_specs::calamari_local_config(para_id))), - "calamari-testnet" => Ok(Box::new(chain_specs::calamari_testnet_config(para_id)?)), + "calamari-dev" => Ok(Box::new(chain_specs::calamari_development_config())), + "calamari-local" => Ok(Box::new(chain_specs::calamari_local_config())), + "calamari-testnet" => Ok(Box::new(chain_specs::calamari_testnet_config()?)), "calamari-testnet-ci" => Ok(Box::new(chain_specs::calamari_testnet_ci_config()?)), "calamari" => Ok(Box::new(chain_specs::calamari_config()?)), path => { @@ -128,11 +125,7 @@ impl SubstrateCli for Cli { } fn load_spec(&self, id: &str) -> std::result::Result, String> { - if id.starts_with("manta") { - load_spec(id, MANTA_PARACHAIN_ID.into()) - } else { - load_spec(id, CALAMARI_PARACHAIN_ID.into()) - } + load_spec(id) } fn native_runtime_version(chain_spec: &Box) -> &'static RuntimeVersion { @@ -280,10 +273,8 @@ pub fn run() -> Result<()> { builder.with_profiling(sc_tracing::TracingReceiver::Log, ""); let _ = builder.init(); - let block: Block = generate_genesis_block(&load_spec( - ¶ms.chain.clone().unwrap_or_default(), - params.parachain_id.unwrap_or(MANTA_PARACHAIN_ID).into(), - )?)?; + let block: Block = + generate_genesis_block(&load_spec(¶ms.chain.clone().unwrap_or_default())?)?; let raw_header = block.header().encode(); let output_buf = if params.raw { raw_header From 93aecd5c60df86f03fb778a9da7a7b167a7abf06 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 13 Dec 2021 10:24:13 +0200 Subject: [PATCH 14/26] Remove tryinto/tryfrom; Add MSRV in README --- README.md | 4 ++++ pallets/vesting/src/benchmarking.rs | 2 +- pallets/vesting/src/lib.rs | 1 - 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 43eb898cc..32f800a17 100644 --- a/README.md +++ b/README.md @@ -69,3 +69,7 @@ git push origin my-awesome-feature --tags ``` now you can watch the ci build your awesome feature and publish your draft release on the [actions tab](https://github.com/Manta-Network/Manta/actions/workflows/publish-draft-releases.yml). note that draft [releases](https://github.com/Manta-Network/Manta/releases) become available relatively quickly, but wasm and binary artifacts are only added to the draft release when their ci build completes, which may be an hour or more after your git push. + +## Minimum supported rust compiler + +This project's MSRV is `rustc 1.56` \ No newline at end of file diff --git a/pallets/vesting/src/benchmarking.rs b/pallets/vesting/src/benchmarking.rs index d36a61ce1..a6a6cf342 100644 --- a/pallets/vesting/src/benchmarking.rs +++ b/pallets/vesting/src/benchmarking.rs @@ -21,7 +21,7 @@ extern crate alloc; use super::*; #[allow(unused_imports)] use crate::Pallet as CalamariVesting; -use core::{convert::TryInto, ops::Div, time::Duration}; +use core::{ops::Div, time::Duration}; use frame_benchmarking::{account, benchmarks, impl_benchmark_test_suite, whitelisted_caller}; use frame_support::assert_ok; use frame_system::RawOrigin; diff --git a/pallets/vesting/src/lib.rs b/pallets/vesting/src/lib.rs index 1c2f8a221..3a3c911a6 100644 --- a/pallets/vesting/src/lib.rs +++ b/pallets/vesting/src/lib.rs @@ -25,7 +25,6 @@ mod tests; pub mod weights; pub use crate::weights::WeightInfo; -use core::convert::TryFrom; use frame_support::{ ensure, pallet_prelude::*, From 317f7b3bb9d7e15323dae45fa3948d1d78de30d4 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Tue, 14 Dec 2021 21:06:20 +0200 Subject: [PATCH 15/26] Remove para-id mentions in code base --- .github/resources/config-for-integration-test.json | 1 - .github/resources/config-for-runtime-upgrade-test.json | 1 - .github/workflows/publish-draft-releases.yml | 8 -------- 3 files changed, 10 deletions(-) diff --git a/.github/resources/config-for-integration-test.json b/.github/resources/config-for-integration-test.json index 7fb70bb66..d87e73667 100644 --- a/.github/resources/config-for-integration-test.json +++ b/.github/resources/config-for-integration-test.json @@ -46,7 +46,6 @@ }, "parachains": [ { - "id": "2084", "nodes": [ { "name": "alice", diff --git a/.github/resources/config-for-runtime-upgrade-test.json b/.github/resources/config-for-runtime-upgrade-test.json index 0387c34bb..640da8743 100644 --- a/.github/resources/config-for-runtime-upgrade-test.json +++ b/.github/resources/config-for-runtime-upgrade-test.json @@ -46,7 +46,6 @@ }, "parachains": [ { - "id": "2084", "nodes": [ { "wsPort": 9921, diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index 78b38888f..f3acae2ef 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -51,10 +51,8 @@ jobs: runtime: - name: calamari - para-id: 2084 - name: manta - para-id: 2015 steps: - uses: actions/checkout@v2 @@ -292,10 +290,8 @@ jobs: - name: calamari chain-spec: calamari-testnet-ci - para-id: 2084 - name: manta - para-id: 2015 steps: - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} @@ -759,10 +755,8 @@ jobs: runtime: - name: calamari - para-id: 2084 - name: manta - para-id: 2015 if: startsWith(github.ref, 'refs/tags') steps: - @@ -839,10 +833,8 @@ jobs: runtime: - name: calamari - para-id: 2084 - name: manta - para-id: 2015 if: startsWith(github.ref, 'refs/tags') steps: - From 8c1f137a1807517e513f01b862220677c06f825d Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Tue, 14 Dec 2021 21:28:48 +0200 Subject: [PATCH 16/26] Remove para-id mentions in code base --- .github/workflows/publish-draft-releases.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index f3acae2ef..0ff0d0c1c 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -333,12 +333,10 @@ jobs: --arg name "calamari testnet base" \ --arg id ${{ matrix.runtime.chain-spec }}-base \ --arg relay_chain rococo-local-base \ - --arg parachain_id 2084 \ '. | .name = $name | .id = $id | .relay_chain = $relay_chain | - .para_id = ($parachain_id | tonumber) | .telemetryEndpoints = [["/dns/api.telemetry.manta.systems/tcp/443/x-parity-wss/%2Fsubmit%2F", 0]] ' $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-spec.json > $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-base-spec.json ls -ahl $HOME/.local/share/calamari-pc/ @@ -536,12 +534,10 @@ jobs: --arg name "calamari testnet ${GITHUB_SHA:0:7}" \ --arg id ${{ matrix.chain-spec.id }}-${GITHUB_SHA:0:7} \ --arg relay_chain rococo-local-${GITHUB_SHA:0:7} \ - --arg parachain_id 2084 \ '. | .name = $name | .id = $id | .relay_chain = $relay_chain | - .para_id = ($parachain_id | tonumber) | .telemetryEndpoints = [["/dns/api.telemetry.manta.systems/tcp/443/x-parity-wss/%2Fsubmit%2F", 0]] ' $HOME/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-spec.json > $HOME/.local/share/calamari-pc/${{ matrix.chain-spec.id }}-${GITHUB_SHA:0:7}-spec.json ls -ahl $HOME/.local/share/calamari-pc/ From 3233a3dab055c999c67027c3c4c468cc3c8cc151 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Fri, 17 Dec 2021 15:23:56 +0200 Subject: [PATCH 17/26] Use correct polkadot-launch config for genesis --- .../config-for-integration-test.json | 4 ++-- .../config-for-runtime-upgrade-test.json | 22 +++++++++---------- .github/workflows/publish-draft-releases.yml | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/resources/config-for-integration-test.json b/.github/resources/config-for-integration-test.json index d87e73667..cb1b12b92 100644 --- a/.github/resources/config-for-integration-test.json +++ b/.github/resources/config-for-integration-test.json @@ -34,10 +34,10 @@ "genesis": { "runtime": { "runtime_genesis_config": { - "parachainsConfiguration": { + "configuration": { "config": { "validation_upgrade_frequency": 1, - "validation_upgrade_delay": 1 + "validation_upgrade_delay": 10 } } } diff --git a/.github/resources/config-for-runtime-upgrade-test.json b/.github/resources/config-for-runtime-upgrade-test.json index 640da8743..b454d6a31 100644 --- a/.github/resources/config-for-runtime-upgrade-test.json +++ b/.github/resources/config-for-runtime-upgrade-test.json @@ -32,17 +32,17 @@ } ], "genesis": { - "runtime": { - "runtime_genesis_config": { - "parachainsConfiguration": { - "config": { - "validation_upgrade_frequency": 1, - "validation_upgrade_delay": 1 - } - } - } - } - } + "runtime": { + "runtime_genesis_config": { + "configuration": { + "config": { + "validation_upgrade_frequency": 1, + "validation_upgrade_delay": 10 + } + } + } + } + } }, "parachains": [ { diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index 0ff0d0c1c..27c050e7c 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -428,14 +428,14 @@ jobs: cd ${{ github.workspace }}/dev-tools-calamari/runtime-upgrade-test yarn install yarn - sleep 60 + sleep 120 pm2 start index.js \ --name test-runtime-upgrade-${{ matrix.runtime.chain-spec }} \ --output ${{ github.workspace }}/test-runtime-upgrade-${{ matrix.runtime.chain-spec }}-stdout.log \ --error ${{ github.workspace }}/test-runtime-upgrade-${{ matrix.runtime.chain-spec }}-stderr.log \ --no-autorestart cd ${{ github.workspace }} - sleep 120 + sleep 180 - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} name: stop testnet From 907aaf68e07145c4b234360758de10c5ba8526ca Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 20 Dec 2021 10:24:14 +0200 Subject: [PATCH 18/26] Fix merge conflicts with manta branch --- .../generate_manta_weights_files.yml | 8 +++++++ .github/workflows/publish-draft-releases.yml | 21 +++++++++++++------ node/src/chain_specs/manta.rs | 8 +++++++ node/src/command.rs | 1 + 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/.github/workflows/generate_manta_weights_files.yml b/.github/workflows/generate_manta_weights_files.yml index 483b96ce6..210fa97b6 100644 --- a/.github/workflows/generate_manta_weights_files.yml +++ b/.github/workflows/generate_manta_weights_files.yml @@ -152,6 +152,14 @@ jobs: id: pallet_multisig name: pallet_multisig iterations: 20 + - + extrinsic: + id: '*' + name: pallet_timestamp + pallet: + id: pallet_timestamp + name: pallet_timestamp + iterations: 20 steps: - uses: actions/download-artifact@v2 diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index 27c050e7c..7cb7fab79 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -281,6 +281,7 @@ jobs: - build-runtimes - start-runtime-upgrade-tester - check-for-runtime-upgrade + - parse-runtimes runs-on: ${{ needs.start-runtime-upgrade-tester.outputs.runner-label }} timeout-minutes: 90 strategy: @@ -292,6 +293,7 @@ jobs: chain-spec: calamari-testnet-ci - name: manta + chain-spec: manta-testnet-ci steps: - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} @@ -436,6 +438,19 @@ jobs: --no-autorestart cd ${{ github.workspace }} sleep 180 + - + # check_runtime_version.js reads the spec-version on-chain + # and compares it to the old runtime version we parsed earlier + # returns 0 if the former is less than or equal to the latter + # otherwise returns 1 + if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} + name: check if spec version was successfully incremented + run: | + cd ${{ github.workspace }}/dev-tools-calamari/runtime-upgrade-test + node check_runtime_version.js --address=ws://127.0.0.1:9921 --compare_to={{ needs.parse-runtimes.outputs.calamari-runtime-base }} + echo $? + if [ $? == 0 ]; then echo "Runtime upgrade failed, still using old spec version - ${{ needs.parse-runtimes.outputs.calamari-runtime-base }}"; exit 1; fi + cd ${{ github.workspace }} - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} name: stop testnet @@ -456,12 +471,6 @@ jobs: with: name: runtime-upgrade-test-for-${{ matrix.runtime.chain-spec }}-stderr.log path: ${{ github.workspace }}/test-runtime-upgrade-${{ matrix.runtime.chain-spec }}-stderr.log - - - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} - name: parse runtime upgrade log - run: | - grep 'Included at block hash' ${{ github.workspace }}/test-runtime-upgrade-${{ matrix.runtime.chain-spec }}-stdout.log | while read -r line; do words=($line); echo ${words} | tee ${{ github.workspace }}/runtime-upgrade-output.csv; done - if [ ! -f ${{ github.workspace }}/runtime-upgrade-output.csv ]; then echo "Runtime upgrade failed"; exit 1; fi - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} name: parse calamari block times diff --git a/node/src/chain_specs/manta.rs b/node/src/chain_specs/manta.rs index 7c0c33dbc..3ac86ebbe 100644 --- a/node/src/chain_specs/manta.rs +++ b/node/src/chain_specs/manta.rs @@ -192,3 +192,11 @@ pub fn manta_testnet_config() -> Result { pub fn manta_config() -> Result { MantaChainSpec::from_json_bytes(&include_bytes!("../../../genesis/manta-genesis.json")[..]) } + +pub fn manta_testnet_ci_config(id: ParaId) -> Result { + let mut spec = MantaChainSpec::from_json_bytes( + &include_bytes!("../../../genesis/manta-testnet-ci-genesis.json")[..], + )?; + spec.extensions_mut().para_id = id.into(); + Ok(spec) +} diff --git a/node/src/command.rs b/node/src/command.rs index 3ffbae564..a12535f43 100644 --- a/node/src/command.rs +++ b/node/src/command.rs @@ -69,6 +69,7 @@ fn load_spec(id: &str) -> std::result::Result, St "manta-dev" => Ok(Box::new(chain_specs::manta_development_config())), "manta-local" => Ok(Box::new(chain_specs::manta_local_config())), "manta-testnet" => Ok(Box::new(chain_specs::manta_testnet_config()?)), + "manta-testnet-ci" => Ok(Box::new(chain_specs::manta_testnet_ci_config()?)), "manta" => Ok(Box::new(chain_specs::manta_config()?)), // calamari chainspec "calamari-dev" => Ok(Box::new(chain_specs::calamari_development_config())), From 2e47653402af2ae22f87543beb37bb37c25aee2b Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 20 Dec 2021 10:24:14 +0200 Subject: [PATCH 19/26] Fix merge conflicts with manta branch --- .../generate_manta_weights_files.yml | 8 +++++++ .github/workflows/publish-draft-releases.yml | 21 +++++++++++++------ node/src/chain_specs/manta.rs | 8 +++++++ node/src/command.rs | 1 + 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/.github/workflows/generate_manta_weights_files.yml b/.github/workflows/generate_manta_weights_files.yml index 483b96ce6..210fa97b6 100644 --- a/.github/workflows/generate_manta_weights_files.yml +++ b/.github/workflows/generate_manta_weights_files.yml @@ -152,6 +152,14 @@ jobs: id: pallet_multisig name: pallet_multisig iterations: 20 + - + extrinsic: + id: '*' + name: pallet_timestamp + pallet: + id: pallet_timestamp + name: pallet_timestamp + iterations: 20 steps: - uses: actions/download-artifact@v2 diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index 27c050e7c..7cb7fab79 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -281,6 +281,7 @@ jobs: - build-runtimes - start-runtime-upgrade-tester - check-for-runtime-upgrade + - parse-runtimes runs-on: ${{ needs.start-runtime-upgrade-tester.outputs.runner-label }} timeout-minutes: 90 strategy: @@ -292,6 +293,7 @@ jobs: chain-spec: calamari-testnet-ci - name: manta + chain-spec: manta-testnet-ci steps: - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} @@ -436,6 +438,19 @@ jobs: --no-autorestart cd ${{ github.workspace }} sleep 180 + - + # check_runtime_version.js reads the spec-version on-chain + # and compares it to the old runtime version we parsed earlier + # returns 0 if the former is less than or equal to the latter + # otherwise returns 1 + if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} + name: check if spec version was successfully incremented + run: | + cd ${{ github.workspace }}/dev-tools-calamari/runtime-upgrade-test + node check_runtime_version.js --address=ws://127.0.0.1:9921 --compare_to={{ needs.parse-runtimes.outputs.calamari-runtime-base }} + echo $? + if [ $? == 0 ]; then echo "Runtime upgrade failed, still using old spec version - ${{ needs.parse-runtimes.outputs.calamari-runtime-base }}"; exit 1; fi + cd ${{ github.workspace }} - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} name: stop testnet @@ -456,12 +471,6 @@ jobs: with: name: runtime-upgrade-test-for-${{ matrix.runtime.chain-spec }}-stderr.log path: ${{ github.workspace }}/test-runtime-upgrade-${{ matrix.runtime.chain-spec }}-stderr.log - - - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} - name: parse runtime upgrade log - run: | - grep 'Included at block hash' ${{ github.workspace }}/test-runtime-upgrade-${{ matrix.runtime.chain-spec }}-stdout.log | while read -r line; do words=($line); echo ${words} | tee ${{ github.workspace }}/runtime-upgrade-output.csv; done - if [ ! -f ${{ github.workspace }}/runtime-upgrade-output.csv ]; then echo "Runtime upgrade failed"; exit 1; fi - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} name: parse calamari block times diff --git a/node/src/chain_specs/manta.rs b/node/src/chain_specs/manta.rs index 7c0c33dbc..3ac86ebbe 100644 --- a/node/src/chain_specs/manta.rs +++ b/node/src/chain_specs/manta.rs @@ -192,3 +192,11 @@ pub fn manta_testnet_config() -> Result { pub fn manta_config() -> Result { MantaChainSpec::from_json_bytes(&include_bytes!("../../../genesis/manta-genesis.json")[..]) } + +pub fn manta_testnet_ci_config(id: ParaId) -> Result { + let mut spec = MantaChainSpec::from_json_bytes( + &include_bytes!("../../../genesis/manta-testnet-ci-genesis.json")[..], + )?; + spec.extensions_mut().para_id = id.into(); + Ok(spec) +} diff --git a/node/src/command.rs b/node/src/command.rs index 3ffbae564..a12535f43 100644 --- a/node/src/command.rs +++ b/node/src/command.rs @@ -69,6 +69,7 @@ fn load_spec(id: &str) -> std::result::Result, St "manta-dev" => Ok(Box::new(chain_specs::manta_development_config())), "manta-local" => Ok(Box::new(chain_specs::manta_local_config())), "manta-testnet" => Ok(Box::new(chain_specs::manta_testnet_config()?)), + "manta-testnet-ci" => Ok(Box::new(chain_specs::manta_testnet_ci_config()?)), "manta" => Ok(Box::new(chain_specs::manta_config()?)), // calamari chainspec "calamari-dev" => Ok(Box::new(chain_specs::calamari_development_config())), From 416b537f050bd60d79d9a3a07ddb6ee16ac94cf8 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 20 Dec 2021 10:28:36 +0200 Subject: [PATCH 20/26] Add missing file --- genesis/manta-testnet-ci-genesis.json | 85 +++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 genesis/manta-testnet-ci-genesis.json diff --git a/genesis/manta-testnet-ci-genesis.json b/genesis/manta-testnet-ci-genesis.json new file mode 100644 index 000000000..ce86a1268 --- /dev/null +++ b/genesis/manta-testnet-ci-genesis.json @@ -0,0 +1,85 @@ +{ + "name": "Manta Parachain Testnet", + "id": "manta_testnet", + "chainType": "Local", + "bootNodes": [], + "telemetryEndpoints": [ + [ + "/dns/api.telemetry.manta.systems/tcp/443/x-parity-wss/%2Fsubmit%2F", + 0 + ] + ], + "protocolId": "manta", + "properties": { + "ss58format": 77, + "tokenDecimals": 18, + "tokenSymbol": "MANTA" + }, + "relay_chain": "polkadot-dev", + "para_id": 2015, + "consensusEngine": null, + "codeSubstitutes": {}, + "genesis": { + "raw": { + "top": { + "0x15464cac3378d46f113cd5b7a4d71c844e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x7474449cca95dc5d0c00e71735a6d17d4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x000000fc4ec1fa6e4d7ec51100000000", + "0x79e2fe5d327165001f8232643023ed8b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x0d715f2646c8f85767b5d2764bb278264e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x57f8dc2f5ab09467896f47300f0424384e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3db7a24cfdc9de785974746c14a99df94e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef734abf5cb34d6244378cddbf18e849d96": "0x000000000000000000000000000000000000000000000000", + "0x3a63": "0x", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da92bef614566608d298dcfce683165c05db06e5d852078f64ab74af9b31add10e36d0438b847bc925fbacbf1e14963e379": "0x00000000010000000100000000000000000000e4d20cc8dcd2b7520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd0058549304fea105851151106878940e6acc2110b96481222f60db64d47b1767c1b521fb73ced5e39e10224a04fe67914f7c31fe0463c59598c981ac21d4e8187b664607a3c17c5fb7792f5acb0aa2ddb7ddc8de926cb9a59432a51403126c1037113e25f525aee44255045ef8c2999fb248474814f1d4a7a49e72db5d89ab7be4e2ea0f6f61322b527a29658c1142f8deeb7e9911e9b7fc65444a3223c26fbd887546a4c4adc78c48e97783d4d29673c4f2f5c576dbbfb6fac3724ea60b55f9fa7efa7ccb7d7a6e553abbcf6b97dbd660bfab21b478b84162dce6db60777d715403076586ccd09bd06580c6deae35aa9e7834ea7dfb76b305260600130ce8efca8a963ff140f24d88f69c7d774fdcac0385800635ba5c837507fd2649a3aa5f51a351f2eb6ef1d0a14be82fa133408b5e77cc4b17225175dad0a8aaedd028e93534eabd741c1ab5ab219078e91ce81ef8f376cc867979f355c84bdfcca74f605e3a8f46f54b29a5638dd2919c932dd368d0476344ba7c2e9f159fe5d3e37bd1a2920abfe5964bdedef7698b73325d4660ba749fb6b89a7a8b3703b29cabf0a3bf6d6eaf67dc9c085599f37d4d7d531a22bce53c677fde5bcef376cbe974ca990d3ebf0ba45ace3e378b36c6199176cbe7d6fe8cb45b96c7e943f29fd3785d2ee5b9f4b99591d22f796dd1a514e2333f9dbe6d48fe73b9d5fee7d15fe57f93db05f288c4e74ea65b4e9f14cca50cc9a72e4568cba8543f64f3970f615f728a618e611856e6afdd20cfb1adf23f6c8b4e39e92fa7a54d8801cf1b64fadb6afff4e8a522d11f9ff9cb377b40ea2f6e17c8749f7e5be59fde1991e8937beef3dec61e37fa9c3eec6ded4c84ff39e4b412cf2b9c604b3f29820d1eed271ae814b653ce966b34def8f7065a724a437d7de7359de7af6b3bcdf51dc2bf9b6f109e5f8f46a2979c96b6c64a5bf4cd8a943cfa7469dbe7cbe28cc8a4e1a79b012dd768dd5d3edd72ce804a5c4d7dc97d9e4f5bdb6983ddad5f1b8d1b15feca54182b6d97c76d1fd2d7fc9e49e87d0e91f7d327e71b649d3f6e17e7c4f2e9a56d1f6642f3a36f1601cb2787d1ecd66095c7afc36e9d3323d2d74b44f867772bb71ce91b46a57a023cb5b66af9744a37bbb89afacb4b5be57f400a08bf0ba4e4d37d5e69639fdb3e656cb38b137adf3edb85e047afd02527c41fb994c53108ba4838e2c28615224cc106d2cf6674fbd41dbbd61d7b8f569db1676721cfce5e43a3e2b37ba3368c1a609e5da77bf887bfcaf0bccebe3afcdadf6683e6e4b900be3e3bdd1d52793ea6a20da58f3442af8fab44ffbc5e1058287ce4ba408fbe1bf4b85d2006275c71e667fd6db5cabf2afd496acb5b5e893efa2e0dbb31d45d1181f443fc160765cb78a177e6cc4bae4b9575a2940dcafc404e55ab7ce4eaf37a7dbbcf7b9b009e3206b7f5cd34b048d0f2b36f13c03f224ef5eb25748dba72d474b1d4c3c9d410028c3aff3d7fcfdff3f78488e2df7bef3da10ba4b5efca4a986f9f9826037580c6be3dc3fa52ba0cd07625449137aabde1a951ed3a8d82dfab20ca7c3bd63def077e05f2cde3db99270a65e7ad3b9dce81eeb753f6c75e1ffbf36577f27c9af2d6bf7a2a32839f95792a3634b431dede67542496f45430d30e91c2aa1762c0b3b76f8604aa54cf463415d6a8fd76cad8ee10f65af9df86008dfff9fa6645b8d9dd1ed933cfbbad4e3fee33e8fe36aab6afc376f6babedd6d77d011a0b5236977b2dc7607b9c7f974aa79027419a041afa78fced3a83a8534aa6a5da32acf478f2e43a3dec72c9448fae83cbaa77f6af8f815c847d71ad51efda651cfa347c71ac51e7d7522e7645744747d752acf3fa7bbf153ce806077ecdb1d7375e83d6cce809833027db77d4a372b22b9ea2f7d76b65c03bbe3ead0fb12b5a8755d5cbdbce4978569bfae35caf2e7378dbafc39bdb6ed6ebbc39cb322fcb03b8cab9897b06de8fde5947bf999d6daf6e9b65fba4ebf3e5f0f16ffd9ded90d5279fc72557af4e7f4edeec3adf253895f97fce486e2af6f06b4d8b753dad86692aba997cedb6e2f5baea130dbadc1bad3e9eeb9e5deddf3cd80ac2737587ff8a1f7d277d3b6edae9d3320c9456e76a7356aff9fc36ddfe7eb812a954aa5fa79deed90f7cf75787e614895381e413701daae80d8e277a5328380df151045efdfbe99106da54afa0abfdda727fb9cfb7ab677aaf6ec55fb3abf1d366abd7d1b65f93a6c94f4f5d9a8fd752ab77d6be3a71b83f630ce802c6e064d7a6740d237b3615f7a66c472c955cb2da79d19d1def2cd6077d037038a2e37cb377b74b392cfadcecb4b1b12e91757d99a153ab97c7f33a0cbe9dcaa035e3add6c7275fe74b9d55dbd746bab960d497058b2430fdb9d749f37372742efcc9933667efabeb5edcbadd6f0d0296373838e44c8cb6b13b27e72959fca7bc9d51f5e3a65ccdaf63793dcd0fbc870dbeed8dfb6ddd59b675f9dbe185aa13839dafa4aba8d62aff3d7b751edebb4377ede98b1def661a3a2af53662cb2d3c6505a3b0e8605ed797bf49701456e068d9d3e2c6efc9db16ff6dca737036af769ca186ffbbdf16f26817d769ff6e91433b780ae01344ab33a55eb81bdf37c9d6e0c1a6740db5d9dff7cb322fcdbdd739f9641e367cf61dfdfeed6738ecc6f9fdf5cce9176e8ed901be2aff0d79f6f6684bdb9daceeed3da2f0ca9e6145d0668edf5f4cf9f9f1ab5fe9c47a3d89fc3eee19fe75aa3368b2c90fef9366abfdefcf3d5799c13ff8521c55c84ee01b45d05a1fa9adf2ca230e2b786ee522f34ee374c16cebcf51b260b669e7f75d01d80b691eeebc1c27ea5b9774eed8af6769eb3af9f5e0f16e957a2e4b09c7eaeb0478e68c71c7de1ca166570d186971f2cf3e74a3bd18e39fac2952dcae0a20d2f3f574e6fe73973584e3f57d89b23da31475fb8b245195cb4e1e507cbfcb9d24eb4638ebe70658b32b868c3cbcf15762fd0d7899a5b0bcabe8daaebcc6d77ebeb29661c74572a2ebf165d1e6d235d02681bb123b010451053c2a8804d01f3027b020b8389c18880718109011b028605b604e603cc0aec07580f301e6038c09a805581dd00cb02eb0293029b026b82b681a9e8194c08ca06f502ed02ed828ea1665029d028d03228142819740c2a060d834e816e816a81ae41d5a069d02c502cd032f40ad40ab40a140d4a05ca056d02d5820e81aee816508c52123017602dc09088ab362302a1b444494b2906a52ba521de14ac1794ac5831883fc07650228272819a91aa78c6fa624d61496179b1a0b08460656185a135b0b650284a60605c303422172c18c42d5c5aae14c833b20df905c986f482ec82e402df801695924a6894a84087286581b680b28022418ba0475015d02c548892154a6b94c894ce949a50325322a3d406b5522a4355a52a94ba2839a134a6c445e98c921a252994b640812815a164841211a415b207128cf4c1f5843423b720b520d7906ac8346416605269cb442acd8072e9a492125408d40954060d05d98226a3c7e033980c9bc15f040152010a7015710a1e9ce890c307982cc1a1c8931a681842046302e605ab0146056603ec0bf6020c0618b8004d0245a23c28e1803e5162020b0203827e616271dd004b02968306c295838b8da9c655c5dcc25ce3c2c1acc2cc822ca2a4c5c4c244634ae1ca32cf2821a1748449668631cb88632e2f5c5d98502865994f9043cc2c3807334cfce2d2c12cc3574c322e2aae2bec84f6a29530d3985f4c2fe614a61666d2bcc2a4c285e52ae2292e223a0b6c0b9731a330c7b8acc426c8a3c903c944e4d25cf4163307908b79832805e9654e31bd4432e613b3cb746236319968224c194c2e4350d88af6c15ca29b306330b74c18cc241a09d368ba60b660b260ae60aa60a6606a994748277a358d9845f0187e028f81290143c2b6c0ba604bb0526069b18cb05060a9c0c2629d40462165109568273413e011260e6219128a6983294514634611cf98359834a04aa04ca04b9035883a903490332845612531c19059e4095e14a4197c041bc128e02c7c022e82b1701113c143f015b6c24270100c04ab524426a85202128ce08748264681bb90582e30314936116530c1b410a60e60136615d18c49c5fc12a130a198477306d10b8642ec223a218e117d10ad883d885a220fe20e22988982120a22137189088398023a03cac4f4c2ec0275e23ac15504766465b188b08e80614030e017b00be8843805ab689a99568063a618d30cb80564025c02540244824980487862de10de8ab7b8ccb8b6b886105f60297105e16179458f88fe423f817bd05fc827ba8b1ed360300f7a09f4088dd449e823b4165d04f8841643bbc8a2364263d157b415fd03c6014b81a3c06230199cc4613017dc04e8050f8185c040c09260227018f60163c141e0158be11ff41058066c03fec22ba03b601630123e48d980069250320b4022811fe804e55f9e4757bfa0294c3ea0a40726413b285142f9e90025488992d272d0930f301982e20308940ce51024a5890e509a2851b2a324260725514000c5c89327511a309443d09327511a4080d21076ca93264c8682745012140402019484b0514000a58992114809f2414849931e7e084a100f236092c44b596c500e50a24051c24449931e3e28072851243004c5872839e4f03d4a6174889243900e3f4a41d829230872a264ca9411041d8112a5c994294115d84a57ac089af4f052829c48898201245b0908ab24c887201f2670830e41210801931b0850fac14e719243d00e39f860a70c41099212b40394265eb2024a1310e4947ab039349902a58994a11f82948ce0490f3d305122254887274d7cf871924394273f3c4a3c581e94301962a20393a1a008d494764082264f9834196a02a5098e12181f7208fa21c8a6a4839512a5015829073b25a8c9501329517618f281c98dd20d164a9426434ca4f8a08392a1284fa62869d2c33391e2c3e39040ac931ca23cf98092a021263a3479c2848a2947cc62654186ea374577a5523da7de0e09670067c03db00515b080dddd052840010a607e2fbe08e38b1c037333f7d5ccdc31b2645ef8627c117237332ff61a9310323623841c794aa833e72543e9411964982f7233b4603343184b91bb1bce19e7c3ba9f65314f2c623de783f37a734e8eb0f4164e6c639c33be37394a2cc6f72084b4bb6ba081861d70c70eb8834d3b1a7abf18b8a3f131d461c5086903a03b42182dcbb262773f185f840780d0d490638471c6e6ee08d926768c11324748638c5677c737244218b9614c40c37e56d4b48e118bdd6d6aac4d31328c3132775b96c50f327c735f8c0db963c36ed8a6080b30e37bb2000588b33b6e946fdf83fb1aceab65783142dadd10c21dfb227ca666e66845b6da8a168c310a893d8c8294d28e1c0fc00c63cfc0916177067bc80061c71711708007bba30d8c0688568490d28e3cdd9127c68e31c4c0903936840ce78350c2f94a11ca02481963e49771478e8c61f17aaf5f84310669e6e6083b0221c000a096bd082d2bc2c662ecde61e6d81d6377303285540011524a697c3d1b76ccb208ad00c00861841042d811368c31768c56ec18238c307684b02377478e1c61c786317633c738e18c3b223f00f48b0fbe08618cb1bb6384f14d58bae6933a13c33008e1ecc8f04919bb61c3389b99e1c2c0ed322fb3f36631cf658e901932b35c082fcfba7f408e307264deb9b1ad092186613e2c0bc3b023604978393a044909d2414a1425a8190e10d444cad0000450b3a3078e931c987ce0c9932803e081a3c3878e1d39d8500e4ca64061226548c950131e7888d2e1e0b49c29412180c264871c3828413df4c0c4e2a1d700415240a0444a942126394479f284090f1e9a0c41f1410aa78160c8871e413b281982d2444a0f4a7298d284071e32a07afc104504433e50331c2047c8010ca0e400414e983cf98092104069b2c314263b384ed01013294150824200801d7b80a0295382a4f4c043941c944809a212258720294a984cd1218720250670829ae1003de410d48380274d9cf09c04a0234a14295d0e1d980449c111e444c9d00f415080e00881006ed6005386a634f921680037f6003f34014190941e786a8242c0444a94a1294a7478d264871c940c3df18109088274d8313d09a212f444c90f4c78f8611382284f9484004a93108420ca931d354341535c93c224e8490e4a7e08d2014a1325509a30d921071080200a67001d8260a0d90324c00033cc700029536030ed30a509942620e8a840097ad81a400994284da64809a2a2640420682225888a921d721862f201254352980c4d511265a8871148c941c9d00f4102a00225e8d96c8f404a141e82789054a0043d026454684844948a4b968888a8b46453444444d79225224a311113a5ac94244aa5620a2e21224abdd47c4b5244bd64532922a2545c42c4fb96a4988897a488988888e82d2162225e42c429222222b88428c54444bd8488898888526fc91211f59225e225294e11a5de9214ef12a25d42c444a94e594b529c8a4b529ce2259b924b3695ea25bba9542a05976c8a7b498a53a9d45bc2809705ef2ef33085c9065cddf155fbae3dbefd9f6b5de34f97441f7708bf74adc29f5c7d96e49e43871c74b22b2d7477c873feebaaa9f9f5dd9edd9dbae377fc3a6fcfb53bedbb41da59055a9b768340870cdfd6bf3acd39a0abc3522c2f7ca18d337fb9d0b4120410d65f1c8dd874e9351eb7ca5fe3747748ac89399c3256b57ab270bc765fe3bb43f8cce7704a19b3dc2d8fde63f3de996f7525c7f1ed9e1ba7beddd3a3c7c635cd2fb7b9bc8746b97a7a1cbffc66dbdeb9b87ac2f1e8a56d7b073bf3d44d980b49134765c7e3d80d7271351a812f247d8a1393d7b81393474c7abde8c50949bf1cf3b85558a35f26a726c74c9c100eae0b161b2fd9d878a96453e2a1a3fd74c3af945c875fb1f11b2e6db6dd1d8dabf371bcb4edeee0b8b5557f1cefad6a8f53e398ea7783e4e06a0d171df3130f1d377cda720cb5db615e2dc7deba3c6e976f66e47d74249647df4c88ffdabf9c7421e2f9f162398dc30cc809f41c23f34dfec4facc4dd49d71780eaf53d3a6d7933f0eef1e87d7ee6374ea157ea52e64f25a6508c651d9f13bbc46a75eb309d5788ed3b85179bf437734724226af985379bf034ece56535f036472cc29b6d5e818fccd7076bb8a71423bb82e584e7e45879f749c4aaee3e6865fd17607879726574f8fc36d70f80dbfb2bb9383abf3714c493d95f73bd478bb8d9b9cba4fd36bc3bc669b42848b7e6d1817b7de2ad1eadb5f8644f3aba6371abfd96e6cdadb69b7d94e6fa7bd669b42e3a5ad4a690919e020091600c1085c7ef6edb46b5bb59cc6afadc2a7316dd946e57d74ba616968d4f9ccd7cb31e70c08e366d0b84a2fae4bc93beb52e43fa5e8346e3946e0479f0f3fcc12b6781ebf619400c6d3c662086aeaa1583ff43e7a4a88239773e4f2e817173d0254f827976364bef427d653790f3d72fe883ad5442f651171ca9ada18ba4db76d78efe4c47ba7ee1eacd181f9bdf7208c11bef71e84f0c92a5896655dbe567356a47fe30d62f9b5c1ee2cdf52cd0ddd69d1722c426e666a5996755d932d871911cbb2e6e466d07a765b64408730c66daf1a9fee34089763dc655ee68510c227655cc8cc9816d9e1155d73d7f148cb920c81b62c19638c52ca28c78010f24208a5577f08a1ce7b31c65d8710c218a58c90194218638445d0358026bb93bbfb6a38d0ddf4ea966b378d8a2ebd9e7ee346efd65da7519d012d3783f6f66d91e1b265f59e5e4acb9ad35ae76d7e19916538370c0b1a73066459d2b2c184d33703f26996cece9c13aecce518b1faf2d8cca3bbc9dbfe9c927bce394ba56bce39afeb9a9c131eeb098edd459d8f3c98674dd79d16a5c0eee666eee66ef68fa7b713bb8fef75b365c9e6d7a7887573cf46713b6fdccd528c2d6670f4c30c8c1ec8efca09349e7b3766cdeff5b656cd50f37bbdcc6c85dde55eafb0bba60766e6e6f7ba999bb977779ff306e17beddccbccdb84d783c5b8afc60152e0c707217c918d9beeb642665f58b34377edd1799e332705d6d93de9d0fdb9ceeb5d0eebeeed2eefeefa3eddadf611ebcc99336dfcfaf2d3decee3f9b7cbccbbac697bd33dcf79fcdb5d595cf44c5f29e3dc9ec007617c10c2d78218a310ff94d44be973b336286b924887fea494fe2c09342d4b4a4b4a2bc618ab5cd7755dd28a52ca1804dd653afb01cdeeb8c2f766fbc69a25dddcfd1ac2f7ba5ff7636686bd3df8bc1f773717a1691a84507a7bd5f6c45aa3a0b7df34caca8020378326376d8b73350df697ee7e107a5718e3dc9a1abad3ba7b5877ef397c0fbe18217c0fbe07bbbbab48c9bd08fdc17eef750cc3099ad5014adab2252eb4ac091d08ebee5956f4c6a2c5cdee1e84d02194dbfec208a58c11c208617cef3db855f8d0294ab32ceec9e8303e08e16bc2c6a04558a19433fac21a1c2c5fe87293cf7d5adab0fffc84836141bad628e9d06fa864b664741865b4a48c51c628a1f6b0ca5b1e378ad2a494dc3e4b7a9430c6c801256d819c139768aca1c6ae51c6168ca4d585fadc38e708f4e993835e27976324bae5d12dae4b91ff50eef2b772028cd7f95d3991839fbe178775271d28690b4aab70ce69f9be1a1edd6952e0d7f9a9b75c66b33bcb530f94e4c45a1eb30854f93ad440170794f40528c9894655e60c8975e60c5092134f2d76a0a42d937ba0a428aaf64e74cf7c3bd217c5bf5b288a42fbcd42054dbc16ccfcae8eb6fce9370c992d0f94749401093da0a428badbaff2975b5b856f394569252f719b356abb9b96fbbc6b1bea9f6e6d404947dd4d0e28e94b77fb40495b1a95fa7dceb66b80928cbadbaf13be0594c465332496c501256de96edf63cb214887ed193b85184a7b2f03b22495118319107b67d05f06f49c331bf699d989a6d2ddddf087ba9fc8f333fffc39fcc7e51c791efd355759e328a276c416b0e0419265b153cbb2a0f3cc2b441cba8b5e17a9c80ddd7192d723dda1fbbc1ec9954e40c513436c09630934907045c98b322257f9fb71590de28b4c5017d373ea9d1db2d27bd09e57197e1d6b547d727ae8ed8d6a54735877ecafeb9df6b86d7790bd02f9f5ae51f0066db3a8028d2a54bfd97b9c044ab1d0e4afef0585e77983dd3d1168f39ff00cbd07ea2239229e1f2f3947e0b7c3e8ed918853af190a4a71b02cbc8d87d33b798e75d7fb7650da9313107b9d2ebda343af4f4e2fdd722ab7d95dbbb5512468d37b6e3c9cda65cffeb47386840a3f7392e3e1f49173021d72db9d66718721a3e8374c129903fc8649eac2fbeb612bcd481f39cbc71eb6d23bd159c55968daf346b5434eeb2ef243b89de8626ffba15190f30affba38fa30981579dc8df67a7a783bd1a3f6b1871e68fcd0eb96f9e89c1519ea2e3a8c91ff6df371302c688bf4acfae83d0c758fa652a980f8890e8124378336dfa7df4619d3e24df7ec4ff4cd2037bb8b40d0bc51fccf639824331f5d8746418fbe03d3c01f7d1fcf47dfd7c33f55c8aa6e9887ded33f75c17846826ad0d5a99bf4ec53b4ba2b9fd793e4edb09bbedeac542ad5103f95c7b74e4a892b547871a58c2b78a1093fedb351d7f7aa092d1e07577c73f509cfb727e96ebb13d2f8f7eb22f5ec0ffb4df7f8ccd7c3f376d8819680d4ddbe0dddb1d79beed99fcae37bd0ea223d7b921b1ab5cf8e43a3dad939d0a8e680baa8a2bb7df628dae977e5440abef4bb728288af3c9fd4633c801520fe6641842e1ed068162eaf88a2679ae794866b5f7edadbf4ce209002426f3cdda7b198f9924f7ab913ea25a75462d2a743a7da171e6273aba52cf3cedca71b9b9bc91ba3a1f19701f56cae0b8d9b22b62bb9068f85cd6dbdf0344e63f33e49e33ebd911b9a309fdb82f1afdde7457732bde475fa3a2cf9cb8ab0974a3d7dcee93ecd9991e925a7a62df3deded36459966559966599d38799b6cc29c44c260b8b1950e63043325fe631e38096654e17e298aa083ef3defa4ddbaaf11927a54d3e241f737a755f99c95b0a76598e99fcf93627c4674c9bd08fabffb22cc730cffa9bdb05726d74bb7c7d56ce966b24a7710fb95377ed3e4dc429ac4b45299adaa8d24387120a0f39a177e6ccbca05f1c94c9d5e94f523628f3929b551e3afbf4b741dfecc822e1889f5c9748a557a2afec138a02acac5e7a855cfde11f94458296975e49f0707250b68c24473f88c109418058aa781ebf2b2c464f1b93db961f4b95230c1b0871860a3a7751f540c10c90e02205005ca610a31aea61cbf82eaa189c10041515055859fd408297de25882de3c7e2545bc6cf7255d689a02821832e806043a5fa899cca8a4af5b8dac33fb83def6cb30bd48c11060dda10e2cc999fb5e1e65fa79a883b4a20d0d6f2cf7bb34173225d005f25c759bacb12b443a4f07c97f5d44ac1d97739c8591922c80ff4a21b3feccf394ba36efe390e9686569f3c67e9ee394f149258813b6895b3fcf3ba51f8e755d6b5b793fad935b6e860091d7c4952a97ea0f30f6f2a0885114d04c1840f7eac0c11e487bde8c6cf5a19a27fa2172de0871d6e450bf8a9e2e506f62a4990fe39f42a5e6e880eb92a3e6fe779e4aa78b9013a7355fced3c871ccfbe9d3abfee6ac55e1769b5400411ba54c18b27c65802a6056d7f522cd0c2074a2871c5182ad2f8d99ff5ca7383ab543fec591a2500d642d4297e508907e1161db23563f4e733ba15a3046a167417fd65d1f9774504137fea2e0af199872e23e487dd643c87d0d7e70e898fdff477f993fea43fbfa44f29fdf9e9bdf73cd2c63a06d07dba5d3a4bcf81cedf9f0397901e2d09e1ec32397481e2a0758625cc2fa1ecab53351c68326c873c53674820731abbfae87087c41dc2327417bd7f5744ace079ba8bbed9ab384c7f3d258fdebd1eead179340a76373dba901de21b647a74ba69bd33bdb4cdde993e5fcfa977a6473f35eaf2a8e3a36f155f65f8e83a76087f74f9b4f8f4e7bf5928f1c5f3e86e72363dc7f2f7fd3916b72b225cf0bb2282057fea6ebadcf8e2b6bb1937c8fa667083ac13752af6ab8255df44ac9e553dfb9555fd1b26898867e70c0903f1cb555665d077a3027f1d6e47687efd6dbb432a849c10cd6fdd335f9fefaf0b69cf3acd39615510a8107f7b0aacfc11e898d39d80b62b2d6a3ce657f4dea6f0b7c3cc86fd8b7312b7da1f9d3729bc41a20fcd17da334f1d6644302f9528e7c3e9874ecf5c47f779bdf163dbb551895dce5be567bfb6de6aea9bb77af9f3971d818e7967462ec7bc88e5d479a37e6d987776641299cedc6e10769fc6b6da1c6f10f6cbe956fbd97d5e69fda2325fe8b5a1fa756bab439c92dc64c07cc4e29f98f767a7db006d575b8e9e46883f3addac4873d12157573120f34da4fdb9cf83db7edc6aeaa1bf2de748c4c249f4cadf1c151c8fc64d68cf9c3983c49f9db99a821b151c68fcf8769f865bc4e2df36d4ffe369bfcd493b74dacf5f46843d466e88fe765777b585cc0ff53faeb653e1f77f9b7f6ffbbc0dd15f4f456e34683b8554630ab1de966ba00be09fd327372b42f4205d089a2aa99ff51c23a55f4e88e6a90cf533d7457af475c2f33c8560bcdcacec2aaec123bdf072b3e2d66efb85979b104b8e3873e6cc991fe934be66b8519a84f8cc7729f21fb90d199aa2b3fb3cfa9e0a11a20c01bec0c1d7295de08092f175e804649c96f83a74b484e9eb1019619451a20debab0f2918c2978e90f4427be64cd2af7740eb297e574858f9e6f2bb4a4119dffdae5280c4afd3c660d601ede5e077653484e7d5efca0544fc007e572db80192a95219812ad53a6ffd145ae169c4b2f05616c9cb14eba9f487400a0371405ba72f23b260fc3a5df8e60f5315c12fc75b7fdc568d5f4e13c03fcea77be34f3111a7e08b51a0cf5787becd031a7b85bfd0a3cfa26fc74e1b61e6018d7df9214fa17b000d3a017eb3e8c28a779d6ec90e5a9c883fd342e3239046d5e7d2638e11a882ffb4fecd8cb0ea5fa7511627c5e2756a5deed316f6ec2bb4d3db69ef5e9bf4d66994109ff9c6ac4dca907cf6e99c1d61315e8837a11f6f399d5bfb6eb53322d22bef26b9cabe16b70ba4399fe67f4edfe69b1179cf1fe50c6862382c41823f1096f1d1793e76497068545c31106814dcd511487c7419bae7fdc417c57ce4f91ccbdb9d3e887156a43b036ae7ecc8638b3bc21e9d5a5b5c198186f4e84680f196efb3bbe57263b7b6ca6d7c019e1a155dbba11093db3eddac0891ea2557abbcf4fec203da78cbf90c04ced088595b6dd54bdf56bdc555e90b44a3fa45bea62042f5edd23703daae8628f3d2f7bb39dee04a9f7e190496a334fc9c013de8302b72447aef90f5e8546eed1489f4766b7322bd9d426c8b6446a49175c9552eb94fd3d2564bbe903acfad56a79b9375cb3b23623d40db551160def2dd085cbe1c67423f58090208d54b290554d39800b2a5082db882982d0c410b353558411394524aa7ef8e225239384119a42c595c618111b432ab1a60b92857e7d65dccd3b5d753e21c83298070c9d86265082ddc800d2592f003691e1e95f13009603c84eeddb1efcfa96f5aebce9fdd753a208d829cebf4ce0cbf2b1af0e073fcae68e0c457e7b194603dde21b2123d7339539e947ea1c71181ff3c8739228f7f5fe6bce778d35dfbdbe013808a2d2a277050852d6461a730852b62d0840bb040e20b224ebdf7c2c0f8bbedf3961399bb4d37682a954af56371cd373b77e5e3804655ed864675fb76af0c4264f8f67619b4ed795c18c1094c507981c2117eda4fdb934202290c312ac8c10d78b0849f76df9e140c94e0421b5b0c11440d94f869efb6a7024524218a2c617cc1832e6c12ebc008b987c6d72b8f5fd700f7d070266e978c8cdb29585e370bdfbe8c62ae6e17bee7eb813acee3a15b5c3ddd3c74c9550d7bc8e5444e064cbb39f1f0af3c5f79ba6cc74e371edbb197b6d376ecd776b31dfbdcb4c5762edc8e3bf6873c1e9e6e62843142f8b87d3bcc710087eedafd773583329e895eea22e214c39804941a9ed4d00d5b0bd3c0bf4c4303f1ebd33ba4e4995703fceefc6ed8f2c0ef17e233ec2f66f3c7d7f9d12b8ec7f1d7642b3648741ec8e53447a49fdde2aaf67c34a7a69d4eeeb5e3e1c00e617f96df804307a2cf286855f8785ae3556c7c6ce9ac7a3d7cc6ee448f3fea0faaf2aa3d63a108632e68b48178ce88f433c7643648744e81563989cc472f6dda76ed9cd4a87ac36534aa3e79f6b970bbf6a76144e63fe78c08fcc7095579668ebf7c6c8ea3e82e3a1f75175b0b51a72011a7385a671e77d1dc013e558816fffc86464187cf85707b65dfd86bf78f1d084fa3d87751ec35723c5cd7dddbef1ecf7cae3d3f6d0f0374c004d2145db0c11539f879eedba300551a4c88c2cb0bc038e127490c5d1ddf873d3489100ff60e4a5b7fcbed0e615fb7e63e6ce6aca6a23d87be5d7b6746207d1136aae4d167a3e8b34abedc507f89cb39c251e9e78ba8f6f3c6cf3ba4e9067b071ee9adc612fc73c8db49a73066117867cefcc549b962905867d785043e3bbdb0cd22f04ade254ee8fdc5d5d4bfec4d6e1fec2efa3e6f7950620963c6511832591a5572f8dcb22ccbb22ccbb2acadb225643de49c58fe9e65f9b3229430c60a1dd2abb93a7f5a96943142f89e9b56e9a539dd7a27d3e556a54f49fd9445b8f342a3486889d2980151cc29462946b79233dd9c6440747392013937d3981929393bb13a435272e6aa13cb9f97dcca80d869893a6f484a4eb95ada6c422ff9cba29764f4cd26c4d8f28b83dbcd061fe5d218b41da5edce7239342b5e969d88b947afbe294a6333cc460e1ccc8c314569de5dd7a0d3dd5ebf1e773d01bfd300ae43e3b53373aad959002c0d99af0b6087985cf3cd81a3558d7aaa56b119365e8e9b1bf76966a355106270ead8a095dd384569377c6d2857ab3cf5ae515d779de355088e579e1d5ebb93573ff5a8d8f563880f7f2e9986e98fab4f6af8e73abaeeda756c0e85f6bc7a119deeda519a642b1ba4ddc7c6573648fbdc78088ea1bdc7c645ddb5f3d8384b77ed493a87ab1d0e577d07574f27aec4d5f944c9e5163ba4bf5d96b6e65203ede26e38dd741a05a58687aec3db3b2b03d2c1cda0e980dec5722a6506d45bac9fc006b1306b62280dfacc801cd05def90f8eb1166405d886af8f12273e0b8898e851a59bad00215909c80054f3a811159b440411138e82d37b697e44883ac6a546c672b706b2e6dd45d1b39f6955748ce66dcadc022852ab88882ea055358366c60c512545018810466b1d082287270c451195688c18a8942092a36a04882eaca0ddd7516fd6d3d84b6ed76cf6b36b8dd934204be50958f6e047ee4bad46cfbdaebb7c9e72d1a0e4990d84c1badda88cdb09921b2b08524cac0808d2bd648ad40054600c20c1512972f371cb1061a4a302146135d58c0114e48e328892fd2b882a23407bc1e7f3bedd3eb94aee3dbfdf5c8dd796efae793ab33c73f975cf7f847b3c50df2dcb4c10df23cdb7a63788e6dbc411e97b3fa21406ccffea852f05319cb0eb9628704817bd8cc8eafbcd296f0edcb3d668a60e6f5b4d1db69a75e67c9cce566bebddba87d52ae4ead2e920e6b6320364810bcd3de9c84192af86edea95cc4986f8e551ba4dda755a0d506f3ed601a15bdbdade80514f98fc5458eadb46fd16c809c8f7317adf2eabb9d578d0ad3a8caaadfa2515a70f9f615d2f7986f4ff27a98061afcda466dd428d5f6a4b458e108296a10e6065680c24f3b176d0f56851e6ce10a4970c189347eda59cbf6a46240c614aec8d2c5076d1ce1a79d8db627488926b8188216289400849ff6b73197eed87b75f20104cd29f97ef52f392d093daf56c937a19297b829f355582156ba2e29b92993ca8e97be162724b92e58a05f8911428f1bd921f42b91d3decefa15c89ddece7a73eba948d4a97eaf0d7a7294b6a3c6df76728ad278e0386d6ca3571e395eb37f7e79c5f18f070e8e3f07d2287e18fc39dc219c3f8fdbc3aab703fdbdae03c20fc44b5eabb8d7e7d4e9db9cfae6c3c7e625ce391d2d1af41c9b75dd4121fee9746edce4381fb3e4d3e9731feef3defce13ecd2a1c383c87abf32bab2eae6a3a1e8747aeeaf8caaace709c42ecd51f78e0788ed3b9e57075e82fefe12fef4c02fc936e96e42fa192d778f93ef56d13bafce22e9f92fa8b9b92e32f724225a73e3d3a141ae27f9b6f06b4f90f8f9b0f18b62e9a739a6fcfa7a4fe715372b827ce51d9f13dfc870f4ea807d7050be619e6d97c3bf00ac641cffc0ae6347ec5c4697e8586333997d7a3714b7607ba69ce4cc3381ebef4f1f30beaa2b4377d331c4c0d0dc779ba83fe9c5a184ae3b1322019729c3a5d036871e8a3132aef7788be3fbdb40945af6f2b792cbde9304372f9739f57f2b9512f6d3587abfc25a7d46963395ba6c34b0e77c862286d3a9558cc88e0f04b8cb322382e64c3b0a0e1f80e7f8ee1f8664038359e55607f6a388a617cf4eb958bc8cc326b26b3819dd02a73612e73da3cc15e0efde974f227d8cf87fde39c9cfcc629673b4e5bc5feb4ddf873cb756cfb251c9b94f895b93cf49bad3ec13ef660a9f12b5a8d86cdd783c5e457325396790d161abf62a23199bcc6e10dbf4273a3c66934afe1b09c7eae685e2eaf71cd6b9cc6e1f4aab3ab1b6cf97d3dfbb3558687ce2fd0f8370c18306fc3d51a1e7acdb66fe7b9b6d108f9e7a66ddf4eb6eddbc1b66b5bab46eb8efae56f5bab06ebeea228ad446bb63bca9538a031cc342ae7f2e71707348699239ebf8dda954af5977306746df638a031ccccdda046c4292692a919715081eeeb71ae7f3dc5ac8432139ae9970b345860c618608e20021a3feb7b4386cc4797ab4631d22f6fb118cc8e3c23325adbdc9c482392e38e3c8f633e2e87a92ce6d7726279f4ce8e3c6bbe943ee5048c3eba8c2ec13cb7c4fc1e791ea500f3d1a556a3699a0d762372157b395f3a743ab76ba35a7684a5746bdba7c98c4c971697537259e288f4d7e8b4dfe745eca4c353830d372c79f2035b612dbc858fb88a1bacb4eb10cb8eb01447ff22f03cd2cc88f4a875c7d3ca8c4c0b07b68d72223d5ed3c974cbebcd6f95d76665479e5b2e332393d32c2ec2cc88a4af21ef8b265e6163e8360a7a164c94f1cf53cf841a1f5da5ea90543912b1b9513102552a2943dac6c01c1213c4ec48147a67d87876994580cfbcd09362f9d0849e7ae8b351cfd9a9e55837f63223fc9a9f69fee484de5b0f228940e4a0c58f08ca31884163fe7e7067c43209f063ddf136aa613b4f0bf96dd432c74e68cfe7ac01085343f3afacfad74ea0ab53e797e7476952e7f17bd0b41b44eef24a97ce99e466d066c5dec6b74b0e934bb771fa32201b6e06cd6463e236abc0fee4700a311b2b23c28fe3d4a729cec64f797674beed101e27e9166d0c0aa3df23da66f184997f1e8bfe79446935be19d00dc7e9bf71e8398b7adbdd38f4d38dc31f271d7fe355fb12cddf789d5ff2dd1e6b776ebce474626376203df45a539f98873adb2dcac6a50359944ddc302c44a79a4d29b361dfc6dfc67d9a6ec6c34d5b85c14dae6d55f3e8b484e1ec04b40d03068d8fee23c6930d87f37c876701c5d19fdcc6e9cdcd8df3c8b9b9c96cd8bf718a232be2180c1bbfcdb6dddd44c7d911239601ed709a619c1589266af2cd8898dca2390e4f3a78dc501d188e951c3e84ffe4e0bcc00083ebb874ea0306184e990dfb30f88d0c48c7a909b3d96cfc6683ddd9788461abfcee383222fd3cb8edce86ab4fb0cf11e2b7712af0a30bd17ce43224cf234785df86ab2677df8c88fb0ff7e91b591177ce29e7bc23e7a6bd84b3e3b2b9e1b89c23ee3ffc8743351ab5c3a14333908d4649af421e3ac6c3e1cdf6be74075d677b5574071d86ed81e90e3a35617183c14f5911183c3acef6c3e90f67c7c1e13c67070e0e8eb75f9ccf0cc9739c1da61f5cce11181cc77160e064c4362b1239779815c911e2e79c0adce1ed3942fc384e05be1097791b17a2791b1bcf712b43f27c0747859fe36a7493cb0cc9c96d382afc3adce74520f788e11071ce89c92d77a2c387f84f38fd7871a2493ace267dc7f68eba831eb7174577479f7915f26c7407fd666333dd41e7b1b11add41d7b17199d3c668e46c5c0617cdc66f568d426ad40f87feb668943bf437e6da9e168deae1d0e9b6e970b9c15f7d8d5c1e6a2fb9ca15fbe8549269d4c961117f1ccff10a4f9e9db88ac3c19c2c5b217e2a42342f7d479565ca48368a90e012059830486090b1d45065319a4e34aa1f3afdb1f14b328de21c3ac67115732c9b338910adfac9e13efd63db97bb31541f7ee33433d2efc487111f1e63e46abf0f0a4646338c470f4e88b74d877376443a576fba83fe839364ba8334192fa15599f43e1c3a4d76c4c67d70950abf0ee7b1f18701a3c5dbb80ea735180f239a0ebff1eda12d4768b292c371f0d8f8e3d6a5c87f7238c5b175f37b51e2d8f827c766a5553f4378cdf19337ddd772464c073d6df5b5f1278f951fc7ddc6759cb64a04c49f9c5a988ead83f8b8bd33679eb322adfa78e673b8dd20385c8dbe834ca37470b56586c4c67570a7ad7df071dbdfb155fe1bdfac08033e72420c8059915dfd49f5a7d59f38215e7d749fc611b9dd2037eed339b6fd91641ac50f5d878e6d3fc7b63f9bd9e0d8de8f4c6ad48d43976534cac6a14b323eef66abf11b1b97d11d749b8dc974079d66abfc344e6bb0e87587c96bcdcbb763e3f57ae9bb438aecd3b874de9eb77a3bd0a5d3f0fc5bbd69c3d569e2aaf6f5addecee9eb5bd5709cc44a68f5441f117688109789ce0fbd3324efc8f3b86a54984689d921fbd06376e4699afbbc6d9f66db376dfbd9561ddb2a46b77afad226c5bab6fac078e8739302bf72d243b7b621fee7a737a7a6ed4e3d8579abeea0c7408b5cdda4fa560f7d7ef985216522ea54cd732ad0d5a9da738813bd42670e3e87cf9d40971c850eb70921e45e32ffca18e0efa2a4f4d220851f1ed91dc2807f3e67d020438f907b58284ae33935ad9e98bbd1ac78611fc27fbcb4af2f04981f08ba31f00bb4ea7fb9e5eb28ed3173bdfc0710196ad059d4f37ab9e5f4da36f897bf777239ecae51dae31a7a3d45af9af43aff7a7e71757293db2434fffd965c9d91abda3f1e7fea81bbc3fee04fcfa0c19ffcbea03b797718f57c7de7734eb46f0e680948407e5d864601755185905fefad88ce46f900dfc9eba16adbbe1ecba1cfcd260080318268c20543c0c2104bfc58dcbe1d0692cf797b1eb721f8ecb3bbd71b11a762731242f0f0f11bc60b2f7cff86f9220931148c5679785ecfcc128412575801cc193155789189e1822562490c145c6258e17c34352c93143021c284e185103a7ec38801c5dff80d23c617d70ce8eab00bb4aafdb6406357a95441fcb0efebe9ca48c14c12c294c94203ecdbb5d7939a0117cc2c1104184d5802147efa7bb3e666d0fc59057477c84eaf3ba2d71e25af2798a3d608a1915e6d86d4d2d3303986f63a2daf94068c6368df0dd25e1f0a7a651a76637804f8f61257fb85300dcb31541b9d6fbfb8da5f85e8d8ae7d6e342c77d5c76f5701f03d99e6d820eded18d370c331b4b7d350810869d46ef70257a9cb55ea7295ba5cb18952972b3671c526620ed5b70f9915277a856074d7f5257dbf364db7a615b737a651d2fad2d4fa428b68d16ff1269ae5bb9a922670fdd87c2963f3e5f17b68827fcd0b61c3eeb1aae89db6be74d7b4e8cbb7d3a24665e99e0746efb4f71bd35d779ba2770e5554825b20ddbd1fbe34160b89a7bbb7dccc8c9305474b7712a768833ce72c098eeaede4f8d2dd3ba34ddf2cc751c4ba8e2700d0add5f608793befc876cfab65c543b776b0281b2c303ba487c3453a7a1daf500b00bc42d5f6bca4b763b43deed02197ed29b33d66b6e787c3a759614c182ca4cff12e67e329d2f873bc76391c8f90d76325bd9d679539b2282b8ded02c059665ed2eba100e05e924ed2532ecf0a8369a019028caf34453db61e6470763866257d86e42a9c2f2538e63d6e3ec0502e8df2b17a2da7d309a78adee1c13511302cb709869a28306cda06812e3320ad876d9bbb035d6611b07efee0dbee0e84455f71bee4389a40fff8281ae2c2f8cc43eab1f928f2a1e5e6c67178b5cc942123669523470e1aaff375f8be1e1dbe1991fe1d6576484ea5f11c47afc707cde557d6a5af68ecf5548a379a56a23db61e6536c8732be9f5f43063a5f1bec69f5b656adcc6ab65660c928f0da7e80b2d828f260b4d114dd154f90073c3698ae46e10c941da56b49ae3286e1c97c3c3398f2eb7f73e361c1f56f40e0f4e08ad88264bf7e054d13bcf713a088ccf6815e74be6034c03e1034cab7a98d92139fe1c6e348ef3e5f5447fae79b521f3cf311f607c80c9c1b02c471539c0d0607c46b39cb2c6fb4c39a2c8809ed07ce9ee5558f403fb9687be6d68b50a9787f09179028b1e3a7339a2e8eee5a8a2bb97e3a8bb37937e7aa55c721cbd9d4a6399f9e7b4e8f5f800a369b448cb5fbe6d38496fe7b96f3863decef31f1b0e98b7f3dc0718c8554df3c1e17cf902ecb1c10d92e330879dc7b6db4149c69411e9c7f9d2dd73664363af385f7ee6e470385b7dbf83ab3dcec031fae73ab6fa90be522eff3cc75671b68a63e69fdf6cd507967f7e63abd366ab3849ffbc66ab3db0f0cf351f60fe390dce970abfd214559c31ff569472c1f98243c6ca7104a451502ca487d22584169285c441a2983afd480185bb1362ccdd0fa569404f8cb4939be922ae8299270fa8b96e9f5b68ed3e8faba0554d4638b38046d0c82af3ed9433a0278fcc0dad6234b77864609feaf61072f5c923f3d0a56684d637ddb519db3795649afbdd340aca23a39d60f723f3c86056193568cef3fd1c22cfec1ba4b9eddf8cb91fbaafc78bf479039ce1f9dec0f312c137efce73ce8ccc077128f22224e49d749ffa994e3733f290ab6c65fa105e8484fcb506a8a97f4552dff2076efbeffbc88d87489ec4dec4a4172a2ddf7b5634591c959692a853b2e10de8eeeeee72bf85519621d30fb62ab6161d6bc2391f8c2ba71918e55a5709964aafb9548ad2da59a290d2d74ca9b4e65e25ba4dec1d954a607e9d526cb7fa8c7e1dcb6096bde62c2bf3544963c088e9a3e6d2aad652868c983160f80b6b612eac32b363c888d90dc21c2cc25fbd083f64ad08ff4a28e56b96f232cd6b9a168814b47c73a0bb6ea3253874d738bc9dbe30a0c72de91dde4e87c131340eddf592ee9a03dc921d5e0f4c22f31d55467c3b0c8369984de018da3ba993bee311315e4665a2eaca804c5c0d42c49434231bde4e7b29ebe2a3058d524a65e0e1c1300cc33acb8c342e3c4eddf529d3f1eeda6432715135aab974d75cc67c73793bcd0573023b32615c6e302e3434466fa7b54ddbb269349a51774d43b5c9e5dbcc77547d1b013d9f1c68c7a17d493fe6f7b81b9274d79e05ed46cb8b375240578739898d6f7f666019dd56641916b4acd76c59978993dee3a330df1e572d2d2de0178ee282d7f59aafeb32f191945b86b37cfbe4a26b888dbebdc44898f9763a84410c7bcd1876997a2895aa902dbe1d43eaac06d3824153830635ed356bda65124283a1349a0c480afcae39d9dcc88af0f74d56841f2e0e8803c76bc681e332ad902d73c449471ac5b14e1f9498e987cf4e6a325da6cd3cd52b3a3a3a3a3a3a3aea81a74c47c6934e6384bcd3337a5cded1fbf2c0bcd5d3f2eb968cf00911224488102142966a3637169779a47d3981f1552786a791c81c1d1d1d1d1d1df520e4edb40b1122448810219dd464ca9879aa57d4637e5d46d842840811224488909a1b2cc749329932665a8b919191919191d1d1d1d1d1d1d1510f65faa8bf34985eb598466a2ebf1ee1d1d1d1d1d111f7b065b6cc96d9325b26870e6c474efc32c168ab931847eac62071d2546945272d6ec42589938e8e8e8e8e8eca98695517b59675f88ca21167f48e8e8e8e8e8e8e70727a60f087555c64646464646464c4496fa77d6adae9e4de31185eb11846e2319cc45f7efdb59191919191117312277112277112276d0f1fd8fbe129d391f12424318d34a74a2b3a6971a38e0b1fb176f2ce687246d1081a3da31f183dd21cdbd7d33f9d9dbcab427e7737e9b7914c5c9d195727c6554d2b71f5749a5cf5ea92ab5df7b5911ebea2caf3d3e98669dae9e4ded5575485bca2a2520d5ed1bc2e93f4d773fdbc8c31a045726ca2df7883482b96c0da78bb676d92378657a53323ef63165d4a2a127b5904de43cbe284de43971b07791c4c496e2de8ead41b680401e66a09c83c43a32ef0f6041a3df42436605a1a25c606ae8206d45c4da19e3f32db83c3db798e03de787d661e42d5438745db53e3d0a196edb171d84b034402c7f01c3a5c94c9a1cf45690e1d5b148d43d7b647fa0d68f496dbd05d122e6896d71503012e090eaf0722bd9de7130757a776c3552de3764c8565daf8e710094cc31402c7f0ac8748736a1a8548ff1ce9311367e606c75bd06c2260c11f6ab6dd1d8bdbccc87c3344b0d7e4c332538699f1bc2b9bc0f5a315a5a1c5cd27eb22440b424aa5522c0129655d47298554c71dc330b9bd8f9b56a469b9d1348c07969d4e5996f11a5a7f698af9876929d3282ddda98169118369c1b46048604619a605cbb259a70943692637696eca80346693338d6f0644e33e4dadd54f8f9c56f4769eb669349ba6a5bbe7a60cc8c4694557d0a029db2c6834d63449cf1cc28c5b0bdbeafc8a69f9e774ab3464fe79a9ccbfb91501b55b106814146864431268048d6e54bf30509b29ac31ad691d711a720d69cd691dc52e9c46ec22fd3dd8dde3b694825dc9cb9694d85b1c2c2a33a174da5042b84be8eeee67e6494199e9ec35b44883d26406f4b6f875cbca8cc8df0dc26b6875ce3927352d532ddf4e1f8c18451a332629898c45a68c98876489796a6816f6907efd8df9f59277a77a8296d5a86b9e343f75bf95e7d7f77936481a736640d05f8ff47a8a559bd6365fd665df8e13da26c306f4389eeedaaf9255a298165f797ea14acc4fe0fab1c434121a7bb5c4502c6234c3ba87e7edb4f374974563a7193561dba8d630cc141d366a83406e297c2523e8c6a04dd53fa7ae695cddb46d5a418358774f8d9f5e6ffe497f19d093670672558a9eaba041f779f0c933f35016c15e72b0a83b3434769f078bfe4179667e6a53725da26fe4889e991f2f399083f2cc3c9caa97045d9d5873d35d4efbae6e10c543977eb3ce3d963f0722c4018de2c943eb9df5aa33bdf25c5e6bf8d75d3fbf36ad777aa7dddae40634861a1b90186a6c406220c1662e7e61978cd04acf732501451b59a020020a24a2508100aca02208d80aaa6a0c1540643104324f04208b19a031c50d84f002d21a524a0821a4e20cac2f4f02a7d3ebf2ba483724b122155f982e395748d67683102519613b0fec37cc1450f8f81b04236610af00000000b046c841122f80420b3850410c0070c9e008281cb104259440e64c181d2aaeaca830e262c30659c07eb1d0c210a82aa4eeea1db0f0a66a3920a37dd86977dfd0dd25391cb824ddc5eece028b2dbe5be706acdf0e3feeea5ecf0dbdc3ce8feb92309442be78298f0842182cd71999110b4615579ea0842070e1041890f085c9062b1b6c91485718ba030944108e6ec0dd59e4608cd67eaf4082cc178f05474520b1010613b43066071c1658b0b1b2011437bf2b1b143dfdc5420b567c31f3bb9ae2e86bd2efea8b0bbee1977f2e3d89946eb9c599e0b9b4a4cff98ce4d3f2de9707e671f976eb1d3dee15bd9d47e695a96de625ada4085dc0f2e7499e6f76819c0b3c9f3e391358feb81cf6e7a99ffdc94932fdf2fdd94c28c955f4ed14d89f095537589e9384cbb75749fd1c7d3bd1cf6637e4309744cbb73f68247d331caa589c9936f376da25f7546fa7dda7cd88793d327a6da4e79fb8e55c407af428a5cb243946ccb7d3d6d24645df5abec7bc9ee8af7fdec6486fa73d7239178826901e7ff687321681924c807fc654f17201b6020e8aa0fac9b980e4889e0741c311a800c219a2e7aa0706159050fd88793dd2db93c648e9b18f9acbb7dc2e105d726528c03f64be9dc5bc1d30cf5e79c56066a86cc5c32f31c5d714ed9bf3d827747e5cfb1085a23985131086dfd514407ca6463422c222a488c2579e6736a6151a84600329a6f802082a10b1adbc04c1838882244a30028833cef8628b22c7c11252fc407667b14519dfd86f108eba34210518fd5228811a414af103e8032970d02b2974f0ae40c2ccc3df95143ca0f90d83069918acf6f7de7befbdf7e67b4f3eef6e6a4d29a594524a29a15b5272f4d7d9bc88f0562d6b2299ce3eb96a39c980a411299f74ce9e4b093b3559f68099a0558d673b05289debd1a1afc7752771d9b2b80ad9b276a365d559871e2f3333333333ef4618237c9cad4718237c2bd952518fdeb151b17dbf61c3e85da36fec08fbf12383525a4fac042d6ad35a0b7b0b091a92d62c93d0a26fd7a1f8eccb45d0d87b0bbcccccccbcebbcccbbcbbcbbcbbccb440d35d4b00415f8e043cf81ec423b0499cb39c21ebd422e74e17bcffb39e4b6241e44c1d7efcc99a6e19d48e1a7795e5f6f43fd29c82f0644dc54c1c6fc0de3451a3f3e045b58798134c60aa8e0453b7ccfa7f676fad45dd5a0436edf4e3be5cdb053f3199499d07cfcce155548e3062ad84210c4f859df1b74657b9d58acfcd88cd9912bc953dfcc084e4d01e12975ea94a3d86664bfc88cec15cf8e21592f3c3b6664c778222bc673899f96b6cd80ae48e956d92710f56984baf48984c212b77be472be386b7b2e5f8a327c0103b40d438698afddb326a451ecfc4c0698aee1f9e45d07844786d7191074a6a2abddaed1458c2eab2920c144147ac09faebb0e88f338753f3b8f0c31f8f69bd3eb69a2021e40d165082bacb8e2a7bfbd53e2bb1b6e3cf8948556bb67ef80b06f7f87298205cf7ed3a8f99288530de312a52c666841c4142f488389176821e7a16b3468e24b8edf2c9ad0f2d86f164d5859012644182126dd41837406a53780284d8116a58c9ed00414a4807482369ec069c38b349acf78e83727ef1ab558e4e00b0f7974fcae8080060ce88d1a8059c30b18454358b521841d512811850d6a60a0c3132bb0e2cc11cec8c2152728b2108510352c48e1a00b9621ccd8c20a578ca1438b27d0b8e0012b60c214925210060dd8c801850f5640400300bfab27ce3c8e5f2c84c0860e20124130a2082c7eb0031b2f707c4a881d78e9c20c2782d842044f85ee3a1d90e7ef8865630b4958610824920003336ea080020a29ac1394a0708219421d3cf49b46d187bea72b5a40441468441adcf8941735caf8a007695c618b2e3c1775d7e980a0704841b9c979773a17a74108217c428987746a46989e50d50851bac2439adfd513664c30a62e929092bc1e9ff804d2c78f3e63f48136ecca013d49628c5898e1828f1f7d3ed1793b7ec3b860cc67bfab27b0f8caf32cf90181d61aba07632c8f4747478777c0f376b86a5d68ee3b849fa73bf6762a3721dd49af3c3238a03b1e424a29a59fce78c9d9e00306f2bc1e9fead8cbd34bdf2d5e3e7ca2d331c73ad0f67d1c30dfcd632d8a86f31b26085878f91b664c14beee0a09aa60d97ffc5ed18232bee6777564057c5e502c4747d0ac8e58d0bccfb41b64bbdb2694bda19c25cca461bc155976ca1bcbe04fdded323f5f1ab00169700566ee97634bc42084304a1d544cccb22c6b5e398840b152a954a258490c1396655966a291bfab2e67d4609aa669353636bf61c4b0c20d76e3c68d1b3738ba5c41079623035a2e7fea6e736442f077836c8e0c6883b4e7d09109f109e36d7db3c76d3841daaeba64f98a7d57be76c8ce1d027fc35441893f75b703e30dfb5d75f9c29ff69a968cf0356fc9d4355dd0edd95d8e52690590079eaf3c7f69dacd8907dc6ebae322335860a10d24c4c00b0d64f063f3d0b5211e72f5e29ef0fce4b4eeb49b09f7e6c443bba1f90d9384c4c3df3049657cd5f8bd21e8ea08e0d91786edd1de0efbaffb745709f0513a7bd7a8e8ec402c8fce8f0aea4b5353832c9a9801a2ffa894aa558b63494c42c79021999911248002931540303820120cc6e38120aaca0714000f8fa64a5a461947932889611445218314328418000220002043a4a9000d8ef7666010f3af666d72ae07ef1752c9242e58fef5ef8b17cb1f93a7fcd81710215ca9760576d72475d7bd05b5bd1d1b15ea181a5a1ab1aebd17e3344d651707422bb8f1e531f24f789717bb079d91ce7d0f8f52fdda7fe48c5cee973f514ed651e5536dab2debce264f0164cc5a37515d3d1a253d573dc294ef0bdad325b207cd3b03c249353ebf8f9ad711a17db125a9c7a94f4f337ce91c1eb1c505a1fecd686721e3da4cc35ba3baf7a1354f40b67c648797e461cd4e8e37816a884359096513a3e4493cbcf046c7321ef7f81fc542ae75eff53f2071a10d36516aeb2552adb74a92f702cd105c26569a4b4791b4434383ee96887213b83d06b10bea27e2b327a7146e2b4889acaeab4d5b4c115f3079c3df94e4afe8676719be6241f1e4ee7e3e1035ef04383f1e555e9ad7d362196d891932515a97cf84d33110e2eba606a034daa565c802dbf6e23c18bfbfc887ebc4cdde896dfe4ca1458d25b06ad6732e01e53793b3a6b8e72033c46fddf9959f6e0e75106cdaecbf3251a64285b7a1b59d75fc534bd9b44fad40137613742a11245ff59bf03a96ccd387619346f4df0f341d09168ce48182a46b6a258721f9e70d0681641b42379617d8eae2f557ab8ded3631e878a1b3937022f5a05b6e3018fa96c43c3b932e2ede107ac2e27ba1153f1c5c13c91927a9f93d5c700d448fcbdb84202a8a800ace080e141bc4fd794d1608589d31d61ba5d6921f8707368da1528da8e40ab491b70808e7daf056f2f7b08c53467fecf34fb8634e7e86d3ca43911c2e21b8f9eed4d4f401c76ce1253d40ef46fd643001df882af7325902eb83969342a6ec8ec0d8f2616601ad307a4fbce2f8cbe7cd272fb778b8c33ab30617abc39e54623916334d44379a17b2adf331711fbd53052b3a9d0c5b8b5bd1b9b328f0d1605b74856b18eaed9194bae8d0ea9f2f958fa0213fe756296ba8116e4111dc1304e40124ee18dfab049707bb13a6697230380cf6f871a108a1e4d9c64ddcd85d12beef1ff7243bb46ceac9a88be467bee44b5a163fc1f52c078e1d05fde4287351a8ea780ec1192534bf73588f1f78f5f4343248c0a931bd4c352140009ab5c131194fa85f728c9ca08be032041c5040d1549fb1a6053ba1a22934bfda25228c81275f7bbf7d1ee4cf0c1f4a8a868cd1108d371a5a1233ac0100fd25da84668fcc42af20bb2e5945ed1ce3689a64bd597cc057756a948713242de88204407e086a081fbceea04462f6c56c1b1158abd24d9a43d245735c5b94398c1cf4d2abefe0875c39c921ce68ff8da7d32c7d9c9223d0ecddff97a01a33986a9ffbe6f333e6c92a1c999e578f875e1571c493cef8db60bcf9ca2b0ab5441d61b7a4c25d5e0b5fcf59cf1b50f9be5f3f8b6f06d589251725f413204419016afa31468b1160f414061e8c51902cc088ba7a05017d830cc92d1d5abcb8547afaaa83684f75e04c485a1a328e91ead3285851f931c6fccccc5b0be5832c3f5388b9be47c6f8a64fb3a1a341ef26a2bafbd70d435e3f58b6d6cb8d21afc303bb494d5b3ab0ac5b387ac58869d1798c7ed07df7afc23ff9cd5e8f7e800e7cc00a67754beb9858af28f68882c406a96cdb89e3243e69954ea23b0d7b6d4fce23a953f683a01841916d9820dfd469e9b8d27004d27b201d0d68abaf2f54fa2c0dc770610e487a65984ee8a35d6486024b357eac405c5ca1325f458ac6d983b46a89c8918e5907d1d0d7fe63570b3683beb1af3c8989e64ce87acec86ed06882013b6d7a13835107fb87226d021eb54f4c8d482ff934205b3ef85b282b946ee137969cc29cc0c009f1044e67b313dc2c046f93f4471ddff5651f251ffed17727fec898133d4611fce1499a293f8bae3eeb98b8b319ae9a42fa52a61585974bb77274ca006291b9570af8e3c56aa12d7a175df5293068882cd57169e31137c228cbf8660f9c03ae9b086d07f66a556da8f9ac6ae3a5bef9a337e7f7d5e8cc8f29369f836e723ce4ad1e8680b9dee218fd36a0fa41e33fec6a3788d3759cc13f1dda7579a7616dda03b15f153a16ae5234eb12a7830e13ec9ce705f72283223620cfe8da9e810eaf891b93daf65d3ab3a0d025ed348d0f123bc51984b7e36686521d704624e748ef6595592e7ed7d328e7d08d32d211adc9d841bdbd41a4072bd4625037702e68af5f54786958529b09d056bba74961dec118ce7d8d5bc5b461411ab717e4d8f6007dad3d9646d833019a6e8c386a2d60f254639297000b5ca1594e49616d08ab23fbf5cd32010355238cdc4541df89c1633aaa5c50536d85db5f08ca6ccb58622c114f206d84d8657de7702fc5aaa2ce479001278160acef0bbb788b4a1f9ec4d5771fbcf2adc640e51aa82e8031e4879598ac08768a274170a70b2f9864598a4990c4313aed240b1da882b146b7e28a6530423b2f0b97fd9a41b3ffd47f20026e9d2594815b97c8bda0f375929e0590c3e73d6eb81bfb3538b05cc48332a5e0b0df3f45d74fe93df2adeb332a502a1be23b50f6fa94ba41be77dd2e8fd2ed2d9fbe336545e952229bfea545e6bf9158558ae146e856da5aa968bc11322361cca37083dcf3a95fd47f9eaafc395057ea248f1ff96c4ce9abf16bc8d59c62814b5113d553a400e11821a7bc10f01e4360bce9ce90180d64889b61b99bf0fb3df86367ede86d40eb17597e110b7a61e7b4b3b37224be5aacd4aefb397140af31c9b45b8b82ec84866be060b059838feb507949f455e53f1378bf58fc7a3f7cdfb216629bc3f32d360b8f490f53eb77507ce12dbeef6c160e59c8a68c3c4234fd56d120dfb289018d450aea6cd6ae0b0402c0d86c32ef3fa2c46c1482a6e66f79bf49604e181e66a52a013f544dd7689a0bc102553277b81bb94e3cb88393d7ec1102e9103ef3bee8671850ae68bd66dd0ab892999915cfd0eaf067d36e35b36697ed88db84093a54897eac59d798855a6b30ba2cae057a4d7ced169826facc6f7b04e59a65112594d11ac93a39666bf62f369764d19af573e594c94d49566e884372454f2c35ef8d1df0f850c6870e6bd67a3979becd2373b5346fb5b51853c710f4d84282978060a25e8859520d8543ed87666722734941138f1e2aa8588ae8d02c76ac41bd9128e8d7c512cdce0512fe64e1d41c46b7fc88292d9fe4677705134dab87e8a08ff466f8d5cfa96e8b55a6f6dbe6b4d2310c951fd01892cfc01bf2d132da7895c48c6c9a30e8e256debc0546202e238039d498b0b55defbb1c723dbbabe42802e738bbfc63eb515e88df86370c9e13407a53a62de634f7e6e5a32ba4a72234d929f55fad04a92352509b59ec8a4c973d13b8c7a6cb54657491bacacaaae375c0916fdec34c21224b1e5bc710cf5d978cbf3b3a68b028328ffb426b64cfab102feea6ebdc295a71c301e0d902cd92cfd5af4ae7d0fd4d835d91b13fcd655684ae0011bd63ce2b6108baea9241578048eb18f38a7ab846a447e8b27c175d74f12d37e2cb0a24d64cad42820e5c877133d4091985d311164652e9b42e5cea4eece24e6a29c20646657550e21e55df98dd453681c24278f31c2f5aceb5a1575c873cda9bc483d2f2110cef1353835c4cd034768d6e11b8a9734bc09b36fe7393321dc0a20838c0041c80020eb080036640a0c6baaf937808044a13784a2d009433609471e0283f70b26182476812fcfdd2f8de6e350197f82a488075cdb22f4cdfc0a0b50bb152707895b694310e31e8fc4b660027b4024574c7582f2c84605894144bf5f7ffbb9fe3cd8b7543be978e10cbf15b4491c5840c9ae0191709bc18df9ff195f4c984a43e1113e0fc25f56a7f6add62fb2b851f66e3c262f76ad379f1076e73c9e0cfdc56d5d0f16ee3f918e4228800c00dbc3a26404fa76780c6ed3aa2ad9e8bec2bac6a4aee2c5a90d2c70b51b30e5ead2ed1751188d8459bb4113c32a175fdbed8a035d6a01b6bd01c6b50ba1484ae27ea045789ba1ab020bae62ad4537010fb3cdc918938bcf1a45450e530de5c1d6cfd408a589b84e067bf7ffde35f6975a77b1ef986d1bd3dbe425493a23eb88169207c8b50ac28450a706fc978cad854d0ea50df04e8facd82368583752b1602be1836eb9ed4a6d7fbfde337ee11b86f9bdbccf6ba1e9aa4c65046ac71da8ce54cf3182829a6c8ca054244944db3e94dbb0965da9a4742b49a076a33738054333417649de8e4aa68516206624340094ea2f5b544f766897c21e4e1922a428b3fe2ecb31ef78f6d39cc2b2ad41bf4ce1359396a07a1e698914a58b1ffba9c65c5b3e6387875821b08a958320a3cfcc325ec61312b92fc8a4c981bca22c593421668d2817b2e6d911b10ada9f063005acb460eeb6fe2818421665c0ba11a09efde844c3c6753307850031eba58508486ebc0219964f1aeacf68e88cd85b0f68bd92538d66d17006afa789415cebcad73a21566e85f17da4114f7c52d5d4a35bbafa5f2379535aba5e0c977f145175d5c7bb83c2321d1dbec6ab2c8d3a8d3dbd0f6cff4f624378deb26a1c934e4dd5dfca82ac4f3605c2f51e8606442d2c25ae9f108ed82577441f02fd001311010f49790a40c99e50c8d830bda3ed92d3ae648c3f2e96779d4e0349a2926876f81bc945b445aee960f734c0b38517878d0c1cfc41f6b3cd11cd4763a8396ec60eddfdd69e0d3570853021c9fc12c46626f1384c7e4c1ace50b8ff751d83b2654c93fdd0dcd59236a79a7b95da58355e6016abdca1988342edbb63f29b43aa73c5a654ea4ba77644eef5982cb5410ea5602fcbcd275a86f479c51772dad0afabe12835854a19e0226b492f7a27237ef220add3eb728535ca0c143017d7b97c6387a8147a6391662695da42585da64988750549961a4ad22739bd6c9a36855147e3cdf7bbbacf46794b57d251a4fcf5be4ebf4f58ae155d0a41b6d9d7dd9cc15c1d9ce160c5f330c92e0b7263a446d18cd1e28c49a65e772cddeacbe371915974cfdd700ded79c58422bb22bc5ea503912b37c438bdafe9a033589bef3091794ad6e46eb614621304128a267b3587980aefe94b41d7e40b2ad00bf5370516ea02ee573bbea20d6b094cadfa173c86ded7850daf9d096acff4474091addcb061b03a1713b6cc866d63a7402592bb79873eeccc77101c5a38ae41ef7d769b9a538063e4874a12f829c6332a7b272bbe82262e37ed307972d60c495bc1404b890775e45b747f8c17cbed04d32cc3b9aa019c343ed7b861b912f8dd060bfc970a15fa7fab3cc2823db8762031c1ce6a133a2f36bd7f0b9296ad929b112f1b8144190f4a22c0dcc4dba6bf7ec2b46b6e3e1ebf5017304a8d387371d0fb39139c2279d8bfc7b1395cc9cd353f667aac93caf7cf41a1e59638498663e0662296520348a9a9c210f596c3e3af9c691ca97564f73293ad0b731523e91cf3a9de6206d19195b068c87044176bda079bc639ce5b259da1b7f399ea7be6a98a8cb207685447da78d848dddbb4ce08fb2147bdb296e62882548452e1142e0db926830b83794b4c3e6bb38906eccd6eab53d40ba8079fb78d0944b14cf753bcfae0b1cad75a1d9c4d6726856a598f95102c30f184499aaf0456cfa12c683c0e57cae78b4847383259cd2172ae28a7ccd32be20be610353b060d6c800c669304e76c4afc20060ebbc45150182699bb0a24d308457d365a0a317b96121491bc72b65198bb348d812fb1bc9190f2c8eaa57cb1c77aa35ebfedb8c024bbb696532f12ac1bd46795377fb613e74d217ce737b6f4746fea3c2df95d1db3684796d8ee4c79eaa8f4630aa37824c8bbaf655995ad4dffefe6fe538f6bd2e197caa3f817d65f2512bb5e4779415026337b82be45ff5633d046149c8ccf7aed409125d97d531c5deafdf36d9cd5547d239826023184d8426045630144222c0cad1168a7053375de02b75d5044d55013bba3108e00015e7c537af996aa8b8e115309ea03b54f2a36e83a28175dc220d07f2afe81918c4461caa7b65c15c9c8052018b03cafaabaea84897b14ed0039690c743f81e3ae0bf6fab89f2b9f788fbf09c9d423b4203c11ab63652efa5b66e32c777cd1aa3debcc0fd987590bc2410d5307ac6eac097cf76cd6042f71e6e070294185218090f76d1389a60ca65ae2ec87b1aa0a18ffe1c5116c5368d1a63925d0e0add860d04e741c0c0132af462d543dfeffe7bf090f486aa37b7589e4f353600ff1481478054fc25ed96a6a3d38632e21d06222a1b1a622f557f7f923dd440c56251e49efa921e3668da70118b90928f1c32ced248a975dbd1c8a40c6de176c56d7db2982c19c80e1ac7375ba2373abeabbc030ff470e60d6268b3b0f02e93416a295b8f072838e3eda94f07deb4fb784fd0eee8e75ede0e807c5491145cbed7504b7babf6675c622c27793ee362d446ca5eeba0e86a9455f9028d742ce60db3b7a80fe51196df2944bb09e93ca998985c55d03ac0c08542059ff888840eddd8906e9e5d494cf9585e9b804db9dd7815e3eca60917942efc10e82a0d309e9f47a17386a76408dad280ffc4270e1b178ffc6e842bf1e2654ee9d7b1772b21c5dd056e45e1b500813dea619e168e8acb9d54948bf640ff13ec4bce3bf77836859d77a0d598d9642a52c9f5b62c48cf2194a28b604573d26a69e56ab2acf334e978e27652f7cc3a940b27d850f5e16410ab1691fa1acb31802e6d6521d2b4ac989e645524a75cae58aa85825dcb718a4848534f1dd9190df139fb2445b44f99172ae7c531d1c2d8d8d2f5d5337bb216d356e0e116e8e8a79712b9c4f3e9befcb570468701d85682b72cb29608b4a5547d579cf4f3d0386d7ed29aea32a8f7d710ff7509547b1f5daa157e7d24e3d914491c97b960ef58c2f1b571c5065f33794679c807bcec5283a546669e5a42ee707f1382c7fbc12e9841ec8be0b10e321d21086f43be287cec8b8853a14d10dab69ae87e8c71af2f267c05370868a5150191e5df3432a12d023dd45b34371ffcb80c1787203c427add99842ddcd04bff9df10c85d2ab0df4af1ce138981c4a7db93f6fe3d06f1a5a5668f0da789f55d4dfe4b300728b1002dee023e3ee8e590a3ceee24edde635321281be65639368a477309dfd507c23735b2b9d0ffab1ff5524002a88088af265e41379be700b50164cc67b16db29546fa54985e64097fc8c36134a2c8117a72b05747a592ddcbb16c2de78b8e7ca999c89fc27f1ce2f86a352aae4b93b786351c01c5f37fb9d0512ff07a2bd22eefc058c98e6e8a44cbb0d080ef0506cfd5c76d0e3e80355573d0b4716229716857350340254ffdc57f1a945812625a9cec41a905766ff3607676513ed2f54790ec1f3d3ce729a9c15d2a55717e4884dc6417cdf305633500f7705b9c4f94d7290b6ed60f9e60ea939576d445a40dce379be356cec8e23be4825634156f56f56a0fd0281001511ad3d0ebfa03ae124590ad01b7d44c0cdf181fd9ffa2c74ac8a2f549aa53d643f896761145f86bf8867a93b1c161d9b38d4f8304027d6fee04ee569345b30c007a9dcf783dde2979e247556793eda7f1f77414b1bbb7ec37abc8c3d17c8a547cc4075b8e29558368e5f5bd9630562230a2433d03e75b844f4d48a66fab1896fffec28fcf9845b564913b14074c50618a6b1010b18fb383141a9c59d528c4c96b5ac38835996e3913fd05d65244dba4ba0b4ac8fe1d265cdc858aff952a32109be6c475c468e711112d235538e5cbdd019b9175e66f774681c8f9285c3477fb881a8b93a137ba12612ec55d884d9c62ad1dc49e4a57109e1f929e9169cdf4182897a3f911344ac565b02ca35cc277285927a641f886a22c89da245b57399d88c66ed004348d7595df223f2a5d8436871894a5f58842db09d1502d04d9a28166d51aae4cc84c8e1947bfc70a92f93d698e809b19f6d0c4908f26b15f799c5c0c322bfa9732b455f4c83067c520d2a76de5b55b7d76e0a4205b81049ce860208c8c4a1265d01926d4017d0900d6891a9b94d3a13fd084fb99a65502de06f157fbd4d03290d9df6654a2cc9e9e22bdbca409b8512c139c367cc138850a881d469d7baf7e9bae54210237b8a0eb078149d345dfcca6b11efdfb02f7e05ee95c0f1930d74e3e0382351e4af628fa279e096c7698ac7de6d893fad759063bf4af76da982f23aec3d5a9d8ae1b1835d9775aa6319e9b06936d2f73906db0d0f3f3cf0e0f1eedcac6da50876b1b3b3117d67dda8a62cd0f4a7770dfe66a33212438fab6bd0c001a377164351dab108db3078889095981e635ea7c9108fbf4f0c6839a2988c7097d1fc74b2d5c2266f146512152a01578f795f0101e1764a4785472c57d75b692f4c83dbfa5f8a36ec61ddef20647a16d3a94dc00df2f1e9022b7611e86a773dc7b67462ca5f3e1068b54d012783d8d75c5d78ae69504f28b2ff01418c6e1962a27372ce4ccc5a7857b16e72e07ea2bb6b96a3e774ee19135fc8f3671ee5e5d593fb890be8bb0de1c66c444b013409b8f69832dc8f8caeee615322f666a427a52771b56fc53affee6fc22ddd11a6f4eb30a4a294f83fea0dcb0f2144493c0a9c6ac8693f7ee06f65a77b35bf9900acebff7288fb786e956b44bc4947629b33f429f49542d622b1dea4d3cf2796b9f3fcbeb7f9bd7f1482510d335864c3af70fbd44b68a8cf1eb0cf0f09ea88f8e0233fcb28193ebaf1e6eccaf3ea373576f75b4b2321ad18a9f1c25f4d8db4ada8053b3be70ffc8d80cb5b484c8f9fa02ac24958d18865be4b18a3b2573520d6afbe903e35b0547b788dea0abd816b031cb08d013fc9bc14344cc312309fd14991fc29642cf5562d6be2a6ba01088a01cea51bb1e2224ae9bab9f14902531b84b7010843bee80b1c5ce4c0f8708a251eb6606ef5e492f58008ac329b92037c5c5fd51b2e6216ec9ac9f042fe339b0cf3e5bb80548b2798c477698b9eadb745f97c02578058bbfaf24fe7f6b78b67847b2d985906de66a830db76acd93bcf58a551e0f570b7706f31bce81dc7d6d3c855f07773aee5b358e84becc0f06d4d046edb6365821db0a25581c449acc3619593f6e41b57df038814412a51e8c06f791ed1f9ba0d40dcc7e44f3380521b80dab48fdfc58325ae2e6823003ae9ebf05fd6f87220c14d372e6a8fdec1e2cfa88106bd265fe008d0865fa327a3bc873b2b907b71adb65a3ed0ae817d568f8717b64c236513226ce8ab59a5dff72a1948f8732a5f20c939cf47e9e262d0a3a682c53a45fb5341204315b11fae03b9f71cbbc18fe876d68e29b7e305f648532052a43ffe3bbc2eac70560ed08959634e29209ebcdcaeefdcf8e5a79967f63875815b81cd043178180082418ad0e6081c2d65570ca163494574a5e8a33b00c5e42bd6b3511e1b69ce7297ba97863cdac35fe025c99eae02e66ffc0a146beb49ee2d778968fa7d4749ca7ccebe53e09b5d9d708b0b30da6829408424fa2d25698ac109a920c7d726bac8c1b633682a6621809904b00b5e41b373020876d2a5ac68a3b3d027dac5607b1eedef1bf2c1fd7d5ae6162b2c3cb2b13ba0094ada8a42cafc3c936e92152af88553ed0fa25c030017caa52c5a8e576a13a96da640a0b286a1ec6247908e7c537cbdaf80cbd37de75777e9aa934e1986b6c5ce5f3310b36f924801da785216e956d1d4879291fc873824219cd16edb527ae2ff9696d38c6d5b29dd2afcf61c87a525ad120dce6af1e83dac660f7ca50ea5e6d31798ee8d8ebe2177ca077ebebf70d4125949fabeffc01b0b6e854f30db05938a8f15c7d3242d6bf0c7c4fd76b3093467524aa5131ab72eeb97446609f6426d1bce281c1b3339923507676acfc5c209c50db4ade8813143cd4c6fe1b6047c211300183023416545e8ca39f62e33dd194bd9cd1ca86d0cbe2a9436146f43dbb97867816eb6078787384dd6384334155ea840365c82afd5531a44fa3caf4343e30a17f13cab3627fb38252e2922bb0723fa16005e655e774fbb1a925b1db3a20a099c503a83973c0157da8fa3a8f5900b6b5aa218493d9b3f61f8987ae05de6d8e77a9dab719638256758637a2222cf201210d383d0d2001a49c93e15c1242816a4eae2f4d612ec0ff53c25d83f8fea6263e0ae00db51667c89856631b4a849b1db863089b6095b5e0b40a36ea73569e94d30ac45c32711d1e89829a075d38dd3d36c6b40d52f2b75f34a9f75688308724c7a8bbeb87fd0e847727eb2b5696c74ff3f49b44b3d9ba0487199c2e0cd4c436df330cee73893169ef691f1ca14f62112077b1ac29f658e1090faf4fa475a33140fa5525f8ccf4182617f49a7c7845c98a78887ec74f169123b8a2fc37fa4cfd96ee330c5a3d9a79220b9f6723bed715277629cb03345ea380ad731893d90d40d1708bd14e181e08a77b3b8d058fea86b44a76dbc25cac7760656bbe2a0e659dbc9823f3b60e45ace3eeffb83b3bd39c2dd25c20a36b76e1d257fb1c497539192634d88f63e33ec9392f57320f1dfcdb41fa0a9252b7343a8baf06f4fb6b20d1ab485ff33de6fdb46f96ebdf9c1b60c659b426a902a6c5382618c1925640ec05afb1d379b19a61dd5231258150d28039decab069411a6661e82c1d8fb018c0814897ca2ffed5abfcf2f7ab53c765b795ea2e0e74be6674a74a03633102e4b463b8765f499a4b4051402629eaf58c2f805d71454803e3db387ea4ac405e20add3e514ba4df4c45626319198fe1ff193f7d8108b81560b168497c1d97fc1ca514918a159106f13de0a95bbbf6c917b93a4c91420b308b7aa478f65451b442449bf3b04aff686e3b2156227a65f6e8cc6f7256c99b2de29aeec79f8e40c8febc8873bb2eba3a6e438a734f543b249984bf69c7378289113aa027e884860bad3199a2a6df50d2a164538c4d6eced32ffee72a379bc70cbe5ccf2f1ede77a7bdfad3205777958ca857e1ffe1cb057ffbb73f912e97f14a942e942673b04af9095defdb57fa6cb5e51376fd075ef9a165cd26e4fa5fbef263cb929dd0f53e7f85cf563b3361b87ec6e1614b9b251c6f9f38fc68b5f2132a8b4682371fdbe57ac7df51c3aaebd844a34415f23e74e4ad09f8ec185e3267fb5b455cfffbaad222a95c3ba8038a09a18d4a425009c1964eeb420d4a00bc55d19409975c1a9354d6897d35fb549d24afb4df1c349d1d868c917dbf43fd363f6ca3caeb8dc4b03893f3bda3c9750f8d0291915485eac96cf255a67a594dc68d36c3da9cfece64870cb3c123489d47a30facdffae73ad53494bf43478f8374676e734b9bd6c36aab3343cf2ba1005db36fb1aa97b5b626dc4adb68f990cfc5ca0e77c433f48a6dffd7529ed919930d701277b57f07dd3b35db7dc58a42956cfa56ec89f9613e2621473799e8a09faa378bd4b16a694d182d53dd0ffd139cf35b9ef1bd28124811ba06c0bf6d6c294b185946bf16211ab555caaef36cbd13bbc9d0c46d9c585ae5af78d2e4053e9b25c7266a335db6b6f99ffd52666889a9562eec9ce73e345832e91d57952e6de0e31ed047ca943acb81aa0b0d8a5ba229581a64b1b527f3c116877531932ece35795147d71821acd5b31b84020c147d9fe8f559e3001b9d64563351af100343a84648ff8c58157e41ecc0eee4cdfbaa77350928f9094488296a91616d09f7bbe54234829bbc48e431b1a7d2f6b1762e5ce00f1d1727b8611144eb2dbb9f38c6c565024279329c91c4c10e176d77aafdbfebb1a9d51e9a8f5b3d9bf176b722a7dcd53e0598c37606803f9cccb2d6d989fcde058a5ef298f61af8edfcd7fd2f3e9b01d840e07e8076f408500a7b1922c57851ebedf4c70fe1527e1027412bc4b7409f9b814b467aba4e107d084872f10d04835cc20df877e719b54fb02e44c731bb97119478bc0276c7ee2df5194856e5eed58bbbc7e30ddb0e1c8cce4dbf5ac387c72208455dccecee95caac46fdf26acdb5aad9a13af637c9be33a2fe1c806ce5b11c2d168a1293801611e4ee145586be113de8bef9c1d8384a8fd5c202431766a7bab03033102724be3abdcc0effd43e0b651ccbf548789ac13b2846757d9f4840c06788a2658aaf8b140960aec71065eca61aa899ba4b4092aac0eedc36c470828f0c80c1f62d038798c628b86d39ee51181c92a791ca55930bf8e79ca098d014e2223027fbc9fb7a1edca719874b35145ac984b4c0b4b5966e0ba496d841d3a213f34707a52e2c9593eef6416e37763fb3c8819a0891e8bc0ed583918b8477785b0b1c1ed694b8e6d06f89f86e5e9c222386e2ec43cc0d56660a99f75771b408b2be2ba57d55e52dc262e64bcfe534760e690da64c4100f16cef17992994cddeb71ccda3b004d538c0e64751c6896d4e2bda482b8f498d7e2e092c110cea6d7257f69a00741c2402c2d289ab19b5f46094a71aa1ff63245244a966c12ed3cf3a3cd7549fc0586a453151eabf989c0d51ebe93a16c7d79a01b5c4e84cac2b3bb8811305a230593783981127bacac4e33aabc92caf6444b6353bc1d44a8f6edbee975422c09535c3a107fb391368fcff620afcea04befbbe7309eec9dd83091bee632f224667cec29664d28110cb84423482bec0776bd849db14d74e25e599e71198107de766a98d76d09b9e6d1f776650f380f0c57287c2f6baf277f1316606ecb930ba8ab6c2ad5b54442f191341a7e5a419c4c5c81705cead82086fb15e91e9f689276fdfd9e9b14bb9dd2da0d260cb6c0043a5e5b90a84136ba50816e41bacf4253d3bdcc55535d1a4716b48a3e6b46ad7a7065f1668050c2a18625774d9c2e66d2c0ec6699c1e6980729e9f8d9e81b03a29f1de33a2c09578d2930e0a36ee416e5140513df66a02beb50bd9096c0896ccc5485640d7da7b26041512d79afce92af8b0efea53f6fcdaaf2f2bd8a486809dfe5fede1805b62dd613f2da0dc7d8147087d67888ae872ecf834a05a3b5cc057e4debea7d45e51137fe1f85d12fe2833e2835227deb9bf0d183860c0d5e36b2cfb09c35e3a2b87ebef91aef0f9c2d8d9ba900740fa79f0465e89e7ad04d8ff6c6ced6b23141f95e58e5acf624b3c2f91a7d920be172dee5edf8ff7662287c523760afd3ee691f3962d60f9531dc6234a0828cfaab5c980c27ce27252d384c06784cfb6b5eca91325cf0f2947bab69182b893b78a2eb730291c1d5f6212dc882ea33cbbdeefbfb942107230dcfa9ac20d414f16b81b5af6fb9fc3b04775130e55cac3e8ab2517bc1f281ce952558befe880d45426cb5ecd9b9df95717782f486e431afd7510feb19bfe02c26a9672437ff70fa52dfbd23f8f124b4186552fb6be4419875683034228af74af6d2e57e418e07dac3caa414350bb1b4404505ec42e8226c4ae04c1ec14e798cd32095e0ca3c7f1ce68c28790994606dbaedbb4fe9ab839f601106dde10737b59b6a32ccf959a93052367c40e7b6cb9232933fbd8fe50a355853e40d275e258f968f612e107c3808d0049fd863a85e554dd19303d30f2d4251ad156de23675bf3799ca975fa2bbe16dee1d7ef455abe2224ec07c07710b90c55374f1aba9e21ca9a6a461db58f2470b164084803a69656e88cc4c7789134513472228c11f945d31b8234ace5cd0d05cfe8ec2c56f02d433bcb64a50ac9ed1d0fa1e1eb1c14c1d44f655be06acb3c311251e26e39206625646211f1c53afbf016f025f13d1c513b7779e418bf0fe07a9e2e29c2ff834525687f6b5e66e6b3d1df91381026b0bf70bb00a2a23d674547789490f07728f8807c1566ce0512c5fe3f7f734858a4304ea231c2e7098ccb1ebde729b124d4ebaa3c8cb9fe54f8393d9846e8f5b8e1912888c6014716e3b332704c69a6cea4998d148a9ddc0ffb9787e289f8ec3517ea35a5d119bea9d541a0c3eaebca94428afa3a334f4d1b8266cc05fe93c3b2f3e708ea12795d14e3c32d9c1a0c26567294539089333261284a9a3cf5a8a46b0f8449d741b95789b87298dde7677b069d370fac20b4c6428c92068b1d4f525167cc2e6a56559bb9a91ce7b1a3bebb7420e9317189f6c679b9df10084968f7dd347e9d72fb1b7248072bc965c77a9ef77d5645804cb33c74ae97374610763f3796db05ce513f5bdfba604b0493357060b565c74eacd326bf88d4767806e005fddc3319f238d9f0c5585cec8a124eeeea79eb199df3b947919e004f57b51683844169fc363be88663fde12164fd5333554280b4d70a06eb3860bf216e676087569324d0d5b65586b498d254da27916f2cda28bb2e620357f1323b17dea7356153313e2596adb0b4587100d8f4a55e10d6a314b320cdb3ce6a940565876f5e52fa036ee53725cc380096248dda3b6df8f28a6f27b5bb9ca1c5219a159ea43f48cb33a119411e30fbe13715d1595443227128b17fd279575968a139f436252f15b1e87eb719649c0fa5126202153bae224d12126872049dd408a181e4504697a58d77fd159e53196549b08aec153886e0633f662a48f042bea117c48957021d86a2c38237505e93169f6332ca3db69567219a66c85a7dc395375f591010531bb2aa20dc138d38424d4d0d5db6b1fca988de1e7d0b8979d55c4800b7105d59b5dc5bbc61c4f2e8a3ec09dabcaf127eeef3755474ac5877af085402737864c041a0870bb447315b841278f45784449a077ed1e12a13a9f003b682f0873b60dbe0e8fd88ca65aa2a0429b6eba27151c77737b8ebeee246fd7e4ad06af75f04d037feeb06fd36662105f4ee3982b729165221a13adb5c1ebac58e0caa2790fe5f7aa2e749301bbe16098626fd2419af54c379fc2a15ea5bca419ee8ac2b35eb9b8e73280e7fa109a5db7e28c4822233e785d57ad16e80d94a02ad380f2008bc9d7349435018c8b282d7b7c368c51e9f30ed247d36fb4013996ee1ad072934b323df546b9849e568aaf6a9b853f6ac694dc11fe378b634652d3779ba6ecebf4a0abddaa1ee5278560f120cca3a1d0c35151ab3bbcf95133274cacf69a5f7c6681a811814f2226696e2a15896a6413e3650443a0ae4bfb42a22137352a486acb0f7bb0c905e0ae8138e80d06b100e57a627e4fedd2f76edf5935a205bbfedb21e9ce3e7ab7e694f181609ce419ee912f9e7fe9b359c9cf73e901d3f7cdd1e38f0004e14fa2cc48cf4b8254b14a683bd3934e587828dd57deda0a9b8d2ec2d6185bc4636f41ce327761080e7cdd4b7ec4ce80fb28072eb6c80eccf44d8f4e7b7c5531c85a042e1d272288f73827a9609e23ab0419216ea1fa88aaf809d509051ff7acdcd638b9fe3c4a3eec538c70dc7053ea06b1439b0640276d4d41a9fa511a9b77da8147bffb8f2186d9154f60f2f567aec54ee9770d5a7e66ad12b0a3e9de48f5577bab03f70567165e0f1b349425641813e9977409baf755554c31084ef1c00e3db99d8c5ee9ae3757b4ac364ee69d4c5ad2870bb28457dfe968519832a1c59378375468934b0c8c6a57a0155f36c688bab09de6a537cd46d03552fbfcac70e0534e5e4e3bce00b58b902348fd296caf48b6946b704cb27c250dc524986631797e489dbe4879a440666db29c912947ca6d9360b8a8c8fde0dd72744cee4e990a8e2f2563c08746171db65042ee54499ffb7c18b2b530dda010aae0f58f4bd6b970f3321a5acfa29a4473ba2d16517590b35379b25547a84ad9f1f08284240a6f000c1b10d5c71d3266f7129d020a2103ee7cfb3fdcf18fdd82066626202b7af0d073294374eef533c0b3bfa51ac3f702cbd091017b9ad46518ca958d871a3bdf6eb07e7d7be3b8db6e04633a6c28a54cf67eec89837e13dde976901e5a8dec40eb96ea156570c406eb5396544ca19d1e220583caa753ab6379a6443be44c815e02af5f069ae3dae89b3fdf1af31d55475fe6ce40aac5cc2100f1c0f782e9e9735ee8336ff1e5d732a5c9bc7494a9c9105be6ed0ca66b7cc9a7c366517a76d057ad3a6c98b2ca6113cfc4ffc7226cbcb4cbd10f7ebe80aceb8bb55c751b185655b974e49d0de4a416a008c8bcfe4a3d1d99a0025c35ce5105fd57d700bf2ea6bcc87f036809aff8fbfd6d95b3302466e3cd9377499a95143fe32baa0471e1c230100be69a9e528f40f1ac315e41e88249390a05a33958aee33d3e4a2d931e5542c5dd45fb17e49b446bb91684bcbc14482bdea164371c9c5245a0da1b9750bf466662990d847652681b883892732c6256002121a673543b87ab22ae88d881fe7f75fb0cc464caa80ecd52e34f8c886526568a592e80572dea27f95f2986fd1e4d9ec208674d9b3e252bce39a0aeba0a1b8abd7e7dc8e5bc386281475266b4dfaaae159732979f37d6ceee6c96c78df6aaa70afdf5cbc067af51231c876eaf812630a7d6b42d9c3e23cd132dbb0d2c45158222663d9071e8481196d9d380447def16d22553eb67e7b028cb54c0f68988449a8da56502342a62e492544592311ee445c972623cdae93ba210a8910c3f52aaa31c5844c35e15f3f284c6a675b6018360505d76ebb937ef29efdb40b7f41d1dfbb0a395bbdf8ca82859065366875945d0a8748fa5b4af9756719368149003789f3394c15876e20738f99be797cebb782394cde316856b9e578cd1767ba0569eb615ede59328631b4e8d9a084fef03a9b30a59859446989db66f171adaa4eea05e514eaa6a0ed1ee4eeb137e42fc7a616ca4988687c85095c2a7d1f306f4003b8478594cb7f3f751279ece19eff870518f0b6f3a803834b45ab2b18e08381ee08729127d936a2adc08e73f13551277e7a63f1fe3a410f7a2690129931723e8b4ba30c87e15d5f77573cca1996e42f00129f7cfdf1d6007b95032474428a4d8bf9f974aeeafdc3ac7ff2915988a5a720e8c352ec46610cb9cdef520891cecb43c3b548d8b5a9056b251aa83d6e7b8ad1693bd4ab5ff2dd675c78249fb3c7c2104c5d3d1754f972164691d1e4de7d3d57e1d07fae2282b8d5dd975fc2db45dc4214f5fb10b952783b3881c04721f395c46a189913812b69a65b37d08b4222f52fc309e758c2549fb680bf2855d440caf7d96df1f8757ae2cfce36986833a3bb19f17d3b6a0f3e862691d9ddc29559554150c167e73623f30cabcb1616ee178d5d57dd649b150d4521a454703e7f984878f50aa977566b4b27b3f06cd9249f5801967f3c2b5ab1b5f8e19218eb212e4537e601448c59d466a5adc83c7dff4f405337ef5e9b5f77ae0953ecfa3874867ce3c00718b12ec1dc86b35b6bf1204af6dcda7fa023645947c14bb4960ccfb2784bb6231faf963fb5f3d6e55402f2c17bb3811622ddf097702088de2602da1545dc1134847620813e6399b7564450b1aa6708223d429b601401a10e65d8d1e0487681c94767708fb7ca6b80d385e21933386f29a16bb2959014a4b1b0f077957513f697538bf5b89803dac470c91011414de96f24d9af18e0ea25f580518d4b91f77aa4a5274ad4fc11274c2ff0df9801c647f31b713c039043094d092c194e8f8bf21e39fe435385ef2d8eebe442ad590088536603305e6320f249b1db69435a897f7da8bd99d1bc677617c585e983bbe0ce8be8960a3a4a9088f9ff449ce6790a72e35fa8529a561defdfe4c0dd8519acac7b88d409ee10be007482f4530f12924860b3a9cae9758b1a8af273884c673abc74cd083e3ef2270b624ce79b27e100462d56f82c8fb66eac07594cb4aa65b89f5c14a93aaf2f698d9bcabc2bf11f85409b1e4a80e4cdac13ee6bb3d1ef276b05b3c5cdc24084606f512f8e0f1cc52e0a3ad6a6072223531cb37fa0e076d491de46eef151a1d26495b877c5eb53fc4d36c9d8f90829f7509605cfec60e044da3e37332dc3b092864d38bc281df3afc8fd2a40a3205ecc62b15ed3aa6771695952175a8ace711703169691a5990082a82270fdd26e744c4cb1beaacf407d21f68be5e944d603117c49dc906503ff85c0395153319722c83871c055b9eaaf4d9c95128b4e8abae0609a18cb784c3ce7f4e6ef85c7cad748548c899a731d79edd01de3ed86086a93910203a833d0b7b2321f48965ddad2230cd66c4b40502c65e520f6826c543fc47458390c2f04e7f857ff9abc3e791701c2af2ecc16c103cca84a5b80a6d7873862fdd6a8c25ea9d44af404a30eeccf020a1b5c3a7740ac9aedc534a0122c0e91ef8c937b8c3bebd88783a7b50793660e41ad52bbeeea86a44619e7fe7011bf5ae2c043789196313708565fafde73a96c59156d4811eaf3c9ecab4a146b69f0dfd048534333612e99d5867dd359727fb7380b819759a02219f484cbac6f63b2aa952945ef5ae2dd6ef66e4d271dcba73b5eb3c825859cc946a9cd95442ad48fb450ea005919ac0bc2ee52675f21d397c3dc2540429df71cff167b03ae373080b9423bca0094056022505d1e3644b3b18cb90a12080e2ac1a7c6b60552d3a8a7861639c44538b234d107b5931cf80c935559ccb7edbb6cacdbb70aa362fba2cf71b3fb694d2df43903d5eac4481fc2b988531b8db3136d98d88601248cb57330698b10ab3881ac26e27e8de83366130a02930d18010b83f11cdd91f4582048c38726b3958843ec5572c836da947b547074adea53d46fe99e4599bb48bb1a66b00a4fe8b31b6fa0092034e46ba7540975cd94f28f172706afcfe8c8adc74d91b1eb90f4303b1b2d46a8fa49255cbb24b1b0c8161196d3cbee4f64f11a0fa65d3a9013a5ec596b5dad6058ace1aee8cc2377041051e771fb69a219db74a990d27d262116442dddcf5ae1a28748db2f86a8f0635267af7ce4d9f800dd58b2eda2eecd57b0d30868b6202d0c8d0a0ef94837bd4f1b623390faa00720792b68b79186c4280dfbd98d3419b10a26d6435f377a1ec1e2bb968eabcff5a0407c8bee492f5f90f78de5f6d9c6455ebc0bb276b16dce5c7e25e80e3bc682c06f530bd2ec226587a2241d00be62f049275753a99005af5e0c7383aed6d1ef691e5a7188bba83917e6113856baddebfb8e74ca49649ee83536eb7ebe350baa42292179cb6c822fb21687295417c07522c043587653b1699cfe208763f2377264c6c37538316bc48014a0be049b6c3d79d41848d690326e2c4b9ad6977bcca3f3257ba306514b3c01a378c3c1d074f0cd91dc599373ea98227211795fd65562165b81416a70a513845b38e8acec463ff23deaa7668e00f117b68d2aca686618b67563e40826f36b5ea1b1aeaf19e8bf4a58f5dc3618f46c67f2018a3812490ac25d53295bd5675dbff24802ae7b6eeb5a8c73a27692e9145962fc221b7f11d3f662d85bd46b85bc0d6031dae6291bad6cb4fe8ac4dd1f73ca86267795241766e98d2736729221f7d8150166f961528fdb5f0e399bcefa8a1d2b5444d61326c996a1867a72e67347b96bd1670b03ddc26ea5cf55cd5d10a892d3c2250ef08db2c78c18c70576a93f90c218fbb141ff463bb2da396d135f7bd0f9811064d0c42ae9c75d5b20dfa0e6bf93bb88d3b826ef0fa110f57eb371058e7fe51dcb9e76848b1a01717bba0657930d480bd835db9efc9a04c04ca3ece030ce28256154ebfa9f6689c328617c6c300a9ec0bcae081d2334290d894e984fd01b8c8072c8382bc32539454532e65d905b30cebec026c63c6796744921b04e1e02ea1c67781cd09929227433008203597bfd9703081638d78f3da0e4729cc1286f01c56b0ae69d51fe5f01523354795a856674eabef50f4198290680351c727481b88a3d7a0400811317a3576a00072edc803181a25c0cbbc35074bf1bd3e698fd3491b92d58bdaaefd84e6c0876d381385b9646ed3acb39956d880b3ed40843ea2c7694c84dce72e36711934269dd22b3ba67824106d9596456410c702f3205d4b527938b16177bb5fe6500c89099b7983ad2da79039bc577e3ac9c20bbbb7d22e3409788a9b319ae352b8522d152441c11095a0fd8a001ac331816f9a62b122378ee0f207b7f57a594028e5302976a0a442293654b291df150c2b6759b00876c519ba666ce51417203142dbb97df454c53c9260e68918e59f9fdfb98f6576df2bd2db58a1b4973a79381b1fe1cc1f83dc6094d0c06831574102d4092865e1651836ace382fe85e4fbe1455237d1be84ceb690e79504800d14ef5c531910facd5786562d679087a2f3dadedc604e6f1f0a4814375405946b192a827bd710f73b65a5c1548d01868f2cd8fa7dbecdd024788eba6f806fe7cc0e20eb3b4f369213115e4a3ccdf5d6c8bedc321bb275b2368370ff7be8533cee2158d3f0a5447469d4ff28324f80bf0c15818504ee979bfc16824f05d077b8e58e8c4ea7d00801088dcc21c2f3f4f2c42d1547b2e5cce49bd890d6cb7b331aed780b6a7dac292f8a3f16812ff27558d2c36c1287952f71a435c07342da86766cbb4f3d26372f08e2f0f3098c3a42d9627812a83bba96175ff2abb3544b100dcf3c6c89fffe6a9c0d11d8ff94627df13a923c6a5b0eabf71df805ce7bda6a103b4e31204bd49f9ec9e14ee4f21e9011e72c8f3e6850a30cb010b63cc72e7d18651f825ba708b05e68093cafa2762a0cf462f5059d4bccc119bfcd2a39092d0cc83250b0345b569c037876b979c5025d19511059e36b17c561a5fa1b403b5b24364e2ed9bdde263bdde3bda4d90b0f27991310ba8bae648d0bb2cbdebaadbdf9da5357a4b17bdde410317d2f8337d1819a2e51dc0de1af399b0a581ea3b3cf3808b3f7c1a8ba331e5c6635d302f2fa7dc9215a5f1b7c4f90cc92adc87aeb29935002c011824c454779978a77a81cc0ea444510962ae42f8480c08c7e5548349f64166afb6d8c22243706d38ff29addade5efb79761c29b17bcf91e008585fc155ae0072537efeaf7464120d47fed44685c541ec8b4e83d96cd34344b7ceb187a1b8273f66636f1b8a15f040facee7401455471ab71893ee94f6afdaa879a82ca2385a38b0807569d0452923a2a0b5702144109b06ca60488cd8a54da6e5bf15cc56996134f2dba2a90498d86a6c91aae63232c4fe3e6bd17c4458a8ab385e2432d941daf9f587b3c198d755e806aa3565ef4599d045df95d99616fa97e42467753347015c5ffa256dc159bcbaf108cec62e2cf38a6afab02913a02ce57b492d877581d42ce1852e3eff09ab979cf12d84789e88a1c2bfa368bcdb27997d3ccf49052ec8b22521b890dc732c08127a3fd520b6d82a255acb9c49f8bcc2611b835ef6ab5ece202e4230e15a49224398acb4257066b5ac2d58b07b302fa75ed41577bae291178725e73eef48381986d12cab1b45355946a8a188b668c36401c8af7660c7a56902fe806ae684f4f1519eefff2fddcaad9f02c72199b4991e550351218406967cb3bc3e8e1510d9264ff6ed156df3342b64ce1ad5621a8205e47aa97cdd5afa19fa1a236975e5f78b64f1aa4f771b8f4d051f6bb0e7488538625de37de49a8cb77afb0384dce8d9fdc82818b678d61c543b5c36bcc0d4b22583ae9f761937b40a6498f08e18be694ebb8c073566695d70ffc577cf05398918d1e6447c895c6da32adb0b8ad63110b90e020200d3dda29c19b38d0a37620a91beb7abbdfca394c69144fca8442e1ac6d0e32c56a713794cf2a95a5824b54d2b6382982ae49165cf98335904068e25505e5579b42e53bc8dc77509a308904307f1c0b39aa78be79d67da43e32e591adb896978c869955ab7779ed2b51c2d8ec55ae49632a62cc9a9cdad9eaa31cf48e90aba68087e1d2a1bbb73ca590039bf876468e6423c2c03b42bc7a62d59635e8511c33855d27c215651a557d9a77ae3ea00180742a673bd85a983a4ad128f5bf548fd9dd1e06609b99f8d03a9957f5cd57cb14a492d20d9f6908c4862353902a1b5370746a94cc3c538cf1fb61e15bb1c74c29948a63a9fe847e36bac3f1a316b727e6500fed9c664ab08f10075f25f502104016fee895fa5480b36ca02fb4dfda49006c2fca2b7821cc6bb5c37e11107e16febaac4fc6d12245af73d38b3774f38c634bcaabfcd07ecc64462b830ef4fc09404ee8099e75ab891e496963a72a670e0a2ba5cc181051176ee6a379582f374d3e5562d090d8016d2f199d5d6ac95df5b8793a682e7e627fff47cc37e60aeea143c1b464924c6834f304162efafd428e116dbbbbaa1a16c50ae15c3948bbd225e5fc522c26f429cb6dbab6d8fafd7957d4c4282be07c84009341880cfa65f979d8c4034b35e4edd226eaee0fc5254c0f13c87111824f35ba6f87424ab2efa23064479192de5e245fbbcc4dd60db0621423a10db8466c6af0be87d7f2c8b519b3ff6b7bf79b0d055f3c0e92597f70efbbd1ad4c3c1f3894243f4e187423f4cc9e6cf45e9bc0ddc467655ceefc1b38df722243084f1b716dd75bfb6e34e192538bb9e3b05aa1840d51c8571d2dd7f547afc455d0184056f5109c2db0e2775af338022f9e5d80400e7e86abfaf319e956094570bcb5b735c90d15247ab4e7eea44033dcb382582c72ea31ac26f69c68c28193833ab34ad6bb277821986aef568640feabef257f1aad8cc34a04972fd9fa50711587f059c65cbb1ffde4784442227cc10cf3f2f90458441a1c3c5c289a53e527010e461ff8bce586d73fef1a6b3e787cd4f8fa6dc21e04884e6a09a98a0f8b0c186d1dc00ce85e4a59bfe6b7e672c8c3017b75933d3f7ce179379cd57f39a54007ef0afa6a3b12d727865a105a81767bea4cf6a77cbae4aa1b5ff68ab2e0b86dcdf3ea1df3271b68b86e3de1c4ded4b18c41d5f4993914af36b5570048c06233cff8158dd28c639849ec4be21c8afcc22e5a640289828ffb8c28776823286f2c709634d99dea9802e82d4ba5fae8115b9a8f2a5ffd3bccf846e304d38be54e68c7c63ca3a574a212a136ab3c3860073a949c5d13db757a78d642e0ea99484aa1c844408cc820c4221a2ea6244e8100aa90c379be53288c42bcba1a14491da2b2976907368abb046da90d31a66073dbd88cd736df369d17fd192cdc811f6da17b0ca322e9af077712dcd6a566260d6f9f947768ace2df9dd138ff78970804f1283abf249db7f9c32ed46a78897f0654ed8d29bdd57bc4722b10b9a2d95a1dee4b0f665dad8a3460344b042e15be5186dba0b4f20ae8766ee4b03a38c882733439cfa8dd89ac56ec874008502f617168e86282dbe4fb3ef30e54fae8c57744f3091df589dabb09aad8f7e41da4409c5a6a046c992c96d41dd80411c23cae467f32cd148a2230d44ce929508d2b521dae423af428924831a0308f1e2a7ad80aa908b4a9a568f507161c634dca9f6f99cfbe252c72d9534c13dd9bdda9cc876002e5369b169881322f239a78a4ebd70feb408a1c149ed06b7b029a74695904e0392ed9f86689e3365288ab2c035e7df982f7c6162ee10284dd067fc25d716e68c44667a6f2169076238737989f78c9780cbd2de3a6785c4f0a2991a039e71a67f0fd16334b6bbb664417cf385197d2f7afea594cb003fc60d5086b4ac6143c8d2030bd0d1d90de230c8357ac71266e39a83a36a904ab935a1948f83ed6679af50c31ca375e6988350ac1656d0e5e85bc3b437f1122f2beaa97986eb23374d36baadece6e70bcf978fd7cbaa6edb861bd34c80f7bd06609935ea8298c358489860fbd56d61030e3f64cc4f2d6640dec80a7de84058f6d72e69533c1d9ef79a1a13a668bf71e454aa860ec2fa4f34c365ee82305acdb6ed8ddebea51208e351e7f62b22b69d71aa1578d4e9d8e389715d741f88fab8e8caca58fa30c9bae90d35040e17bdcfa86da22cf486d63c38c6a610cf957046ee662a40612937bc1c02af5a740022ee866f8767e2068383fde1a19dda8a790fab5763175250d41e1f92a3f204436d2a0f29a0617ce3285c72e7253760de2c35d8585f8647f8c072fd88edfa7b30542d20230207413342b34f60c6d863e49bcb56d4bf9c84e08a064d5aa918db21620ba4a4db7e381d1d95ef565220641837ea87d1a9ab8de8594f5df4d1d217a40ad24685dd22ee204e3d5f2d16853eeef521bf2d31acbcd2268ffe2580ee3ebc753a0bc376a0bd556e4271eaa93be9bc5bfc5459982f9e77714109ccf3066230395aa48d003aeec4ebb76929cb2fc5a65d7916382be5a7dac6f518600c69c964bb8ecbbf6d20ac70826b16bbc2c5dccd06fd3f11970aa65e146bb3a9dc61a6629e344dcb887316eeebb040e129f8f88d0dba341fc8b8d3981e2e6fb0e62f61ea05c64f0eece2192b5f0e45282466c61054a329f0c6e0d1c3063542e7818bfae04646d7fc875b590c28d55ad3942d175a1c1486292b20977f07dc4f35b38c59df8e46b043cce3835900b44251ba8d2e4870527b66ed0873828cde3e31a1b5b383dedb1f7afac344d6841a5f462e09c046789e240424ddf15c61005140b1ac1550abf23b0c0d7cabbe364246b7fad123d8745d11923f02d406bef6ea163c02fe9b3afaece49fe2428358e23321dc0a411db4755b4f30a8f05410eae95bc744b13385d44dd426de9f8d3f2fdd0c33c141d598331a5041033d631de81047637f822bda101070aa821cef23e726093126d1720d1e7aa7d585854823b74e9c1d70915eff88c30ffb6568f8eae748150a9e630c094f29e4ad8ac5070aec2057cdb0958d363c90f07ab88a6265e3deeaa49b14c4f1a4f1d21e421e4a7110a8073507f34957accd7940feb3a5e098e9af0670df9579c7e6ac66343ddb6a08f469cdb55a40a43d027e7198c68cfa8c3cedf3d2007995e9fe9696e94adde07568f23e33839e7a481b402173342a454f5a5c0696628dc08fd8b60ce271f13c4060dea940bccb770774bbc26c3fcf4042ad4ada090130680182ebb2a20152fb74aa836f77041a1ddd49f38c706d17631b5646bcd7b63a75950aea8776664408704ac2b438207fa1409ba8526d18a00a54fbb3d45816503356280d8274e41a51536ed61e42826ae4140d93f75b5a4bc3dea2ee01fb240e00eac655662be537050aa1e44aae06051fa183663227655e163a41eb63ebe4882c8b74d3a4d21076829b4bee766a6c684a3f27d3f7bab780ec7b150ba67f772654c70c4633d2ef6d56f849a683b8d371474e8b42fced116801c59b5ce478a7e863bd65c24c3f67a7e017fe464862f62904b576f7ce54faa22c6838e081f5f16a9251b3b1343bf2e3e30aeefe6fad082a70df538c87ba1b78af2dc0b3cac2845ab04ca16d1d91c6fa6f3ce4256ba8f905d7e599cef93bf0efeff607221f02713fe5c364d33116f9ed82ad8b94efdddb9819810011aba4e3600cb1a2c4f3e62350eaaecac0ff8c4102bbbe6458d88df94899a26dbca6a6d7e748f89453fa058c8cb0e42e912b380cf7210a7144c4f33d5f308428f4b8707d5e7a512b2b2f173714c1d962893e9500d80a8b6c41a947b6089752e0431a8a3b460f9a8de1660e4c4e63a291a1e7fb735e5191ad9c5548d2a7e4b0f7500269de5c67679d70bef0e1ea5601865b817e0800716f14435732902fa2faff88fed87b3af1ac0746af1723043f9e87c8d769432ed2cbc3ecbe0327491ac458b158d808aabd62f2e6f7cccda87ce4432690ddbf41b6508a8947bbd923108b9d0c85c0495e427862df8d57cfae031f63dfaba893d8a3db026b1fb7beef523c7116f5c5d0a6c0586adb946c9998db991e4d090e2ac1fd1eb1b0281e5e77515c1e7f1526f1bf858f7a03f3a9f77f410664ae293c9f83602bff765cbb3ee04d19325806c06a3085887bf2fcfbe0aaaeec40855cc3d30087e40b6d02cc1c030f177a5a5494fa5fbd347d72ec95da4f260c42f24b9f642ee5568161563a0b4118b3e74fbc6457fc797c0807bdc2a5644e016c79277cebcc884de176daf43ee426105234286a189ee3bae6788d0909f8d8051b100010d903246e823da2aaffb7f22aeb3a886d61d923de4df208da39cd0a3358b6306fb525bfbf4cea8bd71111c4a56bfd2585b80ce0de407567ce6b8d0ee964bfd040b5ba7dcd5818d74f9d3c168d562293f0631c45b451fc9f716a4a4fde7237013430e51851a4a32545f8ac10c1f619e8f3b6186d8a2b90a71633a5a38820e7df7b0d1c335ef47dfb650392ed1893f0b5e9b817597be40676f57c7a671df85f85f8323d21ba0cc027726731517a07d789614f9b9a740d7f9e52a3e0f009ced791fc27a95bc28df583e57192ae74963aa3d60c81bb8f46bd92a9c069d7f673c02b5b12d0214838764ddd50550b3562ad8893a16b160185a39f9512820a8b242a801675fe3a3532ce94b4921ccd7f9d1b23664896c8fad9292a9de2aaaaa28ca671a5e0cce003de2c86f1c6bccd0d921c3dec2de6b945275a84b1d1117e64246a114a55ecfb06b6dee077af71ae3a8ca42df0faee8250646aa164cf5a7d083b019bb67f0fad1b8f8374e04944eb9365e4c8cb7cecc72707562aae4962c6f8069c43fe1b4c4f66029b0c7ad118a4cad372d12b404a1906719191b9aa2867efffd05ecae9e39fcf8ebd28b9d92c41a85179d684c8fa4cc19302338c6ea459861e9ebf7f49b075eaecf35c25eab01aa1b5f9df79ffd771d83757a3c65009b11f41d0f5766a84a2e8ca18f42ad0ff3e6d0614191536b436a031c9fe05518648785e8ad5c2f1ec1e1d64641c270d9ff971628ca8c85b37c07deaef79fd1522ce046de08a56b51645ea38b37874a56c4900d7673cda409a10189c5e133c2397ce6675ffb05c396c02f45eff7b59af66fe84f951af4109cc2f7ec376477a743346bcc806e36a829864930510a0e1b774fdfbf73cc6eb32fd5076fd2b0676b0811d65b8520132e99cc91570522f6836bf0abc1014a344c4f1a614f6ade9d0aa215824e8481750f1b0de182f90b21f63850524c35fe66955baa19a9acaf811db3b920e2f1341687d9b7e2001073a36d840c008355b7755d9f15929d8a8283596ff409706b21ef6c182191e80a625a2167de198ae24a83d331e897fab33c294c149be7f6fc4de113a08ca4f298446d1ad8ff49d791542e0724abc27810a085a819cabeec61357f39cce7de223c8eb89efb4fd6b96f3d90048b2c40c74446d52c0106d3e2b6e8865003a3f3de8496828e79fbd8de28416d97aefe17f2cc4dd908d8a131624df91b4457e1a010cf6b6d664d42dbccce33c683b4036633c599be0cdc2d8b54147e84cb55775d8a1656799baf91502e98ce2ca06d056ee04f4c7555451d1adc79c6584daf6964f042e3813402f190c9fb9e64f4a19b4d4529a631bd0c3738d0299a2163ca2fac820e084b1d0fe0d0149578f9b8cd93983a942490f17096ac485f1ba5436ec203765851e9199e8e1c2037cae360ee92b2b675ea9f88aa9ffaa1781a085d8fc62fac560f83b0a3a595c0d7cec916851c1eba8c72b3656bab80ae34ae3392092b26951c4046e5b3e884192a4b4234942f6e100565e6a49d0a301c7abcb250456327eb8a131c640e389870e096a7c559a0a351af4f941c30468c9964627d42bb6a1cc3b9044ae2c73e6111786d6bf7b3431b2fc977c56a4bbba93dd1b146bfbfb0c35277a018c4702bac261585b4014564d0707d27a1d40fa395157a2ae443af4337580e181063370d0178e61b438bd1f0a016e76dcde0d29cb3d8d0b30e24e817f464802b9ea8377ae2f57682baafad0910428ffae7e2fa2227be5031bd2dade7b6f29a59429c91455052805fe05ac46815dd1782c0f0b029749e31162b5235a4f8ac6e3a2f15cff948da4a295ecf62adb8cca3633da44228dfe27512a7f71239ce551d966b6ceaa986035d5f557d9ea6965aba2f99a96f1a06c78f8802ba9bec1549080000452406b2d9db3c9860203654951b8d19ed7de7cc62e8c83a60b0a18c7a64b552b8cd29341e6940ea13c018494d25aeb9c94524a69b54fba8be8eeeeeeeef6eeeeeeeeeeeeeeeeeeeeeeeeeeee6e9594f22202ebeeeeeeeeeeeeeeeeeec6ba31ceb4eeeeeeeeeeeeeeeeeeeeeed6b6eeeeeeeede44a2d168d47376777777777777777777777777b768c4a3b6b6e7eceeeeeeeeeeeeeeee4f46d7eeeeeeeeeeeeeeeeeeee76087dc586133a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a537a101d1d6e35f88d1fdda3fbef689fd1dbbd09cc9a618be6f77577f721e67710b8219727b5e759249158ac30d3727296966f342c434352d7f32623e7a9a703478d950b10d7d9782655d0b8419ff42497f75c8602e1e81215d2c125da0590c75a01b90cd6027201423993eb4fab803a445138b1b0b0b410e917ffb8cdd0e850373a2e9543a345442aa78168b46a9c5860e165f4b4d0420b969422b108710e9777514b468ecbd8b8385b312cabc1d110a2c1ea2225e5557e56ad9694c80aa2560dd5ca7f3554a296a8e592ca919c0bdd0c1aef820d8ea59583325243256ab5445668991622a921b46d13f126128952a2560d8e4610d0d6c50ca1de2890e83fca5af94b0fcb104bcb5f5a5219d6c25a3992aba1ca505daac1534325040d16e770b1df9242f92f25e87a0d550d954b8a886ac42217c948b5e73f24d53d84480ebdfecb5039a256cb656aa8501efb4fd4bafe1dd702e42f3f2a5596a1d8e85a5241e04d0d8e1966267a8006c7ecd12ea672521d44eabab8cc68e93e1a595c7f16ee6bc1b9fe2454cb8a45630ad77f45d46a01a2c1c5f54751b5a444ad969febbf69a896201939392ea4e786e40d0b125936ba7eb0d00984b1bb46cd5b3ed3deddddddedcd7dcefa6cbabe7eb09f8d4d8b8827e8c45e3fd889a2a7a1312e3fb72e3f0f5d663169e6b8bb3b05a24034804d26ad41b0f036991175fd23474fced9f890b561bbb38b2886a955a0504396e4433e74e3a99e9ac8f8c6275a396c9307b94cf6f05d08aebcc53dfec24113c661ad4a7b726ed39e9ba16aa0176b3d814d18678b542211728bae9730edefc14b39cc0afdd21dd69adcd9a9e7f637edb096bf34d6bafd9d399451b46a19e3156688d13bc82f31bacb182f2909e01f63f47849196374975276d3a34e9695ac7d623f6b13712084103684b0216cf8ddc5f63a043650f973ce39e59c534e164bdf7280a6f9366852d88a01f8a41f40ff7adeb24e1bc3ce6800fdeb2f2141eefc98033461df39b40973cfc14dd86751a35c8c318768c2a494320769c23e9b1ae5e69c73e6304dd86754a31ca594529a0335611c4d790e4b68f2b4aa35b4ea9138f00474e7fcda6955d82fe6dcf9d7964335619f610cdba39cb48abc08d6cda793763370b89ebe0d571734ffe6f246afa7b48bdcd781d6b58938fd0178533dbb414d75bbc7935f8e71c7f7d8b14dc4e90b0616de6e524fac9b316715a3cf39eb7bad9d439b644787fc650439b73f17ba5fcc8938777e77473a7b368ee3dc18bba6a6e44111268831428691b183ec49e9714a29dd3fc639a7f41d64cccc41ab9e9f29647b94734a8f524ecaea01fae94912b4858c72d25aa59cb45e1ee5a4f5c2e28c0757628c0c2bb4e6d48b07624986b4500bba0311f222a855ab9e9f29dac890b790a131583d403f3d4982b6e849024f0e8940202dfe61a1cbce61f0143333ec32cce49062556b151a62fdf404f554255504856aad558415b11f0eac0856e4c28a5c58911a393c460f4cced1ee3ec81839073b108cffc9b88c32ff1b61f5facf53322a822cf0bfe0c577c14677d5e068bc8b8d19355a68b0b89066b4d02265954f65b0d4a73d6aa52c90e84a0b2a3228a5292c504a515628a55685523a9add972242d9ac369a7366a23927b6cd392f6dce59338a4d3afda5fb4bcee1314cd743bec739587636f0f56468b1a203760c1f8ddb5f85dfcaad2e7b092b7f72404a796d07e228460fb8c8dd87deba35ce21bfbfd6ab154723ce01df9b02d99450a4702efb00193284d4f5324ae3f2272365658b71bec0de53d1ed872ce0f02fb878fdad8495dfef2f2354c2ceeff7e852b6bf9c507ecfbfb163be283988314ae90c13459ca3dd878d73408689eefcdf38199019f08fa09a66e0cf37b22e313784c59d71d96708c9e5ed01f116995d1db1075ce43ef4c639e2b3c639e2c3678e26db39d9e8fa6f86cbdf01e07f0558c0ed010ce005980004e006016eff07807f1a02b8fd9f8dcb2c2ec87019a55c66e1f67f58cdb2ff62c68dd8ebc7b809f04bffc54580bdfe28e3f657ee85db2f0b70dbfb0e70fb27c03e34fecd70abbcb3d2fab54bb456ea3b5a0a3183b96386813b1c65868b20edf15db9fd914bb63d96a9fec2bf721d90319762f41c3319b38e6ed87d43e65758febfd1a5efa5fc0f86eb4feabef6f8aef5b7c7afed79d466ed9632c618e34dd0d6ad3188410c8ce86811d6cb3d658c4f3b86317c919f618c30c618638431421bcdabc832ee12733edae3bf36edf14b20fcdceaf2339492f361e376fb43e7255c86f26330d879f8f716edb5c3a0cb1f231637b0f0a310c344a0cbdfc1fe698f6f22cc64d0819ceb2c18d87e2965431bfa6271230bf220ab7f3d648ecdcd1dff8c7d41db1e57ee5be11c10cec830f269843714ba9224d77deea4934e29bfbbdcb0e3945fe1737662ffd94b21ed3ef9554229e7f3673c793e9c5fa117293767173b96917d966419cd75ece15796b91eda4b47b7077dece2b8dac474105996751fafbc8a83761ffd1a23a52492b55fe587dd07bf46187f4c225cc46476d528a56ca70ea136dfdd2564189e31c618a3fccbcccccc31ba47aaf1c6ccee432c7ce9cdee1edde3a88db010fac072f71ee3bb7b8c3176d0dda37bf4ef9861b8b72219dfc8c2e7962efb6411e4668c05617d889082a68f44e3ccc59f1c0e8c534dfe945e45fc8b5f0f3772547eed7afce81b5fe54eae47ec34e0bc35200057764536104bd1db9f3ce1c81980979f3c31b9942c25ffe85b64013c23185946eb85d5faf1aa0579589dea2047c949eb45afca7dbc6a411e56a782eaacbc6a411e56a768cb6eda823cac2827733377fd78d5823c5812edddbc6a614974773bf7f10a4ba2b999bb36775f574e16332312bb1fb333bb8c82852f2f23f57eeed13dda48fb080b3f3eb3337b7477771a58e8b1bb47f758fd6a0c669a96d51d649cc362013f64185495b93ed60be9ed1171fc65529af5f71176c8fc2ce9cecf5a7acca4363329a594526f232ca93ddbdefc4a29a594f6f747d87efa733e84df2bb03ee79c70c68e3dbfe39c0fc09bd959cf15822b043e98942ac159190e1538382c168b0915ececececececececececececececececececececececececececececececececec60d80e86eda46c7cf06086506acec387d6838a45812d60b28d4429daf3d0381fda7fccb2d13a1f3db84c1c52695d872db8fe9109d451bf8031f8e4e2755d1236c17e1acfa50d61d81036840d65ff49148fbf6c5da720c55352340d056a9a859b2a0c1e2a515ba7039055693c35fee22fda8aecc04152d2b0438e1cb0dd20aa32c4c4882c02ec8603070a0aca3633da44224ca2ba646ffca3c0e0a168015af7fdcd3a98c342a8db5f93e2c14397eaf7dbf4131b6fca5f5ef63982c4bd8818e91cf2883e006f6a4c11ca9cbb9dd8161c969f5812060e2850b71f0132783074899f982162c4a565d86482a6ea32955fe0d78b811e6ebcdc0cbbca116546c88bf6f8fb0659c9c25a5980e1ff932ed53b29b96f92cbd36fda35099a9a57d6b995fec27ef5569779afce4ef2974e82fd6248fcd27f5d7ec2091bdccfdef6c2cae07e24060263484e17394386081122c4c4319ba1837cf8b0f30067283324004dfcf26f4c5973fe19cc50386b2e702edc6ca8815748825cefbe1f7d67e0d0deed680c406f8e574880dc0ff48d3764a25aae95446a769903f04bff13358adb0c04d8e1601824f68be98f912176defdfdfedee8ff2e4860c513ae5bf10daf9bb9d6f56651f3ad06f9d439ce9b4d4dca9b516dc69b558d669756fbda6ad0b2cd06f9cdd22573370de315b4a03e2df86861848472d9478b2360e0e2c81552b09c604515a65eb1088870c4148a50c1044ae8e2c9026e8048429322291a24410a3050c0ed8fc1b1e3862ebd5c06ca229b3b969f69065f6013706ba6d0e9741ae208ab65d7481ebaac44c98a87ee74a0d3e924c41131364969589a184a5658dcc8badca5c857f809c2102398811040104140101428096284ccb21f5ea8b83020d93ca7d3e904bc3ae24476c56a2accb9ac840915ccb9948bedc99c9b9d1e00e107231861c284183a96f02859b244576b7818c23a3b612b1d54a19996b07c86c0028782d0eae77248b303900e3bac688ea05dc0054550979089217f618ed10729a0cf2b010f5546c28435ab2586525c7a409a184b747062a1cb5dd29ee0228c1b9dd6b80ced988819858a856a78f811c2fdbca1e9b306392e2f71e2274808263839c2183c8e700215f4a009223a7082e9006c051e26aa20180106152d30f57b5dc211a3cae00bec0c97881b279448c1aa880c90689204199f30b208c0659f30a4c0a48a123851724511495c810a214a405072fa81e794e42789190a70e50f181636b83ee374155ccfae1ac8296876bf679273b3cb50e8e08b22f435c40eb21072e40748a4a0c912198af0c5bc485080a121ae3fc98b31462a841853308104cd0008443001052d0cd0648c26ad188865d79ff41ebdfe312e7313c415547002458f129478c2548012fb28b1c5c53fab1da46ebdfc04aa67a888ec8e25a5d43b863281cd98f660ed288ef62015c1d664c9183a3e3d48420a0488a2c8f5d9ed688fa381d2e0342e83753bfc05beefa07e350dad944271297dfa2b5d8a4fe9d35c38b094524ae90d3b6888347107978e861b1c004514462ebd0c4514545c5d872610f6ab17dab8af0315ad98b287a11f3d24f14932c574e9d2bd7dac52e25013479a48d2b2bbbb89881d638cb1bbbbbb63d3c8d513361839cd0e403aece044ca0995942da59423b8b8695ca66676114b65d700f110e281874fbff09553f40b4b2092b08212a8963469e20a2562a2a0e2460a2f7971ac71191f2848f1d11eec017eec7a40720449121f0e1fba7063642eb20f153877bbf1ebca7b63f48b0c0396b042bff0fdaabd942301cf8db0f9425ba1ecb2920c0d41297fe11be3290289d0bbfbcb2b2443aebcec33841c546d52097ebabbbb3b1044b18c80c0983d5173ce797277777777777777778fa93fd16540c0e5f724078564f005f685db4ce215f95a7b906463df44088d989302218449087ee041154e46a06240c2c70a2fe69c739e2610304b10b9fea4537331fd9f7761909dd73e847b0c0284135a002106442031f900aeaf98e063828eb6c2808b1724f185142438c2e430d779c0e45292154cb8d9659f1e9c629c62a42efcf619f25c86d40f512e531335f83e7eb40c7de809d1f00ba4999ddf1401640555c82288205c10c404c3252d71bdfb6c3ce841542bb11f445df8f0210a0a61274848d2f3841ad8e0045198fc85ebfe2bbf92c212aebbcbd0a5ee76e0f0bccbab9e26f41ce17e1e4c5d76212211c0f5a1042a2496507103234db225f6e22fa4c0a9010a8cb004072a78294287172c50011155164a80c03341f66fc3074a297dae94274b8e9c23c6534663868c94ac527e614a87cc317e447d99f92bfdd2f55a97991df75338e9950f37d03d56328c7cf990039161e47fb5039403bda3b99e243c2d212f82563d3f530c8dc1ea01fae94912b4454f129e530eea042445e40444c6e0800a5368b5146c4721fa3714281044b9c3e8eeeeeeee9fbb8db7ae77c326d86e1a643d866553430364d968d495049d80e03a3db1df4a34624e7a93c3ac260c63aa93517747083b4af9ddb061dbdcb8b16d1a767777c71c0be1777737eceeee86a3ec87d65d77777743d1c8ae542712a228917de45c7a741f37be9491fb11aff498ebdd176f7deee1fa4b4e4a0cd0fb814b2bc75772df8fbef52317bf5a91c201228131c49f2fb9f8ced119feb0e742d68547600cf2294bffc849243006c9715004618bdb32d0c45fb51eee1b36bb88db6b0ef6b4175f7a747691c7da9ef7df5c506291f1205df8cc2810d68e31ca1b247aa346ef0ae590fd340a9ff4132ecc092d86fd56866ca573137d37b764990976cecacae926d69f59b761c31878ce981b1e09060c2c609bb1e1a1eb36ce59e0c6f5e6be0a9d99dde686ecfc6d68ad9773589669ce6d92614a16c332ad997ca6c1868c45731c74437b3c850ffb235e77200430b30f6f99a695acb6cdd868d75ffb71fbdddd46e392651bd28c77dd04dbdda78944a39145d14a1625c53b05a65cda26d2b40ec37e317745bbdcd045dfcde549b7ba5d5826a36f0d452218066bedf1d7f6b8022e75a55fa07cad0a969b8ae2bcdc25a841f7879a73f272f142a839e797e4f237b01b24e75aba93b26c9b9151baa51dfcefba0cff43b90cff63b9e1c110f39a845d97b08c5e4be9e9f6bb5097e0f38f6771794ab1c5e5ff3c883de52ae7e959fde0f017561d6ad2e9713c547b8e0f7fe1a93d7645fa79202f48e52f271c544e0aaa54bdfa010a12ea1eeaae6d9b94ea57b5c7d3313d40dd42dddd313fdd8fa363dab6e3401dd77f7d593ee41c51eb3e785da83de7fad6002fe58a64b55a4b22fdaf7c55abb52452abe5c36562add69248ff9127f2445664a9224b1559aac85245964ac865a4acd55a12e9dff364aa566b49a47f192483262a26c6f3fe49245babb524d2bf17d360d8ebe767abea29d6850fbd4559cd73e137cf6c9e2fb26e7b64493060c7545c419c0bff9341b7a50c72883351b727aa4d17d7605879711817741dc765e68fbf34bc57cf1f9f3fb7df459061e0f375484f2d4784a0b840091112244810ecf9c607793c8318c72626805d61715bab75a3f981677cc641221a8faea6bdedb5ae69604bfd5ff6351c8fec3f16ca3a1e46dc0edfb86ffbacc7f65957c3030fffe2ed91fd8f78a16af4a4d1abfc47228d9ef40f187d0f920aa9fbfeaa7cd76a2de999656aba4fe5e1672a1c5411a9b9a3dfd130d525e82a158eafc3efefa8833857d8940a888891cb40342cd48095df3ecba6c6db6824b79995af30eb46bf711fbcdbffc97a5ff6a29f21017e9667e97cc09e9f4d3b7ae3f866709b5999f1226e46f6f2b31390f67a46f66c6af98c25ca8c900f6f299f95ac7dde66506a7868cf89e55143e22d6e4314099a2cd02528a44bfcc4946193887ddcec35eeb3577b6d47c72bfa8c73ad8573d966b24fe166b2cf328ec49b4af7dd5c95ff2ead741fbc2cffd5abbdf65af7fd8877e5b3cf56b8e74821b02b2bbfa35938202c3f8237b17433d07ee5451c89f42d88ba1edacbf87e12a78961b56fa1a3f9ac457b82d59eafe8b16d46d4cd60351107b5e70d07add33a1d58e0983ded69b48ea63dd1b7686546a5dfe5e336937533d82cd37ec4ab75331aa0f2da6b9d06e215753aa470f0f6c97e0c64bf558fc24122ed5dde6c0753a3dffe06077469f442b21f652ffa6f34ca7ef43d46af41547ba3eefb2bfa1ed93b1a3df3a8fb44bf7d26e220cec6c1130781d4dcecb717717c7b9bd9ba19ac76ea122c69df0f71bac4da0797d3a8d4ec9a285aebd4cc080000f316000020100e89842259128389a61f14800f6f8848665c389348d21c056114065118631032841043002204204286849401ac0efd7f2ed93e5c09fa76a1e731abd3321dfc317ac78ae85c965febb9a43630d62b952a02e9ac96c5a1d2eaf4029d5dea91a93eb05bc3adaa10eae4614510f5d6a29d3a39cdfeeb0519734ccb02799e5c90573ed07c66aeafffd81157d4c6777d60ea66562b088532137f64e1c43455a2bd1f62d2e5d1b5428f6efa25dcd50d2c58f85eb21836a3304608223a111d11803d411dd983ca186899a080ce88af64e782e7898baccea24079e298af147a4500af94cf67ae9ba87f30e29bd237a03de9c087843f99b16d49f6d0f3596e155d5745e465652330f25ae2f53889c06dd7cb96d317acfedbb8415e91cb05fe5b500c4718876c95a1cc79be48e304e23b249b13bc4c0cbcc37abbfb3696f3babae08068704460ab0673a8b6f51dcecf1898680cebe670f64f059fc0cf436811edb1bf5cfc13eacc67e4640e008e662d6e9464b994f2984eb0768c5176b30b66da3fbf82449c9efa2f98794d4e413effe05ea276a7dc56559c214cb2a96980fba8928e4745be8b2345dcd64680527241f98dd201cf0ac2290502f34f5dc6db10b77901c7d7d964b7d88ebb126fa3b435bc10b58100b139445691f2fa72f95ba5152d2846b422f22c46a9c1b1ce69c8ef579ecfccefb0600294c2fe21733c97c473c87669a248e64d1671ce89c40ec9e080a4f26551aa96b96f016eb4a332836cd080a3415abceab0771fdfe0a03cac3473f0febfd3641454fc0e9adeeb4eb38d4d4e5e62270ee47cb556acfd4028503cf8453f76476c0f4683403804a83592fe56837370ba7870a32d6c61c739159c60890589915e69f360ca8966074d32fae0eec1d85e1f442a0169fd8ba8adbfe70c51f78f4a15b6f71e1366633cc58f5bebeed9f39b3d9ad62b4bdb0fc8908ffadbc4eab18b87f723a351f8c58cbab0267ff02970e982acffb1ef3bde24a11f024fe7b7313ba8a4fe6ff13cf2684643f7a725b390ce58f0d8bd2008547e6d7be9f49ac46043ab1fbc506334614835f5063382dbddffdc1793fd30db0ce14994a6f098b38e10fd214e25458f06b7526a50494bc8d9e05ac79b28378671c6b3305716d3938de01aee558e08aa7f991f7862965003743cc27f78f5a5e67e3fc466addb549823fadbb054e974c36bcd6d0a83ed73e7cda0b49945d4f253aba17765c1d53ba08113265fa77dc46df18bbfb7d34b104dda819674239c28ede2c2e5751b9fd5c4fe7ec1a45ca929cd0ca84ada0e1020db04638fee0f4faf30beae14aa20c46f2a2fe325301916b54bff911c0cd7b4776096beefb0cbae816ee637a3660bf67a3b0bbbee199cda8b7bbcf778eae130316451645593d42b4c5c5e8dd5b02fd3b9b919ab06aa852f410da07d82671b39bd94f2084c6d0a15abe3b4d00b9589efae29641287154420e9acae74fb7e0b58cf628f773dc568d8eca44cc10b7c5e2790f919ed2899cc6d80e8f04fd8aa4a74473867f1106478fe67041044c8d738fb521af0cb1edc2ddc4e188e0bcf6a6f9c2aad097c5d67e3dff2995feed37b715e983a7baf72adaad55be729fbfd8aad22fd6d832ecdaf98fd63ffd4dc56c20f47d733582c5139dfb728bce97443491a70ed3d5c77a9ac481258cbdc54047672d18cd1629df323ddb18e00782c170740174171959e18fe73942b51988595c7b3ea0a8113c81999267f9900f68510d9da7bc7304a3860f176ecc4c11412463aa45772664803bc7d34c12aa41abc9564cf3105ec67087695a0ee6894e586df8ccb7765488a16b84a357cb7d1f03ec1c434f85680041d42c163d2854d10fb946487b7ac1a824a4c2fbb1200db539de8494c3ca49cb14580578ea133e5a02a14c1206ea24b555fd88d806740e6d09bfaafca7e480123977933f7b50033422221e76d296875fe5cd071f40fe9f3407f2b2605ce45cc3dd8c2d31d616f5a8fdf7d31792dd6933df0b99ecc85f57397663f9f324ee181e30d71a0ef1233b4e6cf8e14f6d0363e8839d254e1dfb63199aec3640be4b84f3e1b62faf2a75868ba9b6f5079a2d831640511eb02fd29b3c9d60528773a8210fbab12232607885a9fdad0beedab2f2c50304659954ba3b07417e4e216ffe38c113515c301a5a900076f959209a2e633e73228a9be42f4350fa8adddb4802d443d2df3d7e9d0c17bb21e187d2ada8e2c0d79fb117083fdfbc56cabbb1cf6456b9a7ab731ccc80ea1f35598f0d49237f5031dd28babc7ad3a179047475bf46d527a2d4edb9a45775a535e810a60b2ef2199946f0b80f054deb4241005fcc873661afa8edcaff860eda556cf5496a12815345e54d639e01adda9a7460c2c8fc8d1dd4f823ed529ce59872f9788d0ea175de1d048b3e3858e685f5c21fca48a233866b47f87e2740e2df253c86dc95ebccc380fac08b8b9dd843089c016ddba774d7ebef987abeb4f351c36c0c1c8e91b0db748568b49ecba2679b02596497494270fc057bf0bd4283530156655180c6e09499b8ad1d82ed5586a742e8553df26969628669b7d30957efd7b050754c3a46db618bd9e9ee2d99553a498e8b2032ac1d07541f342c31f17aef8e3093afef8d124c131aeb5ae87112ef5928bacb8d89bd7dd987fa6e0aa21f71cae5d0c7626563451b5f0a98bd24f1bc38f1382971dc1d28221fc6729896aaa5fc5889ff9e8fa2723409183ad196d890afedd5f3464ca535a7e5d9a8c1a1ed47891f35aaf181abd6bc3a920bae9c97cc71dab001d73ef8b1700ea8601ec44c366198b3b5d989ec30fac2848a14a9ac2b515312921a70906a4207dc90ef6e48c4b39fe071aa0c246831e36287752098f8804765907c2bfd540913763385f20082c4f4606b792ce0193834cc290f34f8a3864705d395407c23503fb586bdd70864d090a743af2ee062f338340e980df2830603b3c4422c984c76d433ddf91e16cbd3b4ad91b391092316b26034035f4850802a1873f803ffd0b4959ff1820ea7d77aa431ca498b2cdb7a4c1d78ed3b313c6a54a923ca625e6f6a98e37b8306c1290c43007f97fe3fe8fe0780ebacf3cdfc4bde2fe276404a24e51de9f06d278c48370a3fd70626d77e07d4840ee9e9921fd617d45018f6c8b28a85f9ab6cb50f48737ec331453ec80f3ae07a81fa844168e03dbdb416fa98d5c465a832e487e56e963f42004ab16acecd1c1319a3c1dcf19ac14563797751c0cc6c21905194c1b63e7047591cee9bc3ef42e23b7c7e65fa1588c272401dc6cc285d47e228662ce1b04a8d28aa6c4b11d2d2ae1dce6014c4272c6edd87005696d1c2c332a69f51c6b03081250e69d0ef29284554ed7f1046fc179611863e9fc0c5ce0f67b152d3ceaf5e13277ded51034d99b959e5c663714aa08faf705868143b65aebd644fefe289d50d50b6890639a0226e19b5eeeddbeae2a18ca880d4359d2604b1c3cf5c6730b67ef87b60c0e7ea3b7bed1db0a60da1724d2251d215e0bc90e441d4c4c3f67f3aa4f12178a5d0bd57851c62e8ee6d990145b3d37f14a50907a7ec2ba8dca7309154325d80d42b0495030e68882d19e2b293b27e2c2630fcc26af9782c5d8d5ff158976ae661682f7a027ee63472b98a6a8b9159e5bf398d0c8a7e7cf2d81dc016b722277da613e6f3f4bdcffafd0278368ab7ab912510220a44faa194138269c2cf6c9d775fe0ddf38d353eec080109dde99f14f45783119698342d1819e956b2a4c8b37e4780908a4bca5f9b98122ca7222cfb9a85be56b7de87ec090acb6a78797198c1482eef42a5738a152886a8b7ab847545aac13865131380df5791caa1821db76764ae646084b692542b5b5baa742080d91058c630f1719ae33ab1fdbc87aa2237c63a84df2d3062665a9513871f9da034d4f196eb20a5b819eb70af6fa589b4573de1fc43cd996685f31fc144dc8b53b6c8a26f5a91d680c2944e47150b66edb1917b48a9a67fd7ae07c149ac015ce93e0f292f8b232a2618b12afef1769a416c7e26e1cc0ca1bc0af017528c82f1357aa386af3f86c86fed1695ebed6d82513cd93316a00c5b5fedf64c123d3643cb3713fbd53118a01462643407c4c2e4628e4ac41d94c0dd1f92d49650dbf68e1ce7c9dd8f0fe48f73086be7fe38d30d873d1668b2b6c5a69472dfd469ce5171edb8d551c781340ee3fb1ba04b76f16e7233f3df17e7b37efb43de6e6ef5afbed6e2d394053ea0210062dffb2f5eb97206073889a645e17632b89d55de34bd65fae3c4f98fcb51864772daa0c46438e5be78671d107e879a0d7360b983ed94ffb2bc10fce0c0ef590299aec5db6ab5af779b0da11bbc3f60363f1bc706008914a354c332a7b5aa2ab4577fa0a620d39985624ee8d1c064bf8ccd4b4248fc213dab6ca48e62162ad7bac9506c501da4d352a36b624e2c55ec3e0563d1ec6a5417f8ba6ff97b0feb79d3f65e04011203cbf2bfd51e2b9c6a6b30d158210453f8c542435db6c9bd0757ddb6fc06eed9dae39ad5f01928a39d1802ee1ac13acf93cd6c12b921d5cfc396b9554dd73089bd63f659533550dabe59110f4dbdab5998bc957ed06a21bf189cb448e64cd0cbb995a8211307827bf27e9e91cace26df6fd2699abfe2ecbb40af8d1445d14a96ff09e25ca72db2fbc4f9794872f84a234292a41be43e08c96781ec5219c9f0ba906bfaa71402de15b51c6c5cd7f1376752ae8179aa20792ebc32b6af9e75c5f963304d6f445a4451c1dd23e0b572e536d6c37c963a7b7d10eb1ca0b51536ffdf6dce208f3a79fc11ea8bf2aafe15348500e30d2db6c62685a8ae16798aa6f0c50833f869f1ebbf5be668e1ba71d602fe74e1f0cfe81db25d3e396994b947081b09c822ff66dfa0da705e529f0bb9b90e97e9e91939c6101463d39a242aa80a6669087b4b284066aa92a0c0e3355a2e5293b3d82d445e89943aac21c68946adf4101ad98dcd209a159c7c39ec1a7052961b545efb0d4a208b055f4270f17f79e25ae2c45f59fae99e8920e67956333cc4f6130dc8da88283b848da49bb1918b72fde64bd3d725764f06e0b205f1509eafee595cff5671bdc9c3018cacb18d60456e1e66146c0363842ae037b0d6e65402048a40e5d603dc01a620129c1f8cc1e3188d6b44c106aabcc10e7513262e008ea07370840cba0deb46c1f7f5af8ea6d791cb7ae963092e02b996d2524b48eaf7a68b166b025aceffe13de6aa1404787f5b1e1d0aece8fe1fe6854bcfd57bab1be1bad9afd363335d0a132432ea3aa1647042f7af3f1bf16d42a5332bb3a6b9d26bac49e7ee51f30629fc81be3b9f2d8e77873ea47025ed5b415d7cf97f80ee16598309f65d5422bd45b36bb71d9fcbfe7882b09b726c92ac246eeb6c17889a80efe42bf2d4c3cecaf7211fc4f6f486ddaeb43ef609a10443c7d62ce5f593d7d4ab08ccc4180b62fe4e2d67b46a9b8502147c7761b842af4a56418b0e080fc0cd146a1a850156fb39cba4445004d00f21705505192de66092076dab4c9ec8e26aad884110647570892a114ab0cba2b51cdba1d847aabc78dc0adc39908529485bc1e00277d8953a6fb64c40f19664ebd1039c199acca9630a4147a5fbae3f0a1c896fb80926df07c40380c42351736fbdeac1b21fd9d77ef89954e1d8ffccc7086fc74a515ab85f6e310038a1b2c751f902c9f04eb9a3d6a477e9c309b9372c3c8510e04d17646d1fa03a47ec3cd233d19b258b0b6fc7ce45bfa5a3807a83597268c85185a42ed0e098c686113ed9c9ca0441f4dba3cd58081322b3f08deaf3161e69cfc5f4e507e2585f65a6e8817fa0185f25998044a2aafccf8066598451076851c2cc7837c445bc875342ac3927702fbb91aa0bc9a6f2fc5b24253324a46dae6ba553eb3a945f3b75035cea1860858653574a8698ef80de23bf9644b1321b43c86b1ccb0a48effc507f8d82cb55b1dbb078ecd34aae683aeec7f54d8845f6929ee486fe48a90c001a11fbdd4754153eb904ed847a42f068324ad2e213c46fdacd70f0b5575ff4ab2ace0d3096c13b6a0a17ef3c2bd09da9896d8cf3417617b445f1a3f22f84da4144b1d35d93a70c2d30bcca69d5c822cfeeb235aa40ca8d2859f5b818ad894bb566046545072d3eea37d42e6990412eca5a857b5035ca4594871caefe9086f386db6f102b98b13992f1ca059c9c14d1e1be064a0976f8641627b3239134f9a99a22213c34b993022470345628c4b8c4c1f3dab655c426f35c5caa4b856fbab1f2e6c3f65dd52a2fafa002bfe24a0a45837d22467d5de16d320d7eaa6d9217b9b3bab3c240880688e515bd66f8bd024639a29efcc252878ab63c4deeb81083d1096b81051a92eddb89a691942d95f18e97936cb75f56572280b07ef7941c05484ea1a78ca7938e70775be2fc8e34463b0af83bd980a3f41278169391b1e96e61f0439fd2ef289da82806c03e2c874ded2b775c929b0a430d5a7261ac5a4ebd094e85536b0b6433f1565ba57cd0ee774b59181ae29776d3c873d48bdc639c732a8b56b8f025205856aa4ead1ccff40f76a52a432c3b372423f058f3b8fb60b99e4b278e0d19ef67a66a82e06662979f8464f5ee072c89cfe8642640e03ee5c57e5f321d8164853a6c2c2b1a0b91fe4dcb392c5e6960511b6ddae4277463098415be4f405228dc24e18b9de9b5159deb8594efb6c95a31cc74560cc14e29a2d66a5688a896f96ba81e01557318003df6c1bff695129c4b0b144b7fbe3c77b7a76617e14d2bd26364d145b185d3d7cd1fe44aa4f9947279ed5ca44bd53b061b9e068bea94bc2f215865028500e634b27603f0af21d852c85b7345a20e585fa5329e7c99e37345582f4db54468f5cc76fa36eb663588daa6f0ddd09212172a8fe5bf9097891011804f2c4ad2f1261fbc760f8025928926c46088929dcce5c05202f74bca6fd6df2e638595b5de6383b08656322e598676a70e521f01072f910bcea67c3814ce62110e3d9b29a07b93a9d18dfb944811d14047c739a86f7b1003fe883604e454a7a4123fd90e48ee13249a53413752218e4f74fbbb3baf8a82e4d999deeff36c13ba861a1e5122deb09ea87474e8f13a5c2450e414fa56a9004832b068714d24295f05c7584ddff45e2207672ea1558c0336a51abeff30abd7d519e012c65fbf72ff3e544887d98e32ecbdda1572ce842aa243bdeef6983ba3089e9a02bf9f6f80fe496b7ba7cfe7402719b20f94de17cac430f3604e9c268850af9984890a88511054bf1b0666c548cf7b5172e34fdd64341ed31b261888e65c75d6173e8309b5ad077d8e8c28e8d7caa589f0bfc228bc3ab7042b48991ea822ebb648cd9bcc1294ec12946c82919a219e693bc0bf04bfb6725c177b5667d067a04c1aca647041823f9183c70167daa04fe261e86354e75243b3ef8b4dc42dd673197672c437210ed77590844f7678350f022f902c4d0c24d14f9b8eda5c0b795fdb99239d954324e8326e97709d708926499473069356ef5ea9899dbe519da8801b345f69c8838fd2bedc122145f494a064ff1c51e8e48cff4cf249358cc397578d40a3fa8cfc4b051393f6d204c2315c2698741a3894df8c2ea4781ef99cca9e465b3d607233d4c4a789dad0ab2f5b374cb45028aecc138f8fba17b0b5ea505ddc3cf52eda21cd3e13172c6edb7d92d2db800d80adb21900ad61599fdd21589d6e962652fc227838df6e6da17c53003fad4a87f47b28585b4ca415cf4432fadb705786d0d08f8983eedc4087ba35dfb64f1c5fa2d3cc79e5e3f556d2bdd4e3dc724893b8d02afe29fa868c2043939fa30782e50e672a43aa54c87b26f503d617c6f1602bbf861ac707eda8d18bae19e9241f8d417b1ba2057a9995c7156eacc3a0c409fe23ece4f825cf48f9448c0323391b7671854b3ab5348885bfa02205be2b13f3521ec47405b844e97e568c8ebb3076f9f660521d273ba436948b238a7011e2c6e25467a63465f82b7d447ac5028dd7133272c40c6b2467995a4e178b00f22fb2416ac0a10447f5a1e8637030402fb15468c784a1896f0d7003c816c602013e10870dfae05b8c17d09384cf512dacef50d034921bc54bbc92df2cc4788e6ff03d63410e02416e1256e9c888d78da26ad32eb5fec3386962ea4ca85bbc98bb7c44878fd020efdc7cf762d092c13c82c663755cafd38c1b01f5fcca1e9853aa87901b6c7265cd2ceab0551112dd81a2d7c7458b2547765ce28c7d3bdaa112dd17dfef040c064d7fe93bda4d3073fc21a3fadd686117094681d35ea1c6581546366ad4e76b2390702dce0b9f934cefd3a8656edd27f650a07ce21fb1839a7bac8eed5da3a4ced1b125ac5b8d4cd238aab55cdb06663d05ad7827c62b57e79d6ae5ffcb919e70253302a1ac0708012d1e2726c4133d71bf80b592aa58115137f419baeff162edb91b02e520ede96c4e0dbc6b7023d4d6616a26a6d7df5384f4860214dbce3804987aa531d1bf2d2900a1e0cf3ecc375f82f99308f1590d6ebbbf13cc2278b832641bc67ee179ab2e49f4d00ad7ec5e42d0471b56285080e0e60ecba3cd2d9c81ac0288246d43f67e3898696e1bffa7d76f0ead80009fb53637a98ee3a5946965790b7d6ad61b4f194dd90266dcd248801abadf515ef1c6b868f54b7c21269a22e9cb848e931bf6c6108d8b6521b43c2b6930d18123adbc9ca6710514c8a3959f6693b9e915438111db47520395c16244e892cde103d950df1af3b345e85dd9ade50366186eb2646441555256eae2463630b6555d18c590c9cba6e507917744b7a43d81e159ae1be914c5497b0b168e522c32ebf6cc4100d2c1cfb2c279fa87f198c304b01cd99fcfc3bb563264ca9a04e24760b450bc626eeee84f7529c3038e4b8135511113c09102d6e6ab0695e1445ba5a333c4b42de12cf3121623b8f9d520ed1cdba0f20e11d3634aca07d26638eca986cf028a14d7c1d53fa887161a55d8b0589253a3b584fbd2ac48aaa7c704ba439b8aabc076628cdad7a250310143488652fd398cbad7aa68099e87e462c99acbaa426aa56b269519b8fbcbad3cd04d9f1e6200f6693683be06744377e5f2870342a5f6800b8e1b4d0a40fa062345b122aea731380b9e3f10e37226304abf51a7e67f8d1ee42d35641593e3e97e64d1dfe7d421aa92a82022661f5e1baaaaf7400d628b117b00062a89abee4831430e73c6b2ccab0de732fb7008d52a98c4290424a85ad6faa63070f6116e0ac7899bfb8cb225a47fffd9149bc4caafeb3650b416fa829ac9a66dbeaba2e092470d33053f51d3ba7d9b62110b7ba6e9b2d87baec657c9edfb6ba9d27a77378695edde266da16ab0eeaa1f8b5cb24f45ea49aca4202ad36e53764b0eb09b7059ba9805e87258bbf880e34ac811cc69bc5b984d59d351da2c0862e6042d9f17fdeb5d42aec5b43ca488532d98a4737d00a4458c2e89391d2abcf0019c59a7a5e3a06501c1dcc0916b41d3915cdc3407adf3fcb19045c027a1ce9a76c5f2bb942b4c9c43cbd98404e99215304599229e7b0e927fcc9843a68014280cfb3be828009e5bebcd6ee1f37dc798ccb0cb82028d12f99df44963cd535286cb1927dc4ac73ab088aec4b78ea2e9d1ae4f22681d3b39ca1a19b0b3d587bd2797b91ad8196e79e361a1d45e06cb874b8b26616ced0db4d953a9ca09e0fe6ca0355bfee696941476d229e1288882c2082c8c3a77a49ef87a0a783d0e9e2ca53c8f8951d3bd3dcb107665bd193feec3c257631640f46f8062bc1064dbac4062d8f8914b24c46ff29cefd866c3fbb4c3caf8cfd7aca37ad9d60c951d5bbafe75797925513c22b127b4ab484a8176890049507255d4fefc524a17ca3a6cf146f5580ada3d019354277e692b6b2079dbaabd0ad825e4e35db14e5cefebf4aea49490fa48bcc23444e19144da8df8a41d0dca5c3cc1280acae0d9a2313e4e1b510908ce160231dc41a98ef3bdb8322fcb35cd2ec4d4ba630f2592fc2f7213304584f04f88ebbfc02266eb7bde8feb89c01c56fad4dad4a3930b19489173aac238909862c30e2f58c7e2d95261c43ec319726ccb06403e89d0c2bb69bc15e019fe9b726669db899f19fea2c7ea66b4bfec73731a865be3372bf2883660fe8f3c1a8554583e919e86e1cfb2b8a3da34d34597de092d720ab29202bd4b6fef1ffc7aaaf346a6e39c2ed8612f6de03a5e881dea080022e5b629d945cb66a80e76e32f190970a74bc8541b823cc19ca2bc25f3791d92c74535d62383faeb11110ed40e38cc13b1014c02ce0bf59d1445a23c9ad3a60eb0cdaed417781d6a31e604ee355541a772352301d58fc3a8fa77d4edcbe40e92062ff404f55aa0f4da645227abaefe94094650562b58d9c37da5788947e7977ccdb2b1e329ae5d5374cf5abad61c5d5d170ca4fc6f11e44ad246a1ba381e57bfb3eb980f5f1b2d64ca9b015abd185bd5a11022a7585b8857fa67b2d1aea26bece31b6cd66a98c5f40a6c91fe8acb7851ef2506df62477df2e006c2f6d204e62d1895c0f8c855d4f1f78082953a3abff5775f4942ba3b8adc2009603e17b5a4b706d14a330d24ff699e9420ce3eff31ed89141fa94864bab2a82509de62678ee203f79c73e37800915440d73267ff2a4881e2208a6866eac18f767eda49b185068b331d01d7899e222447c005a658aed1ba96f1d886201f530ef861a85f66f542ceace6d7299a93daf6bca887d0455e20daf156226f7f62238ff91fe426721fceafa510649342d1e7bd8d6ecb680f3a102cd6dab083b80d06d2ee000b5f2378c21661707b90fec65025536ca2cae1f5d42fe997ae4e687d3c7ba3721327a40d17e2c65a619a78224553f1c3b19fa43efb7822f6f47e84ac741eeb12e44e9aebe7e3bc0508140d7940b6b4d1b2df052c130cdc3a6fbf9558b1689511e3fdb812788bb3bbcc09ab9a4a4ebe0eac6e521e9183af38ca7be43f9ec7c76dd1983ed6dbe275567834a10ca5ef5d23ea8ba445c1d9706b30b254e5da76b88bbd341fcc089c54389de44fb1514506188e386017615b20120a6bef550df9b06694df084d8fb08a7575372fe76f69053028f1c646e118f255037d49d529587d6d61263ecb5061115d77c81b44fe7bffb022d53373bfd02895c374b02fe3e4677a6f8d80ca86a05634383909813be87538db2b3be1193766c3f6b0d3191b433a3a8e759da9b8e8962e133509c57d585efd3ae3a939fbe238fd4d4dd7f5abdac08bc04eb1e52bb318816b15b884935f5ab101c2b355649e9eeef59de08bcf7f8f190e0092f93f6bd55e11a7a3d8c118a99afe354f463fdf1bd0bf2591c8a768eb5ee168fb5aac02cf9967282dffd23303dac6eb12dd556e9463e73a4944255ec00006977144bee2e9c3e4070414772a3f2d3f5ae3f84ff79907c9bbdfb033a8df2cffd336bc078768b3107a05c02361acd0f6938aeed534cbd20550f49a3bb53d8a03a7b94eba204c169bb3fd97905ff4f826e47554ab945fa364c3496054e3ab2a5b8ee0a083ecb0fb5b8c1c0dfa69fef4c4e937c6d23e1552cd3e8de82bc2351df3332fa913802f43e054623980c01085e56f29a51ebdd5336094113c231845dcac562312598f877329a2c1483b0ce596c88890075ec3e89b273886b6a136e443dd4a85cd21e791015863f32594a7e564693188cd7cd0efc9cf3b128a5c3e4e5d3c31d257671dfbb46f097b8f565f3568d9327dc5a2b1290373fe3c9c5db6f97ba53e45f0bbe5658a725962bbe2b1e00b005cf44ba35a7f76e930f3e1fe400f2917599223154fc7d32e36f98c1f9a58182858421b44ceae61b28b1b7851c64c0ff52e7c037870c4c916267cc714c89eaf91e243de6bc849d862b1b1a8bbac6f85b5cdcf5295260a80e37fb3b836d28ea3cdd006d25add966b410a10039242e9ad75c5ddd30f8dd21795f176e67fe403f5f62329379bab0c859508879aa1995413cdf51d1775c174de695a17a51bd333f2257f84ed40861eb16f1b2d243c4be70cde498360c1c1e020e9396b7d45bc7900fb986eac91134d1ba5a4542a162955e8718888a0048c5533f5fc057a0c40f2c1b2364c563742c731d77d38447aa4220b17420342a1867c67c09c7826f5721d001b40915e8029352e29316ef74c2228cca8fa722e9657c9e1f53cba516e9f68e295873847f1a9f8ccfb02db5331b0183296a37e7b114828329b16564ff0a96ab7a370d2dd3bdfd6e7d757f765b4366d75b656b573746c0ee8973616a97ef1d73785bd618df00e81a188ad8194488c1baf431a5c7ce28be51fdba04d6d831ac3690d4f4b1b0a2ab052350d88df84c0c49adf1d10b192448f566f886cd688cdb798b886588f36cd022626976561d5d0e28554c9a870d4f679d446b4d8426c5b22dbf44f82cc2c3ca59b9c8eca5f05ccc9eb9b81cdc18d6b2424a37a0e9b893898d0cfbf2a03bfd18905dbd6276be8a956589880255d04e6e342bd67462f0ccb10339c553545f07f1b78413d975f2380459ed1c6a7083180473d2bc2ff819012536f8c355e79524e3b30d85533f42f0cb9e60355162b4a4870241be3860defd4551bd1d7f1071576ad7046ece3256fbf786c9b6b5126101a3d3d5782d709c6404f3905cf997346532245a5aad5e17ecabeb31f9338e23982e4585378f7c99a44322495ea6768e23f193bddf64a784d6b1848aec85e1469c42ca346308cf6d26f5df1e9dc713c236ac47f5e71813c2767fb89925af06fc559b16bcf29979ff3d672bf52216504631c6eeb8e31adb9814c1a38c565391f7df6be8b53175bad47860059cabb035b2bb594f192e77bd0f9bd66f8d334b822235b32d901953de666750542d51e935b0d47ae803e6692740630ef4120fa9e6bf03f7c6c408e8ba2e823f37968e35f6031ff2084475e9045cbadf606cd00aa87546e8846eba1f41bc788543f40969ba6e820f71ac11e88c69846e421f58ef2110eb46217582f5fc62f24cf5be173b04c66e203c93cf5be4997fff149f0e3600ca932551efbb13c51baa4356fc08b1d3326036bce16991a3027871761a6383e8a4efbf4bdd4854b7e2d04c8804fd692916b856b955d3a72cb59dbf79545eb5f348f370075ba38bacbd2783cb3b0ff5baaa2afdd6fc45c353de3f5855e5298a0840031865aaa900f0acbd55c717bcee21bd16b33fe94c807b1ba656dfd0f840f742ae3a45d43d803a5831775f5ff465b8a981d64f2a8392c9101892acabd11ca1d260dc253d147185f5bf5e4a1fa59c3e5b7e7d09ee4f64855372295c734bdf6f641df0d81cbeab5e6785092b499fb1beeeaf82551f626b2aef5be57d119bd2320182606e92fa64eb32503ca6e6904f5ba9a541ba4d1d7ab0fd74693bb8f2ddd318f1cf12c1b673039ea1235b1bd4f1bad25bbeae76c835bd966991a05489e3ac79b62fc03649f7d4db6ee4135f7f02df763dfbc989da378cb942668aacb31092a6c5bf4f9a3574b07bddea279fc2857565e5c69b4f37964fc5d0881a7cb4092a87ba9f43ebc9ac0851efb7dbf9b17befeec427ddff6f3cd7333a49c6fd8c2403bfb2c7b6ff77249b7efb5166ffbfc564cfa7cafbdfaee5a9ffef9b4468b86ef5a2a55bbb9bd8adbeb5b8cdb0c23fd069bd61b3bf3be0818afae5ff07ac3d5e54d5e6178b594df55736e0a0fccdbc0ab2487dadc7fa1e3274bf3ae6e3c6c0191789ef73acf4d14cdc61ba82377ba04033dbf38daae932a0303866808180af43e6b5bddcc60c27f38b7b6fb3f38df1700290f38151581ec73ef25659fbb2150d710971985988d6616d008d93e00f83f2aa51db9196e56b35158d89436ce8b590ebaedd6b853ec3b2e6621cad5cbe135b4fff92a9b2f6f2e2a46ca20264a0d1e2065df1ecd09821f7a888d70c1104298db70c99c36a18f26588c8bebdf08d8f41502d17f1429b286faf8598de5115a8877f06024fbc3a66a0392719c83e947f247358a17ef2fed54be99fb22f820132418b76c5c3bb154eb8c81aa9714e1de9b3ad02cbb4e1af35ab63a8ca32047778901f8e57e8ba0ff7e2c0e34277eff04d06efe741874dcc5953d7d5bb47514b9d2dd385ab5992e99464ecfe9a8b3b50689b89de0e7f15120f8809592dcac3aaa5d13fe89d7576b2617deff7ef9e89f5f7d6aff41cab5f70cc360fe887830677915d54310b0db048745e78817898f774e6b3b4e248dc6d3450fd1dad952e9167b647d48c7e44434e9f316ec37f61dc2c9529468992d6ef3fad1d915f2b86b9df15f4996004e2a9f8275aaa7a401f70aac6b49aefa0b9ed23b444489b047ec147adb8bae1bfe23a8c871d0104888773814e7d059539be7e715f40a3c0fd6ae350d91793054ccc70474e3f0476f0c78dfda6ef4da7239bf06d6d07f10d9c33d47a7314df28706ef55c0853c90404df0b4ebfdd18b0372a4640d37511fcb9b174acb11ffa904720aa4b27e0d2fd07e3825642ad33422774d1fd09e2c52b1ca24b48d77513fcc4b18d406f4c27740b7dc87a0f815897deee62f4a1c6f2d8ba11a1819d245587e59a0c1838312cb581936defd74772b0c87c6049bb36faaf8021781c587485a0657f2f7afc5fd9c2dba189cf70b67f3d33ab37fa0a64850398616b4d09e6f12beca92fb8716cf157ee40bd525f923040978ab0f8858f3f4a57c0651b3d713a88684c81c85bca3fe41582ca5b8c023c970106a6f93bbce22b2002af2bff3843bb4f40683d2e9b98ab8a19a3000a5889ac1b7a0757be563c57a5455bafb2a5e7f64b3da14dd34595086af3d49cb54a5dbacbb29663317b14590be2c2044085d927db76f4fab52b38923cf613369bd7f2e9a4acc55ee732bf7e870d1803a4385c2fc55a1e71155f48252c1de87031ecaf6208ae5ed0366eb0262f00e8447091f924cc4d8edb19a6e1d0cfda2306819a9c448da1a2ed66828389752bf7c2099c46bfc98b760cbe764580a8241128e67da66538c31dfd78320cdde2e9846e17969cbc308c2362b7183d57c1e9a0a00d9abed497f68f67d0a08930e37a9e2144120f3e2ffac0e33acd1df2cc640691263302a82ba40d1956cfefba2bd1c0ec6075659efddbbfc2d40e78249dd9717d20d9d52931adc9ced3612f320f4cca59f97c87c1b221f796c78891cf99087ba97541e0645dad6978dd2b4ca264b4548d2d9fe0a3af00f83812d80a4d6f4ac0472eb7bac7f5254af1b14b6c0df11e18417ca000b8071e67c1d87a9337c047e95b5910aa9c1c77c90d29a9a5b2c80b644d1416a018fd8c3073d164e853c7466c850b60b92fbf809b4819e3e496e40a19a4ed6d6b0b792f72050bb34837020c51cf9171925c3961d446ae102e152c2c61c6e9089f7e058bda816377078fece52857e3a0887bf8611b05ad311c21c7d307885f71f8e95204c1dedb9b59aeaf6423bd62d4fdf68a51c68b53af08b1ed95acfa0a6728cbfa4a0da55ec1152741d75744c7fa4adbaa578844442b8479f595bcffd54151ae6221d318efcac38dd1bffaee96d1e8bfee60815779fca55a2c13da3ea7f0eaa49e846b93a721ddcb6258a6834e6253e445a5c8d573acd1e7bedae27e4021c8bd9684bff7e0c7174d47028cc3fce253cc5c240018c4c1e8d5fb48c8d741013374703fb943efd6d01494ead670e9c864eb121c99badf32b314874437c8fe2d8d9aa3ad34f6dad28f154a9585472e7d2eea07f807a83cc103776e2200977da2afef0062ea622221c1a07a9e9182292f01e183819b90026ffe79d3bc2ed5f1381eb424c4d9404b1ec123502c6f9717cad59198db2e2f1ab7577f12388c81b3ac2bf6f057764cdf15eaf927332a2208586c39e3424ba45c2087c016aeb4183de4f30f1ff085dc5c4cdf7d44553702e4df3fed81b3ff0e9c6d8a8f09fab36b4e137684700bab5cd0fbe2ff2c05f9de3fa3640629503c627093608c93c3d840fb3a13c50f3ef685905955746391e2c7181418d37b510604a59407b505376836123bb86c2bdf5dbf737bbdb3bb094a98ef74e90ad82b3806efd0bf5004b3a96fa1a373c92aaf46ce770dac04295aba7f2590be9c393c088d2a1ac900e5af658abbde092b3bd929185a5a469ba6029a0df981cffb831502c7c579b1ed5db903856ab9f173b3788af151e4e36318373df765f6291eec9a240adf8ab78b7e0aafcef81466c53fe5dffc8f74c8ad31e1903919a8b830a744ec500850d15ab5c8e6ceed01cf58153545453224973b59072a77f7771befa97d57a16ca91fb6bb1600d31831177931f3c42975723745adb16b88b3ccdc85be3870e75900b845c48f943de9a674286eb3c6f9924599e8535f58b84395028e0894040e31eb0eae3a438cdd308b488dd8612bd1bfb0f85884443f835b52210df60e9017a808738397266253968f4af4bf1829648a8d38184d3f0752f959b3846aed8f3100aac10b0122341f93273a474c28d2d135e655e080f0057beeaeace920c6a29891ba82a891320110db993653fbf2b365a5df84e65c0ee36a9bf1ed97e2932b2979e9921b9522f72f474e7e8554952f5707a98b5197bc152ac10a44dfdb9197bf422595aa728a6ef264935fb942c595ace2a383282252a9115e3020612d27ef3a0bb3027f237d857355150cf11521a5f77b2a1af98deaad0a77cf598d0e1283b31bbd8b1fd6ef8706fce48cc2abbd77cb9e5d16a206c5f912ef8bc958499100d29489939bdc6de523e35b99e71d062bf58b51685c1049240b10f104dae6ca471d222712df4d4b4242edb6689bb96d8f7a3a78267c95904217911c3a86a1400fa167120efa8ef3da5182660277c7c35bd58ee9c193737c37884a540ff07994567272fa1ad3e707aecca0869f9e20e0abdaefded2b5f047082d2c88ebce67b83d00007268680e295c2c8b7d45960e13005639164d111fd42d7bab2afa6d316408be23e6bc661dbe222ea93d902674cb3f8767d886c49afec255ae7dd3a7ceb516b11b18268abf5e41caf682a39b058f09c4b873f277c4d7f48647deb4c0631d9dd78c4271796a89b0867834b0aba4bb44fe8c8ea01afc8e48ac63b6e2719bc7e39ea1d54d651cd3d2a6d1ee098f7af00c3ac8bdedc39d3449c4739248dccd8bff02d22d42d8f632fb092f803b7b990718a7f84bcb519fbf66a0ca159312958b7bb08b72673b0a3939a8fd27a0c46d2644f12611c26dc7d144008c81fe1e8e30ce4184822c97eedbef614220f41ec291cfbffea0e14aa0afe0b215410bafd7e2ec39a99ec0d12633a6122db5318dd3628a6d4a6d1a14826f9a7cbe20651a6474e979f46abab13ffe49f0eecb98aab9c7255853eeb715451d77d8f24d50bf722968bc2142fa4da29a0c0662271ffe6e66444f834913441eb5f4ef2baae9fe0eedf48f4745bc7ba2a4df6c6973b631fb2da38d5b7c6583c624c17a2b1a094b7b03c0069fe0436f9bafb7dde912530f46a44dd66e97ef83f83abf6ba65da857468867d7d1125a9beb640989e03ab104091c7cf6463bde4d695f016d9127de8095114ad246431ec77fbd6a695d6d5768d8af151d8d69debe6aeaa31c4ef5494155f5d12b2f9942e0d0a51dec323db58dd582568aa9a37d2ca2921a2d97469c79fe69d4930ed2952a992f348ec92ee82fc0a3fdd80d34e320d68c72c8e15ef04c61ebb03e74bed7aa0fde1cd01d3fa969d69627da4a9f352e9f0748363a4c26d671f087117a536a07227deba573b535712f8bb5931722e84d34dcf465d105d1a5c77a0fa5b17e8706686dedac59ed343a68dbc465798aa04b3bf41e1a306d73c6c347b9bd1e7cb87dca1bb95d408703a832065f34af3ffff58be8dcfb2cb17a8895e433ad5be15f66cf6b1797c5391ac580e7392b5d679db33a3e02b42e1b3eb581cb9bdbdf9fc6891eecd6d14cb2b92f90edbd750c2eef3f8281e619cc63ed6ccf8827f9e3540cba075d8794ba8e9e3eef626ed0ce99fdcf4811ceeb3297d607986f607a1d62d23f80cc876a31fce5086874e2d291d6a899603f956926151c7d5d7c7e1d97486315dca1fb3b62a1e6c5cb8a1c80dda29e383b0b19c69cb9b71653c1ce7185a208beec18c560576e1161870b322e2014764bd7bb5d6e94668e7b4ebc21a82310d944de2445899bf1d49ffa564b2a202476ab34d4ff358a9dad8cc5aef6608b3fd3f038cba7636ad5f8387fd4f54e051720e75ff24d9c4d45c8e91ebf26d26e0222a78fce87d0aa29537a80bd7ad559dbce4a11996f9add7571a16d76b620c957ff1725e4c5033f5cdd4110263ba7cf27467ff11d788cb1de60f317e7e5650527bffab720913b3fe8f1728e82f0b8731c78aa9888c3b57e496fa6ae09dcae5f8b2a79f1821fafee2e840bec651f7c1f054e1d0577105310706535e90862fb757a9fdf477a5126255554603523862408f33349e74fc7364294bdc85d6bacf58447936616628cd17d8530896de05ee94c9db6b9cb0fd1a5a6e464b86e74c2e3d32242a4116964efbde50e4410ee101a10592635f1dc3d3fcffd2383e7069ac17323a1c1730711796e21279e3bca13cf7d04c57323013d37ad06cf5d8be2b9936cf03c7b8a3ccf9f1b3c4f201c3c4f2439789e41b1e729a483e7196507cff38807cf13c9c8f3a4f5e079d67cf03c938e3cd31e24cff4e707cf140808cf1449109e699050b651c2e56442978b25e1723024dcd2ec08b7245b724b3123dc12ac08779b11e16eb2a0bbc58670379810ae9d29b95696e472335a63df41080202921f0021f939427b7c90d4839a111a0f907670a4832831a11c04e100c90d808a5c1bdc28926a5003a24181f4c49113518808d1206806486400f4f3d344f7c4200906b5213426fa052ab8514e802305375090b23121d7065924b4c6be5e1b1b6954c5e27cc4cc852f318731317f0af758ca22c42c2049a3634298699048701ba741c2f908fd912aca0051b104d5289481d9f47f78b699c9c01e10f307b46833ab41288f7db49e43ecc3754955357cbc068daa7ae05c62e6c2b0871ab41ec41a9e0f1f3e7cf8a80248889510495932015643a8860cdb7baaafb708f30d0d7751c20b5c823bee480359b357de180a5185074c88244943881aad2912db220c2f41169010b5183dd02c708e0bc398180b3c1f8669905a105e80aa860851a3aab9b2f746da1c3b218479a48db499b2ac896d664ac23cdaccfa236dca1c7b05b71f6b736c9edb8f49639539360b6eaf82cdb15b707b55cf1c5d437e88ccb17b6eaf2aa28acdb197b8bdcac81cdb05b7572599e30bbf7a6eebed82db7a2f7159afcb0a9a2991d52d68010fcffbcd0216bcf55ec145f57b056f89ac222889594666ca9ac01d8d59404b08fb8d4d5082679b19069e6f68440af059dc220be84998e5131aa4156d3525cfe046c00cdc7f63aa83366becfb3ac09c26c1330d12aec02950010a54e039c41478bd32af8d9f8d5155b7b29781cd31c6169e0ac727039b638e4f064655dbca5ea687aa38b001ddaaba78b699b1805842cce4cd66631c4dd2b031123ccfcc64642069d8eb5c19a01501d8e8a1c60068cc20808c028c2a1c06b0b54467df9039acc8fc481af6473806066533657fc46182e4cd76fb27e0dcb837b1b4f3865d895b899b7fec1c94cd3106b64a70d8ca10c97c3ccb18612b1305db5f81ed656a20c1990e6a3fc0164c2242c5f527ec9e657e5a3652647e5aef8b92382f09b7b7441610ab880d6d8eaddbc7783db75a6fbdf56a89f9f875cb716128f3d3ba942a991f59f3baebdeebdad06c66d746ca4c599bd91c5db7b79162437bb95cb75b64c5ac08df8073e86159f44384e3c23083b30c1324f33353324466caa2216c58c3fa323f9788e509bbcb006da20cd04ca5ac10eed585f1716196c06e1d0ab3cc0f50946d73b55aade3cc4e086129688e12cb1091019231b2dd89bdf949cbb21dd52a5d26c91c2daa25ee98b8b5595ca40422f80b921192c918d9cb5c3155303399227394454254eacabe55da6082e6b8648e328ad01c8110c9e6e819c144992312b787b9e263c53a060b68a6ec3b1e843bb88f0aa2f4d65b6286a1522a5d98a352eb305460825a17068b99b2ac221d15a10b0b982098a099b2ac2233658b98abd360827068d71eecba19060b6c65149cc1190b8855648e24b067c5e628f353c19c528b47e82dddc15e5f5410fd15233be80a6ca62c6a07c5db578ccc94fd0a0feda808f30a0fb6cda27885a7831282b3d3688d3dceec8cc20ccec0d90a0f28a5fb19ac611ba4714eeb7985080df60c52c96052e97905d63304e71520dc7a5e29826deb12bf9e578c600bbbe00f4864a6ec5d172c3253f6ad0bc666ca9e47ddb949dc0a6e229097081a1141208f5ec87de8bc8aaf7a9d0b115f4a7ad4ebbc744e45f914fd574fcf8594e31a20573c3a2dd859e9bc8aa89d9590f0a87e0a6084a80ad522aa089da3e03d748e82f75120ba94b4d843c85320baea8508b98b5e4744f5e54ae73babb7bee1b838b4c65e87168538b0bd4c8caa608264cd0f5581335963ef125b629641824b62e63691880d4d30c1199c11c1435f7fbd0bf90e6a135113a0afefa17321a24bc9761d31a7c41e2e9d537167b589391505b79863d82742b9d2394c90cccf1cb7beebadcb1871c9c4b095f9698999c33245b07d37456882c304c104c18011a1f32f0a555511d557c15f3a47c1edbf24aa42f5a8177221a22b05afdf595911d5226a023a17721f2738bd0f215781f8d2b99053f1a5a4878e88ea9182a3e02910513ee875ae23beeae9e50a05e22744fc4e20ca558bf93b8a4015bf245a634fc5af466b828826b819fcc1f6406e2e1d21713308c3f6475c208d4b703347829bc311dc0c2ec1f63f6e0691607b236ea6b30ba48ae0e6300437732098f9c0cdb707db7be066ae0337570edc1cb3819baf066e9655d800db67e0660e0337d3da056e560dc1f616b8992255e0e60f09db53e0e609dc1c4ae0e6300237cb04617b085c203e6ea6b307c8c0b07d8f0ba43ae0e62f0b6cdf800ba41671335804db1371b36442126c3fc4cd9209316ccf809b25138cb0fd026ea65650c0cdd40a3c2e902ac4cdb416c448c3f640dcfce1dc030ddbb36e96b21d37cf58cecc0cdbff7081d4045c2015e71d90b0fdea6611df4cadc0b9401a01378b3a6ea6561ce0661b1f6ea650c871338d18b0fdcd05d206b8d906c7cd140aaa9b29d278b358809ba91504b8991e0de066b1879ba91502d041c3f6376e68d8dec6cd5c8d9b6368dc9c9a21e3e694cdcd327eb07dcdcd328860fbd4cd52c6c3cd3282b03dcdcddc0e37cba4999b3b280037374dbc79c6eecd13e937d31f00dccce970b34c92b9b98372b8b969a89b27520c18593ea101a92f6ad0b0bd8b9b43989b2bce3448f973b999d25a6ea6d902b667b95956a1036c4f37d31a5eb9f9037b60e092397eb70791ccf11373acb0e4abd14f4655722584937862fe924c62fe665f94efe848a51c8459e6272649d2b0979308b6600cdb0cb33d064b2a2598511358b854990b567e8c7e826033c3f6595601041304ceaac0544009c2eea0b8b398298b1b49d2b0f75ad2b9d24733652dd0b6f5e0aec372c1252400d0a2e904e11fa5238f864bdf3818cc053808c8a3f42abeb8539bd91138a3f6304154c5dd9e0534c7f939c28840cb688d3d27b610adb1976007cd943d51385feaa34ae28e894bdf6e6373b4d8de1a21c2f6f6688e12dbdb2ca6aa93d9247394454345b095f9c1f639079b2d1219b6b218ce360ab6352524c1d96281ed2adb206c5fda5ae6e728264332c7dc516488d8cb00c9149131826d0e38cbfcf45b4655f4f61d85aaaa135c24d13b5c12bdd380246eec9c92d8767e24d13bd4a33f8881c79251d800c7b49534649534a46884f327a11c410a064209c5084b4a584239421670a651402ca1381152837791e82d7017f96041b1846254a5b5f0e4bd292f956855abe6ede156f5dbed3161ab7a797312585e48c548740d5bba834fab9ab7a38230e14d44e2241bd6305cafa435b4a6297d82276772004a4b845dc2aaed9282f45ef791cddaa4b0da9be39284fa6dd743edc014d3bfdca0aa1764e0026c45dfdb6dbabd69cda49c9452ca2aa50b88ca9b292dff28c59072e44effc9d19e56d576ca43a9cc9aa6b525611f45647ad092397aefa384e6584d1cbdd96e9270e54ab6deba7df4d5729fbc8981e9b990aaba2b698dbc41617a1318ce15966fbba825b3a65141457089cd5109a97211a2ed62c405894b121729648d8b147272301f5d227411f2c1f315c6c15c845aacb0520bc28c0ae2e6514862a0ec69ac2744c570df73f9b68b32326bba840546c2ed6581fbde5185d52a5698a4d12823a8a08c0aaaa5234cc33194914f8bb0748473859d4a47b874161630a78aa82133d5d65aae7424a27e66aa8f2232537d1630a724a27a666a45af379372c048e8a003a6a28b90a4d139e00aab4108b38b100cf7514073cc2e4940f5b82841aa688dba08c91b995143503fd89e3ea3885036c89a7611c27d9724c81b49291b647501ad515585c91a16c8ca04ee7bd26e25ae33791fb852a90457a8c8e100c0aa7d8982b660a3c14603ca2367b237c3b2f4528daa4a2237869e944ad76aa018e8149c39492bd57678b854db68613f976ab4255dd94e9fa8555639934f474d84f25e7765b1a7aa5350ceac7322cca7204e8a309f82bc93d0ec697f0a2a5d21249e8466aa7f0ae28e334f41f4f44ac4836d1da7aca5a312164d8439c45344495c9a1539f102b6622ed54a51e6c889a81d14dbdb4fdcbd2a5d81bb8484fb4258deb397626f0c4f4633d5a7283395ead20cf72909ee976a73cca75869d62f4999aa5e95a8e0fe29892c36c77c023232c793ec643455723531e66ecb9437bb4a6a4f4b66aa299660154f4133d5a720dc3f019d8accf124a3a27892ad6059d4c408cea5d94986e992f05c69266bfa094f13584ab86159d4040ce7d2ec74c4b59495aa56292ce58aa3aad2e5a912210705a9aadd0f6785900bb88a01d7672e09d7ae932d255d39d2c79938684d7de9cad5bc59ca76bcc03866aab67883d654fa8290e384a8aa22a135f555e8880ba235759b476d15d77357cc51164dc183ebb9a48e67aa5cc0ea392ce6288b9e4cc1f586145ca370349eae65aec6e32991455310c199ab82eb7388e70d211c731ceb09304769842bce3ee027384ba31c2e54992989712607ab42542557f55c105521a122123c33537489708a402ae6a2cc719eb68027fc51aa325c294d0a27ad46b812cd54fd8c513f53f542739c402a16c2758a5c9499a22c08f371ad425888bec21ec2b00c80e90b2e3172c5ab37225649a3ef4990de0f84d2880553f03cd273158f92be15513cc031ab70ce4c2bbc989817b7afa61b3353a6f61ab4a73137d963aa44986592ab57db1b898b9b1bbbb8ce1c4d15cf771055e5f0097ee0073ec7e00ffcf7e238d35a51e73aa02e4d309e4d8f01bb3a3c28b63a738c618aa133c7c656878bba378644f4e084e6282366d36398aec3738c18a6c718c2742362e8708998a9183ac40863c48821661d2e734f872b73b9a0995ac205992e731daec41d9823231620b441736c6cad498c0017846942dc128e688e2b19a0aaed262c8d9634018732a9412b162034bd6293580259f65634c2c5bb4becc37b0e2210aed26121eac5e563ae6da030cbebb05016cac2f2b641e8f2967ba7d2e54ce66498d20a2394c75926cdd453518ea6e75a67aa9892e2dfabeef9e6681261803058beea6a98cebf7b5e4d6a98bcce4c4d98d82e5a2f8cdb9b61b05cc735c7cad57ff74058ee8da939c61073bdfdfcf76ced6f84fd4d7d9f1c1786492a1d99bf9b9a79bd94d8eb4a553ce2a91cd6195c90290964b930c470a6e63753302fc79952bed65a6f908a4f50b1bc11f5f29f238ccfcfa4a8ea8508e35eee332cee3117e5a3ffe22fc457e97db9c2a12eaec4db85b92f2e17486db9b98be079960ba48617bc99fb6e6e25f0bc7751f4dbbd97399a6e32dd8a3b48c5dd1b64754722e4c19da06223aac889130ce1bc37865cd04ccd259c50d06f7c662e880be2966c72a67ecc54154310ceb1870be282402c8b9c0ce17c2e88caeb50d565cda44f4aba2c89ae1daa0813fcd210f665f7e76ddc6077c00dede3e3030279de2443d897ed8636dc2029699e21ec7fe08e13963325ab60f9d089e7b1a1b7e8397b8b50e4dada6d2b9566107673258ee3bc0f0e9e3786dd9f5428add5daeeeeeeb9b5681508a80275af219c5438ceb402cf3b85dd3d679d82e5298d08496bbe30b4766e393d4ba5e67ad21a17871a82604e7777cf8b71085f4ea7989713c86a1c862c2c2d2d3d6275697161095d4e2be0e7993aaee4e2e2e20263c5850739c44c4a533995fb643c337a66c0662c516406cf8c9e194233603396a822e620dd8c25aacc80cd58a24a16339698d13363092a4206bca3221ca24a8d2a55aa54a952a54a1521aab8eecda673a50172c5d3827afa1608b9ce29487b08116bc8c455145bedc66da5b004b22a6e1008a9802fe01cabdf3a0706d16f7d035dbdba42ac613453f635888c40d6867ba5b5a325d61012573249c38ad68930dbccb0100e81859001580887d88ccc7132c1c45bf3052f089a3e3e42739c3d3db22dca1c5b0a222c90e6d84659ccb1a14899633f29129bb1c48c1eec35943b5df036ba738937d19d2d784b7127cf13a2db4453bca5b83d459198919ee2aedb44975d897b8bdb54bce3701bca1b0e556e1b35b95b13f087080804c404217c2ca1585106fc83616009050a54b04bcc2eecfa76fb2de2d009064171176d775d8a04c5ae1cd76b926aaa748ed7fbf5edad56aba568295a2f31376e7d7b834378b8f512f34ebfa6d57aebfd83398d435bb7ffba5d84335db79d1cfc99633b71f2d7546162039be30110843d4f82ae9b1bbb3ec1203c4c3dfb49aa12f29c8a82759e53475854dcba6c89f947ee1ab4a4203cdcdbb1285d213462bbc5604e4f169239ca996a89d90686db67fb99a90e4a48c43b28e149e7d20bb9f53d74c7a156cc6d6e68f2490d21496b5aa2cd2ce6f986b692ddac83c6e34392870e9a0eda4cbd5828c2f0bd9282633ee99d2b9bd91ca7d441b3997578252111a729e75c39e2a3575474edb080dac7e7f4ce150b8847cf1cb721739c2c60c1cf1ce70a5600d445e6389550e2addbf388cd71c244547fc2deb7e781c4952468f258c28388876c8e3c8ce6c8e38af6691f2757e218604efb6c1187b7ec361caa34135993262d10e805db77519e44a00233333984d7ba1d98299b8159efe0ce0ae1f6f6b9a42ad44b4415415fafe47557eb2f918a3bab1652b8bd5df7c74c5931043365df5541d28e9841aab0036c6636530381664a4a99a9cd5099e326823f33224864871d90e638f16c26df0169872c7698ed40db61ca0eb52f8ace776413a8d7790f21f53aa28bbe0ad99953104d1144f44e084c645084abda4cada824cdd4aa4a93bba20dc9ee6a8a0e1a15c26c33b399e26a72f3cef4dac7c7755753ea855c7c29d1f976495542c4177dfd46848e8827406b5eaf1ddc3e9fadd6b54e847d96ebf5edee60d7cd4c5e7ff9dc6ef2d76d99ec3853521a6ef2cc619acba9d2394d6c478daa7444396b5edee2826b18d58852435643c88696814bd066d62d21dcc152074d07ad0ef1a83d7fd1836d66d78628c74676b2119234ec4f20113641b4268bd94cd120dd58099e699076401a435843365312780bb6f758be6e0a2ce08e139e99cd54ce0e57cc548d9e8a2e948eda7524d11a5bc5af469d843a6c663e748e8430ef309b635bd17d867fe196ca0840800214608c6233658ecd0479d34bb8bd8d16f6366a90366db0b77183bc692a6e6f13871ebb0a1b2ad8de060d9da3879ae8d9060ed8dee60d3287e79de1f2e0e101fb8217ee0b0d777bc3ddd4b086db52b021a90db7f576c3eda257712b0549735483d69e42a563743bf46ea27715578899a4614f23052ac44c710f3d1cca730d1a4642b394c87e42248a7d5413f5d069a8741311d120d1644104bb24f100a32a9e0a3b82ed79e8e161c854f18047b22daac0f63c1099aa982329db82a7897aa86f68548401db1b2a739456d020d9380dd29068e32190205f78135d20419ae8343295aacff05ce30b4ea85082d1144b60c21323560c350d0f3c393cf4346ccec9c3cf4cf14064a62c0f34351a2a336569a6c8d9965b6991862669d8a099d52f84f9867643cbf11c836f723c87f826c733876f72fce64d7479f8e181881c1279184233fb949a16346aa069038d1b68e2608344de6c3dd4443470c0f6346ff0c187c738c0bdfed6a0062a69b8dd040d6f786b71dbc78a1c7200737aa88dc41a143394e1b6de536ecbde64b8cde46e6843121bde63b82dc55b0cd7f5a6dd76f20ec3ed266b50039534bcc1703734bca5dcf6d1e2ed85fb7a3f89721bd7ee8d21d19b48cc15f7500ff51037534d4434f41e1a1aeaa1a157c768cd716677e10a61c58cbc920411817504961258432c27db9222346182a3cf60807bfd7515b7cdf026ba5d863715b7a7bca1dc26c3dbe8f618de43b7c5f09ee236edbd84db61787fe13618de4cb82de5fde4b6178e8370b8bbd06ab5de6ab550a8236d24b280886415499e88b28a23ec20834cd9867207f01db41d64800173a4380c98d352b88a8e33b78de8dbfd513af2606c6616dbccea939b1ba24b30a7c94d6d8eb99d7cfb8d934f9c6f684e9cb41c5def73fd4f8e5df47ee948de98705f87530c7b9406a9627b2984dbf6d671687b28140acc69274d627c31628039eda4a57817a17af6fc999388cd27b86d57c69099b263288348ad32806a64fccc9495d15394369b8d149b2936b3c673761cc27a83f0c5bdca715f8d8532ee75a68e4368a386d00664cd2b032669d848b1a13509631abca195b410761cc2ce31957071f344689150954e1055d5add4806eb5a229c1034655dd8a0373ac7053e2e6d7759dc964aa9fe7799e67bfeffbbeefdb3e10044110044b5f8c1ff5bbe3620e0f80cc6774f80eacc3f80a9853711002e034f75cbe3174ddc5c5e59a71dd1929336567669dcb56b13dab06ac28e44dbf071aad71428374432b45097b956dcc47bd8ec8024242986f68252e84f43146da0ac25ca3464dded4d042deb4d8577871f9e21ecc57a70867a6417a99342f93e665d2d020cd1afb97cbc9713097b36f1785b03a41b1a53a682e5c48eae29506615b812a117298c3f642245115bdcbab8059fefa03e65419841c4d074d074d878e198e0bc39919b712822c1b822cce24ae683647b091d1436b6ca4b86830a729eedb04f17029399cba94a9cb5841e7e82bc85042deb4156e2f83678e8d85dbcbe8996367717b1943e6d859b8bd8c9f39b6166e2f83c81c7b0bb7970134c79edd5e4691393617768889195ff7fa52bcaae108a9a8617b1ada1c730f348ca4ea953dcd941db53966f984469b639e99f530658eb26806176e1fbd67b7a1f0dec26d2cde5ab8ed8477166e47e19dc5ed27bcb170bb0aef2bdc467a5be1b6141e43e79e0e454d9af8f8f8bc993413261f1a1a9a3114c3d220cc36339b590d24b47d7c8e437d6e175d82ad8bdf1876d1c52617c19c6e52f4d6cd5e00666626cde7f1c00398d34e7c7c7cdac7c7a77d8e33a9cac6a64677e8269712676edb967fd4a1118846f4d0bbe8def651175f0f11b95cefa1b72e90263a0b364756cf4c59161332653fd284603181e3f6ac1e1c0678bea161161369a3086d0349125690a4c12282a4c13a824c2941d2189234584eba891578b08452852bb08452852c7078e3eba0106698a023aa42f5a054048f688dfd4e0f9a051988c0563042f49360ab7527405f455723a1355927e848c78ec2dcb11c982533657f4db0835b84219a292b25cb4a56c1ca2b7d356a6c06e8a26c5bab5bdd4c5c4c6c68bd71a592f7d900739cdc0698d34eb66d6bf296a9e845efa1b78fcf3d0b1416f11a42545573884110ac21a345d4d3f7a8a72efaaa53af63a108b3cd2cc6f618aec7b04f84f4b586500da21ab21a467334c18ace152b3ad766466b6c6038bb76725af75aa213616b6bdddc77bd65af6f77e7757f5024dc32b1260e6dc3e5813f20911ad76be2d0392476bd99d8c0985cd025824484a8d52b44524ef784ade57add641aa4fe5f62e65c620e5b628ed96e1a2c62aea8489186c41e3a0e2dd57037b9e77d3d74bbc92558d44dba8993063f195808ee682630bcf516e1b53408594042cc6409cce99e10661bf3563e707bdec41fb507b7de455d746588b404f08de1eb0200737e0800cc71bdb56ddbebad970040566399d84cc91849d2f2651aa4150dc7d03992146e0fc998c884e8dc7bf9fa569fcba1a19bdbe772e89e8ba13798e3f376b986ee6a264c5e8c6133f90473a6f009e6f414dac7e5723593b7cfcd547833a1c271e6f4711ddda6c21b0ab7a7f0c6e23693b7136efbbca3707be8fd84eb7adf892beeaec2ad41d3d1321d34aa9ab8994c810a3448b67d4a2f98c26519191259404e085d57e2f6613224d62062a66c0d1ad814cc699f3ecef460d41086ed83c595b8a5705def2804611a0d85cb42727459496adcd678e6fa09f788cedb09f788907baedbd88bf168cfb9e27a0f7dc735449b2044a709b72fe40a798cbe4e0b692157c8dbe736d69942e810ccd77108c37b2ebe564318f2a0b899dceba1dbb88b2e902e1a3a7dcdf649a2c887490fbd653e4cc4bc83877cc41ab499b23584a0c99bbee22ece8a51958e902b6e3f46df752516727ba5e36b38d0fc9a9246eb1f98d33e42ae5cd928a25be9883448b4c67e1209730d6fa5e55c993e624e02bb1acce9a17b2fdae7b806ad87c4bc835d979246eb9ecbd7aee3cc1ab41a53e6e8126f6aaf7b33e5056c8937f9663623655bd15653c6dab66d236deb156dac715cc8021a6b236d9c325376fb48bb01735c581a000442e2165735298499068906698e59070ddb3966314701dcb8fddc22a42f616974841660173b2091e01c178624788e9191c900d11a173226b26b439b299b2936351b2a2f98307917c5e5b97c361f19b039be3e65a66c6636359b99141b2a36494cae8d141b9a4cb499d948b1a1d94cb1a95149b299d9ccbae8cde4b6147f01735a8a26872972d204860ccf1c657a6486ccf1892c8987fa24d83231b79270cbde45f15e43dbd0762b64c4e74acc9a980554a4c54a32c7a039b62ebbac2233365331703f1159403a58ac18cbc864216125693b83d0f51830a76562d16990a60e7afb1f0e81a358404908b38e1c646233256364ca2099a9083ceba0c910992919a099922932534f583e168c0558fc686454b5a3366b8ee6c882d148418e2c16c894a5824686ed5883094bb0e2029930dc72b95c776ddbb69d73b9de7dd413b3a2afb707c78abe758384b8751fc09cdeb6a218d0f0761fc09cad9f5c16ab0652455b975503960d583990345848584958412c22b08e10046ccffa81ac6209b66715a16dd87b5d13c2980e1d08380d12cd4cdebc6e4f2385864623069a32d0684183069a35f4d845509e3d2ec81c3d64f4fc328667194c930699a3f52cc24b63852897060b92660b976636c5a5a1195d9a2913caa5a9517169b4a8e2d2a861880cd89e460cd2867d13d150c1f63468681b4f4e0399b2ac1e88e4cd0b8a2824c43df4ece940e6e82123b1a7103d1a247923b1fddc427816100d92bc69fc4444220789de02bf8e4411bda2dfc1fa99f62c1adc3e46d631748570f875afbf2857e2d695b8abb81237d195b8a9b81237942b710f5d89dbe84a4caf5cf51457e252161bed2762a6183f53dc037e0f6f221fe0d507f0a22a2af228e921a2dbb38cccb17d6ecf42226fbac9ed593f9037ede4f62c25726c296ecf2282bc6926b7671541deb4ecf62c24f4d845aee71720740ed78584b8f52cc33282ccd1bafd8e30c89bde11547413b044a7ec5b7613b0022637014a487157709029fb7672576d687257ae97951bda867debca248005d286fd0e4809b8f7ba47e87be81ea96f9ffb26aa3943774523baab29ab9acf5d519929fb4c8374c22529c2d66f6833655b52f00f8ff904779cf026b28082c27c439b631e695bebf637537638da21ca4c9df0cc6c8ea799156d55a32a3a817b05d041c31bb6f706f055dc5b84595601240bcf02aa3170116658422182910d965088800566d540aa6c66b4c646e9299201534212116a3fc0d6a6ebf0260a6133c3711b18c75bcc365218c77be892e2b099e17833c1711ccf5c037a45c3671ba3b7bb22cc37b41b1a558d3ecfdceb398c79ea06ae11a3aa4e32a3aa4a553ab7b7a9519590dbcb8051552bb9bd8c1855b5106e2f4346553d84dbcb98515507dd7e068caa9a08b79f11a3aa2ec2ed67c8a8aa8d70fb1933aaea25b7a701a3aa3ec2ed69c4a8aa91707b1a32aaea24dc9ec68caa5ae8f6356054d54a6826628e41c17b48cca9143cdf38c1330e153ccb282f7896474c3c4ba421cf92068367598bc1033438316f5df3cc54df74ca33c7d930d81c4d62c8833037ac43ba83b074aa831089d2165b709f6708e514b7201c3e0187ebf384d57b12dcc49c040c6f30da130bfb3f987bd3621441579e48cfe586857913a97c0ea960898050caa480e1dc304c7b60739432273c4d04f769cf1c4b6f241a6fb5c2260c73f7b6dbf50ee68e334ddde52e7de9eee02d0887ad58a91862497310e2209434c6b2861c525fdd62a1ddaab5d5da6db3b644b76aedb30ed5729c0ef9a5b4d11c39b48d3a710c5aa25d6969a35c0e9da3a58dca651daaa4d1755f9d23dd6221bdc993b5bb2d6ee88c999ea122ee7b5322d515097a394ccfde4fa7d3ca053f49814c320ac541dfa6cdd68e2bf55d39027f64fbc8c39be5a2e0ea94d276794aedddb4b5ad1db732c995043db16e37083367ebd1911c1fff975627beed1261eb8d14c1a92322ee1105da76260dbd504dddb63b2ca94a4911bdca9fb6528e96709d23ed0dd739ee686cf151fdd98e6ec5925e4199409740932ee5386ee24aad0837baddafb3ddb91a25ccb5bb8a4a45983930a73687a184d484842bcc1bc2d613b7bca1a5cd56aeb4d94a6bad94b6bcb1b4cbc1f6849f295377c3520cc5d6ca9790d6ddf6845d775db282dbe99b8fb99762b03d0e156231ed2016cf23810091eb42df2c6b7907838f31e7bb28c25cb19533656931b310c9dee4c9b0f5ac67eff5b7f0a856eb8a6ba6247a67520a65b360ceb649da25dbf28625f157396a2b68bb4f7acf12094b7934e3c6f65d22684d7796c171cf31d336e6738ab3ddb9fb803b8531dd5eba13974eefad6c5d9ab11180d28d0038666a707fde9041939234fab762db71af14db8e3bc789ddade7b6db7b2b608eb5dbd671e738b1712973325a71e0b0d4d253c9d2c69ef7c95cc2d2e650d6984a63d89c6db320103265717fcef4b369054b5b375937bf054fda08e79c97759e62eac319ce18f49cad53b6e1a6ca5902736aedd948394cee0b5f083067e029ce50a42d8bb07422724a2216c22c8d707fbb42987dc0f7e572608eb554d695bc83e5ac5631d52ae718ce544b7a3f2dbe7b1b98f37d745e219c232777b077d3cd31d854e947c56c7af795bbf27d1f783f2dbe7b2630e7fb6e5bcef41277d38dc1a5972ae62e09624a25f1c8760a2611b352624b5f9d9b35d9ae7a9be9f3be7a0f04736aed3ac7fabc832be586d0cbef6649c35faadf31b9ae3c87e0734ccbf3599e53e1f30ddca57ba7bb02dae0e3f16116609e0547ac9ccae0743d5c574ed744a3385dae062b37e6e07df196ebe22c17e6a75bc2f5f2287979b977bacbbd0fcc71718979e102e60221f18bcbe96ede8d1b73ac180755dd20c08d39ce1bdde9dad3ad405022680468cdf4bcd3a54e9ceec4f573b93766ca87f9c354c0ec316be6c35b815963fa343d7f9a3eb9d3cac5416be6c18b436b6ee4efdbc11ddf976fe07c234b29789240d2b0b5b68a4948da4a0915b9ba3393a03b9dc49cdc07d43968e7a89738663790524714075585b466de723154b579a74f5195e9f437563a5a1110cb24cd0661e60a20c35406a1bd1ee64a26d32c0a8ed6a084b9cbd39dbbc7dd25befadeddfd6601ec570abdb75c7157aefab377f33c9c395a9c39569c39d292d8b21fe63881422015db95bc833f7b2d85a2fbb82df4624cef42a0d4cf7b621af64498394a9d0873c55ce3ccd40f9b67923205cf8754f03c911b4352cd83a7ac4224cc15fc2c0e0dc2ccc9bc96dd69a5e209e6d07a67dbe8c6740661aeb8db462c896da75290069e779255092cc92c490cb3600925490cf06bd793ad96553f2b8ffaa633b88a282120d8c1124b3088fa16f3107d236a0d62074cef0cdeb13dc3e07999d29fb04bb5c4dd5e6eeb4e4b77064b70881d709d6ffb95ee6d97decbbd7d087a7b37f9edda195c453983e94f68c4774a3d93206bd30c211011088102e6689f651659ce6657f085a4313f1be18d396ea298fb158a148ce0ed34c68789a323422dd51ca44e8cc3873936123a87d0ca5ddc7c047611e3f2f05e5f234e9f58ce54cbfbb2bce5e6e39d1d27d17ee52c2e6e5dfe990a2fc120c2300c1fe312d2ba80c6dbca6ddcaf1be7c34ccdaf6f2d1d279450b02082fb2f58f0f0d86ea9607b1829b8efe252c002f75fee79313e3484f9081c8462235c1cb58097c3e498c7b815338c0d5c808b37124760234eb73f9dbabc87b03f0dc1f2959f4e6f0e316d4185e28a28dfa72b77b999e5f542c4bce50c387d45a4ef7eba3c5c7ec4102da25ade5f39bdbda896b33c14512d621072a658ceb2723a0e3dddcc721310d9de45fcb408ad048788f98a6844cc5b4423606e596e901a235698d75b90c716048c285162108a5f1e43ac30c42014bb58808b05bc887d7312b84fbf75a62808e680f76c0730cb02f2ca4fb7629da91c846217627ed1059cc4159145ccf44168dec11dc4c4fd6ef04471d02884fd8cc387e314b172d0089f4e2f7804663905734098e70f03f18eb94b102e2e672abc2d8fb9f4e1cd8f61d11631c734cbe9102efe9972c1a7e3cc98dbd80508aaaab3c6c5e53043b810e54cb988394895e0021a9f4423c0af802cf6ca0574f8747a09b2843664c926d8c1e14f7fb1e15f263e6d5f91c212bc727a5628e689c3c39ce5e66396db9b3380ad8db177f117970b714bcce574e122e6f0c595b3c6850804cbe7a58b9839ccf21696fbf27062977b87b94894b6d8628b38608b4f0fafc42f9782414c7c128da05f79833cb6af5c8241d0afdce50699f87457eecd8fdebc92d3727b597eba2d370816d13e3c0ec5603efd7b78731278250338d79fc42015affc741b832b2278f06eff6e262267201f817de0b820158b421a6f41c0e01933355369081b6fef7905e0c04155737ec6bc9c1cce6c30470142083f337378d12d61680c1337624695fd7e10369e99355f104cbf6f138f43bffa7db8ce1d4c154fe94b7c551295d4cbcbfaaddabbd97aca850dc5933341b0fcbecbfbe3c3a089bbe7dd24a5c4024b595ff2be671fb07c96326924a3bc7039e49918aafa3169331583d28f999a6d6f908ab72d04dcfd3153a6d2e55ec11cee47ccf18896d3edabe9de768f08c13667cbe569f9125fb5884aec2d98d3d9b3d8879f16a13d8b28ed25ee4e6d6783b0e227d6ee74a54c75a20483a89b57dac01cd343f0e308935880b0ebc4201573228ac726c4742bb6e08485fd95fb43d6f0078319933275ef94a9de9be010157722105425025933af059e51da80a78d120249637e2a61dbac587fcc9a1982999a4368603549271c61db47d85e2ee95e42d4ddeb2da2748346bab7de8ab4c0ed40d808124c44f69db8745726f9cd503eb857ee72e5c92f48e9ab55f1ab813d3010466bbac19cd6c19ed205970811cd540b4992a9922b244966ea439a633ba004cf1c76c0e554c93800ecd117048f2828ebd2d61da3bfa159696b50b68405546f0c7792b8047392d009ca33292c1d87768b4694de4adc2bdd56428997deb7f486c1ee814748a08caa6460b4c6cab00c0c0a6196f9911209af496d0b2af323697451a698e2d57ab55c9bab010fb837290dd2d06a35f489b37c3234e4cd550d420a5080023448aeedd59a42878e1edc5ec791dbebd051658ed3c8ed11009be3f4c1ed11d033c7361a8204013f4000028080802020200840f80192776b8ad6bbc97db55edbe791233ef0c1b7cf1ef4e0ae4f2317b57d1ab90bb53507808a6ce09906a963d8d2aa83f66a9fbb5eafed73e2ede3c1e399c39fabb56d1df040073cf00ee898fdf0c30fad8d0609898a5dd5e6985dab95eb13b7562b59450eb07db7062ea5ea4603076f68741381429b981035161013262e980cc064e0309faf3f19dac010ae68f3063307b75f25cd7155658eb3c8ed13009be3c4c1ed13d033c79e62c8cf1c674c4c0091394e1d8809289280d81ce70ec4041899e3e481988024736c299cdcc98377933b77f02eba53076fd99db1b7a490e2b691c80adade4deeddc42171e6200738c0c1fbf30637f8ebb3c845f56791bf4456916984044432401f781482a630a50a3fb267778320042008c141701a293934b49912c1bdf65ad2159ad918d2646132d1cc36997348c1c396db4dcc1cce3b20d5a07d211c7ba08db41e685242fadacd421bf40a91f40410148fc206f2a6653578964b4803b617420b9963d6e0a793137fe24e28de321b40f1d667149f4050dc7b01e6cc28a088020a39532fa010a5b495b2266b5a3409b764b7e209c595825f9f404f88742653d389cb436952002d276497e2f9c4a53349a3f5698328442953b23bf18ce266815f9f35c0027e5d4a1b995a01bf64b7f10482623e718fd0d6a713b7852469b4b6978dbf5c6f4d30a7a5835fefdbb2d7c5a14894f0eb3909bcb55a97e0e6e379adbbdeb775d79dc1d3363aa725ce80cd54eb77ddf6b9048798b1844f33b98dfbcee899a9de9a63d24393c8b73b69706f12b9fd49830b169960ccc7c7c6d050fb4c1ba18e8a2a549266ca6e5b12f542d80781f81633d243d7853065815c626ed93d1d9d57bf1e830a51e575a3239fe8bc5eaf91f67abd5e8039af91f612c729a2905b598ba0aff7214494b44647a4335ae33acd941684aa8b86de4cdaa775d56d91b83111738855ef213106abfe12730c56bdc52736b38e0b38b3868caa789434118309838f4090e82df094c1837078cee0f63584e44dcf9fe71a4cb07d0d25c81cf3e756884baa5a0931e4b9469426ee84c1fb6ef8d3229c30787fca0006f760803953066201c209837bfd4d19c0804a9929d7618040483c6120d22933e5b252d22459e3baad30ec7ae6f09c30b8748a4cc5a00991d2648a87d6a4005c674112b0d51c728fce262ea5cd195c211c9e3210a91499724d3c6570a91449c3f5f973bd805da75c90365c8d6713f708fd8cc13d326170298dd6b83e875cd7bdadb442679286ab9b85aed78b52d7abdf3e38b4874490c84c21d11ad771a64ca4c962a6ec69689066ca7e9c32c7a414dc19245a63840e9a0c503da53448d5666633ab3e3e3e4343a10f11945ec8edbf2414bcd2ebdc470a7e82fbd0a1d7f909a888ea81820b390a50701408d149c1372bc16053b78dd958d7256cef9d68fd7a2609dba6ca1555fdc65fd49f30eba0c966c99965315312db158459078d0661d641c399ab2079d340315ad3a4a8482693bd089dbb24b9b83cd359ada7f53a4250112249882a2f4c98c018a23a77d6c427ff186be2483b9d4ee394b1767373737373737373737313d3dd2f7abb79b7c4dcbacbe7d9f5d7b7ebb95a773ddfd05a37c2751f978fcbe56a9fbfeeb5cf6b6bbd361860ce4b2c40b86d5bccd60a71dfa01aa88bcc547f13edb7b76e6e6e6e6e6e6e6e6e6e6e50373737316c6652eaa0c53498f37a7d8239af6d737dbb9e4583ecf96de28c2274d1a45e42d896053453acd8e6d3b23cd9b68fc88ab180647bfdbdaed772fda8604e3783905564aaa8ab079aa4d1ba8de9651599352ef10895b3a6010d78e6388e03735eef1be29bda76d7cd945963df6921bca16d216c7c336587cdec00a04978bb34097bf473ddafd3429875d0be2e0b61d641d391a483ca1c693aa6e8a8cdd1256fe4aa466b4aaf97c09c176dba42435bb95654e6d8a7996d738506a9b1046d629286bdebb2808884db48fb7a46308225424b887a7ec230ec1e90feb89caa1ff7c6104c022201835c60abc56d6bb162adcb8251158cd5119d4a24937af478e6f0cad751e172b9a078de74c16d289f4bdc36fa6cc16da24f9edb52dceb0f2c1273f513234666f4cc5862066c06cf8c9e56ab3563892a33603302120c020607e052a329320c002c8da62c11862158069632306801173921054b1996454e18c145454758e290a5c3571e804ba348dc75a60f0441fa0305128c2bc88ca038026910934699637feb1c127bde6be7e81cf39ea432f0d2282b08c1672ac32c0a8a340a0f7aee48fdbca879005ce2eea2a6b8031c621e09bac5161cd75f7773e36e4e9e29a110cae7099b601053f4266c16e1a13c52707ff6cc58d01c97a8241466b2e8892c7e26d739dc0e3c3823b89bdb038fd473200f4e9c375d14f7997393871e85b3479cb099a24f08bbcb83e0029038005efae73582fbdce112ccd9e138935ef0f3ca99e2c05790479d29f0193c77fba6cf4b4131fff00153317317d2984ece0705cc54ef7023508199e2c42bc22c65de7f4b9286f7eed6b6e11d00976b1b9ea4e1e50f7bf74a5f00aecc25c89279008e33bdbb223e0057e2191deec57ba500dce34c6a34472115778f225e14f79c281c791d98236fc59dcc3b902573191115c47df72ba2b86ee52bef4e9dc029e18789aebb12d325a1e4ae0ee4f77d5df7d5eee60f775df7e3c31d276fbd3c9e89eb4c9de9138d98ff9490e0c3dde53d52ef791dedbcce63c1e9b213f387bb739f42083bf0dccde0e4ba8e0381903f3e3cafc3658a5680b394c9787cff4d9f3777fe7870f74423e44c491edd4dbfb9b19089b30b0799f8bbbc99c3e0f7eea27848140fea9d5ea27870efde894698ce5de27925467597ab1f664d1fd5bd13719a00001d648a9834e1b4042c873b87ccd44cc5b816cc8121ce9e2be6103c818ae0bea54c08739a5c715a22260aa725a4c8949c96e8ba096b6283269cc0297dbb7dbd8fd2b796ef6cef51bfbd137b9cde22ba5c7eba6b7bfdceca73d9767ab47c135d4ababbc2b7bc137bbcb862fef29d559e7767556f7dcb7d9cbe89afeda7b7882f253db69ffe6af1b696ed74b9427522aa88966ff7d1f24d7c29e911f397bfc2b7dcc74b4c9eb009b87c3b5d54f7d2595e2faabb3dccbd9830bc3bab981777f19887cf1386e22edfdd7bb92d2f5394b707ccedb95b048c88e2ecbbdb8345447167f90c0b49a8ac210683ad620e0313b3b38269f9e92d3fb9b892d6bcd859b97879fdcbebbd9797bbb3aa281fbdaaef55bd5cbd94f480f9cbe5ea0523a2ba6f77f98b88ea441f2edfee22ba5c4a5044b8bc0172e522fad8929e20c30d6e1005065bf5cc95cb93806dffcc10ca550cade97f6b08e58a123171042738418a8bb882d36d69b93bab13ca474515d1ab53fd0683185d9da814a64b2a651cad4111214599f77572d219e489301315339d4d99147368afa4353babd2dd59c19610cad50178642bb992ab5ee5094bddf0d2a2140b9645453f2d53c8eec3b288e805629e4098a39d910cb6c059ca4c385399e9384f5806f2717720e6c875273bd9493173a722ce0582e3fec34c75d774ee0211c4e20e8899ea2584dd71b8b7c4999c08a4e2201677c7993f5485236bfa54266bfabba46f72055cd4c41b70a6b2d933276c4e1e2bc23c6141a1e9281fb59a6ed7755d2f5f8fb0045952a60516b8d3e28aee13779e884477a62b655a5c81eb45f938bda27a585427a27a6c2e547711d58945f4aa74b9da4e2210b4268b5048ca264ccaa44ccaa40c146aae33651a44613d518e266cc2266cc27e7a268caa70684d2d4926b422e619048a7922f9c41c43672631c7745bdf5229421c0e26652f4998764a49d41d6a3310f3e4fb37e6889a7f485537648dbc944eca8073287b468a464899902767328c9f91650b32253d962d00e14d06b266de26810d2042482f310bd21ca9889a97e39cc9d4fc633140747a8105298735466b7077ebaca19f5e409aa979bad192b56df423a5c66acb86e005fa92dde66c43c2734471f89b29e904dc049c6b12fc4ac5cc42abb10554bc21cd3173cf46a7debb227a65bd6b69a8227ac51de583bb774fe4443ba3aaadb4596a6bd41a992af0dc4b62feac985fba6f62ce61e654cc3354a0585a49cd307da68bc9c10b5fc40d0963afdb641277569e08fed5dd7b8feedee93dd1a5848a3dbc9b4497e9de5d2befbeb3e24454a76ea452ed7121176e958a3c2be24b490fefdc5fdd4fefbaf398c49777ee9ed8fd741fa673e76eba72455bd215543f4863547d0fef20aaffe2bef2d345b588aa6211dec1fbe0be72ee2ff0de5f4aa8d883ebef2ff711867f0945d45f2fff4454cb156d79b97d2310de0c7c4873562382858ad98ba62db02ae6961eec22a4dcd1d72f6e734141412f3a2ca0842cafefb320b1cca82aec6648ba1c6ebf9dc6e4969f16a01c44148b98392e8618c68831312ec45aaaab5d17cd32a361961a4b520bec0d902b18f7d1c4165bac4edd0c090dcf8e56c50ea93bea8ef07c178bc5dec55229b9f2b82b579e943734c7f7023cb55005e70e49ee92e06914f6bdd3e56abe4ba22aeedf7d783f7d2718a58a03844c56bb9815248d2942a424aa7a71179fa73f54c59d02c57048b4e6c555d200b97af17a897821f2f0bcfc3b4f78172fae5c51910818228a1ec6775612f7006b4aa830c4e407065b9dc4ef30dee33b0cd1a584def5f2ef54ece122bc8befac9408330b0b17a48ae3c4106a2183da80b94f20b5eb81bc695411a77fef71fae7fdf4167b7c7721ba3811d57771b9fa8e33bb5acc0b2e89aa5ec2cf773f54f5e2f31d8caab8c73c7740302e78ef3e56ee427cb9f8ca3df1a5a4878baffce51d3c113c317f71187f390ff7f0f4ef38f3b2cc7ef07ccc8571c37b3abd5cb90aaf5cc188b972f5e2ca15150a276dceb8205411dec147c0031f0117a2f7d37b783f7961cbcf77562bc7992011dfbdd0bb9ec771f7de83bbf7bee7fd24ba3851d21a0fc88e1d8d2aa257dcbda37c783ffd540a0a2a05d12761cb330b52578bb174b5e66adc11ad995c900f172f7721ca15e5823277f499e9345411dcbbfbf06e125f2bf7de892f253d56ee797f81e74414bd5c7197ab6f475c1d5a33cf5d5a145ab18a7346c4f7be210c5754ad144ba3216081e75b7a5a884c958c8c45ca1ca5d1902b665432cb4c0ec102e716189e2bb0216ec0b965089e2cb46753ca1ce515b8abcd3173b01a0423a2e85dc43c6b78a2a85844afe66c3569548aae266be65b4416510a26e03c672f17e5c3fbcb5fc4d7e9dee5aa821138dd7b0d3998a42169d09faec7c1a8aaa643d29a5c4aea81c91b0ecfb9e25e2a215d276166418211ea6da3945e5eb220c91b690579738556755c17c231340b1af0ec6a5455fae15e6ba520aae2b8a05a50e987aa3a8e8b957e4a3f31aa3a7d9eab51d549ec4ecf3161177be1b85094b486ab9d44496bb81a6d12e65ac3f33022580c571e541d481b13c50386371806d20fc261962bb48defca159704eb7af06c91c50a92c66c7983393fbe169712a52ea72c49b84405cfb7b054c1938507cf4ba230572ab2466faf562ecb6c476316244903862993506214113cdd4d67c18d517d57f895ff24ba4e07bfb3ca5d0de710c1c3138a2be739892de05db92d3054fff49d554b4f112b07df63e5e0fb20f89358c3f3a0c8e24ac2f32b2c343c599056ae5c8157aebe2b577428ac67496cc52069cc7737ddbb7d6641624d4c95e08976265a5a0b0c27094b4862e968a65a8a4c1577c4b518c1f32d4093e3c270c68234672c482c487376fa12163315c3f3dc1155b5189935f32cb39624472d403870dcb8914afd31b3a339a34773569b49b09e1f3c815890a8505842124b472c490873573b2a42ae3cee38932e09cf42a3aa3993354854553a9235f347350aad99b5d628c775b598184eac3224140961b6333c91b298a9598dd0236c48789e0589258b39d2d84ccdd94c49a948e6484bcfdb56637336539b38cf82c482c482c482246be6ad486aac1aa9b11a9b63a5a56dd2666abec66273cc5b0cc91cab9139c692e0f92dd6d5bada1c51db25ee1b2d3103cee186b465b1cd36224bc2104b283830c2b97f6a0ce739ab314963de086166418ae10943ead84c01152942d88751ea76b68d0712e80fde9ce7da10f6a9989aa91940ccb1e7b67dfb769a9aa94d9c979bdc64be40e0fc305353ca7e00c24a7a63a6e6a5307100f1c31caf20c01cfb4646f8c2125aabb554aaa55aeb8f999008a1c412d3a0f013775642e1a54308a510c2c6a81edfc387a22bfcf79d9517de6e62092a60abd9399ae358726657cc143eae1b57aa2e88612a4a2eac15a44008af8d2a3c81adbc205a6b45447ebe99136c50ed56c2697cc2990aa596c0a720d9158ce044376b4a889c94000107a02dc281e9a8e8084d04218c89658126b3428c09a743508d4d110623e04f0fce3045cb49467d8a7c3e479882a90b22030833ea59d2c4165868c06646582c398202d444ad5462414c768427d8506b4e98c842136f289d8e282c0b40b5255c51aa2bd882bafec0600c1f2c064ce03c93d8adc44487fb54491862595434b3351a334292c2d1931754bb956854883647af1ed1d8132d7ea6602207a60e868422351912887ed0c5664655b8c111143510a154ab55d18359154c08715bddb612282b82e509c3dd41322d62109b824a6fa54a85e6288b7e642f664620eaef862fdd9aa4e5fd293489e6289b23cbfbd3688e12bb1cc663de9f48a8eac55d1cbca42a9897534abbce8a402b028d06ac1911e18a18a322cc680e17aa24491a4a08e9587a0c2e86b863e218377dc6a88a67065531c2fd9964aa78bc99922a843599122222738c61e24a12cc44dc40e208bc7114c74ce1e8243a9b63d21c32c74e75effbd018c6cd41d6941e7367c89ad25f5c1f644de92eae943530b7f4975bbacbfd644de92d57ca9afc824b67b99c4c953e6f95a9d2bd1f7a7420c43908e64c261109172752d9a544334585b6d7fa5d9c2cc2dc493488aaac1b9262b04e9aad50118525fcc05659d270c65185f0052b8460ab2c93722799a028030c09b6e24e8384684f53a0ad9124e186e1becc5386a3cc68b2269370eea4962328a4c056fd09a35488d2525495a3094590ada6509e419c982712dca7629e312b668ab40995c44ca354315319ee8fa1fd91ef38f348786fd6db2d14bbcaace94e9aa99e3253121fe9f9ea7be979c6f20c8aadba52c976d29216e0da498d330e8c0389c6f5df8e2ad220849b48f4442d1d556d277595394aa3222473c954b9c426cf1ce51460c80213c11308f79c020c55709e31dc32a3219c01e79904f72ce198634e0121e443e728dd880938cb2b2810c2dc493058cad880647e8e3ed01f84990ae1c0726605ce55c4990a512a9ba3a4422959d34f51211fa60ac32089d648dcc731c79819e018c0688dc4591a5db92a99a0733e2aa1c5f4b26808158c2a6d33a8ddbd7a2715a24454468570e4d0ddfd1ce698a9106d8ef9740a15a244d507198e2161a633ced2199d5129efee8c99ea4d4ccd547f668e3d548543761255512159d39f3f5428a905cb2229da80330e2a84bb0233b8de8b7999aa4e9a35fd122e95de3207f752e9a57fe1636e68bbbb77ae746ef3b69b6e77b9968d7fcce0708e537ca9713b9d447ba50614c193144998690f0f4cca985c81fb744853205a04f769ec25e6258799eae699e1b8cddbb6d946700a4b195115dc04a9c912dc604ec372e86da73d088f57b034a272843731dfc033249a8279c0524664d48375c052d684869d3801c29ea44738ea831048901053267ca48dbe673f099ac4ede619bcddb373dbba549a78721ced405607b26a3599ec6641d694920657e710da8390fecc547f8a941a09b9671a87f005cb22284df073cfdbb8bb279e734e4ab9539025654aa672b3289e3bb80ab2e44c89755e8b2df851092b770bb2b86f20cb4e969434aa98b7973e452903a82ca8648b72b7c1ae261d534303480000000314003030180e8985e31189501514eb0314000a9aa85c82461988498c52c620630c210000000000440044441308004f2ea406f0473f2e443c72e5b31e2180b575708c1d2c041f4beaed171142101ab71ac49837f713ba26a78e95cb90e7050d479832670268faff66b2cfd225553f3c176e5dbde5a2fe87942f5d224ce856292d1eb936ca2add157c211081ad7bd23ef323507388f7d2caf1d074fd7caffd24be70fed421e40861f025ce85517b69f18107ddfb29cfd787c2e7a197a0e8f23008d89b2542475bd6ac1d415501d71406a728dea4708281219a789aba29f97921013ead55942570b210231184ffd192fbaee2a041ea9efad67b116166a04de003dec1ae14e06a773bfbd0370337d2d6bf9cc662c41ae887c4dc835f984ef3e299bff47d01efc8b67acbb05dd0b5796a9a279d08bd950b07f2e52eb7c5070533616b1a32269828a68ed3a7bf922ef122d5d805ee31fe382790612d81940345fd5a1876b7f02b6c584ba298a2dbadf59f6632ca513852ba3fe55592e06195c5533749bd274b2feffefbf1c6ceea9fbc7fb3ab239565c66eda00e6707e717a454a561e81ff1322ffe0c8df33fb3004dcbd2fd92adf852ee9c63dea135217314f144abc0435dba6c7e315326facf81cfa1b00fd2a1e64e10a7f953d5436bb524ddc682fb6e5a23a5cabf20f1ba01c8eb78e2b9c01f38a173189a4c94b17d9105046463b8d889dc97885c6e58b142999cd574dcd56aa1e5e7eff44b2be08ff88e48d4bfc4b12fc699a52d2f98c5bed5ecb7b6e697fc5fe22b1608d614c98350d5e8e5ee80f403e32b21213fa210a9a3e9d191c6dc7d22675c2d7c720d9c2817e2e0ddfa0bdb47a1e21da8fb0c96b830b0b82a4a7d503f02b63cb75018363b7b01e5ec08f183cb7d2b62c1e5a231b3d392f7e9441669a18da19aa18d6366ac43ee4b453c4003bec611250f0a098ccdc689bfe74bd50b08e315eb11f51d3e4696eff9b3fda6d93c129cc0b82bb92bd1271d0b21c4d1281e60a24f5d7f1d9f330def7355348e39aa33962242a35cefce5ee721f8597b7d5e18bdef1f9cbb00937aca2fd15f03f5d2441411658fecdefde469b96813f019456140d4c12cc70886f79457b44f1ab4f9ffa3661e45d82085e54746bf1d8e345f32c1cc414174c0c346e4c51af264855cd33a2bc37295afbbbbcc8d5c9d992cc85602fdb0c0a4909837204148827de21def6c03cb2ccb7515c5ede41cd0ff14aaba54cf0fc376d396d142ea3e0901ce48cae25bd35c76819d814ea4d38a7e745f243ada5ef81e069ed1b655fcf36483c8e7fd53258806dea8ac90bb0bf0f2dbe180b530b394283daec4d974d77b32515ec22fcd8264b32346b2db81c8600fd5bcda0dd2f84b1665c7ef6608e063b2c878d8fc194478c9cd7a211867274283af9b0ee90b2697bc961c859127c4f4a2be47f15f8fdfd07a7b6a922f68d40bf6f0a8c2fd96c2afd84a089aec8f1397c45aae132567d816c4da4e056019b13fb233c5d5a53d535d2fa0b5984c2568eeca35c733317974cafd82c67f821a9b132597f7a55179dfc10bb968612b597e0a42d158de20536ef733cb23a0a4e2b5d7d1128b679b26a9862a34d234948de9bf2748954bb596b829d13de90979a83c85032ab801e23bc244c08be968c9ed1d1f86e0de9f41b4ce784ae49ef0a9575ca08e3e3e24413093d923428709d61996d17832392012180c5dae07ba1006d72a073d3fe2bbf847b354cbb8cb3af19d730705807226e8f9cf0326b6e07e47fa4379f22c0deaa265b03a6402dd8c9d5c8056262a636a352cd3932d7523a4f29005133353c23daf84fdf68b86c1e09e0ebced37c7842fff96c2af85b1e748a35800e9d4e17757e897cf87fc899828a94141084122cd081fbf04a1b2efc9503a1eddc6e0fa1a5c8cabce20a7abd29643015f3c6fe3e37f1166e5eb04e0c9c3ff471acea646ee557634ff69c9f0ae77d70f383468fcbc59e4faced13620e292057cb39e62c47d516ad9bed9c1e749bb18d3dcf14f1f7120d694619b9c5c484cd8c336db97776be8c6248a2c125d288a71c89c1e87d7555ea1fe26dd2a258997d52306ed9cfcb0b6c776c2667b2b925204aba08c5fe136d0c3728cc8eb10ccaf10b0acf63bf2bc3b704852b04c55e6aeeca03855709218e16ec89388c22fcfcd315ca87dc3f8831f4e86d909f338f0b5f9fd87c1e61de7c3c323a8853350cfc491778182800571bba2a65795803f4d66780279e6bde613269d9d7047c0e85b5e6a14e7ec8a658c78312386014d5471882fe3f5b3c5cf3ca821d77c5ce9c926ee7da9166694281b4043d91622eec5bd081ae9ce4241556e9c1f9be27462358b9555958812c808dce67b46ccc840261017662bdcd8aed05eab3e0019ea126bc9fb60d5b605e6a6a3a8ecd8214129ce8de891dd8b1fd10d46775322418983787108528289416126290f006399e155d516870abbf7e0879e08b8fd3a5840129d09526d3ac2255ab9afc7cbedc784773d94c2f832495e6f9f6b03d09d96f4d5885705ec5077a65263a938bacb01e781891431c6aaa71f5e31b65fb054aee6e9aa892701619eefffd19c75ff58b84bff03acc0548522417be9c64f86fe39ac025315924997d5ab631a95370b220e70118a2417678d8421dc27fc7d64962f32200a3a743043c1491282260354ee2d3176d64de111c4a8172b4d9f40b413c14edb3e0f93b13cc4661514704f32eebd4923f3139a44853d8988e352c4227b3ac9c35bc4d5ac6e073d9b8147bc530940ecb766bbd6b44f71112657aac39ae90869474e8486db9fd27323dce3e30276af9af9af4184a17e06d3a90a20160d02b5db43fcb6a8a4e353d1a36d3a17a34d6abf428c25cd506c8276db51c004bf81b8ad05ef415a06d21b46f6206e9a7fbcc383e51cc5759e88d81b8bd0566e2462aedc1981f48bb41f2cb0f1fd29c584f099542dcfaf10d03aefd0e3b7e0f339b38d32bd8f7a69903048cafe73b2617221a5a6f67de9fd35e743335d77c09a7a89174032af9f61020bdf8173aef08c9c9dc439a40b70a92033bbea1c14b014c09d29afc4bce55a1cfb61b15d8ecc5202dd129431ee90ec41d834537dcefd3c3db4e956256a0bd83dcb6a73c7fbd3329c482d147e25c78aae6c8491d7959c85165b82a5f8e55fbd406861ad628e4c456ec553057d6c4b46c1a9af11b20a3db37c089b169e7b6a26c393bd1c305217940102a218aaee2057e69b10f5c828729a3b99678c4b254a2e0ecccfc1309d074d5d7cd4c5215e175b941028897ed3b55de8e9de8b3705a6287633ea57763dad59e5568cc92b1831e3dffbaac6c588198128d3e527647c0ca0c02708da437066477c707844016698b46781e05f803a68d00039de221c3f81f3d2904060c76014d541f46c13c3cb3b90fe5a0b031109d48ce4ea4c049c9215451160d433eebcec162414c1a9344961b20f90ac0b8adaaf2f78c761c3ac470aa5add0b0cc6c54048c6e169a3fa31356d69dde009f34060ac41c05b69de5527634e9944d467130c0e12be49a6105527bf37ea08f32f57341c2004e70b8fe01602189ab50dd5e50aa7599a9bfa3987cf1ae59ef494a6a033ed11a5b825815eb17b7d660980894a55024ffb1fa5c8c1ec43117a6890cd95524242581325a6782ecf053460e8c601185e74893811a68c245894d71b21be033d9cffb754c771bd2dece1d49dff4d2a97f15c15cce03f7ac46849fbfdb659f0925026a57698b01f1f0ec7d94d9b1ab8a1a24c9f618b5acee52bb661a7d55bdca4f1a6541a23571ab999fd62366f116d0fb9efee62e775fd4db0c6b8854897fb3725412d5067a10de02165b2864546c60a40a3d708f2cd13d905f2dfe77c20f9b094fe5a7bde265dcdf686fdcb7e45a22d9e9b9bd74c5f37cdd6b8d97e5d6fdcc7cac45f8695a000ba0fa1fb5b07822969333a7acf26f78c2a0bd39afb7ca88ceb2925aa96e8e7ea5752c9dd63bf590a23ebbf1a27f7e3a28908bca2c772fde42aaf6065aa358461f5ad823c55a0d1e44fcfc09cd7e663fe0a2af11cbe8f0739e6f76261ec71bade141da2fa526651fb609081fabac5cf5ae86928be80b2c93a3e2cc911b2c818c55e3f7714846124595dcfbd69662b31b1ad9da9ecfc3da6c59224236a8985b376f0d5d89600c0f277c05b606bc9c1e9ded7b5e58b5ee0f1b3e2a370293a45d67ad14243a315f4ea03ed0d4520966e59a1392decc7792dc9e39ae677c71cb7955cae928190a1893782cce6005b07f3071c675a705cc18f1259e3749858dea1dfd0e3126f7b61a6099f1591e8c881c4e58fdc3aa3b4cba176548bc06d631364c01d2f98967e9c2c6df8dd571c8a980770c0d2da1031ffa13117697c9c0658b00f64ea944e888fbba7a1eb3372ee763f2f8fb49f1bdf6792807e36fa83b9a62adbc58ec26510b66404f9c2104319d428e33536efbba390d72b13bb2fcdf1153efa0a42875251868d13e18f465841f1d9d7b0096916d992fee04c7a9f4dfa52cddae97e7d483861d906f43e9363514fc2c54855e96dd3451fec68f5d22f133149ef01024bf4c51a79a5c482c5a02df649d660504a8e36ab4ee6d462e0087d200b792cfad5f64efb5015afc88abd40cd60aeb7fadd6b0553ae8b8fe24ea6ec0e2c0100882b19f640536d3605593c99b4b404410ae67d42e109cab86747e62b28e7c51fc7cc31760a87053ddac0ca85138c0b39e5534c2836aba264d97055ee7dd4fccf350fdaa0b4b37351aff1010f0e8b57556a99c3a664d1ad551bc52366f3a19cbc829f8919f106eb179a4e19f00646ac74e10ea8566d65006095c8799012b7ade1ad27476567cf90596be497c9c3d09be0f40937b50ff1c1df30ae7cff9884346921f1d0f65483cff453a3408d50a22def7558f1b82e6ab906baade44e088e2f088c330dc19292c987631d15f8704ae76e1cff01c53fceb2e2df401243ce4e77e501ef65490e1a5968f0782f51a37439eb320437178d4e85d474ab08795e91ca46db1a7a299a2e31105a330ffb72a419d106e255067c0a5492bf9b0204c9db8e3a52fa47a604759c92d0f3c96012578978742e8a8d317973268b1a10075df06d605e210b04563e5dc2dc0e2a01e045e14e122e3e6be88bece677915567e3a9a5898ecc80133c0e0801c45d95ad8af22117231247df279c94419c25ace194e52ef132355640a3ad7107de50a0ae7586a05cdfa332884eb05ac58cf53ac60dcfc64c85d340ae061df4007af39145f5d1e9b53120921d283905b73219ef22d4863f7a4056d7702a85b63bb16cc43068b6102c302d65c1bf024dc287f81e8f9a7b0e8823ad5f55079f9f19c0d27e3fc7e7e5651b03b3ba8c765e1f1ff35035a27b912b4bd2d809583b3a070d29a5ede8bf5ecf6bbcbacbec1db79b3febe1a1095255a5456a9ed38956b5077e4cb095a94a27c121a7a871fa84fffc6bfeb9634679e94581329530040ee0f2658ac03ca99299d168bd56454c509e7b32d913329389bfa41bb599cdf546068be4f5363cfed859cb2befe2552acd0f501e8062c87c59fb96744129da45d1154941c6af712515c978fed048273c08e2b5a200c91358ee670f2cb964087c06d602569fe2be15272f4f7d89acc3fa53a974614434b0999db5f6b7472af8208a065e50ffccf8ef8d2532d8c0b1e9ddb67496d1d1c20e485845296b5cf0e7ba09b6a3321440c6d8550d69dca6a00263a182462561f8b9e4e1455276d96ff9569bc874249705aea30f3df526bcf02c64cdb6d006b72ae0c8c2acf700adaa90010589c4d0b7266397790440320d7eefe262251909f02e6a031fc902fb31340d25f3ad5bf4d2d3dc2093919a0c2a6e1d0c2b0f5dcaef9c51885b0478d759ae6bcbabe5001e0e94d759d10162c8ef0783d6acab2abfda2219f4237aaa254c14b994f60918e3318eefdd0a7654d864053b4c09ea1fda6362e30d6fcc9587c7d9c2fe963e760f8958925d649d778bf96ed177b774c679572c38f74bded7ba57d22b5f834ecea301481f36ee942b77d1b80ef17a2406d8dfe6ab1009821dc4a311c3be32872fa6f292f64f65505511bd8dd1de37770427de12247aa0470a19b6431832c69a1a1559f625ef7d90c0818153af1633bbb7f2384562f253f171a2809c56c5910fd6baf996ff9ecb31eea4e8da662f3b0879de7d6d9439b283bc7980fa6b6cc25e2df386ca8dfefc836ea08a982074add3c9496e855c63441b9886641da9702321365ae897c123b20e2bdc9401d267f618fd096125251966b48561c0680a3712b872b99e300d483a52b8f1414794000307341d29dc7cb0303040f780a4a305dc7c70f44d84b84a37e236a783841d2b77e3a2544f1f5221317280a443a19bc52460574e7520af80d28158ffe16a7f1c38ab7a3e1b19a2eb50e5a60f0d3b25981381443a16a219fc69ebaff000fdf5ea0bc1b2ff281f9afb7dee697a67140288be3da2eb84126a452cca1b7420292988bdfaf999911b587c7e77258f53e4b28527fd5a292962df09b1584706b05379f0f8b5da8d1f16667acc8ee83a5eb9f9a6a166c46c500a6a44efae6eeac07a5b978a9611115147166e52d8ddca376e84296b2351c8819d88c21a6702bc61b2a59ef5297adad8a1f8eee6c962abf412fd2fc96b905efebe637126279e4f4b0701535da3c60b427769517066e8be737d3121189c84e0ada47af048c4e17dc1f993a05f0b36c5699c790dfe13a616f16c44c0ca66bfa0ed06524fa370afc227711796a9d53511a67ed7ce8726dc3c842c777e076a92fd6eb1a3825a0420ddb99719e051806703e969a280fb2d02b0e0a717094a18d6c992a3f646f62a05b1613e7d5b95977e585213df5d54ec71b9933286fcfcabdc98e570ca58043ca8b9eadd53ebf56d924516251b76b8480d21521312ec439ae190ae5149a77af032a42eda24093e6432d288e0759b1bd378cde58ec062ddb41018c15fb51d7862789c3588ca79225a3909f4f0cdedb140989639fcbbcc6ff2dd8c4661e70a962d528efa3522fa2f1e2b80c2005643aabe3132fe2e8cd3feae94ea80b6472ccb8e381a18a3f7ca1029a3797190e3bb27c837e69a78b828503c5b8b20a9180d3eac728b8ffa28d016efafd43f170b5417352f9c69bdbd833319dbb3d96487a5204696a0fbaced6349957257a1326958558a7407c2b97af3ce2c716c038355409ffb710de04ea1e4e6d6609b0680e1fd338a8e1b37858f71ba8907ef0286048bb132073dc12d41a4d6b62ccd7ce72f8c93c741c4ec83b2421013931c685345041bf5339f64fd533407fc256544aaf9251ac2b4060d8d9a094b456a206d41cc8f55822c654f8661ad176100062c7cf80cfed1c41b6fb9d8502bc485a1be8902fc8830e21eeb443901e19673383c4757ff326e49db659e4543a840b189b2fe34baf26f0d96eceafca1a9f33245583956d611a42d94daebaa0a33d2bc3ca6eb68fe1c37da37a07bddc4198ebe7e02be145e37883794e125304d8d2082a603356a3617f6a9d9e205a6adcc23b739df6976c36f2ed26516cd0d4705683dcf7189188278ca5f171eea16d6800ee3e2bd55e682a62a316584f588551c01519da88568b5a8439913cddf03c311fd2288dc91571ad789c18818c3b35e75bbd24d047322c15dbaab9117f1efc89be2bb168ea10164ea2b22ff3aa3e99e329c3e060163441dc6c07d92e1560c829f155bfd45055e840981fd1cf6cd33e694a8623c8227316e485a313943916bc19b00ffe696b8e2d815b7d622c66dded5b5ab9bf2de6eaa529be009f21b4fb042d876f313cc498db415be29a72c381b04971652b86733539c5f815888779eb63810cae8b68e211155bcf5d41d81e35e3a0102f85fbed6945721bb8513aebe2fcdbb4adb88092f1854c2667e0538960d3082e7aa56e969d34458ebd1cd78ca301ac6fbed23e7787f4a2be8ba853d0f745002d5e67b50ae515ba284746710f6a1e8e7372899aab26c135fecefe5999126310af8803ed0a23757790d0e9e38ac7fa262688ad8490d63523547df75036481854f19b89daae9bf481904b3dd59b0b7341fc1c2bbcb4c79ccb73dbceab808f8f1a00f7a30ef88da55105e4e0f61cea7088b06f8e2fd92faf59354c186b52640c98ad80cecacdf6336aa219c44a43e212ce7f705bbff00a8bb13ccbd8934172db0c59424d87ecf3a229697c99c53dad1698df95a67d9197ba861b80e3b2c98e86b436ddbe59fbe1c3df330c6956e29a81ec82e29075b16ae9c301ec88c2a277a9bccc7967311b5415029a2010ec4d2e3b67126c6d193e91956486e8068ada6d4f77c133413eb51b076f74403681df1047b9f14223581c45614499080a674a30d9265e1aae9226264c7b18cee412b0b930694a6a0fee87da43f216f6348580556d5aa5646e875ec51f7200463cdab3bf54b6160b9059852b9bcb963a015c42012ae38f83d9f443c8136a2283b26a8197da7fb3c48cf4644e018f600b3b0f6518d51abd95670793c19d880b84dbf07040d374d7876d6989bb92f38dea08322cf89a0e352f269ad4dd312c1370770e810294ffc60f7305c0b9a8201622ddc52031fc6b9306cbd3a4d76638959180d456e7239e7c420f3b05092ee97a9b8eaa04217f223c865b188ecb7f0005ec0ad9ee014f5edde60293ea90d248a50a1d45bce105be547d9568176d358db2a927b3fe1db8510f1a1f9e102e0dec0bd1825c4c79180e5a602026745a4cccc734dc721265fee320323e919a2de6813622670db0a40725b09b9201d3e7f8b7cd6aad419138ec4b050bec1e0be15b1e1edccb015360874462a8b84e1fc71a58c4c49ee4c7e076d8dd190fef53cac2a432d23a54cf9578b5541c23640c9aa9de19a26ba269f191d5ec8e0358e4f88341b24565b6221eb02f1133e91a4ca0589542beba9db405482efc602a8cfb26b8115ba1ce74390343a0a9b899075399052b96bc87926e88fa84d3e05d0f315491043b3aea5d702a9138ad0d3b51204f42edcf920f9e0e37c788a23d7556a453c54a8e17ace71a6d5b4a07cb04960e133d98757e687c56e8054b83ae0aa93414d27bd70802b4e8b2d09dba5a24e4108bcb552987faa740f8555800c933782ba07d62358f14d5a594905f8d327bc8c9e537c442ac63b616d806d7f68ceab4995792143622ad50a15422e4c51e99eb17910198d4c22b6b7325f447f466be0ef916a499fb915fa4910b808a9217c689fd1ef143731d451876140b4fb03e281813ed2ef3bc3c62933cc3928ff343c798c518a986204cb514b5f772fb8ccc13474acf34a0903665195df09b215046496197d1c3c5887f258a68e42be709c04008858ad0686e85b27bd145c644bc91101562cd2ea234579fb394d179bec4d3fcab0fb0ac0d457c8e897c97bf7f25a5af9c095454b58c52aaaa02d25613ef96b70803b4d40c8e2ea6f3aeae1a102e717b5d8dce9af3efa4235911d54dd7a0ca99c48177e3ee22431649e97f26c1817f616b223c0816554170138720d20bd462bcef367eb67f12e54223fd5e853d47c1f48d39548f9f00dc22b262d941e88917e591dee59be301a7d1b8de46499a0fb716d454e7d682cace3b19d76a12aec3316c6fa4bd5fb7edc58a887d98445522fbe4945f888e41c95f1c444280bbfeb8dc4a5317825eadcabc2e98d46d28fbeeb732f512211fe30dc087e8b0390708219643a1809f9d83864ab23ff78c82c243cddbc2aa0e04f5980554444e4ea9cd853ffc70ca7a01b27a33223db0a2356f8ba8a9c58b7f31a47196b9f5423dae929361fbaa04145fcacdbc330169b168da95e3e64d993e25a87b2df2216d03a4432110be321a8894f2c6b103be98c109cc90f9f148959e025139595476ad634a5577dbd46526da2976ef8ad513a0504535d2c5739c45fb9c032156ecee6f21d51ca3dff5f0b9b9a476419823bd4db4094a7fa2ffa2717d17ca6858915a158e7fcb44119c58cfaabaaae88f62d3dc774efc50f646aa8d08d2681082f2dd019d0942e058d4cf3ac8aaf858817baa026645a4ee0f5a40904f4d552366bb07f7aa9d5085108d8cd7210e0724322f46467d98e90157d6946f7421017571af926f6d6bf281ef8b52bc1d2b35d33b8a61e796b7d4185c1fe4ca4111b456a977d689739c3b121dc55f12e8fa719a39a499445758c6ed0c98042814e79f78503214e746659219a9718ea9fefca76d9be747fc0867ba16f7e9d7d0a61134e1d221e097141d2671319b1016b609da4b0841a2683d89e6955ffac53f6856909d71e5a16882d74ccbf8fccef5c297dc81f625d8f222025a598bbf598bfed3e2e2602b989830a12a1f823b569395c5150971bbd7ec123efcf2d4c3f8afbcd3697a8254b2d4ea3fa5f9956839e9f8aee44016d32651029a8288e4a248baa4637190fdb7d6f08f5ade9971f4616c12f42e240a01b9082b8cf45816a2b6164efd502cadf2a2755c0f88944debcf025f5d1f9e48fe6d243621e08a3473d455701222daa2b223bb8ce72dc4fd6f5613fb90be6c6f3a32f1e6c81bb887843241e5e19111ea967854c7672604aa0f497a62a68cf6f55a325670b81212b1a419bd5533783637b00b884d52d46b17e86730009f0138d691925b82c0575d8c4266c62250dcd69a87f3f1b3680a5fdcda252d2aabae600d593c633ec2f0ae6a2430f57803fb625e3751119ad30d92b271b8b4efc680165aedad2c5e3d7989e2194ce703e598afcf0c0c00b17e996e6b65e2a3575d8f117a2df6abd85706fc979a01bc61fd551227b38765c0af94351a52ce27c05e998b21d8e72ff26c2155637cfb23211d9fe0c2ba178fe1cb7c8d8f3df2b22c6bd812ef3a97b0e11bf24a016b0536b175112036cb4b248e8d1dd9bdca15ca39584960860224a508c0f70fda09299835fb95b12becccb81531601ba2dfa7f89ee3be4b9ae57ee037143875e888f5080bef646786fa0795d92ccefc81a1e1afd8303861704df3b4c04578f95760368aa513c955709b045cee1efa5aa6cb485c410f4b740813b7dc72d750e2a9ed1c1f43665b473a1e7f39f02f45469aa9e4d211da26d4f15adc0a7036ae808e9431adf8c3d3b5c663187c0e9332d861d9c6137bf05a036ac5c9a0bdae4901001cabf216403717988fc0b63f397e25dfbd889d6b33d2387eb4d83b34ea91136d1b1532b1cf33db6c449887e025638f756c0fec5e14d048a6c8dbcdd556e387a1ef6abb07ec255aee349c246c42141a8bc1d6a23cdc336cca5897f13ab496a898d23a258b03c832deff2028b5802ec6ab380e89a75c4ca2942a184f77a8bdf46293e237b5b1656629b7e0132055d9f7a279bc9b0995eb2874ab3312fbdb924874544d81add67c7406c22edfe911b451c4359a340f322f47e272de4be39043f09d20d91eb87c3648526f07dc66611d9086791c60a323096b266a90a9023da0b46f6c8d9f0ed6e20047a64090d13b07cd23c2b77c195e1eae16e0aa143d583ea2b40d6a73c7da43abe13d51078244876da06ccdb3e3ffc87737612c7084a3385195bfcff388a4eb813d10b3ba746ec376cf6a57037a9f00b27adc6a108e8d3b32e787b840bf86e96ab376ba3c02360e66b2069f8531d1e95fc8c4d206994bf689a3843a5c3856f2b3722c83ba627d02bbe4d36af3a642cfbca6d1c89944a466ad68747359a38af91c108e8ba9a00108bc4fd78ea116f148f962d8929490244a603a9549faa1e9d1ccb3f5d207f07507795cc0251f253e9c6d776b82b5bfd699b0c57f0cd61cf7cc9a3b81c7e41b68691f73d99bf0b97139367d70fd04d4cc2f88036b1e6c68c06cbf185b47a50cce2166941fab089e4490c844ec90107b1a131f75ebfeb646617658cbd2baa9f8a8136de4d374f0a46cc7489ebb8f91e87d5bf65480ae1e322723ed9db89a7468439bd80cc8d73d8c113dccc65448741939005024a81fce4513caced27b2bd05711b1d8148dec3015f7eed0e0734ba4b2b7be319ccf43091ab44f05e23e828d009d820200acf100148dfd93320b5ab8acbb7f6a49cfa9da8d78b4022588649d019e8a78dae4980721881b270af0b2cad5154bcee0f0734fafb9433248124cc203c08ca8aafe968fb5b500c89629b27bb9bd409d31a66f4210020431dfd4a3de2b7241b7d831e3c5d5535c40821e2796f0f34ee19efa81836410a3293fc0f68de6258f0a11154c2471bc1f03e801ae3a02b8bfe4a1cddb98bd36188f27342cc98f57b8941fc19eec09fade9f452608496bba442dc5db9165e2740ee17f7b9e1cac9bfac35e0082d1e202e1181b75601dab2387ba46f639de817d215d90227d12a2250439f588921b0795e970bf220beee3530b233577ea2dc4db8bc088b34739e2bb69173e83a11c945740f0c156e6073b408e0efbab329b45b259a454be4dbfe2896f9d76a2b1e1033560383c1ab9cbc385f4824aa6185e4b682194c3961e23e8444013d4b944017d47d57756dfb730fba9f11a109bcd6ed64619c0886b6f424161ddd134bd56a95420f81c29a13656acb2d1bd6b2615748f8c682a7c49424d4ef36c12891558adde14c35c5bd1b415ba0c6ade62ab21c373014758a1e6056c67547863e57b50eb9e647d901a6702fb30a71b15300acc212789a6af73940775df7f5a10dbb8919f8d10e39a573a8a94f9c93a99b7b621ac4f98fe6bb08a148a243ad54d4f4c7b6337ce920b5eaf4e027a3de10b10c8f97cebc8685eeed303e9fd26f5f1449094f7eac228d12733d988cdfd4222f90118491059a4b12448f9f5ce813c10c4e1360d8bf6c490508e31118094f180f45e8f689d7467410f790067c2f0f2943157a13ac86a6433683b2fde16dffe4ad342634ca22baa415e41cbadc6eeb1d93573c58ac89e2c494f7ac3eb9581737a95e847e02d890f74aa7b8a6d2af16db7bcdb27c5b2647ccf24b85e4184c87b8f8349d8dafc435c1b885dfd409913db124524f04fc317324069fdd7fc192a132056cc6a8ad7b6ac97b9270b5032e7afe312077403c40eab677a082954dd148a249986d91881f51bee19048bb3d0849ba04f6818d10021ad0e89cdcbbf949f5edd8c8621c8f969552f31045e2096d7d16c3d1c22cd6db3c86ef861ee9135c9027f5e36bcbd878e41ef1a0a11715792b5e218263c1abb4572fa019ba8f9935a64cf444c9acc458f031c1862107875307f011b1bd78d021f064b46cc189caa8915404a6cec43b9fda29d46d3117f260407f158e7cc285d39dc38055633ba60849035d9fd0a880368e2053ef103221f68a6a682fd0655d0baf7b49346cf1917d5fbaee22adbf6e5e0b9a9846202ab65b0564e27bd166421fa8945add71f950643b088b4de7c6c1fd52bd88217086affe0b5a0b63c8ef957c0b93b445ef313967247beba8a601ba1171bee15e867a7e02ddea172424faad1d0752e071650e2a971d09fd69e6f74780aa8689a7cae79d03ae30f85adc206bbff7600f6f747799af04c3d56857e846d2a75a65e29f2acc3b6d36d8161bdcf165a53c450c9df002d8ae89a0cbd6a8794fa7ad96c99aab89d433b71579b0a2bafc81c1360a0046109211895b2582788fdf99b062f7705d41dd42ec4b3aa0de5b4aa570d68b6ad4ab0939d3d0c8775f291fe08e60e9a1d2c4668902c7d5534245cdde78b2a6ae060898affabc83687d8c4079f9553e712fd804da0a0e98c31e0665216a61926700b156ffd1815b3799591d52844ad975e8207b805cd0ebc0c77a78f747a8f8eaa588bc7dd6c8fdac55c289cadbd629693f0c72dd4ea70fa4021d7ccff98cc6dbbf0c674f5d2cd6a071fac5b3a09da2e30aa2dd684fac26eb013b5c97e0a163d7b9753be225593fa928f02fb49c81223e986fcf70d0623d9fb5d2a155626fce234b19290c1844560a80be0ee7f6d3d0eb20219f55ee825210249d05ec0fd7ac312c69409e74370a3064df46112042d78616c765962687642277c070d2a8d4eb43f917840bb3d400a6e8351dbf1053224da9d8c6426a83de9d6ccb3dc9740a23f9052e5f978a0229212452c01089bd14f54354f49586628ca4bae19e660034170a694eb21f1f35704a72a884868571d1f27ef676bdbbbd346c2045524819c87fc5b604bdde84158f70320813aecec1e02b007ddcfc8219658ecbd1e1dee5b606aa70a33834e07b5c081928190f3395e0686f897ce590064166805373b404febb56c965a6141ceb88dea531a7dd394f6d7c7e875a5a07b5e086e70b51dda7032e7b52e9f133354156bb8c2b951d564497285b1258a026670601276fec540c5d84540978679b56f01dae4197c89310f1a11f340b8cc85f7231df98657d03ddd0e34725269667dc1ce1768bca8ae68710be9265832b38b49341490b2aa1a62f8519ed4d81a625dbb02ecbf40ef011371a576376c1288a8d349540005e789bbd027ba963762d708efe4cdccbe40ae837cf40bb7c1ee7f83e9ec39626dbedc3780ae33908403ef760d8ffb7180c90362745067d418e936130841a57e8eeb66c42d2e89346dbc43d8a67088659527172f24596029ba426b482623dc5e8079046d105110bf91dd62de0aee30092140ca48926253abec7dfb58a00a234cd0148d75174c0b4e15a22a1f892ddd785730adee22fbfe078f61146f2ba6a4bd4afd1f84377b9efa7353fc018e62df12d42603f1af8c5788f90ee0ea8a0b3fd80c955d65718517f70c87f7e7b9f5c3026bf1e96a8b51df1354d19026bffa35d222072d514fe92c4bb4004ffea5efbb9e8f5a3a8cd1e80885a25e3b9ed4a6589f53216141c7efed19bccafc151194ec4429edf3080dad757b05f841c20362a42f40c1f818596c9b208798073b2af4273cead5c0fdbb98b3fffa718aee808536198e594c081e2a050b995116f2821a6cf1dec812de27d027fb675b31e221f501098e04566f901198659fcefd12d4331e062a3110232394357c36f19acd26716d9902e3660c95ed7375c16edc3651a5be67a3b86d42e5c92b72c9c666416ea1724973cc42059d82ca441fb60360be65f9b05f1c1621bedfc1226769fd92cb8dc2c4ac27ab69f22dbe66bde1e7ce91aedb924ec3badc38f0d548cb0dace6984cd5122cbe2ddbe7712f816296d8851db2e143aa8ba9edbd664f39c816bd490b9ffcae1ba52ad0e4320d10751c0902e360835b6806e16a918f82131bc065d32d5712af707cf8f199fce30b045336a362b6e90944b15fe7a21d01d73013428d438b7bed268db0ca2287a4e66fac58cf5007bd339ab51bf8ebf0ddabf47d52730156de997b11d6c7c4eab1a2c0d7e7647a1b8bda94689e775dbc4d94fb1fa969d5aec7c140c68cac9c45929130ee000d117ae06698b7853068bd86c8aefe22249f48143af2162b09813c2adf66835e0877317742a2c2f1da45a9df058343639ee77ffa9a31edfc9b1b569347cf7573845300793b780aaabf3ba4ca402cc4b804f0dfc736f59d1171db898293c339281822140f3a9f7e7debaebbbd72096304c4aded833cd02d4df7fb5922a6c28642586f9e07db80f98d9b778e1205a21b72f860c1094b73b37194c501c347b5cdb5b612055e39a38cb178cab6e413f37f6bd839cd955195c0af586dd5b59a161871420c35b2e5f78b131b69242a6908828e27893e5dda1363063ea77c1f58294dbb4a96663158cb11c839bfe2b0164b765d07113cb055410e4d3bdd8daeb61af393df0cf43f528bbf9587eefae6fce7cfd70bb7c63a30156bbe7744f5823d6517e21ea83987a2f8d97c26f0da96445e72a0a53acb2c325092cd7e6e00f7f2a919b6b774c371664891e62faa734cf52c3143d83295aaef9f95145ec65527a7bb709a4dde10dad007e8d8aaa8f54f990cc90b820ea9bfd2cb38c60dff8a5af17b051f8cb0030934182f729fd5612a65ab287d8fb5e659032476b88347f8cd1253cdcd7088403d9b20c3beb34a0a07745811f7bc063ae6f0107e4d2f330000a04eb89e68af4111179424fd26ce290848c5fd22998673b5df2c5cca7bf9cdf5beb934e155370d9e242283e222dc955870ef30e7769bdc9281858b8c191fd1442a1ba6002d6303e3a8c976ba87871a76c33e3f5a2839f62f95cd390cc84cbcc0a7a75a96a3304af73b674ceb05e7aaf74c6c97f9da3fde55faf4a78293d04511e623c3153e4250c03f1f9684c961e1b3fd86505748306367c6363b3f5dcf04bf140e6e9952613460fbb6fdba22af7b3a76de0a7c3dcc518015ae43aaaeab1d58202a4dc319834ff0395659cac041a93691f4aa5d7a5b2067ff111c6f1982964896d6555d3684bef4cc44fd3f2594f2549bccd9a826bf03a73a0909902537c83c4cf2eacc00020055d1fec28b98f2802071d030e4ced0b8671672f38d4e14e0498a0d84d999fb788d5ad2afab6c955e5c9f87483f22164603b404e3d3c28e4cbdae7182e4c63d52bede04fbb4c76f8e21515887cf2afb5814f40015ffdd98e6c277030f868d2fc426ef72d118e94abd94f0b7eca63e1d36c145f2e9599e1c0b1f6adc42bd713eb595b2c5938f1232e254dca8a792b68b32681b835604e9c3138ad3c0413fbf9107c3899d9d8154198706fb3f0d412802e77a1f002acde49985cc239081b8411088ba13ab6f9844e8fbead10ff862aef22056c20a8a2d6c998875c27f2f1b0048864d1feea9d3322df20de8a13caa00c44ab39ead7401da7c29eab55e93db6502abe3a98103b896a7e914e15af2504aa63eb289f3b9c6aee639354939f2faf7dcf06cba5e0360f53295828eb7c73ae409b2c711c9816d23fedb5f79680eb89a35950964991804d7d1853935cca0ed3f86818fd3d4ba1c04c190ee61b3a75819330d00210357aa603924fc9709c465181669488830184355ef7a1252db7b9c16da39d64eb6f5132830c44a1135bd84efbb86a8ce3785bf2724e62b2fa5fb57da2a03d9c56382a0308b28db82118446fd3d055023f82f8893018abb8ad9a49bc8c5a03d663bf486166019f38ad7f3b82ba251d2412e7a07622736430873bc4629597de36b83bd610b1da0b646514859839f1e68cc8385bbc5422bc785b5c7e68b1c2500d03c3f2d34e5f328b233e0c862b05de28b91f350a7cbcd3114b78fb56655c10a21625e9e6c2f12c27e11b8d0affa8cf8ae31bce2f543650e22fb78cda90e44b0ed2ba54f999e01196aa13f572ba0ecd5cae6522b8d31ef819da106b682651f67eac62df680d7eb8128f440704e12df8e29a88203c86f9b2bc6d080f972ae5686a586b2dcf3a52933742422e8a3f884020865f044b43b44fa9bb8ad4abffa47ebb480f45dadb2a71e58b745a85727b06d6668430e44630cfcd0a4ae490b5512426ed1ba281bad43b08e393abf62a81bea8ac37616498df38f6ea01530382f1c89b1573f617e4bf37713f620e04d549a77602d70da23140240775701605a8eac3d5098680e15efdb5bb548dc7646beaf200d3117414d241882474b03510a8683a434d9992c9623382ccb25f368e53415e4db4af09728442f2e6bc8603542f8ac03158ca9129ac778cf9b1e1564b122466f3dc161a6e8cb4875166d31ad21701cc7e3faa97b3d18126e6d46143d0fa75362f534d9ba0392c9237d8ca3fbbd95fea18bdd376160364e0765d77065f8916e6d0810259f2ab5624bc817c8670d5b70d63d89e3f578f789b4927022d51a6eb192130cb547b604061684cb85f8798533981512b4be335085116d9e194184973eea4802e8d8a27d85498f16aa582600ae86b01cafc85a458c8fd7d0c0698d9ef39dfa42f29f4cd277102777ca0b7253d4a3252cb62258f867f6a1641c19286818913b4a11c680852efe98113456abc21a8bb83b793b63305b9223b5ae226c9393136eb7f211deeed5148dd2a9374b473ca234432f8eb823b4fe424aa403cc6e3ca25abf6c9e26a5c14db3c65b7bdbd98f2a7bae8095254ea30546923742b2792af884731f5e8c944b78359aa2985f08cb6d8169294180f0b0eeca4e289f6dfa418a29fa38c5a4b63447a633586eea3f1bde0eccb94ea052aae4d41a088be08c9cc0a758f1e1af82af9c2b2002a623ffab8e1125686dc5ed246fb81885a0a786c4d2e00316c9d042a9974f427619833d096721a1255ccbe1fd6f0758a85cfc8ebc01045105e43175851d255602de7539db20fc37b85bc3d8f2efe9dee935573b423bfbbaa6db82f0a46da141b0c41c122d492c990b3d86c734e43a0c4c4444bd96e25d6dfacb82c6bf1b8860ba032b70f08557f912e72364c65614b12d488226be909296b105efffffedcfd634a09265643f310f5f1f9e49331bbcd41a57f89518cde101750f4c6ef87c0557b13f6764d2bf4c06f1b0f46adc52af409302ac302b30059612573d8b5150a552a6877aebc7d111690501d0b50334bd73cc92e3b19e00bd00495129e6536555e61c5f08749898554a02d7f35d2b84b5e26091549ef4d2349d592d08f30357c40a8327d629123b59dcef595be8857b5d2f643e88361213e9acc8367ee1fc44f771435348414110da26432b066214227a998c5a6f345488a7c279d0ae0c23831a0f7318a66da73d4f2f479a80f686ea05f832ed2f07abbfe5a6a3dafde68803561f9f64d7e731800aecd26feb6fa09c2f99ce30e3a4050311c96628d94d0af738f3e133b39aaa9c0972187a4c82b946d82d7964bb0fc213bce87f493c25b6eb0d8479ec4cb27af8ff35a8c0f66427ff8f09a07b82a3031ef8f36646e66b44166e5dbbcf9a1c94e151cfc3ae6bbfa912a214caae8b20a125b2b465b41e42f37e361bac15e82345d7d61f4a04f7d54891d8098c781f522450e94b26a376a4c6fa90719d757b6286a3272a6a74a43946cd388e85bd35f8a4a61691a9886a7c1305574b4731ab8deae6b2e1a585ec7a642fc708552fa66bde0039c813a5960fdd138527dbb43fe83d20fc628b5e37fcbffef57fc87b2f19881818f9b7d404490df28f13572b0d3d6b760d7833ba718ce0df6a1b63c4deb29346611c1cbec402a8b45a7319dfc318f05c38813924f0e08b61556db579a83dd8432271b0a74aecc8d6eac1e245c060a082498df5fc2cdbacc6fb45a4ef3fc26dff1ea005fbcf958933b72f72038882ad979d1cf707899e02f70679fb1082461d83024d2f09e533052818235e8123a2bc2e0c45683e9db4d5c0a2c782d66b480d04cfc4f3a8aad484090fbacac9b2382d209d15b4552f8cde944301013e140753cc4c65825325b0c160f68a353b9b08dfe84547570233a309b32c60f916c7f091b2a6299dba8aa9c6639edbe7162e1d518b9b8390a7aa2f926a17af484ab8f9c566a99bf1e55b5625f3ff1811fee89e60b3884aba076be181d02a232dd52d242f28a6eafbe7a745c65c2eb513136ea1a910eb5f9235a7cd47217a704b9145dbcb27537ed56fdf53b868cd27fe4305a71c2d815c5508b782ea1af0e3e6693b32933cb73db66fded11d24b25d2e52c1033361f2a9511b1f60bbddd1fc7fbef8348682ee4c21b1a7cfe1fd710214a364873cb2d335ca6ac8c8984c9694ed4531b02e2ce4d5375f9a1ba80f2e54e0171ece88006b229a7b88c782022f72ef55b9caf04aa2b8caf3f73e813091acd6dacc46e70273ead49480e71861ed3019804c1fec4e2f72ca2d9453480f2b389b663095442c1e76b419b7081e6dd2508103ef357cc59b99067eec6b51ac516554d88261a7f05fb50eaffc417b38b9ec14fdf35d1f0ffb0c3d8b509e1e80d0f21cf28de5f2b238d1d4310c23ad5dfc7072e91e32571046b7f04e65b6cbfeb0adac3a2297a2b4547cbf364ad15ea616970d9d4f7205c9abf0176e8e87346507c33f231d9f9d09e76bc5aa6f375a8c7974027fb8688a938c871027ad83fe1be75cb5f5d22739a369250b5c1f4f9c1ce8687b0433c48600cddece1e0402d463ade4952b55a9c11c499fad502bb7d1f669c4de48a2c148c1a65570ab9f8d5ea1563d5b0ca78a118143ab1876540bc06f2a69c14aa94d7578f0d204bc657f34a0d1f34940b12f53d5de285a5b59caf44508f62be1c7cc8923a101ae494dc3fc295ed069fc051ee0a0f1a6b815216c74e68c6eb4874168354a10f1b83bde62cfa32aab01d495696556f92ecd21bb628c9a2fb7de89dfef19821c14367d25aa8eac5f5a2d73aaef1943e18cdb3b8ac61fe7976f0071efc779e83f6330e93495614ff36f4b5caa579d7082cce2bb7cad0fb0af151188b3934c6983fb34fa7d2c21c82cb1aa2db2a352eff4d043df080b14c33a336e760a3d58428aa0eadc4f88f3f71af029469ff5cc826e788f68d7f886c79557d5528cc8420860f41da29561df1fc8f9da1083cb2dc4ec6a6336310e2c7058aea57a0fb17428464c7bc7d84c9bfba586dca867f9a083f6e05e241887285cbede9a700dd71fe08a7558195ced09727be2a811b6e3b7d1d9d82cd89785ad0909e4ef4d155bec83d14c645e0adb01016f22e50bbafcae08b131816ec8591ec523a011b682343534f55c285769d2a710bf5dc58afb3817e2374c8551fc4fc5f50d90e4a892f0d929a9873b4ef7503a199545293ff3f6201c23700c76882a5a8686a2a5e9884697e65eb88afba61199eb0831f5ff42b3b8ae08386ce8f430b408caf85296e2d9bd58bbdf90d62b15483aaa1c1cd10edfd18a0e94ecd978d82fd3614d184e038a1d28fb446f07d51a8fcf17bd089fb1087f3306611e96c105f136d9150ebdb78c7563c72db8279da68ca06e6faf19458cf8e2755840f182175a3c4f2d4315609595ba07d17d74a0cdc8114b2c902298ac480a314119769b2a1e45d4427454890bff8bd62402ade136de13bc55b575f03589c1341379fd0a4742ca63bc56c5764436d71d6bdcbe238435bb6917c55814ca87787b68c93c58258d48608d242360e073ad99381548e32d486bd93d55c6a492405371eee239b710fdb38180c78cc392e2671ad30ad3298bcc93c4c57a35ecf19612c0a4c4995a46864966f9bde26049ce1a4c3ada198bce3cf98fd8050eb853b720986436f63fb3a79a881ff754470839a444d65d2c273f47d5e7ccd1590c6e0f576421c66ff3725a10bc00ea058a115b3df4b6c76d9cf6475516b60958146877ec8e611a19f3179c462b47e4359a1cb63ff00e8df1edc1c6929614eca67e8908ff6db03a4a3b844a2f2193032054077b6e918de3986a0e140843f0ae3c53f2de9866712aca53b8a0e54b21a9df4b10f9e2e252980c89cfe809ad3269ba2b109eaa60fee577de3c5eb8240c909b15bd32f36538b7d775c7dbfa5ef198715ea91efaa0965369c0a467d7a79ded909b6e729ac15002fea3b36e9445dc14ebb51aed6784e5bcf2b062acd2b0011f009344615bb6ecd62dd01a0600b10d21e4353cc66f27a40af73b0433c198c07ccd5cdc1510043648f3c79e90905d76755105ecb9c4e313dea8eae0ad8ff61f324c51d6328f246ba2819fc60f8bc7449e3d2a2c362144659e0b5c1e716e40e5a09723e94acc45e0ebe89ff2bae82966cfe36219efef05bfdb8ca98ec45ab35634b1956f19f8f8b376a9a450a5a3c496ee59465d4e89dbaec3d34004a6910c76b1af295432ab9df850fa3a2b153612bc1c6e2d4efd4cd38b029ae24fa054c48193ef0557ac25237ba62268a66136d7b903954d8c58f46da5902b89e948a06eb31ae8f802c00e078a03f8019e2efe82ee130d1a6ede299029925bb80f8e333ad1a68e302e49bcd578d3cfff8e529a71f83739aa85596c2df9123fd44f7be2e0008cf1d7e4e9fad1abdf4e135ed97afec30af021716433bc803897081753e105c904c5b7d01a43330768d57aea547a24d1257a605eec05a3fc18d5184fd8e69f30245a8d09f0b68568724589c8385370e3588428d614d832426f572f018a7efe9e960580f13ebca2c94e09d375c894acafc70a4abfbee4c94f11af19ba2a0ba5b2808f7fb1062a3938d3e508b3622c0e7f338743bac698aeb0db961859a4d871c8fb33078fe1a775308eb2dc0aa42fdbf9a7652325023c15d84499f5a967bbb1107deb602d40f4a4422e07f1d34b6441dafc8bcfb4b327421c9aa6d7394a25471c474f75817d1fb167df31f5780191958137f32915f7ab2aff254ca03c44b1570236d97edb31e98b4d4ff1235d39a656e11cf7504d52422a586388c1ecf460634de7a29507677b83b5913bfe779b9d805c933131ea4fcae68c7e0a825a6eec6b84746a254c8614637b6137004adfae2e392d5c21c2bb9f5d2468ed5573b5c7371e08e234988d307edf4e4cb803ab25111e68eef7676eb74ae2c8e7fa4e991998e9c6264c8451267146957a44a51244aae9bf250c28a1a960365edc68e56394206e165af1cfdb04be930d46348bc9171db75e4a1d0f4b72f82f92ec20fbc420a09023762e2201d5648cfa28a097f50bc1c2773c5b3f245b861836e00ca0489c09484d6df6b7a29ff6becec2ddc23e1d2235bf73153b9cb04c3fb239f19cff588521c71b0751086b6fed2b4d9808bd668eb4a791da5750bc3c55afba4e99f74a75d667adef5d1bffbf5e943653ce8e092c89600499a2b24d40910c547ad0991b28e2de13f7366a88afdc779c8d48f9817b143220a3c17023a74817087d807226a554bb2a1d82d8dad42d93069bc979a9b02b8011553728bdad352b4b2b87a80a835c14d92ad100a5f4bebdfe5c8542f9bdcb7dc6a63a819f68b59026af26786943200022b32df746a789b2e34aab6b770dd7e18b4b601e7bbce1ae6428e810a5aaef218ceee085dc8e02b3d4c805e139ce1ff1600d36584b1cace51d39ab672350f287754f5e2acbaee032a38399313517494140cac5099b064ec03df0830e12badc9a1d1eaa47ef5e000025e2311356105b354a32b5ec82c1c1389547be26981bb882b0a84b40e2d40b0ca0421ff32ff34e9fa3162768efc82216fa95b58a584ca0c87503d12ea91230d72364b08b91160fc90c56486125190a41da47681a13d21c78449a4a47dcd25289c3ef979d3d748f7ca3740bb1efb4c9f48cef36560002ff13d525fafa1d7cfc9de3b6f875efe8bbbb09dffd0aa095dd03bf8b44752987a99f46ef15d16ae8d14424513a23a44fcf265b1c7eb3f02a91ef7758254776bede9d13b74cc5b27822c2d85c9742ee014bd7c4cc652cc39f599b4cfd57a24603a10705dc0ec8dadf5788a0263d2f5506168300ff75eebced75ff9c6050504b588af3d28601bc537d14d228f32f2f8907f05d5fe81caf5fb3508165b1f21e22d1c9baacd58f99741ab464b708331978281fd686fdf8ffa778811d894ad5769af77c2f8f7aea9bf800ad749a56f0449a628b830ed2956e586b79bb2d5c66f33b002c1f073602cfc2b6c78927ef28a5dc7b41db6f555aab049562ca52d5342679b64230170e3d7a5695d9a171da513f3faecbf0877cb9b3ffcfa75112581c3357b0869119973bbb3af17a6337f98d4c3b0abf78933017c32101bdafa3b7e2eca1bdeba7f72c088790069ea8e160610be02c328ca2036f55eeb691f7b8407fabe787b43b643424873fb0e4e900a8a38674983d7387932f236f8f21cd5c05f774d31d40b0a998bb3af8e3e2f3c239eef70f5075c1607663870dadb13feebc3609612d5001c17c2712a55445e03736672fd47c03616ac20aa69e275dfdcaf2cacd6d97f348c7a090991d5a211233aa97768c427283e77ff1aed3a209b3d1ae9b8d16eb6ad8178379b04a0813c90a539c49d031d4cc3c17215dca70402afc7d540447d1a9d95ba3c913b620f6058ef41c49bb03a09acd6020e7215659b4a7728e6ff320b2339c115ec14c54b66efa840860048b956f18c7b826429c44063739c1449057262d37372ab4c69c06f8dc10e6cd6c56fd4a04529b393a07f99e045f7ebefd260fa4b5bdb26d7b768278f3d64a5854f173b42c9e1f506dc2e4ac4bc193869a6aab9e3f46d153b38e275d99b0069a1c60683700c6e060f1098881559013b90860d99cc217381f64869a96d5ed3ea31eb6ee0393636e895c43acac5330ffdfe98eac2355f9116ad34a4f1589632df343630aff95b89cf9cc3b304fadab3e570959f2f2dd69ba741c66d14b22f7b09cd162fcb2b576b917c5ffbc113728c834cc367792d8b0f46e9f0ea511ae15c0276cd9d3a046476fd348831b32490e703f09843b6fa0d97bed6b423dd9d0013b3e8d6facb2bfc1969743120787368db28f691d08bea9a6134094f83d5cdcde13a7b1ddfc54e9a80a81608849006714bc01537d4b4c87f1ebd5c8f5d2c3d9059bab6a969f9b1c237b50750e040a106e148d8933efcb13dcf3cf4d04244a7f8090d4dd10437ec94ce90dcced681d52d3de1c404d0459bdaa073c07017e14e27725a288a3ac1551e65098e5805d30d095302e3b3261ec5cdb867c10acbda427309943d6974975cb8b8dc827188491d3fc1228f32e1de24d47a41a364a710f1cd299b89998c89c70a40316f6802ac4d42e2962af0f0fddd5fac7af5bdaa843566b027bdc166fd851e3339e34e85d9d37265d6be2d7542d0d7e02e648ac8262db0acc5c698644e4a90de4208f9a2bffbbfa07759f3228fadfc9155d206dc6104f85defabf73ff593375a63281a336e3691cf3003c55683033a0ae1fcc16517e69560bf6d48063a66992318dc0ad8b444e62aa9cdda15a3a47b96bab65e68c29c3ceb517a8a3b025d0cd4577c4341a7a242fc0c34c99786a94940294c89d2ec8d03363afe18a8dd1a8c9f56f8b0dbbfee9ab4bb2f3681e084fbe733281f511e8ad73e0261f981686bc0982d804ee3a197d9998bc250f123ce43a451547969e1ea7413c5daa1d03b2291dd88847b199150ba814524ed524462aa8948aad215b46af4b3daa8e9fb29b662c31b9d467c13e76841ae02ec6b74d02492a07e04bdca11fa0a316e806b4aa94bf35c1a91635d051459b406dc5695fa9ba4514e06a5860f868fb4aa39d2ae233a7b08d5327c25388d21675c8ad706c7fba6ede68f7487bbafa368aa80c6355445316627a5363a991929bc8a6ae7a0a5772cf638718da8edb1ddc532929111b87f78554370db6709bf349d75ac362454f0e93ad3b68056cec488dcb765183bc398816558c7d8287c83f4c3701e31dba061a381a9cac1b62d083b5cb4beedc8952604ed22dc832b2c742f21acf8e897e2c4168db0263be18171b925a69be895ae800dde00f4e89eda652548e7147f3548d3f163f2db359b8459f6a41711b8ea7aa5c5d6ffa0c37f4b322a552280fe506cd77dc23629a2367a22cb627f62da096a4deb9ee889612fdc8d3112522fc008160156013e218c4feb0908c1e59153cab62cb76dcd6ff2ca3dbf7a46a161805e565b02f422a6c01a65f3c0e5355e1bd15628a9cb2e49ba85ce1a3d276e9699d32c629c11a47b018ec1c20c6f219a10f1a29176d0a7c35c1f1452e1d92b3224255a3b1c747151e92d924368fe8d1c2a7ead077d6dec49dbd753643baafaf44323195b21fdc4616b3bb6c405c9e147bdbb220f699c465154e45834263b638ce9ca96d1360173f5e62577359805b2117e1be9cb3551cbbdc77952c114f7f8ce50beccbc3718a2fd1cf22f56439b5cd6e230a2ec14246f1baff70e706a692153908c3445e2cedbfb9aa6cd88fc016ec1019384f010b84d3bacb94bc11c73c254fc3ed03df26007a7e388c7aed449576faa350495c5ac960ac71a243512c2ec402100fa420c988b7208146c6f8bc1d8d2d1a2d0ea2dc39f03a2948af8faa57c033c9a708328a1c14e829e450cc2bf2107a7741e1ae1e230fd059747631511a80318e20ed2f00817751c10fddd564b44ec427cd32d69c39edbbfbfd00f2265e9ba3597e10ded24db45cc8c792414bca75f7502c3ec7e25101ca2b71057b94152a98d87c7aa9422b68d9d494cb928d82aa327304fe141502b4379308886981fee5d3dee26990fab7514c74990101229706b9ab3091b6dfaa7e1078e0791f20f66ca776b7bc85b240932302ba28b498fb44b2079e85818773cc34fbed01edd6253f4d2f51f63fa3e12f7116dd385f8c45bbea54e1dc45e7dd27e7f3ccd5156f70b35530c4725b1d1f4b9dbd8a1d8f75519840f650cb86656adc4303bb3215db5da72baf396078dab98e6ab30fbb6e9d013e1d9bd25a183ae871027faaa07f9c286ba817d42427fe602805af9d875525d580978387acb918e85dd1baac919a6d9b4754bba448953aa85557991688a12908ee016d8c0cd210345d82d04bfc372af79f733402dbf7acb01d8e33d10968369ff455e593e16b511dbc1c53ac59d1c9f85195c5392d1b68b3c9d9aa6e15e82a7e8510601ce13673d584701ec00d2737e705160d6111421b9ae74efbcf65272a9783a674f0d680fc0afa052f752f14eb8ab7d17c2fd832781cb7984f83fe83c86965fd08a11dddc206b1ae1a2fa048fa337e2ebb294add5203690f104530ac104f718dcb9e787acec180731f00a58d1d2cbfeb2f3e20c052fd4f31884d5d610ae8fe669d24c889ecc6a65aafbe5719260ce1d4551d971dc01f01207e0e8579034450d3cfd51695bb87e165f5890511b21aaa7d05c2f812ba046bb30a6a2f96b69c5b8cb0038685a176d76731024c6372da45f25a925cb01279a37568c7d0d93a7b665657ce02d54f2de22d8f041ceb4a4f999cd51c66e2b2164f6cb9f9eb0b7ca53fa1bc6131c6fdbf6a2c3a3be7aa56f133b4b559e16b8e05795fbb0fc3cb767ddba55be35390d06c8d8eaa80c35b01f9b6c0be8eb543d26797c2a732ea17b43492a73a97973ae55855a9e6c03ceb45f7612d23f1f6a11b340868a7b2542bb11f9728ba510b6c9a0186e7def7f9f5e22e92237860676cecee70c1ebc691b0fe35441277e2a55c0979fac11d0236e28f008732248aca11b6f90851d684ac63d5c76d45fe2362a89b882ba8eb92b88bc4b225ee52f2ea98ebbbeefbee9bd7a81f80554a520dc86d313e4bd180765ca2082343e379752e6a90f8666e8e30dfcbef92cab637618fd52382c4a9a80a51bd3121edcfd03897fcbd8bf2447d59117556c8733079f32b00c68a4de75be94466985a9e635e41ba17c3ecd00500de54b56ea7d847370dd77186c3ca215e8929893881a0e7146fd5915ea58bff6919519950115c0069bdf4a79cbf78ccccf3624a12311b576a04ecc75b6e723aa0a03666cc87415f1c222c273c1bbb2df65b89075d9e5825bed6bd92aae305e5e1fd3b275f17537fd731c1d71e49df6ef2927261fdcb3bf3488d1c32f6c19518d7f0cfff57c2e593662efa06fd657bc9e36f216ec5c6016b3bd065c5e550eff6d926dd724b082dfc260a6148a991af80702ed8b108880120c5e8235111bab94bdcd85a8c392ce93bd9302f0432c4ecdacd1d81edff764b3210cecbdc97911dc006b66cfe20c9d2b348232c344c629df97b6b476503d1bd418659fa0925372ac403e2e940cff7893fc947a36f3d65ad0175e29f5b22669238b63cfb8ec6dc60a9281cd671014b55e27a3a31835b7f25e11fb87a7c00055193be2228034a6d2428c2367cdc0c50b53042490fcebc590ac4f734d40743330f6ba1b5e0e5c4ca82b5d0963c8b98d603e0d3b04b0c019d438a88a115158ac5a8fa3132e8449101d09d36915e71dee3b6f1ef45e8c2630c2a984e882217fec61abb15e775efe1cac599d14d8325be78858afa7dc3a3c77fd1375e024e1f8e668d20deb735aa4ec7fba57de29a6e5144c41b4aec231f9587271771634ef799e0e2b5c835922e7f0b68105cb9d0dac106b4950ca1d04314732ef148dd76524b91475122d033e44590993be24c4a119459a59b09591e004cd2c46002281207fb80fb794073e50cf5284272ac8f395eb714ae9e10af52c4578a2823c5fb91ea7941eae088e338a63aecde894befe9ed23edbae9beda29f071e16203022102717069b2679e2b6d2f6fb892a1c95ab76b98f84fa6adb699a853c9f2e7a6ab8bd597634a1c9c8b2c60c63adb61777fa4ad3eba4ebbc5988f345b8d1ed2b4da76df6396cc1f3e4c40493ecd453dae6aa2298084c3b56e1a9b9fe2763dd80124b785af914c0aa34b21849f3904b6e5a87575cb3aa3abb74b874554e0b0c0c13b50a39b93ce980b2e7fbbd1385eb8f3055bb6bbab9a66aa47f7e70fc3a5070f14b9d0a8b6902ad2747c35e8d1b4e507757b0da8a81819d32cacb47c47b45da6549661a4e540364d51f94e3b7425970a1db1d93624d0c8f6e58642bc704a574d60ed3b1b203fb572112af3aea1975a599eecb18f0ae219177ab93204d786509bf22d201d2b07907bc1009ce93ef96b64f15c1d2ac696199176a7ab8a80a3d4acc15f62f9e766ee73bc005de85c5406ff96a6f09f1cc24b6618b04e8af2cf05cca4b5c5b0c2ce94afd42ac0db9366acc279995dbf8d907bbd18952afb89b0b99060a1eb469b707afa04a89dc5231a45544045c67e7ef472660420eee83c876e7ea20d7e32b8a70a36de60216cb665e9e4b29dc3473988a476e71375c1b84d9bd5f4290718f1dfa02ab14b19e4880a26fd2e75ee5291386ea578602ec595ab04d8b408237b3572f1abbfc7ca7b875d63bff1dd11f536797be927efb951fe1e6976e2f484bd0619c1c3244edbe8f4000be2cd9c053e5b2e848d2fb8affe194c44d35e1b78ec1b20a887bcb242cd56a018ea6e30267ad713cfb7779e8eab8ee4392829232fe51e8ff433c7d2f4bf2c428dca5bad7defe08d6344e39b5057dfd76bb4450e6bb5a01b49a526842e7521fc89d14c5e58b5b7c060220dab8476c6cbbf8a55b57594e7f7d8d13546adbe2b0aca99f63ab240786d1526910b02442102297237e0824ce1736c1a115324aeac869c879b97a9a81d7ada3a8ef9c88c8ed32b7835ddf135faa9a8d3cb0a0b3ab5b1b7626584c0c4f69acdb18b3bbca9ee82b3b5c4ffc64aebd63b2dec4ebcf54cbe8cae374b980fa1235137d61a25cc18c54de41a04886050ee1cf15d9817512285e701982626e23ab8bcfbe0572dbf684e8305820c6183dd19f38cce4c4cb52def5cc1d4ae68392eb6643088140789e98f8326c50587d26efc4e94bb06f09f5f8f1e68ce0272a2883f8e005a151993385cce159d1bc38cbe90174085901f464346a5bbef878d0f192cbb609f8791eaea79507fa790981a55644fbb3bab79d666b07cf9b065ddc92f902d6cf0ec8b1ce26712b80155460979628288f3fac07c9d4ae9f7febf3cf794c81141002ffab283d1f3c7af845a070083eaed9ad190a781f93c91cfaa3f062aae3f6428ada1577c9f293b1480e28a2d79d0760ad98161806eb35863f6c462579bdf5aef5e55d78848bd8f42394bcb43c1e0a9e8bc61d89a4a21f5ea89035262c1be36697f22ea4efc4830d9a6829c06e21f5164e1561ed6ae46ab20ae46c0215ed4fc8f189d022eaf616927270049bd228d2e3fb469b9c9bbe83f84238ec72dca1dbe4aa1981a147faaad37c049d5302b5ebe3a9c4b15d00c71e21e1b8f5c5e3697046cbf91dfae1eab63163bc005d9b733f2e3c5b01a8cff0602178925b77f40c8ce797e3d720b01b47653fe45751d0b4cd086a09d705f1421d3de13564d13853d8197c4ee428fda0fd7a4bf31ebe7a195845754ccba02f455a528520a68e3e2a3a1ed6eeb101fad9c35efbb171b675cdf11f3713f4326154f9a09df82393e79f1e2d52c55f45830b761e6962643ed88ca706e5fb298e81ae53793aa0a0aff81c4ed79c01337c9cb8c0aa9cab78b906357ec3d94920c9ef29ed4ccc6ae2e70514e1bfa11a1e2bb7108337b886277c09810a7adccb8b7db577dd2416a317a73b6faa4c8f62c301b7201eb0c581c2d291b6594fdd2508e16488a2d92cba01cd6ecac5ccac4731085b8ad5d34a9ec51fa3fe47ae1de5f6f891dfbb1ee1e47128e2678a045e0f545ca60d2afb7825041657ae2028bf7c63d42fb8766639df23ffd5f6007fc11e6f5b97ae0e18c87649fa6e11484c33f3bda29451ade3cfb17db0388fefafb35a088c29b34b58b5beea7810a6954ac36ed4df7521a331e1cd9a54a615944880d876243063757cd99b2439e2016f88f2280db8aa6d15c26c8c17d00efe7f95bb5f2b1abb53484281fcebfa66e538aeda333c986dbc881526083d19020c43d33bf76f2017a081e7b0ee755d7e461a3f3cd486f192057cd9f14f0aebacd70b0e3a7cb6dc646f9a4fa9501d46561151ae77ed12a7608bb5819c2c367c1efb28ca5862005aff98d359d7293f3ceb287446f561f276a3e24ec33b58ee34be632b83ba76b0213398b274d0837c4041da70c000289116e7fa0faf79ba80ccefb73078321709bf7f443f317b8760c0030be280c15ca016833da2e0faa644cdeea7e1d1d3c4a53453bf8e13b6ec2cf5cbde7c9ec06832806f68a1aa0809fa4122de1db0f9eb5a3980f18bade679c01d3f0fc49c47040841dd7353bc6162fac01a8169b621d3d144c72ec7b52fca74733612f9796599a7d14e0beb5c6e303cdf49810ad53a033562b54db24d0bbdb7c888ace8e5d0063b86d5ccf4aa0752cb350f55fd55d86566ba48acf084af7b761d9bca75d5462730c4b92846dbd12c0954f7939c86070ef1f03b7ad94a8dbedba15fd0f3501473d90328b13e6c17bee9bc7bcb006648e4284d1df14647a294106a5d5704e74207f7574751af2c6a4be43aac49f4c8fff2af1847afbb2e1d868cde5b58f55170b0ac65a1ea5f1363c8aaf8702b8d6b2dc8c24e521f90d545f81c7610571ab55ecd0238b760f7dfcc3606ef921d17491f953e6a53e4f421e102d3c59f60f6018c12efc01f1487e30b7d8c165da7c04735cf57323dc047e4b033f4f02a5548b9d6087870024494c4c1d1acead38c49eacab8f322bfda1d71a5bce439708078a1726e5883f252c0df4283c276148af02f2c87052116a51829be7858fce60a274d393203b44da957c56a70a339691b8fa8f98f71521cd24c1a67ccb963ea3e7dd442a6d21033e8f4b94a3913b27e48d5ac8ddc50dcd874407ef79c0efcbe230791c200502cf4ef183217743c0d920903383a83d0b3b69fbbe4880c99ab24644ba27f25b1f5c5360ccb6863768f6025b5a72aa7ed069f300e82d98d4d3231742686173007168239a73f71b03204db86c64db72e795b20ab0cf55e39400476ecf44656b354a0d90dca86256e72c90d04fcb911e40091c0d9e64cc1a31fc3ea4a9202e3d8519fe66d3b3583cc86276562b543cb1c492b60e6ece3848764cccd31607d4ef6bcaa2e6d1703c8e9fa8a41bd124a41c74160f8238a39eabbb6556496bb5c99b99166afc600386d86c5e201a803810469717881f21cbf8df69212e38d19ffd4f0c80c8c6fc8402620df9465754727c40b8914dce2b084d56c1cb876e03416dbcf22135b45fd72239145b0ab9975d0597f91667e8b433b2b9b6e935586641beb3208fa87f5d055813753e0abc199a714b64f1620c14b375e73f5d6b3c7ec89fdc51f56483ae709f4673c36c9f87d096312378846ad21e69835d42d17b64711155f789fccd3e343360c3e2cdbcafecd3cd14b97aef44430f6aeb87f40877fefc1ad130c1464e829615e5d56f9a95d9438a87cb0ea34bc335504b461113892854d5a65476410844c3994667d33a70badfcb8edaa0be13ec51afaabca2337494202f9e21f20a4f5636f04067522b94a5c54bbd5dbd980045646f90ec8c175e739e6f1df026d25afbee3c9c9cb6b45fec37d9a921765557930cb9c27402e5586dedbb06729d77f2f2fde7cec865e7587387f136ce1a008e1dc7f07bde46fe50c8daa801f8304a837ed3f2395e65f69aecd099b69a94035c107339445c204881f9bfb1452e15e520ac7768e72ccd863b6eb6a2490042e9068e1cdd3993bb284712c17723df135b8d8baa771aa40e1daf73722c2c5f647aa66cb582641b2654a1ce39a0f61bfaef7a3ab0df00f7844c4145feacecbbdafc957d601e4b5a90fc02b13b11c84f33a58eeb4f41c117ea34c2f9292875cf222f1424fd588b9bd3b2a42cb2009e803ef83f2af655260b26532c30780da043d54929f77db22484d1bbe3c8e0691c80eae2cd5bfcb19cad10642aefdf773e9d6c2e84bc2d4cc5b94f64ee06f768c1f1b343041bb2fdd351b7d6af84099ea3954cdcf1e14ab602e77ecef1abc0936ebbc560331ca5e73c9093ae6f11ce920a307d1831918d004ec06d2be4ab440ed63813fb72778d360723c34f720a5f255ece165dce9c646aacfcc97fa5c80922af4edb005a442debee0598b20d8af676c792b5d5356be916bae873721af08da579935b2e57c49fc8b841976933ef2b7e3e7b05f3a3ea803440d87aa93e11856f6bf495c6337f02541898128aab08ef3a787369d07684a30a29de5d70eca54dd1472a946d43c2c1cca52d70362fd08bbea7da6b20a949e46b3a4e203da6c80a764c4d663ae0f7b99ad93b1f6d1b3327e789ae15e477ac77e565792f08b99f372a874355ce60cbcf1ce2a02385ac2e12059140ba2d9c91ef19d6276b681be432845ab5554bdaa37c85f0db21bda599122e59a411483edcc9c0236f80d9ed427bec355181e855e360a91e5d55460a5e2310de843f593f2eb62a8ae92ab70741632e85edc31545802f4ecbef8c5e8c3017f7ec0bbc2d2dbc60a17f8810c40d027797d603a960be36f6840c3ddf23f831dac6123f1ca4308ec542946f3434360728bc0ab948adfacf024c9e9611956a2e93fe08ebc8d8085ec0addc4c214b079801bd0c62840a241e815970aa23eec4c5f4db9ad865ba79940718f00d47334c95ae54d7662ae6061fd66715bc19f0d9e7fb2432d332e180545ba84c4741e1c3819110eb355d1e08cf944b3a932850db6b3287cedf3ebeb38e0b265468de0fac964606222b4dff32ff17de25667d44bdfd32722f6897200946cf398e4e5d9208828b1822328ebb1d566c446995cb51917a49c96fed28a099a7b801f5e17b5e0d66222886dbc2223361d435c0c1a33cdf9c1b0c6825639d97a8c2dd9ecaaf777dfa67fcec6e523de4ad6e891fb0121a6ab02591af0fb4555798cef60fb43421eeddf83e2b98ebe674f8a37760e08e7c3306c029c10c42a7415c7f000addbd3ef58e68180ab836b6838085b9750440d5c3e2317e8d4d36a470e909828c70aba8bb35126488fe96d64161b26c42337e748a50b7ba01b7ddc23887e6bfac988698e16edaad82059455e7a63b7b92cf4d3b874ba5d6ba4ae4241249514807f8935180e5cc18fda6a9507c3fa3dfe834818e86835798e5bfe5bd8585b79857b715b969c7014b8d77427d1e82fe428e1165a6ecd3c3ff26ddea422bfaf900ea70dcf26d940a70ab814d30e4d1784eb82b921b1c5e8c8b285c76a5aa98c903192b6778c606f477ef76e3c8089b69fb20865fa0f8aa4edbd2082d9c43c4967e8d13fb13d0d7f7930832896a52a25e12474fe6da2ce3ba1a77d119306630a234a09de399a03dcc2b96566585fca13d513a73097e9ac016e3f93dfd12f374f709813fc21368db47bb9fa650d2676ab32ce8460210e8e02539022b33920e00adff5c36a826a2a6727a785e694eb31aa4a5a97cf10182d2cd09793cd63ef7b3a2ddcafdc6630f60fa39438a0af639e643a4b353da2f0cc07a48999296820b1fd7957eaa91eed554e7e04778e008c0ad6821ed2cd14c41ded73015a185ea326cf8121e7ef30b49c050abb58540f4cb6e4d9a50c6d0f8c4849d6b00c06de3ddb285b979b9d8c45abbed13ac1dc719ed37781041895d8bcd509d2a5c8e3a2e323c50faaa9773680de97a9381e82d9ce0854c28aa957abd637bda8040604cc5560e0433dd2ceb0edd46ab24515673eaed54d3cc94e420bbe87fd2eb3b7161e366753b1dae3c8d0de53edf739b4637f5cb7dbb97831d57ef68613c77ab0e1394f3f41911f0e2bd487e1f71e10fa81e54cd51e718f2536a87255eee525f41d617b7a9109541fcf53c1fe378e5f1db212c71f0080f98db636906fe9b4a461578f240c98f817c863f359e24d27ed2b1dfee52d01253c9a960471c778c382b32efb876970ab67b5851f4f21e629504f04905db32a914cdf7eb24cc222633b2f96023105d23729a82764d37f69e40930ba5424129dad21984bfd1fc487389d81204af0bb4114f7af0d00446d1f95716c4da77616e75cea8ad986b4c127f99a111f08aa9b6f4306ca21cfbd4e4c41c3f00415ed4620473b39fbce88dc8744b63a4fe291875ac469a4722ada8070d99d61c5a5d3a25c312932d7c9ca3f8680ac6e0534381209b591b35d830aa11562d5dc515628202fad690133813a967fca3af1f6b2c575dd55421d0922fafbb75f5f5aa20fd58b3422b6cfaceb2f1a857e36c92ce94441f30f9602bcd509385a34262d025eae4133765fab97b5a31dd638e6e17a814bdfca8fc48e2a8c4f1f321ba8149886e0066cc6a399c3963da8b77974f52a805a90f2ef6d1ddde973cb697ab62729576a7e6ed8685873c18bcf8b09f47693f685b3fb9378dab4971aed628f056c7d866fba2c896f29770f5852280633f04d658892ae4ae2108abd88964f748dd83f0cea3a181132437e391dd6937b8deb86567a34287bb94db3bf591ce6fbda565550b6fdb19f7ccca2d347cd0451edd29692894738fc8bfe2d57be98393b70ad4c4324271cd47676078cbdda3d9bc513b8153d976b595a6ff826b06aed1f63dbb8e9ffbc1db7034878da299238ab02825b4bbcdc32baa8cae4dc31bfb94f0d8948cfb67a9f1636848037bad35bc9642e163dc0bfe42392670bea873fafafbde2b781fc3650fe10228c567e53a8be93ca873d1270832e7bcaba9da097616500c87740ef6446a43184edacca29005a6d425f1fe3ea229a92ab151a89681f25cb74493232ef613fa63550d58e431e0a728fbf5b158c51cbfd5ef5a8cb38385e65587fbbaf50a8ad07a953d7a8a852f1bd94a43f964886f809228b929a8c99f9ef7d987864c78f2a202eb134c1fd96551c80d5096b538debde236706292c1dc52086f4f418a01c4207f94af5515e9d61a28a645f795515682f1dee6f85c74b6b030229d230441786ee9fcdaf48633ba495446e4a219fef183b205acdc6528b847148233a3a681fb005a432b4ade75e054b7842da8d2473380b22838bb7b646e1ea5a3c364079f909f4635443ac49bc1b388a2653fc065ba8c8e434112a5d9635e102bdc8a48ce9a36906f7e0b576bd57e8a590f70853a869e704129d6a93160e8a932a9a9f5d0b99f44af83c8eecb5ae7de922963f8741cd3bc4074b55299e11ec21312f02d328618c38c7017ff2c00142e30cc977914d85c55a0fa3a87129a85793d52ebc82fb255c311486cab6a9a0e8860f7c54a973a59858c45d4b575a02d62633f851d5bd856d5d6a8f8c7973bcfb55e508ed4c53a4dbd2834480ba3a69b29056ada93474eaa9438f072c8f8f2edb6dc9d21969255d966ddeace703b991b6b9b9e780179bf5331087349fb286e89ac3f0cf8ad6e1744bde904f1e1d6c7305aedc44c80e53202015351d594752cdd165158f784b17f59c31b923cb4dc98cc264e11c9a2c372a06a5c344991dedee1002468ac041923beb06d065b5b88a367b7082d759aea8f7a28f608ffe037db36dd4444444846c29f70ec00ef70e5a0e61100b4017bf61d08cc56325b9aa658595a4e3ba4e66564fb478c2201725ccccccf31b337f2b3df4834bd887588374796eba482942a198b73c442501ee4285380f69e30649082a094025c9244d2649a2d1b2c4016f0ce2217ac6632d255612cf085949dab3cb2043156e52d94bf38587be24e112c734c4c9027c11e2e408e02844903678481953ecf0698b35588620bd23a445f1418cc1cc28511c45874fdbe5517c106bbcfc07d2068f504f8b168f8c0af5b049be8515270fa1a0a01c65ce8982c2cc3fa1496419877a6e481973722c94ad0a35425a16265c62a172450a3000bfa19ea9028378cb41ca02d42629e32a74c659a40df5340a25a74dd286f5f37d2f33288b0cca02c425f9172a2d4a0e0c6983850d528684f1fbd98b9203e32d2c6b883164b42b345a969f18439e86412f49b815fd6a56185e62ad9401d08bd918f5b2d4600e5160c193fa684cc1a03762d1820a805e142aac7c004cf4462c4af476000882bea017e5c85412435dd06bf1dceb04569ea6fce3cb75aee6cac618318609542650cdd55c719c8763aee6cae31a4dbb6860a9ac13ab7ad53a77ee64f3284a9ffba5a201c79d702a1da7fdd8eedc6aaee66aae70a0bca3576b1a638cee4d7fc82caca7dde59e0970ec4db9567bcc95bd5050821409926302d59472ae52468248bb6259d5882b5cc1c7ce24569e4587850a46b558459e3720b1f2b2dcb0b04c8163599eb0f2d664699da9f58e5e13a86c772ec69309e2159685701c2c5f5362f9ce959d6fb9265035f7f558ef937696b712c27130c1bcc2cecb09642757e72ac6a8b747cad5a59c9bbd1d2976e5d1cb21845db90cdfa02b9f4762e530dcfcb1dc5c62b9da63aeecca5538157a6305e08a9413e6e4d2e22ebbda694de77614aeb3a2b542a545a14b4c7ae7fc59624ea093af5069af098ad81e13e846032690ed3e7f1a559a4bf8c4bdab97eaf266542a11e05cd952a3ac9f36c9959409f47219e6b873321020db019c492cbfc7b2116cb9dec94d0f4c207b72cea27702dd0964e7b5b6e412db1d0d8394a0fc584be53055342127093c969b4aecdd565658ebdbb96a85b5ea9df7605072265d62ce6d5b69f77e42bd474fab3d26906df142a5c89ef2c2304805207f56215cba7cee2ddd2fc7f1b9731dbd549ccc328eabb7a3f246480d97240684747dcbf52a72516e6af82489847ae2a900b2370cb29a0039294536cf747617c29debed9fca5944408e31c6ac9275702384ca9b596b387a53baca7d17d228994a39c7d11ed39be9983b5713f9900337dca4b27394663e5af68e68b1978a07bc6110fb8442b5268766e5d276548aefd19b59c9ce9d9cb773ddc54674b56f0901c2bd69f436a6d26e7dfe09b3c7b3bb4a33bf72edb34e1babd11cd2ae9ca3173b626fca7bf48f5df9a4d7c6aeacb03cbcf47030f5d13f369c35ccd7564e583bb7f8e4c7ed2fb7ea85b9aabca1f1c195c6e27ae7ad1dfdeed6b9abe2e85bf7e8ed9e72066c6f0758953b0bdf9a3bb892acf3fbdc2725591d255915070bb1f357738bb5cd7a16abd26cef4a7372ab47ffccadce7af29495931a5b54206df15fea84a9533b6bcc719c37a3d2dd6ad6ea65a275707576bd93ad29e4863feb9df246ded4a8acfc7a54b9e7499573ad844f27b7de4bf8f472aba21ce6db2d0b85a250abbb03e7dd3a79110b8342a585a1bd844b96754be5295ced4aa3f24ba55e1bafa334568e9556b1baaede1efde3bd7f728eabde4fde2bbf2caf5eb6deb777f4623cb63ba7bd5eed1dedf0c0bdeb7e724f3be91bc7d520d2f609ed4a63fd5af965fdb22cab6bdba3087bdde5a2fdaebb477174e7aea9dcee2ed7e81d626b117b53ded51efd63af5b4fb1545454e8ca5de81572c4a69c44af101e9bf2167a6b726cca85f069d664de0c4b25020c430b87a652ec4a4ca5c82e4513c225296f84842839611316274e37025979f9eb0921b6863b81dc230c8e5349397b333dfac75629bed7e458d6cd2ca77cd21efd8323bac1f277f66652fe51186c9a71db0acb3f1a0c96ebed91728e690a2da500e4e1216b4a5ce5c1252c4095cf4a01979e58a3dbbecbd4a59a12103c28d04df9d198aa42da24a3924b46fe7878f217e5c1550a340abd118b4da57fec4cb9949937939242b319fa0cd521fd933242ca619dcff503fd632910c383021a6d40bdc125eb87033df8741b0645d38f1564ad9f2ab4c0de905174ac3c4a146d0414124df2974a65c38892831205a3264a0e57161627aefe9410907a00b507c479723293c49e1b3ea19ed9635921558873ce4e060294dc099c3553de4c2a0405e0dd56a183382c4ef0c97a9f25f4d3a8901aec8d57d29dfb3af6a60cf5b4499e0bf5c4a0504f1852d2a61feac2844bd29b99df7e4869af5871c9fac9b292f5535a4013d0db98e504d7e547de582700b1b0f25c5649496432074d98c093ca6e93ea138037b1065f9e85888b9230884f99bd71110d9de9672712f052c919a58e025c92a5b0099f30c0e306bc6150e8f233685c2a2ec9a06dc5a1337f46a3c033f7c325c9844bf27a00b94b0f023185924349f332109326913d546b383dac7852d9b9f9002d75a9da242f55a827d47305f0a2e44c9fa984ce1f2e49216dca02bcd6cfcd280b8e4bb7641ab242492040503445964f9b380b10dc48048e44e00484855d5ec12569ad6c1390edb57eacbcac30a851590d5d9ee5868588951c879470497e76d14be27ba89292083d7b566be61fc0e9d2d328f012a42e3c6d92dcb9a04b95b58b0f977a1a357acf1c8938696f1814b2824bb226e192cc6a18d4263f8037d4930af5344af40c0cf558510d83b2d0b6b2dbd60730da1b06f54334a63e7ab3a5e44d18d4b2131406050505058541412d3b7c8ad1c6465daa169c16554b9196161d96a0961b161e969e30280c0a835870c220969bbe548d12b2ad423d28392c47587658745872c26b675e2abe54b24f20735cd379a9ae27ae22972a06e1f0e9867a84d43861e5a5eae1d3b57e42492ed5f5440d9bae2a645b05c5c99f5cf1496e58f0697e283916250a2e49ae28393744c9b1f2d60f9f6e186431e1d3ad7c18d4282161500cfa8e8d2e6c3ec4ba2c59833dcc7348a870c28a56b42ac705ebe2815565b87423f67b5dd72fecc6cc32f07ae5307a63ce2fe0c6b462150318dee0d302e67c886267bc7800ca58ef0c0dc31600f229d6f91bafd58c82d663bdc1a5799af88e4b53260a902fd318ed11632d904bf31acd2ceb378b31c658cb7afc1b25834dab5e1009e03cdbe873c9ad07fc3602c89774d2acd9baea9cccb2bb9acd809b16f30c1a2f5d60a83d8b28ec5aa513f472842ccdd557032c8bb368665937b8c4d7efbcd5595f56cd665b42601b99bf58638c21a30bb8f81cd24e96524a29e5e986a14b8c32b866f153320e17632ed8bffaeaae914bb2e3678df131c618638c578c57bcae8b69d775c96b0a2eea00234f14a8b037bb13c913b69ff1ec802a0c5db0900ce054b6698ba02304ad6cd35885e5241669b04d63182cc77ad8b14d6d58aef53087d902db340096b3a8b04d83b0dc6506dbb485e5b03df4c1365db15ca6b24d016039ad6b826d6a00cb6d1b123eac6c53c6b208c48d95b761c92fe056a28ca539e7b4aa8c1c1bb3667cc792fc9d71d66b5e31d62ba38c755e96bcee2cc5f838b1ad053b5600cab11109112760d8680538606157b70b4be0c39e158f121b231851e08c88f2d1a6884222741a204b14d9d689b1e06780200d4d64afec91476c8f54c9245c928f0297a2bdb7dfc19fc00efd86768a7eb3af4a1fb0ca9e4c14025bf6b4f479c247af7474c0b05386233c5d65cfac52258bccac810897a2ec643ff4ed37f4792e344334a18397e12db48542a17ab7cf73db0431300f6ee06518ec9c9b519193c327520ebe1ee881954a3c1da33558aed637198057f660d742c7bed1dbd92df226a700c22899c4079ff8b2f30184abecf101fbb35ed9e3834b40b8b423fa653eb388fae01257c9dc134da283e74454ee50a923a7e092943ae045602502b4cd42c4005ea92375f82477a6e0937779298500862ebf9e683fdaa966a2986206d3b42180d8a3dd817d017c6aaeb3c70cab53da9ec1a746c92986903a3000afecd151e2e3e74812ec953a1cd828a9856892074356062b2fd760e51b155320085ad91363c8cb238d923d3a8df231a930868e0af066ef29f8c0b2d4993a3ddc63a5d419226db06671a20a26d6858d489870c4ba200028492c2e6f207366d3ea05ada6c9ec59735504d36e92979876ab34fd58077b59e503cc321aad9164f7d1ef6b34d6ee691e3180976fea51a17f97decccbb9ab69e798bed3b28e59d6a38bd9cbbfac6a3bbebf9ce9edce7c7b74b6056730e7c7cb740b4af33dda8e7e1e25e1f09eddcb3a693b98473eb5e8aebd6419f7829a2deacd2ccc234cc5c1d69bf4305d46efcbbfcb6cf4a6393bf7728fbebca3327d0ea6d27caf5fa579f9774ebbf7ac7b566f7c7ca7a3bbf68cc69a3d46d4bc75ae37adc688026df42e0ac62c9a3493566f76987b952fd330b40710fbf2f670dc76b547675f2e3d1c2fff48395e5e7ebfbff0f74af35d0b69d8a787e3ab34f12eae559a787a2ed22cd2c8d4cb645246f62965648f3146563d23b25f1b4bb598551aa50ced51cab83531c690ccd66b1ebd3eacf7691a774ea334dcbdafd1a6b1c66fad69d47becb84cd338ed1cf775357289cb1ec483b80c5f9e0e695d68d6a30732ad8b6bf4da58172eaebd85f6cfc5633c8cf64f7b8befda6f66613c3be6e96871ede5318ff5be785665f8f1fccc9b727b1fb45946ea2a8ead46bef66c7b1067c08b03f85dbb3b94b433f5ee3d9ee9f561b54ae2aebd9f3d5212f7ed1145e22a0e1fd787d57eb79bfae532ecd5ee0e60ac4066e9d1dbf1f2ae342fe72a0dcce36518c8e467300fe29697c3c5e3a78703a646181548db16cf1eeb8da9f3c5f7ecbbd6e2bbf6697c597ae7cd00205b80f77edcb4af5e2674709d5bbdd981b4d52ebd99ecc68dd3af69f50269abd11b321d0650e37e2471b3db237dd7fd05df34cc638bbf1ce6914b9ff716f42d283f7667989f4b2fdb65b8c5cbe38be9e5e52feacdec0e981ab9f4f207b1559a9f7bbd4c7734caf0761a1fbdee1e19c556d7ddb7b7e0ee2d3617e7b8c7ae5eb6dd61de945e0c58e6cffbd5de07dafebc9797fa5593c9abddfd1e80c348bbb5a0ede160bb559a98c3c5392e468e7b086c2ed3ed4daf0fdbef288ead4a23e2bdcbb400ee711cc43f2e3e88b851697feae202a017091bc403402f066c1037d1ebc306b180522502040000ac20d2ba784ce48a089f6845397699e67ab09f06614b7a0b1a84edca3909d428d69140f20afe263af88df2ce4759673bcd769e824bd881b8849d77441408dbeb7d8bf67e1eebf0ce0d40eff1a2cbf0147c12d5206c45ff8e9d77382240d1271255207c84e7551a4f8757e58a4b18132e614fb90c079ddcdb8e79c7ce659b47a7e59fc0ed3a4580788aedd8b46088fb688fd161fed1203dbc7b87a139da7e1fd11ea3937e7897e91195f663fb72b623fa523710b974f28f4aeb427ab49e57890049a4969616d1a5159d65e5d1866125025c5951515149b9b429f54a8b526944df2e99589e0ed1b75be0f466640f97b04f6f467414f0a7f5fed13bedc779464804dcf06725129988ef2a786ade3b7b38b68bc04f23a41cd27e97f6bb472f0d10b6dbbd8fbe7933dbb9089f46c7ce50f029085befd839874fa2631fd12e0fa0f76847c73ceb55206c4567ef08d17fb4a8927248bb5dda4d54a58f54c225ec212a977009fb46e50f97b02bb158112e619d05145cd20278a5129d46491d1d1d8bc923d87b7a92685a76faaa14d9912351609e93ebc12e75e414d863f7ed9311d07d7bc608c0798afbf68e11c07dfbf466b699259290ef5a5373a34dd869d4d84b4020a664da84fd0704628a0f8198eace3da6b0ee9786c5da84bda340dd394c484c61efec809d6b8d5ecfa875e93d20a6244e9bb05b57e258ecec214144166913f64949db9bb47d9edfd501bc2ac9b32ac9ab2424ae4320a6ae2b2153d665ca7a5749db99b455d203f8f34ac8c62e53cdadb2d1850dcc10b6664881e32673cb7049de5022a1b0f21ce081922929e5251448f02956719a89620acea2922cc3d822a9e25369804f91c70949ac7c8c58c41f1411ebe6081d6c8e139664d885049f788e94c1ca2f804f976db6336b6872bdc00796026ce21104f0d280d13f9f785c50c96cab07fc20ecd995e87ed6951499e863157b4c9d4bd87f6c752ca851a47835d3a0d1286c25fb27006d4465d1140f6a2104839565b0f23193b1235f8663737623a74583c758490fb07e3d09ebd763ac495ccf6acd5549d86b2c0bb432ae191478b2112ec6dc6c05f609c02a8e68c1b604832c83cdec15c0b6e911a50da637ae3849b3b337b3040c78904c19adab4fba2e79844f51e84b208905a3a40c7e24123e45244820625bf2b4bcc2b6ecb12dadb0fd6b466923b2e4ef4262b5bad20097fa18edc1a5fe438b82d9bce2c0c5980bca297f1b2fe7ac20c5b23665fd6b55962cfdc04566663e3373eaa291cac8a5949c6c046e9b02ecb2597f08b1b356e14305505a966559fcbe6600de0864ad2a51ac9255fb874b2c638c098350660142a1032e072d050e079259560e07e0122e8637c6c658b271864dea829149ea66605c41b1fc5044c5ee196bc41ad7e5af5803bb3c16b978d2bab31acd40bc40b400ad00a5408cc19f740231c606a289f960d90e12b8a10c630dec7c9688a2412d5f34230231069f478c210169e273bc43fc821c221bb23ef0e041839599bc341e7b492246b0798eb3ebb0dce1ca04b3dc2c56494a43a6695c1a52c76a2c68bfba5f2c81e4c42a061aa55509d43fdb8c3f2caf731d8dddb5e368b9ed97732411248c8c7e6172d52815256dba7e5915aefcb2351927a54aa0305ba9b14d2d74bb8a04ba9e6534a654684c797275a3a451d7f988bdaee4baaaf49155f65c973a1876613addb30bf5b72bf17ddf424c64efce3e0a769671b78d22616f4da75124ac921eb06d5d99e87fe73eee4c7cdf2a097b4c6d8fa9eb1c2db5a94d5d052881ae5fd3aaa25fc1a5eb4c651c628c4b02c518d7b59c2f002d419a7df0d2fb611d046f55d2fc8918b18080803aa33cda749d63ae448878df4ea4eb44545aa63125815840f086b322f155d27cd6757bf624b6673fb9769b144d824bd72d8a0497aef709407987eb12884f9dc93e8027b017b3c05e2cf56636899d34c54a3ab77f5762fb479aa7a459490ff8be7225420fff7d65e5211a928c9027fdb06c432aff521e5292b5423f149594d0f7803e02ca1d942a75aef3c04eaa5949c1275260a3374342e23b0462eaab354692e8febd2674af7b2421911d023195d51a23273509eeda6bbc6f5aade9228f1a9c60273db192664fa4c06e5722f4ad32612409fe7726faa12bc1dc486ec769d4f62bccb0eb232aad886a398d8a299d1d7b69478868cfb87b27b2bdfbb428b8745daefadaae73d73b1adbe45d0f5d12a84dd7539ba6c3a5eb58d572b8745def2680f257cbb1d7251146a251fceb3c1ad51a8fcc6cf86ae9021763ee8c8f2fcea22ff482666dc2cef4c5f92f2a0fa617c5409b62aa8b5a2bad5cf7daa2c2d497ea526ff390ea95372d95a5ded813d6cb3f2bf5c61f959a5251ea49bdec33aa335432e5b50f48230d519bd4a7e21246b21e53d849562d7109fb8c3661ef2ac01212d184bd7da2093bc651993635f64b0a9094043f3b3fab3cda8461dd835d56fd441facf3de3d984f9b300cc3b00dc3300ce31c2e829d55d8db073bf60eba99381886f158acc35416eb95c542105349031252100723588cc12acd549d0c99f20275c02d711d4866e763cc6d1fdbbfb25d660dfdca5fe724a5d2e5dfafacbf6a98d918fe9259bd64bd2410df264943d0d27815d43738f2c65e79638fbd5209e358f5f2cd119e9d63fba2d1329596931e8f19a424463ff949ad016bf7b4a93faaa424be50fd2a273d25629b4421f09f4dea4b02fc576bbe778f6d992ab5e9aa619bae8f92928835917a7d2efe9059f47ca4499af501322512d12ed2398c492545ba4834659bd545e41250d552c98faa0803d9ee20dbdd384a7e6c5fcd3ab62590fc69a9a4df451a1576f3744fd6cd2adb8c639b6f6c3fbcc2195416085b118416085649315a1b2bc39754a2a4516134f5fb4a6c4f7ad9f6b1d1c590cb86e3910ec7a764aa65ec8927ecd1342382d12423cf0c3beb0f1fa0b5ea0f1f76fea8b199559b7bb68063b8c453fe92525a568c55762d71e904f68ce62cc0dbce321094e13603170900f6e3b5582302d9f0c28dcf0c2fa87ea68cb36b241656b087556ac8088727a57dd61aa6411edcb04a0d81d14191d4bca691e18a2c765243462a9dd4ec430f166e52434675c019628612f3dd67ad917d4043127452354306b04a691ff222849bd4f4ded59a58862ae8e0a46aba0f01afc82129f1ddfb576b241450b0839f54cd90163929ed43465e004acd7bb526f6c10967e849d57475c8ca9194562313716158f921a31e04a5669d75fed49a110f1e7e524330a09491c9048ca9b05302d4f3849e2396650523ac52b3daa49a09e08cc5c5eb663eac252fd3f37b82158aa46ae68734144894a48c6cb7495d147b46775cc7ea9554a62f4a831d9b9187ce78bc4d4aa62f4ad3c45e8f76ee986165906965bd3e2c9069ad98a2dc75bd5b3613c006328508e112b716c0ed3bb61a3ec91a645a7959b74704b2dbfb1ce6cd5c15c8eccc62de11db56e50188f05896758159865d0f432d3b81db63dc3639a3540a9220fffc7011fbb631e1124b29a5b4a4949694173681ec6d5227705299364501bc194fc6c32724f10b966f44138bac3c66453c614a22f68301f1895bb81e2b9f23a2a68f182cbf8b5ce466ac8b5976988561176675de0c6691929835b3daa4b8abbbbc076829cdf2b62ac5bc4667bd6165d9c7ddb07a7aac0bb330ecc2ac19cc0a0428e78adaa4320fabf387aef804cacf1f393b2e4d1f26803fd87fdac4754e2d80d7effc99b1b8d0ec5028b435d64d2a7dd0863be0fc8005414f38810baa14b7f5c6326e57d4c20edaf08305c2083b3a291983951d76525cd64d2a5900841aeca438ad9b542e61490e0fea0c53f0d4d04052c591d49049839c2e5aa829ec2028d5ddd64d1ac7908428eca4382e0679e04971dd1a94b093925580020c7852310d597441498a0b852e29555087d5915493e217ae28822a15bfe063079e14d745cb79dda40720c28301a558c6508af3568e7c5178c14dca0809476807505081dda443664c610537a26ed2788731ec40498a1b9d7493669b75615b865d560fc180529189b82856ce39eb10147cde6855deb46909781561661eec2ac2a778c35af175635940962d1dcb3c5740fdc3bfd12821ed63fa643c6c15b16ca9b07a2d1ccb615422a7ca6a067458a5381943b7421431e849653e36bae0ab461ce2d59f2519638c31c618632cf2eeeeee7e113d44b70ba362aa632c7137b30cb8edc6c68b06e0bd702e1a8059cbaab9b9694459848fb40f1d59a487f9610882dc650e40ecf2d782e2520278f9f348d0544d9c1328b72ccbeac58e6011358fac4220398ff0c98a237c92557eee70691e919f47b854e2f6a90378e78ee52b09e0cea48251598adfde8c6c9f46813737456690e2770ef3146913f36d9ddea94b00012df7edb7cd60f951da906f3f587ecb856341318b34eaca2e88c91dd888d373c0e936e0f419b02a545170414cc1ed3f84be8494d913998a4b57deba9695a92c761f2e5916f6c3b7b222990aa3d913992a53f129c32e2cc3304c49a6ca543845f8f4049f6ea682c2f2339c8c08113e85aa14de195b59a65d288b2cb20844aaab4ca0a0dfbd467b57494a74fffe5526b477d50829a63cea3d20a67ac654a6c27e3215f683fd642aac08141b4294c1c7701a854dc126c6747660f9f1623a2046450fc0689790f6623a967fad1ac537ab6b65f9178ee5730e8010515d3449793eeb20720fe2093b17298265be823dd226194403d0461b257726cf55b037660ab28895b372a04d594e0f611b89a98481ebcb5f93465eb3c6ee394fb3d94a29a58d76ce9ed7d59727e198367a38e4cd8d95354b02580790f914abb05d4557613bf2589abe9aa5ec5f1a33ecd5bf257b5d9d318d755f58c9cd31171288d8fe6c0ef04d8af9c66e60984163b8c4e7fe9db69f23a62b97ea2d473b23cf603a7415409fb051b14949f0e363ad89e7dba46ec9c636852d1f2053605301bc33ac9c310394cc552025817ddf6d52d86d5231e67ec78a0118cfc538975803d8c8d3841d3bbd28041879a890c48e6ce4a1c211cb5d5d466316ac00849b14c7de4c168384907058966f59ae289768e6070b2e451badf5c9e7ca23f42c5a3fdbea7a228492c325c91b1650b0c3b4b18a18f0214619e66e59a16774ce6961d6bb5ca00539acc1f2a500891f533594c45c85c0e052854d5e00a6acec1fbd995f86776a72d80ee035c111cbd403736567a5e187e7a2774478eba359cc2d272c245c9232ac82d4619c50b13c116bc4788c27142962497e0047c9695418d42629e229cc2296e41566114fb6560ba84d32b35cdfb90240a9a3b55c7002afdbeb28d73ee38974f268b75fd7b9cc6a340c42a12c37a14b0bc068059fe4ad247c9296371336e112cb4df42a218944ba0b89447291dcb19ca4bc7f35c16e30221cd8a9d093877472e9e4f25de4d3ffdbfdf4f25ccaff732ddd6c39f911b2b28a2a5fe51ca99b925e7a47a85ce5f26118fac24acaa1f297bfa86451f0c9e5fd4c874fa4f7b329f824efbd25e493ca73b8d4a7b4a3e052ffb47558d833e297e75e2e59ac7fde8e13cfdb719172fca4935e65585e9dca2d980799a41fd2ba3cc8b43fe4ca92fe236449f52cefbc1dd75bd420d2c2d42b4f4eaa41a475a9573ee532edcda8d06835ef08954ac3c74e937220d29efc8546cb91bac82eb21bcc68acc12a4caf3bc4187d4e4e4bde857611da5070a93f957ed86fa192490a953f7d162bb8d49739bdd3d2dd01944bec76ad573146bf57a0cac3cb744851be42ad2754a85524932c4f648a14fd5a5dab466529f566204ab5545cea8b3a2e850efe5aaa3ec8aff864793baecbf78a2f2cae20f99320d29ed43bfa1cd16845f320fda8cf6ab504666f76ad2efb744f9f168ca2e2ae18af785d7d75b381ad8bbd1d968575b7018ccc96f571f760be3b0528b18215a8b051748f92ed1f8bfd769987a33f2bd6bdbb73180f6bcd6394de92c5ceddb211c0c8793b683ff6b9bed61d19bb1998f528590bdb8e65ddd700f2e3393e01771e186fb3acdeb6241cdd5964c184263b1069fd7a476938fa2364cdfeeccff9ce26b5c2cacfecf28ce025f27d06d00ca0f5ebfcf8999dcf97f358f6a951692f6f07864d2cceca27d98f9ddc9c206f44d92f3676df3633f87253b21d2b045901c872445220b348cd13e9a7a0037193e2c798cb3b9b0bcaaaab720997e44acef8c37025bf207b2c6f4672218ac1ca4c26e1d34544a6baaae02923164bc122b2d66944714e34c95ba898026f492ae11356e38db92ede2fcaedacec6993945870c9d3d113aaf7dbbfead5ae7a5696adfa0af0724e8ee4ab6b8ecc31b9598f92c52e9730104216abb33dcb62f59a9e54720db17c93626e48dbc8d662c0cda001f6e54b9ce2ecc6760f722ca3c8211c770267d7239c370cbbc6768f507a33d60dc7f1ccde6fe2b2b20ab64962ef371163bd3eae1aa3295e21f6c633683936eaf34d749d967c13fdeb4dcc5f3446222211b7c6de180b103f2fcf1a2301e295595a33dfb7a4913645ae725a6fd0b1336cbcc21682ac197aa2b09dcd2e7f8525c2c62b74810a7b852e1049b2c476e109cb59ee2130ebf9ab839220b15c1196c3c010969bd5cbb1d9ac0a2165f437ef08ed1d6d26bbdf4ff0293b8d59c540a3a2cbd63d6a287779243d7e93e338203c61386ede3fe36060849036e6b316ef16f56619f8cd994d8ebb5defb4a91962fb57fd0c69238726f421b6e9e5aecb92bfd27295e64508698306c80f8475700f5db6a127acd5dd7d5d9c75551aee02618b7be8941bc2663a4255082923bbac4defebac97e5a10e1cf2d967481b7ddd16b77efb097b5da39e7744f6ae34fdd0bbac0a21655c2c2b292d4f5bd4df3b429e266bf14d66d9b78cd6eeb2de161712cb35b5a2e5388e9b213a43ca90d76e5987a1de5fe865b59c5deae8a47af2afdeb0a5cab4897fc2526f18d61b8e56ea0555ea05532a4abd197729facd46bfe0c9098d6deaea26aa58486295061342dab04010042b67d9505b407e43e7a4a5e33a17ba4364424819b292b05b9d3d3617ca340a036de287ea0d4321a48dec9665dd21ecc5fd76bfbc23b8d384ea9536dbd159ee18e82c8ba17a815836fb57ef10d93b21a40daedeedd7859036fa09abd19951cb62545e16bb24b0fd6b02db96ed69311c9cbdaa10528615db2664855fe86673a9637ce4528f6eca69e73ccdaed39a4b481bb3c8c2b68c8fb19b6484b436b3775a1b4bce3a70dd33c6c02e6bf6b54fe0b85087e385a521df45d81338bfc8a52e5c418a25b6868d5710821460c0e0528c3596908f31c675b15fd8156580d39b81c157e0a20c30c7f65b65e5af1b1f0b63e315a6d8b1a18bd33c8c7ecf68bca4dfb3afc6588f5eed53fb5d2c90d07ebfd7b37343d8b1fdce93dd0e40f68e007ffda331c6f8ee79e7401a3a46b767dcb1d0c1d0f7ee46c8f7655ada58520e4babb1449029ebf4745cbfd67ff8b8968e0bbbf4725c987575174623dfd78e43febabe2e93dd0ec0be64ef0820d276306c1bc01f212b630c3b43327303d7d3fa11b292948369e639ee3ac6187ce7a534b38b31261138a6820d81cd8d652b5a575f7d5dd78559a4781a8b5152ac4658e7dbd82b63f931927020c0f2116059d786edd5dd33cd7c337eccc2367d3c0dc723c0f223bfa375872834b1251baf308637d828e276ae4b4f87cd0f1f990eae30f8d430e4cfc55f979769e65bbf76700d22cfe70a834bf19d02ec17261f632e48bb0d603fd25807c206703e7e5ec61ada76eddab4f67660bfe2bd8edd0a22ad9cb2094f3eddbe176b58f3d24efe9cef2052e680eb4bec574a2939f92364b3d72b630def575e3ba7d1ed91ebd876e7a4476516b6eb1e3d1c7c63bbeebb452d8be43d66613b4af2aa11ddadd37495840301d63a02ac75cb0222ed7cb4dc56354dc6182d39d92b2e1260ce5f208ce4888e15808d489ae007cb4519607b3340f802a199eded984700915cc636722c8d009c36b3acf379d6786d2c4bd60217632ef330012f0c3bb5cf28c087c766e7be44e20427acfc088913a0b0b76d3d2482122bdf58d0b17d4d13cdaea62613c57009bbf59bf33ee7e9e067e79ae38b761e0e7ea8dece76a6f363b3f3b3b7653babf192f6aa30b8d4753620ce6bcd22718a481d3be58e9d329e40eeb3911d487689e3e1507189093bbaa497ede89c94f5c62c91bd7f51209db783daae1c8555838fcdfc5d1bbb5d86b948a3b62a7bda349f652018863d46f47ca301bcd22a01c37eca6f0b70d5a6f93680d859de6c00592ee92a9f34a45b2de1e7b930bcca49f44a1bdedb613db41e464ba2e1a38723fc0a0b9d41a45da9b2880a9551481d2ebdb0564539273bd9136bb09d0dca558b1e3bf498b54c67dc45f482610abd2d2ca6d92b8b2c21ed09bd93c772e7d808e09538221c8e4ea8e6bb4a1c2e4d957462343f1a55a912d1efa2358051c41a19e7847e390876be7fc0cbd206c8d3e27adb06e92cb2b0528a8d860f445eb7de942664fdbaaeccb2be9e5603c8c54e03d868002538e7a3ece113f779998451db9cd87ca491f612703eda2bcf00f2952b3ba32ac6f670bc985298019402e7a9eddcfc9550148935b0cf330e628dfee4a63f42fdeb9c793be49b084056be3b88b4ac337d60a7ac5274675457239b8af089279f6e17bb885439c127eea4d344369e854576f47696ced2556f4462a756b31863ca2656d6db63069764e6e9e01f57fe5eb4cb0066343f688ac0ead53572c992313334445a2eaa28d9c67a33b69192011c1701e45977cc58b2622ccd1aa70401174bf3f39235a559a3254710634a350af0defe7e4ef0598c9127e896ddb2bbbbbbbb655f1830621218309ed0dcdddddddddddddded44777377151d33448bfce598cd39838fd579e65fcdd7b1e6e6e6ebd639ebc2b07a69b4d1b266a5e1834412f6462c18216df07d7a068f245ad61b97d83e6701cefe0d245d1083bda06d17c0a1e7ec50d9760e62e59140c24649cae0dfcd5ed763b411facda40deed7af58c3fb752cd6f83a24f8861e408df95a16655c3f9feec6d12bcab87a745636804bdc6f09acbc26b0f257c80eb6ece160cbd55b82af5a31c6655969bd3a638c2b9666b4af978f1bbdf23d8234804f1fe8ec85443631ac0ee9ae5ff5039d95352672897bf68fd517107e60cc2831d3b8d18005145182c1a898ba97973ed81bb53d4a1e70065f148b5122d855f09416ba74be509538dda8af4a1d2f0c3b10c4b94ea0c4e192135225758ee84c21a360250e0de904a362aa2f29b64b4f4ea14521af10db33127165f5d6c81b22ae2a6fbaca2144933c12544e2852458e4e8c219db0809046115400820da9c0e79ad8145c8c612c43e14ea308191ad18a9e4be346036814c1612cf53dea124b7d8ea2c4527fa3602c753fa319d6cc210ad8714de2c969848b313d49b884451b91bc4165b71b0b6659b6b10e27bb37dcd88884898f9561231237f8582472686211308f9db9c0cc19a3c0ed9171186786f4805971644a3b5f09222a48404a3b8e4c659f20eb741bbd35af319204730ddb84bd86dfadc01ff1c77a8fdbbfcbe694887a351608dbed25c53ae48d052b10cb6e95777abc1f6b69c1279563e7b6ef27d0fb096c21eda9b42da1e76d8f1c77024119d4844b586c54a93b3b80dab3f7b9480050749aed22393861a38d56746decf7b57ce3b4eea32e8f7c0a12bacba5a763ab3471bb77ba55989a2582840e64745195405ecb5bde9e0e5024b2b19ecb61280dfdd1c2d2bc3c5aef470bfbe272cb9b21fda3a72d54ae5ea84fb4824b58e9fbe69d880ef28fc5844b2b2cb6ef5bbddbbf2a573b44f7eabd5b0d818d1d71dbe8208d7cd27152ef66793a40f022908e2ea21cc42b2e6134df43a3cbf036da382e808d13d2b4be81f9cdb07330302adf54bebd4908865e1898be81a18dd33730304da46f1a879492d22af7bc99d1239fa4e85f96b3b743e55bbd2ae74ae74f86bed5fbd510d858987be0bd99af890dfdfb57af8d4de99ee5d50bea10d5bbfdb2b70306c777987a3dee0402801b799c114f741302485e5d420979be12f3525626e4e799a891d50878feac46bc8b3e3d1ddf43e7c0d103f0e8ed70f1d1a39703e6a34ab31de6d13bb90c83143c001ebd1df5205869b6afdc4bb94c0780b20f97b02d47fd4abd36b6fe84e67071982aa2b7c6de172f856ea2d7c6c694689707f0c5a37d7100044119c98bd043ef885028e6d2c654520e17af77515949dfacf8a689b4e0a9fef6176f66e3203e79db45ffce58ac38986d0bb7b01e3b57eb27bd1ddbbfba852ef26646472287296c44024485bd7d63b138f058161b91c4c1c7725757e9ad1f7d07a504fae5ed0885c0c67e9f9e0ef0dfbd7aef9c4799a752ee113d5a4e9b5dc521faf6289261e9e100ff6dd5ebe102e0cd783131de11db36b2a3470fc7a832112e611f55c984556dc2ce71d2e3b6002ac1396dc22ec3938b740bb785cb38163b51c1a72b9958ec18769988c5220af853e2c8ada2509a23a2a5a767ef0131c540d87e97415cc22e3d1d5fa5f9bee9d81e872bec76d163ad97feab32d6ba95d39d5939b1ff005a3f88358280568eb4c1b7ac2bac45076bbdfdc0613f7c7c9e9743d3ded1f68fbe058488caa2c92a82b52c25c4176b4d9eee229796717fd833eeb116121e2e599f4d80fd3b73f8d4844fad24270bb2ae6dd3b24b0a8ee395b5ce4116f7c1aeac5b935758f02928d6b0722c4bc75ad68eb5ac234038ab77ca28836370766d9b965dd707062ec65c79b3a4086f46561a5c9a6f00976e286b125c0aef00c6814734cdf38835a495de119ccd4904bc34ec7c54428109cccf4720da889132e6e779c41ad667068671c62c66dece797bc54c0b074590e058d0f2b950ec18c525a62e3191e8308c91ef86eb17bbe4f56b317394413b96b068ca7ebd94fd7af61b668f59c95e39320a99c35cafd4b92eb949df641908de3033c7c4128c78c2b267de0cf31f338c732c1bf0bcbcbc58f49cc45ee839295ac0cb583fa1326cb23453cbf93be9915129777964547895af3c32eae41e87724d7b0a684955fbb7526fa87232c3720915b9859e4d96e7ad787f398dc779ef5e7fac542958b0fd3ab785f55be8f5fa082dd1b66d2ddcb737c1d5ebc312691bddb6ada589eda337115e746e643d1c590fad6bda888696f6118da950d35e13bea5c58816e3427bf18db6845b5861be9d4d2e6fe172d19b60f9f626440f51eacd347a2e6177a117b4d80b7a5f58ec31d405bd306e4c62b1577a63172cf642eb7da9d6bb8b5ad02660582a187d5246b087324611f9ae82a7522ea35cf9ed117d3c120afd81f217cfe505c5c5732155295810be09967b0f290b01561e8667c9c21adbb4c212d6d14315969fbc89f0db9b68b9e84dac7c13bddf42239b56ce424136ad3c0c29caf9284ca0a8d0146a641ee58436311255d008cdbc57af4df4893c6dd398c712033e7624073f23428fcd7e7559068261f8df12735dad2566d7213a1e8077c60f3984120a06cd5ad68d5558ebd1fa3580b566585d3cc95b07e3896f5dbfbc99cb8ad80e2eeb2cb77532e363d927bdb73c1cd70f39df3ae669fa3f561cb8c8a71ff3fc5983d8486963c7624638e5b7082536f2f0782827e0e846243a6dc29aa74ddcd3bab04cdbb8cefb42a068748292a2b212b2b4905c5e60ba16b43b81385e582ac54f46b4c3824b29afb14d3a4432ef091d8b794ee87c5b95b2764d1bbce828354ef0d839175dd36951688745d7c42bb24239d714da710943f96a896947a3d168e5a3d168346af1d168341a893e1a8d46a3f768341a8d46a3d168147e341a8d46a3d168341a8d46a3117f341a8d46da47a3d168341a8d46f2a3d168341a8d46a351ca47d6c947a3d168341a81df47a3fee82fbc99d188c56505e6e5373c6901f3e24262198d502062115de4b5ac58564423b09b3ea3190a5744a3f96d976a5e9eb6ad44a3797528e0d1c59c369a176f28909a15ca5657c699cc32148033254bd9f931e4c69ed46e8501a9c0ef5ac2258ced4967964f9bb08e1624c22711f80be258cc09db7d1c42e11217d3356de9893e7318d5ab5e4d9d5ecd9d5e1db1dea7f76ec2a8392791399d98f309ebbd83f844baf756c2a899fd80dedb0a3e6df7de54306ace8ec26c24b39358efbdc3a7ecde5bc5a89915f1de4ef0e90a465919162037b1de19884fdabd730fa3accc07f4cede390a4659d9145e77ef7cc3282bc3f1e4bdcb258cba542a26aa2b5458582fe5dee511465d3b6dc29ef1803dd6bb3228ac4f1453588fef7d0f7140798379f7c1a82b64a25ae2bd018cc2543df864ddfb0d3e2df1038507a431237401bd12a3b09d183e8dae722f086fc69baa4671aa3665a0ca629f3b590682d8a74fa3b6559bb0671908629fab466d3e3e73e53357aa466d3b3baa1dd58e6aa7519b6a6767c7a751da6ae5b3f259f9584cf3f1b1563ed6cac75aa91aa5edeca876543baa9d4669aa9d9d1d9f4665ab95cfca67e563b15f2bec590682aa46653b3baa1dd58eca622a0cc31ec2566d5a8521085e904324da61a16aa93764a9615df1eacd5c7cf6f60fc57a5ebd6ce579ab6d15a2ddf4999e4fc8c7f3b1d8cf69dbce9cdb4e68dbd9762cf616dbb5a9aeb9a9bc4d353795c50ea375abeb5a792b10fb4b267d2e1f0d4bd9d9e956dace8ec54ebaeced9f95a6aa9a4a53692a8bbde504a0656fff64ab2c5badbe96d04d87702c16baf1993e970f5b94e5c3824dd8d7c4627d332cb8c436dbc93210ac3b285c880171090bb1732aa315172e6107b9847dc7be7a3bfbd911658bc2165b354af664190886e1b7e4c7901bdbb5c3a227f35461a8e219216db7ba01efb6ad362cb073aace3210e454168b3f7c6aa02bf88435133ec96367faf9f0893bf6cf0a3e75c7fe2de1d3770c857bd1a5503e0afd4e3e9f6f89c5de3c41e1b7b2d83f9f7f1f9d2b8da8b4bc1bb13b77ed1c00bac927a696459625009a2f0900eb6b90621c7e281ed8d19e4ce6807d5e6262dae7636fb7b2d82fc7960b40273dd642acd1f503438c811dfb7c620cec9f8fc5ee8202ee481b16be45882d21b0b17c0cfb0fedb7c686ea8561e34b7ca209bdc4d8575454545456b66bf535a6b300e3b3472ffe08d11aa42d0742354618972b17d21efabc1cea4e508ef821b3b0e153eccaaf96bb9cc472d14f1ebd23486f39e7c2c3ae9c4401eb42ef0b1b9290b02ba724969a23c6a21ce5a3b05e9b1dbb526f8fe863697e68bf2a0fd296032b2bbf3676e51cb7f210d8d8951a82af7455ea0f0dbba1abbcf9bc42c137f750f7148a3282715fd83e48430f818d0dd5107cb54746040527b05e0dc262b7775cfdb15da3299059a48c70176c9f479b5aa66645a24d1d630ca046b1204c35c1a351333601c636c5b089d84dc436bd8f814659156c537cd71bae6c47c03ea7775da3d927a65de74b6ed9e5b1679f58d5ac5fecd78fd12e1ea3d62fabc6586e763e5c8cb9fd632fd4f52c26893cd95d364609bd69b928932ca0dbb2bc10cb1a63ac9b45c744ffb27b3a3623f1cfe59f2f9439d710f6ca20de29e2caa0cd7341e94ae77e5a5c58ded18d7253edf28fe8f2cf10f6f2cfe59fc82373c1f88d7141c91c9421ae0ceaaeabcc8b99b0e9faa5d5ac72fdeae52bb47fdf17fe47c886df46f536142cf5764e48a5a65451bd218335c5bbe8d73b188638bc1a64c5db217af875d1dbd19dd479545acea5dba8b431006fe8d8b1ac7a2d32aa93c3ad6161af6c0a7b35b1174885bdb227da09fe9139fc93937361e16df5038a7fda749d46e72029e33a730a3742a1d1324a1fe9dee9d6691ddcc6c1cd32906704c926f67acb4f5f9741125489b9d143458512d92407090339b16345074d2842de0c167a3b44e7de752eba8e43206d9622a36022ae672db10d6b6094f74d77a6e2a2f364132e5d678ca346382828a853e2930444622f8e42f7cb54d88b8d847ef960d375f908cc36c61a28bf3c45298a43113ee184bd2e22f6ba0fadb38b7eb383bf996684caf92fba13c89fe87bd16134bc46456ffa7da36dafad9b850340b7d1b6914fe127ca328d4e8c86f7c22ff43253c79f28cc9e727ed69ef4bc14de5a6498765c10dd09bc1e8487e38505c2a58b3b81a3476fe664f2097b945104d1651485a3448c8c4e52c2d0c3c1cfce95ba8e6ef7684c591f9669fcf087495f191866f5fe58e9ca1ec4f2d5fb85de8eec8d5d67b98a150830f4878e07d0abedfd08d9fe366db4d7d550d8ab733a0a7bb5e93a4bbd5906aed41b8656bdcf29cd88b9d143458512d92407090339b16345074d28620db6db55786cd31863a4b42773bcf745bf7df04b4c8be2e1e81a445aafdecfd4bd513208653427938c665c0a0a6bc52efac50e9e7838b01a44da948bce7928a399d139ab8b8ce21f365dbf1dcaca858362b2226c04049872d18f8c62da7732870fa0f57e8e5c4344c99f58837f9d8505fb1561bf5a3c93824ccbff11b2dd333e79f5ca146f4776aed7c3a1720e5d851ffa543e144e76221a45449e108915360036f220d1b1ed1d91f29373ed853e3eab549a942ac3a5eb271585c61823442f1196dff168415417c0a56b08999ee8639d69caaf631e8672c2d6e899cdbc2354de3df38ee8beb272197ade7770f3fe23643defda3d6f87e85f0d226d582f3fe59db723bb578348bbad54528eee2a57a934d881489a94ea834ba2cb30c7ebbbb10ff60a5520435c1ab708cbf7c1efbe7ae58d0b0ccbd7b952e731e1d2f56e9aae388813f68dbdf8c70f200d3ffbe56b5f62dacdc3d173f63744da589d830a8e88161f63388dca141765803225235f51dec813dccc370b6cff4a19e040c70a2b8970a96fba0918eb9d61fd7cd96d0ab32872e1d2ec9b06f0cd4401f7be1a0fa0c7738843b4d14096831aa81b28c5f61fc0cb402c87582308c840d206f6a6c2f2122cbffd00f6b54bbbd11f3eb463de0e2f07f7e6dedcc67388a8c879b0cc7f4899d23a621db18ef03c425a09c4577009a80f0dd463d96eda39ecdd9976f5ba46638cc151196560dfbc8a71d8a6755dc5220fa6619f2c4576a61d045eabdfc16295df57f48abd1c589d58cd805a5b5d578ec5c580bbde5dbfae8c47115cba4ea3f900de6c755de26044304c880f20394e0de053f6eb38a28d216ec41ad8afebea9136fc192268c619acfc3dd9eb4bace4815d2d670ebaae6b904bdc59f96614c8259e96f52c04ad58c2308c461cd362f54d00430b8bb1bb75ab7633b8551c9bc4261c9b14b1a17e96e501eceec7371330c618f16d5dd8d8956d6c8761b288aca5494924ec03788718071be31a426fe20b7d5bd6bd09aee338d07b139dd7750f9d05e09bf0c01abaf7853e23d843deefaf68455c127f228c19348ab0f121fad18cc6deac63dab15bd84fa095695a666148884c61cd60569d5943d0d5f35c5a80144cd814ed02a4b8a2fe628c0d2bdbe724cfad8bb25ec995f8841d71cb9dd9d31173b9dad51267f2da8c226e2481811e4288a8a0d0a182278912c9844f6cbbc4a7d0fb32542fca075e11dbb06f979e0e26ec8661f5f2fb715b128f24915e577f4c0beba2b4214bd3a2cc2c470c974a5ed8831c7cb903bc7e488b3d466e79dd3ac6cd586b1626531776ee66c79a8bcd577671db31ec56694e7a27c6330657efbcb6d5cb76f2afc4284b4193187619b6b28cc766f587e4b15867c954a9538f29f129c6f447c4c7f6ca7579e1ac3c933652dedf628d13cbfb31baf8052d175a2e3c7716dab1143e85c62823fc090def8286af34bca4a57862b97c4c3c5d9787114f2ab4bb439c7f00a355795fa5e54cefcf1fd13b92a416a4eb2d4e4e3a07769151f5377b793c5729917a153c55ab91307ccb5fce75e14b189e9bde112a0faeb5a8e4cc93f5b99c754acd8c0000000400b31300203018100945c3c1703ca8ad921f14000b97b250765619a749905208190400200000000000000000480800b006c8ac70c6bc1ead979e9817261f0596a73cca7406ccb787717f7d5fff6784f6d9cd9834a5143815b97e75751b49052fa9a0a085f09593abbcd19829d9f83b039732ba2ebfcabe869ead685d5e0f2d09e316912e75254afa0c089222ef496660d80fb1062f6488116c0c80323cd0810d50804155c2ad0190bad24dde7c0430febf467bc6a163a79c0e48cb9b92335b3f770c0dd616798668511b828589f35def9d32d48992440afc74fbfee480dbfb0cf70d810559f686b6ca95722083551c6f1b80cb9b7e4e4c80001b514f1e13af76806084e67930e81120c87c32577fd901e94b2769c42a3b4070a6056be1a57f890341ec3d936d66d614009830fbcf60855bbf27bd5df4f6c87f4e9f6de7e4b6214542b857e4ba8a6501280ad818e6728001808010ca45c94381e95fc123868d12c1a771080fdcfa5738fa9e0b92251582028a32de36d71b128c6e04021048f9788cd5b3e235a3f39e3501416365e4b4536319c15913b4db82bcff880b1ef6fc28999b7b7fe553766068830a15451ae13820f5d2916d392773f044b24015545c2199bc5662d4d1e5f7ee72dfacad7d9b64e96d6399447a33c05ca6334ef5366dd7b999a8364978c3b0c5d2226bedbda2b59954416d703c528a5cc271b83aff046cb7038a38e3def73e218c6b01027b51b218e79116b1006789cabd15abba27ff02b9d41eabef1d806337ca46fc7bee85b21a4732e44bd05aa259c4254e8b75b6479f7d5256fd8088a11121aac574a5a23ae979adc34cac5c75c90ebb00bcec686c9a993753a91ffe7e0eeba76d5ac62554199df0332eb6cf68c17303b39df175db5bb6c9d62da16c87db988588aaa63c9cf70e56e020f61ffeaeb3d02d394af1d126918d52b2b9ccaefc03544a8ba3e37dc75b763adfbca38c6b4813b1a323e8d34521585aa4b39088bad83732c3c27c004400efc6d085cd869af69d6339428a96947d3badc13170dbaa7f6a8c069abd01d73b785ce89e3f34bd19164158fac449b573b8181c1072746738079d0b885a8f257557b45ea545f6714645c9bdb0d754a70251dab380872f965583c8c7cb70e9fdefff823c937687a385b983091888b75abb96b8e097fd9e96c03b18fafc1c4d0f3bed421bec33aa903f0939f6d3371eb0283396d4fea6249cabc8835ca367ea7fb6287258720da4db0047bbe70c5ef8ca26c4420d1d9d53621dd96f2d651ae4559b6691f479a3a9026ae8dd1f4c137f1daf1b3d6988f2e1795c33b971a01451a1b8448db7dc33fafae793ccd2ffc968189f4a101179e1fe875db01dcc4827e10ca37b5932fa88cace9d5b1ad5ee510af41f2c730fe4bff68c6ed1ae4f81e1b9cc2af4d9e539ffc07034628570686862a41270b835a2bbde112fccf63b2b0c4f9ab6c2f449835aae3c229eb55d1ac57c1ed2b4249d5535126d3c51cdfc50916b7ae7d787d65f22c3323acba18b45fa0021b4407d18bc05e17af21fcacf8d55493f074e3fc39e038d0d8c40405c897dd0bbce63aa1b737420178a210a79be4c0ec0231f0dac444691662ccc0df813aba7e64043adf573009c4f47b004ba5697e78e620ed85b820b204f3ca429f21dc946c225f716be93f5d732b43f0d5bf8ab0f67747504f8753b0b57197ad4d8544d31b03b04e918e087962c4ef706e4f2c1b09c3d344ca18221cc44dcf786763de569e88bcb9bba6a0731576b5e0e7a5b0c37e29657d855696f26428209b9c61ef2a115ee95f4c82f12f67b40bdb226aea9f0b2a2ba9bf30756ad544143dfc277def3b91c12cc9da903a6e475e226e2141ac0aba70d7048856ef2ced2ad065a15019b0a6d2499e77fb6ae90419a27a7d0324a967f83f4ce364443bb7673d347a19dfd1547a15f618d5b4e01a5925cd61ee512b1e1abbcddf57cf7d45992630e047d4b7e4ee530486f4e85de466654c9c66cf0509c58ffd63613ef30604120654067a825b873c35ebf6893a52f77e30351b9c95e9a3cc40ea87861b0fef26024f4cbf08931ecccf0f49d5c988e3eac206494f6a8aed4ac6dfffe08b3aaaa54274873c0fd45e6c2240c36c66c2ac648f14fd68b1d7dec07f8b4146b4e936e77d0520e237ae1b8ca741e9fbb2a20fd942410cf3dc428c9184659d408e67ebef73c69e6391aa542c66dd754ed19a4ca0e19053e90d47df955eb321e50cb482bc3cce41ce69037460c0ac7889bd066d2a934c85ee059b2a8c2600b87061f725aedae63a002245bf3870050e1fed972759fd232ff805498a6ef424bab849189d9443007173220452e0779856f38eac87f6b064ec3d8a839a6944317420ac09478896bf90cb0dfe5b390d8181547d8be3453fee6a3c2b553b034a93bf4891d37e8120b6ed02336b9859ed870031db1e0067a62975be8120b77d027166ea0432cc92dace9f184fe65b2af287365294d76b63e208e4b5dc10213bdda0aa0b8e77c34d145272cdf0bcf7cbe3438d2f8e30142e4a368edac63672b06dd3940c8b132611c3bc554e1061edb0563b83e953cd6b2252b82afb4f790a91bcb4f56d048e2da039d12d6afb408cc364e6d081a058b74352de5d74ec4bcc8dfca211ab6a483be668775a658225259311ba394a21bd74b37d4b7ae02f4d3420d263fa06f32b330ba3a0eb5d56f65367e028cf1972c4682034823362511c18195d2129b9410a98809a5952c338ca93858571a319454d0412c95420707564a2336852a3a24064a49d624d070c2b05e2a621c12201d312989020e562a81180a004529626322599775847bdd92c5b888df4b2326255ec09265562595561a1ff9980ff980734492c50a674252b28803e1b24f31073cb04b7c5eda5f4916af290534aa413cdd2ea14b649c56d210942c6b0cf218dd13e6836f348400011964d529d7a9389615103d5ef257690441a047063a19c207b2fe6aa612e6b5d7a8101a68196057941145d7b2c0f19ab065b183a1812eb703237f9075382f5ecc3951984a0cbb66cd171ecb2205aad04336b868737760f8c1010b9241164bba4d75086ecb32dda9c196f50b162c9a9c1d083f70850d32642d864b1833eab5d0c3ba4290327eb11e93ab35520c5246863e1703599cf2450683c8f40c3afe10b40c0995945007cb7a37f51640931b8055df3a96316e86b6a5a0a2854bbd2ebd3c2ac4dbe56360b2c768d45d52d777bed1975657571627b7b2910f0814b4d01100cf34f9d9f104613304e1f5a2de7053e7c6531af933cfc2ae5d34047637e93569640d32497af598bb3aa4267ff79b1d473383256dbee25ab622a1e510134a677c583e8bab3161f50500e70ba4d68a6be01000f6fbe89f4778ecf80263ee2a3323bc931396a91c3fc0e178089ef60b7ae0b14f7884ff7bb5738cdcca71a8e8b59d99e78a9f27fa91bf909c9dd71a839f7179c750480c7f514e099a403e1185211d0c283c11426c1a6c9fd82e2ea4b199266875962a1e6d3049fd5e68633c2212208d17de09f0c129985979e05950c03b3a228d1f0140301c3ca324f9af7fd93cfb2b0eaaec4846ae72c45047488dc1a7e5f69de34619088c9270abc732f013922b0a61c621b0d628b599cdf4fcf9a3ea9ee0266bf6abac98c9c86761f7d50be8357f0000aa6c8f9168e0cc1385de94e8e685d4907720c7d603e306c823a7fad52c8064399daca7ffdb977f87bfc870aabe8410ea125b6b8e0f2df3c889f960f35db91e3edb890cd076d6469e429044b477a4e3adb8a5e9402aea2cbb70562660010887ba543f2017784cf04083dcac1abcdbae4f1abd145e6e1e51b6825bbea4e8ed5436e3dadbdd7cf560b26e381950c30bf3c58d0cd7c05f16a4bb2132e80f89200c28c8b830f8a2bb3dfdc733bd0c062532948a1f0baa02c160c708c0901dddcba378b9c702ce9012840105195e5b73c63f754b069f96ca7d67e67bbeceea5115f02c0a27b4b88480d98b3f0f92b291dcc0aee6ad06224d11c0ec23e99178e8bb5c418a88982c052888739b01ea7616b8105972f78332bb9a5d6a5301f268f1732fd41b14c9657021773080f74b8dbf73d55294a980b12d8949ab6c55a7d02fe392a6e2c913a32f0822afa4876e0d0944efda66de9b8c971ac71c701bc6230f4d0b30dfe0066210dd132607acc4110151280cb50c1ed8161a5336a14158021c8e773e2c0804a95a62601293042c060d3eb393ccfaf19614f87a95ea0304a6f7f18f05d54fa7825954827810a0f4888ae83f25e0a105eeda8dd2e50f7f9805a02ede9847b25d35a07ce78b63aedfc37f421ff7ccb19b3567b5e882bc6d2114ac2a6425bd786ad1db83568cdc6493ce140224b2636c99e01b0bd7a5f75eb7dada85a82204dd0bde158a73ff767d1bdb80f2a21e1fb4850503fab66e95afb7f148f621afbe5bdda89250025aa4b794ee91d8a5ca78d394eb186598af889b55747366fab480589cb37fff43f104c97ebde093eede70b379cfe292b884edc896f49b4c3b43ac4aea1d590f52a307e568620f51fbc7bd12ac8e6be27ea22658e326105155e76e4fcd8bff1e8b2ea55a88161f9eb72597d54a396bc989fee221a6432e0cdc646e67438bdaf5698b070c938aa7e98caf8280d1a073d4b718ef2fc9cbc6bf13797a2bb06ee05a978b59f06aef434ebfbd1274f0c9180f4e1ce047200bce01530712eb8b20e4e8bdefab488e88840e0922d4245e92c217d5a0808cd6dede62cd5f6e2c7c6241f5eb0a6b77b9dda04f6be5bcca1b08c9f08236ce222336fe9c21b116f9cdb52e63106bc7bb263b99c11a1643beeb3a542b10e8b16d90141543c52797b9f446907544fc126520f5d79ee2dc6cfa872800150511871203a5b94fdc37e75476eeccc41ba028ac0115a86b14246029ba63ed676a670d1d3d7b00e28fb45d149a0c0af2a9a173c83707619471847a71dd37730fa7f0e519728a80cc758af3aa89dd100273d55486bcfff77dc5694a943578b4459efd97b5d1da36a4331f332029886dd315535766313de8fb8cc22db63015f2d1dfe69ee89872735b721ad5f32e27a2977100ace7d9880affdb7dc02b2ebd76c771a7c30259ad76e4cdda4ab59693bd6b43c1f4ac05fcedf8de3718243043034aab79afab6c888607bf1cf3f3203f04cfb0eb4dac035b954f16bf32fe193587386489176283c6e5a9709ad2cf819eb4ce2ebac635ecb0e5f1ddb1e508ee42f968184ca09888cdc37e872dc7c6611567e2001bce4af63b4f76bd40428f3fdae3fda0b075cce046924240fce6ead8e8902ef7e0b5e5df1f7018beca4e2be4b728de9791e99aa76e0bb91c41306a9fbcf6488cb60230d0fb4423ebf58da318fedddc4f0957552636578508ae87b6ec84698c66cfaaac30652136093b85ff8363736570a209688c1dcba21449ff5dfacbed66cfbd956180c6f9556b679a36a78a52671598f7ed5b038921d14436f4fbae7c397816e2de4e72aadddd2a3cb299690d1a0c8365bcb630e4b13f19f783cd9fdd9567ba3845848e352cb6b143e3c313e8cf78dddede93b4e9e1f2d93238476f619a6f08e759a8496ef60a3f8c284026ded96d5ae9a7a418e72d84a21fd4457fbf2c2b3092a4601102b13de6102f781187785b0e20be9c2220e3e216ba4b66d4792b78d4eee615e14cc9ed573627022a1bb8694cd3b79954d12a6618024e2f4c4b2614c8fbb038b491f482cc0d73e44bd784abb4f1c7cfb0856bbab6a5d03a8194ac9a8bf0b9964abe30236214d0e195c475c2fe2fe019650d5a90da048139221bce9a0349f8abd20a1850f482e6d3b20349c28e465c855285e90459202b7583083073bd44e823664de7cd3dfcff7ca932dda104901aa157b7fd6b824cd2fc9b8eb09d169823c7f4f6566f637f96ee881633f21f349025c3c3aed8dca00af6e58b991665149cdb9360aa8e7b05d17779a97f358d7da0c720fb873206298f7bbd0f04c3fb792a2d0aa1eda881801cbfb87f742f87b9c821341eaa3494304cbac821f4ead76e3f50785cf43aff056d55e5ec70b7bf5d8bfde8e24a511f0beb48554d77464937fc6038036eba432e6296dff9859849802f3a8172bcdca656aa80287cda13ae14c2be53b2eff4c81ab01d03f643da691d072560da47e981f3153f5a60e373a429265f5e745ab46a06820292a695d0a494c0fa36590a0b5c086c0c5ed1682bd34de2690add094a525023379548c16e41daee7784b894f7c3921101e0a894e3c98c9733a7d76c038d7b3567fdd916a8ad447d904c24b77609ccdbd40dd25b6f91d04592517b94dcb917797a2aa0579dacc1766a66965f7ac3ae919ab9d906feaa26a81035d7f34c21435a705d1fc8d7e236b1ee8ea26db6928c80da3e83ca15d608acd0675bafe8851cdd48cc1c0d39ee998a9184385d4c6435ce6e34ff7f035b44ea7b4e2c32998a46e9e690e5d4bd78840a4e3bc8a2f99c7a9411f67817184f9728d7fc48df81d3e12ac4eadcf7dc0b7fd69072bcf480ce6698d4197506fef9bfa05d203b8583c3acbe7303770b5afa6d4a6742ab93ac259694027d54de447379f2c2320e232017e14c6d2ab01f26d924840191ca2ec2ea7f7aca79a7edc50d50b008de90229abf29eb46b91498acdb67954c8ca95683926df6d8b4135232dbf205c8901b44b65ced701735681d921692e0ffa077cfb03c023929f76eaf684e61b5ee8b3d1c6d2880a0e9e88a41b1d45a1bafe46d49c18fa6f344d284b160d0730fcca3c6e25ad940ca9dc3fc5c2a79e27ae2b3dc8002c4242e8c4ee2df681864953eff164346e91aba97357b11a5a715256cdd8d02268872a5694c4211c8ddddc01376eef882125b8552461f2690f3fde8bffb3d4225e230bd07ec108d47627cbe0983947b4babc4a5f75dccbf2b041f757bab5a9083cb3414920b29d54573f214247e8a398a72d0262e6cf6d1911dfa8d40173c90a6ca036120f3fb81736773918991237f70bc63e580c754a609a9834a6cc10872cc207bd0b9b66ec23ea3c48ed68dbb78345f37ff3608336ea70066def737caeb426ba21aa3136062b97d098d828248046a02062c978a89cbb4bcfe67a45fb1524426908c6391b93ec09763789d6de3015638ef55ab0ae2d5d60e840ce9a397fb487efe733acffa6e7f9c644cc1c4e6d8ca743aa14268031f7068ecf977332476eb839630bc4fe9e50c4654443cec005825280dce35201b44c30c68f6e159e66f41ddfee696f21af4a1c9070701bd005a1c5a066e8d139fcc3d743567a14934da39b61b1be9de5cc71f0347f0651b4730907c7eb028eeba570ced058cd2ba497700176429b20ebadcb837d14fe8255ebe479bab71f06a951b101e733aa166730138d5c1da48d507b9072f66ead4c1fd0f8e9a20b3bf6859afd3ec6a8a15f805538731a1957a59f39772a9cd16e557d2f86732a9532bfa7794e320f68d28076b6997818b7f42b76a573b93004ea8c331b594ad4dffdf507770c7094fc8d2ba30f3f70ef8e4a36282ae932a9d85c01d960c5e90efd1487a788ef91186cb7a61b60b3cf30da3e1bd81e0c349ccd79124dfc1475530c08d5ab4fdbbe1a5a9327d8aec250fd010e230ef5bc25276b630b56615afcd83f93d845cb1cd4c1a10a50bfbb871bfba148421bc67c1e1c11df80302cf2eba730c8278cd9243c5bef6e9e623b1aa8861197ea68070f0a4c86025401856cdef0b94a430429993071a904fc6a5cd2f7af5dadc0efb4d4f2c771c03938f4a09d15600567342f3eb10a70a6a6711e3b5070f2969309b13de801784dfb196cdf36a929a3acd3997e1cff372565603d51147225a2fbb27746219d04ae4fc70d41588a76a98cd5956a37c5fd834491b175e4b8d94b15dbfa5fc7f050cccbabb4aca4bc89f5822fdb0494ef1e1fe34dd699fc11eb92c38e804725392f3cc84a34895d929fbbb79bc66f17a8e8979a48e22f87ab27806356fbd4a44fd1dd28e2f4540849edfc2531ab2ab8c8c4f0916fadd106030f7732fd6b4439be3afcdfde6de5d3b944211a99e7e39fcedea87f71b998aaefab9e6cb52d9a914f974dd8cbb85a7a1543d0b861d775aed5b1e98b0afe532006301717b7b3bf254f139d971e5ac4148171f1d2c242a481545d67f15ef3f56e512a007431bbbfd0fcb792450a6ff281410fdc6dd6ef114740a12d955ad9d35a1f316233e5ad3ab37a7da5f6c13d405f3f884ff2f7705bfeeffd26fb3a896af412760290dc7033cc62fa627b5fc116902806b633e5c325304c78279f041901f12ac3a6f0f50ab6e29b6697df4623cf7359d137750a54564e6b598f53b8455fdc4e06fb04a07ada31e96a77652f4e09a16b889756f99d336adcbbe42a5cd548213b24aabe0e9e80e49e80d06984c44b08f0c11101dbeb69843c6b270f5a68a0dd3a58255812102221e47b5f1907977116c934147fc3b903ce389457b64507aec157089c2651501b72c05bdd327fe7443aaa6c8b30ce0f1ccc610d05e3ecba366075855ceb5f12da3a9321b94a3b1fd17563d9b6bad50534232e64bd405ace80e4b6b9d26ffe77738eb1d7bc25c6888c41eb3da468b25f4636350464c7b1c206b6216ffff69cb7fb19cca6d6e06bd27da455c3bde34de5742c259e5360b203249b30b9f2c5f27bf0278d8807d4c22e4f37f78dbf38e2e5e5cc30e6f16696bf8c40d8d4d9926c74d287285af2885c2d67f2082b3515f0d168f78aa66e7b2a7a3dc3a955c4a0e29c64f80160790cc5076ca32a9a0f4ef69a3680f223aab5334a2b1be55a1dd95d771f29d84400d97dd12d518bac8b1ff82d1918b42416f278f75fd0810134c3c5c6343665578349fdfec6beeb925351538e3cbd48cb788e7c56d9769819cb94268a4fab0f3d58a78329bfdfe3b3e65af58b6bc19e8de6a04a0e36e45098c57a26b8c77d585570625d0e338b80ffb9606ea6de977b94d1d2b0acae8deddbcfe7bf5c3a8e50df302ccdfe33c4d67b60a2291da0b38c6b89c5536aab765b1d0e764166de47d269f1f84739be14044511bb04929b01f5ebf0612542907fc782e66d3734c4c80116cf8564d5ad7a310780abca535f391360f8db93d996da66b3d48feb9f0160277bc5e94cf6981d280750a5669406dcbe1893435c3666cdeeb24c8b7a059d3e8528f117dc139653f8ff8754d64ee0ce8d2d9de094c2eeb5a206133c83e6f8ac91169575003cc1c735c7e39f0f469c2e49c543ccba5e9807294bc9ca4094fac18671070abbba6b9fc6f713ca5c091ff011bf3451d10aeea8b3e939858ff7d36070bd5c8e69ddf1f272c0c8a891b40dda46b5687992bb109d23df983be3a234ce874732905550244873f4a8b9a871a09c0269693be013a6f29073e95f37a3ee8e4b04d5768de31fd8b39ca386d244c1b2adb0ce281ff083cae1f969b19f1a34723eeab8ca99da30f90ae6e01f1bb6724dad1fea15e9f29b45a7457f4c5b528d008a8f6267a67e456a0220e20ba921fc974926587db975888e89fca41e9a639e85dffbeb678d42d68eb47d406c66e5af0f186307feabb6ea9d2386bc0a43d763f4a93b6a404bd7721f5bb2bc167482c1564f8828bffdb3396c5bc58c67050b1020d73e9a1ac171a67fdb34ff57e9a90689035c1083423cace0ec848e7573fab61dd2be659d68d6fdfeb5f215eeedbb273125cc9aa2774a87d9c5721bbfcff236899d2c4744cedad00d61387eb028a25eb87d63cc49346b7ce9c0dc8a94639efc300f97ea6b3a04836ad8e855aa0519e28382bb62b40bb1a12cb871e91f0406847d2bcf10e23338a6107cc8d1e2aadf8d841fcd5a3af109eede67bfc59779d646f91d98ef63b7082e94d7d62d0a8abc3ebaccd06af8ec0fd377786c423510f66848321ed0f51a11067b41bbb478d9cb10137423ed8c2af6daac7da522b4a48b522c67a2fa9f020712d0c441d04ee30aa46c6fcd0581fc679d569ea3037080e922b491563d6f9dbbba707622717959672406c4fd2aef6a48cf3a37d2021ee408f7b484a1d0d80a21f72f06d0b00458d1d34acf840ed3607b116b667e5fa6e97a67e2d159a29a1e1d74ac0b9d7aba91a8ce7726d9850442e14bb906d64f32002799b2f78fb2f7840b3b8d7fd8a6526e69d8d1c0e553fdc991ee55c072beaa35e45361d12eb6d909b696e8c1951f12715f8436c3d01fc4d941b400137638b1ee100062f9b46f7a60dc8af1e40bb9abb1cb4edd3ff7509e3c9ddefaf9178c292d9b4217b7d3a7727b50ce0b22d6436cd6c41ee024f54042db3a227172e99583113729ff68a23316164bd0b5080b6f27fa8c38e504088f68d88488b20314a068a2f21da21bb1e5a016ce7c1c13d85574f6e84f57454ef9262972d001d835f16d4f6be894049bca71a4cb7bc5942d8c768400445adc0a0bf13999bf11b24fa8fccd104e953411c0c6bc4876c1e0d2f63f1cfad41ab8e82548104ca6a19c0d1bc63e60a596b338c926d491b03c96b8800c726b1e350e1ce215a6a17670e1ad34b0c78a24565757a86edcf33635ed43d9162a2bae6742c5c6a1044d37e80846ce0c17eca0702550787ba8077b06efbfbeda69cc440f73a3e6874b4cfa1f173f2cddf5b163a2c2497c876b9fd945d0801f844c6747a509634109085ed90e0f9d99931d3b6a005aea8b74e3ad586bc190f7024ac8aba45da65a428dde67e735ec61b17f19751b6cc6a36e0328ae564ec6a3013de1763c16a0bed6fc6362d95e01cee90d485e1780b6abd9d171c9b60e3fe61e87e8e66ba85b032ff556f7317efa4c1a43e22b642ae8835a2cacef3cc19eb0642afa3a6cf40a8e390cc66845f0e2b5f5fb5649a745320abf1419a1ee13e69a4289b37d5e112a60b50351d933bc52f02dc5e9529586f5a1c40b421edde8b6b0f2eda2dcd12823304b957f5b10038abd7a82589011c54562ff154d04ff7c80c2b7bf4b146679079c851f86a3dac55ccfb88fa9cce11e5effcb03cfcd035844f43be18dfaf200688a02a615b57fa74ce4b8c16213cb62c7fe514229f0efb4281b6e41cb4ae734f9dd0752845d5f283c54836968c872d1e9e5e126743fa79e172aa89e14f41afab069befca68f818a10a9a6f8492b6322ae409b5f9aea7fab1717c4f3e6a7d14a2e428737df873bcb66fa98d9fbc2fa2620cbb73e781a24dc4646e2804a245bbcf27136fb032f8f3b82e2922196ffd15467f040c50e9f2be33d320a564671c6c17eb82ceb03bcbe5c45b9a350ab29b6215af2f8b42b0a8fe7d4fca1a7c2455d16b1aca5d4f23060a1842ae1914025d3ed1f2cad4590b1456d6ebd60016ab65bdfe46a5b29359d81018cdc3de13f2b40ad040e0722528e90adc261fde2c7602bda62a37bc85fc6a37e6fa8785d4822834a772f22b16e599f3bf5cdc2ac2c737daea46a79cfa1b1bd257d8bf9ebed61f9c7d17e3823898d7aec23576e8e3ed774572f80290bac18d74f544695ce21f3f1fad22ded592942321dc499c1e26b86c295e3da79c9ebb9ee900820370006e73b6f749b6195a8933eb39d99ebc0bb0b8000303c529018ab8ba57e53cf4e703b80cd4a897a83f92dc5db56e9955e69d2b1c9dfcf25bed7ed4208f3ba48a6027672000f92846a5e14660b81d44bbd06384266eb0c42ec57901ce2a477774d913f10e3ca40a691e4816812a8714ddea60b34e5f9b32801d467d21447d43194bce77b787474446b4249810ed4165a069bcddc3203bdc381519c42f8e8603d7c7a0cf6f4b1a24657034c3c9e8f09a8e802471d1a607ceff3a539c1ca4fa2c526be2a4ee7d1117e06ffbbb173f1a945c13cc815f47bf708de2b290650e6952f2d6fd40daa002bf84f7905776af7134718d982108ce116e591830e803425a37f95d4be0c6f474711e00c4ecadd9b7064048297186e750e9ece0829b4b1f6f99c06a6b0a8d44ff83c540eaaf073784118607db24aa419bea57de03b1c83b369eb8c3a458079f862b76d3b67df83837e56005687bc931023e78f83fe98398598cd445bc04d424b62a28abcdc9c0f615c28f9b61fbd366414e0f05d89bcd665c35b25bc82f6ac00a58be47d4758b1d4f0b58765c5c56d35002ad254da104ef8557daea86e3584098e5225d4c7437220410105a4aee2caeccabf4121683d104450b7887a4cb781c2f96738a545a7de510bef46b6f4a0ed2ca096f9cd56d90405f6d36882b28a9c6a7ca8cde68edf8e0325a3a3805f2d90fedc3110d24fa3eab00d87115c5b557a8fb1fd6782ad01cfe3803a3b8db519f0b89631b5f2c9724c72d6b21f6b6a3a7b790d43120ae1129d1829458609f2f6a1f90517befa4b7925ca4a236939f9025e6212141fa4d3ebad47b15ff3b3e18b7adb494e24b1644693c0c526afdf203f3f088e8f1df4c65b307b2afe12c18b19a3c5343962e6074e8d49b8face2a263af322b74e8f3377f06984462f0129dd06700ad76f256b710beb8bf76beab8041399308af03e3a69d83c0d52760698613db6500021bc695985bdd436160209504a1ac4940cfeee55b3bd642248e0660ae3223a4303340bb10f8f0d96187ef007865f0c23d7f083f34aa138166adff0aa365e6ab1af8748cd281394efee8e90f1d2bf53c6e5f54db1203fdbba04cdd61b700b2e6e471b8e6e5aebe210a9b90469f6eb5eaa27fcc3fcd54e2a1877fa6279338ed533142f6730427375600413554d5d2e6e943a7d2a481937abd578a852cbb69a1eb1160c5cecd9ba67ee5715f50fcf4b36503567400fd8de90ad4284d5813bd54bf0b611c4565c0d8109a1eb8fbd38838192da4154b2ba2aef37d70de97a71a4e6eb0f0d29b7375d5456d313445dea44abd11aeefec1f1673ef4474ec3d6cb0c8cbf27b72b197dfc91b171bb82e7c64ac7cb270c294a5e082044a1048ffd1836eed8e7ea3dca9a5acfdae89214a71832d5cfa40ef7772d20014693dc01229397a0b840717f7f30b508ea040992ea7f9d4309609dd070fbcc10b9015cb5942ea02e85875aa28f735e8e1360772c9432f6c5ee76845a4ccf296a5b6c88c5be938e32483329d3fb12d65f4a7101d4c470090d97a00f043fa1f99946a579d2b432dcb8d330c66859cbeacce60cb5d78a10333cf89e4eff4562fa3132c04036dc121fa38213d9e31cb2788c75d74167644d4a072c6b8cc6110afafd0207590bb34957c2da3f56cf9e7b9726d58d65a87c364501d88572c4e46a17e39d9990729df7ae19db933c9916fa103ae9c029aa77e66cb834bd3385110740ce750fbae492961a4cbf328c6f8f92473888210b40c115c9aef4a58e43143180c2afc56d87206332e989623427d884b8e76300a844330e1cd77d800b098ec8a72b28fa8d1bc7f8b8aef62435a40f0495191a5ca507b69e577e73f02a2876f7e04a84a80bdb3a1a1cf9245427e4a2ab3b4a208de1b1646ab929ebfa37f738289fcb92e84c52879ba49c31f04ee0df49d3e69022a59c3927f85a69c2daca6217c7b738419d30bffaaa96af7fddeaba9973dafa9a926db680684636bc09d6d0501a9c53984457b82a70f9754851ea79684687349a58be9b47e0f0bf55d339cd9014013ef191c7c5a017929c8f065046440ef4ec525ceaa91dc3c64f43c5541d268842b8938fc05557d78fe2860e9c61b559e6e960d796d313fa519b783f467ae5f6fc24550c68a5f48972580a49786f955d625cadbc809ce608fbed87c613735e73a4d18267baef770f567117026d93c0bc87e45f2855541ce72e7e67a943f2727cc1f988066f4356cc5aa01975e095947b888f356bb128f95857f97c5cb4c864842112373c0e81b425ec922fbbbf7f2e992e7580f9dd607c838811f4afbcf7eb960131c44c4fb11b59465676ec39438ca3beacba41ae7f2a3c364acc94b4daf4696c4d76d568843196ad8ac6eeccadab8353e0c25fc16edcf7a65502012cc58b33567c916ebc8fe560b82e451f3b4648b84885272de91889854db1bf06ac2508abadb4ac28b43ceba39b2e56598f0b9dae258044eb944305b405a06b1121f3b4af1d5f00f228b4b09004a22091fdb34bd6f143a27fce77eef3d37e6067726935ff6c02287e7e60ced7b7d636093f8d16c05665b03cbab32e51edddead2d4db442f2b75c1c8010030c02c75e7a0e9a21f8d57d139e35dbf1f2ce6b26db97d63ed8648079b1e861de217a95269c408c954c28a54542732c213060c1100b4039264319e9f67ae841241872358600f15cac8ee1c1079e92899cfd45023d446027417b9ee3e15b44a69c5b0be447208304812931ae64dc99cdf1c08b76fa4811936d5d69094fe504dad81d2d810b8bee755d910a5e817eb0c03f93c1c18243f1972d2c38bcc57611f06f91a5a6f2574219767ad33c89154f20d8b098600f69742a2b07ad7b68ce2397dedf3244b5fc80058e9b1ffc141db9ead0eed66253062fd7398215b77ecc24e8f25cb57bb37ba202d616625748b4928bc6e44cf56d8b3246e38c2ecee186fcc8a48c65480431692e54ff512ae7de197e88c811cc0074007703f97a339e200e47a7cff785d8f5b43f818266c94641ca3182e1f2c4bb3bf2a33b3795521a46f2824ade6a4f938af366818cd629c8ed90aadd9324467ea690ebe1dafe8b8e204dbc305d00d8e8b972b391b670f1750ff3765217d0c07dfc1455db40cf1ba770832b14ed25844b87af8d34e0340831c9e3cb6db4347f5bc5ab9708dbec062cca9c2cf92c83034722ada93b6a4add1bfa187f9f5316205fd591ade72587c832726ff0ed25c8c46c0afcd0fb54358820f92533da5a0cf222bdaea9c23e680b923fbb86ae294f7a762b19d27a2eb05efd10491d74210c4cd942e55e0b6d9c8ce2c28a742e157ef3b61c1a0ecad48f2901deaa20068a4cfcf1628cb41407142d0ee914523703d1ae29d20b10fcafb0fff4c4d13b6585af47068b787eda7595884b5940ebaa16d8dbed3e292642c689e88e515018ad7198cdcf549eb11ebaf04e889cdc378bc944d11cbcecbb9b74ff08430e778461b1baa8ae415e066b3bd35b3d864eef77db0afec13ff893f869752aabed9e5d505d149c9ac080df8248678a716b55703948dd05539381011632137bb0f96845117d78ceb00ece53352e5047d9611b6b4b1d4a13470e419eb99e21c62220f7484c8ebc7f223653eebb2a2fd714e9ac35314bb26fa92983ddbbdcd04a1592b540ef5ba739827ecbc2487dd706d769b33ea416a7550573892af37a7546c83f6c0a66ac7f36ef5dba93c6ea31eb6dbf1f2e18c4651f868100aafe74614224214dac098f760b4af7133ffa0aa0dd0894dbf57d9ef2511ce5d718fc807da8d50d51f092995b761c3a4ff7004e8d548fbe40754f87ffc19b1bc5771e4702ede1bbde30411ab639e02f046b51ecd561687e68b197ff02125ed09f17b7c5913a810e1c94bf3377b3250cf47f38a60cac78bd7e3a1c3bf36dc01fe09f74c00c6cca6700a8dddf97fa413f10b6224474c24c8e87fe334a5ff9623024389830aca6d2f223d1bee5f9df29ef213f37345543f882882f2fed87f5b4ecf7344d269280914df20476a4f6bf14cbc61cb995a42046f0419e1859f14b083c944eded258529973f6ec6970f51c886f65da9163f81d3d1a07bc053c853ddf8d0a1aac1f3c85f5fabb03bc6898c1559663b34e74164f5536020cae647a02bebca6cfde879489b52ec3c26e1e1a33584d2ab6a0895ef233d913d1d5f0c50dc559c9151ae3a14e20b6709a8e9042222a7a05f6f94a62bc51ba04d87e01e10eb1574eefd393ac3ef04285327f0a6cdabbc2b011306d979ce0b6094b0114df36a6f09df5b944073fc14241d0078138b306f6c311f9eedb4d9e6fde96f0d1a2725c65139a7ebc06a4819f74a0a3bee4c876977770a9ee64285c81e8d1e3a600a2c7a3df5bb396ae0e34efffc6a8fb737eef22e4ad8c8fc39af5798aa69b4e245b67b6496c11a4dbcbc8f1711d33ce50e3ff98ca3d6ea3119e5dd3bdab2e595b12300590eab3a54b46600a433cdb00ed84215f600fd9f41af58894943ae930e47000f0199400281cd5b609cc501daaa471d9e6a7e4a170a232aafa5b7d5e64db5c2dc703993eaf391bb316799c90572e1ccc2624affd6ec2fc83d87803f2daa5e415b8d9cda8025a3af10c94591a3329523dfcd4d521923d13db1b1b0f196cc6dee1b01fd83283a047922dff2480cd6648a71b38fb956b06bbd8188bbe09c4c82896510bd9cb7693964227744fa7cdc26e809e327e44e79fce2b0a51960154d7afe458b034af6777793b8a94020c1763b800e7973a5309dae5986057d1aaa203eeca24f15a6d1460942ef541ed0c0df3724aacf70f7062c2b09d179067800c9ad4facded4dc3fa7a4910da143ce372ee9230cf4919f6ee0e6ef7cf479582a1033d6e6babff18bc602bae6a776afc268a65427e1bd80ba2282c300de75ab1145d2d0b42a7545ab4a254562d5f9bac9f11a4d94bbe15121ea8efc126f83a5f402c7479057d73e3395b2830c72bbd0c834bb1af0cc46189ff63cb6eecc458d0568c2d7a6e957de5d4926b5e57a1816f27a944cacb40fc73ae8187eb91af08ffd7a7013896fb7e2e47fbf23bea13792f5b8353743a0976e4484c09d4f66d0ed773b9332a5fa421d6d947aecaa87a4403185bee0716b8ffc66d4c40af810c99bc60eab30eb64b0faa7ac8ec2903b7da8b6bc9ee4dc92d5766ec280777f61d4c18f0476856d72fa115c3eb861844134dae60c23c6a8d8110d6efd0f953c385c4fc93d96d8c39661609387b4d96bef0adeefc5d49e1a331113c654fcfdb31ce4e310a6a2120efb80a4c50817973aae453d00b34822885afc2bf38ad39c3feaf34325bccdbca384f984f56ba921eca598d2e1492e7eb3b6d2b2a95941862a7b10e8da9e6833e8f7c67416bc8808a0fb9fba1dfe8413b50a030dfe8bb99cc030dbedb5000cdf3417f465d7d57485f60a3c56ab435e2fa9947633c3c916ef80b74a9cc804efdbc34381063a550a136b1657561b0cf8f4f5e4562d6cdc24127fb774cae28d7fefe4fdad7c1cae59634d16317ba8647d947358cef793aa1d0c7ad9c69a3ae712ee4667ffb7594e5fee7d02996e804fcc63f18c53138219bedcebf13b196941a807e916ada881988089856804646652a9f3dc917e7a071d5e192d386978a9cadf227ba35f59bd4854e2ecc71b2f0405b6a51f16e392133f69b8207d002bdddab21a7529a18dc1e348c46eacc182fe1bb0d3edda2ea72858fbdca567c7254377bed30c13b67d1977607c3fe84ad8858be0f6af9b24c867ac352dc743ee99ed116fa648ba13fe482dce27b5bd625cf1f68f6ef92e6a6892fa1772050ed09ec91654cd9bbc9007c484b094d1670f8c61c4c5bba6e41aa7acb6323456a54df9627d9dd482dac86f3caa61a7ed1780262c32050555888877459873a514a84d17c508b5a991d41ecce6599dad15cdb3e973832a1b4a3dd220cf53866fe78392aade844429a2dddfdbc290ad69576b752c340e1c212943687959015033101c00162d63b9b0f97e072ba4dac190f198d980b657926230213b8e3cd37ac49696a760f2ce21ecde800ecd43b7084d279fd66560e2b5048d22a41313dd5ceea079f548bf170c3a09c6cbad91b47265f0d5004a51016dd548b317ca6cfc48a1dbd9cf9f7f2041eb5c0902487735b935d3b25454711aac61a12336d8f2bd39c6a8bfc0e7d8aa02994566d11d2014715b5ccadb0ec85271ad40018720cbeb4fa69a79f359c2f20da227aa1e18f8a5ba81537b4bd53039e93a4f124def58408a5fe2a5252a37f679acb2743d6722eefa0c08d0bddb53abcf3c474eeaf9b5f7690e038d8270130abb6ad702e82e64805790a24086761b3d132c97c71992317dc1e2a2ccc66044e4e0728f86c66b4599eb0f7dcee2b12e639e8b2df9025fa0ee2aeab5208c20f14cb83b1214b04b9bcd90e4febebb31e911d18c72077eea11377bf5594425da2a6bbc8aaee0f0c757287584049c371b74702e042445616bcf325af1d77998ce25812537fc75599d52f67d9b21a2613da4d6123455f8f93824cb6654f64997bf108189056cccf6d62e6fe5bbd51feb4fdd4ff972bfb52b9e176b0f0106de989571d30c0daad47a839b41823ead2a67cce5b60445661718c8734fba86334359506ae7783eb63ea7752f24b8e897a34316d015b87e45b75376a6bd8d95e40812aa5f5fd4fda29b850d76465bc1071e6d2b4455e66d328bb56c4cb56e0efe11331971e057a339cefb8621d4443c874cf0b70b392cdfa0e98c10137d8d086c24b1e135b2516a57658adfaf9e1f4c76a955795e8f0b85b4ff03cddfe1e5f826b95150932afbfb6f05064961f40ad4a25222e6bb9164e065964e35aab5f7ebb4f900c3e233d2afbb89e3a5306944cf5fe4eface3e7095dfc71e9e9065aea25774932d8dfaec05271b0f82fdff6915f5db2d43d1e03830a50b6d1d2c6bf93ab918edd313ecdff82e4ebc755da082efbf3fe58e5cd1038bf7dd03be311fcf0505f79f8135355ee6f2101bfa1828457dd6b9cf245d571aef3e2d882996a5be3ec41068ad7d92afc34676988d1a52b36c5d4baf518c186fc508205283eb2d00f92579676175c64653a3f7daa7a03531828d1b1ea367977bb535875f674aa499c13fb8403c1b5aae0d33957ebe5c72438ca1b77ba2315369944f33cb14c18a475de669bb1694905a1fff78d8f646bdfd7520609a56fa2551d318f8741c7890058c164bedabb4623d5fe1c7c673480d12862860743281d60ee16252803849ed162981e68026b19e98163d5404bdee9a5dcee61ad92c3545272b746bc65eeb82c810b95183fb9ace6365e8003b8fae4fd145eadcba90ecffb49a27d7fe9f2f6fb94433467c8e00fdf75e2bbb14070dceee67f87fe84fe02f8c572caad02f8b91143f7449aba8815b858bf13ab77c19cd4175d09c55f3a9a08c69fa8811230ed76a912be44e4b28c7c2289bc54a70ccf7c4f00024e4e79c900a03bc622e5e225f3a78da8e2b410f55ac187e1a13906cca46de89beaa9bfb7c79af50a9c078302e9a0b1239c4cba45af20481d27abad625e9a44e9206aed8daf61b4caee3d6b03ad06ab73ca9467c4aa7eb6f8140319c24a395db15b1d508faf31401a224b0bbc156db5465624f27f7d2af60bb5683d6c30170f6a0fd5cac06bd825a8fc14c5b85d1c5de0eda660ac81844fd439ac7695734aa3a0f26e605094e189972d8eb5232271aeeeab113e3a920c6a16cc847c21def940b9b8fae0239e2c09e7bd1d37929a5d2aa7f3b5ce7c81d53bbba51131f7ea845945f3bba10bfbae4e86dae439f412b2a05fc90e567965ecfa56aae7aa06833ababb4b6909c7da271b60b7505e28773f9e2d6b535778f9c9a5398554c09c4f10ef61c1a329bb97e801ff57c60425e7b1b8ce90a87b67d31efdec43b7845d7834d6b99a22371c9794d76941d9872d6e071ac5a6b271e1d966cab20f470a1cb0dde74af19bdff1400d8a41afa0d1a646e148139be75fab4da50fcaa83cdb9c7504817e04a8f297927051235301e1adc9d748cbeae0cdd79a314a2fce76081eea3fcdad49f77880ebe98b3f76dad63d508200cce6eb93f7067b94e1a04b430d86e20e40a2ce1a78fd3f06d2b1044827941130b01a466cc86429e6edbe0298c73ce7f801e4cd3e1fb7140a7a2da2ceeeafeba7ca59e7e402cff955886edd2876a1150d475d2313d52bb5b320c0af33536dfa43844043b57cc0b56a31e506d5cb8d11f0e77346eb827e1bf96e328e0e2cb144a80989e81b180a97aaab3c4d5111a190f936043ce7f802f4f29a3581b1d1f0914ada2490b1b0e54e8091f13c468813ed93054de75515be02e798c0a30db37baef63fec0afd49eca028f0224030e8aeaf2067b80976d3e35b776dd68c5a76e53460e49c6a64e4dcbc6074ef820d0309056d34af93b833f2885f438de5c0856523068f0eb2114be8a95781df85db90f596543176a5a733cd9e86f83eb3673b363b83ed1550af6adacdfd76271d1b6fb35a32ab05abe669c8a629761acf346f883b9d50a894817617fb201066e60e7d310fbced3703091827516e0d1fa58ff0221e021db0002a43081a41bac554b231405341fe988e39138077234c1da33785774a384590e0a8c64404b37529aff18579e68d06acb6d0e5324050f69117b2a8b431b3784726b2870b396aaffa8ebd9f18be6289d6aa0b124fe8795159ef1f45967ec8a0ed9d8ca7f112d38e0b3875b12b7171e38b035882c7886de7b524713b9a9b41e8ddc1d4abdf619b4086456f50d7b1cc49e54c4b81906f29257cd7682cb84d149c793b1a795bbdfecfa786be45e6b5ef424ffa159c2761cbb88fcec33b2be8d52b7314cc5eff7de2649a29ac4fb8ef23f62fb2e4181b2ee75f24086690e146fa3885b12b06a1cb499aa13a7869d4edd2ebb47f912cab2888f0cfc5faddb6ae553324af79d828e8e738d54b7feda4a8b7f56e11a2243823e8cd81ef78dd1733dd6ee6a882fad276cbc144ac75980c5de0c6e0e74e34b489135d727457dd6225d0d911e81ea9c849db6d85dfbba5590c6d075870eb9c63174468f4c0e8a92861dc35936da7d1950f676aad649f7d9e2207663372717d16b3a4b36aca75a3c2ab73bd468445b5985ea0ea7ff20e401fcd197b8be8a92397b43183786497662c368e9bd9bc0af5e9bfce5d3f98cebaefe38e43b81375a0dcf7919e89efa0e1b60468b6e9f93f86bc7f641286eeb19b32ad6a468890fe4994c17200f350124cfc35ac50f6cc052322abdc884ceda6ddf2854c493f2c189f52ddafcb7635dfd7cd21061e79ac1774ef47796c81c810051e6a09e69db0894c02242d9ae268ac477c7ca02f91120fb4337a53a181634f9be48fc28bdb3eae84d1fe62166890082ab601466ddffe9beeca01fc9f5ff4695b5406e6dfda4ad93bb165bd5f904e5238523cfa14bfe23225edcd7b1a888f69b1b3da7a8bb5968ee04076c8d28adf4474f14f35cdfed5e41bfea868d2a26306bed0f16d71cadb75d0d00c885912db156cc44628ec1a1242fb814274f9927549f3bc6bfb05911068f643b868f0626523764497a43f69384a55ccded7f4e41780cf6fb7c579a04c0e94c696c7ea0affe7390c7b7b16597ec9e737f2150854bfd1596cafaa448a9f7ec6092416e86d09359114f60a04663e774802ff7aace7a66c0ed7266b0269aca0b15c8ca66db8454204727f33e7d47c40b3df7a8c1cbba6a8330af79a65d51b2238f2484de3f29a93e6222ee852765266ef30f0d7e21c9c38ca46abfcf4ecf6985f81fe654ec953869a59c0cb6b8658473a8a084d378cb986cf56188d64e3025baf8ec06be0efa787b0811464225fba384e02d95b7b0941622e0025eb8bf34455f0520029eedf2a614f67ef363f28cceb1d5bd1ef550ec44a40fcb447a75e0b92a0a1f5d021cd2c271ce47442a00a89f0bd51cdd8bb9512acd1425c58d5d7169e3217455ebad27819e74ac57361c007cdd238e36fc677b25d96abcb3e50c99df60e26ca5401ee02693d6ea0c500c3f47e23606128df6c06a93271b67f1b7c9d5e30e38f6bf0b8439b0b22f0050b29be1d70658c455871bbf5d3139ae18749e41db54e5651b5c78572651b635e2356c24a32a97ad22985ac7db1c9c72f06d0ea6b0f1174541a1e21c2fde9ffa7d3eeb77566e5c8938861343297842ff883f3b26d9b69913c42eae333ee365968ba84bc4ad198fd77b99a85f73207276a5da6171cc0432b5f1d7580e11a6d23b427fd55408a73356eeeb79fadb0b313504338b59e0dab126d755873007ceee2a60a9c2b1a8468598f8523aac1453453908f4e807a80a54d01c08bc67827cf4ca573ed6c2b5a278c14084f7d94e4cef0916d4bc31e8f8e9843ae0fd7b5b576130701c3f2465099d9e1104c30b3c0059469b2a7dd8e238ce01b5684c30d8567d2cc46b26d3e372732b61c452dd0e45a41c01e29440c54c6ad73c61d03d2e0a55dd0cf5fac4e4ffae5dc0b96128ea70e9da4563e6d255b08478571d3859f0d09c54bb93a96621ce59bd8df5b7b04abdd0e592ab5535f04fbb23df083bf1269e614bf2c1a6645ee5a59b23fdcb3c780bdc6360d3652e15e2ebae4d3e02ea2ba03f14fc964a5b5ee4c4a24c624a10287ba52f9a445fd68420ad86222750248e15a319c056ccc32069b89ea0bb05439456f4965732f0f4397262488f1f687db7ec97447c131e2b53cd1cf4194104b02b50e97e6a7217fbcc80777119565c023e1c80c443d44976a5aa3ad59a4374fd0f594b2a23348dfaf5f2bd205ead8f1d6d38ecc5653ea6bcb25f6c75d233538cf915fe66ad81f2c5f60306c80fb28cb5d323e1acf0a661549e9d6560eb3be1d913f1276c4da545b7f12ec1b7157a4551015d0b6cbb698fd34ffd30af09ce920367ec81b284fbd6be96301a56e61ecc62f3f7587b22118b3d94a7f72ab45f3af429029b2ca6f3370f5605e0c5175d198828ef0acbc558c03ecdac99e1a6db737ec7ae64342a4abcd08f5fb218f1842aea81174057d803ffbb121e22be1713f88e04f5d33efdb2305c62a9785f606687f68ba7088c8fde732ec078f8bf9bbf29c23e2d51be52ef62a75b656570bde70bbfdb3ae6a16f59e333b87b971f5186d74fd9007c15e049f8e9db2c078d7456f73403bd46ddee0f3ea95fb63e210d4a03b4f4bd96af706f7f04232978b0a0121c03a065a9af79a16838a6cbc54c44065ef509935513767ecc6c4535a1a602c21debf071014257a8f9631dad23c24b048df26c598efee07248fe9f313dd4531e80bb7c0847625c6a96f30a38d80ed3458196019ae720747253619525dfdd2e1d8d2803913149dd362fa281b174194b3d5600409a9544ad7163a2691b177149d37a73431f26353d290951dc6f0c163171d0cb38a902ecb282808757106ed738467b4e4190679340bce30be5ac9f1b3403c0ea298b10d952457f079392c3a6a86c795508e18c94ee82cc2c5b1fc6ea57aa2b9361bc73746ecb0b88d95d09bc0b0aa24b0ae020e6d3573d54ab71998284429e40df0eeb7d9ec2a6c3f0201e96ce4e343e3751a57cf5c3acd13ddd59aae67dd285437ffc460d1bffc39325553718055c577b74a9b26525848d2e03bda36446c7420eef7eda65731dad9b41db0f90bdb4acbbde502025bfe2a2ae236ec2f62d36b2ba29d5e531a9010893b0e1589b44d6d2f4ab23fc234de16eceea9b9a92b46c7ba6610c5e12b47f446ea7aa253979223302012d0ef52d38664bf5156ca41dbe92de87c9dbae31630c7ba530865e778778b3f2b30acd7bc544845eae5a4b668a121844997e30aff4d0db5fd98d2f8dc919fa9c4b631e57dce15d176ffd19be8cad8ca85bbc49db77ba93b3e118b79a4a0854d1d6f999f5cda8c58f74d6a78da597af83d606374005176cb6275f8327d4add4cdd9ed2b25bd7b03095b532b1eb0969e9e9b6f552f37df069f37af8b3ec35e26905e0498f53dcd070f88743097290f491e815ef56346e4c8be7e5d4f9691b97f9024723f2e04e95a0c2848712af01475da21227a2fa33f50b9b0dbf4e14965cacf6a590c75dd87dbc4b12f7bcfa496e1a1ab76e642f1e2ff84de53cd613d37a750a09f7e15ac623f407104f3ff04d3f47f3886e9442082d048b1a758d6e74cf6987048d403d049516dcc636e2c90701290e976a19f67ae8e39b046493860b925bbf9c707d392b3ef46843306ec3d617377c64d951754ca7b68bd9dca3b7599ab20c28b9eee92ab1865d8fd36eb1d6fac232ca9313a1e16aa43c6188ca1928eb3cd33d2a147b77463f2b15af7216d263c8d29385ad09f821e218c2f44a58d1951455693af8c90f6f0c07aa34814c727f261c97bf51152b870e443a2b656ac23193b7fd6a73cf75e3acad0a985ab656678655f439091716beb5a43474a9b3b760f6b6a4c1b202a1abc115f7b9002860d0c04c827923da0c1dabe8d20933645e0640430db44be23e7bc43f64b576fbf65540726343f4090d1c775324e8c231381e743487c02f8d66166a2a535d0397980952c8056608bb8079eea2314cbffc97095f07c81ccf92d18d350eb4695545797efb346010ec02dffca4f18d2e08bec2f5ba29c0c22289d0cf16f3d98c09f3324e47e8d20f799d8714afc75d53d831763ff00f1495f4a06dcc5bd351886bd490d9fc3c079ef9c37274563e1822286a30edf8ce8f5816cd3fe5c37b1aed7e7fb81871cf4a563e240b07810c17e6f0c793a5cd70e3f0d9b7f075eca2373c812d22b515a30b526089d9fa5f4038b145882c66f7c9670fd8d922e8a5b1b24ba5607e0835e0cb02fb09581cb9e312df084b39323f202072bef034c3d98d02e2f9421901e4e9320b8ff01ee5b9d54e36d8b19996156dc7e4664707d1739aa5ccbaee4e4ef31ddbbcb1ce5b9ab471930c6ca73e131eb7dd278918ec0046018d280f1044524035f945df49eb586c61fc568dd36be3f14135ffe75ee86c8f3ff673585f7e7ea665d617a882321542b9ea95821795f5f836b22d5bd50149bc7e65cb037c4d8e7686dcf867444ae2130a89e83d0e1d42881b0cfbf7b6f7ef0d4d5e1bdb4602cdcde2165d2c5fc557b47301ce376d6a53cc733a5af2ed05319604d12121838a76c612142b398b2e3189d2f623119c1abb17eec9311c25e5f495ec9b3bb6216627c7c7caba53c7de75efaf178ca7415e167f650f2955bfc74f68fbb1e8acec2dc65de632154c4a7a64aa58456a29f6ed68e8fbfefab29a1119e5d4d5a29ef3abe63ab159fd548d3389c576e0e47691b1d22343c785e1017414ab726a5c3ed409500f5d94c197e83ec378f58803292843b00c11bbf61a7c4ce229d5cf65d75f2ee96e6651e88e28491adf9e919dfd0017e2883ef5f777e3a4e1f3f7f56728ce542305e044936234f11a143cf21fe2478653cd6675b5a964e1197e6d268414cd42759193ba41cf227a75d6304420f86653a3256ecc2edac73807a103eae8ac934bf9899cf7f2c07e2e3346e84562bd0e5c307605c920112845bcc087184a5b0d2ff0fb6271f47340b4d894d8f2b95057ccf1ebc902e0030a0e6a75ef3436c4578d49feee56eb7eabf18d5e87653d59308024d700adf7452d491336000b13e46b86a22919913096f13f5e1063b1059e3b4111bac1569db29d3ff2fe639706129bb4dfd3def38abd117e3ce05bdf3eaff00608801cd201c66a12e88bc4d7c80c1a80eb0441a3891a105cb46eaef72928cca272d6cf295e1c0c8d3d9707b1deebea8c3ad909de8774ee4dd5ce2c540c103b17a07417edde5ebf857eb55837dd56a5ae5d87b336e105bde6734ab2c5ecd249377ed75f5a3e8f6e7fee25f5bc4d5201d86de4ef0b28c5cbf3f4a18aecab2a00b90874d8a9dac2fdecb7135b9f0cfa8cade1cb85dfb4c2a03b02a5e35b8963d2af01b6dd38298345a7290e7c6ca72f481c3fc654754e3f8e4821614474198c866ed04c81ed80ced6eb2fdd09a304b1327cee5aaaa99fef3e3c0a2ed7281537d85aeae5823cd391a77ff07e932b4a2b513b89ad0aa80d9020cb047898059092532a7c6b136b622c6b4e2ef2f5f95867240988c96e12c8c3ac2b13ef0e2163044edbe5f44603556be416fdfbfed0ba7957f27830f8a557d2a67c6aef10c0d52a78221d0ba4402708e2029ec2930d825fda2c0eecc250cd17558b1c6882210064624b9c3be6bb683b151fd725b7d2a979827ff851294e67844157789497c3ff9afd3f004484c13956988dc1da5830290ee743a4d9d06ace9f6d63626efd08e47a0ae8d00a01ec388f0999831ee661033685f0036d52343040c95e767b27058e1dd840d59e279cb73d08b9b96314ec6a89bbeb404544a2cc2124e012e94e4d2a05002fa846b392e326a37d0237ae456972f8d131e5172be5957a41913725be1f83492d0e33fdeb60fc3667e517a23ac82d1fcb962c46d38f13d907a713fcad9c66f2e0e07c37d0b941fd1eb6c2c2635c2c3b145010c190d1fa4ffd4237e809b04d9cd8db8d27af8daa46c4631a23c77e1639bcac865087efda18b22a358a75fba39881ad77566c219743c493952a6c3654330264d59450526a7f5c1188cbe99c6227ec95511ff3a92f38672e8bb2e4d413baa99701b6612c9f2fdd4d67b7a913552aa9872c446e30af819714f9826d7b8c1ce090ff2eb42e8a3af81da4190d71e167f286f4b5919d41a3027884e10df21e09e6a04ba95b3017e5e164bc1466f3c1ee1e2f17a90c7ebb173b5ece930a5574db1587a2f9b704ef58e3826c10921b398558b425e1ec59865cc0a217f58eb442441492a4a7ee0a6ecc6ad6a4a2a96c278bd42e3ebb79dbbb25c9cfad496678c8ecb7ea1381db8ded478d405b328beb7cfce50c8be0ee861deaa861aa7751494ae3efc763f9fe7059cc2e9e71596bc41fa3503e64925e915a6b637a5edded5e1c0ae21ea29677ac01201ec5fbd3f01aee35c27f63f04304c4b2b80a7cf49a2b15811e84442ffe7f5ab60b1f26b6fb9be7bad18f9425f841c1e9b9dfc71c785d1f9a9c1323990523123fd2fd1ca1fa655b11ec00a2fb673df0ed3a7055f20621c7dd1f617ede1e9eedb2019eee2cceb25c4c951b31669d693ad51be3423f428983dc924b28292eba95624ec107bfb41df581193dd801e09106aa55998f27c99484b1d633b9df28223eea2b68a7b5713e6bba6c5c0e210066d26bcb43ecd10613fad964af0080138acae0f8b9f1fd2948fa24f43dff29500ced2639b27d4d40223cee04fb393e6bcf2b442a98c360a2e56e926b3d4e24c433dd4fde57101edf5fb269c3e2f5ba371b945caa5684ac5192e65f926c3d122d39d07670ccfbd8e00d54fcb7d44116a33cce1e0b8d8e75c5ed7720c1c10f3550f33262e1fb44d64506b750b278dd9fa2ad71c260d61ce7a76fec7df4f0ef45c30fd6cb49817d9f2011a071f0759351f0e5c9b53146ff3d1d254135a380bf7fa23c27a17c24a6a979eb1be464f559f69b45a0d113296c378b4550b704ecc047729773ea4a6b360b739039fb28f0039424630a9a783d071df982a01caa1d61d4ade487f20faf9519c82bf0b80ab324fb8fbf246c50cc5c20b484133264cb014ca576bad2e20d8b659d5b802760096d1744d2fc1253910c2a79fe631612b6ce270100b535bf1d60d74b52a286f6fd2b390457310cadd7ecfb43554dea9a4e15211ce4dd41b3468383d051866a0fcab48afd81ea598fc7115937b7490680d801d3e5f744e18f582e3992f764626e1d3e7dfaf64d5b40a6cd0c9389ece7ce70345bb0fccd00a971e94dfdde512230b46500f0317cc79c559fa9f9034ac4d1abd19c792538d838d76ad8fea4745bbdf4d27fb0265f220b70d5f0aea022c782c3c3f2592ced9b1ea0d1fbb58b2b4fec772232ea82d54a07548daada2fb504cdcb202089051481142ee6d1f4f2d31580b8798a9297a1dc1058d5aa09737fb2149b7300e1329e815cfe94f28e794cf6471dbf2673dd9906141609c8cb22200e6c1301be592a422b50f3ea240b2588b15ec014e4e66a9e6d8021454a14817e34359b98ae20144f3c8a9a512136294f61ea4ca49b24d7e8d9a5b22a9381a27e4bac91bcd9801b508af0c4f411f0db7ee84d2571c8645a8030ba6c761e95045de5869ad3bd890bc7135bb8304de826e64326fcc5ac625bf1227c92f60a4dda75822344b144d27d596d8460e38683b1442f720d166b403e4d09e3d66f682c921d28aec99a0acb305870fd4abb25b07588c6c5041c89fa22e67b00104e0965c8396b533dc5ab0a6336e0b0349021380a9f98bc5b0699e02629d3984c1cbbca0ec52eacfe9419d90931461dbdf7a72f66e3334ef7102aca80b1658fa63a3b2794d91828a22221e9c13eca9df725c3b3b97e7f35c5ea2c2265e6ff91ad776f434b951a49f9c48b91e524ed7aad2c3f71cccffc3ce1a6ee04d9c600da591cd20a50c5c0114f51fd9220065bf78032f1b6559804bb8faf4e3ad88dd2853ad0f5a56baad98710158d4a084f32cac0b35c28e13d94bed97e9814fedd03967effa30c55bb1b88870fddef660de3f9f508296710c5bfd9e8dc7aba06defa4df216e336141a449770a2a4db97e3b572691c697e0c85dff37df98d386f01a0c92f4c01bde40536cbecce395b0cb98af18762dda5d444569c46180b66bf30f34bd5bf961ce82c543311e8c753cdc2f5ec684ea9ec23537368c70671ab48055e5f07398b7b251a2bff17eb58814928f489ac33e8048ca4373aee03a5aa94a640975fa970804d72ea8c31e9b70df4abc088be946ace27ada1e4cf1fe150f514b20098787a8d213d66b49dc411b3ffe10f5914c89ba0d630482cd24beb0bbf6e34cdad6d5d435db77e0ebd387e0e26a3a3e2ebe2618e3a2e055a59664d99c6fe9b709b006f905b1e9a5a7c4017100efe7fef84b88dce9bf7a78f570b1bb74cd285c3f2c3625c4d8b1838b87452dd83779faaee0b82c2a278859bc8d670cbe6c1938b67ef05758d0e5b2a68b02c38764d5575f606b16fa6ae3771410dd97078afe35f86ae09ce552cae84d6c7cb1682534fde9bb6af774253d65d8adad13027b7af14c857044ec0d0b66540c37c1d77787dbfb7e62fb7afcb145f832ed9ce88abef430794898c41c0a92f86992f2ac5632000202298675ea7f3841eff38f83dde52c6697cef634902966f3b14e91628b92e03038e03b12bdf33dfc6b61050ec0396b153c4b0f456b0cb32b625b624ccca3b8b09384ac4dd0c028c1cbe729e5831dd4ae4df908ccc90cb4a4dcae47cc3a722611694b7aa2cf512a18d10732ca9508e7152b4689e8f29bbc19a4c467adb9dc972d4756f5989d434d07ba82932f04a77a0ffbb8d3df12d07fe91eb94270c6a62bdb2a29e0b18e003dcf6a911ba9942cab7aedbf3d7dbaf2db83b5f5dba65bebc460bb3e1ce08031363ee7788d42e860692f3f5d60c6e0643b6f238ec9e11b3185d6c0c649649faf160f01c24f06d6f5f603022dc190f4e2942b40474e46509767bd346676113842d4b7fca641e08f38a7c9798990cd8bfa600639ed7d7d7a352c8450c51da8fefc16a3e0d35fe770364c6eec2824ca6ed80913c0b8b625bb4649677d88e05987e54890594b4647a648e4dde9f846e4b297116626684b7e5ca80c36d61e6192b7658d9912a7fddc2cf0fadc3e9bd7d6d1891febb4561a6da3595707f8fcf5269ab5c555b28f2928a360f5bdce3fd8da2a27e58ad5423594d6d20932bfc5909aa2973299b13bcc7482b88e8360963344e712602863978b9b9a42f26ae4014ba71af505f5c7fd6bdc7d39b0b2000987f5e51d293b105097f47ebb2b5caa35fd86977682bcabfeb83b0855245064d1ed99991bd7b0d5a0c54cb58727c59c00a35a1ba7c9d098544faaa0b794e85a32330626260585a123ed684c72a123196af3ec4a0d010566df79573c717e3e93e9f6a1263cd6ac510fad669abafd271f9350c7938953c5bc9779ad5d0e3318e6f6da04f795b9a1a1f11582a6292c33397c62afcda95684b18ca4bb03ca3dd9261d5233724a68d5aa39b015c7882e969016930b3a1fe04f1bb6a9bdb49a3e9138b145e95a0f53f1dcd36c49f82173a6782212c7ebfa3576bfa589c828738fd863f315e3de206bd6bb64a57856f23dc44ed353481411dd46fc501a0cd6a46034542b913f2056d1ae210ae51cf02c92eacab4f2d2151462920a99e8ac09006ccc80c946a59d878e147487ca1cf161328aa1f46f7fcdc9ebbed3915eab40091264f24fbdc0d6e75dc0a8794d843e52767d6a19a7ae3ef8bb04e8121866e450ac7c5daeed02743add2dae9346b5a49daaf6cfd767402669c3902a3f8158b7a0a3c8d635843fe3acabe00dd6c05311ff6e228b2628ad2090e23aa756e5c7119d6fb50edc271701200390d701b09e74896a06be7b961b3581b79c59c024e2fdb88c5dc7edc89ec274b8d8da7fa81f8b2d50fafe37a923812315a2775020cfcfe0bb324625beb115cc504f28e381657c4a64e4515746793f5fb07ba4d456fee97c2802b7482ed9a8b8afe443332a5aff3cfe9fc2875c0d7396b39c7d8775b686d19f1134fb510322aa8380cbce7237ec327e841123ca3a474969ba849b8e87f0e7d83922676fa40813edfe1fee95f9c980af28c5144e29dabf8608d7b5e0b93cffb49a9e779530bd50a261559c35a11df541019bc6c3799a28f14d651926084161e20ccf6bd66ab9e5cfc51618f02a366ab71a0a512fda1a2e7d669c6d4258ca79f6f20f2fae0d958e191c9bdc498be8027be45098d064eccdab18044272e9b51c1ccf4c9db4282ea306b4e42b8d32f22992db4c6ae2f441d00eb28372e376ad65b2933e1529e18be8d7b5202885e3899b7694df67651fa2e1c9b7616a3a2bab62f5cc877994f86cdbe1acfe18e16049bf1e3975df4dd8acef9dda712d949f287f264563ec6b45372721d2c671f6440c8f1acb2871cdc2f3f298e6ad0cff7f67bdb55a90d6e85673a0211ea1a270f20a8ca824d001777efaf5a8f87ca7135b01da00fc403095741332082231088a79b4c710b55c5aa06f8998c44e1658d5a990aeee1d6f4907959f39e887d8930cbfe283e86622f6749cf07d4b81ac1e7fb7cb168ddda36715fc9f49075685a1ade0f1693ed086d7b09a2b1c9a2a79eadd4544d475728508c30b035bc2d0f4c836a4997e33687f47a1f644208ff8c536d2fd14acbaa06317a5bb54e6f6a910c1bdcbfe103e54a53c858d733b96268b88dea71534dafa6cc6e5f5e74f764d69b74e944968dcd09e1ba8a6d914371aa10b9a2b136e0c9c736246e9100d9d9928ca938efb6a08920be9393251dcf43b76a45c74353128b00143592e1d8e4fc142ee3f5e1de2305feccf876a5603f00d82ba949000bdecc98220d4b8dd46f06e26f5ac423e86ce7b9246ccdd44c7f375312555c336cbe85142cbb720e7b9b86f5ad223b1923bbc86a4b740c3e827d6723afd1a4d75250c76e148918f5067950d66da34c06ce3b8c7a0833976bf977cf2dcbf6b28240933f1a3653c12d4a7ef7413a09d188ba1531085a19a00223ace6ad1991cb78b2c0e39a151b6e6d2528f29d991533aeb98f2c077cce97fd8c9298e2c7aba31f44af98e71f2184852d6a74eaa5adc5e36093b7766e1b412d739bdb769a9cc18b245bac8fbf7c94a35b4c488e6e0fc46ade6ecee196bf7958521ec977f09b9969675861b853efb6d04d34b2f734079d79d46b07d1966e782053c2d6e59b84a7e722064c02fd0c3cc69eedad5926b1d89dbde58a85258d1f73b15660c79d5d30ad70484c3e53e82fc75b52fedd18177ccca47c4da9b90b16fd472c15a3a71ff8d2e462307f3812a2416e41b28f9677b3a9e9c8f6cd4b7f5cff35bdb711e487b993910638a0b89255c11f38271aff1abc650283ffc28017c81d0e9910dca535737cae53aaff8ad882b5ab3becaaf382c327c4b801d1520ca16d59361498c7e7c373330801254aecb80432b49a1fa96fa4f581e5e10c17f63a3e9bb76aca53a3ba066ae0daf2ad40fac6ebc9b94213b7d942318540fb1b230620412a3a6a000885011505cc63149e780ae9ec39c7d77773746e58560848bb7e4cd36b2af30e25e050413c35ab59c0ac807cd1a8823b640705d943f0eb6c1820f96c0970875a0a753fcfc3206e53ba6dd946db736ef4058d892cfaaf3246bdcd69266e22b4a8de51a1dcd580b64d0635e9be5d57bf72a330ebcea47364323f460b33767dd2208a3c38c17b165829e3c7ece775f738e1ca4bd5a2feda725249a2700cf93437c421f0963224b6fb9f103b78fab1c98867f64c0c9483d938076655e8f236ac993becce70c65a4267aad86dc4625388afbf796f780c487a7322a320a92b56ce8049959dc1d22005ba2f95c5023d76986e9ed25a242368947252affe7bda571c85c1c56ab9bcfabcc989df7c6363275d10fc607db8825f655565b6385058a4dd74edcba53ce8544c5c07219a7c3bdaf0081d0c08ce4783b322e74659c661e26a646852fa420cb79d1cebf994b6253af17a0bd7a1c085c9048518baf13a93e2b085f85a5d1d567c3e3bdd5fe7f7ef492430a19fb8c124750f3dd70efda3f66ba87ca1a259c4b634dcd087cdd3e58c4dba312767fb51bb9bd5b60fd8446b971fea45b5fb0e903525ea001df6a6ec7d65b6d90640d4bdfa297a7866bfacdf72f6af24d1d16db7608e91769213713c812b470bc7060a164941f509d3d0f475446398bda7cfeaebb5ea6f0de43217a87fd919c71676b17f74517a461ceb61c7b693b9b6471d1121ceb4ada68c73819b3bdc5c73fb014f3f5208a79e63eaea402792e462cf52db716c202651486b02a1b3f17f9b9cc08871980095cd545a4835d62c22f30d372a9cf6a452bea0d76c1905842f9a06604aeee20a1c996e84530f27809ad3e788de40a3df5bca322d7cf01ad150400aa01e9602f42dbef8fcbbfa01d95f11d85b786c69ae54df2f1f77527fc42c3d1f8a28160893c442d34fce7848f4cc9f1431bb7ceaf439bb9963f22d343111006fc91224277b5e97eeab6e068f0de11dd5a89054c31665a40fdf93a0924ff91d8037f228f62a95683ad53a28bcedd034985b4434fe00345f511522db75689eebdeb336534251d33dd48c48a273da11ceb1129d538981c71eeb2fe44a51bf5a3062fa18479cd121cde9726825fc24ec769812549afe71c4bea6543ada690764b10fd5f5b30e0b124b7d4b6705a2bf93e11678e652ab7d5452c9fea2ecc0a1261dd7607974752fce93c6ebda252b41f1d6958d6342b61326f2229a2e5da33d5fdb53e36f62c79b075dfdf1d1aadb8a40a48d651670c3a906af8b5085b7d276a1cd31d5d9b7fac9640b0987022b9d7444f4c3f65a42784afb3b9f96fa36ed0b09ed484e9d41fcec47937510a598f28a7e26e1ecba7fea0b663976138588f4026e6b449510e877bbf5af0fa07b024d83c1cd04589517257405c77f85fda20156463024b9098f6374a15b511f58ba5111f26854055127d7d5d97cfe486d4a1ec5d8f023612fe8430921bc44b12f75e97f95037a2b5d2e19c29bf7e05d7ba501f4759e3b8b79a7bf01d117e7d47a69962978f80caa9ba1b7e6a6f0844fd63b35f447514d097ce1aca0a374a8bb96f9c454178b9b6f232dab800391e4318ccc437265dbbaeda706ef93a3b455fe6d00a67b6e570e13ef22449368a556a219f53f542ae0d10417884ec0662ab2119ccd0b2b187b0c1e81466838cadbdf7264f1bd1d35831d74f8e58c83379088a289ab816fd055fb906b49914e21a80e42ed982fa778e625e508e549fdeb20a3c86b7101bf162bc0d792d0f18b5ca356e7081f86e5ce547c1554839765dbd878bd3946b708870e6aaa54e6f6370f838f3b687d7509262b45d63a0a00862893b6227c66be26ae5e0ad841326872b12b563c674b5ac8cf1c746e6086a2dfa8b0a8d5ee8b54b19aa19e7a2ef1b55f908ee418cf369f205f78c9cd13737cc5c8b9d9459302a4fc07d57469d2eaed4addc28eb97dbbb50d1ae182a5471e492aac9e63f118cb37cf8e30e43a67988a5bb7334d55fe53c0a669082e99567e0a80a70c7cdec77fc1b124ca43e9bb8815a7dceac34370ce62a9d0453832c81a5bb1b648ebed30989991e4235ea299ee9fda027df37a895547887dc2a0f6a0ce0251f30a4c92eff2f7f1a90e9a0b43f082251ba4b21cf1c7d50235f05317529192c478935defc99b16a0213092189c95de0952d5615c3c65b687e039d524f3012093d93ad6c639ae6512d4d479dc3ac4521df45190dabc1065cc8fd1e1d656321502be207b56d5123ed599d82182cdad69d1a6a6a424179ee1b76a4b50331c26440c2674c19045fcd8811cf21ca3248ff682f9122478270f841722d8fb1a472387cfec7d606e9b5989b60dedb2a9352a054a75042706862e62c9c2518c59432c328b5102e502d0ae7a617d3f5793fb7e669d8a524a7518a0748c0109170fa602562fe47d0bfbe11b1404cb36957cc2ae6b0be61d6291a5a6f021a89e90d2296873728a3f95cf61805d8e7de9e5208a5e76a9d9bb01b8de3b9052fe9d36a00a7bb81849523e2f6f659677b25fcdb87ad22de273988263126086166cecbd98968f5eb769f0ae08be298987277b1deb30fba786e6e76d024c14c2604d54db2e81785f35cfc024fbe285ee4410a884d130633eb443fecceb6f997ac9049106c274ffebc2c463fc5a2a633b48d068fd02892149814ed2908f62ef2ebeab9a097714c111a5bf383e76b6435916dc2da8235ccfa920ca79ad04491b66a9f73c0c0d43e5a48ddc1920e281a9ff67932395a39d4d1fb551267c647e0df81a52750ea7d9832562d612a9b6bd4158ec68ff28100b063653cedd94f670e87a096d3e7ea414c5d0f7b5a3a6d5027469bea4054523f5e56573cdaa465aab895a3c7b9a245717c39f28a3b9cfb57cf640d6636fea90d5af2ce859f5499dfb07514bef4cc1f12c485745aa62e78b740f9ec1224f71ecd1110b361b235eea12443d948a2cd67a0fe270ec10d20518a33c52bbe596f0e7db8670a8906e83169a6ad094467805c9f4ff0bc816013ca43217665f94ed121ea45b3886d23e5c907958d22ecc8156d701592ec468d04436db7d702ad85df4643cbf0f89feb2b35a3b25c7312f94a8445ef21d6e323b102b3fb077e9b8e82fbb68933cf96554ff314e1780d07883e5d27f217778b045c8db280e121713a0c9c1d33d60cdcd679de34652bfa949981cc4ba6d32628c2618c3212ef123c020d95e37f4561a20c0f36a6c80290543e30732161f650104976c4049891831ea35b40e3b8c38c1f94bd027c25da423320a71184d1f3302da3d834e6a5c628f09d34c473577e809f6cd73131c06b731341f53d83f18b195b48d8b40d15e474482c9717cd322bf2c5993d619425e7c9586e8c2c664ed8ccd5400ff1ab3c2f405d668fbc1493aeea00603b138f3043d861a55fa81454a03e4496c41aeb017aad81b8661d9f9f4940f85aa112cb751da39500c48f7730acbfddddd850a37cf830da7608ca593780e16aee44f836bb0cad7e30622fe2ffa086581f022a9135b0868e400910667ed395556177e6bb11ad8fa2f3201592e6393928f7b9d460865d1059d2fb2f8381beabe23c54c9ff24ae94fdc8b50a4f6a09be496dc8e540a00c5c0eda5296df2c94d2492560adc4e9f25d36aa014e27e2e816636fdf8e4c82ec324a7db936bb4cbaf11bd958e50368b95cbc184122068cbf79c6fc34ab1c8627e56fd9aa00a8484d0415c1e664e5b9cd68d4121535dafbe5e4bdfd97b1b906b1b4d54d13285e1a8ae068f0b1cd9840b23f6168185a573b7ee4fe26334b73001afc8a64925ab143bc29876f53e36a8ab080352d2097520f9b42fd73c734c74eaf4ef035fc7c7ced68fbe76348c1c8b90e7609b7a0eaa12d01ef3d568e510269b05d07319d5b88cb996b5dc6d29d8a3dce19260a331d887da597a81da3c2fe6d36221d6a9088ea6b13f4b898375901b1b553a4bb2a7eabd52679ced320daba3acc0e3c8187b560f0d9816ee6d90877a2c07b9e8b935ee6f70f8f5a717c8d00b83e526b4f7e6600994f1ad59774209ce94d165bbcc2281c7c15acec3003dfc4d1a8ffd260acf8fa14a388f7b44b29004077595f5d2356e372dc73e01fcb8f0d0ee5b9907edba62d4d682a5e6406a1966f53facec0dd592125ac6cfdbb258b29489c765fff94a1adc6d6902a061dbe0b54dd12c0fc93304efbd32be00be31690769e637172e07169894659db77f51017ddbad0350f4814f3255ff88a13e09803f77d32069e37699d21fdceecfbb78b10f4b37cd573a4bb4c5cbf34a08e5518f8b74967ce4ac5a810c3c238314ddf0e48e358b7370ff03cdf3c672423baf7073c17de75bf605707b9f136db758ca67239693c31a4ec418fe0e39ca02d837641828dbb195cc66951372129fc89329d380491d52b2a38c258c7c5421e24f3437d3d7c64f9acc28aaee17b5ffc0d61461083d89c0585d22b9dc9da6ffb0360054b0ea7bbe7bfb3f4ab8817c8337faea89ad1209651d8f801e1f54d64fd8244605be858523f82b1e1956ff88feadeaeb1a8ba0091b26135085a3fdd84a79942a0ba2281c9bc5695415e6c739fa2a47e173974b7b50b6125e962e3f8765f3cdae70a8894a8c3d80811b099f8617b22f87ecc7a6d0716f5312e04140fd1199f6e06608b390728011a415f632525d6a3f816b748ef1be07a71380e90cb26d068174405b69baf3c432489f606268b30f38bfbf512fa77ac8f4ac25807cdad2c974018405e89d392b71ce00116652d9b3233ff6823247a6ffc956cd728b8027947b815543d61e0f75e5ff6ed4dd65160f92f1aa12773897ac6f6d241a86c33fbd3b0c8455d12c973a4f445015c5f07a40268f3605b60d7d422683663a8459caaab1d204f2cc5670b41d32e70e5afe0bd20b6b208fa3cfd80749d9f33d3b29db4a4ebb84774efeb720cf591595c39569387cf65be358e973dfb2c5b83bd0fe94f8c0b049ced4103494ea90a8461438ddf634ed450cf208011aa4eb2c5b6cf43671379f640b4d30c553a675fed0c299a7750130058e2cf2e15b87f1724584c764ae2bd9eb1272d6880030de103255a0669548d61e0b37b8e66ffa834e5b1759a03b12341ead58b1a3d1018e108a3dc045c84d3e9334e92e0c5385dd8c4ec86d58186a359d9829fc2ce287dde64e3a3d95bc981d1af811bbcca85d822734025bbef2d0b6d3464ffe78051c804b7c8defadf6b851079a082748b23328574161da98635ac43a37a362fc75a74dfbc17ced1e067743030bcb86641edafb6ae40d261e14f3ad082197de632d574f4b93a1180463973b7ca2b5c2214f97408e3c75fe58cdeaaf0a67a67a6c2204035cf2f86f80d1c0975c545df98c4d8492b5e5475e141727465cff29598a913d9f8b0f51281bf7561b29502821766d8247af367407d827ea9fd6df9f749dede85cf1a97acc13195f97b245c0c243f32074c9e3ebd36846167e3409b12cfaca413fb48108b0a43663800d19d5823a7248adea285119060fa1faa02d7fe00c2d8ed1320625a37b7844c09bed2faf8367deb396b0af78b8914b1ca7b0c0c9ddac099e56ab44c3b2e4430227fe41a93960d28607af89f04a69c47c6c5357f9b88ba1b1c3da211bd1a69ececf85ba72b5b164674a78a9fd127a6388ac6a53b7d5d9d19abc834780f817b6df0f6adc2f4ac117f013351fff916e42809e3c698d5c973ca8edc4c4a820698af2863e8e1bc9f57c68375a190e292c72a6bc84efcaa2879231b51ebfde4592fbdbe941394c1a70e45d4d8b5129a2181161ed78956731652381f7e3b0564da5b5688495ab1220be2ed8ab984365e8571e37b044807febd9cec454008c8c7adc5345efae8eda2558ba81231b8478eb2f3dc0ccfe6c77a3b406734bbd547e6b5df38e632d2e22c0991974b94a495381c630dd4f68b05b9fed5a15aafe184a41eaad8226e818ed090b045cfefdf1a052933b06c39de1f5c4f667344160db6a1d5fa0af67a109febf7584cae36b6cd64b768bcc6714c763b17b80e15d090f3273ff9a9d37ebf1a25ba3ad67c2b2a7bafca932228b49941e6738c68c0204ae600f8785954afc179f9cb7aa92b983186053431b78487a77181f9d84a2193328c5273cf475e93ab7723d2c112813b8ab7d21f288029554c7907a6282138c505371fe921df8202de8e09850c71f55445b5fbb120ae636b552bed0ba3348a87d99f3f8ec571a5ad75ee97e281f03d195259fe29979d5cc36cb72b42d054f624fdc8200476b041d9b601ba1fc90a2c307452322afc8227a5e19f96894c604b4f5d874e712572a8ec3bdcb6d64020c14a49be871d97eef0290af86bc0f28778a1b3212bbdc935c0b36b9c01ec4d1ed2dcb632d32ca44690564116356dde42856b4b140a7becc9e117504624aab11225791656c27be036b4a3ce476f8c9c355ea11cc5799a0cd5ac8bdbecd80a6d71e32bd331a22da3b1a1e7c7959525b6c6b8aed7edb9ffc51ef77907a7295005ce445bb4e40796d689bad924351070d1bd1054d29fe5d5c19e4e1377c33fa5054be1758f428e2d1b3d27ac96734eb25a621b39b6944578a3ad4dc0da5116d1c556b4bbfe52904412d74bd414d52f4c37e6ac9436e3367f096c76738ae2725e793955a4d076ea05238e3017465169e0144d2d8d6844411ae69ea3e7558a597e1a01b19b28a191ba3975f7f0363e88dce31217ba1497121d07d449b703024cdbfce7246cefb1ab37730e26677ade069baec7c7a0f61ce6f1d67f907292218a8d4b4ccbe5cebe5774b99faa5f87fece58c2f6de11c116f4133363d2e9c623cd5a22ef39aa0b4abeb0aebdb2077ad7106272822f5cdd352aa24aeb081f3ab77491d706213484fdd956f209c0b2a1bfff586c8f7cccbd64c6a743350daf961c9d096972d9023a5be9ca04dba98b9de35e394eaf56b41d785b00bdbcd360527ce507e72a94c0fde47146a1957df2ee110b8229ca9dc2016f7516100165568b8dc0c68c8b899bd795af48e58705aa95af3e435072d1d7a582397a92afbc380521c5d0d21d2e8a5fe8dda3088fd2fc5498693a6e9f528b5ea6c49a37c559ef96827d2c92e5e2790f9246bbb6ba51f8aa57b240df4bcea63248ac49d51957bf7f3b51b5067bb2b17cb58aabf99c63a69183ead241ed6448f6308b00d808de5e922f0e25f59d7ae0eec8027523550ad43ebdb323b7db9911fa258d0b2c60bc2f3d3537f5c89dc459e4d3d7a676f5947c97cd71d20c753f8db06c9c047538b9cf27ecc1b8fd683a18150830aa49f69844aaca10e181dcf245a2574b4037dcfc89f37b5680b7df34294e2f02792c8828978df9169152c6ad634568dbfa520281d77b889ac380a4ed0f40da9ab9042fb6eb2b41bdf5f7ba3fe6317c8c75ec61b2f960ff2e45552db70f38e46f528a1ac3cc0a18a097f38fe580f407bf40a7af9449c731fbfa97b785f3a0e3ce2a3e1f8ca1c714565a4bc2f630ae03788f5f19ab628a5238c01b85f1cc4c7eab279108354b273b9f173a010df3c2187b39bb028cce21c0d83e497dcd87482cee2588b81061d390665ee25cbfca02a8ee2981f431ec2455b798b3c4c11c0a2f29d0d09c2538f2fbfea24c30f1bdda4ee4e88ca84b2e4a17adde28156c85dde9d2c577ae5a7f497c673a856a7d6cba9ddec3e942e094d6972337b83b5bea6b18634f828c5b4382d34428f42721bdc3e2a16c66d1a6e98dffffadc362e633f03d26d4008bfe230bc747b88ab706abcb6dcf56c8c82c8e66367e156fc6d281d76bb5392455904a6ae50dfed313070173aeb94c6778b44ac972fecb63504a457511fe4a441fcf3403e10e3ea0fd779afd89042450d31562cc81e2ea2153c76f1e7edec3da6e966783f6c2684e33653811ddeeeaffda385a4c73b09e9ac52f952728890bea6d0359ec1b3abd890e18018c324e9216d5845aae667e207796300045a6207fda6fe0829bdd00fe269bef3daff70396443a786e75c0982bc0928ce5d86e82f62799b531afae07eafe7c9672c374eaa24fd147177c28668d17f8ea387f8e9af84b6a23a5e819e9bf0a00a15e82308479064633f3ad660b3441ba3c2873c9b333215eb4b4160d47bb162acd4e38f58b90c9a4a4b64a21a18b60ae8728c0bfb3f9efa837309520f1c98950bc05749cb5fe232461ecf46c631b72822687a2fc2b4798383f56d3ac8367a931a695d8e64acab80e9693011195aac8c6263a4dfb9f13a4466bafec681fcf1e958589fad0722603a732c80f210dd54ef9ec61461e360417bd8bab38807d9869977b3e42ec242a4d6101dee3402d615ac70f09a8bd2728bffd1d7a03d7247045537af7277df6c1b4f25091a938a1fcca72be6b5c1e9fb7dcafb37d3665a760dd3b9244ab1c84ca5ac1e6106d2530bf2534f2847a3136200f271bf4fa6052f2ae9e03efe938525d6fdf7f17b3dbd26c10fc22ead94ad9793b26a552cd89b46a4a8beb8c7a57fd60c48269f7ca891e6edfbff6435027c7188e508bf3d1c188ad4ca2ea9abaa5ae8b1f2f8eda43f40bc846243a0faa2ee72292d3cdb35cc3fa0c5d11ed435c27c491ede0f0a6b639d4578fa6c08f955c0043380947881c1f34ebc276804bfec8001376435686b61eeb82bccfee009c9494d1116c0a81c9afb42ca624a06bcc530858ab30adeb429115551a5ba70e44bbf55a7be571818928c8e9615252ffb027b9c3e34350d5fb8e053f15823faa567ddd37752e3a3e59e376ec96ef34367c91f444933b1bf888573b178eb9dd3eccbfbbbf4440bc215eaec7f12afb13809e1aba62ecb7c52c9a858bd44c5a2aaa1d6faa33f28ef9a7ed30a0fc6c57079b054393f21560355d635be563b635d9d363eaa97f4b0e3866a1a4e7b8893ce1c38c13e4d7c3057ae803f779e880b4fc0314ad0a0bc693e919bbe0ebad914c29e2f6fdb8dcafe862590687c0d2efe66afa32116a0a88f76eb6740a31d43e0ab039742e5d033f0dd2cba6246c2efa6bd204c64d6be32d67661919e69d2a0603751390f270b60b3dc48bf0d04271482ce9288456e73029c989b893235c0606f52cb3068d47c2330cda026486ca34990be52884266dc474f80b5ac5a86b9007f6e2c43ccbf9285335592a9608a1879996f764d17ec5afea469e70113100505bda3a3d27faed76bf2e3405e9d7582fb28aa958bba1ac40d643b21e1a2e0d619d27b903b52d54abc9da6617a3165cb0ab383985264bb2f11640853476bfb9017f78d4fd89a534a6e48a1dc1874381ce8eb5aad07e0d2111746b5885ef345fce0fd4480d9176f94c8791285c6ce302fd111f81fa6305d8e3344c58de48dd0762d07ac6ec0edfd6cb4a1d3e381e4fb558a29fa5e984218d6f1a020d484bc4b11b68ecaffe4a7cc4056c84da5ff04afce6c3aab50c423d92e92b7155e8dda64ac6e46834e3795f89aed1f6fb443e556b0f847d2bd2c273c2d2f050e497a5c0cd4f37ba79568f592e283d2defe8ae0cf074c024b1bd613b01dc24f08027d2283a720f1e2b4ea3af63323ccf573273f39033a8c4c448b9dc8dbeb8ccf83ef691e3f8d10d2e1323f8af9f234a71d146c91382dfcb8d7380e895888725a077a97cfb5573e97ba25b43c808f91b3ce802bbad92fe7f3d9e1e4224d132d92c3ff271fa9c23892d1fcf237cc1690361cdf405b4e6fa596d32c38486b5c3c9fc6cfad65b1b376037329a983274dc75249eabd1dfbb89b339348e9ad86ff4c79198c679df9efe30c2c4a8df8d3fe83cf563cdb5a46d6204efa255452609811c230fb46ac451640a1da5115923d1f7a5634b68c948c3e2e49178f6656b1aa52ba9c9bd88aad4c3321e4ee0912ef99bca83a72100221259a89ab2832d6f111d9f364522fe008f5e955327bc8c9b18d91a2d241f6a1eb2f044487c9c49621aec617b12c0ff24e22820330d94ac06a6e031a201e5ce11babc6985d122e367610e8b13d5547d4bf00edf767cc69fa0e070f3499b1921155a1133ab4dd2f4b573a361622167e584788b1bc92fbd9a115b9ff85c23651d86b4dd373701c344741953ea5c3d84f31953146c391daa3443c6613aa23250f4969045817d3206c98a2011b396a1f8a028133f49902d9c64034598c005f13bf52bb1f418bde657b67ab8fd8a64daea5591b3fdfcf4bcb610ea64f13b1c00034a3a566e57409c0da70d9791c50ec4393e4fa714d1336ebdaba615c819c408020023c061a50cc3614c3727d128d4fb5a40e7d407cc0432b24ea781b1be429a586a45dda07a8c3dc6818e287966d651fc037da2d6441289eceededc32c706d206e80652da37dfbea3e8ac8952f096e782bd056a79002c04656068198287a0e56f112d69e00cf9fb621fad8d24ebf97b5076f611dabe1bb08dc55afdac10e4a9c8d7c29e414b36481fa6293620345afe89060bce963ff4ccb6fd7f6e62f756e45f3f44edf7edac4206088eb66ab5dee9646dde945e3fa4e8ec5bb01ab9488a3fac94c1ecffe07a1b6e1d05a9a7aa93e78560c97a2df6e5e9247fe7b04db47ccbe2b776a3570efb5783f65eeb9a7c3ef79ad0fbf4a3f533724ec418e38fe7125f7ecc4124c5224428620fe2e7777c93b762443eb907fecf5b22f9e44d4efe448b9d4846d19f4cc40774fc1b6f115263fa33c7656944406d59dae6112242d1d967df79583a7d4aa7f80f5b387a6a1b45d31b89effdfdf7fe66b1b67d1b7eaa2247cfd0ef5445a96e2cbf7ddeddef8b70785554615371add6a6d1c3c6f21b4681a739a2018337353536269f02488926763de81d3b9690b88520af46d4029c215590431c4a9ec4c7739aa8521349ef456ae16443dffe90a2b16f92867ebb87ce62d8e7f3bf39cab718c93005bad8c52e768e42692847a11ce528dfc2da8fb53050b48c24924ba139e9845c6244721f357c7cc3e643be6c01b6a3f5965aa59f414bdfc237f98ef28d025145beb518f6f9bc1b300985962f473174bdbc342bb9122967b4fcbde91d3b90b52418f6d17edb2dfbfb173f97078635bc16cb6d421c07ceb031430f3bbae12da0e41d15437eda44fe84e65b64f4817968c67e66fb56a61f9227e9aa0003a3d168347ab9dec6909fe4853e6d2409d6883570867c1c2ddfb918725454913164fd1443b1939a89b6ad8876ca245f6591c772f525f9fa48aa8135fcc70d2ad6e81b9455e168f9d5f5438abe806f12d23cf15624a5219e6c1fcbf447320944e5b8cb606f51fa73befd4ae7ac9565cd3aab1f5c4f2fab2dc69e4be7e5675a7eec02744287e185a04cf4c28b1dac019d8033e4432e0ea4359881c6dbe893e41e9e03de46bfca14781bfd917c81a742df9337f036fa2259046fa31cf0e1a9d04fdde867b361da96286fa32af4adfc791bfd2af303d6806f0695f687963f2da5b3b22c3a6965fd0bfa150450579fe517f4e75f4803a5f04dde17f7372c69f8c473b92f1f42f14236c2922c7d155a422568098ba0651771de8a7c1b43f10b4f454a1f0080c373a1652483963df013f101ddf99d7dc85b21f7a196710b2d65f455658faed70dd79d2a7772aa7c6151654c53652b2651e50a55e50ba4cad6b92ad7375499de547976aa4e755d31ae2b9a318db3475ff9e3add4f7689c3b391d8df385c5a571c63458e36cc5242c8d7385aa34ce17c8d5385be7acc6b9bea16a9ce90dd5384f29709670e6ad549aa5c639ea37840f6fa5e2ecbaba625c571aca5ba94f6115dd0ff990bfef81c1deb2d82f180ccb08c0ae277be9f97bc5dc0f115dfa9e2d3c3424fb9b65d9fd2c26cb94be55e12c24f740d114455b150e41dda09f69cfb71d3b2d76be492530fab58b38cfe56949b53dff66d7385b17ce4f575af6563cd6056568608debcdf0971f8f76a7a119eaea86eb7be5fbf3eb9c1a1170ee0d822334057c935f7dad6f2d697d8b376f1afb00f3edcd7e41b4bc009489212710a01d8b8f4cc8075a3e05a434c1f204b2a32780475c2a848df550b430e79c56f580cc12ec7aba050b793266dafbc12d51c17d78dd20f9920ca7c8324c8675b2cc84e44beadb110bc3d75b18b6f2cb320c0911f1f87629c4e7b113898895f5b38236f1feb627dff92cb3b2160cbbf095e5a74b6ec0d2a9934111509bfd891e7993e79b89b6ad96f36e28a3e74cac8195a580bc682f7c457dfd15e351c7a8791e7b4fb446709661959f555262825bb0cf9b5c3fa4e8eb5b30eb07575a1f9c6598d8a99f4f7cfe23c3296260099662880351e523c54fb1017127f9361f9afc082f945d687a2e1dcfef7ffb447360937cfc11edf936a2653fb337d1321b3db32fd1f6bbd1337b8fb61f17f47c4f96699eb7be244bddb974d4cf4c4cd3044b329ce264e314c29ef848f1d608be79be4503bb4c76347d46cf89fa5c130b307f11cc1fde82fd13d6a5709fc26708ffc6d349d5df8711c22abf2cc313a9fdd211f2f124e445de82599665d9937c489689682f44271ff221da0949fec89064ae6dfcf93f7f5e374e3efb98f703a2e35b590ec9b4908723252526b6a4a4e4451e5f3aea9b64df79ebd241f225dace1e0bd15e884a48bee4f32419ca90a0e063840838d2cb793925f85d3191e447ae98172190f63d5f4284474b4de4ab4b477dabedf89dbf978e91126d8b5c3024570c89c6a3f3f679605f04d4239f65a82d911cf22319d6f836af17c91b52a1e715821f4ee12dd74fec279dd362968947f84c66c73596e5a552e5d8838e6f69de233abea7ae1941b0e6fd78dda5be1cd1806d1622a0b63d6411d13df526770a9d97daaedec215c63eb067c1bf601a141dcfd74ef6746cee7cbc603a1d4d6ad2b7aabdeb5d12c358225b39ac552b426aa9bd105921905afaa6612937ab3dcd421d52fb8ecf33580fa5d63cfbeafbf884dc7652f728638c3757a9a852e3030a5873a944b296cccdd51b1c010ea9a5981c7d6494534ae9784e9a316d2da1fd651c302b09a9042cd3a05a53673c544bcee1e81e325639beb967e687b7ec21663c4b7848de02b5a736ba848a55c629a59c1664670bdf523f508dd2fef4dad1b15a302b09dfdc9ad16ecd5832d7d3b611333ba634fc3ac2e8bf3c444ce909c38ae821624acb6dc93c61c9709366ccba219ae6a04629993aa3652569292ba7a586cf80c592de9293c29cb1eac81312c6a4b0ca673b1e0e4a2c089605e39093636152314567c4e9e694945acf81f1fff98c605583f1fff9586bb11ca16cdb3f8ccffb60ae6d1c8738442560f0f17571f1d0f334256050830fb5f7564c5a603d942de3a49f7c87f50aedbfddb2deaf98185ad6dff58ae772c5c0d052f3706f050898fd92d473b9ef57f394aa8d8d68730ff844c9e3928386529630b835a05fdc1eee8a120f27a5fc5d92ba2143dbd54643191abe2c61bb2406060cfdae1b31f4d44a526fc56368f8b524a55d6a1e1a19a76983981e3131310f5a1ec8050675904e742169d04517920618fc87359103c9832ebae8e2412e2017928914581062cc0e1173621c22e648ec1726638cfebc235f60d1b76826e286bc21a1c7f7ef8f80d00237deb78d852588682d86c5380cfdae1b3776c0bc1d78de7b6f0c96f51e7c700ad209d984e4816402bae7089d075d402e1e8a97017acb7bf780d582d100cb3e3f7070036c04933490359035c892b01ecaeea434ac266fb152e86ad2b0d2e8273b2998e3c28e2ddcc118c65b457944691bd3a05155bdd4d4f558c8fbd72dbca587f5fe750c5abc1a9df7af3715f55c3cef8f0ac9d77b32d5f80cd8f5f845deaa178c888600ecbab4b9e177fc5287e098c22e54d4577e6fe5f9f6348ec6dfc141347e6b7a64c68f5dda0f32ad76accf167c5d51fe3585ab1f491fded2919149780b7e9fb803f565691bda3760dbea5bd1875246ca582d65ecc87dde1a2b6a4f6a778885f5cec2126360c43097313ea23794303c7eae9808df0a7c79c54808bc171f2b78bf829819f3b4d462a8f401662fac06cc1fbb18c67d84f61b31f6d9db9957b0a20cb06d3df0f2d3898686729c47ca00db716646cac039e750289a9c1c182903acdace0dea04eba1cc4452e46229d244533cddd8eef31b8b0c674bf1133f6e3610958239239919121cc54ffcb84596c8928a5bfcdc44cc26da9a1765fe9d6a9e4b7cd702836fe3cc8d8634ea8dfb4b51e7501a7a2ccd17983784341abe849d7cf1498a394e6dfc056a816d1b657694d12f306f0b63cd5b810faf2d26c4c1c1410247fb123248e0e08c3c23f7be55c1ebf5f07035bfa2fafed58a8853bbd51513f2f33e7d5fd28748dca77f5d3074da78cbf2d85aebdb2752abb528bdaf2a3202918035ea5f243a4634126dfb55eb55e9758411f42b19fad585a92bf3c07f024df3be7eb0e6fd6b7ed478d84bc7f5b7b28f29fd223c87bd7034d5f01e02535a693cece3a7dad497c517bd76c41006b0f7506dff70e93f28036bd0bfb4597d48beae9891a71a0ffaf8f1488595905855094c42cf91105fc25a6bad958133eed3ebe999e96759bec87c1b3124249475b44cc300ad35db4aadc603fff557db1709bfda1e02577fef477d693cf0d3bf5a35ad2a6eb98b881aff7d78e5b8e8d74babffc490a58f814821127b08bca5ae7611515f6ffd8649e8eae915739fc7a5edfb9febe3a575761151d3b72e7d5b55d563174c45f3ac196a8cf1634a3fbe0537c5aca58f7d8b51bbda7b91f065da5b7d55af7761980412b0c6d3d371b4a504b63ff756ff340c6f991fab5c5deb35ef8f8ef01383802f52bbae140639c1c6d084fe025f26b4ee34b09ebb674bbd87c09abebf95b7ad1b26f17e1611b5d4201270863fc8032798f43b51a1064dbf93136af48e18b211556216a4a037fd4e5970429fb2b0847ea7d4162bfa9db0c0021dc4dbf15ca066319182f0041c14810a6a7889d88df97ec40f0c83178c7c7bc5446de3adc49730a82a70bf7e25b5091801c540f362ffc500522f460c20f5625f80bddeff3164e3ed38e160513f2a9200052d35bd72546d93c0de298b2e34fc7a04278f20697f08f8cb8b2afb04a8cdb25dfbc0cb19d1d2270b2caa79bced03e38d44f952fbe1f3f4b7a557d89945908f761fde8aff3b39c05be243987277295810caf791176bd5a406a370a28a28a4803fdfa2178c3b7debe1b37285b1eaad8ca2abf837efab1f8ff8b247d4e09563dfe8167b72a37805a38decfc2dc8827294a3e40c5e083e15fa529c4091f5404bfa5be6a09bf4671b30d8a3ba6f598e6f4468f9836e137b085c96655936bb0e9a647c84f84d334591f65860182c0e2ce5f30f126192f7a7323e426cf449acc5b0cfe741da7e117e2ef8fd33986559b6691996dca3cceeb96cef3f83cc6e76b39bddec50647c8420c15155555555558af61a48136950c31a4cc1144cc1140c2e698f52827ec3126402da00c600c76fe802fd200af4fb11bc104ccd8849245296655996653025ba42fbe3d03696c52788f67f6dbf169b0669db77b0598b619fcfff26d23c59966559a68272efbdf75ecbb22ccbb25e0369220d6a9be6eeee5e2a954aa5d20d8c9b78a9a7c57e415e16fb5d91f25ebf90d3672d867d3ebf452fc5cb0aedaf6d2c003cbc482ba994fc0a998ccf0b418263fb94a7a4e782f2fed4062f7405a0ed2c0b80b64f4e78d076ce7a53928ab65554f4a6a40b4586f6d184d048341c5a8af61a48136950db36cddddd630d26408edf2a40fcce3aee0b05f1cf65fbf7dec55010da45c553f1df71ad8e0c03e2e49343dbd729aa40aceda8c4d59b769dde8a13d8bed749761cc7711cd771b2e36697519255c2ae6feb76d6edacdb59b77bf63a45dfd575aaae53759daaeb545df7d24b2fbdf4d24b3392b519c966249b916c46b219a9abb5ab5ded6a57bbca45a77472747274727472dd9cddec66373bce5a0cfb7cfeb72db258d5b5f5dff5de0a7d6f65febbb0f6de8a4489ef76eecddd4ea6128dc9c4c4c4c444532245993813499fcfe713497126cac4510e2a9573727272f22090b63d2785ea6e6a6c6e402010e8c6a6c6e4251ad30e7f77f81d7e87df919d3369f8405892cbf88c935ebc78f1c2493ee3a31c542a07060c18307252a8eea6c6e626468c18316e6c6a4ea6128d49860c19324c34a54a823270069272c821871cfe5fdb900467a00ccc89a11c8f4aed97f3bffde37fd17fcaefc83af24be5a03731b4e373fc7e35fbd9e8d894a4bda6fd0e2072646a8a2109bce7f808fcde20f09b2588df3480d0f1a27f31b4e35324f036021b0681fcdb07412345db9f1d1f91b6311df681c82faa6c1a25e5b07a1f211f02f60547de23a848704b607f987a1bb14d40af1faade27d038f27ccb8a5e949f7e40deefe687bc9f8d0f79bf9ad48dbc1f0a266f687240deb0d480bc61ce4bde30a5f376938dbc9d8601797b690179bb8d02f2f69a1ef28ea41a79471997bc63290179471a1a794753286f47b5e4ed2904e4ed3907c8db650c90b7cf14206f2711206f58c39237b4999137bc1940de5066256f382380bc212900796f3ce4cda292378d2def380380bcfd6687bc9d4bc91ba274c8fbe59c72deaf37cd9be668ff1cb28c1c23c3c8bbe668ff17795b92f607e56d6fb4ff49de3647fb7ff2be24ed6f92f73591dcae8748ee61b3dc83a4fd3db2ebd103d3fb76b9ca5c7d39fb9d4831f45e88c080e691b946002a4f608f1059740932b06862ac996fc363165758516b6268d6d25bb1a233c942db98f62b6c1755dcdf472b5ecb3bc5584f30bbded49ab7d22306ea2a05df70e4e9246564e6a494521c73ad35e64a4363adb591b3170c0ae5343939a7139479384a1d60fb73e1dfe8946fdb32bd9557513d5cf770bd63b5e2adf8432d06a9356fc55f6ab17b2b1e23969a55f2cdc62ac15a036b3ced164d8c212fb01ecae681c6fd5bb0f81eb4be05c36fe68df17c68042403365f56f2dfb5690b2dabd664a8ab98a7af879745d2165a1da82d0cb760f1bbc07607e532036ceb303a59ace4a403a7ed4724b0fbf765dcc410c826aa588b7433e62d986fd63ec80684855553722a39cdaf58bc7af36627bf9226bc90d6695d14a675d2d7cb9918a27fd5bf2e7d7dc5a2de5c5fbb0bea4b5fb526c454f347952460b303b55c82d6f9669f862395d08295a43c9ce760f3651230a9df670a6c6b296d35fb9a1aec83409d9e2f4243337c11315d7a7e891a4a72bc05eaf926236f51c2c3849e7a836c40364fc5fe9cefe19e8b889e3f1fa4415578211d4651c5beb5a02c68fb72092c0958d52f0918d5cf659cb434613bc4546be605017fa12f91a0753ad8d741c65be0db07816c424cda3e2c4515fbf208d8eea0a4e9c5f578f4e203bfb8fee93d84259adf4169fbcf08d88e3936db225d203b6043a5b7952f433ddf7befbdf79ea5f7e90969d876012ad025407cb35ac9c937fb56c94987517c2b2b48c60dd5bbe494a3ed4d54b170cbb8d11664a32db4da06715fae56728a2af6a5c076c949db91b6ff50acc683071afd7488264488828606055c70216dc91651d0d0d0d0d0d46a7dbd565e33deaab23cf8b2ae65bde759f02f1e0d8ad779f8b2a3bdab66795d57d5249656756f55e957e54379f9a4f1613d0bfec5d2a080ffde353f5e177ec503beadb4f756bc10e65e0d674f057324604fc2293d0afe503f07a20a07e61643f5abd681a7e2fba3d55836d4389d7066c668c59cd0679653be9c73ceaf37de2267d582866f237fcadac529ac87225bb0ca3797b908a9ab5c85467cce8fd511569531cbc25817c64dc44e2a61adb5d6da7befbd77d36aadb5d64a29a594d2c9711cc7dd7befbdf7de7befbd94e3388ee3b80b2f986dfb77e118638c52c618218d38b34a99437777f718e3cb0b67adb5d65a4a29a594468f3146a9847bacb5d65a5b6badb556cb62dc84e4a2d75a6bad75d328a594523ae79c734e29a594524e6badb5d6924894524a29e5388ee338ce5a3b2dbe60f05ff8dfb561293b527ae4c4a6cc64880c09890e43426e47be2d3f9d3907398ee3384e4ec1bbaeebbaae939d2b113b21709c6c42721c09386ece39e79c73ce39679cdc9c42adb5d65a29a594525a6badb5564929a594d239e79c73d66b4ecf9cd8a4190d79225244243a1411b99dd951d09308f191313988ed8d05878c38a74029fde12d20977f690695a7a568146a146bd20bb293dd8bec3252a7f2429373292137e79c73ce4b298d73ce39e77c367c7b0bffc3d3679c386f4a7de0bc278e6f4e6f67766fc503330f89227264db3e0b812337473b498909ad271f0bba2f2a1831648c18d1618c18b773555e687670765ca665d9757a2f57135e88d2eb94af9cb155e57c3bb7a324528c7893dbdc689d73ce1797524aac057b174cb765d83d0ec3b01b992228caefc178396cdd63d1db3216751a167128780798df86371e306ea21b0066c105c007c0b809da82ad9201b0ca7bd5ab91f2eff16b016ddb7f8e8ce429daece00c7f1d50ee1bb47fcbf6564a68874aa6f291001c17e9e2121dbab8dc4e8ebf5d0ce5d0360d7a9493563bbb0bababe6e126b0fd521978a1c9bd97f7de01af45f4ddab79367e7201fdedba6e72b2f3586d07ecd7490bda9fc6cd96001594f677b962a0c6d1fe160fd8f3be6ab47f8d2b06ea0b08adf656d63fbe980067382575f0bb3a5507bf05e58b8ab7e22fca1710dffcade4c8b70bb086ec2ece0df25c3e45db9edbcdee76d30bb39b5d0c5192ec608d6a521cbc5086838c74612e18186c553030b7739dde4a46ca48d7098592008045a04f91dd931d098eaeeb26ec66ca49ce2829f806b086e4e08c1fde02921cac51cd39e79c73ce39e704400a14e12089dddbe69c73ce19bbcfe2618ab6a512da5f9b73ce39e793e0006d524a29a54ce9ba8013a4ebbaaeebbaaab2f03e9500601108432fbdcd8a8da568205196524af91204b108e2d7e69c73ce39f39c73ce39e79c530003c0d024a594524a938ccf41462a954aa552a9ae0b3841baaeebbaaeeb4aa9542a954acd20001665a8a10fcf07500c182f46a3d168341a713c7082098ee3388ee33cca49abeade7befbdd65a6badadb5d65a2ba594524ae79c73ce59800b066b08c0a00cb528431d4ff108318a0884c8c4fb1883178aa567e34c874ae56c7124c3711cc7711cc7711cc771b18ba5588aa5588a57d0fe9fae13519af22c215107ca4fc327ea2647036ff93591000ca3e41c82441f61170477b0c3dd77a04ee41c131cc7711c1c8d46a3d16814a4f3a1a6e6d54829e549cef22405c31e622cc618638c31c698002c8235f043011bcef0b40892c50b61b0de70b684d17c4c7fda6a586c388ee3388e931dc7711cc771581469291ac600ed6f42491424a254f47117c2491c87a738f46dc30f12814a5efa9ca4521c131cc771dcc76432994cb27b2e29b2939dec6467321a8d46a3d188e381134c701cc7711cf782bcbc64e069f15236b4037c832fca18782b392ccbb22ccbaaaaaaaaaaeade7befbdd65a6badadb5d65a2ba594524a3dca49ab4a65abcabe5b551dfc2a4f053e01685c1df9a3ca6659966559565555555555f7de7befb5d65a6b6dadb5d65a7da8c1300cc3148061867acb90019cdbb8154e851fc1a37020e8f7cec40bf9e0d43992e9546373c3711cc7719c0f3144a2a5fcbf9a7fd0ab811ac9c6711cc771dc86294d7990688b42e08871fb9c88b0c94708121c295ad789202ed94aa552694bb924dace321cda3e39c99924c5df5a0cfb7cfef1dd6417608d8c0467f8fb4b1c6f01bdbf0cf25cfefd072c2af2458f6dd9758eac028f05f196adb61c6fb96a2be22d539d23bf174be22d4f6d4dbc65a92d8a73e41c4f7110b71c3525616d431b686855bc65a82929862e09d620019c01dfe3b95e78a1ab094fc5b2f4be5d7df6561dfc4f5fa718823660424358ca22782bf03f8fe0adc00765237c830f448623512649efacb5d65a5b6badb55693c96432994ca3d168341ae90660ab8435e1248f81bbc051c0863368f1427014278ac69ab0d3a7e66db69bd86559966559363b8ee3388ee346db68341a3d48db5008da5f444a29a594f86a4a29c5524a29a5cc32191f21b6119218638c316211ef3826388ee3386e4391f11182a43e0e29a594524a29a594f7de7bef4df177908bdc6432994ca60660183cbb0c66b1e115d00a2a8ea0dfc3285e089aa47c799086da1126f39979d216a0a3a8a4ced6f42c66686600000010002317000028100a064482711c6689607314800b617e5262543290ca05b22048811d85947180000000000000810119e20048332deeb077a4be9db32964852fb33f9c81929357f762b900b6fb9789d03a8fd0c0f696703c7b87a1a50f921e695bc2ecb2b5b0b4c1fc309cd55556357a3374d3bdfbddfa1934ba74d9052b67f895bd2930c768bce3c0bc607188a3e1b13c32888521a45daf63b07f4d031e3d7f6cf80264d5c78a159f86c09b8c3255a3bf6a0d8d685fa0e7b10d9a39c2c5c5b353c42e708b505b56c558b553503c52c7fcd68e30e081aff7e57d1aa53cb1b45ea811cc4f341a9eb9c3d53d744615449065c8e9f57f9458c14288cb61887c0043e75eff5d5c5dbf7e53c1644dd01271ea6f66c1827889c51b76733c054d02dab0e2fdb78a12a6f08cbed8f39988bb273502e71a73e576afae48b83a1a097d413f389bdacd6784a60171a2a958382093e3d7696bee8326ad1e30ec365ebad5beeb6d49306b3d0eb19e765cba8476199978581f5fea49389f79adf61bc21e114ae8dded10aa0a12fadff0f71d242cad15dc0881ccc71aa862503df2360e86eff6cc1eebcc67177f53bc33c5c0fbe2b8c3f65d4b7ab0d98a13e1faae887e36d19b759a069a609d6a06e354446a9a84c8f8f6d2833038639b40a10bc9470a5068e34eb3dd31bf8e0c8de6a434ff43ac7407094beb4537421d36dffe8543ac0a0e69d539aad2f79b0482cd5790379a52566bff669232702e993d387d12e81dae610d9a69d6b0c6cd7ee8ffd2d815fad535c7cef512ef3ca52a36fd4cd06404728542a55eb504365cec0af021e0252182f8c8a0a1ebdd62c3bf21c0e6813151aa5643d823625fc9e25af3725e796b151cb56d54401e9170d58a03875667dea073ad7abe587886431ce48583974be65fdfcbf1ce9a715d37cb465c5cfc786a4c638158f6feaaf1fb2bc4e05f14295f0388f5639324403a8e5473d493016e827e43c5e9225ecaf3769d4cbf2dbed276a804141e1ccd41a758d0baa8f1cc7253845ce5b281306093302001dab1b2423b0348178dc086f8932804778cd324239c6831f16916da59ff6d16f298a54c31a8118e3ad12bfbdc132feda6d3c5664ff245892bfee064d325918a1bbfe838e62d31ab90f9805897a41f1022a519a601a102cf934a4b7c21277c9ce13bcd4bb1cf39e7f94f57b3807ef5bb24c8329d5a597be78a5e7907e87d77fa73ecae834c354aaf7c1a10a293e50f633fcd8a0b9c192a612c9fa505fb0fefa52cbdc9e06db02aa72054a2d246ac331c688525e56b124a41f9496812c86ffd04887ab82198f60f16f664153b505b98c68406a593fe63da1720b71f2e95f404f7fdda62f5062e68d86e953ce729b157db5eca69233cb816a845a0c80f9f171f9fd7805398ec198600e33ff01607c2f38e2401a233c2aa0755f4a9ef6c29e4d335d766381a345374c9f199c350808b5a0df186e05d9088bbf5582da2225b91f8e07fb8468b6a2d67be95574428a2965aaa5f43519b6363bb6970d2d0d2307e3bd3124d1c2b531a805df37838b44aff4261bfe781e749f4b024e26c1db56a6159c7dd579223eb07f2cc9bf616df6abb9a0f0bc244d78ddb55241686d0aff31a8c1a23b84e621eb6fb6890c1a78d73b749adf1497fa0ce62a171a771354aee2598d61042512584d5780561cbe4801016f57e105a75a5681ce1c94ced70d8374290f64cb13ffdd86ce4730a927a83eeffdb2042d9e9853cf350c8b72e37bb87561b0306f26e0cc4b56e14cf3cf830df9e0a3559048ac7662075da2613aec41119c4e2e8f4c1995ead27f43f7b1d19936c749e61d52b646b39e39cc8a5808b59d6ca16364cd5b67d9685ed6049aafd2957dab9ef54cdb3131ba2b2139be105655b809791f3b968c6308d6503f57f0c391c49d7c0a24335c46bcd36e52103650b9d07de2a6fb2bf9a22a8b95e1bdd7228479d0d281a17721e17b2e4f168a3ee10d653507a320826ff11d4797b462dd0c7dc7070f866194edf6ee87490f368a7259770bdcf1014a7e5b97fe0817487fbcc588c9074290742e78d89d05b4a257495c8097d37376fa69d9e17bb7ee3209af39ec2674bf03686fb03dde0c7d01f614db1b097c702e64f8e2bf069786230d1807d5166fd9ac25d637dad74c96f0f08a26e9e203e3ec275bfe8ae1a01170dfc9f8250dbdd7f1b0b14f42c2981d1cacc193c4edd1b8ab6b2eb6954bb517c5eaf438e851d5bdee33f8cc71d3f99b362a7128c11caf3efa2c21f2d41f4ea742985a9e629cf6d7dc6e21226cd9bcf980daf01422c939dfdf875b4327b30f66b17333ed501be2123d69dfd3d5198b195d5d5bd961110533bd97d2b4ae8f174ae436f8b1f2b4801b1a647e5721b53e9a1f66b4d119799e5b1f796acc7142c7b0744aa82b9bd6b8eafa991573a8fd308d313007c7e916843cc28fd8e05931d9abddbf68e6247424543eed90625ab2be9d66ea23c7f7511692e667d55fc46571ac9d3ca5e652365085d63f9821ae525a9768a22998bf40cf1df83038fffa4cd4579964e558dda7beb47ebdca5439d4357813b3e88b4d775dd52310dab66caffad1d042dc0eda5f75f6d410faf715d4e50392f92840bf21e5bf4d6b4fdd05fd255a8dd3064820efa17aec748da135559db6f6c374f03b988b1a9eed42d641387aa20093d2b95142c6c516d14e0e71444ad17ed40b8dd128b06fe70e27fb7d6d3797f1d75157af616c056b111895d9be7779d17da05af0b93a70c3d485a7cd67959bfb147c9a2dc3a383be148c911bf826d2c86c3d4c679fdab8b2b83f39fead1f11914337c253ad6990dbe06381d0b4c6b5ea4b1cb256ac28e7290ea38f36daede0063a091f4a6344cd16158975390583474479c572029dcb2856be27f95be94028eb483ef1e91cafe5bded137e2aeb61322a0f4e5f04f7fe035e9899cdd4a626e1fffc137a74bf42773c29beea4a3b385febeed74f0c93546c642f4289ebfa7d4f9f71d3a027a429d152d29582221d25ea38293d2c43a7fc88b35ee5bf0809fa7e11311bc26c3eb540ffe24aa961b853f60a96f7f244cbeeb179ce778a1446b56d910d29f558a3a2002e93eecb094e2584a271900014839fb406d4db9ef95f821b42e909448208934e3078c0563d6556b7de27ab93ddd621841dd8e86fd2ced5ea0ca658f7cca294f33f2119153af3152b95dc0976b9ef827769e36bc0beb7e90e17377585daeeb7551b7952bc5d0387d0324afb204ee9b164ef315170d7addf0780be2a9b238f67083d8fd6c91a00fd3cc73c3b7307d73437565d699fabbe86932da9c0f0ae4e75d171a383c68aed48d995601c65acfde3d1e7f2410bd12f408a154a8f92d5a0a74934531220d04af8147964c10a341dadfd5d13e95534b88b3204e55410877d67cf9eac3df0eba25ac695add744b48177fa3cdfa24b4fdfbbe1a52abd6ea02dab04308c62a683bb6e2f4db69a1fca8cb856859a723eff0f411a3200a3d1738bca53612a07012c4f78d8a0c95d72c3a659bf2752eeb89bc12bb5e6298763447a6b881b984b8fa3e39ea0894dbe386f2611c51be826b946f7070c4535a9ac2cffc362f4de02c0bb4551362c6511348a5a7093ebfc8192a86e12f16cbd9b8563ab79f6967fbda786e3b53cff6b6e542152724768c8611c7e4dc061d837d62f9eded1fcd6a4500966edb2a98e0dfd3bd17c3a5bcefa92e774f59d8761869136a4f92aa7f6a53817004a52bcae0247ffb2d58071ce793ff8f66741f2a932e1e65e4566a9b5c69537652ed10298128859e151d0f4b772a66b836501a7294bcd76f3c047998dcdc51f71f8669bcad66e959338c336bdcb07e06c4e321e446a5ba06f2860a11fa6bef1ee8a0a7d3e55d2db8c818df72a5fbb843c22750d291b537a7fad6aba75e1dadd710f22cd93733157674704f56130ce8b305d3c442f1902d9bce720adbaf54c085b40a9431210a5694a296a118c5d75d2b55527fd8c9b04836404225cdb97f1576f5ea4a866e6d84376ec6818228a4f6b3342f092f862c4105225ec5455176ee9c7ed66b8edd383c6f407307536208edbd55c8cec02aba5729562c9ad1c0c42e8baa30f80c46c2c09b860379f485c518eb1782ae0c1862dd3dac6bda2572f9bfd2b71b6a20cc2ddaa3fc5e721c25b7d2bebb4c94aed9ab2c3df6ce675e89823cfe73f45e6e463b026dc1d0adfa26283b5809c20f6b2022193535b36e470da2615041b0dd694ca0b78d5bfa5fdac0bd8f2d372e67adb021c46ef5c1feed0f7aaba89b14b250277d04ec498fc0406943c0a1d466df282d5dd7f8d210f8bb371ef531a4f2ea8c3c253148daaf7376f724de63776b1fa791f6156dbe529cdef0cc89be87994372e8358f48d315c8bed456403fbf84a68969749356d7620962fb69024b689e0bdb559081b4b888e3e6782fae9ea8833fd0af85231eb37b99a2b047f43d3dbe054ba156a95821ffb2aa5d17bd6ea34b1f93e5928b244abdb58f8bebfdf9372e708eef957a525e8937b723a36c72bfc20de87c770c67dff5b35229ac143ddc0840d5184013d53c7325034e8e31bfd730704ea05779d593d80fdb589513c114ba1cf4b738f28db0bec4c05a073be1e265673e5aee4284e2ced39ebbd38f11e91ebdd4b1d26c30ec28f5d81ee40f80ad75348872d1a704e37704e270c46a3a802581af666921ad1dcffd7b7852c9ed7fa993f4d91fcf97d595355b86c94a0bea0fcb92cd0474874ccc2156c7d3233e0b7abd5cef19fd7f05ea1249ec2ff1257c8819ebf5722380ae29d0064c73e64a36dc39a654ff6164d4aeb946ee616527898878ff96fed85d9a13df72e06cced2a3f0f90d4ee6ec329011786ceafd4f3004d085b64ebc136dbf522f1e3c3c13a2b4aaa02a56f9b9202940fe023846fc076420e89f4a90591df7643c34aa3cc3dc0c8ca90c78aa3b918bd1eb3bb2c2c21373cf4ed1cba2cd842c859b2da975f5a9762f0f4ed4d0ee0e10483738c37005d2c0dcd18e2c7b8caadda3735a7495998c9fba71ac7d58b176823f1fa98b67cb6cf7179c165ea51691286c23012ef0a1e19a6c6f5c1a592ea7c7fe2879dacdbd0efc0b068086526e71a74746ddae1f76fa928f2878861651ea5738e33dce7a30046006fec5482902023097624ace840f4f53b23aa56f8eb3307c64888d1643cf980b9a5b034f0248857f45ac7d25777cc7651554082782a72e22663fdee14e3839761d2a02fb6f151200185884d68c25a0c8017c4860ab1720594afee7ec5fbd6b998eb6b283762dd3d02d68b0c034909992b0b5d171d5ccb6bd6cd2a3d1bc95d86a81ba0f13ab0e6e6e0d38664c86c1b46698ac1968e3085ec93c4074b079c6b667523f57c2d034860c9871b45126e2fc7a2d7ad8110664c3cbe4d8245c183b3515c1b4102f48b931f4230aa72678d021603e500d21ff1af9e86263dd299b429cbd5ff261ed318058291997d3439f8c571ec36b6df16e28159b27f9380f055027834e532574ba8b311f9dc0c07419b82ac94670731d85171ccdc84de449e87c62b902d4ab251ebb367803ce604d20bbc46364ca5c70174bdad0831973ae5b56c199bcddc0916012389b1d07dd5965504c0f373c16740adf2c27b0edf03ac1f218999a8b5f0f5ac296070b77c802591f3e317b38fa805084d2534ef7af051475c2b09ce109a681bbab035163f054ed1ccd61e115da49a486e3deb34f0452367298628674016c49ebbadc11aa513e9ae0e98351cbc5f8b0d35fba2fc327646103630631786c6c661002b404419d36c56480f2ec571804c7f59b2d817662885b451d2c0a0285ef2ac3d695a7579b4b162650f76626c95ed574cf6bc71f9f91bbf59d3d82018a211a13d21ab5c38fb8d5b2dddaf38a1f58b22fc0a5cc2234642c86edbec1740951c0787e93e1cd13fdb936a96a46e0c25af04f5a8fd344af1937e966747b6b8324d3495e1c237c8f1bb057711e665ba6d77406a8edeb5a5b2c8ed59623b83a1390ffea739ed03c5e1da7555551d51fcdcf58007a8b29705d11fb801cffcb37d74ff7abcfd5ba5a491378f9eaa7f5e6200e4d83804d48dbdc2519b8f10679f7f00a6b1fad7ff9236e45040c26400dfab0410148ad84f7b8b931d5c864c21a62b26aff672e1ef7882276bd783023540eef66fb2d0f2c0685c646a011dcb2502c1f4c6c06c284a2a02c50b01b05c91fa2e2fc8cc3f604c9cf574f85a79ae8636eef49f17b5da19587efca7382bf19b9f924fc887383bdf0dd19699bf1bd33b81007f3faf509e8629b999e1d7141722e9ade15eb84b84dfee5071faba4d51669885b2c2afb070e835920575c2956532c01b0e4ff30d2a2ebbcf8bcc0bc526d2ee9c9b1a4ec1d9d8e4c106dc2c17078bc69161cfd09c43b2ee2a35be24077e2adf77e8b2de5648b61c541b4275fe4aff8b86e0574e02b79892d5ec6f028e11656b051957174decef570748491a4281a9d45ad50ab2fe90edf1335a2a984407993ee5227e2a4932701f98c625987959a27f0ff481b3dbf4c8e7fe16cf97aaa8810a47433bdd8000d91ddcdb9eca83e1fb88e2304a5ee46d04007970e4ffdef38f66384ba477e68d1780597e03779476936304f1dae72b380b6f54917debdfbfe5befa75841dc119c0a7dd70ccd3cf5dfa658838069db81fb7b25f78e71f396c1ce80f377b694f866498da31568d0bc01e2d5e46ffa9e8aa32f4d577e8b29dd2f51189ecdcf949c9f216e181882419e3635974606ba55ad146f2c6666686448762bc216de0c5d2bb2091f62b99e4192cb4ca054d802bfdc863db3f5da75a389cc9db3fb047fdbd83a9f01a7a7d1235b9acab0bff4f0f0f29d1f075b8554f54351b8f54e32ee9950fb4f86d4c07baf687d871d4d2f97b7b16d89416c4893daaea1a14aa011fc0e70e1209137d39d1579089d737e49135c74a5e59a1fac9ea9ba81075d6a0a3607f3689517b12bb87b773ad05c67940c72b41d63b2ba4f9b0cad8c010214ad763fb221235d6d23ebdb1029de0db38476bbafd7590a5bbc295387c19c4b85027fe5b40405d2f5921a4a499e98d75c0e95cf4acc177cc5be5a8a7e4cb1315779c7e7a5af53e71415a79ae583cb1c07ca0cb7c70583299c727d9c369c6a9a96b6a0fa8abc57049e5eb7a0f68575092367a36fdb0b9c8188385f7cd3266aa39cf45713cf38a5915c3c809596de782f2be8f15c5f3a55e4618d6937266f042828bb0a14433b991ecb13fbc84c5fc9f49054002ee059810f5c35044bf217ec4109e5f27a83e1fd82e5901881e6940de9f61622972f6a3b06ebf646e14c43924bb62d28375677582eb3c776c63b932704b4a5b67644ef64d1550ae997be2434e88c41378d7268b9037991b0c2c458e1925abe52adb03a430a0d49ef26b072c269f85bb853d8a24fab77d32445c828822c9cde7fe3cdb9a735b3806fda96e18f817323e4b647c57aec8cdc07230c64f0aeab9e296d7a76ce032c3b79c6c16693c312737ddbb4410036e6592098d51787070b7493474634d086813505f8137b7f53cc7a7710df13d5445f18237ebe12fa7b0e2471dc85f70737d3f86b0c705303a1cb273981181ae0aed071b9434c12cb1b54922141ed9c884436d83d39189e8350fd6d4448da24120a3fdc84bcf641a1aaf3a810c2ca70c1637b3e7fb7a6fa024082480192a0d1ebadef071830668987037cab2befe3f223aadd906fef0a3b7c7645acd7f64e5a0b41019e81ae18a9707eefba62c0da31860505dc82af92a6a278d77701c80aa3b5cbb99890219520d2eb464948c82c66b926a06a84d6258f93f3746c682642c0a80782358516da5e1629103836372110c6750a44a91061534720ea10ac6c9d4c851f8d992bea3651818870a018e6df7a30a265c270a918b7e10f9984f443a960dfb434835a64a0ad9c4c20b2a780510e0432047f477692a1282e45b7e06fc245d93f43af38504389e8e2a3c32421154f254977f8b73c335151b102817b3e156982ab2964b302d03ba36e3782126414405d831ca885008b085016fb9c93774d2279ff8a24ed3c3b61c256d0fa85832b61fb260641e6d63feeb3cff141f4ed6426bdb1f4b8efd2945b43deb535d03c98d3ab584b29825a41484b8b6af9265916e110382c6c0445c2b1d323d01207f891e06b9cb127010b72ba560935e445898d48ef82721e1ad3259003969abe651c09cd7426e28cb34daf150ef360ba0f70c8de74455de8db9cc30e911f61bd064a027457c1650b8cc2bd1492f2c98d3fd63019df2864f370ef23ddd6b5ee51a6d5ed643c90d09a50c0c197fec9b06592ab1cda0640476650847b964efe4793dc98be0aa53355c88815d3559794ce24c4f182969884029c8b53024a99462142428dc145629ac48014e6e855d10e8355f08b11ae846a0683e2d1c4e2a5ea21f3eeab7648364e9d53ada58c8482a11d1de38e04afc1b1667acbb64c92271d87c14609a2197418371997ed80e652a6beb41de8e481eb08942a8c701122b4139e73055a8121ca343c98362874cdea9d6590e3d432415c8742d5899a8cafa6806f542d66b4a9d5221833b75d08653b243cdb5c6bac9946cda6a79ed985b28bf0f242f1173a417a822f560559ed3d84142433f7e88c2067f366460138b85baad8db6241bead481b3c3b82f235eba91cba8da5a7a0ba071d9d436df0d911d4c7b87baaf5df5458617540f982dfbd78c44c8df432831fb416fa93d74f0c8fe25cc0988e3ba7574dd33545506516c99d34292c714ead279800646c2479a4edb7f41060e5941fd990a833d726ce4e31351cf5d38ad3ca6f98e0f18c526f510587debeef353ba78beffddbb7df85fd33dcd53f49ed6b491a465a0ed3c5661c3e3cd30d322713923a39559383862e6ded468504f4a006d9dda1d371820d7a9db0ae4136076b1220226f271029a2f6ede6e3411b982a2a96837e84502a2a70f866fd40354e455adb53cce3515f4e91a546ad68aaab2e8a1453d638511804325c37f69b1070d6b5cf08cda80ed85f765d8a3aadd1a02ba68b62579d60269d5124c897a1a2e1d911d40f5347e5d16d2c7905c53de8e81c6c83ce8ea03eccdd0a9f6cb0e42528afa1a3e7601b343bc3d511734fbd7434931cc1b4f2220fbfcc65769a245455d90f4f7c63b23b9ccd0eaf157daa394b762a10c20748c0f920495a06fbb4fa68cdf8cade235fc8f4c03b7a46a9400d52d398fa27de37f5c4a94a59611f162be9773d497496c36d2a554b11eb745e25c6b18e817e3dfac8f7220095e4ce3e7144f531762b7250c7391d7cd34ad4f446241241ed9f338a52507e887280f8d64e618727477c0226becd19ec88549ad0843cae82dff65edef6c85085e548a98d50b44c4b73a4c2c3397ec5b688617bca1f91393375054a30fe4c6cf6450b49fa7611e1ba0b25323e271173024fc6499b83c3f5046b4cab12e3094641c3d5342cbf577d979207c1c54454504aac58ae76d9bb65642ab9a59346576c0cd59af06184a6f80c5d195041c0024a8221039d69b9126f05e2f9f8080002820c04a067a4f90cc033d38c1b80b51834a6303f47ad342341cb74397fa815bf73a6a9304e1a9260a4a7a3745fe9360304c740f5d140cfa7b5ef1f39a378befb2db949229284c00381f97b247019edac6a2bbaf7f2d21284476539b1b798dc79bd83af7a9bb26e75d8b364ba81930838d540ff49e320cf92cb2522416c0429bd9d9c28b48070162fc114340347ed704e8f273ff1cefe1d8efba180ac4d3af081c2a0701748a313b099894408890fc20264949a57dcf8b77443b1a79ce10a90d3192f11352f14e465ac2ae43cdb50a00dca0bcbd870bb33e9f4a9622bf6694a1f6861270d165abb4681d95e3d833e565c1e537720364f8a0e2e4442701c28209486cdc58327b060096e3c942ce203c0c5e6cb8d035253c78bae0774c07900893edfb38462b58a61de7fa73307ba663102ff333ac8663132ad47f3a828f1787680e4e5320ef3c5aabb077820887950a050adc54b165e1584d3620963e8b600d6eaa521a4145dd69cb0dcca19e4b6bd979309240ebf33cee1c021d86c5cafa66930b81c3c1a670f616103f39960744f86d43e986bcd3bda86ef8ed618cf3a8c7f6a0de2d3233ae7edeb85c77b4262cf8723f490682220c52576dc1f0971ce3b4049d61cda015d6e2154c4d9def340f15a027916b01661271557bdcc4dde1fdaf161b848133b377a6e9ede8d4c74567fd279e3509beee8cb86905ade98cabd2541484cd50e60235cb78853dbf8d808df0de2d4341e1bc2758b38358dc3b670dd208ea376bf711d1b0c19fb1bf4502baf27e82bfc1a418098c0f794d2f34fdc7ea586550aa7e682b6a0272ad06adc66aa7040c9fec61320e98c9053406a4a390b31853e55cd997783d53fa4ecf69e148b64d6872413c85d628648e917b0fdd8475e11d68223807d09e06e5c488cc1c9a2ee8fcc0ed53efb9432c4779be3d1a2abc478654972483dbe6f01742843e701bd2e70c40e678ae63a744cffdfbd988de87ebf2583880bd8bba07afe969d6dc96aa3eb3aae8a3845cd776ea2d4b87fcdf6daa275d7f04a9e1146bc6c539121c0a0b06ec2f88197aa36800911bf26e495f3df0bf21e2bc9cd9e5e9e036f12f3ab695c7612dd0cf425fd07e43d1a956b28ea6bad5859621414596038fb9d0074cdf014bd1ad85c03663ef54505b8f7af7c7d1cede60eabc5d1112e689c1ca03710a561dad324b6ebf2eea119fd7f9d0eff590bd7447884206a7e96e5891af58493e9b7218a02a3a02af414613a6de9cb2ea3561b9e77e46d513ac5668ab7895ab3d0d19f90b65c6b07c2fc6f38e41d25c16fcf0b8b961d605e96177955808609a5fcf1fc79d8ed77af698e4ef82ad6d302ac9f0bf267fe24ffe59e9a56a4fadf70451897bb932609c8fce75ffe70fe07cc653fd4ac07875c97f4ebfb8c53d0f326dc3007f5d12422ad79eca760ccb3c456bcb314773d23612f318d4f2be1ddc1ddfdae9a9e60e497bf44459846de7f061df56e0f1836acba5914d5390057bf1eb8c2fe300b593df024bfe8ec3930c55e9cc871d03e0fb0ed8504883695408c45249ca2eb6cac996818c040430dc0959281ca2c518739faad11c519ca426d032178c93eb6cacba77fa0d4d5a423fd4f3c6738d4420b0eeedefbda0da42558f737055cc6a0f1430c7a912bb098f85acc0c2add3bcd8aa313f3798cb55d89cffb00ba0b8fb4d330efd762664e92f5965666c2f85c06ad3f038beb90d7d448dda184e405ca3acb12566b064b671363eb8ca37389dabbec636b0409a1c45dc817bde2324960a5a3a8c5b1af296f336ab573c89a76c36489a43650744a453b3a964bb38aa13f960e560bed48343aadf115cfaa7469af19612ba4bf8b8e84b42f67ab0b9d1ec5f1bdaa1de07f3ab8d101712f9a190b1cb8daec9ab5ec84644ca6255bc6f60c510f04dcb6dd474a754a5ff7121469d6d6901f6b19a02a1f5b5f96cd40a6f54585d91c18de7adcb80137ac0c757d2260f538c5c2c408e37f7cc916e7d9feb8a474c63277789c010cb4ca3262226efce48048f50ae80f634bdc8201445b5e36510ff8312048554a12aff6522e3f0640cc1b334fe01443bc43973014e8544197d0f7b96efe85f71b9358b7b513c993d831f1d972cc40aa4cdb5479783dbcd703ca217f3e04077438601c4f99044bcb62c4c05177400a34c8db5b90ae3997043b2116d37c9d5215615bd3d083e22ae2ce45257f92be4262a42350d50d3b0df85e8a1916e8f10b1524bf5da7846bace85cf9cab8ffc0982e84047e7565240d57d8f60a2c032d3d76c83ea8ab5972e1e6f3efbfe4cfbb03e910db294af4d8b083be57bcc8500994f849ad52922055f0e05bf59cae663ee69c5d47d1723c03acb993d1920a37a07669ded1095984f1a3ec3836126deb222a17bb7e325eae7e17dfed49cbe00c27c463934e04f168283bbcbadb051aa219932ae7ce7cff7702584ee7aed13c09c6a0c281bd2200fadee714cf36153bd00e88ead30ecb8ba23711d09da804bd404a16588fa07d121293a54929c7cdd09345aa8bb7c8521af57cfa27d58fe9642b1964be8a7d5b429636fd6cf6fe4746cb87a5609e6d36135af3ce0368c8a4732f8cd0ee2d9c75d6de5b0010ec0006811d0bae5add1c6c3c8fcfc22137a61f017785da7e5a6a2cf29e41f3d1cc65f5cd0b0b0c66f7332f428a00f4b15004492033fc88adbfe50b74ffac4359a3357ff707482b2f03e7721f8e82b63151f919082725baf52df6bc88db4a9c14be6ee3bf165ba05bd0500ae779c93e535962358c329c08b019f0526f0ba0dd89e526f21e5e1a887eee9f092e8ef0228aec310c88ba4f7c32c72ff912f3e7cea266729b6e9105543f12a08328bd899aff21f7e9e6535253e6eeae3dd6bb220ae5eb49795cb1bce61e5279e9c28eaba47dee9e74c176f4c56405288892faf852a1cc9c1dd86073c28f2114ff79d1cee25416d8293534aa006233b3853419203d843ef32ceb61e9325ec8ea7d7fbf40ca4d20413af1bd868840a951a97cdb02bee179ce2c86d797e4a8802410717bb2163151661164967ac8cddb08d0c1e0c71b2616d173db6aed738d4ee1cc801646d74bb9e0b74ed22db2a25098de691e0725acea573ff5944e194c4fb193617711246260b0373fc9562a6182c5fdef558b141dc944aff033aa1dc24c5df1e3628c2c8b220d31bede6389b19f53cb19896f5f4b85988121a7d36981996e784279ec75d82ffc520e7685e3bd26b799ae31b00cbb00aaf4c8e6732f8383eb75c5ab007ee076c7cd66bc00b8d9370056b592007f55ee7a526d8730a52b1f5acb9b1d00f46c96d5d86c86a6282d5c1ecc6686ae220e8a369136ecba4ad8b46bf9d80c13157d81098f18d65c2a507afc1b6dbe14fe1adb185e0af97913ae1fe2d01030c3bc739586d999b8497c99a04251a952aafe88be5141f3776b46aa0b398dad614be00ae220d8343e01ca067bdf4c57572c8d2928bed24f0c0509ce4ccec33082895f0408cfeef80d5c1575f34c00ea923a574d36656373ac8779a50e45ead45772979c620e98c1fbf5384461a23f09f9e52a5e0b0faa9834e430e9c9edf9d3dced3627b120fb6ff69610ad4fddec32951459182838c560dc3d386b8b22a096c4e019c7c7f99e78da13468071947e69d8dd9818c22a37b1e3eb71ddabd2e8e8a702010ec5a2a7e48ea7204a9969415d9ad874f6a09091fff2b6a2563bce0341d0884379b2bf4ba836ae363d08e81bd27d22c3d259c7976f882b0c994633c6ff9fb20cd2916ef13980adcbd96f1b1ec28468dbb5c3fea2724a44263243fe4ab1bba02678203162ca8139a7cc2d9b846933290800c9b2b9152032471191b01c1d01fa508916528e057756fa50bda6992e6f928d502b77a436375dada1b102c04bf56348af3b12fc7cb9dce6ed36c922f515f935eb3219a9438a56a92995c5e3f9afb99630f961aeed63332119b244e6ae8d9941a9958f4d611cc7c58edd73d1628a9b7bec064fbb26415228abbe0fa06ea87c35401ca569cb8f81d4837e0c9e556356b4189356f230c450badb105f109eb2e9e2b59c475d2afd36b6dca5d0a18cdde647eae6e30fc5d71b9d2688db249654a2838e7b64d43e7c51f482deaafbceb36552ff61e7f1388f44118e13f7493f2df243f6dc815f294f206f7162530b692d276edf00d8d590b8d1460a317446f123e6d3c802653ae9c69eb27dff30a028c88f7930cbe823a66e21f53427840a0f7f41518fc634901642d8cdc89564855a3ade8478a93467758c82b04330a43f0cc83a4f5eca034d32e5facc0e68f3090760f2a7f122d765d6e1dc02770fb0b0df68d6e17b911986378a794a52bb3b7f402df5a550b47b11bc3543a27f2ec4be4ae4c59fa71e88d30b402c27aab739bab13b19dc4ee035e9491d9257278781168e16112c950dde3609c613298a566e7f84a0256fc169fd3fe1e2705b18c78cf96de058aae1a563790b7ea9edd17ba0541e6ce2c595d9a8923c4911905c34dc402a5c2918ea7fb12d13041760addf7646aa14948a9857417fb1ef3c29521a46fb68a54d45c81616b0cda73f36ab0fac0c14a00e013bdff5d111f29e2b3494c71b5e4fb93cbfe45b69dc4323bfdc0ff162ac3bbdd21dc8a0720c516c98814bae960971f200aaa69d4c63961f18fff21c2b5c5f9a48bb1dc57eca78295dcb0ecd8dba79247c8c0da121610307ce32a58eba1e2a72be15a4505f3189393200e99dc96f0f5ab06a15a561328d66c2489772352e81a8800003d7a4533c05aff74a034b4595f3b6b1ab0411951caaf35932705c327189bfcf06f920cd23a2430ffa89ccb424a669614eb887183047876b74e2121963cafb43346e388bebc668ac6a8fecce8702ab0cd042bd382b9d22e536a96b73775f99bb5b0ddb2238c3c2d2e8833b47b106301aba68f9d2d53676f21c5be1db4740401e2c88bd3548b6eb3096012890871c1a3b6df3ae988c28928da924dd13b273810528861b218051b1624d5b5abee90e48fb34b6a187d0ffe141ce01eb7ba20f4f7c610c842f877ca24bc298f7285102fcba4d8140466f087cd9602c1ed36b93108e6988678aa0790c74969baf02b8d06f093a25c4aa2a50ede1c781d388036b7dca78034c029d8ffcceec01bcd0d17dc1c8b8f108f8b9547770abfcf4361e991bd1e1b3ada3d9ce679eac57f14bc00d3af049f28df86bc4274137c65005c641b35728fd8d1e99dc11a6d48e2ea05dda007df30df049981b74f0bfd464ca352b42b06f6998d65cc678a083d89160aa9a585b1bff472ab5d3a7a2684cfa4fd9a19eef34323332532546caa9778f517b99fcd8427fb172c8db5049c6f48999e7adee1d3cd2703787997bdc3ae2bdbb14eb20a40d28953299c1283298470b76553029135724c8eb36dd6271eb5d215040901848f88c49e83ec30710166c656941a70a383ea84ff536fc62d0e529306f4ec2dc1f8215a662326427d4bee3c68e49a9098df41cee00552a3fff228972a7f7f39046716b428bd169c34b35906a6b2a0d2b992205de8da45a513bc78e73011ba773505a90779521a14961844baa84d23170c9afbd66eab22730f5d5fe660aa02dd4795b929b791436266e0eb32823289043e1cdd2b1460fd973ca726beb12441ee12ea14faf89cd57d973491a2b59baac03d6c39d85aed42a5c41c0481c7f8650a72f813308e0906a610af01758e8d40b0d97294a695d143a9236875c414bb7a44df03a5bfcb8f10f5fe7a2349364c7d4c0eceea29496249bea000467e8c7a9c8df2d9acacc506425510ac04a396d0b0426d679a047c27d39f798e8e51923a84eb7b102b75db28f0ec7156a2e71823c83527d646f78fed8a07b7090dda75560edfab413138df3409032a14a7230bca065307b83a7e3207ad0770184884c79c67ef55f1f5fa4a2fe966cb023e6b6ab0bd6198476c1492bfb5f80115f65502731100d044668984e4723e646d7397c4c5a674b9d7c0c278b4c522d1d9c16b27bcb228ed995b075bee9d043a085b319a51e398b8823b5fd2be4159f000b379a316e66a22c8f277067fcdd074c1d609e7b083b00aa8b69638234dad7b5c076e72e6e96620fbdca440ac3f494193bfd9d4170f041f5d37a85c4fe5e14d6f7dc7f5530d603692f6521b20655da248531a304c1d21e84673aaf34ad3155910475f3a4a33fc1e468c25f372db083d4fcba477e1f36ae51935cd55f3eb25f10b767d50c859b50b9c47e3ed35d847f085532910b910eab33b3bd2ab0c8c033ecd5ae0fdff31f3cb1729b6cbb432e92352ea7f5fb40cdf922a396fc957ab71983ddc2d9749241e12f58236183e7de5f868bb206949348cf0f949dd8807abfa0da10e482cf6f4e8e87dbd84173c36059936d8f25b2003f45c250423054f1080b15dcc6d1ee1f45714512ba15c76e21dec9c60016477189b003c2b9905f33d110eced4d267b038e684d995461401f6bae1aaf014b251c01602e388c3ca31f4086b511887917a3aa431a43ae43971726db05da138e964c556f8715864705ef0c0dcf6d6d811be530141aa08c8495962a2b755c56bc427c763cd2272859600ba5d1a4b263f4708f3ceb2f2d2345c7786f9703e335be1c17d3009ae0aef0e747cbce58ed4e34155d7ea0b04da4da2ec32ba7aa51d90122e77d4f0946662c2a39531c0fd30abfdd3c48c6479cdecf62f872a198f0e02f1f19ee53cf9742d561b828fe535857253b476f9815e1c4f8afb0d70dff9f674b3b75e528f0ab36543dd23103e9648a97d10795ee89749fba9476babf11fcae0797922c1bed90a52362376798560bf4245aa15f19f90bb297bb286a7a6f52b5888a5734fb6fccdddbc45b912aa07a570e75e81ee6d8afe1e6aa9a1f9ed6421996990c3e572e86dec0ea5dd705c2dc547f9b848d2f39511370249c02a32b17fd79ae35bc167b20c4750b2cbe63c74ee00d76eb77cf286f28e8be0bdca1585531e8c9ec4eb684707731cadab0e6988cb48c7dc0eb8daea96fc0764be813030e6109069d75aafcde654b0690edbb624bba4d30db127525d152ea763f66fa6ea9e57089a533366cc962ac35f678c8d2aa6da2b4382d60fd42cda27a844d3ded96508d30679d434998afd370717eef6a69b7e49e1a297bc512343ae607aa682f5b6cc1e0635f0972d8126322f62ec911976403b07ea9ed0214f26a86767cd70dfb3f34a8967473d6e800bbac76a1df23946d20ab159f0acf5008e044ffaa0c09aeed5416f4183b16892acc15b9986b317c15ae12c52ea6eb9dd5cc4d18da2d035c2b2367c5f2624f3b7c4b188f73e0830589bae70872762a5fc0162dcb35f9476a8c5a64d4cf361122b6e16ae12fdbe41e7692eb66dcf1ad46d423e9aeda052362031e111d3903339c95ae18f7af0f73502448705b1ddb3376c86621cbc5a6404c60811043174fa836d870e283be0f0b630455fb72c5629c8bcd935408c83fb02693165f625e126685efff132433caace54deef98bd8193e64f23fbc6f9bac201625910fa9ff553a4339b4633e16c080442e0246ad49bbe5596aa40fc50c7aa42700f05dad11cc4ff359796e1cf5bd19aa448ef6f9d793339d478149589f034fcf199ebc1660ae5e16f7b21528a392d04a1c2c97676cae4b1c245d6abbe8e24fcea0473ee78ac38ee989db979c8e31976db8caeaaf0fb7c68805909d9b3391aa86f3d67009713bb09a96cfb54e8f3c691dd04ff61fb72f133807543bbc7273d3d0f0b32ca29bb7320ef3a895143379eb8717d5e317dfe2b591ef5a8efbb762f30a8c9694bc550b96949834ac7fc4be5bcf979b8b7e00ebd6a79ebc16422e7124bfed3d50136930b5413b25ded5a2ee0078646933379025667970dea3cfa34bf10bccebe6e322c736566cd07db40bb4e2c7d5ef5be6b106d29c411b220deeb8f2f9eb8f31ce7a6b6ce1f9e333339db889025666db6823dc9719b19d4d84aaee998c7da103fbe44d818c5a43e9286e1173848c098002226fec9e546697451d49c5d9a4c65f906785c1fdf38030e4cc8ba81bb72864063b48298337cb2edd56ed45d07def7cd9533e2f5f9a6393c4e0f9f0cf7bb9dd6c9c0cedbef23c513e21886242eb6a3ce17bb51089c178b4f9b6612236dbf70fc23089db70c9aa27f50563b97a63851a0c633624482399c36bd22aa545a05d0984d7ca3155abd691d8892ae8b41d0991352eb0fc83492751b0197b9deeb06f48ba58060616e3b43df5989d6c8a0b22056ec7e48166f2db8100da0fee5d9f6b3a32ba7a03e03afc32d8489064d4af90ca154645c1d0025b3b2a835a909f676da42ca8de0112a85bfdf0ab5f13eabd478a55de10178ba4cb48306bffceaf4dcb11441dfef227324793d3003cf4d9f70b87d855a8a9323754a573db9a4b8d1a361f929a148c247b8c4177171006a57dbcd36152ba490c0192cc9268df5f22de64160e830b0c0069ebb0d1e846854ca37baa084750ae43149ee412db196856827ac4925fd0f16475d387021f93126bdb3db2480ecee3b05868a33a7e711f7f06518e023a96cf4c02b1231044083530011f9293b642c1c2cc8f9921d740bf011516308654f001fb4194a23e06f9c48c741420b7b6c338287323d1f3c2a8854a6a4ac7f28a504024272020b157148d7e50907e20e922204eb1ca1d04f1ff4f48341c48b95141a766c20dd3b673c69a921bfb77e273ea2d2babc56893a34280b72f6f03fa20e07310dbfc1f66b6eb31a93719ab1135204194f955658b56257bff07aa4078a36c65b5ed62691d4fc2c1fb795824db8ca720d15abbce53d1ede86476f74f323ae9ec1661d51a59eb78a08220fe959134bc49551f1373d234bfa1a6b0dca7b225b470a98a14a0ad29d720625696a45963d592ddc9f09f7176a83989ba7c7ffbf91086c067cad1674429f7feab1973110f6ef4e4b4ffcd44016de988065413a8bdcf56108af42bd00b360b3de4a1fa8e0e3358ef552689fff08b3daece3e8c4d90eeee74df89affb24d14e8276b5d08c18c9cb21744ab102b073cfd1633235e51929d8bbd2e4b85b19636f6627e629de7b3222c9136dadae2d30f700bd77b42f56b64d1e5e7363845f672b340292939ae76ef562e4a88b8205dc3bf1e181d62c40f72862b071038311e715526dd56007c78d2b02a637837598682db9c557f2b38e6b7c6e732c871ac4bb99ee08308d432e2c2c45ff13e4719623ccaea626aba05cc83d48c5fe6e200d4123626bca0102a5301916a8bfef5f3550245f6699cc494e620c5929cd941367c9967fad02a351b3580e2d8cd37c978fecc9ecfa7cce19119894082e9a66d13342a40675cc19c674e0699753fa2b2a6e7e97ca783f83a68b4249b2c1619fc61147ccc4d99352427a36dd0a78503c2c27be07d2862accccd33d5aa6412100b3c6b2e6b26a78f71db2536bc1f04cfb6e50f24c39eedb3224409c47d43f6ce58080559c76c853c43bbdb25188ebe96ce6cb480aad0b0f0a97e2fc5ba2c41a332634bcc9aeb097d81d1598a9e1194f970e23fee482b11e389dacf52eed3fdd2dd1e60604085f734cf322046ae3af628fb1afc10a00f69ebf809cb1030f63128a4e4415aca186a7a976b98f7fead7b93c9684832a570ada52fdcf0e25739f658e2937a0a92de11f7cf65f5324fcab5e43144b35a70b1c31fb7a182d07c00004a844b4571f19c3e1314d59b8bfb3e9a3c6bcbd5948ca57d2635a3a0bd7e2faa96d3d110bbf926f0224e41ddb12e43ebabbe5e45b68fe9beadbcf00253517755cd243dab9ea57df8f310e8a9f613a0ca87c1dd0cabc0243c4a8b635839e2deb263845c9438732d41830e90c3dd701c6eda65e5b03234946a7bea606a8dda4c2743019c63a5908163c2f01970d06d68427abdc1a702aad8d2bfe61923e113c4964c4311cf85c2c4dc77d0ff3b4ad0b548b4bc73541e47c722e9a2e3c33f090f10f98baa18f74e7c860af23b13d893c51dc7d2163aada044f69d4d084cab5d0e8620aba16e1d80b9b257d740de9c9461d0ad6c96ad4a18e132c60df69d9c1efa06ccb94026d55e2cabe35cfa0be2186a898d5d705070fcb5173c375a1e7cb36339a62d7ce1a108086930e71f2297c4546a9501b14ad68eeb72fe877e3699601f9d0248b519a4c62c2e26d74f6c717a0c89501e25cb3f3a46a9b6ccc690e538b669aacbabc3fdff35c9d855c228f3c840bd25c26b97b9175e4a86eec72c04b5564c08506eb72604b2c25ef662faa0c07709e3b66692f7a6cbc82e379e0c0779c2168b02aa0ec0124816181b41f0d980c9efc5f7a66cb174f8610eb658e320ce67d98e7fb043efc55c224ba20c3e5f93ecd3cd33a043e0878c6861aa23e506d6523e629250ae52af9d2ad5b02d1a53c7baa598a5d11dcff2ef397d2ddfbcea2fa478e40c8cb26c4c67933ec4606e0873458c156c1ef9200b542403b798c1280f982a2335b35b8e9784a11999becbac01decd4ed669b2b023531e432c253ad239a042d90ffde4f5d0be945541b6653a4724560bb6bc9fde60c6035f66295e868846b9a2cf29b3cb4c985f323e05ecfa6c7a4f3127c435bea37c8cb5b24b48c7f1a65ec05135800ae21bc175ac344916dc8032d290560a2491f8d1c0e3eff02a8c1e1d580da514e0db1cb5b4eaab721136e3803ed4492132cd28e6d55a69148a28db9c01dc6d57e83409dc0ddc26dce4a8206d8bba95e51e9e0bb75d653fc861cd69b0b973e1e51fe6086a4885d6446b8d5cfcf8512368fe9c4fbdfa39a06b5e39e21a9157311f99ea62d7f024faf041337c800fbe68c8a4637ed81cba8162b46965ed7f130ef2e369c062d65b0aa943e9125b16c16e8200ac33647727387f2a8c6892926944d1eb5aed6a35928ca859bb15848f837f269b68a93e61fc870298ea81c2642ad4b1cfc03ad98713a03c29edf11c3a537f8f9482c838d6c70ec5c4e2af09fa96e848bb4d2b2fbfe0dfa8d9d2c4ce66ccea571fbbfec2c7b296c15642ee4f0c21cc2cd3442200e2727af4b973f00fa2501d7bb01bfff345a964538abd1bb73a9b53c93bfb2f66cfceb4198efb39e8f4398bc5862655036d086f0464d4812c4b44789a019ab915f3a7b0061b1ac3b0f8490a52a1b039f714826540ef245ee9e61b43d08a527c38814951d3a4eb250d9c5c56944c2d56af59ebd15e48d2c47796569cb80f235c7bd2a387b15d13c6e38d24ef6748af082e925e79a199083e91569c9e10a5e2da7b0734caad774871af7673b5ab7676134cfe62f998eac907f34957585baf1e300fb692e2afeab9f27fc51ed6da65c95b03a452c1682b2d48fdc3b34bc5037d359c99c5ab48b8a78658610f941def58a0a7c6500d572dd1d05eb4eaf9747810f2fc818adbdcef55d6c0f6a2da88f3c6f0c5f79d2014cd19bcf2cc64c617ee66c5a550042ebafeae93ff982bcc6b0258379ca198e9c8e7d6be1e4a4514e6a39558969c7138c4df5b367a7eebb5797f263d2e48745e427f5f8a937cc0ac2f8ceac147718b47e5ef2491b51238c0d3f7be1f74d321a0f821fdfc00f427d77bec316d93ba0f7dda8dedf38023c64f020447874000a80bbc323b7f7b71c87a364ec8c401ca856e5126ae44ccf3465c070057b7fcbcc49bcbf5f61222ca0c0f3b990827741310b56fc186a87d4905a9e5ce0c8d7d120d3f559cee7a2744c68114d22e58555ec78072df3f1cddab2e485ab07f39d7f1f12ec9b0e463a54017ac7f428b48b60f9725c3ea977f7c984a029a5c15de7d1a30820e331717350e044df889edb425946d63709e0cdb95955c2917fd9386aa9813ef17a9a1ca7fa2cca334324e61ca5346b16303213b4e250a45e4e14a81290c20d71d4b74e8d74181887e364c9aef0bcefad383ed213d5033cf84282f92c68e95a1277815377c0b73e678149511d925f7f77013b1c6c502ab4c0b24a2c7383f3247b0ca3dcb61aa189f34177123b1e5c73f82cb2addfc7bb9f1421b54e35996f4f69881ed408187c66f8b5c1f4520503c4d232a8f2d04bd797818f0391f842b9af782a01226936927fe12030721fee34a04f2aa22c15fb8de21af5d4e59e5af48c94568de742db2c60d2f4225638e4ce14272ab5c9f8d0ea4bf42ea31dd3f87e4363d0f72c17b69e1778cf0eea31367ab7876f9ef5711a0544fc5442cb0ef02b852724bf20ef7378b67eaa987410255476657d19215d1ad66fce04ad574cbe33ce47a59ad33ea12d45efbdb3fa8882876777ce3ac735291222cea19b7acd4afae56fa3820a360ba9ed40bb4493a85624ec2c7e215dd82d1c8ab0efbfa760ebd0245d8af50f47e17d158d62411f67f3af181a772b008bd15376449ebe502edccfa771f856b5e49a4b99d148714d5cb1e9bc03b9d8d1e211383770c2f5f4dcf6acf6200d51bcf9893928baf4b9304ecf5b0275043ea2a257ceda41cb5f445fd98b051257b2b7a5375056fa7f794d7ab24a34860ac582e5b2eb776abd8613d5baed8d5d4d8139bd2c2cfe8af6f4af90b33e4eb592f0b413e406d54ab7979aefb2916dccd4436d17e374b1053e59bf379ec0c7530c14320e2175588c1aada056e1184361c0fb2fcbeb6eabefb3ea97f17d0780bbe4c85f04fbd6abf1026eb4589410018a3140993482ffa78db6285913d1146f2e677359642efffbd2a22cb1027adab5fca88509db341b08b2ea57d9941d4528c4d538446b6d41a84bb90259d6eb1d260bf6de4bbfd8791925d9d3b300cdc2d820a2cd4bd1aad517d3c7f63e4bdfedd94c25dc3b0b3b7fe43a6120dd63bb7a6a56787c6f98985b6f94a1df4bd9bd4cb4414cd6319ac5bb545ea6331acbbd5445a83f02fb8c9db0af97ba5ce89c8f609e6e006b7bf0cee44dc7c5e811455eaecff82c9cdb8c057f5628eee931469db948dce2b4cd5d0a2a2c020b3ec6285a7d2189e716912a89c55469be1f345ac76876e0a9f047195d5cd774b4206494e8991a5944388200b316138c8cbb3f7d0b8b3deae1f057d472815d85c56a80d18bc92de5517df4093029bab3064bbec3892b5040eb38b3449cb1dafb78bbc505916ee98c2cd4767b19c402d4aade0f56f16a0ac4ffa205c5f270ecfd260525c5c04bd241c35c00baf6344d6529a18080ed3aa0199710beee244063c31164b3cbdae611bac47c8407841507d969f4b91d334b7770e05c2693f2bc992645e136188212fb1a486f5ce4cd60cfc6cc7849c427c4f16f0fd68ebce31f36d2d6d91c8f80035b739a033663f563e15aeb8fecbf321e6c7faca5d5f154a56252065a978e9ee3ae3d3198c50af895c0b3a5dee68b36594db22bc616796e301c8cb41fc5ff97190d3437b7cb1f148e5d5b84a269052695046509616056875f0a9206c7de17d8b74449d7002a753edc8724dfb5a88483ec2b6915f833f058f9f14097f106da999c88b1a86bd340058f7e4d15334efa2a0d84d8f6d1e941f4d9e3d63ce9c5552bb2df52878e947c6a85e8e55e2441d0dcbbbcbca724bcca6309bfa177a0e40d352ea75a051cc0b648c55219d646c0f25d5027977f9ae80255e8991c098a3828f081baa0a64801f917b57fff0569dd436d13019e011970f72b91d8fd4f2b5d7801b363904dface8824056a1c00487df46f4a49fd2be3b417d14d92d957193b250329dd3b555eb7cdce377f423e586d1680290e684fe14d22d8f73420cdcd870376309b341b0051f10a0c24a77b2f9305539016b859e14ec227e40223aa5fd0d46d75a130d79323b1311fa58dcbc6cd091352821506b7c129402f3815b2093eb909fe273a81ebc06860a04a48ce2cdedf70f6a2e9b5b05246a7028f05791485b8dfd1cd43abfdb543aa5b373267579e4dcb1d28cd415232b77fb0521fcbd7994f05bef8b544a4afc23597a2d35fd0abf5d20fdc382a66618e750c707b9e4e0968263ec7912006d048328e604e0a4896d0f3788929367278bed5a256d665747059ac35f60a51d1018eab0958cd166939bc290c9fd9f04d61005f3191c4daab5867ba7016d1f2ec855335435b5a91c2a5606cbe0eb4ca4d5b10bba91333612402cc6aa10c50129707dc44aeb36a4ea4f6bea10675e54745288b2c8e72895e14d106a23c8dc83920a2c499b55dbcde9687d5954eab941dc3aa9a1d2586f8f441ccf5d328367b5a2ea53774ae65c941aad16924981ecc18321ff032864b7660d157632a59834465574817fb99df2417980a271a3de28f06c3ad66e2f2b256613295e551e06bd362011ef9e1ec2fbfa3da002cb7d41900fa51d911317abc03c1433291bfb2760ae9f2343ffc6fd911a05ab38e2f3fd7cf1367c2676029076a4388c1b3f6da95665d3f9964c4d7ac8b2b40d4f3ae57b05a9c1bc5229782c7be37e3a8c40786582fdf5708736f8a36203a3131bf1ccb052d0b2abfdc8939cb2c61f21e150f94ff844b809453a0d1a40530ea508451562839f2eea185f413b3e2c1615a07634066d08a117fd6651643d7ec8956dc68887df3f3c408d0644999f0fd9c45b95c90009ccaeaab60ab65d0fb02f7dc07bcc134a3027a4b3ce060b6dbf267c8ace62aeff34cce53b0b43b78dee940a84164d236ab67f553297d21a2e800ee5f35572bb7a179c5acfbb073dddccd4ca34f0281dbacc95226c6c3f2c88fef4a46fb51752d48da2705fd6f4e069ea835a8c3ed9c0a4b786e2f61494b1397dce24dd541e18796b6b728813652254b6b4b03ec235d24fdbb6cda0f605cdca02f1e5758ca1addcebfded46aaf788c571f3443519d69620f6891dc182cd8d58dbf07a9e1239b02bcc2b389b0ea75f6f3f1cbadb4f25460456a128e14453623012dc9a285789f073e4680300234f15b48868c471b0ebc7edb041f6eef918dae87e307db74de05b7b1b534b65c8c37f35c9bdbf900ae7b6cf67d4a6027d75b5938a7e932b1a5ecde49e8ebcbe1e7f8d5991cdc0665fbf6644e1abc93584dca20cd51b2440161693158620b245e7e42b79e2651d07d8738026af2083d22865927d7cfa3a8a07701b8d85ff1d82f6c73bc01d2153f190785cc0f26fdf107bb23d736c97d9becaa90817041dbb8fd06e74b195fc6e901cb2b577125d2c586b522055b6735943a72b90c491db0aefe47592e9d9252c4453ee74f0b89c1ea5a6e4b6065f909078690425907480b21ce2d12042b3add9a12fe5e1a1cec21158df88358bc39c7671fb85e0331179ca3132e354608f2ea15414c62033acf329353106859a30e3231bae388d313e7ab79d43bcce39b388770a8855b3ca27d2ec5d5116889f3f5a07f6804247e92adc022d5eaf24e5885c4ad9e9e8ee7a629b397fd719b6011c6e29f6c154bf66eb2b7dc5ba624650709b1084409e18b3019825a1379f4a477c1a577f919fae0e282453fc237e45212499344fa76806cb890a17ff952491cfdcb9360e9a49198e35d30d9ed64972f957ec70ef00a60e9b2ca22d1c5e549b074c12f3f2245ff7d8e526944fa81f420d2831ea77d28954aa5279148a427e1fb25122641bf812672e943df747912e95d3028c6253d595799f4a51f3d8e93c01f6192091f480fd032695f241e515719f4f7ed15c9264298e630fc0dccb2fd0f931ea0e510d4b27d53d9359c48e408b01e4d4e1a3553ed51da019afd3dfcc125fb05eaaa6b0ee68509da44d797f27d35d7b37c20112ed9cd98a39a7a48b83d3f406b4abda7b3c375e5abda39ad49d770b432a93b5de35eab6d59f5c444d179aa755577a09837d4b3f4f8c41ce25098411cac4fd4cebd43e70dad655dcd9b09da6aa5ff957ee3be9bc375e7925dd7adb929be29439266b699dbf257bf8dfbacc572c9cef33c14a2be2ddd961f999f9aa7f3c1079a495e909cd88d544e20fd16cbfd3c19827d629e954b8264b098cc51a1aebbd764fa1f41a13237480692cd1b1b2a3d312ed995e087608edabe532158eeff3eb118c90949e28224b1487e616ec6254bb94930e7a4a83eb86f24c7b7afb5fa73fe36485dd5d4772cd3a77ed075c9992f42eb2acf38aa6b075dd75960944b76a6aee411de6fe7cdacb04a0520947956e9c28b35f2acd28595fcf29ecc4f32b8a4a84c72f380050cf1fd221e47e948614003be5fe472948e13348e941405bc09ba14025e5da3844a4fd71c2001df0e58f2e455398aaa8218412803a9402cd00b14528542af90ecaa1c0582efbf2c4785e0fbefcb514b7cff958d4766cf84913346ce19ad46d215f924dd61e2495a92b445521e57134fd21e92c2688ca43392d2485a237b45f60ed925d9ade66917d93d64c3c88e913d239b4676cd57bee325ad227c89207c91ee5a027b6508700702dcc5fcd4b9bab266ad0b054f60aee6272e56021dccb5fcc4b154d81301ad82524177a6a0527c40090f748003496c40031940020317b0c01146d05513140b2798206914940914244062800210e0881003c0410081499a8188f21f8d82290b706083a75130bdc137cf7fed1ed21a7c95f25f0569144c71f05b48846ef11b0bfe9bdc97f31dadabbdfcd44f8327bb193c795b4f9aa03cf97994c193631e63f0e44c1e4530d39327bb6cfa098327bbbce3054fdebc83a6e6a7a33ef0a8ef4a216c8df5e4cd3168f1649763f819c34f992c9eecb28c101c6ee0e1a7a3903ccecf6cc34c900190df6f39171773414c4c0b9ebcf99d3cd9e527e2c99b9380e0d7f0d3511878203f7cd070fa69e4e70f3f05f0140758546e81454e78b0a875032c8a62032ce29182455c44c122578ffdb40658e4c5ab290d44b2bb3310c96b6a89a4e9a188e48f3210c991c64014c11ce52dfa448465aa52c180a57a01edb4a02cb1cbc20875814876acdb02b173d24488e4fd486c9960e2bdd556d0264d2cf1e40dc1df1148622e9583a104f194055455c507be95f8f64be22d9583a10821c48bcaa72e771789484fe29a72c2891015de81bf1c48e26fa944624f9de004ab9711ba93811f69e0ef069ec43d80016040c4721412df4f6917f8db1a8dfee34012d3540e8672e4c88bca7b412ebfd1fc74677eea9ff73f0be66028148ba72ca058bca814b51c45a57823fe881ffd749405fefed7590f04a5008fd39fdcb216c1f737cd514c7c13df5405dfef334751d5f73bcd517404dfef4238ca00df5f79aacb5194044f80a74e7c539defaf3547d112f46f2d4751137cd3133c5d3d2dbf7f9b398a3ef1fd1bad7fab396a00df1fbec29efe10d61fc61c45a3f8027cbf37ebf768fd5eede90a30d7c2027347305762ae7605b604c05608dcb95480bb580ab05736c15ecc0aecb9aac05d8d0adc953bd8c6a6c0b6940273ae28f0f493009e32c1d34f3f3c85024f3f19f90160141479fa840f4f57449e9e80c70478faa987a725c0d34f0178aa83a79f524f9dc024c0d34ff991e0e9279c37009e7ee2818e004f3f01e0a90a4f3fedf04de0e9271d9e092c023cfd34e497c0d34f371f023cfd94c383004f3fd9fc07700dcd77004f3f09790ee0e9271c3e093cfd74c36f004f3fd9f01ac0d34f339f013cfd14e491c018c0d34f40fe0278fae9c75b004f3ff9f823f0f4130d6f049e7e3a9178a60a8073f0f81f0573f00cff35988365f8cfc11c1cc37f15ccc132ff6d600eeef11f07e660f13f8ff33c109783c14f82a79797e0528f39ef002c8502cf003c7b6c40058af86f08dcb902141c02530a7c92af805804066370299093242709b63901393fc41022cd4d3204a69986493e67e6fc67c12498cb5f0726c15bfe3cb0015802af000c650243e09a1d70575d6a02bf046b20e733c0842a2ff96f0258278837c1a78210a52449f244bc042420d2dc243f4322491ea72580696600a699089cf335890c034c1f3009f6cc000c25887700960201d1e4a79c4f00d691128137c1a7a440e0bf1de0152e043ec947e0bf2f24120191e642e0674804028fd311a03909ce8180983384f8004c27909c5fe20031e71b10c43300430942ccf905e04983909d733e096e057ccef904e09c4700d69192e49db071c411470a01ff25c1260a26c157a552e5afc124b853a95407f824afe43f5048448948730fa0e40049c69c730031e73f6f3abd829288399f04d33c04cef96f7ec2244f24494edd36af753ac9fd5db6f793958e8ababcf6ec9959649d33a796092b42734e8fed818c100102081748036fee1d21911d2a17dd81e7b6c9464a63b2eab29bd01a6d83d2ba455df40a8ccae88b7a415d54462968bd3024fa5a2aaa52a9542aeffb78b5d65a3dcff33ccfebbaaeeb3a6badb5d6721cc7711c775ded72b95c2e97ed2c0840f0f97c3e9fcfa7765dd7755d67adb5d65a12f8b5684ea3d168344e0605994c2693c9bc6ddbb66d23955ab5d56ab55aad5e42d7755dd7759fcfe7f3f97cacb5d65acbeaeeee12c8f5d6dddded9ee7799ee7d55a6badb5d65a6b75777777ce659fcfe7f3f97c2cc7711cc771b5d65aeba70b8900f1408c23d80aa97fbac19eb5837cd6595a368e3dfa58ddfdeb1695dc1fbe40a1fedb51445524f2a6229107ea160d89d0ed6b5990d2288db31ceb054fb460b1582c168b95f23ccff33cafebbaaeeb3a6badb5d6721cc7711c276a75abd56ab55ab58200042496e7799ee7795dd7755dd7596badb536045be632994f51adb5d65aeb799ee7795ea719bedf72d135e3f77f31b8c8cc313133e071fc983ffdf7121239893477fc1912191fa74f98661823338f22153de930d00c18042be70dcc9b6262c4ce1f9d60a63e50180ce6c7506460605ec030f8cb650e5996f7f8a95bfeea44200cf646200cee320c30d866181ec760f071ccc3602e57ac23450631034ca8b20c35e6611e86ff7484446010696ecccf9048cce3740c30609a45186c64e6181184c15b96c11f590ffc99816022d601c54490f338acc7b6ac0b0303031f437981fc56a02b7deac7d8be40b01efb339b3731312058cd5f0e10067bc556c4b6e5a7c7d85fedaf275d63595de3b959b6e5289eae81e907c1fe03c17ec460deb2ba8666567f261006370ca63b4018282f3c0cd8c6bc20da277ddaa1c394e3c5a5441a896e88070ca87bee61f027d3d087eeb7c7711e980533619895c158160483c1c8994c5a16695de49849cbba5cb02cec0216662d2c25c5c5aec711ab9d096f6263a29a421cbe6830fbfd4c5fc3b8b46cb33079dd38dfb6eadb7bb76dd5376b327d073eed64b665b2596cb14cc1cdb3f8e7dae4fa63b2eb8f9a4099cc64d2e292b7825f68619e13fbcafdb9d863158c3b7bf459fe9871c98e7a73dab94d70c31cc514df9f607fcf9bfa31e3d6809e934bd6f6a8c7fcd41e0beee8e4e3759ff5ae06df9421fd355325abc5e37af5ac76c637ddee35bee9763d30f0d57929b329da2d9a8b4bd1369aabbaa8caa96af638f8bae4a5290fd6b1bcc5e37af5ac764a96ebd5038bc966ab9d92d5e299a98d6fba3636a61f676cbcb469ebab56abd56ab55a48d8987eb47159cbc6391ed7ab07162bcbb22ccbb2d56ab55aad1612b449eb56296bd58d566b55af76cab22ccbb22c5bad56abd56ad14adada6acaf5ba3d26d8c746d9ccac2ccbb22c4b57c975d7f463aa2ccbb22c4baaead46ad5b086cd9e99da315dd3f82318844b5e5fcdcedef0e0eb94980fc62eaefec4bd7097f738156ff9139a9619ed76af75f35ab78de3ecc671d6769d67bbcef33e9fcffb7cbe0f0443500581bc29687e2018862050684e1cea64fa2015287499644a5fa425d359a6df5c58e9895d713517cdb3a59bec34ab9db46a4b8d0a96d82c4b0f951765429f5016e5a151e80e65425714f7acfd8ab7b15d9930daed5eeb46dbbdd66de3eac671d6769d673bcffb7cbe0ffc7c2018862050e8d67bbde90d41a1d0bd22d168442a955c5c5e5e7298aac9e44d4d228a4921993e6986542a81d34587895f6072d41c39bc698e0ed479861594a74fdf400d6446691b97525337cc2cf5d84d292dc1f4d8d5ddab4c378170e1b31eb5cc685d639d68a775cdc6465dfdac4bd44198528f9da9e84d20d4671ff79940a83781384d8b8e8cf674da04d29f9d5679eaaa3271754de5b8ca5357aecd673ef35975f170c1c3d335d5eb0e4fd7d4f4771c777ecfea8be6c8e29b32648e9decff65b2cb73fed778b3ff201a2622e3c205970cf57c2b10ad867a42564230ba856236fb87a24051205a0932d9e54941b429a8d8c81e5abd51b5f8dca0566bddb0f8086b43b12bdac85bfdf9a24116f29c72c51999621ef5bdcce50fcc5544c26db5feb3c5ed7154c8d5f97b57dcee43658fbe843b331972651ae4c373c9d093f20a1b44a541ea5bb1a341aa487e41d8f7fe0bf1748d27ce4c7635d7cfc3219e1e3dd40a45e9d1bfe2d007eea757fc89a1568ff9e385783c205c32d4fadcc0dda987ca1edd498f1e62f5e856ac9e092ef7fea12b3eb598e5821b8304d13e5bbaa63fd5a76379a8c57249fbb941080b912342b2ecefc6ed10961e3d9425140b82c9a726c6a538e4c2212f422f0e76c9502c14eb9acea198f8a14d2036c74e080b1ba5943ac6714a6b6769d751ba89a211235c2b548a9046266f3792c171291cd7a91bd77de6272a17cb87545d53375103f563e51d797efde2da3723931f2ba4a243e82783dc2c8a432a1c5a6d590897fc765edfced76447ae5fffd290480db11cc50389a53fb7eefaa943aa8fd5592e98e7942970e42a92a19ddc3aa1554835e5923e53e57e9f9946322ac69c6118760f93c330fc5b0ac3afd9c2b66ddbb66ddbb66dd25ac59c737613015ff7a42ff8defbf99fc534f525c0fb4e5ce2f3de6ff8d3e1b07e873f5f3192ee3fe212d74f0ea5f353bf07bb244cee775a4320e857d1087f3a2790cd87ed67ca929b08932557d10817b3649cfeadbbe79bf306f42237167d6114e15346f6b2e3c69ffc55b0e24e0ab97168b3e3c661fe38b0624e951b83f267c1c69b14b9e22d572b726353f61ae4c6a3dc3fc88dbbfc7d60c51396bff97dbcce924d649a1dcf574f95dcf8cb4d38ed2ebe2943c278665cd22480270ddeae21b7dab8d5df6036f1c5711c275ecf8c4bd692f4fd1f89f4a3a36a68545b8e2a8144a517351dd1f578c1db639b4a52cd4f255549546a81c452e995e28197a8ffc24b41521f465c0266091effc2575c52bd80a79f42939314480453d92358be4a3aa5100f5c5bb795bbcc7d44a7042528adfc74ea2f521ac11cc7feb000a5116c619edc41ee7a58a466d07f15b421d8c6fd1a16d9b2e84b3a5bc2222526e2d529c265d07f1ca8041243b509a4bfb7efb00034f5c291176a8e7ae19b7cf2668e2bfdd43a3e440bd54aa59f3cfe45247d966360b95d91bcdb8bc4f23309bf204e3f913ec46469959b04cb920a93a59ddc5f22c1b214eb931efb49a3fd9048762ad3f4130f3cdd56d1637eb255a66bea9b9ef41b26bd8b0bb9fdb685a096bff44690de39ce8e80c03397ec6f4eb77fd95ee44f227d8e2c48b8f27d1f054dacaed944d16f4f12c91dcfbd0d8378f91c4fbaafe34922697a4e14fd269a583df62a939e7bd20bc13da9088d23979ef42e25717b128e9330e9ed0be0fee8717a0024d1e5bded49180404880c416d13798c7e7bd2bb3c87798cbef4dc87308f9158fad2933ef425ee495be93fa4fb380d12c12b5c4ebc4f128db83f128dc8f1a4df30c98939de92be863fe410e78e97e79eb4bd0eb1f6b889a4494cc2b3e8b9f7300851102f2249b348844926f2567ad27f245cfa42a0c573b56124ea2a779cc94918fe471a6d2e5f7a9248244590b7e74aa2cb4824b9a7a4cedb73d854b258956399caed4993c9498f1d7a120e5c57c5d4821a60bca008605ca1075d40c2134da03c2a950a8a22a8c03a12322568492831a7c89cccd8c7a332859bc1e5021b5e946018e1253b428d3bd22a954ab513478e3e42530243a284aaf29c928436a86ae3b8de284da5524d6185165a52848c8822a6c45cb53cbb0654a3a045ae1bc76d1c164070e1490d74b0c5ce16d420230a0e3815c7719bf88dc16d56b4e45a69d9a6608825a4e08d35ae60830a3f805181630453a270036fdb3a150b52244cae32373ce0828b97aab66507a93a46ae7fc59802052a9210c721b4467952892161c7fa0d2b1e9b276d8faae22004c88f1b4c3e9e9c351a9e9c5b4e4f52d5f824d59141e6c9ce8636331b651fa3f969061e9ee7319531d420f2c83b44ac437453ee1145fc62c5c54a290a00cbfc0c98c8fbc03f3c0dd8c89f70911fb10f2f6252c6418894d3cfaebb246864633333338eff26d3bd231f01c134f503dbb2f53e7c3c0d3fbe75e2c3c7e883061fa5c984312e31fecf7db060de8c58cc213438e91a019402a061f481c5acf151fa6095ad12089ea91f379cb0f8e29f5e4646a4b9e2e3b40ca659064cf309144501bc0c78661143a97faa3f1829e203116c5d3da3d2c66666661cff4da67b7b46e5a814f108c6c26c0f10cb7aa1f2542eaaabc7ea85cf7a6c6260888989898989898101861e5201f85401c0a9d4cb7c0f3d883437957a9cee21940a404a46462c77e68d28f610b128671e7070300f3cbccce7ff463cf0f0389d79c0e14146462cadf4a979cc647e6a500f080281402010e86600e8b0830e78871d5ee601000091e6eeb0c3e3340076d841071919b1147168f6e30610080402814020cf901c6e7290f9214386dcdce4202323962206d9e0d18e9fbcc74f0d6b1a594c36bb8106ead151db32f2f48e1d3b76ecd8b1838707455343836b6a5ee6512891e6d6d43c4ea36a6a686464c452c4a14c0f9717820390cf0d18d4e3a797d86887442291482452a9c413c3a7366f644af1db86ef20335f64661999207866e665de061b449a3bf3332432f3386d03cd3233de03b21204837a76e68d282323962206b30c180a102c82402010080402797a88f8cb3d79b462b2d3a4c77286a695482412894422954a3ca588bd1c830c3222ee720c22b63906196468c0a7af389412319765c050eae9c5f7e143a4b9a7d3e3740d3e30cd628e9388b70c047f7ee08f0cd40382852ccdb6616b768bb7fcde7befbda252147b64c0507ac43a1a70a7d363ff09772bdcf5c0202b7dea9f015b979f1a837a7aec6fda47366f64dec66666661cff4da6a6f18822f68a6d29d3e367e0b997c74959b21c55c59e9e1e9858963d44dc22a6a58867960143e9f131605bcaf410ad9352c45803b487ece959e5e8e9e9b1ad1126bbd27954b68c52f2501a13faa12586c9ebc655dfb66edbaa6f2c164b0b22dcdadc425554d51ebd9f58ecde17dc294298292482b25a0f01f0d8aac9b050ccb11fa6229d457a8b741ed25f3a3ce93d64cfc8a6e540495fd590cd43b68bec17d93d64c3662848d21ad92ab257bd4376490305490a9be1491a939174d6e349ba8329a57356a2d4e633ba380dbf3e2773d427d683ecd305404cf5db55d7582ae6d8507c2a47d952a552a97650e9e0ea868864776f44f29a721049d3db88e48f28911c6b4472a65bf9a9e5a8aea311c9ee0a11c96bc241244d7f8348fe6883488e3362174424bb5b83485e13109134fd0f917c1f2239d220823247753547793327919c1947911c7f06917c194419b1eb2192dd1545f29ab0489a781e06911c334fe9a8cfcc0b223933e610c9f14722f926d3edbaee5e93e81f09d3d487f6f917fffe8f96fecf1af3a603f7a3c61cf2c55c3e36cbfd7917cc65eef3f4bdffba8ff7d1e28237cecbe2826b76d28be70fe789b3c7173c7367ef3b030a1ccd0ef324fcf211a1c0508e1367ea33fbd01af461f8f4bb4ea4a1b986a5a33e95aa5495aa5255aaca4f6561edb2309785b92ccc6561b08fb6fa68ab8fb6fa68ab8fb6fa682b4781add6abf56abd5aafd6abd5d57840595703655d0d94753550d6d5c0aed675f79a4cffe33833d3efcd3eac999971fc3799ee9d65ffb0fcc3f20fcb3f2cffb0fcc312c2a54f5d56f6d1b8ecad8d56415975859ebb3fc49d410f0ae1921787e2d501e2997960d236d1b123245ea0aeb28e1d22cdd5d1e5abc3e435999f605dcc66e6a38d372cfd14a26018e22f8367d007a13087844fff73390a6c81b27993e3e98359ba46f4239797a79f2b535096a9f8f2393097e98bde4524d2dc17d1cb8bb88d4457c0562bf70b95b994629e3bbbe099455732fd1009999291e3c5c5c545cc8167fe6450e6a8faf4c199488a512f87acdb1f3a197d7fc882f0fb432ce690f0fb3f5acf1bd157c22e2fc25c1eb93cfd97bf2eff7d5c5e5c68c945dc462f25afd9e56fc924c29eefe8459c3d8ef0cc1a48e2923215896676217dc5b724422189f771fa8a730211e1197aa1f52e87e50d598efaf0137636c45cf6be1f84bdbcd89dd0c2f2f3d1c23287532ed979b985dfc5a00f71cda0a71f0a89341714025590d8751d080ac5d923f765e935db8917f01a586bb7d752525c0cc7b63b383162654fec669eb43d2d1f4fd69d1f4fd652e64997f578d26734fcb7a21ff3f8c9994c3b3ae910cba2416078b2662adec4f0304fc50f06f3c83b60b00e186cca303847fe361006bff4c060971e185cca5f07e2e098c718002fe21d1e0693b20f2c850034f5430a0c0f0e73ef96c134d5035b16cc519667c7b7fa6c94aec1c1f9d4e7fc8df3fd5f282492459a8bf31f05334e2ac4f9565ee3f1f3a6f2f83979b4e60d0ce64dfe7eabc51c92fa7efba46b02e073a6f09c41f21a993e8e16b306a7d5c8b4c592c133d503d340653c601898c7f998ff4021911891e6c6e0803018e71fcf0c83a1d4e7010300db1db06d75307894c3c62cccb26c0b64729ac366a80e1d3adc0cf95643f0cdcdc7bc0eff8942223a8834f7e6e6715a07faa1d0c8cc37621b436eaccbb364fa1fd80784c1a29c03cac606a3501ff339fc370a89e420d25c14ea713a878bb2415de9d30b6de6a706b56e6e8160adbd32ad11422304d3d07cccd7fc470a89d488349786e671ba4644432304068768b54f953b7ce160c30d341bf00d377ccce3f05f2924828348736fb8e1711a87d10d3237d8f0335309068366f0a8f41375989fe857ace3b1a6a1e2e87b269b7d689f5afe542052c9c572a9aa9e20406aa801c135d4f0311fe43f9790481091e6d650c3e37410520d3f6a0032d21e060687f7fb7f60900f0ca2f9a96b9f8a060c82b55a3c4efb54f326e6fb4130dbea1a98efb751ba26f367d7cc171947a0f9f3da0a3d6b2b9055d53347d511702a5af8defd0dd31cc71cbd274714ad3d8dd65aac56b8a4ef9ed640b94fc3d112529090be1397b054c2c0426d2503952a4512af9fbcf73a092778420fa0a89cf038e24849e97f5aeb9a50f69e2c8919f8a1c50c789199ff5fb04c8fded72a5cfa55f45e87f7e473ef3d7df5e83df5a8aa47ef3dcff42fa5ef8d38ca24d6999fbccff122925de75212c97b45efbf9108cf549db947abb5eca9b2f74566fe9eaee0421189333a815820f61d35539ee7a8aac63c797f8599ba85ec6d23c89e57671388d735de571dafcebcaf5aba06f4ded736e8907eeffbaf410cc43c237fbe2846991c7316229fa44c9ee2244da031d77af41e84e9961ebd0fb1f7208ec2f5becefc13c9eedee9de5795e7def747cc8067bd18b0e0b29ec2a5dddd2e9b9d77f19cb48b6f3ea538b8f427a53ddc155cb2b3cf39847bd27f136b53b1d2207449e63693a96efeb3c7ae6b8fedb84b62cbfe9d7bedb1ff6ef5e74b4e62cbde5bbe2943de1e39bac3ad6f8db05f9f3e99c496ed7354b875497efadf8646f630972926e5197a03a0d913e78b8c5af6f0962976c9601b377b496cb9fe47a16ce2ecd3751e7c5386b4aaecffbdccf823e379e3fd7cb1c7bca9ffc51cfdd2a7af1efdc102cc54f8384d5f5d63d3e317b366c81cfdabb9f694f3288a0c7214f893827d72b722fb93303a668defcc225deebe09cbfe754f9ceee64d97fdab964bfa8eb791dd6bfe263526149860f21319a621bca6bc7a405f7edaa2c3e26a31eb1ab74ee192a6aac69d7eea3e8d4b6bfe358ddb601bf75b67864542df46f6a734fce51ddde2f2abce2ed9b497c9bb570cd6f3ea81c5e8735d1a77cb1d1d328fe044f6ec3777f3a633f5565739ea5b5c1d9def745c253b9b4a591d8bb2bccd2d75bde05256adb5d64ac577d7445d66a2dec67d7088f33a2afc3d4f24721b21339c67bb2d163999d1d29b27a5df87fb9f2972ceb96d7376d7c64ffe8da570c197cd1b2ae64de82dc89f9a307d512ab4a76bee8fde492aa28129145d0c8b74f70585b68ff71fec213c5f47c82283b0e7cf821fcc7d08db4f851de83a7033f71577c0b47d55c1dd364b53365de33b6e85877b0813883f083711708b3181f87f42b82788e96b02f1772b9a4af6ef2913f4ff38acafe4d487792001fffb4f5ce27bb0bf89d44ccd90a6bae527ef0f3b106c2a1a3398ad79436b537ae03659eef65f2d25739453314ffe58cc6650f39d09c4b37f3de392bee3840ea1d95f649420fb7b131db0d7285cd2775a36fedd6d7594e6a9a110334bae829efc69b07a41765f41f60feebc6d217daed6a3bfefcc1bcad532b7050899147dd003d316578b9decef544c205dd7755d37a74f2db2d72d3c1967555d9d79034b2c8605cb952b576030d815d815981598152a9cd0a2a2092b8a40c6133c342278e14a235bbb832bb2dd7a7899a2a70a8da4c31a01c3096b3ae2752818d51cdb66b96ddbb66dab5148fd92378ee336308250adcbc66df3d5c3c639b16ddbb66dd57e019638710c12184e701981c10648a4022f934f48051e88e72504c3052c63f4854185d0278c2d2e1e1561e7829095e2713bd8b1c144b5070a3abce70dd35645deb66ddbc42a43c8a2dbf2ac3204282fac31b9addb5a21969bc25a6bed0eac64bb21c1691c7f21b1e2ca1a4da0e980092d9e949542b676073dc896db7a20bb529e55ba88c146042ddff7c5f53c7f7a76d3a92e851bdb4c67a938096d3d633323c49b9861e58a1a5a9052c512aca438347660b719aeca0d385b7d430285105ad0c596326cd00235a8c832a54967ad548edb6a35d2639767952a3ae89cd01ca7821facb1841a1c68fc60ca93949f91fd8b23f0a036cc4dacaa9aa14269f7c40d0b063cd0020d9a98e18a42162d15061d384166fc91832b39ccb30a105c750d2438580c746c358484bb126facded879a37cc3ddddbdbbab0aa090ddbb9822bb7bdd381815250b3a42530243a2a40a3a55605285265570c271ab5a6d80628c3772844b6045c88828420b2c2db4b4c0a30557b5db56bb72160d970d4442a6042d0925b0d00616b6b4a1632b0abad6daddddddb5b93162e1f706ed8d1a17544d645dc4e0db7442b22c9bddc61023fcc8b6d0ead3dc024fb705d7356d3b2a95ea8931b8c8e1098104ad9edcddddb5d65a9fdcee084d090c891236666cd0d8a861418585550ab828439645c78d29a0600b4f5801d7ddddddb5c7a86264ddc0e2461637b4b8d1861b5bb83848dc1a5bb4e86861a2a509c735c7711cd75c7777d75a6badb5ab15eeb60456848c88226856685768586859685a4cf07dcd757777adb5d65abb1ee9343aae1e510243a2048e1d0e8e928383c5c1d1e2babb9b043060916bd7ae9c354213c2cd97142123a2889a95da951a965a165b5759d808a37583315cb5549b514507b96badb576777777ed8deb1935123225684928b165b685b6a5d60595a90bab1f49405355ae36121b956a69ad554b4c8b4ccbec043121386185ddb6effbc4198513aa00c1b5e423ebac11baf0b6a62a386670d0e0a8754d8440022dd8ad7b62ac2d4f2a4b288d38210c2f44dee08c855104d097462b8c323eb543c385c6eb7ebc346a614821ecd09885f68c960ac465e99162dbd4985961aa67d06a30f2234894488175c451f3075dcfda55f95c0d1d3598dc570fec9b026c0ab13b1203661b87c346b80e23e9913ac171930a129e30010c259436c8428ac32245e6aca8e408126ee6714790d83cab7cd185fc657246360425e48ce505cca03aa5c4eb486d962c8013d223ed548b36e28c10258e9aa9e28ccd0851b280eefe9229ebd0359b28cef86b5ac91dad72c9994c6784147144d770db14beba040514210959e8b0c1648a0cca385245670b2c0461075044a109514441420ea0b8e28a1304410c2654f92a16da987fe4362a57e268ef2545c888c0692e481a4c6669d880758433622ad8fcc71128baabd791600b16197451859d2c2ce1891f96abd24514bd2df1c44e84d9288828a5504217684ef46851c2173018883f961041a5470975f43cab74b1ca609e534e50834c8e54be6ac60c72a47abb1be149f6d2fb1fe99176ee4aa6589165779abbbbbb775777777777f7eaeeeeeeb56bad9573777777afce35678412c0d095e145aecf71201461b8604acc0b2110a10b3c4882962a54ae802b47551b1ad9e6ee9675d355194cca68528693329e9411a50c2eb64642278c18aeb958d9a7196375b1d68df198be7b62e3ec56041be8a0aa950e5d8de1459f2695cecabdd2a73906963ecd3c8aaaf0c11168d0851a13a86ca176c5084fa02a472d69db53a652a94cd02dc89d7bde5499b108225a2ce2d5a7d9d3c16ecc24eb132a9331eb537d3bf3a1e0236b4316c7c605a149a884ec988a8a16a21911000200001317000028100a87846261922449944b1f14000c699c4e685c368e46c4698aa3801232061842800100006640064448c4014f39fd3124515850807bc3ed20e2fb078ccc175a49d232acba9d7b0c42f7341ecaa7e9fb7a6be82de1a2184525ff3f4b81b5547aa8a0700167e3af20d94240327617b87942d3adfad696241712a828a6e98f65dfc195050263f69543c1b40d454ed23c5ec9952cb02334210a9dc527efaefa32a5687e8a536ab101887ec63dd419996542931cd06f17aaec323a83e61b905d94090b153fe5805f540f3abe18e3c869ece902b36ca9acdf82c8f49bd2def81ce4f2228f1183148ea3959418f40e292db36141d4736f059e6950a24bc94106c8e3769e56d22f4eba7962d23133253bc1c69e5b3a1ad6805f89744938ae36b52ef698cdadd533212064977f9f783538db2ad845e52b95f5c42471bda078f63d2b16e00f14922a422af0d638e3910b192ce566becad643d284402e71897c62183a96cc38d9206e10f8ea2dfeb858bedd3a42fe0af58baef65c4133a64ced9e692b7112ba9a822791c5e471624c46a68278c6d918bee6e3dab4512a32cd1072303e92c400efb58aa0e4e4b4835298f0632aebbda7ca47765f3c12850c0dc4798982e2b2f49ce10d49ff9773e6a20efcc65f767625c6ce33a099c29c96b37e4a5b969e577c5d88786aef22cba8916d021613e60aa80a3190e511322877cc36e28c9780dc35f5d92d1730ea0c4f82c256273a425a7d73d13b7bf28c47a6e0e426b0c04e17391eb6bfa7104b1620dc79081114ecbaeebd02429ff7f7d9b89a6bea4224419a232539d834c20f1217297ea2656aa24cfd03a3437f6c0afcb152f27d3fe3f066aebc2dd3adccf177cd32d6313d9102a425ea1589a061c8c080d7834123e613c3f71f85dc88646a3a63e36c5ec3a57436f330b201e633c2a7012c7ca0bc230e52e86b7dea370e22ae1c8f27e5562a7d90b11a019cfc2b2b618da41b63e1519f8dbdffc7388db27caff22110ca57f49b0616b16b197fc90d4ae95acb4459ffd85b000ba34cad24cf5857b1222959f1206461f70ee5504cb06c217c6f1dfb05dd3e6f9a7e88c0bdde182bad59613cef99a9c4acfdfe2912521410efa4d53abd3afb5eff885d7e2d81f167f959458b5301632942cea4a164bf9465b03d9ff8bd960a6cca4eb22edcd9486d078802f2583fe4ac54e517b36b02be42100eb66a5ea013f37116a2ec4a1a975ab02b1dace1dc8e52ddb624018a292b020d6536b6ffdf74b8d4cfe2fe93566c19d3241f0edbc198f9e1c4f09b6738a7f3a9af316e32a9c09a9b1edfb16a100f8fea36d47d4e284234a1fbcf3d7f320882df1a2bb9343a63a4fb04f4fee8cbf885e69fb8e8c5a9ef90cd46b3ab27eca42a1a593191cc30f3cc1aeed50e8a9e4e828be9ee6f1ffbc583ed5c7b85792e6bd18e972dcfe666e0f7c6dd182e98f39a5c8b9a779070433b0083c9fd520d3f8011635143c091c7ceb44634d6d807659e1b5e6c620467bedbb0e66a060feab454443e5fcd0c1f3c277c84ae8512a50cccaf34bba426dcc7b33f2f4dced9c937ba10aea19a26c73fda298445d243609cdd46f050a78771a9a73d37344df4c397f35747116f4b5b7110328d9865f798e90375e1719e65b2016a590f1bbb026305182347b1f1fc1be8402d00ceb82d979b00eadc4f899a7444a88a4c82142b913964210fbe859a89b40e4dd5f6f7859210d3b9f3b5a12da57d700c00781d8e202ac393577ed831ae1c7f5f8ee03649e21c6b8cb821613cb9d0983587d5346bc63658e98d1bd90f847845b4f4b629fca8d53033756f46861eb1b40f45b4152518d9a63df3ea9a220397d1d939e8688d00836c8241a323fdd8958f54f3f02a75031ad8c08867272e47eccb5302ede34c44593eb8a7732ccf0e3622ec03ff14059a1879506d36dad43e2e912da9e6ec4ded4b8454497158777d2f92419cc3ba609196f302626c07b27938619aca9e408a4125577871c945b99306136e1f601d2f1990c1aa38a8eea513699d63547f26fda448fa5a83d14f54b4465f7cd9266589ab2da7c9322f6a9507eb0a1067fd23315f1aa2b61b257a66e6f582ff174b2baa059991ba0d2b930382f5bd8f97c9e1f97a29d91d30e2349267c240e28e70ba4f1e7816a0c0cdf0625bbda89fb190243335f482dd1e3dfe5bd5510def6309eae9ed9ff938f7a4e1a9cb2ac89795ef58db74955bd1bf33ca7e74a5a3de972f786aff7fe2d061f7bcc7626159ac0cabb321d1546c342d413c262ed63cb85bd68b26673cb49658baa707657f93ae791a0fd70eb4f79174e63f696355a3364752799ad26d9d26c9910e02632544a7d9580405ce6857381e722442207bac12ac102a1e43f41bf20c285f7be342764195ce950d5dfac04a7a6612fcde6dd415169e9ea7efe139beb46bad30f415104be45cedca88ac5ea460e075430a253a90c07fe791621ed7a42f42e9d29690edc3e9a8a0f6d8a215bb59f7906b0d8ae5620101f41f8079ef262a48d37641f593a79876fec1bad26dfa1ccb034bbba0ae1f7e6535e692cb31a9fb1b2a1480e9ebe551d10ce417a8f2b09d9ce38846ecd330910c9746c316c9b06ea6bc38bfe424c4b9cb09ee274a66a3decc072be957ebf278569614cc0297b122933b2811980961abc2e1122b1addf5034865a0551ebbff86349dcd3e810d0391e439eb76363f29b89449dc0d831d50475a563b8ea5c1d12bccefd677f9c06afb61b712f3478356b717afed45fd9aad68129f5039c9e5fb0f7145fe1635a3e488b61c8970f772d3bcc0ec6f0067f148204432c951d873b170e51ea59f8a6a70a15a38034c35c9ce9b4d66df720a69bb470a4b9fd38a7a8214e685f60fc98bf1eeb0009499d4178984d0904c13e8356e25b666385e86c78b20b0b516fd64cfb9e291d6e863fcd93d81878e4b2b4dc271a58e93ddd71cc047a6c66f539c84028046575c38f93a788ca8b3a8f874fd0d5769a8028e24e1d8cb0f922f032edbb54023843e46ae26343c7f3c20940c89b1f464eb222bc98342212433432afda9e5ca82ebe162e7f0a35db949b368b274568f69cd63aee1c4dcfda91211317616bc831627fa0a1bfbb15d4faae53328002be7d732e28b4a0306a46a762b18a9d4b655ef885d7760291d9f181c80b1c69dc35c87f7d6a36ce9c65b5aaae48a41a76d6f24f446a7a49fc8f7bd52a9794321c29b0ee2a675c81c37232bdcaab99a2619b4b0004d93076459d735b901612eb964f4e67914d8833f76b70acc458819af62020e6ec7db4ce9194e8c0b7ef2f2430750f9ad6dc58d229fde122a0d9bd7ed4cbdb4c3f11ab3012c58658ec035c4e00891fc036930cb7c9b1d334e360fc850fcf5b64466c366b60cfbcea5f61bd96c921237711fb48c3900acdd9402684f80c01a3b0ea62eca01dc2d30f08c3804bb23a5006a47c0016fec38983a280770b7c0c032e418cc8e9401b44fa08069ac8e82d45ce2a968fb2ac400ca49089c5d121f74fe7615ae52bc6b847215e39f8e35a3b9d5070d8da8a00ad9082f5a74b9f78ee47decba4acf5f2e5242bad584af0c01a1874d74871e7b89f218e0ee9a0757d753f054186e32aa56c5a10f7a6b6fd22dfc9bd302db1fac79f0a6ff212793fdced3b97a5aa32bf777b82e919b3b988c126298c1eb017d3bbc7912cf5d2b6e6506bf75103879135aedbcc3b1bd05954c535792bb4e442274ceb4de0d1ed14f32a64a3e7ee0fde9090c13e6dffde985863785a2faeef4767e9639f5307d16d6437fd9ceca26c6a4cd9f723e4b89c71f94777603223cc4fd04101c58e56735b991ab8bc53257596d641219d698adf24b807cf04139e858a2574205aec2f97e31472a8a97e4e9fb82a3902c34b27bd28895b0f51003295284daa5471a6524da3627d236afd225a2c40aff5fecbee48287176f1b6f46048caaf6277907d9d9ca86f6a70382e7b32b756aa16d091707229fa471a3787623e87ae084906f58424726a86e16afd819631a5aa22ecf4de905ad9abff38f9e4dbff03040507d81b6d2e4f862d8d20360b9f61cde1aabc525ab8878d646731c07872b05bbb946f8b26f80f5bdfc67758b37c6d976140e2ca441fea569565d465775f066ac936ad5f17c45b87e07dcaa74723d704119391945a9560d1d620b13ca4316d539222c4caddb8a722f7e00f6b9d638802cea0b1f8f27f951dc201c92055fcb18c274434e7012d9ba9a49da18a29dd3c04b51dee148af5a7f8b7acc34bc57cebbe4980c5ba7bb1524b44ba8719a4688cec5f3d8f8a293678a6596c8fc343656d0a2bc75b41c2d4fffffd9fc940426936c70c59b244ed06e56166ce8631b197908dbe5e298619c15d1446a497fd7596f98ed6694fb659ae3e9abd147d81427c01da7162d4753862f5e080f6dcfced4ee824a4762d6abb2a0a4171270ea440cabcb851da009d138f7f18fb64af3a459be3886e2d90fdacc9c8fccd15d20382c5582d0819305a825e3b239a55068a12a0bdfc8b500880deefedd0dc4a461fa48a51758f6d74a8b70e1e3f0e4880f8238c8e2b5032939a8d283be918be809ea5efe2103366791947f26da68a44533497ef53b71b12a447686a497e3969ff0c05b8436562897c62fbc331755f2e9ace06f344a141aa11c859e3fd969b8e36e4efb7c373d4e34ce7dfc5fced1ebe49fdb7b8e10465b5b6f61da42b4de978d95591197d07ddc3547af06e5cc37a719c073320ef32f0a197398cb77add1f668f306bd148048bd28b4184ccae6c9409e286ea1b847862fac68474d6fbf012ea680bebf49cf8c06e4e72d384e73a2ac7c6bf668e5e1c659b218c97c53be788120ab6c4323aedbbc56367d3164700a181ecd92209cbb46354eff45dec24ceb75705e776b208f45e511c2b0c42289ec724e07695825924055960eefca287301d53c590e4b759492850da8cb6981ddeb84160a77c26a06a334407b2af5003dac50719eaa2ab4fb679ca3c606727865792377a0c04623f17b1407a0fdb88c003755c407acb320c4e006bfbd62c926aab65b9ba00b19e63dd6d10ca5e3917056f6d99018a65386bcceb92f3cede37335201a5e19089a82dd0c5745619dfc0e02edce134ff4d0bb1a3d3a59c9a4f54c10ccee50ba2c1f5f200cc11139d8e727fd103c077dbe9361755f8e277625c86286710dc674f7a8eb7ed3d35cb1ea7d2b0f356f3e4183c21b47d7815f0d8fac189540b5e5d74f7aed423b7ccd405c09439c6aff7109e5cd206acb5f15ed074c76f4defc7a1345fc141c406def5a3e14094f029516383b69b999d4a8ee963fb81f320f32d91ad0d8cbe49cf76b03de348ff5340fee2e5cf3777f12dc6760270329ad73dfc87c6f395bc675c08f16848ec4a269e3ac75aa1ee622092564ecba682807006e392de3bae107d5d9108c827608e096a8cc6b071fb267736df02196eceb82f7d568a1c4719b2b1b2578335857cf42b0864b3a8cce0092134b9c0f7f6185fba83af0410edc26bd5f18d67dfb6f22ecbc62099b09a67d026ddd95aecf8f9d4da6b21e4b496dcf0fe89afb5512eabe8b2d31bf5f0e8bb57033cacb6f49f72beac463102a236da288ec63d67f0ba0486274ea09c2ecb41071262790a3109322c37dbccc55db0dc0f5007ebd902eff46446fd923388336409ae1d1156480153a93e6cb03b372a98c441960881014f83102cf9305790939ac4897e7dd01dbf63fc38840048ca813ba9bf4bc42271d0551d44f586ae64ec53ec384aa9fdfb7528091c252194fb0661ed8f2fe74aef41d529e71c8d31e8a74debf43fa02ca987b98b709f261575a3926631ef8d88b8641001ef06f094512070cdaef805ad466f8bfb5d0db0780d287a2863050ea9c75f004957de78bd020b0fa929e17b2bb03034309c84c26d12b66c541370aea24b3aa27bd055c13fb2345bee4e01681722d50e8953dd77a79868ae6eed9ee201429309741e63c291d2f51e03dad9c0e00245d2520b047aaa84f5194e991f32b367199231f626d0f586f4affc346d106250881bef1e8910c0bdaefe338e4cb07817df36f0e00e733f040663613137842f9e6bac0d6bfeac33c600d0cc7e08540c4a3a5d1c4d4488b48d856848b6dcea6e24e6d567b2a674da4b9cd8ec41161f3a82573762e3f8082292f09b5dea6848bdd595dc189fa2eab8ac718faf0f809d795f78ccf9955a361fa64add67ddb86e9ba3df9929f964ecacfff40541349c20c9efcff69f0f3f80de06e7fb9acc26ce5c9ac681d503087d80fab7f304008d7f311ac7874eea8229e3aae97aeaca2fcc12413d4f3ff41e93865740c2606a1ad07a8f974fe7f56b304b9e3fad99079444ae0fd75e56596da63f7ab405b3fe4f6e8aa262e2d28f4ddfbcd27db35498603e0e33ee18b4d7a925c7f4f97bd119a7ec85b18d7a125bfea48103479fdaa9b0940fa587d4ce625f90766ad4970b89ad73098d703eca1479bb0ce5ef9e0bc73476d9f1585174e7da1172be416e9078d01845b121bf52939c74ed1e97a2276335b7a25a8665b6011c0cf55898b2342551f1e8b1c313d37ea73a69067db2f1156b0ddaec5461a429b21bee79f3666d9c1afcba41f2c76f9a0b81cb08c1cdeced73ecc7f4a35410bd0c259ac439fea1b9ced0b423a7fa1fd8e56636754f36945f3f2963e044e685f29a3ce5c6cbdf10daaa0aabf65bec6f43859217b43dbf4b070082eb0714e3d0492e25cee82cbdc58f40731d47104bfe7d1ba19cb4bf87db3e97dcf17f19317c20e47d0d129c302ca5b8056229a14e297ca4750b0808f24be1206f0213aa1ed66a0904ec606c2897c95c6eb2348aec491c881232a54c191647ae592fe810013b22df6e378db1a66b47dcedd5b424d358786e29966609cbc6d712e1f0c1bbd005ca9fdfb32e9843e7a953c016baeeeaa7496b0e23e285946c7ba41db3750d44880433ddd04ccf1ae113f5cfdee6a233b95cebe61543e69a059d297d7718611bab85205d103896cfac4c96347b7964cbcc367d4ffb4e4cb5f8c8c4e7a8a7e91557ce5b81c77b443ae11c0d762553c515c58f6841a500af1843b82f2d1258fae5ceb4366107718b93bd090fa0443f5eeda75cd84b2aa8a89cd64f749896ff7e7a7b337384712cc1af5f3b93c2a2d2b4ae546b3e9379c4f4ac1a937492e78085eb2d9e54f0c598ae0afb24ec2d54694e1dbf53936fda570bf6ac969ffbfb3686374f1f3e5e59b49fd2f33cf1d1c7e9f6488c997bf4f24f6bb862f55e662e119765312e475b96c7abf4eb459255c7f36dd5299d1181a1f62cb19e7210c9365ddef6df8f2262da810d86feaafc017429b821b408e26d3a67e578dfbc3c7efada9bf2daba4922cb3b01debaa97c397e7cd223fd88d27d4efe6cbde0b6b1913497c89cc08dbcd9738d23a514f1f0d6c74f9fa524e4be315a6f1a63fc3f2ce660955bdfd0221981909e63bbbe85f229a654c6a58cc023e3ceafdf164fb3283d2835e0a034bef75e809d6ad7b680c8b96a297754e9e77aae31b1ff23caa1416a615c5a28f6cb7ef8e3326d620419284d0522cc8108aaefb490ab03f1d9603b3acbcd3cb27d297520eb2f17d2ea32d1ce6ae9c81909352f60bd948099c87ff7fa056bacb59ad390dd2f788d93d09f1a1ed2e9ef3d5c70111529de2257b9cf874443308e9f885aa92e8d37da6168b03a9edbc30004ea1d80fe208e30881f1a95f69fce8b291bbee42510ec1c0b82cb2d594090c91f0302d455848f840248d04263161c1a427082a4650c0b483495c56121ac01413e0800e61f025cbd06fa4afab0406508349d4bc64222821178065fb54914a422ec4d0f8909326922e81e2b9d55bdc97184f4b919e4ea383996a97566f01b9856ae60f6856c5c658e3be6c51dff260635d236f21c6d32e52fa7016ff3b570255e0d071276d37e746a3ce4c5fa6c88e6015946485b360b0cde45ba4a33dff4c6abd5064938054e432ba19e4e061879e551a2059ccca200f4b691f53d1deff6082f634454fea85214e0ac5b1454c3297d8633e3d1702d3fe0cdc2929bc2bffc391cafbb7f586813f6a9ccbc8512d8fadfa07fc77bef4e7c255cb632385154cce0435130b741c924ff431eb64ee10a696c69bb486d276963835bfc9b566b2c87854adf56eebb0831e55cd11a0410e0d7076698e6a2038b39b463c31678d4919f03606f311345e85c9c5788a6dab1fd9ab140fabcc14341cb1de7f131b3561885041470d549fc222c3c8aad442c83249f1ece632544123ebd12118b888d9ecb2c0bce27a71aed58f833e147011dd411f163483f3a0f0e219f1c3d3a72211883b7021c651ffad7d0ab84053b940fea2cfc031fc7b33d3bb051d968c82712ad2ada2302d4095f521e75470e15cd5e12b8d08441eacbe2d4cfa2d5db60d99ae3be2e625ea203cc371071d6bd85effb68e2270d178e28e7532f919253153f34c9fe00578ff8d275e994b6076fabbd0ce3871bda9b9b020e23f9ea061e3a0a778a244c708ee52a99f55ae6aa24c1daaa11f0cbeca53adea622d560ff1c22ec7fbc207dcc173ad4d7ef368c05c1ab5df483cd60c1a62591343269e91db93adac9749083790531bf70f8e16e599bcf3b841e9000d11ed874698ecd010c8194828ab642b57ccd015e720a2660beb52d1ed5b1a2258be2037cf45401f0c377fdcb7f445bcf0cdac8c2210c350e90a2c9e65c0e486cf2df5887a727603779d1304d53612531bb7485f7d48a62f170fe2e459a975f7863342ae2e6d6eec8505de6cb04274fa65f2602533a115d8fe64bd08c684ac50fe70786990f2c414837e8dc06dcbc7d9450cd4d51840983cec54cba0d424622624ca213880ced82a292780da7b1a2aeae27afb40a055e22b1324b656c98c3e100aa921a41a4b68468c3e1106d24264e67b388ccd45f54ff71c4f7d02cbaedc2407b80dea0258da3815d5199e83ce7b0de43eb609169d0107c5986485b30d4dea39ad45c15a32ba7ef6d414c4a1c6ba8e57a795bf288cab9c20aa08674963c0639e792881845d720298303039012de9d39fff002b83182dc04a720262995f60fcad19205ee6a9043f1e40ee88b379e7f9da8af35b783990c64b524be0900fb8afeb73082fc9fc40b1cac5912688ed1067c98a26d0967e400320d021570da4622028e2d13893304b67427085a5d5aa6ba1a781ec2e7951999a695fbd20f085dea51e40f2746e0404b13f18da3899693c21493d98f307087b30e820c291e35fd37b0ce8463779296e3261f8017a910434dd67fd58ad583c74480bad7df11bd03acd07142ea614ac771e55c70722bb30f740bde343fc8f33d5e51b02ad230cae3a01f82de7624d8511e8624447a877a1989f9ee842f0f93da9c371e5d22ec3025f1975eab2ddd587e4efc80d887cd9ea12298b57092619cabc8795c82e7977ab399affab14ee7daae0017b773694cba8289439e54c748c8d79fedcf40dd096a13e67f01c08671c3f2402ba022f735a74d2722f0434f877704f71d0be9ed9bbba9cc4a074dde4a8787b1c85c693832735981b97d82d077cc050560e10c7698c392600c0b2640d686396caf5f44bcc61c7672e2779e4a1572e7df7d7a9b977017001f4c3a0bdffe36dcae559a3bc68803e5d8b959d91e4568b0afc818ac849955c0aa0e20b0d82b6231bb23b12f84cee1b964948dd1f3516168e10359740cb33b8c82b99a40ab22a29f9e9fd0a2318d989f8bc80e6d7810bb857e6c28e077cb6efa2b1cb5cd107cb0a890483af77c259d6bb00e2e8d84db50df7ae5340cd2692f0290c47b7fadd418c71e2b49e9d0d7c2ef436100b18488ec0213c124fff849406bc6bcd4aa956917a64c396cbe50f15337366dd95ea83fdffcd3fd4699e37298048d94d90f26db94996c2f63639bf0f36e023151a0cb0d2107248acdc0e0d4161fc7cb4e854d367a5fa0df1cad7504005ed2e79392705cb5091bd198ad9b1ee5fad7e257dd6adff862b085cf31f1305c55df35be64d1a934e961248f45c10abb4212027e37f611e0931dc02f07976c6ec9a6976850fff67eec5ca6c6a3dc069c33ce32e78af8f7658c9bf16fa6d9f2896a7b2f60e106a5ece16eb1f995c7dc461a99ac24d02e3712f00b47b71cfda76963d6fc36f78507381113cf60e928d6031425aa1cf632c21ab3acb600f917de1d1bb2e6192d1ecd649c8b744f489067d5575fd437f6b63ac55825f065893c6fc5ffd2696fb128d05653838de7ef647e69ab97a03cf9abb678971d4dfb1ae99b4fac85e6f6f01e7734a8c222341d368115d618828ca4e7246af1cd75e4fcfac60a652e58b12a49b1afe9edc47343e3265fb9151841959cf7f9bb3e186078315130a3baa082e7e105dbef454aa811467697b1e7beeedfa6b4492b32dfb518c22006367c5d9ff33f6c1708f707954c383c5e0a15b6b378eb695bf1517ab18c337a331ddc062dcce0cd59574afccc88e5829954b32d8a6d89cd0e53675755ec60ae0ce8309f747e2af7abfb3d31933e158e99e1a5a661a3b41da4cc9719fbe2e550353555234765b6c9de617d23ad4c7abe7a9a65f0df87eae1e9f7c9b8c1e1a4a6a65c7e4ed28984e32ca5e14cc7447cf24314438cc56471454c8d54c605fdd46acc4506afcb5915ab838ff7913303e914d3cfb7d00b1b20a94c567be09380f45ae80900d4f7c60c56d1c5b853e4f15a56aadd72c941508c96adffb618345db86512ffbf4165da4a67e7fad5bd1b5c101f6258c6e2ed4e7de8a534dc28447b7d8c8ac83feef2f19490112ed8816b67a5ed4f31cf373236eb0505c8f4eeb6aad1dfd08b572f5d848d7c18bc3dd61a115b9a47b3afd16bc7ab3e9990805d23b723420e7f99ae746955a7ea1107abfb5687b13d6e1ec8fee73434dedc735c747bc77fdba708e951b9a4fabc767fb3ec633964e9935ec180d4aa0ded95c0eeb6c0f8217721ad6b5d841eae363d8328c90f0bcd815fb87e6ff9b87e2c07cc42e9d5be782e29c031daadea931972a721123dd16a695d8dd70ecc23e9a4818e07c32e22346ffb56c0ef2295e3a1d8e6e08b281ec0388e945af77c4165eaa29aad2154de7a4ec3340022e9ea79300d07198a837cf1f7d82e3970bc9173ae5c20e12e4beaab4ba11802d80c370bae56409f38395be36c67fd768766422b0334094d8addc9677b2536f8690cbc177590f4a8303476453531f218fc5632bd1614641bc9655e864898d9eb409263d596bd026040586dd770afb640b060ba5d12385188056b026989871151863870fc682e8239193b5485b69c5b3778ffa70c9739e2977e20cc7fbac45d59572186157176c7e664149b7c78a47bc52b074134000501d19c499e2a1212cabcdc0a9dc9ec544995a27d5443759531ef78a722b44477409be55ebdc06b0a51c58e2d626cb46307521fc9285c0608c453008717dc0c7111bd385b5e94cdbeb08f2998a1e91d26725ae90ebef7f0d961fb7d4c97abc4e11a3d653f8c9ff9504490f8a97d932d7a6467520f94102b2e9c5314b030276530651a273ecaa74f501288ba1190275a1ac2be104e508a60d07362c1a37fd19c043784763f70db76af4ac6128002b8a2d886e409531bf9d5b4b40e9c4dc3f9240b2053dccb47f3b541771840ea1bb2ba7e6981d4db118c8280c837effb4e87528d273c9395f5156886001081bb5935f517535ae41c52ba97c246ac949ffcb826ec27cf9b881e71073149d7425ad13abf677eefe06b69c77565aceddafea6fea012caa43dd90c46758f63cb86a4e2fbce4bd4a1b6967a2e24ddf5cdbabec3b347339fcaa078976d60d86d6b8695108ea9f70b60be292c31b847a4129b2492bd141f39d75802571163ff2950b3e3bd8bcfd08207de075a0e2e8ea334786ee5cf717f8c8311612eb52f3e5e795e4382ef554000dcdefaf0bc6fc61751a3401d934519d60cee6a79cfee654c539481f3b1805537b46790547554a019252d91718e342f89320cbe8cd8a70e0e3c346b3db40a9bf951c2c5fc316bcc28ee9c9f18e769693e2109a5baba4a1039991e22d9e15725b5204dd8cc53b4e4961b9741be0e67ebb0c7c44fa358bd3a3126aa808ec5c6cd2140c88348cc45b5fe75467732226abb528b3f6e8e7b925649818d309ea41211f21e4c82b2e76d20cc28923f79cfe93acff6b157909d80463245ea5a0b46530ac0aef96ea5934141450d7bc1866057aef154bd54ad892fe26ecd1855e1a2f885e826f5dad5c08d43e3dc4a127c9a8297b2cdeba46c9b7e1e28b5330cc31c56c1c310a83b37e7bbb603a4e955d07c0e2e29f80d312b4353fd015bed750f7fa1648e15b35af254df4398f12720b26a431aaac0cfa60fa55e2058cacb1fdf5cb5b59a852b42047f319adafaa443031722657011d89062a0b7b0ea556d44d9329c3f5879b1688498a8cac3dce9a7dc24f3a79a8292791345d8ac28ccfd343d36bde72d5d49a2a8e9a640d3f92d7109ff81eef2b3f0b9a28e2d5bf5ac6a42bbc64d5267ac69999cb22f5d515ec8efbbdd4d4d27b3148b71b524803bc0a7a1f4b293c1c5875459aaf945c839d4a5d9b402407e43058b2ac0c6d2ac4f92588e9add157d39805bdcb83a13d1b0970ae7c499cbd7733887eae47c0346ead7179811db8e0bceb7d6c85f0f06e9535335fc4231103e8e11e56953b404c76b02d2c1349c0f98a263f91ee4be8708b7b340173300254c88f8bcbe3c3f6bd2542b697a39f323cd7e89f95484e2d21fe6117ddda158b919e8ea9996cff1559749c8258c36bb49968c2715ab2f494f5303fc64a568f7d7df246def74a22fd0cd30bfed1e7db007435cee8f194310595679ee153054d46ef65d44e234fcf19095e1a94f0af4b185e867756bd73744b07d61c7dc424a20f4f32d48fc4c04bbd16cac7a837ad47faa218c19a0e785a564563530a0c68511e22fd3a291bed2f426544633c536f8f72a0a86955f6f1ad912e0abbffa9accc7d59d7cad907c8d61fb37a0d3932a1aefe702d4124ac7050c151e1df14a71263f7e795080534f3d16a54bad4658d7d6f834c2624d1e3a73017ac5ef75dc4f32688a528370ad8ee1698b64544933350a2919ebf95910a96d2b6d501c773e52b8844965bf40e414cf0bba87f0b64caad72f64e3596ca1599902a4984cde0feffb41b7074c862166ed22f50346877219edb8dbec602fa6f4438a244844754d64848f4be8af28d80b761b8005dba5884ae90a9d75ae53994ed7014b901aa569aab8a5423468d51fb0e8b57e352170e594547400990580c95203207cddc3027ca496111993a07076814abe907aa0680c59e4d3ca320fba063b437c1b671b6307ad03eb5565d6a07f8ae5a10bd0d0fed74830d9cd95e528ad8202078818e8a57ec2a70f855a5640930cf62a93a6ac9cd435482883917081baf3bd09941d2d05800cf61052523a220189aa87d80cf7b54836d75063234a5141aba18056e112547453c9ebea8625fe13866f246fb8b7ab3d20b1ead008a43f7d4962429d2d81bbaed4b8f6e449bc5506ffb074fe1259fed987774e8bc0ef21a1de2255a116eb21a55d1f3e07e5d895990ec2807ed90572b7d11c6b7f885acfdce8e53743049bce8e0141b15aa121ab1d2089514c092468f99e61b2e357f3b1d799f45ea489c5432d32b76295c0a0b2ead4a1be64d4bebe5175cca91c696a88742a8fb390df2aa079bffb0e1645061c962f4bcd6bd6dc4e2f22a91e80fcfce670bcf345d1a2ade4b4fd998cc36b4ac99d4acab1085dbe347ad8d06db469ce8a44c2d6be2797b680fa20286ce26084c75502b29a521e66e0b6b987db53acac033fce99eb274a90953d440d93925b1e9f5482ced6cf6750a665b72ce936e56292d8f95457bd5d45696b28ed6222d2dcd143c54f161b130708c9ba957d9bd1cb9d55045fde9c0e066fe137cd56ad9a0326d0439ba82f8ca10bb338a7b5482838989cda38107d52e2961312af02cc2a05b08ec21248e934bf163a4af8342f9345f8bccf768f1e3f1445ecea879ac9c2db03632de499a06be51c9e40054fae69114c00f3642487e0823f049748214e01fed54da097c0e8f29f1d8d4f0a3d9d96bf54b6fdcc7a69e65aa21d66dcbcccfb5cdc649717e203b6a996f4a6ed2234cdc31fe396cc5a49330adf8d81ac063667801049aa29ea48ac0a001a331e26629864e6062d3d8cb9cbfeb74f4c91a056444b414594baf14885df3bd7322b7ee33cb9c034140109d95394b05a14c3d250ecf0f6b349bd87535787f4d59403fd48698c6dafa8562d927c7bc4aebc4b806e69cadbce9dd7372b160f057d17e3d01a7241e6d6fd89f3ced85b4463bba79a48cebae59bfc67a4bda7e3498bab07d48a95413a9a252d2e72b0d4b3a8dacc8d7c7694c0b943ecdf1e76bb86ef6ac8e0653308f21978bcfa110daa013c1901d47b4c8201c9d1c3af3fca3688321df4c530254d2e8c1fe7c3a1d21462961edbe2b566192575e1501485ab4cbe372a89490b32b82c15c235aaf82752198167984162d127ecba19229a5aa480c0e8724740b2c5be75bd1dd34d01f7e6abce6e88c7adacf6b9141bc340870e82f0e95b46e734dca83f0e231ccec187ef68958905003d27459cab8afeb5c473b8ee874c72673af74c7bf93434e968acec82fffc5ff043f31d24b0a3eeec7d4ccf551340924bbfc48b3bc81a73307ce0ef94505161414ee7a043c642eaf5fbb804b16a1741338c54efe1e686308a5af56e9e7c3df9b25350492b9b31405afa588c22d45ffe55244ae4bd1153e307f1fd596a4eb4b712d50a0330801f26a3e669dc26de6240a1b7942e04729057572e3eb88247531c2fe9c8e819d57e360549b8734e5251f9353f6cbaf107639bea99beac670268bc05d5c5b40502101717c5b40b01af1d425832fe60eed9a245872247d20717f37927b54bcc4c1f3cf287465794e4b439346811de336b8216b64e8b73b1de93bec6027da494714e47cf3c63d76e2ece0d048a58263fee47ee937ea1f7b16327008101121c2632ff068f20cb47ebcad2268ce732c4dde9c44295152a340419f384991a10915a21a956312b7534fe1155d9da245fc97b341650570b82537088f9575c443aa6088e0867440e9ab178e383104a4ae1d04a3a48b478cdb7d0c99493d238b0817690b25202450ab8f3814ccd7279c36bf3037ec6222b78bf1ae1413a61d99429cfd9c54b9c330131d49cfca0822088e03aa42589635a547bc0209b739ac10a2e9ce981785f1658f218dc25d00f2788a4e9185933e0288317f43b2b86cd9c21aaf98f603d9a6f623b75bedc73ab2f6d3d87ced67e68ded47eecaf6e3f016b3b633843785e2865767b58e48278a162a9a32cb54b4dbf68acfd2cb9fc4c381521bfc44115eff329f6a41baac46f80f4a7860a5bad0ffbcea9a046b44c5334261440867cf8798d061ec43a1ae70558c4bb3e3ceea22b0a3f6eda3cddcdb67eb3b6c5f567b527d6bf88af64aeec3fe255089d4157d7615c852d0f9f2f98b2bf9b0506f57dad63ca4617e6f5abbc9e88f4579d456e2a3071bfec115a172574e2dfa2227d86884523e8844f6afe24365d9c2477c197c3aeaebd4a91fbe273ac3858c105e4d884df80b358a35705ffa4cdf7cc607ab6066878a34d67e66b5ea7e895c0ee8967b9cddc494aa009c6fe8096d1083ef555d6bbba73ec94354c922c5e059be28d98b9aeed59ac5d55b82b299e5244c532e52ffdc5ea973af694a31861a7ead2eb58531b2479055bbbd4c155d9f29f52d10d607d3a20682615204030ab16a0e7856b1f310c80feffa8583f67c24c1700e2b86a1971ebbc62ce596f86dbb6877ea9579b22c9db40a70858e1d7a35787103c368c05e8d6684d2dc56ba315c71dfbf0604fc0abae800b3a6afd7d1e823724646632a9fbf08a44b2fe010b33cef4f054d3fb60dea8d42435cfc82efab73886936aafef5d29533cbe73b1486359a580b4ecbcbf1b6a88761fe0c1e51014b7fa9864f8ec1497c30fa9b5d70f6562ae25fe5acbcc3e75da75663dd0aeed43a1529aeeb5058a31d32d9aadb49c7cf7a69d43701cbc948c761f384def5bc20fc5aee5f53e2224a9c016926222b7f57c024d21c3c7a3af7a034c7d4e9e9aef23fc0f46492d2ab1ed025476825c9a57e4cd9c85345a3c0e01a9585b80dee2facf24efa19c3010c4464c07263966ce467865c212a460c970b4679227ebb9add54b789015ae5840f032c078080f595555e49978d6a7604305737334db19b5c812759d3dbd1a1146c115c7d4dab420b05bdb3bf227135a1ce165388a0d0d616ecdfa302cc15317d1fb49cddd7e037713843b1b0d09457509414570546f9c4693da506b22d68d18c0cc4ef5361b8b885c28dc669548e94d4f0fe9f1c7de035195caa526c17a057fe68f0f131d768919f24058be6c5229a42c860237af3375b73d90f114bb028e442b229c6cad7915eba4099edaf326d7fe8ea41ab01a3954c943ba337516ba34265c2c00fd815d832b6c26b8b4580d74b09480a712394352fe340392ef0340126a95a5237176c4b7633b8164217ea9b7e6010919acba829160603e6422b5135292a1762d520dfd9017b2c220799f6195cd4936afcd2383553fa319abf5249512779ca201077cd3fcc30ae23e05649503adcd5ad96c08376f501d4c1ecb6abe732c1868eda22376bb0a6e7643ff9b8eefd544301a254be46cbf2b01995b686d0a69fe022bbc1b495254d4c02b0573ecd7d3f9207cecb8424fbda877777c00ba8e3d007d398acf98d62866c91c6dbabf6b63426d75e0671254af60218775a86bf883a871b053251830591f474204a0676b3d41ff60990d230de1a81c1dba8fb7064b356020383ce4b4541a743ee9591fb34354325dd48ce60610fe8e39df1bc39c8594ac992dbf299895d739f25585035883ff9779f96c9ce7296bbb9e599a758f796d05ad4a0d2113a6ef093f452941f41cc4e0e033bb82a86aeffe1fca844f579ec604207ecb5eaecba3fb08af20381b8d05d594f4cb6caf967385e7c80f2839d7605d9f6326f8eb4715531821ef8ee5b8138ee37565bb40109e37d34430ff08544593fcb91b3e0b95dc43de8fcc5883c93ac33f2aa049a824873aaf59301549c9923fe555bad6759349733ae4ea9fd4309cbfda937717bb82e0fc78767cf28160b143f17a153522ace3e29ffd3d689bbb2fcd93777ad9d038d7d3ac8c3a3f6889800e0ef240cc3c183f8c0f691a396d204cbb404bc0b900146942980693f2bc394f0c8ebddcec42a23d41757760b6fbea725083ca40036f54e7bef312844ff645786bf692d0b9489d0ad17329432aaa5d3b564862289357d92481f5dfa87662f4f3e5b687d784740bd6d7371a9ca313430c9254ab2bab520cb2ce9fb6b175675475c1cb296819e938a5ae80b6b32221bfb4efb9749f1f38a4bf5b762f7e14a5ec6a875e24f0809bdcbbb6337299da5d49975fd806cab783cb8d6de030d6fed76a1c577f996145f80ffefe576547d74e6161a2a1a71ba5c9024e1593a0674567bda3045037425653890739c555d3ea5f5c0fdd0329d9b1fff7fa9f3a9813a1540fd95b854e79cf967e51833ab0a61bb18630981d4518d404267d3eb624335163f0bf5d4a640176b2437b9d0826e599a8fd6db921875b18ad0eafd4634b86a3a98232af3d87006a18151b9baac6f9445dc6d241e0aafa5894b9482ae0c7bc8cc11ddc0caf5996f9d42a0bc4f7a45cac8658a8014d10cbe45de7fe11bb10aefffde28fe15edcfa2b23591ee6a2b6c819afd6c048cb6c2308c3b0e98aa31c0eb67532f5f0640a0bb28d39eb71d20c474ffc5fd0f34905b13496a06f13acdfbcbaf9beea6c10bf73c9c2ad9f63fa3b39f42b9babd9d1e844a150f9456bb76a37194e47327b4a3c7e0947d34efad107c037ce9a294617477fe8b00ca6268e8dd029592e7ea118ac01ebac9eac1ee73b07705405d881399a7c3cde156b0fd4b6e1399857551f8e3715e588ad683c0843fcc89cef55069c5b81a817fbb198355ab5c4c82dea5837fb060715a213342230af6032d4bbb88f212c97a8a7889e142b558a29ac37a4c4f622e6bde109d72154984642d4be779a9307bbdfc461465297b51bcffa71f04d66837409c84e3e220d4a651011cd04335bdd99c070b5de0671a8871c9241461638d55665e5f55687067206b645b74781050a2961501ec4b0e2298af95f5f6294ede027f2eeb071f1281ac96d229a76c5825608dbf9e61edc6dd5972207e60cfb8c0057e3039495445ad2bc17cfe10d03b885c3a251a9e83ee997d834d723f1c155a28855cb0d869a4ec77422b5dc6d59dc3ab4f5356c674c01ef94853195c0775b7dff1854c888f9a3866b1521f861bc767f51a8b547c97d14886f4000428999b8bf5632b64225080b1e39438fac73921b09ba346ae15009388dcf609bb6e713f913e8c7d6c978add3ce80b040e170a9c1dc9c6e9078d4cd8eb5e0a1bc22f5a34ad2afc83ae552937e60e74b8dcebbbbe137aada56ad23443623380f2f4398a2ad0c1478cbdf20597263489e197fabe9de0a2fe4d5f35aecca3d8fb9141709b3e3b8a83c9e30fa66b0e4eb7e2841cf136619285e13b4e82850ecdad0a33b852087c031307e72cee2b233f4601928f036611ad0d421389817f060fd365ba42f2f128d8cfc7b561c9eadbb59273ae456b27ea46ea75a4836499d8de57f0d2c887a40b620a8f6950ca1ed3b405be1bc0bf1a516601b600b00bdec9fa1a85eeb2b067cef8e44d56a1f2d95ced794a1a8e2ecacbc4ab9c67c49d854b269ec06db6cce74a188780dfee3ab02326bb352b583e8186b874996ff8fd17883a932f5e33d999715785affce78babe6ff0bc5a3d9407dd5f75dd07e7f6b71dabb8e93208035a9087b59082ac956be3cd3d18ccca0672dc76a640bbd3699832b45fef92264778b349208a5ae236732f358aee51b63021921ee25472450c7a28ba5cb103b3785715cac6c4790eb0d00b672b690cc8ed0cbd508102611e142e98ba6ab9866ee27448fdf13a02bc43b88fb772c13f17d8fdc1eac8e662c7d64c17ec8ae369cff0cc9920cac467b982f156ea6f0f14c6424fa9ee36198dbc2ac794cb76482487e258e28758deac4c1b073c8061768b5716ca77c3d9c9e0e5bddaf1ced2fadebb6af8b635f0e699a0888acadf8a0595ae89c76f0ec682f77181431ce3537025857117e475861f5b4901d945df2a542852b9b541a212d3ed6484b69ce8ed20a88a3bfad6e1bed1ea0de3caa4a14a7146fba46dc92f5eb7f83055661ce178179989e5e37a618a376d900f3461e60606d00e6d07b30354ec3f1027f7b76ab21681a2c92a6bec0eca71e7893604f462d0acc61781ccff43eb09330a7a90bf90ef3bb6d4e3484cff3097743695b1ab83f09968549fddb58d9359885316eeb85344ab130723d700bf50663945db29fef5adc8d583142a867e14cce6e3cae1410bea1cec74d439caff0bd349e0a563587c62a8d11817b91f6707fa94b99d0368b8882696e4e52c969e989313c078b07ed614a15abb227e48f1b7eaf9d04e5f4da59aee2f4cb127b0d8af51d1b7bda4b714b9a47d3c2442876ebcab85f89eceba7af41a37efbff1ea595bb1e1e0d534c40e620612125e0ad2bfa7b5b164fb85841f09c656359428a371c602cbe99e86e8c87951bfadbe0e8fedb6cd518d10d5a9fa34eb8c3d940d95959c5e890676744ce0b3d576aac7e54139a9ff41674ad0b5ac437144d09c531ea93a0708000f6ec45635f450d0ac9674fa4967e74351896440cc9e45867ecc9adbb7403948937b912d67606e11a7e4549197508ece2a82087416fa960a03821c8d6a3cb49f564768dd683d544babfaf77c896b3d3dbd761576749c826b05374d73a760eeb695395c38445995d12596970586d86542e8e1385d726a5d60f40ec630d2fa1dcce1edda714483dfb3b9a779a7013126213e2a8cef3634809b58a28a8043a9f206088ad0f2e5bb51e4854d4db7e26726b7421a7c08dc331c0f6e79858878cc6ea6c67b3ad1311af5faa53ad0770fe0f176d4925c7254e0d2920bd205a6aeb443381efd4d8d5a0cd3c4d510deaf4bf8eaa27b93581c038bd6199966f247cbfa487794179ce6d19e7b17c6e7f3b58b676b1898538c63191d99e0a36a364eab6026ea3f1350aa9d10e43a51ba3c49507490fa9f71ac71a95af38b9a89602a13ae4cc778417d5944b0f8445c85a7bf767a787b57e51b56f7e35e1d4fe7392241718a5d5832b352b74589d63b6136e661ecd4e4caf053e522f49fbca6bb51cf82b789939471aed4b9ea32256483a27bfcaeba848c220979d2ca6769992721baa1b8bf9125544e12de4d47f5472d5db292ac2335bb4b80e558a7b3ee57a8712d11f932bba10236b962fff2684d0a11dda71750549322279e195e497a45aa1dee9674f8facb2dbd7d238c95a3a30e03e24af7daab0152066e9a417612310800aacb610fde123a9dc29fb5783a1e0ce44088847e874312a8ef91a24fce630928230530bd9b94041af8bcd869934d7a2fc1803f01b08da9ab872b91fc1588c5c72bd7aeac8f1b3877f1b7f9ce22ef39a4ce25136674b76a488250dac53f76899d0e05e1e371fe6f3037cb5d49ef8f5fa60789088f25da11d9b7f257b2f28c678cdf4d9d42c885e6893a15cae71efe923d7d37834a5b393fb3d715a16ac3cac382acd39ccadafd419c951711d3ed8b8ca28e42b39fd4c1fbbb1a5d876c3340715d9a81e6b058776992dc594d858f981f364284a34c30ac77f3e197809d8144fedfa46ecdc3921e80198246b625d7a5f459731eef0e0f2b7141955ba2b1dc4fc4af3eb4c585e2226b66e544b6cc56a03a3633afa5496f70e99d80e3e286b336558095bdeac2e5f86b6f5c4bc829704098e9405e4d39a871317eb8f0c4343f8e361f5fa3dfc5d65feac3b7f21942ea286dbdbd947287f113d44d8eaa1eb99d801fd3846d45801a4a3b58c898f3ac25422bff8d5382e6cfcbb70858c87a798e7043772514187bf5b071f1322ec52bb944a5d47bc5fbb1577f97036baa59670598c027b984488b6543e2930d3ea56cdfcf1b00a1140ce3882f0ac30b97316f70a20131425538a7ca2400ed4e911083cbd5377d5d0ea08ecdaa440b7566317e55549721954f68769dc406e1a44c8c17a0cdebecc7e7ae5a0186d8a8ef75ae9afecfb8a8bba3c24dddcc4e280fb3e5368fd79388ae7c6ce9ca39961e34e5eb370dd7164588d2382e8471b9a2910b4ac52dd966cd8f7ae535f4713fa50e44dce6b7bef73a6a9fc6d831a8bba48890e2fcd5d33315a1e5e2340a2018359eb054b37ac14c11b0493a3d191fffd12141b568f98a1e76d85a836c250f0aadd8afc345966d20e411ce90cb8caa28638ad67e4b1a5a6b8d673c66e2aba7c982f1b904a2000e65a5051381afa48cf8d9d934037c7a3e442b01e1ca42e54a6e62a41ea9b3728e6633868359d70c6bb4e36b3a18aa91923944bdb15cb9a2619cedb007045bdeabc2bae7e07ab96b1b9d7639f064402e3424034121c4a8c7e7ac3adf171b7bb2ba0c35344cacb00528ac0b1d082d838326af683e2f7604801fb0f9bd751d1f77291b48ea9716a60e4cf9c3ba6961c1c1b078ecfc6341bc1a2ccffed5f9eb031e9a76ebce809c24c095af8a7d53ec68e815d0bf1b0619fd3bd384dccb81354e2050bab3525c39895cf1c44c2671a7982990d3b0c176718561907d6cb2a4412a204ae2e9a43a22cd74ed5bc5cc7ba1b4d9c51af25aeff1d9be7a101c5aa12790c44d68e4d1586c603d76fbdd5499d622e4875a49028ae5e84ecd0622fc0d833efd8d3f9b117cf23d9043aa697e9a4ef74c83a45aab6ff63ab734a0fd3f5a35e98ec3d4198980bd4b00e85af7376cfb0b3fc9dc5b3fc29095c5c42db4645209e908a21b4663ee2801f425ed2dffa2739feed643bfe641f17e6e2b7b6465ca329d7ec28c4ac539e60248cbbd1282f61b9d32a5bc0177318433fc272b96ee05cc370a71f92ade54d16df37fc159e64ef1896ed57fde4b46cbfca886dcaf6c3350aa3b0ad8c475ced3b7a521c35fb9fae4042a3c3fb0778f64a2d89cf600df5afcd0a00e581828edbde3f4e41d84359b7855d3a4841b94a082938c0e20df0e33fbbdd803448d811849d74b05b1cb0b903f6f080ff08a87f9417ec87829d42b005f4e6a1972ed1772408bcc8804f4880102499fe08081c2e011e3f0068582c7b9b035b4ab0fb849d56fde4b97f83f3d9207e1f9d3f44fa66d08aaefd07baa6cfb5f7890f485d3ce14fd427fd80a4904973f743f4e55f07c511f17680616ffc30aad8f84cb551f4e1ae3bb99d988ba5b08118386bcdf655a91dcbc2520671cee00e1770656ef9ff6404a9d672b03e0b911c475f9fc8fb71fedc221a86b1c9b6fbe92e6e772b3493243f1a5382bc0063a4222c2bbeecbe1549df9212abaa248bde7ae27b10112ca14606e7454c4f14c9674493b7804f11fe8253d57631bc570a22fedcb9872515e7c9ec1adced32eb2e199f7f2248afad5e5a752ca3b752c209f751768bdacb3963123cb9caf23c5987434d71de0b7211cfc9645eb6fc0b1bec20420c0903aae6541b56acb79cc7b6a34ec647f3b4c736f1c676e14808af2352e7b1f9f4277cb7603744ce57e13e56526a0cde0e29a6770d4e19afb8ad31cfa6390fa5eeb1634f3c18ddf6db6cb02b6e3749ccbcdc60cd799bde09f01ab6d7521f35b027032d836d4a711adfd7303b23aaf9da6c88d2dbc4950fcbad44bd67dc1f259f3d9a8292134a42199eb7f361b720ad476499900fcdb54cb99e751ecb5424190d9466f7986193567ae23b9e56075c6dad9e5394c2c8a250ddd0d0b9d6ccec5cb20cac6208d00e52478633ad9e0dc4c90a032b65f3a13022729b7d1c9f20c97209ff62c2354ea6d817914f638f646b0701dbd220257cd3248cfdd470ebbd78426d7cbbe112f1c7624cca923f90aa5fb6a64e6d6d995e2c26848b9fdd9c0935cc8deebfa9cbcea00ce3ed423ea224a5974a5ed2f47c8d2fe176dd20680ab82b4ede5eb14bee95bbb8ba59eebfc1a95674c4cf9e523d31ca6aae96bebbf322f18d016f44db2ae0e9465aa1ea7201c3a669dba0d4fff8f7799d81cad1658bdf7d3a1db3d0db7434fe6789dcc999e69ff828c3b9bb52852d55c659ab8057ac762c09e17bb0fd4993a09872760f96bdd2765cc6efda3d99a76107d285beb0f54358e563398bc44ac3216639c37f7968e738b87f1597f0f8ea4062cfb83d58f7019e3794d0155fcc5f683debef17ae3767bd8000d07abc1820b47cfbf5baeb5f0f3da2c5f1742f63bc270855fb2b222717f1e44e5cb66c1819b2b130b36c31baac5ab010606024147dd49a00006f773d5c91a12211f411df06ab44a52206ba051425d207b1338557b329b5883ddde69eab2f03e7f2ec4d895e339da6919407b921874f83039061c5df927e414a4295da4b39952d062b8246b0248e73dfd596d5dff6eb85581f8ab6727cea146a58db06efdc9cbc293967ce13ab2334480574fd14c819afe4d1f8c256d870bb1456500a1697844780c31f4c4ee137c465b025ad6e628a77d4fb291b641ee457194d79ac010e34c78ea4d709943a51ff536443eafb6bd8ff7ac5ebf030e28aee8ac923cfac5e600609f86620a52c304f8da2fc51bb71e83034e3e957ddcfe7d50860274313d42bd8f19e5f39ec658ea96d66e027d750702b434643b3be11e6c6d268819bd28e2ced0fd1187a368daf58e22e9daeeb0566af059e3945112e336104d21ff4e4486e47a45a26ac213f41e90059eebe7a05e294e456fb2e607f1843edd149602b93c5c4b560102e2ff5169048a62c6887a28f2deb1ceaba03b1f7e988d6cd1d34f29318d0423c6b8722f9133c6a3821ae9058e5e9079d417e1cb60eacadc77bf40be41a31073b4337dc031de206c613182c6e56db1c8c501f732e8ea5681f35503b41a93d614a60092622ec18f706089fa42ad3c389d2178ef009e8e203d7bf1b8364c83ff51547d5b8c40aa2958d2e69b2efcb86443a030d466def10b935f37264885e3ec9ddd976812cd9a2467fcad30673f7502883f00a0d6813021f5020d3d2796902444dbc087d14ff841381d909384bdc1dc74aac0e70bbcc55160366e795443b42d0bb67e66c24ef050dd6d95318bd0996c187629a0d7465f2dd1e7cc02f7cbb56828605d0907c40ada3af38fc80aa1daeb3941e78db87f39f9f2ab7065a5f74a65995796954c46d43c42c4368a1c1facd46650d05043904e8036918dbb5d71e60f3bf01c8fbd17acbdc8eb1f77bc6339565a35fd1e1090d1cf67aa54726eb891588967a031b837abca8b410c0b6778fb80e6ecd489443524e853090731ab1ba85b7a632cc338962101bb54308177e30de0f5f3a7e9c38321c404667122ded97119e02f06204c9be3d133d3e7e0390fb2c02d6d39e0c3d58460fc2f279356affd8a2133d23eaff08481eaa2d6430fe7350b75e6d2af98130d8612f217309be99c8aa43503a04f0a147e35d0102c7ab8fc16f1183a1e099ff84cea944b2d5d0a6c79e091e3644c801f71ec8b74b4fcb76bb40011cb3aaaadf2ec88b61bfdef5cebbefd534242c11072b862518f0730f5533e5472fd815b8a3b7c16e727bb4ca6819efc9c86a836494d83f646c97232223f26d11a888a3966ce83ddb453658b1032545447b4d589002081f0cd3a71df9159b11a78ef290df4dd9242d115e0ca4dec83c9e094d344eaa7dd8c7047af71ae8a69d276d25d898cb487d1aec4c50e303106c54d04ce850ba0c6d4e48941d87065272bc263c484512125eb61136226d45fce72c1349ead2f02a5aa3411a0b3b544ffa6cc2c204c68ff50e5b670832737fd7ccd8f725fcc068c68cb3d1cb78170deaa2413f38f625144eb7a4e6933d854bcb939625041c8b260868af0d0fc6f2fe4f59918c2ef2fe7ccdc9b0de6ab748bbb3302f551ae4db91f05eaadac48d994fe009ecd166d71a4eff394b3b400f5a045a5827fc6b95b64ed7c209b6b56cf51022b5f3fc6a83d8a058adfd0c3fff974c582216397f7098d9c87c9bd0ec582a947788d0dfb28d86a669fdde84355ca4992db83595a80a91ce49d1aad6dce31119610855097dbc531dbc7be2f4e7080e5833a98a00660a3f3bd4fa173c5a2000355d17100916c491b7b7ec9ef582c89f03fa7bb15c6de3369b916e0572dbdd50a007b447ae25244128b33f029f76da95ce6a3000b1e5f62dca463a7cfcd9d69ac89c9da04a59c8f7596bc5b83d17c4c622d127072983b51338c478ade909b0687bd1ceb5a528a21a57ecaf8a29ba9a14570b10e06fc708281248f64ae8e2d02f55f84c46e26d037072fdaf1e12155292608750d13ca3781d42031a7ceee3bc35c947e74ec5832d59eb6ee80d34510eb5339a6c1014d475d7a00b8a2fb53a37367903856cbf268ae44e893f77b8608bcec09e8ddfb6a5bfe11c7935125713da3e371cc0a27f7045ff4dabc93054ab851285ff70b78969692986f80740d1d33e99a057d68f798d465d69608d3dd0e1ca8e4f03a7a4f76a8fae256eb3db44378a2387bd846d4cc91521d30f02f09073ef032ad023ef6a0b3ae69f776503c80e750d95619b140a60c196a9620cbf863fe0facf56bdcb685c9399608081d08008a3f66abdd62219f9f111ee92a82146f445decb132378a96812b60226e0ede7a4eab7a4b83b53c953afd09c701acff6e2f2b3698bab6221b0f2cc06f0ba9f06c0568d8bbaacd60531b6a7411e36417345981aa0b520ed3da60ea3bb69dcad067a9cbe3c3ecc9927663f5368e0894c3d3ccb9b63e0889741df8a0cfd0534e302ea51c2775b30d0324e070e06cc9728cbd93c614f8ea25395cf862e82119ad7467c6d24fc3f4533a76cc501359cb106cd64c40688cc3f5ce7e89ef90097c6bffce3a202ea08b35e7b4d1188e46658ae7c67b8dc1b225ad2f6de5bca2da54c32c9f20622074f0794e2b4bb3b7e1cdd5a47ef8fd8411e389e537f73e37dc153a4567a4d0117734ca942cd8fd93fce9b6e589be0a62d8e3c7ce197a594ed92ddbe250b99797e384b59cea32f8c462c04912aff79c61761aaaf9b4adadddddd72c65909b8f89d6ed46c519f93fd45988dabf98ec3fbf2b92bc19b0794720b1747aa2eaefe7dd55fe21b106c1b2ac6e12151f0d9dffe86078ee42202bcfb5126dbbfdd38fc246edb9fb575ca54bbe72a68b8d1438e088836f56dd6f04dd4517fdee09bb8e70a0ff7ddf75ce199cf7d0f877ba2db5c21427388235b1c654afbabfaeebdc9da6b55ab9aa66df7da7bb553d634add6487d13c1aa2362332572ca714ab71c0585c0bc10faa6efc09feee7a4dfd17b3b5ca47bfbb7a397963ab08b9c829f9a7396260cde99f527f793c27c1799308eafea9c1ecc9c1d9dd63aa7b3c3cdd9b367cf6967373f98497ad3c3cc999f73ca16cd87fd25da4434b8854895ab617f03eb7c6b23cb9b734eaadd6dfe9c73ce69c25d0506f79417ac9d764e98bf1f591306a350f0bebe0ade575ce4befd7adf6294497b0fa34c1f59de479605bd39e77c128629cde9959e827d043867cf9e42937e0a91a53de9db7301464708e961308a7e343dc7715f027738fcf353df72b3344bb33429ded1308abe76318a6acfd3bd867baed0eff1be7b8a796c7dfb4758395236b3747f5f05fbdacb4c54cc47162a06a310592dfc423ceab44c41d9ca263072ef3d0ff71eeeb912f33dfedcc7609eed2bee91bf79a00c3281b6d5ca1d7825c2ba2822474f078582f7ddabe07dd77d117fef55e8dee2223032adcc953269de59a736e71759f33fb0730924cd39a7f6f53eb779dfd1d9cdafdabc9b37e7e7c8f974ce9e971ed18cd82372d608838b1f690b14a33494867fc43a65d725a44fa41b062e2280082541be0b237c1942b3c4dd405ccc6173b70653cde20ce3bb993147aa3ef914c7fe176159dec8d4199fea8b3759fecd4d8465d517638c52ba94ad1c7ee10d95730bc9e33fe5f7c43b404e88b8057f9e9bf90d445210c80e8f4c499e1da98a2f1f488c2999baf9be788cfe12962510c9438c310e4941c42b8714838b39c2fbcafeb3ed0c457a892261140addf2effd22f41ba3481f59fd91f5260a92c0bf60aadfce5e30e10fc3e4fb93be9e18c7579df5ea87434938608c31c648fa1c29c1c8e2de3d7bf4ae227b6b915da8ca2f7d8ea4c2c427f3decf6f2118f736b26efa9ac85735700b99f087b918503e0c58bf03ed0b6ee36f2d4c0bf92ab26039f6ddee80dc1bc83ddc557a8aff0bf3687ef6b7f77effc5a858e4bec4a8f8ac2781f653e20b5ba8857c6567242c3d521151870b451d6e67762655f15b48aae2bb2704f55dcf05d37b42bc3761d4f74f02777e7ee8cbffb1424e2239eac33b17a3bebf7f84d5f779e45f8a8b5ce1d9fe7e110df5bdfc232c13e6a91617d9fe7ead2f9fa7bec43d574cdfa361d4f76fc23cdaf737eed930eac32814e4d357a1ff351258b2335fd9dfac7d0f3f6e82a5d0ceb2bb3bf75bf7f47fecdf9ffa1aa76de0a555635d30b27eb4b7b78b4c790b819a2c96ed11b6b326e28b1fda59beaf192b5ccc11362c4b9be30381870839fa2773aab996d638ad4cb9bbbb7f0749d54b4a9c1d6e2cd2c663eae42fb7711cdd666beb847fbffc95dd5f1661a30d7d0bc6d82e1ab230c119638abe90bb638ce21f9fe300a99a1847a6c01b1e6eb23f10b756faa961d2883c4267558147439ea097b9eeaa300117c456c5d0acc20a8e76b28a18e409dacc552329b294604ce66c37253893b9eb39c820aeeba604bfccc5ce8b242b94c8122ce523de320b2ee608ad067609de3927e54fbe9e95efa52744c77bed7dd563bfc748cc9bbe67e68d5cd9de0667038499f262cd80aa18b804b162401c5558168c678c60062d16972aac19f0832e3988b162401b422c0bfa9042053056f474e4063acb7448b370354ad3b50e2ad5982d6eeae0abf161c7dc73817e247132cbcedcecdc93718781cb1c06328c288da28ed917599115ce96f456df77f4603e47deae07e5df3eaf2c60ace8c4123ab4583d4650fe38aab06c08b14cdf83f25f9511abc242800e84622c2357b647f9c34c61c482c9e188157e39e64b95a04504f1a3872e235f0ac3a9049f0d344a6a49be3f73d047317f7f5eededdf9fb111a34db4993f03c66823a7977ce94fbe1f73640dd0cad47d19b093a9fbd4893ced40a5e4fbb3cb175aceeba3eabd7b3a56be2e87d3a869a6083e2fda6f560c88e2b1f76dcc1bf9808716ebcad69db5cfe5a33dc469147bc87c9f62117b687fa712aa25df16cd22df20f2a545e44b950823d225348b54d1bfb404f9521bf2fd1869147ba52cdfe72c38f35349e9efcf5609875e8676675eb22c3823739b3b73df91f8c23967f0852ef32ae22ae5b2d8a34f34a67bbf83dce6de9f637cd38cef87478b3d15ec4ba31869444229f7110e3e2bae677def7d18639cece2349ae51b67191f97efe31ca4ee4827730cf813f3499e25f3b70332200541ee680cd83104ce8bf9b1bfc785de2cfb6b1e09a53c8f60de045af99ee3c00fa4014296300d904cf96fb12589142587432324b03d1defb91b5bbe54859fc3bf7b99e2700edf6880429a24b2d76994a57dff1b29e534625dc9c034ca39a6539ff8b35dcd2cc70048237d619a703d3d5754681b0c01450b2331227b70c4abc56ab99631a4b458dab7964f1ec5f83146dc95f1358cd697472db7893146582c47578eb1651d6b587c6fc577a02017f2d551c5b0195b32bacb3539b5e038ea03f581fa407da03e501fa80fd487a222f7a26ef1b8f9beefc39129091ba2c240c2a8c3177671a68117864855188da2972c7f8528dbf99a06aea3e7fe0f88b15eda3644edd2b754a3d4527ab29aa556ab95d226668bca0ce847aa5ad3552508cb11d3c9eb2836ebe245369bcdbacc9fe99aadd992595fd5804b0e63e4f835b147f4386fe4144a7278324137b385c1374f2f29f3e3d70fe33bb632f5c5892750aceed6e36b369bcd3eb08bffcd1827d09c129e5e7652c9e167a7ccb35996f1c3531095c271b153220441597b4b4df651db4726987062b7cdfe9cd2c567527524593b4c20e42adee0e55eb6f8a659a1e6240a9215ade954bf052b352c434df5a5fd1aa9aa295ffdc8a21074c9f26b64f97fc343ae7e3a25a2c4b224a3ca0c58b2fc4fb35e14467b35a077f1239f59a91ffa8c6af6ebe3389d82b335afb19ad8a3e52ac76da4ed9fef8e43f8da736ab5ed67e4c0c51ce1cce96a61e114e4943597b3edd5be13d7dc96a97b267cf9ceea74be06ce7ce7dd3ef57db4c857f62d86b98d5118d1467e1959ee40c2606a2399e5a645a9d2aed39ada3e68d1f6f169ec31bfe6eeee89a21f33a51b75aa550aceac514fa7bbaddba8d8688c29aa6da0dc88d46aef862f09326bd85271374e765cb79c27f8ea73309daddae9537923aa9a4c36a5666ff574b49b39b0635a679bf38649f9684b8f6eefa6793a326bf3bc1b673d9d0dd432ddb8ee7a3a9ae6018f29fa9b67c2ccde735ca492d4bd7bb84be3ab747a0ca65365308bbb071a37a97c616fc9f23ab5bd65e6fad6d3a9d4aba1bbcc66247853442e46462470527cb2a3779b5faef3b64b2a7d9ea7a3fab49f27f8b439826f03e5b45934ed374f47f348a58e92a47db7953e13e9761bd8b9cbccda47eda80ba74de92eb359e791e045212f112df264578b272381cb2618145f7f6882c98e4ed29cba0e75a22cfbe8ac2f91c943e1b22e9114988ed28bc8d23761380b93816db3598b691ff5c3da0de95c42ccfd5ddba57d62d697a15c8d2ec61edd7db8d17aaa8189f9b000373822c062329e872348e4cb31efcf4d6fe6abe56631e70c18af16e0dda277c8a7748b114c174f67c767842f5fbeb0ec73ed9d60e3d5126508147bf812d998b5718dc23cf574629e9bde03b43c7194c1573c0606833456674f967107fdea99a06955b34ed8991a7586ef26f5a7dcd50f73d69a601a5842ccf47d669b23e9d4f0d440a7b88d9a660d94b982566cc5d1d3a1d836f1f5735a3d7551aea8059b8bb491ff793af3b99954f5eca736c4479f8b51d1258a89f17482c470e1ba52dad5fdbb69d3ae78fe2c537cb53ce122551990d3d659638d71e6719623ee235ae8f3ea7f345d7c2ffae82dbd437e47d9dc3ebcb9dd8738ab6f65dada87777b4bfbf064bda3a87d78b8bfe81db25746dfbda58d4aa597990357f86c74353c7f1b5e099204d68c63b462f176e3766dd8f0fc4f54d3feeab878763a79fe34b3816c952a5d85e674f274ee9fbc1248a0e7efeb17e86a57bb2ed1d52253f61edd19cd1a36b920cbbfe18ff24a90995a01b203d10b330dcc50a8aec6d3f1afe1b48e64c5fe04ad70df6ddf46de3e4cb0de21ff4ee9c9728edbec50bb5c2ea1094602cd14d72b3ea82f73a344fdb90f68910c95ee97c86da446e4c4c1ab45c3d3092afacae258b989e1eb0f6fead764693154d4d2e8a38d7ac70def060837bcd4d57289888cdac7d522ee90f7284b2ea20ef9618b4142e74b24eb6bf586c6d5741f783a578b4c557c8b28968f7e7873d478ff9db3e4f06ec9f23ff074681300d497349e4e94aa196b9ce0960180a3537df57170ee8e03b42f8306dea25be4f4270e839c34f0165da220be4b74410703e0e978a48e765df7353c9dae2345b75e0b4b55ffdc3a1c9f0b40a7fab69f54866e94629918f3d52255193865faf22f9154d55ac1b96d27d6950c9c3206bdd38fe532e540768d7ac06308f4b167c2ccdb7301885592aa6f38eaa08f3d1ded6900668e48896497d186be003c13ac05ef003c9d8a2f5167027827b89631a4c0906bfd808c29fa04f04c48d597463aeaa05f63b5bb59ce763031566686dae9d6ca8e0620d58f9a535c9a3341556341065ccce1752b2eecacb89e654b383933d440de9e847f847f7f40e006cea7c4125cfc5908d24e3ec70f0854cebd13bebcf95ff7d7dc7fba158b7fec277996c557e8cb229cbed642d5708e09144f07c894cb1a7091019fcf9f73ce26e3fba9709a6bbfc2e99429d5f08d4cf9e3b8df20ce109a29ce4d56c8b075d13ab33b51070aed456eff1ae5fb1d599cd8c6a14d4a956f7e18240ee5fa76526ed21c240ee56904961c5a17942c86424025d3af5c05ef3b681f0c128732fd6d8a4c6d2f127ce1f67a69912e215991cbde97aed87d24bb7b4aeeee15766e6c83ddd9f6ea7ee5765d1c8faed1bc44b9af2c7738be7cf9c29af91c1963a2ffdb8bfa0edff6c255724b20aeee2cdaa01055b5c913627891fb9e91fbbd4bd78c18d1c8bd42a640a28c07c8100ac431101b1cc8573c67fd8badebe5aa6f9db87d0da1f9e5f255b3acebc6e60e4fcb4905b810cd64f51bb3448491fb6f9618e97c1bfafb975e7a3a1587473cec8c7a803fde624f7ce106fb5ef599fea77cf34baaefdb5e2813e697be34e9f7c5ae8f7e7650488342a614a922425fdb14a9eadcd6964ab8f49aa7539a1e048ee48ae7082813fcebd79d3c997cdfdf27e28a4772f1628b165aaac827b7a5efa3675d32b5e4fb3eb42e53e94da6efbf9f9ece8743f86c76183e1b1d7b90fefae3f035149ffd5885cc3ca4661bc3c19134a004e7cdfc5b41987770a320919afda9ebf897c070488d8101b72012e8d6dad3e7c815685eca7c2a7573b3e32b1a7c67d6ce93fc7009f1c7f72440e0874c451dedf2d58db97c1559f6db8664aaad2be67d8a8189f2552a5fb8bd36d88def1b18cb60efa9fd2d68087dba09f9c7c622551513a95bd0262455217d6fb6bf0b383840efe97f4855c77d7f09b1470931d747f99f409463eb62d53f813f3c32840eb7f79da00fc523f3f2a57c19dc63247691829f968d31bc68b1e4f71891f91e233c8840028825f346628c0543b458125f69613ecc1f61d59dedfd4fd8300768b6b8057f0b5a91cf2357f2fb7764c5d6556ff09c04b9c95ffc6d4a8992e84629becf5d707bc95487db2bdf58c937fb8e638eaca090aebfbde4b6dd98db783af7c67c6597449bfe28b96d8895e064fa2037f99bdfe7c80beee4fa6e5d51477f1dc117fd4da6203719065b91c1ae67c9bc15198c721388f2d7d102cb9d4915c9951b653beb04b42e1b3e97ad33091b4c5d78753a7bc086a26499af301e0d3d190394fd5394fbe9acf685fa64642aec3ea398dc82a42a946f03bbccdfd8cd726531eb8ab9ac132ab9ffc716d4e5c66e160fe665c02b44642efd0693aa90f4a61648ff7d3f0c68c21b4ca64cb8e0cc9c6cef04121e224d6067c657baa5122ee12132939e846b4e1bcca7e4dea4c8546f5bd08645aa9e220145a7c6e7c83ae50b7164361ad51644a93894ad16d1916c16338215b560aed814225898aa26342c6fcf71d1fb0b9e40df56d0c159bd7a75ef9e822dd48fb9fbe811a979c3614e1e52bde6e090f1d58f39c4a92f024ece1c5273fd0ea3b4d7d90188af01bac051da5e09f567643ceb248dcfbe5cb2ed2555e18d659ede12bb59accb09e7028e21ed65c06d48daf416b3e10926f5e1f43b0e87d44cc12db6c16af83ad30f3758ee21eb226d3895baf97094e16c2fb7e9df48f8af256dafae757be57e79635948eb58985469dfbf0d49558cdace7348b5efef9848cd22581c1ca9ea843c70c32253bd05dd2de8ce5abeda8936b3368207398cb21fbe30cac4e0eeef4815cdfd3c59723b91ab48450b763494dbc5a561475a72188ffae75a9754853cb213a98a53e4ce913ca40a950241a6a2ccba767c7563d8ba4e17bb2087d6a5e5f0c6344072e5f89bcc4d17784185d2fa01819d1f46714bee7fa12d50811f1008c2428439e086c78ded94543d0bd1a6bf4fd1a8e5389ce42c0a1cc8197542a1a0505058ee96069c9858c8d494c9d4d4129fb67c45835a3a453a7c210da242390a4955671a245571d52cd9998253cb4ca676902929552e29a5df55644ad2495b94b6286dcd23999a81b38b8c47de4d81689054857326245558a42a9c474764f9734681a0404855a42fda32a2302b381ddbe16489a2d9b1cc87138ad038220091aa0964478603e4544fb59eea9c3b52357dce9d1890211ed98f2107a4b29c597031078f1a6e64aa86efad7c56a61a4b0e3fcbd84de58644e50b6d7bb11b6417c5b9efe4a711501be429254fcd5d4fc7fd646563f728e537a3ed680db6934ec3d75ab214cf67f86e14733667739623ac99e539632453335c66669206884648aa4218201a201a20688ec8fea422a90262c66886cb3492b2bb494deac6a1fc2a83ccd2474fc7e4c4177a510341daf8c7af5e6bafe2161ed38bdc3f897e2a1155f27b28f7cf985495be7f669932a9c2f1fd130ba922c17c388b468822c0620f007cc7a1e863f60791aa0fbe46856221f6b8f1fd18883d66be7118641ae5fe9b6dcad7aba89a67441e5235bb882055d3cb085135bfd09fa1243696cfb843e42e527587885ea4ea1e21e797a8ba49c4d41dfac9feb689f6e125e91dfedeec08a92269115349e490a405a96828fb7b49da070c0f3840ee03b073fd400d28638a7b5a6f8032531418f30db06bc0d6220c50f6ed51b82c0dd300f5c08b00009451072749ddcbae7a3a1ecd7f00d6f81ad0c6a3c0d3df00632615f96ac6088687f60103d43bfc7d06ec4c03d210116dfc4f208d1031e56f03a449414cf9d700697e8829ff1923f787016a1f343dc41d331e099d69806ec776d2cccb8f3ab8d7646bd64630168c397a13db1cd54dab2dccef9efb3048b54903e6adafe4c3606e66ed430edfe870a0e116e6d78f40fd0e87a958ae9c8639300ce24428ede997fc6dd20853b15cc25d195f1027cadc770f7e60fd8dbee695c07d0b1d0ebb7a277499db66d99fd4753669d4dffe5e0bfa9c73ce49e383a46a441ef15c66079c7c4e82a81f3173259409fdf14be88f3f53689982744fc1e79c294c4a294d81d65a6b4da16a9aa6695a0a1a6b3e57eab27ca14f292a92401268361312ea56b7620c7759be142c6b3e77b37c97d8cac4b83d894bf0f84732574299e02fbff3116ca9703147b8695a3edb527ca15625c80a7db053ec65454545538e6ceb739d5e3f25cb295b950d68ca2eecc6aeec1215195197dbb8eceb9b72aaf240a92097d0cd6da58e7e7632fa8a604499c28edc668aadf2019d825e287514ab46dacd2be57adb3a1d7db320a31b8d2875f3a9d31b1955a9415a5153ea54d66a54c1b01a65f9d4ca7c4a23bbf842ad4a962fa473687327536da38e9e13c76d26ddc4048786c174828270d0a95205079d898391d1d1917b2cea28c92e169926faeae7f615f9e1f76161634bf6ecfd090d02ec808c1b3c90f228c8dcec244833455ef1a00699ab9d04411cb20b5af63e47cea09144ee66c830390c7909224f995cc18d89ccd5aec1f912accf451287059705e8e506e390172a32272b01f9cabe9760a5a0ecdf12a350a0547e8ff69487daa7f8084bd6f051117cdadb1250098b54ddb004442e79b61594ddc314e46438e48868f8e6879cecebe61dc91e18c489f2866dd2e81db5d62f402bdf20a22fb3b22db7f116910581cc20dbf2150b411690aa9afd2b205513c715a46aa2f1d52017fa3ed94dc06b245a8102b14705fc27e01388aa8ea9fafe4038daade02b7f20b10710afaf81143b11277b4e4bf6bf3f9fc38223caeecdd7375f12713220be42794f57f015cac32814b4ef5e058de222f4ed77f42d46791f59dd17b1de6f5ea77132aec857406c2bdaf873d8ca1627932937e2eb2cab883afcfdc1b8e2ace0c2c8fe45f60f1110b92db27f68c3c9a8944f7ec8c9bcbfb44767f8424e26f3d294d8a3b3975a1e69d317f174df9fc7294726a27c913d87a91ce505f5cbf57a6d1429b434fc5a772dca500fa218e1258a0ad088d2030fa254d941941a8ea23c39234a0c3a7879c9c1cb8c2e2f31cc787981831751192f2a66af266ef06a810d5e58c878fdc0e56582315e3688f17a85f1526204258d1a40c9010da07099011430b640d9020c28557c0125e60594248aa0aca00b2857640065871840b9410b9410700165c916505a5a3c3983e8890d60f064062f78a2258b275760f1048a2b9e2861c513a12a9ea440f684072a9e90608a2752a478d224cb132451c8b0032864983d21430d6232c8c0091e19b268e234671626961862c11241b80048891c6022484206199090e1a705681c810323c26041511130109a8208265670c4104260f1418812a8604a104ea004394992821ea0a0cb953180f8e2072d7c90f5e004504d1324acec503a040f354d80987d823ce79c736aee73ce39a7d3263af40e354d467069eb9029a59452ab6994524aa9e64da2dc364113d7ed1230f972bb0a131ddcce810919b77160b2e536099870719b0a132b6edfc0e489db236002bb6d0313226e4f618282db353039c16d1130a1729b062633dc96c284c9ed1998c0703b044b8e6e47597283dbaf2534b80d65490c6e3f5982c56d19964471dbc91217dc6eb2a488db4c9604dd5eb2c4ca6dd7121c6e2b5942c3ed244b9cdc8e818789253e97fee439e79f6a5c3cb8edb343a9ab8cdb485c46b761707571bbe57ac1fde292e2a6e11aba3d701971bdb85470d170f57079e0aa7277e0aae11eb99edc335c315c1d28f17273a0c48cdb458918d70c255e5c1c2821ba6528a1e2ce9434716fa0a405d7064ab05c3294fc70b92831c11d43890d570c25af1b861225d728491ab706497270699084cb9d411230ee969a245c4c30f29c73cea9b9cf39e79c4eaff8220a2f962832a20b2164f0430c74d0720317336c91a48916497c88d08081192f18230b30b0e0e28a2bac88a28a2564465021c4143f48a143961ba298018a189a3c11834f0c0d27cc68620c2678c0c8940e654a29a5d46a1aa59452aa39174bf0fc5c315d90e79c734ecd7dce39e7741a85124b44d8cf083f0df861c08f083f3e7e7afc2ce007c767e5a3f209c187878f027c12e083009f1b9f1d3e07f0d1e103828f017c0ae0d3c4daf8f8d81412342c019098610780640c2b002460d81c48b8b001407285c53554823a56c8342a719c1c491413cc73ce39a7e63ee79c733a5de28dc02104007ef840879a1b5033dc40d2840689cf090d1b66d41863060c192e62ae8089c2b4c467444908d20f9e0edd0ddc0c7683c1c98521069b8676469dd130e6177ee2429efe543377b416169acbde0122e3a115048ae37d3559f42625539e6a659932a926e29358c70a997b79810f082d90c2070a25345429820c26a27441fb154f3639c2645a64483c913d4d8324b84c61f5c8ef91792357e81f61c51ce126cbfd3b517c6194b5e0872647259228cabee32bebaa8e6540a9c51648c05854b227034a1f907881b1a287fd876fc7833ef9f3840f3156cde183459bfe0d06f329be985dcd92f99f2423b06430aafe8d8f2c57b35015a3645e059abf818b5ce1a1791564fec6dfc03d42a058d1031343b3c80ab7d7946101719b7e1a1055310acdda719bfec872223e978c2817dd9816af29b9e29da8a337d80c862042011337542103192bacf8ca6e4ca67ae6f0c6bc8211450664ccbcbd7c357b599199f3dd6bf5ea39ee3d6a6daedcee4450e1bc738e9eaefd8ac3b7bd66db6b56693e47ded8bd2758713d8b06a3fc622b349f23eb0e40d41bb036e3a101915cf1a7a10163b4b1b55620fb94c128a7019a29a8f40b188e7a5432452300001040005315002028100e88c482c1689644a118fc0114000c779e40765c9c4723490c822006a320040000c100000000008001c68031c301c58ad1db3553468019cb8c4307d429ab2f03d05ac554c91aa4136327b33a0ad5623da36dd4bad75ab92f5a2ead627b44b57e29cdb9a4224eaa7329cdc959165ea25e0819606fb83d2493207b2a158d35cb6f5b5a384992141b0a00aa11b39c567cf6c407fa77cbe56b18a487aedc9ff2d69467a31897df4e95799c114178cdc7e65b57ec34ef46e01dab32e29f4e4d809954102ababeef156754e58ab446b056780b5ec5754fef07a140c03c7f5ba1cbe8a7a6432170b05ce8e6d646a013630f6d4130f635ff948c140a44f4b09207858b1ba3ff3ec7d4ff6c17220b6821a564b0956cbe280466713b446913dad1bb102a9caf7063eb11e8a2c32dde8c07bc1071401d1c0d7891a006420ed50f672bf3ac48ca088ac8e16ea17a382873a2e4480839520f672dd5b97075493b2306149526dbe32239b62fdd1d2e844fb4ab60a6ec65284e6251fba25a77270324a27213f65237e6c6901612d6ac8e07e19aff32ad288fadaeb96eb9ab544cbb7316402a2fbe1e5b5e8c491e930e34f042bd4f3146115649f37d1f3efee6bef2595884ed4b8defffab0e5b53e866d8f279f8930082c6341d0b08d2b3810ddc5fbcf4cca7554374ebce1b389dec5978339f8d86e424d30ef19e837ca796e04c4abe76718dcd97855ba9c772523d1852dc20812066080c1749a7bd650c18f388d2741f30394fdaba28f97858373fce854a7dff4e16b1d5a86e69014ee2505d08bef1067b31318ca43c98e4c1b310502c8882531101bfe127fd120446abbc834301d0483aea0f0cd22d0f1d10bcb1ed98093afaa22a64815c8ca0e3f4ee58f2953d319a8275442b8ce8298788ce4799bc5b5af268be28a94fb44d60ab5003a5e29cb3e9514611eb9891540cda566d4d9da647d9a07132766e43859221a1cac1abc564414b74a1479979da3ddf18f69f94c9c6f54226fbe951a650723aa77b6321772ef0183c768ef9839a697a9451c9821f8d5c4b8d2997b515f42843c3bfb30c2efafa45650aa58d81c0d87a48955c821d51bd4020ecacec62e1e7f8e24766e1737aae27db75f9464581e660c8b003406a560483377a35b8a1f4f383823cb31570723a5944790babfe884b0cbd48b0d291091c14f436179845b8c4043915beab1bd0cca8fcd83037baf155cbb4851597988a307a0bd08d63bde2cd250638a69613c4bdf7b74b0cf2acdab0342993db6f1e71a797587966c43e0355dc0a2f885dc55e33981e56cfdf5e55c1fd12fb693f54031d29e262fe97d8ce65532b89b782371cc7a796d81e4ec9c547f6c9c70d149501173788509978da4bb280334bc54ec24b467456bd8917f5ed769dadde9b7321b376feb0d7bd26f8f73012832f57bd218c7ec7c0aba85c35aff8228161c7b30bac2e50567c0a067f3c9967899c4c109b24466113fddbfbfc05c392070b738d93c36b02de75638e73b3eb0948f6905202023060f0be54f3fcdae4d081a5d5cc1ea623db5b935ca24f3e5c47e7957599d734ba3aa05f13f3946632f4bcf26bd054984a8460918b13c907a667c3a9debbbf2edfc325f9106e880bbf4eed2a882cf108e928245253b21c90fdb2407b518ec6d3f15cd22d193c0fd901b24944e1fe1900c3b2212abb47d4c97060b00e73a2605d93813270f9511cb42540a98413beda0a780471a83e9377310cd1f5a7d0a1645062d0e001e3bc01a6413bf5d5d5a032be8673ff368a17c27777fd54518da6e42891fecc75d664d9ed8ec8e61e16a8f02e9f59896834aa79739c683529c2f5a226080c4d95ae3725e86cc1911dd67cbd0cd02fd70f40cecd40f50c32cf956cd2850f8b5571f6df9e2a298df644ab4cfe89c28cda3fd295b27bdaebe91528631b9290167630a3913a1478e93a89fc0ba0bab2fc5dfda5cec6e5315d1f6ae5e3116b80342ef7ace92e325753c5b5d2746d58d335fb2fc03d039ff6b9d7056dce61cb59f34e4433cd8078368a603aaa518916c47b06b221058ffc78a9901d7ccc47df628b00c1fc9be7113a15e0dff308116f25f1fd34e920b1df46f9a4254e511c604baa72fba5424e4f053328fbe1c11f23b25fb3cb7f6b0a75c8fcbabca78f2d818f3e6e61e9bd4c89de3427980b24ba6947e6bc26b45b9db3685d0cdc1ade989eb45b6d8a71e54f4ce4cb82a85c67edd2f17af92ed2a2a66203bcc0e17725938eb501678502b39c97b79d446ac51b02fffc793e80ae139030743dbd3683ea8c0677effe5602fbdaee801da3df5a14e1d66d82ee9042b60c4e7d8a54f3f2bc7af3866b67f3ffa0c2854aace45b25b6d72e135d5bea36124a8bc495eaacfb62238330f231d70529331fe60dec8b297ab89957e3a7368677d6e8f181bb90bffdb7ab34210ef8abc7dfed5bec49581dc6e936f9e5f2f7b43843be424c0b32d1c1fc96c0f25e37aed9d45cada3b9d070e2ca44c36d2d9a9bae876b663aaef6785c6878b8b2a2e1b68be7a6d1cf353b0d577b2c175abc5cd928725b4570d3ebe19a49c1d5329e0b3d1eb66cb4dcd662b9e93a72cda4e06a1fc38586832b237a6e7b31dc74bd5c33d372b547e442c3c1951d0db75504378d7eaed969b8da63b9d0e2e5ca4691db2a829b5e0fd74c0aae96f15ce8f17065a3e5b616cb4dd7916b260557fb182e341c5c19d173db8be1a63b87fa0ca05e7e07ef4c038d535e529d84ec43ddd375674a77dbc4bbd039ddb229ddec51571adddc19e9705b445de8b96e99e96ef65857ba4e77567ab745dc858eeb9699ea668f75a5eb7467a5bbedc472a171e09649ef668dbbd2e9ba33a5ba6d625de89c6ed97437fb8ada3f91f1f7a19dd8ac7192b93be79df9d03bce410fa42f7c8fefd4988a06467bbc805a4124176009339463729bfb25c9bee0f726bfc8b8e7e88ea939977927454883d4a9e648a4c932d776c9ed994d1920845d2e0ff932dceacb6270e5cdf8c6bd58921a57d4d7226eb10feb5cd33eac7047faa6c095eb678d5beea735aeb12f8bb8833ea873a5fa58e116f76d816bde8f35eea49fd4b8a2be16718b7d58e79af661853bd23705ae5c3f6bdc723fad718d7d59c41df4419d2bd5c70ab7b86f0b5cf37eac7127fda4c615f5f51534faa15ff8741c7eba7b120b672c27bc14bed4146761634e3c0032101a6c71f21cbf034d3e4ce1d4a15421521fa53b1cdfb8174b52e38afa5ac42df6199a2b8f9610f788c40797f43b0c371e2569ae1fa16f6ee587d05c5c54d2dc3e42df5cf58fa1b999284873bd88beb9e91f4373e55192e63e11f8e6d27e86e6c6a324cdf523f4cdadfc109a8b8b4a9adb47e89babfe313437130569ae17d13737fd6368ae3c4ad2dc27027cb3e95f2c1c84150d24d90203f917ff03772e4da341a9f53bee522fa34848fc7fd83e119d04153ce82e4b71373dbf3b2bb5ab35d695de77c984eab21777d372e2ce48c3d536ee4aef76c940e9b28b74d373dd59d25d6de3aef45e972c942ebb78372ddf9d25d5d53aea4aef75c942c965299a9b9edb9d95d2d51ae94aaf0efacf7cf11cb6036cf356bf8417e09e4a81e94f26af54bcdc7800db0968c03ff8940516c05ff8e8f8dfce1993b360486d803fbcbb528908dd44f8b0f9495e4a3073757bf97880ba995637f3678c003e2ec57bae6f2177c79d8b48c7ed5fe4d67d7115b3e7fe157277dcb98875dc3e056ebd1757b11dee4f0177c7858b58c7ed5fe0d67d7315dbe3fe1570f7dcb988f472fbeb6d738bc84a7077aff1b870cc1eb9ad1655b9937dd6b993fd6b5c127d5471b30f7ddbf4b90f0026ff9ea2f41f101908e03ecd9a8890e917c29a2c7b08a7f5a542478e4e8009371de331d0047249b3031f0887f6c29b451c65e09ab2e7efa644aedb8d59572efedd4ae477df90edc2ed879b5279b8ddce77e5f2dfad54befb3659172ebe6e4a72baddcc75e5f2ef5642aefb0659172efe6e4af2bbddcccee45e73c0b77b6241952bb638b86fca7773f9e9aa24d7f5c6ac0b37be2ea58d23ebf7c6264ef50310d2f52af26fddda1b609f123475b1323cd2ee8975ae1e6c788f70d071e64f844575c52d253288bd2155ef6494a06f74ed0fce0a470a1d8464da20983129315e6d20f7862e5d33ae80d1ca5bf031334f1747d74249042b3732db3702eab9f3b338886b6b83cf6b8b1df8b55cfd6fbbc6d76785c9d41d635bb85e2c450b67d739e671a032b1402e5d29359f28334f13e5f666be91926c38549ca309a6d84db9ce4713efea1dcd16359af4b2319a58a8422e1b630fda536c5be4f2c648267bb0a731dd7fc2783895ee0ebaa3f41d4c624355619885606699757d301ff70857dccf1768567680111bcc4c6b4e5a0eb97580bb58f7d40e476935066657821654491516b9b908e895d2ab5195bf01b49955c64ae447d886deb536e7531f728aa9dd3b036eccafeec6713012a7514409cc053fa56e4965eb610a6c9c3e3687070fe5deb5a4361d1d02cc2ec7816249d9544b63c36e3ba0e6e942a7380810dd5fd87124f08d18eb660c73cad6ca10e4b7145eff4c611771e222427e20514b4f5cb94e0cabf7ee3967bd4be3e53baabc029cae6f38a65e04bd9ee8caecf26a7649b0e109e984a487d5b1c5419ace2f7081d61e15f629bde9e6b883303ae029ec2296cd231098dabe5da258c3d05a2000037b46a9220562c7262c1dc6ea3bb32efc19797a7ad5b2d6aed6a24bee6c75ef88a3eb6505e04404d6bcd01c70333fb742ad4647807443f025a245c0f940ae940b39a6e39ec0711ecaea187a9d52131ef16f7e76106f0e45fe435b8833b1006dffa463667359a8229b73778b3cfed9df9772a96f021b1ee417d7a2a9e648966763a00d2ef6c8e91b944ceb65a54231869a9a30933e747708f48bbf43c37018c796d0cae35dde966e8b9cfa8b1ce659e7f15e2258b1f9d20bc91a99d7f1a10945bac24ebe4e723fc82fc5c143384ba096f9301f4a196819f4a7f5ced6224764aea5edd0b33e2fd315cd867114729a41575abc579fb6bc6c42cdfa8493abfa4c5cb6b4fa9efaaad5fe597a20ac3938ab82f4f1ec9b5333603d723540889f09c00cf1c2ae0d80663e5ef8a45f744a8207ee50533be9968894c8a8728471b02ce5814071fdbf942e05eca5ddd303f8a86fcdc0319d64ad2a3a52829c25b151782bdeade890081fe6210dcb30ec60ecb37131a921e65f2e2a369ffe93ac3216b64d76d8d937635db6223120556c10330664436a64251fb2490056f1923729dcdff0332eb4fcb1be8e93c468d0784e2b7d4482375b515453ae2a5cde5ea163478544183b95ebce1e27190adb146cebb03ce74253eb40bf2358da2bf8560caa36aaa63e514d1ab7d3f71ffc0856cc7e9e9cced9a792213dcd2258e59cad7da036f38a7e326db64bdac1c882dcdd4fcdd35ba655c152845ae370b932a30cadfaa55891c2c50820ac193f1610120619bb061074431f13c541bc4847ce6669cd15eae17e2c381ce1907dad38d7a052b37afbac6c2046b1e24c3f6771961aa8fa520bae3b4c402a161e788c8b46f9b9356bda3b1388285f22bd97397a97e7c91d2f81d5cee18433172b4850b0367383ada87b2ee1a31aa2120724915949f0b4d71a33648542b77054bee3fd8ef2f1e7f39d93fbbafaaf6b0ca562a98e574dc175fbc7958173fbbf8286008c1ad55442bb1c7c069dd0e80d04e8a834e020a2cd34f194af2eb81c7acbe7dd48393bfa9a746fc4aebacede298eab86bc0eafedeb7480b3e3b4f190abf58347821f45dbe6baa81d6814f202eeec3adec1aff11510d303510528a5b07d5668ad50ff252dc64d2bec11a34ea0268ff0687638e4c253ca300ac5268875bda20505d32e38884d471e9a1da2311f1d2e6ddfb6efb5ffd8e3b10b565d014948438585276b27c5696bc24203e3361a60a217d20865885efd6aae38a697fb16284ab1d146290f48165f748e1fe2f3013de459f6922a60f17be48ea2ba6c89ea4a6c482a8e4c10d200447e748d929f2783bc94cc1e8e6ae1fb48ed6bea08966ea12f3b1a8deacba713b694001e4beaf399def92bcab0a9e034a02f140d6e2869fc243679377faadef54222a0b27df86ca20f26d19863893fa7ec0423ef4061b95d88a00b05c49602b007023d0d4cc6480a9d0332a7a585d5dea7c7e9e1ed15eaeff11fc39a85ae195e9160858d58d010270e5f84aafbc4abf3472af633e1d823746a5f5f3243ef5950f7906a747ed63a7e987e53a0a1909a1e98be0f46fe133babc47c2ce1ebb7e97e1bb70164eacb7824540bda92842bacad064f9716de449d7db9b9c216b676ee6a9324f211dea7f13c834d60cee53880e3b0a1ae11141ffecbc71c2560a7f8b565111e249a6893ec997c06f0fa1e00455fd4384c862e8c00db7acfa661acd92e5404e29a912a2b6bb8c68f65333c74c04a22406922ec8b2d71568dabc076619ed089145cf688d8ba4e2957412b1f2d7ec36d20a2b3927be3d95f9f95d1745c791b5a6c60a2d21c968b68a33b64c1c44cc7d8d1693150684886f633fdff9312276ac83093e2fc2202a22e836fbca6075ab098a895cf36da9218499c0cdf599baea6f3c972f005198eeb3a443dd933b0deae9157102e7170ed23b1dd588e64ab8d042b82ed106c1ca6dfa9ca4a4c89f4d27168164cd2ddc296c9c8f2d6193b6128acc2d2b8991d3e82d20c2f2cb66685036d8b84432f3092768b140888ab0148cde33178c3c18711eb4a3089c69090eef68f844a2bde27ae7bd98a0eb907c36564fd3ea0d5a4943a8e05c1721024964c3077a0e29f0d11fa50cb1e828c71ece61e502548369cf0a9f7e3991dedbe31d1523d2dfbc8f6bd92a140e6cee204484074c36c44d51f7f62f3a537439ac69ab3e4a8eb2f90c1559eeceaa91ad91b316db973d36839638fb513d642507fc79abaf08a9d0545dd485d54908bafd51f0ea28280ad93f6dfc1da1408555ed0ac3845f62f8e7c3d77c082983cb7a0bcdb812b71beb10873c4ff8394eca5046a06ab3b299569f79883a269afbdb4da0d9a21916472b53d0af5b26b8b19abc63816865fb92fc475f948eefb9eb4d0337bb9bb69cd4120d4b45edb730b12d42bae3e07865a3e6bd8f654160bc44afb5e73edf3743dbe955f1b668d198d374a0f37c713a7c87e291e47b0737bde6d04cadb2263d9af6d0cbee222e4d2517521a11747ff54b159b0412ba1ae88c1a0717384fd5355e3f5cffefaa2695a3dbbf3c4d009fb4616e89da7572f365345d6dba0d03c6309d8f624f169323fb99710db504caefd649ab96922677fc1e4f36836df6ab61a647bf4448b2315d269c18536de6aea9f9b63efd14f035bc59580f1c634ff828eb04626014692266c6b83d1288e62200d249180715a32507e43faa6091c36afbe24f07c5195379039814778fd385c21d3b71b361b6e45c653a7be166f14658834ed719ea2eb28bbeddccec7f1f865a9faa4516546c0ba39fd4cc42c386c59b05295427b83d71d1ebccb923058625d48003aeaf1e938811ff195d1a7c7e63aada05f1e05bc0e7af5e066d72ff27b1c6688a955e053c271d2c2afb714de6f4c9735a1a6f3b9e76443964c0c6af2814df65625cc18bb9685f147c3f7119937791ca711b99bb480ced5eca8a50006a3d8aa40680a42c44f45ff519b5abe1a7b0de27b2360def7b2ee800fa2fa70d378a6daf683c9cc8759633005f745a73080b2a088be2e16b2c705b4dbd443d0aff578cc8cefbfe82e142b80a2ff724b0462cb8ac4a3db6ccca0a2bfae6731c8e417ba02b8679a676c1f71c4e81a50f70b09268dbfa8f80d245b819e50173a24ae376e4223aeefa2989b5e4de3e7bbe964580d915a5aa23f95a2572b64aea33c79a31f77c1f93cb3c2a522ac1271287ef8f55d95410cedc8eee0dd09f54e0bb95d7615abb055cbb3735c6c4d82009e87c0e033669346626ad899da0bc70282e00a73aa81620e5bd02e94a40784d3df2d2e06048623cb36174297079d6969b97986e13cbd15357fa43e83580a8289823e64f70646325d3ffa949481630d113e1290f496d732eb37aeb9029f51c8ccd0055e11c4e8f8f92fbeb7d1d38045d10a6017912af75bd6cca7197f8d9244a894b6b742adb960419d822a71afcee3de3c4d8f2b60ee23d40395588dfa76c5a14aa027abc7c314ab490c62ef7793d6a5ee7ee83d3d137ff372b22e804b603d6d21bb825eb8055cb9200b43745515d865096b5624fb1323bc147bedb5b316f52603fbfa526daafdf57f7a90e53a00451d080d89d1e9fcfed4fb9f524065b051d283c63b7cd2ced3b15cd5cf680b942aa33f6e95e09e71ca5b4526f3301f13e07c21f09654adf4fa0dc59fa7775ffc77c46cb7daa1ee2ddce552b13cc39354d8a20493604e2c725e2530a6f92c9429538155a15c3f7a8154c0f93c78edc284cc4db38f096c971507869b4cb47f73e216ec0727f0f2481ae1bdb5611216c3f698a0dd9c02f8df62d5d0136ca7355d2de05dec7449d7c32dc6607b70a7814b6d9c0a1fc961625ce7a73c130536e6dda18a96a9e441fcb12ba0f08e6e4cf20653beee52489f1cddd04eb2ec3fb6400fa0e1f8b3740f5e6a217113e15bc752971db673f544ef5ab5b7192c1cf640e0b6ffb76bcde1c224f666232019c435c9f956bfc52d9cdb533152a10ed6d2894fab547e85509fa4ef0d6e4e1132a1393631bd81651b0f3b713f3e3c590333957a43ea62739df4eb5f77860b996e12672c6135136c84ed00b1602865cf49e08625fffb97390a4789a0efe8eec87cf6e19ddd419dc564839039107d8759e2b6c51e2f6f071300f4846fe8cdc5b945b9c816e3ac71fe9d86120d0ddecdfb391a6bb3faa91cb67cd9c7b7f354a2d0bd5812c9e37ba7a2ef7c258b85633c689e181e94bf07cdf0b7b4b9b314c73e8d3fffa5c4716c3ef7e32681499e68ebae69d21ebb2eda9f49c32f06f5aabf199599fb6ece47d2843f2d3f703899f0ddb03f3acef4832d70e82d397903070bbc454c33e008f8e55e47280af635ad10d7a4c346645339f867cf68049c27f70e7e63638a1b1115f695ea485eabcdeb1a3c0a1a30ff184f7dc82d4e7f354006e7e6f72239e076b3250eb41672d8e4a77e53bf4970dd0224f2ccd7a4342602f21173c57ffb4812e6efb8989b5dcbb6658004a6dd8dc62a8cc194f47b6bd7373098d9a674ab4662a33398f8b23461a5f3f3ec61e192dc44a19c357963be47b2e55092a9de1bbd973a1168585df8f21d6fefcecf2a8228232d9fbe810eabd1de3ece82382cb4c4447b8be740d0c4c5d76a475ee2c60eb3695f3f9ec5b139978c40b236ee337beb1a1064d748c3819245825c4d92ae71dfd68ad1c2f6b23ecc64ebb3c428e3b6fcd55c0daecb2bfdc5e650c0a3046dc38af2d340e8b056264dc6f70cf57b25d813fdd55c91e013c2646e60f872ec1c65447938626e02d44e43b19dc836c7ab15e086c3df2389508aa77524836ab4774468ca79bbee5c3adb641414f5145aa0da84869c51e8adee5205441067e795b5d4598145708b4a2f706855d652c55ed3834c9214c55ba30fd828bcf7041b8303b3010db02cf868c0d6110fd24809c1e3f5e95285ff5569993c2bcde9f2908ae1a530d75a629de29b58502afd9ee257e2cd38f9d6c4d4a66e5a37a1052061ff308404c702727eefc315f8d33811021c432283685e720e15cff3d864e46c2cc0f2626110b878fd68712952350b258d83241942cfc76093edd026f8e4855750d467f748d58b632bb1974d30a3b0f2a695350fa7d318487224ac25c6072c2f044db7451225315a8272465250cdac99d49d16b8554842b040a379baecbc147d4ee260def8edb3737430318819107a13c1e6fb3a475696e067238cd444c0a37acd66998a9154f743c01dc72489ada4ef0b21e44d78a22bab54fe78add6210bee3ae4c3fd6588c526a2bfaff3bd3c00fe10f89355514b6d466f510fd96e2a99c4288f97288ecb6190aadb442e6029ed12c059c8225825a0694c0ca99362481e1cd8d7759c82668b812f8adc6fdc8b0a79391e9947a7ac34b69168081eb0861b6cffcf3296bad9d92b5c1b7c0c878aa2bbce345d266862721dc9d100242de1085517f005ad8853ac25972e14f398db0d22ccf3191ef649cce8784a883f04dbddddb78a3843794773847dd0a2cb626b4f5c1b4cde6222e11effa7cb8027b1be1375234ef988481accba0e4842766eebe8dfea13a6c3529dd1c6dfa4f834f18e481ad655406fa17182cff0c3555a3c43d47ea44361e3aded747195769456bc0644e87d899af167a226d62de5d3fe77ee976be14ee415047296d781cd55eba2236737bc7527fe25c8a08d9a48804f71eb3d3b9a4e413e4be8ae7fa7d9918952f74e62d69dbed557b54f599147d5850e3a5de977735a6c0a7aa7717a7d6cddb1d1efba6bcc9637657f61664cf3c6484d24b116f32d9062d821160eda0c0f2a2780ff7f5a19df4cb5606448eeb6f3966e0fe9df6957ba8bbef64d4ae9aa13dc2eb12db249a72a75491744df3e4ec38701249ba432d251cd773c89211d315fe52b2f3b20ee73825ea86cfb1152c65aad71ac0d9d844dfa4cb3eaadb53382a20cd192589eb31039434bbf2ee097f726746359250308830389744ff2bff1ae4a66260efa52c8cafa322d6ebaa07c3eee9e957a5dcaea3f9defd4b77181013f4da2f53ba17f5e33265d23319545daebb1718a25cb4a34621e738b5be29690e77aa4a77c9fe722da84ca8f44115da545384bdb9bc29a5baf9a6eb6b201c399d80a06486c7bbe48d110fc1d2bfa8c313827a02fb2169a433b1c8b732d438011ce6d41381cf257f59b9c951244c3a564647687160c7321ca482e4d2523c8158a72caec20687e1c2f3c476b62934a3f242f9695690319ff170b0f0d109900f679f64c775eddcbfab0a0d4b4a396adc0af6627e303eacd21d472989a2a371f7b6e1bf3288c60bca8f803def8372f9feda8d12737db89328c3e55fcdadec2aca9a7b7df9f1006d596dcf20cce19ba90471be63c475aea7c7b6450b132717cd1e307689ffdbe0aaf4cce64c4d8ed33910b4291278f786e900b99b20dec677d1500546f795af9e323f3b215d2c720dce9f128c53c95fa26284b732b58814f8363331a81f2234e6dc1a2140cac9994356617e2d09463a1314faf3dd047bcef89eff32e4e7ca1a66bd4fbb8ea394813be69323bfeacb250466a50db12ae52d7057dc218f17cad460509d0d90f6646febc660647caab91dc8e0da4f74483ef17636adc80cd690414ec32748cbd5f8ebd836890464c16a13fb55bb6f5002638400e165a7f8f4568e355d634e404cfa6342b8baeb018f92b4cd38211a77b8e75ccd026e05e5751d4abcd32fd2a7b3984d70b497c9dfe4631fb39974309a69999d2513d0dcb38b4098aff071697af0b178bf00c54e875683f01dceeecd34fa7c17f59988de0403c571f48c17c6eeedc3f8e0ee2b9daef536af10b6f9e77044b38c37ce3f5ce961ab5ac855d24c55f4d97f0a4a04298bdca8696171e41f752cbe05f3f570fa03f9f1f54c22977b5d539e55ac00652cfa588bf1decc291e2b207f8b417e9bd035280f3b94481ba5e5f0ac8b5ac1d08a355cf2212e27ada6265817f1452ac3c68ba50302ab2e535407923fb1fd4b084503ec5ce51c79a8de83496e66c1ebc53e20581d7146f4bb4d457eb834719ee1fd7baa5c86f27aa47c0c5f53b84aa237de3c5add605a8d0bfd75c06d912ce00f2ff3e5c37453aac32d698960b3fd8354ade19e1492590189b5a2f893521555ef8aca20742e5c0dc1a17a2a9e06ab408334c1baa5c236f32f883d5c302410cc0f384895042ab3bc64b256f99c6227c31a668588fae700fad6604f7da14cb60dfe1bf872a87496835088040957951055a96a0ae85848b0ccc305ea38e607f0be185f0e5231e3ba70c16266055eb378583a8839ef5aba1d5708c224f4c111fe3badbd6e365b3c513d0e7cb06097376703188541f6846e05c77351ae5459c6d9c81e4d0c8d4a89b7e3887e5f4be7404d05748130f1fbd5d0696365e1479bcd1e6689c78e27d7d8613d0b90208577ffc9c80efeac2b3bfeec4cd01dc14146c4c206ec4e55b760be269b2620d09d0b2127189ad67e900d85ac0edf4f996b079ffac59aff6cabc5c46e0859f988a2d33d20987345d7e039edc45345d319e4e1649b2bf07f0dc2429311ce11450eadef4e6a9b609f55abbb61d2369e803edeb51cc187a0b6e7a133d685affb4af47031733d4c15436c0a97d9d93a091ec8b37ea53e40b36fecb111cda04f278699dbdf14fd924d2e19cd5e15082730bd90e243bae178117a304fe185e69c6762d7fc04c05dbcb8826f36e68bb96e8b647fd77f008184b5af2ab96ff987d5f92813b21b3ef665a084cdee8dbe4b55d3f94daad2d2b5a8249b4c0ce7c1d90d7999a73ed3a22c73f6d4bcd60d00792ed2f1343e23bc482c32b9810d0ad23a01b4ba247e656599fd647825589495e79311975d0f80101e2218b5a3559b15703fb0b070b250c6cfcd453b5234f9c7751914cc39e7c7b61323475e8d51e02af445adea664ce9648ff0ca2a5b8cc9dacec8bd30b5801df46b87fd2bd164e2affd615bba041db62a27c81cacdcc5a4b4600722c840d5a6255de76b89c959d051006c8f840349d2e8ba3533def0782d95f86d255c74cff3a39c114eb6dfd1585a221b2585944a37055a954e7ae0ab2e5c4c3f3c371eb23bc31dd1b699c9b47d665abd063becaf631c6ad19b0955c9ed7ba8f6fb4b5b46f2a142b55c518eeea74ff499021c3669a4eefb8adaf28686b2009607daf64c9f55490a7ae71fc3195d091528d63d66d9eecfa5e74b83412724dbcf135aa0d73c3fb00e40a7e19120739dd5cdc7e00b5feb852b711c89527cc7ec30e51f8715d164320127ede622c24297c2bf36405b02bc00523952d305a385a742d0c3bcabc622da1b207bca92cde39621458f6029744f531b0c5d534914997f384d3b2e737f36178dbb8d4d851973dbc1bf5aad1a35bf80eecec8dd73a7efd3bf4e39a844d119e1620e496ea4d40f54fe7489578dc78c7621915561614958d4558f1a3e2caf73f37f9953f3d3bcc0699fb5584c54512b0b21f2be2785ff8db56a1d9e71abb860821f4c28af566a3616e413b2f80c128969cc4e674ef6d9eeb239c994685510f6da0fb08aa8258baeb1695db61a38d8c4df8743a572babd81e557af95f893d340ab0aa85f8b561a480438715875847c08d066b7ec1717f4048b8261656f8646c6db243f832cf138536b6477d7c40aa94f7e2ca9b13e0749062840a8cedbb27055cd08cc7abee805552e528c2d0cf0c06708972b1b8af8984195bf5d300db86f2cf06366e4e86adcc24581d7378447fcc3adde7c94a0e4bc1ef2121155b45abc54521e7a80bfba6fd2b383e104ac2a8e00e7c77090093db23c58778a337f283c8cd29be26d8948f0467a2dcc8414fad50ca5813215e1a22bb2974e8671a3ee26549814ad764d8005943af1cdf7cb0a4bbb1fd181d9cb02ebfc6d852e40d613d10540e399e6eb8fabefe360c3f066c1d317c216e1a5b7b6e7a4cd0079990b6b5085c24739c73cc7c8c3ebee84dca721983d99705d3aee6329fb68bc40cc1678f29260b142865c2b4b65fd08397521400e9ab0f0c641b29dc6a92816983160f33be1a2175f4282c032dd785ac19eec504d9d82045c0df948169d916092d4c6588fec2e019817d88cdd3d221aa4b4e8586792686195be98bb86756281a94077b0c946dead6c93456ac19209f57c253fc4bb937c093baa11cb6690505807d8e679cfe4fb4e0b6af15f01b4a62fd71ae2d71ed504a70691a9b4ba0c3fe41d82689c8d96d0e39d08e34117a7c7af5c80f60081f48c6b3d79f3ab1336a4adf4378494bb7e98e034d1994962d767eef4d1990366811d0cf87b21f5ae4569e987a0bd3bd81e46296100c33b6f56265c6b75759918cbc62cec296e0fa7f3f6580b4b4003130a1cde82e3ca215e9629ec35dca4280ffe0e6bc242bfb6cb6401f964ecf65f44039f4692a19f014977d166420abafcd36a527871dcabfbb8af9bef7ed173785b3a97e89d63c99b15d32e8a1a17b71b399153157a8888510551ef5178f67829c3d70899980921266aeee3f84825dca0ddf82dfe74698cb1099fb777ac64cc06b28109a1dbc6f1ef0d25b2956e819b68d1f20eb695866299cde7d14c64e763a57c5582bfdee9477827113a5c4f05a8ecb7895698dcba0884b42d444ee0d65f67e1f0aeebfb9b1020996a74554c4b82c4560d796d911f03a377b243c0905f459178fd8d664b3d37fdedd3f0c4e67e1ff9b65510e8fa151b6225f595133fda073ccbbb03f1f315ff0898f252b00e9a09ce44573451e1f81f39040ee48a516ae053ebb02e5ed2d3cc68f830cc0c00f90842a8056c82cef6622aa67b17e1b02a1bb00267ff1a415397da089114a524b6ce51a3c5a6e83e13b81c24966517a674924ab5c0f88fa3e7835d3a5a5f5804d90e18ce045e38255b86074f09847e7e3f70557a61704f3fc555e2e09f333b09fbe57860281b28c9c792610ebfb47868e5d1b915fec686a54f64508647f38fa58ccf9001c8b2b33174d6151353b2db6e2f3b5e915cacc6bfa0fa0036f04dbd34a81a55991dbe390d166de90beb54bf76f1d2c7df5b9233650dde5d5a188f5a68588b25348928f39819477d719831c25e6e725b8e6d69aaf6c8eec921bf3f5dc129948380a33257d047a01e43c0b06cd1daa26a50fe295ebf5a2d85d20e3936c4b1519a1bf567cbec306a940d5e0160567c1c692b92384c6220a9027c5a574e9cfd494be4b56aef2bd9bb8cd95707a824109bce382e791a33bf0368c9652c82656e446e08fdc36bae9d1ec5da290b64577558dace3d00913c67c9f18c9f14240d92b3d4c03dcc5063ee1d8a073550f5754b62155cf23ceeaf217340817d4bf0e422485e6d0966d3dbdd1292075db8f74b080d982dbd38eff5fba5df93826861a8266af2709ccdd664ee147bcf0711990f7ee40a0900f36ee800f1a666a8507d1db43d53a6a34986ca8b873eab70e5c43f35ec334fba49c93f70ef8fe3b825d71bbd766beac71d8c2b8c34e1b6c9d4f6be1cbeab1b005d47be2cfa5e6bd5d0617a8778d6809cddca1126aeb656038d5aa9f5e35ab73ebfa57b96fa4591d1b1a9b13d112b6c3182f928db5bfa8c20faae8d7867e06527fd110aa746e627be0648633f41bf6d6bbdc6d70713419e1d84ad6ec46c23b48ca937d95465d3959985c8f31ce60a66ba80fa22887dd3c83f061d8b65df40ea2ad88a9c144c498d43192e939280e2d01be9036735123030fa3c917bac20d5001dde222d298d2a65fd7be77b58a378bf073874d79da38bca4588b3a203f12f2b420f72b687ecfcd11c271c4987d884c673c98af16b63c3cce0145b04753caa94868bf16d63c1485945fe2a8be18808d9f7a3e1093a6ed422697c7c873b238e001b3b3b12366b1bd6d9645d804d5577fb3c1df505d0216ef8aab38a30e23da5bd1027a0f2dffc1dc940ca4f0c4fcca32edba2cd9fada53f7e71ce96c822fa42978fee004430f89fed9d4f7eed91beb7a96929059002cce528fa17f5883f4e5f387c1b6160da79ac12081d16afc7c6234175951b23320eb093ef6b425c8bd046f31a712dc9fe94b9e7958600d0665c89d7b1113f6cc49308ff182a435c0ae0b08504222a155c6d44ad4bba0d2ac53625c4df9d47d39d948cfc9f0b40df2c804f8944a9bb7d67569193cace255727f439f00be79e1da1118bc53928ce1163bb3b4d9aadf173ceb7ebdfe70ea824a2b84ae0bc8d82cc53b37a688a89121f9473e94ac9bcd06230264b5b67778aa594b120ef5bb6503de87c79a3e944a8845759442097bb276357bce05725c79ed4aa7a4d0c60716c2e8bae97039c1f6bf9b8fac99fe5025023e43261dc710830d557f54a0761f10e0cf28beff9f98d710f904915fbd8e8d416e4889fae4efb8cc5b3dc6f8f8f68349e0fa88560101a1b34460ba75e524538945f88804a1af7d939cbddb643a1c0e1ef5b8c3fc4d5fa7b23ffb839206d05bba6f4b82644b4d7ad060eeb94b2a5dff4ebd50a82b28486e2182245551b426b70433b39d4c044b024d90fb23cfda439c388c24c28302d3335787a50d1fd7a8349f19fc176bba0e7dbb9ad7410ad391155be78cb1b03dbb19eace122b922adab998b17f823deb22a0dcc9b63819ce90f16ee379349173b64eac37e469f940551a8f0d916114b1fc4219be428c1cb2be9903eb9420230e7869d13e66ed4b76996950f9e329ec4e229f687d2b90b0fdaf61eaceee90e81e9fedb48634567e985e670c811496cdce92386e6ae1e011897a8c0905a29f616f4702139b516e0fb7dbc8b7e0cfe2031712754657212bb6cf4ec32a343d469736616cdfe2c0687c2fd6b0d4a6566eca7e144d89d175adfc168b57211c28de62de3a6a9b9edcf6ba6469d9ae1b445c101d0f60649cdadf9c096a782539c5bd3b5c69e89bd094618d42ae97e151937d2a58ffeda59e68576fee1ae0c775b1e9667df7c20cef9e771f6de1c6306aff2bb4586d910a49c3839dfcfd8217efda48e21151190de51939f6031ab6a56e7b6ce517260810d1bba3156d1a4475ce75d42c530be82d775f2b69a987f34ebc585343fe6399ac5397d2fd24ce7251b45b8b434a787e3a245d8667a15fe80513d38d9aae9237158a316dcfb6dde2c88035d7468fa1b5daab0c2fde98b3423ef6c757e1fd6019f756625093ed816bdfe0c5ac4c1041db289c7ee242841d00bfa705de2909026cd3632361421c8fd8236ad78219b26ae5465f278cad1f41c58cf084db96071a427dd2e1d176e50f4f2de945c29912ccbf1177091da5b014958516005ce783f43a4235ab6454e49f69095e8b604792843cbbb43cf748bb6f7ccb02d0fab323c3444586d7d8244ef147164c181513fc5e3215bf149d5df19430f24f72c9459a9dc58459da8dbae8b7eada65bef05ecc6114b3f9efbd8fb8b2577db1615931e8e0357a2b2542a0facf77618afdffb5f1932a450279382f8009f59c970521a335b796b26ea5631f19e9c9c5369c407a4ae07119ffe84c848104c4080d5f56263004e4778358e56659a2a6f11b527b59d0a2893e0b37fac5a24d89b80e1bf69a988ced399450295cc9504cc49713e9de3e5cab7cf0b47b311ce42543cd7c23820beef07bd513a4c4aea0a477a1ea340452b07e5bb72c504d8b807d3c7bfefbe6ec5da655f556a90a4db6a5de4882cff6973cc7e1e09402a323258ea9e23722e950f545a2cbd218829877c486ca2055a6404fcb3754b7021f9b0accf4ed9432687708d89b53adcaad1df2321f1353e930bbc34de7ac33aaf9a5be013eef1e689abe03790f5498cc94026094f6492f43a6eeb22b463d7c0db9147296400c016fad09304e97ab55d70f42a16c1fd6d78d3493ad6c667ab1c5f6c76f817d57e2a9fbb5c26c5365d27e31646fe320baac8ca8c125b334c819c12c26c9944c5930ec4582ca03e483597e21e664af884334c93dab97e854085bab5caf485ecdf6fed8841b7f1b0b1f9fd382d07589538f18a28ea34a251133c6d96ef09690ada404c5510e3177a78fc86e908c2f1310563de6b8f76982d3f0fc2165726dce8ecf3578f3c9fc6c19273e80e1c22b9a848e7eb3529590028a148f869caac6217a704f5cc93017a265da6a2225c4f7df30ffad73bc131c7e7a338b4ff3557fff8123e060ead6dee82cd71e41874295466457dffcb0fdee105a4eab0fb1a8d9f0289ea3a2359ab410aae86139ad09054c0970073abff142a7cecb7fd0bae4a0cf88d4ef0cd1047df3163383585cf8f541c8c6787cd930af7a9c27b62200eaacd544050b3442418988dc152933400b0c6c48b200b5af98e0859c99add05611e76d8a2d3dc92561dc8ae5b3d30a39d40fc4c27046063ea77f11a75ec3e1d0af41e4e8752e2c0f463d4d01bd46a767659db1eb6eb11b8664cca716447933e461c8db78e4fa658d13cec909fabde76618f01b2a80f0e808b3d960e92e4f19437f01e663231d22f35bd0e2c8d97c3a0ec6148bbb1dc1517a21583611e7c661ff5a2395cee81b22f45d4442d448b3d6f016d797c31eeb383803fb02799e9502bbce9d42a1adf748cb0c7fb22526025f66fb466e5da7a22df05025425066bddabc9f8c87661b79b7749479d245fe352658f6be10c9c80079a5937f92934dfbaca9609b3b719b4448ba71b91c6100be3a8f6584552e1d1931454c37830175aa024045e8baf8cf0fcc71868056d8e70ae557ca4cb6ddb0c84eeb46f284cec2dca2c48afbbaa1836b886855067f0f7535ce297681b35ec04592b2eae119cdba7f1f4cdc97e3c03082164f7fd4c783575942ef8d51d1ded8748123665cff1c9f2879acf6511421fc61810eb90924bd5042605b1040f3b3f746063768fa354c02f7c62f3a6fcf09d37f3aea7729782eff1b9eb229fd3a6eb31cde92130ebeaf658ad7c725c12587c21d3f0561d8b34ac96f58c1c1e050be61d8f705e2242bf65eb419db38c5eeb363889f6dca355ab2d1ec3b9d10370b79396b8ffe39358bd250d42856694de8860d3aebe104736b08c45fe5c346094132532d4569671d43b4a2892553e163e807bcc455a644a05bde4893f8ab0a5ec946c54e83bcf54461e197af5749f70128ddc8008af5fef1d0f5eb685b8ac6d6f5fe2b11a09ac7cea92d8775032a44378724aa5115e6aa1be28c316a8364f9e3b7aef893055464f628056ed5a3992a705992c5cbc29e7226670536d85f6dcb9503c44471ba157ac073528d300aa300abbf37b1c7a51dfd118561837b17f54d53f83f9c2d378a3303c58bb2a9dd5588e491588f89eda81895d9a11112c6255868fce3a48321ab99fb0cae841f8c4ae9b9221965b0ed8f5ae0e5e806c827826fa0b399833ac1895c7931a7c2a27c64155ba4545612f4665a255a176ab23283f0c75588baea21ffefce317200894a2a9f7cb769e8078999782203bcb12d703dd509ae70cd572f7da41df898330db47a00052550a5067a6769de100fbb15d68d04c0ddeac0221776f8f08385e82b5d73c0800d37e2be9a88816dd0cb2a4e34a283c525b743b8f1e07e17a54bf31fecf91cc0b7a1a8d873fb9b34b65ab03cc33d097a2af9a49ed08a732693e0121f30cd0c47b3e1c25aed0ffd3df7f6f96e00a9852f3a1075462b62e37d50f1d738ce9203d18c56ec93838038a1259638c1fc83052267e968a19680d29418479b71dcee22e37bdcbb04b4fe81f1f6e969a525358f2aec6e08725131711b8c20398b5db178441b53e311e85e317c1acc2271b2e93434a28dc9960d13d9e7d2d48692bdd748d0afcabb3f49a0bbdf5c6e3b506fa287b6ae208038c273d605f3318bb669b4dc11163702042dd10d6c5381275c96ed9084bf0040081a595f9fca181d81c18079b592ed2ee74ef0e7a3840687de7a7ac28644c57016c891c3e9419bb34d7e8e11513e6a9abed81a055c93f9528f935c996090b926e961858875cee974e7a5230e198ae29f7ccbe479160d77ebee07d68a14e341e68b79cdb3ad5626cbaa4bce02cfd09db4128549ddc3e0274c124f3c076a819b6b3c53ce40ba8ecada36dceedc4fdc79268d1c84af341518e3837812d2847c73ee639a7835ef39b73834c4764b85487a36d659da5b72c0b3974112049d8f709868dc9a861eb88c891b10511695cedf2f4a6e0c52c16d3a8b94692f46f5d01d364e7deb0a885171280b4dffa5d949ccd0398eb5b97e769ccd0c81e39bcdc3c0d899e4686da5552af92b6260a1186ba44a2b399d6fd3e658d84d9f647225c698f801c6432f0384cd386e0b2ec3a77545cdf4c00300514e03ccbb70a48f29c785c3d625f168e59824f1d8ad6cd66433967ee6c9b5760b326fba965a37749b8dd1d2038b915418b42224c009466b65b5be0b3623464ba7a8becd879f042297c4091c851f89c041f06648c39873abca4008fb593e95bda183cf5750e212c58fc2c20269eb51d768660d62f85de7e565b5cabf69872783f461289221883b9ac1751b7c52b8d5ca1987f251187af9835a4ecdcc9d4f7271383b7831993c58498c0252d0e247dbb89933fb66ef10f365656e09d957aa68ef353aee13bbbb56dc7cdd2efe1f4d1b7bd314263060bc2cf5206be70d78c10d2bc4b4c40d267b491069eec1258584264cc07666596bae54998c514ec5deb7745aa463d4db0580613726adc625efdd74c7c02cf3e62e23fda716f30aca12746fe4b5917dbc963a90bbe32ec315adb441d171dfe77029a2f84b1b6df57893c343505e1eb4035d374ab8119eaba0aa999d5431fc2526d639b9053c4e7615a0fd8c06a4b2eed5498bc4cc4a999a05759395219eead76cc7a89bf3085f259e821b205b260085dbea13c0f676ae497f9cb3b5089d34484bc9ef4a6389be786029dd001ed0f1da73b9e4b33b826ed2424fd75199bc2741c414d207d49f343da2e4b157647c36ba1287a59be1cdc361dee0816f98530b51e2ee58382f98d64be642f2c38f221f083579258e45b6d1b3194bb35197a0fa64a6065ebd5f5fbe3c71632e4c6e47a1f6425b46ca82f3cded28316bf905a3acabf401dd8e52ca118a395c873511cd1f898bb26162c1ddcdfb0bebc7c2404b166cbdc4e4eb47d993694e41366e3166458df58496db947f56c63acfae4c8c026c085a7aac862f24662c89f24551a3629daa4623e0f7da3387758faebc7273fad94238b41e0c23c9ab7c55297d6a23f86946292b3d6d008150d8d373571558446b74d275f9c9e9213ac2df31157fcc3fe9139697479b301bbe5504043a2dfa78569c9f992e343903e267255dc84ae1eea5d76f603f45eb59b304adc50971c0346a5f1228f07a605b23d22f88a0c22c52b381e7a162901539f95b48bb33b77ae810c80b7654234629e65fc701eabc0008c883ab731eb1a4bd744fc3ef884f114eb1b187800c34ed39d2d7cf43574a148705328f7a0b1eb6a3e2bc36d0a2a024e5b123258a9e4debc647cd81bcae7d508e375d58ae4c16ab64ca789af121a539403cbaec795e741cd91987b6e7e5fb5f57c3ed7dc5905c87bf518b3efe7167ac3a5aa973ef8141046ebdb15b71adc997fbb4cbef47c34ba9b885e44511abd62c2c28490cb70c9db400cba6a3df567e2eb7fcdcf6f49aab687ccbb44c7dcfb4303a471f332c1c4ce99f5b28a4a6e852fa670ef315f5be37e9ffa552ecca754abcb2b684bcdc31832d388cdc2a85b5b8f16271ad115c25f351c4644e6e23b3401f883681319e583714af60f082b65745f3fbed514f2a6c9abacabb030fa2a9de65e11214fe43b14f9a6ecc0069ecd0e5a6bf7fa540503a2c50331fcc45b40cabdc18b67aa338e20b278bd84faaeb4ebd1c7a1b98f5a64def6861570c9d9ab7acd91c0938fd77da0dbd459fe47c0635cd258a0fa64b1a7a435523e2abde4c12b7eacd85fa657d4a9e4020a00fba6fb1cf9bc049c9f3c67e66a4e366405266b465620e6eb142648882e2f1ae1da7b7b0f2a883e1e914f5f9ebf0ee85a534550818df1f1ec8f917201dfbb8c5496f78a99a3fd2046c8c99fb8792a7dbd7b150ca1dbff532e337f80b839cf74b4b4094e053424bbb698ca0f5f7ce8eafcd86fd00e15c6d95bbe82457a0e6d5be277072805f7ea6491e80df3a2a5b029cdfc58dba99900205d7df021fa844dc4f09a187f8673f6c3e27642bdafd244f636e15c492c71fb080269e271ce6cdd9f43d324334bf459f9267e559dee7c04f2edc0c5931f54acbc8c467463cae4642c9177e02e995f43d6ee2dc304be581228d234174cf5c3876b09f2ead0d3854ce2cd0d3324c1f82feae884239308e2078827b51c2fba12cffe00e72f4d0ae40550173007bdedb2c97bc9661604efce17745d29b23c11a5a79001585c8572851a26138a74355e50f8afa5495131934e6f1045e03d50247ce5f85314ce5575fac8fe56d9aace41a277d534dd04a14029ba72e23748def3d775e73aafe6832e1b55277dc6ede32ff4fa042a275d459189d6b267478057c8bbe6877f75ce1d14b96f98f9d3b284524a1be867e36d15acde8cfa2248cb18514ce17452a0b242895d5a19b2412b1145e10be91e1b03154dc32ade067398c66ee6d61c570a0f511c6a37c8c1b124cb66517c2bfb57d5b5d6e9fe22623136698f8c9aff2c03db716f8cfee5ab1bdad754e2fa718d1cc77ed3e0ba31712943566cbacd10d0064285a263631311b6e5b92307d2e6d68831868ca9e0daadd674c2855147fb275cce80f56ba3a69f78f77c1155a1db44bbf955580f5d83732ac458eb3614a44b3bbe99fa1d755ffc96ba8b1e3e270cff2d3328ec7e58eb55badaff0e8ecc983697586a4ec024af10166011a85334cad261822f74871be8dd63687617a452f553dc0d3d334fe2827bbbd3c9334f303d24fa2f7f03fef870d9f6f2c8fe33e526c86f38893e24f51b8c50831ab87e3d0b255108d9ce5034abdfbc15610402939e971b1964aa2a55bda13518df86cca5c222c83293f6ec9abba5bf964b6ab28b732dd72cb9d082bb52b065e844a6d9770b8788cda1b5a416e81d875d577e4b34b0e6314ed815ff4646d1b914608217b4bb903d20bd80b260c1c565754cb5c5373c845d57fd96c66c48473caf10aeb76a43b4bc933baa4be28f1be6eb71e3d5e619d3bc2d519269565568f70825dc7d52bb051a9c3262d7b72625ae26e5fe80dd1455c378d60efdb807194528fe3c070721cb8f3816108ce49edf59c562296a10e0c4170e77dbac381e1ecba705679deb7fabe8fa794ed37b6cf239af186e8a1f66e2d93c2bb85e0b990e5dd6bbdb042623d94cc3c2685202ca993ef2416cb5bf2b0b0b12dc53365fb3bb7d70da84997d007b29940bca1cdd6a48bba734577067a166b0c816cb0a41096f4bd407c1d215b56477c0d31cad9372b87533c6250d9d711622c9f555fb739c43cded0c986b79069098b6d252c2eac90c431b4cd216a82a72f8d78bddbec1becd645af319c54f605b3bd7e61365893771566abb026d23599397c55b62e98ad8b5aefc39ab4cea3816049b6bd568f19bc560fafe3b8151291679853dc107ef730acb29b532ecbddf875e3c6d02689e288d74695eddba892332eb4dc386d54d5c0a06d863965b95194ae0ea4260fdc75323a23d5aaeba088dceafbbe55e7895df4791e1458bfef2baece70ae42fe2adb7005becf0a020f8237c8b60de7b42be6731c771e93d90334c9f238847bf7b0eb92eccaf2abc936c7bd098eedf3086493445288b703205b11b6832839e30ea2806c1c9d239577e6a5c451da75dc0a5cbda188ddb702c7cf1b8774f73c28dbb57c782c10b273945d440f6a8e93fb0aaa06e6cefa5ac62f25239654555595e04a09ae30e141d91e8730162b2f5f4a3d5e0faa0c513e850e2c7ba08250deb81f70ccf45c67f0a0eceb05753db8f1e9cb4c17f1f564135f4f3e5e66eec1ede5c16d7a5096c93ebdccb491f8bae4d196eb22fa10b2af2849d45088578cb2fd975317dd977d2d59feeb03292e219d4e887cdadd4db965379d598461c751295bca9eddddb37b76cf57334dd2b186c926ae91cc5d9c2acc77e365db8744cfd59a921d48f4b60f89f3bc7fdd9407c7d56ac808d6ab43baf18669e5452b5b2b4830ac1caf0475d7413a21e5409f03478be8ec118659a7ceece6bbc320ebd441a2f38a1c7f70efc61724120c0740a2a38e9edc98b0e5a76cd9c8f5e928bb65b7ac5367fe76cb6e39bbbb65b79cdd59b83c21f23929a594f4f678b4e3b670f29525913ca593d2d9d303138a4deea6f7711f21f26393d2c9fcd95c4459cb4666c91b2d93a7239d944e8e4a4ae927bed2ccee3cd5504abb95088668476509b4eb388e52caaa94d28ee328a51dd79dd28ef3bc77520b91f326ede8e4388ee57041b92c20cb0959dd373befe3ae7c2b10c4b202e7a42d0341eea147bfd5ddd98942942de33c0e4316c766b0582daebd781cc75d69b9e66439dd396e7acd8ac33d292541878e02ecd841b96edef873743de2f4581f3725d1fc749a50de39648593b5aacccd8b9469341a6d6825828ff32a104aa3b12c813b47023bcfb406b9c07af820ac317c103987ca185264daef72ca1a413282d40fc7cbb5d5c55a0b2fe71038abac449232042e052316ecdaf260e7695d61041624081c6da930d93ec171f756f5891bba9bdc9c93b65cdf78437333f7712cc915c91bacdf9d093008cd632578420c5f480383d03548a22e0a27c0b3a32dcbae1c2341b8120bdb8f21ecd720674792884f2880ac8267f8c62b59601b96850778b0f8c08e19108857d0f02a43c445a686d6930d2c2b8a846342005671c34a8c08be3038786072e846109280dafe017438dae13b0cc043d709717647cbb826c2b0ab9d0d39ec70b2ba8e84968ed0e33cd7f78f7aab03ec38411ad110c6d2004ea3d5d7aa9f43fd558d85dc1cedba16eb0590b37087113bca1e74a421831e4729d8b55ab2a893ab5515bf39942474b18a447a57ab861ef3de5fdd95491d3b76ec306187246a9a1d7657003aeed8d12c277571674957afcfc55dce56f4270a296565f8d17152269d3ababbafbb39cab27dc5227a9eca2035e58592d416476010a586d4726a0d5a7002db2d8a26a620c3f66551ac24a18be894b14cca728401c3abfd982f40b3d3713308149020b63924b96ece39e70bc0885fb7102919844c999a43d28902a0a012069d25332e90828acde7711cf7022fe2c73fa4824001092245490a96afe3388ee368903202e7ada05e7025fcda08a630463871ff388e3b0d5c134a45000304146d1b4a8868b59268555e2c229ebac0c22198c4b8c0a47085c213aa335b7cf41382ca690a8bcf2b02ea4c0c601d0a509cce54f970281061e3a1534a4c1a9aa59d4621ca129a2f2f462189690ec90f8d884211b739243f194c8a11eed7537ceba944a3d1a68c81f39a33cc9139963294553257540aa5233ca93d0162cef9a33bba44a3d196187386d83fa482400109926425183a4996beeb92563c4d48b0c2c5c041d168b427ac58f27d1c0394102919847c3d6565982529e8294aa9982f5cd77960ed880a0c9629caa4074c13345e54d674519a938231a87002898e718231de8a5bf530040698305870dd939e8f4af68509a289a59e37ca1dfa845212880873b30264a593154d7453e806e17c85af9924e76c969cab08cd52c9367e8bc502df1a77681d6c1d04bf4378168b6d1d56ae07ab8c75b671633f41b5382a71bc5dd51fc848fdf4c30b25abf5a3e3e800fda9a1a611689b379efbecbc5c3d305b8db163dff7238a3db0b143990cac2cfe3e31f627998c07092aca4ab58db6ad6dfd248e4dabaa9adf278ab1183f4d3122df86ad348d8238f030b40e86e018c44d17c77a9a469df4eab1c9f4532725f5533fb9fe82449aefbfce2d22e26b785d1c835cef6ed388757a668a611a85fd3487e8e76d4ff4899dfac31b437e9a547c728d3fe618e4fabc11a431c83506b9d06ab9ae430884059e7523484fb81eb6bcafeafc57fbf38878fbcc136d3596d2302cbd9fad9a3420ad77f3adef8cdd0afa312f6d5f5a1ecd55254b595c0c41701022a37e34d4a44d5b5375554b4d591ad54f7ca33690662500667f40b590ab9a4be814237e3e01363eee08917bf77b8bc443f377874423cbf09044f3422d9bd2493af1a0b696cd73568736e2b92dc0662754925354929db3b51465027be51c3b9b2f14c7cecb9bc34e1a13a2b76e1ad5f3b50e93fa5a1cc7b5ea10968be35a2def45da7e9c8b15fef35845daf3582c165c6785dcc37355dff72961852d1fe0a9b4139c553cbaf8ad8fdffa6e8e215c75c8ea3c58fe582dd777d7cdd1c45eaec51a87b8be629debefbcf3db76f59df1b675e5b059ceabb2cde7b1552fdb95eb2bee975b71dcbff1328f5785efdcc277eeade7a8f109cc31ffe6b05df6d1731e87f0590f7bb87fe1c1968fef435ae3e5d5c7711c7ffc1eaed5230cd9c52e97eb2ed7edca5573d41804ee5fcbc777f05ee573d53bac86e7a9afef54f13ce6e779ad15beb7c6cb207b21d56b2aa4ba9499c7951dc2e77f2bb4beb1f5dd2bb2b2addf222bebbaf7d687b8c67bad1658b635ab5e951659d9ef5e6bbc363c0c43b0bec46859af2a5b66665e7d630e250c82374ed9aaaa39d4d7c27a5092a867d56b8a1503f135655be6a0e550c227700e9ba4b42a2917ac8890a3b0f2bdd4d3c94a258e99729dd7792be66f0586cc60c86ab1244bb65c2fe656d3b1f2aeae72bd646f11e30465a6971acb9caa395573a852a00594141ba71430b17c27f56429594a1abfb1f22dd593e5a93c67c6ca7a69cf4929c77594eb3acffbbe95f7ad562018862c3064b15a2d97ebd572bd5ea2b8b3c323b29879180663714f0f8b7d7ee8cfcf6cfe9140402c19ab6123880605cde6a0cfc5f5f6f08fec07a8e583eddd61e5632d1f6ce5a50d6ac3c66cb6215ad9b21c68803a9ecb1bd7e564271d59efea15ad111d28471f36f9390f96761e7771d0bad0fb0ff8ee5cf7c17adbfe3ce4c27064fdfc9c0bc390fbe12e5b7464c1fb0faf56386832281b8e97d2f1b246fa566b05d08667b57c7c67851fa243293d0e1aabca568f6e04a9bafadd06e819d181155256787134b1435eac1f166ba88a750f47cd3b0d5f3f679d470fa5c12784a73e2c16ec67bc6d5f878db7ad87836669f76ebc4568bd6c5f453a1edd51b03beda29e7743bcbf285de145c7a0d7b93ba1e87855e84e4fe987aaba283ceb4374f8047ad6487934fdc541bb38683664b57c009d8e43e87f1e028520483ba0b00b8b50b0e5a3fb1016d0575d088621ede881966c482bd7799e778f56da2d1542fb330ea53144874108ffb57c74ffceed9cabf8b072f7a9abbb026844fa8ea9e4588e44bc5fe6bcf3b9cb2bcf9408cf7bf7c6a7946f29257d333bfe6ab53a7f55857c0f7b70ab7325f27d2bfa9dd979bf481bc178ee73c9c1fb3f805c527e1afd8cdf784520fb3a8f17c8decb6ef5b8027b3859ffceb0870fbfba2a62c34b0303a4fd461b9e478735a48d5da812091f86e16d3062c3d186a01a8fd1efab5316ba6cf510b21dd42b1cd42b3d17fabed186a0ef3c7ee3159f71c9cf7d7e7eeee3f303741f9f2701fa7912a0db78129f519c43f23d4f62638ccd21799fd7888db265e27900bdbf1fa05136acdee8213e4febb2b5337e061dfc6ba47526d23a11fe356279b4a1d5020b3c572f0f4e963bb77cf0387974d76aa1ca29d67ba306ce5ee974e519db6fd5cba776c8151e74203dc1e73e1b8c5829da90de0eab653c52665e9dbf62e61e6eaa4e270f9c911d8e7545286fdcef66bb0a4692bf8c85b7d83ecb0bb4942d650d52411ae12e9f2a6fc1626db06820ca272b5d60a4205ff7bf5b43b97ea9f72496c5a362bb7b52aec7643bcf8956756819f33d8ea9e6d0e7e3714f4fb6abeaaa3969f3f5f26aecb1aee2b8ab6e7ca3672a4e9a46dd3676b29d4d66e35bd749755350b429e825794a2d7934a5559fd7e0d5e8e74da4d16c485932592cf67d5e93978bbb71368e7be29eb8a7a7d70b047768fdf59a5073a87bab26a07fbc9ebaa41f13cb1ceae618f14e2caed6b8c313de0eaf185a483735258e5d92cf7934e5b89bfbdd541775dba6d1f789622cd6b6eefd1245b1abe66d6299b4db55b209d54ed328ecefb127d1a91babec145333812018b240aa84c576f7ba9ed718c47fb956e3f88df436521af729459da6111dc5ee158bb99cbcb1ebba8e9b36b0151fce2322195d7786edbc23b6bb94de12dbfd7a49d605f3ba26dc7deebde36a97d4258d49494949494973a8fbf789622cf6cb643a744c4d4d238944d555d16cb724eb29c9a8692491a47cc6ee66b3d9eedcd3f789622cf6f7704f3ddc53cfef0efbb16ec14e691a05f1eb30b4eefaab153b1d83bc5feceeaa3be650775ae59c5fbaaa69d425c9a1eeddbba969c43d89e3783fe65a3ee76a37b9ebba2ea9eb92baa96eaae362adef78dfd9f96d1ab940a72adb751d95ed9ef0a93fe6e8e26eeafb6ecc8e3f62636b9421c74ac232f7e97271d76175d7b91108a8c3c72d222bb0fdb90b8c34cfb372d58ba265dd7f2ad364eafa3c0ce0e981ccb4acfbb905fd8c2e305237259198440e0a68e49eb827db5d8945a3597ae547d04fd0cffccf0824a4b739d43da436da85ef2e91a8673d7ebd7eae03fd6b04f27a38ea30ff1a296d0e759fb597b87e349aa54daec3f0baeb3bd0bfc0693db04beab07037cec625714ce039276e09a684c5764bb65b7ddd11acd6b7ea94baa4ae4bb2ddb95a1751da346aa639d4fdfb443116fb65321d3a6c476948b65b92129625db3189af6cdb691a314d23d7bbf753474d23f0ddbbeb5aca76abee47d3e93ccff33cafeb26adab5ad6759f5deba2be0eddd9368de83b97d2c7c367a4e90c8ac3a20ed7a44e1dae49cfe9399c999ec361c199a9e29adcb2e42a44be28cf1204b1ab34ed71321131108d15e019f00c95525249a59c814ef9304f3ffa7994524a2947e975b41c250bfe5b490134450f56b67a4cd694ed90403ac782dff790f58f4e554a150685a118e0b924f01c136d24d33881a7734090b359f066c1232c48ab2cc8d52cf870f589605920c7449c07574b5d44a360ea22d6c13ef8955317710741f0133b16c79a7281bd1f9f30eba1639d56c91abf7a8d1059816dc7b558603d4885f95005d69d6781e094054faba69148a3e41078100441d182602846cbc0f36816a56a19f870a4532d03cf2d1119bcbc018e43584a1f11447ca4c094da6c9c9393b7b4f402a1c43b9594a66c2ff55255959393848202a1c4188b44f75d79ecca6d0be58dcbbad9158dea9056abcf5b49a72fccd8d5391b37441bc93250abd33747d815956a5a0b80b05c13bb3a9d6357ffd8f3dedeb926e2278505b2ec83d2526b05112c3806c96bc4724cc4feeadc0fe2a5512ba52edad2454bab28ec8ae9c9fb9553df2f8dba4688f890967e05b61c0be0fb412a04a9008237628dac56346a1a8934caaee48dd5388475e358208b3d01c260b0c32acf5b72f7a4eae99192444dc4902323de3f71ccc9ce9893992edaf9d212949d0f9d409e4fbb348dc45bb804abb2e26d1ac5a8c41b108f0e81ea95d8b927f10a4989177ad346b1c7a8a6118d9a43b0cfb6b0ef54aa45cb605216762a3bcdd83ff154da321857794223218ab527b8bbbbb9ff520a9d24512c85cffe49e4faf2d8b46c7e37036bb5288c7b1281cef390594074bc12fbd3348a8da29238761d21920876ce0ab161f4a965302daa0c592c398d62970f6395919af52bfe2465f3b12a91988787a7e7fb7e3af9d68bbf8f3f569d9d87ab95cf57ad1e3e5cdb7263c42b2a595affd4a5302d1d6f60e9a2cf4bb980a2f8eba9c1ce80a1c127740fed4aecae2a32d1975654eaa2701499f813a744043acfe8453121759ebb7e7978787ebd289e87e7d12e1e170f0f0fd04357f5a4bc288f8d1705e449b95a3d80c612c41028bc0c452cb0aa1e5a17c1e87451b8c4f2a2c4d727959c819f9f64c819ecf3530e9fd09f9f73ba280c8b4458158c4e0f0d56f5a770c9ce3faa8baea8f4a79b6163e7c3a52ebab02aa52eba5e94c804ac0a4687ffaa54cac270ac730e8f13e8ec45796cba08688c55b5acc6a8aa1063545df403f4f9437551f71a345953601b8a69d94e65db0aa19c405808864198a73514d332db0acd845a845f24d1947627746a1bab5c243233330b49fd5cb67a00c14010f4014116d785dc9d5a426f604252b425d485d01b2a342524861095d01ca12a213a761ec6014dc80d2824f5c382f9d4e8a1064d8c7885a46adcc6bd4bf0f3206b477cb97c787a7878787878787a5cae9fceeb583be2cbc7d5f6a787c553d9feec882f974f330f1864a3c64a28dc61edd4b6356e76bea662b0568beeb47ac0deaa425292681e56b93040dfd1a26540bfd30c746a0a4909b911ea824f00128a3de48bacd6e76b1c91b39dcfd740c227007dbe46ad8bc0d3c22d7faa37a344ec8b634caa65b5964d1df67961303eecb0770d5acb60e3fc3ed813ec521afd490e85a70fc31a9b8a4975ec4dcb664c2af6263605b67ad01ab616d4a0514d7591d09b2ebab12a31ec7c2c2625f5283bbd28253b1f6e815579afb63c3505b6730edbd795580d1456350fab9a467ffa5c2e7b61553b4075ca6110e641aa49c7ce4fca248d9db436c99044f3d2be26550f2b36a762b056cb8782b01df1057b0ac3300ccf2d20a090524adf027a91cfba0eab44262b0cc3b35a3dc29ec3aabe9035a75a3e3505b6ac964d69419e9d9708fb68ed69810cc2bc4f65b56cf68031a1c364ab9eca40dfcfbd7182d8360462859f94cd77abf5160c0683fd6b19ecb2d5821d36ce3ae7b46cfeb3e30d2c8f9a542d03235e21298e4a484acccdb4cce9c949ce38ea13929a46b13f2a7402c34642f3e11739e357ad09d1084d95b193ad90d4347a191e9a473365bf4688ea5d54d979329268fe4912cdc3aa7a04eab1c1aa24d1a4e79a8854dec0d2fa0d2c8763e7ff2467fdf95f21673788968c3c21fcfccd7451cfe7a1ecbc1676b6c6b3b9d4dfb47eff74ff04040404f4af6540e716f8ae720482c15e4391cf12e13af686cfc25e44b4b5c8677ddeaa44661d2020a08bad1e402d226c59fcd049ca4efeaac502db9f1128aa6d0a6c79aa7ce874a8bbead9fce952768a4f761e064ae95361683008f33d15460746b3f33c353bbf63b3f362133bffbad939849d6ff524b1a4d3053b4312cdb34058d54a9caab2f35dcfea9bcdb293d17c6608b6481a6288a4a4dbed766bd2e476b3d96c6d6a6d6c6d6c6d686d6839ac746a9364452b9db6785202879562b8c8c0baac14c3a58a00ac14c3458c65592986cb92ed033801b0528c982c2c68a5183060a4c1c991a31dfbc04a314db4b0a19562989cc05ed93ca249026a206546174da040e90a34c250b1166c6ccc4a314c949875a868349a0f4e56bc2ce9220d2fa67e38c3ca3a65544929c2660320a290aa6c0e56ac79411827962881114835b07d1dd3488a51822a2bbc2041527b8324cd3092516656c0040cbe74418117a47e02ba489661db8d992b9c501282960409a47e902e92738c2845b1c4053f405d51e504a92fa48b240d6ccb56f36827526ab0dcbe96ab2935df5879e7d4a49a626c77e72e2a4b9dbda8ece6fca672175e9cbfa8fce60c46e5189ca72a7f710ea33218673832a81cc6598c195496c1394e6531ce63549ec199aa729c331995c738975199ea48352689fab6d69853a5e57a852ba17f546d1f12378a5eeae559aad786e5a633977a45b07dde52efac5e09a65e59a65e89a65eb9a65ed945bd49d42be5d42bd1b09791d8cb4c2c0f512f4fa997abd8cb5aec652fb6cf4deae529ec6530b6cfb67a5949bd8cc65e5e73b90bdb675abd0cc7f679a897e5d846c3f647506f23b17d1cea6d26b7a1d87e917a7b8aedd7506f57b17d1aea6d2db6ff817adb8bedcf506f4f711b8ced0ba9b7cbd8fe06ea6d34b62f43bdbdc6f631506f7761fb31d4db706cbf02f5b61cdb9f40bd8d86ed47a0de89c4f683d43b99d83e0cf54e28b60fa4de39c5f65fa87756b1fd1ff54e2db6cf807aa717db5f40bd738a3bc1cc32b6cf34a8779e99686c9fe5d43bd5d8be8f7ae71acb426b05152e0fb6a7653e3e2b25d18ca27209ea1db27dee526f08b6cf50d46bc213f54a27ea9559ea9557ea954dd42bdd54a652af24a35e7946bd7cc4f6d9887a7989bdfcc45e96622f53b197b3d83e3fa997bbd83e07512f37d9cb5f2e93b197cfd83efb502fabb197dd5c0ec348dda1de3e62fb24a8b797d87e0ef5f613db1741bd2dc5f643506f53b17d1beaed2cb64fa4deee62fb20a8b79b6cdf03f5f697db646cbf03f5f619dbe740bdadc6f635506fbbb1fd0cd4db61d8fe05fa16a8b7cfb07d0ad43b8fd8be04ea9d4b6c1f02f5ce27b6ff807aa7943ba9d87e03ea9d596cdf857a6717db6fa1ded974e717db5fa1de49c6726d4469b9496c5923e0d6639233aa7353bde23787ba86f49a920fa907ae83f484bd1211c900630f07a8836480f745396329dedf913336c18c4bf07e9533eef2fe909c3114ef872067fcc4fb26c8193bf1be9533cef2be0a72c657de7741ceb889f7212067bcc4fb179033a6f27e07e48c95789f889c3112efe720676cc4fb7c44ce78899c7111eff31339632972c642bccf54e48cb3c81907f13e77913306e27d6e9233fe22674c46ced887f7f98c9cb11a39e31ede673772c647dee730e4ccc8fb4c869cedf03e9f21672478bf8fc8590eeff7123913c1fbfd44ce42f0b6e1fda6226744deef2c720682f7bb8b9c79e0fd6e92b321eff71739ebc0fb4d46ce38f07e9f91330dbcdf6ae42c03efb71b39bbc0cc02ef3719724681f7fb0c3993c0113983c012397bc01339738014396b00153973218b9cb5d045ce58787f36c9d90aefcf2f72a6c2fb938c9cf9787f9e91b31eef4f357286420178f8a80027fc7660fb36f8e884d9c84733137e0960fb38f8c8841dbf45b62f021fed30fa3db2fd191f191521f15151090ae0a31248f895696cff053e2261845fd9c6f623c0472388f02bbfb07d0cf0910821fcca384721e8f89566d87e0d7ca40384fe08f8080402fcb212247c4400a25f76c2848f8872fc7214287c946300bf9cc4143e1a008e5fb652858f700cfd32172d7c3424fb6529bcf0914c00bf4cc5147c24800f7e798c3dfa2000bf9c45193e0ac08d5f4e83868f6e5c6eb3868f0030fef2175df0d1587f390e1c3eaaff6533e4f0d13df8e5346c9fd1e0230f3af86d2548f8a883db4e98f01107b7a340e123a1a0df4e620a1f05d9f86d2b55f8c8468ddfe6a2858f6adc96c20b1fc56e5331051f01f518307cf4e3f3db5994e1239fdb69d0f051cfed366bf808c6f3db5f74c1473cb7e3c0e1a39ddb66c8e123f1f5db69d87ea3c147af3b9520e12357eb773a61c247ad3ba340e123d69d494ce1a310fc9d56aaf0117827172d7cb4ba530a2f7cf479bf938a29f8c8eb7ee718307cd471bf338b327cc4d1df99c6f6271a3ea206b01d69fece36b63fd7f0d17c146732c61bf372a61aef97ce638c57c6e51c67bc3ab69c6730de1d5ace628c573a6139cb60bcf2c9ca19ce78251413e730c62ba3aa9ca7c62ba594ce608c574e2571fe62bc92ea88730cc62baba69cdf8c976949672fc6cbb628e72ec6cbb721ce6ec6cb4950ce52e365a5db998bf1321627e736e3e5a526e72dc6cb4c4cce6cc6cb4eb6330cc6cb4f4ace6bc6cb50b5b39af172149273d47899767ec178798a87739af132950e67178c97ab4670d662bc4dc3e1dc82f1b6ed86339af1f6adc8f9cc783ba98633d4785b8986330bc6db583e70ce62bcbd34c3198bf136d33d9b196f3b09395f31de7edac0b9cc781b4a863399f1761406ce4fe36da918ce568cb7a72a701e33dea69ac0b98af1765504ce62c63b6941ce61c63b6d309cc18c77de809cbf8c7726bd70761aef54fa715ec1782716069ca918ef5c5ac05905e39d4c0a984e09388ff1cea714ce2918ef8442c01905e39d3e388539455353d3475b3c054fd1746e3a13131353d3bfa6a6a6aed58308d7b13c98989898be9631d399e9b2c52333d52955e71b294413ec44112b410d2fef529764500c71d1f144085b7638618216a72c5fb03c5d216305aa89334c442da1a68a1415374a534a8491041512641c5165843c630a4dca91245b114ba2dc88783244921052a0283da172c3124416274b407469c2f4431313a7255f6c4f3e90510295e44c2daa0735488eb8311286e5f3b0031996af4325019f61f923a0597e0e472c1f07112cb1fc1b42f0c4f28b2459be0d522cbf0622542c9f061064b1fc0f540f74b1fc19863459fe75b2fc0e7cb17c214f96cf013296bf0128cbd7c019cb9721036a2c1f03177063f931540b8461f915a00019963f0109f419961f01081cb1fc2036cb7fc012cb87e189e503a9fc0648b1fc17aa0b542cff470b592c9f014b96cf4217cb5fc00a4d96af00159e2cdf0719cb4fa1f6a8521221a0a250d5f0a807a8924b38aa9247b89de51bc055809f133ab061f9b30f4c20000ecbdf512482e51b1dcd2cbf680c18cb2f218b32964f421a34963f429b35962fc2175d587e0871e058be0e33e4583e08320d8986e513400912cb2772c2c4f273448162f90348628ae5e3b052c5f287b868b17c99145e2c5f00544c61f91f8c0163f901c8a28ce5df4883c6f201d0668de58f5f7461f9350e1ccbbf19722cdf034e83d1b0fc0e9420b17c0e9c30b17ca128502c3f288929966fc34a15cbafc1458be5c7a4f062f940544c61f93f63c058be4f16652cbf270d1acb87b55963f93c5f7461f93b71e058be68861ccb7f751a8d86e5bb9420b1fc96132696cf8a02c5f2c324a6583e68a58ae5afb868b1fc4f0a2f96ef513185e57763c0583e974519cba769d058fe943cc29d6d4ab8738de5f3606484a5e0c10046981af1f2c111a7949d54928863205e2fcaf23d35d2a879284acee46d90c1138665d0cdc892885360ae23299d9c8e1fabaf0d189dd71d109a6389089f27736ae3059d23274209d858fa1ebab2d2a9cd1a7b6558845c457c5979d913cab8e9441bc79c9c1161a270e2cc0ca838a2440ca4d9c4ce59c64eda310d29e1da22090d932b663015e787344e74f16444c850451352666881069a284cd244c9f2552c609001c40a82b04267491c25c05731809b26aeb441e3c41437363343841e4c01e2854b0f68b244d1e6063eb8c0cbed87550759fa07da0d8ab8f53003264a5cb064c581d25194324c4d5253b63949c2a0f27e7e480581024244094d26800113441ca105544d0b2e767cb2684089263a298801962728e8c109147ce00f234b582923298d3252a2b620d1a28913e22a865188940c2b258010f3840c141647dc200d52c7476cd7b56006b6a39d9257d7755dd775504834632ca13404149c274a308d0adbd11c5ef725085ad71d61440927284e482051861a26903a59c776175b50c5761c9d3d6f5774e0a45302469832c600838a137cf1220d284cc01dd1d25dd3babb6f5c120f2431e2055baa5c59a27403a5265a73965ab0640a2f98d6d079310b3c24ee8161ea74178699d37577ebbaaea37d3e84a18a4314c78b894123033163caf88ce83c8efe60032650211035e868115d77b7aeeb3adacae6c409182748b824201072640cae00cacef77cc942c5a602a6375b5c419a36b0f3b23165d8f91c3a422b9dda8859c9917226e79c73ce6fb55383e7d49d625879715879bbf3cd3753ca08e54e13f6e58d8f54efb62b49a48578679565f93bab3c292b7a7a7aae18d413f37e9efa1eda090a5b352e5eae5e63759ed57762e7bafb3d1fd2dd5de3356ad4a851e3c7a775978d2781d57857a3ca0e0a7aab5ed106ddabf73668bc33e8e8898db7c7c786ab26f991a3d8028a015120a04fa81524d413d40a622db1f11a366cbc460d1b357e7a08e830a08340df79924f07f8160fb443712a6c3176994cc76f8ea2217cd98978bf3a583986b276e7dead56ab55776f7ccbb8574259fe0fafcb8da34b28a56cbcdcc2781162fc7e00594ad2d323461690eb0e02052408d49cb33b0d41383991f1831493a52b8480c2343b23c4305ba23a31a87c2c444a06215b92e6906caeb96eda548ca4d5540f5f918e8718371aad8b688dbe27164b724d99628247cb129013b7cf092d515e0a44118e84019d9eee4710282041ac34e92139c47784c8440c052b5b2e9b3de79c53ce6f949a3de79c3d9bebd8dc5c74895b0fc924252c8dc2124bb2aeebba8e89cb12a7635ac72609567fd34a95a5e7b86e8e8d1657f735db8448c920a40acd761c3772ed438f930c38a6ae631aa470a02a8203136f68b7a2e29468341a1336547cdd27ab0c8365ca52a80e0ab5420916709c0b8b0e33c454b5803644961b3c09a3841b26cef39c8063ccc92215830c4e5b240540896ec600055eafc66832c61073124d4a29ed39e79c73d2d93494e0fba8e06cf13c1aa470a02a82031c2a3855e28f8ec1149eaefb11040a48903847747198e8e26ce99408800d1a32481a63c589991b9831a03e8eeb38ee0672314009919241c8adeb6888818dd2800355111cc490eaba2e0db0670c5442a464102203a63924b918a8195fd73fa48240010932c6d31c92f4f328a59436ed4e7c13e76b215232080983891e9248616c11991035473bda51daddddddb43b29aedf80e17553495dd7dd38b4683383d7139d50890b1f80906220c54512ab37545c5ce14102e3c64513ccc685191fa42f9eb870e3427ae33487a46d4acb28b19842d0894864b3aca82d8833c2a04295250b8d08241a84a54f2c9d4aabf9432a0814908ecbe1755f989098dd31ac46215232ac7ca8220a3a1dc7357135f1260b329c48a30933d809146260202546e580e9010a968e2f4c494e70060b0a0d6cc8bc2627866a8aa99a55d0629409a594096e4e1ababed168b4276ca25894ca6625982dda668160f3060686cc140787a3b4e3ba665303dbddf4dd1dd54352ea9b12a96263aa7a08c90a1907e7e3b8ce8b371c8d4683b245929063801222258310305d6871b3b28b585e9cf12609116efe20c6dce2f6495909468b1448512fe080f1620ccfa34b2811841a33da3029f1048d81b802cc0f638c7ff385a5cfa1638ba92d9f93ac5ae229a58e0240eb850f29bc9143003a8e4ed71dc10721b8faa8eb9240003be2cbd5e25c570759e7ba3b0cdd830e38100ab2e18538866402f820003700307eae70002e3e65125ed14a2f322b77582965154965a594523e591965a594523a0991503248c5403581084829957e2c2d403a2540baac94524a29a594524a29a594524a29a5947294524a29a594524a29a594524a296528a5949e94f348b797524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a59407f9c80097524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a544029164c84c75fae06f1a3533bd3fc5e8223ec1917e457bc94de3ad61efad77088adf10ae09575ef9e5ca2bc95c79e5992bd55ce9e6ca2bc3b8f24a32aebcf28ccb978f5cbebce4f293cb97a55cbe4ce5f2e52c5d2e5f6eba7cf9cbe5cb64ce5cbeace6f26537972f8761e497c9d8e197cf20c16f1fc9e1b79788e0b79f84e0b7a5d8f0db5488fc761610fc76170ffc76d390dffed281df26c381df3ea381df569381df767381df0ec302bf4d06057efb0c09fcce2310f89d4b1ef03b9f38e0774a69c0efa4e2c2efccd2c2efecc2c2ef6cbad3e9ce2f0ab80abf938c8fdf79e6cea81ebf530d0250f89d6e0cf0cb6380df9f02fcdab01d9cf03bda0f66bf382c014cf815c116edf89dd9232339a6288b127e251a9b86845fb9c6b619e1577661bf10214e08bf528e3543c7af44c3a601c22f23b1ac8400bfccc43a21fa6528364a8e5f9e629318c02f57b15670fcb216cb65e897bd582964bf3c85a54200bf0cc68ef9e097cbd82c02f0cb686c9a1bbfbcc6b601c02f7761bf187f198e8d537f598e35e3bf8c864dc383df46625b4907bfcdc43ae1e0b7a1d82842bf3dc52611f4db55ac151bbfadc572a9f1db5eac14b1df9ec25201f4db60ec989fdf2e63b3f0f96d34364dcf6fafb16d60bfdd85fd82e7b7e1d8383bbf2dc79a21fe361a368dd7ef4462a712d7ef64629db47e27141b85f53ba7d824c2df59c55a017fa716cb65f53bbd58293e2abcdf09c68ee97e67199b05f73bd1d834f477aeb154f2d1fc9d5dd82f6c3fe4712522524dc9918e7e80879335678b9b3e2b5fc98774d4c4735e805a6b27de5b7e42ad7596b796cf6aadafbcb1dc845aeb26de56bea3d67a89371337aab5a6f2aef2a25a6b25de4a2fa1d61a89771227a1d6da88f7111fa1d65aca7bca45a8b52ee29df4106aad897847b98e5a6b21de431c845aeb276f282740ad7510efdb896aad81783b798e5aeb1fde4d3e805aeb256f26c7516bedc3dbf6a15aeb246f2597d55af7f0ae5d00b5d647de48fe41ad719d37ed01a835bec1398ddfa835b6c199ce01506b7cc6198d8fb5c6353857bdd6da01ce66fcb576c20b700f6acd84cfde41ad197dc739a8b5125e74a15a1be1243ca8d642b808b7516b205cc76bd41ad109f058ad0de0390e546b43c7f19f5a13c065f7a9b500fc83f7d41a007ee3b05aab1fcf536b1efcdfa9350edec1c55a0bbad05fb556e336eeaa35a0c7deaa359fff9c556bb0f73cacb59df31cacb557ad75d7bf5a0bcfba576bab83ef6acdab71efb8e9b2f5438a32ce2690e21c0519e71298e0ec85eadca5cb79698c3314509cb9c4393ff1c479cb0cce4e3871d622c6394b963316199caf5c395b81736ea2893313619c9758e25c65ea4c85ca59098cb3124a9c93f8e28c0412e723627036c288f39437672952ce495e9c8b28e21ca58b3311449c8770731642883314a9f39327e71b17e72082383b697306028873932dce3ffc7066c2e6bc64c9d90683b30f3e9c95ac39274972aea939f7d0c31949d4f9c89133ed053762e43ca4f90e3b5c07179c0424f808b4780e391c87165c0422f80d681e8210bcc899db60c36b803a1122a78105070108fe812cee010f7c062c3e64c8af9977a0031772c539c0816fa0cc35a081cb40e619c8c031f0f40b5ce03158710b58e01518730a50e013a8e21290c02320e61080c08384f9031e7018c0dc010e38902f0df80bec7417aa94442efc07afe02d5429895a3803988ab350a52462e10b50c157a85212ad70055c051a3c01554a221e2ce7bdc5cbdb092f6f2d4bef2c4b6f2c5cde57b8bcad6c7937b1e5cd8496f7125ade55b0bca960792b59792b61e59d04136f2498781f51e56d4495f714a5b714a5775212ef2292784739e24dc411ef21a6bc8598f28692f47e92f4be45790711e5ed6488371043bc9b4079ff00e5cde4f65e727bdb9cbc7d70f256d2e49da4c9bbc6e4dd03933712dbfb88ed4d5372aea3e49c46ed7c83da990e92b30d909cd1a8924b60daf90ca69dabaae4127838d78087b3193afc003abc0023f80923f80c879b80c377dc70a31b5e54e425143909357c841a2e020d0f8186ebf8c041f8c00930c38966788efb01dce310f22121976de002d8c03f90e10190e13730700060e0630caf31fc15b80715780713380713b850041e1481db08f21a411e83e14030fc07c87d80bce785c35e38cf8feffcb8c880bf1870d702de6229e0a1020eaaf0950aff12702f0125f83857a9f5f190e754b648555a2ea372d3b90b144f54ee7276a23214e72c959f385fa9ecc4b989ca59ce4b54be72a652b989b312959738235199cad988ca4a9ca55446e25c446523ce4454967216a27211e727958938075159883310959f9c7fa81cc479496520ce3e54fee19ca4f292730f957d381fa99ce4462af7f01d2a1f3909aa91e75077b8082a091e829ac36da82238911a8283a0da700f54221f5241f00e540f9c0375c835503bf00c540efc025503b740cdc029502f7009540b1c0295027f4095c01d5021f006d407dc85ea80b7501b7016aa0b5fa1b670a64165e12ca7aef014eaec51e71949d447409d28d4a94612f50d502592add296d09f2534b865b4dc84c3729308969b66556a5399246ad39a29b549c289529b241a506a131327b5690a93daa445496d42529b46502fe3502fdf502f17a99765a84dc7406d7a0cb5e915a84d9f406d7a046ad383d4a6c3509b0ea436fd85daf41fb5e90ce0a62fa0365d01b5e92ad4a627a0364d2145bd3bb6cf26a8b7066571651b4e164b51398ab3092a97e03c45e5149c4765149c5550799ca9a83cc579054e5f2aafe00ca6b2d397b398ca60ce558ca92ce66c45e52ace4f95c79cc954b6e2e97c456532673395cb9cb1a87cc5398bca66ce2ca88cc519ea4c6516409d396b5119cdd905955b704ef382ca2e3847554e73560383ca6ace6c2aaf396f511906e73695d99cb9a8bcc559aa729bb39bca5c04a203a814ebd74a734daa1892110100000008d3160020300c0a0684224996e540968c3e14001173a84a605a9d88d3244861104621638c010610020000849019212a1a01a0b606ddc9053cee7fd4b6b396cf896b35d799c3961485c94705475344556e91205d0a9b2b784cb657c9a5b885d44094d912c8fc96002bff740f487d9afdedabe2f3b99a5c7a4345a7bc43860ae1582267ce99c349b29940cabdb748f14893a0f4ec09afffd398803d8a07ae790100962a8bfcf2237e04a6972daa3c58b10a5ce968e5160ff3ef4437f59cf0079f6ba6ede47aa602b88ac1110efce36c91afca76385c6f222c0a6b342a8db01a16348f62b9b6343a4cc8470431d3e28531fd08184d32f4f4d2e852af3ad098c5415b35f81733fd0a38386f587e2036c43780eaefef93baff4fe4ed02fdd221e41b1a2d05b854cb4ae16f0a7a8d3e8e3ea8d76868f50ec61a5bc23ff47d54f32092c0cbe42040aeb25d7dd4543af3099b39b7b68f5a75f9a80a47af6510fd81d1b467279e1c3fbd103069575b54d9775d8cc1bfbc23fb24511f2dd54321e38effba1ba2825d9ae8eda3c4ce0f6ea0d6007cbc89f3fc4c36ba56cb4df2d264fecf00eeea3bf3f40bab6e786a34671760d353147b16b0eced868bca37c72b7a0d2c40b27134b8b8c6106958519b5029b0ed478baac8f75358383996ad6057a71bfc8766edb20f2b050d01b104ace10a0db128cea5e55f19db56700e77d8d07ed9cf359cc01fdcecb1d9870b3eadb089f8d75b70d8f68d5cfc78e4915941337972d3f1504db5d3237fd9de0e9ce5acc66b07a4878e091f0a9d33698de535ee764de9367bf59ad494bb3c487d0ca02bea86ac57ebf61dc406dd0c2707100725bd8e232896f674527caf58270b58fd0052a40f8e8342ecd0537f6defaf7f6a817915a7071127cd619e5e61ec355049a71fa2b496ba99fef881369db1e1e4304d9c5e36847d80f8ef3e351e832e9a0f52e16bcf4520a89e5ffe0d0c033e3d4c097c8f38b9a7a3751c85309712934e0bf4a720568a556c805280b9435e4176896a814eac15c090ec3e33a2c0c9a614da26aea19f862b7973e01400b06ef0e2473833f449ec65b1f93221937fc326ae498158d9260a25bbc1c73089b53ac9bd2b08eedde0cdfec1ee76bc8b01eb698015631f8265902208766a567a1dd85208dbc3c53a8aef4c7a77e3c2689d359c73220d3db0248cceaf7fe66c7184c91a7bebc78f12ef64ce32691b64044bf494f077036898c0d6279c483b89c7ed770bb663134a516cbe31d5d56120281f01fa8f03b026bad36c2d2d9238f0332728d3d46f88d7dd38decd1af0b558c67a6976771cc489b17517ad4a3a2a24ad817c50e53190e1bde82322623bdc28f0e99bf68bea1fc502903df882622b923f0613a01f7fb81c9c298b8fb063eff4a3ec089da156bc756ef1705089bf4c8c7a2eed203d563aa1dff56bba3bfbbc13dbefd299c855a112dc4a117d65715f61c23828bf41b1cf02aef2516005c94ff03c18b7dc7e64ea4fce84022bc8be5163697f9995284f2e75fa7b9f94a0f80a27ae2cc9400dccf2fe84070c8793f517a8859162f54c02fa020a7520ae8af1141067e99251b0fc1067e55f232ff5d8589015d420490a6804ddb830325c445c946e3f88516c6055662c32c6463873f7d81f1c912c18cacd2188cfe5a4f7384e8d1760a734a7f6327d1e16abdf48e1a7d5b04e7f6883c42ce0d1d51b2695f9b48344cfe77d6074ff43b47723883389e507f5749ed0e51cc7d9267a2b45f78d6377c873286fb6f1a1ee5c1571479903f989bd85a2dfb79fcddcfeee9d176605d3b292e0eff608cb20ef99e8baab48d3b37adf8127e50904a28d41d268816e1a73256007ec41040a47ce95c57d0071902a2e61329b9cb1352b800ed135f4ff2aec332368ce4337b90f55ca94c8f19f2076575989c5786d603641933a02758d6df709becdd1e880640c0b51aa3d949881ff65c7e1963f94d5807112f2c084448c25c81de3269e10ec386c67ca9404ed9320d4697535f9e6ba25e37d09734da5eace6771d856988baa5b5981d24149576e4e888f001922dfa4732db73d41109d1ea675a6d0866e96498a09fc86718028915f0c8fc5dca8bb4251187db868d3e387d4819a3be6f3f125f87693ac9f65abb7b7a7d2cfa7ac2ac67c67f4f44fe23d4af5bfa2812226ce6356a8ef1d46b910e78b81d928eaf3c36317cbc448b039320c99d39f3fc400dd87ca744707590e0dd6d8348616901ee4c5322bc1390f526804b0dd702ece9aa2e2c893d61398a21bd1150c0444809035b673067559a2a2407b4c07e2d5891ab431977f646578ce13dd69591db565d2e2990c2e86bd06e12962c307d977dbd6d4db2341e80351cf9dd1a9a0e1c9d53d7bf42812a4271cb30d9b61b37bc58b6ba8df4f0b7560908e92778502b4cb2a67289b2e9beea19f8cddb55641fdbaa550b7bb86b1690c9c969831afde24fdab2b3b4ee5c6d5540402cb29ee00206f4acfc1f00248425db36ceb104388582369cbf275080f98a7dec0d0bb70a19a5f707298dd4cdf8dc4d3a5a6edba729888a9d564d059e0c12deff85e1fd19f3f817559dff4d6984bc48c9bcc9539e7b9210555771ca6c872677a6eccaed0af4aa204a633027abdfa1fb3d7062b4e79dd7a15166c9fe2085482ebed26a2d9a96a6849893650a66c731815dda3b0b31e08afc3e7a54ae2631e8184891a868b110f8ff324ee64a27c858a31521d30527057942b8854514fc872a7564bbfe28d2b5808b71ecd6e1612220cb61295f329d778fa195440b96a78bf44bb4182fa8451a362944b90722d644eb40c62960731abdf76261a2cec0fb6e7c62ad09a74f6c579655336e1d68eb988646f545047d8e9c1e0c89143044a699073e4c04bd839f84a23b22b9753a1f9fa429ea0096d07576aefb9641b71add5f4434686161893b9d199a8a088864bf020545fee425fb87f561bc69780e7adb08e89a539c3f26fb31869f7915d2efeb9c3951f3a8c1aa88cae3b1a85111b91e41bb9a339c26b3b224a7ae4c77d843781444209c9eb1009cf2f12c13c923796242cb52402a9494ee84958294ae4a829f9569570a02b917a59f2b92d617c5d22cdbe44bed3ed6a1bd34155a6407426a22c4d7e684d785b9b48d09bbc569cf0a43911bc3a795377c2527922d0f6e4a4fa84d5fe448e0b94ef0d0a872b14a977289f4a14c6b628d2ac51c4fb5bafa6481d54930a6495a28b8d1b25cb543bb4a9ef1fc0537d6b4e5a8a9038dd881434d6f10ec4e46c2ce88033ba77fb5678a2af76f10ac5468afb04852c61c0257ae67fc612420e538e4745dd03a83e94be1fed09c8258284e941485888531d82098990b5223e64044f8e900148bc1d09f638092155e21e97e0cf9890484d5c162798e109a1fd895b8682914621224a716d5330252ac44b157f6005476e8548bee25cb160825988695a1cd1162c840b51a08b9377c11e7b214fbf788060b0b43084498cd332065b20437027e382cb60ad6608c333ee0c0d7e290d09a2c6455883c9d710c26cdc681b7c5aea86cd09d05c2ef0abe0eef19ebd5e0abe6049cf94ec46108706b54682a275890de53193e3b0fbdeb53e1a877bad2ac6b3e6ea82c43e3911d3487f4f72aa0755c310c115e35ec2e050ea253ee3fcc72998bd4153a4fcc002307e07939ef1a6bc2f610ece93f080b91782948bf7807c4f525e1abad37584d37dc4b98b8fc194cf76d3a64b6883b34e76b0532e84816697ebc3175c3cfc2524d5ad1fb784ee1b98a603f95a481962c8598b9e1c4d4b5bde55f0792b3b0b5e7713b639505016127546e1e583168b2f9d05cf04633c255860c46902c8af985788bd99618c8f055cf1684b0b1137775602935728341b919657814b530581df6255217566c2fa1e1e4cc5ab2c2dccdbdc50096754858c9de2cd4c057333857813155f2b0597f31432468a3bd314cc6d14d2cd529c260a364e52082d14bfcc51b01b28e4374571db2718384321354f1c3341c16e9d10dcfcc46f9ce0e4f484dc3671cdec04bf6942769313bf658285731312c3c497a909867609e166269e66091e272624ac1267e625181a25649b96b8d824989c95903049bc9994606d91906d4ee2699060724a42c41e7166468225cd11e28693479434a9ee91168f91eb992341598b1809ab099b6d475224e8062c41742e0eacd92b3416f825b5a108cc0eabda0a58be52e808f02b37010af314f9af314ffeba74f8fced7f3c05f5abdd331ce3f711e1466e5f9659bf70e96e94be6f89db50be2c7b56327c65220cdf76efbbc0cdcd5e16346b66bd727a86f0f4be106eead0cb1a58a99a571e632854de37cd6d385e963d2b49bc321186efe07d0ddc4cbecb1a63ed77573ecd10c2ddf79edb5fbb2c10d6bcecca090c61affbc2b8a9b32e3b8375495d9932c3a7e9be126e86d165ddb3f6a02b9f660875ee7bcfedd75c16086bfe72e5048630ca7d61dcd491cb4ab3521c57be67285cdc37c26d8cb82c032ba97065620c5fc17da5b9197fcbba67ede55b1924c36bdebe083715bb65ed59a9732b4f3314c0edbbe736b62d4b8495acb632338e64db199dedb0c47020dbc79e1b19b62c11d6b7d7ca0dcc35c3c66d3f0b6befabffd300387aa155e5a31f3601d451ef77c2790d0bce4eaff33f59b36ac5c887c4890ef3763c021d62fcebfa78ee49c343e74de3a5eaa7eca3f653f5abf4d07bd478d379d57aaafd2bf8a97cd4fcaabc359e759eba5e35de2aa627815a9d5f22b450047cf34bfc9399e10bc7f4f7fcc47eb1e67c9997e48343f27fcc9c5f39243ee427ffcf2ceb5b9ec45f5c926539c0b0d3f872636ea86fe829dce415fd94d36f77fd69ecb93a7feaf949d14f0adfabfb57e54d3d4fd27a49e3f57aefaafca9cc4f4a3fa9f85eed5d9d67ea7949eb4d1acfabfdabe44f353fa9fa91746d0bbd1476e3630f8b418788149fe098f07f16f37fcf3cfbc77925fe99e53cdf30c9e2131c13fecf62feef9967ff38afc43fb39ce71b26597c8263c2ff59ccff3df3e3431c01ff8f272efdf7eeb4e9d851818fad303d45f0b8765e2fad474f7d9eea31f239a2fa13b93bd91e8e9c8a24f3f6eaaaf6d8c093e90e9083d796afb93d75e727a6f16d465d6b693272ed4d6e76706a365b9a4ed19df2c60ed041cfcff7d75e7587156a4a6b26ae598c3258bddf92344d6a38b551193556ef34d71e9727df213af5113afc07baf7ff39fbd573f5b373dc8773ed4c90a865cde259405a5a0dd2da36a7ed8df156070eb721cbbdc2d2d50fedb6dff0de27dc87872f43c1afd9ff0bc881f5749641db05e96dc735526f2ab755c8d8e8b8e26253da944ebf5c6de5dc93662d459beb264e8c5ce4fefdcc42b3970e348bad8ff6ac7478ff5b39d06b7eabd5ee752a39c8d51385aded4d8184336712b6ff872c4a282fb984c8b49a909d88afb343a11f51330c0d5321ef4a0f04ebe4449aac13111bf94fe72ad4801d4f3484849e68eebd1dc87a0f740c3c50bd86064510fdff3755f51ffd4056fb7bc356297e0889a296a6b41baa34b53fda83157f91b2ba4b0237d1619d91ed60d86bfd26355eaf9c8f7881160b884e02b35a1320cad5f92a56a63d84fc5a42ad42eec8a94b739a107f1d1402bc623e7f3ea8e79c4008fe1811e9322522aae20232125a8a08d06611691a29903cd6bb29a0c9ff08e4658e08800d11159a8223e24dffaf014df76f3bf5fcfead1299fc9fe6417a96a38293d99ed2f281b864b0d151f588c5c18b534da5c19cfbc57a26136f7ffefc557c5430f4691d22bd86f8717b511128d0520ec9a49d3834f50aaef731e927135720d107f4ffe321d1aac992cd9909d9edb218bc2992f1f17e0ae65f48a5c99bce37d72642aa9f13925e924538e26fe17a8f5efe1a951228469b04671689511ff8ad67c09eb1033363b7dfa1e56e0c86e976b11ead2c56bc7b6e6956800b95493f23b203fa0331a6c32fa2f2e759a1eb7d20bd2b4783b03b4c26221d85511c1b11e90675aeb2e322a50dc4a3455ad7113f3dcb65b85f98a5076e8a2f41b0f07c1eacc0cb840d5f5ce17132eed356e753079b92a0f7ed3a262ed3f988b4960926cc6dc094985f0f8ce3e0dd5af1c08be00d89b92f20fad0c8b6974b94c67f5084620e8df3d09e014db8f821312b895f11d3127e5dcc97c647c45992be268625f255312c75ff48bf158e9d32cdc5cfc459caa7c45fd267e295e0976297ee73f195f4a3f84af4bb184bff8c784bb031b19232715481a2152d1952e0822697f6abdeef3c533ce949ab6e5ba7ba7746ca41d70b01eef5a71c212accd19989e53708bb92e5ba81bbc6e226e69cf2f98b697a60efcbe46f57c900f63085f756141095ce41113ae752e71c177bcb8aa1a1544dd52137bbf03daad0ffa0a2b3fd39d28759b055592d42d03d446e8084bdffb3e9628f86cf1dc5601e7ddd64408f30e05d7cf5288632f4732703f9101a64ec198c73f86f5337eac204efa1694b10c8411f9fddb117265c838e6d82400efb7ce6bb278418244283945088d1593ff18cebe8a6f29037897b520c2e800e797430a0e818204f9e5e3797f4a5f6dd57d2e3da01413bdbd2a03c5a0b170aba843cadef250b633b371e1c6c1ea4ce47988682b7b25118af802ca3dcf808ae6ec8ef5e1d1665c3282c0b3ac7e9b364b23849cac01a57565372d48e17b79833e9034ac332b931656e898a8be2120166f705ff926fb94e87082642c336fb7fcd1ed5c062fcaef6a41b58387e098ef43615cb70761731b7f8ab9a06eeb39de4489ff9fe8ca59c39e704dad7d4eecc3569be800ee947f28965bfecce8cb48391b2c2fe8b4ea2755ef10c5370ebd4952c5b491fc02fc9d9320b723ce79e804617ef5c39e69357d223fb953433d08234dabcf3f92c405e891ed957d2fd705d8a6e8cbb444dd6df21f92533b5640730dea47b7e62937bbdf45e0994df4e289dd804075311ee1d91133bbd84f6c386f99795a509593e2c824fd95d40bf251fbf7afd24a27bc1fb2a193a432ba86fcbe7a433a68902073b1e227e6633f8c186f526c2e732b85562c7e083e615190899785440eec1b117c3d68d870b2ccaa13b81fd6a2b6f3c7dd07baab89a9e813b4742053dc1c3f0acdbc2773749b1d0ec56c4f9fb8b50f5afc9f10f002f3b887fa8a893092baa893c309d3ce69d880a10e8a755d2cda03d50cee46cbf9e28fe2223c8e7e7e4dc34922f0a1f1ace9d0085061f8ee427883f91b76dad2450f0005a2088e0aa4cc01f9c3c7925fb37409ea0949cb6dad61c13e531f874566afd75396904ce3ec2cb3656dbc90b4b7cdb7eedd5c6f02350204f5ec94bbb7744e99fa95687bf1bbd36bd41ba71757c8755cfe36d55424d899516723f1a0d473b4db8f0e35584510c75334020077663615fb6d3bd3596f5ec5fd80dc534c4589633ff462e1ed310d08237f8fcd095ec4c049d3400b836f8a87c9095c04c8c33f90b0f2ceb4b8cfb45d70c5026d8701027531e703bff6378eb209081a1b84cde18cb00196feba661e0d0d76540d06b9c4ce589f8a18b213c18b5361586c345f4d86a06cb4115a42c6d2120a9cd226d443db5bbe24bdc4c9078a93f0c57abff8bbd8aec4ccc45bfbc40cc80a341798726c94fc9cce50709399281b66eb070fe632a4dca15d17885dfd757849d8e2665f75512a0662c571dbb4e5b423652c5054e0b41ebde6f16abbf38e8ea54edf683dab90bd6b285cbe4a2602487aeae2579df8a98bf2fd4883fa5627f57ef7f09c79c72fb001eb8cb2e53fab0509537657d82bc6e5de5fc63a99a6883f0e21311eba6834e397834308de868cd676f218aa2e7c75e6fa5f7a4bbc9658ab80f02a1e3179a2c573577be1b35a59c42c843cb066cd29244f0d912be7a150bc298c971ce6cedca87a0ccb32c3fa8729c7bea7ea8acd6728166125f31a0a2f866a6d88e7d8514572943bd05f34f1fb5979f17f71c74e6706c4405a1704685d1f738c64be92a7dd371e3d3bdfe21cd8411a29980065149bdcdd7e0288575d8ab6a1cc0a12fcc562710c85ef93b96653af7e20f8d434f52246e0127adcb35b32865255aaad4708411e3ea09c85dad5e7bfdd8f6c67824bc0914e3c6e987164ac6bfb9234ec6a89bcc2ff23c183430897919cf4c45d93cd972d88df0c0c1c80c19c88a2783f31ad6e80d5c110db99be1252d1aac1de308d6539248477abf2a6a10e1a366f0d1c590a591a0175b91da88d229fa4889ea55d3ef0873178b3668e5e429688ebc7591ffdbbbcce1d194fdb0672d149c2c6d615a69167f5461a2a40c3f31c3f3028d6e47cf42d1b78ad0bac89502608218b9e05892e64bb07ab6928aa9669764b7eba6324a39b657c41352ad9d160a6f38d68e71c1ee63180901e5d6399887361483b134d03dff627b5b4dd821dcd5962537876c27abe14a34a853d7e57e879263884bba191575c7655f07d1a866b27c0198022f6c6a14352fb32b899792a0ba3aff6ade2148541bb84d0d3929b33f294c1e53670270f2d1e0d4ab0c4c4db9ce956a48a34d7de677184bbb1715b2f77e73cbeb319fdac2b4729e3525aaa3a40e68bdc32fc1d5f308e70d4f672056ada71089bb3a479bbcc75117264ad69babcd81a250c0012deabb653e4da4cf4c54f7d274d1e35c0dd197aa841469f13057aaccdd6a6dcea5680d04ddcd34cd2c3ab449534789ee9a3dc07ee5bb4473edd5025df5c5e3b78776c8fd5189477cc180eacf577b66e8aba14a1e19282891205fbdb765549ad6bef9bdd7a9404f44a1f896ac1070464d5e328bc9d5f9ea2696c83de3061da572f30e03bee453bb53e078f5f8d34fe8991c818f999adfcda2341dfbdd3ce476c5c642f2c1e6893658f01b863aeaa1ad36a6ddfd4291d8ca993bddf9c033a7ed626d0dc51e815a9ede3a2d2be93ff971ce96a05e9b0c41da2ec1c69b32921f1762f665dcc98f83e4c467d3f60c7005308256bbeb5352c6a7bed6949d4eed2f456a3e567a643d2333c343967123b96c5c068fdb53cbb7d1634e4615b69017cf4c0c8ddd1e8c0a083840e0fa9bf12e4c04e133b81cf421adb5c66035d8ba755e12ae91b924cced38d52e5b734e0dd7f09070a2aeb6193a315aaa6b16b3f6609686793a416f0b3391188b0972fc79e150fcd9e11dcda32d8b7ebf9985de6861ba0a6f7c5b0baf4fbf530c347809bd51b4a5aade9d70c2aeae21bc18041e27fc53dad199ecf03038e5b0479af0a70269f2a019eafc66678fac16f6a35ec1843ebde5b08e4228134ddcc0098838c749c80f6de70d0425e0130d3c336e3e1f9773e0f2a35d557a82723309a333e37c9cb9449f47ffe6d03e71c59fcb8dd7c540f501df3e0bec4cf2a909f3d8f280158a296b5f99986979348a4571ef9a390ae3ce87d4c85c8c3b8ec569467ad66cc2dcf1215e58710b8456e603e6434ccb2c7fd059c189d18f23ee07df3d1b231fd8f305bf019beb2980a1ec5455e1b93176104f2f549a66168290d634fda6e3e90e22cb799698dfe1fa6424e08d6706279264e9a731bc3548eb777768e0cf64aea1cdc53a62a59eb822c0d41ee10641988fac2cebfb9e95c887f95be706a11207888ca700af2874d8eccb5c01d7a245d5f529cb4421b126c860634913849eebd3c6a55d8e0034cc3c2aded9d6533b30237c03442c3a8dad15c9de5a4977b288f3780c28d54b79d3e4c4a4b78b20aebd88814255873cf7eca0e06210f5aba0489dcb25f89e2ee070d27097ba56abd9c6053755b1c55a01461a47026afbd42ef33a5ba27a1afc526f1606af54f5449df3d2abf2db969716e27b3fada93b637fa0e5bfc204d62da9ee92fd38ee8a61c79334e6adc1cb014a3962f4f033bac2aa9d8044011e96c83949dd1d25b1b51f6182a03e63f4012d687a79848618a80ff375d6f890b8c68b01d269cfcf647ac93d6a5a30bf90d669a19adc30b953637f9a9a181c229e675f14ca58f940172c3a8cad4a2d6c18607350c3d51c097a0e9848e4983043594c9f14541ac784f4a6e80f0d6f1290a9f8dc3e88350654513d96e86956f0dff247adc5dd0964643f7e49f940f6354e68ae85d6604a14e36590c04def4b8a674b17e863fe899f065301aee91c1b0bcf1b7f078dc1421fc47436e70871d8e38f74eb9f6993e202e0decf8c1d82c235a0c790930a1286f5ae68da25618224bd02c09706d7be8b0d093c1b1cb3f42e2ec4a068e13534990a988e15a548b2422521c08323cd6d9d770f45f528198927327096f25c7e8819b30293046a46c320705286b008539b32d001e907579fdc5b810b601ba2ae09d25c454889d29c2e27b531647a9c4f5c7a4726b80a2b3a34670fdccd80adf5492bb2b3243f4727b21f0acc304a0373b8c77c5c70b58ab8e622214cc2c32547231edda680d4bc8bc0e4538e290b2e898b4b19ab087c848fc224c67969fe0802e019f67e49defb8bc419da829349fac55aa69ff4eddc5977ac25919e52435b702382222215ad6461c4a44f4ef0e97f2af09c60051d39e9cbbe6f223cbe64d78a7cdbfdb2b554f9ce0147ee0f7a2ce8fdea35a55850f0aa11486cb9674f526daccea109faacccd38713198fc903c230bc527902d509d9454dcb2ed035513fcdc4c0ccf8ea2a9c0145e65da31c7b30b7b840c626345790666f7167d78eb3e8c5f4288422faf7f34a158a103f4452aefdeaf4e581c89a955fe28aac08752c6bbe44a53d471b979edf0a5d9ab88e1b5c30eb9eb5203c3f57c73572cc37e0179e720ec1f9265f4e1da65aa4fc124cd37d0a735fb27a953178e87e8ced749572e1c80c67d1286676e9e8ab4a33d1ac414b688b71c92b93262be29ff7f9334487e7bd729bbcd1086230249f6307199432e2b6960d087c6560cdf7f7243dc7957b2d5b10c9e298fc6e60217282520fe64641fce363833771626bcfb773816e55be30c5e62aa0f43dde6486e3889a508ad8293628705f30695f092247e1d658dd28709a7820ec7a801bcdfa7e13fff1fa89348ae51852bf4297fef80e46316e47e9fc214b24326e88a6f153312a80b494ade279f7ed3a73715416349a7e5475387637a6c22c4204199f659976fea39848365260f11011f45b9d4d59329a66e0515c99c8430181eca547be1005a18ac06aa03fabd814293045c1e1c665013d166531e4bbed947cdb92f4d64558470b6e7a8209257b95f7780b4b141cbe57b05c58bc58079416904993a4397843c6e30f09069466657b5ca3c08a3d33abef32e2c722a3c52ab1e4e0d4fa4e4cf39a87bbfa8d65585262271ca566d97d14fa267ba3fe73eed875ad1c5ee69b6f72f7ee424cf8cc03fed78bf9f5075059da940d010598ff98b3f8b490fa8f337a9c98ddd4f6c07907d73e92714500393529f3f156889b535ebb28e1371315bdd5d89e28c1c6dd352dd6731af341f9207d8425d17b08a473f577a0b0d2e96eafe001b6e6df02add399a0c426ba6ea59aa572f011913d7a566df911ce2db403ec44e6c40f3e8befc16d03f92dd0068e41f1f0a47f3c41d77ee4c793251f23e0d0e0680935e69457169700f87ee2dd701da681e35c5fa125c958b477e6446db6bdfbf181a01960775d52fcf430815f1e1385742f368c0577df3318785b5120dbfb58242ecde9eca13ed3a270dcf34c4058da6682fdc1a77d72ee656b5a97ca5dd0f03c6b7c25dad510733a04a22450e1db52de9b9fcc3d1459b1f8323949a38ae230513824927074f5499ec28fb79b8e7a29ec1a70a9b7d3f9c890ccefdf8f58e3be0e6402283ba0e71eadeb92a98655819b048582411df044215a12286e3ecede099495737e9e76cd3ebb04bc1bcc01e561357476ea001c43b2ec10bce66dcbaa54381bb1e826a8cb941dd1e490848680b939c3ba433bd127f8c22d4904edfa882b5fe5abe821f7df00f8617e20172b23e7c49c37415e82a5180fb148c411fc7f27747da1ed9ba6eb1de11e691b1a4d3853e010d303b9ed42061c8f007dd56fa4a603a3c8bb793b44dab28fbc85138db88c8ac37bf8a6722f7ae4be0d6e2ea4277460ef7c6500ea23e503f0c45e45da9d89c7a4dd06f01a7ea9a9fd5c8319717b424a058b8eed63a04a49347087016a2fd90ca4a563f8595f66e2fbdecd1634b23e9fd086697dc6c82e03de249688933dccc458a52d88a0019a22531c7fef2d62445b810bfe8a2a968268b3ad108d01259c049c5cb65eed379297a93e477f59af9bc8ff19983b45d1769b8c8b0605c833e8348ea195cb77e4249243537ba23e54d947522deaf91849c3f98751e744e689104633fbfe3ae692a27596e416cd27e10ba56ad8a0cdd158980498eca1990340881ce7210df59737541c1a4f3f73723ac6956728e248ce339d095d1b18e5080a98317d3c71dce0ffc82f88a2e09d1512b8b4a133123429a5612db7d8634cfc2169c37ea8753c31ff581c9b52e4a4bf0af5f28bed71dcdee9344fec3a42eb55f555bbc3949ddfecc8d60b5894c0c80fc1e58e8b6bedb4a2f443e8ca4a9f2ac18bc9419b9726bfce2c1bc8fa3e3715747a5e3416692d8233b2e5d3d7b35c2304077dbb808f7006ac0d0c22a0d00f21de033fe78ee52700ece08da86b38137c26dac8194703b98fbc833ba11f6f4fc463faa1f3886903abf2f89ae4f87188d5173c8360106aafb93a28bfb04051d5cb626c60847a442968755e17473ec2173663bffb90522b6f406fa601299f0c9fd2dca342c1485230c1e5618d14457a26e52339ebc4d6ce5e98e6793601e85cbc210857d6c83e6bd7c930a00cdd1430324373667dcb28c4c813f4bd94a866263f02bd6573301e1defa7fdb31c82078254a247c182c3e6d2915df29dc9d8a25b59ab9129474bd2cbcfdc8bcc84f9bee459378a56245f27d47f009c42b59723aa032a865933792372550a0e2535458701bb789ff534a03737d6b8cf64d71c1b624adf2c378733b0e3995dbf7ae1d988cebf9d85dfabbb9c5f4ac98c40e206aeaf70fec15f1b42b4912d04c3928d5da43e01f99db72cef4411698335e24623fc249e8e327b2f6f246add98a599879ee091b0209b459ac3e3c7ab9220f97f48a32ca19d725366ebab114c8ba1d1c547cb452c0be669b9cb10794b317c5990374e20aa33b1b20214044d747c11b01d174b9457a979b7195dd3ca2763f8e9ccec7300d6a71bcc408eabaebe0db0522496a737143cb0656c7fc7db86e773aa9f1ba44051f3684a2be762155af4a5169c2214ea5fe8867e26cc2e1574748766e1bd0588f99e610703332e3ab67801ee164d10d934a4eaac55044da181692104f8fc5bec4f70853d6facfb0cd6ecb30081545431c62a5286e5a9b197836ebb75548dc078a1ea85e883758cc5b9e3ffd6cc0a3668a314b040c55245c37aa7ddbecdc3c8997b2c851da5409fbc2eff9302635cb8973597052f5d0a802a3a525ea330a82c43d1dfb53cad0670a66a8e1715b1a0707387d9a2823468345f57579f446a3481fdad268978fb54ff609a82ff0b62c7cb34a3331d6341d4cb3b71955c49899088fd02ec5cc95f0f1cb77fefe4f8dd7dd867cc60177168e1b6952b35b623e33c091b6956db222588d49bce0b54153c35e157ae8c06d4143f378f0bdcc635166225faa9f1bae07ae088bd3414696fd6e54c75df377f4d60dbc62dc9936f6e0dbfb89fadc330492f6bdf4ca03555583e81e7f0c80adf9f68863d26f62a98d48d02afbd9163c11b4f0c7ddc1c1d59fcd624f421b2494ccf91857ad8f0404651409eb39c615da35d355323f9a1c7774d90cd668872c6335c646f770ca0b396cab992774c37db2afd4630eb390b1cbc933ebe351b81c9d0b943f8320651877d815170b0bce2a8d06efead27c3d73edd95dc3b747963c6195f1e6a8e3a6786058d50f09a59711dc43a163286ddf2329feb569a28430b034cc3b48dc2c81d57c0705afc24f3464c3a432a434bc33e04b0a730ea9d11e16a4520f950548b662bbe6ef92cf4ef13b43acce4b5a22a5c4bc3bdc665c389aa949bdc7111e58b041403e413404ba479e9460f1b6e9f6480da6ae7c3df272a65efbe198084dddc7f6ceb78ff76a16a1eccf742320b0cc323a811d7fcffc685f4e77e18fdaed51e4d0426657b286b003c2fff5d91343e45d9d3170ca564c96b70d618bf3a011be9a08c713ef0267fe5f05f66332b4dad1b44100a33a57621ed804d045a329765d16b1b6d09adfc5d4d52e432bca03e04fd749d3c7aa12af9a229d0b61b32e4a535e5702c83865999f1103d740381e48e3795cedd2a58221aea646a4580e31fec782cb60d69aa33ad0779bb13907849f602715825a1672cc6ea44b7784e2a3a6c77c4640014b98b6aa31e0ceb622e5ad1ca9b1932cf65bc8c3a1e5cc5d5790ee11c856d7fe6d2407952f19bf85114b71fd55c2e22ef0a733b1c5fea1b0541a5cd8543942240f27c7d652ec94530c39acd0d762a2ca02ed9329704d166c8ca501734aac5d9176dd610e3d2b46c2c5fe03274c0c8e8450eb8c82daeb0b9116ce896e9c777c500c6925e108ed7ac3249f13b229c0af20b2d503b4787f800a20feae4adec1e97a27b86d57b00510a6d046d86142c1c65bba10216dd5abe7a4c2d5b1f5ac733fe6803fc7504b66a992aeb87aee8bb1e3025cc238000bc11f053a3643263efc36e7f6f397efc5aad7c51500bc03349213b2b30cb0f0714d7d39013c081e2456bae0f0ed06a3950b30b57d0a49090309327a0c8ed5a49e48972ff96f276b6325f79637a5288ed64b66dbf3729de64c322b2cbf480bf50d538de8ad5d04bef4a0c855efbc863486a00b09f2728440ca9df1b5e1fd932ecc8033591ba66361371bcdab28469bf26600b7b37fb3921624131d615b0338172fdc262534890fea6855bf3b75f91f6a2e9d4461514997b05dd07ad4a00d01c51f7dadc06289ac60b724ecb6e448a9b460cc42926237a1a86d177c4cd8cfd283a51c4c8c146281d7abadf7c3b51e5817f30dd362792187d77d7f07a86bcc9cb555d795adeb019db499e575f794edb624741e626bda668c23cc8b63298cc4e73ddf500d40f0992659b3fb218c383fe11d159506de9062c934aed501755a78d16023323d9e8561d72441a98a53bafa6d39d3724a2f64c04722ac13902ebea29fa04191ce7a6748abd8c1f8d8cd19876f47419c1c0ccae6038d83b1bdd5dd10bda6983df2ea440a48463a80d0234175d89acf163c0ada2053087ab60620a7e02d9aea8f88ade19b153cd401fa47594ee19734ffa0f4270a8c0c36e2c69bee57171100cbfc8a6406c429592dec19856d3673e1a2d168456e2fc0022a610acc481ca7c4bd4c0bace3ea5a32bdc4c3c195b2f726f42aa7dd3da8d1856c25f3fa686d9c72bba1cda496e96800f1b612c2a9224b4eb847fd447275a40fbe9b37b7bf488b1e412f0e1d3bed913ada6e1673d285c3e3e55db9f3701d6e0393152d21849f62da29a5859969e04a4bdc12277c586c2d2f424b0802caab73728fb879d6bf6144068acecf5c69933bd576cde709cc351e15095906f0b82685b398b41b2b6bee265fb37ad41c61c562e3de01ef6eddc6329fcd06d09aa3855436c08eabb3ddf753a5043dc35e731c7ff5d7aa8109556b843317ccf2c07bac3d6b26b2badfcb0ad1a057e3981fdd79ce470a729b4b570b8461f6f2746a01f29baab0b71fdbba82ceada26afad134acb16486f9d6767dcda6ba30abe6b565db3a909ed698679a9c8971c1d9625da6a802f695867eac4605b2ad0371f681de21c07e3c0681f77943ebc7e77bef0312eb449b1246c8da76ac181ecc9fc6c72ce30fd658a7540cc6d2ef0e841a2a0a1d6bf3f0e1c43738fc5b3da877b62897bd67c9c043472d065cb6d917745c44f61b8058eb0fde97597e533ad3d8ded19b73debf6d88166b360cb99bdf90fbef9bc57f62034484365de7cc6d0867bf4ee4c655b495e02563bcbf8baf2610a3b401db4732b1559b2c426a5bb17dbdfecb97353bdf121cfc033dcd7484489dae259b3a5edc112bf2991c9330f44a051fb358d8c6079859df8994c4b92d093ec00a9e90c53964df024cff6c1b042768d4a9563184501f200bfa019610190d447db9d2353277fd13eb12310be4f6cff6caa6750a86cb87718295703275b683ac496666122563a56e2990146006ac05e2a9a5cd1f9da076d348a2531f3e8ab632787ad5bb852ab6cca4ba76d59044a745d21394c4e0729915e581b31ccb63a5af3fca1d60efab7533a849c3dd8daebdbdb5c94cea6a6a716799cc94bf9a471cf6e171698face0dd99ba9571a973ac0308db5de92087bb0fff341956115eba8197effaeb4e89d45d8e08fe3641967c2967bc9fe11f40f3041a9483294726be2c5d73027b3c59c956de4b22c6bca87008985d525661eaa095357beed3d1503d86508028a110cd8ee2e569c51964a8357ff5b1a9444e840e6243e398a110c4ac7b055fd318e9a7272722878eadda8a9e0cd36d3ec2e7946852223a33f6f6425df6a91c965fe132c50fb673e0d69b65144fc5bd924d058b176b7a328768592d705807dbddd66a66f45f887561c45b6aab4e62d9bf60d2fc3e14529e2ec01263a51393f993ee5c7b27b3dc034d30b8ee31915bae04b3a4254172def3940a1fcd64d16090ca77d7e82150e8fb80733b883df93b903e41d799ea79fa850aef80882bd33899d072f1cb8f3bc661b61ebbdd70f1a7f009589867fe6fd7f5fbb65e86004fda8f4fda591b2bd3e9cc344fd4125e37b750e03127939156acdb4f14ef17670887d53d04a37dc740747e02e8fff9deb88f942b856ead2293dee96a8a5ef40fe9f5e777f373fde1d19038dea4e685543f8eb1b3840b829da1d757c3c9f9a1f7ad10c39f018e7fb47b895f2fc696646235191c54c8212172b0b709397b578cdf74cbc4aa28f9c4453bdb3d6eea4ede52571fc4e84779a075fa7e0e94da3839c6c2682aeae0851499dc3a877c22dfb3153c18b625bf02f5abfe7882f4edb14e71b76e563f5a60cef149cccddd8541c51fe09acfffef9b33f277bb1bfa412ebdd5abae4d0d2b10c1e4a29dcead59510428f10a511c158099c73a0c8bf585a892cf073b276ee894a6929b202597b90aa7f33b96e2897a9202beb7385a83c29aa815bee6525e6fd3ad63d8f551b8f69c398d2ff5f0959394c82eff3109e500497a3d8a854a082b67d5e5b43f6ad5e754a2e5ba1f0c4ca8a5aafecb8c55ed408d86067acd764a77244858ed110ec5a190c4daa30506ba50e9528681041771d9b1e6e56f911802559818bee9801318c65637d0d2826df7d19d0e17412a02e768ab65d8aab3c3ac99ca9bbc78921735d3307a19d75bf5ba6a5ed99fa435d20e57d0400a19c8eeeaaaa4686982ee5d95ceba2e5f15c66969267362fef58305779a9ce399b087c6106549cbf4c3ddd5633b504e0bc99b40af3a8e62bd2832ad9db9d762a06a307e7f9245bafc4e481ce2fe0fe4ec5f396901f34ecbd51da4bc59326defcbe5fdee0df36bf2d10b404f5471006fa2f8e6a7365d4a26e3e79b44b2249ce376c6bc5a4aaf1acdb54250f2f965fb1772cd6209a77192d63112fb6b8c81b29626cee47bfa3426ad4138df9956f2b32424ace40f3bd087e1defbf2b67fa37bf015b6d698e41ce797dafd1290739443d0cfcfea096a35f28cbe0a1024350fcff70020d51c30263560cdb99d9f82db8b69489fa44369dee511d19f596d5559cc322a8ec7d8cba09dd6844bc10c96803b3ab4c34e00d6fb7c92ef2906d6fdcb18a0af09984cf150fc797e2b66f03ee41eda247345b0d9ccc2dc8ba3f47a7b5150f5433815c61527d6e64ca117f0c2ca63a4ff35a6196163743e46e8944452421c73ca0a112b82aefe614678e716e3e40d0d9a2b0a015196b37a5c25f7aa9a0d287f424dad7d7589b9cd34db50dc778194e9a2606bbf2436c5ad5bb5b7d9cbcde21078c3ce7b1d0402a096363e3b721117f32d2126843add8c85721eaddd5b04235d45c1a2eea2901c2650084500cd1ce2610a4018d70494e011e91195ac2dd229d6d24c44eb9707407b4d967b2eb3e10cc040170b50539b29c7e8192c5385d59396216f099401518ba27bbe3271d29a8029dc18384830c2daf8aa77e31cf371409217774ddf5371b1eb54f9afca7f42570e89d020419b4432c2b6e8bf87f30e44fdb3db2f377272c2717bf51a8f07e6b87606f7e98ea54143a8d008883de87f3d384a10a689ddf08a66a565d00c8a381ab4be7cb51945aded27c70bc8ef501df4f478a1b6a33a66f8a7af0d95bbeb9a95582c2bf4e09a773af537240a10c271f1e9328a083651689b74340003ed91770cd1530496b98e36c61de2c0b661460eadbe56d798b27d55ba8a998c81562d8e9f343482307b4ca34f207ae4b66f5c297834ea2b9a2b24b0cb5c3d36974049f5c3a5aebd9e18695b221cf0d02a39d5ff9d58c3757cd68845e7434520ee9b8ac07cf0628654cc584093cb88885d6b879d70166e2a0bb608c400447f970743ccb4404927c93e560c32911b3a43b8ce37fc7ef0ba245e2688d51d6b842e5c0f561b82aece717619e16e56ba86be2c8059d9bdccfff2baef7a852f80da2ce5872decd62287cca7795e4bb6c70df543ed6c12759fc37b26cb9a1953c4c3dcd3939e00bf112855f8f54478355e1f617cd3f7a4b382ae70f3910e746825d9ad6faabf0e1d731513e11ffa1ca5828dc06a470652abb9ed67554df920ba2a8199c8b622b9e32df2fb6adb85d23bb1a14ac28a1ae9f5ce6fbc00f0dd412775e4a43f0faae3df72d013a0f7f4ca71e42aa0d770f1a6f7826b36c2aeaa04b16277b9ce6fc01e46cf0d776ad9418339a547c9a6d6bd0ba4c0b836176347db79b471845b1a6c14603578908d86eb5c8c8144579b79f07d12df1c33b33f8ccce2e8e489acc153850d031e164dcd4fd96a847f0c131942d943fa8d501c550295484f4ba617764fa6abc8ede743342e57e72d9514a23f7167115ba9f3832280010e2d4969f2cec3dd91babb550258c726d1c8c12d019ac711508ff347897d25d800778b3943f2d2a82a2cb7bf5511dc3ab79126983b7fdda6510879d3eba04b540d8e0970cee3c7fc7b03c59f6e1bc85487c50dbbc6aa315e219681b71794264c32b17269869802799cd315191ab62f31adff41fdb18b963daa11afe30eff447bfd03346d8ffb3ede1a3a0fb48554fb4cb9a443bac89b1efb8e9e81cf4d7cdd38f72dc9e065059e296c717bcc7f61601856410e20bc8a4ec4e2ce13e105137b6efc97a47c931a35f5b9d5cb16b7d1be020e11ed43978d697c997dbac1ae204c0271694a09c049b807aaae226b94b9c3210fb8fb54249881efd669d8dac01c72bfb08a049d1adc87de38a38ac6b9783c6de3edc7695262027f033c348e340d86604ec6a3e3586b69b0ef17bc855fa88cbb0ce55016f6f1ea13e79c5aa8062e8770ad10ac785fdd878c4d6f1083d9ee0018ab887ac1e15de3a380106ef951e2b24c0a357af83f827bed80ed0226d7604e46eb6d50a3de7bd34777613d1ad670c3bd0a9b052575b666c8e43849b760003fdcd1a5a4ac4d07ffca4ebf7bc3442d5832fb3fbd6325e0b677b589819aada8506564f918bb8aab487c20f5434c1f60efa80a91a725b1a3e92195b8898494de1ea00f58a2868a2d5ca30653f2b102593b51e7d652b3e41794fccb36cce81fdc5928378c5ba4a655b2d1ea4d9890ccbbd87096745f0c30acdf70dcf0cb039d7b4acf4d9643548871832552b7c18f38d59ffa2f70b600382a09368e48f60e9403254ce0c4084819b10ff5223021251865693f60d38cd3fec38ec6c9dbe435bc4cde509fe4d55506c74262bba759e4b5a8643180c6243ba5688d8f7625c676e2cc414b00c716c48e37aec8ed06496bd278e7349bbdcaf4ec385c6ae18d2e329ec4483c459cd1ad2be87bc84e5c218572b08cd227ce931960b77579eac8d0a630e4d297ab02d1033782514431575dd0ad47e98075657c139a8f1bc8759841ea292328838a9784c43fe029a07bb9f537556cd68b4fd6b049a61c1b42dfe9d1391acffb818ada9a476738e08dc8106bde69b7c5e82895caab445e35d86dd21339e5d4c7416430e092e20252daa0704ed062a57426378726b435cc6bd3d84c8cdca920cf61f513158c28d2f395013934327c11f296f9b1fc57f2663ebadb5a8936e5b4091dd00399817666a4eeae42af206e2e66f71770cb2e94ea0e4df562b46daa53d555283afa548b92f076c4d4817cc709b47809a37b4b5c758f8500e26cdc6992f9efb00bceb102dab00dafcc1b0cd92230963338b6c3049eeb5e8a9b2311c8c6aea1a21cc68ef311e113619e970315c20a99120ea9b053c032cd09056794cd176905670bd1220e47485982bc7e5da23fd274f1697ef50b045f0d5c1343109822fa3789e028a4285292d7f398ecbf8b4833cca5ae5f9850a3ad3cfef2e7517aa4b9b84aeac109ae45fcf35461215b1634b2d6f1b3f4ef57fcd09777e0ff78cac7468bdfed73d56a2f6e3821d942772aadea60c43932a9b86c6fd9914a9d2835fd31309c21490090c1f403428428834abaa442ab561b6c2f73cc8f22f33dceb977270fa831af2ffecbe13d2c001111bc6fd56fcc598adfc8bcd7f2be1abd581bcd3c25a1b46f930d0f8a55fd371aaf20361527dd6887c4a6bf8b1a92a5f215836685cb7557f25d8cb47e05b72a4e519327dcb89a3a4a4939fb191b704fbb9ae10c0770185c2dd1aceb7afd10173379cbf53f3e6090214d87bc2b18549000c9d5ae94ce170ed6d1eb169f104144721acb81bc5a28d010afa7f72980e550c1628d440f6b7199253f247885ea18267b10e170a30bf35ba00911fefc15b60ec7e603a00257fd1395181de807acafc1cad87d345e9a22db871734856d0581fa26f08fbd458cec1a882bc13a434c2c7957d1dfde4311ff6303347c3912d06999fc0c044f2d3cf6e1174264d31681587009f100f6cc5c738660109f4b6d9f585ad14beea18098be37338ed1f0a3650574cd817643a165050b2aecf3b3bdfac165488d174787355f2bfc9f5a327d287288f11afd6c046193c9f3ead080fb54e5b2a3f7ed9939778431b20590920a1719aac397ee70fcb1a6c539decaf4bea02eda2490d6c0562d258582176b50fbdcea44e69711c6756e161bdd83538df8adf17e7619760f79adcf241e04e6463b7f50ed884bb2123d08319e22e3856872c049bab2c1b233ddabef2a3e3bfa008a0df2d2cd87c804284fce747602e7df2afdf9d758d73b00a486204827ba368b8f20e44b2096d6d8185e7dcd4ca2948b6bf4c0b2322aaa226f1b4bdb304c42cbe442a1a56cfb1f3336cc7b9162430327c636f69461d5c3b4fd6b30d03cca1c606ca6457315bb6e3bd350c721f7dca6be6068894a3be7c2bb2ab712e592e53c7d97e9f1335af5263b266b5c6713321405642b9039aedac5fbf9f5d3be01e2e575da013590996e238168893f560e42d7f3f60501f51c8b77bb980a96c3cfd99cc0f2ec707b9d8be0fadfca0f86973baa8fdfb0c0e72763c28ed917b2367de20bd453ad2995f8d4d2f180401c1c5e0e97461503ab14a3c55d65cfe04860b3b5a956db3647f44d83a568b6d674c983137c16c6e43b2f3319fcbece3c90d7823b5c166f4838ca3ae878c7353be3ffa98ce7bf377eb9a5091d76d58ade520fccd4f62c54d472263b882f7190cff0438e8f6d6a66029b9d0a77ec4da4087972550911bc83a224716b217f0d8fb9185f96f6d199abd99b859a7c4ce32223a2b2391594e899d652276367362b39f129dd544f46c4662669f253aab81e82cecc1cd9906fd2d9d129763d0af12f4b71690a1e339e061aafc8e8793e13a6a2d056aeda8cadd77c6e10eb8c1ee9127d1f926104903577f1d4da70025a8dc3a7ac07d9a9ad29c433e39fa54cbffa6e291fae84b70cc9593c4ad8826ce836f5e21166e0622727c9c747111287536b6844bf652046fd66ccdbf3aad839233329b45d500a7e1400b18929e8ed8b48bd1043e694b022ad56ee90c30ff6f0ff9f00d7fc126218f079ace4f7e0fae7ca044cba29f95d3c1ea72b0d77efcecdf9605d0a41535dbf40d946a48972db9f67fcd979fb617058986e91d72935a7242be6d4b1702e931ec66e0400d2925480b8f09dfb6269976bf5d3bc0e227e0e0f400d44ffde6deb78980e9cb9fe7457531e2db4346a105f3a455e5a0a811919a88f1ce34d19299adc51d1037ec351311ca0738eca8460cfa62b94a80982537be0937fefade1534c18540b4f519fc74089c5b4de552170de4ef6cfd1c2fe1a8d5866fcb4a9a5a0521f3990015055e7d71036f19dadf2fd1789401cda3fe5ff40ebbad00b5f8813c0964462c8761dfc1c98920eb47eda34aed9d86a0c19b85a5d44b9893eefe61a12d98d2801e86c9731950617f2e8ee045bf6e3627c88c46dad355afb50cfcaf32ae4df96880a2c0336b5b8afbd3e98675ab64b680382bfac1d632ad39cab7af9a21d6a37034de9a5e3aafa9a5755b6a9e285defe20337be8c3d7c1dbd2345a354c18499406bed16f8ba998b36987745f2c6f55ca9c9b1880e24b05012bb9437bb81755d9df3b91a3b6fed1468d2eab1eea4a98c226b482ca01cae687055dc285b822455c7c55b93fc8637bf3bac7190b7851aabea962cb5d817c9e0f93594741120d6dac5b40d561e0c2e44837b39e5f892fb31ae85016b6b6e8ce92f7b9caa9069cf5745821c395b27ad6d2f63e49b6eea37c77f499e6f43746f1656ba9a90ba9d8ac6b58bfc147e898a33d26bc19674ed96cbb44823908b89e5f63c54fe9b959627bbf48781eaadbe8e843f6bd1acc29bf3116499444637e0f9d1db8d9f50bf65d98182289b89ad692233fb311784ce19b78867380dbe274668398db6c7ec04f59ceaaf16a5ccd7be53bbb6f54e7d6ab86981abdc88b3311366e2ed68e93bce045ee9aee297648db5cc9a71e21299536a0ce153b5ee340692d522cd4f5b555f212964e6fe6f4a42617cae428ed7dea3bf30419305aa4e4c81326fcb3b9766363763836572b70abb5febbfd81b397ff65947fc2861652a3f1f02a5aa5cf253300b19a052b46b857b32a83275392c17c97677a1ccd9347bb5a9cba507bd0a1a7211f086a0800bc56f0904b831f2ae0b460d6eebcd73c2d48c8f37f959560225016bc655ce045c7e4d016f023d76725a6f91f702e3ad5a1d0181fe56a41304a5a9898f4785b3bd59924027a07bcb019b89de17d0b7c6948821901bd7d7482864bdc6a39d1e73651892ec4518c83b74751cbac6a24bf73ad0e2c4bd0f52a266d3af42bfe3b5efae4f3f01782d84c4e3a55affc4b340dee39343182d36743648f50564213c970c5a1007f4039c4de52882b124494dfb36233213eb2a93b5e92b9cba7eb967858c5dc14721ac981e6fec4a48ab44a488053ba58f39090dfa856be74a4f3abf53b97fac9818625f1e9c9e35d510385dcfcdaadb801c8e768378ef7a0c51acf225373f8034dc60a2ddb3a976ebb20e22c290f222f20c870ca12bb82cab17f1f35c98692d7e6c247de688d9de7853a92b72196349526871385ea577dd5c8d2ecb40ebf87e92c849d72706eb48e75932ff9fd01b038b3fc9d8f8b0e42c9a4957294a5b56a5ef4d1241dcceb0b61e510d8e7b44b6ed100ab71b274d6ac6188d07d0388891cc827a14b29455d033d5db267112cac7f11d40614a3f6493c0f444e9935f7373b5cb4b952217aeca472996717c9d39292432ae4b64d13019220577093d28ba4e9c430b83877a3f379a8a70d9831b9292dd83973a13ab4e9d810b7533b7b454672d06ef53207bdfcb18e830b96b6626a4ac6776430fe0a85d79915ccec7ed1e0e37d192de1a6c903fb757c6fc8b91ab480d6e4d0f3db02b16ae1fd7ecada427f48f85b78eb5a6dafebf06b10b91007aabe1a171fc2d5e9fe259ed747dcf608274ecf0defa129467591fcd609e659fa15502eb5dd313f92702385a76f0c89b1bf910f5363791669f08b287210906b34ba475ea22e8b4cc888a3fc4b4629e8a311f641446ff4460b321f2820baefbc05a80673b72f3895ad357eab404024550edfa802c5004a44d8cdd00f3bda2f50c7d3a6ae0bfec20c066d58960738b60f6410cd1aa3330f0bd4dc449882f43ed8a57cf8da8dd218f3b691bd2509e109a72541b5b9d2900aa132e3438080aab60773eef8b0e27cf69476aae23bb0c8558a7c8c088759b427ed4bf22cf92f026bed4e0b6c33faf65dc8c65700a824b9821e1e032155e6a0fe3dbfd6d5b432d0c5512bdbc14032ac7e2cb01168e3508088ab121906cc37325de7a50989a50cdcb29237f0efce78312599b1e96955dcea72c05b0f22e45e0ee059c7d2e8237db8285a45a10479064fb5e40c6f6ea27c1525847395c8b0304ed0a59a1daf79e4103e641dfa60031bb4470836140b81def4b41ac10157052cc0bc26ec76a0135a5f4b334c7490604b85a439c84ab864a663b34022ee1995955a5a9eb37c8fddb1b460b252eb9621291432cf577ccab180aa94ed83e81898e9c44b28a6f561e81db78316180d4e509ae645c8d0b7402efb84df73613207b5a64839339d420189fc5eec8d0df3ebb9b736693cf1cfbc1212ce60e2754a3589f5f93dee33042256624a2a17d18ecc61ad5a642eaaf7c9c26e8115554ab813671de674db03370017304423127d8014fe8ff8d017e729e04bc041803a7db404c94f35e026acda9102f702fa55d0c812f5308182212202203017f79e6901d856dabfdb3f57ec7b4e28e6008d30c687ea03f740d0202a705a3720c7c8781213530eb34b072d7f58f89e8c30e644c618f59fa3f6c0202c6e3bf40e740c4f5ff7c85f0b42dc38684afab9da20f6094f435769ba58aa1ca7b61419c3dec98caa4f4f900671030dc0279a20c5a7bf17c2036e75f9f450ac3fbd514b5d982bc9f8d7eb010182dea31e3dfd058f6977bcd7d256e6896085dbe7b3e6c913744e401bf732dadf3abc03710318b07117fac903aa205d4698f731411dc07e9e12f90889916516404ee9c7dad3c22626e228ac8efe7a6146141457c1f18627f9af8f192925c17e8db7578282c6e2ddf7dd0735c461a2f30bd3d3c9b580f68a2ed32e801372bbbe8b95b18b3ebc6b0a8e154c29903d69baddbcad12f030bb1c9707f1f80fd96607d74d98d434c57534de31458ec29371238f25fb4dd1fff9cdf8fb64afaa7bf8da1404d73cafd88c243adab25e10ddc3582dcac41d907be0b9bd33c55e67fabf39e90d6b53f5434932c6a128269a411ae4bd2036409e2ed23bff520dda5db26f332e1faaffe16e85e5d8de991e44d63e72dee688db852ccb925975efc0bae5b20c570c860df2adf8b32db256c8d0181d963bd394ba99e5df972558eaa93b1ade9a90ea109a0e794d35ecc6417ba9808876a98ae6672dccd627e45d994a32c09c16addcc797cd16c02d88c5f3860df34dc97561d281290659afa098d6ff73703b0fbd557310560b361dbbc1233bcb2e681f65359b9cdc781b40822e05cb2c692dc7bae45f0eaf94aff59dd83e780adc9f9056ecf89160e668cca528bb391a65d8fa9306ce07ad9ba0cb910c268160a4680508e2f113c7ba572e50dd9c292ad3b4de90a798a9852310aede8b2cbf36a9b427370330e56819788c9898589f8800c5bcecf0b9422bb90a261c20566426281a050ab95a4a7acf1c2f5684047f9640d5b3c7c32d6077f01574848f87929d610963e3099d95e22aa6a380f8e69e16d1eec2f10f9a6f300d2a25d85b537d8c77f867bb9a7ba4409afc55440ef810222c98771d9e64745304821ea1a6abb0f7a35569b00601535d2e7a6bde66c0f0297b4970fbb0d05a76d20b761652a6a61e3bcb1b8108009c4e0e5e91406af8f8191221b4ee268ac7b773ca435d845ffeb26b91837b6736b17f84ab89158325f30d5013aba20480c7d1376bb1a8f0043a308649c0090a5b7a696141d69bb1d5216b33593356dd0e863b91110c4f9e56794a76c16a055eb2e071b8a0d2bdc51ed971ce7a994e2274d766deb5750a495829e65eca952fbc50600810f7f2bf9e40bf1ceb98a97f6031cefb893c46571b2903593a221c4cadcd908af330b467d5a34db108817d4a597115138a23a2c61dadf0a2376c5d06246361fb55428762024e8c91ed3cfc4b949ed566ae45be84beb5b67bcff43097af1fe68350ae8df625538c31111ec7136dba0d36b81b9bc2fcd4be65e305949744da9d015d0c6f37494bc7faf3bb39cc3b3d4199164436344d7a302ff32059d46b96d31ef46bdde48a2bac0e80e08eb9e3b2f8ca852a1656f98bf9d8f6ee7b764bed997fa34bb2e6ca22548572ab485fc9e3c8b037c9cef6b0b421b03574c31cfb8b308c64ee2adb8f097f1ec47d53443a0462cfcf3fd0fa1e9f05b605a0397f4e063562457d711330a0d11cb90f207dd600d51dba542c988d00224107e2785c2677ceb53333b6a9b19227d6a498e9a3ac4495d8a06449ffd35a97da513e443f738f89eeb48bc381c1f73628a2e6237486b07fd00ab331e55563048df69960051b854e82543d21361bf309d4586ea4958320f4a6bd0408c378000ca2854fc84317dfe931e7c1f0c41b36b0f9dc0dc0ebfbcdaa5b25d6771f9c850f9acc3ad5f0ae816d1162443236dd978475b2335b1155932f4d9381b6f2bc377fed2b31b3ae75f051b4e01b0af452a9d0c8d345681f1e9302809192320b04287576135a01233603504779590700b0d10b36d2e87ef2d7ba0a707c7cc26e9a2fd5b26d71e67da9cce430b8a66e431bb0d5ae7982d1981d8e0a0aec496bdd30961846808b45cce950a3d6401a1cbbc03ffef234bd071fdf43df0b9804b236ea7bf3242ba5abbb7b2f45429b927b3decd4f82015b20d8e22b1152778f820077a535363408889fba48029b6a69ac9a5917f20bee7801758b89f1120b2765a3ea45b81b812deede5c9337b86b20a74a0173abc23a6e16385155b16c090213b117d0bb3f173b6070d7656c397b9ea902af86fdcfd6bfb1050ceaf9383f8cac95978273e8749610070c4ce2a64c399a31b12effd6e4c9f38ae7ce1f78ab895e4cacc1b6e35134dc76199ca974476ea54b79d5a3995300c90822c28f6de7bc355c0e2302e8d2efd13c2804cea58809c7e25c7712c6a082812ba0c90834a167dbe2a5350630daac90e3cca8f09d0cf0b7c723b3b4d65600efafb476e16b5c3c5f9a628d20e26769fa95d6e8d3b67e526015f722565af3257444dcd9b4a2268daff8e786fbb902420aabd746ec56b31b27684c1b9e58d96be7ef0fc0dd53932cf5df69e8803a79c838e9e0e447eb840182c13bdbaad9e2a9d0abb40e5cd595f59cc478709723784e6b2d17f465d1c5c142c5083b4b9ba45a9ebd881bbf6d47f38f1152ffa99cae1cd48bf45b81775836c5026171802e46ba2a6067252dd850c2e7eb980560d9c2fea184d62c01fb01fe20f11951713ea760949099052be0e728a33a506609c8d4183e7aa18655150ef24591a82437992442fca722ed4cfef668e8084e1f55613e160cb8043e0104ee0c5a2016566d0ef267fbb98c43a5bbcb2494ed1d77a89409ba52979dabc783fe8a743fea89bbc97ca8885b13a7864b7e9b05c01900f0549883b1fede074ce5cc9346d5d4ee507d2cbe36e43a44156e23d66a32bdb2bbbbbbb74c49067a0cef0cb30cd555b77aead6ea6994aa54d387579ce20da617a334d91fb74a19e4eb15654d724cece7a528734194c9eae57eace927163d48fe8b01878dff3c1553aa2c5126cabc93f5d316136531f27594db2d757c296e4f7460cb5190b623d4ab92e56754c5cfb78f9cf46ac66a08b10485a2eb0b39e5aad40553aef2b1472a95baa097da5757f93796dae75d85818149a56e103129afdded91ba489070f11c2e2e9e8387ca34111a27e2b293c389b8b88d13a1b95a0c4ec4e66a49a84c3b8d8357832df9f62d4659315c1acfdb622c3f4d7e4a3c2523cd9a2d199c05a859349ef26679e2e2258b931c5eb234a1b91dd175b993cadc961f95872b7b8389be8f0779c3ebd8bd9e34538dfca9542a956aa55c135da96fdc845c7e322962c9332942ca4f264710adfc645284ec9908e1f9959f4c84e014f9adaac6f95bacc9ed49cb0445d9a08421d7eadd5806f94e35f2a941faeffbcf274fd616a3324d7eca475634d9ae890a48dd91cf1d0131c1fee0835f249a5126d81f52ee83ff73318a48d464efc096a459d34d459435d9625826faeaa528db7e36d94db123a126db557714a41d4028e55690ff3928babe1ffe945835b18616bcc65982c408bb9125a8c9f61b23cb4fcc76ce02f4852d49b3a09f906a3535d2c0f93c7553397c9ef23035d2c069b25397346bb25342f0a72e8d235ed8728b117d29ca5c7af02371b9b40b5bc71208cf973c98e83bbfe1239f5ecd12fcbc9d4b825d02916fb1b9a39dbc0b5e82492a4e93edf535774c5bfd7bc1e1eee5288806fe2d3667ead7382db2f57a4dd6788d975bac662461c698b1dc884a0f47cbc03df5f5d2fe490b324e3a27ba649c34234da171e4060bd046864542e7d0588c971e77040be32bfbddb0af52f94c79cc2dbd94c778981a63c62d964a117dfb8d9a19cc0884f6fe2a6f981a95c7dc2da61a3799ca55770bf260dafb87c2c06eb21aef538c97162675cb9abbc9629e17d332372dd3fe79e7bfc56496db7ae7dbc8b74b9489b25e4d114aaf28a510f8cebfb14cfdf7d58f7a37f248bda681a95a6badb7fcfc1be7a7461fded7fa22a91229e72e526f09e4f5d51b0c5b324fbfa6c8809bf23afaf0fe4b8d5da4bbbdc31c726d9106cf436f9e5ed5519091ffdc026c93f2cf2f40592efef906288be59f9773b6c34b7ef1c4e025e7d87c9e1a3f214cd3cec3b4f970be19fbcf7398365fcef7b90dd3e6d3f93e7fc05cbde09f4760b268fcf30acc1d03f0cf1b305733fe390e7365c33f9f61ae04e0dfe73f6dbe9d2f86ff7cc7b4f98a7c39fef3014c9b8fe77be13fb7316d3e2332cc5500fcf3d55cc9f8e7347345fae7e45c01c065f012002ea5ffdc4bfa9faba6cdd7939a3b60f0cf6bb3e80e95e9d5e89f7bbdbafe394f9bef08d3b47ffeddd287f7d57ba78ecde3c4562f7ba78b344f29ca8284b0cd9704876dbe17bce07cfb97c3365f0c6ee8b0cd3745cdfd74befddb619b8f0630b7ecf6af08db7c3688b95f916fff78d8e6cb010fdb7c57a8ae911eb6f97820c32d7b87b25852b7f4705cba73846dbe1f24619b4f082f609b4fc88ffccb0bbefd8b01db7c4ea6609b2f4603b6f99e7c36609b4fc63439609bcf490cfe8b4df184069fcc063139b8826d3e221eb0cd1785e5e7076cf315314dfb47f45df15f948f07d6b2fcfcf7836fd14b51f61d8eb705d7bebb5b2c24c098c33f21b0cd2745886d3e2a304d7bd9ef846d3e323e276cf399f13d611b50c8f7e4db3f19db804640611b30898f886dc010a8bcec2f0adb804d304df7b7fcd4969f969f6fff8ad8061c8114b6014b4005b6017b402a7cfb4706db80473e33d866054708dbb01831826d48b024d886de20a3e6330346488c110f26f1ed6008d8462b629a26d86665d6115116693602b6018d304dbb2a04a926dcbb5bda7a5df0ef8ee0db63b01947df44d7f54daca1bf052476c7688374f130c748809035ea7019519f778b5b2e63b782e0ff5cc788fa5c87bbf86a447db7c70e2e9ec379a02d175f798e0b04c503b77238b772dc9cda72b9460c19b57278b772b4164e0e37c26bb97897405c46a69535eaf01ce3ca5d72f84d73cf91186fcf31ce7923c64318467e1c376a6062c00ec78d1a9818b0ab372c5ef2c9e225fd12a5752c817c4da56e7848eb0b23929c53cbc5bfb1ec579572bc22961e920fc8932ac5b6d74dab9473e39672c0d4f692c165258939d3feddb2db5b308cfd373b73c7e762f29652fb167719392526e7c49c19c0c81999334c3ed6abeef6ab626eab60c0cf6b88f8cf6bc61b6309048698f187cf530ef6b08d5774c3cb3ec2362c3d35e0916f5fc1611b920f0cceb7b318619b124f8c1bf976128c6d4ab117db6c2fa6e9d7b76b456c73d3bf32631b4d6ba2dd2b628105bf71cb6e67e95151f11a969e6f27f98c460e43f2e1b1313cdf5e8a91480e965e3468dcac78fb5c1957969832ed2f8c2b332387c424db6d8c9c1026b72bcc4dcae6c5dca0c09b16936cd79a706d876d26d388debeb2c464cd2983f2f6951cda5bacab6f1fe35bac5725734fafba0bde5b7eaef252fb985b7e5e6eb1cf5329ffaaf7f44a754b7e98d42d835418be23388e206946db412335dc6f694ffe429a7dd770174023dbb770c12425f77cad166bd0bec73ce33fe79ef66fe49e26fbf291468d65f72cdc32c7971b98045cf2eda6b1e446f0ed2d63b9c204e7444eb96d516e5228b730b61900bedc622f7cb9c580d0ded5f54e17e915d8ddf75d1fde835708eff9c88da1c99ea28e72237a6db14dd6e406657b52724fecdb998f987e18c84603080761e1e32f6e10cef6d9ee9b6bedd3a56942b402b41fdfceeddd0de4db5d88a6220eb42f4f52db5efbc0370e54737a359a249c04b013e809949f405940791a3f81b290f2e10847497523bca564a64aeef9af6603f6731e7d4c1fb5731e79d4df56b66f9a0cc3308ca1c9f0ce5107e8f3dac01c86d5865e859ff368c3f8d900a787ded5cb300c43af73702c79d4dfbcdbbcc97096f8a6491ba6979a6c9f613a7be825fb4d9336f00c1c8e2de78f1d3d6ac3105bce9f9ee1304dcf3156d5cbe905f5f979399ff0ad33b7f87608ac422f2714e64cdfccd02c6df3cedbcba905f78369daf9c534edccc334374cd39a33ed220efd906873a4fe836d1847654e79b10de7885ef6330fdbb00edbf00ed3b4e60e6e02e7f36e57c1f976ce99451073188a59c3941de1db4321b00d10be89b9838639b3c3363330144f7a3527f9ddc93a7c4b20ede5f6a0b7e8aaeef52abced35bce574f09673bae779bdfaae77cb1f9d7783f6f3d6195aa6ef8d90710621b6f47ab35b3802b62eeca45ebdd95ddd757426ab3373dd358c80f97dfde351f3a31b4490ef017a593fd746a3d115c1cfbbdbabd391ca28b6f3ed8b0489cdb96d73ae73221b91cd4327d2794e24bc272a733fcd35274222ecd010e85510eaeda48d06bb24c0b79737bead8aeb06bbdbdaeb599fdf79e9d65aeb4104797b83a81e087ae8d48ea20822e15c6544228ef532bd4850d7eee644a8e644a87f4e64e39cc8b7b9d771bdb546ef9c3174c71b070b8960cb29a4037f3b69a357967a4980ef768cbcb4aa29439dcee478ea3486a73d436ddb48dee202f83592936e48f2f9a097de83e424920711e449370831045dd334df54907c3e1a91a868da0d42d490701709ce89741dc779e73911ae73229c5727e2ddcf89d47ba221789db2be3ba70cf39c3e5df39a26a7ac1302f29a3c3b7966c53065d8bbad0c5b4eb781859b5e6dd4b56d9e3dbdb671d455a558ea35be6d7ed31a6562a491b4c9ce73324f25423ef9c4f133068d5fb05a47b274dcb62bd83977cc9b1e32273321f2b060e204e62b5edeec522d98e0d09f5830793dd3d8ff147d3ff8138b1dc4b060d2736a72e499f61aa51abbbf6cd4a7a5ce54a39ed751ad529ee4f49252d628d528d528534a29edae049b4659d3ee0b73a6f9da601a3ac1d0c0dcb179de074ea151afd3386ddbc85e695ff2a67158ab08b3b3495125890ae71b5521b2a3cfcb7003354a33492663d886bb9369ca1d6cb3dd09cc1df4fac03639a650476948014c960fe5007ca075ab2449d6808a3958d6362976d338ce031bcd6f1fd05ed07ed0194a44db983b366fef8decd5fc8eca905d45c7b300395eab7324dd6d29ac375a249ed76dde6db42a11f29c7352d94f0fb76ddb38dfdce7b66d3c0829a5746c4a69db9fccb729a5e107669a18969dd251a3d4696b52d8cab0cc44c2990a399d4d889380819dd3a6e3662050378c5ef311120f6cee437b242f140fdce29c5bdccda9aded524da394b64ea879b9b5cf1eed6590beed4104f9be4170def9f4daabeece49969bd37b7b689ef63f4557e75d37726369ceccb13b662ec249594ebb9d32752296c805d2dc4684a8e9f34b9762fde72d75f8b97961dbf66a7a10417ede206869eea057881abff5244beef6d82e12243427e25199d6ee16c5b64759de46846008ecf7dcd462a31178c203da9d7703439c209ca9b2539a46c78deb3c56e74432a2d82948073949cb3aa2cbcbd9294d16f37893c54944fb23e769335a716fa706d669726504c287f7349c7938c8877982b6677b398664c459cc199a761aa310dedbcb4f703059737210f5be06698824c76b0d7939e38c33cc78b53ab723921c6f0d79e9dab949b370486e84b7485789e6ed5574599fbdaaaef5ea07cd475eddba78ad875ba5a13d0751160ec9ad11de2255d2a8cd1c55f4a9e5783bb955accf9668455114dd8ae39c33f68aa2abaab04a5529a988764447e2a88e46761373d07ce4e1a85ab7a2cb5a155bef1467bb0d491f6d9ea48ee47d2a2acebd8ae8aae5f6e02d390a0e1eebf42a03a9cfe995e7518da65a4a503870194871d7a5134f172022f2ce061efacb61a49ca42c56c294691faae182c3e02962fdfa8070906da3b104cd8920473411b4831f74315486900c86dc40075a8f80ac70c5733f99f84c6102f7ac2d9d5c36604f2ea55e4d3b965a068b26887cf8130b26c8f8d2f6108e2bb23199c2070a2450f20410c7608893214b180df902ecd92e69440c0e12a1ce08c78932c02b7096e07e86329ec0214a02193160254c5c4143fdfc0903c9733f7fc2480118258fbff9f3e6f47bb26e85f6eca9521ba953dfc6a6539e764e3dd4bc3ac46bce8d9fa679b747f79a0379efa6a96f5ca77954e336efa87bdbb5f1ea3a8f3aa739376a4e6de4bc0d9fbf696db47143597471367228a5acbdb498744eda7372617df44f1c0cf0ad4538696cd0bffc642224c9872b7b8385e70d8bf3fa1a3f990c89c287da1296064f93454df637765236d2945e952b399f4a0e65e17445439210f5ca00dfaef252d95129d22c1c3b99bc967cbb8a9166d1808951acf876b1a8abdf4a4eaf561c05121797d22c17f7ee74de65bc43dcd03dd88db447f71d9057d529bd9a5f3fd597aa9eea46d5d78529956aecbc8ea9b0a3718427a4198d170d9cd43732945aeb489a42e34583a7579dd7b1e3dab96aad41349e54a523ad9a4423a757b5f6aaebd577755a8068ecb4fcb404d92651dde7a8aeabfc93c990246f80efeae7f3e3cf9f318a146152a40a087c9d06b0f3474a121623a59c16ad57f3470acfb7b70035ab5b2d4ebe61f0254b939f319e3ce9e7cf18414b62ef3f7fa8087ad3cfb727491d69125697d49e7aa446f1b56788c8fa7cd7d0c847ee1a527115770d09d5f0f99ae8aae1aea1249ccfdf4417e7ae21d8007c3e27ba06e0ae21d9c9e777a2ebe4aea11ecfe77ba2cb73d7d00edfe1aea120187c3e28ba6070d710007c7e28ba00e02ed90b3ebf8aae17dc3534e3f345d135e3ae219eb9633ee9f35db222199f3f125d32ee92f904c0e75bd1150077c97e04e0f349a24b00ee9209d9f0f93444970d770de58c3e7f45748dee92055d9f5f125dd75d32d99367115d9abb642df8fc16d1d582bb8676e68ef96f125d9bcfff93e812bdbfb0e516fbbc3af9f6ed896c8bb2156d4d84be03aad58716e4f3dd7d9b15ddb82d79e1783c9e112fc7d3f18a78399e4e0d9104440a22f934d956bc5e393a453e16268ccf8ff1e9387a85aa338c223cd232edb3946a56298652a9582895cf560e2f5d340e0ab62c797589f51caa2058ef3ea096690747961f21eb5fb6fcb4085116cbcf4ace94694fb5c4ae8e096cd9d2f2b332f3a981bf6dbd251cad64e951c0e7a51d24d87225a7a757df45e2e22d3f2d402ea310259fbbb4d0afba6a109fe791fa947fe38acee7a51865954aa558a9142b9562a552ac548a954ab112cf4a915e7db7eba9d6db22f704fbf90fd5e7bbc6c079989f3f620cfd4a915ea5fceb4d6d3e705d4981ffbcc443592d4ca64cbb0f7a88904409b0211f2e7ec22805b55841e89bbfe567ce3cc19610f8cf57747e48796aa5c8772987b25acad24be5e50a8cb24cb339fb92e5c7cb969f9c2f49b39c9c2245748a40d929e289aeaf8e2b383939af1d10f6ca69169804477be9ece8345944135d2e19ceab57415cb257935c5a6c38bd82d3ab92e4f36a723e0d29cd1af1f4d098a2baa58a915190674f4ed6907c80be1c05f9e756a51b49301213623f7f8a9e50da1a09d6abd22b222df1a478b35e951d9137c5d3f1824e31faa2af9c295fd21d8be379d69e4eee245953330aea624df605fed439e171ea9e6cd115e976b6e876ba1c2774385f95329b72bb5793dc50ad29e76655a52a6ab23929f31bfbbb548a837dcf26ab7f979359efbb2517c56fdf5dee88163d1c67a4c90663e0936f0783c0264e9a0483c026e0fc3cc937c5d1acc929df7517e87c7e75d5d8a3f332c8abbc1b831069b83d54dd58c712c84f0e29fffc86aa546310a9ea5dbd51be4752bebdbb23a2265b825a7e9a6c016ab25b9acc9925ac58d4ab5758471aaf265b24fabe485cbc14a5bc38fbf64a9aa281c09674876406af4a4d6072d60570b9a558e798c232949ef000c02f4bb1f7ea43787e323922f63f994411e5452851a880c303058a8d9f4c747ca6c78cf58bf9ea48634686d2648c4a2dc9ba54f78944d525754bae220ee0d750ac21f4949762bdfa2a945ed5d4588ad55b7a22abf130ec885cf01b1e86a04aa55239385f54aa948360e943f5e25e559ec2e117c72dfb41bfe9d40d952aa50a69d42f15e4079021be76ce399f77b73a17a5c61f601cc87f24f106faaa98eaa918a7ff0349cc21e535a6fcdc473fe830653f0c946ff9e1872979d4ef031dc6bf1b033a4c4d7d3029afa07fa98b52798c772e7878cb1baa7f39544fa56ef74149798c970ce53b15b106f7effef0398c8bde511970d4947b984addcf65a8c1e1a62ea21af94110044115ccfd388769623cc7e8e22f63f7396ee4b8a4d977bf9a0b037e30aa3aaa9c04dbc4cc7a555ef2a8f556d5fd21a5f2906354dedd9273ea97f2ea2c2a40f53978eb58b2ce7f1705e331deb928a3ac959c4f94ddcf632ae837baaaf29275be734faca1fa0fe0ada92eca40f0963caaf631ee523faf89f1aeeb9c457475dfb8cd7f98913f954a792af53063f8f1ab7d4e1aa2eb0bc3292220883744c99faa29d52d59e7633cc8975631de3131ee32fe78a1a805e485a2968b9344578c28d349f293090860f8c90404525e94894373070eddd71c5f6b8b503e232dc0f9721494e4eb9589325e812d49b36f5bf294b5156999f67a64148b42f64db0bc82bd4b96a48e1c136cfd3ef7709afce7a4d22a08bb6451ccd557851c1f264704fdfcf87c8e9f3f3f433e44d56f2cf95d3223f34b79eacefa55140ba2cca5c6c702d4abb2bede2533d2e47c96266cd32427368966399d935e91ee8beee87438535a4ad7a4134af2cd113d17e5416f20342643727ee6271321b1ef3aafd5432a824edebd1465db931a6fdf887a15b62a28e49250d66c714fece738dc05d145ef0e4d7edfe72e38b7045beaf8cf5f3e1f057d7ee306c1c478cd088e350c9b72d06b3c1c80e8aab9396caa26e534a20df353b736f9a16a8519cb2dcab7d7f1f532969c0e77e4db5dcb710d41e915bfe0e7dbd1350485c84414a557ec829f3f1a5d43518a5a8aace81527f9f92aa36bc88a1f969f26bd62243fbfc6e81a6a2254123ad22b6ec1cfe746d7d091242b49a2e815b3e0e70f60740d4501a3017bd22b3ef2f34fa36be8898c2433d22b5ec1cff746d790911edbe3a457ac829fbf63740d39898d6240bde214fc7c1846d71050904ad0d0925e71cfcf07c0e81a5a32e4230ef938e915a3e0e7bf30ba644e64b12a8bc9a6f48a4ff0f36746976cca2b7c0d15e9159be0e793a36ba8c8100f38c413a5576ce4e7cb8c2e5994a2af6849af188a9f1f80d1255be2e3f958d12b2ec1cf17c0e89259f1d3fdc89af48a9ff8f9364697ac894c8893090de1f48a797efe38ba86708672b6a11ca05e31097efe1d5d32a0202de849af78043f5f1b5db227322a9341e9153bf1f35b185d322832a296110de9f48a8bfcfc6de4a19d3933df2593d22b16c1cf1747974c4a937307ff7c976c3667e6b738659ac6728876be8b78beab4c2bba42119519a3070a6c03f65428479cf05db7789597350adfb58b7a86b643fa7cc1a7e87ac1c77f1fe975e4515f2ba2292fbd515015651f8b1673a6dd656401c29469578d2c3d983b9833eda3a0cedb8d20cab2e8584641a20cc7ec3b2ee64bd67511e3371d4e173c7543d1417ed59ce08c7700e0d2f77ddfe71f9d93d5f2e3738221787a90bfe362ae54349ec34b8fe5e2a5fd179f73f54273575e2b392f166364283d9181c6abc918954aa552a93c145daaae31312b39ee7db2d63d464552a954aa185537fae15795645a4926434926c3588a9562a52725994aa552a9542a0f552a954a8671cab52100778dd2221c5ec700f837e2f0906bfd3a91861a6f01c66f5a86712bc59e346bb670780833f2870118718c21571c638db7e030aa969f9437bd290f6fca6fdc1b9a1a671c669c1f33ce073701d818afe62f1dd14c89a764a44998ef967aba64a4c43377cc99804fe5752c35ed9b5f6bf5af76dd2d7df477fe7d389bbb3595cfb92bece7a157b71865b10c61ca04b10dcb0fd3344b1258ae9833ede5e807df4ab02e88454d8a529a14a134b9c55ebc5fbcf44295df74a9e73461e84c79892735a6bc2cf17cc94893eda9be0153af587445a2511467d5fbaef3efc8ef62544574755bcc616ecc2d6d0d421647064deccbf2d89ea7e18f0cc07870b6e174dec28de067cb3865a392f9331be3cb200f3a0b9b5ba0266950cb385bcc791bd04f06346f3165bba5f72f2f48bc307106cf53a7bc6464853943c63d83bdf49c3926ac77d908cc24330da14c329449868275a7ed963689bea515d2f2e0a83d37ce9f99143e1cbfe791fee88c39431d1c4766cc993246ca7734058aa50f84f6aa4ac5f1dea2264ddc096c59617d4d419bc96442c14c97c86432994c261329bac09bc3c413e573674426285bd8f212b1f30582bf7c7989156692794d66fb76bda0a02642e0e6db0f9bb329a8c90d0543c1a60c7550a84993d40bbac1876f073d86392fc86be209f56ab28fd824e4045bd69e20a02547be1ee9e995ffcb8bb23ccfda9797734c58ce882d2b6ca3be890d607b8b6815b6f46215367778b13923c564794a9832d44f24d2979f17a3acce8b2541f4b24b9e5e2ed48d09bbbcbe8479e123dce30c05f3700f6b2ab0a5f7600a6c37380510f4923f8d7be60e6f45b673c1c8e1dbc5647941770c336c699235f184bcd10b6a925f3f85d194fe4b24d2b0bd19a6a020caaa3db5c71404006652a6c25676f3b0b24bc1ce9f2642bfbde949afcada630a8a09f5aa343d79eaa6a058af9af46af600f6dda20cfbd2e4a4fb971765752deae176031b7ec9b01a2a6eb4f807be68403e9af50542fb0f3564bb67ed0acba867c78182718ee8e297cc962858ad3c85064cd80d2c8a86eed9bf17bfe4cab0b9c3bb444dfe58148c63c0d742c1bab0e56886430b0bfa9683cd10bff4de7bda35c1825e5e22a25a97ac8000757a593cf5d265328f15f6f23a624bef374ddb9ab55699b0b9a357827aa5c9d3d94a5093b44733ba1244590ca32b424f9d05934ce632c98cd8583ad0d12b8ea251613bef966fcecf3d7347b3193634c3dec0822dd58a3868df31c196a359f8d43d26ecfc09927d59611fd3826ce905d51e936c7b7941281817c596a359f9f21acd18f0b55e5e28d8b6752d2203be56e7a399a9764f7ee60c65163c6d094786ee3bc6f66ef4b268f1625e16bdb2dd329af50a7cdb65615bbc1bed8bcad071fefc043d387ea3197d596f37793942729a402968e2c1b17b0ec395bdf7163549d2d7972898d5795a6137cac98df0d6e92af13cd77ef07cd42ec33cd2132f17e1254deebc6cf9e35f729efa0bcecbcbcb9717afd8411004bd34c940d0034110bca5e78d262293cc04c52433c94c264f25bab60d44f9bcbcfa0cdbe23408ef021ef98969ac4243bef49fe47777ee98e1dd866c2d3e7d8a37bd0dd95e2d23b76a8434842d23774bb09d03a14680622d25a32905f09e7de8256a8d3591868ecb30009575c198327e89e85cbd0c79795d30266b74c694a1a10d3ebd939c479bb9450670eb1251195a7a7725a604db2faf5e79b12687cc9597c52429df06cc96c95776f39611c5dee2415aa169e456a3849efae88c898a7d16a82628224c9958af503e98247598895b3ceed0794b87e2a1f3166f41c12a0c45738082116ddef5c096a399c944548469f6d443938c9a645dd8cd5b0af6ca9aa42f3b2619658dac3065a817e121619231d128985b236ce39d9cd57969758a9cee888c53cba5293991c7240ac1ed864fddbe9c1319c02d86a176e87eb478e7415a61cb88e2a1c54f7eba2dd78b5119da8485117d8982a160b1a7265969926d1e277a42d067d1c5decd56852de902744ebdfaf4ca8a5efdf46a3e8b7c9174dec2ad20289e794ca2e78ba44677777b233f48bb1ccd3c98249e3233734c9326690db3bbbb9b9999c17b896282462098c8962f2f6d28e8b91d3bdd7a27eb27d2612a256dfe73075c24f93959dd904e0883a2e265080ad6ab97d7245d5e86bcbc742ed1a6c48a9f4caa80bd12233fa565a8538b93f3034694aff9f903860dfea7a8c94f21fcfc0163ca872b951661bbb57dac2ba565e868c69597a8545756f392e80a2f51afb6af484aaf34bfb3bf539eb2b70a674d321314944fafb88a5ed65aabb749d6a4e876d65b8aeef978230a865a8282792dce882ecfa361226a12b5a44923986457ca45f9a0602ade31b0250a661d05432d41f9f46ad200a2e28b2f6d399a691ce7a20df339d0674417831e9a2ac3acf02c56294bc0a006cb02a3441c5807a89f1a32f03d80bccacbabb88839708f4b0b620ddcf33d58f6230fb7caff2e887d5f441c78899790ab8b39d47c0f3e63e461d751cc817f463e8e7c14712847afe293379512c88e0bb429aba894407a46bef9cba8ab2e2220880e7cd4c982bed82157a75883366d50310750bca1f600c2b71caa730feb2cd210e4adcfbebeb19209d4032ede8e3f6cdee3c7d7118503381f64f15a2b315e89ad3ce955c94b3032830c2ec0c9a98fac307788bee2a57dd120f9a8b43bd64bcb4d3cb5429e5a239eda249eda10d0409f47b3c6e9bc46b7e779de8d46e868294192a3a3d5798d11678801ce38c3881a243935adce6944974723bab8c54a720d55b10486dc0a8d6fd496654a164eededa66e6fe9f6f0c473078f669db7c843e73f5e286ab5f8147568b937544687a684f55247b378f99636e7544f276f058a48437f5743126c8842892ed07bbc51e60c755314a45c2fa64c8704db3d105a0bd51405938cb25e8ae89757942eea15e71d12acf740689c7b8e82cd1d2f45cc19ead451524cd68b1096a1fef24450134c9ebe24518397d79ca147085fa89db73a225c98d7134e6c7989ae14e68eafc2ed625e30e61d63ae388739e2ef194f3df4da8ddc02ebca7a3e8a2ed04505e8f8683b828d01cf4f20fc64a2a4c987307565d9614497294a93f425a749eadb4f26302a7c67045b04db1181dfbe9e7a2764c399e24955d86fba077dbe232bcc19566247b324decbcbcbd1ec05a7572a4efd25a75723ae09b61b42699299a2348b615486ba672262d1b8e54907e7a94fd3149849ca530f5395674be3b1d6350f45bfe96e1f1a494585e4a39117c5931fc04f26512479165d9d10ec1459ee66043b278c5d65247ea193d89ce10bb408dbab695330599768da2226ebe575aa8195c2054850cb0497604406cb506fa23c2561ad101a9e1ec9256b32bfa6faf8ae6d23d563193af7d5b53187fea17edc5f2f92ce35d1155e1ef5bf1bdbe67533f7c8e3f4bd21a971702c792c4fcf55af87f73ee823e9dc5b748197c7e9fb22e96e8eb73adf60602a183635d2e6fef2a22c140c05dbe811fbf2ba77f674349b3bb4293c9ad224bde3688a7df5aa6fa97d5ffbbaa3997df56ab2f8730753c0829295ac2429b2cb54165d37eae88c4b349a51d6e542e512cd19ea5d106c399a71ceea1c059b3b6e541669f0be2f0a36ebd735b1ec250a86c3a989b7ceae0e0876325162369a8da6d89c5e591e6ba45796b4a45725b72fab53c426791ac55bd8244db2f2daa82b4bc36d886e4374d51b45ecaf524437c97a55d617a9db519ba4285e934ce5163d75018834782f7a78a3f6d83395c51ab4176f8f1f5f7d46bc41fb7a4d509aa4febd20bab41b8546746df712992ed15337c94c505e5e3fbee03449bd4674f17d793549bdfb8145c279f9f27aea3088232bf4338e0b0615a62da849a6a3d2109b455edd2e26d9b78bd1152e51af46b3eef06be00f59755216b7ce78ea25c91acda60cf579bbb844dd385bbc221bcd46b3b98357642b50549002cb84377bca232bcc19100441af49d04756985e111689a79689279e96411e44d25d6ebb5f4595919d241a2b2596182130880ad599c2939a6149af29bd0687a728a594bf6b60cb5315f97ad4439e93a6f579ddaa413049eaa54be77483c09b646b5abf569f53ef2498b60a381d74a02c3b855abbfd79330c37308b3aefb3d68ed326006138994698620d5de88553c8eb950efeec9643da399773e5f1601ae79e1c5682057a293e684d3059f0d4b5d63498a5ac1a1e6c638369a853f14b4b6794a7e297352fe6d070653d9fccf94d33cc969db38159d43ddbb77d2cd2b0cd991aea36d8669b34ecf4856eba3960923a38bf0ebdb20e5829a2737a253ef5d66926268b7b289249f250192473d54b4c922ed14ebd732833310495d9009519bde79ab09ba6892eee1cb699dc53a58cf44324fa89a763ff564499765e6e529e4e21c5c905f6891ddc43b9a773e60cf774ce94a157a4008ce74b777ebe86b23a0996a1ae8253099ed67c37f194919833949999d91b09eafd44a7e0e99c29db051c957d3f376236348d37668d64d9e849724dafb42e4d960e6fb26cd8c26ddb36d7e64af49a916cb24bd206490765f56003655d20bc2a24bf0065fde84d7491ee103a2a1f9833ed1d20dd1f4db64760f67001cf738ec6382f405938d639efb7a311deb2a11dbbae03bfd19923748fe4376dc7d9a22ab7248244f24e54f119925446a6556564cfe33c174f3c79f4fbbaaff489f66bce499c5f8047b336ef5138ba1e861ea872350fe4c290a3cd33d4c2ed53a97ed3ac51addcfebb25eba4c81a4a392d03a9dfae96d2b69a45a8699a56794563312a23740a9af6677a3a4ea7d3c96b9f33cf3544934bf440591d88c5a80ecaea4011df3a90f8d671bb0673a6cd0e204132f11d5e2491c41098d860899332a2f0600b1248d19151bc0043094af0d860880a4e60e10418b8c01bbd2885d17382139821e40920a0a11c842f3e5c404681afc80842aa28a3678a089450b1039910beb03c4022108284254cc0e00a2d645f0b5fd82ae8a00866443902041330698218455dcb17e505453b3338e2083d641cf96982115a9058a8c03a7284115ae0c4119ef044074cd8390258d241d683d00e60907ef0048c25cc408a280021074f52007ab101135031a3c1134d424084832c96d86f0a1c50c1108e2c718112784e60c51274b084135f7fe103499010114011042562dc4009449012c409223c618c294118820f7e60831813ba983d98820f8466200225344105d720096214f9086eba25b6ee9bd8b30df367866e27e707321414410533243e4fa05d73baadc63f1c1d9d51b69891d1821464010514aa30c2773bdc781c501945745b13dd0062f0441194c089e265a4d5d1e0bb0e680c26df71db0cb7ef942abcca4fa0295c7c5923f301a59452ca82ae8ca02384c008254a1c714486202448800b275e236062091858d1a233f8028a0d94d52ae20527c8c114215062498bba0ebde2254f7f66516c3f654cfefca942194fe3e74f15ba28a327aae391f2fda1a4bba8ce69789096e73f50dd056207763b52f11ef6fef8619de4ec415af42a291dc5834d10a6d0c119672079791788e7d483fcca0dd2ba4a3a9f5446060c4b471da8cc38a90c69ac198d249569f6e6cfe5189569bf93ca68f50b3b5b5e9096370669550747d0bb5108c6817ef7f2fcbb3f7e6c80cab4fb708168c06cf568c06c7d2f6f167d3dfab98777441eb0a7e41d712cbde6efc43a765708feeae2d8a3bf3a8ffc2302b1033b787ffc001dbc0cbb0d982d1c761cbeec31b72ac8cf42edd32be667a27e45a991c2ab557a4f9b0b4281d0201a100ec25c0784905560798a9f3e599860c20b4c203df59393366a785084ada87dd0fa1a319d7084213847a8c206201883a908b2021180c18324b65882045568d1296aaad083077ffe5401073e330960d3f681526eebc408c2c63ac87a10daa1072582843a4e8ca06df36e4b89970f1490f940810f06a18e90a6dd88f123a4c30e740a45548c9e8edb680f423bf4b01961c56b1ca5e126c6135d77dd5d91f37acd398eea34c1695c8b81c3b275acc324ea4168871eba2b406084c3c20994ee0e7df8843a315e5a83f70a247a5e5bf9f913460854b208da9c92d347959818ab5fd6d4a74c8460905009bc8f3e81b35d2521e8734e2f04bbe7c29a5ed1ef39bb46db2809b49af7b22687e497cf4e454de736d6e06899768d023571d2ee7372353593ca5011d81a5a8fa0333875ef86b441a90d37f4874ed206cef3269d3ee7ac2175e8e839678f9f6810e609843315ced6f4d9947ef1ac793a49afda4847f1ec3d4c263cc5862699e3c4f66e4c0037cea0830e0180e1b91dcf796bdaf0507296b11bef64f540659863f1d23ee7de64b538e7e3dc4172ce5bc621a80c3bcbd88d4598869da3cfb93657db0ed1b95bead0247bdf740f94c53c4330dbb013a6612fc556623462271eb157846354c609dbb014a66167671ecae2199561b75e9ed889e7f130cf409f81dde456e19ce38c34c931cace5240673bbaa50d4196f2ec1bcf9c611e9127b9f9cd073cecb67b3343af6af3049940efb9d7def4e604cac0047aeeced024b30d9ed373f3f48f088483709a6884f54850c4ebc1f7d3f366570fe579a0730efb3050b372f470919f9fb223afb18ec62d4d730fa43ecc28d02b964201fc435096d6e4352fbd1af86f88ac0782a123d950e0bd69cdd0329a734fd81be641e1003a05effc81f2be2eb1d4c13b44939aa651afb456a7a00f4d6ace2f8d73a68c16be9ad43c1c87d0341a821a8321086ab3d77c885efde895e61a75cd715ef30d5016b7c0567a436534a02549f81b6eb3d4f3bcab59cb42bc7d55a05a0f10f0a18719e70cf163c67a804057d3d9e86af8a483ca845ee7633d8f1b9daf37d9ab0ec57b83fd7a534d86f773f06a40f05643d63433d76c35efecaf691c8cfbc9cc1a75ee6e736acddafbd89470dc0b174650184dc26812065018400fa483d0e61b50229c084e9c139c08b8225c919867465131c9707486cf4b3165606c431f35c5dcd13f7740e404944ff851f72acb34842943bd244d417408f388a7bebda68c0805f33014ccd32beee156cbf8a3f3160f571686a7490a63e4294c4e93de1136a749a020944f93ec1365c5d3b1c4a3d4238fd257cf08eb0939c93d2256740f670a232ff393891445afe2dc2d63786e34a3ac1a5386f3d19379ceb9d39ce1fcfb3e6b49ee8d236e1486a15784e5bcac3d74442a79c4f0342a69f4828658946d929ea80cf5eba37b426c699ffa7512f384ce50d8d26b3ba2466e9d5f1c5123175d05c7973eb67fd169923a8dc22c066f02d9766f349b45bef47c6564d1b5d283c18bc26173d06bd81cbc3c965ac9eec5b81624e6c2c0349edfd09531e5dea8f22d4669a9f45296fef3d108040ea2abb8cbba5784fdbcac3ddae8aad16b922a8d40680f3396d6c81d4b1ea5af3e7a3dd2decb96de19b6fac8634de279311feb9129761c6b8f1976f3adddc27cac405923f6489364f5b2f6d423b25afad1a9d7233549afd85b8d3e9b355e4f35e99561f9a26e60d48bcf0fd0bf1ce180f63f44f1d4614f4b7fda4d19c7577705cba1537f39f2e2532a5f7a9e4a21fbe9e427132974de0ab623c34e26b0293288c9e0880c8ae478128326f72793182409c3ae4e1107fe61731a3c07bdc78d470c2f0483347c1b69f0edac4035d145c33dbc2ecda95b9e5ea15ee18e29ca88f26912f5f374663fa734789e78d979eab17755b03dc5a2da29119c1401e8d5aa96963e34ea3d923554b025f9f4f329d8f2e52585f3313a316c5912c38e50301e4ad2b8654d18b634c950ee479e4651b3e4a937aa59c0ddd22d3dbe65c9d2b8a45b9e46b7b446a2e88aec8c812d2f910a181ee81c574132573157a62890664bc1aec46cceca6806339a4d1a16cf4bff449f9e9aaccee36ec469f1ced91bbdefc68905165e837b3305b14ddfedc5a6a0e9e4d9fbedc5365e6c4e1692b313767becf512dda25b7489da85b5cd85b1904d79ee0f5d70810554d8c206440d1d7a755aa9d052750a9b0a9b343404000a059b1a1796a7b8440cbb4494d2956566d58c49c1fce6db8b6db6ebc578442d6919941493863a157386320a767253855518ffca8a5fd872f2ce7930b9c9bb4b84921d5a4c4e048a2f4a87aec5bb4bc40f253cb45c224cde39114a76307977514cc4c93b6f71f696fb4309df1d5abcc6fd81f216ffe1e2add93af96c852cba80e881037f3b03b855c381706dde006ed5f011c5ce82cfd66944b19b1cac0114846240e726e7a173d32542c90e35bcc58940b19fdce49df3d0e22c5c226a5c145f14034e6e721e58a8e12d0e862da3ad6162c1da242e3c4fbd1b752eb3751a678b8571d6b844428a6036dcb66ef1eebdaa6d359c05214ecf2a960433069453b7474c96c9a9977689a72afe7d5bed4aaf14c4ef74afb079b5c7f9dd9e46b5ee6e0f49e74872bcc5512cd490fd284494266b00ea36c48b51148cd2276a9c7c9efe7c61cb4ba403e5c18bd3169cc7d905947b9785242f773473e17a2ef79e46166dc1852231997822090d6217140b3c4fbd46cf533f2579ea26188ccf53bf44a3172fd4c99d7a78aa3ea65a7d28abc53b940e3f94ec60f21afea3c54f5ee3fee8dce453cc1d2a40dd60a2a898a82ae6ea639bda830a42edc0241bcd46b6529186a61a55d19c4593acf65041c553475581aa82e8296599864c322158fe16ef7c4486b7841f7285b9127df5b18d1703c1cb0b05fbfa6bd862c893b54bf4f2f298398f6955ab934d3f62790a5155fcbcd0faf4b0f461c86037784317bac7fec07e7e8b46d1b56d3627f43ccff3c25914aaa83833f3c62a2a171c81189845cff707d0472a2a76bc60dc2fe60c756fbc5e5c294fa3588db72896a354701c8d1cf4d7b67587be8d3c5216c7a7c91a2de3dc315b48ce401feceba258ee81d0acf8067afeefcf76611987bea8760e0909e8d10693ccf3de43c14c32d1472aae72b50b96302f7114651f8efddf48dfdb4497e7e2046ac28b0fc7e68f732a7a3e1a4b1eb3c8a7575f5f8635e92305bbc48733810e4d36495d887b71e85f78290c6c8eddf9fbd2df4e652e5cc34bb2c6bd45f4742f51f9f2e2fc85892041c9ab05e48322665154a06093a4de7161bf2f6f91278410a76722ab51ba8d2c0f8efcc4b388038a1d44d2f1bd44374acb50e79eb0f6670a5cf0258c0ecc0eb75e72b8d53f588ad74bd6025293286a29e1db45c196a319ad36c925baedc1e83c85f11228d87234b351f4cabe28ab3bf550a7ac96db0395a194d5ddee099679349b336d1380215fc2e4f428e14b189d2f61763c67efd2c00ea2da7d6c8fea8b82b5504b1a0acf3751077581f94427f06e5d2fcccbc706503046ddb03dfbf67c7f34499d61733e2fa10c9b3294a2606c2a02bf1ccd60baaea5dbb1946522da6ee084ef7b5b522d2d2f432e91c6389ae6370757f8981f16e4c0f09adf34d800b0d562dac224ebb6d01805e378b66deb14ec8891a7a5ed094117a3f8ca59b2356f4f6c8bdf74cb141900b65aee25da40ceef9f98607553d3c2166ae865ea37d0f3e9a10bbc02ee691a3c6f86140b1ba26e00837c69819a3cf530bca57dfd689b34794b1b345f5e73e6e5d59e676da5a2c2809e02f934093208da242c3641a73ea834edd296558f32a5686600004010001314002028140c07c4820191489e268aa60714000d86b04a78549ca84990a31052c6186308210400008000c080c8900800016e0121e553578e4c52bcf7b1baf130c0a58e1c89a038ef236e1e4eef904f753ab988128b523651bae8ad61094f06611ea91155531377459560a16a4e516e68ccbd37bfe674721355ac91180908ec6849065123ab18e61ffbd94acd1bf99def966c1435ac91180f08ecb0852f6cbfdce5c22361f70b030458c538bd8347ced80a2e9ce096d0a0ee62a6dee3f3b29f174e47a0ca0a8b650282bdd6b151d4b1c28a75a8250d839d2dc87aac4d2d0f8e623765ae0f554bc564d3359cf92c4e2b127ee254174c1fb172759cb11b5a381df880eeb665a85c45ffb4819082514d733a0bb930b9646d0e34b6ffe96d62e3045d3198083e4a101e66c34d9c7fca05498d6e22139ccff350c3857c473cb4f57cebfff34d023f1cc15f6f3ac208e4b622b33f1fc653d8ac235da2c67e5b389a8ef4d1b7898cddd1ebee1138331f995eb626dbda480e9019361d5de4b87877eca0c49e76c119eeb95ec248ddc0e712c77dca00286d52bb6b7a4f399ffac74874087fd7f6fd8b255bdbc59c836e68f0b9c119ebdd0f1aadc218d37d4a9f1bcba0f94657ace12bf8e112bb4c68385ba73c06ba6af6f00cb59de891b9da488a9125d089b7c558a19f22571eb49dc8ab2da159defc57aad19713d27a1dbf8eb5a5292280a011edf9af45f9fb1bf61a43b2c22fde29a322236e3367db54dea86135bb15e6bc0aee7f0abe31662faa64e0b97222695db1afcb9e0837528f532a87aa66d45d47580b37d9c38b3077fa10447a7309b38ed22a29a507432dec286ac32ab1bd01c8710f72dc0286e6ed6e82790df970f3912c86556e8421043422ec1d25ec1817e6347f30624aefd378514bb696145941679ff0791d9ced8a08756ca7ee2b22cafac234ef1c044ee2564af9e6885d8f33ee2ac836ece1e77ed725bab244b07924f2047523895d6289d86d7aac6dbbd139cb687dd495d62db4be595204f933aaf6761fec36a935be1b7d45c9f7b73ea2a41047cf6ca4353deb82b668e36a6a5455037eba1221ee56d2503b99247730a1dbe6a4d49beaa0c00884c0242898942ecf445f3b384756af44be3cb49a8a46fe6605ae7a2563d4015374358a33a003e8cf4ad9139c67b97ce573efdbb5b36031739802a3cbd3ac8838219177801f362b0f5f7b2050feb7d3e78a43f9062889bc8e0f8ed0e698fc597c0ccb7a94843cb39b4d702e877100f36c4c2478cf117f1077ea2e93d31215f2c282c96abc41afd9a563555d7975a12aacc5196948fbd68c67380925964f854c806370b49c498211f45ed0d24692ef08ae39276a29689f23b00cfa848ea842d8e8672e61b17ed9e82885a63541f22d48797bb59f92e49e009f64e4450a7b9ae00ba0f3ad2db7877f519243d0a2f97bcb6487ee55bc3e9d40a936e972d5449ffda68f807e32e0509f5a17a3213a9f8a746b78fdf4eac1c17efe69b5e18c78d0e5787e3dc184e5dfbc8b30331370c72bccd390d26062260a136a3996165337163a487989202cb0ae85f725a24429a186d0c130bc5465dc545d9b8e9fbef8132655798f56c17791c067a728e1f1d4099ee2871aefe3e67bf20912fea4df10fe6ee6450c61538eed5379e10748180d2f6a689264691235e38f9baf380230142f739bfb1e6e1f60d83e9fdfb2d96c22e11abafd202383f75af7613c5c91b894d4b7fdb7497718ed41077438bcee045f51a808677075c62d45e86b57714883ee5d1d19bc03af7a1fe8409f76d11b3f509f3d30a6a9256b859eaf92bc7e646b5548f884efd1ea2bee3635bf03d2dda6f92a576b9d75a773caba5d5787c284f873f4f847e3bccf6925c78c9693aec2422818054fd6ff6726a76a428a359890128d69fda20d9fa732b230cc4c0bffc07ff4e3c5c862b734b8c2c370a3aad91e45fd6ef741632d813c23c3b838edef350d15c359081bc0070b67132be621515c833ea30b1e1309a633e2195e6dc0de2951f3f54010409da6efda613c7f0430f088ec88b792735621caa85531da64f92e0de492b34336395cedbb1a4b6a2ee9c79ceea2beaf22e6caf938104caa117e23fad1fa284d953df500aa8b346bcc9d135222cf492905e43a1870efb3e65f9ca142f135c02955208b78d9314d8190b64679b1163533ec451bb48e3199f80064957038f354bef10369532d2419040f004cc6195669065303f99097992a195d2b5c52d875fcb855881651d172db0b7d9d5acc504ff58064c3e4b2308a0a2d1d6618fc49042230c5632050281f850c5c42917e392a8e47e066421eac1dc85403c9a83b1d21fff063acf95ff50a77c2d45c9c11f8525db202f80428e4617b31a0ea593c6c77f8e6cb0de25f5e678e8d5cc0cf9d970dc0bc41c6c3492e253a2012ce1ceb3a952360004cd8b995fe9bf707da2e25a875295c0599fd00604054a3381c29c128b19bc3d64b6925358449d36d260438498a8ca112d113b5401e6352c5d6fd6a4d5e08b595a12e689e92962ef3102baa5872cd6b70a9798bb1f58cca994ba22936e8b03fcf30a53d2a0b79d4536b898aef7916d155dd57336e2aa2b8b3525b8e3ed987e97fa5a15d79721764b8da2119ce4ea430cd5f2cc47e5f52ed105bc873e4363354378227f5539a040bc76dd48d94b9dedeeae75d0b8875a0d7355be46f30a02632dea88435b00a2ae9c256588dade28dfa0ae18e5a97b366f26aaffe17c33975232357f1a9926fccfccab275227da18a6124a728458acd04a4df94c5b30fac1a745af1612a5a973709a0ae4ca12e661380f8926ccfd0dc46830e920eb4f6b05f8c5f8d2dd4ff3aadc0bb8f1ee3cedea64d44121b6a5865a47783760b12bfa6e864ccbc8d8077b29199bee26e67186d5b927900db4e5d5435482f1aaf62990648713cd61726d8521bd0a23589dbfc8792acc5d8360658ceab2ad17d132d73cbbc5acaaa9896b921e12ac8cc5fbec01626f6f0c612f0083d277020d2056f506063ebdd6d1076846a5d630997c004e74f7218f8cfa81f307bd8ad59ddbb532e5d46c063d83af981775e1e4905724b8cb1056d39fb803ec552979a2182f9b62b2f49d99669f088297a3995572e759970cf08cfd7a84992ded408a157dc146894d0f5fc21f994583a5d8c42fb4152b2ca0a9c52a2805702c9cb28a4998fb2f3dfcacbc76904412ca5fc133ae024a6caaa51ec8828e43c9e90992daacaea889ed48b3be2c501f28fe20815d703be81f3efa140810f99d9a9902aea5141914457a7274611c068e70f732c9238b8d95e6772ac829fa043f91174710b4348c684847ba7d0796af4cec2f93c3b7f75accbfec86b47311509799e990b598a58d6bb66d496403155ffa2969965c5ae8af4d877cb08177fc4d0eb3a5669e580010733ec0966394e634de4c94a067e1d21ddd871c86ce9df392c6b03065ce1325500e11eb6e82c49ad5776fbaa011d223af239502c918cce01e11503f89f0f85ce64fa00addc7bc48eac14295649151b3b925955370e4a71b73413477ce20a60c7b5db0951fd083d0db30ca4be98cef5818a74485a916af22dd926ed120d0c1c39bb50f22ea67424a50c7dd11b253d619d9c043225c7bc8187ff1051ed4796c0349966a6c476be18bf5c165f0394b058886da6e4e13a614a7376663c635defda4ca4915e080586dd4e3fa72c6c98a1206f675ae5372d88e80afd186b0de22e0c65ab2aeafc9a32e1f48a563817bc69ebc66ea1e2524762e6338a9726a511db827fbf5de4c694019568c4db889d6486255acee760aa770de64aa7af128d29309b11767b2bf57bf1409b5b38a444cbc89f910829ef30cbcf543e9ce4eba4cc300aca6b8def30a947584270b6544e66bea2d0be7155caf18d052a57eb6ccfcc3354096dfcdd01f4b5c7429582ed2d77b22ce91581ff55c98d00ef2c2dfdc2011ced5e18168f757dfdb63d586ccd1416ba7c789970d9102ddf2941708c9da93320bdefd948fabf19c1a8512dbd371241ce94b6a4b8c65c6471397355ba3e6b0c007be17673ddfc76e1c94b484062de20df3df6c6abf343e6394156f09464ae9e4525b1029cff85429e9e9a48c23c2f0940803d0892d47766ae0f275a3067227f96527f8f2e54c195918a1f8bc33532722325ffff2fb57b73640ea134c5c30a5df6de2547e77a02e77362f394fd57b84fdb27799a529ef3eda8d6b11bc893ed154e3b606442b2156e8014ec8dd0bfa8590dccb885139d6072540b4714a57b51b185dbc40f78fb73b91c0698857e372980fe6c1475971ee84f604705f86bfdf95bb69f7e5d9a01bd30ac66af7c8851dbdbba86b5885f6e91b874b6a07726d4ff0ce35cc1b3791aa55553b1ad3c23c49de1fedf8c0e42f5fee111ffb533d365c4f7dd214ed4812f76c049041dc1b21807aa02e2b12e7e27e5af97f10c9b5d7ab00e39860b23882a1df0eedda10319db64c4c0db2a9074275492ee11294b6da3ee04e42383865d225951d71b69eeeac9c1a100cb4a4b417f509008862319d67c6998650301d0312233a57e98f286fd00a0e837706301a16c234049f5fa611c144aeefa82bf2f978f8d55f01dd31447bfbf01aa55f8880408b9bd207c84cbfa88510e066e900802e6712abf6932f61088b1711dfc20b3122af8f91ae2873107ea74eda5467b36f750ccaa72123f7c90e824af34c2a41249b65594241eb15fe4cf243aa7587250a48de5935183b034e4629367d1c2ce7b9f3fb1ba620e8b63c715923b629f7158714f38aff3d6a18979a3a1aed24ccb54c51b8c0a10743b500b71af6d02f4242182667b4ea25d289d39de752423960af59f130a4c421984ae0b3de92793639b34e5677ebd5e831a37599f1a4fff647184532d1644441dd0a82a07b6e3382356798c825459ff9f7fd984832241d2fdf9cf67d793cbe43e815203723bf7775171b0ea51860b6a8522e4ee092da6534f28d193e62c67d5cfad1d9c9058eb12fba826b4d3e0581dd81b85be51ecfbfc06f24c24a71dcfa31e2d241e1cd2499b96fbf8e07aa4645e3e2b22a59ce6cbb6909e273ca3c98ca2612421329f110c6d4b6e907e03db140eb99ce824122b21e7e7a4d0eda7870b5e1abc65bfdbc777134db130440b08f8212617b6c45b313df226bebd16e73722cfe1d2e41604a3bf69ee5e33af94d288f175116ea703e1802d70fd0886cac2be908d50a4721b2d31542074fb9d6dec0af14be795b1d54ed3bae7ca4978a843ff4d2a242e4a2087c77846db64703d109fadfa052d44793000d9216e5cc99a5f49517482012205e58b204c307fb4df6a7a11617713e421d3087b712ec36dac4c0cf74743c32c68d3fdec35e477590ad3d37bd3a28743317a7c090acd58e760b34abca85153e0768be1e999266756f78ecceec81989c3982e4b428a1c610b3e889d219d0caa6750b1b9780e7ee669f829145dcc200d1de1352d695512bf762ae3ca4e60bda4bea2d8cf1a8c2ac38c808d7625ab3648e2d2e2b453662f3b518ee45acb01c05a85e7a6d8621273447bdb37e3e8675e4018658e73ded63797d2d1f01852292b5f93ab164eaebafd6c90046952b5d4f8c87322582516fba971251784c383eb4c5a76d27c6b4c8fbc04ff0603719f0821340570cff84ca7bfeb1b3bbda481e58d44e5ede8defae8ebbd254b30869c376adc06077813ff95c649b298487b5eb9e891eacd96c46df35f1cf659e51f9b3e45abe15fe52a6cbb31a1124627d8dc920b208f1e4806f89d0929b995389609f787873b962e080407ec6fc9df51ce302a97e03575d03b50dd78303a4d7db6dbd69c5ead3da61a347b473e00b1a96c210081a989d737e5246e3f299836804306b655f94ca0850b65dc34fbaa95818588d314f2213bc81ccb9472b1f3fc04a03c5b34a53b4ff866d46f03d554b1893eb353026881072aaadb9f442cb42ec9c93eaad19a39c579119e052ddd235eb5ef1276609d10f4aa0beff84c94953e975823d577e8dc8ecb0389d17c23da04bcca77d71f518cfd8c73d6d6f68149be3819f2d4c307d418e2911d95854752850bae0c9debc7e978e2e103de726cfd403d07e2a3c3c4f4e3851d9dab7a888bc1e26c5fa40886a89b79c52e9b30206f14effe903869111d4101c9f121b2c36c48441e04573fa1da7f54806b700837501c96ff183c2a44759f0c6f044338eb16c918c30a44cd1520be93851906ee42c1c7f96ba4cb788e2572499d47b4dcdd389bb2107294c34398c9798ac7b1cb86d6505bdd9015058d3f17af48a5c5fe5ba83b730ffbe2bd9816a3dcbf96617fbcc329cc8340ca40f1a762dac1190acb7ca2f72970d39931de6a00dfe29599d052c1d10cf19fbe9e81ff73afbf006b0b3f91c8c859d2ed92a480836f654fc1871f3ae5a131f884817f1c280bcaed86415029e4f1aa81fb0f8935907e87754e00298fbc5f31b2dec73701e6e2240fc0d7dd449ae166cbafd03615c418cd459cdc162ed9468b2d4023f9a2319f2dc82f407724d2a17f6a2afaf062801733a4ddd12f8e227a0c5468b616c1c60dd1becb3bd82d841075f383a4ff919cb021c2d86b7e8766d77d045e272ecfd76d53b4ec6139f538ebd87e861578b8a9f75db87ae831d2c6c08049b9d5975c19839b5d442f1279b71bb6afd1ac46208ddef1238c6aa902f3eb16c1b5b49ade65f64054058eef81aed2392407f363e69a3733edbb2a2d1b9baaf6b4185253e625b99aebf190350f17954e61fd40b193ae0d97ce56c28fa6853b37a597f1988c2c0f958429304aece1fb91b3d0020a42028e50e7b6d449c44c9abcc506a4c11eca586a2c0a94703c00e215038d61be211eefce39cf004bcb9e2fff0b3ae17ca06cdd12e0a01ce44ed43d7601d0271fd6e8dd29ce8c95dc13985e93669c25d7dea73b11d5b32ba444f97d2886b101215780bc15cf7e2ea8fc952092616d1d9af04bd6558bc068b29de4e4c41b70bac825f8070acd5609f6764b02bb733c4a6c7d23528d1b216c287cc9e69f14b8747818bc3c9f0b5e6185c679c915b0c2bc1b1bd4c5a9e09463c86096290fc5d2ba8b62ac6a7c06b1c6a8a8ae33b414a31b81506b2e8d6ff5629848182299c2a1060a4cb9c7cb0781fb25c89ec28869b514d35452e377a7cfd00e2494fab44695048a7b504e6a3582ca6f26e0a25113b671d0fd033d261d99fad79585bc6392c3141ba9e4ab8e4352f9a8e9bee31fe598636ea6c5bde11f3782cf61969b96bdafbbfe590d6df54e1ea1ab9ba9c43c053e2b8be4c88f0eb8b2be9397d6700bf95692661223ddb2a049f1ca9207c2a81fc95f8268f54920052066becd9f1673090dbae2c241f1780a4607a6b8789889c8a8abdbae94cc69ede81a2b60a5081179434c2b3acc340eefd043508d7b49e06fb8757a216d8c20314b2e1bf75ade727b5025a59c62e105b81a5acf9542d17a566f6cdf49db0086dfdc973b7248d5dd256b35566a49951716775c4c6fb591d9d069166659ec89f5affd008b459bc5ee6180f457882d146ba3621a468b5c890b5ba447765d295a82d7220a2c22a9037b19b2c9727128b04b7533c6155f111ec0e3d03767a3cb88664bd287588e94007850d60a311e149f561083e291e40a48a074d7bb2ba5b3aa304c78adfbb0492bd95c85286335dc72eea4048319666cdf734063f6976e1196c88a0f789c9191e8b90697f5441dfd248cae90daf1a6a44209767b2006ea990f2eb800634cfb2dbfcc717fca2b3b4112650a1bbf8c7a3316f795513add9543daf477074ab894444642a6d70631b0c8ef6068ac2f379a43b2c4a65ee053c0bd80eaf7e1ee0cea8cea8f15f6c78157beab26bd9f5c76fd4fcc9e2713ca87b221fdd7bd23c95d730c572f2112ceb60347c49b7e7629ec0594f3edbd09e5bea39c837ad2b9621c23232b53db59da9919345904b3d5312e587b0b1aac25ee3b38ae72a7b3f70b13d470cf8714d831363bc4695b81bc2a84cc8427dbde54ae8cbe907453ca6eb81473c72b62d374bbdb040eb447b43222ae5f0dbe6e8cac8d3b73f488a28122d723437e10639864767cc91e9243bc90a408e9fa5f6f34accb12633def7aacd2c1164825a521f71cbf3d0c22a6c288b0597354a6d16304d962c141109dcc16b75929e381109b101b6c02070e33be76da93bb1be32776452c3719a95c5de5edca2ed9c21545ea128babbcb8beb3a9040feddbac830fe7b8c53c12b79bfbff5c3923457c04be9545dee1c25e0703968849659c369d37382fceccf28398ad901e757cd160b9a012971214a1e7126917805a3acfe5d013fe433023f2f7dabac9cc89893bb1651367ad9caea7fa4c0c9b75f8604704f595c5fa681e092ab5bcb426d17271e543f0d8a74bc1272da68c7c27add963f49a7dea00d638a06ea947bb7b4500c03be9a0f6250d02b0d3e3ec8c0c3b2c4974f4f419f42c42629e91c86311238bb80437ba8b9c09856e1b062416d9613c2c87c6a5c8e76f87c0000ef5321de4dffaaa9a3f78a342229bae8cc908d195aeb98487bc8859903e5d942a9314cae320f98e5a72910c706c0ff27814c4b6153fa438e1ed0d3a70f9df095a419496cc2442b49af69b8df26544b7907c29ed8e5a251b1eee42cccf091b4876914871add1ccf0f5f8bd58d472fa66e4156cd0375874cce0a87e5fb89a00144ff08b3dfad081e0d01389c9fda3de16ca491e934370ac9ce649f4bf027eaa61ed88a204da9c7186f65597d82bfe0525847eaf24c4bc66566a4a444aece608c36bbf5238559d85830c1548d9147c2ea4cb93bf90e75264060d29a0d1c5514162e4e2b318b28354d673e620035610acd646e06c02f19ec79c5002c2ef4c4eaf9ba4c573d00a4d7e1dbf588d7e7cf9af297ef26dd139964a8b3eeff34ae1b9ea56328235768d5f62271293f9fa1780726a7e91813d2a0f90e262814a616c7b0cace661cff8c7f195e014a1bf7a384ef4586c8c386f0414742fa6f49d65daa172e7ad0e0f3359bfd8431fe576bb59235aa25a88c506fa82aa95a238c209db0a0818eaedcbbb0488655f89572c0f532b473e8753e2a487c44c484a42cdcef5301d099c6c40d617dd646195de848815555137f5a7d77bb23df83b1340a43892db23bc115efd7407805364e38ae45fe591c9e6f8e01d52e0c3257b739ac37e79afc1dad03ec5d91d05d0aa0e342e0143b3204715c1c2d4f8ae39214bdbcf8dc3d5b8fd101a99172ed89a4affdeb002dec51aef1a7854b4212ca9b73967161a15206705a4f7c1a54684900e9c18248215c18f491dc598d3292af71e72704ee0e1403b060665cc07c59a8d6f18c08198a2d76abe07a638847c6e724c2308b6b0b11e85b0ebf16c8352440e14723596d612d8cb9361348dbc5da778e48d5a578807064eb5a30f11fa0d4e0eadc587bd0be3ab02ef821928b83d9ce8c8e86f17273ea977572bbd33b482dd3bb203ac4f5d8446c3e5c66d9ef12df728d06463cb30d5b26265741b7e3734ae41225708a0bd9ecacef8fa7e331feb0675ddf17043f490bac85b6dc2e9a4eb9564c705078a8ad963a56ddee41b47a3472040ea4535b46710480dd2157b7565312a156715c04a723323c06638e78311a1fe900a069bca215a8ddf6f9c7e40f237c80a64c9c9578d638dd729289fa996a0d061a1bb135650449e8bee8c2638ddc152a4afaede79bfdd78d49b3c5e44672c788c3a9075f388a524b211a88c0f4ffd018b6e399a8bd548f95490305ba74cb69cfb330a39956d09d0a0c614fe0ff43c6687fc0e40a4b862d4dbec66b2d04d2942c2599ff5d5127492b8bf3ab9d81837627c5b0a119da1e862cdb9a8fad33e684f3a6f4f1d433447126de52790c85c609da9c130883ab3b7aacade9d62ed0837f64492fea08532d99889f2251a84a8188b6c06dce622e849af0437063868fe9674883f33166474a81be331c43b0d237b7679b9e904f840360493e2f0aa0135d76e5500c3a5b70d5a19649daf3aa9329ded6fe052e73f511a88651ea0a7079ae8c8bdc061754491d808858915a037a6ea5878f5cbad12b7faa8048d2792845a8c914ddb1c227f2c15e1f86cf0b512bcd238fb793e33a87f58b39c16dfa6fbc4897191eb9eba08d3d58116d160e37dbf99e6f1cee034e4b1ce6886d870e7640cc4e4de6920e9228ae7b0f768c9bd3e9b6eaa349e6f1de7c34d3a479cbf04986d7bf00a8d656369e711b2c0aecc032b891abe1bb8144a5e8c2ef0e4048171c95b0f4c3adaf70a20ae37d56de0c485b547b82775970c7a19ad5367babac2fddd60e1ff1ae95be33f74b0ad8a42b1f326109b172eebea66548e942f61b248098fad517f2225036036a82703c8199756256d65a36d6ae315f39868a970976cc34f3e5caeeca1073c039f6f997658da0166e66da6faccfaf3cf03cc725e3257baeb9fb00220ad9702ae3a30b2c0ddff57219b00b6f46e483c4e6fbe7a17f1ca08acd1f22143ea21363b404abf4abf0045f457372b9aa626eb5f567d348078d4d3c69ffe0fb19a25105e5798215354dbf20516dfca9994f52cdc78bcc0db281ea9d277cd3b24dfc35bc4f3a78f1005cb813e115d8fa91e682e88831cf0c462919d34f9ab5beea6f61296f6331a21a2504867e059153b3ef080635191bb5e43c8575957f27d905ee5c4663d0a578812a9a975627235db6ead633fe674e1a94c6d19f1d526d013ce9784985b4e2a765f2a4067a076188185f83c67cb8bde2e36a12cbdc4456345771879080c8bb0ca568f70aa7b517ea3c392d3db4626f1ca6aded4bc60cae65df4aec2b05cbac6747f4d9de0dff35dcb7cd07388237f4675caced55a1784ca45fbb5ac0c8fc49a3ac8ac28badd085fef2ab9b61d4e6e55f5e85a30a04e5ea5703608e21db4c75905529a265d0c36b07210105899a755ab40dae0cddc68dff243a36c0c04fc790392812fe6bbf5ff7c2909b3fa6305250171e9d397dc6683fa3ade3a1e84e4ef1545e98b6d82a5cd14a2252372c288297bf01401043a8941a99280f06a7995322d5f32dbe6a827d23c62a8411b9f45c685873857e5725f7f26764185709bbf2e1beb23a3d54f0da4eebc03050a123728d47ecb52fb09ceafac8e8c49d4d088106eee61f749c32f68546c87fa72f65daf8240dc5422763244fc1a0d7b71d076e5b6ae5e5ab983c2e0ddd5eecc8030462f416f481fbaed6cc8c3772ae3e6d272870a315d660fb0272555372e826d0cb1c518005089a7425e86c23e7f552a3b32fcda9027e6bc9373a5a320cbc16b70f560a2b012c3bd01b0b3cd761b80f594cd1c00193915d3f33648099b5bf4b6d67824fe7781b48c6057c50b31138f30e0a62a8459de365abc28e6540550841d48b2f9135fadf30a1dc3099fb51ad46bc8481891afaa2470cc8e290c796447bc017ede6299dc98eaddb29e1cef33a7a13d292ab6734e12216c0215cd8add163fe829473983ad1b7574d55e3324a4da10f6df91b10e8a9f8c4566d5d194df1d28650f6dcf2eaeef3b05625068bb47c77ae83a7298d94e7524db4814fa5db9d90f3796efa36c4ebcaf0cc792994df520f2b47b1a0674cdfb1085084d80554af92d7a853af2a3adfda8465da3ca978d59cb7538c2000002866cac9bd5f1b000d550a30c5df5990d92bbceecd6392bb718ff26ae3a32d6f4cfd032777958575f431c0b2a26b66cdce09d4f56b39e68a713a23aa43c7d45a76f9220bb4e821af9ccc34aba456b95b9bf9228d1855d69a2f1189ce87f11f0b6b5bd5825b4559f7f34d444ac698e4b10cb2a99e32c2c8d75e7441048ce5cbe468f1ce1db181ffd1735c9363a4d24a81a6019be7c2e2538f58ffd9f4e9b888f186255eeb745b3ae55d9554ddbab6d903befc6e025d775fbcbfca6235db7f8fe8b3ea3abd89b836c61420a2e45123ff250e494fb6605ec2c91db87f2011ff09a7e6236b3a18b2cd478187448f9874ce2f2887c1c5faa2769a5410e0885a38eae0ae7eba888dd461e2afbb860bde55e04aed09d17883680ce8daef93b5fec386980606567f7978d0d2dc44308074cd0999564c1993ad1bdbe57522f2549dd63a44b198202afc8dd0dce1356826ec2dd10ac972a3ac9407b41826ed7af81bb504be64a83b92e69bcfb2dc03a98097284e51750961db11e5482c76e9f545fdd4b6053110b8e1f02eaaa040afb0b72c784c96ee0a30ad7bfddbc1d0b5d6ebcb9e6df1000a8dd7c2adb9972f4d5ae79986a80256ef5071bf2bf471118497e61d491ccef19413a3e466484a1197c79fbc3e67b46d8764fd05780bb6372071f44318a85b04242f2198c405b5709a84c07521fc074cda95511db8137208c7a04a57374759751dea7aeb80862f1b036482c83bbd3fe337186306699d68312f6048c7c9ac460e8de225525d1ddc75efeeb03f3e1f01e6b8e5a9fdcbe3730608d8e82f367cf4d2846e960de024de66785b22dbec21629ed94b703bb262ec39b168e96860d3000fca14c0458315c9b23854741ab4400d6ded4c62ee5b137d4f4edf54999e10c32987b4c0f67d8e43f793a82a970822cc22dad1ac7b6a8fec8eb130d153aa2b710e1032334aa600e646f5ddf02958691ed7ea1fe97f928db942d5153a48911c3a74d2a014fb709a8cef32e163631047a03950a1f77856c5b62b1151899e0e1564dc295768158b3d08bf5c612ca4fddfd7fb18b15d68c68ff98fbaff508ebf2663c5f026af4f5a79af92d62f062df4c1251ec97d794dfe6e2c0d159737606595337977023ac230f16ab388fa6d2bfdea675e85480439d1891feb5ed4fb6458c4ab2188771183c4c5dd72b506c929c03ba532e4ed57f5fac86ded9ea1dcc285371affcddfd63a5ffe99a67147c7437a281934c5ce2373976b4a7437a06f8dc04495d064de98f0182fed3d41db780cd54fa81862257a9109952d9860af13b9bdc31b0216da2d425822405edaa1ab536612453e372033177ba9ca5a0e412dac010b31efc8c9b735a32034787706521d94b227eff73e34081870e99c9a54d6768a92dfe5a3a746e94f0da04a3347b52f36ae4891fd2903c45f0142657c453a840badc4bfcc8e0f220e413a2204436a8a6134900a6bb517c0392c1253195eb256415fc63c81d5ca215d609a1b2769191e4dbe989e419e5550dc520c095a35ff8f9e8a3e5125b9918b092e0e62d180abcee5320cc2e997ae925d649c55b99614f421134338fd319f986fcde14668140c54cdf682af5af9019a0d9a303073ff874283a0512c02ea5a3328f47e368c10c5e11536b678242731ebfa0914c518409188f3e544aa8a2483a830ade19fbc96351cc3da4507a1d2bd8b0a09c2665b6b95a1a577ec233e63fc00ed5fb57850e288a98af358d88f149f7829ae0ebe36ed56c7d051e65a2e9276a38e1760934b4ecee949fdc30d36d612789816e187942a334b34e544f1a01cc4be48afe0625f2ac9e561a8c7669cf397875af348e79c95ab9b7f2d4cbc39b0c3d8996287a5b6c92792c153c462a10dce5318bdbfab7b36d06a146643915c723bd033b1f10d9d60df5c697179536c9c85b2ae89ea0da01f84d4221c5eb47cee809988cae0db8e28015d8a3e41bce89116f296ca596adf6914840301f8982491c4a86109c76881e95a28b7c53a75f7a47b91530d6c69bc4c691adf7b0630a0e5bd34ebb29ce4b6a170b59d559870930d24dc7d415c3eaaf0dcadde443e1d526d783d7dbcf816b46bbf1ddb5534cf9a41e481406124dd135c2fe8af11326b638b57c4019ee37c702e4048a61b926193c2632ed41242700a230e6ab93aa61eec5250219e3206cd6746d25d77f27078f5c65824f72b10b9f85dec9fcbc3ce2a720451f961750359cb6e205d13932c2df99c3fe75326b609979557bfcedae817262f6aa6412b6a3eae104df9d00c9c7df0b928bd56b54d7924c97c2f836c776eeaf32bed052148cdef43fcb0eaa9bfc6996d10c3ac914ccaff65a32806388d21b66b2577343ff7321525364db87d083e4b620a92bd0eeaaf11d69f4f52f1a4513b69887a62b9ae7a2d33c0b82c0e00781723ca7ba8a15456e31318f9a96fe91288b68c85e3a29a7eea63f2ac0a218b7b18215005cc2f6bd5551f3237ff258ee88164a04b4886b416bdf25cfdac94cd518ccbb5695445d5df37aea73066b9875fa12f0faf7435dff57de1936fd828e0854211045b636da5497bf56aa1222485eb68e46ecb6d0b86f62041b0c0d0264e351793ea34b502f78dcf2c0cf50139163aabcac1a884cb02982cddedfb4c90cbedc383b985dea92431f842bfd7fab625114c34cf44e8d76e98db4eb10e5718186bd34f4cccc3204b8a554414a928c287b549bc219d7ebdc3c510d0459b85c4cfe8f28339d468dac73dfea25332563037e4a2c70552264e64b18a8ec6519dbaae858cfb72e6728458105c0473bfd6d681a8fc33cb1feb3ce60969a9295bfd803fdd4cd199be30b22711a056cec33c126bed8998d7fa89a7d4e69f11f691d5d86d8d5734cf34d4b37e1b9848cc415eef206c93d6e6280bac6133195969c93cc6dfdf901345166017fab148d80bab94876aeb36e1e99dd6ecf25edd59b1ddc1e513a50b04b4b742dd8cf2bd8814b54eb2bb561e2d0df8d211f9ff9cc952641bcbae659a384ae74301239f0b2d5d856844627d98660fa61b4dd64e79911ea3e53d8b9a97f3e5c6860447c0e009d50ddc296bbfa648a14f4701c0f70277ec05ccbea0ab26b735b050044f6dd899c6affe640f1dd009de7d2a765beda5169a1da2be21802215bbe115bc308410a677aa0b6b5251cc034860e860e16835419452f4a38f936bfd46c2f946a2501ec1088985178db4bf0d04183f46268a12b89fadd2d350290b0e7b522375c2553ed78b5e752f61ddbd4f8ae4f0769e4a3a8c515af38b15d7ff19c3dc1a2223b1420538fa37337b5e90911b1995bb2fe28124820cafd9c8625df8b0fcf8e64592c464d1aa33a91873f2768c1979e964d296dc8b55230906b0be2e0b00553f43219d77d8c360b9ee03d2ed83879f1623f9322405686f0384303f4cc61339a03112118422e7e776409fb1d99ed343f5bca1cb23246e9aca4333451f8893b1e6c325193ea226d0ff60363f38047f5a5250fcb45835ec0ad492ce885212407865301409fb3d1c530c746e656f2e238b6a72d1a078a2618c5582eedcf8a041e2e57558328d9309933a590cb1152d2fc3d6b7aea56423be68baf16251810919462a6e0b2289209a1779a058557c009d5a7dd17bb2624e630c50373cb1720d2a4e1837d1fb035e280e91d85871f80dcc6b3ed1f1c12b1b59164d50c4d1a55793b10f288a6fe30fea6c53a0fe0574dd2ab18094fe25ac5b188644519f9d54bf99415c796937b47c1849851d4852baec1773514b0b977f0e759ec7971499dd051dd28c3a21ea28207b4e96c4043df5a080c40d3fe066de37dc93cc6a1c4fc49613d343aa970c638e1045afbaf8c4379407c71c6f3a7dc00374bb749a7666a0e71a52078f9bcc2d65b2e2d7a5e7a7a05664d5fea4810d2400ce8c697cf339ab3ee772357a3f8a9f66c59eff73c634dc09dfd3c20850b09cf338e063e9af2a97322b0f6ba01cc5c93b25ae48de9a002ad0220b8ad4c43ca8d664a28befbfc17bf26ee66b483ef1a9afd0073025da188656cade5abb5f29ddefef502950bf56ce8b786040e7bad292a7f4a92e71f621169488f7d51029e9182b5ac01816814272fe568094a82beb6761314657ff9fce8a4811ea1623c911b567e234cd5f2e78dc9de8e7688cfdb6ded58ed9eefad58351dbf97a391625039bfc3e1ea1a782645b32ddfb2c308e7a524ffcb113a6278072f18408069df04811af35c6592d12d948c007a04b4512204fd87938354362daaa98035f66db984227765abbf4c3174d479a101a0ad7716dbc2b011cc1ee8c3524a350f8cd85c2998531c4d6552e14f0d1801984e4f6a56c377c487e7697f2583174ec9aaea6d4cdb13506098513b84ab2d4ed8191e0114ddab3ef085733ec1181dd8c4b1682a8d305871bccb2543137ce4950732c17e20d6f4be0e9040d295242916968ad7dda9360e8e5a2ce0e2988e2ca08d26e79f6d4edbeb6b47cc3f7b62f128aafd2347b4276b760d057c4320afd131a5cec73daa5ce5d1b10dcb4a06ea516d7956bf6dba8ec3e83ca6ac3aaf21c74d758356be4bf5a0127e5b8f160087139b0c0ea84080647bcc642feba4fa7d7b8c228687a1955a79acadefd7132bb164a534ebb647c53da3fd98cfbb8e717990e70098c50e332015013f18cb141515e5be3248a944e4063b008e5af129a0a701ecd744d37271c55a229d0b7375ad9c71a62cb91683f9cbc68f8043e9ffa3059e59ff455c30311da15b6e654fc183d49866e1b5cb2089e9a1c803e0696b5ae7444a92473d7b4b0ae43917d40578459abd5b6f1d8d1abcaaaac4a64a690607a172791e9e77fe2db897fd29ef8740c2e861c9c440815ff5588ec7d9536c5f1d080ff3b011a681b77c92f1159c1f5112a4899bcb35f39d9839f91819cf99159fd998951f7b6996083bb1d1ea414798fe0c525c916eeb90b3293a913413249682592348167c60e0ab24c7d92504bec8b4bc6843808dc6753d88f6bfb46dd5180809f53099727f1bfc18f6135d61f2d3b182edd8321d3a59a4f16e08d7548b787ea0e85eb80b1ef3c1d61d855da1632029b1558ecc1d81f019415f24d03b60b26ff24e982f9cceaa868f7ed33674368312982dff212414f0ff95b712d93e6407059024814a68a7871546ab64cefb92a822022572c987b2d5d4ee6958522db3955942de120715a4ec73ecd09684dcac4a1bd55f29e83e095b1b122ca4d03abc3155a250c7ab124905000033827860d355977b2c2d49eedd1843f9a42bc635ec6f735bcebe5358ab7d1dc74c54a6f1e90281631bc8f1506bb07138974da5cd58ae399bc4a994924c32c7b7ba44d0b7e11f3e1975299ebcb3ea7e16e18b9aae0dacc93cf228ad81517fe4898ee68e5d5b5fb30c7cb70d45edf53e3843c9757246fda67ea0ed82a01cfebee989d736616da67da98b09471b7a7fb7329bc916ef5aa79d5438452106bbce9db234826f4dcfd58fe5cce750f39d098d3a0de54a8fa9d93bb4f55e59600373bc0c55855a9099971a1f974895d23443bfe55de6ec5221ccecdcc7e14b3c5eba5811e7fa9d4361c9aed532930764f7206ba38f3e7cf675262d73eb5278c30a838ecaf29d0604b3fbe5f2a4c791b17c9f0c865f428bffe52dfba3fa84b2ccf2ff3a23bec2f2adea1288fe5508ef8ef6ea99259939b0778b07e8a35a1bb98abe00ab23ea60cc92472e5231af07e303e6a2034a8e2e425406f857907cba48e32d0540f7f99c86940d4294899963fd10235be2579e2b082b5e6ceed914c0d6af1d36516d636764632580e32841339b402d616c594b6f23e6a85528bd3b4cc63e8e630412f3f629db36389802a8d59919343879ef011510e34c71e45ee0ab435589bd70bfa5755ef2295153912119702dc55fae5346d6275d775e6148ec570fadd9efbdd540f125c39d8c858a37960c39cba8fd61ffd457f6a3c836680139a42f558ae968268a7f64848ef24bcfce450ac54aac95a20959142a996205398c5252680ee90311b17220231d0a5058d5aafe81af451c6e009d9fa025830ff32e76641becc94247f7583fca88c040cd51e5c85ea08dcf555f7b4c13e3c63554d08f24902b48622e40b181cb802c98df19b262f62266275c54831006c7b469905ab3dfad0e8e492195207354e43a1c502838ae89aba0f26a6d8d2150bdbc96ab8d679c6846171f88fabadbbd411c0ec6e2048b5aba0ca1ad564f86e7ec333cd0cff019f586710398dfd823981c4f7580763045f342807c9a5ad466ea1a02cd69c35db335b66d580bbf55659e3f321431829601cec54c06f539073c86a9c43885c5790616156c33e745e3e37fbc9addb3df943af6e1a8efe2f525217b27bce892f9ff3e0f0f1cab5b71a9016785f8338a5c61157ddb6d4fc879412f9f614824bf205bdb5447835101fde726847505cba6a4f732b6c99472362eac5a857e2eb9d270540a1c5d5052ecfc9a7839a60db95267d0480aa3988f3b64a240b566d97873fac72348416609a9db0c788acc77bcb04916cb3b4e5c17d3e2fc1bcaea2066c609476fecc12d377a9be10df1a2753a52043ca10ff1dc2c72cf837e210238b97ec81ceb5ed58ded342f125432af2a4c2222464f3ab4191c2a9fffd36a0c7c86020e640b5baced9245dec1a2201a18bb087bdfb16c1a88ed268ae86209bfd7c7827de8ec9fa0ad5e87414b1d462e75d81c93eb5f6be7c05e895375b37033665d736920b0f404628eb10eaf38b2799464288f690a146e7f24c24ad38d48c987b4ebbd75fdd87db5756da8e29f03ca9ca70cdead15fa7afbc7902f5b6f225431fad848d22e3d143e290a386428e408567805d228984d99b8eda6d948dc45959a1b5c5a8faa50af842c2f18caf4a50097459596aaeb75772c92d491142a951048f287e507b06d221aa046561d8bdfbfe2fa2edc0395cd5cc83c27c0a5691588caca61f945e5e7e001fd2312ca9dabbd134e126ae606f38fac6499e007646a5ebee08eedf88f03dce2a30ecadfca41562d188eebb792c95bb2db0a02d87a7a6f0f35f1b85e1d50474c4325e8e6ff5d505f58e4111f2897bff7b607f942e49a5dbbe9d1a6673a36922b49f7f28b22487becd18235f66e4735e5aba35edcfd4aaf7d8762284778010196beb345257e96fd8590843d353144af3eb1a74561f211d9774582e7333268ccfebbd4fef7effa594848a27c64e9c4f128fbdb875ecbe8344fcbf509b5c8fc35c29bf2e4db0c608d409c3f764f3824661e0a2ed94bfe1e7af20b67cece0d8bd1376d42b171ef0a96979ba4a3358835aa80a4034a1945a65dd8e888b848cd6c6d44f809d5f4594e37bb5bfd2088d3a48645d284a83cc2faad92c6ca592307d2acb410b5918a9e0c2a0f07d29f39a15ba122802d707929ed7c7d646a20f45a73b2afaa84f09858b06ec52f955aae35c9067c5370ac2c46d12876ef9d67b2c0b65502d0ea449edac533bf642ec36f8719187b85d82f7fded55aaf8d89a2860e8e9864a2adbdfc3f3ca5d10c36c1523a570b5b5769ed8f08aed561c556c028a0f8b64f14b6d4d012b4c62d24b85757421bb473b48eca8a0311afa76571cd52cc51e1f5a640469b1b1e8c58daa252fe174ab873b25dcce1d2f8f71e50fceed1a8ed6c0ff04c908a9c1c2ab2d444903bd7c89c85b2329bb557e39441036508f29050e0c92290ee57a688419c140607435f3d6125f54a5d42008522b10e5aeb5312a096d63b2785468a07386d1f901cbd45a73e52921ca8048bad8aa54a222843b82b5394e310a47aa3998101f1ac5fac40ff816ea2c2a6e8f2bb70b258afbc9844de1b5c54be2b393a515af80d9d6e9e770dbc2523e07ff16692ebcc282f7f26904d2f3121e328c4d2258b1e222a2e4ef21e06e04a7a103448ec6926afb23e1616354ce841d0e86200c75f741481f2678b78fa4b823be101504e7584896505785ace83efee61579afa8011bc86bfd31ec9a5b2086188beb99fb338dd0b0e8a78f8fc10386326ee59b0a9141061fd6424718ec11cf3bdb84929794e7aa4d1c5cd4ff7e8efe62da138adaa974b02672739d3a591a4f85267623daa47ecf9178420f85e02b2b0d37a2cc37adfb2bdc5628565739d46afc04a3b3b2f6a6fe0567420ea8bfdc0e1e6ed97c5df721614a21a6b33fa37cb9186493fa119e202ec20f71442250dc7f496a2bf2d54c7f02261f480906ce025f3acb4e90e3d2aa88b85ec6d4381acd55247703c07adcca8dd6df9f5386c78a2b953b017b4609fdb126477e81cfcd526c454339d53b5cd89ae82a930d32707886c28e7ac19986b44578876fa0f1f7e2c73b435bdaa5ec1c7dfdfc901aa70e1df620bf34f38b510f5a10779946cfa7e2652908c32842cfaf8fbc74a8ef0c47f9c8cf5c569a0e628fb10759bbd3d14bec564aea13482ca90917e2282e06e8a26212597bc4aefd13fa21614c20faa426a018372d805607cfea2952b8892c729ea4ecd49872a23ba5ac908710eb31ff2b163dbf2f814621b5b8886112d279156623594db3c91cdc5373714655db099b9deb492779e2e52e7ee674125b3fffaee4c0d66a26a7d22873c2de832db830149ba96ae219c7f88f671ecaf5a0d6b0d395d3f043f4a2bc334d423aa89df613e8e52fd007e80501a6f248dd62cea1b2a8ef3c357cbccaaf803cf9272601a587ef9e0915e09245e3c24d9489df8bca2af52f5ec45f4901d221a43414d9f91a0132de6f3b15b07b17f9231d39f4ced704916f5e9ece4c763038be12baa7d05f959d634ffc5cca3e7c937957ac5970d732ec734604724e18d19a129b4547a41a2452e23ab9beac556d5ac3422054b62d79f8f7945f4ab52f1ff49b2257139bc3d3916c401e2d8580c1bc28f653e6eca2e56693fa75c305de192d5cd2ac8d0d863b419b50f0675988b3a38766d7dd2bcbbd3d67e5685cd640d4ca997fadc89d9c0e0c089474403f14c8f71e2a81e1648401c8a505a64e264605cb5535c949875e07a46f9378769e770b17596e4ae970acc594d931214b74a96bc99c433904426426ecd75847f9627daa6251702d8bc165b212b0a5ef960509b6fa65fb589e332665e486f4c7bab71d6154a2ccb7a0961453d321d7314695c9b31526baeba0093b33d62766380cd7b061760fe1551e039b4f4d872e4c3a02347de9046b05548507728e094f7cc77e62b9c1d2a77affcb1119921c0000dab038540ffbd93d532b23e26032d7520607bdc10d5f372da2523452f40b05abad6ca0069e443f4f757b14974c67049fd8bdec35550f94aa20f856384ac98b59f06e03fb587561543d6493800ed3e106c06a9984c495199dd4e1321ac65bad7c2c22d391c1c374430358183aa6adcaa800f3c929d14024108f86be4244906ad168625cb8f978ff1e81325515f2942149901b7642a3326492ab8f085df706b8386b6c95f98c8c8a3998c4a97a216c3d15620f8219426aad904f37321a9f007511a95f1f24ecfe2abe6052961e48af4ab62b2f63ed498a1e2d171e503eca1eae5731b683edf83620974dd951b211f344c9d7e6c71dad346df605e63a6a7eb3e3f6e68eab99e75b0147bac1659324b4045fc655c32473ae5aac2092b278cd081f4d33739276149d58ce7b294a20cc7383926758c45801d458bff49fff12645b1bc38c7b3becdbf040fe0edaf3044a093866b11b013bc6c55e08f5d4e26e467ea075c6ce6370b8ca2b2bfd63f5e03d4729b417908d4b1e0011daebbea552f572c7c308ef27b0451d60418f3e02b275001eb86a4a6b912a5d9d223c1c0ebb71234fd552046e0bb81ec8a06c43d08bf4e45c20c7f7199c04dbfa0079afa962bc86468dc03c85d5d4d587d842cbfe02fe8d6c08d4bdd26a073979e129881990b84c83652419e7e4a82786ed35a3df528f20257a563f606b587b708608969ea4daec301e187302c36c1864adcb14a97750df730100c7927791acd8d8a9bc03860942adf6e09a916fee3c06f7eba611371c2bd64b04bd1c34d18394874d7e39935b71fa0ef7b75422cf9f0255dce511f6285ff17e687989e016aa7da4329035454b79611080c6ffa94b7c8e33c6eb1080e85130262e69ad6022950d9961fd331de917b3d7f2e71d3dffad4fffd890569ea116e372a93ae796084f4297267aa5d2941d00caa2a647552cfec82d41e3b1655440b02794d1921072088cd42f516f3f685923c514f139d76814a97d13826f74d42626af000a6b06d719994f6954f9bcb486c496ca1ecdd738e6faaf9b8b0078b50aa107867d065f8537186b5ab932030204bc9a966a310ee9c972173f5273a9fba2f9c236fcc0b8db7393d99654203324791b6cf6523ce9154bce7b007cec008c59bc16e384455da5cc3fc6f3b65c81388435f6b42badd222848423113b329751ec3c09670cf380a54484e4b88537e5a8227ba7fe8f0aa69a449b87495007158f8b8721eb246ee3dfa0bc654192acd6b90ba9091ffff096cc459b7fd81a36bbf3a1b059790402c35ddcfec7637e36d170d232985022b3b977e6c915baff189b26835b3dc780a57a123e62fc0965ea96abc8f6028f454dc7e08a41fbb18ce414f701aa2c425f58a1bd39170b43537618e810646e1baab008afd758fa0162f9c368036f926bc5f71c5e397ebfd2f98195ec92a239e8dd4ecf972872f95012e57a2a0e0b4c416908d06c96a5a432a38e2b1c1d5ee467babb1842a9c3592517754c8a582e0ce635212564996603a8a11b20dbf0d29869da6274c5425bbe15322b7533ea3f763a3674eecded238e246f40cc67e816535e630f82a72e75ff7f0986f4ba4d446a1732c5085f999009b790fea69735761ac1d28a2a597c6cc7a25bc3cd921bde699df3aa7ddf622f303b04c81804efacf147b10bf8fd06aa2b74176ee1e5c4298bedfc54c1efa285a91b8a76e7f285a2a617382693d570dc45d3cd4d686609e391ef234150652f7c354facb42a7b95d5c2d1b370b69768bf9ce8ac130840ad70ca9d885fc832fd3c2f52275a2279960056e086cd9ffdf427c325c4417c9f97e1ef7926c792fe0170253336d65a6a3036b830327f6430dc44ad1bd35e26c18eefec3904f989d7f769a741da5643f270d582b060baa833531957b42003722aac45bcf691876119879f3ed7e7355cf07b3fe03b3b3e035df803f424e559b21e2a32e7d9b264e3d5f16c107988dd8f53d5389f2e007ccbce607f4cc5712b929b24139c8954d0c56b08f82d76b5c76ad931857befec107f42cd41b9a7a936306d0e680cdbae5fc3e4adff5d2f215f40e79c91bb3c8556a78df58309e524b27940df89f5a842e1cb850e773413af1980a2d53424e5a3baaf53dc968765407f7ac8c7c9456d9fda894181362f685709ce904dad6714a2bf0e8a0407455147d1f63b41b8dfb849e4e78cad74153f0714e1d3044c2f5f687e0051fde0094d2c37aa21bbaf1f3a0d33659dc2788ffb4e4e8a49ee7bbecbb01f606d1a5f0f75e0901e2f114ee807c46cdc931435e4d1ea648d42bb03d760d6ec512edc2b90f17e954fa9200034314bbd47261922d8f252cda1dc7d4247da0e1fdb5cc3bf8abcf6466bf3ecdb6f02bd824cbbec64d1e2460823364e8df3852fa9b9cabecd33ce9349c6f0b3a5f3b51dea0fb3cc6f3ae5f4f2850dafbba85449fc6d7d7fc298c7855a09b80af1b949af6ca42e352af3d942b12003b1e38a9022e527cd123380ab5ad6eda9d1414485f9234a414213225c3a91cc12dfe1125e7760313e5fd3cb66962ba564b080b9d0f181b6f36f93cd3017e4383466a930a21b0fbb4bd43396de074d8e264fe54e5a276262a8ac99f0c2b9e7091d2a2352cbc20a333694865b240de964401e78922a5fa4f21532e5ff472d3d1a0a60f5071857d026f69d8a982c455667ca971d9dfd4a04981cd95d80e784b2e8be739d705da296957a031ec4be6e0822278237d89fcda9e3728a9f9e673d0723edcc7480c9bd37fae6e942b6f0c98cef8ca32e176847dec71fd898097c1c0584356a90aa64836626f08317cf1e8ad937f60ccb2577834f66893f99ecf87cd55bd016c52e7feb7a15e61497178a4ad266d8ba3d39ed63f1713d734e95c1910685fdc20a9a87b6e14bcff27bcb0f983f2559f2068c4767f7a0fb1a9a1377d83c8488509caf48f01f0edabb8f1826f2905380e1b7930b3c37afaaff5faf61ee41713e4390e295387bde9a5b27f1df62637a18cf3f48fd0799ae2eb26e088b0dc7b2fd1d03d4af286cec30a03013b7b8cecb3b387c5b1adb78b76eaa4db96b011c6503c4aa71f2c2bd786e96dd82978ca0c0ed730583e15c2f0d0cd960e839ebf760b39a7f4ea1705aa3642d5b5ba7bd890a9bfa2099729a0b65ad68e94b3847ecf1929b694219fcd8ad12b6ce7652c55741fb5348fa4558fd1ad19b40094fc4dd3227098a0dca5aa7c2cb26d9f5d2bbdf3cdc3cc6ec72b540d3346d163c0493712f12ab6a1f4f72b5cb34763c32a43881766aba6cbe87ae94841fe923923e9d15b6f8f59a809f2d3e94114100867065058aca4e650f06cfd862eab758236559d60236515a2245647762be51b631367152feb3ae7a2911b3396fd8ad2eca93a90cda2a8247613dbb52f89cf564a2da5c636cebeb2da86e1c85216f8ba0722dec1714ae7b82a0b3fbb538cc167503a8b5ee3cd2170ad0e516e88f675c00e61380ece4bd38e63230021daeed8e062a3b78cd28a3aee871fb89b0965cdda88f479e6940a3558b320e97917387fd28091df29a43395bf723b2d084e5ff0f8a2bb725f7770b481782afc089d4ab4c201106d9cb343686c9c5c397ab4200b8244dd11936664c0d3bb44ad50c94e56ff208b3ef94041c554cc9dfcd8e68ae68167ab17b1b4b064131b2a4130907a3e6b7b790e0f5865c2f495ea45aa0aab16f8c21674807a836e9a7522820decf1deb04ecade66ee035aa7dd8771ff5c75cbed0cbea799cfa7ab5a0c410ac2435f9515d83e5651ba6589dd2894a4417d62c3da57ce4b16eb33a5d2d63f7b3710e97d3222ef77c08c5c6988f0de53c1fe273774a2d4c701fe7bcbd39caba0fa1b83ed423de92141af4fd3c7977677cb787fd5f29d3720cec6d09cf39c32e0d019337a790aa16275b13cd4534892eef5c1452ca2ce5c06088d0c1ca1c7b75b7de8b00af8a2649d1042495ae83b6db79105134663dc17ae308fc01123b86c14da714894a2cc79bae1edc9a94933708f25d85d805746bff9088cfb08dd4af0780d2384d99c38cc0aac407eda9638a70ae6459029f297a06f153d5c01130d45782113b78bbcc422125ba205fb3392c860b05f1282d906833e25683f8416328e9c746825e5101eae6f1d42270ef133a87d0983a5d318a7801291e3278820d3acf54ee84c4d555af1aec8d5c9f874c9045b7fbb61cc74706e442a8e5b28ba479a4458bd3b1f1134b20c04bd123dab35cc757dce9418c1d9f6b2f822274eb85200f16f382f1fc0ae7773229d0e1c29e20bc7937f28f9cc62d8ac0c2d334b862918d500b2057c99bb14d2f9548c824a00055dffb684b093ff09324f403ffe53a7ff9e4ea802ce50a5e445decadd7d1f264b5ee83a4a0d2e8ebf4c5c9d8d943dc619960cc4c4e7ab8032a9053d599fb40bc439002f3d5feea850c2bdad4cedee6ec38c326daba88aba054630255d7016c1ec545b50d32dbf1c3292c5277a9fdb97fac532a78032ca3c7d362fdc8ea60534ba1fe2485c16890633eecf63e5eeb807400a70d170902cd0781528b2ebaac856d83c33b0bc87cfff9a5cdb6a5814f7c65bc247f48a38757102c913cf5f2cd21953e56d130c0c6a136deb45ee73510b9798afc59c574e08b98f263d59a2b58744357d76124253d2b739f6c1404a0792f04c5252b70e721bc4c232ab77f03426056aabba3481f4cc2c9aea212355dcd76d0249b601cc6168ae919e0ba04b0ad1970dcccbcd3b1788fc0cdeab7ee523689b925c6593020ea7ebcf05d19d9961c8d23abc729c4b2dc4092d7b11bfd4059a0d539415ea828485a6c399f3a77515404492fa804ebd8c766284baeca0d213f4648de02a7301bbb96cbe785c66a92dc5ccc0fb21f20e629663174f2b8ddb19d2a965ccda01f9aee8dcf1e9b2d2b0d665f0792ee0b01d4a614426393c6022d452080810f0ad4ca2bdd803cfea59bc0f10e5832b59d83e3502cc57f17fb6bd941b05ed886d83446578c0dce9765fe16d9e29dc7ce3b4d568b590a596fe5e4df00b61066db06b43910443e73f3e112859cc050f365cd79e4e1440b57877d8091c639a603d4e4e5c8e82dd28eb042dcacab9882a323615d41d576be1a029ead362b9f35c4f3b81da80670ac627c9e9945cf35441947d214e0f7db6d733c519384e087b1801fb7709a981cd8b00b72e7cd5e05c054ecab1a7e00822f040e09676744cde292d83de07e552fcad51179abac86db90af22c1935812ea0ed57de1661edef49ad2c695356c02875f04c9f09caa78df3de89c025a8bf733ddd08587fb0feaedfad8d28be4d41d305a516f5702787c88292f4f7998bc55a0f8b210ba501b62ae9c19e020bc7aec05e7f17581017d73b8a9b7d7a174efe9fcc119ae269081b5f0d70479b0171e9a66d3102d6169ed1f247933120e7b94a9a3ee5714584108e9ecb3b8add14544914c4521208b88abf791f895b9153e8136ebe0c52bf56c250ee3e0da40ec5410f03fde4624525e3815061de32b7ebfad1152400ff0f54a6dea320ecdf877d4c16321b97d3df3e0ff5e11cac536e972a03b1d140995b2874f35b491b17d78812e4fe290d70387a4271a851ec157436b71bc2575eafcf9ec7ee64901a2056491d4ff17c8bbf4a00e9b95f3f17da66ad2872db70c1b8774a0dee4e0e201e033c0a9cf0eb4e2bc0b939a0a9085d9a4eef92429ffd18c25ddda53715bf6d4cc7ce0890e3ea79e4787dbbf615686385d1b5cf6f1d2fa541265915b162c7ebd63fa299e9a1de0fc176a5b96f8642a5761ed55aa52e0308242bd123ab3ffa741b2afb849837126382fc9c35240b1c7c298ae99c55af3f4c6e40fe2c0a3c4cd04cb5cb22ad36f5b2ed6d91c3d36be80432228e2225fc2ee360667f21638a4b06ac03c9d793da24b663f98a8014794c3f75d31caf9b0d0991bdb4b84bdffd1187ed03425507533b0e91c0a242c718ddb301b9ccbb593e870ed44101557ddf25d93e3470191232453b6aa0f002e2bd6ee3e2cc2767df23df4b4dcdf0247cbb5cc0460ed642a6400549671b5d1847625c462ec951d7dc985a7f1265cfa5a19ff03c0e17fc2b3ecfe349e4cf1ed029450159bec54224ad9add2e82645190add2645740422d9256d1309720a95608566d348b205196a4d5fc5a36d1aad56071ad3359bec96f55132dd61a65d56c5b0552aa8ab09a1fca064d7da89a68b12e895661364b10f9ad6a2adafa9471aeafa60fb2def2c80a070d8c6b3a8eb5cc8edfdb62712b797270ca2aa1d338e4d5634e94cd16722eaaf054b7f3cf2af1d4d41c02d9b0e74748fb0e72b1bf38c228b8c4c89b50f6cb5e52e52e857768a771a3ee4ed3affcb74da3695aa0a35890c331b2a8ec4731558cc4edb29e3de1ee76629ecdb97dbec7e7c92a5a193f53a097884331076a2e502e7f3527e8b82f6282388c40027e5d06f5554b7cc4774be3f4a54b18e800fb53c5dd09e6347100220c7a09530560dc937faf29f582f6cdc1a01e4a4c6e6e10a356012a52e8ddde666cc4da52521b5d206f2e57041c8b3deb0755e77b1612578f3e0d25aa9afe21eea19457926960ea0dcb9270c3fbd7c9130481350372e2ebc095158d239fa356b0e2a6fa80d205e5bff761885be4ca75be01d6c235a5e9076cac02ccc3043c5c2861128a735ba02d728915264a8358e8739030f8ff4c34c38d3d679517ec6358664ff598a6d7b1511f301fa4a833f0338b01c9d45e3e5f3d744188e551f425996c8bba5c3688ca50e4074440c39d2d7bc904406f06537cf21500db00b85b9fa1e0e016506a251652cfb1c6e30ebb67afd1c5649e6456e2c3a5ef8e5e3a961d28f4e5767b1a5536c4669d74ee95c59d26de5a84ad669b08c366c1ec564ae6124a4f58762e4ec8c69682635ae00f582810d7f61aaa2ca90d97e35673c168b1f267ba1b2e5938009b29d80ae15778aa7bb721adc6e02d5c58c75668f15dbb3e2edb24a80230a06f795bb1cf3ec46804f329c12f3410f1c3d21b1032f6fed9f003aa670ec30470c2dff7e1459c9ab821c4a4fd817df8aa7c91ef7cf68692d9e1f84622dc992549a9b1617127127327dfc4d4785aaf16d8a7e8c1e97d2ae0ca978dd4c5b70ccfd85aa11907c2c69005a1ed20f0e0a47c2b1c906b6ad9c19e352af30d658c12cb2d91ba3270d3191390da1b41bea1de20fac5206b64cb7b2187d43b56aa6514f6eaa715faa18e427811cc8453525a7158dbf7cf6ab0d832470b32e28d46fc383f35c5135a1800858b8cdbe3463e6d7c18e7784a23e9c83d74925ca235c81d2505f68eabaa67702c5d6b514cfb026318c512d18d2b6ed2c3382d882b795bd861bb3ce62fd023fb9afe7f2566947b12833e3eca138280f0df2999490542c354e36d5521c0edf14916c90c2c7774346f4a38c46530a1dfb2998362e0d695d936bbde2e37abc849934a631ab3c1099f71088f961594563598aa0a2454523536eaabab7661569f9f3440578e24daf90ec066ed49a97c7f9357ea01a4c3126d5f169a398e3a16b0fa8e1231b4eb4fa2ba32d86bc559672b45bdb399030279817644ec5db61d985737821c0cd19f94a93c031ad46e788d8078beb276bf00df3b5c0e87626711f90a840bea4d03f5a6c44298380219e1cf255ea7a43ec0265d84a57c10438f9a86a5e851b88743de77e624ebce063d4129d27bc2bbb4008911359382bc8c369e7db2a50e7ac41ae54c9450f438791ff0237b259d9b53104fe45fc4d3a151d7828935614ff77033749f97f0f76d9b19256fb7db483d1c114223dadf0d2d881df0cc9c18d7c02d1d4179e71d811945b5019c0a21d57a41e9ebf8be196d7e4d1a3b42895099d87cc729b6a00c2ca3ef89de47edad777f27d04e49716b3bec310fdcf456a07a23dc7237c656b39ea5e5976be0455c112e884a13e349949de7cf72691185732447cd0ef5cc86d53a4e0a4f62fddef3f75d8c915a8b376453242f366e6d1e06a295284652ee2e088e5e6c8a9ab462f39cca9ee13e2019ac402bbe883ecd71f80910bbe6fb4360d293e3d46b44acf9d650a24f4be8fc1c467595c1021b13f5670ea948c8cbf07bcf7cc0e2a8c07190f28217e9b13ae78ab6f708770f1c518fa8e73eeb28dc4ed48d021dc9748305cebaabaa7bee77ef4a692c4fe06e04f619f5e391badc0ed4bf4518e760729fec83ee8859da36327c2ebb42802e029ee483b0a25866ac2a07adc00aa40867793b2995565b5db7f1b42625430e76e50c10b582a2273c616c5d3be561ce4c11007b611807ef7e24635a0e318e0d39d81902be966c6c06f135b129d11b9f352afa81072c60784b0e0d8180150b9b92958c026cc6712d077af5111f0f5093d8e5e7dde23ab022e259f4713883b8f9eccc6a90c5e23d2e3ec002ba9b2fe0f24833295270fe23402a9d627bffb568e2b251154ce0144a27d80e04cfc7a322773a14ff2db10f545d712447d221b6e9930880ce159d5e99724f4cebff9b67f844e29728952b882f4311a617f2a4c4314751b9c51448bdd84994b31ce838254487d297af800684fd9112b02694c21a5d7afc69315855781a599b142539c20fb2b5cb53dd838dde4a9b712d95833ea1609eaef7381833686d252f53a267c6df2e8995751296a53a8f2c194f95fcc4b0a5889e1d7be9002d3e84035dcd1aa566586eafc7cfe4365c11fe0d80db138665fe5685641220b7bb92f707d16e09be38b1591c662f89f030a184806a4b858046b02deb151823a76395f19a779b61b37c5ebdf6ae33191019e7e99c6dc013b9f600147b419614676ae5983235a39471fc8a4d2bd80467acdb3a1a4a839780e2cc56cc00d5352acea738882c63297aa0f30a10484a62bf7b957284d1068eff7c4e714303ba89e42ed094a255be2ae2023afc6b4ce997dd6ec4505b14788b1113ff932f5d11d34ac97792a1ddd82b96687dc2c9eb1fe1829727aa508216438212a0031dd81eb22a2c547589b144ee98bc35e00a49c422c3a6f5eb620fd2611dacbe4bfa9cf0c7fe07e2c22571c94651df7af5b0d27a0ef590fd015c189f3870fd27b6778bbc26d1a9a14f64841130204d43b4210e7c6836009d3c720140e7788096f3171c8260205690db09cc0f18ac50c5566fa9086704b0838a946d92e7ea5b8c1092af2eac5f86fcb277428c6f65e5475205f1ddcf99d245a08799f58e6755137cbc4bf4df9be20c9a1381545cd9bfe1aaffd5c784faf9b2b3d125abdaabcbeb631b838ccc876a6434040680f62d97a2f861884a59ad6b9699a828b8162d5060d9360607cf7a357af121c3e06a082a1855139919879987cc58c73e6600309be4799038a9e5da2970786532ce6947c45c886bc122c8eb39bc1d25c75fe82a23752d05b7836e356507fc36b707533960bc408cb63da41e1a9266861b2de1ebe0c8eb63b3fe36b9418f385dc44bfebb8544a6420f39b45375140e129f5bb2268499382da41ac72a8d8f207851e458614a23e51f573d3276c96a79456b0d8c7f5d7789f34f2a0b777242bd49d312de554b7c20f8d5094ebbdb1018d64e86d2b48019f267300623e4a38a22bd9d9a28badfd65d7ff65424e1cd458035abb811307f77609641c82c2bd3e616546b3006b073811a389f1f6d12c05d07b23afd8229b1844881319c483ccda045925c0b1989e6e6aee148a4647370d7c42f4362c2da885ed81d62b591c366de29cb0b1d76b39ab4a19fe1d583303a6605c0bbba010676126cdfa63d11ad629cded29f91676ce1d20c602bae4dd07f9d81d77c9a2c38f4e8c8cd17066f935987d70a0afc23b74a5e0bc317312b7516c7f21ec2b624916656339de26e314f7d5104f169a2b6f4d1a06d624dd4449b68136b423573889229ffe02ffc853ff8037f81d5489907c52243351c9da8e64f95b6bf5cff4088198f7663f3d4d02f891d20e4d60f2ebb09660ba0c7b82a3c67ae66e8103a09554c78e9c94db5d8a1531180e3ab8b8b51f311b18eed09cf581d0ae48cc38c337067c65e4bd48cb4c6374a42c5188b591a20d80e7ae383eaaae7bdd019f79ef4608368405a52347260805829c1c6fd96e41903bf0c7905e593168f3ac8ffc0d39d3addd192e6771b7b8514b317ded79374d46c1d0e026eb816b09e6a2d6a4bc5032999c788440cc6b153cd61308ad51da905188a19a00d22c078509a6ad9813a37c9916c353e8f9ec175bcaea6ec77d57702164085993e03f9f0b2986d6d74f8eec523477a12709987114a3037ef568e23bf122b32c3b95ffbcbea5b9ac8dbf949ed406e974f235cb9fc2b222e6eb73c1bee7c07ada52c035afee8b4a6207aeba6ff15b6e8694d50a90a7ab5715a3be5431e30af8331ab3fd197d6ca1dd773ab5173fe80264f2edc5998b0bc5a7f770df3988e2dbe3df3422af27b7a18b8b8e05f3ba886d693ad26780e1eb53f65fba4624bb9a2a03bd8de01f6a9167baea42ba69d81d4ef2977dfbdbd44a0061613cc5427828a277f5c1d04d17221c089f1c04003bcc214fd53c5ee5309b295f649f60684e55668b38d745510c254167d8c5c5a05973a9dfbb36913343d71aea647c7a6677428ee1a57f0c903764498da119d6d7ac6ea5d13f71f0dc81c3420e9aafeb26feafa8d2648f47ccfafb95ed3827dec8d88417bdb6125f39d631e70a687a4f4dcca86ae6a087df6d830ce2928c32a5e9b5f319b1fadfeff482db00f15301d0ba22b5cecf47ce4f2fc04a1ccc42d23eccd8a0759f60812c109e3e1e84902667e31d51045aed8dbd66f07d8d1adc3a99978be59aaebd87f7ebcd6f5ebf1580052c5875f8fcc395c33d363676ca054fdc574551ceff2027fc312830169ed540502de57702bf2d792a7ff87c113c799f1b6c26e2db6e362e72c2b39501c4b328b5623a3113998d59ed377a08b5f0192885739f143a68e1a7550f5df7f997a55b8ba47c8cd59c8cba4ad98d9a9f3343e0aa564125d5f1021f4cd23fd92995c8f97a6e44f53b249d3eceb68c1691d40e0dfda7ce14b033ccba48be5b84d85732c167374c7f452fcb67813a66cc014f33e96351d7ae48b6af0ddf6b377c9e9502cbee13348694bcb09763928bcf1d426325a5b7492885549cd1960b0a1534a2375943f305df2bac032b07183d4726793da4a348b15951b7153376a01df0e3737662fbe5580923a1ab73010ba8261ce0833f7b7038747499183b0d8d7900ca97b0cbe3a2bbca9f46863f948c4de88bc437fd75d3af142fcbb3674a5f03b89a0ea0c1d469b6a868dfb5e224807918f4962d7b98740bdff5c934c5524b76193068bbe9a7679dec189b178df1741d5dc8ccb0752970bc61e42d75242d23c87bf3c4dec17a6399e411561f84977457d5dacd60264923f3322d0b98681ea6f7335abe5f58099a7c36c01dde0848ef882b39a9fbe890c36ce2ad6d95ab7fcdc657df4888325ad1c96a863a1b5f89a38fe9e4279c8bd959cff8f7da9835957a76fc4c600a7eb432853ccedbb026518888febe861ccffc8c2d268ae703625b8dd2afa1f3c597d641080ef18e70f1e7196734d764151e793d805552661f753df6c60794d95038621a60c4fa0d9871e7f4402d18a9beec0ccf62f6448019abbf0b3422b31ecc21eb55f061c5f98974cbc80e98ecea8f4b3e0496c50858dca136e27053cc91d91d3e6ccc2f6a41e26c9c5bb8de448205979455c8044632541e01d7408fecb502c58931c6bb056acf2682452907b6852b9e4e4e34ebff0d9576709b2211f5f2f22857d18a3d2962d72d757a986b19c526a7be04abe475a20e9f8d24617bfcaa255d442b1da86955b9b68ee46aeefa033bbdcada55b1f0ea62f4197fe1c6407a96700f0ca75b05dfda080838e451e55e8d797fdc3ec4b86f68c7906a39fee01aa7df6e68a1604f4b29a222e6d70d3f7ebbc6737e608102ee88ffba4576eeb8de17552c17587cfd23e14ee81361d64e04162b1a374cc8745b26b653fa8955bc6adacae02048a99b1360e5f43a8c62d49f448a00c3d70ed7f1c5bfd4e17b9defb852cb7501fb73fa704d90a15741d860b1622ac36204a460422ca89b7e660bd974f62f14c5cc28cf2941a0465942d1349444671b51ef61908d9cf26c5cb422157da354dda88feed3733d340255abb8831aa29071ce1fbc73fe4d03516480af23528ea0e81066509e175b1dbd817634d6e404511a3298b701c217d1d250fc9b71a07fc1e6e1bbd098dabba8702d6f151e9f8a8b74d06c0dfbb1f549bfa44e2d90d0421ef251f0cd22b4c62ebc4715c6374c6d364c01e80f9e0945400d715b1cf3b381a959a35d46b6c1fc9caa073c000b8013b001860569b29dd6d295389cb6073e2eaf527035a160c45f57bd4c2e669031439b5f474f9768b068d85eb6533d2259bc4c7cd806ffa746b1f7487df2a242258fceb2e1b58f82ed2d515edf01a52b2514bfc77530a242fad56ee40b98d5a31e92f01ccc6f007185126d66859a64c7fe76b4464320dbf3477495a7db601de32d7794383315bac73ee4b9ba43f91dcd087b1e66a35d6346d530936cc49da97bdef509db404a4fb74d7ff66ed36d64319f73576c50d9bde03532a1794c13e10005a2018cb9581296c05b257d2a9314142b2d2da58db2b2731135251fd560ece4e2e88e2e597fcf3d3b79eb2a73d0abc6bafe799954054207a729fd8e69cb6e69066b68ae6569ccb217e0106f1b8559f6d1715f39e80d4501eeea950c18cc8b058a8dff816652f4f8ac8d7507be78371d2720146faea1d5881b900d66ff027916bb203f6cbd5a75ffa1ed54077bb13be691a60ae9c9c925fada428888246c492fc50c499da6f0a588ac78dcfe89b8c4cda3b6debb4b2707d87f3289767ce6666ab53e6f8efca057fea14aecf3ded2f08a0ca3b4646a41dcc153c0003dcabcd435900082a277d3852482cbc0e197dcd7295b0581c788479d95faa7fa095def5a9ff3d608f3c89c07ccebbaefee3f9c433f892216084a611686ecb865599a1b6890305d7d1b1bdfac4d203132034112e3523528158d281b641263e767d0acdd2f0b6d49f012e7c41b537b8b37062d238fdd3f7cfd817b4574e06a45e6d201dc815cee059301f683d9f887efabc0cc3217343f7fcfc363467a0350a38ffe2c9dd14901c0a3816897fe5aa2753253e4e7411af8f3d5e68dd52ef06affb4eadbbecaee3481560f50403effe274029d5b33c339221a587aef9eeef20a58295bf53f0e2dcfe4ee42026f96cc370cb8b8446d2edfeaef5146f9cdf7213ee8cb91607615fb39b59f065039e8bed691f122a64a8194a72dff0446f8efe114a6036df5ff31f971048693c2d6729f65bf955c3a3e6309cad261e3590f3093f655078ad3e38ef92d4f49216af432111631c00d6c041e317935cd995d77aa41a1baec04240a014924c5fa14aec0f1431cf95afbe471c69aa49951470190be47a9f13c61a83abba072f1a754ee1c99ab2dc6b16c703218be83ff66f3d3e0b6bd037917f597f6257242b9fc6a8787bfefe7e1b5d05a0abead0dd4a4b976b7b95a7532f45b2a9971a6765ae3c2cac3f40a7b33e042e569eba81de6f15fcee5cceb2bcfd56abc45e833f70fe9afbe7f1f8c3ef7745a521756fe7a2454c34c338f8892a85e9bb53f2678c1915f58d0de3ace715d7b9ebfff5abbdcdb30e971904b4c6a4eb94a0fb2a7d4a8f9e8da4f4999e378ef4b9fe074f2960b89c78bc51e16e4e739b2b058f7e3696c5efd94573456db3eaf50439a22f00e302aed2f9c4dcd1d8a2ecb10249bc028b62aad4331379cba56e434905b92046de8f76410caeade7076dc04e693507252a03eb875b5e9db470442700f82dff3399c5ac4704af6a53aad9e4592439a7d46894b30ed04a44fceab3528399d015d70a7698cc192552685f982d1cb6bc26885c228217e596cb485570957d5e1e95bf989e2e29b7793c82344429dd84288acd707a8d199115bf74d149ca412ac6d683041b429a09180248b3aeb499024e574bc59cac454a018540c4bafd6867950aaaf80b7cd2cac5553071694cfd889944b6a958e99d666459ad28c4a489213fac88e4f572ec46d81945af86b89dc2bd9653f2f7fac75b3a019e38f512502387a40c3528c2c21fdee8a551a54434dbc99ab4698ce07b00a23f2dbc31caca5d4c397e459ceb85b14fd46d7a88915180b184a32252b8e2554535654a662b365b8474345e9abf98e95e025ac12825a8aac2c5ef987b1b7b0fb8de4936609a2d6699fae0ee0e714d2beb6fea048010f444140ee90239acef0a5f02e891f548944b143bf2411a0292a54c4db3c24299b5c9eab0758eb8644efe8df81be221129ae5d02384bf51e1f2fd013a5074580ad33636ee63dc0edd62de984fd34acab7c53894d2b3844968f67005c46d7887b5822003754746d41ed45658710e7b97433b22f8633bc64b62187557d628058a47134d85b5dc82ed5d64f1f5cc73decd78075d144f8e62c82a8eab9a1b6399ee5012cf4f12e06551516449629bd759d47e236e4872050278b4dd0ea415685f85c502681e625232ea539cd70c1975658fee49ebc7a2f093e842ccc5d112086236b03d550b1743379f110d7995114a6c9426ab8fdc3d12fecc5860474ad9582cf2f7fe98b20364201432abfcd523d708d0f797f80451d6dbc1e6d083b4269c131356ab90e4a48ac67d26dd7e6a5118bf0f97b2536a3097cfeff20380566bd1991c7ea7d1ee69f52d6b926130213441f1f964116419811430e705f5bdf88d9291272e98181320667a50ac90870c7743482db0697163bd6e3925755cb7bd1d6bbc9cfcc0e80efe6e563d85dcdbff91788037dd4e65507f4a409a7ea3e2d02f19625888dbc3703c2402c32d54a7fa23d9f39dfc0e34b93f523f30c72cec57742e8eba9f0be94103caa2ebc6f699d174282729db522e01aea369700350dd5903e62993a9a47eb9d646803f2ea6ac20d0c7951b9b4de42210488d3a8cb97b28335ee79830b54ecfebe673988d58211ba37e2523259ba87a4bf14e2442ea54121a59faba02a4af309a13c026922bcc9614c4f8689b6d77bb3a02bbdee425903e70e29a16d2f5c80a255babfd8ecd64d38943e408a463045a695fa65320a015a5030d77ec336d31a0edf97409ffb92e760db86b4270ccad857fc7037f1c126e8e4b4cbc028101543c2ca08e1a67ad775eaa2e04bd6af3ccfa41d3e25e04453ff8d64a3e919b4829f7965bca24934c01570a1c0a740ad6f11177fb5d631b0cec13eedd8e133d510fe4eb2df38c60377feaf95354a94d54b6b95cea9f0fe4105886ef769d6c96f0b04ca921b65204eb722f70fddab8b9bc8632216dcd64bb5df366998b1a28b9f4ff3af5733676446bf06777b5e1a919d705704dcdf81d416546b406d9603777b3b1cf85ae449bd8c91dbab8f027f0a07da3eb9a6b7f63b1c7515912386d9a0005dc0ef8f02311ece66efadd0ddc648f1f6d6aeae19720bfaa6b117f690d9455b6591edaa7faf06585d4dbf933b3adc18f996c0d5e28290a3e05dfb669085689d6e0c31782ed77f03906ca96594c7e9d17c28c78278c65fcdd3f00d87dd6e13cb0fed3b5c5d1c2fd14eff8edbb736f043f701108cfdbb1f7a005eb5e7bdd47b8548f1c3db81d58583753b10e6a07d6bd85513aa03063d641c960ad03eb3eba1d1416d63d6cc8ee76f06b4fbacb27031fe69082555be1347777ff27c30fa4dddd2928234551fedcd9dd3d8bcc15acfc411cca2d8e93e2699703eb9e29eae77b13424899b9343f3004dde039977a7614f510c2226fe85214454108b315cc551945511443e8e215daa3159c9481750f99d95a9caaa27e32473b06d6bd841052f2521957928ad0aa01a53f2b268bee2caceb1d58f7140eb2b0eea92bacbb1bbd4dc33ee36e0ea1a3de73a7bc8572499ffb73b71042ebbde728e54a51ccccccfe5c0ff08ec0cb3f65c610b2dc0d42082baa73ab87310bd63d7c8e12f4939ae9017d4c96ad495932cda64581bc0a2bc24297df41b8c2a78b4d902f6c0642ae58073b9d8f520d5429474151fc8175bfd16d664372adee815d698dff2765d7a20d493599e1abd464d9b9bbcc1866d4f35b08218410627cab6766b62ce6eadd5b9608db666e956d4528c4445c61409e11ea565b14977fcea7a89fd89cd44b89b92ddc0ef82ed586cae04b6ccec798217c666e71fc44f52df6c2c645c13294cbef20f51545f99347fc877d6046716b90e2877096a4b5286a66144559392ecb4ca5da406e13052105a90c42082dcc36af44cccca5d6f8a5657a5123fa454ab6daf0af5c8e9ebdcc3aa650c5496f454aca3e9966a18e729b2074b435e8c2eeb312f126ddca22539893575648fe9e3ff7c7ceec97fb737fedb00c516eff2c52722f3da78ad01ba57b113a92c2c485163be2924297426d851d496a5e6a6210fefbbef003ce72b17a89f9b5b26aa4f29aad42ef44bd139589746e67bdf38286996b5679def25c46aa0a55ce390b3a7459dfb2a805218450ca21402aa3908d957957497028b458418bf456de7befbd9f2fee398c941514a92851a2037acf1d422a733f54542f2d59499657be8aad971f70ccb166bd7825ad36957c2e7a8cefc7c91c0529995658bf0e7bc7df067c14244515229ff5acea38b0ee30b0f0fb56b192141268b57151d53bfe3c7b07eb16c02670145485a2ce488a7513752cea08370e89ac3642a45f46b0eea7754874d8bcc050cf2bd881ebef64247c8630321ee5eef07d4784af5d1164300deb4159896c748a5696958bb2d7fd4a19093d2fa28f54defd0a868dce304283dbd1ff2a910a8ebc2a2dc4cb4641948c47e857e6e460dd561b5186553d965b8bbe03aba0a42822489e41e3bd9faf7d093a4bd63b45f07dffa04b3b04ebef653b8d452f793cd43ba4a0bb975143784fb94f545b31ea1d246d7abd44664b7a4708f6bd155568ce15eae07b0ebabfe7604752b5792f47524e6033d0df3bbd443ef99e100b75519d4ffc11463b073a152b69b1acb4bcce713ea24ee308edd0cee99d959567c1fc4bcfb22c6739ff18cfb98f3aa2e8c67a598ceaffe2ae8762c284c94b0c6ab2d5c7a836f263c49f7049cbcece4ed0484acbb7304a651414a31201af2582db0f0353fd65d422fa3e9e25dc8dbb91e13fa316d154c4437dc478e65bd5743eac1bb723ea24c13f488ca44cb15470ec088c98ddc0eb031a2cd98d2af41c3e773748063936926263c650fcfcc550168252e2117388807fea6fdc8534fdb851e795fa06f3ec47567bf478f7612329ad8dc018e9a8dcf48df33152c9b99d06d6d16f23bef3983a92d2da16f6fd360a0af2321e9a8ba9333337ce47e3f08ed67927eba671ba746f549bf7d6cd3bf54ee7bc53e9cab692b5d9664537b747536effb441b35a2d786176c4af350a6a2d08ee67c5465244d76559ef6d52792bdb8ef8b55efeb4b091d028c8b2ea63d546a53ee945f5ed8b5e05a36db0f54919b7267a959f191d52df7e7dbe2a2a9910b6aad4fa580d52332bc2ec57d1d71f61cc5a7dac5a18df17fd28a88a64268465d50c46c8f5d65b590ebf59d5301bd5c6ab50a9ebbbf5fe9471d01b9587fae9ea10bf96d03b8dcec032fd6d98834a086ef7f3080812ca780347fc1a371ee570e0a03c541b1eaa8aeffe2ebaf3a05140a064aacd1b058d844642adb5d393675b91d2ad7e24340a0a1a49813232222aa222a63c54e6efdc60d187f2e15bd4fa29434dd692d0d224d42e0f23296dca406914341252a936cfb24a25199c3931e81e7e80c21c0b21bf071fe28519eca135e8430e1d3588bc6ff443b579d9286814b40342a1c11d35885fcf66aa4d14198543f296f8c10fd434194d73b0df7bd0bbf4644aa5923b08236b10c6f8d057d0513a0c1d86e9deab36f05f4d40d750ef54630b381f0e053fbc13104cbc138fe75fe2c5dcc0c134d5f3f3a0b129c7f3e7601a1f9e5f07d3f4f0fc3f308dcc333f00988687e7e7c134389e5f08a6b9f1fc2636c53c3f0dd3d8787e1f4c933dff0fa6c19e7f0836fdf35fa6a9f1fc354c43e3f909c034339ebf006c92f1fc46300dccf3073100d3c4787e216c2a3dff10a671797e2498a6e5f913c0342ccfaf0036ad3c7f039886f4fc0e601a95e74f826946cfff0036d9e78700d35ccf1f01094c804df4f929c034f3f92bc0343a5ec64eb3ebc1e581dbd1445cd765ee2732b14ee79d4cdfef7830f36dcab865767c3fefe81dd9d64fee4cb60107004c6215561b1ec6e2078c1d03783c1040bcab0122cba1353c3ec76b7080f829640d00be01af8647368514570d10df3514e66a7a8b020098632066de559b2080f899ffe1bd4d41641b92bbe37f782030662066326e6d47e6adfdd03707e6b6c09a16b2c03afa23e6bc601dfd3aba8adb3f9b8adb4f3b05b7bf360a6ebfa84f70fb2fdb39b77fd423b8fd2a3dc5ed27adb0f44d185a8c39c878c3ed9f41a386506b581a6cc494e1f6dff8820cb79f070d0cb75fe60b506e5b35083bb9d187dffc6e4378093766eea7b567655c61ece4b6bbce0a98bb82c302ebe8cf81391f30661d3df4cb74e1f66b5eb8fd3c84e1f6e3b8113306661d19c6ac030b62d66aa88175cc60c3ed9731e5f6bfc0e1f6c788831c6ebf4b1d6e7f0b18b79f05b3c36d8d2482dbaf22c5ed1fe124b9fd57bfa80426b8fd54c9edf7e303cbad59ffacaa9bb4d64e3ceb9ee803eb7eeb9e25dee9d570d7b87a447c7ecf0d512edb88c265a27048605ce9c2101a2a8f32f486f86a84b0333487da2eb7d079b284092ecf0521680e53d020f4dc8189d4c27cb4b9d842ca163737b6ff4088db6fd570bb095768c3edeed72c97979083853b2f2f21c7e78541080ceb35d33630010855bc131263881368c31412ca8a0741261884185023d040183f10820e9810832930a8719f1ad4210855b87be2c516141526d0c37d6f6689281438c37ba312f0e874e18a1d1b6451f39e70dffb02e73e8f3a3d52e606433c8472046d32b6151d573189fc433abeb1d45a9b1ccf8c345a1fdfb6896a2d62d637563d84ffde4a6b310333d76d3397c8fb2248dcedbd352d8cc66ae3ee4ec4bd75a64761165b692dbe431ef95052598459bffbe6207c19307beb2b11ee1b3be28cb8cb23b3e8040b3fbef720ef8f682d9ef83d71373f867808e588d964dc08b462446bf19560ddeb585a9838d4e3c4873062537c8d1651a8f8b9ccc50ab6789812ad391277e63a2965bbe95cb5f1f83376615d0ab6ff59b066669b76fb5b6b7eeb27556d2ccbbf390a76734b7cda9d656bce915c77583c1926fc20d63735424b2831f39098b9ec3076cf3606724bf895e853e925d126fff77c9474a907183353de7bef98120e0af69d767af49899d1b47f49f858760ae30e83f191e34e827ffa552e4c1e1e07c714b2e6c673cc16a3dcf793871b98ab998ff28071cd0d8c6b70605c13e49555f1d15b0c82c13ae08cf739dddddd9ff29cfe98c50bf591fd9fc69c3fe3e521164f2e5be1f2131ea1db03f581fe50e35fc6fbd0431d3283c6037941eca041e8c8f183eb4146a6e5b38f4fe04f1eaa10470599efd46bad51ef39e69ce146ae3b6760eec6b8ff3c0511dd71f8df70bfe1ee363c73f7cc1d00fed2a3bb63ee6bd421fdcea312d183f280e1b81a1cd9145f83e36f6053946a70645e450bd139a512640bc28f3f4e2efc2d2ed95c870b3f6d72eec2ff9fe8459b806a5421fdf15bdcddb26ff9f804e6e1479fe8a4e78c2ae4e5e3cbc777f5002f7f65d420d4476a06c671c93bb9a02aba96c02aba785422facef9c860e77b156dda663cf6f07da74d4466fc3f7cd7611a1a0fdf55c034d8cfc06860eebed421fff13ffe3cd147067b5df96f0c56bed503bbb9ce853f69e80d4c0b226cfc8c9ff16ef23beab19f5187f473063fbe8c3ae4df33f83566646fe36bfc3f36038bff4f03e3db318331e2aebf137ee31bb96e8c1be3637cf732ea90fe9839e1ae7f002a119e6dd9c7273dbbb490549cba7fd720feff3330beaf1a71b7c63be684bb356e8c87b588ecfda7633131ef6a11341e7b1823eece7827fc1a714277be91ebceccfd4a1df24f2373c2dd1a4faa43fa67e684bb33b2cd3fc6643042b2b7f136b28c488dec5bfb8cc88c9f17c3b6190ff376fe5583cc9810e32beb6730426a10a1f147dc9df1353222d1d2c2d2c8be35ea676444fce1cbc8367f98bfaa909720d4cf1e94d622e2937e32f5b235ea5f30db5a0c972f65ae0671797fea92d167be717d06cbf5a07add35ca85f56779ae453853f3a9156c8376b8f049d811773b2ea954b2cdc28c07108cfb3e2e792768079679cf82fb4e705f4c72dfd7b8e43e9af1e056d1da739dd65ee77ce73c2b935c659b7ccf0fba8ccbb635969963dbcc758aa2208414e534661d7383999919f8d3a627454e91605c96382fdbcc061c9ae28b2f3ec730f237e06e53ae7a6d601df009d9f7159f5a47324dfc1276e133ebcc485b067eebbc52c9bea1ea093d19c834d5dfcccc7b42cec77bf8cf0d4c131ffe7b039be6c37f72e0137d78b9d4b8d46f352ec52896a17e628f358a92a930ea2336c5d7549916f15fdea3e8e318d638079b62b57914155f24e26f7cd0c93960a173b3cb5cf048b96c647b4ffda45ebf6ae3dc93d8bf0d5ee698fb3e07bfbf437fd9fbcbd8751466c9b6c6459098b95d648608533cb99c86cb4f92005d9ddbd43bea5d7d3a822938553cc9b9e23a195c7e32851777569573efec85c111351af5a8416e3c7abd631ad15fefce44ff7ae94ceeafa7cee4aa8d745ffbd217614698107dad0770b50671a28af508e29ecaf8c7eda6b01eadf506a090984b653332734ab476fdb4dfef426d2222faaa720611a682b95beb90fab43ea5f4eb03691591ad9ea344f4c0f09bd67a0c76f3a08d7af9fd1ec43467601af744a8a7bfb9108589ea10fa8ebeab14c5da894fbfeb272a34be8eae7b5ab3adcd97adcd91caf7b734842f45525e79edcf57c1ba07fb31e79c3128acef74ced14b5e92626e25527aa37b66f7ccd9d3323ddfb3cd31ca859dbf795f3397ca5fbf526d2e49c96bce39a1bf96d775fd35af2b235522fcfa0c454262aa0a71d706c59abd14d88dfef5d76fddd38469d8b6e6445fef854d578588ee28c8754776babe1b08fac20479d7febbeecee7adcda7226cf33bb30d89bb916082bc3bffdd996d51dcebe9cfeb27e562074077f457fdeb7a4b7ffe6421f5af9d045c4fff49129f6b29192c5fff5945f38d5cb30eb97e5e3fe7730d32ff7a4ab3bf3051ad41284954298dd15acb3106bb75cf6dd2a6cdbecaf7b7933611b13fea611ad2bcae57798b6dee5e4f1a32fa6bf4d775fde88134c9be13eeda4c05dbec8b7e8411b17fbdac426a109b5dd9fcb94293dceab7996e82754f6bfd403e0fc5dd7531308d112734bf1e603efdb9f2157b7f61955e2c35c87c9ad1faf35d1d32bf3ec54a988c20376ecd2e27dcbdb21f5d88bedf7fda4484fef5fdeed3a65985b81e6071eb01ea5f3f31beb106a17ffdb458d0a3cf72e96f92fe8d4bdf83da8328eba04f8695d6a69d7f617e5f15725dfb7384d13b5be8fb82dddc75a1b109d67f96e8fb8225f2adcd3fe22e91526bf365b436df6340d1bb530708465875e70f30fafc19a31dc77091b746bfeffc8ad9d6e686e4cea7db8cbb758fdc6636ef716cb32c50e7b28d28201295be4106295c8d67d109b6a370485c6b1ee5766fe1ef6437ca7cd25aa65fdac7c5eddf6edcf7dc4c207ca19ba34f945a5ab7925945cbc42b6e3fc5832feea6e55c265bb4c6e489ddfca7bfdf7fda9d3c796f9b65efe60269a7daed1099605d4f0a6b8ed6e26f32321870327c10ba455f169760dd8b1e842f3ab19bbbef3bd35a8bef7d8ed6e2bf07d2336da29efa190dc9e5bb6945683966e6a87bfbe11cb572d21eb6c564455a8bae3a8a15692dbef666b6f5e83133a3695f8aadc55782dd4a37c6b4896fb4adbd25620f6d537cc74476313986524a297515bda2ef607aecb19be5d725e7834622587ff8afe1b7c0b94deebde7f8f53bec35231c9cbf3df8f1376b044208bf092417664dd419df57f0519f444a8a7a597d124a7e12eae927a9329b8466a53723b7ccb8332682dd6c7c7ffb7ec691c09d73d0399ed323fc47410763ccfc65d44b46bcfbcbe891d65decb15ba9e4a56e1fc18e7b11cc22f8b1fbd9183fcaf33988b9cbee27f6ad31ac46b89b895e8ab226905c2395e8e53f914824fa26905c51d6047dce36773f5f8ab05a9dcb9aa00e428e9fc493f85b9f2466d6ca4a95cc5cf6b2b8c20aea7c48b7e33dc3983dfc19ff1d1542d74957bd8cd65ca48adc95db6fc5dd3cd19a8362eefc1350f4896b8a00c132d143f5503042e2534f656e27830942fde8895c2441455eb5713dee37f7d326d826ebdd3b2007a54d5182a4b489ca9c15ad2d4172251036a14565ee8acc2d690d735e38282e0676e3a1956bb1cd6d21a5b5a5d2bfa6cd68b7489b32b0b204136d72d7fdb89f27730492dbbc52a3054c1021597d22efe1f34572f95a40b09be67ebe60dd3f01459b2887d326f9ce3a42941dd19a53729d9c266ac8cb18902101456b0ee7092b0696025a0f238e6853c5351a3ba9be4dd0bde502eb6ebf34725deab7a64ef8a532661d4fdef80d58e8542125101813413c482e379923912acf134337e6c581f1f0f81c91f6c0e83c19264f66c78a151e1456dd1b2c38586cb05c365a288cba375c70b8146024835d97c2e20f952ea22f551b979b58aa3c5faa42de05c05300a04a33468c1833401a2687c2e0cc0781d10002a3b103a3e164e66910acefa74cac9fbfd19e9d27d31f31971b979cd61a26e7c9f44d0b68fc9098c0e4bc53acef72e37293cdccc48861b236fee5e5079803a13be96c6439fcca603cf171603c3ffcb0b9dcf4dc26315972abdf5c6e60b0783224263183c9a176503036fe879717186ab2391ec68787a9363e3c84104207217410e6e8e1733c579b1e1e48cbbc8b03e3897fe3027a27171d987c32304a5a83d18171b99130f32b43b1a0f2d8d6344d860c0a733cf0c0c38c19317f232683b1f1314fdaa2656c6424971b179c3ec128691ad5066630354a2e2d2ca51552a9447df619866d2f24262426da0c979bed850bb71f0626e766d34a2e372426dbdfcde5667b4bb89bcbcdf65b49c5e5e6c50a0f0a7783c981c981c9b981c9d9682c41bb1b4c4e0ef58dd3a60c503f17deb4e9e550f04148fd503f6ea8b576c3500d1d89c445d133a27048fcfa4187c931dbc5ecfad55af96bb58435018ef2c49389439d3e5485e1e34309a86a8e70f924adf5150088939aa3b5d9a387a85eee8b3ef9d09093323454c908a30cc35e5e7818dcbdc0270f0a2283d31c9a7302e98469e4b74ff54d73688e94206bed4885a6e0447358e6f25313502a6efb5095b91b1b1ff22107a34f0ec7d597027b53bda1211faaec30f42515159515965eb1964422b1b438fa7e65857a4782f5a136718b0b752370374e0a3e391090098686864a604fd43fd985f491c26ed4e7f6d31caaa44fee43ad350a866e334d15d16955518411f2f503bd458ac931cc6e3a8c94acacd953ec641aabdd0c417703ce33d9e3a82aa2d5112684a07802a7ba9bcb6591255aeb7fce0024944882021318d148035968a5b2a2bbbae239bf7761e46ad353ac4a17d0b99be23ffef306eb5eb0ff1cd15a3f89445a71d9f364de600b006485859570bb8765fae511989b70fbc7f282ed517966e230c3c2c2e2d231ff3934ada5a5a5e456ac0c17976a53c4a5dac0f7fc9fec691343d9f364daa60dd6651327b7650ffd4df6c8d67a4e51fc4997909ae0ace3fd042c60f9891450ee462f468fc0fb5efe4caa44125338e8488f224928413926628cd8e6479ca218144f30e0e626c2ef9bc69e10818582623834d3423e12f3dd33c07af7726648b4f642df20e50b12339a3140de548f449b9080e281bca68ef8a5321821d009bf71c55a7f3ddae4fe479bfe89a118379b5ac18cf13cfc60cddf02208350f98d07f561f49b0eeb76348e951957a9d45265d0973138a4eb7e15fa03505b1eacd077c5f98842dfd216a309327efc778065fa2dac09c985eb346a88dbff70c4381f395c07f8c4ccc413c2f57d45b887eee36feede3d73acb99bea4537e82851a2c31c5ba7755aa751d03ab79db4924641ebfca095c007d2a5aa5375aa4e4541d5b9d5495552515075aace0e1e62d121f42897dc18a1b3e2bacb36755fe7de469deb9e510f6364ae9e2b20cb8a40773b02ab4a0b6e077cca31e95f015d2be7565eb81df1a543181f6295161e483b4b4a01ddf830f643ae80628cd0dfcf786136e69c9f9048a8cb5b149752729b9a8ebe1ac495a01dbf53729dfb8841f7103a873925adb9763048a2f317bc33582f428134554295d01250259736a139b404540955d28f21a91c5cc184f167e6efd11a337b7199999f01fc7f047f8f36fdf01cad71ed4ce377fcfc316dfa9b04cbf0333b59c2ddece514cce06e0cc4426d0593138d459bdc3922fa8dbc303a3be22e67fcedb2e0220a41f72f730105355c49b18dca4d5aefaaaf5525b2b2cdc12ac4bad5d3f78fb92214cb1fbd60a9df6c143e17be8b0fe4cd6caee7fac37eeab9775bb89e36b97741773af7d441b1ae273bd2ef5efac73a645e9779c1c6ef3ac40d81c286e07c7875500e8fa2e47be9efc9e7aa4d7c0f3e78c46fbf1196ae47c0db91eb94b67c9e017a5dfa853cef6551d01a2d3a9353a6c976860017e4825c508d16ae07d1b9dbf1decdadbfd2aefb2de63afbdbdf51859119116ef4afc6856ffd2f95277d2549a9928d32d917c8b3d856e3d2364ba9875d6c486e6f45b45b5558f502dbcf43fa3d976dd875bff5dd5cbe0c68378b186b355af4a3513824cee11ab260db9f4b291d12d21f6672066661b2efa5b452661bf59c6519e742533e3f943f44128957d817f9392338218f4822de1ba1de1f91f7bdf77e99cbe2c54caaf4f254a81d1b8bc7bc30cd0f5f8a11a25988dcf76e8575f86f03b84d12c04a1192ca10240ca88c7ea86460647d8c34602f1acbc4250ac06544547b883650e9a93641a7891e999610930356c5c372a29200a83a20a920ae7c82e208c4a59899b98bf09414c1b9d260cec9b50898c82f776366b622462cdd2dc618dde50a2d345e81855a712bdc0ebbeb5024595953250ae5638de4a4224539611d4cd937e431564ac5eb6e31c6684d9f29f21b1923d5c33ab83ea1182f5a45eb015961d1cd6e2f4a8cd02d85385332ab54241aaf6f0eb3c8425e6ab2545fc5e7d6385e81922f8875fc852e3432f303621d1c63f4126d2b28292433b39d7989d1302f4e468c1126c61861e8b4386bf98d21b15c8d29e6a477637ecccf0a2bf8313fc9985bed5847ace43b436766a0cbcf1f3f7fcf3d276b8db9ad78ef956657eaa6887265b64440fdd8b0bbbbfb7b4f54a9e83d11d67d998a08e68c57f08e567032b0fcccdcce2161f2c71febbe5fdb72f86671dcdf5dbfec773fd33dc078e2b794b2aae68cd799d6aa672bfb57bfb5ea27566d2cabaa5c55515739db9ad3d6dcaa411cb7e62eb778e8bcdf13496195c1fabf3752445ff9f2abb7d617f6c8ddeabf9b87f3a0f4d6e4b6725966b46fe08d15ed91ebcaef824f4bad7473f6a9952751b615a1d9e6ac2ac4bab5aa45d08f5cf9565a02aae4aa3632ce39fa392f9148248a7f314924ba2e9dbb4511698596c0f9107d6c19b29201e928124591cc6cb5904011ab25ebd31d8b11991fc595d8f66e15bdf5b6becd9ec4ac1aaf3ac47e8d6f5d3febcbe77a80ebe703698b496ca34aae358adb114a6656cc885c3fab25e4fa292b76627979d19a490c46f4d6dbd1a8beccb620f5e5cb7775487d199fe6381fd23e90b7d18d2ab996d6225a5e6644e4cf9f2dd8e66e1d8de2975cacd8f2556914a34bcb4a1311e6ee755dd7f5a24973dc8efab0f2b530f915b39e84d967c1547e05a35e66b0dde6de4d35bae448544be07c585536a92ba26fbf66d68b3222f465fde92cbb7995f5bd66f55d3d8048fe95d50ce67aebedbbb9b950be7584baf5b723d4153dc96ef3e1e87d3b425df9a46c7339d782af82f9cc361f596a5fa5dad80b7397524ae9a5e45a3f45d7774500dfd15b8b156183d891b5996c4d56f4d28c96c0edb02ceaa8923b1df52a4a0933227e73d9468525313861e284c98e92cb605ce6a2053a97352497df098af89cc168dbc45632b7b621f1e90e915016740eebf07e41885dd8f8d41b21e55684bfb8561d2cbf335b74b0da3b51f71869cdc11a71449ba47c97d36565045f09bfc76566791f4729587e77c27477e6f7b8dd1d757777f79faec29f6f454a6b4ba57f7f976d910beb7e03bead6c48dc2233f7ad18e15d6486b6e6bf32a7d318638c4e8abea9810fa461169d60dfb7bfbbff0848606105fe007171841c29a87029c4082b273813519e103af24455cd137c410c5548424f55c10ac62fc4c003380158841afb595278a6b586e58099e50e062b34e1a27aadaa2a2b5a7204606895b6450b7477af723081062c8e89239ee3891094d44dba7b0e1c0f9a00095cf3cbae4f15afc4b8a5ebe258cb65b99791fb2896f12b7fe5ce48234652b953d2888deeac68c4ec9dd6a4a23be9ac3462f4ce3baf39aaee1c4d1225d195c9325ba6cb2cd188b93b615e44f099f280102e5faea45c8c08e07bdc81142e8f3460918318e00485c1490d3fafb4a00055d8020a6c48820b7c90c445210c285cf6c21d7cc4d0022fa880e2c51461504bc208e3c1e75db1a17a1d6364292545515555ad944c36beb481ccecfe302ddc53188e16fed3b22cf71849106d542c200b0a6645d9016a5384b15fa5a79211ba7c10cb54547a549af489ca2cf72c959e5931b394ae9273569b6801d1b72c1937e79c73ec9c63e7e4430c56ff40d0e577ee7b872d8b3e9feeef3df9a44fab8a30623cd59b6c7c527e556d64aca8aa8a5346486595115e11e3790fe74382dd443e1793abe7f63b6a860ce68c7137e666ee924b8b3cc16ef964bcbb7b85a432b297a8d26955928ad01f7333777333777333f78ba8af2673f6a3701e3fd76c1fc6dffdba9fbfeeee7eddafb99ba7902ca34db6354c4a613769dbb4c9537c4f6d3f7bdddd24b5f2659fac9ab6ee770a42b08215ac80da81bab9031bee7087a781c9311b3b8176b0dbcc8c75765c80105a8f814dcc22f8f2bfe75ee4d70e4ac73f79c6a6dc65c7661c3ea6bff925a2fdfef1ba2e11bbfc245525e557d62791f2eb27b1e627a9d6d398d9779a957bd23dcebc354a0be75ee4d70eca763fdd8ccfa983fede43f81e15eb6f303e65312331c6f84d20b9316be2aabff97befe1476bed7b5913d77b190f09aa4f625955f5d6fc245592ea459f64d24f229a5f294a591584d4074bc8d98177b0ee9dfaf3bf740e73772e8a09c1b0fe7616c1d7a9bb17d91d94ec3ffdf953f4fa8cd3afd8d3e799fdca56fbd5bfbf44d6574f1ddbe85720efba2e117daf9911eaeeeeee9e7b993f274c59dbbdc8af1d940c2bfc091f7caada40a7a27717ce38ac2fc2be3e387a6b943581e48aacf7b7d77ceb2b06b1adbee8237c68f9da5ab326aefa509419a9190f84f0ab4f4233f9d38295a4627fc3e9e3a4c9422c3f490214f9dd1f4392ac6ff9d693926a6a52d6cb1c6f555548bf7c320428d7c6e52743e8b933933e330cc66d6eeba7c976e678b4f6aa4dd6838795ad35cc8db9fd5b4c67333ddab23237d8cdf5dc96773d4cd3647342d73930de3d611f147047e0292ce58bcdf530d0dd5ccfe67a1a8a7be7a04861f9ad6fbf0b9f80bcc7149b2e3e89beabef965b659b734d5a73a233dc97662e5c98087b28a028952c398a69cdfadf5c8f3ba23367931db9f5ea8fc86bfd16e365d64e8480e0c6f8c6b6be317ebad277b6c56ca07af9133be2ee9cb50ec1aecc9e904ab544ff76de4994b594d6969ae58fb84b49bfb5cf95bff25b0d3eb510e9edb8bc256d22e2f2f491defd249136774994e48291488fe59ff8b8262d58f4619a167215ae58d5c4dcad465f3121a11a77ebea6eaea7846deee48e7e760fda497ff7b4d64e5eb0754fc77820dd588cac9db4e6df21a0a4ecee36f1bb8269e8c3c175ffa2d8ad7bde8ef3e154a8777c23956def3af1c208c3ca7888c83fe2ee7cea2bac629b73979a94a21ac8ee74177dbade69aebdf007c5f6f3b793ee27d73569cd8dae1f3d2be67b01d3f4bf25fd551d627d5bdffdf23127dc953ea2cd2de13aab499bac77f24b51ec5672d226779dfb6e22ddad4e5c4f8ed6e8ab7c0bf5941e723edc174e9eccea55b0235a934f31c91b0fb7fa5b952ccb2fe17a9a300d7df76fe79d7ae5edb8ad749778a71b2c23df75c10317db0f511242c795cf926dd27dfb3c27a5fcd950347f8922ae8aeae53b29a1bd29a46cb35fbc66cc7bf00fd6fa2d06847fb04c3fc40ac05abf08b3409c8f99d2bfdbd65bf500d61bd91c8531ad649649dfb40fe33ea76fb25c847fe6f3b55e62f4279d4fa594dfd874586916c33a6466d1afd99cf31ba319089c5ceb5f1d427dbf7e5fb91e0adb6206735c6eee98cbce8aa29154efc10e9363b64885dd1c932ba3b5577aaf9f50a9142315767b3df75d81452f611daffbe6be57e319cc79efb93efdcd5bf27acae41829ab59552ee67a7c2cc453a24cac08852d5155bfc43bcdaf322696a85eacaa72ce392931eaab586daaa7b0255a7b35b307405ec542776b21f94b7411262caaba5ef9b5500ff59413b4900b551d61d01207daf2d98a72db82d242f4cf37ff6122a0dba248a1d84de4d3536c55559665599635e7b499d5e6bdbfc328a52eb380fcb97c87ee20c697673e855950806cad3675be3b9c545540554359506c8fc9c27724581786bdae6a633d333333337cf6fd48cb92efb022be032f85e168e12c2095262d447f54e96993ec42f4d326f9fd222ffa2da0778abf89aca7d243ed58d1a79859502c201f8215f9b4e8e7e39598a3efc7ba26fb5ed0ed0714850d10be0b5d918fc847a5e747a56747458775f4abf4887c7a443e16d0c32a87c90bb111c4fc59af1db72cb96cc36398c1fd6c3934748ec7bddfdf83b05f767737ec1b96824ff09dbd0da9c9f67b0ebff7de7befbda0e8ec6c8a6ca2d8e4f01bbef7ac6755ce87ce75bfa9dcce6977f21b2723027782ef6864603f58eae8af5fece8af1b7eb784ddb6bd1f6c269df3dcdfeb07e37b110eef3d2038cc150ff39b4bfddc795d57b579198c92d69cfb0aac53946744de556d62c3a11b08fd9ae4c4fb99e079dbb8b96ce341920b384ab19b338d7b6ac849400dcda0a019749bd56037bf11ba9bdf37e5ba6cf3db42ef37f97e1450430767c8c2f70e3b354ecb74b5c9692a58ebdfa826173e55043635a479f8940f9f7c3c7caa87698478b8b3e4c267f61b3e4126b0090ce5c27f5c601374d25a9f7af029000fff45e113100fff05f1298887ff84f8647af86f884fa787ff809866c7c3adc78502f8193ee978f8cf2719f464d887bc83dbd1367894d8e4c3c397c1a61e1ec2774c0300eae766ffb2bec13a27fbad6f70b2cee181ddf888e16821f3537c8d1639be75da54dd34156caaa460ad9f2e79324eda4499b4d6840164b44706bdd305f464eee07c5c6b703bfa83ee4be6a200015da1c7e3823a86fb9195c7f9f8545535c410af34c41071c710188c8d1fa2aa5a2c960c4649cbd8c86072d060dd9beccb17adbd04b5d64fa35424705acb692d0c0a2309053d99c646238c449a3d30571300cc39793cae27eb81718de7d02829b0ee5d1853e525ca0b900c19335c7a5c98b8ecb8e8b8e4b8dcb40cb5fcb7d0203121fd907a484d6ad4f081b9254f260e3bdc32f42426efc483d607791c160e0b11858d4497fdf1611d0d035361b10426270ad08f0ff3d822bb2c855d3fa200bdfcbcf8fcc8606cfc8fe7512ac558a2e4e5e59a6223bb84484c9890b6603bca21f24183d1f0a1e1a492a2ba59f9adca59b2f362c25e809e4cfff83859c2c2d2b28373532b490623f5b4466272094597df2e2112131293ac0a1d9d51e3d8cde586c2eac51104f612e505e825078fd148c525c7050b972a5ad32191e89277ba840280c1f4c0604e188c8e9049081b9853e2725c4e25a22f4c8e09e895c178783c0e8c27fef0889607069313a867a894cc3775452d191a110000008000c314000020100c87c462c1502ccf6455f00d14000e8ea64e6c589b884992a29042c618430801040000c08cc8cc6c92004d94ac5926a47fb5c172beffe247261986050ee15e4d07dd00e3710a3d4bfad2fd3c1b4423324a6455aa3785d53850a41f42a63d6e027f83c953550662b50a960892cedf6aa88a4fabacfe34f3f0607da38660db3833976045afcca64efdbd91bffd617d0f4a30886cf09e8d387f5a035ac0229018cf1968fefc937718e98eb2d9e41b7bf512f4b6c64ba787492a2016a90af65c188e708f6ac124ff1775701e4f398713b34c0167bf85092aaa44a7ee6f2554410beb92e493af41f20bea522ae0079344e09f8b86a5f90ef3bc54a840bf780a0f231275415c6b8c8be88f97f6d9ae3c95c3fe4cd0531142b9d22cf1becd4193277b2320d2da933358310a940453dd7613b383617608e69a0b5e6ffaf63e5949ff00fdd7094e6f85be0335eb1fd0deedfc0e9a079a02743668f9dcd725e1a6405027903a483e93faaf74517b26a9e2fc0ebae77d9209439998679a5a83f1b22507f41bcf11788b8df042ccb40006d2e705075e7551d0bf8ea740095e619fd45c808bc506b641f0041efccd2866cf5a9cf747668ee54f7c3d18d08086dd82852b71927e9b64704fc610c0c10e043c83d54407fc435f542c9718f13ca26834b48cfc1bdb9d3f9ed5a68c5383149533c958e9fb7aed7125f077462e999e7cdd587ea5b711410b9d36cf5390e62c045e4ea597918808f59add489e25e28c8911baa8c612631e9195e257e1efafb519014ef2740d7c07aee5008dec27a7f3cde9d0b6aff37a8cb7da406cf686b9f8791d0269a2e2916a392f8f880d392128a0912ed34049aafa176d268aa08ba5bbdcf7061e14e1ba02d798ac83128cf6dde7f5676c383853eee991602d4851abb8d150b6b6820d7b847e02aeb52690e7d28942b1c09f7f9d25409313188583a228cdab2e03e8f55f7d0bc4fd1114b397d1aa83bd2a5baf3892386c056f1b346f8aace6b86fb86c30e3e0fbbc2d178985afa6fc491d329c31abe5fcd028719bfbe76231160fc11fe742e000d565bbd0bfe6a11bf92e8c1609b44a28df9d4532a8d384c17019fd2e0dbf6a2826e754c8fcf209873e939e129d4002af8e008a828fc40b6ca1678eb75a8c7cff4fb1eb1fc61b6023de07b53d8602d91606557ab9f041c1035abca0e9e8a52b14671be94ba5e04d63792c6ac00b3c96433248cff196c8fe8dc9ea8f2e7e1e16313ac588e40292bb76a1c4d5b16317229b8f1cb0ecaa4c438a8ea7b95e04207a54766d54aab82178b61525c3b1a53470d0d6abf6ce4a644a4766cf04a5910f149208903c0da555e8c3311e23805c0d1c318c0b9858a30ca549cc5e6df65879aa6cebd8ae894bd3961a9eb79c53cc13ec505280c8a1341030944ed83a7980569f77cd598973aca1d49441a4899808bcc9e54f8db581f2938755256672aea10da7b1a0b494b18e7567aa8b2a6c57d42061f755a87564cc67dca02b138fc207f0a1150accfe6ae38af22ff5a8d9e552d4240074f49b8979ca048be984b498730d6c20e7af50a2d2aee8c8519fb14ef94e2a9c82c84e77d8d926117562a57933e3f4933c8816b4618a080d31d4d157812ab909a6dcb889f33e9382a7dd907981f63e3af720a394838e2591da0c0f685e753ae23410f12b2fb3cea85c31229172fa9d23dfbf15df8a5be1adbc2beecab7f2aefc56be156fe55df1567e2b6fe5bbe2cdca192e467c263b2ea648dbf0f74a71aa544d4099e4cf6923d0c8614b030acf8e55b75bc3f298644e4a93f970454f25eb335ea17ae61bb0f7099af14f68140f47d1bb736a61eae7bc07b97583656dbffdd50e530900b285f6ba05fc4412dea7d2d4a863601c4a5028e8b691934e114b2e140bc7c8441dc427aa3b7932cc963857df683d0d0019a3a498b517090a8a09f434cf246c82b3084b5a576fa37ae0d2db490fcdf3f4b9962223314b8ff959a0af938d3007df814086e91c298e846a6117a67b567796895e20925817fe0fe21aab83e651b9488a3038dba4ca7cdef8de4c768253d0bf415782b965672b22b9648d0be576b895e35b69579764e49a9ba685dd70e6c8db8c922b75666739da8ed8dd55d9c45d2f71f9097873015b731e80566bde059554cdf3112155297bdcb721fe3610ff203a0d3d170c45877aa18c5e38cafdfcf22ba5cab1a96d2432313eda9524f0e1ce06de9070a99300f8e44756d386bca40b1aa016788deefae349474104bbcd8827d633d5b966365ce94373f271371860de2bff9c1c34966e40601a8dfb0f3287f811f35a49def2f626746b34e2ddd9902ff26cd8ea97a740c4cb68696b663e38389a648d468c2739b7735c0653b813006361f658a14ad10b68178d441a9724641f7143f453da5ee96dd72c68329c73b7c7bc9295fc1b8dc5fa7af02468dd1303e399cde42ccf4c814cf672aa6b911867a25c0b23a6d0563660a64360a2ead3a4a2edf917fc1dd46b82783d76e9e4754ec75808118e6a9726c839f763c8bab9a81e24d68160c80b733dd789e03411a511e8e141651c41c6129f3302568264531b23dc2f831492c72dd291188d2c26b9f703a44388d15894313adc469d101a67f98e968acbbb5c9e46f3ff1c66e54e31191b712bf197b4deea7dd7cc71de0e2cd3635b7e4d44be6c95da0a7f5b52b95650bb0cb415f36b913f73d8585a5838095f5c3c14a8b267ed99ca83ec0b02bf0619f7348d7a6e6c5eae6c6f9a08f02039205d77adc12f616fcd1fb506229b171a79ed631064dcb2800412eb405228acaac0f1d2149ca621bb72208b74271a009bde34bab266b1a233a75b50c3d0d3934da761d44bf0824696d890d3c0b85cb3c000b4b8bb7150b48fc4221926754897672cd8d3e560e65ce443f705a6e2e6a0d83089b77bbc271f4a9e72ed786ffba2f0ce45f894cb6185db1267b64720303427d4629bb7698781253182a4d568944db67a716d083637dd5c71c29663fc623acecf2342e1e67eb312cbd4ae1e867990f4492f40f9534ac797346a7a9d287ea97c98195e4e9a1752f507361770110ff3b06216f2c22bc6bf144d9aab15ccb98386277ad823ac4dc591920653f66a5c925954e06166c40bad2a23f53e1cc2ba7401ffc411dfb99f27017a303e6a0e6414987a64686686cb900311c3bf10987716315f8c487d2d8099cdea1db12bf553da3bbd5d139ec1921b1bcb83cda7f0d5de24bf0f145b75431fe0fb139f4cf717e244517a20426de9f97d21eacf877d6f7d9d4fa59f384f9860495b61c9bf5ce1d913cffce9cc3a5a15a5354eae70ecfa655550223deac6df5bca7aba96d3bd3b5c1f583845f91e8184bec7bca98fe210b9389f5063ecc02a387fa3903d2a47bf3856c9c201c70b2d365ce7fd93d81541ef5d0053cc6b9c1a95c8eb35dbb7003d90507dbfb6bda605b6ed39915401377339de598ea41e2138c9daae74eb328b4cdab71518ccb1914547c084f5393933279199bb62f093ad93c92395723385684765eac823f66ce3a9b23f73d283f3b0240eb68330f60fd25279c004abef683d59c9ec822428cddcc31c7bdad205f3224f6cff30be11ce94f33b59a2647c3c2b87395d6aa975d7ece56a7c189758925b10cb725ee2a580b293d36568c142156d052215806957e015b37ad48d90b3adf70957136d1e46955199a9683ad96b54ea13953251343acc147e8d9088a5d5111aa35e0fdefb33b899c46df5c409002e16da511d5a8b2044a9f35487552c402e6675fbace242be817d020200848d0bc0de4891e1cdf46e2f5fdf754124b0dda1e55405215fd2cc677417bc7044ce71bef18632fdbc616ec38f9dda40ef0a4e66b1f5413f6addab598bb3a6dcdc6db83da196c621b500f8673bd23eb5b787a61e2b92bc48611aab8a6e8d1691a8a9f61d655e26e069205e7f0dbb63fb3e7a465a681524f4d68b9f3f522675af1940c1687e2123a0b30e6a192bf6a3111c6e14f098f4205b704c9f003ad36e3278ce5dac26e356b53b5acdc29a1ef72c6b47de4e450ee091e10042b833aa50c4e1cd3f5cb2298e01c49dd1831bc3a51a58b34d53e8cae66342199f1a45b777797d804d28359bf20748a8096f0fe2f1209eec2b7fd0acc3d54593956397f1649ab6572a90e8eac54945724720a2eff155301734a162d960b6198ad941456633de18fcbd18369a7d540ee2d17674cf6b40c68a49ac80d4ea249ee406d04833edf0a1a0843788c79b98d946b15bfb8d01e23afdf5752092a480c02bdb094484b4c001ce8b80608337a64681fb82a000c4633124b221ad610ab231c050a0a2007e48da072f811afb88b907c2af11c2bcdd1031fd1da2fd217052b663eac6003a25464c8f7200a336e0caf8f6abf703862d8191d7416ff3c2753256f78fbf7846b403e1b5169d71b5456784d505cdec0f8fb370c7f8da8a236c64ce3324303128db5442fce47a268043fd54ebd2ea85b786d1d557488a061b9d2c25281fe4af4d79983b879ccf99282c66a1e5a48bcad7c98e21ecc4ad3370783d4a3a192869c5c6f7b8f49d6a46e5b7464cf00d3281bfc6cf934ff6128f273239e501de522aa56ddb1fa608e3223ec9fb9c5d0d0eedfc01f089f44023016f5afdf9bec2f7a69ff7850ef12b3d94a25700081fff310e03318d06587789e9be6d6207e8ab2d5343f75b8275d8972afeadd677c5a3883a20f427477695f04830880f5e5df856b0221b4a604bf92450e8d38938a94bf3b6c81fa7ea61f4e6bc88f56706b9dee32e836881e353af3603690d81ae3fde25e9df8f85d61ba57dcf573ca6734ec0c7effe9614361ed11037902ebdda93356b58581acdd418ea08d4f03065a401b2c367b714fe0a28cd718a92c55236943acc506c3440cc845f56008bcb152da789bc55cde5493b41254416cae7d536862630dad807728799f8e96aedaa36260316fbd148a15d552b26db161fe2aa65438c8350d2664d74845c9de6b5d38c2fc05700160afdf6d71c64849df1625f3c6fdf5d4db936c81937ff1f474fdb9ac0d7f3322c849bda6c521ff216c7f83fe3e9b7c933ae06e9a46aad1d8aaa2eb05b1a9609b49a3c6ccbbd694d6a73fa84d0225a8adb92e2366cc35e7587d536325224b5b9e5f323a5f84edfd2f30331173d083816c9f2200a1a3faaa40633fe48ac2a0f0e9455558c2016c50202faffc6e5ecabb09c99d13d502e0b7a2d32c39e0a3dd577d2c083e1a40c0935cf7bfcf6320c25f3468a794616dd5253d3c658dd02376623b2905909b68c68d4d808f5d3fc6ff6f579ffc414d446f49c006e0dbe51e33dd1cca84b1a4de99f16c961714b73ce1cd5a7d08b5816094b45c420cf59530fec3ecf08e58fb669acae09d75a3520f4776896234336a2fad4fbc65c41b9122ceb11e187c978bb27e47185d2d00999353bcc607f5b73688e1bf198a7f6cb5dd0d239a881d5e36074e28846d54d47b439e85aea66d1994820365a677aadecca8caca16f786c6981207a4655c6e615e64051b1781a9cdee7704588618ed1b55b8a45ebc2cbc7b2cdbbe8f5e70d0a1cd21a82b7ac9223397e966f31856a45154ba8e84eb7606e6d016081b1f7b7f07dc9b102c9d85e04a380226171757f092c301112fd64ea8e1fda37df222d7c90165544ac633a8effb864d818e8fd163f89598719dcdee7976b65d49ce5ae0ee0ea2fbad4f0edf3347022f58588e8eb936a981e82d839601d7892e6461286ee58913086d2b6a54f4043eeb52eb2921e5b454747d678e09a445bc232aae101e1fae4f18f17e2019487e0d35893fd18a138a91266eb3073eaea4ba816e4236761082fa5a5c5329d0e005297d81f65eb183443f0c11852ea3c03de866d0148f00f79fd9d90529dd758df7ed6cd0695d7a79d97050b186bbe340ba60366e873079b01050b970a1603cdb2f741792e575f88891f0d4cd451cb52c3b0decb844c7ce0e3abf181120938c621b1a529e73083846f72ca1d795a83fab5249dda8ee07533d03d729bbb8167432ddfd9b7762e5ed9277b8f0f6f783517a9d55af360dab2d54f952897e269f93f55428e7d4714cc48dbb8c635cc74da1666dadde01924179296499fb9d7a667becf3b68a8731e80f3f0118bfa30543108a58bd9db8574035c7dec155413601219c7eb2a1b66d3c7c3b11abf58d337ce6a8f3a37277e3969b881bec3ccfa729fa8211ac3a6c757d957d609a02d7491da95a2cd518c050a79166b4d76cfc66a2928d90656b8414e2865503987e668d6112cb07bd0266da8c672b1b32e211cf7e90e3736cf786063232c692ebbb48262c36b4597991e0f1e1aaba2e98d4949a72b7f54b47ca3d2da88681730f20001c7b784c995afbce91745eb1cc5b02ebea4785d44a7890754c4644fc92107cd1eca0661f7ae60cea42b913ba7e4bb4c7315662c99a7bf4a331dce0ee720229f48841694201492e8637e38ee7163a1bce13cd1d15b1365865c91cd912653bfbe06f0e9d812e303374553cbac43a35f95d9d46d461ca6e72b49295aac7646f6f81210b744990f332c80231fa7085b9577f25542f7a40ff5283b1aa27b8447f5b223d300de0e60102e605409d2d417187a32b01ef5be46947c9bb4fda31c3c2a9d0415ded9109ff3f4a5c9be9d39c542c86c5e498622ade474c7caa1894b29cefb82a2ed211c3beddaced79e6a76a0b7cd57a57218a3d9023d6f66369bafa75239471b48587aaf6c5708b51199ea82d8a06334e914bbfb23b95a051244eac15e9227fe2bb561e5b8cbf45937cce320e1e2f0db3f554cc7707257d33cc898fe9477f969847455c0c1564755dd880ee23d886a4606b64668a2c7c46b88836c532a66e1336cc06180bc5652a7bf5736bf4cb509b1bd2a432e7dc64f2670acf98665ad9e671844456ebb255b434853cc3f52de5aa7ad3807b22be7cea7b8882160e6834709a71dcd3574a23de56872b1edc5a1c09c6e2ab30459fb0bae93efee6275a3543936a1632e885c6f911d04ac4b1845d9128cf16648a8687cdb84a91869f720001ace985e595a266827123393f17eb49d66e02e72f51cb5e389f57593b70f84910edfcaa0918e597f794ba8e14c719e4b86414fe20983c08cf37a216b5b37f9dcd62c5d8e2f8893a8bf6e7230869b17432b21eface563f19c65a0735a0f6b6d91b9ceec4147b00120d8408899531d6683e7bef7ab7c640083ae1f1c88ccccbc2ffdb865c8bac91d5d028009246ca9c8d0348cf1475c8bc23c778e1e479dcb02e49e8b43d74dbe5c2aaa68286caa44a89e1a2e625fdb46043dceb66406bd3f9c2d49e0fcb90e5cd18de2189e96f6c4bca6018d392e4d3fa40ba6158a339e5a3a4e7066abb3a7a2f4250d18abc90b6736f62246c45825471110ac26f7cf619b2a646afaf51589d5e4215857723b6be93f85a85b72b3b096e10980020d38ecab5e4d3e18bba86c206bf268523a7fa4445dbf1a19d2924922c31a57fab0518a34675c9876ed4169e5bea88e9625f014eeea088f56271715a5f12ae0df9a1b2a7562ac54e6c501dc7bb6e69d00c69f93375c50d301016be406d012c5b5189a37879f10ec5363eacc3f811401a01e8777589ddcb298ca86649d7c3c5e84328e2c664caf8ed5ab93c31ce2be659dbcd1c0bfe96159298218f0f313bfedd9067915cf4e8bee2f6fbbcc022fdb91afdf7a374119a5baf7d68757350c73cc651819f01b4f1c24e4f29bcebe35e987cdf9e8c9a06e758eaa8d7de91a648a3431d189e7be173c21ee2df632710e3b44103277998dc57e268e72dd82d9e236dda478ea15b6c9ef5453b818d4732e7d2ec473bd2bdedd74d8685b11ca1cf2666f4b7528bdeacef2cc9db02e12e6c54c63ed6f0a578321577522a14b68e0eabee29977e6cbc04e55091623eca80537f5df7780f09ef6f6a087a62e7007784f34492f3bb22284bb43e505ced0f1b12f9bb1fd98a9110e4e69399ba22b3ece312ad18cb25fefffd0a7075c546df1a261e5f00dd25099d2498fede45a4036c0527ead50716be8b62faeb8a3c3401681df2d6e0a251f3c15489ea077df7116c458579c56e97e79a5c0fa15159946c207fc7a605de7394819ebe5829e32fca78e244ccbc5ab5b578410bdec4fc14636206dbb0ac661e50af292d8475a84456a06111a601ecf2fff406fc644fa035aaa3ab7d9e22a7d8eff761f9b904eb7a909a63a5a6677b3ccb642893366716863ea151f8b1686fe9ea27089f5e9879df50ec2d2ca7ebdf8e86f78202caf71483dbdcc73284080321bc30840c5e4aeef0c7b38d7152630699a97252f033c17d84dda01c5279d673eac66c341b45feee04bf31236806d018d6b2a17d303f75cf489d592fb27a5d8ae9ba6b1ba82e711713e2999fd4a6b7a5222e0e7e6b75014a596cf6ca0a4e9828a2a743c2c539e25bdac82be01e19efd83705cdbdc1af9fc5b15ab4e8720ba844bcd9068b24ae410286dc2773b41d0e072c33f9f7844fdb90eb85d28772a25cd64e50142ac9648da8712914452d0c19b8bc95e092446264c3dc45f7f0ecdee9ceafd3f6efe1b5c257d20d242bcc0bc27393a8f9b08252e68ff3f89b73b709023b394a759956471b8d1fd268d6d07a757aab18289278ea7d114e3115188b52a22f68ef45f39ac39e1b93ab358e6e6bbfb6e80c45bfe80caf8e4fcc3e8d4396a48f5560880f270ecd9a909e925953a7171d6cde69c74e392c244eef669d263136fe90e761d49040921399f3ea107932682dc7dcd512eb2e589f450135d2fcf6c40a2f460dca77d615c78e3350ff349dc7e8f56ecb7dcc55073fca88c746e0b7807d644d4da849416ed4c80c3ecbb5d7c3ac50004ef7c4c95abadb2a771b2235daa8398f7784daf3f353f2bd9d4c293542fa721cdbd4a37624e68487016be761784364a5401bd43893e3a9f0ddb04d082e6810c6536ab9d33e1c8fb7b07f2e0b7fbd87496f6ffc1df6fa8c402c9cea08b4aec5a231aa9c7d5a1072f8f01e2f5edbfd07d511dd41dfd3324a1c0241cceb03d0333908ddb6d1c681fe0cd371b5d65bfb570fd7ee9028745925602dc2e5a55226bca01f3424866f5668767d8d1d3aa0657dc5f2962ea3b1f5d0fe9c4e40d5efb983578c416e1a9f7f544509832656676830bfe0de967eb2557c453f8e7ab150377359061acfb777e07776e2b680de412bc8eb796b44cae421d4076e0c05d24f3e946f4cffbda92c126bb0b4729bba4364affe739d09738ab1ee5ad3a057bd6248577c79420dca84f4f1f53d9594397cc499089ecd15909870b006287a20ac4b371f49a433b262f00f7282c55945ce2cdd11c83a22819c516d1fb1e6e20f79706c50ce9023aa9998a0614b347cb8c344493b1904a028f0c22c82ff6e07b83a41b920c2ea296173ce672ab200039194cf2683c79b6096bc29a3676a8c5180666dd85c06f3f8d88fa9c5742ff4d02f3d2b31f140af12d3bbc009683762e9468c209640927e74a866e5bae93c3371ec7b3900c4b9fae4c5cce14da78285fb9e2c2c8576dce8e5f70926ca55964efccc8258b7af412473379462817803801852c1d92a3be3930e667db5cc72490a5c531d4fb39ecc990c40030e2bbf80cd3a40a8a18fcea205b9ad1ce73d93e185d25d3e26632504b2c5cb20205d015d9494795556c0b9ddd288816152ab4f72ba275a212f43bd786f0d2f08beca72fa272f53e778bc5ac06b12bd771c85d2b1245797e73ce4c78d3cd9fd0c4ca49364ee3e2372f3b474a88db4f21418464480ec7be2481ade02801528a15f56b4684b05758ae2f61d03697c0fe2da4f2d597d022b29e2885a519c886d0630593084282393ff5be51fe4bc1b1dc085f3937886fa185aa0ec38693a160fec5cb86213218ac17ebff3db877c82d9bdc3128c114bbe14726c23dce4a9424be842c9b20c0817c60676c13ac85aa38c5257bad92b3bdfb11333d916d188bbbe0c6e471b628b192324b6db52f3819f140922dbf84b80e9598de2db81959b10a03fa434c1d04cdebd6b5b029461197ff428575861903117e0382974d626c9073862a44706d9a23d0188c72b32815a7830053873a410d2077abecd59663722c5e948c996e051fb0cf43d4c9c3f2cf31ce0d495a6cb38626d4fff29ec81be3c39053dbd3a5189afe561aca4d0773ad38a25092431e131e52722dbeb76cd95f8ce1e5e26cf97132d5177bb5c2ee3186a544c5ea9c429ba56644e65480e6a7e84256a02fb8281438f859ecd954a0797394ef7fc5d28c3782661626ba6cb12a8e95c87aa6d19a0c146cc6fd0f31cb3c3063063bc0b01cd876a1f1eb5369bd34605e72cd58c74bcb88d5d508eee1d851828d48e7bccc81379e6023186afd9371a780295a30c968e151dce404a4b8000a9f7181616e598565efd6dd0498b8841f41afc54eed0ba6ec64a6c7106551101319ee97e58e00357b19fa762478b0d92032855472a7fd5fdc63428cec097c5aeedaff6d6c661e938fe0e9008c69416468522455f5f05e613d5ba6511fe3ff4b86d80965de038eab5c10ac973c1c3cf7c3b514f4100f8876f0cc0b786839dcd28e432cb721be903f8ae5ff91e43e7539e28a66bf0deb2352f9bac51386df120af24f45cc8a9c519366cd9bc0c54f4df4dd4342de373207873c9f5f356420a36bc484664138b7268a55477ea3385515c6f61829e2d6af9e670a6e6773fc712d9be838192a45a44846d2409d17447fe7de4cc25ac259f05e409b3a20dccf25cc6a93a5c2143901e652c3355d74fef860f9b8dfa7e3d0a4058f11fffb6ab1130dc72b2e9e0401aa1b2b2ba3b620ee64b8ca2b86e826df835429bec513cdedb073c6419c8e89eb7e6f90ed621875f8d9b01955e01850ffbf33104b92d2f0e34d40a3099fc2f9da7325609858ffaf7a0a0fdf44febb3160b7ce1c590b359e5f900639ce82dd66e708fc20039ad3d898b513b3c8c6176a32ebede6f9605b2a4d5809fdc872e73b134a8e14c750398ffe3b697ff8d58259acf2659ec3bfdff50119927795eac3ba16860f391b606011c18aea8101eb49896316f1c4f937131589415142ebae6cfa48e011090f1dd9c967f89243a602e4590ac6f2ba6d1d0ef77e9623ca6b49abb2648af6453cc825e7aae039a103be7e8613ef9214212e80abd9e5cc13387612c09a6b90f5c35843aba5d4a5d322a038ac6296806bbd0d1272e0324ca7643d4c4ee89efa114e306cd84c3943476626cc8f5aaa0ea642bbaf4edcda05ed5e0985a108c61c5d49a575b02a14c8a5a1288c8cde4a0d23225b907a5400f3e194ddd3a080ca3421e79dfe3ca9fd942a362dfaff4385105b89f1596b910d5d2c0d68bf01c92c837bbda8ab565879a3b252d4c0b0160e28fe9b0b2b86c609c9496821ba4c6f128e876228353841f8c940e0e209df97762be2d63c79bdc3489289f801f0215c98aa64baaabc958938ff293c40fbc7c883e5c42ab5841ba928a489a4b7b010f6b0cfc8ba0b18d933eec4329ec23b19bb295041413b37b78322d0a8d4aad0c6261049900b4555406dcbb48f0b5de6fe711eb2a51324c573a6c048578a760bbb68671aa35d76992659273353381df3d750ca8ea67e91a37bf94db568b586dad9b257e1abbb95935d29e272147aa50dc6f9f0313b090d4caac8ceb1cb48688c19764fb48e3efbcca219e0bc6d701c3bc8a0545026ab6a83c9650af79537a0a07817a82612100de05319cbee3f4ec0ef3263abb6c3397e0d9dec6c3337ee656cd085aa59a66898a73c87108400969591b1ea8651825af2cbaa33029ac3805776e5d87cafb30c5ee12c01336084972bad00dcedf2b8320d71177eaa0da11a60665eca8561343d9271ae5afbb35612b93ce43d176e59fb02f3be55dc520fdeb240508a96ec164638781be9a815fb90fd73d65cfb8aa3d9e194fa545c0192a88c3d1019bee031fc14f27e3f92228cba850d276ef0ea5614ab8313d3845903fecc4838e4d4b9d569f9eff12cfb6cca5a2a156840fc273fc17777dde62228a083f2ccd200b47d26c6532bd05c07a3a9953e1f54526d9fc6e533f5260ec89604ddce86e8f668245da55e2f4e6f2927dc5dc316a765a70d9ff06d2cbc8698440ac316df372379a284d00c357e00bd8b25c5a517906b069a7b6036ab24795747c556c33079da2aa8606ea842b79b87198e9e83e41762bfd94842400fa29f7fac11304bc8160462e69bd8272c9880e069662c86ae48af52466104051c6265e11fcd27fcea947634c7d8ddc3f0b1de029025f7fba2d255331f4102389def5298b4488a3a1067f431e8b9ddbc7c0dcf5faf736137fcc212a2030c8f61ce8122982e9acaaed46f30a92706072ea0db880d1b580110fdfc67576ad4291429ff290c6a56353e981714ae1bfb08b0724f6c075640c741bfdb5a2114cbe406d1d2c38f887d146d2c06a1ff71a522401e9437b295ec926bd6125d267a165e5ade1ee523e605399583afc5ed769788e3e0ae5508a850c3da4534013761829c6a8ee0cbf9b044848c425984023de4545916188cae8b53d177ee1e330158126fa7b22f503c2ea00f5e2d5dd5eea50766650babb7982e7c31a49d05ef2a2c2dd96aa904196fd01e7cdf5867c4e644d1a45d5ad54f455537a73032fce401243bbc0a823ec602cd7bb985b962f18a2f1b9a4e0f2e09b30b74ac8ecfdef89bcd7f828e15fa21a5850a4ea12c3e98795775fb25c16dcf040532b58c5a859f280e8a8c704d063108f7009c906a66c8d5d967aab38b6d153c96a17412887dd6dcad6597528dc3400f65ebc44df98f432c98f9ea124adbc10dbc4b3bdc3ab3e938ea04b14633c06495a7136a6c4b74ae2ea4a25bc040f3c0aa81f07204929fe2335723b8da1c48265118642b1a240f763318b6779c379672f1219a9f267be98565fea7fffc2fc9ab1ae22702c06d0ddbc21ca581c9af820e6acf1ee64aeb70ec1dc229ad3621fa2c5b81ed281319589c24617fa23e517d2e9d76531bcb71a9409c04958cfe529155f431e05b757387b84c5ba7286cc30c76e2356f387837a1c380182bfb163ac2d1175dafff6cae363061ae2445cea27aa4cd46223b78659b81a21ea56530d2a763beea784c833ee139b298e6bf2796070a28df075aa3147c700550ec889b42a7c74bea59e91e448b29063978ed27d61fce30ea258406bbf22dc4b91c017dffff4c01d24b53b43a6fa3822cb29e36400834151b09b8e378e1a5c8148d8f8d631903c7300440e508b5d13918a8baa7fe3e64f27602844e5f09bf9a8315a2a35bb6e110e746c69815e5601a9aaeb725b07a0ee9a1284f882295500629b3bb8cd31bbd482ac8debfa44767e9875880d2a1b306ead4803f692e6cc717ca87524b79abdbdca318ade03861588eaaf553ee4c10d9e3b83dfe563f8ebbd4ce6a33e61b580b1decb0ff1fafe3b7cf6a4989f89dbb49c33d52c1e4048d6df651619ba212eef456ae1fc8e57ee0161027db58eea6a16282c2f2fc829fb16aaa95d625a776ab340483cea5d4bcbf98383125909073c78afe45af796b711542314689a0e68c7096c78b07ff6ba368c0c0a0e75ea679e26823dc14b29449c214b2e9c3f6302556ee04cab3da6ba238ea1b340be7698c3de881ce9ac5c85f0df50899d68a8a1465934f3acb687eccc3cb9cff73c29794034d2d8d53b849b14c2a88dfcc695a609a5d19d66ea5d23aa65f5ba29e8a762f81f69dbeeac11b68474a085b31dc0c5f3395b4bc6c0dc2e31a6f9e92b2ec6bdfec55978c21b9101764dc9d100382628895fa0041861c5c66d4457608ae7929870cb8291a8bfb9460ad45d616045837c33d36fe16b4f5b4497ef00b22b34398fb8efb8746922d8809c204c7e769da3ad099e96237d97a53471b7e365ce319fa481c259a0092d2cb810105ead85c1e0da14f87c940126f4b251c62279d44d4109872aff3b34ab2eb7eaf4c4bbfa41b1813ea781b750efe9e23c119bca460cb99e20685291f07a6b06552e1d4687d001b3411310c35d8f89f35c936ed6320fb179957754dcb006bbf6153b36f138df5010e8df49fd0129b4f437d345f526402a0473361253aa08dfc27414401544a784776644a4120ba3f3ea65f6054cb8826494644d41ee8c56d9ae13ba5891cb44fb738cb90bad974c1febe3bc92aa2a9097796a042de509866db41d7111566001812004e8e4ebe052fbf3b7db3f2f00006867f487d814c6f33e49227bc486190a88108d8ae779f61da91c00949234a81d00e1e30886f38f11a75aa8885caab2f1db461c3d5f1f72f8a3a2928f59c292705da3a818a026c8b2aa6819223f05bf041f45801644d96011f9cfeda103fbecbe8d5ff9fb7cd20ad02d4aec2860398f7e442a0ec339bdd02ade882e82a10abcedee871e023ee58db1dc89854cdc45ff065160cb82bf864dabf6500a84255a7b66c76d871688b875e4afc6f41f054bdbe05509e3f7ec219f26621557de3113ea477c0e9b98050fa82f1425eb4e8f2b1882a6f7df9d0d21c2dc11da479c89804c161eecb60244b35018597d3c35268c0bfc323607a16922f9ad11950573ecac150982656fb29dced05020519254c1cb8c9722fd815724766114f90783a20b8bd741fe65ddcf5c58c2a8c0b4c65635e573177acb4201fa5cde1978a79acfd46724aff5e9181b30c64fe938f01082e638304b6875d2e0c3d6bcaf73afaf01b8f457e6a1f02a101c13cc5a0ce6bbe9d4e60b4bff859f79a4023ec27e8ee0df0eeec1094b8bdf90cccca7571a072c7611d0b44e9f95c419466933a847efbb1d4ac94fcba8cd0efc0e96ac8ee13147e8b4197e68981bb8cbe180bc736fed72b63e117c8b78919ee868f110ab094f38bc9862e28656b6185aec20d419b53c5b6776a1bfeb5c582b33960d69b345f6c1bd22654f140816030299638cbc29c31ab800d72b47bfdf4feb951ad5803455d96bd0fb2c5814abaae633393d4cc9417924793d3768b05bb35ec48a75a8e078b32e321dc9832a8534606efa89726447512609224693d63995511b3c1d8ea50b596c7e0e134bee60ad1f6904bbb8ff0117dc41fe00dbb9d12ed028016056796ef16bdaadf304daf9701bef7fb5632036616ea0da1bbe091f05ff03691e6a480a69c3f4f493fcef9ce10602cb532a9d3797b36c939b545398dac7103fda16b68470628a33dc34817549d0b69ceb9d3fd229491e14fb73ed6209b17847544b27ec5ebfc5dde52a7f6a613db606d72e716fe284639d514ec70bf0b75dfc5fad7905cc3f63568027c979ec44b229d869a2953a939e05b1530420544c97b50701583eca125acc716ee4300b6a848b8c81359add7410ba888a19d4a4ab1f721f48ea23a94daaad42b5cc9550b0d74ed3b34baa2085c61a41ac5e367860a9ec330eea135f59e9e365cdcba62ba609e7f92e0c730a9664c531f116f1a0e91e4e1b87d2f7ff7e3950f7b12009c9fc4cba3fb4684cac18ba2911a5df8567b2dc05dd8804b1b0e7f397b7cc567229a60a9ec12f36d81c4ecc5ca8371b032805e3ba40e611906e11fad01cd78b6a9da88f173a87d992851b37987bd30a406410d71e2fa690549d8132533248721166bca7bd5b6d7766ba5b763f86cb6f9c1fdfce3229aad0bc06ec818e99a15e267243d24266b56ae282cedc8fff39dbf7a6ad223deb826f522ab6a7217c27a03b86b8f334057a4f41cb80479cbe7840eda68eb8ab9212f047df220b1681b15f9617f85e57fe0c2128e61abf6ee2d56a8cab0b62561c703a5d842fded346096eda7079e957cec8137562080b4b5a6903b2b585da16019c54e2af7e9f1bfb85af4344904348c142abcfa9b58340a7035ddeb71370a80d21634c2f713582f413d09b3ac49094e6b348e8b348f2bfd80b27903a25924205096899905a9f5262fa5c59c73e2bf58da99faffe281eb760fe90afcee0b693ca24dffbe343b627ec9c7c644dda3e23e61f0d82d3b06f9f044ac61b95fe69faa0b7653744672320e0ea447129bf1b84ab35901ec3972701532a1d5371f3f2c7c337689c1a14a9c1feb4e517330895c5cfc407884722aef8ecd5a7af7821b1591d0be18a3d2546d4788faa51006872e1afc1e9d8f3488c215a85d6d6d925faccea710de0f9b6954a9ef7bc67758ba43b5833ec3d8bc908e20645c5ff50bcb636b18007e0fa9ae9e6005cd49e82215057eccc8c70c18d1283b90598f46b7d20ca627052973ca40bf1f04f3818bab07a8866a3ff298cbf078b00ba44f28df0116c805c6812f7c601214cdc84ee675008a68fafd004091644e1d966ec4c0f97dcc79f8341f3cd654bd0174fcc4e704106efa687f7fe75c57056c47abb443077c974943341a166c0abf5acadcceb99841272125f74ffcf5c8c48dea6f63e1b822e1eb25c21a2ec9bab275a2931001adc7f5ad718ba6af73aef456fadea5b70a49e34c7726c98b58e55bf0df89c1f1a2f40d17f07dcab638929b37fe07ea06a1454bfde4bc41e87893e4d5c533bb85989087ebe50169e8a2752864900be75d83ba5a206afea932debcad11db012c2d6b3385cf73132683e3f5a43107e93f4a473c619a9cff10f50c630578442c963d1c330332b13c4d7066a510512bfc69ee82365abbba05f2732618e0be43c8c10adc068157ceaae09e70dd8b32e37b2fd2023956a0bc35e9a931793da3cd5bd1295fa3bbcda8d0e6d0587d9c039c42b99453dfb1f2069dfb3b3e497a11b8a3f053ca5e240aec5c001122e9e14a41dd9c48812c6a438704c8b6f954731eab071b0de01622070f3a1317c98942667c515ca42f1501120490239dbd0e6671b572c1a81eeb0c3067e6929a126d410ad87b383cc9acc3b4054847a1f80d2b013f069b2fb17f749d8b9a102ad94471723a5dbcf09a5ec28898211e249a79c539a62e3809e99d060c32bc6c0c840e3f6582e0cfd8d07feb24980437bedf04b32a7e4f489eaafa08884ad2418735c6bf0cb5979e92d24e2ab10132695baf9d639d2e17999b42639625c5cc99bb64374474efb11648323d6e16da1603f0676485abb1aea599095d9792946e01912770762eb38462a68ce3058ce958dd01aecac4c2b76cab049d954bc33da5009ec46bfa2453a7098fc2804bee1cefb042d8b922ac0499af86995353db51a9e91ed7322dee30b428403461e587fef50dded87c53ceddd3f1659905dac8aaaf0f0c32f95194372f1878d53e94c23a6d02c5e41944952b4aae75ca3c87eda49272940050a42e00c3eb1b4a7346639818a964b0cef61a495cd476520e86d2ea5f6f94ec0fbcabf216f81a63cfca7a1f82c153a98adf593e75ec6d48c10f1331ec938563cff66f3261e92a4ac5656d38d605eb0a32596a306d21823bb787f27c4dc422b309d737027a94dc24c9c30c1a9d458b2e8b3f176770956f6e9d651c3347eb20b709f85e8358d89a02873220eba2e091713c5dac30231755bb5b255dc2f8f9c73a8fd77cd46ff68d4a443bf084c60aff16c9aa4a08a13491f6c4a72a014624c6601fa4c5d2d282f8ba60d90b60e1cec422f512a4fe048dd79d9cce874fdc518ca1a9c88780a3d2e713c4a57931412571a646d5a786b70940c873c18a97ccb2130a6907819aac480def29ead8d826e45c61f524cfaed158a070f8d414caa08f0ab3dca79429149f89fec5accabe4abcfd9672b89dbed2e477b75c669a516bfe3e205187179c79de2298941c996d220771195cbae69887c5328a38d4d23cbd951fe24e2f9b2326721945682160e8cf8742ec86fd649f9ccba091ccb49f7377a275d9738398c9ac451a44a029aef627816947a1ae95cad1a5ef933e1ca812b6d32cf094002423087bf9770a32e3348038090afb2cc5bdec37efc07304179e2d86701be490607645ea9318d61220519e3531c0d382c48803b95f8238b32a41b0f641e01ad8dffe3aa6cbe9f15222575e69ea31ed9206609517cbf6350ff51225b57a477650ef1228348cb645bf8674481fd0facaca54b9eb367b57a169ab76693fc9c29d220b5a6fb68b64cb464926281fa6b6861d0ec74522fba0cee3b28d815475b944b8fa12fe65aea764765258036728cef0b5b967b411a886592321c45362a65380f1903a539fd3809da343151ba71325b1115343267b9ba14973ac83b5243e3f741ad9326840d2e167930a39594e833524035ba7488e9bae240cbf229ea937112b5c5991b80509722a1b656dff78cf69555631c951c0cdc7f14bf5a5c3b924722831942c61568057d42017a3cd1dba31d9fad1264c8682449c867dab5ada20d508389b54ddf077f50362c10c039411da6113411cc449c11644c80cc14020e7c1524ec2831af89f0f75075016d13307d7edeced054851e779ac16812c4b84f2f43c674a2044b35c79e6ce9af5f2b897ceef3d40c61e39bfc06c2aec25338b42d7cb95c6a5afc1b21a339b35db4c2920fe478b7e952c378c9a5bb275da17713dbb65a78928cd49b9f01580ab35219237548931edf5dc7499842aa57a1c58f4c060e1b1c1b7e17e68ebd3fdf113ff2a72fa1fef40ebfe3f4842ce9a7be797bf1d449b0a128b1b3a03aa3ad44bdbe5fffb99892b462427141e1ae8a809c512e7b9352f0d549033342915193848fc7e0afe8d8ac9cc5bd18491af242b41097cc404ad7073b76b784f65fc295809ad1cddd049e1119e8698a94e19b1d25a6fe25cfc712b1d87221a5f254fd0e8369b535850d5c960b9fc6844f95ee7c448232af598ee4f1a51f1b03b8611a75213d9f7a03287bdf39c1fe0c4dd492a17c972f8daa3ed82113dae2e247e58c449e399191a4c8651025123c6ab113656b92b6ba41fa497a265b5ce2fc283f9e9912900aed32845f00c72656556a85110867932f5500944083e59c796995e02b745ed4a584c26404f45f3f85e8ed3dfbe5e405c143b59e02b0a94adfc896dec6b34147f5762b4e9c09ae01008b628478c1637b416fdc20b6acfbe3444e63a5fc32926fc1b51c66e60191e73e2e1482fd025aec7bb45a34828ecb63795ad4abb37e483dba002b189ab4a10c082e13534846edd1bf87bf37ad1322452db23a60a59b3f620d4c9643486a235be328166e1260c2e75d83d9aecd29f7028d057da6da312425e79e0e0ad290596863dd03c3eed7e89141ad08b48197591e42862f8e755827c3fa61085986a55ca38ab0f94eca11e942b93d5de874bb1be3093a0282422a1065db3ada8cd12bd94467f2564c7cdd29579b211c14384922bb88d726c9865a0a4cf7cf8c97569034d1d5bcd3d34bc6c3a8c67dce261b9923ba08b3c97b64262a0237d6335a14e8696a24f110c7dac9313cd786e2f28ac752952769f19502cd60f77131166af62cc3ce214e8323e7b00a9ac94996b517a0ff659c46e2ba0c389f13978b475ae021df7870e15408dbd5855dbb2704c0ba55753af687b3240ad9ca24d206c43aeda5e24001bb4437f6796e88ef1c6bf410fa105689a6cb608943c343ea7e8bf157df72a7dc7cc36468b9395314aa873968d172b41e0a4836e5d3b1c8b6a4916f37c546390a99084381bd56a95984af4cdea763d83f42af707f9f2aa22ea718e027ced9892102d1021954319fbf55d7ac925ca7326ea11a49c79f975e90b6c2250cad2df02408880dc5e29b44708066e3d42a3060cf0204b4ec1f94ff3cc856a700303b49a542c661dde4314b5586d63d439b672e8267537cb9c443b044ac127d361e05bdbf0d894c8c7cc374bad53c4d78ceb2e6cebd1c1e56e73e2086db2e7171510ae046d7217ecc4e9280360a0b9a4cbfdfec8b01543b010b6b0a0f8d3f50dbab7ce3aaef0219d33fd87dd00041e03a84480a4d4f828f49f464606030454ea8e0e2f5cc54e383a1e69905c415c52332bf470be5164c9cd78233c3d343e340030899329952759aa41822be337de6c1194c228e363dfa9ead28d3014ece51614a35aa10c204ed75408f6f314ae0aa5a43713df750710cd90e89ee57313578989335648f5be689daa111150003fac1617403ccb92c0744e74ffa3eb47f4c81aa6aa275120f0787c06f171c8b576789cae364d0f02b90ecb31c273d02e84b941650a63e4826d04c91b21628ad7ffaf34d0357c47870d46835ae52bfe6f823fb6fd06d98bcdcd6c6fa311f22cb4929afe52c92e8d24c5bc6ef1b467f835a403156aa692cb20184a61311c06580998948324f4cd1ee3601922472a44a84a8f6e0e2452588887fff59b5b274e134da4cbfcaa9b2059bc63f9deebd7f2aaf695e9a44ff069d41c2ee1eff08a0f689a7c3ad0bd20212b92293af04e774cf182e6fa3c9abba718ccb8929d30db3d26a944c0cb6d21e80addc1fa1d0a42c85c6b9bb71289ff31d4fad9b8f019a54c106afad01d8306abb4a5012cec930487c284087981249fc97bff8179bfb18e9b6b2ad7e61ca14b7e974f162d9d7c7fdf719b79aa6a6781b9b661dd993607298dc7f269d91bd457c88da7800b2455021c1db769a3e5a3156889b48099d918f1ff237c23a6f82453ab51997cdb0a39e6089f50663d7a73c6de4e848c17c72119d293be4f4d7b6dded8d637cbbfc423823a28961b412e76a2de4d490d6d502e41079ce6eae42d855411cea7974ba3a1632b4ddedaa9305334198595f1a39678d3ee3da52868118f95073598f4044859f26638b8562481e5fe7e1bdaaf0a4feb45af1db271730f3e701f6ab1ff7361f4695b133dccc63736b333b17b9d7435319a656942b3ed5516623c27ac64a2cb00e9746a24795a6cd00f4b4f3406c47d55761d860baea9c8af0bfa0fe9308aa74b647feb4c51a8d31a6d6214e8e45698c88479700088ac0fd3aeac00dc07e83eb09e0741c6cc9c8026d852e450864e863c4144bb3bbca3303532b27441f408d4a379116c487d5957183a1188eefe07ded535352c27786a686da3edc95f0ae3b483cfd674504176791b52ae99b8501fcda29f48c10ecca8cca0b93eb0216510eac5dd1fbb951c364ca95321d67f609b7e917f47c19dc6d132b731597bab326e1f71c73ad94c9aff39594f87c38777c6fc340fd8ef38cd376fae828f6e167f11c9a9421cb3381c25db3cabf1202806114ce33221b06d77a24a52c3b955c60685f850104cc07339af2f301dbbe5f3936204c204a03573fc39069d0becf4f2479ce85db2c31564ecd9469b33a4491f62a98a28fbf703fc270b559afbb995ecccfd530f61ab7270e74c0c87cbcdbc476d636ac2ecedd93bda30802da94f1106fa97e77095b321adaa7112e871668f8ea10bb80d654ffe48a5bd74b2dae501efc6e1b0d7ef3335e2f73a204a78013d7351cd5b3bbb570ceda3492f24f233c5e30099c3ad67ade2fd26bac2a702428b25821c5509c84f6b1d3a3c3df4856b5d3a997ec7c6501e1a1bbc9f6a707e42c0a0ca825f130e0eb956934d0619859d8ac04ac8741a64cbfe3a951faf0fd3a43a14924449bc4ebcd0a3542f6affb10dd9687fae00c91335309edd767f4bbd66abd91578919607b7d6a7304057b632253c5b5e59f2bf6d3ac699ecc6746bbcc606efe81dbe0d18f801390498260331ef814c87929f3793c575bdfdff64a3fb7e8d579f58720749bd7de016e3a8e86acd7ce8fed8133b9e2c9a599738d643c7d2c7b60356fcfb6a02f267a3e403393e6d39647578740fdb105270dc55bbf82d6bd38292d270dd1bfaceb3437f7d0381be9d0913d2bddf016e5cc926bc16a3deec94d15622e528469fdce3ec2b7f3aa411f08fe2f7162b1d708a8c27866231b023ae2ed82c51e9bb7b449a350425dc993ae13c8c505d3473d31bc209e67135845c8083d43ae144eb07431a31e66e630d6f70d5ef16146926c512244217022d87f837380bd02eaec73812fe269dfc700521b285debe30432c0cfd84a8a140fad0697b2af9195ad097b9443afdde40290036c7b6f1c50f1225e6a121bfdc24be5488bb755285731e68dd24a962d6bf685e0ad724f04320ad1c025ff05c892ee7009aca2f8d994cb14b5c55460594041f30c696350f37834146fc29a46aa7999806108950d8a680e7a48fb08f8eb42ebe85e1834f5126e40a80fd2973cc521098a36f80bdc80adb8d523816f49bb8d87cbda2b0839305eebc9ee14b908e3331215b04595ccdce838bc0b330ea6b733d2ddafc579c93c6f385c3306c20f459908988a5fa89d39aaa725fc94aed6999486e98571f91789eb76c11adc00417232f71a71811b9603f94a80132fe58fe7b0643c5259ab5dd27ae4e5194c8d7b7104b0cb92ed23d28265c84b55996036ecd34f7b40c818a2d4ec00855ee99f1ee0ff4ae480fe5a305cdba01d4805705b754b1aececf6bb2093835b6185afb16ddab0223a32a77bb845ca25229039f9261bdb4f219ea865c58c374b084d8f2680cd4d604d2206e93461114976b428e8cc87a0e6d76e278c4e8940975af6926e82b1f724d0860a3c232b9007ef4cedf2c05913fb5a84815b528b5db8fdbebcfd564594b054b6c31e18adcba91590c934a1a2dd2901a0287553df475502424207a85233d022516a0ef3bc0aa9fa8228ba56ffc784cac0d2ae06736be750d515849841f72a90260e6b6c1bf1ab31b37987d89bb9b4e6620a2e70a1b6410de0b330d3263e74da3fe8edc95d393574a2925385e54f7593859385865992c08327d2eab94a7e59f38206a79a4979f203a821a10a7c8f02a88d16dc5ab39213d1a27c56ff8c1f513851ed01ea09ea377cb649b56b1f063073ed46e259fbb656fbe83d4dab01100db9eb65789c35d1e8c1dc8c8bf8bd2ca6d0f0d080d2f61a552a0df7d12fce85a3e41513d82de18051c0eb843bf13940e13d3a4503942a0481d49d6db2f0cdef0a70c51b812266bd07209b7acf5b6c87a59513a194c4828b52425def1417410a8b263a3612cfa07e71ccb0ce2d5f440cabd3ce4c42dc1e75d48a5de645208e12af91cba48ee6077494bf4d2fa54b8d9269c972082515589b0d179d092b7afe467ef8da09a0b67e751a0c54484fb88ce631feade8594a662baa3272da94502de287036ddb445154b56e41455b75805f0f0a278d85fecf935626ec6f55ce3f495c685ce521b849c178b64bcf70c5edc9dbd3654b489fdd0801cc1efcd9fbbb95b06a5379b96d3ec144bc5a622c75890d588b1a85ca3b15c9625ca47a7f2007673f9ad39a3fb32a546c04009e61fa293e1674a0dee93e6f14114d6cedeed945174d60c34193131789a286f692fb02c07f15bc616200f20b01a3fa1edf76ee3171b7329778ee360f72bca0a1c585250acf83dfae659b473ddd66d825318b3c115fbef646bdfc0702b249b3a6d14f66302aa98f3416f880225818d37492c4af3fb451377b49d92383eb616e09d656078043ffa905abfd03a2636704428a88cb1903b499a1ec05541e79b38722802bb88a4d3891bd363b72e33fe1d52205e75fff2efcf08694c926f82ab83fce6cf3484fdbbafa362356c2c19385f525d34234077f8f2c18ee39609b1937065d47386455a04205365279ea36688b45769a945fae743842ec2ac24aac7842e1dbb138c060a085d24501c2e0ddf7dd3e0a9a84378e37b9a27bfda84de3199b1468aca5740c3b19e83f722bfcfff01e659a6248ebb2f5fc58427e54768075b28c7be617ac67db89d9ad4aa856db34e303c4d22fd9786f4843c562de0bdc2956f57ac236f84869d138db31025ce7a16317784b179b905bc17615cac3635cf8e2592440bd541e09fa263658c0aceab4d88d8d706c20c638e4af09a416c68ef61f096fc853daf10addfa55817065b0fadcc3205796d9d87e011749c6bcf0678e8d8ac1d2040573fd3994459394bd56e381876015823b97a74a641d4d1da159e0d743e40086fc9d551a2a2180bd0ef1db0c0c13cd37ae14d08c9e7da9a6800416a2fbf067c2670c0e1a0c18a8ce23a2b467aa125dccc61ff425a2a99008fac4a67352076b26fbfaccf94742bf2f94dd2a650207a5821a6a2f9731878a515334aaa8eb49f34170208af715627cb6bf12f70f4c636d27a33facf74edee014cb1be1540152ff749fd728e10a8429469838264d1477aab102282bc8fa259afb2feb22400800515d4f5a43dd8825716c8e960fe9d97b89b458b8dbcfeb91584aaf3987a40ce14332fbf85f8c997e8e52b8313a2bfa6936b8a00578e1b31d5948c23945e7460f13b353013af06e6e6a6ccd4fe6c52e0362aad8cbf45dd314547fd36dc231540c5787e04ee699195beb70ab9ea68466c95bc915c7029f91bb94fc041241fea78c971624bfda683a453ac118ae96db7e5466c728a914fb784f7a9733f104780749900ca7948210cbea0b95727bd9eb3636257821468ccbc6975aca8b8765ee9ef9981c02b1e39317a92059134005130cc63373e2664c676a8af777d482c09bdefc41dd8f64e76dca6483818db5bd7280c3d20f84ba5b2aff2744da5d35ee58ee0b9f3e9ad56e9045cbe53ae025eec2c656d954768ae4c46021e755b67cd8d57530500be88c52e807f1c8ecb19b67bbe99021a62d011748399660d47c9d8bf8b8ec9443818b44b16e5e855a740e9895bbd73d24721043b4e1cb6d36450260e2e1a8a130e93f6eefc86ada66ac119328981259ae8019bc93537c8c946aa3285c24ab13a66041f4f773a9cb26d5b1508723d329c8061aa05559b0192716de837e708ceb30ac7126ee49c02b38eab365142a441c3092bcb0226e882cc9b16e941627220a7341c71f713e4444ca4a817d27088c2de4ef0207ad2703ff3fb837b332515970b3c84fb99c970f8d727770e1dd9a88f96862dd5e891d3e1325bb2d38f2aaddb7985e038e2e16a7b0b14b2577a77647e30a192ecb146c4e5b1c827a764f22e2ed16a05e05435d1cdd6a2913343e8eda300a77f0ac637914041ae7338ee53ea696eb3b9b26cd7cb882d92feebf421cab281323f0ee866ad1ddce3c7ff1a00f3440513b1830adb21034d63889c19678bb285568b45e0c611e0f1b0d4d8b371ac468c3aff8d88f64eded6965011fddd6a5a01e014b8f1813ea3b3221144a73288b6acdeada33467ff6284edb8c8d8fb93eee7f32e7a5a6aefe816c7fb93962d3b334f731953cde5a7cc262728f1d17c0fe368252494342d02b35d06abeb9f2e41f8120c1328f942be3ec0c93721d2af786ea042d1bc906c84d0b41fb0426755d2f6444c600d4583f2d33c384dcb3c91d9dce8ed139dfb95ac62ac54f0867147f3bbb7a1ca5444ef9d6f93f378e9a23f8e7ce6c8926355d2d7058dc37b02cdcb582f7eb091c45524022b22683593570957611ba099946adf4c20ebf6a595add52543e6ed0aa1d5846b1d6e56f434ce857e1b45d9c6a18214351298de75c5ba9775c3006cdd306b80b78a824eed0a058acfa88b0637945fedc8d1cb03537c05af1a35797fb0dc469457b66d2212520d0b90c16f2a2236afa70db0c47955b9c398142ba50c23e61c7c4d89183d3748978707c26c2276b76c02e10b0f23f075b49bf6b4ed10b7a43d2b7ee1b731032a6c8cab6fdb24a21ad66835af7e56897b7500b627641cf29dd13f42fbf106cf9a07943a82bbb0c06492e19d0c91d5c47602f18823375f0006fe4a542824c0226c6b746d27197260a5895628d5da56414c8a62b9eac162091395dd10cb96841a8926b0dc81ca9dc254e499143993042f30f5d0ad5692ee12a338c03a4d427b8c461cf9424f4e4f256748578c376836ecf396538c9e904bd5aa8ab1c6b0792303b061a9169e209dc53050476fe41b4820d190472b4f001a41586ea8ee0447e54851fe583b32e57fa824d94d83f5e3d705e9b7b6f6b7d4f6c69535341f4c7aae33c7ca5d08fabf2b90ac21df9d6a0c95e6bac2c91b83cd354b8245a30623223af0c8a4f935565be0563c0d45b584ead9eb9f04179d6d506e06f405c2d47be0cf2c88f7def883154bacd013f976f9396625399222e370db7f8fd9fb46cbc3ad3dc059842ce3e08c6141b003aea257ebeae8edfcc54730d9abb08c01bdc8b6e036c9860f08c92bf34875acb406d7e4578fcc254a81c7d2e4afa17600374409d44a15f6ca821318d6fcb73777a433c03014d44fe7699effef52bb85ebf689260d567c972a140f19cbc2097658b2a4a61bd5294b7133be8da9c6764390896c830739362a29d2d4a13de1956ae87c4d2a943995bb51561202639c1775becffd0a42df6ee4094c7af041e45047dab78a3906ca60338469bf6bb3383dbd76a0b47d4ea52d3b9e81b1ede4334305208ad895efa5a81e3f9800ac3597051a6577d86d7a13fd01a44d11d6328c367c1eb8a11c6569e32fb588271ee2f23aa57d0bcf5b2424f215ef205c879d28fe08ec7e90dd3e011df0c0b23a56a8b10e7c4604b23c440a43aadc02ee2694868483b5c17e55c9b170051e13cceaca6f982d142a339b8d01bc923bfe93b24279743ea2517fd99e2ca7f7dc543ee69f149c67b01f168093a6db268be4b321e0912260ea68a7452824197e1a995b9da4ca6ca937073262c59f23dc64a1f4379a1e0b69c9ae27787d54b1fe16560415775b0700a8e243b597a6edb7c49863ea7f0cc09c8c7ede8574be8298e668bacec9c1053d149eaeacd632ea961751cb84a8f4a7be1a8f3cc50ec3ba53bc1b31461550a2ff9e0d603690819e2b96a42fecc8e833d0b50648dec9cc2b77036e0217521d50c00652395e6b281392b9975d004b2e38f7e1d9c40813a9806a37c70db274d49f10da56d514e066325ca3bd244c31c58004826e7d9a8fb4343a498c21e173a843eb853f0a42b3870d1e64c50901ce20bd4b8a84b080f2953570f9cc6043c6f1a9932cf1b0608e90368edfee4670f0ac2f6d3ce772a938150be65143a3750e6d90aaa22bd978d98200118fb8cf68f84e7f1776f28e4065c5827bcff3a1e69e647a22edd099c50ae7399172c5df85a0a1e6119211d53b019461274916a344c0fc29e0dc84d11c5c43e2a8c3d0b5a0e7c0aeed6fba0ade71a179a8482c03aba9812a584967012c3ae2687b8b632183c57b6b69711fe015f8df185696b0c2d04ca9ee962ae4078c2764233799ec5f5302199cc8f9c8908bdd471d7e1acd435ffdbd8050a18d7d7b01286ae6b04279c408a53f6623e478e51f630b78c385c450b06e1514b7b3d2de6eb09a8eece892209c63d4579010092515252f2d1658e3e584b8897c3f0bec36cb31763c49aa4c0157d54176d47ad226855dec81132c196b738c3e19240ccdc23206f98c0fda4b9422b3003cf2901b53acc14ca205112c83813bedbbf66fe2aa15611c181be946b2c3b5e0edab74feb4be64a8898b194d3d8f4b4e451bd5951f6189bf7594efa91d375a87d7d8af17ca5ed5f50dec69a2dda112e36d3be9885257bad813ff680cbf1c2f4210a5fea78ab89896ba6147835aee02e55281b36da79a6c430cdcc9027341e3210915dfb4442b6187c23b28d210a6d5108eb55c5d3bb50e376a8aa916d9eec6beb680af304ec2ba9360e45e3c5eb22ae1911dcc5217bb6219ee0e3a04941e3ac836202140590245f63e2cabe992a090f9561866af510237024e8eff03efe92d701a7ba4f4b1e7c3c7ef798a695322d825bd54fcf62075bb9644a50dced9d39bdb6e25d128736c02329dbe43e4eb4623f44da4c8c77e07b9f485f9200d1d7d4e32622dcb936ba0b9c1440d5d0a71d56e0b4311fab22dea0f51504ef13d8a5d4b4f5829968f3b054371b2abaf1df8dc934f23db36f9614b326a4133aae0e6ee960ef21eacce84b5a44d0722daf477702e3e576621832324dcb98ae2c04db0a95e9666316b54262b90c83df7196f26fdeace2129b785aaebcfb171b17e850a4d41ab43fef19b5d0604a6235cfce9c94367a356f296d60294e1cfa0f40c6961e3dd0abf1eacbedbce30a87d316476d7ee314660310f0ed081c539b1f9c9c431596086f9a2765a2a783e7d750586642f4fed1a5c1944d1f86bd40c67bed54552f39dd38132bf442613872f6816f447179a06b93dac39d935b145e6699f3e46ee54ca8ca6a9c2c8d896971f43973a74d9dbcd169dbabd89c2e9ec30062f1bd1103271f903e9bdc1f364bf0f5f67fbf6f275fa9df02db594832582e10dfe7cfd3233b5afab00efdf6233331dab45a75e9c8b3d50838bd1cb59d31451ee6c4f20c314206c5e33ae85b5401a5c76ae6d0ce85ddc46a51667ffcac5b4c2384e2d081906dd556b8b4f8ac790036065f63ab7fc19c53527bb43380c20c117863c040b264b0566e1663d9befd245f4bd7ce4fc591e6f39f9114e1adc64a060f502db080211094b7194f0747d312fe903d5574c08c6fe05b2f8973844c03e98bdb33bf940e16b371fe42e361de4e96ac519dae876592fbf28cb03864fb992f769a11a13f39bf548802e96d6ab7405b0c82a26fd493059e0b6a996dd4b166c8a69156a002ea6503cac9add1a8f3d010593004a820219006fd6a396a30cee60b319d5b72467339b05acdb59f6a20d811ad558dbb695a98e4f6e2f5fd20d7cf5d67f608fec0c737633c4e1e2a1dce8c43aa4d6a6067f35ec04f9fdcc61347f1a8a389b828b90ae6aa13de58883c1d10af7e7e88178ddc353db803cb5cea0c0147a05748618fbf47615909c302b23474d41353213f607ad2beb868ea0bd5c1c537d2cb4d4baa2b129e52b89dd7dcd6677c464b09527d441fd9e2c762c0228f2a331c652a7b5e4190f151dcc5be422097cbd8a7a6392afb76df3c51833d3f2548f038c79749868891c15b78a94e93ef70714d061632467b4237395039267ba0ef73f4e2aaf93a80e154e8a4116c2381e58e03ed0f55857446fa72cfebc28f8ecf0c8e4d079aba15a7b86e3706b5feca6d31fb5ba145858ddc1c2d2e12c888aa2e5476e048c4b8a44ab754ba1f2c222d16692fa2533d0fe9aa02be7aa75380458fc0c3a9255e83b0e2ff4ea481b9b0a92e395bff9ba6a5d05fee4e694960df2b828c0485294926fcfc81ee284a8aae8e4e26a1e86a6a3368418c624cdd73aac1c4e69742c21ba78024fe1239a2c72ecf301f9b03c5fc33bc61074dd2ef268a43546a1938d1b4ff382e725903c761e795e66a7b11b8ee765534c02dde1fcfa1d819b090804a1d7257e27afbcc8f9b18a32a213e8dc1425160b6218ed2ab508cef23599c0a43aa064565171aef9e63d077a8b2b9114e446a0515470e4cd4e358654e435f614d8a37b18ad9dbabd336c9156b90672b4de20bb01f15dd8da3f9fae1da77bbeda105b3e13f90322a28384a4469ca349f191e23100cde709c9c895b644219d9c9b2a05c381346fa8ba105eb767ac6517fa8c2cd5e41b7941343ba8686742ab8516f10e2a568c9069cb33400c91461c1c128c5787730dac461dacfe412eb7bd9e29482c072692e6f158c85d446a228043ae350b42d417d30cb7f74457640126315c5bbb801e48be9212a2ec09ba1aba461e18adc7473df969e53cc4c0ac711efdc5ef5a4d173e8a21b79bc68c7ccbb11f864fd80dcc130ccada939226cccf181f00e923be03f8756905ec33f0bca8f0b28e9d40eb3bd889fe739979757899a174f434eac37e265ff68e1df1dddf009827602416d62461f32b41c144841218878f998435a6ac8c3f997b6a4ee89baa685397e4743859babf096e3d08505e9252700d1d3bbd8a8eb98197ddce69694c9402fcd3025f3362227c615538301609732f26a0a06c0734e8742c151ee841f877d21bd709e32025034a274637a07013abcf1ad7bda78ab969c8726450b22e39cfa05ba2f272c55172049117c405cc38f320be398a6da489bd2e6b44a9527c6ed0794c246706f306f1d68f6afcd160dec680deb438e29e1793e7063b40be2679164ee81032fbaf7509f22b9162079c569ecac9d28a915e65caaa0e3411d2465844316babaefe49016456aa5bbd2299a5f0a6086185fab62e7e3512ee329945181cf526b3655249e26a3f3253ce0623e31a2fa687909de572736173e31b48a2b2d667d39e631271c1b42d8167b2ac54f665de5d8de4a643021c40026cc2ec77cb3846e87d8dee313e549871ad37114a650d925cc4fee9e5a9efe1993942af6f991c7b060f19e186cc07159e1b92480019f7a5e7cd17b72528a472b87541579c32e6824f687e07b58f49b986a179afbdca81569da739fbb46f14a07146c33bdc0109f628234c072d45b3abe5fc271a5708f02eb77302d8df7452f7e89ca747283d6a1f332d67c198a95db7724034cbc44e2cfffd781862be4e528ee8a5cc94018c0c4113ecbc639897324103883376556a87f0c38fdbb9cbc1a11e980b4b75f879baffeffda9b5c71aa8c091798574607000db0eba8ddd8032ad09042b401fcf4101a66b8f2b28cdb20cc6680a2985bba35ce54986808c85c86dec722bb8c641ed44aea2c4cae028f38f6c63273d82665485098b7c74e316c6e8ee454b75dc9499f39df02f670e7254ad61283894eef9e013cb6ad5c86fc7d785f7b7320427c09676a00b43a5f3da034c766ace2e50134c7bbbe1b51383d6298d88097666ec57732a18057b89706fd98a83b26789fe1b3ff667cbe428ea63458a871576d9e9c600dbbd448f0cd480620e2a0eb6d6dadfaf61d8488b1200e20c657f0455ba07f562a7261181456cac940f775c236558ecaa80f793e0f8ee3193c07113829e2c8399d8e9d0333c8a2dc08a666227562c9e334457584009744300cb5ed38079a33383e29a1db4888b4b47e308bc90ead54853f27546ecb6c141a85b3e0f568760fd8fd02f150c1c766a5b36cf84bb8e194efd188344105dc086a0687e9bc5c8cdcb5b2e28aec9f15d103d6eef0d3b07d182c20ca7e6f8535ea2b2ec10829e8e10899fa578b3e33fe0a34b8a13a581bc9f1fecc2af90f6dcaeb2e54147ad62a91b73aef44133385910d6d1d2b4d9c9cb96546beef0cd03ff806379da99d694fa829ceaad540d48e98614e89dd62b5cd3db5ddd2213973a7756267762d279ed3111fffaef9e04065a7810793ec874ffdb60f37cdc0c3d45ee9efbc5787c0ca3088f2d72812e98e993fc607c624f9181ea88056fc1a8089a5242c046cba18cb982eeef26e0ae1ab00f6c3d187edfed7f6c5ddb79dff22d94b98fc06f181d12f65ae194589a53ccc3322f607ee73ca11b960b1f4769318405aa87096102cbeab12974c57d7e4e40ff50c00071392201b1daa04b93aab729a7b18831532d9abec1c393fa024641960960768c4aa9ed259cd1b4c0c5030c078a6d8ee98a96cb0b0b0547819ac7552f25354e5aa574079bbe7d4d4be1da4c3cafa362996d8a43f259935949330e00afe33ea417bb48df5d8163896dbf76ce2f0986cf38f975b3b4f99b3bff12f9ef1e3257ad24d1ee8340465c38bea5f5654ac32362f36bcf8dcdfd484547f01e7692996fcba21f7c147e03cf9e8ed3832f106c32f47c84e458f97b8b4cabf7d7cbc67f0672ef76a0d023cd1a2e0c25695d312fffc01b6551a7af8f4588a0a4ae20ecf8f78b1e781fef7ace8cd749d3083514ccdee96dc670e071ccbf3de8dfc3810768d20ae4068c655eca6240dabdfea93458a13db797b42e040b110bb9ed993706debcbce8d5fb6e9fbe0b93f25acffa9ca8a154a49b6c821c549fbdcbe1c0a2afc8072477ee690f18f2a3b79d142d9cabc951e0956591cd712d910f7c52103a47447c8f9515dbd586d8f7a4ec06144f305f8964220abc047763e2eec5ac207a10ca42fb1533b4c8a591e8a5d42b13159acb330f12d15fe7ee1181f74c81e79353c637329313f7625a1a74007b395121aa5831a8113c0300866a6938b6673fb99ecfe544464d522b400a001d55228f878b101952df711c55c093304d9cb78741ab44274e9d8a258f4211a1e95537d416897aa7befaeb374af1b3761d3189f7ff1b7a023cae8f78c3f228fba26a66b0ece026e68df284a6f59f6b01b3ce114c401799aba9081740bd91ee3299ccffe5af9da8c3575e76593d5cd45098404c80c7d0b3dd8a35290e6dabd22093d030c664e75da4b58c6c3389ce9c8406fea9966d5c9af357b4ea2b2ec3a16905b1b5fb8d3729731adf48d47a6b60975bf97c7e279c008fbd0c42dedf2b8988b97225ccdc6e50e904781c3af10c259f037812addd6a4c01a141fbac4bc7923f302cc13ce5fab1bbe6468609010af5f6abdb97b2322061da04414e5231f2812ec8abbd2c48a0847c8f038e28742330829031899ecb0b7fbe6fdc6366779a444ce3ed5d9cb5edc9392eca2b85e909d9e784380e85f2e72e23736e40077be8602ac2d89c2811ce6d06ff5f8ab16002f600bc79ee34160b518e5dfa5797d17b9a9e1ea1a8ddddc1d88afa5b0fddffee45bedee09c4bc7ad78a1be4935b6b6262ddaf228d00eef8a29a0433ceea58890c1f360ead66eeddb04d03044193f3e268dc159513d28d2ee685b257e1b9d0990d5d799c97c27737c0588f7776ca005d6362b7da6f3fe0e93f5e2a0a09a655c84577beefd5d426930bff99b4d59918933448a64bf1f4d6bff1e5bc8fa76130fdf6dc8c3910345578c93df4a0424f3d8a2213c712082bd7638d2ccfe0eaca583a53869af2eea15d4e1e0037fc296aad1c9ae31ba4196bdab5b4302bee1a3888368d87040c17d18000fab395422af1b5568864307998f9f5ef88b771fbec8a6607e679ce76ff0528c536a421adca177b16f565d3a1517c4c1b7cb104c518f8859a9fc7d57f04393c26896a04363c7a0dc10469da62ebd0578ec2c8563fd1e0023348c36c71535a667e5ea34806dfb947b62ba005f23baeb9216f4eb0c191f203bae6d4b77fbc5b0c6c86ff819781c933cc2e99ab316692b120ea577c6931a2bf4d0f3bc2bc4384f5ea6ec0ab41526e2a007e660bb6d75e8ed11b89ad9df5d383a7a4a56357c7d7462e71e8029466e0d68527b4e6ff0c47d13405598528a6e84f8ad2389c1980731361a5b07d2df99dc0fcd03f7c2386516eb81d4e7dd4ee125124c3afcddb00cfc53e3acf5d888217fa847de88448e38fbe7b3b35475d633e1b2505de809f855224537c5bfd0f3d8c358200fba5243b3995c80bb87bfc30db26aadc3f912e0f022d22b47147b9cf1f66cd039aa5ca2209f4307aff2139ed5a96171fb623dff7a4139fb8ae1d8d188a1113c02a8390c563d982f8e0da54895b8dcf0d6398baf0a9047321f9f7cde1b77018ce3b42bafee6183bba87cfb67285468f47e0dece2de7779ef28f6f3024cb3f7ee8524677f12a5a3509311655f2832f56ce3d842ed384897d9b42f5642450ab6e99510ddc0435ca9c202b55b6840cfe1a16293caf048ee937cb25be73586620d5bfe25affed8df2b05abcbd4eae5d37a7646ad4db9dc9611b641999cc27d3acc70e22b06ee8718dd96ff29eeaaac0d1cfe7dd6900df2232d8b0eb0ed5b2559a91978ee515c26852731cd892c2c88edbe6f4b21a9be4eae2bf90e31658263492302c5edb6313b84840d09c483b1d589b7f4e9da300f6660ed34099827e65803af8a8a89324d92fa1f5e86600cf06836f9cfe08bf810e09d1a2215193b4abe0bdd7cf15b4bd0395e84d3b8875aac9391c2206c997aaf8532a64e0160c13dc5c2c82184096129ddd61e2bb1f7dd663d66cc6c613ae5316120a2a8742a05060552d136078518bc3655e22423cb441bf111a970d4aeccc170a814fa0218c110d65e9e7480b01a17db67c1d838c9c66598ae9b34b0d7e3f5c0b1c5a559de1a4bf2510f6755c90c587f30778b3a5fba3f148aa7900cb0dd24c2ca118b47cee7d3bbbfdd0b6034225ba10b8d01ffc1fb357559f4ae582e0b05d196507d988f0cd56bdb5bf7242052fda4b5f907bad691008ebed0a71afb6478055efc0d832aed3e6ced46c14dc245804a000075b9997b3b6d461422cdcea9b4cb8c08703126eeec368717af952a1d409f6895a573034bd53b371f940a87c01008355de82a4c4a5b8aea405b48bb27fc43dad1df8df521f7645f914b73071abe4947f7d0e2948ea0131ad2ee9544f968974e42e21459cb7b6c9c4312030384258d4e134520c9aa09f724005d2d490033d57b7f240005d005411aed0e8ae08e01644ab7aa3ccd3f5f2dbafa872018c392421f7fe06e642b694852eb1b9f45d74d913c9ee3f68af59273edfd0c719f09eac6c9e5c63cf3d773c61127b47b72cc0474a866b81d53211a9a4fc2b799796f3c7d19aeb4044b19a2c26b31807c1368075a935fc1e9586f55ba567042fcd8657d8a52b7992077844f6af8c5568cb8f8f5d935be0f15c78f87cacf8bebfb6cea7bd82f3ea337659313ee43194386192ce05cd1d9d9c97d9c3ebdca884de9ec9456f885e6ec04bfdc2c50cc5164e93b1f4815338ee4645ad1631c6cfec759c2922196f5c2d26c258bbc07b2fa2f75286f9400a25a3bbb20949edaf7c0958ab320c2a0d2926001672cab04791e5152567e416e46442cfe5bd268152844be7580f0383d51e9ecf18fa147ad9441a6dba25abc1a2ce39bedc95c3d39dde804befcdf8a3c264ee94ba036ae62c45de079cb1e6dc2519a0ea16405dc08139e0d77339bcdb934b94c4a8b0aa4af0c2b3ffed9fb5e57f2e07c47090f87953e1c4c25c105941ebe8c03b70d6260d367816f047ecc3b39a1f9e52655c63771b5fa0966477e974177a79c2a2f4d321a72c9a2a6024d7cfdc3f84199cca0dd4ee170712aa23e3b3f7450817c3d6cc4e8e9cea915d77af6d06660cc4d87f9df70ede7ad368992f51283d123ba0605cddcaa1e774d9a2c455616a8be034355e526d1f1d7e6ffdfe7759ea5e3285c0eb65b79bdacd779dd60def6eea9529c14f96c8b103d968e4b42b87a8010321490826a74ec6bbae932089298885648e4ab5ab07f411e87c19a4308487a9ac51a662574f2e05fe1ea9f127e9ee1eb17487d52511dbb4a8163c94aab9503d88109f35e88a04f6c24b39955d675e4d1f2528030e78b45fc651dbd49481ce4d188ec5f8d57858a049c3af8c22879cee542f53599d5d5ed18b1de7c1ef49aa8c9fe42bfd5d039d720122c9b2d5c4c9ab82b2e7ab02340bbe7156835e18f84a01c81c89ba18229e23446621f8c913b332b0d24aade3398e172ae3b4a92a41013b3cf004737dd8450924bfa786577012329a0cd906b6cd0cbca4021720ccf49ab527f3c859d051bd7f618e6de9819e4ec1e090e191afb3d1f11bdf6a691c1c3e8a615b48374aaa10b61c40d70b13dbdbad5255681c2c7141a2a122ddc4574e3134580f8f3be35c9538d01d51a98597200e6283ee2a99f2ad2d66d856d9d7019fd97abb60d6b3b9e95567312b77474a745c1bbd8ef9d2304fa0161c91b8887781deefc69287e969e18132e4e650ba45234d13c9dcfc7354fc8000e340ecf2d5681384d94c27bae4d32a7e43315f121fe46c74c18f3680169a3e0dce83074006c56474c05efb5c2e845b31778e201dbd75b9297c06608c0c8a0a6dfa3fda6d80a61fc6ecd38472ee538dd28969822a89ccc5353db4553fe6f9030da25604ded59661a00ca0d28b1aec431de65acb2a6e911b39d6e968113069caaefc198c338c4884d83996c7572ed89c6227c21afd1489fa96768d1990434da880955d7452702e2307fc532b98f0e7f3cb316c080a02bfab97221fa574078e89380885a9598c84c4012b28b0c1342896aec269acf21dc0fe86fd5d1b1416df9e89d74af53b6b523e259277af30c80ef290cb149156a825309f1e223b1e36016e18a3cc494013255a997a806845e8590135e9aa72ac4c506a7a6df992155442331d50f08a3511361d27d74e174b8b29ac012f5213984f7fa6d5387fb184ea9273c75259de4dc2cad9e92deb3a94927027c3a022a80fd4e5c30145a4d071205da69c8ada942c64e460454297bbce67b7cd20dbe3681583a8dd16a1c8ea7624afbeda4675edbd5773ae1b0e6cf20dea70f029038d81c9d45f3ad31d44bedb34021795be1028d682375f45a6b5bee2de596322529033705c604ce04319c51c4c8881425586b6be56cac25d2c5bcd8bdf75e1abe172f6a60989b1b6c8a8909313ead10590161700e20cb4d4bcb69472727059c104b242c2d34f0cd0d4ea1805f3e0a346c5cac19324e4801e3193354aa9898989a5a6b50b3a6c6262686888c0c7e19130e5c2b9609c310e370d6d8a20a3510f71ceea00e6a5773d55a5b2b47c35a229d5795dc7befa5e19354709c7c26d329169e5688ac80b13007904536108ba4d2d2225b4c4b80b8f4ec409978e478eddc4839929469c9a7c29736f453261cfe57a552d58a028d9a182f1b19ad5818be5e2a554c4ccc8c5a67a0e68c19920b4943ce981822323232b5cac8d820d333ac5644666688d0d0107911dae008c3596b4da2044c801a3806d0d9a1f14a21c7a60032c21b1d1430c6f806073589c16ab90c500096eb2606abeb3a1b365c65c386cd2a7c1b610c565875c849e141f05b5a74b0e4d9c13a38f2c8d8649256ab995451ca492a961a4a09a58060965e60c078a1717182e4ae2277bd785103c3dcdce0989810c36002e0c8c87432229a4ad19b989810c360156c493248323515c255f82afc4d2aa51272574ccc4de88a518300382c17a255ec8565906c50a8171940ee6a61181cbeb08ccd86e5ba0141961b1943ee6a6939ede8e4a48013b6f0929b8f81977048ac95951bbc1272170d7c73835931f0929b6fb94e4e6e5831c29015236ce10184327400280fe02be6720c96ca84230c574227a0804238230c67ccf8170d1b176b868c1352c038fc196158138635ae56cdb36a64d8d4e055f835a1ab56d7bb4e5872c2b762b0640cad90b462b0c2174018806705205c851f80300600c255f80008317e0c9359721a80ad0c737192928951a5605e502e2d2ce08af78c0a43684d1f59722d286e039403593e9dd2dd3dc9a4de0457b9caf50cf4a524629bc7ae224ff3c825f0c81a78c08397238c88c28594274cd0de8ffca0ca122f284a62841219c5086866fbae614e21a6e02208289210fb418c67de6036c483488836ce888ad91229c990184ce1024a09aef8a10b1d64145168b5d568c9d21bb55630c7274a0cd5245023216bfb42da79e1ec74777773b4bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb1b889a63b6420e5a6badb5524a997094524a29ad54895216d0f0e564be765e383b3f94524a29ad548952216a7de598ad9083d65a6bad94521eb552ca83a343b4ffd71e36187a540f7bbae573eb0d7b28a594d29e4a3d2488682b7f6af5b04f27748410952c9a2469428511a000eaec93175099dda3e4f3c30388529761d1268152b8a2b97677772422d9dda7b7370d4a926cca9106c503486854dc395a956eb603c9a7c7756e3c110225c7f5d02731ae27f4d71359f6727cf284870c7b496a04dabf81c9921f8484206282674aa43c85f877d79324bac847403b68a12d77ef6a0d404ee6a70544e9478740aa777777b7bbbb777777777b77b436d7d36372772b7577ddddd329f5e94c785cab3877777f508aec3e279d74762f81387777f7e9dd119ea75856880b636bd7fdf8b0d2bd64252349513c61440713ea875624251fe7f253e79c7466c00443a842074348010e4f4828b4a324fa433b1ad2d7a2d475b409204b8f6d0792cf0e285252a00f72605af9b10151fa01a46241e70ee80feda0d05c4e4a5d379ba09406a5e833f5d87620f9ecb850bc287ae08686d040822a44e44084252449226da0c490919123f77389224917a62b022d5a595cf73a1e1c25414bedae458b548efb814209a51121e4d2d94939ae3b42e2898e47bd22a6d2faed00a4f9608a378bcc39972082e57a6c3b907c7684c0b585076e800112449e10f144104c9129909cc020c9b54135c508a04891051157e8209d00c2131e02a09c4b5fe75820de2c386d77bcc59bcd95aeec966e821bf1e42cb514ac5e08fb41413b8f603f55e72dc40eddc90bb0fd513a430dd0197d8a4f971df6e09c80718e202a45a5a8d42f3fe6ee99fe48d116e574f739e9744aa9c4d3dd279d7476d4dda7fbf45ff9e973ce497d4e9fefeeee3ea9fbf4bf3edd7dfaf4e93ee7c4a6779f73cef749278e61cee9eed3dddddddd7dce39e79cd3fde79cd3e97c3a29a51408ea94d206622635b18d4a53b504f775c551396efeb5df9c939bcfd5f027175db095e3e84bea3f7fc68f0a57b9bbab543c4d829039cefec882459f9e568dfb4f97d2a54b97ef11f7f820f5f8ec8871be644fcd6747e7748ef0867c8904c276f2efd8883186307b67f936aef93abef2c3628797a089271640f9caa1a2ebe0125a64268ce4eb13c504087ac805b77177cba6ecf8b68ced74882ef2f515e4892d0c94660e79e29b6fe354be3fc0b0c10c8eeffc1abf602286052c26a84fe8906ffdaa38a1349db0225f7a1ba3784025df7aedc743bedd1011201a7353144d81449eb8b6976dbef536fea4e4dbbdd8a094afd732436e0ca324b3e489598e34c95ea6d871a405d972632fdfee365ec98eeffd92f2fd5ca4e46b727c4f33c89cedc1509ed8e6eb7d144f0c66c7abf99136a3e5489be520375ecdd025b3e47b69c813afe46b4466c951f2ed4f08f94e97107091eff701ddc62c528e90af94d285917c4590ef24ca977e8d5331c897fb1a5b1be45bbfc62729f2b55f634e4af64e5e761c8f84508453cb9593d10d22701c67532c911b7b8e2cb9e283cc1a9061a5488ea605785986b020950928bf3d7b185b1ee04a61fba57bdf70fdbbbbbbe99c94d2b73f2895f2e80e89e5f88d392140f91d6f394a8980baa42e890fa45bf6ad9057f7688b14295243106010a0bffc95955843e6d329d688f11d7063e7788c6101f756a2ea43a5a1fa508954150595a8f6507b184a22ba01090dc59c14cd6a48493620a1a11891eca5d4babd4d95b4e3439d04aabef50255ad9d9d248e47e6a46856438ac562b1582c2693c9643299ec47292a3551cc26737a535a026aa1a1582c168bc562316993c96432994c768bf5e471628bc099aa965f22c924698bc562b1582c266d3669933669933669934e6216081452c9a197b196247a49195223c562b1582c165372215b73210baabef5b2aee3160455aaff56eb656fb4520695284786a08116c90c92527633b14f68259873526ac47cf2a405753ac1055d166236c5189fd0926a8e4f6848b2cbf109edd641c8f649559db5464ad4a0bbeba62c9184773d2f0a2982a6c784aa5b1cc771df7785b0d65a93e9876964c407ac025756684640b06268081a92129005046b0de9084b0b0b0bd88416979696e983a5941417948b4b50cdf1080a2c66942328760042c901ea05859a4d4ca019450585f602f3f2a27414450f338aa541298249c1c01c4591c4668d1c497d2e2e2e2ea9d41459c3d485c42a999898cf42a1a48504322b1919295d8e47483ce192238d08a1d5cc6a95e52705cc91e6832956ca11d2123157ccd0cc9864b8349fc4d1e6881248443061b2ab723c12d452664b049a1734343fcc406836f1a81bbc80f1e2850d39dc1c8d800085cbd108084ce61230be6f18304c38249ed126864654d05e477e90a0919129474845dcff68686868fe6186c01f0c183060603c4f107e18631c864636044d538e341820099fc9743aadac802f10f50293928fc22fac3c6de55eeca98606776e72dc3bc7711c37a74ff7e9beb3e33af1a5e7e04ad9435c4ae046568c354cf6fbf8ac9a1b6f3158f29cb090983ffdf51873b820c45673b66ef17c49b71a4f90d377c065502be28210736e6cd93aa76b0d63906fe7474d382840bf0ce2565ec19e6370ac9502f1463fafee6fc20d82688343b40941b4e90771e7e0e12e4117ab40bce518eec75c83ac7c5efce95f84330ce1a1f9d3d3fc6d23b1d56fdf2b0a12e4490c6a3c31b058d43937f77bb358a35bf99c9ee669c220347ffa213cd2f482e4914a3478a583e65ffc8bb069426973572fb90b079ff1ba15d3b70b32af4298cc33b8b369456613ea616e7ba92b26cef612f30c12e029d639debbbc57146bc8987e65e6fbbd59e7acbee352d775ef75ef1565ef39130ecf4b4007b2f7fed4e482cc5ee8b62b833baf667095798597d0b0d0a8bee569fc7bc19d5bd2a83fb34a9d72ea61a7d4b7c42c13974020dfc3c004ac640f87c462f005ac800274710cfef1965518064a0cc371b62fc3bc22ee4fee21571b81fb89a85b48b9bda25843ca7c228ae219e55622b75703310b317b45449b7e4f065205233ae77ebf5784741da2c8ed39915da85dfd308f96fb5d90190c6132af846eeb9669c9e9bd22aec82d151006e6fa26cee63a5e91f58a328cb3e57e99bffad7f38abccae4fa306f895a94fb65b4e9e264517239e4e35e7880db9f2569f88c0a155d34b4ddc281a7436fc98dc4bb88bc213766514274fdf3c634f4f3cb7dde18956f850db15a801c0f60fc1d77b60e4bfec0e43f4b295fb6909287972d6a518e5f735fb68810a861a8062123b9e6d9e03420c9f227a8842951095260431ae3b001b5fb0c6128cec482aa5b4e9f9a58b0fd53c81b090e9b903f0edb50c79cfea0229abfbd25036adde1bee2c79711a0b38b78e0f5c2d911670e7fd11952cebffeab5bbd83c385f35fb057c6d9c13beeeefed4ff46bf70763a08d97147930b0f089964a7c99dc4459ed82547138ed7115b54912746cd1c2df4e478e5aef9174eeb489eaeb12db44ee471ce1bd5adc69da5f4c851cb464a68901d7b9e5826c75774f5cff0952f1537c61ab021aec22c5f09a5314d8e47b72ab9b14c3caa62879672061cddca61cb9e7ba700634017eb44ee35645286e2e6801ea594724ef7d855dcae71fba30f169c852f47c982ead6672508ee953cea51959a44952a3509258e944862369bcd8c9298cd66331a5b3e290772ffcaca943692362b46e1557f6799c122ad83f34a02e2b4ab612f8b05181f669b05b3a41d3d483d78d86eb72ea2d2cdae7063d6428e1aceeb659ae9d6bc27d34a54faf12175e64ddee216b7db2d2a41a9dde29426a2ce4c4abac15dba4b4e8a6eb7bb648beed25d9a22e976abdd2a77e93621eacc5aadc8edf6336ff336ad689d1f3f5572777ebbdd6ea0b52d2d2d2ea876717141bd4814aa1699f08381a8336bb526ccdbbcd58c28ba4bb9972e95d69956dc662f3e0ccd6433599d814c26838187cd1fb02369851b27e732cccaac9549577c0b84d4993339b342cc667149169764b3d9ac369bd1e6ccc68e4ce6ae2c705a200b22eaccd9ec05b359ebffe5e505a667542a1818989444a5522a2b934d019958994c36d452c569c891fcadd7b2ac42b591b4d7a157cb028c0ff36adda7a1da2d0469c22187c4ae00e7472b67ad1375530138a77d186a25d7108893af2c3770e3b45122b1c98f3318a6eb4c20bae427410b2963d28e074cdc428ecf3772bec70d091c64d8ebe679ed93f534f45e7a1fc3ef56cbf33cae7eab7b58f4626cdd1bb6c29f204a3573259d82923cba25750061d1d68347b77ac4d8a3070f1b0cb1bbc266d88347f4f8de3c6c339bbfcf10d672b993e309ec4bdc3dccf5b0984ce9ccd4443f7a297d982ad770fe534a55e0097bd8868d4cebb4c1d3c47b4e25f23d9c2cd025cc82aa6edcfa7e56b7640d619686a8e8bad1ad77160b40d867d9923c3e8457fc8c83d52d19c356f8b2e5314b1e49c5ed07f34b3e18c3193c717423ab3302573cf4bbd741bf0b8534f1e99e7b21f6757042ba8f3cb0f7ce6337b21ac9cacbef14520fb9cb1f166bb0d64be6613b310f8bb337cd995016adac9531853030bc2adc7d0a7b0f83b97fc1f456742b8299d5bef4500ff5900ce59014ead17deb5bdfe42a3efdc8e32f89bae75e87f7341462df7b2e14d2641585d4c82323c656c65ac656a49423903a5d288d6897942890eef1d639d275ee578ff3b19ad6640a57f3bdbdbdbd09f8f7e3befb20fadee7ee5eab0dbb6e7e10eebb9fa18ff7f66d18840ab1cfd5a77386ab17eed7d771bf56faf56db89af6b96fe243bfce57f53085d1c73ef73ef5e90bf6b9d7619f0ba3eba84fa7d3843411c27d2784bef7b71edfcf7dfa3a38ee0b85784f9f0b124408f7dd37f10957a67f979667797d78e7bebc4774f55074392a6461820fe15899de87fbee7de8ca14bec07df73ab8ef421df4bd0bcaee656ce2d9bd7fefc1624dc6629631d7893c4432537f7f83baafd7fff3effc3d0ed772e4f1a44dada0c52437b6f9ca21ba864394dcf8c3e108341cb8c88d5b9848299d72b125d81f031a8d7602939a391d502ba6f720c479e39ae30a62ed6187212ea592adf990a10340d9ff85cfc19267d7754580b01d1bbd6323c88fb5d63e6cc7dad0c65af7b7e21bbdd33b366e741dec65e375e365a59cb09e1c837ff7b30a30bacb5d1d0a8822b97582e4ac49a41159c1c15e3984f9d3707ee459cde77600816c9205cad142db0f44a9669ed58ab55803db7e204a35f32c584d867d59e264d857a375768e8fee7d7cef63be7c8b57c0331980000101c950a90001c9e05d00f9f8016604449bfe1c69741f0c4580b33bbb7089e5e13a3604e5732700575628c34e42f9ebd6ec0f61b2f3ce3bef3a5511c875e18d687305383f7c0250ee68444b79fef71e86bdb2f71f8661307718d6933bfa1da6c00b2fb1cfe147b5c5ac76a15ac744c3df0174c9799572236be5efa18ddf187497858171a6c4bba6486edc35e6664b5ae4c6261a9112b971aaf1670352cf1b2bc0e2532a6548a9bb94b23f462a4018f8caf2330f9f4a85045a10b40a0892fd6983e0e600ba8b677e00947f63052a85e6ef90413d72ca1b42ffff412ea5dc910306a4a09047b7da071036236f00caa025db8f8d0711f20c4724f77f2bbd3cfa3129cea4e14fc440628e1f37bad593fe7c0aa473263727909f887fc41f3f4038771a638c40475c190ad41662a10137469779512c4eca55ae5adbdd19bdfb9962fc4ca779525a01caf14196a25acb9aa8817a48e9564b2a924ee4902492404bb263926c9793b64f3a29c7d56a6d576de75def7e01979ba874adda18a96333030000023317000020100a054402398e04391c0eba0314800d5f8848585c38984883c118487120044110c3308620838841c6186514aaa11a00d08083f6abf187378ebe29be51451caa9077d3b697615c4ba8865ac021da01285b8d967b551bc17c4cfe53f8be1154e6ec8f12443bf70a1d9fb5cde991422aad7ef4a36ca962faef8cbe0dec96a271c2948c165f261c1e9d6c51f8ae17c7c851d2552ba5855713e802e37bce4ae1fa06080bd24b4d9738830b40a04612cad53cd67466392a43bb34042338bf8a7a9d44dc8dd812c806f83816ef2c022ccb8ed8c030cb462b87a943a253f3b70654e241e6608fcbc79fa928e8e987964336dfef814bfe00abdbdc2aa97e050f287c26ce4a64df2cd629df88413b81fb67d3b05a0c98cc80f7e87961e4ce4461f3e03575dd9020674fe047124bf69e70d695906b46947c761d51d0d98a6a22da899a85d829060d76cefed13b81c2a1439f9502b312a40a17aa9a7c19895d295e629fc2f26bf6087e933bb19d3eb25f1424e562f800974a11f1b4dddd659117793331604f6966af783960f0e564cf807fc14cfd8ad353b392a8039515cf4bbc60f2c0fd738bc518327df7253a43f90407d3bac89d3f6bff16261270fa80e177671dad6de5795104e5310acc318fc0951423cc927c490b4fdcf0c808caac7b32be1fc2c98406c790c9f291852d8e18c4787f5a99951f60f2957f31c0f2107ab5eb0b12e324b400dd467fa730f2ef4bf79b5b6bc45dafe8d3e45b3c37d5a6d49e87d47ae8df9c0a4b1f5cd84d6f03d299770d3677011c9aba75caf9c3e23ad3fa81da8ba3444eb4b27666f0b5f1ca1ac51680d3fb508a919e81f1f0fd9a69d3f00fcbe7f963097473a709854b72508f0936f65a730bac18bbec983d1d0aecb13c3f2fab697927c001aa88537e6496c695e67cf24b8bf20b3270d7673e16701cf15ef4a12934ca78248f2defbec53613e7ec6866a27b29bb60bdc5da9686610db7a276d441cc4fc0e9ca2945517b7e1dd43274be86b077d85a188a824e2b61f189ad292eb04d0ac2d017bef86100ec95ea9f953a7d888bcc0a5dc06d9198d594f7abf6209a1ab76b5e0250b4fe801adb13e63d0788f89eef046dc294338cabaf668ccc7b96bb7c436464d7b2dd9f11c536c89adf2edbfa675fb6755c0061be8242337643c4e0a360e8ed462c43db42e037880b201ed4985d85775bc209db2eb173936a5d9f2f328895724b5f06a5da5d1d30862f8acc772a83369a8bcc4781508b02edff6225720660cf96465b9fec24d36a1c61a79c65a8101adc3349a070e38a3a8dd9032583ae5a9ccbc3b5a7ab3243cdde9655b79657d2253c7b856f5caba7372fdbed887ba31beccc19ba355a13b767e8a90744d57b8d38d0783be03f4cd1e683134c1a6982e51ed592b2704b209cf87892b53fbf7419a7fdb4ea0149444778c0354aa780c908e711b4d21bb2059e1221f45cedc02b38057bd64084e6986f40f319e19c1198bb3e3ffca9b04e1405fa7e270fdd899d361265e9618614c7b4db53c2e188ad26a19a053c2c8b933cb90de2c0833ee22af8a917a00cbda16651679fef197352cff25c4db974bfc12e3d0191e0f83d602226064dacae5d1921a5822544a3648ff100188cac28e59052f9d996714668195b201601e187f3216394088a40ec38f1fe9a905c4509a948074adcef546f3a2e093b2fc11b387b207610727d98506f2bc1b90003de983740e5c0058cd46167d746024224860c1a268550d103e73cf74979f6fea22e592779dd1edb14fb55d91bb513b4663da2b9f6decf9f3ede01eec434178904dde05f56a1c6e00a0787c3032134992ef6c1401fe3b8e596a331aaeeeba00325cf9bb2e7c57be0d285c1b520204fdfbb04f1003d0dd719cc4106434bbaa2b1d6c5f6dd9e1331e2da7173da6250b5ce29c79ecb3fef8b757ed884bbbb46178723c0b7ad7020ae06dac4843717c7f2603a341aa151f18a6c815c1c3a3ca5dbe35619f6c520812cc8d200007af6ff074f239f5e054dae35bcb1d67b53cbd60d0d733ce6d7adef38eeefd2c4d75c4276d9a325b17128360da2e1b4f39489bc8d4815b155874dbe23b7eeb42dbd5ea28e4ff5a9270180ec64d77bce14c603b503bc52e1cc2fcee93a663a17811814408b9af069c71be7228c73e6377e0280f6d547687ee8cd39f78e64b4d10fe6daea670e609f85e990c8243e9db5247450a91a660de049b5ad28b2f5d032fc0cf7d7ce032ee9be61fa06ca3735696419ccbadd5683dfef42ad7fd23a68bc94dd5615ff5dd3f1fc87d611b518172f1f1af65c89ff3c4c0bf6d41bcd351fd350a1a0d5da24b82a7b63dab203adaaaa3bcb401c383752572f046231af20ef612ca66577db91db23589018f81d6324995392478f59963dea6cf14cddd0c6397ec489f1a087093458c440470e8d592c87b3fb8247c09f74794c9bc2d98bc38c0d9d1e50a1dec87059cca00d4549b8b83266f33919399a59cf54c2b305e0f16a3a0064d8dffd0dc6a73ff1ea5862be54ef0ee32e8f4698f502d9530e0b59401f3234a7d16ba6642f05342dc9014c8a64d205df5c4726b760202bb729796e01da05534d595988bfe30717b6b7ab7c6c07844b460e5aa9bd9f99dbe00e8d8b75d10b8f583e69ce432c488cabcb9b1fb8715ce33b725c33f192bbed110130991305f65d6565f2cd84328e491d74a81c5edb549e3a730782383a34dbebef252220e4daaff015322f7f9bba9c5076ba05a96ca26d5b221fa24d7243925bdd7e5821ab284d6946e04c141cad79cc3920d7211524dbff8d5daf9f1c4875c1e5152574e4fc811289bf874acc130bbc473e0283ae1b12ac8f607a81a33597c8648da3169c28bbaf3ab6f142cc72c15ffa0f52b1b5ab2dcfbbb5d9e90321049745d5170f0ebfca02e24e0e3078224cfec83968e39a13e2b516d233221eea2f45060f365d7fc56eb44a315fe32a279bd2d910b8670575cbcd469d3c93d84f4e7a3673ef117eb00b43f93e14a8a8cd93a4d45a74a6a1a9b73b2cfc2099b2dfcb86496306f8c2a170b8e29380904666139dcbad5edbc0376e0687d882528ef275f8508250bf65502ba47f1c8d81cb73871994a6ad49d51056c53c060c7615ce097daa0cee4118e2ad85df1c23521a6ac9eae07084a6e6b89d8f19fefacbe0d175d197c2ba98cae6819ad0a876dc98cf1798193164d0a8152ccf91fad9887ad72d5432240f206a4c635f22c6078051d6e51354a4068c235cbafc0e31e123c608db26c78d1960908edd9436e0ef06f28dc2202e2ae55f40740a016a384641e51e27b51a4b2755683bd06c0915dbd7e0abf6cf879a9aec43eb98b332e0bf5961b09a1dc525ed638eabe5bebb516f9cb312e7b079af821752a9f4033c51c9f94f39c4ece58a78e85d7c9b22f4093a8f22db50cea79dc0764bb620e907bc99d8eaa1fc6c285e7050e3e05e81f2444f8de6486e4d7ce5e140180091c5a1119e7ff520d20981221a92d2520ac1287ea9e1ec8d1e5714736c18eaf7c937f8f027835b52abed51bd05b9d0352664215baf54457c2280b5dc1a684c1b18ba6d8dea7bb428eb33f882a72967b877cb9625ef83db3ecf5f16106ee9c4d01b55dc2cf54f601b52d5101603e2a92f8090eb0bc08575c17e05d98906ee250ff393f2857a18c18b60b08c2c414848c251ebcb64d05a7c5df8ab3d7770c94994de467b6b56fe1184aa94afa1aa7de06f3bf2fd45c77bbec3d85924a2ac3853a350c8f69df4b7945d441b07d3d4014d75fcd876aa0dbebd128aeac75c3dfdb2ce27e8a018fff93def5bb877b2de022c1a33ac52f40f46b1dad685a646205318010f5168212430fc805266c76d4c25c2e931cfddc201e76eeba3f269c7fb43e64370b1cd6e3dfa35f1f9b405589db1e07209b617c2f4287d9857169fc195a89717f6b8988394ddcdaf53209c43ffea08b43f6e2ee0563852f9d39454e6a478778cf98d09bf270557826382a438260efa8390b6710afc290de3a267cbf3708c586dadca89f4b70fb1c0d9dd0959414ade70370f1742bec962e998b8d8842c32d2203b6ff5ca2e1e5986f7e4ff5dfc1bb18b0457d4d14b18fbccdf80971a4fa43292273201c4272bce843650b8da55e4191ac224d7588bd22c8daf1b2c43aea92e114cb940437e069c83a8312180f87a3dff77f2abce9766a9965eb04df27c5b8aecc1641b76ebdc80eb5297a0b8bf8574dafe425c0dce989e3f1c163d0049f8296db097321d1e639e42fd07f68b86f85f8273fa27a561339bc1f3c685dc8682c3b0610972c2eea56b7e0d1a55ed508751ea5cd40bde1fecf139cfc71b7b089d25ab4db19d4dc104d03195f1fef1e6adc79e88caab404622a537e67199a5837a32f7529ca8adae6e2920713998541fb4082652b1cc4c05a52751ab27040ab7dfaf4d61c5cc5e840832943c0877d3a92f40d024a3ae20fbb3f6a3044b745fa00b895a779ac7955b533f8af51fd31d98d42d0729d4748eb9e74b69a7f96a74d6f48873045c88e75fa93784c911f0fff0491cd5c65a28d522480008cdd138692c85e0faf6f67a3257dead08476a5e32fe0fc27111df6b5b751f2e7fc87434c97ab1c888fee31a15d8798b54eb9100840bbb483e60dd9a004c7b5b3279a5cd9180a2a9df08a87a610c210120618472442765fa06dbe1b6fcbe43106f7d4f4d1b539f8aa9ae4e60b8dc7eea8da2acfca6cc36493aad6fe029ac1bc87b0fb309e64fe5eef28220b6962771ec1393b26673a311f862ab45a3a558afd53666c2f8fef5756e4a48b605308b4c7a27dcc54addb525424591ea01f66a5ea0005510a099654c0117a39a4e8591c18822e74bb98bd82018c474cde45449517f30deab61aaac3f0d5bdea9c045eff45bad243007ea0ca133654fbfb66034aae2e7047dc4203ffe67d7803f176f0ce504d425d384c71a4976f10d68de469d6b8681119d1775af3d1f3154c4c1f417c5c9e440221e66e2d25a7f90752cb78344654885d8f9992719fa401ca601f714b1429e0feb76375b74b970fc57c66d14d0ed6f457a196bcd37471a673df8976b5d2e65058929f5d916a6af909aee8ad4acfed2666a75311a85b757d901afdcdfd64a901fb286574056a7c7bfe0ab703c7751f3df1aba0bef87f3f626804a0afef7cb5d63c4b27170797fe4e1944e424e5982b2759279abac6c5d05b7f5d420cbd67bfe43df64c28c66001be34c773a96844049a006e95ad713da6063b11486c3cffe0584eb18ae37a28eeffe02a6a8eba718f606713aa621c4d1a57dba7b86c039ba5d4c83b191eae526cd6371e493e7421c5c8bb45374970d0b87ffc2da21e7e16e1ed5ead9424ae1e3a06a807c963ff119693d8bd1e661aecf8ff2431ffdf3f95be50d544eb264095c82ab6db45e3ae8ee11eaca4fc10baf91f47c9fd19fc4fefc88d6ec501ada275aff6a9af2b656508932adad8cfd1c284d7b88f74386065e625c743224880e3e05df0af8e9c93a4eb1a63fc74fd4dd4a7a51e4f107b9dc008afbcbabdb36a9d13d458e8e8157e900ebe12ae94be7ece2c3b590b39985c0d2fd716123f81d8dc59a225470fff736bb3712e3ceb09091e72b118c6b1bd126318bc4050021699d4548e0c5394647f876c7bdd8a0f2cf8950519587295e84a7c72645a8c097906b3c361dadc08410021756f7bbb75614c315b874c4dbf4e0d330412b77f0335923c5f8fea4a8c3282313a0701069d9f0b0d8b60f985f1728064d1b0be6ca9a8721804392248339af3e698d0cbbd847ad8b44f6c281636ed001430b02fa876ca4c32ba03c57f15f5b10a1290778be7ac5b03cba24c218f275028318e0e6d21dabaa695e0065ab99837c9b1696f6f6542042edcc7710d2e0e08d97275a0524e0292dda76d86a414206cd34110e70965b7b414ea8893e4e94043eb283277723d4bfb3adc0d095515e8f42c7024f4f3f66f238c0e2c5c2dc9fc2bf2b405fd147f1f9825e90fe30ef3447a7f0c9ff93c62619becf76cff2f56e660a307afba680b027d63043b010d7065c9642a5579fd2802e816d25fab393e7df6600a55b61f461c0e81d3308707e842c777f3c2cf6790ce8a8187fe13139d760917056c1463ffc81ef6584164b25b23ea5492a7e8f9daa1d6eeed1d803a6cc5018233ea3a532f1c4692f33a2df8575d358b11c71ebf3522905c0ad863f25a80f4d0e5fe2bdd6114a2fb72f5616c19b0d5845ecd7c3580640f8e1d8956261c0699d49da4d43602250ebe58592c8c9e90c6c796ae9963cd68aedda81d5750cec32cf836704b2f082920a837c6bb20108d60a0523de30fe189f0fe4c0a05375d5e77b84c102b7a34e222c3a0e26b21bef5f790d53219a3b3aa8badeb6b34d2e52d09eb230359999f51e74dd6b0cb8c7a41ff047c12e7291728136cb49d241f470d5409a4a625de4b49cd65a920c9e6d43f135a44d780ec6ac9997c7ff4397b8d1ebc6ae13c80dde9f45a231d029a32a8e66517d91204d0ad381bda58c40cfd00fc59f9ebad863ba7aca920d200f9b0dfad7fbb0312ce2b4eb62146d361a98547902da0da16f681497bd3b88e3a2f3383a59526b50b2931eea4ee7e70e2a716d9c68fe45987ee81a3a28fd8031c55485a9b37c2ff14aad393dcfb7c31b02cc6bf47873d08ed97bca79a2948ec92539da1ebd76424493693ea6e0d9fd576e48a83c7fc8e811b5edf95b9d95a2086beb76d74958aa89c766195955adf4d857c540f4caa8c536870219b42f40edfcf42f3748534d624f300f9ae0a06be5b489283adc35e108b95bca0ed8b9e9a519e1e2306b65f406d30e3814db5495d2a0568a6db84756123c79c00b820a709a00f0478275594a828eb12036392cef9f6206eaa644ee11b5d089e57279def10757d0f90a5c0c267e4df37eaa4bd0e5c6420c7bf20df591d8ccc61df96c7e0d351940558261daf7e3574c56b09c038c27908ee083438fce5125f234837c10b32125fafa7b5d8efe93441b0ec1c61cdd0968216778172a6ef6aee38d4122b0df9b0e2416105be23405eb58fc84fefcb3b0679f981205b460317816947626ef001de0335778064902b4608865da3e812f53d54f90f1ed9fabcab5d620ef8c75f5294d3e172973dd5dcee1823ff9d9a88b881685e49e9688eee9b938ad15281b845d47da301367af3d3c76cbd5ce78ca61f4960e3263c1103d45ebf0fb9ed435dc497a57fc779176e80ca63cc3ca4831a2c158f24f33a400b9811c1280cf820678d0b00640a26a8165e5301784a0a8ae0665d2c66385a2d05e80c4206d7218091caea7d7150d681b521d3fbc49a10b92876996b91df53853b27b2e611096e12ebda048ec61b3746ab2a980371a55ff7423cc5f560241dfc546588b7e58ae52a156ee4c6781ca701363a2ffd52624e2ecfb37b9c6f3d23a89628a868dbe86e47a57df8e143cf90e5169deda9179f3f75b918a0e2ed2cfbc20dadb4e86a86e03a9c17fb3a1ac45c8836353aa8278e64315048b4ea420e938791916b329094b3537d0a6d47953cc554b3a759ce986146751f757a0b4afcf407dfba95e4bef5cdb85b7347f12fc79aa654ea6ba78404d145cab24b3f331dd90cfc9af1b62cc94c9bd8ca4d70d7debd5881b6c79f4a4364484ed7b2572eb26aa91f40b70096b09dc90ae6fc0d45d098fb7e92dbf01379440de1a5e89f7ca7be2a143634c2a66e15133c18e8712e270ec16593ec7877835f126d19550d7f0961631e7c129ccd4b3360163f04f1277683a767e14b6e2239247b50c8a406a50c8592606973ddc360764647b5680216fd0fb3892922433c44f10ac177629bc74ab087c2d39ee4b80c795a8c3a105cc3e99f2c6a32516ba0d04ae9373aa9080fa0c331a4935bf918f6c9bd47b3816875c6a9d003a30417e46c23b0e97f77a3eb0ba068fc7f6163117aa7f0d31a3955c476577261e865c3ac7ad8c7019ada4bc79c1e79b61630524cf79f5fca3815840b4059a59f1d4a97053f040a9e887dc46b040d5478b158eb28a0da5c9452b1a0bcd0f614fd677de3d9adaaf49e946422e3bc4c038bc7a3d8f96fd8958f8a9ee1b270a7f42aa21a24e2b406fcef23a56e01a834fa3da1d000ffa7d7ae72000b17687654dcfa10cac46101e7fd7be818b9fa5cb6fd6f1362e876a2dbae6ea9376d0ed5902ef880c48c392fa9b745fb44d3c4b3598178e16fa2f946ea0be241c5cf9d57e27a7a812fb5d2b848bf73438880e4d88683f2f2a211249d90bea2d656ba5b6a34b6b1c37b59f864442cde9546131fdd0408bf227b78d772fb2082e1cc68e4fe16d515bb5cc948054a360a6428a3d18b0bb03a5677ba6856bfd12b90d8b417f44622ed79f4ab6f42423a79cde6800f52e32bc05fa8c896499c108a51722b875db6916b8bb59285dcafb4249bd02bc535ae65521533566a2ed698071d7cac0c7e245d70e885dd4bb94584674cf4892336bf70d9ce3632d6e81782e54fdb2f44cbc9f43a815fa0955a646c124939113a1ee281fb5ee3a4930ce0069df517e91f52d4f9ef9e1db2ef60f163047f228e2066e08ef10e98455d1224b4121e6c712afeb4dad2343485e81588b0439e3016212c48f757428add0814aa1231d020d458518a36047a2268af1174bf2c2b1431fb6177be35b4c3f1ce4b0c8ad128278937d7ab5a10fbcc9551182b8dec10d25dc984717fee45fedfcd1dc89c02d61c5222111f6e817b14fe8f51afe2085db990bf7db4463839f42c03a8f4910826502eceb04a08b3a809c4d270aa9945dee4c111cf55da08fde897620d9a572f63a263554266b704ac888c6003c4cea4725c4ad145d8703f4da69e41b09862a54998bc97fda2e27af2ab23720a5e8a2eb74675fbf089fd08a5dc27dc18541b77061bd2abc09925162caa834a9d4c0ae51120f9161d93d89ab1be2208b45bcd26646af7a3e06a89a444d2a950a2e54d672ad8d557147547ab0cf131e06e487023de12b88c301951d904a20107a625071be942f9cd597006278fa04030cb1c330ac44da8dfd90714b6fde2f0107f84bf6fdfc26dc7ed18f741aa8e0c0b75fa43088fa66d97626ea0fa13cd10de0f62476598b471812ee47d283c0947eef24392b092b4aa8023284447962db0d72b3569e601f9e09e344292b18637942fef2c457617ee24a825217331d56787f6d88468297ace7f3a098e70b2e56a676abcc1361cae7eaa91bc44f18be5bef0c2114bc7c340860041c7d4dbcd3833b759478e19a083ec1c73f9ad24f30561f0257a36ac42592013cc46542fc1c03750fe1c4e850caffa468d07f02911d131c14fd829ef2fb4f20cc04cccb02c6b8f756f6b057402261eef16c440d9d6deaff04d3aae46888be215e5c32fa7f82ff5fe5302db666b8275ebe5b28782620190f98428125cd27d2308b53d200145963be610ed42d898a6334df50fff984b0d2f12b50c7c9db704d47115fb630cc0dd0200881487fbe50b68b21815c2d6e6ce9f289be37fd1dfea48b6e69536acadf40c59fc892156cd98ee852aeabf3a1fdd3f813baa6e258538df85838714f3693f1c8a16e38c3c66ae44facc2012d813851ae32d005985e8aee2b96563db005a96bfe043de17e860a66fa0b80add623322d4a2f04a6de5b7d5131f3e19629f54f945778b078130f0162cf8f56cf40883b4228aed38ab64a661d11454c345541b9d25bc10b852ebe441c729fe248704a3d5928165a1d8eaf2f9b4a51ea0e50bb27c0142ea99bc3382432fadd3b95a7c68d586cd04858859a352135e52aaa488f7785b9b470fe6c9f3c4cc11881dd9df75df7a386bdb58bf8deed40d439d45a4775f43f0d841623d49155a296cc2ac1cc4466624428cd3dd56c199e5d2b3bedf2f1da3b32404068b1c625ccb9fb26b00718d05e83b987d987216ad8611c712479c7598ce547d976fc20575cde83eb7884e1a89b3d0dcbba73fee80b913e162d3944df91cc412b840381a2b22e67f09c6ef3ce84b5a076957bce953b4162da966836b4a47f9a562a918805a7e836a2cc533b4c68758b5bf575b338df00bb6d28a52e6fc43f42df80e81528380b9f9c7e426aab21a9e5d9d7272abdf7a722c912c068bffbc6274cd18eb46c71e4ecbedd9353b9828ad777fbdf5306beefedfd3e4ea411b234378b50cd67104355633e473e4ca7b5c1f4d0f249625d01ac32adaf61044c51818f44d680819366a4875e6f1e314865cb014cb1952aba645e267bb52f7cdbb1dbbbdc3177190ad0891a63a7bcc579066776c4e6690de8f28afb911d708345bc020a47f3113ea8e7e175e7ba06c3cfbbc707a2769e2820e9b1684c359af298ec530153d1a4d68efd12bf272cea5b6233399d06e94a4abc464337f1beb5f0ad64068c25c7ef09c785d74873deadbc169c6397cef4dbc79319c28f348614fb6e86d3a2c34834c09e3d9ac7d50a0a2f86c3105c261b37950418eecbb417eef7c614c55cd935eb804ba6e94c0f2180ce010bc8f112cd1264b09e83c24c259b1ea9f9715a075cc98281ce112319c98f5b357aef4374758056e511143fa7d610ef434f59d42a0b5dd91422e16cd11d88d96386acd8f2b5ea4c128f2c80dff5e4a3963b60230f3e1aa1dd5a5b14b77dc7c2e1f97e0e7a0ff0d1a68b8d3a3e202f3a1bf9c08f91c65921bb8ec1fdb2f716cca6466eb3ae0ee87eab9e21d0c152b814585cbc7cc5494513dd1b84712003133e840da18724d9d25032a2f57ee91199487946de781940999d871b61046e42d5753e040271a72746e94e804ec81a5b555d1df011821644c04b499adc1bf8243bdaa3ee3a5e41ee728d4e5dc9d043592cd92dda29b931f62b667c22ee25e373bb738afde4b08df44eeefcb22be68b020ca080cc00cc29a340990e3841b8bd29356e74b636e61b6f25eaaa6b572b3a406743fca44d46135e04cc23d5578606aff00c6948f08280c9db0486a851fb7766c0026d0c9d9ce7314b57201311b11c7568a10278d143d6476987303b6e360160f2ba92175d875fd49c7df0ff5dcbb1990b5ac51e52216de837b4c1ea834007c4fa6dbf206fa1f591fb05b656f70b47023b93e2ab36aecfaa9731c7122450c2efe9e0942efab641074a4a482822db83aa7a2dc49ded4205d4b0ae67c0f2c9556f375684c59cc1cd0a1abaaaabde2d15001ce09a1042cf9b2e4b60904cb43124c300046c02518b6652b27ad3195ee4b4684ce48d5b8a58c67f30dbd835ea75c062ded7061813050caae8f97af8e04f18f5603fc246bcb5be0c97d0617bd7be0fde89ef0d8608ff9ea57ed7bcc31963e9f27023f43793358bef4d6712bfc2229d9f770998f600881e59841971d0325319b21187dae1e51fe1ad6f6e57fb816300f6843f30ed610af60ed9520279d3898d44a728b686151d738342c95074bb14b579489c7aa828b6655e31ee12725c631419b1d1b6b0af941ad77b9b17dd76afa605fa09a39571cdaaa029e2454566b91d90aca80dd9cc46043bb30677a55e8fec94ee16d695629a2a5d8fda3f58b39f82e5195a32fefacf1f5f426c5c7db6a394cdea93cd3768f15c40853e5a992a99ce5c23aecb8af995ae9167965956956b6cee53aa475a7aa25df494f1070b3ca0366d3bda158fb56063755dc2e744390c169ff9874d7fa221b4d42489e95b55811f5b23bd3278d8b0eebd87a9a3c18af2a4cd401a82eaf04d7e672860c29aef8d6b71851b9a0799727fbeb07af61b26e55736a7aa60653561728c567fe5fa694804944c795ceec3163b6b0177b7a897d7dacc0428d19fcd15f6b64fa209d545f788f1466fecde84a5b7a512ee5922923547b8a507d9c728c0c97a24b79e0facff9716309ce8bf0d082d883f043db7d6368673d141d9b311c900fae743ee15b1171f16e58b11a63658e60d90476dcb52b49790d96dc273132162a11566622151e222801b6f76fde16727152d0eba0353ebca8f3645a15df00997eae656356298b8b0b81182c80e5725517d85ec70afaf01ee26801f1558d2470a59487531e11fb799b7206806a2fda0e0f8036701ba9913158cbbc79c19ec9e19b4c55c1928c80ef9b17f662486cbf8e5f222ba847c90fb571e6f5a6d11887b5ffe7492c4f3dcd4ac03782833d85b2d454b5228f793024da526c02f2826e818bace0c98796a69aeaaac5e478077a232e3f04922ea64f743abd823934b424f271d6dba67c8ffe98e21aa8248713f17d100dddbd781cbba248e148458220ce1f4cc8effcb2644d5f71617a025d45d6aed4aee9469eb411edc5e1e1d6e1596f461522fcf0cf8ad8256bf5d449c8cf3595bbbac86c70a70cbd85bc97cadee547571e17adda99cfa08681b694ce2e9d096d659a57de46a37326d4946d5cae05e2b3a9773457c16aa379aa73fcf40fdbdec396032b252a57563b4d01d773bc4745f4b270684526d647fe433331357360d0111a902ec8ae0e80170a2e96d46220bb4074182770e83ad8029a00a40980822afa5926b3de242402c1bfafe2919417f3c768e37d76bc6d14994aa74c692111fae8f488417ceb2ed418c8c7e5b7e1aba02f57cc8218cfa7036193588772f82000238a6b6e3df3bdf6c72ac179b6f15d4c1a5269ea69988917af1243150beca7098ab4f68d00b2b1b34faba704c00e0d6f9fd980a725b2f9a15f503238efedcd53a2c8783ce1844160651a4b30c1083a8d1b318448501cdaf8e96b6d8d2d0c60609d39ac3287082f6f51e49c5d971c40616e6a2ddbefe67a1334f8b5e5db50ecdf6906e453413aa1ff4bef479a9f22859498b57a05e24d9c82785c5f786d0f89b2b5b526c9595510299973ad73d2aca39f284678b6a60394c4dd402b1c5d640350ceaf72b8d50c18798f6042fa0f159c6b52e9e8e8c8b5c12dd6cd367d2bb1a6016caaf65792ff3a0d99488ad7f04d78e111ae9e8545f8e0c536ba95ba533f0b99686554c5677f07c2898232555df3b347cf074eea4ce63e581712092e5edf54039d506f076a37bd5fa48c91e31796cd2d5f24b1a062f9693ab038ecb39139e248a717c07524691903a41331d12abd8747cfb75c64faa544f64c44df0112cfb49a5c723065743f513d5553779ec348f7f32aa37d6b15c3fde7f2ca56dd07a66239782657e57aff742906026adcbadaeaea4982e4138fc89651b6136fee8c9a9127ca304bc819d62f86259a947d0533af30705bcfe6f06fdeac60df55174fdf6dbce523fa1eacfe2d32ada9d8d28db460a186e4153aadb88add9fd1f58284f82ae97ccd0b5d34b7e76a423c2b1b5064895e5075ce90eb95f57f9b48a2b0b82d8048b00c627ede89f4b1806d8cd287dd5b35243539999ed9cc4c9fa82238dc9b5425404b3ef68cbefaba56657e101ab0731b181f644381aa8a5c954b7dc0007449192eb6e8aa7dc15029af8c97b7a8739a59562952db52dce5d8e075eb3f0d9b3953a3b8ab699088b0d8e2683cb4315fedb007614e47d528543e254d3414ca2d90dfb9219635f6a0cff19bd5af9801c5f9d40a54e31312e4bb6ad97f168e4099633f34f62d43fb854b8917c03e2d082d5bb4a932214ee6a8583897ab7339f747ab24524316674718ac1cf9eef7d2c5c60e60ca986ae9ad6e117a7677e413008397093f3420c96147e0bb14a508f5b35778e307bf698d4e7a0ab9158fe96bc79c0dfee2f90b333dbe3b4f7ce6a24545c41f0d466760caab54fe5764e57fe4fc12d79e3b1fb9b45ca7cfe1918b9a351aefd55cdc2be984090f9b5cc18e3a9df0df7bf7309a4c5bda07cb1de9c008f427bbed73abbec41ad6a9e9174645b159954eaaf0f6b54475bb8c4c19a40594ef11b24953c022ff65ec21815eed97002812c8a4e2ee365223d24c9eb983e17478acc59b05bcbccc1dfc0ad4c11e627fe2fec0555cb5da99528500a7b7f91485e3ac5a6986bf2e14f56457cde4ee43a0869a2782df381227b17df4f5f4be6ad0567e86bcae8cd44077eea924f0f17fa4798d548a79544acb2b555023c07d70ebbbe4bd16d17d04bf00b17c09b6b36b03733c6a3ea3ff596610c11c3dd87803ee0cfee2f0ed1a5d90f8568cb54ffe81e14c6afb6af058740d06ecb08a9c975a5d16027b68a6c6602f7d4d2f8b8c79c2022094e3084cd191074baf3cab845d0d60d4ec4d48d405b674a8dd76bc36669aaf805482519e19659997ec048437afcd2da065ffab1fdbc9e3dff89564866f5d29b664ca71510dc94f77f55d438803e2bce112b1af0e9d1ead4175bcab1127ffd4324fee73da263d81f8321cdbc7645b7b94d297165a40ed9b101cc5e157821ac6588b3d92f5fae4db8b207ad0633c0ed69d97727e8c62bfc6d17abe6d5fea53bbd1bb3cbd65abc84af46f5ec27b2629d3ca325e5eb661be5e4cc9c739d36c9b5c7b43f1458188aee5f50a6162053f9be9a83005007de09ed2eade8429242b59fc9d22b72f7b41055d430b8a374ddaab4574fd838779328b7712d6bc6982d262cc6b6de40d7ad8320245964a95e8b35a66aa64630126b74538295dcd22e6f6770c27d37fb32e7222392b30e63428d9c1b5094d9ad54dfa4e8149313760473e95fd8bf75cbe7eed41dde69bd6da499017443c4a0501cd27bdc3fa1f010692983920de6dfa11960f44c30d5eab10b13d919ac00becaacc05273041b8172f3e31288b969528c8716b66586be99c4f3b6e2aa728b6b48f9ef820e8838653d00f70e7532da373ae083c0f8bdb79bcb09ef37f1feb68f0f1835b2583d2400df8c02b37404962eb97f070c21c4150c4bac8439f2478aa750e6d157e110d91015383cabcd3da86baba657a3649dde742058f38b7578714ae5f1fc4f983fb9b1cd38502a286e5313a4698dc68aafdb65ad535be3f58bc8546072b946b0fe890cb66209b7c838895cca87b836edda06537cb7702a0382554f3ef8cdb4a063f7dfe073f5878dd0f43f3ef013fa5b2b1075cd6b409fa1ea3782ec7b81544f918d9410d8906f26c4b4f25510edd6f306186a714c7134ca66a3258bfc4ed21d73558a90f36d09050a86f8ed99b451ed6e4a09eee26699b85e841ed2e331453f80541c91ca37a3b4af8df00a8ddc1d09ba0a563c5a5eaf8d500f8daccdba0b430b905f7ff9b204fdda68d3868ee77ebb4c55caec0db4eb56616e943cb2728ca3b9996fb8496dabbd6e3c8d3f23afc999eef1602a5afbe1d2b5626c7e678a3a689501fa326316bf567807f841d39f4bf08d8ba66a353ac590cbd02df7d18d3ed25fc5f1978d71cc5ccd83eae97be3c6eb7c12dee84ae07e4e17b880b720965723dfb5cb6c6a819279a3bdb07ea3620299b2baab87c3f500e1e8f685a39e2240ebc3150f478904d7839eeb9183fadb0f94bc500e0479d2da4ca2b02c5c5c6581ed715ce21fc156db88de8a6d2078d644094591492fe115e7bdf82c7968e3798ff2565310bb3003ea6336ba5553c6990cfea3ee3e30ed87a228067d2839891351176bdddb65e38951f4e0ef27982a4a9f28cd91e4b2f8ae8ae2b7c70e167dced23074553cd935c0235f127d4d3f3464d6ba9898e99f2d4a3c099fc6cba22c13e574c44ea0388f5bc63e7d1caf961e571765bc1b7dddb2280559e251a436d87f0bd7a0d5bf60e43894bf13eb0716f7314b301f248c523c25244f5ba2d1948b35468863b66230d0ee5706d0e864d94ca40d71093885bf5c6c625019251e094a5e218a207739da56ea6e6e65942e3501c421c6c0de88344ad9dc57fc4aefa66e588c399acfa9a4512eb68056b72e2caa73232c55441b6509e7f175ec790e2567a66aa3c4a0e519116239e8d2d89a4d8017f3c2e228ab725f10702ddcae1cf0ae5490fa889c721c488c1fa8a30c2114bbcc08ab6b319e4dcbf8793b979466ea765046a475e03d764c46bedd30d0eaa08c57c15d175c47e435df7f24917274db551a12598914d4ea1027caacf309f76357e14c8089d748b9107e50826298a01f9890baf09092f7cc851b940865543c2a16d27e91125fe07a296b1ea33dfe3a50170121749182e941936943f71762ab9f7191029b91148d915f24256224e572200714c442b8f3152cf38033906ca4d46b280a1580939424bbd88923292be8272945779ac53dd386b8a6dd9900a39ab95a7c5958ea842b39f23185b492c56c1eb21aa1ecd9246697855cafed97ad2c595007d22869d8b325eb0862e1a5e973c962a2aa0149e6f5d16a15a5b67aba5da3e2215098592cc4a3d277da3ce2dd06c5abe98549b6d8c658d8242144814593244d2c92863a3e25f7c7e1c3151bf5c4dd03f71654dca2e588258c6b5dca787cadabaf115caf973ecebdaf729961cd3f03cfcca067f56f9232e5c9aec5d7e80b92ee272e70e2a1b7f12e547a96c2ff881aa373b9f16c47c5a3e12e4efc3de0b375fd317c478ca320881961f6f802a19e3ede3b62165a7d4008aae8cd41712d46a57116a31c9a4597c0a97b111e79262b52516aeac45a50d2f58e88421468e63c2091b2eb6e442fab924892b5a426dee3bde11af889b578ea6a10cbd7dd67ff003b8334f42cc20d5ee1456b41c8c32c5474f409b4f346583b6df7c04d0bc379c32c52912ea743f86e151e5f2b5b595b1db730e771501e500f5d04e10cd1f2a821f368f9280836a5053e022d4e4d7a219582ebf67632e93e32be0ed05e8cf073aa97c03ac4b5618ab3d7790ef3978a58a6ab65fc9f59876e17964bcaa1b18da23294aa34b16e88ac93483146fc669363521861a970d1a0ee2eb3b27b22856fd4eaff1e42751dbd17895b92d9955d8b0f9c08dcc885f80dfebd3c593c71ea6d9641507413ecba5db47726f10586a619f6ba5bf839474dd0e13f6b12904528f0520102b029678649f42c0ca1e8636a89cc5286800cc49840873377f1f720565157a851e91a52cb4426e19eb262f82f83031738387f0b9ca9a908cb924965593387e9b14cbf13fc03f1ddbc68609d061a8820c791d477e4c3043e0d7fa4efe620b1cd4cf78ade98b751e828607685748f8bbed78fcff431067e1ba6c4bd3b05d60efbef0841b82eca3f1326b6a775060635571abdfe36d71ae0ce387a433580f0cd42a44788e78858a218a326148fd269eacfb01e2aac47707faec652572bfd8a6d437c7c257f77671306402e3ebc4793149869b804dd8454f6e802d3760c327d789f4a1762194c1f55276ae56ce2e0e4ef6fa82e120916da349650bdb69173886027f15a7576c185922e0ffd24107104dc363adad43fcea9e09d104c69705ce31ce6daf6018dd595186aee9b5eca2845c1857f5a247d39495f346f16b9252df9b1b0e2cc063fbaab2cb402406b1464b99999f7ba0ba720f982e8b323077c96288882c84eb8d37f1778966f202185fdee202061a808e65d2aa4b9808d84b114ecd65507a558d1fa33a0f168785dfc686351eb6f8e09bcd2a71413ab07fb25ced1b075744c163dda08fe01c84bf9d3101d950a91fd226be2fc34a0a291f2b90cbf9031c4aa23759416e6f441a5108e49dd2f049033af7c63e7cbd2545d4227ec44d5b09091b21fac60956998a063dbabebc45e11cb40f02332cabf8202b85a3f21e6aa4272429768140daffd52ca348bee766213826d54995eb5dd26f2d5e0f7aabcdad87515e11a8a81cc79442ce6724c1310a8b6532655a5e236619c245561aba1c4bdc72ea9474b39e4e2ca3f6899a4a2ff85371bc2cb8edc9a80933cb0dfc8b89b444df3f5b15edda4a4e107f1d215f1cc129900eb1e5eb06d1d0bd27ca74b81619e84d56848d32be3322c3234f44ad485af749ace50bc93886176b5c47b1d81913978acc96e95932f01e38cca1451ad1896ec00991de7032163461c38d420f70a97bcdcb7fdde46280a6af44be1e6f3caa0820a0b681dc57452798335fa7295032fd965a3edb2e84c3ca38126e16c6dda2da668c7a40820236a630d0ae683902d8708a8117270da84da574af65e1e1bb17df9ca8d2fa16fa77c9ed72f962b7fcdb96016d40856f49f4c7137cd312371df814e40acd84ddcd24aea21e36e63ef3471139045253e6f3d188764989524f5f94c3c998eb7126b37e8608de65927222de8616e4c7410ae05b11b045c72ee8da60aad5d6fde20be2d7c8fb181f12f4dcb44cfa18757a081e59e036a9e1061432b5a195a109c88b4596ada2bc9f774412efddbb794c66a0d6569c16b19250a21041e48391d831580a8ef7e6fdc17448dfc22bd1de37ca606ced4161855caee88887b318ab9e7fb00ca6734a586b41b7578f986e13140e82953e21964bfdccbd976ecf583f17f71e97b92102e9071682cdd2f512ca7f5ff79a6783d28047e03c5128334083a76ffb8bd61b738cdb443013cc728c2fdf2d9c96482a8bd6d3c1ea0f125ff52d15814b1405dd780b0816c50c811477f008ce4602648afa13943fdb44c482a9e37ea8db0dac31d4d92e9ec1f8b2dcc7991028e3c7d1cc1b6289a791bb270d6ab35716b0103a5f78b361d1fa063d3fd503f5218d25022a0cc3a6f9333d132a42264ca9669129bd8ec220b273ccb1927b2758b58cd7886e8fa470fd09a53c3dafe415d3bc5663d5de4b026f5ca74cfc86c0c45d0afd5415280cf16847946820d559a1bdbfcb3dbf6238934d3025ffb9a9b37b921939bc15f2a2a0570a9fc5f6596509f5c51f385faa3e114759d494dbb3381f20c21ac3b049a8b23b95c2090ba9a0ea111e0e31f67dd15b4000ea30f8c665b5fe85f511d0f70a567f1d0e8ab62c3fa882ac00f1740119da658e3038158344a4828c1988b25ba21acc3b73e693f2619663e132b9543674c467aa9d192de646fb9b79452262903c90af10bc40b7bfbd6be3f3f11e66e3dce2bfc9566bedef3e60744e659bf65d6b7327ebd5e2f8f95c3ddda1ee7f00bc27a8c338b15862166852166b1700bfcd5af36960f16de58adb75f026222b0bea5535d80ac7ffdf7abb7df02e68efdcd23c6da48b85bb248ecb12e3265304b1b09774cd7f91cd6357410ddf56d74a5b1d13cfeaac749835bcf7a8f955b797ebffa7ce04ffdea03121e09776a2bc145ca7a61d7b79e45837fc32dd6bb5e7adc300b6322442cb8e5219409f954c2afdeaec067654be3c76db39ef3d97cd6a77c66f3ac67bd953c78260efa2cd657b9433e4b067c562c8f20ec597a34b261efb1586118b65861d862d57c7df9bd5e1356f3f5615fd37ad6cbcf474bb36034b0ab592ff3f9fabeb13c37cfe4d17a2a13cab4b2953864bec646e667e6649e861efdfb11fb9a97af5728f3afd8d77c8d962ec674f62f08cdb3be20f2afae7247e6afae72277cf9fda0d1d24519cd0a59ac6c5ffa38dee04b17acf5acf0673ceb67602f57cbf5e04b96ebe56ab57afb9e5753f2fbe1fad8b7f228eed6b3f208b459acdb7afd8c9add7afd4c0e73b85baf19332f23b6eecfb8ad99f76a36eb61b2cd7a1fdaca723412c6584f3f1f73b37407e606df55415dc4feea57f60bdff32fc8eb5bf60b5275f8dcb7f40b0683c160fe7abd6032f3ebc1626520323e64b87fbd8f7b3705e6d5872e97eb59b9953d57a6f121f3ae67bd4b4bb9e372fd0f1920f7c1971f4c8f421bd6ca9c8bad6765ce45d6c3ee830feaab594160efd255eeb0dea5abdc69bd8fcbefc78b15eaf1049736126ed6b3f42804e6b9aded1e036dee8778094e933f5f4a53f1bc0fc86b7752cbf7f1ed669f108200b10b40fa5246391b802e666ca914840ff3392af108722920dddbff615f68739bd0d539260e2a6b0f4a93f0ee26ed7c72717a817a72329a3520129e469ea5a7ea712c80dd6fdffaf9f57880dc99db9338709e473eebf4bca1e3ea113fd73d4622c99b367a0cc1b6f957ceefe3deebf5369966806e1b1a2f3f9b17cdd708c330dc6ad0fceb734c1e34fab537ed34bfe55a9bf8d02dd7a7d1a3d0b6c961935bfa9569d0f8ed7968d078dac467dbd3784b97f6363f20dece3171bcc6a945cad103201df55faf0ff25d8d6a602fa9eb734c1eaff766ca26cfed5f8f97962ebebeea1c13c76b1a51da7c52e931f6faa547a1fdfa9a9580da395b12a1446d2781648b5b12a1a50b4dd9a33a851a7994b9ab76b22fcfe42177d5b4898b77e647da648f381f7eadfbe6eb8f335fefa73e1f73bfdec68f9c8c96d2a3ccc3687c8da86de8919369506a09a4b31e3955b5d1a3d4827fd6660dedd223885d5fe35fd76039d50528a383ec86d5d0a38e9a9cea02a4a1837cc37ec4c17aacf3fb51047fdd305d44468f73bb1ef6760cb25be66df4a863df1b1de41b7fcd8f333ac8b78cddf7734c1e2e5d44e6611fbe7f0880e91c1347a875906f1aed7a195d04bfddf40b6237d639268e1bbe4b8fb449a8734c1cb5f535b7c29fdf0ffce11c1aba79e66566e613a5d12367a347d0b5653ecc7888ab01612e204aabae737fd6c05c1f66ff7cccfc95f957de5e26fbbe996b8d4664bb7b6ec37f6bf248c2aeb109f71d5334a022e1fb76fdcddbbbf26b7e3e42fdbaf7de7b6fcdbf82c05e04fc5dbdf5d65b6fad34333630172fa7809b6bf2889feb543f3f1f17886c7f7ff311d9feeaf4e26d9cf75df6eed36c41d23dc63f534333a17c56f3f7b11e5f01347f6dbec6633dd2f8aae7d3a7809abf5a1709fff5e15fd8575790d78741b697f9f06f1e65fbe28b2fbef8e2ede287e531fcf000362f13e605e0bfaf0a330c464290aa695c5f5fe6efbf328debb77fbdf4300c358d4b032161bf5e660c7f856ddec75f797c3d4ca7ba005fda884cf55817b179195d64e6b1eca58dc8b68dae1c9099d74174d37c7dacc71abad2d04174d77cada1a9a979fd0b7f3d5ae163999afad2a18c1e2bae7742cdfbb5be379f26940fd7b796e4f638b760792461c39e7e3d5aef8d356388bfce3ca6f970e6a58b36ffcae3dcafc7b9e669f2eb6d304d7ebd5ea646dfd8187bb03186fd2bfbcc8be062b8bd8fd3e4b9c33004a2b4d4a772759d30fc0fbf46f834f48c962eb69ed30a68bdab0593c9d2c737fcf20b69fc0dcdeb3cf3309bd6eb6dc8f28c1e8dc8667efbd803bd68681a9b1a981e7fbf663eb675ef723d9ed1a387e1bf5eaf1c9c9bacff6d6419b85f9f8aedd7eb2c5dcc7afcd7a36cdfd8e1dbe8d8e1d778b0c387852ff3d2735e3ace4bbf79e95ae6ff69644fe3a5d36c7c8d1c3dcaf6ebc3b791a5ebe0e8f1c67ebd2c4bd7b9d1a38efdd27af460bf3e67e9e2bf1e28fc1ada468f1c0d3d823bfc1a3d82b11d3e4c8f311a3dfe0e5f468fbfc31cfb19d8833fe3f5d2339b2e82dfd5bd0bbf0be3308f301de4db08deae67bdeb47d76f4068e3dfbc5796f9308f24ecf0b70ce4357de087b5c2673d2c8f276cd7cb0fc84b28698fdc87da884c7cced56ae5ee5979146ab2b907f32894b4b95fe59184cd692faa4f5349a5f409b20e5f01e7ee7ecad37ea2b459ab3d4d2fdc17708ed2894682ebcc976d1f07aa5540a6a9c567a37c62d67cb6f400b9a307c72442027a6cf6c0c51e9edf404e40b8608fe090cc0953c8e37230a972ea6f1e8dc8b0bef754f3532d2de3210c16de6f01a1bb48eae7ab5aad8ff53d6db5be548fd728b45508987bbe4c96fbea5168ce5fad3e766f8d4dec679ec6d708b7eac15fc9bc0a1604fcd50fa11d7eb85d2d57cbd50a354deb6980c03efc1fb01048f8adff117e4bc8b57a993cb65e1ee0f5e1fbf86a05beebad2bab7e05fe2a8f46f6eae71744a56960ae07330decc391db2b991f411a98f6917a99ff9192d1d2c550e661ff43e661e10bed50b7f46a6c3d27c2dc2ff03f9dea025cc92fc8eb57bac8eb435d24f6ab6c24dc2b6d24dc2f5d5db47957ece5d7c863dd336f3f04cc5f7dfd80d8e83188aef44843571767f4b85dd5bdae57bda7caaa9f3e545f3ff501098f84bbdacf7b4f05ded5bb5ea50097ae411bd4e3f641357abbbae67dbc46a5d26310bd1b6502bca9f796a4f7af3c1ad9af6fe571eed67b339cd3622a55f8ac0ff53877f8ad576597eaa5ab7ee4b64af51326f33fc097d1e186bd4bf542db87aaf2ebc33cf717a3341a3ef5d98c563deb5d4f0304fcf07f803ad442dba56980acdef53f58decb77a93e5dc4fbd47b3af53ef4955bb9880a0153f5f203c3950bf6341ccdf533c216387ecc057eec9b9f4abd0afc995fe5511c81b6ebf5a18ceb5bff5ab59ea666af5cdf92d1b02c5d0cf5086e574b8fe15eb55e3a8de6612f9d36e3655ecfcad2c5971ec1bdfad7d364e93aab70bb7ef533b2749d950e4c8f35dbf561962eb6f428dbaed883332e97eec0dc5f2c7fba88ea53f353aa4ff9004150f5606a04ff13da34ada7091ff642bba56964fe7ba1bdcaad77e595911fab77bd4c06b2d2b0fca3f5ab0f339096fef9f900fff53ed41b59dffd2b8f276ca14d033e0d90d587ffa3f5a116daa0a601e27af07fb85a7a04daa37c9606f54a8f46c2ad7af942dbc77d7c14da7387006444f760a2299500a15d35154a3b30f704f2da2e043b610a4d0b03230c3dac73befbfc13a60bf13c58ea9947c022ae2518503e0b9ef4d9aa475e4a571c15fa230ffd80fbf93774f86cea8c3a76fdfaf4fb61759dbac7455a6bc53389e251a87eaa666b6bb5b6da5c6be526ad55a8fa5b6b67d29e50dbc55d6bb55fab7e1f745b2d75b8f8c1086e1f705aba8ecc675204c71c5437076a91fbf6375d5dbc7a8e3c54962fc52df0a40240fa23a7b4b4b4eb7355568009a4d55869ea6eb526dd5bebadd5d26c65e2983ea7fc52e97ca19f524e5964063a0f9e94b9003ecf951ff6f801f9fdbdc89df810a5895467ce9aff64f29f4e515e84f19f627cf6839ccd90e2fc197bfeac32916692dce1c4a1f6107f22fe47e610a509a1602505574411f52443183f3ec1d8feb3c857db5f8eae3d2120672e29ce77f01aed9e0408f107727fd0c7b06458cae20550319840c90fcfd0ece21cb80e0d0d0d19fd8c1e6c3c84142e36fe1e9fe17c4e3d12b50dcd811be7a5c4f95a1731c81bced707aa3fa4eaec5a7be2c9ae35e76bad32b13e4f8fcf76767d1f187c312e47bb7e589da0820797e365e7e47051c1c6c1c1f914e804d1c6f930860336b182134d4891c326c46c5cdb78cb958d5f866b5c8836fe1b3e7b8c6f14a559289c56192c78e142c6122c58c2c90b1b120fe5bc84aa3838381847893f0300c6155378c143193174b101f843121a3091420bd2520d3096382d1079d415360e4e8d89a78da1ec17990c08245bf6a1cf5c5b267b51269345512f13141913934c620e6c30831790e0072d9068a28b2e2789e964063b71851750b440f28218acf0337ed41e452bcbb16157af29b5b065ac2d9361590e0951587041031a58903405173805383a87db6aa5320c50d6b404185a9cb274e1c21630188b0bea7bb22aab32ee07c708054c433fb59a978d3176241ca4206c889285165ca8d8e24a0fb297c9ee935f178c7ec6fa3847321c5d45a66b152b93e1ec5aa5da9064632236c63299e8821a44b1062b768eb8737272443103a1c317298290e10b2a4af045c76e62578c6bb0b273727ee20e8c20061d5880a40a1414b016187f0818639c939393f33eee533086f2c4ae5f9766e861d72d515270228a931334f4b0ebd2120d35d8f56f549e1c284e2970810a0206636e90c51e631fee5174e58849d4b81a64b24b618be21294253be7053b27073b8141041421ba5821ca1258ec1164259162e3c9978d3196891cf73e5fc2cdfd08318ee3b470b239ee45f09a16396cfc156310e397162a8b1a7685c1ae5970b12bd87d97ed0aa01329068c305abe1003040a2940ed115471d342d9288c6b6011c606178a174b1c2b39ef71391c377170b048dab8868371ee64124b8891a4e6051359dcf0333e0df62862281cbf61ab1563a82b9af0a199c7411983b314c3942e43542c95800a0f2c94e692831634dc708325c2ccc0e322072735f95a9295cdd9282063949c8e88010c19a25ce17141448173e61120ceb7408ccd6db309e368a11278a9420cd1530a6ed0c5cb1e6339a6e09481c4101c13277164c8c9a93838654cd91cc7712cdca0869a932949a266e0ace05a5c7d8ee3382e474f8ee3c848e2c9d862899a982bb53292ccfc50ab528212f880829715c80088316a90edb11ed5315eb0041931f43c7df05dc962fe543196d89c12b53168d001bb94d21029b0d1d1714b9e498d99948483933f206400e27094d3b1382c6460cc83cde69ef3590a446273536c8ebb4f3ec3b86371394f688c7372f400c0798392fc1482ce51d4132d56a20051858efd0407c76d00ab9429b08e8f9b4a4228f1300efef13ae1dc2ef7896b22d355a4b8e0e66f6e1ee462df80fbe6e6c59b9b8fdd3c1502584280a52647e0c4aadcf5661a51da75e28c3e488de03ab9383914e0e0725c2c2dd4d29231dcdfbcc7e5ccfd789dbab8382d944cc250828df14bcdc974b4c0028b12608ec0dcf0b44750c7b682f57dbad1d7a91ed93802ac3fb32ec1f0c2e6b6cd71d7c967dbed721fc869de747f08a535a0882653e83024030a24f8b931d87749052cfbde7befcddf1779eef7f8acc6beef63c5beb17defbdf7c12efbde37c169f5e8be2423cb0cdc9efbc93d87f36beec0a1dc99dccbead11187c369ee65ba1e21618ed31549a7ba790438f7588fb89a9f59b337a76d512877fc905bca1dfcdb83b2df9ea334495f72472542eeccdfb67a34651aebb12eedb9bda4a006b3ab134bdeae0f8a59a289326e28c0ae59ca88c1ae7fc367b2892c37f061d7d7e1b31e0f7c96c2ae1f82084b76fd04f80cdcf5858c91b2eb8fe0b39b5d1f8884214bfbb5eb13f199cc32068a5ddf88cf8ed0b0eb07f92c00bbbe094aecba2b9249e433b934c4c4ae724b910efb895d97502863d79f519652e0b2abea68db2c643cd9373737302a52a0021677124d2218444086184528b4800a0ca850dd7042395899828931c60c7569c114ac1ba5a23a84c81129b6fd209f79dbda9f44f645a0340b251379ac7d9fa26d3f0427ebb413032a2d13ac932cdb56eb9115510a600514b49dc349063418803dd253eb7205aad8a18994258260810fb3cb56ed51c7c652c4b64d6954a3260321c46b839468a1871c922019c3450aee56d9d55aae8a30742c8d8af20549881756c032a3b01c938de2b82a863aa855d18311600e32b689bfbeecbd2bbbb5e2e0e871fbfade962b523daab26dcfe94d73cfc94d83183fc5606ded0969dba6bbf35d0943e645f2a772618303b26285231fa27062ca17283f138af177adc11ec596ac5fc16c76df8b645b9a6deda7401bb6fdd067b4988f183583304b2c4529d121e5ddd494a497cfcff90ceffc200f3b7fe8b36fe797f9ac7e7e31bff459fe98e79748766da2b6c513bb3e5103d3c313352e56103b88fa7a64f1037c83982143d92f2ecef9c48e8dc22108e9a1b47ae4b4afb69bb6504a403987a60a6416ca67da7e4902d277224a73282ff2e2330e2a8aea6cfa3ef4c5a6ef482c544ec2310498272e28b102115cfc386d4a7f6e994794769d9c904c221254600318b608038c2662f879e28b099476e98fe0b321448e44d9f4837ca6da975e262a137928ed2706351ca6b0208589d20f7562d3f7b9b2e987a0840a56b02431a184e9e98772018385d4a6ef50583b549818764d650923845462d78fb9b0ebd7f84c6a99c92c6240b1ebcb7c5623a6c04326e1db8bcd6d6e06ce2e5baeec5a52ade2e244daf5bdcc604b8c0954d40c6b87f22817bfb8383dcabfd01dc0d1a1e80ea0430d511db92b11ad494535274c464d474e9b04485447eeb13eedf91ee5a49dc230c1ce5f73a6e1786288a19fb13ec7e57ae47d1155fbe1b8a2a222f6c6656fdb91cf5a4ffb464581c1645f0ef6bd5e1b1ada63fd5b8f6a9d4f4343fbea7a9928ad1e65f98289ad635b1a353433666232b057e86ab1c095ea4b4d6e576fced9d5b0f9b1221ded5aa522cd1fabae48472e4e397f66b246f630f36920d51cd118cd703253142392817ae530bb722b4baac36a02478752f57c3ca90c659f1ceaea5142c9a85db543d5238792168aea4c27633d3aa24844f54886a9491589d6230b45690e75a38aae13a5f148c287da8fac8d3d3c7bac47e2d166a1aeb650364c85dad38d36270270bc467bae86f636b4e58dd0cd093242987a0b37789e2753478278e4cb0c48595f4a59e509b53de9385f32cdfb33d3267eefad355f9f72fe95ee53bee7499bd01a48f7240ef04bb5955295f7ee1d95b4935ff734d3269b2e6d9e89c3bf9394baf54c9b50eae1fa3edec35fc435707c7176ef75266cef654ec94c9be45128035baaebdee3993864fd7a74f2bf2039260ef9dc6f2b336de2a2b45352d5956f6d4d4d6c83e7bd973b23d01f0b412b968fede3d86399d563d8c5600e5daeed7a8f7e3e307efdf6f8f5dbff786df87ead96eb5bb19875c93c76e18785bec33c378d06594f61ff82b1b29538601fcb30d84b6f95c3317bf3e1faedb76dfb1f2ebdb1ec17047c9a5fe5f0e5d76abd1eb7681eac5f1099c71f90d587a1ae724706eba9effbd09a47df230f02e6eebeeb7000c397799a67ad5aad96d7ca9409b0057ecb95476e83dffa99eaa68072b370e65eca31b55bbbf59c9ce16f69d87babccb904025cad6876c41eff6cbd2b17c1df7a0f67efa6ead7a3ca1df0ef07c47e4bcfefc7eb59df42c04b8ff83bc0fad5bbf28a836d5f8ff0eb11fe0cc4ad975f8f9696b948b18f3fa5791aa4e3ddf85def5f0f233db0a6e27d77047a41bb087e23a95df3636abffe75b79c385eefe3a9af47f83c4f7341d7cb9ce6bdeb29cc3f1facc7ef82d5681afcf2a704d7a1c1bf3df6d938770c0f0d6dbc31ec5fefc1f22b83b01f412a9eeb71b69f0fd6ebc710ec20df30ede3a1d3bc2c731d58961b0cdf45aa0438f26c4a3fa6478e460f913a74a5413d7254a6a6741596791f7abf1e2155c5b4943b58737914a2a95f8f9606f3186e5c89509ab1c66f4f3f05d4c72f636ff32c3dd2f84d6b22ac67e922f81fe716ce2b04acde7583b0b08c1e8d6c99f760df7a07df05b65aad6fb15a9ae607ac453f20f26b5caea0ed5df26bbe4686606f4060df7a9cc377e5f059799372a775645f983612d5c578b239386287199cf88282135242e7c02d979a702189931d02287c50c29244175684082fc0b3c7940a78698b1b76dd72698b1a3870032321ae2812820537fcb80cf306b0db6109b6900d59c2f050860b3a4c31440c5b2808282527381c4102a518868cbfe7fc4d9d5a3da99d938c265b2e9182292b78c1c40725c2380c5be8a80c31b240c102a6861334f178a5dee3b3050c5ca98f9eb2d6b401d00789af608626f7e1e1bee4b0f1964b5f9a8a786ae1529f404d2308a13471a90914a85f5b29b7e5d2962d7b14893c299b3280b30460f813869f4d29e473024e46a41375626145572cd0dda5e7d63a95271863d7afdccc951f4e30c509c733dcdddddd4d60839209c0e800cc4a52761801144a3b58e10193171049b81f61d9550bc744a594c2110c007007c10b36a00187a7162425e1bec4437777af81d94e29a59e85ce1704122a43883177f7197777774a2975772e39a8b4c0a348153ba4907444133a242902bf524a290ba0ac3aa8c0041555b5562c5c76a594d2ca597a29e5eaadb6d6ca65bb3f97027360b2fdc31cb4883d0d052e401aa38c1f8e60c10b2c59d33225099702c358cdcbc41b3c37e9872268304204465c41029810384829028a1b8c5a52e9061fa4c0c18526707802400e12528cd1c417535c40c18558056badbad65a830d2b6c77b2610a1a1bc26c7f9992d196ed52484141acc7dd3d7477f71a0fdb29a5d46988eae1dc5dc95685e0eeeeee51bcec5a9f73b22b124a3458f17194556bad94525aadae35c976579a4106db6db67b94a1ed506c578a02c5f6978914e4c0978395524a8bb6c760fb7329275c6cffd0959ec460fbd7f8bfbf4c09ca119b4747d6fe797874f478205d3abc505bf0c01436107901c50d8cb0e2a726d101890e44a930a92fcf52a19362052a78d87bcff3402634d8c3a383e779b00b27b8819213b47082265598fce4e47025072278b623208f8e1e0f7874b80e113a206dd59644e8708307849465043165de7bad7f810317bb5282ed850b9ef8a205da0f5e415cb12d0d7cb8c820072c4a3d1431c5085a1214c3064cb880bbc674b4c000061896247942c1cff82e823d8a9efdab6456304fdb1ab12d173b6c8bb32d174afc0ddbbecc46d98000db3e8f0e9f55d9f63dc8d2c5986d3f042bb3d480896d6bb2a9b3028c0f1d407141c9172e4a70a8e2c7896aad5790ec5aeb16338859b6c8b2ed8716cc936dbfc66733dbfeece1ce4ff221061eac3a27f0a51bdee8cd52735fd8b45abfa03004187ea01530b2ab850f4b74a388adb5576cebbf3b8a5d8f9d7ec981546aa1c40628c5667165d7261d86144a4a3068411428de82375f0824dcdddf9fdb9ccb028a969d55590b5abb85e6aeb6f6cbae5c0fa5716f3f8417f25467fecdd35a2b24840aa2c0c20a32c2a08115eb2c58fbb25aaded8f6fadb5757b4ede2cabf5ebbb28d65aadb5d6da4a69162c7cd8e1e3726e540cc393b2711bda9347dc7206496070c4163f1227a71e5d26d089525b6bddbaccc039bf1e46643f387aaf2cc5b908eae7b2d69ef2ed3d6fc8c782ecf63e7e299dd2aab6dfb64d878ebdbd09b5da1a451f57301307fdededad51db1a6d1ff7b65cbf4c1cb8829938ec635c6b948bf66bad3cde9b8120ecf7719a815ca4346f98c339e7516867bcd1fbb368cf1a471f03b94831a5cfcd7d8beebd791f17dfc76f68cfe6643672f44dde5239f9466101711e87ca7ebc51d78b979f0f6ed725b953a5ac673b14c78160ec7ae1330cf4eced86b1a1478ecbd123086a3dc662377afccf382fb74df6fcf04003647bee377d895c9c1b27ffe0b6943b5c1060cac5f9dc1570b4509b0e9a9b87ee6169eccb9de59e7faf0cdda45b33ba535c9c2fe60b42be3bdf9f5b74a1e48eba39b85e7c767f02edede9ad1c1020e62ad351a694e3e0731e63d588b86fbcfc7a00e06f97eb050990be53970edca7f17ad9b3d6a0bae967405e40dc00f81b8a44ee5841f270248963be1c23e6852a5690447145cc8fafe0330e7efad0828bd9377ea443f779de9b81097031012e5afb3e2e5a6adff328a5f425e5a8d53c46e4d3aecf932f209f787ee76f93cf2e4fded9799ea799e745f171e4716e1ce26fc9c3a1248ef9a28e2dfe0da77d8fcfe88b1e6cf17de40eda8b5fe3b31d2ffe165fe63310dee747718be2df1cee31b5c5973e0bc08b2f3ee7331e2fbe85aa47501e6b003f07f03edef3f2eb6184670be0e5d74300d5a35434c2b32bcff6fbefd396f7fe2ddc16ca86cff25ffd37e7afecafb5758b8bb36a7171be8d9c93a974535fc1633da2b4d394eaed7b643b8f4678768eefc9719d9ea61630c7fb8c6a0cc89cee53ad4e5df6c3438ef740c873fba8663f4198edc873ffd42390004f80f7718f47f6e01daa839f1dbc017ebe37033f70da1efddbe3c1ed41bfe60b14b9eff335c96737efe3f31e6cfb37799c1b8477289e6d756c5ac7e3c7d8fef91b3ecb6fbf47eec8799cb7faed6ff969064ed8dccf80a2b4ebf420e891c3c973fff0b0290bc5e3e7db289fcddf3c4671670e08707428a3ee717ebe8dcc9373b210b983a365b9c775e8cf29f3289d36d51fbccda3110ff6cdd3f7c91fbc7753916a5212607dfb567c6667920132fd0f32fd02d0ee6957b57451f7f0c872ef2040e658f9a90efd9e9c0017e9d33290dca13fcb03c8f47508204b1773d0c7f1f20b80e67191fae3c87277903550b3cfc49f7fb5382dfc99bf93c7d5d0f6ae69dfc81710370074110e9efe9d72af91d014263ee0f0454b0bb840f9998e647b372ff1f63273f937e5e0261b1139d03ad986980d36c781602cf66fe9cbac16690d9686a041e7a44588295228a500081fbe58d59ab080b142daf465328ca51e6e5085a948ffb11808d66a2df70338b7b5606c0aa64d37a562a8c49033afa20a9598edaffaa28a5285913b38d8feaa277f9591bfeac867b388edaf42f25725f94c55a33421209608438914418c800645fcb80a4db5a8b6fd555d544fe4cca38822caf6572951a99cc81d3adb5f35e42aa2edffd5fc3f269fcd176cffafc9ff73f2d94c4269f5896907284d905134e6c75388f2228ccffe13f3fd2067de44137bfef85dd9fe5f950fe94b923bc4edff45715a3d127ffca6f8a7a0fc5351fea930fedf10a5811026ca088527642cd9f0e3ff11f9ec2bf299ffd7c469db8f7f0a0a39732d5a525db67f4a4baa29e52477e4ed9faa51da65f2d4907f8ac83f55e49f7242812c985451440cc22c61821fffd491cf7c08c98acf927ce69fbae28921674e041162be4485913b7efb7b5d9c66a13c2f3e43f2f7927c366b94d60120c2bcb04313607ce0e1c7df63f25993bfb7c57b22678e058b12afc8732277d4d8fe9d18a75d27d799ef21f1ef98fcbb26ffcec967b385eddf3d51da66254c0a26b822830e587efc3b289f7551fe9d174ef37e66be83efd05dd9fe5d950ec966fb774694e648dd913f86f2198ea2344f3254860c452a6c31029f4d16b65b215e688281142e5788e0c7bf23f2d92ca3a849e7c467fe5d140c859cf9125fa20537f96327b983c6f6c7354a732778c81f13f96c2af963273e9b2b6c7f6c446913d862042a602aeae107227efcf191cfa618242b38c9678faff80c8b2167530c31c47c890a23773c519a0ff910d41193cf64d3162732b63fd7857b2267b38a2aa270459c13b94366fb73439436a1a088989ca07c26a3c2f0c267354c18db7f13b3fd2067d30823aa6c485b92dc01dbfe9b11a5cd266e3bf2bf503e9b51be0d511a074fb870b46445062718e3c77f23f2d924a3a889cfb6283edbb6ff8542ce660a52b0e78fb7cbf6bf5a7cd6f4dafeb746693329e90e4d21fcaf139f4d15b6ff35a2342115a840028b130e5ba47cf1e37f8f7c36c740b272937c76aff88c25869ccd274fac98ed6fbff8ece6fd6d5418b9237ca2b4696464e46f8ffc6d528dd21090a4082556aa804182c98fbf65f2d914a3698b1317fb44ce260a13057fabc41659277287b77d121131c9a82c5ef8ac1526cbf6af62ea0f7266012caecc90fc6b92dcd16dff6a446947fce95310db9f46f9d3303e9b296cff3a44691180610a262f2dd80089153ffe95c867334c51136e3b03240cf6f4a75a681375923bf006e2e890d322a7469456812a398859a1081538d1e1c79f1ef96c8681648526f9cc9f5ef119b8670490e27cffe2514e9361e40efa44693e7ee433c9e433d9b4c5c967fedec567dff6f7277296f39eaec46701f4e71370ee5a9dd6e0c811b9236dadd6fdbab5d6da7aa9534ced7577afb55629a994924a2aa9d7afe1b212b1d65a9ffe359428a5524a596fbdeeee3eee4edda94fa58e933bd4a7a42a1a206e8258dd69754ba9adb787524beffd5a6ba52ea7c479089f72e3e4ceefb1d65a3928aa23df734aadcf2041aa23632bd527a59429dad91ae099aab5765f8ff9b5d21b52ee504a3baaf1adb6d6efbe1ed5dbeed43b2c6503b0578e4a2969959b94925649af75e7b82d467564adb4bedc7150badcf1aaa59c94da6a5570a720d5a1b1ed89ea383948f123edfb63854a6df9e476084faec01a9be52a96b49b524a29a573eeee5e6fb5d57bd45a6badb5d63add729cf49d9a524a39e58e4cd96bc329d9d0d8f26be4ce4ad6f400ce9f0eba282b75af3e694d595b9d769286c368a5d55290ea48773a6badb556b7d6ddbf6a5ff65a7cedb5dcdde4963b2ea994f44e4aadbdf85e6ab1b5d4e24b6df501ddf508ae3475215447ead15e6badd5237d99b75f7bddda4aedbcdc066e4eadbc3ac4dc76bbce5fee8b2dfd28b5f5be5f5f69eaee95529fb435df9d8e59556badb6d2aaa9e79892eadbf2537267aeb81a387f07a43a53ca1d7f496baddc97f23acca954d3284b4f8ff7dcd8525623ab978a69dabdea3dbf5794746f2f27cf362f4beeb01b943b7c4655df7de8b3eee9cbfb5e57a3ebf763dbbc9a0a9d56e33a74873eab0141962a8fb2adba20dddd58b343e6d67df5a87a18f8b2aefb973bdb8339ecbec7df8fefe3f6d6ca3e542ad97ec19e6a0cc8f6cbc3afaf79692ae16fa14bcb52a012a881aaeaf2786477bf6d2b560bf4581c6b95557914daaa94ee40ed3cf923f4ed3330abe65815ef30b34674ec94097b7b77ce738dda38bbd9bff406a9ef997ef56abd7eb1d5ebf42b3c190047dace71dc73ddebd57a6f1a916d96e70df998975b6fe35bac1ff2b1ddfa2e07d96dc386d73aa555e1e4bc322065fffa7c70376f7b40d7a7c27f937bb855ea6b96b2fcca52eeb8b48e8d2db209bf98a58b39d94ec9791e2cf58fed7bdd77bae7e9c9a9eb7a76c7a3c3ea71c23e0474afef07076f3f56bfd4609f756f6b286d12a95e5217abf522a2b459d311736ce0e497bde76df7de20df2400eeddbcd86307cf5d00cc1b15cce4b13d0780b97343ef70e28f600e8e6c6eb7e36e6c9bac5faa98692707006fe27b7fcea86d394c44f493c8bbdd0d4f17b93fedfdc94dae031de461645eced0a8a13fcbfa65dcf19e030e3e365fc6d36f5333238671ece80e60df0f6ee75f9dca05b2bcfb56a771e8d77fb9831d3d00d01a6d5b0553bfb06ee4ef0190bdf7a11c70202711a5ddbcebe89113f508ae3e47dbd0385aa66ff40ca3f5c8c3037b3d8a35f42886367afc5fd5e83146a3c7d80c3de3312da36ba9dfb01e1e584b8f226b9525d5015daa793b5d649c60260f8b31c63c5b63efb1d645b6f7aca7470e777f759e9ae6f638eea6eaa5cf5c3d3c3c7a14c57fd7dd5b1d9bfbd1880ed5b330f805496dee7b28c781602c36f638eedea5471e3d56aefba9bd97154cb775dbb67579eb7405b309d1cf87a731f7b282f16235b282a9513169c21cc2bf81fbee1abb67e40e02c81dfa0951e127f538d72dc3b9935dcd5f0fd77799bbae1a9987a5e6bd46e6d5199f08727733be1ff833403507eaf67450dd1767ba6b7c869f0302672772d1c7708fd3d6f88c0322e572f71f167bde28f384f0702e7adf65233cde7b17906dac8b780ffecd1790ed22aec7cf652aa9f73cf03b3dca365681b77beeb725d6cf9a13f1e9a9c79f44787e3dba1f39d77bd985b511d976c9ed113156d77baa47eef87b90bb1ed5f7a1cfbcc77904ebc61bc6d8db38206ad77da77aec3df7361b896d8c532e4e2440fc1df71da8bb73187e0f96fa7ce0cf801c3366cc186f091ce7fbcf30943684eaf8e8432cae07a7baec5d01bb1f53dbc781bcdf3c1595d45321fa9fd45bdda5be1fa07ca04954818ae8d70367f9f5e8744d6524e17bdee538eee6229f74719cf7f736d92fcef5ddfbb8f7b51eb7f4e89ef7d92e8fe0160a01ee1e6812e1ee679422ae3f61e35cbb0e68124d1edd73da7e90ef2e037417a95f90ed3b5667efbbba6f168d9fb69496b22e05dc77d9ef523500c720f7528f395de4fef7f811f0757a9cf6bdae7bfcdde307e28abc97f7837bace2bceea5bd2ef47ee57ddf8fcefb54d7795cedcb73df7beffdb2dc2edb3df7c96d33fe56567d97ad0f9d29106ba08c6485f177f1e7bdf5de7bcffed5459e9b9cad0ae0f4d54174778f35cd7dfb1f7e2bbb7cdafb31886eeeadf4017c03f8f4184455f987f74538fddb1724b53d4f8fdff640f7ebb1dd7bf14c59ff7a789ac601f553df80faa917da5e1ef1dbdf9eebb210dd1b9540de4c5daa2391b6bc49d5e9df0f2f5e51d493107a84d69f4dd5b72d958a96f628ba2f8922157d5ef0d55a6bad4f14514a69429c925496d69ca851ca33c4467d9c8e400e731113821348b811e88f70b51021235821429a9ea0c1d2cd8a24a8b810a0a6118056b0b4022dce634412d4873411792a8148074a7cd6b9157801c20ac4802d74a044908d3a12d4d5c06e498411549e6aad9436d199842771d86b44c3ca6d2d8adaeb4a5875481391a71288d4928c54c054c81350d308404c9bb5418cee12792a8108d41775bb53c81350d3084020d486886a0d4092cdda26309bd20bb54a5132daae0d50d7b140d9d02525c4900d4d29218e5cc8e24e69aaf9d40c706d01b61cd151e79912c2962a3787e0e254d2040d22b89804569eea436b2ae7829754b576c808a25e34c90a2d224f2578ad3b6392c800036a1a81a32a641193840756a70513b4ba586badd5a9f525d5a542bcbafbdf6aabad7808a561777777af6eb71cac803e84c85309aea4d69d2c59a28c42a0a611b8a51c8a2ab744c790129e8694f0715105c641c96c23006549720df164f425a504651406cc422485a81b62480a936d0827529e2831b18648ca5b2e91408b2f082b8125244f14041f983a127c6005b5145cf082145d5ae0464d510819a18ea9c2a9c0899590c9cad3969495a4a7af72205809c3640b15443129a3a502a6992d974410c54b426b4b37ca96285d2ca5b7f6040df7935c47eefb21c159bb1df1421a6a9d0c3fb82c9db5d61a9e28b5f7d2a6a5238e58435c7cb2e172dbd642091713810548439822c4f06a285a52aa415ea1d4d22d2c1fd244e4a984da420d426a60b8226669f5676aaf9b0b4b3740214b114b5c375d2518ca70f996e5055676658a4168091626a494b18215b65c6103094690e50562ac97e00561a7b8560850d308404b6859620bb8a4cbe53816a81311ab4d2510510289124a4015aeb5c2b249f75efb8426ea8812d2d08cf509821250f7c6d02db1c5b55132188202a858124875e5c3930a5b114e2fb02e139351ca3255a141659411334030c28915b7725a881c042d4520162108473429c950860b04248c62395b2a352942c1112f5bb09ce223b5d6a22fb4c80b5a24862e41429728a14b9a5ceb42ac971b789713b2193dedfabec9e0628baf0a5848e1c2ad0852db9026224f2510815204c509142328475090a02441a94161aa444cc818e33606cfde232f68711db985eb027a897d792fc417c4b84e2d42e23a726f5eb32e0069d142c50a544c9161861a92a404e1d648c6c650afcb088b2f4ff080022d65d0f043c3114b3690d202992a03d4b55309ce374ae4a9042272081a9ad45b6b60dd3aa1f2cd8f3009b3eb5b7bc1b0d5cbb533aa04224b6a4b9896342d892d79f1d65a6bbdc2cbae97cb7245169df5234ec2d816a4d20a336c91c30e372899c2a3489962690643dc21ce6d6a9843429670d6ce3a02900e502d18514a792a1948be3aa489c8530944a820cd312e3d62425490093a1c596b2f175e1415a221f669b5ddf943e56973e942ed62494c97cad52c633481d68f9c704a1e908429061744a15485099fe188ca7624e832451d0962f1505bfde490b4848bfee83024031a5ea7344d719af204c6a0c6ccb8e1cbcf0d5e3c59e150c381c975e41e39108431c22db3cc400c6612fb1d9e1d5a3ebbd850b610932fb264a104102ac4c044a5d4a7b53f2d75ead47d06a61ba8148cd8299b542a543423000000c3150000200c0a8845a3e168968549a6ca0714000f75a64c66581cc8834992c3208a4284184388210410028c31868688b6020423f372211f103f29611cdbd9b3f9b4da47f7a308fd2b59f57520003edcb8cc232d808236106ffd5503f52f0f6c215a9fa880652d708e0809cd7fcb14927642ff29030020bce16fb20c3fd10535689c44b86999e81bb82b2920cbe02646e6e67e3728bce05c1847ba81532242d79fe0ff075595e2600e5134f88fa13e91a1c8a05158b063dc74174f208f5c4400d9634a3a60d2f86331714286e3de9f2f72a1c9c83fb0d8d8bfacb37fc9a1237b36cc30bdcf3170c81de232f9622c60134614b313811499850be0dffb24d41630ba41a82041f63a37190b2e19c2ede17249c2d4ee24c2c1762b20a433cd8c0d279cacc63c52696af55f80bf28b14266eadeb076ba94cba215e0658b84d4dab9127af31ffa89e56bc0b1799c03e58efe58936ac970197a610501677e908c475bb74407abee589db3523690c898c4766ab9ead1c44118db53911ac9a514bdd608a5995b59d8a32a110bdc7208ef283fd4343923f2b8b2f210da9ab44eae2b7e464241790f821437e69f8d5ac268fc1eba24754182f007e50cf8843b131af5f2d984224dddf69495d32bec84fe568eed145c17ab8d0cc8acddf3b1d9f470be80d4881871eba7f93600667dc28452d38197fd05ef2025a480c937c182fa8ff5861e7f8a19866c3f00b3e47af20d4ac235609a0467ed11fd0d85a950e720f0de09ec36d0cdd0fe0e2a2ae9d8e35f4e3fb90bb0fa5ada0049be42edf6deace2fa3dba745b899dbd32d0ac7e7bd824e3699bbbe7c7607bca30546d6d2036920768a1297de8c3d1cf74f72989f819254e68b2d7eacd15cbb74b72ba1b7014a4eeff821fc23647823e384fdb056c131dc11a6936ea3bf3814fc8f133bac314984496585e07c74eb695e389f01fc8d6f75c05332caa56d86ea261f1ab7ddfbab5cc40cb0451120e3a9ad54be6cf0b6d5746269f9afd30631281e0a58e13de210c3d06245d664432f9a0b2c643ac9f8d80e2083ce63529318827180f9770636288a750fe6049508b85d581c962b5de2775fa2371da01dba551e63310611c2e3e96e958b6c0fc9ec7cf60b77058a134b8ad69432fdf588c02f5d44f0125ace8260d689cdba7837f84d77935be80ca2b14a3f26381d0578263fa5bc00a23d7deb104f04fdafc663005378ab2a95db4a1eb346a4dfaa57d4a00a46800612c9bb3be6b3a5bd9120aacde6ae6e1213d37edb3267a75190664e1edbf2173e6715f39be1540677b1100485fe46ab7d40d2be78588e2376a390f02d2269b57ad77ba988b51b28e38900df90c5f94286b243a2690625c64ab080213097df9815cf62beb2e74a7255cc61a35a38953a2340ad3170703a7cee6e0a893cf0f9185ffb250b17ed7ed585ae5cb6ff21e345a124a7026a6256778bfb816ee8f16383e21330473012fe81b586966c5270130b97ccf9da994e5ad260fda33bfe39b9a498d9af563e436da3792c66c059775c49af165ab040542366686d448127f72d4bc160e431272dbc0ebd1efa3f4546a94c893e9d72d008a4367e8746e42f49ae91df2d68c3d1b92f9d466cc78f3d2bc5961706c080f6ea6d4ea7b745a1dc566ee6974724b81e6452a00f4867e52d7ddb6df09753b4fce538e49e4e01e81954623f50449405bf43b49e8d874f78b579edb68f8c3c40b0a21ae31eca1e0fff48a6baa47b09828c39383b50001c96f7ab550b9d1e834c5cdf9cf49dd6a16582e52341f04ee64c3591b5ee86f389eb9eddb1c859852fb37a3f7961cb9ca6f5328150eb38cf4648a360720410828f44294ef0e4b4260af4fea1e2b6f7a12a1a105f4033fce6183623200fea1675d414b89705316edd7cb83f4ce205effdff6aa70aa6d0ec3aa1d41d05a21f743cefb077656d9b79cff2b5e4fc3706ca5d9f3e3d39939725aaad958f7670f692aacb0c7fa88badd73e486bf1fa84b90d3bbf12894117e86fe7a993cb23a28ac73e4abc283fdd84bd484da9d8f3656764cd17b8302b6530d44bd8c4acaa43e37f3c9a6d1308ffbca73e9fdc4153681b00f650cb31331e5650a9d2d9c868ed9f2a32371a17076cab24905766570a6c95df6eb298300068f232803257a32f60931b7a8cb77664163bae05617df5e07fdce15128feaf8ee74e25df5dcac01d200a435c7b2ac573d2fca2aa8fe120f9b4838a9720312b5046c77e0f1c9f12de949256f85ca6d26a8e151ac3b4909de3853f666f0b2e5afdbb17da0e240b48d1b8752c17aafee5b5ed213ab8d490fed4d6fa71b9ff7a201e37d6c321126e820866b519016675f622af8861acfeedd5282201268d5421c69d310095a5b447b86ad7e4286bc0c46efecf3c18f446104d9975387de8f22ca3097e17c5576630cc96fa713be67ba685d07229d773d41249d13182755514eaa559bc67291c8a57325efff1086420282449cf9fac4ac985f7daebf89498816ce49add4e67138c75efd709a9e2d733ed03706feb6c3e8fc3a508e45980fddfcd131b790cdb2039ee802463e3d4742c5131eefef8052b0f1ccad5e6585f3af661b9afc2434f8e22cf879f38b9e6114e46b4a172db2b4df2135e6060bc4bf0f56ca82f057914286870685c0d4ce73e4c721dd0dfa6e7e150e3a03fe1a1bfe3029fc1bc9924b320182c09d1123cdc30f06adc0137b611717c29514271e98591778765793d61deca47b98dacc1e1fde8c3589bd8e7e06753263ddd54fec136494570d67d2098c1116ccddbb886745c1f80c5ee767b59bbf91960be5acfe134826681868a669466c5bd97e90ebf4450d99e7ef6a33e41d5a599461826c08b071a1dcaf28562590e561504a37a89d6bb2a53b2d9c99fce4775f7920a5f688307afb3bf8f9d56f89a5959bed5823d0692250e659dbe6d25cb2ba0ae569ca86eb826c82b76b3ff25b94b7b9d41c00f96c7c820c84da24a7112c7f68646bdceafbefebc0ec2983d57a1ed8554eb9c432b4c4d9e737947dac679d3e391e6900b38ebe784c0371ce841f352cc3065695a769d3a4b85e49e4fa7ada4dbb9ac7c676d557c90d03063f42bf0012821f99a1de96173545971a54e95fdc58237d4568749564baebb9fbc135993c2272c6899330ee28b1531018d48b4171cf0a0920130e21df71875be1ae01161ed9568d53bde62f824c91a0e068134d23c79c9d9893ca42a7f5a9662afb81bd43da3ebb766d27a5c52f7179c05b14c591e48759b439f297fbbd383db4c683717f42d8e401f4e7051cf17e2a5985b199861616c9932df3f4cba2f4afa4ede4aa2e5e215bc0d60f164a5aede4964434695bf68507a86e91e48b17ac4789a0182107d2448ce80d93f069ff1022617ab1180032b2a8eae6959cc6772a2977deb59f2c9642f7cbb37dc9f53f7331cb0a69ee160e508e0f7808ba6b8dcfc11f45ecc4ff1b4426b658cbbc01a8e9d0c0e7ed20bef962ad81b66e4e4489f773e422629b77444a3d5300a5a761fce99cc3ea746eb3b3ac6e1ea848928300ff8337ae3e8c0a16e93ea6e375d27beda207bd8e8a866c0ef7bdc9cfecd16600c0d06895186b99586129119dc5ec58b9a98e302d8a246831e0691a371f32360720a1dc1f75673e06cf9d4fa845d6dc840c2b38620cefdb1053cd3c40452d4e9abe606e3cf8deab6676cf6d89432292725f9cb7055cf9e2ec66f274de86e5e4efbdd70b7555779a53b1f961c15bf142293fd8e6452c005850b1c587067637244460c3d7f6ad869f56ab8096b8834915e1b4b27507fbfc088a5ce493ca5e91eb972591456021d786d8f1df6395a8c493b696325f0b52d81e9e0e48e5af051aed5aba852d6815874c9fa441756a5cdf6a14980af314a9b23966cdf6f2d7a3cbb6e1eba95cd9c0c6905666a260faacc3d6f397b71eea030b3ca19afa9dde2a64494b9706cbb3e54358acb80e77d1843d91fc09334960dd0668c22d3e0625df800cd8a3c43c920c2b8d349ba373b4e1e68f80ce1ef55fa5385613a9b3da75ac0be30249572cc772a48f90a22ed9ce038d562a7f6e188164b2134dd8fc5de9d0e06658add610ba56ce730bb6b11525a27ae1019488fac28cb2692a54bf16a3e58e81767a0b6a93dbcfcdd324ad1d20c65ced7d12e1e6f4a0c19597fc6f3f701ba9536dc71ea8734bf77554e8e9b8edfcee1204664bde6733f27c845589908b55b1d9219df9687b40b968a999f5f2f2e3fea44871d576c2d371a05699771cd002cc0210d8cbb633f1a26ec0a162222a8bbc25ed1977b8ba774e77e4ffddfd5cba034e072807b58e451a1ce2c2f5244c7d67b1f613b76565d3fb3f24f28b9e48c41d12c172d8adc0e237200781f2738b0dc43c60ccd05a55bca658be7ff29050a85e55dbc3ce5ec78db5fd402a7b935070630c3c28a4f4adf6860d9d4059b17423a267d18f4e596f4b6a6e447ea3b7e18ed455f97df1c66027b6a7ef2acd7cc78f4703d87da2d2dfb0c9545cb2d0307fd573dcf90998216f294f2ab0f6951d9fdb7d6508e4a6c038261bcbff521fc5c596ad9aa60540246123cd804f6b64051559a7ba953df6f1599bdd6beea16ab48863c33bcc97f0bb40da66e1edf7381715f73245a85e3e8d8b6fe49ca1e8b459a0ccea4764271749302b368102b79af33a7196ed17cfa343f2284a30609de1f1f09dd16f8d673b2cdaf1f51361153b6e9011224163ba37a09faee3b8f69654c81d5b589e9ac03b9586468743f89a70ffe965e7aa9b28390092d18fd492721b8d109d8888a79d4b8df4522cc4a13959f442e4d7e1d158874d2bd1bb61c49717505394ecd03379f7050540928522cb764289c5e50cf433bab746f38fa001485ad397797a797b24d3fd2bf569ae19bc61696e61755b850fc9014174f313d6f28ebe0447f242f90e74d384f73908bd23ef2bf94e6de596c50d81ec17f8d0bb9dabbe145fdb85c1849820dd89f26fafe1eedfca85e7562cf11d42103fe88eb595b5878597e87f0d117f77a48964062ed8a21566e7381ac8162dd3307c1cda22dd9994138aa242cca544d44abcc678bf8a9cf78d2075c046378695373ee8480c1d092463e9a7c39f213c70eb634042f1280f16aaebf9b0bc7e5b03264cf8e112f2dc6a0ecc268a840e4f973037e69e9abdfa543b68613e221974844ca49ce254ee04864b4f3cc06b8c402d18c4597a5e4a986e8381e4f0a43f42b0a83463966cc9de7781e258106b3460c4dbb565ef4791445e21a1aa58983413d19c93f5c2bbd15ab324bc0a6fb4b3a594230b41085c46edd12a4666b592f2272cf4078a23c306244057591a4ee494299e95cf8eda6c85f57f99e3d86bb1d26aa42113aa472323d5b39357403e9706f68b06295dc8b1282bc60d0510fd510325ed7cd7f9023474dd9dfd58ba54d736ca29bc76907420b2e2daf5b569c71200ed8a23bad22aaf1710aecb8c1d5631cefae718cfa7ee77a1e978ae7d12090e0942f3eec6c92e62bc17ee183baaf2770858f9386a6dccd131e5d688a6298444dface29ea0f7021a20901e5690c7fbf1dd25f27e9b44cdf163b31bd1eedee439e36f14468100bdd60a94a8c9aea7383eebca1ad0f9ec2b28b798ca0dac9f1c63ea093c092a68a20ca41715a204123440301e8dd59b6910ebce5f23f72371b05e935130dcffba8bb6c544143ed791adcd302eab1e0bb0f4cbc2729bfcaab688c01cbdb83cb3f344049937b7bb341ea6362de856a381b52825bdc5dc77e0bbd00278c2a78754f6cdac01a3899296e7c9e91317860e26a9dd16175aa2cea5115ee1ea22adeb7e11754ce96b18dc074ab897ae092d6419e322368fff73e84373431c0242b60c372581c9e49eeedf429a16bfec2a49d05a16cecbac2a0b8a50de13240fcb368e4a3df6ae0df20f9c37b28c16f4cc29f7192387c30826dfcdb06e33d10f0d7a6da4bb268b33df09c25f7180c470a43916e7cd939e69e8064ec83e58b10a1aff06f0398196571c52cb79f36275676d8d6c76b2a08786a1771933cfaccb4cfd1b180a901cf362adf981d489597aa5c3b14769aa0b7481c8d0f21a40f9ed1226437a74667631a726d07ff241a345b77cf5aad18b7b062e1f6a3842f6df2ed2698e8c2eaedfff3375f44781faa5442d3f3fa8981fc6555c0053b76c9bef4402b6d98a53ed99b33298dea27b34de077dc59eedab363ad8eb7e31af81ec7c8912a0ff66cbb5db4abcf5a47716b89fca4ece41756b8291a69f6bec972fa8c59908005b494a814df7760388635436097722313ec4ce403c0951b18b0664ce33372392c5b5bb3e4ec3ecda84cdb0e50d6934e84863c5ed197490fcb86e5d9ed04ee5c7e67ae1cdf8054e1e5c51e6e7fd184a48dda84fd058e80515d3e368c0ef9dc9cd5b6be0af21a295462af2455336a598b7fcb7b257e6ba3b77c2bea7a8ae9f3296290f63f42856ffb44bbac3420a035a5c60cb6a4c6641d89cd55e0d22e1bb152cd66e1ee44804479e867b6143ab96554ca26757a6be11cb8c158377e2f2ce0aa49dafe275928e00f464db2c13607d72220748a33953a05df96b027adcfcf10e7ed4b8f95ce5876cc841f357426bbb18e2dd695d998d7a2225392a1ecec8940acb2f2d7b18ceb6e44a64b1991ade44b4c788fe66e5340cc9d86e3ae47ba82a2f45e90675899884507bdf4ef9e93a19dc90c63a23cf0ef45c1d7914e6a41b3cbbb15c2379f235d2ada013a324bad03c9ed03bd9d1563ab4d77894c517c9323c4c8c47d8f8e25e0306bcaba98cdd771840ef467e87710f1ba9f9d57898403ae242ffa26d5bf4dd467922b4fb599661a739c931f3154c55a5a22157100a7bec539b7f058306ef0d65fa1d469661563d2ba638f4cbe94573a9264b13d8ddd415de841421484b3b6e51f14108401c7d5f568f2d846e3a13b89d72f1d0b003aa50182d1af6c2394c1ad4dc020756a0ae605075cc187430d9686c9431c3f26556ede5bb534787dc32669845f1a65573bcfb468c0d996d01920b945055e1e569dfd888fe718aa09f99de2e914fb8549d513a5a2fc98a1116c83d00fcc7a61089c3ffc2bca32c06919034eaaedf974b1ec7f2e7a1ca5d3e15a3344aac0e70c6e7892ae1df63f1c2a1746219171774ee8ece1499a9e19aef268a875a26102138f548d8a60ff1e93129ac283c03e1d41c4caa93911c45332b693db93d68f21f4e6da5dc64c0e68d8fb1dee6211383de35289ee0087a389685efb4d598a37cc356ded97d07ff53165014bfa6e67e60052b393f9fc4c108410faea8d57e935cdc9404ab30ea3df65ae78018566143cecb9a8b8a190e9c70dc44cc0b5d462bc648339b95df42cb95fb17d2d26a4e71cd614962515f1697faec84b15baa4d99dd24865272ce2bd4bc10d69c735438b05658735eb2ee0dff1258e017ef20621de9dff6eca7bfef59320f4c97ffdb29f2bde45a22df358bfba734285630768932c68077499973a68198ec3970f2cd09ac5c1abc68ae505977587e4a012c738e0f1443934751bd982bbe67467c00032f5b8d2a2090188ebc012137ec818cf54c17008ca0b5a48b59cac86f09a2019e2a72309340edc3b321a930b4b8aa7de6c8a75f9bf2d41162351b04caf46f03716d78ea95aac07bbce16ed29af0ed5f231bacf6f9b7537dd1fb8a179d9fa7d8e01442919936822a8fc28bbc9a043027279a0ff91e2c4a3fe1d92e161e3ad1f27db5b073847f313487f75358471bdcf47b21352d8790155a86590e5abec55ea1bbd2fd0a6a04a99278af6e7a0a1fbf44f6345797d1332aeff7b29b8165a547fa9c3568402b69d59d2024672b193c532dc8583fd0c28c21c63a3512fec745731ea29c3260d08000a82492b248ee8cab43accb611b8dc30a92b5e5c6f8c2ffe8fa811a8c00d3e180f5d0fd867efa2b580cb486ff11769fb52d1febf0e67eca437362064eb9f945784ecc421fc1de8fef9b38e4a5fcb2523e04413262523a54d93bf2a7bca39a5bec9bbe618aad4352eac66c7ace9fd69ea719aab1681dbd414a2ae595f48c57fd16a3f7b6f9065ae860088cd81ed54edff7bb92f4a55f37e74d0637461470bc1bbd56c914d955d25822a930d7fa42b07c92f203e30ef796e82482400d62ec731e2748feefff480b18153d0dc25814f23847fcfdee4726bdc9d8a1e151278b10d6811ece7e398f19a5cd2d5a8bb64beaeb85393049acf1a9e586b41ea25a50efce0b6247df806a2c7b8a303b98762141273184d99d6c05439bef64d0471b156f9ceb74c9cd15cd7671d3e04a2477fa62be3973077d71443144cb7182d100b2ba9a5477082bbba9f9d69a7b50bed653b5c624a1140e546efdaa5a71acecb19601b412ec7f66fcd4cc2a847100eab483990a37fb1219c0ca9f80fef95296c103ace6d5f03b92d362090ed8c966578dfb6374f1bf6799b557ce86cb14d10afb8a29e7f93729e7017f76ae1bb0aae715cbd5fa740a492f9fdd4190f6d20ee5435f2f898e131c4b7cae657acb6e072e9dc6081e422e0991bfe22000ddda9d4a42a83662729f9b1db1e3a31adedaab989fe262390889c5adddc89af845a49e8dbcac67c3f582ee5b42930cb45ace06e01424c202986411cbc1e45808365f1dae3b40c1247f02d340d322a7d5e6c781f3f184e344a0313a4fdcb230f962ff063e4f3c0f8f279419658391e658a6be52478b52ef00483e47c863f80122046a7d10c86e506f0224049e7076ec142ffbaf20856817caf506ed782c9188372a8d0a79b1de623f35aa1671f4ab0424bdb702ffa786fd4f82b86c0af3967126e9e13e7fff93923c7e7e4ba3d338fc66e6f42066734b957302813e46318505c20c24a1b86a04c507ddab14a196cd063415bb30e5cdb31301715c408f7f46d74f0cc35365342ef2ed27772124b51961aef61a3cc02120b84d90763c0d0042a63ec8415527a1021446dd1a5be7b301e5188753eb8ccb176c32eb678db051abc29ea6462a97b513aeb398c4f888a208685c05481063835b605e528b9a3ddbbb63ce182b2392fa79c564053cb65c25ceb11b40b1a78b0e1bc1386dac9d67b341ec845714eefbc15e007c696328000f4067e865ad3d678e57d173aa0af1b3ed06d793f70ff81d56d430a0fb9943bab8714f33aadc31d3cc2a77ec6836c5bd319a4dedde4e34b722b1d4d3479b20b4128c74ff8d804615f96ade2b1b8876910a3b3dd5aabc4ade7ee996ba4986feaa7855440ce187d6a4eae2ce57ef731625a410f67c4e51a154f9960232f64cb2b0d7e10e8ff613afc9d7beff3ccd915cce6160a5ac11ef5fd0496c19ae5296ee864c4efc45166e844c4e322f4c008003d5e4cbe4ae059799957bfb6e682232d2fdf78d452567c2ffa721accf1e8e228c1ef0905e10604abca74799deeb3210043e7fe789dd74ca0ee2decf3b575082045a23a623ff35c1004d4c606fd88587646c3352a58fa48773ab50033da394622a0e45009a322cea2b55d56ae3b985b2781bd475f06803bb75aaa8f29b67cefaf264194e0c737985996cbf6d9c1fc4e2b77287908372541c4618174c48b84aa3d33a8a210c0f781b445c8c6e90f65d887f22da6d6e0c32df6a015275d456d6d9fd802a5d71b66f2e5473a880a7d93eaea6674c7a3a02b8198aa2e871ee9075a72a6ef938f262ab61efe500bf212ebda5d2698df961818d48db9fba9f3aa5edcfa97f931e1cdc4de3e818629cdc0365c30c3455b3f68ac65df1ad3ecde9a654f4228ca4b1b3a59c5978d7cc15d62f4425ecb2fa929a83659171c3ecb0b4dddbac7ee96e35fb1060d7ec43585abc1a108c44976099f4c07a0d4da7a23007b9fa3a937a40b1d02c5a219555b6520a6d6a3630a44207d9386a896f039cb8c2e8aa23cf18a4531bf0914294ceaab3fb81227aa376a457cc13193e1d1ac21aa1af2fd8533e697c6aa59822f5d83ea9a9e2db41eb8e450a5823c17885d2e7b3428ad855cf1db5cbcb55d6684d74f7f67d48623a441526596e568e02ebeccfc78d9572289c29e2a076a1648d4a51ab9fba4bdd19d5852a4815a99ce8be3ed0f82da8b7531108dc44c4526f14d5aca7ce60d3396a812daa5398ccc6ce5114f52537f9a59605d90e9a9c2956319d7e71b3bbf86b1e49e1a62e6c7ce816975e8ef74c56c9f46bb6824d4c564bf3750c1b870cf89051950b479550c66a48d5d9aea39480e8b98a0aae4009637dcf8244af3970e490bf10a280a25221abe3088722393a3f46d33d8791c8298b35b4ead3d242297d9a92af0caea62b2a8d26efc87348246ee34864f9947ef8e1ded71a0c72a04a270282e8ab86e71a77c734718ab80f357230164b9553f20ebff0d2620f35ec331d530f44c9c24b902676cb359b1d7c1c8a463381fa8d3e50b12c1353ff81dcc8be97bd5fe354f5743652716425b402a890381589ecae109c2a4164b3831727c87fc44b2449cc27bf48cd967e07416a5f32ca4410c920682c3e98e00156c494268bcd913eeffdf60dbd62afbc4c338fc586de65e97bedf47899841ea591caf900fa4d4c24fd900365161f0c85553c0a4efa97600062e4dc29a8ec62536806df62637b200d22a1afb31bdfe48e4fe8aa0804e23f77ef4b5bd5ed789dd14bd37e64b92aa94413ccd3107af3675723ada07a3a8c2c5e50b89bec61c1e21b549b5016540dc94b410e4767a9091966ac6c96e92c466a39b51bdb7230af3e13c4e6335b56044397dcb45350768cc33411264181daaa47dda5fd01ba5b71c158d5285dff1642ca816a37dca1bbf9f92770c72ef403859316321523cc4c3dad5c2993ce2583bb836584129812613022a340da7d79bcd25fddb86710e4885aa5d5557b246f087a8be87366ea578d4fcc7079da2c70f3c22e3a2ded4cdd7517c15b1430f4a529a5fac65a63312de79649b0aef36329d3150b3525fbd7fa86fd058e574c9690f8f22b39b0e00315229dde61f37863225120c868af1411375f6ae7ce1b14b258ca661d0095e032a29a9f7493754d0b3b501cbdacc8110519466879f52ac617619bca9f0e62e4d1a23defdb04dbc9100088bf79a412b660bfe6673842e15b05d6918be91743565909d1a25bbe7775f8710094f03644f87edc9ba40314218462752dfe40561f0e3ea7898aa61a5c14bafff4aa40ee8e490d556cd713583796bcd509e3352d60ad46b43a80891e9b561155d06846f2ed118f167cb52fe2ac484bdfecdef0c832134f85fb8649686b3bb21bde25b23b001810ec90b38cc38b652ea55e0ef0583259471401655192233b47df0a4d49a8cb2c5c84f637aca735277a5a9cdae171c253f9694754da372ca9775c9bba87eb91c33fb3136eb2715f0ced100c05032eee137ac8b49123938fc5ecb4b19bb1bb89e16fc6e82733343410fa2ee3e0f453c0ddc167996444b6e19131a4735a8c722151728ef957657158c5a1a8f8edc921a39e68726989bf6b31a0891a2f704bfcfaec077817aa0a5eb78dcbcf4a47ade1d2992c445c7a12e08b7a4a416e10e5c8a298bcd5fad22d9c524253e904db80d212feab6a4937e00abd81d23167f1b5ff9be1e1fedf92e12ae366bc9e181680d312a79ef37b4b7a740fb528f8c6484cc880d7fb301802cfb4ffba5edb55846b968ac5cec337f1e91d99a065265d07d73703a08acf2e417df27bf220e47e0af05921b382d6ceb932323165a2ec3cb2448fa9ac7e429c55d87e59d364582e73c915ab868fe707645d6429c613daa939a381a9d690e26a4b50a4f3ae9b682e69081791e8bd2e454b5d98a8ca556cb6e2ecce09d6213940dfebe05147dbcb0a495a955d991c878e46c762a4f44a2b53b6026bcc4d44571d73c43bd660fc72acc8dfcd7e64e676770ba52b267c795487f076309587a3561ee0c604c44707abd8dc7b39070cf0b993e1ccad9a45686ed39e6c6211b6f52e46fd45d686c11a02b0579dad047acf0f58119dd5c21e6dc0b316a31e2da0c419743ead2e8d06d06d2a543f09cdf158743c9976798546cea1da025d96d819794c77c370c10e4e579a3c4ebfc3e12ce1fc5238c0950683585b7b4c0bb2fd640fc4e3ebba40b439130ee15223a3b31f77ee7de430abb608c69457d882b35dc30b584323a610af56a49d27b914451136fad21a3cc4fa71c6a88f2b971022993c9038dbdf992383b6d19d6af2d7014ef813893cc4fd036781a206b824044024cb3622fa470628c8f405b0b7ba21a12e132ed6a26d42af5b972e6f42b51ae4731b7a2d813e0cff2a308481b8f4c1d9ee738eb5cbc882a86493b7ed4e707affba3d09e54fca4d08b3700bb3b24003e035d4d0d8c2bb5d4483881578912df4b62c8a9a7208db720b614dbb2807895f6edd7f160b8e22b0cb682d998f75b3d0463fe47b77b589028694f500f8fdade0846b0d640649655b905aa0e52064317f93426a11f7904be480b514605158409004d19147da855b422610044c894576cc2598ef4895e72868eb3a9e822f50cb06f8f8ede1918be3afd1b1fd29292389055de946be0c50bf1c17bc94c2d64f0de63f0ecd9856dcf5000deac6d0a7234a02383425e40c64aad87bfa107a73148d0276286187334f90357de176e2e303ef376a4fb19e68fb03a840244c39d730d10e0b9f4928fa8f9d9d2097ef970698fced35cde915617a68f2990fd855cbc9995cd730f4d8a74d1be437f00bda2d405242d6ae56ed36870784a46fb797ddaaa7cafef28b4eac377321cf72422686a8da2466183cd343415e09a560f6aef794082436214912691c23f1511d23e20243aba4cc9ede58f38d95ea6a609038c71db104e3013130d8ab525c6209cb3557526b5b2ead9658a9090f021c1b57d4092ec9f8175854e9b93a30e6acd786a5a9072b1d1074751c062bd62e212819706ebc15ae53e89b8b928c92011a96d26efb34922603e7058341c898ac8d84e30294dbd801344db207e751904017f9249a278c04c6ae7231125ab40cc033d2d421f120dc94086e90e4c93a8406b2417bfd42021f5611a4c553ca17d974612f3f48432d7ecf8df58e5684d833440105661375added0d77be9b1db29920ba0ab9c75b85965d51dfc5e8320c55f34b4d1d622cfde48b9dab485f535900266493fec89ef6da679e56afec0077a01016d23d8530a2db68e4616959c8a9cc5aceda0aff6147398f1706b44f1479666fd547be3e4555b0d85d9ae88ae379793065aebe25e5c39dc132dc4855b582c89e6e887b4928f341e2020317508bb76d546faca5d75a90640e31d5938cb77691b4a6859152631ada6fd8004af35eef92dd9b2632bc1cc2494d4de9c6212d2aa4d3b2ca613ced3c000d312d5e8557ddabb4ac21f41d21e0d6eda664e4ec874d62554dce7954c0dc22da8ceaa531b2ab702e7a80b644f8f6c0a0be9a74c651582b4ff8580736aa2036651136cd0643b2302a8c4d35a4b61353b2d1401142f109427bec1bd42fec93622177228f268f0bf78035008f6082694907dd2204c8a25b5537f008a5218d49fc3842bdc2e881f296cc4fb9b3b08d15d7600998a2419272d628f71bf9d6e8b1f30b414757fd54a61035007b029bc8142a79e024400b25ff7b23f501f1c94de6204003454371c207810b6f2e64e40dd5220016823a47fd358e2d8ef2fc298586af3e95f585d1fa320780cc48cf93c28e0f6d2f77d67488970c3eee5888ebf8804a442c535bbaed2ad4a78002db2e6238ad81ade570adbd83846f5ccd374bc2f6e1fc3895aa04e3d0f7b03ec2042dc1c738dbc674a131f94b5e2f7b6aeddd80ae108f8473f795069a6fbb1d97816f6b14a028026196c1444a44e50304566ef3aed1a965c92288b49fc58b79cf90464d6f49bb4b470eea8afa32c3a87d0438ed93ce9119b41b5feed97d385154de1c6abb45034c075df4ea605c25d6223c42db577578452898310801304046083fd6cae8227ebabbf9c5de7fdb776706ef27dd73179755000bf919deb1118e7b1bdcb409a616b343d01cf1cd04e71c7d19dbc1cb9903dc1dad73abbe5a812415af8201b22b1af8059cdb79b2b4050025baa8b552110500a14f8909f2f46fe61a276ad190d7d90b30ee1d9880cc18a858ea5f8084385363cec86879ef2030bafaa8cdba2713068e641b30302022e4b9112e51e44e6ea9689144b483bfeee1e1a9794813e67421eaabe0c6cc6e5025881c88b42564d0b2f4a826d4a1f91e9c03795793203e00306f6b56b47e8cd8c8ecf47d652391f588c41a48ef3583c8722596fcc164576eea318f0fe3cac1bb938234d86f44ca078d42983c865c00ad8011ba7a3de3fa338d1e0a59ee520adb7c3ca52ef3fddd1d7ed06d1126abafb043fb4645534f41ba145dbf8c3d01e7d9fb615079b4e8b7890640ec6b108e6025f7168f215c65d8dedc1db832f75663692d062b4a5380411a3efc32388d691e5536e83b60f8d6a7a3c1d25fe80320a92e18ac2617e576a278c77cd1c23db10c73d8ccda52eb44e8a31295554f9ffb2eb15045fc41391b79b7608a9df6e0f91800999d04d8f452353fd75dd768e640b8aec3756e354887e187a5fbf1a80a2baf4fe2d0011a4d19579701867e04e3fd8eaa1f64f85bbb8485da55564448f2b493c7f723c6802320d4a13330f2760b550b2aab2b8f2aa18be041a46c6cc0528d24e4e34df0668aa15290e898b4ab00c0c015279d979505a00cc0e9c307f71b163e3db83e72953f0fa1b35006dd15ab635cb1190964943c2c7dd41a7eedb5574c2b6bf8c7450c418f18d42cb4d54fd740e00f7472f0fa73c8703892a473bad8d6c74bd7976fa9019e774fc4a7fd2a45457e1efaebefcc1274953519a1d4065ce18b3d9da0244f2e5af93d0d3aa125853dfc567fe16ce7bdbd908269a5310dc5a1d110fdb33df2684cb67d761d6e3f979041e00312d49530500a117f88dcecdda1e6bd7267dec3ecafee3628712229aa92542315a82157ac1d8ae60b8f1205ab8b9dedb4324d760da13846012a18b8714d67c7ab6748ce4dce4ada647036ac261e9b5bdaf70e60d341fc59bb001f494f3781393b99e2c7fc33ed65e60bcbfd712ff88f105f7636f250f2a129c693a7e26ed5af22f1d857ac0cf1ec427e0894ca074fff50fb984e6d20fe07bdcf7ba7127e89cdb4306c6f318b6813b868c35ecc483c1cd6821cae2e92b50370b81963ab8a3f9d7525081e9f3b9000e2357f42e3e3605aa732f0ed70f37d51bae819e0b0e8f6641045abf59460c1c9584b5290bc1878b69c100a411c844dc8b0516c7d647081a705a0af2d61d5784da2e3e9a4e9f797874c162f27ffd436b9164fcc0c53d7da64b144a98385b7224b8276782bf4b81358a1dd69babe887c497135f914e3a9f7c56a3b4c3dc31a1620bfabde4c9e728086a48920e5dc81087e3bf68de41ab95cf766eba8fed16dc5f4e1a83fcc8060a2404c75d21ba204e0ed0bad48ac6ff07d0bbf860ba1137f61f141bef4bcb218e8cfd3a8d2de0acc5e17253e9a0f0a95485d6b504f56a47338b83ab37da216c34756e5990ce0448b0218a69a825a129871455753a1b96e27d819e63294c8107a4482bd4bc09d439d885a9c2384f77fa3b9c1390828ee3f4bf5b88015fdb27cfe1d2b3ace66e71c7c2dae8cb84cb5e87a31c6d8f206f83d2f0fe1ee69f2e09ca46697e067ec84323b66cda69ebdd93fd956096614e4e902bc7f0db2eaaf53f13d5a8ab148d675245cb22f70f0f75ff356912a1d8ce6816a18ac90eaaab8882dc7b4295b0f191c96507854f631fd3b0a26fd8190161e7632d97bb62925fbe37a7e702d7cb8c92f850b6855220aa9b19d2678b99a74c21c322c0bc5a3731697374b6d98220636569ac02da6eec762abd3c59932ee1b64d5405ea5d5cb54fb0c5d6c55ba55d6fd801bf64688992ba8c5a0be5d719a029d5cd4172f49bcffe0a09397af885550ddbf9697a90cbe157b849241396fd2b57cd1061cced2cc6e8a5e4ef77f59745dbcd51eb60297d353fa0545f0f9d5a13b918187cf930c38aba70e7a090cdb01c4ae3a1252db685350b1444905ad896175266253d06ad2aeece170b341a7c759bd522483f71050d4f287b0afbbbfe14a8107f7ecd17018338a7123658e4969d82d1f7abc712470ad7db461f3d18c3c0848a9a5e0ffafda8b1b1d92645f91bcea7fc3ea00511b35dd3a298045638c39708cba186d8dd13c8edc9b37d106e97072aeb20fd86768ba517c480d0e212b2a8638952db4a714f0d1020f7b5c1ff26b9f04c16d0ffcc09346690c8af7b06da1ebcdcae26e2942aec449d5e3a9e9b8472e53dda2bfc65fdcf37f16f14b12d871f7440c37ea3738a1acba59fce4e9f8ded599eba7e3a82f9d435bce18e76d38baab48000415d9eaee07ce5ae4305fa9c1facf28b9458b8038a478066857e5d89f25781c38e29191cba20eaa0e77493700b0f6bef43c79e21d12f0205ffdd737ec1b71b0724cc911e7ab651ce9e8c99711f56f63bd1e65ade8eb6982e5876ac19effe485ca0701dde5494ce57d3b4f877d557dbfcd5f50bcbb3690d5c07a6b298f346ce77e2e48f0716aa83b11b19ad0d276a80b85d397f608b78ac16a42511967828ec1fc8a50a0bb448b3d371e161db6a0ce96eceb93d4ec7a9fb0ca6263d4e37fc89d33140c44b838174b951473ebe5cf319c2c9830f9d76ca9f4d5ac47c4efc1550284610d8be206b31e00023fca2ed417944b8dad95b1f9326f34e997ece2468dd2cfa4e4a4359ddee809c81cc2e9ccb6e12594381c6765362db7a3cc2950821fc50eee623b4f56a00dd4d00b24b4d9699a3b670ff499fa62e008309f1e690c44cec46cfdd6b8c143ea5bbb1361c97dc402f7b3838342e11ea75ea2818670722e7da271501e86a3d29d20fbbcde747ab2b3f6fffcb5eb014bc4298f31776a65ce3eefbbc838105c3a4ea98caa4c75827b89cd76881a3fbfdb68b4084f1daf0c88692fa8ae4deef21c4681855c2ded1834957bece493fa4a907a78d11a4f7c8e26fa250dfcc39da0608679bd377d1e2d08ba9b5646c10dbc1b26ffa70cf8412bad0e7222a736c9c9b952774b3457ee767a345a3792db863b7268d33ac51f5bbdd9801c1c6ff3c2a36a6a1bc2dbd350a615384fffd53117ec92e00216ccaf5334b3a961d252845a50f79245f644d46ba2548a820941c1e882b6fda23be3bae83d291fe955d6132ec80dc18c8851b354e9f0f1e570cb04cf018a6bb5b67fff01012f26bc3c3530922aa3f8b971a169183248400b5405463649db4e5c26c135993306d2d55a97976b606e3cd6d350a4d662b7f48b96e602f0362b73d96348e0f587e8dddd338acf23913ccd648162af122f00be191077c94c590b4c9927c870de1d906c48b61d4bbfbef5b2eb2551baddf2e66c07320c8c8b517ae17a09683567a8dcd6bb2304c4423312634fc8907b77747773b023fc54c898b249d3f3ba287b4b2a7fa50933393d5e4486a0c0b880e5d01a8e45140ebb23dc46197bedfdc7ebf3728ef6cc6e849dce52638f932b30e157965f341b86575df31b5498c03ddf3a0999401374a7c6c709ad4ea1efb589324a6fe2f008f2da6eb9b1a5d2ea649b2ee257b9406dde2d4b39a3acf9c3e53aa9f0986f41da9518085320f4d98299f15977f0b495fdbe8e77f40b85b245d92c15b5217bc45deb99cba476539b5a5ff4851438c92cca6cf218d36c2f99f069551c1075a65597d8bb7d4b76442e9530b439fba2be16269225f6cd11fc07b23c5803a5bfbc2cc0950dec6af62e5351fdbef2492cb777b539743b5adb44d490bb033ef39ded463b1494eadf3fcce7b7cd30c4a5c0bde0384d250a27a789507dc9e6db79093ed963e322b529d639d28524e92b6b4ed7e602d2385fb68278caa548009a4d5b7b5e9206393e4f77b4bdb17fd728efe301b0e319a7df4c4825188741734dda69a7ea5cf01f8001e77ea5c96ea0cb07b97d36729319f0c7c2e43fd5bb22fd094ac201755bf599d8051864662a6dc03c6bb56c4066ffce6b5c12fe141299665735ec6b60bc15d7561d4cb652a62e40667de11123184436ce833b269b303242b34bf1d3640227e6204ef93417ee29af7d00eaf6147f6440f7e4422068457a200ead6845b74d8ac2bb0846a3bbd4af75830e37acd2d5b548ce5050308cee34c7b3df14b37aaae9f6fce997c044d59c6e5ecf21ee9963441ec28dab0807b91518d6d6904ec2aac7602ac250d2a1589440cc94536aa601561b3ff8e4450f0966107de527befbfb1722844eceee31b60b0956d92acc49f4dcd61459553048cc25278aaa6c98be89d1a2b5c11f79235677eb205245ec72ca940ec4b14c7ab8c321d2d5ad9d74767a378312ee40239b5894d0f1c3919988fecd1dc32549239dcc7478ca6566e84619763efe4e6ba9e0ca7d1b605a7a60d311d1a703ab5c84cdf3893a35e803886ab68f491d899ee1698a6dbb1e6e6eb706aa8e0c3471f13f3a0af72c06821435a8ee5e432d501b86be2bce3c3e3860cc2745e01c541ae8fcafc5d2de7d24c2c088e0475db396804302d7ad6cfc68fcb2ae81401ff9130c309144e53ed8a20e0c031b7efb8c5058e5b32fe8e009fcf039b5c334a4dca1672cf1c420d59f84fd1c04ab0ea5a49508026bf0bad872aacba4435cd1d3c76ae0fd3c44fcafda38133764ba4dca4de9dd0d59825d63afdf3a6456dd4bd01e1dc7645a5701cff464fdd0e7423ad85648eced0d1e9447a58575e058dd4a197758ceb51f2353648c3bce5f4a3522bd99df35080e282d92dde224ef28469912d87c3136021ac055aa1158c25871c3c186c316d0a7d747ff6a43b07bac5162ef94b1a16dca19266f2a38ac03c263cdfd8591811ddbb8fea8b1aebaa55bab9cb5eef567a2e91acaca1a055d156e9c886c1473f82b210893e6d9b86d1bdf75e35afb947ab2f8265c02d0b3d33408815956a0e6d726b94e4b36be06d712691feea7c520aa2b50ecf2c60a74c5f57997417e40d4b306f46c0d0fc2caa177defd61d192cd93d38170d2986d0ac28dbc478711d02d3ac9486aaa532e8dafeaa461568f04ce9111f7c1a1799e2399f1a7f4324b30145ed55314c9a9f6e19afcda94b751c23ede4933406f62eeabc73bd7d418c25b00122f5d3efd53c59866adc40b71ac1898d84dcfa7e472817725853f5dce55ce9cf665f66ceda5307756aa2f5731bfb8290e699c152d4ff1470fec59570e1a411729eb8fab5a385a246c0a8a40db251e123a82038c8d6b205af33d69bb70a62d4785a45808d3ed1408e589d3520fe7e14852a316a20d5640118ed697f337a36f0618174875a88c4aabd98a76107a458e5ebbb770d277d9aaf2d79328b72aabda2fcb0debe11d659358167172a86e31803fe39d45f201ee50af415d63c5fd1bdf24c11ca3782ef1c519059d62e444b1d5bbb26b3791876fe907e50b555efce4b567acc5e43ac375c6ebd5b7b2248c77d4061fa57a1e48b4924a0401549ce0339151ea5e83cc5c324d97b12d7320559b674013a972d6405dd2f885b03022e3888c5949a9ebbb36f1d8cc7c1459a9802e1f85c33471e21ad1d303a19bc8aa32d4319acf9f8e0a3dbff17a9458d834e88b77d7abb1556520fba2682f3057032c6340185aef54702c46924643a19aa16b31b6bbc79ceeeafeb1305160f33444183f8e99aa03c275beca28c894c0691d2d9720131eac4684b5749817ebd7b078b888d32f25506a40c9df3f729a17bf3a145b92c877432510ba231282a6a0477e65027ed69390b3575d1d1d4c94dc5c0aa5f289ce5d36de3911ee375088c36ba7739b50ddf2a2c2217dc2e08e358bd3f6608bb5066ad333be8822728a07e1538816b8b8daa4fa2d9b81c47ca63e5226d43c987b0df478ba8f306eb0aed8eaa6add8e7057c395c6a1f4350ef405a020eaa179b81454a320b0f4334200b5f24963dee27f10ff7c25fe540cd65b00c0347c6567546eb2e4feacc24abdb60677386e2add3d0f83954cd8c64c808a2d86191c1d4cc2c6e336ec12ab71c66288d33b1f6bc6a56207b1d6338a39d7eca9f94bf873d5c76770b3b3976226f627d6a6208b46c69454f147c90949d3aa3b602bb863ed5ea0bb319cc125cdd346e5932c560e4266a4e5867d26917086a30723c5646b80106dfc6ed4a1ab56ab0a33f01df01e391045d7c2254c9ba9c5e37eef7538d6274160da8bc3af60757516ec6ebd0149f779f7284347b0013a7f04be8396b4adecb252adee204348cf364f0c670fa0131e7420c40e9d9d8db23aa0f6c12b7916431c549ab032d8d6731d35a1f754b5739427b8159c7e99244893671e69690ce89c55341b351cc1e8ce7968548a2a26a25a974041b1d875f99247d2be7b1ea873acdfa8054e43ee56722450b993f65d5ed62d506182a9ce7fa91041e8c05eb08c365ddd64ea7787b68c6b6e930989676b8dc47be9989d87223a14a599b1424dbb154124436af11bd9a4c77154c8fdcf08423f0656cdffd1b4fa9e8a7c6a5094bbaf8622f323e5f99817c49d6e5216811a05a95147c7c3f0d504fd38001e75568f3fe8f9d88bfb9f6bd707d3bdd8d539e739fa6c79cc3148b7f56edb724b8c9bd7ede23eee2509b7414be6fa63e0348ad6475ee91a6c5bf82bf351605094321162442455e3c2c3d17f7c5e7dd65fe9e3a32f13e4ef73925fa8a4d04645e61e4c5e4af9317e48e0e61b0762906623baf0d686c6c06a90e602ce64abc8ec07421af452873043b05965078ea841f236b4134a8841fef2557494f8774e6c6d25df7be2e69d786cfeacf0064f2982df7f20d271a0e0e5c5c32b66db218e240c1c4e8fbdc6a34a1c45cb79ac91b84d26b7c08ffc5dca2f1bc31b9b960b8a28095598d8f68b8edc76c7a907297b31f459e800b7c900d1d16a322c08c482f44cdae51a27daf9ad1de8e989022f168af2810ea360515397f165be02162b98c0e3b49b417796acbc6801edc520bbc4b813af680db05d22507e88ab5f26c347ceb388575ebfa317eac29097c082a768d0b200c2baf219692c6e746cd4d30b9d8dee616aaa5c050ea92aca616ad25c4d5fd30f61887b1ec3ced509a74b958291abdc6da644e108e6a5d27979649862e4a7181494e9f1c78132319667251dafbc27a951e3fbe953c08507c42b9b123c02311ecd4296e02914d31ee7127abe3688ca22357b77df13d50b035f42d00be91258ec17770ce41c5c4f6e92554de7ea24c468e64a38a4a83a3afbad5d7102a5d587c7e7ff45c08fc072dab4a608556bbe76cda11264ed993208448ea4839f9b69620287aa191afd873427b505d8351ad051d0c7e0073533cb1a44ac6093c7eaf4f420eded31224db9f3b1d6342d6ad326473e9936cdd7f6c8f60d50293e8a71e474542e386ab28d2f869a76675e57cd58d88d775413a83cea0692b87c485db97da4c630fb0d37e064f2a945d160f6a8ddcd6c7f97333a66905df8fade4dd27b72b1447f1cf3b9b204713466eb48d3ba71c29ecf829900b92f54713e56d9cf702c5220043c2dcb2d51506580fc3ea3497eea8f83df56b5e26fa954e17b7cd448b08ef242a97952cb775383c81e2f00cce6931cd43196d6c95523521c13cc27a77a524d8e19da327439d87d2d1cf02367ef940edeb456314c1cbd160e88ec6b1b618f3e4079e6c28974bbdb160f5bc1d7eb48818ffd9acbb36aba195a596db437b35ee7d867edc99cad3ef534da554fc644ec49b7ce1b6238a46f0cd0c294269e4c9d9641b98b50ea70c59a7c6c37f87823c63fef8ed0d9621c3fcebfb6439ff0079098fa1ef8226fe3b6f6c0d1de9823e24b3b7b5b6648d0560d530e64fb852e47439054e35b582f56fff9e07533ebfca91ce28fe250a901f17f9135a9c0ec4fa01e185be91c14a9da7d88d9b96d4b86248fc01fd2cf2d97d3950d13155cd63699cf0f14ddfc164176470bb2bc79f93599d8d2f63936bd2414c8b276f180b9ab300bdd2181095d7b14eb75dfa0186c26a788fdab5ac09d24563929ee9152596e492e34e5210d3dd6a02bab9dbdb3c67504d7440bddf82cbd6a16cb2083115e9f8d7c77fb1987e25972611ad36de78e3a355f0c4da011aa06ba8e110714cffe2689521009d77a6929366548af1978639137812937e951cf8ce92a64e54ceb2d3311336ffc493029c91a4ee62aabbd5249aab3755797cb390ba6ee46c77988e653a4f6a96af41cdd97904b97fcfaf8628efa4e290f208f0238501edce36dccf66cc067c458aa789ffbc0e27bb444b20f902f3b3f5e4c2efcb45de6a151c5e5c47738e0f29da89a4daada163c545800e0666dcb75633e54140c89cf614a339ca571fce61e0b58c85e40bdf5c5fa0aea2f683379b748f3bdf23cd842bc07e56736c48487c08231dc1eb32d5b077eb85a25b563d3692b53df3b3537acecc685504b764c06f1906baa54db9cb9460bd2569a16934a447106a0ec7f6c3cdb167aa86acb12978bed85c58ea806df400cca32d33035d7195d2d7ae84305801f6e3f44befcadc8f8b988e280dfba10c983cc7e66a169d7b281227918e6cae5c00734db6c60298763198047be0243b4c123de7a5bea52f73cf8ad8c826d2821d1cde4941f5567ec7c8bcf732a55623d406e06ca6ae23ee59a1d080b9b1856034608674575be765b280e82fca04c23c38f2e8d9efdfe65381d353d15fc66625a0b76a69c2c494a2ec4176f4c206a8fe36bf6034ce02e4106253d1977da2a2fa00d7bd0b64dadce280540476c4adb3516bb283634553a766449a9fed846f226d835c8c04717aaeb5800431cd4ea0830be486d3b2c2000bb8660f5376106401b2ce8f85345d7ca147b0b4529019dc8146d70b16759fb30a97624d315f2de49dc5d9a623c3730be630d9a5c62f69d24c030991ac1a23d0297a092a6aea06017aab624ec4203d3fb0c496bdda83ed05fd94ff0259977c964d1cb199a2058f903daba3240a8520dcb1d3c7669473b35e9406e15bd40ea407e9a6b5af207f9b16598c3eb0d0c0a9db4472bc02d3dd988acfe9a71d828e9c2b1bfa7bb008e3c405dc0d89899348f690ad2aa252b8a847af93588a67bd74b5ee0f6fdae22126b2022172dd3321b968b123b57c674351c6df57aa8372b0d8826a817fd34a98fd519a3caf878fa1d8d03bffec8965d3f545c447078033a38937cd045db5b4d2d44ebbf68be795887a0464c8c4d5d8b3d91d32edb293ca579c4cc1d7404b901bf88e1ca2b2864decbc4f92dca1c2e0df0849944f7ebd0d616dce199247f244de1f0cf08bea476c12cbd8cbd6ffbff61eb80616c046b1503edbc24b6d0aaa276417a0217e312650a3c63eac64d01fe94caa5e3cd230d9e10b11897502aef410478d367bdc6ce8bc9fc2fb49ca1c947548765ea2c3c0497e6d453103392f99bfa1dadc05a679e7724037f36a9fb13b64f4c595311a8f63913c6a9a57a6ec3b112f03846c8735d9eb7df8c075eed05c61b8fd3e44eda34f5d5fd51868182512b78933747fb0087bd6f22c08b9091cfae5d143c050991c10bb986761a8da027554d63ae9c053c3135e0186c6496659ac5668c963deb3cd3ec164d75d202a248f45ebb7052da5df283bd25898e7feacbfc99479c833eff583e15fba21805181236c999a449917a1b076465e0abe1e5633f561eb565d5f4adc519dd7a2d505dc470b8d4713d66e88574a542b94949727241de52a01d9fa099e17c666a6deee76ac2f5d4e1df77bbaf0173ce444de9add603bd1b43607ff50eb1c5ef314fb5842475a9e800597381a3fa9b45c4e13827ea1a000a9a56bd4f4f398d8fef71154fbbc3d34e948bcc6bec4986921a338ec3fc3c0637364a82924b1613137e8961842a258a9b25624921d88d8041726f116c678969e6eceb8d30952c5b020324242178c06bca43b0b3de46dcc0d848bd8d19d5ab7511a70d841c9ddba4974e1db9d1d888e9532bcbf8eb768310a337646cd4f497fd14a0e3b2176609c47143a470ba37d9bcb988697a65237e81ea39285f20997349eb54fc603e02d44b80ab2418c7c69d41c21e40e473e9d3a79213fdf8e922158b03125b50279100a2bb0a204312cbf169bad26dab31e0908e5feb2008062bb77d1fa34ccb6a5072b3ebe83d9b25f6ae5851e150b3655d62028eb95a9d6126943be50de145ddb221dc98f7b8d36e7c76473e624372443e4be46c4719b714ff5990d9a16a7dedcba2a1c6124c957bdffeb06aed8be8e94efa11a7a21997028a18ce79773a8ed0695f049b05dcdc19704f89dd3b35159047eec415f8896832af6aec0b6d30013b4abbb88ae38fe52956855808a264dab1bcb3ca9ebbbcca354bbe706911e8386b932f74a4c629792079d76516f192caeb4be10bcfbd644876becd19a01657bd6552ce68d35a94e7dfae2f5c45c43ca86f7bee75c2f81ff004099bea0babdc13ab2ff436cf76567551f32eafbcd7180e3788c018403d55690aae761b97c9a0251a40d9e57aedd6ecf554110227d37484f73dfb1551be8adc42c743613d5557b0a2efa43ac2e677650998207e3a0d3d6283de479c857e5458f6b34213d1a1fdcd164e91359e0d211a0dfde816ca7221e41f8b02570791ab6b5be44a1ad6e138c31dc08dceac35a33b22727d2923f46337d08397aff9ccb30540e635e6efc9b8a271c46b4d092ea58bfcc6b38039933d66ddec75c5f61d9e1c21d9eb1d5b5e90ad14ea4595ad30c4098e3586ea62c447a655fa1c01f0072b057e6881a5fcddc7b28e9025c79f78d36d41e4e6d195722dfaeaec388a0b310051bd893afc53a576b6037a99334bf8efc2df80015bd24ab364f6e1ff1881a268741891390a70455872367e196f85707074e40c35e91c179ceeba69f5c6aa4df9a29287c7105bcafa1eafb1acfc6db9e76f3069946026ace01ca182ac78ecafff719b1c08dcda41ebada0b238512e8e8418703723e56485ec2e2d849d8616810e8dfffac3c18974f1e608c8bf00404790c08ee95c8335ebee3deea4dcd804d5c3cb33d6780c58249e0089a5a7f61d5857277273acbe6bb924eb4b6ff5728f4f67ee95ad2f4c418bfeb9f3d8219b0782dfb059817baeb49bd1d0d27553ad42e88de42f6adedda36119c21dd5e59288b5109cb7ea90b3f4d5f8086ac97decb451200123e560bf73ce845f18682d5728140f1eb99c7aaa6c04a5342939223c3cd8b68eeb1fa2c435fb2d1472730ec2dcbb2e976b1a7915d8caadd92fc8dcb5badc940ea22422b86b321b6a89dce9c31fb94eef86e6a7fc1cee80edf7f2a3c8b6cbd90a4553b1c699b7e6115391d1ce3724eb674868c4bee2226a7054c7afbeb7631301bbf776dfd1524a3295369b90e1e9d7c2cd1182914018cfdfd18031c325143a718ca3db59f7fcfccee2f0a13fec06b94f875616d39ae3e003c9493284af1623dd978bc53511016a316bacf04b0040fa54f294bf623c6d8ff86cf154a6fcb5690ece70dd030d43f9758fd84269ac3cb04a98391b98e2072b1d67b845c02d967dcba9dbb01691f1d474bd01126a8951dd7950c0b99e280b80191939d1230a5daec879f684163663beaa9ee91a70372b3a8e80502bf159d6470c6fa4a70c8e010999e69c0463acb6feb86e3fd0a687cd6e63fb7eda2745c24573fee3fc8a40cbf57839f8f2f4baed8fd9222719614094de8d7172704d6c3ef15a05c4861d34f53333ec69dc782d762e7657e36601602f5a779007c6ed3e0679e29179a02ac4b6158056f2031bd356a6385e12e35e0b8dbe16d59da2d27b0b27d5c79a40652d765c0f8c0d251429f7883d557e796f9f460059cbc9bc9feea153028e71de33f98439b3f7d112b443f9ae2c6c49d09e7ba1084d2f8ec8425539ccb7029dbf80a121fb53c168555f2b62f253c391fac3dbea531b2b27e1489cbb20126a7394146165e64f5db194381ec13ffc48d25482c3c29efb38e18bc691c91b456d04ad2bb02dd849448b988db34d5d35aa3af9a09ca4a89d80d3681de9c0d2256c147322ff8b623f1ee515506b536ecfc48d20879e36a6383b2f90ebef4ea03938321cb645e71aea20f1276d92c7c61ec5cb26f9d2b62bab918391a6fe26f557fd0b6e3b557d333ff2206ed427b4390a7f3002d9b91d8672dd1240ef3545b504da6c49c28503974fcdba09696c42f5f4db6f032f08a074e14fa8f64692401e988e9941a805b06a25ebc6b3ab9725673e054291d8a63e0114d690536996fb16715ff5ca9d6c8553c977867bf885e2bd92e8153ed078f3f0426a86060700e5b95d8cb7a67fe5e50f76f831ed01e5a3f172e185949f2ab39df335691eb1fc576d4742988ffd2967b34961b9777069611b3f1ab746d390f28081122dd8657ae6aefb84a7866ce028e8cac2ce0a8361dacc826e61042c41cccf5743dd510de26248c4eab599889503b515536ce3affbb55c3fa0d3f732c91c45c026bc95af014d8c12fed38931be5d564dd10939d5a3d5c4a60cceda1cb4b0a7efe469173b65380fc0cb81dc1ba6858ef612852641e925ed7c4a2f95aa2438c0410382570aa7acce5b6588ca093b30a2ce0940a7dd859900b9196f613c9beb6c2c84f019a69b05a7a73f3e7659a7adbd598803d21dbbd13ed5f394838732189e65adddbf4a1596fef90b1e04e9009a85303d508a6c3ee9c1e01318ab610e550d5860c6d5c7a8e253e58883ff6003e7fbaa8aadfdea9c3a233465167cc2cb7f373b889438450b8b379bd24ac2ace29f44a6ef7f1877ec093874a08ab350c7ea80c215bf3ef9326a5495c2f870dbda5d84d84271b36543991c20a0f9df352dd184b66b6ce3a9cfd44cdecf11b0149295bd5b0ab49529da2d21d3aba0dd1cf460b1e4d1f0a8a507c0004ef017c5e75c45188ed6b69b905d50a4e8dca7dd4a98b60959f8a3c697d232e15e11a41c97f08896f823105516c5c5393842a970e440484eedab5b757d57cfa51f88c5b39520ba86ce1dba275ae9ea9ea8d5fe34474553e153ca7195ea1ea5d207d9e2cbd123c6b00783a68d856e0d3017318045cdeb584dd25922569b00e23d8bf409486bcad4a484a688482fe90c5619b2fb6691aa18aa7c48755b959264f68dbdbefa3de871b450b3637a9a1bf97438220ecbd0ccd6c153760ba97211d1d6588166a9890143a648d550c462dd0a88ae30530554863e21a331cc9120377014151e74df93c0c7952497acbaa32b181cc9b1645455538ea01fd18e3579015898483f710d68263918b7ceee40d0ba32558f85ee156e6444689802486ba8e1130b2d229d5ac823821e031d7e3e173b7d1cfc84fafac4c64601fa24a2d241a03bf6619a546735145533c5e77518c1c8f64053d3918e7e3721e84d69fad059cf25b015413572c98033f3940c2fb9ce5fb27f06bc572c5dff5c2ce597f6f84dff25c7c64eef0b3e5d61c82f2e7dd0fb668fb4e75f6092ff163b04a0167c75a7789116a342e622dfcf9d964e5763f91127999b9b96ce3c7ee9423dc2d08517e9f775237d2236845f56a5c4c1560750ca08ae39df7417a66c2637d44818f91bb2204d39d8487976888112e24756a65b26f048a2916d47a93836cf70a8d2e82020bb8640d60d101b4221b215eef5b1c92ca872ffb7e22711f331f0142cbcaa6702f7fb49645f2cd0fb3e8900f87a8644b6bb36bfeb34b72aee03b3d52ff2cb7a240796c6fc92d5d16df0c0d39a6af741e11971d81d70dceb54be66d4056c46e7a57057b40d61f9ab6929dc987dec363f02186a69cdf3f81619418225519df604c57a1b8afb24c3ebcacff7b9970e78c6f702191a9d25be8bdae9de5a0a47c9fa4c7779087ef2180176af034130fa4ed1fc913e53ba47c5cd65bcfbcc979da5a6c03c75dc4de7737f5f5f9b0296e4cf240038c2142135f14718085dc62144928dfb5d31d38c5fc25bd474eb6f0702dd314510b348158ffe23c00c19d4ac5a1f892f15bc896457645a9a17224a59c591a87fcb0d9398bf32a436d74d9c8d103b70225279c890f5bd8c72956d9bb906384e35b443316b06d637b2d2f0f0e67485b74d40c979aade9569f75bc0ba34ebb74a4dc2c87c95f026378b84598f14c54686dd39daa62ad32a184550bec830815a464ef3c49b4487d60535f670390aeb6afc7ebec41a125b51ded13be35cb12e8e4eda1cdc9b795045cabc9c2f38a831b1b89c79a69ee3d7a4648801d0cee16d6e87c80bcbfa28e2fbf1e8b8cb289f71144b0b0395aa54f66e87e66cb2111457c5470c453e5f3bd1297d93bda7e59266528fea743dc605776781462d28c9e6759682590052d50c68fa37af67f020b3ce02737d1aeccc038cd8499660929db236336d876d5452b61cf3683129f9524addfa265d90c8ae450ca72cc5db54aaae25a6afd7124ab24de884af747bd07d80cd65625f0cee7df53c5d9eca71ee81fed90d1be265e13ab96103a4a0930c4ae9b80e66f07889784d54fb6c3ca962c6d131a302f4e8370388c9b33efae6cadca62d7fc3636284177605a494272784fbf7306dfb4ecfb0a192d1bc7798116b1cf8d2b0328ee5a926660b1d41b664f5d93bbebc301ca97bda62b35bf2fec40ac0d6e013ff2aeaa8d770e4e2f6384ad90d840bc9ae85aedd852c440983ac9a75912557373b8737f32ba12701f8d03daa471c4b00e5d6b11a808e6eaa9509f73b3fbac37cc82fa2aa6ad3d0450b130e102eb500c90d020055e678b867593f99bdd752a4185fc48867fad0717be935a49954db7eb43cd37659ec99f426ee8e5347aa044dec24f0baa63cd535066221560316ffb567395c0693d69ccf7175fdf3e5483b3191041f95431e6a16ccddeb417ac973898d9530a50c4aebaaa835967afb0de3b97c48d91c1263bebb0f9b89dd703d898051eb29a22d9fbc61179a26c6e7933e1b6d7fb4ceef71c6197c46f39cb4dd1c3473e732329537538958456e0c249fc79f752377bb92cefbd52bc41596fa6f70192b5537a26bd62df376e6817d4005b691260121147208aeff88a31885fdce0f46fad19ad3464771e179bb265753d847e52c8594809d56733ed8482ac56e431035beffa3814bbb7f72c9914a8fe892208c5de2cf5f76dc613f93c43f2029b3c7ccb5cf361a1ff766c1ad78d10cf67442c857114baabc2ae7ba5f0138c09267b96673d86ce264656da4841b87c2eed60abac14e4b5419f9da5b17c65c567cd8257864b4293b68410b5bf4feb9f6dff2d1775c5c2e5d9b4b5105b6b4253ea0b4c67065c1353278684afe82773578fae050fbd6d3844f95b38bec6f045a378ee2eeb3f65aaa910672701cdf95162da97ee0d6d7b6bfe52f2bfb4b6b04710b60d938bc6e347cba7f8442d7743704e21b274c49247d0d401e6f8965184138c960cc3545469aad42033053f0a0fb825b8d4fe06360b006f4591d66fd0d95fecee8d5ad7eed5b83a18957c083dcea91097b445067e22dcf94cc61e98a484437ecec52d99a9b22466429e681ce9b8d552e7281711379bac32971d3f1c2320a884d2602bb5f52b2d6d270937d36e902f17bba684d3bb51dcad0bfb514c2f430b79e16e88d2f5e9d5d5218a268770fa774411e2100f46e7d89043405220c5b210625a3831b1513377a863417c0a821d12f8f71c5e87d248a8080af01c929718a4794e16a7a7eb6d753060aa6aade8c1045b852b0b6a213c287904be6913f9d538e3ea2fa43db966b05f3f15c5d703ee4124a1e5b4a50ccbeeba90ecbd684e5bfd4b8cdfd89095bb3a1d86b67246c8fd7521652566b66e7841a166d78639321b5eabb01f9defbbf178e37bbbea3fdf5c5adb0e760a7982dc196e63c830f12556e192da7a70fe88f3e55b73d53543305032b45975903b7498f79252c4a6125e2e7cf50b92820e0b959bab233416fe068720f76f2b74ad964f68d42b899991f70fb1cff4afd60d5b22e05902748887f33c97e2d461fd369053425e4d6d8a361c537dc83bfde298983fceab01a831d3185568df7dca0790ac791b5cc980a20d1b4da246f3d0d5bf60945d6779ecdad442bc4490fcd5284e4fdaa9b3ce6b3b7a70bda3ec7d61d3513e001bac76724d5d6cea7402a4f5ec804a3393548c11789bca03db52977c3fa4ed0a6263591ec41a511b226cb4c66948ad8b8daa1ae2e62caa16133400eb548bca1022cac40881a1fa2a7d1eaa87064654481618a7f807ce2dcb8792d1c106cc94fdb778205b4a8349059870db16d1778370b39dfc68a1a4c1788f73fa3bd8eb664e9c75a492adc3e441446e492d9ef3ef2544634e389c86c4fa30029df5937c82107da8c9b2866b65a0e4e0198931154ee16e5c06f92eb855dd36e582b82385260c1142da463114716117d5bd7f1c29239c4e5beba93446337f0d4c2b4120162fd8d1e70b794f06ce687d7df18aae7ad603503e88a647beb44f06fc52e1aa952a8a8a15389a4c7b369c5e94d8f138461132da20963ebc7c375ee6bb6e80b0029dff30b0e741a6d7e8d76dc65e5d8b77565ead5d7ccc658d7313180ae5f53cca2ea3eab53ae32972fab7af963f8db74ab2fb18c9fae9c2526f37a41581f7f3ea532cb98650adc820f2964eb4d213993e9fbee7169b0ee0a7af39bfb6db6746261bf66bee20e633a88f7dbc63d86cce0cd014f166710bd3c071b0ad15594e96a9601ad2bc43675619f206b2826244638087f73e5eee13e0ea94d9b6d1205f5d267631909a478d70a6a3bb97f7d54fe76e84f9e8c5f450f078b71a1cbc26d9129cf53d84dea13101a3c6369ae2699c9c2dfca6d531b556f54332ff0713f800d68c1324cb085b27e50a4f60d12bf0e13089752ae0bfb3266c47baef4f878cb7d8f67276f3aba37c73378eff79a864552ab8423a017279d6758ce223d2bc69bec484f748d264fedc9872fe39d04dcbcce43b1aa93b2009392546059b897937263c6b48f4ca4dc2dc8020c0fde3863be16c9cec211a4a58e3afaf87a6ca5ed841ed6a146313039fbec4945b225d8279acb018431a7f8738cad8108af6a11fb952e0853f8cd022422830d0fcdce3861ff6c109bccf0de35064ab57cb504328d7daf10fa5c9cd8fd3b398dc101ee3934887fda8efa9ec408c3af53ce96eb8611375ada855b914174f1b8628077fd3bcac89accff61e949dd7c3ee4818d281d65abc06fef3138b435a188448fb7454be70dcaab25d3502aa31552e7587c65e74e9e8e4bd996ae2f845b8dd457ddeaa94bb57a85575029c6d90079d1435f7f32477116e8d176039b8b3fd050b48fc76a233dfd4efcc5998014ea75758c7437b5549bdf6ab9d8b82936cba9be42a8fa4cebf7cebc2521dbe249a71585732b2e65874d70935245c1301ebe4afd58347280278d20b471e2664bbb94f752f2a0664b4994e671677165b58d33ac0595e9467082b3212e6fde3c44418593050f929bff15e8bff65b55218ad152b7b8d625501a0434ebca9bd8d00e49c47c3a18912146cd95607559c1dedb726f191bff8e42d618acc9d5448951c9bb77b5c635880779b71b588759c31b60c0c7a8c240da027d847347d5493ac35c03ffdd94034df0c57b607bbc0c70fdd0d11ed4eebb657cdee174c10a820863a0fedfceda9968fb2c6eb18674c0bce66de2a0ec4e45b4cecb21e3e16e58d39920c0ed3b4a86aa83a82374c3da6930f88df12580b5b51d88255064aa3a61313fb332bb1939e61d1309ab5ffc1b32e361682aa227b3d89905a0cfb726063ff784a95b564d73635b4db581db3b68f4e176569ae999a263d33758f7875a7fad288d354d8505bac50407eb19501536f1b471649990fb2f3d9c55afa5223cd295537277404a628506bf9baa1dbe7151f18239bc8dde566d85114ef7192fbd2ca6dc202e5f2e38f4b054cc08da67b041359f11079cbed28287f408ea93dbb22a0af7e4f65801ef163bc11f3abfd12b472a938b39884a2a45db62605c8a5e0f7c2fb8f48f1a08f4f90206b63a39ba8718223c05047b41f2b27ee769c99145086c5236d91354889d55d006fbff7c1263396eb6fc50d0d61e657d6ae46fcaa11da4a5e9bcea81438e1e4820bac6e89ac6d64084531f250e38d26bd4862486323c366a6fe88db4f60b629c5accf938b6f7ad91dd1295c87fa4a1e8e8514ead2d81b186de67e3c18a962be7e19aa84e1fcdc294fa0c322430039d017b0025139e780000a1699fc6a864833cf80856131515ce3fc3cc0e6c4c1a2d9778f33f2ce5bbadb9594d710d4c36ebc4982697b3c4335e36761545a207678819d84c8afa3c0883cd7776fe82ea6417a7048b1751de447a63ffcc0221abe842c5656fd65416eae14484a26c58f60f57b63bc8ac734a57a265755cca4777d60694ef013a42e9415e504cba9a0e8b3770c9fd34e97767100fd62f3d20933be517dc1db1665c139357c3b693b20411fc1a981c38a24220023cdd8ec7f1cf2808d8bd0201bedb054fb420e930008e09b9500f2d22b6a71b161d99c793df6defdd6d4b29934c49caf2033d040d04af99810d123a7623f7f18cdc287b2e3a1268730dc85a626169178b89358aaad755bddc7142d6ec2e7d62aba985bb03ea1898256a8df967b43b0a7b0784fa6aa660921756255342721dd50f154c1533a2323ac15713aa60eef3a2057b91f401a594d2faffff37d4d29cfa89755a3737b4e7a3c155856b07a4c217784d2ede64edd5eebd74829e6bc09b9916a6c72921add30a53b0763149c1e866396b3b20158ec19b9c3de74cc1349c58a6c15215a301ea5a9d63628cb2983a4a2d491981374b586636e00dd3cd98827949e18fb6c031054358bb6618bedae5aa97eaf54305537598069fb01613aac2174e8cbbf2f57cad212d23276e9ee0abadd876e27abed32946ffffffff71d057ab35a45d3fc1996f58e0cd967639c6016f46d7e1bca456ac05739d9863712352b900554b5cc7f10da8f28cdc33ca6e13aa5eae437b506ac1bae7b5a85eedf2142c25a47b501efe21cb84af108603eb1e2f1467f670d785220e1fb387591beb2ef1cdec611107e7076e81383120ce8fd671bcc956cd0cf7c099715eddc3c28e717e8833b358f89f15e2c4b27f286c3b20148e01e54f0bbc55be77a64ca733e51976f098e28d32d5f05a586cc172d70a5f59f5923b4e818a852968f2edc10fb754af0f66162968ca8e3f2cbb4efc10873365cfc25cc7310d93687948c152b11508cbafb35d79bd893b090d9824065bd898dfc2662c2cbb4c988a0151debb2c0f620a29bb988265c757f5ca8e6dabc2b26329d2587e1a9ace8c3e0893875705500409121421fdfda3df290ece8a3a6c53dcd8418adba953aec3db1dd0ec6a50ec14a821730d9979d8e93438573b201f3554f2ffd87d5671288b14e3587157896f7e1ad81a04da4b179dd2459dba1ff5985a5831020514503012a6e2eeea608d945216554985943b34cc1dc2bd2dc23c115de075a849348966d1f4a14d4d93a8a949bb5a927ab9d755e25edcaba8de1b4e22492b2d3aa2a847518fa249230229ffe79c1ede23b9738bf0a8e75ecc96ba47f7e87260fa50d93da22d7568dda94e5f03d242e83b153232ff4ebf85d0772a9aa0a151a9e83b154ea994ff4ebf53a0ef543cde4c98d55a4add25132ad770c7bc1537adb6d6264b48b9e3a15ca19d7c13cff0eb947e1335d9a4e4a494d202db4cd62db3e5c1874984941e2ef5d94fa97b7881d020d91215d90fd982be72f121d75a6b100735a9d623a6a090450a2c455ae818aedc40bdc8090fcd6e682cb8e0a24296232728f143d648ae08d95e9ca0c217a621c0e0d00588121a862b455a68ad9a0b24947044c989d20f293ef40b51e4fad41bb6a4196d1b95544aead6c7acefd3276c93352c0da9809abb7653fa79fba779ab12cf7ff9d4edbd336f1a5743ce076293dd43676f3de76fd5dd1d8bbfbdfb90ad7b5eb9235bb607af251b0f38011155c0888c50658a939ff6614b0156582af2040b4a68018403ed241f2004302c8270b942892d8eb2f46205901156e0f22232c24c6ec2844904463842861f3570b13202131f4c642ac48956e45cd20756681532908297227ac8320a135441848a20295051818666a08b1521aad0c00e58dc1dcfacb02b064f9765520c50fc151fa4861626245072a5891e4b78f0e1f5ffff1b14f18213425c71821524bd03576553fcbd5a7c1f34b321e3c0c6ad975ee9dc5ef1f485eacbdc1eff71b8d565afad5f6bb5f72b7767ad6f73244d199fe860434e92d6214320861ebe2c61c40f234fe4b074aba71ceeee396477a7965a3a89dcdddd9dbabd56b35466b417920dcd6e0c05c1610aab6942d01cb31da38e1d5338e9fcbea2a00266034fbc20e4b544abf506c96143d739663b461d3b7a5841660a8d43b31b435aaddd09c674448c893058809882c349d34aa0548a182158c95f86d1ca5dcbe36ea3870b52c3029519145dba0c59f2e3376457a286ec494cc97ebb2842229a8452add543707777a7d45eebeeeeee4efdca48e0aad5e2fba0990d190736b4b8a0d6d6bff5bdd65bef4d92f90e1a6dc838b0f131ea0da9076efd7a9138e27e6e48fcbdf74f219c6aadf6adabba90e081ba2b74c5f0b24c424206248e540f40512bc90960e105239e7c0162c43499c86d43b655846802f3824511588c8cb6babb3791dd5d61bdee46b3ec27777737da92bd333262f54448535665f92485209708756badb54f374bdf82a94c946c273ba40623d5539050d89ad26aadb6da7aebb55a7dcdbea669f6ebd77bad66ab56abea5acdd619ed83c8a860adda6aab766db5d66a5ae742e3d0ecc6d07d4dd102660360a4840043164d430f5aad170c0faace31db31ead8a1d51aa3da2234da14b25aad2efb9aed4e147625894cc9094d3830836c06d914d9167cb29ad5ecbd5aa8bda0049907cb365ff8e4952cb19cc11c1296378f4b886a6190fcd0ec8666bfda1af336c76cc7a8e3c63061079127aee8f1c391212eb451121639e43042ed8f43b31b431bd068d0cc868c031b5f83ea1329404eb6ca6cad26c8a0047d5a6f0c97eb495218d4b70563f88841e929cb27495e8852619264e9c41114967ca049ecc8470624125ba24c91c50d4e188d2dc31055c4aa48f281a9b4a1ee957be55ef9bc49c52673c40d96bb5d73d67ce5136f9678a34ea90732f14dec1d8d9b27c0655faa5862d1999a12c9295bca534aea438973f8372cddc767de24bdc92a7993e5aaf8d2c4a799b63977c1f9e33a2e70665f729f6e3a9d7ae28e0d4679b85b1d664b23d39c93d33c2da58d4c4a474b47126976bb53fa967eb5df49ebb49cefd364b495e642a341b564aeb64dd6c435e75a5a075f26be8d72d3252a26cbfd212a9662b215b458dae994dd6f3d9147b64b4b757633f419934fb44b33f7917629b7cd228f7cdbd554b564fe0ceea38feea37b77b955e6179923eaccb2cf96917cd5b09c69ccd29ba6cc6410beba756796edfaf77f570544b99bb99d5fca9d1829039cdc06be167ef8c91dea9cfb7c933e9dd64a79b5df28e57ceb3cceeb38cfc72c61d8f7acd08a6845b422def4b8628dc8e74ddef4b2894e2a5290f20c9ec11b52767c99dc07f5f4e53e2edc47853ff7a1f8f1e33b7b66f0636ef6c8e07f3c25062cfc98ce1e1afca1f865d60ae54df9be588ec12c16a6427cdf0c6681df01d1d08037cf801e38538ec1b28b71a1f218970989d4cca556f433cd1be56240cf43ec12a6015de6557ca9850fbb2c069cf98469403b03ca8076d62ec7d4710a742617be214b3786c6c533fcb34b4b1fd08d728e35a7b1587e1acb5febcd8d67f48694258c3f61d9a48c2fa787c33a6eeeb048f327727966b06129baf6e113f8d98aefc3137378fb0e880b2df83eeec3fe75289ab776fb7e023b7b17e56da7ea8128d4b6610f6f5a07f4c99d1819e244852759819b391953c3b5e6d9d1d0f0e319ae21202727a7ab50d07677b124776879641b3eb85aad6405ed6a6c83bd3a0a0b0a4bf7d82472055d2b1b03fc05921b8b0690d39dd258f6b08319a2664066889ac99da6f2757f2e967c931a1a54892b95f476e3504a39f371176f169456524a6528716bb3e6b0f57c52d3342d14350d6bda5cf59ddd639332e654c222f9709e18ffb403e4cb505e4aaff7edd0a594f263dbb67df9facbf75fb939e7fc321be3f026797798b2630998fc38ac2cc3e0e06d5728ad68456e43faa22ffaf2c0bf953b77ede8c5999cc99972c4af53f8ba3b63ec36927be3e9eeee6efbdddddddddf7587936dcb636b1419aaf15cc053c105f781fc2321b2c1c9155074e0924427d1108415f6eb3f142b1ffdffff0ddec7ff6791ff9f562da8ffff792c1429545608696876e3a180a9b4ffff4b50bd10d2d0ecc6b7509418642a0d67b6ffffff69158a72e4b9501421b6762b24254a12de358876109db9d00c1f9ac999498902453e655122d91cf5c740c21112ba84408671878e3236a13984e88e510a1052e4cc822e3b64a2aecd5a22862d4582087304899f86427f5cb4b9115cc88d67f0ca456456d03d7472972885dc73df88ed680545c946a598c78604275ac81d66c12227cb122eb2004193650655161452597a7458bcb0b24c7a024a57e4c9972f59a070824b0b590cf124c782d8b79eaf76e0d84e8a6f0566a65883291f520309e124c50cd96699240594950dd2925a566bad449b93da43db419bd5041b1005c241bdbba72cda36ada8c812dd2ab68756744377a19286a713b6d926b95bdc2dee163673cb2462f4309f8d76390e6a97bbe496ecf88299cb710c1cdd237423880367b9bb66becb8d2d02a42082689a22840b45b00043094c826822bf0bf9ca13a4c50487294c82c0c00923f8a140e830c4dde5feb69e2002ea49f03e355961178ec143806ac208b297659209586c10418088e2c4093f94bc20c2081d08e187cc43071f56b0143d2165163da3673408cda3f62b715a7c7641be148601fd23af9d49cb9445fa12e94ba4af0bbbb0fea9227c620e4ce6b46b760de81f5f721d0f1bdb99fbc89f31f70ddf9cad29f926ee964e826d93589c58aef0d520c0c31dee78745c05eaf086da2847c10ecf8e06f8810e9aa5dca136e499678e61489659e6235b322bcb274d667973cef3b0178a1eee308fbc79a05843e61c8d1d7bd0d8b70e1469ccec751e9e5ef75e0d0fa43173876b6d0e04a2b8d6c895879f4e27aece13e40745107ae427ca76032f961398d9da9fed69a19c32ee94c1a39bf5884d56c033e79c1d3c9ee0872205016901143b9ee1ffdd18e038ee128db01e23486928d62e1dec07186c1cc712f490527e1f055a9db07841f60164d7c90efa605676cfdd7df5d5f0fd0632612adca0eb100d5772c75912c814cfef8056431ff8cde04081dc97c3032fa7a303e90edfe80532c5931e6082220f200f34f8566fe7ec40d040834c43da5922f4455ff4d5dedddddddd5d4477777777777777777777777777777777777777777777777777777777b76f48317f621a22357b89f1636ac47d40fcd8995e609ca5c7d77d6ef0e39e1978e394d1f85b30585b0bb4f906f4718331807f28c0300020de1c62f1cb5b0c4628f2c830308b855ba07801586e611b50f4318f36987ae06361d1731bb006cb0e0137a01218e1774035ac9b6f40251ef8985b188334065223ae333100c099e406fb0d05a1128b941386a1f8fd5824f7d9686aaec12c96ed8058a1055f8bd5aa0193e7e83eafcfd40596726ece6d43da8b910cacc82d480c48e0db0a56f466c47de6096f95db621203e9a3dc99f8e7c5f4c6ee618181816bb0e7c56baa3028d7026b96412d4119794d28a29e99718b14621b1b1b9bd0ba171b9b70c246e9e09f6e0ba4b906f411e948e9050e6ddab4564a49066e31701bd23aa237d291cbc1ab9916d8f906f4d175bce93b5a829452526d31590cd68e50a2a62e860bdb5410dc30b82181a917e016731dd7f1bc392caebc11f6893ec6684a263168e1c6de285aec35750f0b37de5a600d995b1d162d9233c99d89b70d490bdbe01abc0de99e1adc7833d23d2ddc78f33aa09ad082af856774cdcc36ad50660afbbc1a6fec1ef9a1708b8567380b9479058aa8ec22fc60aa446f44f246d4a6941bc7802e6fbc59dc625bccf3c69895599995a5661687884dcac8727bb073051ffbfcf9d9e65a2758adc4312b1b9cb3d19c95839eab73fe759e9345abfb9cb8abef390e4e6e3b71279b83d397a257f124a8803577a7f06b57cf7cc8814ff3fb8c03dd2e757d722a79624f42cae0c0f9d48649b490621a4ab9934f2ef32525bff20e5f2cceb8dc25061590a9f9769c169fccdc8a27cfcc6d2b0bfa690542935ea844eef8e4a853332408000a73160000180c0a8744e27018c9915817e60e14000d668e3a626034140763711407511c04411003300cc020080320c618c498928c2501809f532c22ed98c42dbd9cf72832492a21ae36d54a3de1b71a18ea799fd8d367198386031bdc903ba76743232ab6a39edd652252d22ef6e55f46542d911e87be325618581b02f108a28b3fd91c36fcb89b77c261fea6c24948f14421155ea86a77ea6ed1d6d1144116148338be152dc798d92b900f597dd4f7a3a8ad51ab1e81411bb78fc26b71bc44fa54bccdd011a5ad4d387548971d345117bcbe0b3b64e817f663e7eaae748cbcbe4f520236e4e925c1914bcc96cd71788a7005e862cb22121602c81654d3be54687354c061be31a08f8a847a7fbcef0aaf138c6653c833d2eb08a8d8ac04815f656b8759fcb51c4f969edf15f51064726b4c3d7dcfa98f86b408ec4ec427267f6e29a9462c30515e3ee57483762be8a7f7d196539183d6bdfeab4d9778472eb4c2b61f2c48348e544c61c6653b607c6244a959508a032ccc0c84272dcd53b94928f98949da5687b97c0a7624d3cd82d52e88bb419a020557b14dc036ed68c7aa61eb84b1c9ef57d7d5b897f7049073604eab07760841cb2d159aa73bdb79b2d2c450634e24a3177b50f5ce667a2549492503705ef39a948df1d6b3f9e13f3c14ef78c7f7ab1e6ffa5177782e1a8921481a2e453d44c9fb05e12aa1a9aa8feff80ac7bc9a9343236f55dd8501a02c083947f71b0af14c894a547ba67c2474d1c449de027618962391448619564ccd8e2672f9be2a6951dba9f019afca26f3a53305832ed255ce9600d2247339489ea36b4538d094845df856a1e04f40bfee172e266001227464ca002bf7c02d57170a0e10b985e09d4e76b096f6a5d3989484a1a2ff42136630436085ed65dccbd4780bf2c071620c22428345c7911e819f42ca7c8a0787c27060c863bd7d192f51e041bb6c69c1281109c50c31bb441e2df1f36977c84927f773741e4ee9e121a2bb02f0549b701f1bbbede6536f99d877a76c3d42eed9e14daa7304b68f420f285d9e6eefe86afff35cde017098e5df820869f9ee684778909d56c044e6ba08c0fc2600b52a711b25e05bc4eec2ebf45a7a091e36c12a7720cfb9989d749ebbfdd35a11cad504c2a7cb5e3bf703e4c3791b2a53cead7ea6fc84b4d306b50426b06cc3b184e6fe87716dc80adc20a2467396eda7a776b90838381ce6766821db9140b163dc3938d45d3e67f886da898b2ac6729cf719a13258d9615d883966c2fd934ae08326b2893151dca0927b87570db64cc3a2df89d0b0857cadd133e98c263fd1e7e6cf468a15af5663a4b88a99387912e4ae2160393e9e4024c4e78b463de1918495debfb3e47e2309c28d0e8ab56b584aaa659c0fabee5099d4e3f293b1801d5a520d8cb7e60161dcab2a80b2524cbf2d4d2fac626d9d2d5cac00c257a5e04eebd4de1e64b8b94ad54d3bfe82c9c0f5f585363001f99a35dac948c85da897e775fafaf35d0e729686f3f232b0431e2052c5e55456ce48f522f3c12da12906a12353869c9f56a4ed5b7c9720bc888856bf0bc234268332039a754f6973a27850142768eebeda5fa28b72abfe3664cad3e6365e89965f202d3622545969de618c50432093e35344c130d77e4e6343a328ae1101e40d75ceaf8004b68c2b5d278874d45de97256f130db3bd82ad6b086f6a9064d05ca7f61e4c052364cc1c62a23b984cfdf04ff2ce8b5d2f9b2a48182910c75e636631c60b945d11b59e4cdba01d83275a25cc698832cf4ebe91128569898e878f9fb1e6511b5294c43704a60101a63617c1b03adaed4dec7f26c10561b76698230609ba1441b7e0e54a9bd84ed57349d23b1314cb5bceaca61af18f6da52d5769f0f94cc5ad76bd0bb7f86297c23ebb3b8d26063c932f2c0b1d86fa2bb9e98ddb2d8b9b2ee41493a19ae9e1cfc8538b02376c4c111c68e0a492eeaa3f9e91cdc1374d5cfa18246b6d26b97338b34c71d92edc9b175e7ebe7e2d452442bfc0471e00c9b37ceaca5e02fd9680fbb9484a616bf5f67c575b9f54e16bcd66553ee2c41d677531f6c05a11eef7e3db43b25cba5276c8bd21e5d6defe21b99b01756059d9cc2683e8756f4e37bd5efc34d9ffc1a31a2c519b5a85d953e921f46371777f658c36b30935db268e35c8143c4bdad5a8f506dc0152f7f5bbc017f6fbe326827e962e8099f18ed04c3b5a040fd8ef421aeab27e612c780adcd40e3ed89283fe053618db3a6512d5f1eb77e4295955d26e1629630c45da9db5a037e4834aa426025d5d0634453fdfd6f195e586b846563a0d14e5c548024668390e13b2155fd54f77f8fbcb5fbe7f0cb995905af475f055733c3f3e07437bdbd014ca0e206a474eaecb87aaae177c6c40553ce20862502ecb3d72330501744a1f6041fa8d6eca59c6849d333ca1b67027482809ce6609422775a97588e7e75d1359dbed31ee3ea71af85229086bf8ce599166c49d0d6811c612a3ac36cde4d659f6c37eaa2c067e18c39dee8ba4f3465cb034327776808e12ba42130ab8e4243e76124cd5256124d49196d1b3aabe490062a843a808eefd0f9d20be808d8d86a345e6fe1a39db0141a7f0944d37245d9960f56f87e9af303cb2a1f09cd5a44171007efec62ffb85d52bc189d863a1ad77ed1c869ed0d030b357fb284ed1f5a9b31314f7ee239d21184d70b89a5b87e7dbae505fadab3065428a1983b65b8af2fd335feef85a84be4195379e8c892207192a71cd400af48c5e691c25d6187bef8c4e1b16a2a2e5a01bd3955b6215d7fd9f8a79688cf2c0d790f10a11548e3e9493a468adf507453b7ff696db6879c9872df8f4b0f11b9fbbd4a96f84f4836f8a402dff0dc65087d69bca5cf1b39dc5d4893b98a45078dcfd42f156ff1410c7f8a914d8b0c8d393bfd2affe6857323473fbdcc20ca8543a23e89c7d856591d202800e18026a38c1b454cc0a0574fc78b14fc172a35364e58909e96329c9aa5bf57ac0431f4655af13870c06de270c5a58c8035a4072d9b061ad8bedfe6cec778cbd1a31caea8e070f86f6dfdb75daba35672b5e25fe70aeff3cd472ef2a4b42d73768ad85c4d249ad47d125fc7e77b61f09cbbe89d968e8b76a9531b62068c0a79b233e3ff7ef6b17485e00f67dfa2b77d5b50a6e5e64d2a98d45043eae61f23a4b0c25efbd68e0a9e1ecf9b2c90a228f4b377e4ace80a3d71eabfb27b4d889c58e516049c1427ee51f68374ee4d1ea6671326b15dc91e93952d622fba04787577a6eb61342dfee86227d877698330011442df1e7e4de8be9ec76d90306eba74826a1fce43e51605f0ecd89c2547c59ea8b710c65595732c94b069b7589b4fa9c8525648bf34cd0caab2254a06b687b12469eab02773d94f4260938565492f03925ab102d8a4dd2eec014b1c42a51092baed64093e8563ca29985738f871ca1a4612a937b08937e0158d4950420b0f65b220dbaf8c796d67f5647bf2d0b0b4c361b98481f349cf0298c5de1d4e4fce285fd4d03197c401fd7383caddc725b78fe6c3751040e0f823ac24417a1c0972e1c600e0aa0aa9876fcb6874075f618b88928b2ca41d402bf08a215ddafede24b52771d688c5b6790ef724878b0dd1cd22904407c9a76bd433624e155c1865b6ee9069c18fcd78ae89169e800460b05cf9bcd83918201cb8ad2e838cfdc9d4b6cca7102f4d6308371e87b973cef6b28298090012cd99f7cc859ed7cbb36cbd6957b662e13616936d9336cdefe05b5bef74c752471547b8d41096dfc3b7f6decd03d16652b1448d9c3e87657bb9bec8f154d42de5c124a46f9dfa1aa92b60962f434e4ec41e3f71b1830f8f44c18e1b842e89f93f191643120def96efe052c01a07045f47de80bfe225a49520b5dbb3b04d9399d296ae7bed60b43102e29541bbcf78f0e2f8b0ec79e937b6108fb927cdd08633daf4454517eaf480824eafce8bd705ba468d59af3c80db7b135542f64f57c334b35d4bcdfbb350a23d217061d3b48cc85747f0b5f5026c51e02865df362d753b64f9444275d5ee4fde76cdff50c6ee03d38977495fa722b04d3c72ae63aa2851bfcee13116c66cd0006705a18db6d21b8c3e7347ba7ddf7afe516527eb2e29523fa3b5d83d9cd2b7b9a595ecc3f82ce65581c5bfa65f2143204dacb6fcff3086908f552a3af5c52b258a96a948c8ef6408221b1b103d331ff940fd143f4c117e18c9d21d83f36c7f796823e80920e4286300c78782081bb293b53c77f58bf3b783b5348fb399a27009696fa5e71faff63f9b5ac3a962696dabe0861dec1e7f2bfa4a23200c9f448deba622feef2bb934530baea9b8433bd64b74433c77766944a24c8296ebbcbdce871d7a906b0628ae112bf111c36a9496a56951d70ad36c476ccbde11decfc279fb7d06d391f9c7e9b0720656aad55e3a039a8f509fde9f4cd8ce73223146674b899edcb042dfb11f80a4a186c61430fa1cd2f0e94c36010b67fa65ee0948c0f80ecb77495dcc55f1bdb74857e5f94477dc6ae71383dde626a6777d18d6e71dfcbbdeb5517ac1bcd1cd10f7b5de9ff84ee395b88c87c2f2009f735d9b6ca7616a7d8a34830c627bd7c3a929cfff288a281c443733620deb52e7e466c3e57e22e772870cfc340673e0033a2f7535e3f9285065c9ed461b7ddbc8f9da2ba2afe2b76366b1827edda609b1f2ace229e4b6501662a7e9282a839c343ff3c8abe5f477281e606aefe7f1be2bc52b63f57c963fa911ed9f75cdb15ae3111b5d80ac0e69f9e9b57a619a198b748b547f82a6364c22b5d0803c4313df3a8ebf1aa198d86b9357cae717fb1bf7678aeb23d3c9a4710742f79816f12e5e60bc5d164197f72f63ab6dbe1b8d2210557c09c383ae65ce7e57ca2c4a3eda665c1546ba5f43a1e30e90cc326db262ad3ea4c6d122c0ac45209359098a572f9ca07f14c39bedcd65d0beaf1581979207e21f87346e887d1256432d2a0b135a1698ead19fbaaa353a959b9e6e47e0f6dfd8a8348c696b5e89627a4b4d00c904cee577db7715da378f4168a4f1ee1718e1174605fcd90a6ef9d7924c9e15edb99b4369f95173fb7b4832b1c7a1491d892791a0ce929e92868df5d894d7e18f95c6730e37ba0e289b1619586e16e452ad460f8dedce20e80531aaa4a940fac27d0f9b691c8730195b01c9a222874b73576dd87ad5495c5a02b3e2a82e2e0d2153ecbb69c5c3e661f49709c07cbeefe190f9934e5f75f9ed382fac45f62288085c00822065a6b4ad1f733e16ae53883f088408619f3ab7d339a75083a8e26d11b736f4d3149d26f41f85c6629480a044e845400034d166a747034fbd97463119b4864d749fa015fc02ba7ad9cf12df7cadd4fe6c556b365e29a09bcebd42a3a404f8730efbc98f474e29b6de3586705bdb1f9e6a8c150736e6fe8d2c55e844783f7644730e3ad187c0457a1fecbf033cdc54fc48053c3ee710d2d06262788c3281024ffde666b03066f1194c0a186ce5d42f05b4f7a9ffdf4a322d6428db260ea1ae5bc6cb4e478a8403a241448903cb239dea0a39d90cd9ffe74bf5a7a21b212e6db374cd8caffafbf0978821f9002b0f8783e9219f68bfced13cc61378dc4776b449b1b8445ee39865781680050121aaff790628d55d640e7b6027a5cf33dd133b14d9b494eb95a47be0993410036a2cd3a3b6b6360e1f702a7bbd9b4e0aa98f8d65bbcab6df5c37d66e9445d8aa9c6895525858a5a48a79e632d763fb4ce37c873a60a27e15f40b8a76485711d5ea28ac6d310593cbe64fbbd6b43de928b25395fea23feff5ee9e6dc9710161c9c13bb04e6af2b82217590cae6fc5ac5aae0273a3005ab7e22a341d17bec00898c4dbc8d285f0872e69eb978ad12555af9b424373c17f417fbb06b921e66326d7cb9619ab22223e74eacb8d159099674f5522aa17cd0239018fa39e7cea24b7ee8dd3574b003b30d8f5ca82197c6b33fe4f9aef226b0b19ea0e760c83280968051a19a0842424a47a615d3aea1a32a05f4d092eee3a54cc151849ec70492e1e3fa2dc0d568b4d2b0efdd185122c594582f979a6929c53f137f9ab37b050c06c6eab8b432579282a1166a61f61a64cc22eab8318d1f9aa14190fca282d5df0710ccadb07b027efe4f39a4f5abce9b8320679081ef7883c4360747629961982a05784aca7cbf86d8b700e5384225f6f84b6f4577b4ad2329934333ebab00a8eb6a5490922fdcfc80b5b0e9b4e1b279dd2c8dd477929b9f91a67f78d41630687b37c2f786ee9cae144e19c9a83ddcd468463b4a2c96379bcd971d70feaa8974c4ae102bfd85a988f53e19e0bb999658ed9ba3be932fe3fe41cdd143fe109f6e5afcda2eea2e7570dc58d20af6ddbc2c7150c3ad991c22af4c7e5127bd01691d67c8b3340793ffab30ef63ca658e914f666d3014a53f719e269a236032836a6e41078149942b0e7036678f5cb9b01032adbf23aad3e30f2ea8af194204dbfc7364fe8757e567cb3cd6c9d388e8bbba926a6740efb4e44eee4f4a26413ca435ab9e3da13914d39cf4cd3f4a8b13b1c815f891f9fd4b704e98a9d4d1681f6763a68d9fd229f890f85eab242f6e549472dd06f21997123082a93e45ee674002acd6aff930a44279003c52d6402378ea1628d287e5199e4c3a5bad0c3515c12183782ace0d14bc6d42386ca82407221ab22ead08010aefd152a96734b7910f950fec63601003e438928e3a9d42afd9b0ff9c49223a627d6c99b7e316507e7d3fea41d6b25496419b3b593e44f33377c1ff986eb588ac5067f2f945aa3411a84b9238544fbacc1ec370f1f7e050c256b305b39392bdbeb090fac023c2d1f658784254099206c0b036f07c5b0f559d1c7e1d84b227fbd3ea0d606940c965c75e8ed3bf904964221fa650f95489616d33e758db3c9de842ed2ca508462d91b98fbde3f010f56a2fd5ebc43903a4c183cf3c6c86224f7157830f40d25790de873150f34d9cdfc81f4fe77fcfca62f3cab6f4ac5e34efd91e7e26e05fc60aeb02052a28a267c07d12dbf8b126de9aed868824d0b6ede16269c55b5c5721eed65b5577c8e23ee165000025ab5b0984857026831411c6b5a014d8a8c00684f1cc0cefe0d7bc5ce9de9f917ed572b01e1d57c6d45545775c63182a57677c691ccb8464fac96f1fd76889aee0888196180ab1214c12103c022415782c362eedda8627ea2d38814b3d2fba6dc4e93546dd0dccd8348e80a4a2132f63281a762393392679cb86f3896949d28b91ad923a008b825d562c941ee442e3692a09f114077005adc5e4e1dbc17df507bcebe9d0d036255950718ae85224821d75163ea224546ed14af4f5fb71b26e50e56754d763a9154caa41b87cd6eebe63d633a52b6998f59e7897a0a5f2a824373557390b8c9436eb113769ee5266728236f9387f735cc4e4b48eca13ab799606cf2c59a84e37d510ffd770b7d9a3c5f34a932aa571c05e2a53a14592b4e2651163a6eafcc84dbfab3274dcb29085d2b1f2e5bbc08205d98042934b891a924131d36013353f97061e169d14a3da9973d49849e4e3f1584c45c13416cf1f1bb1fdb1f437027869c078b561fadccd40f55b8a2e1bad149cbe77756bac2f978760c11a12a5d61865f9d29a68834c4cce4137889955547820b59929703333976b6aeeca7d557ccbbb504e9e659802b26e5bf2c805bb9eae81d7c531aa868e1393d21259d29ee9f02948af4cadf27debcef93bb404c762c56c411559dc55c21c44667315f46ea72164658de64ec1cf409f0f2489b30830e8f38ddaf447b5c018ac363017ad224718ce995d3a4156ac192551cea938ceb3d3305db1a89a285a42802bee72744b03cdd48a408b4fdaac7fe3d6470f09bc612c301815ae01820d533d107785832fae1444241f2af4bc364afdda131907dcc940be57dde466f03fa72430f765af8a80c74268e31c010d428da5d624aa7f1e4962aadb21c2b53bb2ddccf04598f94036a2cfa1e5bd7808c96d5556f57b6901fd4689555c486a5139cb707879e3fb79f428d1ab69ae7a88d81c64b55c4eba0394d2d640fc5162961b68e5c648cb4d3bc4977ab292c62fdfb84de5e451473c00cb113ee686bcc6ccbe79da04833db198289bc9e79b4ae0de45f951d3fb4b890c124f3f7916a21a6cba73b8b41532e1d50bc8bb6c39660d562e0257848c0df95ce8c7490bc9fbf01a84ee9816dcab77a8579608249138aa49270f9718089f98fd9cac94fe38403064e1db520795a84b3a9cb1145d55e6138509b863cae9ea84cb543311bcba1b3bf7e226da58070a24c0e3bdf367a1dc244dd8e838b6c41088a3c00ce530544767d3907045253400419961cb662db161d6d95ffc10229bc9c1cd3efb5edaf78eeeaafbff59c71a50c95d2e5e7cefdd03721b0089c7e9003d0501cbdadae417494f4ea4ee32be34a0186750ac4e564726f5b684b2778e971540447fd22982172dd5f25dfaf1b26ea0b7075c917c8fb4bc1be35c92ac36a9b9873517476576eeebbb5138e55a2584323e22a1a7657615349fc9d5dbd782141f965285249fa643492ac11c26715fb806eb214e50bb7701c13d1f35409c054115cc8a2063d41325db9e4f7a48f3044f7c2077a693a51c62a1485d8eab912a602beb7d93038541884aca187c0b04cd4d26176d8dd45858a548843c5b5c1ff8ab93139a9081ca253a878d55521cdde670fa068cc230a5943fd0bbd9f2f275f9324dcc42145df7ddf7c103210561786a7ec460c5e367d81c4a5d90bb171eb1db48a46601490d055240c3b11cd62f4d90c24c0c6da90550c0d8a823cc251fcdda854678d0c50dfa1ea6a331050eba8aaca17989c88c0f62e4cd818c43c697426b7a8af8692fb8c46159673326a0d567000c419a3d043d05192c22561009eef8f2baf8ecc002583a122384cd2ce72059efb309938ff393d1152a58317ec16cb2967bbdd1d0ad7932d383c599852c818cca3c60a999359f052a8245b269ac1f7b534a8a2893362aa0f937b6d32c51dc6aed95843da13d3ab1c3baea292e55d06d9d34a7593e60586c4dc68376168331152c3ad7e77c9a672bacab274713d0e6b46ee598cbd45b21afd9b343683a2b9721b91a90dfc8078cc72cfae792d70241952f255c826fa9cd403bf034740388c63c01c5b85668b26404387681ae4e2935a156cd28ae69a78cddadb7c0d91d5e0ffe203138028ba39f28a613783fb6295d33d0bff39f692f42829b0e725b6559119dbe0a9f91ba72754d213b350455ec40dbae5935c45a9b37d96e4a9dd4a902efb121f4f99c44bd0242f97178422d95d027d83c8416eda4c63c7069b09588e872be6d2568c4a562936816f6c30634c45b1078d15ee7513d9b1adee2e98e998ef5f39039431feb9f07e8d8f677a04641c5ac0f217ce02d4b18adcc44b3c7c1c6b8d044db25a457b8e28b483493287848b7213dc2905e6d146a7136a26a80df9563a60328b3bc3bfc75b172c96bf104ee18ee4b240df84d421fd59a2448eaf008ea0b4d590152425937f9e8f79a00c304569dd605e1904a7724bfaf21181933ed44d3a29ae816cef363101ecd773a47ffb3ff321a4a0e8754a4c5795189cde1996057e93527a034b17a825c16228f569a9b498b2f789632f3780ef06a83389132be6679421bed67bd49908c731c32e5ba0bd7c124db7e2e8919a95a98de9ece8b4c1339ef5e5c1c24a7663924d6270daa1f0be1790bab9b30ce309690220f0811833376f9b9b2af1a67edb7a5b84ed25c4920c6a046b1b28e0764de7eb121a5275eb285e25a58121549ec6ad58015f97a79925711a669a7cc7ff59ca627e7426b1cc9bfce9df49525b1d848128da3c0257a3fdb1783856c41823950cd0451e3d73004e2799cee3673c55743b8c3a98e13aed0cec71748c3b58d881062819401da330658b3e3298ed9056c6dbc7d98b25b1b374d81164d20bc6960c2efff0c0bfefe9c020622c1ca60984d2d3614f346f751dc6d0ec75c8c3a39ae41ba033eb2fa67b7ccec2977fb2e4a48fa2ede0be9c1ebf80877cddc12b3b9c0c38ec877b69202f1ca3caf8ae47fcc37d37e6e7b41448e5bf15f078868f80abe84d41eb7cc1012ff650c2a347487b74dbbe8bb10b571660da01f14205d8af2770a57a3d1257a4ce1015c01b4d17a10c54ed2ad2d10e39019e4843aa2c154c3eb90e8dab231625abcf93ff86274e6827da4e81331f527761e5ea4ea250f647b18950122dc1cd13c9b8f52a44d815f68f3ed1e2b89d5c5116f2db42048dbc8baadc7a33de64e4842de653b05b798e9d907d632d7f88eb624d25f96799b2a1280339bb5c39f2fab7ff7384125d4337295a35be0ee037340f41dff4e86193b258fe925052166d6e000281c56ab391f1fbc5c81a9e23fc98e2bd45dde559ce203a96d946dc0f44827e415002d1e18881ab53515ad0f8008a717484926acb830f408e1af5cae3ab3d84d9c95f2d30258cc88e44127b6c0277ca33a20c36721327fc3fd23a31e42478c27195c88e9bfb19bd9543cf201e8b28a16b8f58066b986f05e139c34e371698c4b09a57346e91e217411e926706f4e444ae75cee583faf671a000b39d3fb426b9ca110fa587651972cb073917d16673c85052280fce8c73776f8d2ad250a62d21b99a465ea8172037627c289403aaf4933442d17a98c3e2f9b534af8c04916eaa1d2d5f4b402482c478c80895841cef2fbf8d5492497e6b6e3904aa9e7865f163db824e35cc73a056d74056dd419713b4c23c5f03ba78a853d35c37596f1b814adee969c2d7e348c0e966645c7a2fbca63a3cb4f72ac92c7f3d438501e7162ec2a188ec7cd16a109646d7866196a594f837fe8173b90f0a1b422cd0530dab9cf8555c2f5005fa066c01cf3eb9b5ed88a0f15bdd6ee520c600c6057126da43af8d80e576966a5b607a09c47934a03ab767787f83af59575fb1834e90e2b2074bc2c9b03276a0ac0cd14d1883676aa3a9db7a86c9ec9ce68bffd00f4740cd7f3e7481e2cfbe16cd0964d0fb7b863932bdb2fcdaf558d88a1bbce202e012e3bc22115cd0a15aa3e0c54f93aaec8506ccf58ed90a011dc9d0e2eb7fad8a438e3f220416dbb1cb062aa0eb56a647fc6f7817ec8ef8683a8364d8f2c243b6163803eaaec701c415de6bf3fc972c05fce5c6c315e6f67089799cba75f470c56eae2a2dd30462d4ad281ef190e1a29ac2e04a1678d7521dd75b833babf180c853da0cbb3628160f5dfbb37df47baf1578cfb461ffae877536c7cfb71c3a0095cd64130d3f93a5c4595afcfef6938c94740ccd55d234822039d2b5b28d91de472ea8a933f5155154d26371e352e538713d059bc3fd98b4cdf1f55c6aa955b705775ca3baa896853bb57469e69f2ba0b26ecc5e8366025d21eb186df09d7b6f82fde63485c822fbc3710e01f6e49792800ca658203f5c1d405eb23d2566ea17470ab719a73ca64a9f5c81b8226351fbbde6c03aa737e4529516cd7ca35de2d8f73b97d529d939e381c466abb390a1d3b5b2b09701f8e264df8f76341cf1adf60c14e4cfbdd8951a2ff3c5cad02c65d798b164461fc10fa0aa4e68ec1d28cf7a28d3faf1938a4a04fcd343d37778522f71b07f67506b17644775828dd86aec3e19333364ae918a378368a19aba5f58c4109717e11c49ec72e1747345222dbf6d648f7bbfd7275362d3d9742289b0c299154f6313c2cac42279e0f09ea53ea09c0d760ab3700d0fb461a08e039aa42a9add33edd735c18054e4f93167356d7188bb1bb1c10a384d7a829705f701d06065d3ef6c870c56a7e420ff753d18acb65cb0f2e25e0add5d9e0a56fa285859b4d026ad478860854b31e4060856b8a42ac713bf2134c8c3c04ae87e819513625429b03221d1bc1580771489e6810081152845ea0175c00a580df55faf02e5413da38e0a585c08be3e277b9969f064e5a473a2f2688f5b8668f6f83b184401aba51303e606d6328085a9787a91c53b6915902ccd0b840156739d002b8f90a6248b5859d04118959f840056833e0180d5a342f85f25f4f25f2565d8306182b570327bebc34378156918d2e7123675b4e913ce15de4887491749cc60b891e63e93a8d3646de2a735b2cdfcb7c962ff7955bb08166b6b7e45c152b7a2aa0fdec31e0a53714e56d842a2a295db22384536f46d5111e9fe36be4091ce76e191ec0eb66c2696b1bb78679ad1da10703716f977c81dadc11c5bb4f84385d59bb3d8a63c0bfaf1ee48fe80d32b4696e0a7df357dbae9d5bccd791e0cdf820394686b38b62692da7b8fafdac5ac00542309ae237bd5ab78f446a8fb61237834de5c6a988f7ed4a615369431ff828176dd887c6a25f6b9c0724a66927bb25827c4161868182ce1424918e7d23de3423c021ed14d103237a4c1fe958b0ed721f289c632efa30d63a34c9722be32c60a66e62e16ac2f24cdeb19924a629c14067f8f82a8f6ce015a5bdb135ea535739c1a30e1853745deea6edd3e6462301b5a617691ee44244d653d99d9477f66303db5671c3987c0a012a9a57eb8a88f70bef116d6b8cc8a56c1f4c10b3b15d88dc081fb86722c8ea95e3ddb71467ce8ed9d56a2980f47d358b99c9e7b019f5bbb99416c4cdf120955ed8c30ab0b90f34e1f14d1b67e7db0e37e897e525473622a0da4573398b7190386569b7bb21b3eaeaed7956781fd1ca75a800e19939022d423ec3ebdcc96d778075c7c196dbe849256f930e1dc3a9837fa1d501b20719908f16ff3e1c16d1b3c70dd5fa6aba830a7e775ac57b0844b8bc32c28932ce50fe9d11b58628d5edbd757e52b6df4ba2c8609c0a821ae862df79b9adf25da04db2175a3857c23f804f6e3657c31007d2dfdd5885ea52534349b4b12d5d10df5f4799fa92cf2e1591f0a3ef30549ac8ad210f9aaaf5178d3688060ef8679b45957f45a12070fdc92bc92237ede5862fdc058d0248b23ec95e4a821dfcaca59a15e8d74ce26e14f8dbab36432ec4681143decdfbf867d1fd69066783072655a4ad1c6ac5130a0855fa5aea573aeeeb1362a82e437024e2c1f756d2a1e5c153799aeb3e88c89e7e3a05233b8ca9f59d9ba9ac86ae9d157105e0e7806e6b3c8b5b230aeb3eab12d4e619ae2648572d43de4ca2d8bfad297d3f265ad13807e0c15b275d236767f6c990a681272ed2e12841febeaa48b32a0415b63cbe1b1c362f883d834227460afd447284c61c479dceb3b3280de20b2aa0365f44d03893ef77b852544a3cb6815b990e9fefa481f1334c3c7f5692fb60ea8c76c098140bdfc8ce54032b55dbe8182c1dec032ace956540236aab4a7d6911c9a6d464c293842b01c2a82bc9a6bbb77a5e0e51f2537d96fd03aaa85e32a8c787072aaa1ff8f77a363177032a9abc02a36549e88a73b8d7d033754b423f3196c7ddbe46b80d49f0bf035781eda52b5782f292e00ff7490e753adfbde8be00afd0e3406e7301fc4e1658f64280d00d684733ebcaf4d5c1cb8365e8d6d8823cfd5bcdb18d5e8f1bb24f678fd1932fe2f3d1454cb50f24349a12b14c0c871277c8c510d1f0af202f9a45e586e59faa9db36b8799a223288da23f2ddf85c562b314303e66bf23345f819540bbfdde2d380826566bd1ae78b1656694521c8a0c800d6ab7145b75aaa899b5d73f23c468493756c0b755856f6e973dfebe89af66d9827460667ca9ae0baf3afc666fc9588be7a56dd9c300305a90537c0d38a17685ce775aa7734d606958fb81132434aa36b161d7b456ec6ee620f5e0515957c505dd3e086f624ff6410c67cf3e468f4d26ed8eefbe11065054a0a9900b585ddf9db98a788d62b9020776b0e843bc4b824cbb8e98167fc9733314e68edfcc5eea8b962eea841f6653521acdbecb7bb32fc0f8ca5ba7c132868fdb41611785341a65a4932003363f804ceed708d20dbe4c5ce90ef6cacc480aa971301e0f475167d0c6e813a3c0d642ce5d7261f8e35c11353c228adc34b352b8c3cd670f7b96e7f5cc378df02424e69cbd5aeb7dd7a43498c794db321fe2be906f30423896085068a205731e5acc63075f1acf0ec02e4e0420980ee5b465db001e7d744fcb020daf4399ae0957620f610ac3c156e4bd57b538e3303d9473fc9117206ae6a33a5e5c0e52a24731f81aa065bf6df86e42a77b17d721a5bb9575a3e9cac492175ace90ab805238e6cce6a28a46e794732e396b3ca584e8f3e08cfba88cbfba90afc2dae65e4b6abf4b6bf9b008b9bfd55a1640ff9a460690edc18d2ddf0132310f6329e36c484c02bd0ef5cb85b5d99dc020f0ed21ad626f6e23d48d76a9db759dfc46035d8eba5ae8f09780571d6123fe730a837a871c9702738ee4c393a943acaf0b55ecfacaaeb6b8907fb725dde365f5faf85625fa4a27c3df914b68a845c9c4413e09c316831e06a94b440370f6045afd82d9caa5dc948e53965be859d7f73379acf78cf8ab705f6c4207aa3e68af7827e0e99698c9f819b0652cf69584b25b1bf20fdb436fb3488926b10c3e00bf63c101f93b370dca658f258ea275cfaa58ee6a76aecfcaf37facf3a82ceaf895b62c5a556c77541d3fcca0e83ff1486d5d773814800e93d24711917eeffd30f20bcdd1954a38e7a5b9ec84a1c02dc2b6362f6fbd81f54191c38bb88234d7d3706dbe601684fae6f96d1e77490145e2ee498b6dbf012aea6c07041d2bc1fac2a50caa4641b37e80a97370896c6a09134c7c824a9f1a45336d4cd0c9eace5f67a00dcdfe0c5fb8d9f977080b6bb40e68f5cbf676d46e6dea42945b5c88a5a8036f62372d66434892e49c3d89136fc4a44278c6054db499aea023f716ead3d14905afa8720772969a0820eab13596dfd924609b4f2eb46a88dbecc86f3c0c5059610b026bbe7a40e603c69ac8f0c0753d05df5afa3320ce20f8d7a01f829f5c1df272e7e9f208b9b86559c2758cba4a9e40d84bde834db5fdfe6758b6ad2f4d149839e5502b5c9d5e4eb49bd52e46499a8139bb423b61a0fafe1d7a3a401d7d2bfe096fce486b328a42d7c5317b7d0ade34129b93e1045faed3775521c9b8e83af272ee3ef7ec7aa01499bb3981e2698660b55e0db17cbab0907b75ef81672510773c8b3806f8bc8c8f43d21501a2dd13d20d5340bd00f84d2d42d70fcb9d029d93773714704ac40004988b1bfd00e561db92f0a4ca3d84bad57c335f9d821da4461b9c944c3105ca87203af4ac4fbf8c818cdb111d6e08ce0e555246cde32e6725780f3aa18cca7a471f27ae0d6c208c3168cc7e377c2c8369f63d2c46cbc0bba898431ae2b307613acd2cff34e4469a8d10da92fbd4b796c84535bf5bee6ef9bbf0aaef5a4076d4c9102b999598b39634fa124715f0fcde70eac18e8a58251a27d2a64357c3c0fac2214acd8532cd7a3c798d76d038082d5113f4bd3090820036b712facc2e9e04f9b479e8cc6c2984a52f482d074b0a47670e9eeb49ae77b6d4310b05e8f77133b70c6f6cc6b2cc01d88341b11a61618c66b14968ea5f9aaf63c2988fac387f1b5d6a71d3324ebafa17403cde44d00f4408c73681ec79598c116592d792eb41b2fb4264d2ca255c43cc39851bcffcb363f5cf1c2de6e3b2861d8030cef10b16f3602c26ad1def4904372da0aaae0264b5698bf2e0c833a73741ca11dd1aa67ca8a71c1869112ffb19b77b1ac855b4c9f5c60abdc0507a42f7cc143e2ccc9109daecf76feb52ac6bd47011e4cfb4df80a9a591d3b2d8ee03e71487f11f60dcacd35cc1bc7a640d3b46961d7c9824d5a2c44599d319556b0882a91e891b5521329ecff65145bda3bf27f093a5d821f10ee385a7030450f3eaf2223736a20391524912448734f1001342d2a08ec8b917cc2221afa575ba281eaac224ad242c366cece06e34445c9e4b36d43d40e7f73a8260d95d0f85b4838361abfe41a4a3f0a30086fbed5c0d5e0bb6fed448e94b663b7d1faa45609035fa72361b67dd10096315108c5ead528175e26fe41ed41117b9d971ecfcb290cc15b64491d3ee35d6b4bb5af4a6d52112dd2859307b04c20ea4e51b28afb82342856a6ec53635a552e6240cc94ac87c250e3d879e83e19a82603f64197b87e7d8462293b0fb20ee260cf0e323e6a74bd32d1a85be6f23537eea9661dfe0c235a72e974be8c4276e3a4b83b3233be3de316c7a57e4e704d410cebb04333cd645bf50db4d2fba9a2b3ce3ce37def0f993ed0fb2f68eb0fd04714762ad376f53ed61cd7322324cc9ae9a793fd85fbb8d9062cd1aa90081867ca10de6b013212a4a8f12e87bc858a69555f765d77849efa607657fc3aa0b8e1ec6ae05936c31f15ac276d12d623d9c1ba0d39660b333b8fc00aeec60867c35d175b4c5c4083c246242485b0393fb37b55756c016b706dbc0e04fa336ba056209c15271ddab86567b6ccb4e32d5f64001e983518313a228339c0b374452afe63a74800205e75f9469568a28bb18813266ae0dbc0a2e6139f4fbb27a7585066b6b5de8ba86c0dfc402b7ab28d10698410b2b7947b07f209e709cc09db48cb8227cf8511c68785762d9698553b562530af5920591805ced57a3cbeccac0f8c939ce478220a4d70633c3925d0c6dfa4ecb8bbbb39e7ec28a5f4baaeebba3a0cc3300ceb260ebc96cf0f1035034beed8dc92abe8e1ba6dc41c4a5ceaa0b1d8acb6e99bc6c9d1f1c97e3ca08f83ae026b6e321c2fe7d3f90ed8d302ca6490a7fa6abe025939998eb7f3f5bc05fafcb8e08037b7f9585e4d4fcbe7072808dc71970ff4de59538e612eeb6eb16e6c9bb6e99bcee91c9d1b5b3e3e3f3f40404137c65edddce0e0e4e4e8c4a852d5d4ac562c66b14d8e8ecece4e4f4fabe5e3f393138354aa9a9ad58ac5b2b1e9187463f48959eff0c97e3ca08f83de35b362314eb00ddf300ee7b0ce4e04e21e1a236fe40fd04dd0cd0dd7dcf0eaa64f698cf4913839998eb7f3f5bc054a9f1866a9b21a6ff585ccc25837867b3ad5ef9a4e01b9fc803e6f7d3d9e977dde3ff05dd39908b3442edb35b76d34f5018c2ddaa029954bd4d9a65346bc03b7c0b34e952e2f41c0859e5df6179d1e3bd57296c74eddf80ac8c36b3c766a00af8f9d0ac0693c76cae5321e3b0580e378ecd40fefe1b1533bbec363a75e2e80fbf0d8a998eb788ec74e21e040bc004f0d710208710534e0970148fc008f9d9ac07b3c762a02e77199c74e39e04a3c760a034fe2b15317f8118f9daac08bb8041e3bc58133f1073c764a035fe2b153197813c7927872e58b61a750d187880a578878e01bad58cc154363b6e6689d311db3518e568ed92e8e5619b3659a88c87c58b5fb4ecd7be07c974e7de0fc1d20b0e107aa076a0738b0819b2baf019c2b9f811a1b85811a1bd5840d5b75e52f5063a32c602bc0baf213a8b15112b011a8b1514cd8907f1af500eb801a1bb5840d39e8ca37a0c646296143d6b9f20ca8b1514958246a6cd41136e4222c1135366a013536aa870df9e6ca0f5163a37858216cc8398d52800d59d5a86b43ae898d4a800d79d5a8035803d4d828206c287d62a30a6043f9131b95b22f35368a00369441577e0035364a0036003536ca07eb5263a3745800d4d8a81cb6c586d226360a65c1ca438d8ddaa151356c2855b226368a86956143c98a3e2b368c4029b644aa27a3eea0cb8ea8736d4b96cc13d8489163eceec6c2ebc3346fef1a825973d9fae89f4ea7377742d0c4f0662fb240b4d80e44f4d1122b3431140bcfb4dd14ba49f4110909bf50d211520fbf6c313ea247be1be3618f8218a45fa923a046c9d1f6a1828e0243a5c6db375477931c4d2248ffb4cae9474cf82574fa51d048b2e4904d22c8ca698cbe721488ec69bbe8333e838645c1c89e367b62c08c8bfe801936368aade80f58f9e8a3af7cc586b0230c628d35500a8a4ae8a3f6b361a6623b1b7adc76fecce0613b9d1a9d9e9c9cf86c18900d1bc8bb5be82a2a2a1cc77ddba74264c587011cb3626bee494a0d638c9ed05d4b5c7b9a112f1c01a9bcd5b65526fc320af2825c5a73e97b9b4270369c3597fbc9b573f693b36d25971f619ae54ad83f22560745a02a635a97fee7524af2b1b9f4319ba86a3e1ed7a22f31b2b15117d925daa751dc43a4230c927a483be1481383178e80483da6cf6497e53b3de908bfc4f84c76659c9e44495188409c62a7504e6a2053fdcef5bafc18dfb7ad93896109e07d31be73edcff61206391a51dcd7a90e8a28ee74deaff69208b25428b26be2be52833450f481fb0aa450c5acbcafa9f68f8c0a457663d8561241eedb8c515b49ccc1fdc4bdc5107570444467a9446ab218d13f91ed9f46715fe138e61e3650a83b99946fcd8554ba4e2574984ea9910192e3aa469ac208286ca07bc2a9d1a3288ebccb289995aed008885fb6f7e0322e6365ac1169e7d267ac4cc84d4e9645c6929a112f4a25dee822d1a84a2dbc70c33620d147f4a35125ed34aa519a16bcb081f8a53b7d33e117eef41dd44df845fe62791db3e6c38c41fa1283b4e585df0694b136a010c5c2d39e3002d2bce08523a04b4730395623b9618723a06cc52f27066aac725c3d6e6e04d4e7ded590e6767406def670030abb7599cfd15cfed1ad3b2d0a0ca9833b4c775cebf64352cfa5df80f88509a7e217e6d3732b7ee9531a6e4097865ccd9c0fdb725a9db57242d04f1bd4fa20015d52481a4c0aa6d12e700752aaa49452f660e362eba28892238c21c6138ec1fb3128cf831615a58fad98839e62e1cd961a9ab54c312b467bd296202d2a069bb64c31674b4d4b0d8b62e14d36705f78fcec0a1f4e614a7e960031c19a6457349935575c3ec7cc1acd0b46d2b0451be1a458781cf9f6921bff35d07ccffeb2cb29a1a8201418f2068373aa5cf08427bbb5b0451bfc01bc781cafeb62af77e67c8c71d61fa51be77f63266db03c0cae17d8c46431d8e33d3ebd175b25624c5f5eed534a29a5fc07a49445ec3080d46a16238a8fd5524445904fc3996b9f0072a9650b865e8b6957c1860d1ba51297b02636f081265a3e1468622b6d8041795dcc7cd51f25b61f6882c128189440324edb00a3e4857d00bbd76904c289197fd84a4d684bf0b2cc0909041351877c6c31104645c1e0e8f25becb813dc2b7bf6197fe067d9bb6f5997657c59940483d9f51f27b8dc453504628622d4e0c8fd01c40c45a80115eec575dc75cc33cd41d19ce532d56667ccc149806c93e88498f7fa05c31bc8fe81ac54621704adb49a1cf40f97db3693c116828117db7047231f15c6dd1dba3801c746aefa29cad70b9ee0049b2baa705d57f7a0bbc5b08619e4baaeebcaac804215f862b962b69156e0e460b6489bcebcd277b0dfc22f5b1b88a4600e5574d1451770e027dc3e4c156e3f882102a06d37162942111c199a4247873b472b48c3927b29371649c316d2d0841bde854e61448717393c60d0010d6800871836d2193d3277ba08ebc89b592e6e66650e4ad81d7bc63d7b88f2cc8632e75e974ad1c3938fee796f309397367489bcf1b31fdc16feb0213bc357f4b0bb180f1ff2f38aac0fcd8a7e702ef7e2ec0c8728231b4e7aafcdfad02e3a76ee8810616c67f8c6ed9af521a59547c8e813318cedbaacd7252f1ff2a15779b7e6ae5ff644cabef228bfb26796521424b69bd9ac5e5bc81c98ce4e7e3dca2d241047903934ab715279848d72a1cbcd1e0ee066f20812082a8f2075bc78a34b0faba25fd589eb8d9ed59979afcbe3815d34e326cf9dccc86a7532b86dd9dd42df0ec3d865dd6ef6db876918eeb83a33eef31a48f6cc5e4c1ee1899e23a08d7eb20d7f701e570557055713b92ab82a2ec7c5e5628b36c2565d7e16d107afba643c736518c5cd9e057885c10b775c064f3da4b44cdcf910e4d1d235c175dc2557b5775530d8e3ea6ae85cdd2e1b37eee81d22f84097526ac7e4545f7e315a9c7a48bec2e05da1a7bff0e80ec9fdf82e0dd3905521ab2ed75c9696550cb254dd9063276618c51a8ec7ccccdcaa20dbb6514ab1243fb81baa6eac319a5dd729461bd5e486ea8acdfee816d87379e7b20d679831ae3754dd7c43c53145812175cc6bf6462baac9655141fd890283364dd2f486eaf2e79cb39927ff86eadec041053138e70d15731d126c4f2be7ab9e56ae9d56ac76ed3a65ed1e55297d746a7da87cc5fa309dfe47ff5cd69ace9d76446ca79f5d0f13cb63d879fabeb3d850deef5f0da5b8ac69758ede7542f045efba1e5c9de89f2b227da3a16bdfa5d187aecbbbe117be21a59cf9d78d67c30f3d1b6f08974e4ab95649ffbe7727433acd5d792814aadf57aaca53fe85473a776a8d9037c5fa20bdd48364439adb5f24a590da100a494073579e7296536a57ce92b2bd54ba16f25db9e9a1d029fd6ee2d8f03d54b93678fd733fcbf295ef2737a57ca5c6cb52b57329d68746c4f6d263d7437be92a76a6ef8f03dcd251526aa994123aada1aa7de1d1af1ca649f4285fa9a114b7f4d8695f7861143837e45e7af8a37faecab990e6960ec329555e12e930bd1da586333b97fb09778fbb67c32f9795b9428f3744133dd415417345a1edb2eb91d249baa519f9f14e3df8da35aec5a393c410e5b09f70aeb82aef65733bb369543fcb3cefb3b1b96dd3497cb06b2fd9dcd66857040dcd4e3dae4c87c13ecddd98d38c786166c3974b36360cf64d1a16bcc8605684c1b9b29915e87298d914e197b091dc7e3fb3e19721194e3fd3e1979b6c0b24cd1401f37d6435ed5c35aaf9b34991826958092e26df867dc670302ee6dc3ea50d5bc99d5bed56a3e643f35a28146a69d2a2c04005a1c098984ee3a0b7b86dc7649d97885ebbb45fda69c783aeaea8934506afebf9be94ce49e735e71c79282773e4cd39672884524f46f7465bcdb473356ca9e2727f6a97aa96295a6af845b6a85aa6a8b9930c5e4b4dc72aa90a7d76486c3734df3ff187d0bb9998b673dcfbdd9c0c59fac595cfb048c5d0b7bfe82f2217680375aa7f7e42f2b27a1f176e8baa658a969a1b3b794f86b0908d463ff955c3e91d43e928a517652897669f1d0f7aee13a883c6e06ded49ccabfc51f5427027bca1ba112404b9f7395410aa4996dd50f18b7c860a428121334e1b837763c3b02cbbe6bc341f0f3bb8c3b1938269aebe64b06dacd9ad2a116382b06074d159d09d3b77d8457689ce72b67d3a1ef286bef1d08e7d763db44d6b25163bf64e323b1e17d353caf5e5cd1bc232ace3d137d41d112f9631f1e60d9b0b177b3feb7868486c0f5d1362b3ad6ec51c9aa533f0309ac519ed522bbf8da49834219e5d70bf4edf9d0cbd9d9a403f3ead9e9eccfbbe23c61d2fa6175e78e185175e78c13731404039395225557187f3c20b3dafab680e1dd4411d142fbf71f79c945e3e3d27a5d78549e6ee39e9a4f4ba302ca3d7856159a65d1896659a16ba382ccb342d14da2473f79c34d3b45068db387e0827b409d9386c9bcbef845c666666666666666666666666666666666666666666666666666666a64758b65c3e83dc73001cca44561e86c31fb32607cf166d8428ab1b7a64a0fe0905358a531d3d7743419dca663f14c4656d43419dea1e910ec6ea1e168673bdab1977b9d825713d12c9b6900f2b14f211d9908f76319c2c544317e76e5ddd361b0a0282178a42419739ecdc35f46eeb5c5e11a1d76a763510c750dbad4665ab3a602d35b445d51284b6d4682d3598e5d83055581b4253a56957d3b43bdf6f99a2658a29a48efed6b0cd6897794e7a31ad2d4118e36bce961a66a6014f9016cc80730570a3112a34b918ced5e6266f286d386f0d3de6427933794605a19a4820aa8f27805c7e944ff4e30c87d2cef00d15534e761c8331de86d85bb3e1f6ce2eca32ed5ec68d46d66a36ec56d5381b3a674370a72bc7066fb33fba75b1d0af90c647c86a6f49df99f5815d9688edd2b6d8362f2c7878787878787878787878787878787878787878787878787878787878787878787878783221ed8d7672542aa09c9c1b9f9b9b89038fe5730394235552b5b303c342442c073a3fba7543856a820a6a72e4c8ad371a3972738d74a185d3f6868ac1ce7cb09c4e85ce527e4e2aa50c72c3f919be5726af3d246d38654bb294472eef60d54786347c203652890243ea9853fa782196845f68a4189dd71b3e4d0d5a16b4346869e82661183152c3dae2942cd8fa6da408436e34328422d7871b8d1001e88e6a10e30f1e784a18765a5df4246167083a3fb83cd2c165cd034fc1e9d466d3287e9679def7fde08dad25a59452ca55af7ad5ab5ef5aa57cded689aa66959e679dff783a08abab880e0ffe5e4348a8f7559e679dff783a08bcbcd4ddf6c373a40f0ff3e914fe6c51f500f7d4355b00387e11b35deadd529942cf3bceffb4190c462ad582bd68ab562ad483d8de22cf3bceffb41b04655a3aa51d5a86a542e2e20f87f9fe7e96499e77ddf0f82292e2e20f87f5fca4fca4fca4fca8f072af81b44747cb3d96c369bcd66b3d96cb616b7b5b8adc56d2d6e6b715b8bdb5a22d14ab412ad442b6ec5ed74aa11b7c3ed703bdc0eb7b333528d5423d54835528d723a20171710fcbfcff3ba9c7bd2019d7440271dd0497723f2e9eee20282fff7a5886e443edd453edd453edd453edd453e9dc82706c5472442f111a1f888507c44283e22141fd143971b4362f11543eac932cffbbe7ff498528de7d578355e8d57e3d5788f29e99ce89ce89ce89ce89ce89cbc634a4159e679df173ea51494f2d0254bc109fd348aefe20282fff7e1645ecbc30f47cacf8d941fd4431d374cf9b9fc4dd4014b64bed52926ce1fb146369dd271fee8a6532ee78f723a1581f347ad4e49e03c81f33d56a72870be97d3a90a9cefb53a6581f3bda04e5de0fc1356a79a38ff24a7531838ffa4d5a90c9c35b0814e71e03e3cfc4230dcb113c69ed4c3d8eaa1000f23d00f409c87d5011e4ad60e09b817ca9c7b1ba1ec51c043d91ac93c9440a10ce2f11a21af7a3c6456c83721e314118e6c3812d570c4e2a006fc4b9c7bc069843d8303b537505b039533501903959ba87c812a7f2c506505aabc69543c05aaac6954fc04ea071a152f813a44a3e22350c146c533517ba751f110887f40bc03ea1235364a891a1b1523891a8f44113536ead423f2a8b1514254991a1b154455408d8d62794cfcadf13035010700a2c646fd50801a1b9522401440007c70d1516bf643221d0036cc48cf61438ff4161b7ea4e3b0e1e30d1b82a4a36ca8e382984d0f35f45497cf430d3d9bd0d3b97c1b35f47cc2139bf0c4e73544b141d19111a39e6ac83a37de5459ea5757546a187d6e8c3a371cb1d8660412250679e18875a20a472c8d0b47acb8c3372737feaa40ec73ea21c3b8d286ac98430ade8604df7ef7c41fa43d1161254e73232e18641ef28e84f0f52dd290a8ed881573f0b1733bf0c2eec158a32d768c9061dcb07f2242fab837f421eded1e96cf0f5010a6c26a58d88ad473dd5c38393a3b3da49e564da380321ae4a9be9aaf40568d4ea372321d6fe7eb790bf4d1f971c1016f6ef3b1bc5529e8d69482a8ea324ea376b21eaff5f9fc0704ba29382d171d30e78cd9308f58a0cbbf1e8f65d3280e49ac4beab92c493d58ab5473b954d33af4a71474b91494827399a6e07410667319b3e17446ac114bc5264573030355d84ef2f172d916debdf81863d489620b342c0e1a3464c8c021c300322c8e03d03880b587611a3468541c97753b400d93b8f606a86113d73e460d9db876f33a995b0278407c04c408078eff506dbd540cce7aa9343b8170cc200ccee338ad260d3ba6615a89c1699bb63214daf25a5feb571079d5e0a8f29e3eb56b66f2909796d2dcedab91c118e36b83475b497cf845c7a7e913009f2e9fa728910d5ed83835ac1bb60d17c08659b6c3b60dbf84cdba7348dfcc6b6f21fc1232ab59fc1294653368caf7d093f299a5cc942984bcb38793e0858dd35b30026a1ed3c3e71ba7874a7d1a35bfc9204b93c44b095e284fff6267cf09703a0ccfd6caa59f03b0323642c80460bfc7980a8095b1211251f17e36a4c75a75f620617082e0ca639f3d487ca0972b95f211bc50ba54ed3aaa76538d1700f42c95cab0a1bc323ec399ab4571b5287ffa76aa1ce4064fc6b7308ae0bb3e4ea76ba73a993028e3302c63c4c58ee5356ae8c4adb1837692ff71b579b523e23575a6f813901ac7ea0e8f2c97a151aa9d7ef293c78e51961928cdb21ca66178871a2faa1221af8cd7a8e1bce18ccfcc2be32c35a4b932de753d44dc8b47e3a24e86932ca48a0c49109b89ba96c388ec9a0d1ede726a431c97965946a0ae59b6a1c74e59ae21819df2a0b9df4d0fb36bb2a793a5d72e7ffa6e3a8fefa6d3dcd89d4c37d969596af87d060f371d412f4f43860deda8ac6aa775871d8e9dd6d089abd9d3e9da4da7d3bf632c3f9dac1034f7f4efa6d36fa71aa71ea7b39cc7e92c354e67398be99141930d9db8da79c0be83a5f1d921c1c3a9f5c1c34dd6878dd37f75665e6a67e6e541764744d7c3868d39ec4cdfec2d7632a8d910879de98b3202853a0a4351ca65d4f41d3b4549cc644379a969d6c4ac2b78da9c6cc3e07c8ddb1e217b1e6ae884fd96716af6346a9ea24e692e0b1d22de1d90d8e13b8a87b3541ba6c3f0ece9540f9f19a3e802682ecb37e6e4e9b16339fdf45994fd8c9bac0ffb1ad6d6384cf3103b2264986e2bb67d27fa1bf4e0c98633f374d3b3d333930fd36bc8788d1ac7be6d930bf99ecec3bf1afe7ea7740796dff85876f0c01b6779e4540f47fd468d8c42d930bbdf23a73cb046467defa14646b1d8f0bb34a33bbc9e8736fd14ce30591fd86b5c7644c8788dc7ae07f61a5f0d9db8dfb11ad2740ba0b9a723613299beefa7c330f6ed5067f8d6385596d3fadd5443794dc76ae844d7e33b7da7a7ff2ccba9c66d35bd86299c99b7c657be7fa6ef3b0ffacf442783dfe9a9c6673c32f8d9f80c696d587b5b655c0b93b8335e6bd8c49df1d7d0893b43b2101a1cc74121af8c73d723e5caf88cca28dc84c1f93883189c7632e9e964b44f337d9a2866c2e6ec993d3262dcd9333f33ef7b0872137e8162f27cabf8459e4ea79f8e7532a7ab2b82e66a17cdddb4ba61daa98726824fe734973b991c06a7261f590c4e4a4d5fcd18d4ce5c7c9d10da598741cd32170cce49330619a45cc6601bbc9059cce297d1e75908bf843ebf7bba36cf5c7016777e73629d10f2ce1e3678216dddf9a8c3a4354fc310e7698b7621fe304fbd105f623ca471b893aee14eeac59d974df8655e06c58864b8d10b9504a289a8831fc3f8621cbcb88631a8e09eaaaca9523559345b85924bb3febe691fb652e3cd1e3b6d25d390481d59b6a205a923fbca4a8d57a4b518cc447f877c43daeac12ea9861c4a9d3f699c116037e4a03b3fba2ecaded5d3c5d553f6c82f1b9d83171e461ebbaea6c16a6015d0d180b42c686bd080b435b4942b2d0b2706609f5fe23a3d66673c0b2e4b2d12bc78319f767b73663c22ed64627381077333f370f3344f4f9ec9337926e5a13c9487f2d08be7e2b9782e9e8be7c278301e8c07e3c178301e2ce3c978329e8c27e3c978329e4ce3d178341e8d47e3d178341e8d470b359f79c8d04ea6fbea64e6a4947a5927735dd7e5699d0c8679a14e665a010494c59d2dcb44210d1f864f8a40a1cd68427c46bb6c9b47bcd20a2ba615d20a952a27c78a9b1b2ba615f20201e5e45821a51036ee88121c33338e2b1bf9f9f98951ea38c18b1a1409d2e3042fb03035922ddad87afb0f8e0e8f72ddea948c893f70572802913d6c31640f9b0cdba8ce91bc748a4633ab92d3983e93cf1a28a2ae4b2f24699f1851a1da3fd187d83e11c4ecd53e310717412ec9ed67dd1c919ac76cd212d96cfb342ab3f3bad6e2d25223336d8baadfe262a3a52588d9b6e7a4d7867dada47db09bf8c3cc7c7a628e6e54a8b9286ef6ee7a23d3324c5e184535b92e54505fbde4eaeeae71b6cdda0bc3166d849fcded30bcfe54823757dc8d89b3e18177ea4173f9d4835ea3b47a54bbe7d9546e88b6e385bc229e67c3203784c11f0ed5d02b52ba44306baea4b93a2721fa5e2f2961b0afed7861a9c8ed6fb35484412d085ec9e6a751597861a954a4541a42b587252437b784b3c52de5dc92cece919487a55629c9edc778bf872525977aa5b9c2a9f17e41e857ae7abaae8742218d57ce2bbf344d5bb1a18cdca43233f357eac986342cc3a19a62af6a325d53b54ca1ddf4ab9331692daaaf86f27ef4b2093196240bb5d4a4d04e26e5db8b872d0162b057d9150cf6c5cc366365423c1b5213064b2a06dbb3b9b151210b30a046f54b2a3e0fec8b08f6497288202b817d11517d127bddf19897594eba2cc331f1f8d892260c624c4a4118bce825c27e628e3e5b5250ccc14d4aa6b0140ab11006fb219bb156aa0a6d1259fc2244268445b57f35de14121754b25576056b46bbdbb9562d99aa8b2fcbd1393b9927fa4f00515d6d896a894a35a3cd68339a8c6ac9542df166b43664aa1b3afd6c385597ce685f9db96e49b564aa96786114aa19ed961ece682a950acb66b4cb7fa26790a97a8217662b75aad0e09d7a84bef29590cda66a06b9b4ca8552b4524647306f88e4da74aab3ccf33e1514daac69b2b272ee6456ba3b1ed7bd6c07494e7b8217766b8509a730258cea2749a244c99225cda499dc8beb260c729e8d9dab6e7513ee9f0ef2b9ba75fbbacef5bb9497d78c5c6d87f96fdae15c5dac0561daf0cb752d5eedfa5ccd21fd2ba431f5690cdbb9dc4b6c785dfb16b7d8add810c85d39ad7cb6977418a62b2b7d5752aae9b14bf99572aacd7b7ae4971f9d62b5eba82054931b30ad911e3b19920d69b44ee65aa91fad26d353524ca6a7dcf4502763929ca9a6acaca8d4505e156cce785cecae6b5df07cd0d3db5d36fdc9a2b9e1972ba6902157279372ae93f9be512cbc27f8ce55cc11c460634d186c2cae1a82feb997f5810ae26c3252d026b533782b2fd9ccd516966cb48b471644e5d928b9d74bfc92056150c560f3439f2b7ee955ca575295ea5c6141fcc2bd7b8835c954b77ff4c32cc8ed94945f9d4c0a57eda1d066daaef1d53fa1d3bae243fb765d7cb10d7ff435debe729ddbce755727d33da5c6cbf26da68fcfc2f17719bf8e7546b0fc54e5317ed9cbb2f541cf962909425a887ea586dab92f40e52b87e123e8431fbdf4eb292997019fe2315a8c1e448b206c4844bb020060c3922d81775910448bd2ca836861b2a1e9dec986a78f0ed3311726010838800180f8a1003b522fd58713a0eaf800aa0f1740d5f100541fac0e4ba4e63100b0a31c557b4bcd8ea36abf51b36f55b3a39eceeca8d5287954f50ed6d17ba8dd79a8fc1daa771b75f41ab5bbadfc5a3d3bd2a9233b2ac2a03c8ddad9d10e83f2a2ca76748441f919357465d48b0b299002931ba36253a8e90211eea9760d52b0a3866baa970bba002ac365a95f25b2a252896416888cc99e5289842c108ec95eaa44340ba463321b440b921df9302851ec4809839208922bd98e7218ecded5a8734f6abce79710bb6864439a3b9aa3c370d6d5f07272d6dcf468e9fa62dcae3b4cf313515c8cc3191ed52730d6901b8bf8e0e737166105b91b73c7be3127eab0c7cb31f8852d147cf9dde52fe28baf8f72f825ea6c1ffd8c76463d578e5a578e7caebceac61b7639a17a046f875f42f0ce23fcf22bbf819dea921051f25d44e14a7910ec7266ab535dcedce954123bb7a7c7ab5d4f97533b1d2678619773e5634a9ca729c12b014971d17c52509a19524c1a96a269583362b5856c3cf98825698572d04a9204091224487a7a90203972e448112a768a5071a40815478a5051a408154556a5c82bae82574fe02a660c4e31680c7aa2f414e384cd9e1bc6d1a0c9a48178899c562a6150924a9f242542c88ba1b0dc74fdfb8e4e85ec108d429936e4381494cba831a250ec7746b1a1f76ca64d956383c7627f7097e5e49e0de72dddf4efe459e95f7f5e16ebe304e52c26d24dfd8ff4cf86b20a7aa50fd259584a2a36a421591fdd12c58652498c773231346d4ed92128dd697dc893dc6257b221905bfaac1f8da4a254fb895679ec4a87e11a09048a5472e731cc861305fbc42a864989c13456e551a48c2cd518b3aaa8a8d0abfc62954a4ba570caa022c654a84485d431596abc44645c2a31e3a16c47cfb05246c56a9f74f2d8f138799fe5b2f64b35dc412faf9fe23dc94e85fc715154b2974a47a0bc4bf272933e04a9599a64c3ebf2e4341811f26697d975d2ee83274fe5556078855ef6f718b1f4d2659d99495e850894f7b18af2520d7fdcd209bb3ccbc9bb744f981de2c7955d0a49ef8e7249bafcc4a0a07149407349c7c2d29da5591a225e92bdfc2c1da586a45f28a75d9ae7be61b23b42ded26377048a3c5732bdffa384d91fa51fa5ee88c87a98ec8a8d61a78a112a46502b55647feb8a853a21e4b787ba1ea5bb5d56274a779b066090bd26b59525920d67cf1d2c2f6585d9211feee06100064fee158928efea9dc452c31f97e51db95ba52bd647340bca61b854e5e5544945a5a472d3e7fd7a5b14ebc3fb89674f48d547ff04e55eed973c1516cca32a25ec634941c97e72f256b1215f95afbc544390898b6131bcd3a974596cdcd249314ea79fe9a587bc3a4498dd92e7dd524db94a48bae82bd8190a14eba37f72d91191fde4271f02c3b0904451eac9c3939380e66247c45b6accc3a4b8274cdcf03a66c31f251846a9f27a35de93cb2098f8712f03709600deb65922a150d62345bb30303c79b34c0b2fdcd159e9eee8d40762b694841614450a4993cd1eba98733237876810b22264456806211a846610b2e20b5d11b2222483900c46744e2e66518b736636cc348bf2826881cd6f21371f3a16aad943e7909d965e41bcb6d9121b277831c4095e0c718217429e9037728d4ef042c89582699ae51236f96dc44cbe3907d0ef0e8a524a8e3af157c7008b61ff384df3b852ff84668742a110cb381285342f1e7731e6883d79ca19315128c54dc1052656872b42144b6287390634352832841f1bd4ace00b39311c85cb61e8c00e01c3496813876257cf0082a022260b3054c0fae1810e8cc4d09d2261a88680613088247636ca44cf12583899d8e5e2d541c9355dae2275685203982182d0c9b0ccc2504a29a51446a727881d2d349721585c124cf4c0509d9e20926022eac004314411dd0d5da4080b982f5ce6676c7598190a1c449fdcd065e70609122eb4f8c7155b6cd1c5143d438680608b4678b148175a37ccba281224be481776ee8feff0c26cce780d6c3ca28c4b8c205172e539244690ec1841928364089f11244358c85684c7371a594212babf8d646a08cf477c0ce38bf8b400099982db448ca0987776387fea11bad33e31ba1dc6306e8c3e1cc17cb06d40569715e863c8cccc6a0336bab0c8422ecc276ba6534ac1bb7e603afb0aa9807a3776ef4c15f78806a1a774725349698c31b2080b9e18e3144e707d81f984b2bbcbb681b868a01bb0ecee86c1751c6c595016062f3e6218cf25188401866146788311215cd98d468c18010a2317af14e3366ebc38ed99965d3e5ecb2a2e77140caaa605226f63cf161bc7655a4b43a2b5b41613b88a8f3f2f46b7ea565d151d0cba55b7ba9dce113ae9e415af180693d239e9ece615af585cb4dcaa5bcefe8cd769fcc5dcca8b73d2494fe70f66ebc24db6b88417bb58c2900bc48d5d28e1e766bf524d342a48568577451472e36df04b189730139716d8d373ce7f9f3763931b792714846136e4673d3a98ce9d4582364c7466b50caa53a708833dcca2df9535e4b866314b049f4eef649d49f9e55c62f0c2a642f0426625b9b20a46cdcf67a1f2a962c3ccf3beef3ab3c89542e4e0316b0b2dc80b9bc54a39f97ce7f0cbe9e4f196ae09c18b13e5537a9f27eff1923e272be8b6dc688475e4dab8dc96b9ad598d9a40aeb421bf7b912964d14d3a680c5e0771e165cf264ebf49160a692b1fc2e0143d1bbd59ddacb96af0d23a823992aa95ca0a4b7725021b1da4e21719c32b759d4c37553e55ac14363ade6b0c5ed8b56b3a87f09c59dc2999f5b50cc2a8f92984c119072fec1e24fc12da38eeca6edadcc4aec1c10be7b499ab2b6c86cc1b0ea390424ad843a9925554a99241aeac6190c9952cb3905bc821927552d2dee085dc0da58a54658d6c2babb8221563769ae894cc89f3dd33c13bb3abedd871e78e9566331b7eb62573beb8fd131b469db82355f373d5231bba883ece86dea6ba211b7e3557b3bb1f9fe877b70d2712f433c698cd0c6b22fe109b88393ab241da983d286da3078a799a59703566d8a28df05a8921fbc263c3d5a21caef626e20ff26ab67fbae9f29f56bfcfd6508a0e09ecda65be9bfe9dacc9f450b6c9daa0e1ad60f1250610514a8d932a06df53ae1aa751f352491df3388d13a3522f44504a4b5b52c7fca5ba1f46ada55d8839686b8694cc33fed570c6652723e3cea85b4de8491b4a955665cd103c79b52056ae1a354f7af1b4ef7be89d1efeb2b0c81538e50af5d9d0c36c8c72d52919332f59283d5e387b66f7b43096ff2cb3076577b035ec8b2c7df61ce5a66b1c13eff4e1e79de9105fba08119c43fc41fbc43e3f7bfa04b38d2375cc531be5ecb14d8498635ee59a26bb351c38a809fb284737ca5d6cf0c2eeb13f1c86b58ae32c9a9c487aa8736b38781d8fb9028f5e62f65fe54e06c7b70d87b537425e1c3bd47867e6c5718b03c72f3b1920681219d467868c1c2d9796b6a88f3d0e19316e71cc9091a345060ddaa23ed487066dd1164d427d68e0a04183068d5b4b23a472a8d4ccf5c5412b15a29901000000001315002028140c87432291502c9ac89930fc14000c8da64874569cc85998839031c62042800102000020003022986d00681f80187855f552329fd8ddce080b821a881bd63e8b136ba8544661e12634fe8948d78fd439967a1b9339bfabcdea0fc9cefff441a989a771f4ef576e60ed7db407999de23012d53afbf6a02a593be2c22b472b22f423ebd028a272c194bdb97ea00fe093521cb223082215335e4f5ce1ea841b77f713080137293e1b2f6e9ad27afb1a9562ace604e5f5123cd9f3507e67f3a407da480bbd67580572c6ec96adb115e05aeb3450b71619a4a61d0b37870bcca84d4ee1acf0639b854c44f280eead3ead6c0b25453e78224577e2f1182e8725aabb2e58bc1ac6e9b54c2f227d89fdf69aa2a94fc8723e63d3f18a9618514a6a04c02f0380525d06cd44848316d02692c8a25863d060fe8fb5f537bb05ab549e04a5ade7a55fc8c1993e6a0c03280fce6aa005e8bf3e6a1947278fe2e527a76137086256c5a51192dd1b851099d4497cf84b3f2b70ff3f17d0838529d6ba86d6f900009720d32ee4f5fd766bb4e12d58df118d02a5dc413155524aa2c5e198be5bc9bc930977d48169d33035365899c32ad62338b553fff31e4cc465d702b2702ab3b97965a83f170694dee54d2d71f5497aff40e364942e127c18c19dc8dd83cbc516afe034f658e01275569963e78d360639eb58b71253e7519679f9a9eef135d85d98305274f569f4ed9c5d612f64fb85f703914f37997d35fbc36a04b6ae36ebe10352ed7ffadb1714644e8e7e7d7e6c6b5257436b649c2d6f63b93513d76f23a33ebbd0eb110d71f4be30e4d75a4498eb2fb09c876a6153bc2bea0328bb250e830c812079f643fe28c1361e89278342aa7e379f6a3aa411d169912fbe319e8bba50ca30e3f45551e941c0ab0fb188d2cac7d7223e9e722d963896eaa0d24e618350fa70f1e85d9996a229594998ba7f9441d9a6af760e1d9ea482f94cd8dc74b7378d97e02044cd64e27d150ee95e6a1a9b3bd079bf74396aa37d0ccef1fb02f16cb04aef2f2c72cf8fc8b0289388854e20cf1be55f9f61c32237441f324df31c250ff52a2c40f2f210d0e33fec2092489ddfe812eb0ea6f43bf4bad6c91f3dec657c66c815bcb6d02a127fe5e5cf5651bf5c8dec5a6bb7a1dafa5da8904142d172ae77e1f9830666e9d463641dea0bb61a31b64395170adfa4de7fe8223467c2c0a393fcfe06f7bc9aff71eacd7a48ce1869b6c0773e6dd0a8c291feae045dcd3d118f53c1483c46afadb9d30da3267b5ee3e932101a2217cc83589eb10f36d1f8a61f461fa9444b6a4102412325bce221c2f8dad032803168bf3831e8b30a99f6a323e0aeded639470b09d30013c3f7392e12d73e6a057531fa95e0740ee967b40f775a6f08d15520fb8b3c1c043b133133bff8c359e19674efa078d2e2b407add3bf34529d34dd0099a73461fc515fb5cbdad8ce43b26cc813647327bca571e27a4b91e047b7d5c73b87746fdb5cb25580fffe94354e1eba11945c38eac665f94808e4d97183dba4f73de59dbb832bf968a381f444679c355731c75d95fe61648db5146c93bf9c68013916c2da7180521eebbc7ca80afe3cf1eab30ae546b69e2cc4fa66c8ed2e57cfd2a815bbccd66a413acfec0bc97fb66b63d844c205bdd2a29bfa8262a81e47743c32325c1bfe12fae40383991d2d04a6e3ace910aac777e08506582e23320dc64e28aadb3cd256bcc9e97dc41f8717d4d827fa05b1edd4dc47cd0081c7cd2dc71dbe24d3478a5aa2c53342d5f0d461fab5493896ace3faa3ad3daecabb9de71f3f84a0019a657036d1fadace052e91c6eba81fe16b783bd7d01dc7f140cc04d9e91562e4ac650b08ae1482c49d4244909da404776dfcc08dcae334dbc2e05d449102c8eeea5d586b1727ca86b98d0a504d789b45d48a0d9989be7bc36e06c8cd9b9aab0961dc99999968be2d3b529747d1a79dea9219abd0d1acef72b667074cb45b6271502f78e9f353ba4f3264c3c00ee5a7c5b39343d6085c42440ec9c8c5e670058b165c129be3686a2f803442cf85a6b3e59a8ac8cb4834b56a2ffc6249d8a494bba6e6b468ccb0d251b8fe56b1857903272d0ddf0642b342f68c92570b016a71a190da4ef15837e7cabb5bbdfb94fa0b7c4a13624bbd7b3bb8decc5423746f778d25794ce114aaf0232651ff3d3dd6455ad169ea8b95ac478797d35521d8213851fbbdf9bc6ae7061c858408ad1e4d2eeb5e759c580814583752921084877a332dfdbd01c7491af7d699605d80d5d556040c18bc3c2b21f90ba87d8177d4610ebe1012d9047300adc1e204a2c95c7c419d18eeee51a153b9983fe26b3472fdcf34303d03d6f813064d883928e6dd5a04dfba37eda7b0c1fa007df03d00893ac2470adde896f64feda7e49e155ba80fe25b3ffdb8e39c01abc5a70935f9d15d3b9d1af4add58d1c8c2b9b904c3e29c3b835c7a183e01e3ebe31191809400ae99e531881721337c3a5312281b1d84e23c8075fbb2e1cb96e7d3457567f2fc315759a0127d795dcfa77a4ee9633d6977424a654c1d6660e63851e00cd6f014cbe1ac04b516b7f955e050f0df192da2f2fb115a8944828b31a60c54ede910022395bc4af096c797db42fd29d12a06602c523aa68a9791cbbe96eb730771966a86f13a71e525d39d75754cae6dc8cf3861e6ace20c3fe1af8297a0c5ef211f6780ce2111e7aad1ab7268f7ba03b433de7f0008ee6358f89b649a0a2c79cb81f80b25f5b92af32b2fbe8184e008b16a6a6a910325861b55607c732c79b79064bce9651396e10ffcdbe7e1557bc1a0494db68862abf7d293e0c13213d29ae2c1ced53c4a2bbfd00e552354534458b8a924be444097517fcc350a3508a6f653cd2af9c46560c285a187399fd57cf07dd293eb227cf03a3fb05b43a1429ac2d10de90de5ae525555f2659f937b0ecc526ceffcc57fcf2cd35350d85387386ea03fe1a529f5ce0c7de76530905f015273804de22280f24e60bc62617617795edcfbb26673d8bd0223f70ac2d8b37ce060f4ec6250947c381417d15d87102331e928820a3e7b7fafd89c1e9fd1b388b7865b39944fa82b9d715c3d172c34d5ff46da961e289c7087e06dc13650297fec4cf8568d5332f1420eba40433997f74f64703943e3ee04a2e20864782f2190667c7162d8694793d97b978f6e3b1392bdd2dc9c2b75b7501907a9266aef47915d6d3aee93a64a97fa6e6023d8cfc64e34fa9499ba0b40aa6ef82c04a1857bdb95aaa2c3ea270745a80efb8685c242a7d6e732413915df022be5ddcf0ec6013ec759808e6e98a4bbd685004d530d9dc2af13a62114f2e7e7b35b046dadd1d6f672a13651b5d6a586c1928d28eaa6f0599bcfe49232d75631ce54ccab553ef284b7443a80f430607955a8a29422cf51ec241aad9a37afa43debca897355ae6e1094578982777002d8e7591a1e7ff5cad22d1aa91190fff81cb54f637b3a44fff90d98bf04af4676f9947b39a4b3d81571ed153cc87c7c764b57b6299aa72c6b4633e07427c003c144bcfc3af90cdeb2dbefebecd341415a0e44b02553b3a0fc4b6bfaf684053621e4fa1e5005ee560e88332a7c5b041b801cec78fe2eab8ddede7868ded05b9d80ac9607b1e59e276cac59491e1ae6d04f10f162a44dcc9dcbfa5aa8a814c4d39aea3e267ea28e61f2353a70905f4b231121aef886339d6358a96c7482af4887ed158dfb1e3a6ebe8d24023f005c44583459085ce8ce6f831505de392063127ef77b3c335dc5c46fe5e9f7079e0d211361cd5e79fc3a53d081a983d3315c1ea386d31f6e38a255356872fdb7a18accbbb7aebc05071f87b427f84a101576fcb2d3a757fb385f08b8ee11f339878088a6cdcafca75c1bf69d03f6a48e7c7c67939c7463bd4e473df6047ea67ff091dc926a3d0a0e5011523dc35e5756b2da02ff4f6636e576759722c3067c20942df180a13cd895e9dba77cc368684028326bfed922577d69bd79ef6178bd912839408caddc608afe1869480e98eeb037d46e354a9838a733f39d68aafe39067c88eb548ddb3f31f9b4e4848bda65adb418c4405c336c5deb3adfbbeede72df22c82b9b21cfec0f1b630ec960662974cc30d8337878c37fe7a39883af4e7e7a586663a2084897c2892a603266499d65a505c93a62dc3a538da8c4f168e11663d01cb465cea89bbbeeceb9ff477e2b6f68407c55f3980aa34904100698c7c68d1caa66b8fc56d1081b7b5636f81b79a82561da6303249b4e1b72459d3020f1fbf790fcb3117b2bb908cdede48f863b84e8613633bb1dd776a38220958e9e4d7cd210355885ea258ead2bb6d52b3f49a2af4a887100d06b7939f196d4993c0bedb106140600713596662682c45f84cb17d0398e301d9fae97a5f9e8b074046fc5fc6640e9603262432b8524c59af044d7d617d221a4a681445494b406ef95f55d6d4c990f1e9c82fedd93d321ea2b0de76a53431e8bca9d95623cf53d395a2a7d45a1d5ad697c9e24f263af96ddc61bb8745c72cc8c4eb18ad75c1e90f9d291fe9d97b09f27a80184498994de458076b24e98dd37aca18fe2d65fd5281aa8a51981ab14e70e22b0841c418e856a9c05b8b72f7dd5fccde4fd965cafc667bb82ce8c93c0b305b916ed5f28715220ee5fa61b01f562489a6da0b4bd32af9b280b90e940e95cce6a39f3e0f2b84a9d8630a2712491a6a37a9386f093897506deb9bd8e185864dd00e4ba5af89ba565022ed83d0469409f499e2fde86d1c240b77bde56de8a6fd8d5c8ca799b1b7a3b766afc779d0622b7004a5f6ebc0786b6ca588c9c718011bf21bfeb715bc5fc63c21f96a21a40d36bfdba8380f12e2dcca3d73d3a04b21859e471e5a8497e45f1cf7ffeba3ad4ac010c09a768f4422f0642f34b87937cf205cc84cd3609ce04ab04b83287f4de6efcd3ff381b577a9674c8832d36839ca62fc4a4ec51132512c94716b6b5400c688e23f90f8219e2cc31815889ecca063ff5d9b1d9b65b5c92a4117ab84a48e92c151f2e7678b6a23d69671edea75c94f8ce4035229a970a5a578afd4a9aa128a491da0bff8cfd3734d9ffe3fb24ff12fda35cdc8774553d905a8b6ccf64508b7e4113a61a44eaa5dd0707b412b867dcad2f05dd337cc0557b0e20b59a2b1e20f79c65768e1f40245c1ab304f9dd1efda564b2cafeb100a98d433adc1023a635cd264364cdc3aeedaee2e87e5010a40e198b0c47a29950e2971ad515ce4883c5717134f0e26e2db818570f98b6d5ab93fa1494cb5c262f1236c1b98d8d983cac5a4b652989e1e0b08b1b241252aad42b44e7418fb9624b2438d7802a26f5053611bb5fe838d33b4cfa173c48a7b27d29fc319b8cf168b5d133b82b06749952acb6640bc60a019e2d5968999e5183f0ce55f553ddda691f85d60870cbe4f0f19ce7fa12dff6be332881884ded02b4b65a986b69cfbe43169c4f0b27d74faa52c00470ce03667fb814ca1a0cfea5c0e0d98954beec1d4dda505abecc5910e3d0f903220866d48f35200bd347ce90b55a5339ed43d809669e82a799998b95c35a80f4ba5c28cb34ba95b61b336b4368e0ee3c840b406e31357f013598d0c35522c602070a6b15f4da04623422b195ac3af52318d531da013a8ca28e938157de63f00a9608d2a0484bfc76ca2736102f35b84f1c0ad5b28aa0e3b7f90a2680c6155cb2ff624f996b6731150c1cb22240b5430caebe59f9420f347d0969c7c9e2e46c28be16a9fd0546db90b9ac14b10004ffeac390fd40c0632d2f010c407eab8f9507ad4681b791d760a0a89f16dd498e7010e5198490e86349821633068d1333645a7ee3a38f31256d8d64bc61429d21a97ea916e391911fc2130092e9187e58365354819480bb731ea74e41040a840144943d654d9f78e94c3eaa2c4a714ec1174fbcd1e5350921818853f173ed6b29f941a6746a068de7ccfbed62cf00455ae8e5b49aafca9aa6a377a22a40e3ba8fe3144adff459d1b16e2b15076738c56c8f743eba2633dacdd0a1e1c2be73e02b61e8c85cc1e2cbf986dc366953c4b7415b1510a18e77d34c0b54507df19302b4dc44f39b2f8805022f00b73fe2c6fc179b6bf4e46d66b4d1de605ecd70213d85f98062a44d164bf01d975c1a6cc0be4abdf552c50ccd8ec52bf3e69599b8d57da97d87414bd4e218cead213bc7693bc207057e3e65be647b3fbdd966b2bf084b57e1fe8013f60c04cec9f1abd85b1a5d8497d7bb83a8f6d2c2755fda4244ecfe74d9c265de31ba5173029a2dff1915d604b95b22b40bde20ead35e731d0150bd69c7d83eb9c6fc478035d78db9f2d91805c773da9b6d1d71f569dd084018c04dccb1a468cdb7624d3d446b48b2a8017a862ca0da29cf0aab09eb37e4b777abf829448ed05561460a65c789f8e95afc860300abd316cda652fe39f0cd49c2a8448ffd2a5c88ce506333725c7236b4da83ca15104b615659226993592acd7d3bb77a4338bab5fb44ec9ffbd9daa2517e6678847958f75629113505c52f40653021a98785f333af0c136a28b793499c3e44802564e25c467ec5e464a78ba358e4808d9a173ff106b1af99d12b52ec5acb4ee2d34014ee70bcf4b24133b089a9979d189b4c34d7e415ee5b5b0a139b9b709c964d0647e79098e89217209fbe690576ec006de4803c92ac1bd1b36207caf1faf435b6b3fa7c2f25c5473f89bdc1c56599f4fd84524150c8c7268f8cf908f617af1615c4ec36a7784b1c96e0ea7713136f23c5c1f21c6bc4637f05011b0ea476b51555036b59a26b6f3c9a6d594c21fcb4f5a440a7520ad596a283cfd8bf76a309f8ff0522a5e793f5145f1f8de10ede1ae300988b3ea4a2d796e8207fe7dca034568437a083b73f4654b8fca8d1c616ae7a25c2930b5cac81eef18e8aeb546705facce2b5135d7158057442667e9af0f7e772df1c15b6cb51fa3b6c2bde2eca0f4c83925cf573f593be5b5da913794bdaa2bf1018fc2a1193ee4ddde248257392f6569afaec41743711f31596a5aa191e492c2caba63dceb598633e04d58eaa3bec263053181a083e4461b9efc41f43897cef8b0dd4b5d1a53429a91fa60eb8c99da8a0199927547d2f9e5d428cad074567a64d3768ae18caafafa71f3ae222867c095a9b6c95afd2fead4b0352bd219972a3e15ac212645d6e4d19b658bc451072bdb6d0d86e594d9e8dda6430193b3adc110a025f746f27bf64cdd986ba4c5977d4eb99c4d101d1a89bed5aca7f1e8ac813fef91200ea3f31d1b2ad7297d57691afa6f230670a8ca909e3c80686c8047d63d27004412ec5e064e84f91b2ba0567c41c23f6c5d320c2d9e9faa964f49b1121ba87594431fd45189fdb255c704350937229a71346054fb054d99467fe4b97072e80ff292a804a53c1b3913e874f9a5a3547abb04ac721339a6fa66f278f2387e9667a792752ce7bb79182a31c32d0ced136618f95848cf8b9c29e1456a94be034d04f4909f46c6cc0c70e44e3407660da84a462274048743a1313719051f31a4616ab7dac173d515f05e9ba2c9f8e352b488f3870632b2b0b22b7414455dc512cb6b5d8fab1f967670d7086c29212d47fd293d500185fba434755ac168671cd31a098718aefdf8a6e251aa4a037c54292263214527aff2fd8d2e16f90bbdc0db7aa0afa8950fc0ee4eebdd3cbe33f45dcebcfcbc13f2be3f9f833cca381e29d4c774cdffb1fc8aaabc40bf1a00bb46fcda7825d4e1d193055170c4c9e88c0c4c58be1e278b7b30826203715fb797b1162ca8ead01538ec47ab927c57ee6593c016a750288b1119a210a30aa2b86e4a509bc35e7773e23ec7da48b93a2a18aed06b83c76236b23c617df707623d1d0ddbb28fde8d78416c8163850de366bfa30d17c18b0b529642fc60e572de82db757b6e8fc26de660835e598f7a31e75568d05778a13551d3ee5bee06e8752ada11cba0058ff6a7b2e4a1584f5559de789112b4071ace888a1c9d8a9a14d431142fa3e808f545b077496872b5329da2e0c57dedb7289bc54e732dbac0925b0059291205254bdfd9119b2c64d9f558e69a48d5ee10c12a877aba5216e339de2609f6a924891951aa48c068323ac927647428ee380f0e4b11fdd996170eca9a12d4384a86b5ed9cc60c62c0657fd8db6f8bb9a5cd2bda6ba54cfe7b53eb370298711bb40e913be5ca6dcb1319419f92eadd720e52e55bd2b91a4107629d4658f8d08f9d2deb4ac5413c7a8f7e6fcb40baaa93813be9ad2adbe03e74dbd5d627322602aaa628bcd5c860f55b0062e6320ac915fe70c2d1ab89669badaf2c1dd37a1e7a9cca170ce6973aa47f74846b91bf0bf2920228b3f9e3c03f835562f6c3ad0709af665c9966c635a887f02e9a0f56c963c59536627da9395dae79a9e21bba33a7008435b02fa915216d0977d9d66cb3a9ec694f30da3cfa6d70b19b8413ef1b3975d88683c34f27bec710086a6cf5a31246673ff6d67e0c55b0f8407ba251719c7a405f5730170c67b76b0dc2f74e912f75b0eb967eedcabf66bd4e0a00325006f27028850299d18f530350318364d40e7097c8edc06a684959ff24625ea8590399e16b94406bc440ab79d4ce8f7a4a7c69f61cdd8a4c44f47f3b79b651b80185f2db9faefa402176ace09393af000e64f8fd99bd1602016ca356163640d3689887c812700fe0a9445fdc9929b2b11f3527951cb467b87e3a85c9f500cdc106a3776d52a729d63afb2460313c7bbad1081163da7e78c21178bb6ae6550dcbd7192f7cbe13d520d76c677c84e1e1f4ae1d5a10b8e875ec7be1906a16b615020eef3f39de230decc9ca128afbcaa0ebc037ef09ad580bf3ff92ad5e2c60c1ec7ba577994fc133e8c7429eb386ac74a317c4f7964e365a67efd4c771b252b6e21bdf0ec0f375f9d5a1a3545b21b3566bf6a870f3ce35d8e973dc9a3863ec932381516084d79e2f3964677110cfac38628ba21ba515eaa2abcc2149f09fcc879e0a15fa84d23991f5e1cb809cadf69b197004e2624f78e59dc00377c8b698cab3f9fc0be7589ceea0e651eba13f771c8870f47bd6612c78bbae221f35b3b701227b9d1f2c3e49547c07ebb02f3e23190c5811926a4d128a905db58450138230e53ff6de207c2eceedc7907a321975ebc63594e142aac7a9449d6c141c05a8443b84b061ad30d65ba31c5f880323bc0abef6f847d85b554e7c34d6b2b2d448f6928e77c9974a269273baee42346ebdacbabd0fd944380bfc5dacaf618a51aff042f5a49dcc69e3699e6a3f91cb06342dce80a6180c11c98927432c85fedad52a68a5a8058d487ba8b56466f5b451ecd7437376789a8a503e3093ebfbb652d6114b53dbd9d26510da2f0062a7dfe57e2ab14d06f9fc0a79f62909cf20c27652129a90834d0381da1d6fe486265613dbff32ac757985c713dc880d40c39a03aa44faa0b92483649569c05512555fb88acb9b7687374018a0318ad212198641cad2d61c3732edb8dac94c63e9b6578f036edcb061d8c1805268d05aa259cdb6655fd6602e15d07eaef0ee4a990b978c4849f06dae639233226289c2e6b8c0dbed41449014ea986bd2b39c3cc83f34033b96edba747350670ad692bccb4f184143ac7b946888bb425f74d71d39591e447a9aa260b65cd5b5b6a445356706934a87012b6e41aad23103c43737f10dfed16999c528272e43eee2c8d4e63059ae7a6ab1a45da20c45cc07b02b7f3bc7f3929c50bf51904f551425f09ccd8f83e1e0dbb51caab6e94021d6d7fc6538362c3c853bbd678266412920f3b78831a6e2570f3946386891138f2d655236a66ce61cc28318728b6b709563e1dab00e2d04ebe12f26f602c032471a9e943cb79e5d9114339b9b4cbe4a24785b29187bda9a8b42f5c4f7f0a72df3d7fd49166e818f6faed23d9a260929cbeec2c84d0194a794e95d0fc5512b3279bf444784edcb6814ff04b4810242e0d58d58cc862b666bee12d07a03ef050503948db9551d49a224a05f01b77b260b8cee33f5fbb218feb6fc3c7edf5aee10da1965465c88abd498e7fa30f84771be843863afcfaad75fe9e341757b3c9571c6d620170fe6b59a0a9a7e97eb308705138ffef073e9a4e57deb669195f1f6a87519bf65082498c4f0ccca0f8a21a70ff89760525410f9344bba0ce7fd1b934c9dfcf3a8665c5a5e8a17159128b3a26797e8016f19f3c48e3fe12d11d628875716d298b47b1b83c8cab4f36125380818fa96b42aea23b0223a6221f823d8d263384abd51dea891f3c7d4bf87a65dc3b26f1a5132dde1279b983d7f07f619d7bfb18cadd9d84130ceaf3c2cad5da423da8c70dd5c15eac62b64f9a2770d1f1d73bf2d195dc81bd647fd953c4c956a29050b1f49038116241d158955fb4843fdeb685514d16cc022e63d59980917ad9c4b4eeb5e8437125d28d1840044852fca3980d809e48495566bf2b3d1f3b1da07bb80f6c2601556eb83bf495d5f05c2a26e3162080b034a5d2c88e9b9b811843cbb4185747ced198ac1da50d09d95ea3a1245293acb4cf8942bd2aa1cddbdf884fca2a65092bb25db9b6a31aa387a4c11c1bf866a354e9172af872e2c0d005d2ddd5400b203dd6bbe02b67564fb69ed8bfb0f1ad5c5f69badad53f5d52e1668237547e1ecc079ba114349e7445472323223501150180d3c624774528e7031972358a0a86fd654484d4f968e2bb811d1c70e8d51a3111ad78191c0a39b1536de25077cb9b63ca06feca68637549a8f6a9797bf9d447807665b6c2b8a38997f91b7dc5655af9cb1f66db562639686e13b95a71e1b7b7e2cc7226da19bb0e2f2ca682a3a4dcda7b2ba34aabdae64d547228c7804a60c378e1b992fcf08407c69ee52dab1b620e926e1027a26a5f7dd61f8ef4fc11024eacb8e763ef81c7cb899f9949a9d73fc98d0d42ed1dc9c112b839c9c06c2f8817aad7e3666ca80306820de900d7913618d8df811c615960831cfb03ac11154da65bcfa1ea0d32af220e07306068e19e534675075e8d61aab5a20e2a882f00ba11727d55c82003d525d9de45239706ab8f4d2c3990b69a6b2d7976913a277ba120e02b28d081b9a2058cca4c23cf850292583ddab432c3ea99c280c7d45464248dac785e797525ed0147158f525c9afe5ccca78ad9e89336b41e3865032e70c3e22c04595d14358a8883fdb8311ed8f222dfd93a85fb3cea78e7aa025a242143ff75be7dca448c7b657fb2580fd9ec9d088007207c0afdec5e262017eeee23dfe44f30900d04af2cb11902056ac81780e4341d80f8a66f372904b8d3cc2cd22f30510c3ea854b3b3c69014b18fe0ae888dd4d897410b560566178569b60ce76185e7ddc1a71eae6a35d04ba7fcfbe2f1af3479cf866b3c16012a76e213ecf90e8ed22e0a0bf5526be279f1db0c08e8b504cb0dec634ad9d9a10ff1d83eee66eddc583a09c12882b4f69d24af72400167a1f1e12b9aadaf8896a3896e1301891d4663dd8727f7d4ae74321e09233148d72361b86aa3c6454fbe0eccc102881e6c9f41f6e3dcc9bb754565277c285a16317d5ad26a86fc2a00f021020a36efaffc294884fd20f7e435d9438770b838dfd233f4342c2aa28bfd3f8c94e9e06ccbb73963d8ccec626c8d640fd47faae41509802a248dfe6270ddb7ca9458280630e091a767188d8cfb22e2ea0bb025d4f39f312a69074945851cb23b0ecb8ffe3c2d5b5563c1e4bfbcb0677bdcdf681a53a1bb1574222947f393bc2e54bec9fc4acff5962aa5591e037f8f86076f6af1e5fa4f316752d7f34f03f3d62c69aff52327ed059e4af790f5851dab6e33a7ab5724ec6628e545bf50cf7dbf2d5147fa6c3238cdbfcdfede68215a85daef1abf5e32406664cd5aec7fef8853951f1e1616201c52aefb5996a959fe9e101cf6df89937ea839d03e845b10418455fbb5ecae67e60c05c10c8068dc8e294de8e67e9301f6ada71994c6d09dd431585a403beef78de12620afd83d2bade32de88a55ebcfdde52912b2c04a392ddbccc6b4fbf2e0bbaedfb5b1e10b1dd684c3b3e3616b9e5ac0f2e05fcd5d3184ca1b326efecc225b5760944d9afd56688cb0fc1fba2e9fe875e3c2c9dbea5e501c1203decc6a5090e6325821937f4ca8eb5ef1a5442aadacad1a01b683a9b00208ccb318b9c865705847c9293c5b4848452790959ece370a4d37009c6abf754f8342b00f7af5faaf64a9be98d7e394f3913bd4e6f215a4cf8734e204fefea9374edfd4b647a832689d761c0f5c659b8653492decbad92e5c1560fdcd03bd0bb7d3492e006aeaec9a089da445231ff4ce6559db728def3b64f62b7e7f3744c129f9bd5df79732751f7cc227684cf97a7e410f98889139f306f39fc83c828ecd3bac226faebd3d81ea7b8380e1d9389f607b937c5eb535eb6422f3c7f3c19d43c640d925b01ce0196a9ee6debd325227939a8599f565090bbf706ebd35e0e398308ad3ec5b6a4277b87a3ea53ea2d3bf529f58a37a3cceb77b6dc9d1699d4a7b8d230b2291d7961fdf1a2adc414895cf6bd0df6e5c7ff87a5262b127fc4ca777a3163834f9a33c8e8d621487db8515e4ed3a045afe5624d733f8c2baa17e302ed005f9ed9e3f5b52d7bfb0e15371660964a4acccc87ea7e94b20eef67cd15003e735df05992677d0451f5c1500734a12f21e1e63ab89a69e4498b4f9a83439c9b28e3d5a50763893639e2cde6c72b40b037ad108093996d9221d84e4c4c5513df548f89ddd05f5bf3663434d3802bc4837ef945e51c9f9cac7ac06a7e0aa11b73727031f4b4cb2486cb14dbeb4246f3b8a612e842a2c4a134a4547202126e5584c9b780a02ef565cc1a22b15d795fba2df35908a99672c320658085b0f5ad7b1f2c0b248a8d7b62f26f10a1397e802b25e88b6f274a6e346a61a88cb50aa7d97cb464d2cc60c52bf1e7d5e2701786fb345041274a4a8ad4aea7cc0c3712a8b6eb641e4857306e2feb9a8a3befe010351d5ab1a4c42d961515c69514fb1900d7c5554fcc0db71816d7f2005d0952b30cebae709b46d7b44c919dae0875814238edff02daef3034b2afe534599925e581a26ede0d6390462e00819372c7fe6dfcd74f64e849920c8a98485692037f8538c5c24f8783372abd1894bf35c174d2bbfb6a962b9d2624a78e0cd9b5edb4077ffc0916598918ab15feb491a4ed74c119a9ee3da75d7b4913867e4c98b0f4302fb5ce250cc2b167033796c6283893c22d8f658e9fdda256d607bd08c5dd7dc60426d7e9354fb4619c36201af09e66979f32e3f2ab646fc80782c53e6b150a2944a40b58b043b0b86236a2d5d9f038bc4931183f1688579e056d5e53e976279517ca97c3fc04aac114a38e4c2264b02ca283eecf4bc42427472e189131765aebff9b5a3c48f711cdfe55cc823fec70f36147ad50d20ad93cfefd3fcb58e6ba6d8c9ec4708241b5db93c0c3063edb8ff05faf05a85af27baa4640664d7d684fe81f5241861a49a4d2e7f686cb0b62c9cff143e521f7da9b3b8773ad494f6ef3bbe092ef0cb3617a82a7d60ed6f2b0b7e08792510b01fbb94509f3f6fc73a19418f5d5c80a75f692a98a36aff63b8dbfc701ab56b3afd8a6b8661b542434714ab6ba35a2b258c4cba539b21bbcebc8db18472e245e3bb31683eaf865977ff18689d36e983008c21b5ac9871102370a735e1310a1b702b85c1945da422935145edde510a77cd57e16cdbec626d08195a691d0f82d5aadb2d84b590c7b595a81034483780ed1a9f6ebc905981d231fd27560d95067860ad1e1ffec48b0001821d25814b50ca36ff2d0f3457592a15f691cb4c96a90fa8a52bf161394457dc81bd8373abfbc0f6d5578a090438f98ff642dbf5180cba8917ca55a79c6d3ba778a52f39e1f5e19c503a9f67c0f34fc13d4888c6440fc7409805024d2bbeeecc3706f8db8bf089f09294c63c8ab3e71d8c8c8c6a5c2060da9e72c021b99d374bdabae10008f8dde0db15e191e08312fade915b3e1f9e06c3c877f6b2e1d641d744a394c565aa434c645fb2091a4f3da319b67e2c1754ca2674788be798764073ac826b355b2f621b3422463a42d4230ace402b303bd824a9215c8562299f943ba4e2f28e5f8271c8c0fb35536d64327d22e9daf207ab1e049fdc41592dd9592e0c361e07e9b2af0bec9c696a9c31f609d9670606721613e0969654a98741684b917197d0a9e848e798f69db5127ffc4b1993bc9b1a52e7b502d0b094428408bde80c426eb78d82142617b19787ee3c5a1fdb4d9e1f8f38fac2c1142b02f8abc24f43989a20bd80740e7cd11ce7504adba666263b8c484543dec357817543c65ebe60a205e49de0ef1980a61158d83b673455d01c237b1de610910ffb11b532513698645d17020bc74ca606c244540b2b025e717bff0bf179c94839c2e7b1d3ac4c7540ff1072099b56b500d3fb479b8186f6e815c5135666aa9e7966e9c485e65dce892ddb89590ff5363695fa95f74cd2ec251af408f4ea32fcc9332bec7fcc4815cfe0b8e56d1dde466c4e28e362eb69ef9c4490978c8804147f3dfcc7efce9fe0cbf1c7b23f93b6115586f9ccb1fb63054d890cae76816d0a76c66f00271ec2993713cd12f4de36f481a4996f77bbd0b94132c69e61b68338ad17e0a415579c0b6b8f1f9b1663329087203526305cdee1b0da774797f340f63db8a3478c8817f5116d3c75e4564d4a2f80c1469b6fd4a1ae6288dff4bf3f8a32d2d300dbd3271068550829e83f33fe92f0ad949d898d7b0e217bf06d3229154b0f1990f9b97af32236d9b41b985d8986a9c740c858f81a163c3585b4586329e82bc2893654227a9044d09ea3936af0ccf333226b0193f4b3df3e2366c1869e0f1b29f8e6238ff5962d3a7aabcebc0fc2fc966152461513c2fd2c0cfc65aca3f16724c04c5269b524749eeb588867ab4f9ab09ff29fbce13f5d5f65c24e8610cbc8c6694f616e5e1335f257c46ac4db3b8d410c76d100c756030feb6f15ca250be96cb3be9e3cbd91fed221317f198dd5449006a90ce97736d91dc50da28afa32dc90481e9fb703a014ab3aee4628ff726fedccb06b5b9d75e3eeb596554fda35e56897bb81b6f47b59dc9a767912c6c86f0aba4d88035a28893c153a81c599f32ac793f4d4bbe2010403d7bc7302bfcea445779c50ba41076235031ffd1af534cbbbedf99088aac4f13704a43fd8e49592139875a332a5726f06e7ace4c7fee583640add029d85045c28106247ec7dfca87b9e7615cfad5cc2e0bf5568e59b03f32b47911b2e081139c316928ca8edcdaf72ffb0e2df4c504f80aeee30c2f12c601341f17dd3c4c14d463ddc837c2c93803cdb2e35c82859c8011748cfecae5e9d76b7b7380989d182c39b949ccf9c6048a3e9a7573858218a69fd19d393f34f73dcb0c5b431d082c0ac20073fa7c4b3874995de658ed072cffb9ef0b4d86f847ebbe27cad17c40590df1d14605cfe7059fa307dc122024fa7872f3dfd14eac13ae6447f89ab5750c0d76b131409cf708e5492c7aa0ea14be50915622b4c9cbfc082db7070aa4adfa7be3bec73d59e6cc6a7eb2bd48f6f5eb135eee474a737bf5d66aac5979f2230d55e73abf9a43bfd571b34960256c779bf3e0f4feb9cdb92cc1492584161c628a483fdd735034f254a2e170c238476dc20589d638b0ff54995a2bc988bc18b3779a4ce96170b36a572b31eeb889e0bf4ad6028666b5de7e07070fa65c7ff01a90e08c82108ea3fdcdf516fae15c474f7ae762b3d9daae4294690d9719ed96190f173e9f538d1c550b5064a0067302406b4f3e058ad864c7d8aaa197df693c554d9d268ae7c2c9ff086dd4248dbf666522e3a849bcd9f7d28cff276ccdd33cac5954cafe68730dff441e05b8b801ccc3fadaab6f1561afde29d875454dce87a1e7f180301c58e2e4b79e72e0c9af5ddbe4721bca338e09c3616760a51777c7a174c6eef6aac89949942104498c9e71c50919667b09db082a75c71699ed4528451a071a833a6a34c8782037942cd3c839a348174bf465e74ac4409bc38b0ecca78a9fbdbf33ed0e97e8ef38f0ccf727c1a8e0e90eecf6755b8b0cc1823f1f8eca1fed4b19c2a6dd9413c78abeb242a0cbda7886a7763e10db05b8f31192c36a2e33c09a83c760433aceff42a61baef010c5bcb76a119a2dad1bdd6788efe8a83b87a8cf86cd30471a5d45202e755d60ed011b9ee3d0b29f130ccd4d4f240d9b196f2b5b54044cc3603eba920d3a5a681921fbea82ebd27e32abc5747157ce2e279811f44c00d07a424d1ec0235bafad1cb45a1e76feae8b34f9adec22d6a1796495dd66715747b930836f3160c4fd10cbffda220f687d729bb5e724f4c8cfd06524a9e57d576e1d41cadd56c1a8dbd6716dc7351ab81339ffc0e6d358e401492df72f4481c39142a2f5747004e2e9f4650dd70e1c33c510a11fd8cb40a0561431c1dafd2a5790ca9fe9d7dad5567a73649df80f932dad663e9f6661552b996ddbed6d689c60116025b1c8df79052648f301ecdd1d323b011a43c65983a8c714019a441b9e592a1a10a0c95a25411d7918d54be63abf33d7aae9085a0eea7b2f30ef28740d924a8c68909b73d9ad9787645627597bfcb233faa2fe78e22ab17ccc2736eda9425b9c26adc140c58e1dc912125db29cb4e513bdf76a38e66dd2f41bede81af6cf8b1f4c2ec02055db6d2dc57758759ebf81107f224b10080d5283193707766b1780329f13578b2c435a7b34052ed78dcfee2bbac3c2b10403696d56acd3f9838cee581f97a11794d1e511664f11dd997394ab236d00fb088aee747b14b5f49db85d3eb5305f407d4fe0c5cc7ee40e86e529bacfb53a18511b2f7a43518433f973a7c12a53b809a521717a79c7e84e69d46fd4540c340ac52389c3e87d836706438a0e81fdf3ec8ad2881b122ba5b85cf085a3b906c67c878e84678b70649b36b6d0fd27040e45e2467ba1c4461c3cd7d54b934291df0a9a0e3c58e3232ebe745406b5c1d25abb7df499b6b1b45a0e13531d9e84006864c44ba1615d019f8e0b6183586ee8060b6d627269120fe077d62832a9b90c3ef807b6655f35d719469fd956bebed521b680aa67446103f697d16604c7ee8ff11b76bc7f3d400a16d961206cc26230f896ab57c315cca89cfe009465e23968d4a132d64bbb48cda623f1e94b49ecf12897ed3ab06ffea2dea85b847f52531ce797e88aa8bedbc528d00523172103f442faae9447ce19402f1cb07a97f0b7a171121fe1bb5cb50818271798642df7e5185e1d69387ec781dde05f601a1ff6dae7e91ec246c9e0400fdfc0f9235b9cb8ad020752eed12976c6c433a57430e72776f9492fa7da0f4dd10718e0cee5402d9aae725da55701131c9ec4d2a000de4473acf1994aef2b1c0d381de505d3dca6f47a6d810c1b8288753af1fb19ea16b65c29b35c0ffa64bb4fa63ad025fd8abf08a4afdd94a3967c4a5967caab3ffc04c78f9a0218008a2b874eb9b499cd30e760c1373f0c6cb89a6cbbc0c6cae7efb3198bffc595729b05e3d7be14c74bd051902022354c4c58b25b3ab0c11dc99733c997bee09145ae9653af960c4f7a9ebb0bce937ce4d3d48a8e4ed9a8f16f48978e164bf8fc02248dff1669f06fc594a7efcf40aae8faa567732697feff3d455660e8eb26695ce495209da737a0489ba6c1420207bfd372c14e7dfa78e5d01878ca64998e96840aa02152b03234f0c120d0e24f252618a7fa6e5664ffc7000b5e3b86db42e99e42d8a94d5abe36bc8215a56fe7314b069eeb1458b6904251c9fa05397f91278e82fbc26d4e7167b2c4d6f416c5f23c065772b4e056e1e174638f954c469a07ac3c2bc12cfbb6c97b0496a6dcec8b13903f95fa3de139c6166d2ef11697e623cd504f4676a0bfcd04586f77f93770517a91871453644a19c17ed854783967121a602790dc6e51f4c2d07d16804431e71b3d5028cccc8fba436fb9ccccf60025bca2604679817023c06a97c2445334381963a6060be8117470f4a7156c05d489c6a2881df22734cccb9bb10cdb14b6795e2dd0d7513680c785a720f5adf444c38cec56c522a83a3c5156a58c363bb51356abe6e02f2a42fa5b882b62ee761887949a7492b37d2f1131f1f09389e78bfeab443e9d719c68317075147bd3fbb311c8060a853e110258a3aff8391b0bada867432fc4b9abb494724b17b989c8b09b58741cd9bca229f6e6e86de8a16480404de3269359610c5a82b37e65cbdccd61c7d94328d94e840b4b7d7a14f9e84800189b7829bf6c796756d335f38130d5b667be38183907dc5fa4e41e47bf0627f6d1f6f148c433f19f54be04ebdf526c5ec0c19556431566b21af39816bbbda3d703ba44386f003207d45c001483138d0578ad60d83e0161c8aef2102038880e98fec0dea33b11dcc642dd987a18a70bf242577ce425ef17ab8c4442d38fe2d794d73cee3dba7bb5ea8793bf3c598098e5ccdadb2aad410dbaec2b96f7ce9235485c5d4243c3c7803f9271658f36270265a45948ad083b1c4daa587607475f286595049a2def5618b19f569a1269ba1b93f07d91a927a95ba17c8adf97f8d633494ce901011ff66e90cbef59030df1332270fe49bbba15969ed97e81b387d6c37056717c65948093256e14aeceaae400ecb6054feffe23f518e27c31c2d68df1f681fc660c5ae63777f65deffe5d3f9e60c9bdce809441f025b573a9990e869e3a99e89cf8ec73c9c3c083d38b1cbeff6d668258363a79e97d4969e6e751b50aeadc88c823192183a52afeab97af97594a0f4612fe7d4c91febbe96f94a2c43d6580f67d49715437aa0912fa3368b13585ef735de02486b24684baa4f22de642508022247cb6451aed6211fe48be9f90f248146ba78bce992768472a1141e977f717ac227e43884528a09f1359a0707a640c54e5150bba640a7786c0008d6b516e55a28ac156fa199e89ee0a698bfd9be3102f2eb258836ebaccc5a3ed56d15f941b463c9c322ef83e8d4c74361283ead552f74baa1a237c3d470cf8c4c5b2355ea496b9f64c6c95fd4130c185872946a2efb3c89094d0648cb4d5f167bcd575496f8e2138701e22acac4b4f64f5a3694432fb228d1afe7fe20b5c89334e6da0473271a0950960046a667a2cf49a5e8f6e1aa42ed47df953467214654f51a746b5a932a7fe362ccf6548e55647459c38912f4e9ea1713302be78b080c5f511a97bed4f0e18d56e3173d1b98869b2f3220ca6589545cf537e9e3de0c30df3be3df94e9e8467507937e7d6fe9215981555844ecefcd238b153fbcbe2fe842bbccc2191276a6edcf7e61d8d5151830bb5bfacea0d7ced710b51067fc9239913d325daacf4d9468f062f475f063f1ab7d66b3088328934283076dc5da96d42644ac050a871b871b5aeb9080321235163c48ddafaa6820d14109a49c267465ca67b8f8f96acd353dc800dac6c8e4f77a28adbc311d697d2ee112802aa386dde97461d82190842d3daf320d15fbb8b00df05a23712c948564530b2a3e73f9163cd927952be472ecd41a092f8a0c174817c94272d5900f8b2b97b4cbd7dad78a662b25ca85ba297bbc27d35de9daf05ee508c029bc6ac51b481d9cdce8a62d57b780a31e445230695b182deedfa672563f12e38803ad4b7a4e098771cd5999100fd990889158e2f6daa82cc81fbb14d000a0cd5c36864b6411c38605ea96f84f56d302f656b3ad2764f4d9c22154ea0c4df732419e98ab17dea3fc568e5ec8cf3966b0a2efe978d907fc038ea7d9c5ff07e0b53597d812424858702f482bf8681156f4f5dc6889305f80bc2600637c092d625f38834a81554e197d829800a24eccf44e1064239fb64b634835d9cfdec4b120c201b84aef316b1eff305c434f421cd7a0a0d68ecfbec8111942239b1d7e4e13ac08095ff8d950261730de7690082ce2aafa7b84c8854ca951bd0b4919a810d3b65268ec9296e8c1f4671409a4f13709b66d6ae349250948386f340ca26087331df244c3ab0eb50436c1dff2a326cfa3aad429bffe44be9d67afc400dea987b6438fc6268d98e4e1f3beb4e923360ffbd681a56ab342a8163ea62be9550742551863893af2bbca06193e1f0c1728b63e38633ad6b621938b39ce658c2bbdad34893683bf2092a8f480834e3c4e1512c478816b0d0cd136a8a1620884f2eba2a6f9eca8769cf1263f90c99416dc90cf62c0f59a6ac5872ebf5d09e658196cc0dc3bd9b7982ad3056f4a124bdc78d055cc07391824699147ad125050cae490a57ac5ac69e735dab9539c5cb50feb1cf16fdfce21d91f049af18a511aa8385b357cef17dc5eb002a6e56516f66cbf9c60a187e4ffc132d06819848f088b84a40e915cbb9a4041655303b0fb6535c60b6910cb20e2b1b61bec2604edd7bdcfe12d62885a0108d8cc12f694cc1242e0877a0038025110d1d674748db792f94ec30f67ee80e62fe25e9879d01310b2595e2f274fb16b6231cce54fd0e70f3a3e8e7cbe7900b4099ef25c39b9896422d423dd566c299572b6bf4e1acb031f1881703b15d651098db370f275cd75a71380d76cd6cc5925e733adc07d3f8314fb562ea5d70b84bc6932f76d7b84e6a054a2f944927c9fccab571bac208482be656645f20ec1fc803f78598c01dcc5722067268e2f749f4c01c405460f60dcc03880ef4c3c4ec0331813b8488813ce8c431f4ceacbd693de7930febd525f9889f7bdd8772f7f9471cf424a801f5f84268b9fed17164407151d4869f2a9ddf09686bc9cbaaf7ab1302b49013b4315842007080ff748a89558473254a3bfe808a5836a6fa9169babd7478853547a0903be7c1ff696a1653f83100ea318b03c4cdc07d5619ef27bb557ed2584dd1195b213e5dd2e0e9f3631cea54f23aedb86c2474a0d0f17c286fde596fb9d27e4bb3fddfd515d5bc461ec4a692309accdd2d04730048076ae8c153b483396966acf10e4ab7c7fba8fcde8fd00ebe1a3cd3e191fab4ba085d742572ec8f7c427e50a07bd0c52e72b39164f94f0e280c3fe82894677035452db99cb490a9ff338b0b520185651a6166c2481d3c2296fabafce32182708389eb3bf6f56d93f309823887b90040e2fb6a124c5998d8efc1ba36c4100a9bdb6f643030fbb4e6f4863122e83eee3d72f85b45bb7c043995ffc8862139b05022893063ad2769df770f43073c17fde9ebcacb8d7b35a299e762b7bb7933cf0cd67b8d120324d33c88cfd0fb36f673178f89d79ca700a8c0c91100a8901c957d78476644e68a74f3c44537cdb41959d7b2122636b66cfb51f315a26389e91ace00056bbe7e83b4d4daf5c79e243b2e9265dbe0ce00639239f29cac1c1092029b7e0c8b070eb69d967fcdca258db61b60771ea17ec6e3e6f5a8762c5809dd496fad72b22a2f93ccfc9b58f62a13e77fe62b7ef9e69a3bb0263703a1fa921017cb33241b316e16961cb2d9281ca969ba0e0c51b7391b02a644664b4b57b15be303c4dd25125f892b9b48d41713ac70e86c604fe329e7f1d19629112d3546cde08796f2d718a7c24dc5b53d2d8af447a684ed466ca411506d6f20c013024effdb30b6048eda0cf38da583e6d55c11d6311d4a3d57c2cecd9703bc4c349387fb2181c8f76cce7bedc336726708179c8d5c2ac8e22e86f3cf6db92122065ccd37094acedbad28b75dfc4b2be05967ff6d2e7017a44cd5ffd072b40f1726e6115f6f20ac3feedc8427ba60cffa8ab4e97f0e5c3d6baf030b6506632ecd048c6544ff6034247f283c43160b82fe2955a580add01d6049714b0b9a56dd1ef7fa81c3110d71410f1ad299df9e04a62f53c09c8821f97c64d4b4ce858cf9a494f5bc5e10d490226ffab6d733105e9e77a17a6a5e4f1771b8c81af4909bff365476c4ab2cd23432d855fb971a0ae56129f10e429e83134d2ff24e659807049e832cb244c07e20dde2b347b28359bc0c6be0c5f5ca507f171215821d394c049f43334d3f0bd1de81da3916bc19c635e9b7d6fa8865e21f98678c2a51c350aa2874341674b2ed00bff93bacb5b8bb112954c83cd2a26eb9035c828c4610211015cee6e9408f4dce180950ea6b12f83e728a9222931e52e8ebc62ac00743a79ebaf46d18d5f704b733d41de57712a6c5f1a24cb89a7ded089c41ef407f310f195f520332fd7106781f544ef35147126285a53babe24a3f18e7018af65a4f0ad1349d66a44d1ac4f4c78f5366128b66440169a014ac0f1f4da899b25be6b7d43de656ea1ee7c6cf8d4f98ce916e2e07898f47d44f6c82955ed889043d0f8c2720985ca5f2c9e638b05da15dded8d9e861e369f4cd23f9f4921c4abe86388eeff8c53686646c699a60c8d64e8757b658ad21b375a70767ab5d156c912311444e6213dd50641112327d2039b7ae404045d080633fff9d8d8064338558e979752f2473df2ba60d7c4907145fa289e4cbbbdc80cb71be300ec042df0b0032d40bbee478410bb1fba703c61bcedeceb3c144bb0942bf5e43324e2f55c8c219ebc5e0c08088cc6f2dc19af00e04f7b34f625d7db9c05bfc6a935aa2071844a280ef75099f1bdd80609fdf1fb6811a01d058899ff31112ce575432fde7de393ecd26b85bd75ad2631e83e383f26f72e3574129698c1ed44d1a120b3f00ef773f6beb289d9db6efbf068c25b0d5c3dcddd2035884633e664be626fecf55b9c4dd76636494ef1512330e13a8eb17df3d5def417590e6bf4ceea70af393ca730132542f877751b1cf2d217cc0945a58747f9ff4b1d054a1a2a76a4ece69ac5a2e2c2335ec3120f7838afe768f9bc6fecc8ec410694f9355245f85156ea5454b2b0f356ef4086c8e0469e99fcdc0e7469385d989e8d140020bf42e9d54c1f3b0e414ece726235d09e29d6754cb7e6eb66e309a0353e6ca075c7bed861e1b04502212089bd60d7d721040993053e9038e131e045c0fd0e333fd5e6e0ab3c73644c2dc2b137d0edd6021c967d25978c91d645b3a3e78936d322cac519a82ece8439db1f38e53d36ebe31172ff5ac314a971e942cc57123164f43fb5a2627eafe2959ba811c1a77845a09455d3bb8e9fe9e4e9ef1e9d2b5cb193aece0e9275e09a697480e4eab4a2f055f822e048e363a12311d68a461396dcb2e1d544755a7580c40d589ae0f9de17cd2f6f64cb00a385e49337f1a8b580f391fa4032bedfed934d5686b53d4f8450f0f16931b6054eb957683a6166725947548548db1ced4581bd6e1a7f4498738f192eb17f4aa4b538a0f50cde1af3bd3da81d61bedfb3fe1662e81ff8f12f8d064cbe3512507bae0edc36832683666905766107934c1e2c138369dc4e2182acccc023c1749a473f12419c928d3b20436f33e5a070759c3a8fb43d0413f3a941031772f2b79b68ddaa880cd2bdda1bc2b37e7a0d6410799c5e7203ed2901976b93d45e238ca5822e4389a1e21b64685299cb58abd8610021c15482d93232cb12e7b74d452012f9cbb889abdfb5db69c02040e46b027f0b2348e27f0d859184ff2d83a14775ee24d70a7f358bfc195cb540f144972a72ed9391871a97b018150a853f87d2a73aa5bd7c5824b68538b2ebacf21ec080e5790df28485dc7f060eeb280084bb2902b1a04770c8d6f048d3ed32740d2ddd4b4b97fd99b945ce91eebace9ac5011a04c62dfc190270c27180f9f101add2e804407112e4a337ec08a5bf4b10abb0c6288fba47a7440016aa302587f0b641c4886baff0f13c092b4a03137cea7cf0b07a40989a91db164fcecaed85c00644e9737c7e1034092c2561733d6ac333b2613f7b362d4c4add99cb0a874583ed468f751d4b4cc42cfb13a551ed1fd2b002e7a0a542b5d66d7ced5fedd0afb3cb9f1eb6c85cbd6a1095fdb3b7764d98b3ea862d2d62d1bf73609395bf396b2f8e18b1ceaf30a4fed1a7dbf0bca84640580751ac1dc5b538c6c2d33c71a968f63227196117d6ff2b688045d170c11189910eee521dd1c0587435aaa055e20415790f7cb82468b8f1cd358b19eead49c6e29ef4aa70609b2665c286b2078f7131cf5568b53dfa045530733796eec4d4014893c10de99baa7cdf453a3641a614d815a92cf33c0ea0bc247e12077e86fb6e9caa6a063b0c6e34676f9052777a1b2c621606129baefc9bec34df2b44375bcfa46cf65b3cd5899607285630d04fbb9d84aa55701e8ef8c2efefdefafd302c3d16dd1995f4f76adb358836f0f8e28eb398eb61050c3efb75058ef9879c4533a3c0dad7639f78d34864ea45ea0d7c235a97fbb81e11a08c035f59eba77e55fd38700984a6eeba764e6b9d5f95bbd106905afcd1151b774db7b8130a7671eef39327f304246d0398312250f7e2c7bcd1f84513749878ecec8e6761745268ff9a0763664f46a5016f4a68f196120df07578feed878a0646aac0a26a04177fb3def46f84303f3d0bb8a7dfa76afff361565718f0aeed1303b212bf3f6afc4718f45bbdfa9c28c3b9e41761e14fa8a2d9c5e54d4fcd24ab505816f234914fce7fa5390f4f2af5bf391b34093023f8daafe050b9a657803692afa6908cc5169d4c1a084db60d6e75d59eaff62c323aefd13ad6f9618fd7540aaf772d4f9e069a91da94a536e7afa0bad872d052d96220d57bfce84c1d97521b3524b0baa47ddac20185ecc5e305daca190da7ebb4cb2dd85d74de7b8befa660c0fb8e43718a46048aed7c9900a509cf4fc8beb7f4c2d4237cd52325180c93bc40e8aa96d71fd21d8848af90f0e6b701ec16eea1cabb50b0da625e38543f3698386beed778cca34754f57e9ec0397ce928506efa33dda9b57f0cef911e06935cbc62302e7f0a94cb3f8032e198af3b755916a66326a5af8836e05586633c4784104af0bdb6d87fcb551d51a8239faab6c45e49f9b97077571c3eac1cf2cb319dfccb64ee76835ccace49eb7c05f8fd610952339a1b39630df0ddf5e592aad692b287cd3baa68c36cd5aea410182ceee5c1ae7d7c757dcecbc9be92d9fb5549d8d648595433c7400e6e41089b77d912b2ade2c1cf7b27849603c9af11ecf11128a08728d91870f09335e4c3005baf26968ac2ce6b7272c92f378975eba3da119c0abd267efb3157ab1645cb91737a3c34d1700d65439ed7e009825596d438891dd3b5a29ab9d1c3957c91adc44d1be438d2b78a28f3668b99e7ea36f3443d02829883bc3d40895aafe541ecee09b819245bdd6fe0a308aa6b739d3b196ab5bed45c56854d30a36c2758ebc68a39cdfe390639c74febae3de83555cee4e2147297ee34dcf8c4a1f984893f776d1ed8349c7ac44ba2f12ba6f340aaeb05b3b289880f7a0aff4326fa67cec65856f90cfde70f97d23a68f45144d269d60b09f200e4dcc36310b0c44345e3c3e58e13d1b84c17a0e8632a7fb53a8a729a0548fda0a0c6b63d59dc851608330002b577d77c30c841b59d5bbe3b01aba4f63f464e4860b81cafc0bcdd74d3470154ebb353c64be404d471bd15d976310ee13a2eddcd894cb6cb24ca47e8150f0707d623bee8b21fa466a517ae1b745b2a524bcab238f23eefadef91b0e70d8fe2a6f60703627c11d24b340dcd5682a43375c0795b2c5a132f2f8d05acbaaf8429d6735e5b7af5bd3e8d2e8ee818fe820c2868f7f447d1aab17dba0a0ef1318892a24775646f1b747099c89d9df1250c5148ba886383764de2ee4077f1541130cae3cc26d8227af254200cf7c03a5ab9cc9fef4370370494a238741bf97b1bccae3c3aebcc858be666d50d5c75a7f57b96f4515ed1b783e92c6a794985c4e69c0dd7dcefdf31129aa0067fbf65189df91c809877e034da3f42a9747af7663e1f69f4e48c425094d253cf75bfeeefb94f7f1b875a54e2c7eee3a63da0457e613c013e121e971e70eced95523137b007e0300586edce400ca5eca3a0c3603ca88e7ca9491fc22420c2ff945e0b66a8524c3f1e91b2b7ba55183483b940c62e84b7b416469cb668e2d3e171aa156da9463f37542e602e0157775b59d63b8fa94ac04832eac92e7128da15b51803d520c781370ae91133b174d29d9b59af66ab6ea69415b903b5588c5380f114807478b6eecfc8560f65cc50cefb92ae8e17355fff85c9596254814eefc73151c06ba6a17a4b122f5e82dd0a148e4aad07c225a427a8520edf91935215d5569c7452b91583d6043789b05601851cc3f86ec9296c426e60500c591425d50be5803e0cbd283a2c20780408f4568cc44f0cacf328af104c0892904be317cc3f2b8c5d10759cdb8303fcba2372e32f626b4b464a1a563cf805d27248843a05d71365d277184be02e232b4b8054f6c86c516e08248f5ed70843a203c4a9b2f707f4b03d1e4038c6d0eb1d66773212387fcbe311008a40bd83587bac1794a62aba6c129a945b2f0b8de217c72f464d469348e36ec557004a949e1e074e9e5675c46ea7a1f09c7c10350a702d50476f8c4d2e42db0437224f785ceb5d171b0f218fff4e8235b3bbe6bad5ea53bc2e79f8a9e39bd3944f8ede1dbd5066f40fd4ea17f3d3cdeaae2352f3062178fc282fb069f0180fc493d045cb72d820b3195d257570c4554e40359e76a4c0a5be2cb6f833898a1c985ba37d0a882cc9f28447c7941ede7cdb9bf0c60a3465b5d1b2a549107ced0ee716c61af8c0399a1dcda652de6dc7499fadb8cd59799d462e336229101b3f7227b78a0c550f4e7abb8e7376c3ea6dd02d8e60c96aff646588d649072e9eacd573899f20531c4fdeaecbbbcb28d629a8798a0190bf00e1070d3c67f7dfae964b74e70bdbd55bb7c1721b63c40a672ec05546233b4fe4b07fa8bcab119125cfa032ff153f4be130ae2053e385de1071f5605dea6c7b7a71841c695feb8b4f2c9aac25aaabf40da6dcf112d76857165e38eba693875a1937450356f148aa9fc820b1f4642c6774d664c03ab7def16b6ac7cced45c37b524e90d3815186079a75cde5392a7172caa21e6fc736ee500dce2e632a4a01277cba1a77893228649a75509adeb44910146b6f66e0ea20086e5e39ba4bde0fa7b3571b704732fdb024a34e3b11fd4555b1cbac7415a254aa61bbac0907d0229f4e71d48f8d209a57dcd903af28a49f86e42852e3396b4e2e1a49f9a7ccb2e9539c40450624ff2b4b53150bb4ec568ad430ae702f031fb009a2b93986f2c63c6a50d101884dc2a18936e4d3231dd5c4312ce45126757f247be248e98ef284a1bcb782b06bb45f3f2667cb938ef39d17ad838e5a8c0c61aca43c15d4087a2ed1d37664707a42e5ab01e2105df0acccbcbd2bf10491ff020056f105d81c05688fd3669e27f0599dd5ec7b5da8193ebbc646793d5201941bd7f1114621a825210e36aee043e2c5de1581848d6ec48af10c882a10ef6f421c599d994df2b72c4342e17285d451aa17d51f167a62212414289d01cdc04f7b1c0992b5af48073a25c8ac6955700770d47640a2a32aa2f743b9052a72a6f718f090f3795fb45448258a949e3c2d3001869c55268f53a0af557eca6cba03ad53c6d33d7621e0451c403531033fb90b2ce0595ada648c942f45b320673558fac58041dfcc4e42f8fc4e01146c861a5b8866f57be428e04dae6dc3aac25ba49e644b915c2eff8845a56627324cfab1b132e439a9b8c05cd294db9714b114a5a5de913a4d6c0ed41cbc7d52cf80dae368c78524d0a910a30d8990281a3c3c3248fd9f040e000b6b8f39f24c944d9381a7947e39a932168d2b1e98254ee876248471ab2e447cbcd16c74e0a01222cdf2d0065df39b2727ac61f23f6e6ff4f2dd3b052a94811f30a147db23b566f769df074f42a6e81c4c78bbbca2f10f3ba2f7eb049a1eaae9419f78b366f74961bcc8cb5b59fc465ab60ed27555163298b85b8e003780f9f51404f3272bf67ba0a17fef3dccfcf4d41e9308d9a6efdebb8d5a311842fbc55ed232618e454f4d0605c732a33d77dd39201abf41cff8439e62baee7d6917a96346e8cf54f614aac80b16566e4da47a2421bc676d478c9f99fbbd4de4f38d896cc5130591d59a01ae901f89c1127c8c73a8703af4fd687c5608b61ab357fc5be0cac5bf65fa40241b3b7835b2d571b7954343fa4522a1f7c19f0f95fedfb1544d070d4b2aa9f0496bcd23676e9706fdd0ffff068730d045b05938c945fa3eac8669219b63374c522d718ec324db8d1d76e15e1ea6228075b23a64181ff3d894543c1c36b1f18b28639da262ce500d4d938ac0795a75f2c70beaa4cfcac18df099f120c0e809e873f09844c24f2e63e1b347d9d1943ca43d4aa0897d086efcb3f08d42693f0470dbb8bcd233a089931955467af765b648f72a4fe00736d405346bf696c573df727c433efdd78cf04190f918f78a517c2235b2ab596b4bce335ca5355706aab034050d5783da11d6322696eb5e95c8105b5a49469e4423103fbe9c566479e5df57226f42cd9f61d2f8338a46c8fdc8bcd17193f1f6efffe4458574f16f8c58615195f7a4b2cb60175535e94070dc96ca55d38e9c771c414518500d215dbc776b054f3cbf400cf4b45dbbc102c8548f6959942478f572c8c6dad9cb3dace0e2033eecc792c6cc21bdbaba03df48f5aed239f305249b3200a95d9f82808e3b28a6acd9db4b689d52ab925ff5c21c645cba518641879c34cae5df2b525429ea150426d040191c87741cf10a22557d4c242e3a42656231a5345b71bdb492061f884829a5c621c348b0ff5249863ac579c30696e0e8a466bc87177268d75ace43dbbd0420157650bc3e9b68ad7e1360904fc17d66a11509cee6f6ce02e4c0fda70998138250b8e7e29063b323bdb3cb6205a7b5d74fcdd974dd24581fd25ac6ec885b6749d88bea13fd9a05de7fa3df72d76b86f0d0008e54ff314209012eaa99f2e4a43c98e57b48ddc71f2e20e4eabfdda6056d1a8a33c7ba372325e444f5ae4f4f174bea29097f72f28a25258445ac2d6a4dd932492491fdc4e8765c709cce556250a82af632eb3693f5da5cc2f4132de8f2a1e6f7f67077e776ad66b5de16e7337206226a72887fabf4a2005444b22601cd657e81699af315ca3ba946898e968401d0a9edbdd93f9db163820d850dffa3154f36850a9110131182297de329005f7c080b78a6d70dc834973dce73f990b8e98133217229cba5c10c4261f9012be2537747ad5ed4cc6e9a68d85f99528076c43711b9b7ae49571e5804b0d1729d00055ec80bea434a46b3440a85ca8d4b51379d3ff17dad105cf86e371a1db59b9964cc6a0c37ec10cd03c20610e03e00224d0bf90f77846f7370204db3998ff6bb15f196499b7e65cb53b529460c57541d0b6d18995fb97a9397a345a2a8005ff10565e3e24327ae35ae67e8264f14f37dd30da367724764ade57d0488560a009f89210695311297eeef2314de8af1ed8029df55d73e78b2315d2e9a38adb2bfff3f8cbd740a303a9a1ddd18e80fffec7f031fec27e81d29f147a47953d6ee2afa58c13a080915eddfea149eb1cbb632ded0a69c719bc9a003e279d5094e014626406ca81593c2bf58b3b189ae038d55b0249e3515341f2b00cb166ca803c796049b787a128bb0ed299b6c45eddaa1ff8e63b4441570bf77660bf904383b953b203849539e92852bc8b8c00d6c84bba23b0b80c044c5d69a41b3b146b8a6c8af2734bf5cb1ff169d053a43ba7b36fc4e224bcf0bc8726ade7c28150bf2808e7d02e158661081680f0c5d183740b6e4a18249c900d1f3c280a43c0fa9cc1618082ad9a7cbe05650887c1272774e18ce0120dd8323c8cd0bdbedd0a22d4a502507c475ff96a1bd2ae0810eef3c3030dda5de686f2ee36443e4d8a0abecc2d171dc9746203b648aad8207cff8c6b296ea42aee6e96ef0941f9a92ee05f7e377aed264df863ebc0a6a7c1478f6d5ceb951616cd2ba9cef70729396d5daa22960b35a0c42928a25ae169bea82328621033d7b0d0508428b22f0f4385099844e9b341a46f5072408af5008a589fee2270fe49478439d3240530e143aae9c8edc24173ab1d08e180e8095afa4eab710098289fdfe37299633fb061c794f0a97afe4b1ad7551fddc56031fa2043c476513915b4096f7e4f63c32326da215f481d531998561b66de7d703473c2511b676deed063aa9462dc7c9faa52214f086e90cd0695a2529edb824ba692bd3371540adbcf3ee33d6007e3b23587ed393d896330b5807a33d4871ba2b08a149108394c3e099e0a111ece37f050957c677da45510de4df439dd6d469ec43405cf76d0e990427df30b707296d5aede071a660c0c9690279be6b4e28cf657d315da975b8b93ec3c974e4a1fc8764bb718c837f1eb1c14bfc520484d3e26ecb3d926c876d35fd4865af14019735cbb70e277f504bccfbc5e556d0d9fd5bb78efc4d8841bcfa4396e1452431af2b8973ffaa4b917d89097b258b5e1efe05df1f74b5589fef683eab1e0e5ae57728067e94dd3b3cb094b1b4e43576c2b69c964ce23188d3db24b4e0528ac174aed4ef07d281cb1fa8d21d714ff1de93be340ef30bd85018fdd268e5dc660d8c19b7b0c41dd994f02d3cbb8af4aa3c0f4b423de02f9c1b92bd4ed36972dc22967bb5a5672eb3995aaee9af0a3001661b4772d00106157f843b115668fecc97362e37b28ab7d03cd1fd41f4f6b40fb4d43e9ddab161d828945b06812321ab470df4d737cca00cb89f5046c93a111e71f1380be7aa2b0ee6f689e63b13b250d6054fe51cf1119cc773898fcbb0a2565ada38b45e8eff31ec3ce418d87b8996f2a27080a263bea7fe8a80ff7ebeee4f49751c6548991fe4ed089edeee0027d68f1f098f0cb7fe093f03ea797e52f6c9fd96b0e2a1241ae9fba0b0bc4ffd53ac9f39a83e621867c5eee0ae63fca2bee040b5e8bc7207bfd090c461376dd5f90d9a50c4062b2ffd6279f2fe7bc3fd9387e87f0e753a7461e79b630f7768652d9ff12a8ce590129697c37775f0c1f1c08b851bd6a5e5aa2791be1f886a76b416a22e7b941d8f6a91efd19c57597a976c4e4a623d16e69c5511a6d7a9a56e6b7ea7e96be3d140c228fc6219cd5cb400eece53e0223b75c4c2928ba59c83b661986eda349ae21955e0be0a001dd97c5973752a7c2403ba0a88d08a6c4857a0040a2d88ede21e87563a1e9b50e50c472e7b98301c9b31bca5d43f9b907c00e6b7ba5ba9ea5ad39c038e17a44d4c4716e0b7cee1b19f5c6d50c7a446f2e9c6620e2bc49c0959c46bcf0866b7429e3346e54bf37ec7561d47a16b076cbc554ce01278e4531acb7528b3c4935be25fcff550c61826aa311ed396b982250640e142927da723427b25518ccdf6792b1268506a88b803312c8b21226a0fcc37ed5cf10cf39bbcc8316efdcc451bd6602409ce75cdfb8bf71e3d06f7057858a5c87742df2602ea4a04db9b45862b4fa70af53c06661b4035ca538d807b2ead0877bc9f713e85a31c5bd89f873e6d6a3cd2e4b07527f9225ae2eb15230cb50c4e565ce22b7d9653b4b5c384f6b81f4c342e42343ceaac025b80aa7901ba64c9060b2211f556a909cac5f14ec7a378a4b908394aab56e2fd3fb751591f10c115119f3c1817dd48fd6ad048a345d7334b7da0743e6b838789d795e53a3d6609a8c0bbfd499e4ade8278a5e5625c72ca78be2cc57460094be0bf8f4cbb0ffdd0148e336678e9ce7986147c40efdaab8f3bad1b6aa6f503f732c07636f518258d08900697c31b8af2bd146e20930c0e72eaa15bd13ecf5fe198f269c86ed037474c0000b4e94023ed451d1b4c6a45f459da25b0d41a841924565890e0feeb765926ed0b2268378d0e80d05a5dadbd96879bd6016b316899f055032277c8dcbfd4ab45d78109720e4ac48606da672e91ffc9bf232b6b3685394fd2a6bd8e88ac217e366d1fcf0c73f044d459f3ffd6cf8ddb150dadff00ad6f23797df0c8bcfbe7b825ac9c43861e132404045e7d65eb3b17818431933f1e6aff6f695624a51434e65383e4022a7ad06473a71a1c34da59ba2374ee15f6ec4832035613bd470a2ec20ef50db1349a169268050a4c5e72b8c6feefd6939cc35f1639330f2985516a89550d8431eef069c54f969b722e635259adf9a9576ccde5bb4520dba8aa7247335a18cefa15d6d8ebf540cacb034da6a85ff813ebcfb09029cf99fe38bf6dba6fff6a9b1d204136352f4c56a134c6db507520bad93c37ab11338da00b6ce18a8ca4f852d80ee2ea6fb0e64ccc049f2b4cedae6614cf40368b497f30b82c3f38c3623b8b4746f46db64a238717a275dddf4421c34689e7e3e1e4b55a66aebc9eff114bae55c83c56079226afffff7139b93c5e05ed0222a60a2f6db774d946961000ebb907f246a7839a7f8d0542e32630eaceb046ad157ba55301c1d251d0981b279aefbabbbad73dd6d37865549445c4273ae7626affe9b9c4ecd54f76dc61810765900e1e0302c57b4a4d7d9281fabd5266b759fd8c78f71281a9b541ed3571fe8ffbbb54d08219b90bdb7943b1b0cce0b0d0b27b6ac5b67a1f7574dbd5dbf26dadb757eeffa76fdb862ae0dc6b0d4317e42c5d47bee1859ae3b389a88c1a73d2863ff620e68cb44c1391ac97c6602a5de1bf5de7b0f0a9b8b7134d4af8da5de13e83531d4de2766a6efea3057536fd425333333333333648bd9fa6566b698ad5f6666abd279f67d62860f42869021ac596fd4213c99e009beb66f0e7368fbd8fae0fa189db6ef55f8e38d7876f63078458bca3a0a9b77d35f4c6f3dba19b05c5dbdd5b6de640fbd1b95201a2e8001bd4c24af105561222b977778878789b84a3311c9045191952a24a0d7155d972503427efcb4d014309c244b7a08679dcc7b01e52b5c31919ddb2be58fed6797a171596fc7f2b93aa72329e7deeb4d5e1696e61de6a1ce4065cd77a8f4c0b07bef5024e061ca8183236416e3a664366898ba7f446f7d30d0eb68d81cfc9a6d8ea76947bc571ef588deda05e5e0d127674990a55f3ba022ea080e76984053cc1ba22f5b40afc906f50f8605be4b438f7551d25064695817e54a155b51470401a88b72832a516ee0f37eaed8bee9966249efad05a21bfe147dfab13a6d2d002f27d4590cc3e902963e35166771b890e5084e17b0b07d15a70b58ac93e9eee9c1c95a80bdd728a077ebed997a7b1dc0aa3b99183ea036b7514df158753d56bfd6f958dfaaef2dde87f56ac7c5559e1f67e2abadb778aa5257a170a503ea2c970e2a2a15958a8a74352006d83e1ff88b73a8571f627b5a6f989c2b5e578501c2b60f84642d0bce24e0af8a014e826f491f7d1df611af9305ac6590394612250e4580f01cd83d89431353c65a8b35f5c62fbe2872e88922870dc4618a8e12072b51e2502588096b72b02ccbbaae287258e2a2c82189947180cf7a0f3ef9de7b0fbe07e1a3de83efbdf71e7c0fbebc94624cefc1f7e07befbdf7de7b197cf03df8de7befbdf7de7befbdf71eacec9e4c6f0fbe07e1e3f760f6dc73ee5d167dc1755dd7052f0baba475551775c5eb5ddd364426154994c6dfe82bca755dd76551f25df2aaecb5a92eea8a178c51460cbb32199f945926afde62ccb0b1b111800d26abc8725ea3f7b0d175c9017332204c1223d30073ce24a18b46b06ce7bdb7cd1edc94a9d0cbafe7d5c4376441b2c34feca54244945f8f4f13c1082908872cccc2442c34f4e7f36ae89b81402fe8d510e1041e00ddf84059e9f3b1f0481f46478c958558e8d55037030f1d7d4235a8424454a50a152a5464de14a894475828a0d70d29d127f9ea95ab4aa29683476f5d6d301bf237b96b31b28ab98efaad2ea56653fdda54574299f8a6ffca464ccfd8f40927c912594dbdb55014826e65a5dcd9d9b1f2f252b9060a95c4cb124e1ceeef889ee93ec15773986cdc4cdb58573901426e915d77ae2fbd41ea5e55ccd41b84ce447b839563c7f410ba77193c99616a2c4f6c3fe649646e0cce6c13380451a218d1a712d0bb93b92f572c3bb1a4b73c8a25bd8f9d5d90ae9d44c241aa973e1c7b99d4dc65341fee6602dcadcb8943c5cebb98bf92b0a399efb963d6dbc385bccb1bd4456181141640b1f32efa7412adb2375275bdbd5e6a69bd3d7cfe464f8d9e94e4f88dc64e74ce8f707e37717ccc6b4a78aeca643e43039d9f4f8ed15f1387d20beb2c479f481adb8b0614c667eef2d10c0cce66b41c130706c613878b557209b92e3fe406db00bdf349e56abc30c22c7a353fbc1a209ef3a6e99c3a9f00a04a9a4a6354d3a5fd50ad9f26cc3f6816109af584adf5f3666e5e6458db4b5b714344b5935ef31b59484440ddcdf5bb6daf460abdd82c175b6494824022a35492610424f0d0211ebe22c5129658cc084828b262c708477837fc521032aebc1691656b09df72c2d61557c3593e963e357135d8f22da25773550dc8eb385f0abd1a09c47f51852c037d4002b9d8f2e23041c8f89c52f4427be90d26888aa36d1077403d58625f7c124d28d0ea30348ba695aee1c97646606b8068e2a218b162f9332808192f2c247d3a5d0b8965a54fcd04fbac222bbd11d17a65ad5752ad5e3aeb35d9cb16d0f944c98a661b5015b35eaba8e85957fae4b23ccbe375a08667b44d8706b3004b03373c71601c83d99b49cc0a27143737188701e459d261547e8e094583997ff97c0e0d66561804a508d10954e72503ea5247bff3097434b3cade489264048b9d77f1282ce0b13a5817850548ec02dc85ec18e01a90773c0c302fc31301eef296e648f5f6507fbc581797bdb990b9a9d2ded854043a9ff07dd0bb20917efcb0f4cdae37ea63ded9d99d4de9c3c5d9ba89e3a252ea80789805b85bb7aa06de5d12f3323e6897ad8cbb919abb91c149b2a43767570469771e4108dfc07e8bd6f5b26d69d2e9473a6deaad4f22d537519da4f5ef7c32cab2620ad20e8907c6f9a49e3e5d1624227dba3d907cfa7465908af4e9064132d2a76b221de9d32d9190f4e9cafcf785f4d3a7db82b4a44f77e62ace2735e9d3ddee723ec9890f365a68bca38306b398b4cb080bcd5aa1593ebdf1b6dd459bd15c6f3357a1bdd89091798946102d2ec3e63d08e03078d821e6a327429c3f8252815e44e921a84f370052fa745f84fa744d57071a54fa74616054e9d39d51d4a77bfa1056fa74597cc5953edd205ec22223c6496b025e3d16506f7c21346ba7377e10a58dc5577c8676ad2218191d6adc44c45f8a780f307f51f36ae333cb8d29463b239e514f9fae1d11e9d37d31f2e9d3ada3227dbaa77b333ad2a73b8011923edd1e4649fa740930fa29c0f9a3257dba425c87f3474dfa7467fce5fc91933e5d6d093894c56aa2c92bbdf536e32f174273bd09711d340268d72a1a806615f5665fb5179aebedc587d05c6f03380dcdf546801b9f4ffa740370fe84d2a74be3fc09d4a73bc4f9334a9feef933a84ff7664ae9d32dc0e7f953a84fd78893ce9f53fa74714ecf17c747e74f2a7dba48dcc5f993a84ff700fff92671ed7c9558e771feb4d2a79b8023e07c95c82be0fc89a54ff70153ae8004683d10a041295a129a85c5ba82846659c1a15945389ab5c408cdfa29806625b1909c346965084d16d1d06495006892a84a17c1271175115715024945af26c7aaeecd643ad4fb32c42bea9529ea1b0014a1a25e1a304b170180d752bd9b4bbd369a46a232449a42a21a498a460a6a8d04d4a7d2f93daec4039668e2e52c44bd2f343ea35e53006eaa378645bd32423c887ab71997516f0c169fa997861392711f5cd1aba139dfbaf26a629c8138ffeab98cbc1aeb3fbc870ac32a92a9d7c65eabc8f2ccf95612eba74f3e9c6f2de9530fe75b4d2ca03e69e75b422fea7d79f15aafc9d61b5344bd322e4e44bd5b8d7a63902e807a69d8d46bd3c292447db2395f56e99300ce97457daa71bebc39dfdae95311e75b3e7d6a71be51ef0b01ea3511e003a8376600b751af8c8dd7d4bbd51ca6de1831f5d2d8a15e1b1eeab561af24028046227a333cc4f2701fb49923fe42836180bbd0b41c9f1ad59ca872beed88b17d8818305e8ae1834d0c01c4d0b67a6dee438c2162945eec88f11e8ed86860dc85e644e352a35e1fbe552732227a70a1a1399d87890ff5ba54363fc51842c628b9dc87183ed43bf31e62540ff030f1a187f330b1a957498c9f68ea2dd19c86380f13977a6bdc87997a89780fdf76c0f80b1a9a1733341bcdcc761e2630ea5542f3173b6876945c6c3e23806f97d1f143007e90f98a1f60bc380f939b1fec0f9a3d8c1f64eabdf98b1f02b042d3f1c3ab016480d0a13a21af761a346ed4fbe23204a805a0519da01488f33079512f012a7b1ad50979532f0df9c30d02fcc50f2fea85f1fac38b7a1e26b65e253ffc0610347e780080a01180f3302140bd37fe0246bd0478bd8c0e1dbe0208ed2e8058e10206103240c090390f131dea5502c457e8d080b80b1d2b74b8390c7b995f9b57e561720bf0197786bcb4f330296200d95da8b866d46bc4b5ea04bd660ce0cfc5f5518e639587c92de2a6ea84bca60b21848d7a5dfcd589ac6624447582aa380f1317f5d65405b810d5096944bd42c8cb46cd5d5c2eead53eba5c8ccec3a400f52ab96e0313a2de19d5092ac48cf330a9a9d7c65d68f5d67cf4bf223e00cc24b101a8a0d7b0f963dacfc3a4887a95601fc0336157f15498cec384d65bc4b559ef00fe933492ac3c4c2ece2dc05f8c78398944a711d5095a807a715c86945180f33079a94e5496542ffd946fcd89ca2ac92159958789bc2f2c829827edd0cde2a55e160fc20ae23c4c66bd3115ce83a84e481cf50621e50e72b69c7d1e2638f52a91dfc10aa25e19561032cec324a6de98cf1dde2755272aab0400304648abc46221ad02bcc058b43a91590ff030a101cd4446e77a59cf58eec8aa6cf7ae588b0c0dd8357348e7ea839fdd229148b22bca058a65599665e9c0e429bed4e29f867da4cd572f63ec12832ca58fead7e55561aec763fc287fe1d460cf50f5fec8a89923e34c22b3f22c0216018b408bf6a2ecc5ac417b65570e762cc35ee5bb8658a9fdc81c64220e3e9714004df1cb85a3a16eb15354c28f26b4ebac675997357974806f5a2ae5047add883e5d5734e33a751a36981872a19301ea940b57832d75255c8ceb0b7474d281e4b4bd7efd623de499f8d1448fdee62f4d89dee6af7a446ff39626a5bcb02b61555895bd51bfbc40ef0c4bfdc5b0d47bf4e9c6b053dee0d127ec36d43179a3b7796cc6e8d3fd354f1a695413e8fca576b2252dcbbab3f29906c4fa1d62ad5b969549f93793c0b22c93b77ec9caaa64c5affbed607d1d91f2c492ac8bd20428d6b560eeea027514172e2e5c5cb8b88080e72a98c4b2e528404e2c05818ac89ea168e8a95ef5ce10df0c2bbc86baa3eaf964a07686145e555555acb64aca7a7fccb862cb182fdfb19255ac627c2ea09820e1755d525a97d77559b2e5706a0861f7ab00d149909242a926547f9779cc4260aabb1b26d48cde84f08dac97ef0d569918638c50b3ee134049c80ac7b2a476394694e92df2c4c9b0509285d54981c488755307c9ced8007655815e6a4f2d03a6442544254c61ca14a2121c8da389568802288a28514489024a14506418a86e07061ef4530226cd809de8ab6c2901344388071322b6dfe33234a844a864662352137474d674a075d1b1996db922c3575d9a12ebd82b0cf6ad4f0c679f5efd764da637f8ed751b3dd28f4e7f9ffdb99c3518791c29083181b654251bd54c2f9d693c8ec01e3dd3971a0f27d0fb478181527733afe6860d17a644ac4990951c4750c99cb379330ec8b96dc62975e96ae0a916921214e46a4b11e216aa1d24244528e835793342a070e80af007d405bd26414e2a1e5023476012dbbfd442220b63b91a184b0813abf6808f55883cbc90ead487dcb8da3db479986def344f6fed7ea3bb876bf7f4ce4e4f9f4e405ff3744fef74d19b69214a0382e120db0cdfe310beaa4d2012f8a4a11197e32c34c18dbb8915f6fc80be7a9f919aa181dedee922ea0ae53b2e14817148bf0a0b9893415d91cc400e28b67f04133fa670403b3b3b3b08e01bea0eda2398d0ee6a8ede80a2f41663fc03eaad618c4cf0c8d19b5b22479f9ce3a0133da24f3cf892bb8a130fb83e6f80097642407d7251a6606122e95e1316521d087fe3aedadcb0b1d15b14f2ead8dc9037ac8d0db6371a887bcf6abd61c301eaecb589b46de8ab11801160b52757c46dec8c4be99224b6ff6263c3498951c2e789e37cf05f85af45a606ca67ce5ed240e98b8d2d4c692924217d8e5f75a13c4ce24b9ff852379da2aaa9b7479952d351d38b315acee00b3027835294b6f510fda81d06f4caac6ffae52f24d0fb8c3f6349cf65682889771327a6b79eb9127a653b6e539fba6ec149f4c0f3b12cc453584a6fdd404f7a6bf7787aebc78f1f175979f0bdd7453d5232e1dee3793b5cfbcadb29ea2c3b8dc562e95355d441411d54057a3928e889ed1670d093a02029414141b7832c1345b6ff23480a1587c51575d05090d014291dc423650b459e4f7683eae5d5c0f4889f9f55087cfc909b057cde99dc375743de9d6e8e6673343c35f966fad965b0984c26ab57e69816e3a827e5f58af6c6d60de8f5cb87cceb210cdf149e93de9cfcf4d64b9c8fa3d9d902bd9de50426d88951eb2c9dc531d0ab3b3d05d7b753a138b1edde5150666e62f9e7edf49685ed0e77be69c69cc63e64a0d53198bbd10ad3d5445aaf063679dca2de4d07162aeaa5955ac2b724147aaf29a827b6dde088e80d5c59a826b66ff14b62a926d46cd2e36a38921049b20f56857d302bb36253643c6d83a11d285607eba4d84162bba84f1723b24455faf41e11cc8ab521a046109160548fab110247c4a911b81aa7ea9c48de0c76e5ca952b57ae5c397659f244929a2446145d6771378d11555565c4a7d9c7d5706c0406864776671330e4067ec84dd1abb9824d91f56058267c8f43f85985c0b86ff042e6494f80bbb910d39b691bd2e913e06e28ad4264bda6975f9b78e36ea006e3aec49bd1605c0dd2c3ddf0a842601d3adfb4fcbaa159617a6487cf2a930a2881d971c3847a5699c4c7ba859e1d1857617890f8a6e5ee0601ee26ab7c33cf37f3b0523e546013a28b8d0e9bf8401f69c19f2c90ea7933dd64be2623ac72134bf65dbd92c2b8c3c3b80a8380eca52fc0e5b06a006a80490f7897d235e0f22cbbbbf975a931d15bbfa435f1669e11e8ed2c587d3ed6aa3e2e5a161ca4b7bcc5b2a57ff9bd7e78f0f0b81c9ea7f4ec2f1f724329bd3b7da9424af535b91097f764c80d9669300e6a30ceb9acc2c8d30fb911022b8cac300880cfde033e13c244d61ed9691592d527c4bd19795887dc649abb7942a0ef39cece1b5cb1fd967a155117121212c288764842449ada964a8b50ab5ed31152754f62bbba37b3c476fd7162fb72c7f6331e2c5816dbd895de2814bc5b13c74262fb496c1fe9ed15b13a4fa33e28308123c2b91adc70703432fa9dc50694fafbac13c99ba9f3c7d1b8ec58baf36a48928484ee9cee9090c8481db198e52edff59c73d893525ee2b86ce24877777745d7dbe89794f4e7cd8c6abc55036fb07a613c367164665fbd88b8080c02f8a69d7d42d90810e8bd7e4652526a32fddb150bef6e9c0638003f2f64569805649fd9dd8d10f8790d21c0ddc07a09bd996602c33bccd3db0e46c43eec0304040404040434f2918e62a6eb6f34f2b97b54cfab9944741259d3b497eaa1d4247a3bafe715794864bd2f54cf4d1f6a436e28235493975f416fe607b4aaf7ca8204ab42f5f4807696de7a8ab77365cf8b82baab877b0a18eeb96c99488feb2caf062372337daac7841165a17ab09e57d343f4ea91575e0dfcd0abb158e066fa32b06e4077d04312faf4146fa7b3eca0a7b39084a01b5c0ddd7944308babc1efd9804f086c1b3181ed3b8deebc1af691d4614441097854962b6f86eaf179355817dc4c1f138344c3651fcc0db6efaa4f9381de0a094584f2a17aa82b6fa6312247c3038cc8b6ece99157a2a09724d4631b6aef8684e48624d4a74b42629b948434a58836a99ee0215ded7832ba93c1f845b6b154238d8b7a887e14b4e831516f5c242b96019bbd5725cb5ef630ccfdd0f1a16659670d46ea4fc3a9ba4a17f5c6ac6944b072952e83a3e1a2ca44561c4d9f898acec74e337bc6d947407b3ec35ef5941eba2c2b444d74efc4f66576788ac420e21dec7c9a3c7fb922ea2a9aeb8dc8364f1c2055152d4bde4d1cd99289342eaa847a8aeda12a445a08ea2b59bb3c01ca0215eb80ae58a1b10e080b1fb0bc01c75624dfc9c427ce402f4317ad2776ecc5547af8b2f6f04e65221e50f7cb432cb9a7f9d1fa7bf0ef7db2b2a11fcbbf8cc4a7db36f16a38d3b4ac7b6a300b1801e0ca8d10005cb999872418e2a257b30dc912a46086ed9b48543633c113eb92609d117cd260311881ae2087f729b3816322dc2f27e91b96b6aac7aac9d96bdad93629d82094a5c2329a874640eff6feeaadaacad23067049f31e83c6b5dc1c9d0569483234354acc012d0cb43968ba8f489ba952bbc43a5b76601bdbc3374d64237c19a540636721f9f1cec14a12f32d43ff01bf97ec0e30763b4179fde8c5081068116f2a311f6612eba926509ae157cacecd35b11495d5ff63152bdabca467aeb36b10f1be9130de89b01ed6e1f37f398da364209766440b5608900733228bd5264fb59bc93b991c812f510453d441feb2d58c0d1f483389a3e1047d346a0187034fd0b389afe7b519f5c0d27edab3a8ea688b9c2bc8a836d138ea6df96ed43427de4bba15040abf4d64ce4681a72d0ab814c5464e195766888a9644591886a01a9aadb8c2dc68c6dc616a3b766cb7ab5d9086d316cbc8c1b565b8c1913a7aa624cccddef4118ef0c9ca75d27050788b3e1a2bc18bd499ef1e4032ccbc4d818bdc9d847433e1b960fdf8c27f3deab434d9a647d3f5c94981936f6d1b08d9d28bcc34ef440de1c5e55555595551533436aa3463ab0cf1aff86a3b9ceda7551ec752c07d6068bc27bef870c8deb9bcce562b25bdaabd786b5ac7714d4fa7bb3380693193671686f922d5561dea9bf5b981dd2ca4b2b2bcc0ef978f95875d8ea78a6de70bc97775372e2ab43789226dfa28d8e69d339cd55b9a88b32f5e62eadb2b6c8d2407d4029afec728fbbdcaff34482e333eaf0b20a57c155b1d7b393e4855df1e29e27b067b24fecb2ac2a3011eebdf71e05eb4392451547302783f2e8d1a247e54395602203afb46ab2edc7eb30628f5a752b5a3793a06c555d8ed7996545b9840ff8abdd1f190c02e3a99b75b458673c718894e8ad493094f516a320f5e95dafaa4bf932e762a84b639ba3e33af6ebd86b57436c4545ab0ad6901d72f1b34175cad15b1507eb471356f56b0a7a5dd199d87432507d6329afb063bf2ee8442f6c6a4c64b395f52dc60cec4533f546e9b363b7324c7b3347753dd3616555f6869dbd70598aad5ed133f123037deae9537677c556d715edd8ea9845e9317ac1c105d9ea2d80380a86fd5d6fa0f7baa2183d53ddc61091adb6de2aebd57f3471658c551f692f4d35815aaf2ed32796524aecd22eaf6b6af3d775cd2780acf53793c88ecd69fd8af1dea44c6fb23a99aafa60a14b0643a80221849019422703dd80398b91aa3fa7bdf7a2fc75cbd272fad679eee8d70c4bdfaa1cab55852192990bd88b19454128b153a37a196a178eb4cb2e4442440f49cce4e5e0c3a88c9242a926d0ebb0bb615fd7755d871a0f87b089983f6a34636a13bdbdf35099e8ed4d38821464a20936c2d9bb8bf68ebd6faf868378db322cf45070241692839ae04edd01b731c1d5807fe7202682fa3b08dccc6322a8da3b2ede1316af09c9f6abcd0147f37e210eec3b6cac614334d0db484ab4e507490728df954e69b7747ed19c2d692f09bd5ceab3300342eaed672e1f1dc364e6e62846bb6c63203cfc011be3dff506e7a5167337ba0b6486678a2a7d5447319ab3d776b075f92c5d075a978f346ac5ab89a3027e07ac4f10fe323b1cf28b73bdf55de14f6f3fac7c1da343489db1c6a87e863d873af621163b56e106f923ed522f1d3b00d7fe0a97330cfce177680d9eb59898379104ac30d9e13198ecd425c36415c7109b9dc2b209a323fbe839d947b36658461f5588619092d459300ff23135430395f52b0e67123c9cab0f1e8e551f30e7539a0eb45c75a0e5a1c21d2e3a60aa93795161ad3acf1e8923b143bd6cff6bf7090b8f49862da83386c4adaf570316abb7cf6c216cd244e7c11ff80b7fe092de5e93dedee75bb4380f6fe2b438269b47f50eb1239385f0584c1231e7e1230de62179352db267201ce9a046f02d5e3a567db4f86cc1830bf61692caf81a33df45467d87b7ec80f9c03e5d3ee765c6c329ed7e09cb1c33ba368a71a17df4cf9cbad05a34d733a31d38e6a6f3c07f1878e970ea909fe7b9c3e5f293d2a4ccb8d62c46d3693b47678d9232a3ced4f97caa669836df02fbc4b4b6725e078ac26074f0a9e7f0a90fb16e62f53e61e74695d8b680a92d5a682e3a6897875dc296ce42bb4dd8d2e1cf9296398f186255d43973207471f98b06a76850a83728a4060aa3e301b9c029bdbdbb9c358741082fa5d4a09412d698de5e6b3116fec09f292d943dcbb26713278352c220aecc2cd3561a9ec127f350761e9287040d94af70d00bea9d20bed227c6d227f9ce56fac4457d0a7a9792063d291f0eb67d252d37f8e9de699e2ee2bd775ab425f0a7b707df92521289a2284a499494295191967803a57e40af0b824ef626298c61c6f5ca07f92179358de4cdbc4b49e90fe87d48b891bc9a270337f38e6407f6bd1704248e26080ffec0253f986803b55e9d7f5df3c42a84a7ae251c0d7cbf9f3e75b7f67e7a7baf92f4f690e8a0009297a44ff12712f1a8b2a132458c14e48aaa28a620154f51548c31c6181f638c31462ac6186394a7e463a4e2638c31c6185f515415635b0a04416aa08ec25ee2a94fadcec363fddaaa34ec0019658deee628327c316643a8c9af2de666f54bbb3af63af65e69fc0edffb3bd67cdd789cc91b0f73fdd8c151f51bcd7008c631088e349eeb6225a313e119552611abe2d5d77f98aef7755dd7d555beeeff30d9abb5ebaa54a26673696d0512b9ae5b13c7ba3571ae88bdf8def5d68ee0a1f5a08840af0bc20182339f3dfe87a963a4d8bea9e560a1303ae4dfc4fe64e3c868c342884539bbc6f4062fa540ef6d2e34b84b93d988e0ea9d7544575b5780ef22532cbffbec6a3c1ba38deee4fe82348496217435dc1f177cb87a313eebd19bf73771a8139598bbd449210322d619803a29524064ad97ac532910b2d4e5818ec0639f4f9f94a8785746d5a8f82bf2de7befbd47fd964eaaedd3dbf3e9cdaa54f52175946ed536a283ba559f9196a77e9d81ca5f4afb64c4a708469a385966dd51f751ba3c06adcbbf977ee5a92aad4b4b96281eca168b990aad8bf4cc3bf5ae3cf547bd7d4ef9a06a1bb9ce404b27fdf9f4a944225d927ea34b96f5d268eab04eaa250c4c24ac3c3b19f22492659d06b1e4e9c4211d032ed99b3b1ebb4dde65ea80967497b9e359ab54aa409eaced43f27935ec03d927b6641683b25a6e06a9aa8a34619c30c612a462159f55f5968e953012e919a622a32fbd5495a8387df6ea2b264ec5826a4a541ce36c9648d433cbd80a1531be1477c453c74a5af58cd2b22c5a155307f54851948aa9239eca2a1289225135eb8df4232758c578928cb1ee88b67a7537a9579a53714b53a2a2c254f5157916c93a8b8923e3cce1ac5555300a52ac8b2294c4def6619fea57aca8bb8923815852cbe2218994d396c23ae359595a6441915cee728a999933c74c9dad587ab132222f92318a628caf99d372ebce85a10bf38b89132dcb859999b317e697ec8533162f95059197d2b333b37c8b76cd1c16d92d162c58480b7bc55c2a954aa55267258da9979696cb16cd59e6da72eb2d56658b2186d5fb232b458695b9076e69696969b1f80ec15aaccc59d852197371611513876658fcd5b1b15eea3f321ba38661d86f34a5b4ab1375a0a86333cbd127ecd8b18c488d8a5f6955aa6633c7e594f518e188f489c2899611bd61cfa704218425b702c252c9822b5864226022e02d1dcea2de6e0b420bc67a65bca4b29e789919f1d1f2276c849052b7e87d94a88c5e9dbe1289d25bdab63c6a976dcb8dd463a5b2fa28bd85a26f89546451637aacb1a566d1424207f59904f598f53011f15695315efa9b11c9668e0e2dc774806971e9700ba6850e30a0944aa552a9d492f5b00cea713a4be95768f2264dc559682fbff15c5c7c3297a50463c9a228a95a2ea73e5c1eef8f0c637a79b9a73a9541aac2c0d3cb78fa16191aacaf90d45b7ea195f761d51215bfa2de07e35bea85547c49be9838326ad142ebe2e272179748b396961617170d962e35ce91afce53872cc957af2eab245190d27e64d6853ed21b46f4891e73f6466f18c5b253d4d4b22650acba0b5f9aab208490a220a4286729eb1445552056a5aa8ad22ccb92d42b484158a18f752f5ca25582941cf728215c0a7b0bc34d80fd3099a036e4b10430d7a718638c1445551545515437fcbbd8406d0fa0c463f1eeedc4c1f75e8c63e81de71cd75bb1e36ab1730e3e28862b193a9a578f030821240221d5aeb77857630ff16acb97a580be3f1a604e060dc212eba2fcc0ca0ceba20839c1a8749b7392aa97f2f666e0638c8797125eca9e3878bc9acdcdc04b49a9928a5b40af74d5698212027d8f870fc242d902fa204cd51e6daf30d0f7dea13880391994a74e5b1cec5054b0639d1429b862afb451f649c9f5239873670abb3a6d5fe0c471878e72d561d452cfeafd6192ce65303b3225d7b35ba72e2597c4acec09d30d93beb4ddaf6e55d42d2ba78eea5d55c7c004ee1067e5d4d19a7ba5491cf165b2aa1445517748f5ae3b6255694fc1c748ce9e28d49cbdd4ae8e6592c4babbb1ab3b62b1afdbfd5875da5a18d76859cf2efb18cf5fc973c765e5d5e388f4499e4f270ecbfaa46c96cdb259364b3662693eb2eaba2c79ab7605f2ec65f71bfde67adb6627d51bd80bb018c0204bb7017bc11aa415de1076f05b5e842ab6e511c866f542ade5d889ce28e66b01c53e8fd51c378c30423f7f7fbcd87822c1b983dff23775ccb7d41b3feb217daf2ee79d23224890204146bf6eddec97a6136d8eb32f3a94cd7196a4e95436c759aa05d191b764ae0d8b91d91c67674c1a231b92cd71d686162448902039ce3a862d9fcd715607da1c678b10c55e532c9fc463e9b12845c062b38f4e8f310be2e8cfdef2168e7af6e723bbf044b53cdbd252b567a586138f3d7882af6d37116c7d0461eb6ef659dd943a6d296a6af13c71b468cf92b420ec68e675a08dda6df1d1f2aca5c2348c8e7861b23b7b31c036c36215b98a957671b0b5a896799c1947a3636d47188691aeebba5a6e91b4b6ac16204f384a6b0da6e56e0e96fed2605a3ebab334936d76e96d3a3fd27c8c3edfa2e11855181d45d8f9226cf69965d5473fcb8a602d3064c766c76266e58042383a7c035c0d7a7808b81af3d05101f244150bb1a9b16d98d17d58aac18c2a8ef9ec43ecbd61b38ae33aa6a3089b1561fb36ab972fe913b67c66a33b4773b1c39904adbff1a67b8be623a34efa1b69d96f3c92162b0e08218410fae8635596619926a1d6d8b39903b30383a1cfb02c9bb3e2708e66de399a96ecd6491fe1c89e65d9471acc8e59616f598d57859a933fe088555cc9328429d80aa89b38323c84283f40996bfe89593571bc531552faea4d1d956dc9a8768700a95aead49cad48a4bb39227df44a237d54915ef591362b67356b28cbacaa3a1b692bf9487c92168e37486204eba478019175625d14201091c2ba2850acf07035ebe16a700f47030327d649e18222f6f2132c596e34ed937371d97361eba2b1916e9bf5eb177135b888edbb632edab52765a65d973f7757adc74b99a2a1b02e8a10a05828549e58767171b903e272ec69f22e2e2e1588ac17ba3f174d5e5eab46fa1bfd264e4b95e36a1693d1cb1f3296c2aeccd1ecd9ddc4c9b28a4d26ac7b6fde693f4c2e4b8b36431b31639982c7f6504ca3372c1456c93d3114d0ee06b2eec510179e20800c21843d385244ea3b990b914ccc04942d8c91c8c22ad65a03cd4a402f29cdb2f7decbe4b127bd95a0f456fa8db6d640af6725a0ce46a0b7d297e8adf42627da487a2b25e9ad746b0d147b5602ca42527a2b9d837a2bfd0df556ca82b013751965940ef5a96de92d2e38d0d24b2597975a5e9a2ffd25e993b3a5257d5af1d25f933e552f1d7bd9cbcb556877885581ada02c3ed23867f439fabc9b2c469f9f1fb964da104b33bbe2a57a79f5f272152f2ab4aacaed264cf456ba9b980fe516a55b6fa24ff4a5d24ba59aa5811ee1f16ade9337c3e757e7211dfd3d79a3b38f1dd57918b3377a2367e38834ad2accd1c3a6664d61190cdf49f1a4c7d6d07b0f6aa3cf39d27ae2c0a9bd631c9f516c84e83a2c962d4e340213af21c17c285b66c17408188602caccbcf17befbdf7de7b8fa2faefb0f97173e3008bb7d840fbcc59047aeb257aebff9a4cf4ac310f29f100a804d37a7e83912e529d3e5718b2c69205d37a8a7e3c45d36716a16413c17ca00f66bd98ac09c52432a1a0a250411490117be30ff481462614130a081f0fbd1d06db8f4d3a0cae86b3537a1b6a2aae851e64acaa30e6c76dc4c62e522f4b6a26edbe1e77446f4db2b01656845c61307611aee28f911fab8855bbc844a28df09b190ae88d3f70ab48f04d04c2e8a4496f0d05bd0ee8c61f58337a8f6afcc9ea9558fcb16d274efc39017590de24d4565ce1062cdec95cea8aedcca7054496a9609d142ce8197a62a077866d76328306fce8aeaa1991b70e866471629bb493de9ebc19a08cc87bf1afca176915f432fbeafd9145aeb1285a21622f1c0a727748bd426a268218e37dc266ef0a01bdad83db4daed6c183f082d911ed1b55d7bdbd7aabd1bb7a23c8af205708a918218c0f66f6c59ea8759e3823a697df0a68bd405b52d569ebe355fbae638f2c81f2e67b8f0487de4cc3a11e72eda2c6452c16af2a3a99652b084e7ccf8b66ea8dffb4ab53d9ead7a376756c1c5d718e4eca611d4caad2fa103bd29c8dd3412a90e86526a0570ed97e31c58841c95575f099aca31e7922c1a33777f77a5057466f0510f62ee40227f60540d649e18224d6c63a298e64b1989b38980f759809a8b39793486af96ca437f757311f20d703644d99220c18c69cf1b3fe9ec12ccb9eb9f8289de5de9a12abcfd4bc9e693a6d71aefa443671c037dc014f5dca08292a8ba7908a7596e7678cc96933c37aa93453472aba0abb62284eb0083f71aa4b897c35a973937e62658e723bdcfbb06174ddeefdaa3aa57543b1cfd5cb4d1c14b44f95a9afa93536a23192b6d42175acca9a31123c9e729a1bb2ef552099a5bbbbdb74c3a43907ef8789876704b47f790adb952736bb211485803a6a0803017554f5dbc69e12798a0891a26eab9a00b8d38126e45d152775146035f30e2302a7c64b22ff4481927ef967867b5e0dff642f565e46815efee9795c1fe1e4ca3f51a0ece6fc077e33b3c7ef5525a3d168341a8d46d5f5cc119deb0961c99c13c7fa9c38d7e8d88847234ce325bdc53f8d9bf4165f69eca4b7f8e3013a3ad672d2dd34d92735995dd53b4963db42caa976541f655846af3e3af68b2de9c24e9cf5868d606f4acc9c5725f634d632d05bfc4853329f55213d138fb58debd0de62c5338b5328e178640ff1627a8b8e4ab4311f651b331cd1f1cf8323acde7892761d151b0fb520d086123a8f3f977fa6ac6c2f34d007817c6932f780907cd40598b3e6fb493fe99392ecef0de5c80a2ac24c7b426fe6fdbaaeeb599f308929c98e5d1ede65e2c092928cceec62cc656614f548cd1dd4ad5b2d538775cab2ac16784acb20ac2e5a784969994669f057b44f08428a7a36712045517547b4a88bd21a0514fb8fcc5ab11a92736a18666119b55ae6e4f4310951a19e7930de394b39283e7d5a260e8c144669240c93524a3792122b626f94f4f1b4deb6d557d4db514a198708b12c6b1ef151fd090ba5654dea711ec8b3377a647d42584d1516ac56f581bdbad0b4037b8541d835125638a1a850427808ef261126023e566bdee963ad93b439735654cf5658df79f9137a7fd014cfe258ac2b7e51f0a6a2f8f7528467515b28f8152b2610866198ac26119661913e35784b9b1f69d629455b34f9e22623b1af9f443a8a524a2969f5411d1b5d42c144ccab5617d61f266bc618638c33ca43294fbb26bb44028b1f55a98d3e6f15b1f7093da15723a550fc7c8b0c0dd84bbf4dc45a2693c5def28bd5286f13b1f3b79fbc1a8899e684828990f4d60be99da2288a1a4d2858c6acd46d2218f56e45c9a0a0d6b177282c9e3ef669f2d61f154abea1ea09f5e9c1738471c77a2f7e20d3dd8eabca390c661807e8fdd3de9be23667e19d3be1c0c00acec2c7cabaf99ec4be1608810884903aa1ef10bea7205ab1fad14465f9e068a20f3a31960637b631cf3e0f24a7b14aebb8c59851bdf476bdd24cbd5d55cd6425adaaca8155313291785fec9501eeb1a2dc7157fc05070a14a5b2a425637c8c31c618639467a24fd5e37f34d127ebf195765953a3da8b25298aa2aa8ac2b04b0dab17567f18865594a42a2a5e6c09294148094046dc008a409f78f4788010a54129a5346604d9cce82dce101212e231c346c8881b40943a77e50818c42043ce8e659aa39c407bf4c9f1d0e9d3954b44e007f55bccc9f8933287d28ce89aecf137fa041f9fc10c6ad71151274a5598c430acdeabe6a8377a8b401625a98a5a82a26ee42082b5070f1f38219c275f94910b2ef19292ada127afbfeb9a39d539be38d4a7eb8faba93757511933f3f50c63ce322a8c558189e05f7ff5b6ed8bf9e2a899a276a91d22e409fb2ee5d5807d9756151fd69fb04fbb30feaa307224c9c30c89ecd2ae76ad210b29e9aabc0ab35bf0567c5dd3f2579f753dd6a7f1e1a58eebd61426e2fdaaf25d6bc8ca39735cac672e1a45bdf8724b9f39f13e5c7ec517eafad44af1dd85ba7a2cc6cfb25585accca824ed15c5512c959a19000000005314002028100e088522c16040226892a43e14000f9ea850744e1a68414c29640c30868008000000000020000200d228db3c30972be25508a92301f0efb5d237e6a4827c6f6565fd1e60a5d00af51811302b492ee0c51540875451488baa26b090298d871212aa33d05ff1069fd1d232904ff483e27342cd8323d77e711428358077a22ab03fc2c5c37d37a533a4dfb78e5c91b78588f0f02f87c874b2f2f20594144b06279a62f573ed5f85afe39a7a5fb9b1bb99e1957cf5eded8a1b4a46a09844e330699667b46d8761cdfacec8b8120f58b95c81e6a0a01550249036dbeb78422c756a3ffbff59ba6250fd46d9d0447e18696d338224348a0091cdd6ba10a66a09df79cb57aab90c71bf5284c9d1966320f1d9a5dd490b8b411660e8244ffc4665bbd3582446d8cfbb9719cb0117f219a71fc533535cf2bf73102c979633e545a402de83e8f9ef7aef0bf250a8f194905f24d5941c0f0ed207e79dce1e7f23efdcf2bc264f93597c807375e5e60df65807970c3d6a5c88a2616f021535208a738427bbd45c2cf69e4ca22203cbf2c39b18912b817ae1039ec3bb20d97669652e68fe703bb6c4cced19690b0438a11632dc6a061737debace51df0ce09356e35feddaf6be334d4e3555967753024da03e273dcb35db001c534ba0b5b653966416bd07ee69b1ca59b6b44fff2bdca443cea2580ca42dd7f38e0ba6687d052eb349dc3b00bd987b47266e8e9700404e9a158e24cd2e67bd2807946000f56f5bec355c16f1daf882ce3feea0baaae1933b73a0f3370926d866fa693167c5be2900b673763b2c9a429e9bbcefa9a8db0b0b358933c166a25c7efc8e87fdb1a0e93e694865017d428a4109fdfc7ee6e175cc3082890cd6d216969743eaf60794477ee11b3a95e27fb9599ea7151249208ab1e867f8a8a13911f7f83c24cc9ed947bea0c5070eb8f7fb3430cd3cc4cbaca41c40ee921d276c2a85edad9e116cf99309d0d8c9804a10510d238b57bdad9e206dfe4b38f49ab081af384bcb14b16698eb04ff193126f66dccf3363a96eb1bcca73d876485aecb797d8419fce51319df7e36f6b758076950ee3424037d7892d1dc5ec9db13b25229ca29296b4441a277ab6c536ade0f844bfd21e400a722c62d51110072d9a549b3883ece80cdcdf234645b63836f48e32fbd4b47d81191f24b5ee84f2f14124aeb7abb0266fd2af19cec83d76e2e08360621a90f6cb17d9afd12ced58647a4eb4f2312619772f813865dc539e904cd9eb498c6a1d8b6511cc43e132612a9e4f0de09dae5cbcf81369beff90c15938ec9dd430daa63e6c9dfd50775c5479636e756282699167e15fc4b1377fc9ab427fa29120763102d6345cf107ba1b9dc5461094ada4ee783b27c044a2231f253fcec1a9ebdf353512a46ca0004509114eec07799d6668b3ca6366e26f630ee70138496da6812771b9ca96fd1ded0e1c4f07ceab9e5dd3432b3d2b454b5fba5a0ea974602d00eb6da4e38bb97a75c643a51f72f0810542968985bacae92991479fdece483183ddaa345af53bc13ff8ffcb5bfc9632449a712c6e95b900d3212002093c42e9814799060b4088570f41e9ce8b1e0bcc4f1457cb776ea76e411d498730f8d20c0bd8255efcd5648d9529a6f8efcb2d208058574c3c9eaf34ddf458e60177ceacdfd8efcf1f3ab57f431aa3dd55bb7d1e18d2809be7071dd6f78064c291d8ef588c7a1b20b5bed26f3140e11f2f3ad40e7b20b95e3825ff9953f915195c5c568efb851b8c51a1b9a32c86d626b8f358fded60e3f82e93f18882edbac11ff5e49a978c73c5cb6d9c0a4e011818a2102ccc8e1d424b0a10f48d524408037f1765c2398264276456b4cea03c238c84c174823e068cf19303c2f8a9efa59a9280a4da66f1b6414e387ef7f0978a2c401dae0ca4d6bf4d1a03390bb3c5c3846fd189bef3e4590b9827b21329b0e1ec70654dc0e0fc72c64cec8b37267a64cb79319090addc4a7d20f594587d0b60d443799ae3b472167ebb88457caa916552c8dbe332d25ac6e21fe772df1a3a4aa1716f28f175ac9ee60c0dfb6e4a8df38689846b712b632adff4991c2ebcf1c3e395906ed290a5339cc8aee4c4a1834d5643ccbc1b07deb471a69bdec13139e2482ea0e1e832ef6626c0c54c7c9d934e0827232370f4afb6fe50515066b112463f754d3bf115bfd713ef6595303e6753aaabd8f4a66c46a38f8e95e49264fca75cd2dc695526b382eb28a7499b2212b05f9b10aad9fee9f45782b0e44d8b2b89c9483b57d2e0bfe909f9ad93b8f5675cb4eba188b3bb46f6593d5886802dbc09743bf111c1d9710d1a4a97ae65f1c85227b46ed0c6377cf44bbd8d049e9dcfa6c09b7ee8a88f10ffbb66a3028ab328d5b08e6e1979333c317e5c89f8e60abeceeb7e984bc75a82ad2c99960191dc48e6d56f6a7454348a11ace6511051e7444995c36afa98ff9130b256b835f6a6d51d351af0cfef40126a4d8719550f9fa83588b9e98033cbb9931ebcb56da423a1b9b2f3d2a3a89ea4ded31b4716c70809a6e3206467f11fdd7a175bbdcec65d8ec705dbe808334d58274608334cb621b679e935e5f64cc0f8664d450df0a4d0eb0f4f769aa91f7090526ab2a779347c7dedf4d64c73fc4dba5d28cb3cd9df4bcfa8700865f185f94f05052b4231b771900089410faed2997f60c78495d57cbee6885f5f71a60c1de523805769839b6f8f8f6e62c50ca381565cba0fa64f349392a9ee060e5676bc8016ccc2a06cbf53093f596bdd8faab1ae567bbf95dc8bf2e571ccbb227cfaff64102edd796063433d836af76fe51eed499c06c9dba820716480594677c74f45c9e46697db4ceb6174e6dcaa1d01c4f835ca76aa2384dd33544c746ea856a8359edd0f1e8444aad43ecf1eb7be1ab16302c908e5073e775b818aa89ef6897e624e976beb1c2b22dfd59fad6afe4ea38214212037957bfaa9210dc00e33dd4e1afb463fb1c4f7ecacbd3d39717b725a2f75bb8498e42c10d2935704b1663d3e9c01c4547545269281efae463ff192ddcf7cc5e058e73274e985f312f943e4b9a110aba7e2530e3ef97b38e631314863c998acd6bca17c558fd418c35607b090e52e39ff92fd1a6a4889944b1b40b0844ad44138c820a10fe344b9c486241de7118d01cfa3f70b7ff78926c64b7809ae46ce6cd6e164d914416001d3a6a60c86d9902d3e271fee2c64df4a129f50bde6e4775d184b4759a374724124aee4653a1df1ad97ae25eb57e13789757aa03005bfe50fb2592d2fd499e3a1c5016452c7f8f27b950305987afa2f2ea3750ea02d2e97c37628101bb3c33ea61751138ce21d72455f1643d2986d24b6b238113fe72a22674f55a07c20167fd6e1df030c48342a4a42a1500476ea8da61e62c8de76ee45e75fd8bb8243847cd22eb43ad858df66f224ad7831fbf0a56a12439041008ecf77a0241dad825da1720b5a051dc56b4048a345764e3d8e689a59265eea7898e2dc1da7275a1bf3a1431af4dea7fe78f000ae6ff855d7af9c2717080fb84723ba0c9c4ab5819c87371119b6b2f1f7ec38c4a5540305f0b0678512512140d18f3f521c68ab0f902279ec77ada76a6c14781adec36b196bea4771c3e1db077711b857a5c3044600999fa09c35fde44926dc228e0d3dacef77956c958bdc91c8e0085c03028b7030e668e0c04c6c1fb53e72be48f059d7e75d6b9bf908b6eab2428400a465e71b576a4748fcee2b597ae2840b709fc3c47491d882626f7b3c00aed619e6e5371355b6de8cff88a91364668c17c0921276f630ab41c0ead08cb42adbda4119d16ccb9431bb26caf2f7312e5c8c1257d9529e221a87e979585f6a2fa6a057f7c6b8ce82480ff9416be240c563c61d24ab6e461c715b8cb98a5d9746697ea4bbcbe1dbae7ad47beb4c36b09348a0152a095acb39f8919d7bf6ba8100573dcddfd0191ee1e8ba20079370c3f45324d0331ed7ffc4bc172913242091be7a027204f249135dfb1f84c0128030325d2434da58e51723d25f0d445fccb458c3213f1a22211188397b6754497d8a8a34d5069709b28e62ffcf9c0961aebd83fd8f6a89b004baeec647d656909382f43492752b870cd91b094081dcf102df46b38a0bc9b56c67c8a50876684ea4486ba7c3c6304d7a6fe70200a228b0df5b9e139d8703fbcb75965bf6f0cb5371cb37fba748d04aebe09dd6410e821b890e6b0099def1cb3f998082bc397e6fd9417286fbd0a1d86a45414ffc75a9d8ee8b335e63264866d4ec844f47d32e4bd9529505473bd6185febdc35bb94e53c633f45b2f6f71afd730473ad68259e1e8baf624739b94083ea62626a39ee367c42e926929a65e6b71a29e45865d3f628b8a74937daed2b323a69760a0f1959b9f473223965619d8abb54e95f33f9e15fdbf1e90ed972a7b1d1583d0c533131dfc23df66983f387a166a915023f18d87bd1131c2ba100ae605d10dc15b7f8b61942057d8148b4559b45ecf7b7522916db843b0a31779adfd2745057defd2106124bd5bbf6b1d3e4920d2d33ffe89c427124b3c2dbd7f4cf91f0f17e47f02d9e293c78bc0c403308af7fdbaf32b601a07e1ae0baab8cdb25f79a10179f6f06d812dfe49a56fe1e45926a382ced5ed935fab12d79e0de6ea1489ea6557d96b08fead2e7365f6e82ee75066d61170ed5fbe722ac69d44e9d8adf4316d574cc7a048ade1c1c5bda307b9a656939c8c27c74819e0d9eb3c53cef74187c75b959c67ace9418d36747d2de5c26e3dc5c08a1994c92fc7cbb8598e440269fd84ab5617b8a3048460f406ac404736b80be0b32d9da407b65e0cbe5bcaf4769685ca6b3f7c2fc09c942871a8c1ae8df96ce81636bb6272f33793c966dfa9d761aafbdb80ce69f640ab12b8cefebeac86764cb2ff5509448ce5cbeb750dcbf703e8807bfb9de48d15bbdcfef1372a65c4a5147d11f8f09444622ecb842cf1ffc8b5c4b4ed9084a50c932bc85f9d3c17c963f7576a402054e403c67b8fa43e19d829ee77d2a9b853a425ccb7452f85a8ec918d981a4ebd842b3a08c6004d27e616f94b21b01665ea7de59b50fdc21e72e801dd3e84512779d1424ec1d8be234e7af46cb5b96c66dc05e76b3ead06b3703bb8883b19cd4d3f3b141899b05abcb9cc584076a421c7f0f5735fe7f088f5c1b8ceaf4cba3112dc6cc7d8f5d61b1f48c00def2b2060cc2edb4cce26bf6d1a8f217dc08da7f08b2011d4f83182e38a6ae589c48ae4f80f55c499b08e3433d10140810eeeea2074b558c4012e062a6ff5b408f573790b5563ad3a910f1cacab7dd5682c82cd68628da86976f0115ae8fa2652d18201ad8373695c3dade48acda6a2be34b9054ecb5d22f6af7d53c0f8ba23706a33f087d590880472c7d227e2331da37fefdbf0a73acae67ced59e8280177bfc5b421f8beb3d00ae5931fd4e342572a035aefd78cb2c21f2148727e50091e221db3760e61257c2c5cf87675fa61ab5430e23db9d6b3b5630e1b60a3278a34a6882bd64d8af4a5827257785e3a719f4dec3b43213dc16dd418f4ca9043c0a5a3581e52d7846fd3d492fa5e3d7cab4f24a4cab2a1b8a0090a7a250b7758a110dcd9940d9d548d40c178e87c4c4def1419e44de3687cfa9f306eb6b9af4dd7fa6680f5cd34c3680f3b6e0c80fe414392b3df357fa63f7396247f381c5a23aa86c442cb720cae7bacd40b6c892c22b3a34d497ae71587f71170c68a4a9d3f969528005c1a463acf306182ac93289e178ce86c8e09733bbf953152c6819ae5544b983fdeac672c3f711e83cdd309cbcfb4eabab840690c1e08066f3cde0d8aa47767dc00b2086f485787a153c052f1cb6a00813a87d7c72dad20a778ad3674a5f3a9148eab28c212ee49a082ea747657e35c00b5c219fc5f59925b739520c4c15eb8cad2647592e0df560c40c83f2a93cdf8db2f2726c2502c2f78987b0b9ffdd698972f1a2f94d3b82988d7e01966a23fc2a4fd1e4be8ec74868434dd65ee9b6ddfa9d928c916249f7159ca8c045cc21d804cd5e0fbc06cdce89bc4d0663ae9e222178ba129e22fb3e61a925c88bf3b98961d33637487c05c7326018651659af83fc850b9b1b3fea6705cf827da14c59aa82c5bfd8cc933323badb03526fe4752832f719ec561b208b6a2800ad40188b28dc6bc9b68c498af359bf986b0f4fedbfc86a91d78ed861e729633a49ff8fd20a712c530e1b95b51063474f6183a690e39ede571c36cd91cdae7c2bb36093511e13e93aa8d99a92ceae40ef8ab7e46607bb676efc2d7473079e9829c6bb706c424b035d8808876bb42c1e4eae950be3f9bfcb194cfeba0820034f34dfb7312360aace1e720adc8a518942a8484ad4587424809dde663c0e6fdd90f9c2250df454df24575d5e54cb1b7a5522b1c352a5286bdad3efde0bb16d43eeebfe53a7adce4ab4fb0944c416931173432f9be47345237e6adad5e088a0fbabfa8ed86434d8ddeb4dbe66dc918161095e38530c34549ec9badbb0718fb3f232dfe33c76060615da28e4bba6c526ca5078e99e0923ce7ed9be7fd5f36410c8a5ead93a88c0e85d3ddff9a2f5ea767d74c32a2f2e115a5615d374d351521e00382a1a64ce114bddbd4014907f62e3d03fe7db86149f12bb760d24d23169da98def0b9b01b1b24234b2d99a76ed0c201a772392ec9e2806102834a87f4bb2c6ffa1221fa87db7199be2347c6c2f4a1c279699921ea9709d05be0758c417200dc9980fd41d5d6094d88b228075534ae9d795c218fb6b81c1139f6df384307e2afaaf35a4eb16591cfe40560186024e8c368e1019e8b8b1d8001dc42c2b61ed9190d733a0b33e0b4fc189cfde75a159a91fac0ff3aa0d22526f4fe5d9fd13d78157d9bca254c01ffd8984b8592ca4cc5f606532c530a456405e16b7ad6ce21aa8a0f77a58158957dcc1735185b9354e948db5cee1ae40ac75f67c46c9bd69e1c43a5414a00a82c3b048dd30d625039110475df27196635965765d1f704bd0559c5319de3fb457dd9eeef2fa602448daebe9ea25eea76bf30a1a7af2851a26b53e02a3806df0da720b5f3dac3fa5c62f65097d6db49411ea592104f12884d1bf2d0bdfbd1698efb37a8ce470a0c5a2b39c5f5c55256b8104257acf35665c822d4512878beb6b1bb5c8308e44263ce8ccc5fffb8fd01ec4dc3f7601bc93fe5823c4363da5c9a7bfc5fcd914e9e5f337258364b95ec10a91478da1c232ec41476c2a219865be2aba9a0a9c4d05f74d77275f901c8997681bd931bf668bf970223b6a1ca6fe711edbc6e1f04fc9edfdcbb023af0971c8b4ab55907560a58e9f407ccb273bddc8516fc9e9928405cf4aecfd3fa7d636b21918f60e2920a6d71846970d6a9c266d639cb39315e5537a10c7209dc00440fc108d1c37b6111a596cc0d6b2e24f310195917937e39d611d8d45f6b0edd6bcb3a57579a595caf05f5c89d133378de08c69f745219a80db80dd8ecb80c6a1424334bb4a6f5223e6f20d5b360e2d883283a21f42cdba30138350cd30831ed8a78a6a82fadb7680a0f5d04d629018949ad454dbc24b8d3d33e614d64b271713b171be9f8af4db4a9575aad0eae0aac8cd37461448d4333205311b4c2a656d94d89f6a57a98e99f2b3dac58fc31afa7a9c05ea3d55a2565642bc374ea36c4ee3f055f0255a01181d19001c48b29e80187af4871926521aa9a4c9dad51da9b11056653c3f32909b2242c5da48510c60128c11395d7481d1be41199948f1b40179e41b202268310115035bf5aeae80e8690e04e91decacd394ea77ebbc55967fe24b18c6f148a41a4ed86e43b162e65bb5e1fd87493e495d399fca525dc8d037ea5308a1c18835181bd05dd054375a66d236a9dbfbb3cbf82cb129f448c65aedb9c186c5f197a6a7fb32facdaf76403a4ceb8418b2a011c1b5bdeb3a4eda3adf7abeff6a6b542a22d3c94db99bfc6a69dd96662890e6daec1862bbd167cf9ae12508b0730745cceb684f828d4170dc2d5c2b7182141306cf81d9457abcccf5301e2f285fd98cf83180b5951a76ec85122ed40f3ea2bf90bb62fd451e05316dadb03e710687b1aff183efd3992a17e48b7766ccc2db2d445846d813616c8e65b19a443ec6583f18816a313969ada0c2191612b8f8a7edf79236d22603954f46e7d91f18c2bf2d09d87556b1f46c530b9517dd58b9900cb1a3587ac2432c9acc8b132bb2064d310dcaf8c2b7ecc6a036101fe8c125b7b02640cbe08ebd192b3d78dd32ef2932d59192e7ac5c3595712938feccd8500004daf8b53c0cf7e3d3fd1bfa2fddf806e99092693d91b312576886a84cce54e9db749e6beb520e6ed5adc335229e19c73c3ff6edc35c87800a6fcc1ea62c0c9b7147a6fa5bbc9efac36d58e2dc97c4b2821e642a6d9ac8503043eb7893c98993f6f7e6eb8ae75fdbb6eead3fab07f61d40b116889dfdcb40874f974b31259ba4a4ce28bf86b79f716fcfa35a1ba38faaaf804f3ae85956343b5a3287e0c935077addcfb067e40bfd5221e400b3ee59e78b7b56cdc99d580882a7c9e618d5604423dd3a6f6151d38226c71ce8a4e7502178992c0f626b6629678dc49e3683fe9210910713a5d3bb8fcaf3e77340466b4d3d24d14b1a3c76f81599d6bffe5832ac0f49514675f60f405eb04c9635cd1f5d857dfd63addfab15f4a10d2e6a04edb668723b15a8f1cac1bc2209b5179343b16aea5b7a1d4352dcb0d27c02c99af7db261c3be8fa7c855e9a0f9d62788edad69451e5ca95446089f3b515e72caeea7f36f16ba5df976d3810592a0c273ab1ee8d4040a5922015ec4418fe6e11c7feb8ee6d9ea6daa31c3cd1da595244f1f31ddb0bfedc6bc99fb34bea7b3e5f10e3ea6f6900f7f5d8fdd103635a08c5549dd4f6da1ab81e74763531fb6819b730fff262e817070aaa837099b963b68a48224039b15c593423d200e90ce9f2e9a84c993319aab36e51cb42b6299da07479b99325192421d1bf5cf840d43c4c3b042853dd7b984097f9aaa86b52c392c3aa19182879da193463e13052677db880712e63469996c9c7ba965b8ac5ea1d83dbe9aff1aa75bce7e0537c555029c0d4ba909c77b74c21e8e6895a51ce21bc0ffa0c4fada3b6da83cb65841e08089e6d4979c77159831ede6e21d158c4a55ebc6960b5b271738a4b33b6ac8f0c5f4186dd7f0666d74acffba6b454506c119b2c14f3d100af19539e635dd46f0526f36743a7f652f4d3809aa61f3553974086bdf8d0d3c0d65356835352c966fc95a3fd34e0aa2f27949e87eca52ef7a4875e431321fa00853b33f75417af751c128512598412c5dc4ededb3d71844fc5ccc86c4d13abe9417b68dddc4422a06b18ac6c1ef9689d0b8c71e9a322541a9b1a2fd671018d775fb327fe0130f0ef4292fa68ae1299000644b961aa59327d0192aeb4bd13adcb54c612367f4f746c6a0419425c2a96024288913a42e536ab1c6737b142f24b04532842c862934df52861e300bb1de45facf964c1500b84b640813ae704121c46104ac044206b27e70f849519d5859a40702238efcbae139fbacc0073b455b6e97e7f7c93cc7913569a82136ebd0005143be839c7641ba58f2c5f32621d63b8d5d611bb2bb66efd3b5332513fd248b716653608c4cd53e7d22daf99745cc6a25e57ef7e198e959960887995431a012b1abdfb2413c8655a557aa6751e32e666a7c43e5e58ef7769d20b85ef269a3675ee5b35f7b5b0ac47027d2e2f78e92b657b3ba5d853eca9aae8afd2f16e0bd6793e6d4c056f0bca11dcb8599d0e8d08922f58d5a9929711f4c395af3771cb37e2332bd46af9345978596069cb0c489650fe13a221ea1d90fd1911cac1e06b6fa81f6b4ac4e91055bd72fbb9b355b07968b8a733a4c269341c9f936e1f89041c46942a8f47fb69b56e61eb0d66f2e2cb498f559ed243c8c45eae3a7b8400a29d1aad320543a412f0cd804e2175e24b8f692bd2713b00ceef164d84fed0aa6ea00f61481c67f1afba7809484f1ef52a7ffaf54822eb5356e692ffb0b5c109446868d0519a99095b4fab02de155cad684aba0f6668e56bd2f88af9d6200d8d1b22a7bb7ef2eb8a67c9aceabbfa4ff5e241c67521d3fa8341b21276bc060e64c7a388ad101c987853424826b2c88c6c4f2293fd45a44771a288c238a085d305a2988d07a0d0e1f8a7cd4c9af98f9f45b997489f54bab6ffde9b5d692fb9037eb4aa05b37ac1a9328b5483066992a694fbfe78e3473e2e765da9d7a822603b91c5d413c4ef5ea00fa49292aed11f9bcc3cde4ec33e104fa4c1aafb7e6a39f37244cc668adec5fe045daa540d5dc5fd15b879477075146996a77a7854af9f07f03ab738bbeca9547a66107c9243cf22434977738857d4b566d065e262e8414b408309db157120d8ee8d64fb1848478ec456e508afea84c3087a6cf70341d90bca0edc0342b131824165c690e4afeab4dcc81caf8a38a815df157b661c6489f62b1db9852ed64a466651c7489271296fe1c0a333cff88365526c0069027e311bf5e043f51c145f79f60e135bff93396c088e7bcd15eb3f305af195341cdaac1f2e5fed38a99f043c3c187da0c58ad2abb219cdf5256a5fd140b0ad834602eed825972273874130402535d477d083816896d19a55c4d0eb17bd4e13e9bb1ebd7d5719f86bfedcded721ec1022b3c6944e8c755e73452e2b22f6f8bb4c7500f9a19a3a4a4689b583cf1ba22994f20ac566c45578b45cbbd5b7f8f405783f8b2b58c630c8cb9afa0802f781694347f3b6cbdba7f6e78d9e1331341e0e9e5819771c3b476e1a72cb2fbcbfa8ed364baf49f5591cf8d60453530be32a65d5592260ec6886135289ca71279dffd913b58a95a942600a4903711517205cc9322f554db4188c72dec4ea1030eee550f3db9b0190229ec7c5cc2e6557103ea167e902b89d443caa89ab246245267f471b7bda8495d45b4cc39a0928072e51cf6c9d040cb858cde0940dfdd913ee1bffbf0df029542d1752d6d020e7ebb04f6db3d6b2578633ff3d1262f37e2cf14a5f5712fd24c1da9e47cc57937635c25fdc7c6eb2093808037dcf60b9be53f02782565d00832f2227e74502b99a9bb28e368a761b1b20f3eb1b574136d4651b4c3fabaabe2388cbb41bc89761c1ab3ce28dc9da4973489d0d52c796f5cf71b5d14b2acbf0870ec25701b70ea06b0674bf331f3a056c0b37b488ef17c6d0d1542329c0824c7b8e83bd035e17736fa48fc65255336af96d73c3084c5429c43f518bd459c931812312043292286242db95a911c52a9fd204eac6a4ad259e101ec2ea970a543303acb370935f91065431e2a3e6bcb6db7e3462d3db59a4a42f09f838333d516848df79ea5bdb0da5e7408b3d4fa8ca13af1cf4f080c5914a8b01e74802cd41ac463ce81ef3f90b08655c1817199045c59b5615436a8b745fed08167c9c6de7a71d2936e966da8455b44b44c375dcac1859f3ed69cf06fb17b262e5c553eb6e21dd913ccc7da70949026219c9ef49980d523e25bf1f27194e0a89d07fb813f381e3afe38b2d3acfec426cef4d597a0dbcdee986c077baf6325afd1a06f61b90f34eed49c121efa7745fa6483db026ff49019c7111b57d9d7e8ca6791f633df63a3580d23b629d1e799d9e5ae3fdd90829d6762db31987663dd10e248f9a968d67499c5e33a741c8022b73d5c6a84d2db90c066875a7be089f348fcf08546c76d13cf37c9669a34bdb311ac35286b0d27333b4849737033e12770ead1f5864665eacfb5dac8147f688fbcad19de5dee396a4ba0ca517b4baa5a47032c6f79936635eda9150ab40c5652ae092de8ac83060588d06b30d7c0bfbf944add7f271ede90e12597334c2007b8226a8833e94b4b2f40318af204eac909805a1b567159b847a91c23c94c649b7daeda8c1c333ad4c25239dbf82e92a56ac6c18dbb8828ad3a62bf6ba67686c9761e09c1dcff22c9490d16495df05eccff52c0bac2fa0d18b62b6232d1afaf6617bdd213a9071d09065bab79200e91935f93755f412609ceddf624e0e59355fcfec5c447605173227ec6efa7a4b676656227de56f9be3ddf3814e7379249f53c3d86fcaaf0e6f0838e74557b90d79c40dd97aa3c138185fc58fe077db70ae2153145db7d3d9c350dfc560dec36b92d325f1c913eaeea57e8c14bc50b26d00ecb234de33554fd9210db2eedd318752e0ed8073578b3348cb43cf4cc8afd78a38ff25b369c0c0bf48b847ba4e833f0f673db2bde4bf6a6383005d7ab8fa84c7be2b52c10b64423e0043fa6cb671642b50188800cdb9fb02c959b51e07cfa2c2810999a6c0c635c6926289eb615bbc68bdfe96180059f889d9103aea0163a4b81914f183f035da525549676fe8bd4b67ea3128e13160a739f739746e1fa92816a0080864ae21eeb77fc063e6ad4789140ee4c38170d8116ddda6d3418af34cdf6cc0674cc3838c07eea3392387db54b8ed9295b42fb072b44ba90847e0609854fbabf06b3c6202b8c48993a3467fd700b70dce536cbc99267fcba08f8676a791e927770a22f62223f629069c9328d7d43d8440e52ec473f428c89c546547b0c25a6515672f22b941524dce1152133e242ef0b33a07d6ad02982591712b91b788a99a5491f56af2449da2bc47b5f78de3ea93d5e8d39524506e2cc955e041dca603cb8d6ac87fcbe88bd9a2d7b39e64b43be1865699c27285fb2262f7a1d6638955030c46c2864db986662a65289db3823df0d7de5b3f8aeba672be9d07ff16dddeca5add8725ae8a0cdf1b9267e82466555c2ccc5b9c600f6775e3866e40f6f67e5076b945c475a2f02e1834de6f4a321ee8fdb3e14e625e7c7f146c2abf98d0bf12308b949737f7a45b0d8e95f9c0cf74d7d5ed3ece83887d186001eb297578bd6f2e792a88fb64a6e4e23b0a30f584e2fc91b7eeabb8cb8700742eb5bb4be7f478ef3d979f87b138a69ec9ad5b7247093e8e8861924c7a774aefd3e8499d0ea42ae93ef3bd5f6e285a95565fb6b6b2d2907cc0c3bef433ef0117063945eec58354f36a31a744da73d4ca351b2fa507b3b2e001b930c551a72ce35c3cf7ff8bfb5de8831eb14720993a28271553ff689d886c65e68aeeef84ee10bfdb052d892ffb2843c82835116e4c98c2f97c9172d9808578a79f5764342e6af5a21aa4efb133eb816259593a422257a31ab0e384b6d660a6670aff239e636ea3035aa9483c6367b5d204d762f283d376bd78dc35e5e64e73e03c4d99be423c80a2e467dbc211d79e1d16e7941ed5006ee2618106730037ebe42ff0584db658e0c7ed628358075f0ffaf248436b0cf92462525550b230f2573ee830dd715483a5fb4764c28d5fefa7858d28cd7f475d5e89a5e32131f8bfb84fe7f708584928e6849071ab138bb46250e6267a1c13bd29bf28e8bcd892da465fdcb7a27776d85430e5a041ac577ccd85121a08520c294caa94a6dbf265dd99a7c4e85970e19a86c04822806dab8907ee12e32cef407ab2f6f53718103e157f6418d3c42e3c8931e64523b8997a63f8aad21702fed55b6298ab43ddfed85fa21ed500f9f25a15e408b97d4611345811672180d555cc90c332c79fc8d6972968216dde9f8fa731be89cea71a55d9829fe428728e21c3743e509659426202cc6441095f0883da7dc603cbf1bccc2c63145695a37ff965befbbdc000c30c48d815b7a179d065de7a1d665d70efcd4dd2621c70b2993d079da78f1dd29073cbc3856d4c4642b7c5c3e4e479cb88510db0a7e18ecc25292bd35344ad8748a8f5c651dea31a7cc08345a3ac9c10a50e37c8040714edcc6e41b3285857c265f458e4e6b38979d56ecc908e9b55a9229c333fe43e77c114c1159ea277710b1268934edb0e258298a417272747cfe2beeb8e79137ec9cd715fa2f9ef49faf9fd90363b8c6a90c3973dcf4e598abb31b4ad8c2e46de06913c41a4a9053a759aeb80388934fd009010174af6e91b035ad38f6ae0a308fae28fbd7b7f628d5c23f58ae3b26a5403b89c0b6b7d1c20ed9142d46d04b2975417fb2628027ad0da130172ca3e7d6b9d21f2d3c53aa18a0e7f37d8af540215dbf6d2bcbca04d972ca9300811d69c5d918831667474bb36c569bcf87910f793634b447d116ea832441ebaee1678b0bb0961843c9fe19b9689b65549f439f2bd47634f0b877eefd859084d7438f3ebbac6b7c545236e213a301e0dcb3eb0e99c9ff08379fbcd9a8037b8d99142be390875ef2003af54903de05100a2cd713e3b3c0c1fd0acfdbfd41ebc78a2041a56ee0107818aa7af90bcf8a211a0438447761909486998ca01046de5bde804e3a2720231fd0d6d60a369d194d9a301e5f81309d48b22e1264a717404fe7f85d45710af96f0932b3d3fcd230205891e476a91aabc4fad06c67044c538b713b3e59e914e95c14e54db8ab44b17aa07c91df2562b30637819f7f6affa0238a9ae1add2816cd3f626d582ba6f07bbf0b3fdc50f3f843b8dae00d51cd03f268bb9f005a20b1a2b3fb082f3685466825d5622eea64a6e7ae6a6e2e1f6172f6997eb27acbfb5e5df754f411a9310bb74476276a8df10db9ca90889cb2b0d1728c202a93946ca7ad833f9d8823b9a517e61b8bbf40d64babdf5fcdab3a87aa149ea431dcdf978932b2a590206da176fedb179b24b73922d0a2c774f92a81f70c957c195631fd99a2ace034b7c77e89aa3ea6d26af0f3e4826a8e0d6da48c707df77019151257b2bc354a26fc7c8b8005b8c40b6eae6278907d475fcae3932d270dc06cf0d3dfeeb6b090cbf785d76de81007293ba5be67c5fd4a1a2a3bb6d317168747b5536074aa3cc46885b33aebc2f6fdfc7cd7d91ecd68db3452e0866072a74362ac4f154c5e8e5172c2a07037b06ebe2438b76e685fbd67d51cbfa4933f069581620ba3d88fc8c58e69ebf74ea516010c2f471c36586db7dc71a40b8e5417417f784b2da407ffe1583ae42f15c18b9e27e197ac3853013d656236e6fd5d11356cc404cd564a0e059869d71669a99509bfad2bfa86c79adca77ce324837bbb9d9e5a8e67ccd5f245736327510422a62b4c4f46b30c72504123e0094b820a8a7b24f7745e05e5c46fdd1a61df2464f84fec4291a5db60cb609cc4f28b0a4c0eaf9c18277954b68bd410fac2dd03239d0a2c461e5e3331d82dd2321c4e6103c5d8a66d5b3839d73426bb424bdc810a440f9f803ae98ab738f6fedcb5905eb2eed9ffae520772ab4695dbc1c86c7efc6f9b1f5b02821127144843a8e030ca9bc8cd35481bfefecbc1b1c7a163c61341eaadd0f7163d1d2fe670b29fde19e8f04345c40ab26abdd0e88a97375c7a12a4a69d55eef7de2a159aa5ae6e4fa08e8c5cb5eed622006a161e76b39dff4db8241b6043f78c477b7870f42948b2ca36367b4b024ecd8978e5d6f0c69fd95c31eb17003a54113bd4d23e92aa637803ad3d9ea8f369a4a63c4ead9f3d874cc554a6f92a36ca34789fa39ff8516aa7e22c44c1dc18091112073228c0a79f640172c324e375f15444918b2646c86a88d0f30cd7beb90231bb98f38349fdce4114bf44432852ea58334e6ec3a8b28932cdbe34d571984905f7292d45e51cac59e72d69777a54e9abeda5797c84123dd1e4b48531a4233e800f849b6c47c41a6717d7d18b9d5c3c840e170899236b0d6223e542fc25594ac031a31b8bef9fb92b61784b59cd9672d642f4969106101b476e3e6c2eaa326bc20add0766a215e379305b4134293c2576f450f17d0c3193886c60df382c84d9c95977fd8940b68910d25470588b06742275f6a3e223f6d9bff6eb2dacc9e3cf21d2d740ec74b053d1e5cda99cb51f03327c69e2c7ce704bcbdfa5132b18e6e6cb192aa4276b8f457135c06ce8ec17353f388a4568a305324bf2c8d1356c8ebca79815c6cbaf7e539af2eac8728c15cc5cf6dbde2b385d49ac857f365f44e83f033f0aaed84748c6a2ecdca3221fd3608051597a0ac1e1b86cd5e2010661438fab30a9a7560ff683485ce4194286ddf7125fe2f3a31b08f0d3061ef00cfc31d68ba7fdb0add2158eb2ec1ba7d48c51108a516e8aefcbbadcae8466f5ead0674ee34152081da13b12d13ab09d96c590037aeafb6789897cd3842277f9f755fb4b5adaae324606a06d15af6e86cce4bcb29c9104726d3103da9a3d2128de015ded1491b280a3f860cbaf6f43c142dc804b447f3d1357c7068b0edef0e7e927729f899d9a844b39e92eb1511d77ee9d96a4fdbfff8aa144c178f7c66ee4f2668068c39d047d13dbace0d90463414c65131406f4310c6c3285c83a8f64091f6488ddedf7414c66211cef1cc5e825fd2e1841a397b84c93b308f5a4b7590324072e1311f1cafad7909eb9fe9d484cac63e3ce94627abf042e98aeda0868eebcb5363433bd0d835bcd97692ac056a184deb49efeaa9c186a97359bde70ded862b46d0e3410327c824f5c0aa6a12a46c7945805081cc5e5e28c7a14d14d8de87c5a11af701645c8d4d4d25e5092bda86c5cc8cad681b39d53e1bb49b5e239be272275577c6bfc87d7120b18762e466eb9fe8732ea038c0ee7d9700ca590e7474ec910d1277dc9b702d0d83d53240fb12c94b7c3b13e73853d6c989b9557e83f150481edc672b5e67241a7ea7c2e5c205fdd177492a8ac4142b2ad3457e2744d4d52d56eddf8e423c7a42a9e88dec34354f530d996a3605d0c3aa031e0911194d9f845dc6b1f06d4b2854e25e91774973c152c8a93bcb73d9b3b869fbf2adf7d5bf28baf4f78c55e47ec253a38d92080aadf99808fe24f6eee53d01be047fabc0ef40acd0392e10ac900d5d4cb4379bcbe37e34840b7803585147c051a2a133dc28351b45c15bcaa0309270e152cc44ed4ea08edfdc4a85876c9f17771568e0816a2e13511573e273abc482fa4152c8724d8a98ea63b5c8234688fb8262d71cf03263a98b368f812625105cd56c585dac1e437c29ef57616a48a6d634dae48f39066b7589afe246ac36d6911a84b4ce6189358268c8a8dee68ae72094c1ebc9a161953b004b8d920b9e61c135ea9df92a04911b149e8a5e50ad7aac15264a12f686fa9acfeece72f0924c90c9671fbf874caba9d03f5c73faef149ea749b9228c2158f43619d917a0e84e0506c3c953d86b0b52b99184de17ef537cefa0d660580f824570773500e6e0808feca5c7cf69e050d90cab669d4ce81642c2347869cfe6d7799732df3f2e81570b947a5bb2921090028a9dc7956447f1ae7ccac57f31f562c497a2d1478dfc48eded16b4cfbf80c7db1d2fd9ed63f22228002f6b9ac30d22f8819c1ec8fd87b1a607fcc5165ef132206bad1218b617c7bb85227cc14ec3673d92bad24e9c8974106f0de69a040e17ee3d1c46b7fedb61b41562c3bb4f593297e88257aa3a73176dd07ee65f5a2cebdd57c93a00f210feaa07f65c0a24845cda747891f307cadb940fa1f6114a262c909dd871a479c2a1046461fcc11d1590ba59e65c419f5ae54a7d2e8ce66925836ede5689b2fcc3b2d7f84e6e9f2cac7fb575a5127fdf2d44af449d64d5aa13f52f3666e98b4870a5dc514f96113a029ad994cbbb8f54ea197a45f1dd8ba0f5c4c4744bc6e8464febd6237ea720daf91e48255e75ab6eb036f9372efb935254422c39e0cbb229917ab156b7be4ba7ae400167d131b045e8ace9a33906f460f235586d0fdfe8a8df8737fdb16a4967a3e43a33a0e81218b0ec55341a94d0a8701297f4e1a3eff46067355b7a5b4dc4ad5d04ec3f93db343e8622326840002cadc728c416bf68bff6f6556ec2dabea6293c9f215e04aa53300956078338b2ec8a0c4b81722e6fe9be4b431c91fed2f4c7e112704e4e47f373dedf5f84322a76c103aad73071fb241c17d8d8e9244d20c794c0007975710767df215a4bff8a86425be89e65a3de3f721b425b12a011446adc1acb863d12ffb6d2f6de35a7d82199ca7b573baa97d270c93ab2166d2a17526f99315036f42a754a953df8fe9447dc8e7d6c5e1bc7a2714193207184f02abd8069d209d7ef658f7f8966815c596846680c529dafe309f3cdab4068db719457631aa3422386b525c46f748b186f5259a782974936c8cf9b5247b187930e383cbe8e3435491d22bef6fa326b85c8b9f9189a05defbae6bc2bfd8c4a42ae6bce84bfe34b5fda05a8570ab079ba76682777da77cc7e2940efa57922965cdc56d595e78c2038bd14744a5cae817621cb07a61d848d8a0a3f1983e4589914dcccd3094b73c9f75b33a69a1b5cd7cf886dd762813d3bf3350f0bafb01c51939a5e751f33e8820fb10492aa092ab0e1aca33552935239f011b1f57451c521456c76ddf747b121100dbd27a6d230ae40ed7e7c4150da073c944afd9c8cb9d6e3530f849973ab55466051403c39701a9b7ab225ed37c5e6bd3383a39f98dc1cf58df57abd8c160cc5ebcde56634d98e168be2bfe62545b73afe3efa354b33b366da0382eb72cdec5c8e721fe224f4a3e69ccd85d79da5a046ad2529296a4bc0c0e9c2a37e24f47dec7895d948f2838a80517d7197201cce29666c6e3dd410dec20dc6000472b808e00f6cb53a90c8f4b3020df2ba083865d4e6c2024d820e428d82f11f61151ef6d21b46ef2e844aa33792e65e6642fca83439c852bd12cc8e68415a4bb22c9c6ea3a9194b82f47668b4c418cb435bfecb3872136cc3f10dee59f4bf90da270d641ac4ca07dec602d5df807fc601780fa0655c65123a43962d88e7c9b95a03bf6e0a3cd14e9c978b688c23e8f8ea4560d021e338a267202d5840c37134a83848137ec7518584cf6cb528e9f6893129a628c98a40e33548c1029b4d3770a115af53aefe6f1bf00f5ef531a4c7754fe7464adf968546cf19f35c6587dff5bda431cf8caba0900401fa5c07ace1eec339c9eb12ca5332bf71e614f9485f38c8edf9184e6ec03892109e6ebf398c0bf02c1fd141634790b308b364ef0c3e72a47a2827099ecf6914c4d311f590f63f5b81b17f1c580f043254c05fb884c2f00f77f579e6aaaed0dd373c75fefa030e254b27c63e6ba07f0887dff713a7772306c1a0d1f94fe33d9f78074a73c11049ed2f4235ff0bb4f1713dce770b7df1f2f908b121deae16867bad15d36b7aa0077c3c24aefe1cc498189c0f4ccc0c1e1e38cf08156b14b331df864504e58285d7b62b766ecd53135bcd3bf73e91fe6c8313570b48725d77330a620a8d1a6ff144b4819721e0cc2c06e94678a8629786dd2595544d5f1f7d4cf809f87997f915d142670f8d557571d2dcee14898c50f1342611f9b9467d36176fa11ece2d40f4286a2ee99dcbcf1ddc9b64751b89d5bb2a1ff3a0e541b115ba1acdeb6f54bfdd06cea14b014ec8d3aad0c555930dca4e2ab42d22a796d0c3116ca420dc4718085fe48286f221feeaefaf0fcc938854f52379295a5a69b033999b5e2a51a54f53dfbdb456f70ec71f322b6c552f5acd1c5de0036866ce005c2b406ff476e246a4e96a5d051a5a7352efd15d902b234e1713a9cbf90ad5141b2aa600aae5888226ef1ccbb4133febea88b484d9017d3cb3576e16cb8cd099a9d8ae5ed5d0fe222e6990de4365ff59c0c20232926a56a35fed2593dc1e0c354ade8491c21f1e6750a08f5afa9b3b11963f0d62281e0b6f8445229a2947a45aaea3cd486da6bf49ecd66a7309a79818cdf064497584638c4fa8cd57843123c61a4199dd88e6c9e6d066e9c6ecfebb04f9a94bd7fbec9f933123fb86f4a1cf107118050c6b4f29517720d1a9c35b4a249f99ad9a9018f58b472b3f0f6b955a3c94c42e0af93f1b5741843d02191bb8880ef203c14c405a30fdeb56ed7fef0411d0b6ecb6a00828d0aceb2e5c8d530a09fe255c00053340941024303e63f85a210346b79653bb8ac697351eb5594618a3225881a207e34c6d146325fe47d06b8a63bda39f9f37d5d59b6678efd4d9258d0746d04138875e775d6f0be65d78487daba232850f00b0c901cd88f64b875d381afa552616e09d57d01edba0fa19ff6870f4f2a46446fa68115e3921153fa6c66f76e60bb58a155c7c108bf5320274e7da3befc518939a21fa82436e43f2df605d0842606234bf6888261af736ec7c14fd278fdf539e15ca45bb9bc2a5f83f69b6dd9266f37dc9650304cd5137a78db82b5f4b99fe5699c5547dace06a48218676cbad29d5790c6dda21be0bf76a5b965ab41f8eebd07136a93819f26946cdbf5453184683acc6d5948a60b29ee0a45d4dce9defd30af742706ec492f1ed831220e78cc84535b478606a7b5d35c4678c412f633da0b255efeb3aac6cf13dd51db0f41feb743c327b5f512f7edda9dada2415934c3a7f64ba1da1a3857b00ff040a4cd82b4d1ee0c1a863e26106b77d82a06b8d742464d0e3f67bb3f075bbb56186145ac97483079853d988f440c968d0831fe832cf4c949ee35e9c7ec8cd48518e268f4081e17e4443f5c901ca808ee62252b43fa7edb2ac235b948ce7faf4fd9004801618954c008fcec6df3cfd6ebd2ae655972850fa53f47dd2b79af095a444fa077de935a4fa5d3a6711bfe143085eb59346cb900883f3ad952074dd25f59b6e77348571534064c28a0483a61c18734ef29b41070c08669daf7a32e80d900c8156ff5b99633cc22f0bccbfa2a11403af8c01001724ff505d7560345993b4b695418deb4b257a1060a63438889a7f94d5c16a20aaac4bf0f0d09d90033b11e1e045d62afc99d05ff2e9c1ba1359ca1e324bd11d8c00f9abc192295948c05835d0d96079d1d33b48179ec432a995ad2652f4130c91fbcaa3ebf792590af491bc64494a46cc5356d1d355e774701590e24b424745e6589993e87c15bfb42c7b1aeb7c3a112cfedff2271d017ba6c8a83ec8a86104ff2373a1449997b035c59b8fe1162cb7043e4a35e83f834b5a82f24ef6bb7882d186880bd815f1581577d4afe23ad810e786ad8088d7fbd20d5b92e18938770dafb4cf48bf309c666a96ef9f85b11fc8cc1d6eebd3474c7496fd319723512d2ed93f09ba6f52f1b4cc4119e0c05c10409ad07725df4948c8a385e03f6cb6e69e90c14643d545466f88ea14ac7bf79a8933975256cf483c6217194e62c1be903f7bc2afe6820f1ee4d017ba3622da111459475bc86a7c8271ed247817c40eb1b5be649ee43655bd8f93c352cf8236bc523e4877e917b56d4d0ede0646d7a2611d96fe728475b9f4cbe42f0485fadf70c9922f9e48d545d8ebabe422f50b2da6893902b5be41878d73f4e2ebbc0d780ba48f49fd29e5b90e1cf9846807810f17008eb272e3cb8cd8653830d1a47dac43986e3eb0d443321a3e73f0ef4f319f3fd994d3a35b5fc5dc1259fb696d5dd4d90446857f6260088c198dfa56d6b4be09b1013894d0a96f7c840a381744c2bb687a59e2570d9d47fd1254fa0d309d003b63eccbf89e0b2384337702dae5455819e731e38a84c994ea4e21324a09e844bcede6adc89b3b25df5fa1ca1b81696f7577face625399a277875ecfb82eeccb9c9400f4622ea1241223a1ec247ea6860403cb87a9daded4d195d3fd266840a2da926f6cc33529a2044f267580b2c56ae078c14cb0ff724c0714f38fe47d909a292e2c46a3a30551dc0f8bd19cbee146087bbb49410831569f6561cc2cff10e1de281ae981d3a058a4fcc0e2a10abbcd649bea62380a45eeebbab0c066e22cb253671273b42c2b873e793c28184a24b38ef8774ad0b0ef43ad7d2417cad14684d3443ce9acf48512ffd11aa08e776cf0c138ac46fd916e21f9eed189245942cf21d96235f660a6743fdf84740b1e374ec1d1d575fe2370f39960a5ea75c8b27c200d31acf914a86cd655e78b16da2f275dfe8f70ff2eec14626468e8f1affd7f014430bc54e71aa257c4dc39cddfb660aacbd95f50c26e468afa439cae6e23b087edbd122ca2537c43c262be272fd055525a8a3344db5f894a45df9e44b0bde7a62beb2da519c31bbe243a5eb785534761282b5b48ec71da03f9805239b21aa969964562cbc9cb90b67a04d4d7eb67272191752c4723af5997b318fb0a0415760dbd0c54e5e4e4629c576abd05c43bd8708b190bf55ddaae352a120469eba6e581f40a8a587f8320e057f2d6a223b10ea678090b5cab2da91905f56401d934334e31f55c526b2ad412417a5a9d499f85ba5f27d4053632ee02f39227248df02b574fdbe57e0e99ad534fcacb09280383de84fbafa6d6667272799039c1326e0f45821fce2dca90dc7e7524c5033a47b6a80251e1dcbf69f31a6b2105aa720eca9e03dc0e7f81ff74c52d4b880622876ac795fde6f0600b7950ba883a8156219bbfc6900de656818106575987ce49b09c315c756360bdd9396b892018476a1dea6cdf99f1c856034509fda32bd2af6fc0734fcf538525f81f605b8652572f3dde4451db81ca68b5c396e3a6b1049ca628b329adf8644073a7fc294da4ef832a65abcb115628a6a6e3d3108242fb4ead4fc9c16da254a905a101940e2ec11b2b3443f698738d1f849a1567b56258da6a2749cd21a9e77b1e5d649ff17bbcc017a733db193244f73553ce7b55f5bcf7d3a425208637ddf1a6810cbfa5488f748ba80262d5c756bd228727bc54cb15b1322414047e329f4ade9454d0976878752de264f207744e45304dcd758e04c8cd3fe54864c06c5073de79c67e7d27e1d2876b1c2d733cf6ce931bb494c84f1cb2edef641e09714699be5cab70d4baf560d8639422328ae9b6945b68dacb81faa46dd1e11a5cf979a43112dee586c0fb8631cd30021c674d8070357a5ff468ef02c250a041be716a075e178a5b8e520a11747f350a952f26c4671142917f6d88670d0da6e2db4e6dcffae8ea771c046c4d6fb065621f159768f5b47b77f62c72804aa3b8550129c065992859ce680feb30a9f26f41ff38a9b41256411b0cc16529bc537ada570fd5babb81e21513d7094d65f1d1855a9fe7387b03d8f44e75c1401440418299b438c3341a5131208c18d5a94d5e3ce5a56eb59e990d717c24f7d2a1f00605529aee379e2deb23b15deb604417761a4664451205fbd8a1e98822911310fd120a2d9af51495ee23a9c7461d0ca79cf80438fbf90842b5606b97f72b6626e3e423bc6e9dd24c22a773c51c2b37c085096780f052343e32af1238c16a7e0d5dd5ad9488e08c315a5fcb331879341cd1407289e5191d63307c970da17f3c26716302f06f24ea854ca822c8dc9dc35bf1dc1fd1e183f0530d4092f468463048cb97fd72f0600459eb617affd680bd10a2d92ddea6233e0e25a72f3b82025aa229ff6de1b9f889acd9f65f5a694c94e25488e08ccc952f41b912c25e6df20bc15b97ca066e5f0f1c7af9255dcf9cf0474a14ec561ddd4c93f4d898358c3bfc711ed962b6f1ecefaee15882fc2ecdb62c62aad9bf7bc2f6e4b8a01ee233e8dc44929763d7b68ee9d79065c8bfa324f2bc0b72299933c4934a7ac9ca1cb6c89eca0e8d49e197a3a54e27483edb9a8ace717536eaa098ab4ee99dc0f0396ee5f5668312920b42e45fe751860d4a9c237409620339f0ea18e3cd35643dd46bdc84dca1606cb2c6f4d4ef3a2e1ba966feba95b7169b51361e7ff083dd525c256e99e84c60d97baa861ea192102e1f776cdce1fb62348dc1a6691d3cdb77d13c8073e714baf7eb3813c5a065d66d1ad2b8026465fea4b22b084b63db7288d82cd19ea767c42484f09b69eb55c20fca6d1621b6808eef55db8a8a9ce00c9b6af1cde2c307e3c54493bd7e3dc6bc84baad2f819e05d9efcddd4e01f2b38ba3242216d0aaf7325f512116c3c2121d8ac8cbe15d32d8b6e9ca6481dd2d32e8a43f2dff6fb992a33ade58555afda859bd77ec7bbf7b5b5c73afdee08744c1c8dfb009045e875c04ea9658e94016bcfaf652d43050f2b1243e24de27400e55b7de80df52645d178472aa940a0973d4fde8c44ed06371e58409be8e33a58bd27cf3896c0cb003258d3f4067e25f2910b0283dd5734031e32889284d6d340477609cb7d5cdd44b8bd59a95a9f99fa3b3522cc275d3a2a90c71d9ae67b4734f4a9c62e2db03cb594ffba9da33bc484b77d7a64b2dd4dc57a182e1684f53fb2f4fd288946c2e37fb2cd4dfdc67c640d7c69acd3a5cdfa3b346582137614c4e1d738b741d30d7222f9d59a7ed5daff5ee9eb1243e4dbac87e71aec171eeda94f0a898839abb5c31b88e91a900e9a20273a5eb90e55ca8d6732a00b5bb96ca39c8fe204b6caffaccc36b6c43ad60e4d621054f1f47d939962ac71cc0e04d7e586b8b48627fdbd03f19bb165cdd51b8546c484a61ff766f3292a9fca7b02800fd2b726f9792d36ad8c9eaa8cb9a61a29ab594310109e41fa55861b9ce27fa09a02fe2f79227861928da120ce8af4364bbcf5964c656118cbba3dd241978cb4d9998230c26abec0e238521ed4a5aa0e87014b24240fa5816fbe70b4cb411b8fb2141d1efb95aafb6d4fac973230cabeeae5f497434306029839e84b60a788401d5415779be8e8c054924f3ed34a67cd6d474d3f975ef7d3a0c59011a1c33eb8cfa844a8c0645a2c5236024153b750ae81ee0f402ba88731086786e0a9f8d0a014b96c3ec1bc18017867301334cd321d5472467558a79b098bfbdc12bb9a9356749368ef65f1c98feafa5e7ebae5c1c7fd4cd95eefa06211633369ba45b07cf001e1d30ed731eb347a0840c3d0d0118b92690e66f29265f184dc306b74a0795c3ccd3efebb9118f32e127897e2f8dc296495b6b7ca3a9c699a9ec982f1cbbd422a1e0d2c025f839eb37e10a45284d62ba84436ebe6b745cacf68bd202246de089ef0485890ed82c605af2b42cdf72a9851239d24a689c2cabaf703a602493c58561ae1a9a10ec22623e76773d459c5e5623d355b094cee46931be6eeb33d09695b2fd28c99072aa2295e17f820eb34691d8d71c850276b9c8944663b4007a1d0311f577528444401b51f53f6f6bdff62c429040c55ce49e10adf21b7fa3125a62c2342921ec5a25b41eac5d584945679d8d2da24223cf8dc85993eb0352a4aa8433fae7ca3ddfacd73993ce54d381ca1c8708f1c5326172a63931236a74658e889dd8a03c6399e0a22974cdf26b0abbbdf081d3012301f0976a831535a7dabfec99fa20ca7fc0661885c2255e63843b69750484f9ba28abb4a508929490f1a61a563874b1104796b41a0f99ac4bc1a184d4d28538d135ca0cc3a05d9ac8e25e51102b92e04d0492222041900acf4c52a0f312e7de97f09978ca6d6500622a35643dc4b0796b4d6dbc60cd22ca8e836bc4f1b5225c11e836440b2fccd3846548988b10d7a23ef834d97cc8f107434b9fffdca04584f5a93a8693c6e3d22c89da0faa6d79453586f7992d25d118f15029bc5b010427421ac661f25fe71ac6f92e8a0ada13f3003e1e8a9c7bd804bda68316f0901ea441c176515a219f11de9b06843186e2ca30c87ab29a4fba7aa0671110e05919fd1946441d19673afc38d8e050a4cbb1296f7761b472a64a5a62a1a9d762e27a586ff64ffc9afb5d9b4c20e6ad66cea2df53a6205de7fec7f2c0169bfc2318eca3449687d9801d65a5e3db5fd6e9c69855894d046071eb4e60e976a4954bfbf45edbc0e2168e5533ee84fcf5a1252036c423e074521e348a54f65ccb9a97761b4a5db7371b5a70af41860cfc2741422d0ccb31299a7ccdd215ba724567d6dd07c5aa52bbbd32823f7f0745ba774dd5258b8c0419c4156761acc13125a175e655b8d34628e348b7579e62f06690fe3166dae91f70a52d58bb0885f3b88c21359acb67cb7feb1a06e54300499a5439db0347f628d82e04330371f8e9d79a6941c5fc7456d4bf880a0c70626da39d0c08fd368e41d4bf5330bbba3216e4cf868e5a5d7fe183f69b70d0e98af1e5b054f63a35535795d301cf38e8b256b43a1e072f81db8bd642063d72c4b2cab2bad627f302a9223e34ab2b316754082a5ca8bb25fe41e08f5d5fb998ae6eb866bfaabb813bc2c4a8d4c68a0f64f1c71116f18ee9d8ecd650fd44240cdd0b3b4855acca614bdc0fc90373d6cf8a8d92caec4af2b91043919ceac19b59d4f49764f735a22268fe5ddb50bf604d9c9186b44f82840c5955ce9e2aa7e26b678346693a7e93c74a7d7d92549ed83254ef2d9e47e5ed3523c8a964d685355a666c0c833575a1088af2e9f6985acc24daadb7e42aba1002ec7d1bd8a68eb2d01540ae0d37be916dc2e109de8b3d559b187153d90f878dc2a40f6fa882d050c189e036126171a97c7d1e94369a6be82fb3882b5a9ac27d3db72cb16bfeefd1e7c938a54ae73f53699199328ee7703a09ad6120d7fea2bfe042a60fc3bda6b6f52c687d174b7040d9ca114a736e93af6f7f90b255c2f43aa346bbc249e157b13f3c441322d0812898c817447f7090e263c71900752a7930dcce903f9a83d1743989f16803627560e45d7c1b797b7856a26c28422ad65891e6985ffadde2325545b7c799a1669ae7a4eb71226c624ba73123d31b8d272721dfee4f3fde4d2215cfbd09a584dd55c4d20114cb6b31b0c3e4a7e7871367a3e53267fdc7fa5d1324cdae071b54890fd6934695e2d2fb79cd61734186ecf1929448cdc259f202235208d5ec4722ef5a21b19f30d2e24abec0263f8fa26420b9d8dbb90013cf241cc2a803c44cd350e4aa32042093aefb5f7644473c92bb79d9a07f04847013055401a37c0dcc7292401c58df7a9a406f1108b1712e32455633e3147d60ee8bc699dcc8a192e59188d007330b4163ce76c2a4e1ba772fe80d381164785cab14e070a5e153ecc73256f93dc40c026f73e3ebf489bf24727318f7ddb10658683b0652f6047eb539d11cb5116e69793c6ba1772147466d9cfea94992eb78e4c3885273aad9be8324135fc7f48a23f76a477e9c52709e3e2ee00537fcd59e269f0a621c93497482db4f25be388822ffbd9d51c645f728d6da2846e5e0025c00066b691cfca96fdff91168223c23f1258d94306816094b5b5ed5cad1dc9d74d937770379c28f732ef6e51e89405c6a23bd7a58eb969ecfe33d5639e45087fed0abe31e4226fcb8b1f3722de53b110afdb6ad7ce8edf50de9dd901a5d27de6feb0437d6a9445ea3e3ac13fb499c368700180a23632e805e0a23596620d2e697b4ad8d39c0262b6917b267e5a8203babed860393dc24cdd56d8c40ca7415aa9f74f2b0e653f02a599b3f3890c1550c7d757b13f70772818c7ff410d5cd62077f636df62eeed0ef63af917262c1bd50cd42072b467ed96dc54a44610d62d6f384be803993759e9915fa28a51afe05d2e844b1c19ad3be30a4a1513c5c8b2ed2189370be49f75061a43e5f9f0ac43a355f7f597ba593b118ce49d2e62847573f3b034173b4d353f8e8430676e11b1534bc0515e06f9d6391bff426c103b678513767859d72bf30f3f61f6763e3e35b96045181b7b5e0f7f75c962b270cb92e4bc7047a2a19cc028c90a47ac10f1a85cc2b0cd424de399734ffeea27fbcf4061a0ea101973705a7b3c98154eefb7f71deeb3a5e8a24bb0025ae13d51c7adde8745ba0e46601cfcf1dc6c17784cf6b9be92ba0015bf7cef33b785776115d53c043e82cce17e05f0618972322f2489b1a23834a56abacc9b50b640ccc4d18d4a2ac636867aaa2b35850f0bad2ae6de50c25d0eb08b4ba3a25b2b80d64cab87a0e2b5fca7c9743d453d7fd284dbc2d50ad12d618f7cd18680d6bdc285ec38814b3850de487046736b88235d7bcccbcc2438368c4272ac8dcdfc67e5d42583293b9d1cf9fdefb58bf053eb9f9fd3e5e7ea65e6685baddb461f067a1afad3a15a1bee8d15ae4a717364d27dfe691dc1d3fbe577bc5af9446b34ce5c6607ae8043f3dac687e662b138913261bbef84efa3e8a8cb897397afabf28a6cadebf788b8afb80177c5601b390066743a0b0ecddc0bbb6f5df8245597c58a84d79a7b78c13587fcf5b0da09622c3a8e2fd2cd592c8d0d945055ce5af428c22907016e39a53a1c477e089bd22750bb1a441d32eb585e756cd632f2604345d464a0407f1370a0cad64098f5aa03ec2f62300f15933ded4978b2498298896b0f0f8200f4409493d6f7fc343d4be97a1badff105ff0a4f120444bdd8c78fd7216e758d13f53cc878cb08d838e8bf95e9895e2bf40030606ee279f93d5c4a18f8f9d4bf2016ba50d9830cec7102ff2a65255e93641587c8ffee984ce23520d30f68d4dadf6659e687668856fb93a2767b82f9ef0882e629420a8f5c44c161c900f7c32bf2a08b5f217ceb5845e1957d0c08c589ccb9995310157ac4181b93d545f27a0f5469c5e55b13318aa91a451d2dd710d2e15ff97dde544afbfc51b3d227cfda0578bc49b966e7c79c91fb01f490065996e385b0b42155c215595051061e548cf68acd12000513348c8d7c32e383a7c80500e607ab17553abf46c063f08cfdc3eb784973c8332e5e9bbf981f267809776c568fc1a009c5df85a08140838846e4048da967e64e43cbbbae4d32b2818c7505a3cdf4fddf1ec9ebf626d4ae7e54054eb86597ee375905ba6a649f65f4b4283ac210abcc8863bd6ead088816188cddc0c272ae7e179b2fea62512fe2c323e2a259c702442b1c4e5c8b9a0d2a2633885f9320073c2ee6c6b2809f9343dba7bb248cb7fe20871c5c07d8d08d3e454799c590cc171cf97cb2906b6a12d66d0d6dc5bbb5eab0822ab987376116e88176eac575710d0d11148a9d1bd31121f4ebff5c1439fe221c9cb5932500ced7f899cb263d29acb7b9c340ea04a285ca030ac3736c8abcceddac03f6ffa40b58ffae428d458202733a15f42ff4a74edddcef005cdd08098a99bf8462281d6ee4fcd211d9c04b56bcc97659d10e7e1b894fcae11cc165f699f51c7f5a9523f46f6149669bef6efe447648a6143cf72e329047625e7928830f029d65893cac57322c0cca5dfad18a213e185bf5efd2980b6af689373fa6fa75cecbec0e7e00450d3cff1ad22b0c0ac8e1231012a05480b68e7af927b8c6f759773c4afa87b6180d9eed3b1e575947fd10d844ff967d8b093c685ad7bec1dc62be44aee492a8ab15d84b891cb3e070e077d57732620cb22f850559998d98340bd1ce8146a880801a48ce45e095cb8c76309b82885035d2dc0c5d2bcc8a3266b489a17babeb665ec387f5d20f0ba0c94ba5056455763f31a0cf9bf37314822f9ec7611154102104a2c9ce92a05ba4325f9614a6954e81f1a20d1e1fa5b698d668c91e443c70717461aac538a4e2d1f54da9fa46b0322b2209dad7ec66b22164772e84be36ac8e91a98f863c7bf68738f027ff042b90562647e7cbcbef92345960d4225809206cf0a64208abe262dba3887b11aeff0d4f4c4821a2923c56f0e048c574603152600aff72911074baa671410c328b9ce6f27c323305bff1f76c6087dc8ea1238f7c1c8f842c6882a32c12956f9c2bd602595b72e38164319115bc7b78bd32a06141d12e86356e06a6dc7aca6bd1887d07b4a47092278c036d7712f3b8369ed612f6e66f73c8db9b405a9fb71988a582a8ee0bce2cb39755a07b3afb67320e8a067f514abfde326c9c29071c9b6a5a6b1d6b16935cab61777e5d62a32e15c9e97fcd421fea40ab922659b924490d3f6992dc7142552ce4462efefb386bc18e31d14a00634d08ad7416ce6f5816987231f328b47f74af8fa3b8ab27e311545031718dae7aac99f6d64d7de51a21e98b81a90fc29c5d25d736b0d9b6b445194c931d169ec07d641170e8572c1a24d94b36c52e87ed914690e5c7f5fe25780ee310f6e640a6caa0d7f57c131046478fc202edce8288eb731be00b0b179a531afabafc0dbf8570e9693a315d73b0bb131c14999aa98c89fb24e68c360baa038bbccf49a66725fe08070c079107bafd5bd7a0b5968287e62a6da89206ddae54b33a6d03db177ae4ebf09a9f151badc799d98dfbc7c5fb2f4f39973620e40fdfea04828062821c996e20cf01bae13bd7ed43e0cde4d3aeadf3301d6c46515f2d41329bede2b88d44a7a1c599691fc55e0144dcec797dc61331d2e7def92cb57cffd57cee63cf7ebc1d0a147ae91cbfbe127f75b0fb1fa281145847fc1260207f888cc43a74e16fd21eb4427f3412a6c67072cd26b09b16e148b04587abcf20062b53a8f76abce5f1e37419c807e596a97a8871f45a818821c5320aa0cc73f0fb81b63c4b270b22c08babd21b4c1aa055532fb25640fb96d712e8c2f7866fb201f666430bb21db1d7d234a137e4d47a01ae74ea95179f5e6beabb150c0887f1256e9f3c8706dbe192acb2a2b572512fb9964303a296a6aca30112bf6ecb4aa7287f76b6ab5184a7c028480582e14588ddfdd98823e234542cd8eeae5a4b3268409ccc50ec7bd2d3b65a6f6ae6eda8b93319385c1aa424e10b225288397e990e7e039b3bb5ec6888d1a1fb2a0e11f31d6d0bb83032ddaf0f54793e028af291868f67421aa719bd9936e1a64a5c101730109815bd2049ef0cc3b43e38e43cab8e1a7118ab2fbdd9a7085d350db0ab4e1b4a0819191991e942bc2bc37c2975d033c5865a48f380c8899ca40ec511be20fb507acd71fd4716f61479d8dabf4971c18861ccfec0b6fffa05c98c7b929dad1cc16bf075372936c2236a049d5be6196aedd50898c26196b935d16d3d88a624f83792ff5c4a177f90d42b5f90f788594a532fe2bbc8e526f90a48b7fc19ad117732e1749d58a6db96f029bb0c00a49f6ade292cadd42db2c8c91fd7e02f4a8d408bcc524c56106bd2532aebcf7721e67f1af38e28b67b98a64d07ad89955c83c2dbb8c5e29fee2b338f72049bd02e0329f3f21c3dd59997ce5224d1b6dfadc4d080a68ca56eb552fc2444f50f783a6292b05ea5192ae033f7d5434b71f7a5f8804988a584fa96d5a0c3b4c14e3cda6be4fea3123df9c5d5c72597cf89d601e679440946c740f55757c4253607c8240b3cf4430a1b4961e03a2b46b87544e807849bc4dcc12594c38a0ef2eb5426c652b353c84ca35e2a71b377ed242fd52ae45c3d9c7268674cd1ae2505fc15c7b16f4bb00435e93c750526762002a44cd5eceb2e6e0a4d7a690f5168a2b1f8d6e3c2ed59d0c7772a4acc1b6634b92946867533ee2d967b83902c84296cc52b2d558bf183e40a881de60d50253e781cee0c904716a69ca6b3006c8d8c105200ed3cb230f2570ed2d6e6e0d1e2cf3295d39dada48e6aa5c94ebbfe2cda1d2ccba3ca61a477ba268a666c4fbdf5a7bf503b5bd817f26255faf7f101b4fe2e0679c929a2f109230675c062907b22637dc21b542522f022df52f10fe5fe7187e07d47043619a3cdd01842a4ded815c7a9b1966ade70833dab568cdf58e79cbc5db24f531d00bdf7200a0b0ef54f572e4f3114d79d238e979a0e06a0b3ad82c3f9993a5b47cd732961e03864ba19be696816dfe1afc6e599e1fb4e93c86a4f3e56297066ba45ca805504b30c8c3a92903566a173df7e365ce7cd78e45be4141772a4b807faa788570dcf57b443b53b5aa8d58d59e402522948d9b630d2fb24eb1df9d5588fde7a873080da13652110daed5d892ef6a32c367bcfe35e22fa1f1a2c67973d81cf35d187a41bb3b1d711aa22f1eaba415a738175fdda656a822cc8e49bed20fe00715ef6da215109f149c74b3aba1a63a7fdcd20aab09d2c2d81b2b22d1475d65ede164696ac2c29d72940a4b3057392510d60d3156198822f2c1d8dbfa62a34a652af54179085134290a2ed827339f61626f05af127ba0e5e841ecdb18e12c571f9b6c03db05771b1e87d856a5c7686281ad413bfba1b85e1add1f351353a8975b55b87da76f8f6d645365f6aff2ee0e3db7796af720da4c42049898282d5e1fe4b7a1509997a65e02d59cc997244ed742f222e6ce4a7f40065fa69eb302c9f816249e15a2fbeb87f4cf5a809d078ce12bf343bf8d914167157fb3b44e5e9d27ba86e5b501a8abb086305c2bc9e90b8a3145ccaf2963a717c64ac2bb2e0f30fa24d3815f82d9a583408c06fe02a3383eb602ddd70a7c5fc1b62d8fa26c9448be50d77dad0356a89f7b8c5c7b274a799be29e894ed952d60b7271a9c814fe561e6e6d4969cdddc34e307c7b084ead988d2cb44933e1c16090b7020cd2c20125071a50f00ee0c862034f13b08661b91e906148abb20477d47fa1e27dfc27be418c8dcb557ecad5bea83580c206b1454f916d078ce68aa7066f84011dfa0a67aabc334a23167f4247fa657858ff43878ee643b73d2e0e94cfe43746621224f09c22819042d6e845b85da57ff10560eb808f126222035fdd31b9c5707eee8073e8773838372d313850ec22ed85b59ab6f82bbce7b6c1d5b60cf115bc9ae37df8abe46ffea9552ef29f91909010d2d245fdd25f062870ed8031031dc3de386e9bc1f33062df00ef234416261829019d3999303f980f074d7765529a65b9a8118f024a57c44589c2393c244dd22c7833ceb7e8a279c69f510183f1e16c029a0083282dae8ff1ce2fdcde188db391c9b5b435d8e6dea8696eb8032ac7097f9f8f47ff8adbf2de6614e9f78650790bc98a5520b9613ce29b61060512ca47e8f3e7929b2f97aa1ea6e7288dd098b0ea605b7c38cb076aaa111eddda09bdfb79c87f94c87f40b774f35f61270675009a19e2578a686ce2530b3dec9aa219d6a21bc167f98b387694fb2f8a7af1837b550bea5da04fcd23f9f6f28aecbdf4dd8e491ae21564e6c2636a23518efbc86983deb0bcd82a220619f905c8861751d29ad6d216b8d8c615610b417f2c4c663c33985eceb325364dde8a248d6aafd4d4c1deebf7bc9a256ebbfdfb44333290a1644db808bb2ded9b6313b3366b3633ccc1b0b62fe89839ec08ba2102763aae8bf6b7c9af9510b8858086f44b6652a7d0f6950215cb0de0d99e400df843ede137f82fdf114d0a47f985b295885ef9935940df1feb89e5c57a8b322c746df383efe5503d0c90f2fc261f93e181f43857fdfc6d5da6638c032c0cb93a57a41e7694176c30599cc210e0125e1fca83bfa693c10e0d852eb3e8520d27f29de235773d6dae3a2d150a380e8aa85b6d180d55254034618bc19f4e80b80a92c87e36399cc949176d517d61fda58f0432eb121ee5bbda2bf5d6da82b0ea5ad15a330e9eb5e68675f0d5fdf30e17df33b3216a54e272ba8379159507274da31ec683da75a44bc73f1241064be0f08d1731231bab247e376f83c94341d5b799d0104fb5505ef3f8b62760dde6e626a298f32ba93238769c239948b5a5a19fc3ba1cb5f3491c16eb91646567110123ed6264b54a9525d801fe38b54d05dc81a06405b750c13c0c28039c028c9b2abda6574126f1a8cab06503a677875fa3ee59b24d26556c0a280417173f9b2becb8ff55ffea86ff2b9fe934f535f94cede7a3d14c2d16a879b270caeef98e3ea9551a19dffb67efb96f96cf0653b121d98a85da1cded07abcd98ea4e300e75869ff3aea9a303df3e76c14ebf782195df271c9f794ff076b10a720d5a3593c5661d520e24b33c80d6a725b4529be5143fbeb6cc70d13d9868949da48d3247d3786560ac11d0713f988b02bc4ca3329493da3c0b310361eed46a196428e84b7716c8e6ad83fd611c3decc07c2a9a7c093d226a40ef168a550784ce1bd9b6d93ccbc017fb4a4cee6184f3c87d1323b6b2162218e1272d03f42a2838690ccdbce343e790fec3e451a789929a596723277330281f7ec5dbd1b9e9f88a5473cf56246c81778d7b4ea527eda14cf47d110409633464f126a017c3f44c4e69ecc4a014658d1119c289c5b8626d9c60134fd8fd804710cc901ba4daea671761d28f6dccd3d796983844693d1de31b9e96d0a86c8f9d9a8cd16bee2ce28326d340c30e4afff5023e999fcbe565f2c19866ef1ded9baf9ec620d0b58806fcf973248d8b7ea564ba6dce5104f0b5f9450769fc0c2beddcffa449901856cf56a960a9613a4a267bb7f8dc6274e02f2a43be1bd427ba0085cc957185ffa84c24c0c30f58889023be0564f9f0d86d142551047de639727627ea4a4070593527af660a4ac9e1ab3c146f4683a0e8bc1c63bb0be50e1f8e1d761b6f662296d1252decf8ff598522552affe8e19f2e102b27b0f0fc595d15236d9a98c0e81b5349cd5d2d966a887c761669f6bb0a694782b20058dc849fc498a2957d0df5a0cbe6f9fc39eeea2ca09275528d61f360a4c4f5fc097db1fce4f913734ef8e6f9cb0df7194ccfdf99f0faa9e7cf6ba0a9597bfece75d791dff3e720cb5a9b092492f5eb36f20dff3436d40f8a4ebe8cb484c584e31c8662210a79910e59f2f3323dcd9b0cec1cc8449d0acdfbe1bac409fc67866b735150c5a99e0a9e5ca5341fe65b26e84a2182e091316dd2d5cfd4b0337b676b8c8a022a56f0c45758c006c33dfe01715273715455eefe41ad7043ab5cbcea58cbf0df603e5315fb36b86fb6ea940e458549a1c9dfdfe6cff409ed249e5540d22555c6a37dd34580e27f4c4592aed68884cd7b8cfb537df3aebcb9c15deabf18e4bd6c82b3e7d75f9af8739ffed9e196fa679198f519d5cf7b68f8c416a0e201b0573a027001c600f99a5a38a5c9f606ee6c38cbadb62a580c0f423d6fe82c6f6eaa068af65261794810ef036fcb470690d98a6a9471e88f96feacdd19f7fb4ba0632b98fedd9bf5f2eff9368544a9b152b5fa7e540d1f5172359b6f36770adc3d5106f784e78b6e77040e5e17a356136eefaa09bded314062c734d82753742db094b050ad460811384d8c4585ebea8d810deca62bbe108a3ee5b20ab28971b2b00aa25d03e09711f55ef5f6904cf639222f449ebeb647f5ab25430e0f9f306893e41e75d328ff1fc68717c9d0aba217eeded69c0333d54b8bfcc08a838b74a67c37eec8065131c8fea649e3a6a0d2441464a1a9620d0f865eb5d3346a7b3f1561f2733c7cc5f00c97e3732d707c07e84451fc70d1aedda8acb11abdd9bd7850869a4969d212e019b484c2572f97b10c57fefc708ad6e6d674675ddd4a6d5cd9c3face5ab9958f1d37adbf8d76fd56b667aec6edb6b5aba263a0fd0b238fbb00042b1a611240f678fd3d006536ea1d4266bfc1498200d8c046849e44b0ffd50f96ebb0866cbf46ffa94e40b9be3425798c3ac825c0dacd9773958fd8f222463a294b60d7ce06e487748ed7b477aa700b4a81aea13565a6f5d5144eac8de15d479d27cffac4b8186f0c39693e58ffa9980cea5a35b56d79c104dc56f5ffef3e51062cedda72dfdc245676c3ed8f1b514fcf867bda0219726787ab0e599fe47a037bea177127ee1d6eb087c6441b4a4cd57345be9ddee1d2bf8ecfb2d7e8b201284f542046266b597b12efe53006eb88ce25dc7049f60c4b4a3f717fd992ea1d6efc0f9e27e306f8f28145f8f5e5275b09aa905ea35026f0e31dc08b923ee1098d3e0593dd0fb5f5e765b354c21e17e6ecba59d91a75672566cdb24aef7073a73214221a5a71f707be6dae7e0cfc302e148cafeec87f4f9310afe845faa281089a93af432235080adcf2b120b79b5f6bbe81cdfcda3b5cd423c29071805d2ba8d9dc64c0f339dc0260694784d517fb7fbd339515d267f5c67f2da922179b111aa8db5b2e2ec49ea382d73ecb2885788ffd4aa86776d903df27cda34d1805ea3ab4e01d5334b4b60b168e1840fecfa8c6604eb935828f2fad274a1867205d0f6dab844aa59803b955220a0d50e667266a7bbd7fbad4d9df7c30bda49057e1dee6f27d6b1096c1affd400bb4744bca9f1bcdf6b01944bf7acffd6bbce74a9724aadfded63809d72638c513ae15807011705ec0850c7846f7bdd8d2e652612106c35c7519dbfe28b7fb3651eddf67ea965871cc5459ddad13fd9c72b8e2232e610fd823c58e256f059abe96cc65345a3d2c43bc358728c9d8b1e06ad92cec682379dbf37336aac1488a63e07d8933269888f7f5cc3bb489456173e7c935f7b88fdd651a207aa78a4f73288dc9538da7f74fb6b7d1bb0b6e621212c19f5cb55f979663d666f6900f816e7ffce8e0c9ff7cb805af8e7b128d1927c96ec1dbdacf6f7852ead31e4f8f2f5c6d413d2902953711617af55de195280cc6233b77d1142f51ba5d85ee4243809f803d219e5655fabaa8b70e7867c19e5789b7d2969d160fd360697ff0779e31a1b778d981128045216a8a49c115877143609033612ffb23eaa4828f3af15b6556772adcc69c14bf60ecaab3bf56e53bda140701cc6e548c9dd90590725352faa310550b10965312e58273a5976cec6e82065e756347fdef5d9f078e0e8d8a9070ecd2dbc84c87f061ceb0d9bcbeacee742f7f11bb313b2fe60c9cfa90cc10977e59548748189b0f99184dbec402d0ee5d6f12169ce3817dd66ed6f13b767246532bc728bd71ae4e2d6ea9f3f069a2a652b2ba019622908da49b1b6c272759c5c13857a1d699905ca1a6be064319ecf806de20fce76fba9c76bca2a48495c7e24a65614a281aa4b0d203ca25735c2e7a6503625ac574f2f804327a2cbfcac554135969105c7fac81d982634be8dd2ace3ae201db359b6c941dc6eec3f9b09d1afda67d03fb8dfa90f04195a6adb191ba5406aef48690a0380114d50b731c1258dcc216f864d090289229f20d404355b5cf4e29f978192279c25eda85905a48814f04c73050a6cf2afbd90f1092846e9c7e2e25a71f61198d7842218c351061e2164438a7c848679719cc42b528e67e677cbe6d48dfb8ec605c6c815206ac7d46ca878bb263843c652ce03bfe16d333c02b44a29b570af63d028271174e281e3850e31f98d420a67c00ef6dc201cb21912b99511fcb9708891b08803fce7c4dfc3f8dd1b0f67815c11f395f41cc21bd3e453a9017721cd6ef28762f4c57db9047153e683e795499c21f08fee24075d1904fdab05129af6e1fa60358f945f6cf36d122c1643749488625747a4a71669f879f4f91bcb28ecc96911ffcf8b5cc7f3f4ff7f04ae4364e26e885b6c1f5a428281f75320b151a04f1c9f0db0e413329cc48d139260dd93099d9ff69d310717d2536ec6d8842d30f6522639cf3c820c1320d3c3ac1c4c14746e7a2ccadcea5ac9f5e0b71ea9c682bea9bd98f8349c213e9cb9b1d6c144e5e19b7558608d0439b6915e52975d3733bc5297ff2ec5a1bc17b520e450601c8b1cccc6c3d2717c6e276d214dc3972afef932dd34fc5846abafb58f19a84f181aeb23e611329c02325fa545f37c5e07eb5506dfee844db8087004c14d09278bd972cedaa6afdfa688b46cd58c1a049865372f2e68c23629490310c7318242892857e3448599a04c815d87d7feb666dec10eb2c38ccfb216bdea57d3d9a70989fa076b4b616619541220f89accc3a54aabdfd72bfaa4872a95907c2b997c566c8dad27c0272302d22c6ba574597fa98c2fce8fbf4bd25e29b7de56307821ddfbd49dd6094f2351e05404f191c9298f991f65b6fb4688f8a2c41e21f2ebb0afc1bd44452a7f0ec202c60eb36200dea802e96236ee24f291c8e57ab1fd7afa836b24a9880517ff911d19f4a0598dc3dc66f8fbb48b36d338c0e756d8b332e730102049462d297544499430cbd1a254b08215d1c65a318961c4d431de5ea2a13e46dd2f0a1610cf4a36500b28f38096c8dfa047137536bac1cb390e2cfe4e303b76198e43256b492eb0d5792036f841a3e30e9048a2f525633fda16b81842c69ddcb68f7ecb3d75d54ef28cb209d88aa2c6b03e9aed828c4c588231bf965cf7b2bb90af61fa510e4653bba48a8c544d6d2c9576885b03c1165b47c2320e00a4b8d8bb5efa2dcada900e8820e7d4e052679203d09f2ec60aafea8c63146873b84fe9c79730fac45693df7ea09819ac8374c8f4e784ca391ddfe1e8cadd10c352c010d55d29a59cd0a2af7f908ab070c4b8b93471afd21005242724a6129ff1034567d9ca9812ac952f7f81138315bbda8ab7fde30d2a0dd4cc6be2fae1ed0e50b0a03bb06da8a579e7d0ae51f6852fceb4156fee14ca397216cf970274723aa6cbdf292a90785ca3f06b030b4293a480332eda4ba3bac353cb538236c4c536d83919e57f3cadd48c07405f6fea1c1808d60a608826570260138b99f0f12bfe1c7b3cd8afe007cf888611c340fd6d0834b6a3380584504bf8f8fced217b6a3647e2eef524bdacdd0357857cb54320490843d693f4f55ce0da6522d16e3954c638deb08672cf7e94b43ec13b592ad4835b3526ce8ec1e91ba8bc5b10f7f7e7a5c08c599cc70630252e77116dbb077769a8e416e4d22149d6c30169609fd8a6bed88ed41892abb4dca9cb9a2015b1f5bbe2aadd77157a89c7010db7f1d8cc0090e39b2086743d89b13f3b78786e868f4b1993b6430e53b34462a809c29749cfc8931fc725ec0e5ced0692b723a58e3ff56dfa0a5e6f725c6d01b647d3378552eb60077d7134c19a16d68fc5a13307c8072b55fd5753afd23042b1063fb701ffffcf14dedf80441aa0c9b2eaa5d305f59c8acf0dd20c2db8221d0a4b978ad483e4d024526b819786b40a3f674f605f3f21672518d494a8e91257db42ca7affc2a04e86f64df75e4e1c38ef7210cb066a92fa2862d0f90cc460e76d8013dc5f9163f8bb005353c0d4a9446e7309530f2a8cd74da85c26ccf968e829e6a83a14e6f2d6943b995c70e050634103e5bc63bc52903b8ca3a6fa46a01d3159769b92881d5052cdd8ea274aa4d11dee6592648d66929cdd18431ad21ed96b278b1f8b38feeaf12f5371e1501ef28f3f3e8015e9835a6137ff0a81ccc75748f2bc5e2fd3159da92a33c49f1108b86b55a948d24b98079d62532af031ed4503c7230a437d73523222bf9131e30619aaeef83091c9bfc50544ae63554c7c2433a3619986305028e0d2fc5ac8f5c56877d6e3600baafac3cfd29893b3a3efd7a3656a46b29e74adfbeb10879d480738982ef7fc41727577310a5ba7fe124775ff80be5d15b698ca0293ec6a5184242d6ca881527489d77e46028c70af43562740e993bd16479d6b29123365391db8ba31d83a7e32586bc7bc9673d6fac4256e2449b4801dac7afab1627094f9f4e29dfcda34c80bfc3e2771f46f91ed67a0f5d50c239d99cf77241892ed1c0f09fd12868ddeec83aadd588f7df33d6015222b46b38b506dc10db32c8d556200941302137ab45e7032a9c0aeabfff14c831729545dd845fd6ff2b9012feef15e10ed2c4fcaa466d7d48cb6fdeb21be91214107068a5b69ac1e51feae6a4caed8813f5cda3a94cff2936e8571c445186800e9a54fece038e93e7b11591bfe9eeb6ec97a19ab5df38f16666a05012f39da1f03a3d66ac925770338adab679e2994d9cf8362605397761c0352ee83f8904db0ce069d03065c05f3aba6d7e8979338ea5f923ef0662c0f4ca6d68a71d462f9a3795b69b96f06a49343f2b013561ff080ae700651d11ad05bc171a4dee0d31b7c66d468f3fa044c854047fd38df3d149f048d56af4cc148fc991323d1a8f5bddc6a43a733d398350fad2b6e2fb1b9ca7036efaa67facf9b45b7e6626b2b4435ebade40c3d57795b5dcd8ab2d0c6d62c61e66ac89b4d8a284865de9563ef7ef5f222be9f7db2a5ff88edbb615b0ef69f6e5b6ba5ac4f9af3381ec95583eb3c5c9f8ab1d778947ac4b373b9a35e3635dc7edd2349abc4731257f65a02d57193031112f47bb8d716492dbdbeef18e1b40eb37ea1f90b42b623b336b6974619e581b06331ca2b87918184e940c15fb81a126d22287121636a52b1bb7cd5f407891431cac6940e4f4a8e0add500dfedb66dc0fc1ae8978e6ce480added62dceeac1e726632b6e6a2556a3acddf45d1fee30a96873c21b9a7bb78b573094ce6fcb803ff9324b16f8580946d829bdf945a30d94e03be20c343e7514cbb2f2d2941ba181a690e64110e186bcd530141e30fae5314d6e0f0a3fefdd421601af0f2a731cb4f24560e94c2f819bdcd0307cf84300faf63c6d2ca99ad0cef5ae19e181a22d4502cc0e03da2c127156209c554d074e41c2db79aa2e12a4159bbfe482fa8d73963c3d64ca318327362c74a1cd38b2e4c50484282a6f0b1066f3c71e88352c417e3ddeb8ac4d6caec339f4a9702f9270163f4a4d88ecb6e5de5bee2d654a52069f06c9062007a2f5940e42c43ec6ed65af527913a9682795936b97692fb5efd283ef81b77445d93b987e7ced0b427b39ba29ec704422cb1d4c2212b263e42361fa2464c7e0971d535fbef6e9e8d7be7e3ac02f7d8d77c8bd0cbbaf2e45502c3db51de7d1cb7d3ae48f48e40ec331881f71cf80eb0462e6fa335771a4a5a648c862893c1b4877e3a855f4e1ffde54f68a7231a483288890e71c5ac26848074118d2810f261b8890c488900421012242324449a0514ac71a45b4727f871968652afae0beeb76e4fbb4bfe42f5c22c2a32cf27e87875f688d80ff5d55c796f61d8e406ab6dfaa9ff2bc2360fab2caadf270bb0279b25d14472791ebcbf8316b9d16f0f20e8f4e9476d94f4bd5df8eb2ff0910f6b7077f0bc70ff552aa9cde86e3b44fdf34dadf90e8647f941790b27751da25b3ed3eb5fd88fab6416c41d4ef41fb54fdede7e9149e685f7afce09bc2313c01a23ef8f541f144fb13204a7fbf24a2f46afefdbb2365cb68bfdff371452be2b1fe26a6ac5fe17af7a6f2bd5704c3fb2008da54d8b6b54ae9ac3c88a5d9597401a90b61a05d3022f2824e56f56ac79338581221f1c9dbbf0f774dede9ff20675466016aae0f7266e6b9f5f0630a216d4a20bb18d2f95eb39e32c5d15ffb993dcbef07ac93eb6b3f4c9dfa4654ef8168997bafde7bb3f71c12d7853f78c852aa74dd7fd7190144cbde735bc855fc41e3070f794a95b1edccdc8fd945ae559492c589a3bf0fdbfb77802049f09f9f0ffedb5f39d38159e335bd897309586a4fdf7d083265aa0c7bf8418ba2dbfb88ea1607fd133a7f3e909aa77802049de2a437b0ee3efd97f03c89ba2094026b368d085da075d674378f5e69b532a18af6952a9527cad054e595bf78b4113c5fd23642842ce4a9b1c0933546fc52fd4b736dfe238c8b294de7afe447e714de13de10341a064a699dd50382b7794e5029a584a252a7d4532914a59452ea9bdbf69c981e11f07c6aafe73d29a594d24929a5d4524a299594524a25a5b4e34e4bd8620b22a324d2f340a912021ee92acb77f9fef5402b5752c2f3ba6a9be52c6737adabb6d94d26cdd8ac818cb4ed3559b52a8792666c5669d82e8792fc1bf428a574b494f3e69220ddbd56afd5a5bb94d66b9dddd3dd9d7a53eaeedeedddeeeeddedeededeedb6dbbb5d56132b3c59ff5bf6aa56ead925adb4ba6c9a5ae98fb5d25aa95b3a5d0b4fb64b3e15b54a5bb6944d5dd4abfca669d9dd0da4b3f476d073024b295bcaf696dde2b69d40962591198cf24a964466f8c9fe2e3ce50d597e9b6419634696f894e508439b2c0ed2a8f08f93e6f4fe3d694cef4fb549336926cd29cca3aa9b3426973c69aa2825cb280014a9e28f431a72e5d959ea9770c8fe1f00b2ff0d40f6f754b27fd76265b27f69d26c35f0a4d1c41992c53fbc11fe8b23cdd3a03143e3861b6cdc306386cc0c149417cac989eb44868c18193162c0c450a95e5426262e263060b4c078f1a2f522956249a1502ba8d349e56432b14c180b00836000c05229a5f47dabef5e1daee701c0ebba1c3a8eabc1598b83dd3671d3b4307beeec5265fef835f7d39033347beebfc1a58ae7fe192d55660dc2738b53aa4c143953df5f55a7ec5225424db87f96929841a67b4a48c19b9fa7384e7a44e49a51c8fdc9e099553dd3a65f15b60c8990a2c4730a52061e15d5a8b5da31853650efb9630a6bf02920c9e38a9ec0bfc6f4a7af69ddf4ad48a70c30fd4d7477775a5b987677bb30fd49053ccaa21d43f68aec5fe3afc903a7b491600e0a2b54abe02fce96a05d2d574e753c5963f44b7dd019da98db489b5dd52b77eaeed2a953a7956e33afd4bd3ad5a8dd2289ba6b74a396722ea3f368ab76960449e751cf43a16e9d72b4a31e0feadaa5ce6dd76947e97d99ce934437e8176487727b4297894e7624f77f4441fe83dc5f6202a420e83d418be43b484a92b80f92922433a1229990d1155508b54eff6cd13a2d648b24d99191ec08d12c0912d911a2a1e933837c7a3c161a49241e40a8d1153cdec3510e859b674bf467433bb2c8dfeb585210b08748bee33a484a92b88ff720294932132a92195d51855014fd44c7da678b066a267a89d6d922497664243b42344b82447684686802b9cf18fdc1f4993d4672e63c92fa29106ad4038f5eb58b2d8e2d771fa25f03c7b49d2d79312ca9639b5d3c6a4090276b8ca558aeefb515b865877de4339c2b9632c55370fe8144a699765db92d680bcaf5e76cc3942af37b4c22f7d7ae9b794afd560277b35ca5567bba4eace84367fbdbe3761da05f1809258a5c3b36cae43ad404914a7eaeac5c7fda4debc981fe52ec084a909094284992240913664c48c284244c40c20424de0dfc0836b056582b66b5436d95430d994c2693c974a9e9b36129e464684bde971ef4fc75fa93d8f2fc7b899e0ff04d625ff15baddc434c3f16a132bd8f4fec4c9f63944598ba1e722f085eefadfdeef163fcdde3d587037ffd8a4d188bd6fb0b963cb1874c16fb35def59049d33ed99b97b322bd5c50aa592ad69addb60fa51efae4114875cdb7af4e37a7b5ba53dfa8ed5aebac5ea9b7d6024fb6ab36edd9536b9db5bbf6dc0965d5346df674f710664f4f4f4f9e51f4f47818f0edb93c77e7f2dc9e202f1c55b973afe77bef51bf4fffdeeefbeb87e3bef6f7b5d75efbbbfd73df15a1cab6df250dd2cdae820f086a2008de1f10bc3bd70704c1db33771adc4a25b0f4b2f45df1f25c9ecb7379b62100dd9edb0364395b3afd76df3e0e65aff02d954ae23877b87befc52adc9a197c4ef7e774ba3d97e7743afddd39dd9fd3e9ee5c9fd3e9747be60e3e4d50c4a737bd34ddcb73792ecfe5f14102eab93d77e7fedc9deb737b6ecfbd1f90df0fc8e7b33e7d37f0b76ffbef3f5478bfbe3c97e7f25c1e20b76618eaf151224ff1da9ed81342510c11c97aa85c019eb1188ee118e689c59e108a62debb737998000a02622268767506dd9e940aa5c6af2e8f0a309e38a542a9f1abcb138b3d8153352ecfdde9188ec5fc35812e8fd7edc42e9e407e812ecf901440d7d47c8cdbd34f2273b556a79fedbe0f738f3f8c3fcc3dfef07f3dd87b99b9afc47d7f39fce1fb77bbfd89f74b25911b29f87df703bf07c1efbbd4dfed8ecb561c37ad7a837333b29fcf9cd8daf956b4fff5586aede7e3596bc1efecf7a5e6babb4f1cc771d65a933d9938dc0d8a40b6bc7925b10855debcbf9c278eb3ebbc08956315ee2d09487200b234428550a62228cf166469a44889ec81d49f73d45f7c31de50a18f517bfb49e4795f62710c32b7c93d0e479a2ba7a3bf21f38a23c5f751288cba8fc2f347cff825ea82f841f1ce1feee37ee9e51744e9f1d7340a7c209d2f7e7082767b9349bc0fd2539f50f84f6ffd45f19b442c8e45a840f11bf2a5f95d2f77e2a83d77d26f4571da17140999228aec92a5912976722c6feee39ecfabb9fbf88144962ff30ce50fcfd25229bf1e29d678fb03691ff56537eda72e29f7403a7f3e59fbf1f3f19f42c91447b2576f7f3d703fbfcbbd191e73fdd7f4b8fff4f4c3e1a36574cf76d2f1d7fcf194edb72d8cdd3b02d9c68ebdc0df5a1c31ea3be5c59fc4d1a6524ee27853e1e951a16c713489b83fd18a9e0864cb9d3806e99e6fc837e41ba2728f7d945382d329a630464177bb79c56d8ad7eee051a552617c4d80c729bb2f6b97f75b1546edbae26e0fa4b72e73e29c4fccd814a2425ecfae4ea176a1a0ab3fbc8b2193a513b57b026c5fc64c8067466997f6f4e9aff238f3f80d992cda1b39d22e69e4c89176391494647f946fc864d1c4afe61fde4517dd3277994f710c32af278e9d38c5b10341ba9fb14e1c699e531c6daf62d48fbc2455173ca576c20dbaf8e178dc0c016649d4050ef2d83a42145e6b4dd06a14281757b8ed5ec3c5176eefb82983add9a1866d47d1108f9a1c3c6e86e842278f2dab04cf8b426b4214aef0052ecaa006add2ed0b5e173c469c7003a22e7e7a253140a46448dc8187052c573572abe668adb49945bc9925253a43d2d3dc52a4f943ca479cc0a17c84f6c9192fc91923a64efec143fe82a03af3e7950d8527b36cd728e3e5bba442782b2ca9a783874466384500e09aaee9ece58025d534ad06ae35b41c38883ecc1c9abcc792d2b8c1bb02cfc028cf7361898534213ba65be48c770f9efc81dbb44a5e2a84905ca8a1073ad0020c365083121bf9996eafa82883c7551e128224f7b3fad536378af21487845491a9a89ab99d05b5d65a71d502a6ef413c10d7173d22deb384e70f9ebdbdb2ef65017f787b214d54ad8615e27a57600fcff07c98b93bf180f04c3d97b389cce7d9b60ee911e6b0f49491e6f1c4e69bb580b5af6fdb45e9ace209157d9879fecc35e7a0f657dff36a0d854cb109e75cc63d03de5ee6faf3fb810bc79aa90ec9427f6a9b08da88ed81d8233a6f5a06818e962bfaf4fb61b34f37d165b748647e4d4f3106c94e64e6f920f0342ca409cf32f42a16d244ab3c8a8534214b5a8c01c8613e62294b222dbad0c870ca92880cb1ac6a2a4406a2f9ae048fd2a86247092050410514595072a40653f860242019000d8a3451842c706166c4864a81488b9d522c734894a0a100bfa591e70d0da8547e839dd309de8aaf451559cb92480b2950c78287013c9f4a2cb79863f7fd05b1bd56899476dea684c40e25118926ec23d184f6251df2b7f73eef411104451ffdf63520a44d0341dfe33a6deb424d664d3c0142f4dc9390a4b3b8224ba219117784288b28b2249a3d9147eb2f24baf70ec8277554cd5f4804b1e94f4ad1080608911db3798a3f03ba5ed4ef609834369365166ded4e69ad1aad9ab66dd6729be5b8aef3bcdb79f77e5fa9047e2510c4d8643ae1cb325dd6e9745928d465a55e4c18779a98dca98a218315beb8ac87e1c13031b9ac50c57a4f7559610c9665854a30672361a15720a4403881900809843302e18440381f104e07843d44d83dc29cb071c29bb0012b06840b0879c814502484910d422621604787cf017e80083240ec07a11c321c453e4ca31ee6ac0013890033c96627fbd4fcf010b4436c0042376434e14c1bd9e8994c23bd42d74e8c0fcccf4b904bac25949e929d258e33b36499be123cda69738b7880654579c75fb0efb7327fa958233be376b8204ec6cdba9d2ea893f9cb01de8e17e4af9ceff764fec2b951092000292b05bc0e423c0072a88183183e8d1b66e478141c7f222386eaa5bf08f026f95fbcf457cda75027d38dc760e9bbaff75cdfc53c67dfe5b5faad90255c09a5a7a8b04299adcccaa44c87709445d248ce24120ee12893e64e188ed3e7c371fed008c719744338ced8388564e32c329aa9c2712225f54efbfc8c1dd4b1166a59178d6d34f6ac913aa91bed68fd278fd683468fb9501eadec1aa56c041140f714438c1061663ba8eb5aac1042c9155798a027074864b002a9c68bc080ab9d83f64eb7c4e2095008395a52548215d8b41572cb72171992bb6ebef9e62708821545aca0062f201d3d61d355c85d04a22e7203ae9dd382baaa7d11a7390a524f6ce15508b7d61ce5182ac0b66d34d02a124a4e233044c45105361e24a021eee85504aa173972b51a2b1e6d05c8e1dbb6b14048480b36dfea51ab7a11a392b6c9b460646a0988a8c0c415a4b0c28f134b6cb62bf236c4b75a74c4a37a1130781addb66ddbb66d480c79db76dcf090453cba4edc5290831198818b3460010b2d28c166ab226f46a0489237234264c85b048a94818b40afa6687d6e1b00f2b695206f5aa547a62c8d08091941278f7228c6085a890abf6af5ad55bbab28a5b5bab0d6ed328537bf1663f07bb27768abc94a6fecbc4dff98fa1d7c54edd03becbc0dfdb1c6d45e3768ff88e7c671dd0cd249d0a63370d7112fe3816701f22a1d780118f1e35b5e38f0a3cd2f1bf8d1e6190dec20bef4570e5fe3a5bf747800ac8af80364e00d90e365027cbc02c29f34669c7c03f9abc6e633017af839a4c2f173b419012f11f0f2479c8958c005be0216789bf3382f513f4de0f7efaffbb37be9af1e3f877880042cc62ad5ff6a4a570828ece54b7b84385aec0171c42a20e2a8fa0e88e3af8c10c755ee1fe2d8ca5dc40171da0d88a3d58038e26933208eb688a1f6f1218eb6814671b48d31208e980871b48d2f208ed802a2cef6b2e1d2fa1556005a4997a1c88b6c6021111e9e087ff551cf969081eb78ca4a871c1e871f553ef368671ed53813728503b9ea77998fbb50ac6826c142223f78913bc18f84dfe3ca8d46d50d489ee236b09088109f8303fec221e3c78ff12336f132b81220a0b6818544729e8899a734fefe1dfe3a2d2157fd3288a1de07c7a60d2c24d2e323e02faae32954ae5ab6f38d7bbbb090c8043e87cf148440ba668f5cf577af5e65612197fbc85f30dfdf8de4afd7db789abff13d801f7ff1e0af9a6f9bef027cfbf038be7ff806e25bc77710dfef337fed7821bedf93fcc5e39b01df4f77fcd580efa73efebae9f10e80c04be0fba7cedca1c0f7cf9f0a506002a1f51469248b86104729cb09a5a7e08837a1f4940684cf80507aca02441ea1f4140588091077044da0996400f187507a4a0e11c7d17c9b5c337710e70f60fe8d90664666fe2b949ee21263c21dd7f12107f2208fad421dc2f6941a220ea1f414510cc3de699ff932c218a189989a8f0a4fa0384e9ff9e3291408958477772740dcf16453cd76574a29a5fb04b5510f28a5b536d00fb66ddbac9d39d1755de779b1effbbe5229490818636c323d819aa88942a5bef932258790c408128800e3ca216cf182c7bb38c0f3e54582d01672060895d9abb5099f9fd84e52ac09a0ec3fcbf3ad50f69fb1a02368fe31dfcab007f76c3f1d95b31cd77986398cdaad41ffd47ef3f09d61f715df5ed99fd37329678c380225035165fa40e86b61d7652a8e53477dffefefdffae9a8a54fc77c17470efc7a008251965966f09356742e4b4da4618d4cc3d317c47ce72617030fb47973ffedc79ae75339a3fdfc80a81183fdfdf3c1bf5f0b73f0af5ba535bcf6d70e69ce21d3af9183d4e9469093ae5843737260c5a23f85b06ad6a3a8582d182b90800a424cb4c10945364d051aa2788a4ac5721e14c9b3296583634fe911537125d7744d773f9e594c214b324c11db021ba8a8020d5cb4abbbbb65f89c8f0099670f3c1a8cc0c80c902e8fec8267c405311855f91b557952ad5613aeb55a0ad68ab1ad2005ff03d2f82db526d0a630a53a4c4fbfdb3dc5ef9bdef7fdf998facb414ba63967f7cc5e22d7374ded337d9b4620a0e9eff735dd43260df8d5f4f7fb99fa99124771bc2238ceefcf5473f8ab95faeefb298e3f7c3ffffbf9b27b448cdff32afdbe14aaa29e0b2db8059a14bc39e79c47660a0aa17ecac140d5ddee505c61a44850adb56a5a9010acb55c67048a1d247c3b9ea5112121458e40f1335593968c847efcaf43a1a46b18290206f0964ab2f4202814948b9401dc81778180df0b3bec4e75b28bef856d8377f0cece4a4e9d5675908d6c9bb7efa1d5f197d5b1aa9feda2d51175dceae47e9ddc89a091111ef10ef7edc3cd9c281def80544ce9d8ae5ee89fd3835cc875faa88d26addaa6cdcd4ecb755ee7dd6fcefb4d291bba7786b38484fb28cf379de8e9e43d4f42b20e6aa0d6691fa499cc4868c6a6cf049a3a49d3fdb2c251ce6a54167865269ac44ddb5b929cd168eda149740d6a90338e812a1334290933d14bd024ba45bb58df4f939cc5b28281804c275b546b65a92c57615951f19515952af3aac2b2a2b2a222f3cab2a2e2ac6dca9c5535bbb1702a5beb06d6da60b096dd6ceb06d6da6e60adcddec05a9bdd6e60adaab1f88aca11951d1d9d50b5d69bca79d5566e5a2b5aabb562639a5db969ad6837ad9598666f5a2b9ad72da6b9edb67ac3ad6cdb06db3ed65655602c2a95854565ab9b0a8c45a5c25854ea066351a9defda91b77659e4c06fb54bc97169717cfc5e5e57af7a5c5e5c56b7179f16e8bcb8b77bd169717dbdd68ad95a3d8c6c12a8bca0f2a85e3e1566d0be7a5655f5e5ade8ff55a382f2d8bf3d2fab11ece4bcb56edc756afa4e16cad1656c8f9d672b3dddc743a5b276bb9d95a6e74b64ed672b3c9349deed36432590b373917cec4e2b41517d88a0683ad701ab7e2025bd15c602b1ae702d3403cd3b88b632e2630c605ba5c18c4312e30c605e2181788c1185709c7befc745fcb7623d3e1ae8b068bcd62b1d40b180f37ad83c1b4c0ba961658a92bc1605a601d4c0b8cea7425981658a7519d4e2b9d603658cc565b31add6f7b56431ad98d6278b91f9ec33c964b298cdc50a3dcbe27a61b12f2f2cd75e9698eb85c5ba5e58ec8db95e58acc7b68bb7582ce6f23c0fc77be16d3837dbcd8db764f37e706e369c9b259bf78373b3fda0524b360f4cfda07e7e705ea06ce4a0727252a8948d1c948d1c54ca460e2a85b291533ac1742d3a9f298673915decb22fb1220fc4d96e7e96bc802173ef766f645c37d7e5ba315dd38d8cebe6cab86e7c764d32ae9bbbf9ec6e261832ae1b1b9ea7c16cc06018c36436603660586643e645f8854c26b361736c0eb8048ce5e42c016339b125602a168be5581856f871302e9c8b4b892bc1b870302e5870251817ce62e1259485f93e6f7e319ffd2f8cf1d99817fbf2f24961bf98171bf32285fd625eac894a0a7b8fc4c430e9f13279bd5426aa1e2f931e2f13558f9789caa4c7cb0443e6ba8ef00b1b1e8e0c4ce5742d4b4a2818cee5078bef14635fa4806172a354b2a5971b302f251898975429f57203e6a57403e6c58b4aa91b302f257b8bbca86453326ec0bcf4f8becdca7aa096a0643d7a2c41c97ac896a062c864b21eafd7098b53ecf5c2e2147bc5b038a962b1d88b93e15a32ad96c9d49269c9b44c3f32adfa534d26325ccb062b04bd63b1d1c2d2b5b4b0e00eb3e8d86861e96cb4b07458c7460b4be73a9c63189c0d100473c0192097e3c2b9b8801c38cb71e1725c387096e3c2cd4e5038f005caec6436cb997132437342438372823243733243738232437382723243939271a3047374848ad1e38b597252bdae0b0b93898c8723058661a36b015fe4702e33cfe4de22d59555674c091922e593eac1efa1c6396a46933c85ebcd84bafc889fc040380793862ec1264cd0233c8485961871500c733fcdfa25f8fb4d6ef831b5443d4afdf851cae7c85386d0c4d1a26635edb1e6cccfbe2cf05961b5255b94806903becce4bc8039392f30b00061bcc866725ec0999c172c4018b2999c17d0cab0002d8c1932996c26e785a6f4acb06ea51b1a989b120ccccd0b294a2f6e62343037251a981b294a2f62343037a52d2645697b81128bc568eacd8def5961d53ed88d18d81713034b7d29d88d18d8772306469df852f4e7460cecd3e88f139f963af9f9f9b951613deeb3c2ae3eebb67ab85ad7e56aa12eaad5c3d5ba3d5c2d0a838ba23a3d5cad5ba98e5318dc8a9241757a742dd6cbaf87c97ab1bc678526ff69c3ba451ecb0b87c5c3c1613971e19d58662f1c16ef85c3c28577ba57cc5e382c9e7f91bf5c850bcf4f31ba196b367be1bc89c5349fc84d44e6c77ba3c8a6307c4f565a6bfbacb6c4fa696365f74725b432d40cc8e3a6ed0d3593335aad74e547d416a8196a86ca220c72c6548512b9c7d44eee239dd23fa67a320a0995844a829ab1decafe652ae1b4b93398340e86c9b2c4fd9133acefbf329033a6eff11ec9b2a1f1c67287e2fd59b93f190379dcb4bdf9c5407246ab95aafc889fc88d817a871c4c9a6eb24c1cc899bf454772af4655154dc403900a50c64cb48bc6f76320bb59a912d2d821e44125bc453245de02a932ff06a23c7f08ac449e2a364297901e2d9934ee82a123a1a3be8254993f23ec01432955725e1a0b8d03a9321f650acddf1ae8263624c5a4e91c14c564b11906a932ff64099df91a6c3a31696616f8670641aacc9711f6086f38bfbac216d5a130983453083a1f902af30779fecb7158b898342008c2b32c55e6ab3a5628a54a4ba0e4a8b48c9b695a886824000092027317000020140a87037220089238137c7c14800b63a84e5e504415c764410ca22806c318c50c320418838831468668681a1000acf2df59099469c42a1aca88ad9242f6f7c1f015376ec22d289772b14a939b17fd8af2c3ad9b87185716205079dbd3b5ca50946f480a70908cb9e75fed511f8fc3e51da1d873f463237a5451582a7a41efeadbf310adcd65cb4f6c7ca7170c938eb905d811760e864e8c01f238ec476be679d5bebc11dc3e01d9d73b2b57de23fa8174bfd10568e8e6aecebde6436e20e22acb5d16e93ee3b26b5bf28e6aff669411beebbd9a1982e97f48ef01bf737f49da6c2e5309209a8ff404a2bb8b7632b59d40fcd271d690de8bba7acd94606bd8e8339c965f1b83f9bd61fb76f32beaa958f7e1e1406fe12be16ae83a3c82b5508ff55af0c5e6d958223afc44bf4ceb07cf19147d921e0c9679e5a9746cb7851837d33e726f32837b420fe20d55c94f92cbe52550698d0af5c13172449f562f2cfa0afb6b2598317420794eed86133809d880f633dcca13d62731af18b4c27585448a27d6dda36a5bcc5fd08269f31cb81048f81e535e81451de11ff3485e6f188b3c5577aea4bedb9316c19668f70e1210043981528178d5002aac7a1427ddb07037a22ea93654caa28729079cb445356dcf9c145affcc39d39f9cda44e1b4f1e81c1b84fc7ba96d8dfe154e6f7a2f4a700747f23b32b24b67ffbf673d83e4ad3ab01a0f41ff4bd37a85526a11febd4739e48ff8b7c8d6343d6c715121679446ecf1c69bfb9cd7e4bdde422be7ec144a2f97b7d441da470749c52868a8880c16f729ce535beed17d1d1c5a39e5c451676d818b61a53833b35af04f66f2056916b051ea7d4e9190daa4498ccca776bc28d85f681e594a8e522615b93f49e556c050b15bce9cd516db75d4220511c78b664e8b46e0564cf582c3c8db302d4263679c5e4a793370612e7c1bd5e8f14d0b0c06ff7bbef1b65a17ebf62c9426568aacd0b6b202a5edc179b7f116506bd397a2588aa08e2880208a3263a6dd9623931f92f775c8648295f8d7895de2c1d27f8f098a3c774c0ad2fbb04947f0fd1f92c435a47aa8471603f97efe10c89ba898735bc047c85f602432b9066bb9dc9a81a5783f59a40abc2daf4d4e30e49149561fae9b20c3ba951f2964934132cab27e0af74d56812923793b4fab7be7dcd0b99f16a808d3421cd916c460e622ce9ac521d9f2b84b8ba5d7e9a002c22d68740c26d7b4e486403fc14743b09c2d46b3d55f099248c374ca56c5386036a14682ecf6db6c9534ff7f7e67522c54ad3231bbf487cc63c257d449a769eaa0e3f816247b33e55bf312f82f061e6d700514135d2b9a3064d6eb44ffa983a56de37101f1fda400033d269fbbd6081086934c414c156a5c88b4993a089e801e1615b45099478bae95e1f6aa4717e17ed39d97cdf6719b4fa5355daced807afd4772502fae5cacf60d89457ff3a85d7247ebfd843f9baf66a874da35d669cef33aa28e664bc1bdefdfb07b22e4da5e04f2af963a1e5d6b7e05f7bc9f7f0ee89e2e9e7ee331504e255f4b81bc9f6d64c1e534b36aa9ed3563d25bf4b01ff636420595c97113fa17fa19b0439454de7a105ddba0d759dea235c30ddc0427b26e273de22095766f8b53f37bf3e228b44c989ea8f2bc5fbfe2dabc8b9aaa82b5de457874966f61586a2f3afb8ac54b46a2d0f210947d8dbab4e1a594a8db296a3de4379ec01965f92d20764ac32af0cdf91596886f08a8b33cce7727926e61a3242670fe15878fa9cff7a494048fd3892ee75a17b0a484ba41d2b5047e84ceaa13694b26ad25ec116a27c039e53ef95fa6554fc06eed7d9253b18dfe7ac1ce4b6b43884e87bccef216ad1b6ee4253891b525a91107a9b46b5b9cdad79f17a7db6100922cc2a3a6c1225cd50bb655975b33781fb1ab45b069be9ea64b7b9616d8744a414f02e02c051c32d9f6ded309a91cb613072c7672bd9fc8347845be71069e5194d7b2b905891e3d16b2a77274b6e18d97a0f2ba454498a530385babb24a5ecbdb3b3d560506b18cc488917d06584c1ad9cd294794c89978aabf72c20f6a80444095535b63a356e2f0b2c7a89680a72f3674f39e5239cf0ce8f9e199dfe937f0b46fbbe6839d57165808af4a0ad2384d68da44268a2792ac13f8cc345e7d541b82059680b20217c09e92e251dd31c7aca7ba4931000dfd116b1462efbaf5e1f7e97f3c24bce95b0b5de866b983251f515b376e95ba0e940d3b16c1d7121365f2a64eaa0893072a0f47ad845a3e5010e4310a8b19e48f7b15584ba7fc9ee0c3d8d4508049ae450daab18008a1655ab88c424531079968ddefa990148bd1892ee75a15b0a4b4fa4592f551c5ba1a28a328a7859af7691e20bd615a8081c290532d997f92ecf476cf21b6f2be6353b1d28d3a15eec796833ddf1ceb704e8444426990d23817b46a714264e544d61de07e91f80e53783552e511c79b92e8dd7acb2e41f09b5650f410473511b436e8e5c41fb5452ed009691ed779b7d0e0bd3b9f4990d6433cc1a7fe69829d5d91aa4675df83dbbae379fc5b2ac99c4ed2bf74b34c9d23e83e6d1286e687db600f7371a62196d10c30da6ba045c9033b91e44891c82c4ffd470ef80734356b4769c06700f7424ee6d09eeec391f0d7ef2d75a537db0d2c7888faedb828f15aa02cc89c30a163d6749954286636d24d33dd8c864c17461f692d938b410d69ba3d4810141e04a60a874acab5ee30b86e7df99dd863bc1b46ee7a83810f3556f11e3854ae212619d1b9bfd381248bd5a11ece7d15b0e6d47a95a2d7ab06bb1030a7246f0b30ced79d4064e5c587ac36a794a54d602abe543d1ea8703fb61cecf9e65887732224124a8394c6cea4558b13222b27b2ee00f78bc4777fffc541450ef7a729100b2812fa7d9c8ecf4cc18827e1ed11ebcc13b4c40744d3e2c43f3be05a8a132aae7890f9b5a07b53b81957f3da41e82574ec9dc5c52085d083cedc707cdb723ba1001139bb4ecb999ef091309ca84bfa4e71f1a71c55a0c0ecc0d50007cd9018da3d5c8878e7afb0ade45023fa30c6f3d754dcaea2d2a799e4a1488df081b99fde64b89f48200faa999bd6a5288020f290df5d5af82b771660303901c894f1d765380e1a9b823d08e5d76ee18adb655fe39583a6894654ded6862d656b4db4fd16c4b3f3c14078e3db96bb6067bb018b24a47e667c95ba1e541b761242d05f91e1736d745c5421ecf65e12c35f255b2c580293fd9bb25737c5ebaf8b9fc1315307223f47e9d45fbf0800f4913039fb368400db562fa70faa0156d2d1e37687846656f55de850b9c64c4b1796afc7388dfb3691c8623ad48b732d12b639592f25c87aa87057024c29e46c915af3f759336ab6ca8ef8578a9867f34a2507aa4362ae6adc1ae10f3175de111d2a9e84ee472c4346d4161f11451713f7e88369294ca9b9e2854cd703bc8dc5d2a09ae3fe716a8512ca8b1b7093ec3d852549e8ddc845c08aecf11151eae0e21cfc30d6c2945a17bc98e938c0d75a2c0d5a71dd3e4c9548a33053287b133f987ba6b30d53cc93377c4889f3b171b08593636d8ce7acf820d778ba902b5de22a4f19f34cb0b393a27080e87864db6f8dbb875fce119b658a86c896eabf379ec83385ae859e6c3cef89482a87d9b9356071bfd6f72252f52c9de2aa7d35c1ccb248a2810ed0cb3f749c3635ae5389e54c3db553f8c0c4574e4ac19de5dc2acaa07a5f4ab4ff04586bf3021fccddf05696db048251e46c2d3512788b4b233f4bee8083870448f9d9c71fe0a95c3c800da77375bee5bc6c119f0c30de8763e16fdf5bec823b2b7b589090dad97155e27a41cb918108efc4b3ba4dd3104de4581735fcbb6c3c2c5ea4bbed94f74bcf8928c2ec809347a0633af1ffe877f6a094308244a364e23d81f7d4a33e61148dd6e9c4bf1808e8a32a142fae29f46fa21cf52ade5e2c5a3077481fba5c16dd453f09ade29fb310dfeb1082323ce00bf9204a9ebf6c047830e622b53a123f4c6da2325696baabc4ecb415132851cc76a8d2c5b7f387891974d6232815c3603cc03222aebf67206d1d58da98f3a264b1a08c68a163a128d9177480951a947902d83596f368d0a9c40b6f04a5496f1c7e90e50760b27d25718f91228091e508abc20dc695b031509d4ace4a7aa39f90d9b0a86963832aac317df6321a6ec8f845b2a124c17f3daad4cd6e4abb2e2ccd178a2bea95f725f3f47c685098332f2cff50f681d07b9840724a8de1a73168cc7793b087507f42eefa00d667b10c8cef29135cf3af70182176ff95964b71d63057c816d41827e3339cf30798895eaa21a78dbd3c4c1568b0846821611e2c749e4997a0e43bfad60c4f27c074d069aa9ec43f2e779ee5af0917a2d7f107e7e76035d763f528017b05ae81e4e73cd5fa9f5313c90ca67303af374946bd67d85ceeb7f0269ffaa705f66c457f67026d47601bf1adcd3b1b055201d02b72fd933cefa9deff9d1848b3701de170ac171183ae58d7c5f153045df715da653518396f0df81038d4ece1410d7d41617929f7c860158e453469c7423de815ba6e73f9c4f00cc36689ab754d373eec2c65501fd55450711ae8b049583c1a6f1d3681585735e816254016be7f1568eb137d7124c997bef03239310c4f2801bef64f98b8645745e630011612cc6900649eefd218b04ddc5a2ba35b94c254e8f7bc82a197e94e6c2384d12cc0ebcff5267eb0fa3112112eaceecf404a0edb990156db9cd1dd375d2af74bfc598815c9d4f47884b19717b657fbec6df99201a04ec89bac5b02547b638586c2f7aea90f121ff0e92a9471e8c28bbb7447a045b971ad5096e7ede87252773599a48750240e66dd26153262f87519a710ffa49f86b5c96276a4b4dcb0a1db883ac67b0a07d91129c8977334a04b1de4d812c3a2743de3fb3aea24edf12ef1351d2721fd1d95f47512ce919863d0ae5ff3cd01414c92f7cc1be194d3bbd8eed6a549ed1a4fda7c82a30a0135b16717888df239e0ba60ad29fc9b9ee2520b9901a7ff65efb0234283d496192b6912148f87a6332cf5a8a6ed6f566c4c2731e635b08ac54550eb923ac7b0b6edd6c7bd2c0c831ad4733957c69795799d54141749dbce23b55c019814011dae1d551285e627cfb2fc16992613c43e53ff71e7d6ebc2f47934d841633116fc0e289075d2e83c0e00632f9fef1b796a1a8dc5105205bf1cc12d300845deddb4cdd96402f9921156e77b42689dda4611014dc5e44d436a70bc17496f2472176a1ef1627bbe0e5161bcab2c0ab435dc0078882aa2d30f3a00fde65050a4a24c99f6dddea82d5602183f063ed9419d98972aed4885ac7e1e3bfbd694d44838113a427cb1ec5e9a80509560a343a3f012f493f865687070810011a34c38c781a39b392da7b8decd1e1a8b4481adf15d6e0a742a68c3f2305f4daf87605a17f39d607ebe03aded3bf1af15321112a32bd9fad18c48d60bb267e6770869470a0be56b88167b6a2f365b475502f676998297bee44356a17d3f148c240c89be1c8286f80e244b86cb9752c45c16c555627130b312f5c8bb256cb1829ad8bdb3454084b4af540ab90c492ac3caf858e169a594c97a41d7e4fcc8dec7a68a3ca64c204ea6d69339c60098ad16f47d926459ab108da86ea140b377762679c6a4f07ed730a4e36edc877a4c90d4ce16fa2b08ed33b50c95a660ef84197990b0037bde3e8f59fc7343efec06f91adf4c1720bbcb2fd9abdc35909ba9e4fcced528ffaf53e0e84b3a157b87d881bcb3660251336c5902c4cde89d9040c83669905cc2380bcc40a7eabd63f2b0e2f60b9aa73f5b57345068502509752fefd41752e139e2b69414c4c8bb3b74bb804d5c5eb46c6110ea20d07441f77f17d8c9a70510f1f69b505ac54665f63f92846272e66e3f21fb5d12a422775e54e9ff2f6ef39f56bcd8cc5cdc183caf4932acef0d0e7dbe115b78deb1fe85c1c50ef07762106ba458cc4c216696ed2661c0d108d24e4611ffb765a31699c6a0159929f4f88221c1d8e442717582d832496641c17e00888e082cf9c5b9bfc5a49e58f50a1133855e376bb4305694d03c00668ac6fcb46623f87344782395835c75e5d8226ba85593527df6d676fa6c1d7d28f41a0f97898cf14df20f9e841375ef98b000459e1ea6f624a68e938a270ef1cb38085379638a5126fa95cc9b51ec49ec9002f4d215c6654960d6626ec5addc5c26f459447625849e1dd4698e8eeb267986b34477b81c766766d042c4a3645020a60ed1907f8c80d5a414d8f4e5a310fb04a99095c30416f4334aef92fdf11ef6336eb0152ddc512d2fdb61a67e04e765db38bda8efe887cc9b7f9e8f4f203e2fc946e7e57060f362850bae680e9717050eda3e5475a1a84258ff72d898bebc54f4a584ce171a335f02cd5892c517981ebe5443f842aadfcb307b2f28eb5e8619b07b5a297b49ccf728d66358a25e6c65d6d167702429bb2ac9e29718e86f8f795a5e107a86e4454390972c365e8ebc78c15b103983cbd913fa1924f4e3947b41dea5f5322891d7bf326a8818e2875418a46b78365da9b29f216b25cd004e013dfd5f3e23daffb2ff58fe97ab9080a8fe4b0f2da33e67cdbb0aa097422edd46dde62160fcc9205f3b7353d857272b15703e713130e0ab5332eb7b6afb0be012b6bfc8a1b8f617f4e327782aa04cf00430d1fe523a1789f1c324c2bcb66c8cdf8596e1f517a8ad7896efa4a48b382e53bb91bf82f8bacc83aaceafd886fb805c9a69f584f0e4a266b6868cc5943dfed464d13efefe8e35dd7a85aa5e4f87a872d405b4f330a69c2d4473b2df9c234dbf45b334dcc173f3e9f5fa77ce918cc3d7feabec040b48dc287aba03d5b3ba78e41472b080811b0e8cc9eecacc9fb9a0e10e904a9a269e40911712855c199c7a64a3a81987180cf9d1bc074ecda711340a8e7f8a6175c1e03fea13ccc94bb444f8c4295bdaf2914f348f4c5cd8a2f1222858b4bc853f0c6cc0bea41a8843bb69740d8fec3c2de2d110b44eb35a7c85918a9c8267c8b18551ed76acda268675f61cc076491ed5960e674d0cf9c4b8a56d46810413ac11d0c94d40bc616d2877173da91535c6796663604631404bb299ad0726b84133c15e86302e53f344081bb110032073f4df56992d0a30453634bca1a371b971a3a7d48377e8846856a8068f64db9362cc8f1af9dd84241b5c22066f0dfaaa642ef27a5796c88ae8e5f079602c0e55ff0388dc72fd6b4ce02665ca2dd0e1bbb24ea45f3dfc656b055d0613f9844d82a137be3c78057f8b0194c41dba5bf2011cd48f0b05b30ec7b91018a26437172c8d96525f616200341c7484bec273d11a20dc422bf759206c69fb45864a07957e163b5bf30a09f92e28d1081e790473af867d1af3da7e0a1de4f4aa0b8357ff8d161c28fe22eefbf4f2c1dee611e9cc05d9df86fe83538f215bcc4bb050f45e23206ecbaf7e81056f553e34ea56e6a6a6b4b1a523e70e193006165bf54ce718198c88dd8444940475b8b28934533bea18a282fb82b64447e05d62717e9606e0a1e2a4a4397f341537b72fe180a057c02fb8db7dcc3d0d02106e67acd4aba867cb14d12689d67c3a9e7a8f0032ddf332c60e993d12d396af2e28a6fcb4b096b054607d10dca8a54e3a9e7b5326a79271a9232db267404ebd050ab2eea5e02d95dd704bc2c317ecabff2e79e47e3b896c9912542927b9520fd8cbacf4c265ca4ee0c501918211595bf24ca05b8d465d2c8a0280adb09746f1a3885345c7f8a5317e4d6f8fcf273a79b8ce2d3898be3e06c7cabb55dac1a2e154fef2df7073950e8bfb75a11b16798d81788d58eba7f88a45e68af23fe20c5a35bc0c8e00085b50c0e659bdd88a296d9ae278dcad9fe99246a32a28276a4a7fde32ceacd0d82e59c1b0c54be701050362a00b3834693beb220ae1da2bf8a4426831ee83de288e80ee6061a56661fa17f7cd04315b7053137f7e0756c6166901b945361c024b74e5a190b95e8c96534c6b2282d829a231b26db1cc01d5db6fd1335f9fdcb1dd3110031670bb1474dab68baf188b69b7f4dacc3de32937ae53cea423648c4b2e51f85d13a39d4ccc83193b3195924b7a16588530e37682b94a11ab15f5fccf7bc000f8f4062a75f8e9ca717bc6080f9273d493dba6d4b8c485bab7592aed0313d1e928356bf7b68362d6dd3fb54d5f997185f69c6f455ad4b47cfe384b0c0d94172da2db245bb873b5ab7e5bafd6aaef3714e114ddf58101a5c8744ec3b1d3722f8dadf215e40d015a06c3cf8bae464b8a559a4030d564a21d06b04bc063986f6cac1316f446d0337c0f2a8c0a4d65099379468562676344225bca664db74d36ff86f20ac4668518f3e430ea18cd3b7e8071746f46ad4d4b008f629dbc31644f5d35d68189062e8d4cdac9ac4fdde0ad0530291270fef090bf9eb64fdba21c1472001fde68c3e9e5fc2ac34c9194be189bae145873466e7db77c78c0d0b9138ec352756d0512a37d397c1d23acbaaaa7715e42c512c571da37e7e5ff7fd37e173d85772174d1b89d6a591dbf7c263634e8f948855e3b65fc23e7d566f3f4957ca0d630d2ef7d5e68b4538af1ee08992dad339da456d19843e09102a4e119dcd585c842025f386cf48b71d9511cd14a1d1837346ade3a058e10c47a7d79642582ba4e60c2de6510309d23250541f82fd265d44a52cbeb5cf852006f8e768d101363e68b5bd8910fc3549dda47f8cb84cee1197081ab19c173881585ccde7204045cb44c8429202c6e6ecfd97aa09de89fb2dd023b40a6e17f8af502e6db60e1ff234df7eda1253a5876094c73e0bedebf6966f45abf42cda61946b5c611b93a87f75369a0938586ba6631057539a431760abc0c52013ae773bcb720b7c6ceeee55e1f6540fd7fed266f49ce5ee5e8914e9b4118d1e748c87c195b828652f23ece6013f09efb06932efbed52d1415da062d4a5f61840c25689427c6aa6088464c0e2e9d9324ac523bb52ffc3926911a2040de6b4a9a70b6c33692945638a508300194c7abae0841576f3dd4817c2e13fe66701881e38cbe01f350494a23e31e7a2e20024c59a924759cd72f1a7188f45c3320f09068da64bd07e2f47063b4a1eab21888a0e7f0e4abaa354fe3b0a8d27291b8bc9faa50be09de2143e1996f3c455c8a361a10cfd31e3ea2f067b5d08a97976308952e839e69ee6942afc97020def44ea6a1f71954281f3a15759e992f37b66edb63932f4317f601eba36159b9a2efd590c38bf01d0d38a26c29a6ca273c95161c014f7cb44daf06128a021d8fd81c7195cfde49e2dbfd82e46ca68195eba42b0b082812664ed75d165943420e20888e444f2232c95408e58f9d48ebdb4a5b1336a138843cb11a7fb2b94f1718d66c1776af13981b58e38c58e33ee33ef3ba262c48991add2123b8eb1e3de76929cb78f471025fb263fbad6e9a67df3bab32eda26ec4c4f9ceefb4c3dffb6ee4ad96fda4e54c3c5c1dad4c18d2dd1780c0a262b6d23756203e4d2473f323e5d9d2842280c84849d78f49c8ab7636064ac9a5ee06444ba82b03ffe0456cdb117de6b0dca545b8fbf93465017f7c648794235d2771e3527ab87d4c83a034c1b4877fa68ed4d032c01a6aab9fe1f535ca4742adbabc9a02961803225c4853988a6810878a8627569e559fe46ab87e0c90393333980f544c32c04b5d2174c746d72e052372dfbea9124d56e9fcd6efb45c724648d93c6b52706470f1946ad87a250a5511c2ae228d6afd921814f1e5624e2957643ec15cc6a6618bcddd83f37e4963b06e8d25b0cf2eef4084ea2c1a8ed082f483da9188f84eb8cb620440c2b5741b5d046e4734e59eceb51ef2ac8e77b8ef5527343c7840059522f68f51dd29b68e4670c83e1194c9ca0824ac58fff9ab963ea31620676ac644288e47d02da1bf5cb2a479f39298a0cfbcb15b1313f756f4ca0cbf7eff7b7e5b22d7bb0222989d6a775296577060be0479ff11acef83c1e90c5f2efbf3b2dc5393bd7f4153fb348b7aa8ecfa5b2b73e574d6e29e7646a6a5254d9bb9cdf7fc72b5c06364d335963b921bbfed122369e5389813565418fff7388b96ad2939c7a6e17647e89dec472d7ab96f7c917c92d3315301426ec3964473b9fa0543765407fcba5583d5a14da9ae3182a27e2354af209f70baca299b38c5a09004587769320d034bb485cf22ab8df0d5bc2405746fe21b710f46343255e3d0203fef3f9f0ad7b93a0a249249dadaa6284ed530d4ebc95855976005bcf1e079ddb660e8f251265eda4697f530d88ad472028825623201b3cce459eee071b837cc2b9c25262cc681429770e84a7e7955d220ebe071b0c38d5582e03f6fc8651bd30ab2216973b0775b89ac3a4c1801505687eb931fafab20c1944a0039c9b97e1bd5648420b27e3a8d329eb79d1d1002790221a0228ed0f8372a72341a8591581fb57f2359b3ba1e8729b2ce3ea275c89dd7143195046f0769f7023ddcfde11106d29df77a48f42b95718b43086fb0aad39685790d03514ec206d30432be9dd753d369e6212ca3c79d00b97ddd8437edb96cd1feaa0d23cda74e5c1b0f54e4c1af8434a5ed9b0e7f29c3a36214a9a578c3ff3436e51292d643322b24d0f68d64483832c12fba63324821ec05d03454a39732c4bea82c88e7471f52a5cc8521287517278bde2314e3aa4d8107dc8d9cb7b2f42087941bc7f27b965041ef2a95f936c8f3e778a0d5587b932fdb3fc8cafbd0ff8153a029f21e7e57a6039d79e255528caa4f86e7014698706176e5a9be978f5a9e50977410fe18963d3a81b48eb3a6d6c6ce28731a3777daa8c214d1a187f814730d07658bb11918e9732e72b796ab313d03d0a42d55c2adfc5f29461213e2f4361af1891a71ac5d6161024eb407af365635bc90a8c08cb77af39e8a2d6fb946f253924f7b54e21ec545ac020ca980db1206c6b835c85403596468063df1c64c26c6f880951ef69cf2c67adb9a4690352e6158f1ae9b604d7d13569fcda3ab98e66b03c62de2d0f30c5e401c4e7369e2eb7c706ae7a9ce5d13c4ee320841d05f61792077e1b2949acdb0b4f13f6dcbc89d21a124bd311fd541d2d69f4d0f76c4c852f6dc93a31980237b3ca91bd38cc5872da8029c0f41efcf074ce40c6883ed4595948a79b8dff815bb559d6271b6f0272ec1397ca2f0aa5d59c0739367c8dbc23c7f87e0ffe100910838d6fa3b2bb4345cf80e86d991ae77c7691bb76660d945fbc4defc0247c727dcc3e4f537037c0a221414e3d167d30796868906ad49b4ffbf9454cca90fe263094f5f7c75c9b0e8d028ad385a2edbd40c93b7831575b9550f411e1c43347dd47d4888276dd474ae8de4ab3a5d6d80a64470cbde09f8e32daf0d2c2953e6a21a8f950d26e50070fc049451498f999ac7be60bf1f7d0b8b8c821a87adb3db44794972fe36d21bcfeed117163da13d29d165cfe053695c0dc3ff963804a66465f6141c1b553f6b2c1cf1b1a5f7274acad31a49ad7569708363de65f66ffffdf0d6597ed430ac6548cc59847103109e0604a6d31f12762d5eec03506f0555c51a8e759c405ace8668bc23c8acf4afc2d8f840c7714bad5507de8cca2c3111bde0e0822d0ff110973c2135298c60260683c6fac6644644aa53ee4d93813762a7e2dfa2ad99be7b6a365badda31d4f358725e11f17b82e7f5f43a5121992f6feff8f9ed65c49819e63b6d736b2ff5b144896028d4192022da364ffe7197727348aedfd894c4bec113353df924731712205081f391bce972538ed3dec690518573bc2dd12b5f9f8782408961b0734552f1df47d922c68070a8df82bcf9310ad6231a8dba95a38c4c0bd7c304cde9ef2048879b5dd77aa52ef231837f80d0aaddb3bcef4b5d5a07d19bb33d460c792d35e9d5f6022ecd3956e3ca64bf78002ea2ba6f1a650316f66b4e81573bd3b010e428b698233083aac20f18b281c253114eb47312207ff4b5314703bdd128ef517c98fa52809d88453926648a8a2f2dc17a4bbf3c4930b5b526c017e5d48845583a1c2009fc3115422957da0bc852515201ff831c0681ccddb5dc101dde09675c80a72240149f5cba03d185abd28214f9a43b0e9c893a9a79325b0cc88c774e3ba7279a0964c2f735f2b9a57f68901d406bea34bb0acdeb981546fee0d0b88ab6bae24988d633e706f086b41f2aabf2d6077f913fa41144217a67a451bc7d5f309be493f369892bc0488a90442a210c9c7d22096136a44bd975b587be587e4fd2637eebc0837fbd8d41799436fc783265bdc47714668b4777305cf1a9ba12fa72ee6d155d3d7109bb0f88ced35fce4046e6c3c9a517d50b2243f4d87684b3a5f0e7cabeb8bc42122f4e558b3677c6c2ee6d5e0f44ea5c66410842fe77c695b2c2a8447b52189f84640ecffda0ecaed58fa0ebd19a26b8d4413332b7b0ba171588f4ee84922caa7e16487bcb5c5635714c7312549445488992dc41ccf7073c2800dede660268743db2775d1315c548fc29d4348bcceaade58a1d082d8878f1aa375435f079330e2429d9ffe7eca91e05db39c32434029892e99077d4ad22c724c9018c09ec365947202f31dc9fb1656f0b6d3bdc8c73df423a68b3635b08cb525f321f637e1ec1811864ff5846f259433a49b98d12a5f3c752681069e609c480ef5fdef8e7cf881a3aa1e783c844dff45b1716764b8040d142b916ca21e6445a47d106613540f38a09ca08de09d86b1b4e6aa8af5d27bb5207fbc37c2066d49b3f26110abb2e843838e6d22bf2256994f504c4d8533ec1d6a17cb4d38276eb35313e185d085913987a8fe873ceab0cb6f55206b78506078d9739c336bb6765883ce9e62c7065dbf5c6e10b734f86c3b0334c686f5471a53117f53446de939ee820ffa74588cdb1d8396b28445662211cfb8bb3092c96a9e413d542eab99306e2375c97246c11a80e93f10c4263a6ece131747a3d54b4d5dacf7856d5cc9a0cfe070d3125f2486999837887065faf6e431423e81b3b80a81c9bd47d93514c4063bdc5512d43369098ed027dac2b8ef59ad5b7ba656b3c12d7d8077848c6da521324790c94a6c2a96ba1ec9b2419ab426e2445214f65b101f0c007c1c8dc1d66888a280e76ffc5ceada816f595585d72b917ab7d99783cde83ccb143cbf5e8778ddf920ff8b5afe4e8c770414c78e550f15468daa884fe3f1bb5c463cebb6646925d68cb8b28d550897f4640415094d99e757d50fcf0cd34b4b1f2c174cd1980e912701ed9a90e9acb3ef8fb6196b87e5e55a553980b749f941067891b405624489744a20f62d0521ff3d2e6db950eb401e4ba6cba81f676486758804785488e3ec08292a34fc1999417328b62d21848b48662a5c4403c958b5da83c63d6e98fb4a4daec62def19461f0838dca5f22d43b2a74bcd22275f2e22fc4966cb9ed19219360efb9c992e59e2b3a689b2a78bc6370c9f00f47107ff36d128db237a964cdb7c28928f06b79e9efd883748edd72c5454450ebfe94b66c17b22e9f5a13942ca696f95c921cdc4dbd56ef05f2ce069c2e341ca6a9ce7b4e04b36e4e492a4601fed64418668cf197f427ec9925b72efdc73ec3f67c98aa1d83482deb42920b1d95a0f2779df0d3593cb0cf934798078d75b0a98a8ea4de202b1e19501969c1919cf857a12f0166bc3bdf68f7072816006cd9aae96e752275f9afe922b18d727511b7a99a531d04ac6f29450af90d495fd77e90cf75c701834e3f2c6c673649c6a97539c0e97a155c6eff0d6397c2b87d5b5ce584dda6995b647ce8c47cd5be72a0cbf9e038d9720e7e84a60b6a58bdf553a6e4abe2161f09d067494d2f2319e7b4d0567f5c6d5756ea87b9c53468c2fe8549e44f687092a17c2f38de78101d2648c04f407c8f4b18860cad9cea8a74e4898cf8e817e2d09818fa90c115b1a7575d7b70341e0227f4778ae43d816470d90b32e3943afa64a8d303eb8c663fc62dc85b50deef372963a9afc59b8bcfd3ec5f03e626e5fef07b3ccc5ddb4940c58b0102dcb4f3eb323a1d4e1fd8c2b8d006bc1cfbec56d304b36157579fbacad1245931b9c2843971993bfae90e419c2e18bf74b26c66df4d9c3844e4ef487f8014a3189c62ac25390b3eee2945fa83a7c6d8802b94302ee07eaed097829142c28310f76c6f7569f37a2a0f4c5049953dc7739b6cc1c2970751a4db572beef0246ec35f7e404fc2e3d87c0a22c3c1530708067ebb64f4b1c89d0f0152d7f4ada9ef8f061f3c5ac96e6630ead8d062ad6e2ae6c742115a0322b9d02bd0a70cade31ba35b03dfb17667e0e42619d709e8902a2703aa270e186caf88de040bf5e036b79573250e98b6c3ca6470cbf275da279924e5de46ba396043093afdf66eae487c18dfcd8f792180fb4097402b031f4c27ab4a392bff50bb157ed050458f29d502ff6b1c719a27e92b62a6bfa1608a4a38c43bf5f3d3e9a7ae8ea6dfe402b6e34a2a04f385ecb96348b67575808b691636f7d61b51b859582ddafe867b28c202dbc0efa9196d2b0adc9827b9b8515afc004efc21aa5dbad208ba794ab589b812f3a155a0fd8d7880bc3ca946e521f9ea96591b5e2cd33d4e2e130225826b25b59cee184b95b1557ed688753d32bb02d6253a288a78964c15601a83878a193ad9cb73067f4536fbb80bfa57b824bf5fba35f19309009e5cb1aa6762a1724a6ef82e86b8d11d30bb3387b2031ed3adc6663c37d9442784fb3e6546bb09fef032b6e869863889c2921255ce3d9c9b8be8ff7297b288e43ec92b169fcfabb130b24c0de563d1becc1b1ea17c49cf700ec4061dfcb7e3275cf9587b0ee2055db08089b6d1c8058819827af76e0b10bcea34a9d6051148f63587014df36735e03d1417232311df8705fb373b656cf864b054afa5dd9de04cc9c5369271cf150a82d0a0bf3cf1b90ebf6a6f22132e41d7f50be2f538e30dbc66ccacdac9c4f040237b6c4806059193c746ca04b910956aa2ca0d500815a3975a1e99ee66e547b70e096e155f4add31161f05bcd242fc366b8470f003c70f14694e3e7407ae2ac038b2215b3a9848d951731854a2687b5f462e00cbb0db2ad97c3dad0166dd8ef280f1476b1b66b16caf7fde2b730e00bd02499aef4af51d518edc120ff8dbe5d27a5beac8ebededa9120cd340d80d197b8e3bbf1928e09df26a292302c2ea9205c2c48b995b19f078fdef6b502bf3bc9769be1274ca7032ea25d09793cd15ccab45dc8396ccc84b7bc254acf1339075514b6ccbe0c81bbe886c5ec761484c13d683f1bbc48d559e8f9cb0d6b4a65989dbdfdf2880c87b0d392b5d00799b5605bb8aaf5cb8be85c39b5ebc48377f91867c786131036ab9de954b7205293f7195693c3b0fc7621a19db626486a1a0de4df306a8ae517a07d63fbfe69a2333052a240afcba6540eaa3c2f08d9d94ef895800175390b2f0aba2112688be314d3f025f950ad9ecbe2d3f5446ce124f33b719d15800594281dbed12e9cf0430b3e1fb3e17eb910b5ffbfd171a76db7de39957a7e830c2863fb7c91fc38466429516286b7b439d3de09c5502ee31d6fd3e8804af0f8cce00dedabb2bf9f6ce1490e57f56eebcbc40fdea133b40ef98bc8f70a1e1f80a7ec4e6ef767d0ecc97e84f7edc6c4c62618b38ff52a0920db1bec2cbd906ed3678547deb39e8581e06a113278510086b8188426e4a343f3643b32bd5d1954958ba0e9b91174402e3f21ad1a5d643d18635f93f4acba3c660a384df2bef2ad4ed27742c037d2d2bca4c447c86f3ded700135f9174520d34aa2a38c7c52179570afb01602bb3844f53a61f08c3bb93b20332bc4d128e84333a88179f64c21063e71d9e77af8aa8e38755af414c1a359dc30a4ba2953958537c8c06f51284686b3e21c603da1eed2d5eabc2f4fa228445304c365e4b0814c700957e7b78312cc0025d4ce6050487e30aea88e1465ffddc8c48ca01c71ecc1e7bcb4b1cae5af15d9dd1a028d2ac9d795145f3f4ca1312c3a06096fd0d228101da346fb0976b4b6e0bf4a3edc1ffae39cdb311f2996d40c47db51853d68595268d3fa1de29e3dfe078279b25b67cfc14988546202557f816355fb86bdd69fb4e17ac72efaf0bf2c36086f787df0d8e2a23c73ed8131b5715688a11c8342cc4259da87f8bd970d22d120f6f53ac26ec03e5a24d512bef9bc3ef5482007af48d4de7ad221d7d3866f9c80b8042b7b987708935afcd1ff4adaa1f3673b490b39c295447f334eb4ac6b2dbf64799b8fd0bdf85ba0e3212c374bb9248650e90bb045d7bf9eda47b055a000246ff0e4fd32e99e79d6b124da1b1caa8e0d999d39e87e5c7650c01bfaa54a778e53ee1125052a7e81bc5becf6c8e5e5ca9d64c03d881db7308c1ca45714326f35e369c70191a3880b2da1a05e8f8ddb50a3b8a1df51ace462f521e572ec0e89df817685a0b037c4d9238dc25ff9c5c53194cf1deb81012c0aa0e2afeda5e9384f4ac38771c1b99807afa1ffa2c5b7a2c32668c54778d47fbeec3ef424181c5c6c0d892487b54a8601c50180d8d23c30c66a14d6b1ae27adfd65129b4abd572b4d18f4e1e255c25947c2b0a6cac7baec937bcaa2018097ba182f75ee5e6f062bfac36113eacc92aabf06ea603eb2a0a15feef2ad5e307fe7cd08b7ba069b8bf25f1b8c666d59359cb5028d746e3e09c82055c4a3ed29786729d31e56dc2c9cbd2ccbdbb70d7d7c8125488b3a7c4b5948456b431b0a0d05c6f243ed69be67e269b9218d9bdeb34f82397256743b836ba4cb5768e2fc142ea831be719b0345d8f7426e868127e0b26fc20763af2f71fc1b87497bba5a8483dc1fc133e9949e38ae620ee205fc65faeb482c199eb4c8007a9c939f64c7ce5db33c8a3392fa103a5a8d5c7e4f891ce5f7991b56e111f01c749065ce8b12026a9db2ddd804ddd6e6e6bf527c245ad61d2f41c841d6d071a07512efa383e179dc149c87c5831c538eb99510d4ed3ec464045f8b79bdb6dbeba5cc9d24c05a4407681d6ea768a0110b7ab44afc3fb3553a21641f08ff8e944748b4c33dba1297193dd19ee04dc34c86960ea38bf0b6c4278ced1d114531fe409f425cf905a2442edcb918e3a0d7634b20980e4c0e2fb22ad6d811fb2bf6893478c1f04504c67c63639605a2481b82f5ded1e19c7c228be243ccb9a9ec247b45e86d79d4c56778bc0c4505bcd29540cd11697e62421782cbb1d4f8332f74bc3843e22d59c2480aabf0c0efb5494dddeb5a053500fa29863679acb2f31c09a4847cce52994ad26a592825b4014ecc53cd7287f6f6e4ac269b56a5c2168c4d1c8307fb9b7df27cfbf49009e842e4539c8298b45489467909e317062c505558f526c896c040f5c1f9d9b18b3244d44caaf6ac1931ea1610a4a4594d8a718c2af2fcd4c965180dcc80a1ff5637c66728f7481b0a527fb494ea02593f2942cc04ea03c94c0eb72261cb409255194edcf64eb182cc8c3bf14287627121288cd5c376259c386c0c3ecfbe346590427208ab09fdd742ab49d17b1716372325a810e1f11d142c3ab5ceed261fcb1c53d592f91e61eaf0c39822b8ffa1794a5afb0d238d467655eb745ec5c5d9e3c74a2a6c08d077fcc78584da79ddc092d7a2fdcc235ce41f3c60fdbd666f46199caa363eda6f9622b41769332f0c8855f8fa6c1de449542b52972f48d207519432a0c7e9305e691b33eb8f0b948143f2f30c2480679e2c7362d80ed96697d1ea08dd026f5aa95e45d48d7d3955dae95b2ce16d8ca2f06841abeffd7cb212eb586cb4545c144c763c4ff3631c01b7500b0f2a9d41e6c3d475e6e8c2c4dba1d836f71e9d00d08650d00d9b764b520908b3cca5b7f14b7a123e801260ed9e8ab84447f10fe3c0453eaefe1a71cc81e41efefc20a9db1f10f02967bf07f6df685fcba733632edeb8d03e0f4644970a7904e480e71dae626cfb054932a1ca8cdd30b4a8e9ed9d675980c780868b7872a5c31bad027ee89b56be24587c221d65044b2c39226d8fcf6fe1f3804d3216a658cb13fd679174866aa79d72916b240a68316f3e4b84d5d4b38c4b9dda9c449a6ea9aa77d4514c08423d1c23daba7b5813aa59ff4bc8386b5ced510eb3b3cf13269e56238388c77a1ff54bf78d3c5fdb4ddf1613f38fb992afc0ad8074bcafa78c6ce042ce659e2d22bab4bcaacc0fb283a5dc2c57257429ea3ac47ac3cc90ce632a2eb576b1a212fe9171cc79a48e42fb21e1c2adc9e61630772f12dea2b815ca01ad31b8c4b2db8efdc3b6c7d85606160d9eeca93cff8ad641f2c4a64960ec891ba3a8d00f2ccee1d1393d56c2085492ef6b2293761000b37e99310b4fff9dc88778a6481c534ddef53f0d3b8decfe27e25bd7e31b75db7081ab08d359b0832f4016c1f8c8737fba4ef5a57c051d3ada0a696595342ac95d24c358e145f8beb46b11d1c57c9ec56f5a8d9bad63ba7424b9770dd25a59f1d64b5be837b3231aa57109c64b46ca313ba90f24180c39ae32d3e3b8f15fd4733720b8af3d3a10ff16679b7e4a35201d35700005e252f211db56b8b29eef5374a7b4e28666c05bbfcbe1c3f319ef34f04eb305253429adfea87b6d8e0dfeb96e4bff7889b19557d1c8eccbeef49be82e0b26653467a244e0d0390ee73df84306142e0690e19dc32e5c8292226983ceb1d711cdc6595a9e009132aaf00d668022edfa60e9f44080cc75d889f5e09c74e50cae84f0e5334db304514fb7006e314d29adae3087f2049d485e0982ee3ad29edbbf0f0641f709ab4288b0ab5301cf156ff5583422473073d75dbaccd16d34e21e751bde3573f6edf9af69695a924a60997eec370320b9b190a6be3b29a154ec9c8c1099f4a3e105c112c887df88776565ec159b9611d96ccdf230eca24222b0d89ad7b17fb975a06fbfcb15015fdd99cb9f9d21c7d7fbdcbb4bf1edea90520805bd7422638f6da701b8a449377398ed68618a5f3d8b9e22b89739680dbd1a87bd9f6079e07695b18db784250c0115ebbd21f26701d014c438af9358888b92002ec51e01984bb4d881523e40aa678cae29f83d436720d4ed2267a4599151d781be80ad5a546c1effb536b441e2e87a675e61de5398ec7dd3f92922a98058de79354108ca3b9300608412327f59bbbcbe683ec8cb5f00804f7253e5399a72f95a8f7375c86f035a91dfee9bcfba634211a20b32d3558becf277d1f5257323515f3602329235fbe4ca429185d0fd60357c620b1c15ba3890ddf76a33f41f5fd82a2c4c330bfd37a467e2db6063629170e38302517ef809bcdf40e545866a963f95c6ab5d557c85c5037bdab47c441730315bcf44e921e78f55dada7988e1c1e39eb21d11e84225c27a70e572aef619397dca32e2661e24f6f0f365cf1516ebe51a748bc56ac224860feccdc753924da1975cb03595b3f364135ab62c9ecb5a988cc27dfec9a59d44606b4dc29a3fe0a375d3f40466ad26872365be4241967fa3740c6c9e532c53a005edb4efcba08d14445a7a756b799d8c0e045964220bc5ab4caf8de941d06953afb951c9854deaa34ab10cbdc367c99cee32fbd0aa35c7707ca8a6ae53ceacd1a69dfaec216bae501b65bd52705553c9603e5fcc6331a7713b490368d3b6d633d2c5b918a00c8b399e998a417ce23145a1636508b598508f918637840bc12348b9c4a4796580f9bc6e50d48ab984269f06f6a9608706fa8205ca18c7adc5ee8cdad99d2d1e3aef92a28c224e5152a5360ecdf62d65c1d108c7565a42078046269557b095c7efba82a3318c21ab84a469dcf0869248f60f9638ccff1bf90d60811aa21ff618e69e7eeb7ab14c183f5b60c2099df8718e6307d1d6711c0861fc8a81e6008ac86f3377fb741852e798d6099e99d2ea859f9c8211f25cec20dd9daf095de8dbaa10d232d34788e77257aed638db8766cc58769dc55d4d7fa39f4d835e6a4ae158464d57cbca66576ec6740c12beea110f4243b3700d5bf8da2a958ef6467923f6bc36dbc43964b3afebcf033fe4f6a7102ebe5980b6cc0ca9c3e05711e965e7e8b19d7cd089df7c13777502cfa56410d6d7c99b00d35e34e59dcb9fcb42cdb8516f742f4e0db93392e72a0e997e8342f251c8171f93f2b6a5c31d5961e0de4b2cf5c26b66ffd376f6418b9b2268b08003ecd5393af93bf6afa053e108a25e97eecca1037478bee7e5c28d8f95d5805111fc8b17b370c0050c9997cb185ac0ca04e6bfe88d8dd1eddc553b3484cfe6157dedf9f3e06aa4f2e65acdadfd83f8488eddccf3843d17caac3024c7ad21f468e60c23496cd7914ea0280065e382a15f689c04a27716cd12e0ead232f8b8a25446066d97e529fafea899b4a4b774221e2b841acfb0096dabcbe5043a897c2c9d52857d80f428c4523b26f794ef430ec2e4f596b3b817db244514ea8eeb418aad311f299c7a28dbe7b2e120354a72af9ebc1be55ac9e9718f613be6da2ad79e28975c892d5a266c0008c4e92fb043d8ead878ea81522beae81d6a5cc5cf5f5cda845d0f2e2fd47cffe4e88e5f665bb86c415a4ecd669834fb8c2386b4037053d6959afe82ee66d01ca241c6725ff7bc328221facadbaf8a39a60d4c882434a27bd651b37c9d2d1d1a08f154b3ead76f07e230ca9a566b20aecbc720b503034dc02b1795af6f755d73f86b13c0094ec9e349549d696f782b5c095163770dd95df61dded28fb27d6bdd6d3a1a4cf08a41d5a8db7fe9235b46312dc1c1ca300cb86982786db8caf563cb5cfa854e10db4af79f4df4134bc48fc79e4eb2cab319706ad74f72a0d9cbf248da5b02c10bcd4d68c69486191b6500c758291a6fc2ffc7279021cf4eb0dc062901d2300e677581cc385e08feb01a3dff4eec5907df0726080867e2b02e1c75edcadc1daeffeaf13276846c8097d200d45e265dfcb80f42225b8e836228424d681297d605337616df9f73f1c8faedb7e57be85bd4ae4a7ea73acf3f36731fe1921d553a307bd9abc940225285beb038b56afa7229024e4680fd88ac3308dea24f8ee44c4c1db6bb8edcfec490042b5d30b4d5c95cb478ebd6c605a4a1911bf0e6a5fc0ef72dc083c899bd85c4c4354509f1b33858b3b85cd52006965966659a07fd26d50a6e55c2fa0cb91eff2f4e3151d76f4c81606e33c83f8bd4cfb0810987ee69e813a91550dab8ee0d2d21809f4373818bb6f06e7591ae8b012cab49e5bd3eb9ccb13443371cf8f943443657d09a98ea6949baf3ece9d08b48af04e5695a8da4e67d29b4321eafb525f49bf52f83a32bb990e9ee6653687b303eb5e78303e688298ca8f58ad6f0666b137b54288cb0e78b036e5a4317df5f29eefbc7ca84e63b56e71a716d4bcf3b7b45566ff8ced89e1e3b6164e1d1d9f22c8b716e07f30ae2366b10b01fac9d9fe6366d489e63b9077f1faa2302cc6685763c2b21153946425cf9b345a1feb27661ab11ba50f5c5b58f311512d296980056877101fd15f089750a52f39ab1528c06f457e113eb0672a8fe953c8321d59bb8a758a257c01a54278c596eb017d42a8143a7b352388ad5e7f79933fce2b82cbeff730e5ca0abea632c485bcf64a49bde3faa4af5d6ed90b46fa79b7e637b9c914b204af4e87288edaba18acacfd4b1cb4beee8fcdd41cff2fb6c4b399e043d0d672201c920f7d2aa3c31e8e3788a632a1ade0492fe85b34fa800bd5a86c79eb4a32b559ca33790ef965c63dfb154ea56d10608232631414dfa08c225cc5f6bb5fa03f30419be7f05eba17648e45fa4a1d7f2ac0f85546451c12a9b7d138d795cfece1e75fba626601467ec56da4c0047303eb59a32704deaef4bd6b74ab9ba16dba2e3c2d8242bf7e59f081b168f920df19b77f18f3264b11ebdab7b04d3f8d3e45a7b884df3bf234d78b95b9e5e07ab919fa31624193c18d5e061794a085429757a623c1153c3ed8f965cdf7ec5a344f22ef82ed599bd47435959312621cc8c1956d398707c69da5a4e97ab643d98125a88d9d9928a8fbea0c4d89ca25afb455d3621b538c08da1c79f4a69286f0ffa0156907d319c2dfed6934f94bead99e74ea2c540b20374815b5eb0ca18889f37884c1ed83fc18f52c90df38c5786e7757b1c7408ab45459873fd66930d652a619f204ba4225386c8b7871f21baa95812c9baa7feeee011d6e516a2804104104cdf9654fda1cf8dfd3d712090df74fc9e4bed4524b5fdf1882749d95064f184850ea4b3a54b93a3577fddfcc2c35ff0b22a9589434d0b11a3cd5cf1a3ad67c689f456de4194a1f4ff8f6fc95184dc26aef3afb7ef7a061132f42ce0f03acb534407e243027e284fff8c520fe8120c0f6cbf1c4d7c117928a009f27693315b983e09e0e0f4ea504c26e08f21f8b8deea09d181f1910c0fcaaf6fc5e9c29e8f488b5d058d33cba88b092edc340595f296fc4d6577e041770bfa399b04176a4f13a3f6ac712bd0f3df9b071064c35360fdece1ce926657ec728f6975f0f4343b9b9b58d8ec07fee1ad336953c423f1c8073ace4bbec76898f2418835dd7406401cacbeda2672723dd74e0a807d53dcd32ef06aec4ca78fa4b9acdfd6eb25f3e323643f4c3ab39c269cc3e047d04d96895bbcdaaaf0fd352bc6f267fff9e47b16f65739024920beff2c461d42cbb212c9c98f39421ca25a31746e938e2f1afcd0ef6cdd229f7f9b7e3ef012392dd05284b168dfbfbe43f5c36daf622c0aa40a5f64e171a945b33184a10172322fb80206d5e8d3219a227a09feacd56d9a8824380c56e34b8d0486f47251c85d4269a5c5ff867fa11274dd81db6d0f820a592fbd4a90388419dba3367b7e8dc1e95447a370c8218dd36e8a1b7b501a63dfb23affb408cf9f136c0ce0e8e77399a5d30955af0ba094c8557282ffc0b727854ee05c504708e2dc7d7c5d541b985fa41b7c59258b47e335dc167ac84f8244a6978b2631e828933c1201d543aa67127cad291de4ec0acc14d78704215c481acbf730001618e514993b0000e33f5be5f4058b3388a64dcc3d9210250ca498f0bb1cd0d06847cabad9b57650212871ee0bc4bc97869da1687e30b389a8ef3e256c468a6a436d5145a250ebffe2fcf6b7df0f52ca928121edb39271272839223781bb3df93c093687cdb6c5748f28476820745e5049a12bd52a0950852cb57cbdfd7f38a1f33a6cded418c10929af2cd68969430c4a88c8ca4a160c9caadace0965ca130a2ae61451b7bd1e69a83e0a4d34f140014e4c78a6a86438cbec1e5a08277c0e0e0ef3e473535eda448c8eeb67406b9b74841d80bd1d2ea2a93620d4981256fc612106be29d5e1dadea581624c358f829b187fd0d5aa072573987e2a980be239913cf899849d533f0890f71dd825f91ee5ee1c704034166ac391a726a3b473280e3d4834a12a328f4622adc03437933c25860864c4ad73b84ce694257b50170efc8166de10b04f93097108f48d56bd4a20e8d73f014e0215d5b1bfbbf0491637ea8899e05e18b13eb2fd37f54955c3c84fed849f688af0db04857cbee97a18ad20f4710a1c1bb8c40de8dd9d555cd109e8e96fe1fd14d21311eb69d2e001a7b7f915308a601671f7cc02006d4e40cdc3c7738777e15eef23055cf8079bf45c43b70c06c4aca549407534535e56ca7cde0bc80be2971eea66ccd3317cb533534960b877c04309b09ef75a76b01ac8760c74b73eed82c5c539e9a80245fe570ae53dcd54d0ed572a478223a94b8ca356a7ae76e48a4d482017b73a1f43c1f205904e55fba120694f8075fffee89ee7428400353c30e9d33f212a3000f1c723b158111cc39239c5dbe754e54df2df23ae3253ac863a478755373620def392d3d4319b8b3ed1031f42661f22ab2410a74bd4f5361a68f511c1a6c147260e5c9d4fd72f7ebee4051633dcd785b3d1229e6aef978b71c44fead8a0162633c22fe2b0656930ee63e4bdee4629e110fdbc6b20646dcdbbd477c2a31efe590c0e0641ec59abe4502ef1b846b0dfa9d85e0be299c969adc8199e693b914f3ff17563bf782a8c9ec60d06c8c16b3089bb6ef94c724e597b17b978eb53ed1069e117ef179bc9fb18348099ba862e0f347aa3943c183936b5f75c1e7c400f076d997511e70eeeb9638e1ba3b2aea41efa116878a72c2c6d37f370dca1d6d4c2106f10f1e73b2e394dcb142af92922658e963bd49afaddbfc7a4fab94effa28b413743af40bccb1ddf8f60f78d79b267d3a96766f1334d8a99f9f2b1cfac5567dcfb0c9ca3de041e5bf420cc00b5a564488b9f765cfbd868c183073ce5dd42f411b8e030c2ea2b81ecc93420c80e1879dfb495227e708d9269544af4b4615cd4707bfc004d16bc217a93b04ccd3a73b0422e8caafaddede86d50fad06f1d4ac44945ae403068b32aa0f929820167a788724ebe68b86dd3b4c09c452c98c3969fcf85876c35c9da9326a1124619391d8521bae73efeca989a817ad7d4dc65aa27f76d32482c9656cf97a69cd785d27e738c1cb36492aa5a09f3fa9e349c6d8643b372b26a7fc7487c4f08ca6059b0d22441cec56ce4817ea3ceecbd8f98154eff13ca25aba38ed89438025ec7ee660fc73d744d27f06dabec18dd0c1f47082a9560ae462cbe2905aa2dd676f96ab9a7a3031704a94566ce4a444cb2b818cab024eca77c57112fdb0cf59f1d02f93f794b7aadbb7e12917cb5f9d8a2ea618533f0e6aa35c21d86a0d0ddf981f7bfb5f4685a7a4d28e906c966f51cee27ab614bd1f4c25e380edfbc9576fa320c74c8f75652cb922cd7610d145be190a63e7ab7fa08809c372385b04f6f1f9f40b3e9c69340d5c54e876e8e3cabd69661a7a9ea7c796f350007dcd15ccc0bb45eeca7ae6fdc050b89f4df86d4fa821676a5a633697e0a077db5579cafceec5e126444315dca9080dc399cbe22cf7f652d1c363ed823f7344cd518a886baecf41167311cbe5ac7ef0a3f32e6cf89cf95244a8bc36ff065cb3db24592a75c07995d55f988137e9a03917c0d2577c199e639b4439267fca42e3223cee70506ddb2553fb33b3934f283d261bd75d13f416907d4050d9dd68ade1b1fde1eab360eec8a044e7d04000f551050ca6a3ac4c702a7c3f909df2dde25eb343f64558ab5a9778b8d45b305fd13db74802ba491dd52c29aec2e967423697793bbf149ced0d8f162764643a72cb3c5e7f67b39d904444aa57f5d7dbc8fef2664ef2d53830f660fbe0d3bf38bc9e96ae83c85183817660b2916ba15a60e4f8599c28b093972742c8f46668625c3c26a8518176070bca454a81487429d4eddec6e161aa6bb03d02cd591eec6f7fb31463359af4de7451b56b244354b054377ab9aa54aa1bb6768568a0b8ee3cfb7d88dfb8b1593d571f55cdd86dba597d242a7d5532360a5b4e8ee9966a5a4e8067d46d6a72d398edf00c46f6e00e2649d7d2c35a5bb639a9592d20dbacc3aae9e6f3128dff739e96e1cdd93a6bb01d02c1490d7713df1fdb05847aaa473730dcd3a15e1b485ac19bfe8b430d39a674b3a7e2b3acecd87b7b498752ac1498a16c9cfd431ab59a72344f26d9a75e2e164c4697946fee832eb7eadecd28cfd6724bdcdc34907bedfa585b5afe97c5847dcaada0d43b72ae69dd1f3bba7d83dc379831f3c1ec4ef2dc31d3f7e00fdf0f1e3e7478f1f3c7ef8fce8f9c1f363e7c70f2020201f403f403d807800f900f500f100ed00fdf001e4c3878f1f1f3d7cf0f0e1e3a3c7078f8f1d1f3f7e807e7cfcfcfcf4f8e1f1e3f3d3f3c3f3b3f3f3a307500f1f3d7e7af4e8c1a3874f8f9e1e3c3d767afce001c4c3078f1f1e3d78f0e0e1c3a387070f8f1d1e3f7c807c7cf8fcf8f4f0e1e1e3e3d3e3c3e3b3e3f3a307a8c747cf4f4f8f1e1e3d3e3d3d3d3c3d3b3d3f7880787cf0fcf0f4e0e1c1e3c3d3c3c3c3b3c3f3630768c7c7cecf4e8f1d1e3b3e3b3d3b3c3b3b3bdddfdd2d34abb300be5fad24a13881c169ddc0dcfce03fb80fee2d98168c0fdebdd3dd35ddadd319e1fbe1fbe258cb98ce5f1bba7bf78c754fda3dc1d51078084277af9ac5dde005ddbd42b3382ddc0582ee826981a0bbb2ec4777181027d366f5ba67d98f37a0bbc41f2b95617ac30ddc12ddedcde272b7e39acb983bae4fcbeec22259da98cbace7d27677d72c8e82dea28106cfd4c54f0a2b496ddd13c6e1e08869e976e512c9b5f70e59b2f7daa0eee69ac579dddf97b228346b76d1b98e36ec60a6600acd9aaceeced1acd944f748956ced6f77cb749f7ecc1958dd04ba5b8566cd1dbafb8466cda0eebe81e945b2dec764c5f7136d4d277c25c7f5c6c91f1d887fccc5b1b434ec38dd7deae67a58bd06be5ff84ab0257abbdb856e4ea8bb7534abb7687cbf5c93e98417eb84761ca9ceedd21babe3b5f7be93d4c5276f99ff3a696ba699fcda8fb65af55ce9cd3e236bceb476adcc69f7244077cf9e3c744f28ddf349f774d25ef7e401872a63545145911715b2488173050aa618a131022459183c74b01a87dcd4e000488b094baa2f094df4a06824e28917201b1c09f06831618522bece868764c021ca95025440f582531a4488e92c4d4dafee4e357840cc14482987f12955ae78d069ca142038ef1c88e99e03f1e22aef29563ce864330588179b2b1e348140b9cae68a07759eb201026573b2e9bc1d08d424b92b57bc2a573c1b2b32434e3654ba2980ae4f93ebbc132a4a8a29959a58a050a8ee743a9d3a14671365cac93defe451b89787b2891265caec26478498f698e945f17c761df7f2dcf3a44c8942e525a59b5bc4a83a1f9cb79569c5ab72650a2938bc92dc8a673385141c5e9d779657c744d5ee0318d4aa86f3983983563f00c139caa6a9a68362625c15937af1fcc5a6a986abe2798ccf9a1f543e3955504c0d9526558d151c823a7fa9a9726506756e058720cf7bb50a5ad55c9955ace01004e35766d04b95181d3a68d6fcf0e25365f3c314482f3efd0718e762581dcec961562da41c875752e750dc38ef2c5158a8554d07c1d4548171544d95955bf1a0179f2b9b269b2a43d0bcf1c61b6ffc0044e72f364d9dbff88b4d952b1e343b191e3a5fd5fc0044e730364d9e8c0e1d5267c45d99412faeaab932613c86ab59f9ac89f14e66480b3a78be721eba2a2a26548256363f4c8104e3d37f7871ee0798d38b9529a4e0f04af90c5a716149e9375e299b24286e9c4371f3dcf3ae051d648c3847c918797ea2325155f8e8bc5f51bace956a72a079b5775d73433dc08899663c61c6125c1062babbdbbb4777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777711a3e226c7845b35eac5c59c566cb0a2a85e9ce7799ee7f56c578c6a8543870b2e43f7f23caff3bae67e3acff33caff33a196e5a3bd3f3bcce5b35f7d331302f62d074de32445951d186aa29d5e5c404cbb3695de16e62c0e2619933959ab3a69b8e9a5315c58b731516ee86732c51a8d8b4ac74739ec18a1203152a2a4080450cedead50d4e2b2a18f042f3b25ac1782ac54d95773244303130dd1a2a95776770371dea15e3799193b7e24eac22de2b06a542c914e95e313245fd5239cc10558ae5345e801997f1944c0b3ab09cc69158363448332a97b1e9b6c4bcc478b79a3035ab18189bd302589cbfd4a41ca572215d8aebcc78750e8447e585f35890425169952a4a5706caa99c6ae6155cd7751dcd6ad5b9ccc96556a8958c0c4e1b32ab99d50aa70bcd7c9959c9d0d044c933387c86468686660675f24e663571dcc07103c70d1c37b8192ef584c7a2a1c1698366c7112c1a9a148b6647138e1b386ee4702a5356348ed305a70dd68e236870d0d0e0e4a0f11c3baad0e4c8314d701caeea7c9ce0386ca2e448b16872741d4e0e1cb32b234a2ac5a289a2c27103c70d1c37ba2d345c4a8d99ae4985dad1d49e47650a4e179c36761cf182d305a78d1d5554aa1d4d3b9a522c47c9386713e5068cd7ccca635c262666c671d47487331313e32cac84c0b27999899159c1d8e0b8a103c6532d11d332444971993d78d9bcbcc86035b35ad5ccac6cc08ad26949696123a5858d8e0d35525a66525ab81f195795c1fdacced8c2fdac916283fb9959d9e0b42183d305c70d9c2ea92e52595260a4b2a4ba488131654e29305e6420d384e3c6d491b151a96ac04a7947496569528335d9e87ad071e988d0b5d17569c271431525a525a52505838e8dae075d1b386ee0b481d3a563c3f35e36a993ca66766ce0b891e2f26a00a4ba982e644e33279fe15054a6cccc78abcacca4e1b85613d73aa2a3e166562f9caf528e3a7927331365ba4ccdcaa665a565a565a5650555050b0795295eca6b2d81c3f352385a47a8bcd695969596152a53806835e1f056151c36cdddb496f0bc1c9ed76af2a474393c1c34f3c5532c4fe1c82f9eb7acb4acb4acb4ac34a184a0ea505dd7712b55e713353b3553a96e2a5366d73e5b4b34d7aa72c48481695d819932ab136a564260a1601ce5dd8b2abfbc3c21c0d8e497d78b4a95b2499a9ed2c1421121a66588a2ca6203a37abd9cf1b27a498315c54bc24b42e52581062b09c64faf282a2c2b8771219c0a0bf713e3aa28b89f17295420e07eb0e07e562acfae7ab169556935b59ab89b938d6a095512dc4d13aa24544ba89ae07e5233e6a46ae2e58c982874626c606068c04a79ab5668b0e6cb132d2bad23603a2c2a2caa27bc24bc25bc275a56a60eaa55a5d564e5e51505db4499a996155516182478c1e58b21388eebba2f8a30e1d55e7c21050a8542a5525e7cf1009995096666c2f8028d2f848063d59403e6081a1a1a1a16cb3b010352a0e28b13cc408513f8e0a583bb49218514525041052f4e80c58b13b4b1828c122cd044a08597295c60c10a30b4acf06a2fc05043c7abbd0023092848c04bc7ac596146e68a98d50c38950ac7aa86e5c596d7b35cc0c1ea577be185166e01a7938742a9b82ea9d4e85d7919821585a552a956292d9cd7a4a31b821545b52ac30d374ca8800f5dbcb0a28b77c5bbd2b148c0c509e5de751d50874410127a70032f62f0031efc20c88c57d77542b89ba12c5ceae4469d8f948d90aeeb840c755dd7759d10d690d14e93212347665e517650dce98d0ea532ea3a9a577b41022ab808e3d5de276c11934aa5ba2823954ac56cc9a2842a95a5012a3452aff6220b08b6eca44e2338c343a1768076787406e04ea81170499d50a81c56aea4bc2b54ac60c2001298828a0f54818332c6c0d2091942a15028142a75c2026593c5002814ea02274071c1c68bccabbde02208334698dcc939a7f2ea643a9b16883c2fc69b8942a5f39e4fc44ce7766e766e64904189ca26a523a663a9582ace86e34e68cf6675054b061d3a88da392fd236453c95a71c49e529954dcae62453e434396f2fc2f9e48aa0562c60b9e0c2ea0a5611cf3d1b95ea8d7e712919229383e9bcd34cf5cbcb0ce79d038447a5e35217389d9c0b1736ae58154171deb13c55916ecef97a41a14e8e3ad974e7bcd844e9da5bd081f3ce9154ee719dcab3d9c27565d47465c8c49c6a8aa088509eea644e281b8febbaaef33cafe3c2a5439d5027d40975429d5041dd962d9dc7a856a79ad50a54279bd50a3a8f819981a2b3399d6c8aa04e342d10a1fc84b269251dd4f9a966bef1e27498419e4d574657463783a84c6f458398981fd6e4ba7b721d8785c78121c3e4c206d7799deabc1318a83264e8e29d50dd3dbb67f764ed9c4ea854ab60502995bf9ab533bbe6c5e60506262666ce762e5bbaa62d6560c161e1c2850d30b028038b494597a97a51cd9420a6481724e0a213839342a5c49c93e3b23cd18034661630ba2c5bcc3939aecb52461455b7850455cac8c2c50465b4d12566ce39e79c23d8e27967cc39b96e045db8789e77422591ba924aa5542f5160818181895965e1020b19199999192eca50b1b86023660c32c85891b1226345c629e571806646661503f3a24aa14e9e1266c400c30b2eb4c0c20a3a544801855407bcb8c2841c3858343332ab18981715129a8be9508ef229936406317d4c1f435a507957b9a20a3af98b7b355754411ed24b4d2a6593ea6ca200a1b231f25c490779be034dd0298aca5b208279a96ca4d0bc5236509cbcc978ed08e99a5ea79a196b7a739e2782ce6366778e8a0cd6e984eabaaeeb3a9fee755d973362baf3e9545644983e7b5e5e62625429d4c98b89e96262382b31a8989724a056780385022cc2e038aeebb0e88157841c299838d6e0b248c32b42a745952c96a00511272e25c69c2a224e314aa01e9085053ccf3b9db2a0820b2da9544aa53ac3c3828c2cb29c9ee0d2a5b248410ecfe3388ee3388ee3388ee3388ee3525c97c51a383a1e40a7ee8c2c8aa0e2ba546a862cd218a203bb2cce4875a92c969002695bc4172daabca8c0544a0b225ea9542a853a6d41eaa2050268da8950a194883965f18017cfcbc2022f5ed7eda0585c68399d3c941614aa43a150a9d30eaa3b6591c5f33cd4abbdc8a20b1832b6a000853a9dc250719de7794258649c52ee288fd25986509e4a8542a18cb81b14aa072f947baa136c9076b27479bdbc02b74f1249ea200e8e4814bebce5ada4d08e413737325b83f3007ba8d8bfc496b6e4b5cf2315a993541c9fe6b8decf74fc6b33769bfd5a276da5f46f48fa2d244b5ba3fe98c6ac3f46aa95b54a5624e28b2ffe17e191be6cd1d213b116e9be7893c892e43209fe7aed1fdd279792645b648b487b992cd923d622315124e25f9b69acc475acb9d4b9d946d1d66a30970b93b662f233d3cf1ebae79df796eb48f3b54892c2a7098d9512995524f96797221dfd8ca43421f16d367a91c84fa2488f77b82f12b9895f6535dba29b481f93d6865f09b924bf60e293e54d56b32561388f2595bd48da8aef2bc16a2113ecc36b657f5f067ba5fbf82f85e56b6d3f7e16c9c7dd5e0d386a6070b48e6610d2ddb5900926928f5dae5ac884239581196ebadd95f18b21fd4b2ef95b8e951211c93f12ff7e1e2b911f63945cf263ace6fb4a2451b64543b76cab0db9961692f495644b925408e7c7f845d659bd49ec119106d922f163f58638561ebd7860af64afcd4631858d1f92341c69a6327fd2dea721712d1c2734d133cf4e38537cc09bc13723ed5df24cfe92cfc84acb5fb347fee12f47aa142bb15b921692f406f509052f0df1abad0c43eb3298f8b8ec9a706e6ed9567b18aedfed936033b2665c99be468bee0c74f793c6d1c448cf165ee89e3b6615491bfeb5b96869f96b7e8bb9f8b79652fef6a46dd1dd509a55c303f6f5e69fafa7e7dbc98989395f6fd6f1e9010aff474cfcf1a3e7270c9f27a766c32f56d2729ddd6ec675f6d748f7e8ee2238a24ce99e4caaa5ee9e3cc404a0bb91340ea320e211392489f8199794c634e4733ca3b632ec6e23dd9d8216807477aeb57ae4be5292965223de44fa77a44e52ff908eb6bf6e6f1789663ab483f819577cdfa83bd604e8c7f46f48d6f12893d5dabe56916615d73c9635181161f3342b86a1eea6eed7ca2ab63677428d6edd5f5865f5be92ff2d332567f50809feb17a918e90adbd3e8330d4dd2fdd53072fc040a9e6327ca6ef69d60b4c74f727e2b2e6b8f6b97ac63fab62110cf6e171a4a18bffb15a49fa3b1e472a742329126b91f0fd745cc882e5c202fac37ffd6d36c44e56bf3687afe4e25397d9f09560e2c392e82fb95c38fc1dc417c9d20625d167227ee05718694127abe7c7fe311fc7bae4b8d290fc735c69d98ef896ebb5b45c52cfe4df5b86a4ad183ff6a5279d2a295ff67e0f2eb37e2dae4a55747a5f242badfdfd4cc7321c69e8367bb6d53e67da3274b710582c30a0736c355107eb008534d6c3e7870ecf0f0f95f1f8e0e1c343d6d3d3e3478f9ceea9d43dcbee9927ee9eb71bf66155ba8ff1fd62f49654c7e5a2b7a4af543355aaf74518a6e34861b430d3587703753712dd5d6bd60a6cd4305d0aa9ec7e266b8e8ef852dc069bbda293d6c94fa2d96f23f9e54877e89e52baa7ad7bda66ad80e58d37de78a3bbad8c24ca981ea9b992443dd4919295c890db68b3bd6664bdf9c8e582d9700ea9ad66855caef0451b060961f76d4cb49614da3136d26c338c89d68200216dcdb6244cb416564cd69b991ef698c682f4f89440ee1bdd37c22ed7cc4077c39aa502169dc3bfd7869e2de97fa963bf2eab2e7e0edfc6f48eabfbd390dc0610762d0c745aae4b2e3e0d57b2ca3c08df0fe75aab63f724bb7bf6e4e1ff120971adb95c98fc249b5d2efc2149471ac42436f4b59ac952c9edda4c45922219e97d5b9291d6ae2dc2988e42f8468df00fc016e1fbd130a5e9e8fcf8e123fbf121eaf0f4d01d1f3e210fd1c78707d0cefbc8f94c6fc6b112ebe05cdaa4f069a14eae331d3bbb34fc74eaecda9fe97ccdd2746898d25cae7cadcd5662d8d7e895a5a080eeced7d2b05b9b6998d2dcf5f8bed25f27893ed7bb24d2bfff3218be515b9020b6da3502c44691fc5fa4a09166d2f650afa505f91a4c9cd16bf391cbf5f566980d7fa659bc74895cb243335ccb1496c9c799fcfb34b2e257aab9d6eab545b94c22fe112e33cd4724d18d862fc272586fc67f61b0af95f8afcd5e511c2d0dffa5659848be0d97d86846d631568f3e088ef833b1ded8cb5b2211bdd4e80648f83be01056717a7c4a6ff5f89437df43c53051a44f8385526a302935b17bd6bae748564a13faee99144566ed357ad1863f94c9c7b117ae48b2b54a44fab4972df222bd33db1291be91500a1229b5a1efa11e7df9a50eb430531bae43373abe1292c856bb4630fe3b1b62ab5d23ddb34edaf824496942b6da3582619f69c6b01b1dffba5cb5cff8866164a5b4905e6acb96866d943cfa4cf3d18cac338af123f181054c38630c1c28a0831ba0200a3380384101454555050c8e2ac250c2b7e881238760850b05b0011601a029c09106d42421d3b300088000043942d0c1001d2d1803034340b800a9881b68807a43fc9c6bad66c3247c49218db9f8e368af7fcc491a7aa6b41c524cd29b9d7c9b755bd4dd39dd4dcd12c2a3fbcb8f6bae2325ef67a6f791b4b72a914368a6434c2f92443fa3465f7e290566ab89b0fce3486d305c8e65ad0c69a643b32a23ad50264b1bc2326d567fe9be9215c9bf9fc9d20afd8c1a898f4bd8484bb12a5591ac30265aeb9e331839ab23857d0f15e7d2dee891e6d20476aa966aef86d9a93ee198a9a699a714e6cc54f5783eba5bc28321c5a95427af9bb355e0bee67aeae0e1303b65c3a9b99e73769c913953939bb343f5c04d6ea6b81494cc899aa9e6a6ccd77128d40d8c4f8fe3bc24a6372707338bc0cd973e4d8feb7ece28dc9c9c6a09d702373994c74d1e7073a2b8a9c35461ce8e5399e0d4a566660a73cec9fde050507513cb447173721d6c721ecc0b0f6e3583a8e64986ee8699e2388fa783e1b88943f3337df078621ac0b5d79c05a6d7dd78276e767d5ac0acc16cae592c56cf9edee4e60fa68adb312777e2b86e4e9fa9335573c5711c87129a34709cc7cd9dee8b594135c394c9c102c7c43c712b4c6f76b33923ce61a6d75c45b583f3005dd79860b6902fb86ea2a6979a32b36b82e354ae6e027593e33ce7562f37f334676ac7e389616772302815979ad335396e061d6abe705ea7346db872ce2e67bec47053959a9c100e060e06ee85aebb9e3413c57153c663751eb702c77113353dd97c9161c69cb8799a333e5ae004808a79e1664cb54a715387a99ab3e3a6378dcc17b81f9c0b5c0c97e24eb39bdce4a66bbec0c570296f76a76e4e1fb39b37f365aee69c364c1838982e3555dee4e674cd894a813b617adc3c79f30717333b0e86d9751ce771defcc17193050e66be4c95c7cd395df3050e26d54d4fe5cd397df8d4b14305a4abe134bbf9323d1df3e5c515e3a405182600bcc971282ef59385c24e8c9139b9c9cd39733ad5b666f2c6e4c2846cdf410d36b4ec30811a6c60095563e7488d2dada44606adc304c4781d68186d34811040c0a8c62649a246142e476a60184211355cd8f931011d3a3fe88c067ca82123838f1a98f9a3c65cc20ff846047edc8dfe4025c0900346c1b5b65cc0b67c67470d585a408801f4550cae428ec6620294064f4ab47b437477dd3d6541ba5b4933e9cea1bb6f9a25b3049aa90843558109800a9a5e522a150a0606758ae95e784975a70e851552104536aa1b148c0ac85bd14c6f951ac02a77321deb54c6104e34a166b8d48bd792790168034d303bac44af351304c7a385d3126fa28094a0e98623433886e03c18ef08ce119ab6549927178e188404c1792c74396334d5a046530c465550a0092a405724080334adf0c2647582134d4450b0a9308c119a80e49722600258a9974ee694e4117144102a0f4797e313440e28f0b2230655545d9898e1624e4270a47e7839bc132a8430e1740343046606d4136f47ea8710594ca088106220a15345263c5244174d31a5cc0143c8f4d0cc2b9a56f8090226f50305a39ae97c1015e95e8021920a8248e64865a4852144605e8cac8e44205934a9e0b57e60502e1364503031436c08708126189511186246349d3ad669a27440c19c6c40ed78e11053bed0a032828249ad2033f4228357f4a2c2092eccc0420a3b5437454a66080246f5a57c647c7c1019a5565e8a8593abfb79597934b890d44b0ac6d339e5e0010999a716ba9a530a3b2faab0fb31c4061d2a98145e7c04215414c34375e3c9e0c980ca40d38e196fe854c3098617193c176878ba178468fa746627eb72bceee4830d011460490e6c404b162a389081278aa0f203134e927d0812e0090f4d76587264744400465c403e3733040000ee7de1c51b40e8410e700812001b1656486161c10aa0b8800e437070bd80c22a06d54508b498220a289ea8c004b04060c90d0d3a9f039c78a30d22c47800c20fb880d904205165416c804945a144123e5ecc28030351b87efca870420c8c2ae5420b5758f1e4c524450220223224020820c20039b6f41001073690012a4c76f0f1a3e3044f0c2d43d821c80d3f2f295407ac68e1010a30400146f82081084400892445416ca0613595c02581ebe271f11f706c7839e0d4386d9932e0c8e062f032c60a069c185c185c083a0e70495e942983ea85930b322b702a7028cc13709870cac1e1982c6f868b39c1702f2a15974a9d386f7673a25a86a66ba11b4193778026ef086a87cf541182605da0e9745aa566904110de04783c15564f680055449377e425051817740cd1f432008f870e86988c5aa988a88050309d0d3a604e2a685261d174c293205e7c741010c22a8da6d31b4da7150b31685a659b1134bde898e152369c744e4b5c412166052684f08e68a2a9a1a9e97270e8a874e0784388530d2aa014908ea603a27aa2a943c2a383824149d1d4c5a058f05a313cddf4565e0b86c8a986d400502ca06050515627ac4e78d1f192426a00dd128440b1d05121c4098ca60044f16a0e0bc00b9e6b4583c2e1cd2ea713f28c645240712926a9165245271466262aa63b79abaeebb82ed5a9ba171817bc2eb5249583c60806470a959a5dcae3e1e97853b542d742102f319c34d03423451038505e0baa2121bc3484b08179bfe1460ecc28430c2d2800a39c1d2991c490201c6ef0614920fc408706168d2ae5848724456fb400062e8801899d269810e2441a648471022eaee000143adf0c0c283312f81621085cce1803065e54410508023ce1a14992a22244628041851442b005150e6c00881f602fb860c91866d2a081945ad31b6e1cc1084f9ca890020e324ef00509b8b8c28a0e20810022600418009324454461b4e00b1688a00923339041182d3881175c8ce0024f1851802182c0858c31b81841083c50a5e945a2213864b8dc608d3450e0c5165a8000034a1ce04518019e38614234c406170e0e99305a8002083840892a2f124000444486d8e09a91f1fa066b84d182147cb1851620e800061280802a50044074830d2e1f3c787072e0f0fa8d1bac418314a0e00b2fb6d0a20318488012083840951ac0a03cc141e76b43094772a09941c385248e30a209931d0a1cc0881bd3142f6f746e704b3829814b824a035e06380c7050cc1e8ea70b418038003e180ce9abd92b03c79186d4f167f269b97cd130a5c170905cda8204a1616a04c8cc8e4c2f924182e0dc00a9854d6a6193242e175110de9482a6a5261aa8c0804a537fe28b6fedcc6f638cc6aa53f2be929d21f1ef36c62ac6d6e64fcbb8b4f76724157172696d7691febdf1f2bb8db8b455e9afed33151ea8ecd46c984bba04040e8048e27b4c69402401c2e7071afc70a5555a17bf56f3b5de129dd61aa53fecf035eb871b284f5a4e9e7c367ab393f4688a0fa664695abbf696d66df6da94084c19e9141f5354f0218b257105619f443348f34da43e08c1f241890f1ef94af77349d25a5833add95c52b2072b7a00bb1ba9593dacfa0371bc2512dd804a94568a3680e3488540b2bc99714ba21bca9316d96ad6cd758b8129054cb9455a5b493f66734bac17dfee1016d389b5b482a5294b32349427ce446bde2a7348bd95c7520aaef967621973fa77e6b88a7fdf6f1043b394be50b24179e243442d274fac75f16d982e5117294dc947c98556cbc9932f93ff22a3aca2bb9734ab04bb1bca9316d38b644baceee4c947ef9752ee632f8bb03297ee9659bfd125b7a4d356e9982e65302ecd4bb42c37e9ee26cdcaddfddd97c9ca58486d49211d9d621ba5dd37f20f6746d65cda6b45b7f9fbafde38a64b2c4cc5277efe6b1b6320120b33f5f72112bec125754c69155f2e9806d605a3fbbb58badba859d7e8c3119f96af8de973f5c7250d3f76433e0d8925a54b777f3f86397f5952a8e8ea1ff3d0451044922285fc8fdd485a736b9182040982731324c8385221972b08be1d39a68e0404482d6c0284c90665fc62101c0408930d62591c5823ac9275d20b720b9247b3481eddfdc9aceff89ac53b6e23a64b7fdb912db9c3711d4b19c61f8625f6d7f722ad59d2c9249af3d332917fa4fdca446bb6e8bb8d23adf952dbb57e1b3fff68abd9307470866b20567a275f5f4bfcd6d8dd3b9a55a3dd9da459b51c356ea4a23f118bb7315f8a44a889df487a7f46dad12d995482a4fce1b7d9ebcf487aebd3f2a5b3bf8e4bea49f8d5dda96645f14114278e8852439417bafba859350595c6aa4b685c3efc2ff3b0d63e57d8bf0cf49c8a2bb6d96b25c6f4368e22ae39ff3291a48e44a88978e9d2b5b259fdfb4a96e64377ff348b3684a659b49fee56d2acd91afd61ff4c47d0733ef1c598ccd266a5bd978e6558e938dacc34a4bb8b9a351b6747acd90c322ddddf93b608895093d88dd640cff9b2b54a7048db8734931ffef58c6d0d8950931b19c54e3dff5177ebd02c994c771335ebbb60fd0f0fa5bb939a250a413483252e75f70ecd126bba3b6c563802569843147aa8593131babfc79416ded28644a849eb4652cff96c6b7f41cff9c01f1c8afff07d3e78eb87eff3e15606b91377e11cbe4cf6def201744722d4841c69296588bbc05bb6d5de3f76a348fcfb97dd4257ce07f6f890d4fd6332eb2f7781b74b6b58654f7e0cf49cef86a709e8d77acb6617c9077170beefc65b373d4d40ff58586db7ece35899f8c7f4ee02337e11f49c0f8950139f915524e9d218a3361a227117087ace0782a3677cabec455a132bb6f93f91cfe6919652bef699481c32d23f12fa6b94ad55f2f522e1da67a22202a071e10231baa796ee1906be5f8f924e78f112f191c4bfdd57b221ae43b7fba50eb5b0c9cbe85117f78d5ef7eb68fb279299bec856bb4668981ab1d5c226f7c9b1542289f0adf88732a6478ec83f328eafa117ad508fcf929a69a6436113f195ee539ad19025621dc23b30b1d5ae910f495a624c34d26c91c43189ad36247b253fdaea45b24862fe23b10ee14cbed2107cfb1cc46cc72391b441b75008bfd1922dc2981ec13f86e4120e87eeeea17120e94183d9da0b032fb539a6370665876e77e52afe0d6164c59132019498d6eb68d613274f787822e40950bb0b4683b574dc25fed5c1b09d9e1e9f25aa84de62fe2de89e2c00a707b86b5dae1da5ae48f61b6ef05b869d0ae726c9c270fd70b04fc181790bdfcc30c55bf8e6f649b05b0c06fb381f1829d50f5f09165fbc34c475e845040a0f645d22e4add2ca6cd114e276367fcc1986be1f727f5aaef7be92156a429275f6fe4be0cb4492caecd332595a92d24a5a5e2245f2b1e7bf79b6a48f63cdd8ff525fe27f71d2a5b5fb992eb911122546fca3fecdc85ab321591dd77b69e898ace22b51ec2249c517a91dc598f557a234ff2577b2d21cb38ee952c696862b7ef267d42d1e696ecdc81af3d65f2bfb8b2ba6d76b5966ddf3e3a755c724fdda48efd79e669b9155bc37df5b6b4e1dd75a45320b2d7d11e804fc9a3d021d57c7b585c56b974822ff700e16c96a9d7c390e4eda7a9f897f5f6fbeaff4a4631ab212141074e25fe6c7d62de9b24a0be9bbcc7ace6d0cdd6627cb5acd86b798dbb0bbfc7bb11c43d2862fdaf031fe308f25feebe358694b0e65c8501221978b5cb264126c1c7fc90914f0451bba4027f5fe92b7464ace2aa63976563a7ea53ac3d4496bb1e3977fe2d7d166a34eda8ac94a33694317c7afb21649e498ac361b1def2b25b905899f6bacd2ec359ad5206b917e8cd1b152a557b64525b646445bf4b24522b9e48666e510430d0e99a44a3fbe1210c3f2cfc691867f6d084340cdedbed2938fffdac47ff2add03f9120f08f365b59c2c4ef0196434a3e8ba808a6277124714224a4bb3d537fd18638addb27dd74b74f7757b28c80d12d806e4ec866320a596b6429731f3e3e3c15dff0fd71a442562c8f6eb98e352f19aa854d846a6113235b2d6c7233d3107acb17bde5ebc73fba36d371b442b64ac3af4c7eed861f97d4c8ca48a2a315744f15a4a07ba2a07b827182eef985172c22535639ba7bb288e419ab37d820d840013be8ee190505306064c21660f8e8ee8943029c244982080884a0bba7113c8801e79e8068a0bbb9234370b8811134187184eeee504042cb0f986822042ee8ee93130be83261e072434877cf358aa0c4943698b0818feeee1c00a61a4053419434ba7bc220d6e3c593034841a3bb87be03e2373afea57f3db09a5d34111394800459b818c114014945179921e8215b6851ab741462aa22f936db2bffd1fd5124a9913fc2e568bbe5914896b257a284fc10ffd0a53f0add8c49a22fa5509ba599a4357cfb1c8eba6716dd138bee7945f7b4a27b56d1ac218f25d40504ddf3031dc503516a6113f133a647484043b3844011b08464e0b2e86e59e3a0a185202edd4d0329d29f1de89e54744f0e74cf0d74cf29baa714dd53031303dd338aee0945f7bc40f7b440f77ca27b56a07b52a07b4ea07b62e99e12e89e11e89e10e89e0fe89e0ee89e4e74cf0674cf26ba2713dd9301dd7301dd7389eea980ee9980eea944f74ca27b22d13d11d03d0fd03d8fe86eaf270f413e41ac0641bf5f654c888f676475b98ea8d2202c3f064de86e24dfdf72465697597b6d2e44c3d486ee0622d2b7cd74f70f7c3f9dcfd1216dc5d7c26a21130c071f7000db5d225993bce52eeb2e1b86ddd388ee59c4bcd258baa7015838c8740d0e8a446fbb21dd3e07d09f966f9f44c9254b1d8333b28ae4c3480b5efa63e838ffcc33917fb4f0d2c77ebb94acb8245fa9ce9cfa7d5a7edad22f59ece2e76bb167db2739bed1a591bed218a3b88a61154922ff300d8f9f96bd85fd694c32d393f8f64964a57dcc676475fc35ac354bdaf0c7fb225956fff222f9f7e16b33bd7d0ee2671ad6d1560ee1dbe7608b6c110b084f77b697decc3404e3bfa2f85a72e482c18a92101d2919b2036c489197922448473098abbb7574f70d0054a0cdb2e1849186b67bc4e96e0410e1f3f17c3c396fa57b16a07b56e99e43744f219ae51a62b98082e89e4d0c70a1583f7ae02efcd59d40a2bb6bba081c27346a46fa5824abccb325859eb443f865c5f248bc7d0e6215cba31f34600ab362f96409b36289ad58e2eff6496ec512832268c5f24849f7a40204cde50aeb7d91be112b96f931be7d12ec67b7b4cda42f7029e57110209e31fdd133f55bcc33f9b52e6ea3d1879db43fc64a2be6ea2d7acb975f4bc4bfd9f7fec52a261f3bf5276bed7e7ed16d4eba76c96fe348ef933fc325261f933674f2b1a5857e4b3b00ff302e33bdd466a3a568afcd77ec90c9aae8b85ebaf441fe61f27f297fcc455befdb70c83f73b10ef9b53221175f7cf1e77bdb2d3bbe6f34cec88a1dc9070e29223a32f41a32041b52f232e27281f5da1ce31f7f8cd11b496fb49633a663917f4998666ab3df72cde48bd55626597bc43fd2faed69b925fec7dc6622b748e2979648b64519532392e867afa4bb816896cf039e96ff7e141f92d6c5eea6d2ac9e1274f7f731cfb459adf9672ada4a275f357b6524a565bf4e56a7349f9195bc9489f8344cc7a3257a455aae4cc4cfb4de4c6daf445c22e6bf2fcbd81ec9b81c127fc98ae41022268a843cc244917cb59af1fbb5b296e8d916f9475ab7fd27b9cdb5a46b97f293bef4e4ceb7f3f528b9cdb8bef8355ae4dfff95cdc83a23292df4d6e3c7f863475fb3d849eb3829b4a38f7e235ffee1ea8f69884bd710a42445fec96c8971758c495b95dc72156b29a51e21bf8655262b314934d29ac97fa53abe6cff391ccd761822d21fc24ac42767f5285bab64892a11af0d5f49265f69889591e1dbf00f537cc0dd4bddeda459ae2be1db8e601706cb8f95ea4861b6ffa471cc8fef671985895fa324ecc7527c5a88d1386308e28b55c95e9b7f4c08393edd5947b421f97e1b69a6a2ad4633fe5a45dab1d18c6b35e318be5f4e2d64d2a9854c3a403fc47f590f1da0efa1cfe37b883e7a64403e3b3c72b21569d2686df761b590a995aac106eea2dfcf362a5298f8a3903804c9d23351245f75f197ec3852c7b5b2569968cd9f864489e4fcb539759bc9ea7f6dadc7c767641545cf952cfdbeed310dfaa1afc7273a393888062021be141bc48fe5b256ab8ee9529555d1d66ca837bbacbacdb9323dfe7c1bc94bfd956c8ce8455b14342492d4e58ad5ca2b349de0e0a25c9be9fd5cf3e3ee69461964c4600c9a07836fa4b566c9db686d1fb6d956eb68abd15f0241d1562b634e5bf6c83fd05633761004dd069c1adc06dfe138b6fa3218692bbef11bdc56332cff68038eade69b70a421ec86fca38e8effb5e4acb6322e2f0882fed96acc5b38b69a6f5cfc1e2aceb98d978eb54696372793f6ca40d0a967229ffd7592b4b69a9d8ad431f597c14010f45badb5b1d5ec232df3ad4a36feb904c15cc7b2f6f27f229f6f415fce7d9bd34a6d2f7b2539882f5aa1a325dc7c6dbc6104d4e3e8884ca264751ba3be64c924aac4bf5bbe6f4304a807c6363d808e8e5cfc178bf88769a6220d532319df5abe38da9b9a1fc11f76e119dc5d1f0dc45646669c1b7f3c5222fe813d3e2508625aa324f8656c47cbf49904975c56419cd60de86fbb654ac37f3fd3c2fcb25ac395a4b4f06b21bdf9957e749beb18e664daac8e8ec36a7b017999a57f6fdc2912078320010169b92e89e467b256b2f4db986b58471bd323f977bf65c43f103cf2efc3c134601baddd38f60f3f0d539a8d2299d9ecb9b48d1487ac37d8bf21a25266a34f737d8d16856f3b22892c1216ff8b7268918486485b64eff340daa293034e0a500108e24b711b6898d26cd110b60ce18b7617ce0d85cd1774cf7bef90a42443860044084a1002111a04951c0493f887b36387d3c25a7347020b206071a206e35865f867d406b3610ccba57d0c1bc79a04a3e5ba64c5f2a81636c1de02722d91314661c46a7770b972585e188c7c51ac3458b551980d97211386c198820071b98284758c954636db0bc9f599de5006c7d4e92d5f40e82da948f4649d9143f227853507a99889d69868eddafa4af5ef7d18696179a4b457aab3f077c8b117f1bf2c0810261be47289cf64632ed7b5591c3224565890b7dd322c635b83650adbe95102520b9bb85c3c4a620ea2c8812d8f252e9d3cf9727042777fd471d0050758349427eee4c987032611090742babb63d4739070a0e3750324dc208a26cb255c67978e1eb363cc56c71b34e96edb8cac63a52df91a5d1a676c5b03cb1a46dde5455ac3bb6d910db6747fb8da221b40d1fd21bd68439ae9900d70d400053558400d700d005083aefbfb9a0d6d654bacafbcf489a48d31d15a102420b2246a64e9fcb721225723896e9a1ab4ee6e3584b493540d5743d5dd5bb8d4da7da32d5a9adec74bb670a07be9655b9892ac6f11829d92af2daaee2f0d2e5f1a5ad2a0228d2b22f969d8d2d841a4412e57f84a2e979831cc8645a2349a065d748b4f0be95fc7746946561a384103a486f204531aecb0d0e8820618251a16d733ce18e38c24cef8330870860a3340630653cc80884ee22ef0c3a5bbc025a0e7b8f08dd640c798da44fa4546604ad60663a2b51978fd21116a42963280c18744a8890c3a2083a69601edc3321042561978779bd1c50c2d9f1958badb9a41abfe34a420b0a527cdd8d15d1a05f99a45e272212d59b20c2765e440c610c880828c4b468c8c1c314023065762803f303f8639ce27d1ec72dd3869ebc7c0fc47641290daa21b07894010bcc5fcfb5a8d51da634ab3d10f492b7e9255226b18044812a64831f0244cf3185c7a8c2ce48b6334d163804d6db5c818403018427f5fab19062cc020f582355e0046cf4fcf8f9eafa7e7054a5ec0a3dbc7ce0f9e1f1f0f1794e1021074f787231bffe8060a28bac004174c31d010038bee9d1d9e1fa0afc76bf01e3c5f0f75528c1ec430ea0f0ae8e4bbd1f145a7d46b37d2922f2d1bd0a2002d372d4cb4ec686161c7c7da590f1f97595ce6b4a848feec75e43bfc470f9ecf6bf09fef470fbec18f3c47a41e44b4f5fe2d57972b4810a01248f83b88350c5a183aba0573f2c4bf30babb69d88232fa7e0ee9a5b410d602b18d5a80020bc0203fffa578c987bf4649bfc5a88d5c42c3d4c838522116d89a2c672c6075fb0aa870f2c457705720a4e5e4c9f7a4fd9ac5af15a8ba5550c64733554113fda9c0d6dfb5dea302a07c55a0ea0fe3fcb5b51bbf91741ca9500ab434aee3d2cbdcda9c8224305d226b0a84a0a08b255f58bac5242830d2fd6281d1a53be69906d291c0b8005d6ab92d1a472a942488cb85140448f83b9cc08713f43841ea8b137cc1f4850c4fdaa24f88879b249fad86f7fe38d230a78a5fab75114517b02e5430411713a06182059820081308a004452881044a308012e42001171274d18dcbd1c87370c0af3798fc318789071ec82435380f5e831fdd240141b0756dc5f5715dba4fcb49fc037940bf8d39a4633952a55a4af9a8e316482e21ca3245165a9623596ac822c385155c14808b9df696b73e3187b4de12810e44b085081a2082231174088810022b421044089484606ee1812da86ca1b4058e1646d082045ad4b450218b36b290220b265908000b2560410516178b17a038397289f495eca8d5fcb23a3ace95a4adda67ecca296bced3e27157121d22cff9708e6676ccf76576061fa9b5d96b03fd16f3f073f008a4651bf3560b636abb3687b44b3ce703718e409bc7b18a2f92f4c65b957481d9d2961ce7c673bed071bdd631786d0e29110ce272b4790b7497d107c2401ecf015d66a9ac8635e34a9d766d1020e4d3968200097f077ac503fc0a1faee0d1509e60d8b55589d23e866bcd8a2058b18515b46e284f6cf656cd5e999327ff612b74885564699b6f9c2cab68fabfb26ced7db1aa9055a1a3a13c010108beb4b425274ffcc3c1ff324c97406041e0dd18dbd173695bb98c61baf4012d509ec05adfeb034d74b7ab591f30ea0fb07aa4ee0136dcdaec8128ea4cc9034c1de401234b3a1e50a1bb69b34a736bf3ff95c1969e842d3de972217540a7032a50e106155ca89801151aa0e2082a402a6a387006071cc001240eec8096b604b67878be1e3eeeaa39e02a4ae03f3d3e1f3dee12fa642491e77c200ef82179e37f5bd72e3d8903823778a4e3583fba0127367064032c74318594295a9062085298408a0f4811932246031fd000140db8d0edfe657c2b0df77149ff26d5d1332e05e0385fde7ce3af5447fa99a497962d9cc72395dd780b539a8f238cfe686dce27abb61a7e5f98df5bb885ef2bd998edafadb4b71645f2fbb1160ef865056f1c7f124933a5650cfb3146fdd64c3e068e80011260400a068c30b04209a2488a02088a1f40e100288880c2072874a080b980075817a85de065812558c00a0b941610d25fcd8386dc92b76b6b5f73b27a12cfc111bf75e3b65e4a7e8833be76c95b3c7e3e9f1c77a74b180445b21c69c6e5d0fdd9acde2c235f096ce94918695daea52f22937815b1e7b87f650c84913484819ee3ee52f295ce44ba4852f16926f29cef8fbcb491f5becdb6461ad65c6f98cb58ad9c5d3ae439dfb520f84b76fc98e3ea34107de03f11b066a2effe2502924fd0e089269e08e209234fe8a8c00e2a50812b00c0f18c795c2495380f8f8fa7c738d6241b7d9a90e77c00186b99f6197dee2aed2d003f7e7c499e2df9509cf8d32a0074030acc800257fabbd9afd1a36c6b81a0634a99865040090566e8ee0f294912257e8b9154e8f35b8c62d262fa972829b447fe65e4f760af0c16e25afbbfb20968e91f9e32fc1db01c014b08c64a65b171b4f7474babd94cb1a820812e127842024722a08408ac20024b3e9a1501211f182b310c5310d3a51e9e1d4620e88f4b1c9c43d2d166c399a44b2e7a696f4921cdf8c664af0df41c96f626feb5a4a5898f692ce74696987cb7d94b7b7319919394dafcef57bb91562c1fdb20b004045e3d78009607e420a4590f887180190e10c2013c9c40c3092e9cc0d2a0f8791c1fdb917a0b24a2859906814fcbb6f252927a0bc9bf8c6b65786be8e348939280fe09f95fa19b24e348851ed320970ba4b65b0cdf787829ae32a20f87662ad2fc35af4e6f1c04dd95499a3169c3ff90e9ddb32571ce8da4483eea22f9474ed01a1739a1a3fbabd557aae3ed73680097db2729694096fe6a6831a66e8b1a80e5b3551a6e82074d50d184019ad0690286092b98803101c38032ba85df7623abd330cdd86ffc36e6f06fc5b9f4368eb4c4e58d3ba681ac943644e4feb1f723fc4ab6f64a1850840134b016f0c602ba58400416c0c3026658c2084b7060092597181bf21c10df3e87ccf445a0b740591291a805bab0485f496c88a9ca706eb05861b74fcac1e542021d676cc3977f200e8f90e77c63cd64e91fcbaf0fe728a457365a3b7bf2ffce5ebc3ffb4c56984cf636ac59d2ca48221aa6465c2e2405b0e1e4892b000b2b23abb79c3c71f2a58024babb6df42ff952804d013b4e9ef8273e8d4ca20055f7274279e2e4c92b0159fafb9a0d73484b8a35ace5510268e4bbbddf430e69c9a066252086a58496de01bc56a80ec921bd99e9892831e5846629c1448954e720b74f7ad186b7cf018683dc3e0720e1ef90040e490020891824c640c20a1240082042378fd760e43b9c870fd0b763047a0e08bacc824646f49661b8e4b112db9cad557263e23b76ecd8f13155d95fdbed93f048112043800908401da08aee3ed2ac03d403187db7fb4a38af5431e91874b96c85d93078e320ced14d12d05db0fc1846d210cc95093c123af21afc88211c31832320704453b70f9f8fb43980f8f64944398c63cda1bb5fcd3a62a7db56baec65c40b8c00c208d2082446ec28628deef66f1c4b99e3fa3733f1ef13121202652f7a2e2d2dd7a522928a8015518455440e2272404416f7d6d78be4ee1e3404c4d3f3f9b0d85b44462f0729e8f8f1127781333b826eb3f3f88d7ffef145bfd6eb5d7a226644181101c4226206d61536ba793ce76848919711cce835c488dbec3c3d76787c3c36fa34c734c46a8ff12bf64c7e466d4757acb8f2806e1087e74aec4a8f2b2b1ecff9926e2c966b8dfc248ac4001f30001306b8196089016c70e1cff532f11c5c4509bcfa0e07fae9f1edb8cb733e1c1087e7260978e33807045d66412270c9411ca29b24a0e77c32fb474190c26ab3f931a5d9f0c5f76b25266d483315f187a4255d2e24252e175277e3d02c2b57ba1cad0db7ba84a13cb96fc5123b7962a549773b79e25f92b5d9332ea3bcacf058b164b241e348c3a5278f5cae2061cd341f39a62e1712104b5b2ac0ac003674770ecdaac2e50b6539df4d56c3b7e1c7e5921dc78cc9da1a475ac5a8bbbf6cad92218030040f8658a2bfdb2759b1c401979e046f5c1c826788164207428821440a84c822c40184f841881d3a401c00dfcece4e6b87c76b00c79186a033f19c0fe7c68386fcc9249ef36191fe3de2391f0ecf4d12cf09a31da8d4ae0f77494c3aa5d0cc80cc08020800c3130000301c168a066432b9b0ca21e40d1400076cb6547e4e1fc9436292a338a48c4106110204600404400464a60d00f2e05231320eb511799314662805daeca3c98b517ec0dab4de5c83e587fe0ddd1fe204ff9784d80154675a00bc9b417118987a0d219484bc79dd03c429a45feb785ccb16bba8b495793fe144403bb82205919bc787ff16be1c7f837c1ff2aa25944ae66d9d3ace2edb7450b4c4b43e6e2ab20176f5860759ae95809e8669767eaa11a68e972d274c51cb3a2a5736e8949a483ffd49ec1588e2bbade32ba0bb776a92139feeb86e024db747b665e685167854cfdcb49f88b4a9c38b8f85cd3934712264a743f942d4ad2366aa74e70118e6cfcc101a34080270beba776113e841ba411ccae291a60ce6c5a3dfa75c90297ff2bcffd72b12c8736a28e60a83176b43a4ee983d584c136a63250191ad766a07f8fbf196654b012d45e5c72c64fbb1e5f7593ceb9c23286458a1f75e95b60c54c9a6027b95394a365888d213e410e32799456bf884d70d79a4a47a5141fbb3163c79247149d7f94ffa46283a53cf8cda33d5bdc7b826afb80a1f6eb668b1241c64055c745e46953a8b9b398ad85b6201b8670b81574ae1373e4e42533ae0d52d0aba7742b10c4a0ba6e3888eceeadf9a5baa0aeb0ce0d61d4530e03110a5303bdc6b06c2e9a60b07888466c6fa4d18c74325f7a805c494d244d5ed54afdf297a851c65345c3b32e8cd8d23ad84cf7e0600e91684cdf54c5ffcc33b3d41eaea7bcbab14994b21d4a973750452cb400360df2dddab761cc9468d98b51bfa0c044bf4b4aaa19a3e8aa6f1564ab3e0621daa5c6f997700bc9eeef7e06bd9e16628e4b264d4e1f15156c9fead5edfb849d18d3cb2f4c2f26b909c5c27017e60abb2c0b2c010f0916ab80feff942bd5403f6c6265929d8054852fdc9e377b05e803c722a3dc51d035575b648c33ddbce16d4331e9bb45c3de719ae48533e1bc90ce34e2717230d72549670b3098ce55b4ae57f3aab6b5b2172d86361044eb5644fada5d65aed82ed79cb9045489d50d6cddab0bffa872b3a815ff679394e4e27f177d930c934da14bbd17bf63441f69d6704a2f53ba8836b7f0985c18a3ed8c6a5a6dcc6943890f25756c6d4d4f9e9acf1ebdba5868001e55e837a6984ae15783c36a4d8c53484ee4ac46208ebb084f9e80b4bb3b8369fb27ecf4ef18f02e5869405ddbaf5384194093e52c47db905c4c288978012ef4aff6c399d19fc99b142fcc8380d8eaf4ab6f0e7ea55a5368d383b260799bf091f4b0f3a9de0cca27c365696f716b9d2cefca6b1cabc3183be41dc31d4afe2fa30d6bef4e5c0c5ad1179ade7ba0dbedc6e0ebfc06459b61ec148c7a544632bc000b0046f18cea1b60c1e3a3849e5b262e27a9522ad8c27b4071a562572dc8234563acec6d42653e054716218e3aeb64dbf6015483bde202d88f34f7e714e97d29cede592f1eae4025002e3918fdcd91e1fb3c7103114a8761ae4773ed96355805c6e0d04c0f8e142dd772881ca51a8c3281038f057e96ca21cfce3995acc2f995a8aa7681e63f2dc00bcdb460a6c5b9433f96d0c98ff2d691a0cf8c4d6dcb4a5639f399f2efa550d7cd3c8018ca490289aaf95e1c2d7002351d86f0946677476a2d7e0d7124fd838786d512bf988638270ea6ec2ecbfbb17da7485905ab8cf390f8eb23fcbd3c5627474505577561013f5f56188f383f1c9f003a6c2b9bbdad3e7a22cce29a705d17ec884c43939e8a1f40200ae01c199b5095739734054d78b71f38d8bd0128ed0475b001c5ec066597ecbef1c72832b75992ef3a41ca0a62ad93d50ef45ce8097b2719bec3d0b0e65acba43fd3d69dacf19d25cf2d9ad3b43470878c8195f51ca6e3402f675193e54bcf558a9e456c0c5f3a80410c45cec2b000aa133a86457c475107869c878ebe84ec9adc88beee1946609b9aeaa294125e03a11921b810700399135905b5594997ad5db45b7fc4f54eee87a2e0ae7c9217b9147fb925d50602695dba315061405fd587e41f564fa07cf170df47d584ee2349ba21c1b0e3d378c57da097f6549d5b552f608164bdf45ee9c04653d078e653395d46f345cf7e1247432c7970dc78775f3ce89c1f64dbd1b1da0e94d1097bddf9588fb8b93a5166f1d838809e0ea01b41b7909bcd3e5593b78d5bd09adc1cd9b09f41929c45d01722bac4736bcef990957a635c9e13c756352131cfa9eccb51ad18a9db1b3980a0c9e49106ae33fe916dd00e6fd8429bf310bfc9ca88969c66bb413900b886901a93354f5c844eca083dc04523f2e7ed77c711169ce902c9f0f49c3231b44927c1bdfbaa603fd55ebd48199b425f49e09e96c8b48bc9806633e516b3a38ff9e17a10ae6898a1abaf80282eb787c50d394d8cba61fdbce3d9a94ccddc72942e164e84065fcb4e23fbc3ab08aa7fee85cbaf16fe221eac0e450579412877660cd7d623fe4fbab440379ec86462b24afad4f02fb898be67d3e03dc9464c0f50905f05bb928bccde0c94447672627845fd10eee1cc5e057d737d59017312b1880f446a4649f5133abf609f54578aa9a670c22ba6261c6c195e605d62f80abc774a0e603f15198209dc452e86ad30bd335141e674707f8d1233125998b0a409c73e23ef707e0a7b476ffabf1a24e04769e7259b812d478248ada4f04d381dab9bdc86d3227e15a3a4ac657b816798b13e299c7896c732196a1dbfca2ef40d429442a376e45539ac23e91d14febf452ff046b38b9bcc480bcbeb238bf27eb0162ad25fd35f3da93ebeea37e188d9b8794497f7fecc1d64b580643b12032a71b766c542bb98550a18d3d9d9bbf7aaf962093b5f66484572f4744db79b165eedcd337a45a213fe44d0ecfc2c38f11b444399784c4a1fda7f7d2abbd07ecef4374ea30b66a8741a7068e5ffb83b6d62006567a9403990b613347de24b6baac53247f570c38ab561e4e8d82fe804e3a7b1b094511c37b69147b80068acdb02ca0b53937c413f4025564e25d8819fca2f16861da2c581f5b10ff8e15e2f20e657b6b5d0cf20d41308ba0f635e1f9f4b5fa0b7772d67a8b6df9eb63315e7f51ccd93a24e4dacfd4e0bcd130083722c7a24a8de65c19826dbe14fa29a99ad4f2e51a42cdba0568aede86a239ee89824f727d58f1b883f531c2f2399fb65b7117b9091a462fa53ee5850bcd9d935f0f6ab8bb4913b3b3dcdf7fa00ad3ba1677b387af1fd3ed8de27b53cb789001da6b327a86c1be3d1ffec08098b67614aa151c31cbe506bb609c43b45d33c43d096d044c667eec66bd2cce6fd2b4b699de6362b7b43a00e38e5d4a2a82100d3b737572cb85994a5f591fa0e527a1fad09a1999fa2c730f84c0c7d9f30869cc508ac584f56caddff7c10b4c7d03c10b7311455fa9eb03a86b8b16c97afd1114be77e2d11d61b8a0fa75c89e049d1eefb51852bf50755c75f00ce47436297a788416591becf904e43bb569d1fd5a6bf4c43e03b373d0bea35a59b411608512efa21f0160e7cca7e837acee245b762b08ddda1a3ef7711165cabb6d7f2b1b090685b457bd5305c89b4e6e479e201eb4347b069bebc9b68c6f7414bc36d9ab58f9b4a1dfc33300e830ab7a1029d5d40be8a023f47213bb5b454f20e0145494dbda5cd5dc825861657de6cc3ee1a3387ee24a0be5324319b42238542e7a7847c2abd8039e3c4221f018b4c44c76db339b290c986fc78c96b60af1dc92793a4845e9cc30c8ef26a812aeefef30055a457197c2b039f010413f179271cf5a361cd962297388fdfd8c7a7e72c26bbc512c2fac273fa6d4d46fae3e3b1b9a1f748764b02009ea370a91138341012f9affb1839f017fd7b73d68ae2f2bd8a8d45f369c62d07a6c67e95373539921e58d89097d9d835b7f20239f3dd547aeec1c5ba3e81d599a12203b187d5671226fa28fae1f9d9201ee8cdfe0a687cfd9003f9222822654a3813a214de713d2abc05abe9f6c89019ca8c3c2b55ea02f7e11fa26700b08ed3dcd1672bf230f19120e459007a4215502c1323ad97a48b16c744cc32c39fd907c9e436eaa873ff892c914bc9c2efd71f24dd8d1f2200bcd7ac0780da8b10c3f3cf41511bf56a9c5dcf0e00e2fa19bb1b79f394ad924c5c57250728bd71abaa52e07d0fd7497b80fa8666dd8f143a30f19720f3d0d85eb140903deba3184414b8340f510a87522ce47f5ce8ce281bb3b1f79cd9e1ed8c2b421c03b076ff395c74fd0fb7e4b4a2b90bf2b37c490217264d2327b6c7ae527ef393cce45ec77171f91386dfab378549b0a1b47e01d7dd4ffc8e6ef0624bd597afad984ce31c3d64a274ce3bed8016eaa5f3e139ecf36ab6de44c2ba3ca1748b3a48d03d1ee80e0e252248284a53f58971705cd4af8fe5d26696e2bd245081cf3b9be1ddbfa33fa694d8b3eb4c8f9651ade8e8abfd6e48eb872f83eeb31df24e92eaacf924ec4ac591f220a91e3c0077f6980a4faf8c73eeb6b0d770a372472ae3771c1f29652f6749cbd72f2d443253020c59ce2436aee6c08c880bb81480d136b8b802e57032e6ece5898c54ef3fdbe28484b1db4349ca8bbc5b723e63c2722cf4183ddf74b35892299471d65d87a926e5974937e5e7a8a2ca6e114443fd7f6fec939c26e63ad5399c095075a6683ca7a07f7dbbb8da22bd7b91be7d56faf1446c78f690066f1b37c8bc3b4e9e5ee6109c197938f11ff587ef7521a00108d2e4600301b0499f18636c4a03621bf4e200dea9cfdff49ac67bda6a9e37e00e493f51cc7131bc5ba9ea2f6ead7403cc239a2e6f02731f87503f3c9e7556bec45cdec64a79b152b2f7f9fb29dd2d07b8151a6e8a4e186c17a2075ea7821883e03192c3431450ee363432f3e4d6fb5b74ebd9257ddf8c54d8e40d9faedc3d03992cc6401feee519f0e43f7c4090ffc3944be193d7ad8bb24a12cbd883a2b6bdd0f61ce626ec950667582468138c3e6f2ba128a528f55e5d033978bd0101d22d626ed6ee2583d16019f706377d055c82c35735b981907e94a1f7870cdc4f8e1c2bb941c463a332125bb64f33265694918af9a4f95bc5259c146114a892f417ce5fb032c2c90871b3355da237c096b6a0b25fd82825b7e4fb943e2522ce4bb3d8a2222347455e51a7ea4a4e79d20f8e4a56aca22f892a0413103dbb7a5b40b05cee8b0b626ff59a4735798652da99d69957298d34999a235ba04e5f5ca47c66210fff02ade207800e1707629925b60810504af861083b8c6ea0a6874ef501615a1ebb9671783fbfc58443e45369e4597edf1739b803947919eb4763c0443bd7dfcb31a00ac4c4182299021d8c76e2c931d5989c04e485f83d75697d54e0acbbc68f3925730dc46273887faf2a8929bc618540b9b9f3988cab84067753e0847032234ab9ece057b8f738877b3115ab3638c8c6d94ff17c8d40298a240bdfbcadb7ff1dccc3ee336b63c488f1d54bd52146a37e9de30b8cbea977bb7871ed0b56f4d1c4b73ba38b5d694864c12067c4c17e6290c6d0ac362337234f4798c9364e7cc9e25c870750322d4797e52f9f0bbcf007ae99ea1b09881f54eba9f84caaa5e22da1597e3f544d2b5b17478e0e634d3be9f33cfadb8659bd17a982b49152058d69c6f24fcbf68aab3548d173ba5b14031cb91e7e0997cfca29190abbe1b8e1d71a9854814a31433cea30cb8e720f7ecaeefd2fdac4fc08b598549a165774cc529e81755b6fabfdb0322c4955279e6e1ebaa7329f15b577620f02fe9be87a537cdc2a5b4ad539f7f0be3fc0f7e1326f52f57af8ab8ad322ef98bc465fe186e56a3ec60a617f0f8a261fd7154aba7686c7d3978814b71dc05c0a778f42497ce90ce07a2267130fe9739438929140a05321ebb052c53cbacf95802eb253fcc6d07a81df1bec6a33bbc92e36e78d29f717c630d288e128995a7f6b908ddd0ef116dc41ab54ca795ef992f3f9397656d26de7cff001c7a82de39dc50f82f4ab201dddd0f959f08a3fba6b196e1f39bfb6de87779b19fbd794c49874ff565aef38811b24a17ba6d5a4509f17e4045208493c9bfbadab8891d2db79459fa97c0bcfde394e585e09e95d0a7512e3fddb72f2f655548b090db6e2af4a0aa2c8a975c3f82688712f9a2ed92362819b2c6599951d2562cb34d3a086e7303acecb142cff24695cfbb3713f993aaa075b31dd807045bde5495642358fe31c73424e3f6159e99db6384ccd9a180d3983136f376fe20e6f72009a78052b7b8447933facef599f16d411817856ed02da91635a0a63c3509ed3fecec49b874cf75d6d585c786381b206cb3e6c5f0a300b7384450cc13a37dc3a688327a701c6056f6743745987c1825cc5dbf837c22c59054a2e0c376deabb50b8dcf3d454422c13dc6c95ed007ae547d7aee90e575dab357db7fb264d08adc9e91bfdd4969c801dd047b03ca3e2be17d375b22f0ad70f9339cb76f4d858e4bba62d5c9c56d2d1756b2a07bbd77159145a8a4276936968a29da6ad7580298d50597fda4c02d84eac3fd7f3acc19eb825e2a15d505d6b8fb3eb653f26d08f645a9cf542dd693645de1b856cdeabf310db79ce122602e926c832dba54212faff05cc18c2471a5d308817e0b95b752ca51397c4de5651660fc96b6ad18dbcac983717af280821a318fab236a4eb9030672bc71c64ba984b945ebe4e8e15585ff02d7bde4a64c181403dd3a998d03498551338382bfe4e8231418171812be6e2e03c69567f6d0014bca68fde7e8ebdb7842aa460450d5313775cf294fa1bbe9f36980e2fc16b86c29b1e2e74926c5fff3e932979d0c0d9463c97c08a5b915e683337a81331556518911a557e771605f9cc86f83b03a1df6d84b2211600f1afbf09905f8f265ad298b0bc88439fdc06097b706ec3cfd27247cd2f56df95b079e887d6a28de26a03c48b52d8a1032424d4a1f6ff6ed94e885b4d1b0dc4ab01f1b1bc50aa089aaf7c6b4834b88fa20ab273b880e04fe708230733af54c0b3c2d1b5d39f43780f0a79bdf20322b4b0c5299e770170994031a2c30ef87326517207b8b404ba5bf5c5774c73d9febbce1458af6282c1f3f51a80b1e27360562c59b852c057e8589db2f6db7b47237890606012eaf1d6a924cda4d34f465446f924b13e98d4ff4915f9240781df6deaf1887bf00e7ee9c496e9f368dd6a3a372c7b03b8ff1cb10dc5cdb2866cf7020ab282647d0a190a7e0ef8f52765a1e3e47ece6b21c1adad10596b8bdfc1b1f3b16e07beca817f36f4cc295395f34df2a66039f72acc7c42fafcaf5bbbeea250bae35f9a7c3575d704f4f07a5a5198be0bfc6e2cf4abe486223c751d23b1e21e9674f60f09235c1ba710ff94606ad117daeb7626432254ddb92a7ea642a0eebba473c8ca99b6164a5be174fcac18a30d8f2cc7e709ee6f83171de3af8a02343c0ac988376800fc1436492f4ca2ca7428d78468c07fdbe48f7a9f078260872681cc1cb226208dff7b882eee57ae8cad4df277d03a1b5567bdf60bfc8ae82c387d4777172d59ed14dc452603e2952b8fcfe3521e28550a8734c1e77733112254c2b013fe6f9acccb5becf1a23b1a42fbe0a5cf1f3efee24ba576c9b68f89fd9beda0babd8988ffd4984d5619605f902e4343f3d2a6faeae5a2ef0c170de30583445e42487a1021682b340116e7ce41dfab82564374cf4cc5b592e0568c4cae287927d64b919c32b740a1c27dc2e5d71d609548942107c732f6cf8d8418e0decc3472b5a710047f33506824b2dea2c6db13137c64e89ad7d4f885410cda8ab34852487ae3930bcdb8d0f39344221a2caa3173185e93c82abbdc1973d8ff5e652577d216faecaa235b858a3d6f2ed434b318373a75426d3fd5c04dd94e06c1efe79c988108c7e9cafde1f8478f4cb58fc2dfea8f7529859d0eb5bae6fff36905f767f3ebf63753e445fb7f53d1a3ff834bc59f11b5f2005fd1038c15ab1b47765263764d07fb174b7cafe4da2b1a742345a9c9705b0003b369970cb0f1a9f6fded584fa39b45cd3f920b10c92b5fa7ddf5b3019544cce2a94dc34c660a6cfa08a5ec342de5cd0dae41386585a2a82056363c9497d50702c204f1b010152123ce843c9a3f1137581ed536ed0d19ab614acb4026228252d80e0b0909fcaadeb0e29a38a0b243469da7b1653f149d66723b2240aa734ed53c0b69398a6fe956a7d1137b55a1cfe72bc8a99afc351dc4d70638d3892ad03bf610820b6f35a240557a3f47f63f1d0f5b9a25380d21418496cd03c6a0fa306aa790c578035d6dd8692e976f2ec0ec707736321e57d43e044e0ba87155f98dffba6d1bdf7bd9fcd130dfc1eae3c78f9a659ce2f602be4b5ef8b611d896ad7034752551f1720030d7527d7cc90fddb8076b790b9ace482a7233c977a2beaac56834b83c2d131665ae9296e88e1785a7e870e78d767666f781fcd274fa3ae70dc2689d620cf90b1ab60d032160480115b1c68017ae7fddeb3c0a3d4449e013fe9b4477c4f2a99f2886948506659023af8041b5198fffdea7a6026209aca4fc2b0e26d81cc58b198dcad845ce46581c9ad2ad93f2257bfb2a7646cb651fe179891e441d382ac559e2bcab58666a5a1aaab74ea966cb2fdfe070f7a645cbcc63df0337d7fc72158429915bbfd808ea4445611cc8074c54d4de79c0206d632aed9788d4f00605bb607349b5e75e552b1451ef3bd2514b8332ed50c7e7bd0fe9e993ce4a36b9991cc972a8dfff0f45ea1beaaf7269acf67fa2cd788c1fcc8e74a0b302435bae6a9d7544bff7c41bdf1fdc95fcc53d435cc686caea945201d2d7cc553c2f90740429e9b36e59e1fb2dfd758e252a5fddf255e9a9b91b92c47d5998bc72cdb271285077e5b93fcc2771d3d05d472c7259176c6c79fae885a14bcf2251aaf53159f9aeaf8e1c26089149fa12c537c554e0a1df110cac2a8bb64500dfc4c2d9d286865753f42c2961ca16d766f5b4d859123d4c2cbca3ed45bea8ec758edfe218562b2e02b5112e277c7a2ed364a9dce835dc9d8b29ca0712cc566e6d39bf582cf58db73df724186e50b5db8dcaa54ebeebd343cadaf455ac93dd33b05773000b1f08c7efe999c5f1d0343ecbb533a67679253774efa89bebd86998d0cbb11d347e6d7f67e5259e1a7416b7f47009ad81830bd5519aee5cd3d7e4b2a64fcd38f32c0d9699eff8eba8d47a0104cf8e7feec3f126acba5d33dd4354cb081deabf48af2fca5d837ba2947e17f6d8c7d1c877f8514008b114a19d79e9e2a7ccb07e159d70d8d26c77a3d6b4e51a417ecf8501b463118ad2f50e85ec8375bba586d71d68c44ccea62f56cd11247bf24393e6752b120dd5b9cb527c398ebc0d01732dc13337bde58963e7549b6dca3dc9e4a4878ee30461a6a3ed563423c46248c06e2245ce1ceedb581e533028f154722422b2a2c96d4e3840ab4f4e9999fa627eb1767c5f500f7271af146bb5416e62d78b03d176afafc314fae3f8459b52dbce3ffc1c9000171d49ed8dadfb0b859edc2d7280fd37ff589bc036f0085366766e2d91b498b2f43c9b6f6f91f881843010a2ef00b35ce3137362dbd11441f9312634ee3033dbc8fc617d5fc574eec1bbffb35ddcde37765f961c3d58d46a1d1110bc6fece2f1411f1ebf262f33e34d7fe94f2aa681afe0ac14e03b98138c846d9bea39f02a0c4cc5f34603947a9a9084b20696b9b28e136bba13310b24975b27387cc08fa159aa9be73213a8563c0d195f0ea7d2388cff703347436c8c8d8bb19f1d601747853df2f22468ea1e4fda73ecec7099ff59b01ba69d5b3fb303cb80c4f4c5ae4c85adca3ae29f09580c1c7acce4a8f7e7bf0ca79455b1b274e425c6c9fcb9da9f543e92e886984ad338e7c78b3c734271e023475a6e6b7687ca0dfe859fc92d1066771ca7915769b20c0310fb12d6675849c00c075b170070d742711a0a075ee025285562949f1025f877f1afbe7ec9b07a1b8979ef2ae3aab54e60be05f704469cfbd274e5fe7eb02a7027c3901c91dfaa7b94f25de73ceff71df8e9035d726384e5c345c9b97a41f1e4f042cc35e8b65817a5f5877d6d8f8341ada491445c2ceb0c87c5d52a43980ec5f7f96f7cd208a1e1cb3b91cf87b87e11781a8d5e81bd96aeede5949b634aefc8c12a9aced9d03ddcdbfd76804207503bbcd25fe85ae9345c2d04e7831f06e1685d56beebebdd0ab288fd2bcbb44d7ca672d1f1a6650d3b850d6de8062280477f4aafb39614b0db23d658648f16bc958949bdd279e834d7e1c30ed2305d527f15fcbd10b78e1464311756fe76b2d735030300e99842eb6e278a36ac9a5d47c0da2897bfa8c4736b0345bd0d3ff3ad008922c75f806fc5faf47ab665bff6d123da001b794cf2b9459eb6bf6805e511bf22c1c9a266fc20a29d2ad64f923786fe6475f8912354fea3dacd139b6eebc4bd758bde95e5b21c9a669fa7829fc81713a1a05139f7d7bc939cbb6a34a6e4a86501474a92d9033d9cb754eeea67f1af13c56f6c9921d8b7b0e6609bef516bc33331739e9b8d33ac1977771777994ba5f861c5d5bdf8fd671e8c715c31022a597f419ae48fd814ed2f0e28491524c206779cad96bef7ad0a4b88d92bd6a58601ed1f44cbfe5d6e056c35b9f6dce37621fbd93321752d99b4627d3c5510707e3c86fb2cc7ef915c68f3749ead574bd4a771a72f0ac61537ab2bfac91fddf385cbc836fa9b99724a82029f4dcf36f81d2f448abd944445229ad72c5855013a8da50ce9ee1261d9d2defe3074e2f722a90729c20fb55b4ff0d5d59b17dc02acc1e4ef7689524e2b72c689188a84ff68b43b59fb231e40177355cc119d757bc497370102402bbf64eb0cc7793eb2c849aeaf582783ee29f3ec1a74a7ae2650d687fa97127cd1c4d437b2480f21fd8af2bfa16c2765f10fa9f6df54bb292c926c3121d5deff820b0584b8a67d91038fc982cfc503c4b7c3b62ab351b4efb7607b20e5808bde8b2ff31c90e1b0fd65fd945c36d5ecb417b1550062505c595f63bd6ac994cfa72795f15414946a7acd41f0fc61166b2ef5e9260e198a0314be26e19336abcebf3569abb92d5df5d6d87255bd88e2b384e6b26ef57d492190b7405da1fe1d14b23fd65c44125ffde40f7081971c827f12e947150a3c64f86f9768e8ec90be14d5eaf8be46161589e520e25eb48a051628746062c2f080df0bb87546956991b1308507eae9ad0e9833f076da132710cf5b77475474e883d2c97bb7013b53952fbd36d9f0ee707578632522383a87a7fd9d123f85a49fe245119639f3a3e298a1f7c51de7c010c564fddf444cd3f2f74a4bba76ce87f42d2ff4138bde0f9cd404ddbc419540b45a58c8209b6456ad8040b7502e3eb5c7988e23be2aeeb8f811008b44794147eb331493083487fe97dda4c962d39f613192ec5afc38475c31d7ff9fda7b78f698866f8a0bc5da68c362bc1825568cab33bee61df5c7475fdbece555791089566d296736daff11dae9f94ee95abbd90353351ff61ae4bd4ce9697efd7a8d4bdca40573751427680c4629b8ea4a31b90ed8ac84393dd2219a1aaa3983d06ce796e50c7eb0be90b52577a188be044976230d53c37410777ce975595a76fa444f2485532be4482b96c53897638ceeb6e334d495e6d8ce05975616736b3fe1a156c48b484474abfabcf693e33feb2c207c87ae671ab027bc7dc97153ce35aecefd5e4214fda0aefb0bc41e020289d27112ed945a9e0228372856228965b46fe4578a347afa854c906fda59a9fbd6a8f651ce6cb6fc922ae8eed54ab5aad190c66ede88d724698963e24603c897f7f2656c7508454834ce5f6a4f967a56b9cfd3f66247481a416c67cc7748a7ef8132b59a0321d2964e488eb05033a13847184c5a5a47b01f5c8964791e50a1fcb9f449f7ea64b8c37d945e87d8fbe9a7b7c082d629e6f61a00bc61216db74d42bff406a255348e8b588409e064eaa57f1fd5c34301704eb787a40aba36952c0a12495ff2ad54229a4ba1ef41ad97b873c113cb8417010fc81cbaac32f39e01aacc7d34cbdde7ad2643ad1b6ab5786028f493cff7cc21c88269ac72d48c5340649183d339967225092c2f969cdafb0df1e0c68e384d8c285145fcbfb5b3448a223a1f84bc6db97fe37fd65b9a771cc5f82aaf1287beef94d94d6bfe79341b7335e4b971fa4db380f51fa65e9043f6af1c3a5c6a07c5d5098c461bb5dec5c2859c895ae0f97328918a75511be922e6f2932c5103cbd11398898d01f35bace933ddf35395ef58ff911a64cdfb18c10feb630c3a5f0868ce2b6424691ee001e3933d5b2d301ec6211c0f358fd4dd29203c6b3a57afe31458a7501f86efb2fc36fe62ea0b51d27476ae77ac1a8b5ed09f6b5c1bb96dbf04bf6cd37c29dfbbcd65d29ce682986a5977992bb9ed5d888c2cf71502cde1ae3c57e2a3fde3ca0468840673aeca4937a61069bc3573798d13201103ad67a70be4cc84bba8c0c761006126ec45d5ed1d8ac043f00cfe215eab3df5d4ef627cf95bee251d6a863f4de447a410433f9adea3db1bd778445e76e4b86020f14e2f337ba512938244073534e2768d1a4474b9b77ee15a4a4c345823f76a40924c0dc9560a24a10b8947e076cd21f22a546491c6cfafa986da23915429ae91832e296204d5a1cc20392abcf382df7e966f873892c7bb09f9f4896f8cc9800b365120cc28a426ba21dc60b1638f46505dfd4e1e445bdc8137b51f9a0914ff37d3048f9f31ba656173b974c9a18fe31215c910aa08cf4af3c087271ae1d53cb31613df1e156a9f10484e71792921994d0347328763ba6caed6d3628ece66fb313c54b39e94192cceb812da4362d7a6a696dabc14e84a70d84c7618ad738044de8250c523d75804750341f350c62115dba8462d42ec48fa725e7d70c574a36d8570234e7e62e44664283c9b2cc9afc49d5bdec6109c21ca7e6b230571b2340dc59de2099a3100dd11b1316f727386b7bf929f9aa550da8fc9ac441936f153d25ec60fde6fdcb6cffd9284ab5ae05f3169bb1ea9e5318d18d493f85a4fd080d86bc5b352ca3615b62fc6030b31fb75ae6027fffe1c21fd81214481fafce54ed76515a0743bd6b00ce05c32bdd7d6833a114784faecddd8080d6d033c3dea32fcf4860ef49242baa787b8c6e12013c8f65753caa0187588d8b4720d2b156b5e1e1a126f176d03bb9f72d4fbd81a28a447eb20815c96c5d1032a35000506867377199e0f86ef9b376732c7dd0a96f547c3ec09faafa8e52fd90ca2f83c935928a022a8bc476cd87d80c1a713e43ba2d8445951f13dbfe7394b27deb22f90cda303385263b0e462e7efb03fd1e274fbecb5c7447fa3e5eb917903608f6302505ad728e7078c18e7102ab19bdeb1e16a8018da6376f52b1a91f22bb8fac0afb2a379f1c1b109b4311f7f9d3830b8b0db680170cd2a30a96b19fa0e5cf310ce2ddd3d6e56f13bde7c44420a938884ff893ed2e98b8678f58b365e164ac41a03df3c8e00040c5502afb803bba0559b4884a80fe7d4aabacfbe1194ea993d90ce04a4093f63de5c37a0f5afdc0ca76637730b9c2c59f2f7f88dbd6a52629702337286aa3c4d0c0c721a44a963abd59886eeb5e25530fc9c4834c9f0bc0311eb7119fcbc649a2a1ddf72333bf02e8614c9ec6a7efc8dbe998d70438c7c188e6aede2e6b56c0634a5e31b76b8862fb2dacbc80c2a8574632dd5e33148f5bab693278b545c0531ae64ecc544c570ab125c0331a508777944a87ea4a200e0e58f4bddb6ca5029ac25278782b34058e6c20677574ffedba822e76891071abcf365a8b1adbca0142d38ff96c360e92e29d70624f65a06a1a0008ef90b2ee2f898e296eed482ab23f618ced7f816d114dea271d9aa04db9dcfadadf68bbba3156eddd1767eec427ccd2d0aa67c97357492592727f27cf26da5703c0b1f8f2403d20b72de42aac2d61d9aeb2457dff0131efdc307a496844e40fdc4844c8ade0a2458e7e822adf0b5dbe1c10f6ae51dd70af354d0f1d03fb1f128901f3221ec1aa060924e64e3e7724b1a40c72e6e5147b2637ee681d4ef13a5fd852bf548f0a7f5a6201cf15ec0f24ae76a44f14b6f055be352a8baa2387bf8e7dc329d2a67ef14e0e82810f2943d7649270f4478ecb0ec299c1f3852ad461a232f5affcd066cab78201dde47954698d29121567aa893c31116f7be7eb1991fa26030e1e42d890532aa383881d993bff17d27b311381608e5585276fe709eed7bf83d742709eb5d571d8f6219e166cc0c1151aceb1216ce2c6473bab0dd8419fcb9e940432fa50e66f9127a7c5f0075e003a154f0a41e8271e75ef404ee39202d9b04cf50f73b6a3a91bc84e3f0afe690f5cf8d227d58b08d2cc101a1b6bc9662eb34c684f9fe531d49ca34dc661add63ab7b24492a6d0dc87c18a584ee361422976100950ce1a6ce2681274ad2ebe859355ccba24658605f232b36ecfc589854cee812cfb987e349cac69c38861f7a57ec15fe04d4e28638a9532ea85f35e15b62881a0a374c214b9bf466f62d6e28025ca4c548bcc33bcf378c6b45b4ee7a415df74228426e47b4c51d3622433a5cb1a457e7a5192a5c88885a9145a28867e7d0ba5e9aed302a1c6c9d54203c0cd0c0809c8550d9ac76fc238e0f3834bc187a8856dbd77d0f772eb12dfa6c7cc201dd34f3334ac252345d9cf2f4b460f1db81f046b202377ceb4ab396504432362d6caeb8efee8185d9edbf7d4e381c7483919ce69ab9ec6f16496a414ebc1c630e74eb62d5bd6bbfcef64dade548a4614b592c47b0472830bd2f6b8aa9940c03cd0e2a9827fb740ae400b7f8fec2b1e022765e8cc31fcec253235bab251efa08933919e33aaa57492bb6730805cb2f7bcbf5e388afd237356e23b90419fa010a5ff3021fcb1002473ff8e780c9f00aa1ccadbcd002a424bb2e917b9d6eb5da46214a2eed29fde038dcdd42bfe581b0b25fa90809dc43b3d5da76ad3a085e4177f491a332d9803c1db67b6d8e6d5e5cc89bb0afe2c8ed940d611f0a372e29ca404cd7a5d279db718f6b8e25dc76145e8433e85d4714b1a2c2d84db9c163a30410337e5fa75bdf65efec7d710ae8970cb1ffb40faa57257ed7cd735384469f3a40fc66020d1f20705919fccfd0f382f4d237be305bd90afb664d76f1dacae8a0664a6219daffd5861d23f8b0393dc761e580f28fd504c7af65a4b9b51de57cf9d82429775e7fd800204911f5865ee02cca5ed815670eb84c24214c4e6e49c3a2c0079a8ea442ccf6186004e818699f9ba5174a7fed1a9c0174d2e69b4c897c06a98268d288f9c0e87b34742a35842fbd6aa388a9e91b479db158e7c54f5cd2edde9118a6460f06d132ced757c8d6a8d617ad522df6aa84123c5f8508f4b9ec226d7db8a4cc4ed852bad0c91493d55395486cc85842d47796313455095145fb1e6e9d6a68fbdd62dfb46042444c795d36f75f96f321edfd5104a95a7e1b89fa92f22dd3e795fcbce872801cc28bc6934c5be8ca86349d5ded1f823e712a617ee27137445a2e2b4d1629094517c1946172b4428cf2b3e712f02e49f87162f51d659b60bde8d0447e2503fa9524c084c8566b65c5e73f4e5a3cbdd96dedcf52c0d4bc441d8243404de685dbd1e946ada8d12e829d23ec4cd2a78bd65212d518cba5296301beca0e646d92cb5d16703e1929cc807694408f7dd011caa2d2f70cb618c8d80657095405797d736d45247d26262f493c38f36a290b2ef8a458b382e691a99f4a3d82b901d81a0305712cd0e8c62394e9899d3cdca0c69ad90f595540daa2f6ec3b3dc6a260589deb017aa92f74cfd9754d2eda0212ca5f871df53362d7a537281de1212913445083af7206d873025c7f566a01d2290d473978a2c613aa6babe91e75810061e06b622cde62fa56bfd5e412a1ef805b531f8fe0439aff86233e47f73a28c3523d8787a88f55a3231065442461589a694e8d5b7e05346bb1ba5cee5606159fec163073a0ae4a689645a27f482a5b68cd71335c75556e7fb3d239d93332866c2a0df6606d6295df392586649c087b7e305eb38f0191af993eb6a97ebc5b747c098354f83f4deaf1f7646f4430b8e5ebf296f5ac11542a2d8f66a494a9b5ad760e789acef594fd093c27ad68daf0ad40bd8d8d03e4b3a1df5329a150eed27642baeb9ec01e42e80e6c055e0c88a5f07f50780ad614ff3c005eb64f5b244acd95fc35b309162fe13451d53c8e085ae2e8dc46274d6fd8e764d5605c49c6e6f64bd82851d79823ab00e8556c0d92146f950f020116e0cadf8b755de0a9239045abfaf806e85954b10a5d5dbb25c8b8d2aa5e6e32257a17b827a36858e02319a5f07263591b01f78ff31be18fb7b0bec526f1acb5f814f22ac1be0b57655d610dbc3fceadc6d1fd2b1f402822de740b56eea2374f71ee733086baaa4170e50b4bf321b2c9b11c02f6d1b3eb70656373b4b85ef419b0741e23b9da3f8a268245121c5a7ac94310d7fc0d67a3ed0dacacfbc48a6678862e8f529a93ed0d4f718ffc9ec79d28d246f174b32c270630d34d080314a55aa54062e442786b72206877056eed99f26a66b9a6f607d181d0ee7fe4da08d3c8ae3f32b33970bb4465db7ae379ef299ac77d182233f7e5fe223df01bfcdc0f8f1f5e826cbe3be2a82bea1e5c56f967852a5a4ed873cbfc47ffc62f81549a65c0f6159aa7d0e13a88abe081d1ecfedb1eca54f29a467f93abb2437ae1b4dfe29b2e25c5f1bc6f504d5afe1f9a6c6ae880c6a9a73289cdd3629a11fea471342c6903a3da79757108e0c78b2ab8df3f8c4f6f2674870223881ad3f23c7f704d44070c03de2a04c8705e9bd873b0eb21df94288060a725956f481caa027ec2b4a89483dbc4225f6c972e372e8bebdb822a3d25d0d592b67c5c19604e7cd28e80402db30a6937eda99b57573f1476da3c4b569da68a780306df0b4b3afb6fbe4e250fb21795536839c6ae9718854d8118eb7acfca15e2b9e80cd8262c57aca97b3366d42893909eb77a010191518a6bb6f37053987437bdca3cb139b7067a2a3fe2c1295ab37ffcc49618bfa449e68b726270e4af4a3becd938c78c984d3dfaf60210a47d6e5aeb5bbe9942c481ab770f5e6ac093420434ff247ce8c12f596c419c6beb6fab68145072ed83b38df1ca3f6e9723a904a93e8402f058b9e99662008f69005de4eb62b6e3dc8a27f6680e74090f9859625905ef189cc5e76c3f0ad6585bb14422a2714eba9edaaba5e4ed881e7327d738039530d4c979446ff60b4e4d5e79a8ee2a113ec95613db0dfa3ea5348228fe02a8fbbedb4685f6f9775959bd8bdfb26797da9ff2cd153bfd40ec623b8bf2ede94fd1d537ee47919dc3bd4977353745d3f3386d2a69f80ccd27cb590dde6faf95ebbb1693a126ee99f78a42c5eac9848a423f3ce093be3cd92d77dd8dd60c24d85af4d1ac4bcf41ed7afff46bedbf795eb0fe3d168cfeed270e687e49f730af78eebf9d541f9287fae384a30cbb94032bc64c2702ae64f63a06764e8755ff0fd260accd9d5a6ff3af827301e8d17f4d1ee24a45dee33b1abf35de33caf0129c0f8dd134aa0e12391454509110a610f73ecefdf242195a9cba58f32f12009a6340d2fe413b007ebbf56bb5d05276d5ad68ebc7b2a4753f46b3a252dfa2e789869601a125a8144389196b752fed12b5f918b375b8acc1212042a99015e3f5f2338ca0a5766502eb2653074b717ce1be9d6ccf2264f21e725f38fa4776a01e172e128043f0593b4a80789100dcbf7cfa9971db166c1cd1b57a7ac9393d3450ae5382ba894a53cfe73cf527556c523885b066f186c7dc613e1baeb495eead409855b6263fd355ac474c7bc9a0b67dbdeb2fccd19c9c66b517a1bcc65d9a7a0b462363384acdcec2acbb615815aad46ae871c62ea1489cf8e2a35af5f2e05f8f7cbabce42848b6a0634ece0aa782cb15d4e2900063fa1d4c935bfc43b8c3cc5907468da69c9fff5b0a393beb0b72a93eba2d65172a7101f20c30931203a0a725fd1e8025616b505ca0f6310f103cc92e513eed35ccdd7499c3b72a8d3856a461552665dff56cd30251377a574d6010942c57a62542200b3e9030ac0676442881fffbcecc7b39816d88893c64143e57f4a5216c4d365793d522fc74743b7ab7152e3e0515b810c9db42b1c9d128c28535d85ee3daa8515151e710d158e07bf9d4cff16e3a993b00f68b9f375ccf4c4b9718b858534fc16fdea9acc81b7965ebdb4364da527c7f3f0f878b44a8db2da587912327eee7528495a2e7eec96855ee78360f7aef13ba0bef2e8239f9dba0b61e24aad3bfedf0a56d098eab66611379d4f146c270206db50910b9538433de73207f6c2478c0392d390f3b56459f1b8b53afb49affa1ce6badc86bbf9568f61d6be08dd7458fd8e601f548080f163ec8d94e6e753748d4856485222336d730e1f1f859ba232ad8b70703e43ddb3d303083dd23d31a68b5a2cfb0629eb0656dec7852aeb080209ecd695c083eeb2e64119b454e0f28159d6200656ac350c0f991f00da908f5f8bd4004bc43186723217a7b74b1202b7feae4b015bd034731dce9a04ef7975d2e5ca056f397a73a2eed8e0e59cefa9fe7f498e2cf1887a104dad6a4ccf6228a03f3c3c659112cdd9002e8b51b1ffa1a002a7276f445ed3f196de98fafb011c1da5a9b50f824eb33a37cc27b023c91fa20cb169c7f77bf771f36bfe3f2bc62adff5d90e0c85d6c72ff0c5baedad4adc151e6cc3f2e6b0d3909c199e280917f83afa2837c1d14541175a8b16622bd0ba237f09c01595353e33270ef89d4061c71ddb6f5261611fc9b74b96a56176ea91e76b0dd5e072245644d40311d3cb6f4175204107fa8ce269a1e1db03c89d3a8072df6bf6f8f6388766e70a7d3a7a819ba027bc520837f4a86e94c256d6f1f72bf0b2eefdb47610bf020197880e34ce4fd3684dd0abcb4dd62a32df602edb1c1e0ff5a2b94fa76d5eedbed4017b18c32819c7e5876f30fcb794fbd12c4ff9646f72eda9b3448dbe5044733fbbcd8a41e17fe964dff39ebecf26941f3ea8d63cbab7f2c11d9c5fe1659edbd31fba51d91c28ff9c905de0e794ccf7c33d9cb1a5eff6c9676ee713e94cf7c56fb3cb4be208b324efa55e351db448991d59392258f1871a0b8a9e5404314d1492d6b3195b1f790358e66bd8b8efc8fe7388f1ea31f229cc61bd1eef57a6d5bce66f460d016d0ead9133ac1bb93190a0c3054213838b54d22eb8875e6b50370be7c76c92d342218b9fd1732ffb4117479faff7bae7381ff66319a309e21d1f082c9b40d010b33f57dc2927cffd32e1df73aeb94193a5d90f53dddf54ba373dcbfdee7f3180ca33b287edc5ad3367a7b738d1bd0f0128f7af2bce0c1e46924ecf4dad2b05418d04935c6d5d5058f1501e9a62660adc5232aa55cb3a1fde649a9baf77d4df04fae9b725bace6b5733545d7fd81b21767cdff9ae3da55ff2d7fd2d7ccc3c70a5965af294644a16f8daa9e13a44650d341dc5730d24c8b1f84dc28af29458b61214db2095a3b3f2191a4ff0c6a0dd5a2acc289accc8fe5349acefbe7c0f2b15edeace0d3e11ce1e9ad2222c628f6370d16c853934940ad4f4904f7f5f659c24e74d8078fd5c9ac7cc623458cc39aa2b68ee999b7a6b9e18da6de4de91e6c526602623b69688c69559344f2ec9789fe1bff5b7aa077e150d5466bb48bd06415b31d70c7a3ec407d886eb9f74e6ff4d9cfcdf620454628e9016d6f44c53a8af2b57558ae61ce53ad61853af6d42c7be783b4a449a2fdbd6b5cf9d52d03e723d266d919046f52dda9713d6b74acd24266d70332dbec054a846d1a78b831185a8f934d738806b6812f13001be4201055cf0e2959521168cbdf4fd7ec0bedb68e0dbf923793b48370f3cd48bf2c1c9abf6607c142c237e8a429d448fdb9889fe160b6bfaf618bbcf6f5c51901f7cd7fb26869b1b4d9766719532402349bf29e9c548c88d9c3df1af12477fa99dfd008f9ef4023e3f0c507f27d1bf572cf5824917c52f23c79c099fb9c6eddcecb6aabc9d325d0fda92ee0b6ae4bfdf09efa92a5e6b2281327a9ab9e05b8a232b13c4f7954cbf93b8aff617d78e90bc46b9a3dbe6501301f6580c7cb625a404149fe61cf3da5d6c2b5023c62845387f7eb2a191a0b6e211c6e7f840584b7c0f3dfbc4f8eee30f22307438266e8b17121cbcbf6382f8f95687eff719860c8cad995cd583b879079ef16e7cee33e02b94785aef50e326a3ce5dd2fedfce10fa76e6f98e097464b83dff16afc39c000ac2ea07da7ae23e96857fc9f1748ba2afb5cc9c1f3ede264622071eb22b896dbed79f3e889f31a0274c006f2b2bf9386d7a3693f3f826d06eef3aaefbda9ed317e89554571a38f18fb3f2f2b78021edc0d1ca4189d43ced9ca5acadb420e83faf889e644cebe71f2bfdffc5ff83bdbfe566cea0156554d82ea617f62ff92f477caccf4b929c8932d91d25b16e1fcd9822094a59f65a40dc1593e95a70b84a6af1567b6cf7c9681d56b639cfe2f2b6f44cf38030a3b96e2505016498da017e0666753c6260e1288608198f48df9af598b9fa96f5e342a36e377336a033e286538ca17c659865a51585499963796e651f0a14e0ce15ac0ad29abae8f58755f8595fce2e8851037d2e6968d925a5f42e3250ade929274b485085a82cade0d9d1d4e95cf2365a87253678ca8ea834a85d1ee4645f26a49f7a04acdef554997090c327782804cdbbce72769660ba0eeb670fe8d8f06d9a239487a7289d7150066fb5e842406ef45251ec63b9bcd7ea92da4fc2e8b103c48e47f6de05faa43271cb116f5463643a0e177f49f0d1287d8c8822403c3b955af49e56351d47e5b0c601ba308f158694771306da45470796c8d6812dce4de86742d0e5fe53f678da948c4c0bb0027e3e64e74e658726cf2c3d0e5fa19b478053f1f4862e7f290a5229173a93efd3f5cf60ee089beda039f9ef07069ed62b4e6d347015453bcd9efadd02405dc372b0a1049cdec75faef9143294d01787ffc4dc0ec53df8e18a9d501838571c66985774ad098e0338babcf08cbb1d16ff1640134eaa47acb8663516ad6b9a0970002a8408240a818768ec24dd196f0a945f5558976f9b332a0e27e23599562ea808424f8a8f8ce8a0d3a245f1a0d064367b12600acfc4398aaa2d1bf04276d1715e95ba5ac6bf7a76e1c2774d035a6ef105ec8e10cabbddb1ff48b8d2cbb7f19cdeca9653d1fc307307ff6b48517f4de8659145afbbee75d1b74bdcaf5998d300de6ebab4575019a2d2289f528326b16a5f15894efd9db04fde2b4e52bb9ca7f1750f18e0bee02b805d35d1c9256199f4b7b9118635d240d939c43df02f4b0a6d8a2b05314b80d26202710c66333e29c7e962604eb29273dc3b0862554d10f68749f17850e800694b4a9a535f4304c4db605dd727b9cc87268e643f1e0a8ebcd5cb917d38d9d4eb706726d3dc6c931824b3f13a643498d060aac199e6b2a031b39acd349a6832d5ec2c6a440c86338da61a4d359a5d8d64466309a6730d661acdaec6aa2a71e7309bce87159118cd54eaaab5a5dc279bd58c39b783cdbc2ef7ce6496c03a956d221baf434693a98da61949379ba51a21abc14cb3894da699c9b646c96832d56ca2c1c406b3a5d1a84b6d1d6adbe96155248e6627e1d66a2df975a39935efe15013aee39da94c5399a6b24d9a8dd71583e95c839946734d665523cc692cc770a2c1449359d56855a56e1d67a4f3694564463794b9ea6d25f661b79a37e370b089d7e3d6a9cc5298e7329ac8d6eb90d36c62936966b28d6651635595db38d070c7ab2a488f6a2af5d5d442f4e39d5e86dcd3d9665e971b3399e66698c420999dd7adaad4d6a1b69d3eac868468b7124fadd6925f3736b3e5190f36f13acd1c6adaf57455bc4b221cd58235b70528b2eade5d6233807a53b042a4688468669d7536d2f89ba944f4e33141cf8d3399e5b04e6598c9d6eb93d16062835946d28d6655a3e43534d16862937906b2ad51f29a4c35986934b7c12c6904cc26538da61a4d359ba535423603d966134da69acda646ab5866db18e38e871591b9a842048c44811d8bd44f5afafdd5bbb0243f69bf4523aa601838eea1fa78a906274e048bb9bbb120700cfd16d99c70ab65b934d9e636c4a84ae4e24371f84709a3b1892690c38e9944a9f7fc159461289dceb464da7e4682c870dc8ce33db3c5d78f4db4c1ca0f07321e1dce642904a068e515aea1e2166e2927e73f3649b21e4e18b9c624eb0d90e80caede2da7b69f6e3faa6ccfe940e9bdaae0f01a8589a02576792493c7b9ede1f06832325616499e8e9682e03070c425301bf600159aeaf2b48d87df6b5d80c3a83734cc0287512f68db254afedd0c113838ff86233223e0b0ebdc23d9b80633b585ad6f97e1f038189cabec772d41e7388b7fbf6177695586c9a7eef57a2d75796d20e77b2d18cee89adfbf284ee3dd04b5867373f878dbe859610115a29c2d7747976fc06b414bfd65af09ac1b9a879271197c2b2f13e5fe31c42a3b34b4b9c7b61da08cfc5a749e4d584bd20cdca64f155c7d0b1e99c415dbbc2107f9b01523a3ed6340461a6a91a95730d8415b16d228ed806502903a4f5b2c7064814d61afda85d5d4960856e8e4e6001edc44a0ad6f5011448b01a211e8023a1b812e2220e58617bc8a61cc8abb0ecc6d752451d3d8d35485ec16bfa8d07acce075df493189d2407c8d3e3dae4b4282f0c9a1601c7be28ab184a946c5586a9563d188377a1d88d1ca3e030567e71009051654005af4d1e85455185c0859b1005642c69f4aae318d8218fab46bf6eef1e1981df67cbbe6fdab3cb18b432648267d01ec6634639873234034c42f29810c3f421c5c48a79470a42e20212a54055f754edf2eb5c7f10b71be6a5888978d61ee00bae651b1efeb7ecd40c0f5d5a2bc6d929b528a72784cfd37384da785d095b75f2d59bb96f774b725b66a2bd64635dfb01ffbd5ca2ad10a2deb8804703e56b2e894d2754751fcb5ee0d2cae9ee530b115f148e6443a8a6adf65fb33c7a88cc69f09f3630e20819842f7e42f1ad9522ac678733e448c0cfccc48a63ca542b8d6de8a5d903afc8b6c7e46592a2f44bc052750bca65a4e859a5c65b228c76b5f7ac94a76856d51db6baf9de176eb76fd070d1670dc7acabb6e0ee36b5153926802d185413a540faa9066307a75d63f844d2a51d79cb3f5adf37ba1a973072f2c1a3629b44bb682f52a9d766762220941f3cd21ef0411e044b758f0e9866adc079003676c01d18aa2c6db750b4636463c2d997063f48dc04138086a009880fadd6e316d46ce032d10c9249703ed4268a1b84c9d243ed64fb186fc07b8a48f16eb633a8453325d0e83fb8af60f804c10fba6d042f815ed6ee2a9a045f4d3e60ac282f4f1445c83f34abd96e6eea39145cc4d7c640a8ca25586d38b487832c2a275a897e0dc407401ef8173bc1ff0fb159823378c40e54685d85aa7ef836859627ec681c41dc14758fa147223f96b2461f2474780f32184d231847e7fb152d1482a35289453a2c32f9b31cc07c004f04a9c28b5d5c1c9fe2341f67f350842dddbae110edf632833fd0087a7d512a9a9bb7e2b91aa1fd3749e255c3f6037513e6c157420e6867bf52570098d04ade82a0087e2a3cdb8372d9f1aa0038620fd551255d7b648c8c8432e93c0b5045133fea0d098d9b522078a9dbe9a8f7dfba2b0ab22545c4255cd5d027b9d9dab55457d4488fe00e0f8cddb83b3e99462294c56b417ad5602286f98be30331dc88f648a30cc7804018a4dcd14c1c51d364f705ea18bbce038ce9a1fc82fe1eddb252e4f1e6b285baba2e0aef95b29a6222c63389d3e93c1573a350de09aa7cac106bc1354823a1441653f9595e23f9e1234f544efcda88670c89a05bbaf38258042da0130107ba5e153937f071268864367f8d741b824a7ab7fea1496f6cc728a2603e4b2e159706b8874dd8eb87bb104d916e97de2500705dd7a49a0f715daaaf126a89ea347a9fdb2db36c08349f1bcef535a300e4b9f91ab1668f6c7beea7d48e00f27ff3e54117c18e0d7a70acb007699ffa65727e88386e1fe20c35a65397c639d57c72c9f442bbde7f873e3c7f87e971f76820bd70fa7f28930c03e6f9fb3800d2478a54f7e7d4f0e5d6da7c638f77e1f3a7fac350dd7172c30a95ae281f9e402f6042d83299b7c09ef5036cdb09f4c43b7a7093b9f38eec5e7fa32b7ca0647976910fd4ed717eae60922da1a0f8a689c2b26d76f9c4a97fce8fa67b478e20a9e3fa3b0218decf6c643225627b089da5ba3c3b65d5fb2ad6e453cca37e2fa01dfc5c8475bf36293ecdb734f8a9d957f4a8d707d49ead1ac532321496e4fb22a676f3272f4065e17bf00553e66a59c039696d7df488752c09c1874684e1ed065f5b0fccd93ba8e1548e493d9f9409201e50ed2fe906cf49429fa779e2f1be645684d4b2b48799ee5264bff32b6c1427c9d993def571de3796ce7a58698b4126c69d402231f212e4b936e14bb8d543c5f32da21500f5b34e4c0bd5bc2f3404268a7e0f990434b83e7ab61b4abf6dd6617c783e7b18fe16f69069eafcab9ada95db77c083c2f1a75a84a3f1892243678dd9562c340a2dfcaef5eab89ef8d00e6eec7b9be51eac6a860c5b4470311af33dd1ba62a9701b165d06497b84cc14e9bfba8cf3a0a112bf852c7178cd47f64a6ca16a0821fb153a01d9e618993191ee0919eb09a634ab63e7a9929f8e7858bb419466fc9661ecc56efd5c69983796025f832f6d5546f2fa35d9112fcc63ccbef93ea636c6acc603f0a51827f86983690043fd0303714a6c3f5925bacc5a6f1a75d6e25c1c706e0fdc049bddc508979d237ea08177ba1cb73109486398b13c1c4957b61904c9f5c3d573ac65a5ca3a762c578311aff2cc56372291f7e6fa8d9dc7842128d7f5851044126cc8de77255e62dd0f80e2a06bca0db3e746e993c820432b7826ef5dce6a35d8517592666fcd2f33597c55394a9d8a675dca3b5f869a38e361df881f576e91c3a92f1e5f672dbaabbbaf1c521e393a55175955e5c06757d127c32d0e11113d9a8b1d627798c5f4b3df182766c3b8ff1c3691b57881d017b430b7a7ac58bec7c52ab5ba5228ce4d83a4dc7275780b8239ee319b28c9ad92871ae12dd9f18f1a2d855c65c3d19a343b65d64cbb4fa056ee2b980be19ed1efaa1058ba14a365782175ec3595b732dd31e8f78cb21342b2d92e41cd7ddca37044ffa46c8240d4f81f094c05cad9ba07a1cbf75f3932e5a1333783b1eecac48e84ac9fd3d3be2b177f6b91cbd684d703618faa7b2c2a45a5977653ac4e0da42cc17c7336c3220ec65f66d9226db974197c484be2c80d7151558cd8676e112fa151f6c4c56298f67c7013d93c7cf724293707c8567b5f15c11d627d444416d807ea567632b5c00d899c88b953b7ec6938bd0e71877d4e576a0dc38182dc6f0d0fb05a40d4b04888d9663b62e2c0640b3f7b597faadd96215159f9f8bc3eedc50a3154ec743ec60063272cfaf77a5e3143c62ecbd14c59e1f04ace79f034332578e82d101934dd441fae71bd4bdbe203ea13b72b71c6216435663e8d8ea28fd61c272865aef83028653a7fe42382a52d3db3adcd0e79d4abbb07ef5af582fa75dd5843cac562c3db07903551bb88f7aa6daf263ec48acd1a8a65d98868b2d37a80df34ed1505b4246010ecf9814c0d2c44d4e4816c4fcb75acf247dc9e32a8c48d3661c16cb5245ae4eb8320df75866a894ea352ec99062e965045304dd096bcef79ec3bb6d2629f2ca8dd6ed9452cd5650c678c66b04f735844ff31481a65e4ec64887e61de9b00cd10ecdfb081626ad81a26d45e41db5791259740810a23cddd671a567ab965e1b28f8e9564640e60da4a5bed87446e7af46b9eb6b04de87d9c1e9fa94fc87598b77682d1c90d62e4feb55a6415fb47cce60774d32c1ee7789c9fb405c59ad6b2e85daa9f254a09eda0e54b9f7660b8d9aec597e9bde5efc8ee8ef40f934c1e3e47a9d4e92bfb948be3d2e6b3a19dba8134b5edf80a625274c8d130721e0f412996ac8ab1c7ecf5486abc96137d9cab46ab3d3e261e136025b9b877a233d688416fd6d02b068ba321d39e3bc72c026d384a5b887d1a6b587226a33aac51cf6a72936ebafb47a0b7048a2a8bdfeb4833bf138ae574cef275ab8e931dd8ba174c3c8e75e8649f93fe9042e1ca3870b169219854f84a185d5b9aa2fef777858f496b5c873e8125c33ca748208339b4889a1dadeee49ac161fdad9193369fed0611b2f83df8a2192b41c951ceca153c351d9561678f6353831fe3fc8b2d20419cda50a2bbbc4035e518667194d3857238612d1e519083d539cf29fc5b9deb25e4ad9bdaeb0ef05689e8853546173f7d9f8be824e9a4651daf746c8639db6658485e95e63eef1d69a56ab3bf518276205265eb0399a6f02d0699832724396e60e668cbb8c29db4fa0967618d0101494dccc759823a4f37f4f4f0df2e3066a5b67b7d2f971db1ae8a88fe24ad0269038a956a041926d9f57ee175101dd71b40e01b995d9f1e8d7802b6021d34fd0bf028ecad36ede325ddd93084773e4482bb2ee0d65d6380c5b2e3558acb19cf8ac6f640e13d503e83cb847c591d4ebb88600b06cd0c4cec8de420f813aac6c99daf702de421382af60864e6fbebc6e56816f409f3e680ce43037f8a2349c3860d02fdc54515e079a31b822faa1004dc3000d899a24a946ceb1613117ba25f243495dc9898fdb6abec0005c3e2b5a82405cac6206cf609b6c1edf2599103fe20ee3c28c56d0b75febff0eae6c06d80a90ecbbd8198a0f7091f6bd021972ee5703c814524b267997af9ba1af5316459a8ae96c070f0f635a81465d3a8a71299ad97f5f7f64fc21360c5afd1230dac98529348a5852a1ccdec04164279fdcc30443b4f6aa9eabc0160315556cd006ef53a95bb52e2dc8fac53cda91be8b26de131e3a36100cab9c96ff115cfea7784bcba14b027aa8b455119ba203ffee6a03424cca1e3a140b614aba15c200a903d8803f092a6f89ea7dd58ada689d0e1968465edb529c6e9b882ead789d08061fb1b3df36391cec2512abded36d394828948c16331948251f1e86d4fb46c88cc0606ed22180e2b14b44147863e4f983d555ab6e40624ec45a9d7d39b1c70da300ba1dd7b55989896b272c85dd107a0290794d318a05f6dfef2d2d1a188ed916e483d9920bec070d2f2ba96d4293cb40d9fb862575cf8316b73f848257ee216c2b95f03a22dfed271e15abf1ec49c7cce74d93d5633d4d68054fd3e2a8d6f2ff35cfb600a233c4add8095aa327d2a677c4a0a6a2db85abc13c1215f44413595b1c6a7201030aa35b17bfd710351584a59b419dc679fe2ab574cededa0bb48791bcae36f37bc520e91e21b24050ed28646dd84be54ca2d454eeddf070a7f2aaf10748df13ae49f2fcd8d9837ee7eecc71f9272ecbfe3365215a4b0fa7cd0aa9a1710f2f418fa3698e0c1048a6d29650d2e48244af68e7b93993324dbd71e6938a4f24e332cea6907452d2240cacec7f0d56ace2129be68f92a622c2cb9cded668ed282a8dc10f9a22ff666e4a9aa2fba44f388fa28af344b1755e340a68bdf8271d893d32144e3e738248e0a480476887c4cf54f6044144db9431cf1a4c1a660d9365aab9252610286942a7680daf53df514ef70f1bdbaffe55686eced3d3bab63b2c6436692a9aacba9af63198845e728e6d8ce30ecb22ea89b7bd303214eddb761feb7f7dab69621047f350a7a9ae9c8bf2274c90a71d7ccce6dfc96cad038156e9c798daf07eb41a06dd26fc8272023ea795988b67082d956ddca6b7283f3ee75bb444df194b1a386aa60174040eb0b15d6725831e53717d1a696176c3a8b1524cff9121a9b8c4d442021da1901e64c4d445d515064db7bff6bac6b712891908fbe293bdd5fab963793bb7ae8b5408604e4807b399999fd5ee5b6c0c39a9b8c52d6f38eeeb7804817fa17fe80d4de6ce0921dab03a638338e89904874b3cf1c6ef803569fafd645f23dcaff49e873ebb44ffa61d6b68c8cfbf1ef8fe88ac8dd57b7364c40ac7aa3869d6cac217367afb493eeb6f2eb57a0264e7ab35ed10a6ede8a36238a398b276341fd8fc540aa31e4a098d37904e494b3ccaa3f248b889afef29127710aeea84195edea71324f85caa7ed0d9c069ebf5c902041909943b3077f33ef4a20875a0bc9c17cf252eb6ae2c7c1f33bd689cb64cab3eebd304fcc95aacd6e1095ab9ccbb216f75ca995d741990f13a945fbde80686aad18f33b704a39f25fe0efd10d2b6f82ffb9b4f666d7b9b6cb25d0f50e1a4cd031bb03a7959fc976a9c41daae512875c12173bd01c24a0c50168471d4884a6200705c22bab7a1adf9d9748f4cacb31cfc4bb23b82fb718addec977ab722dfa12e988b47384127ceac9ecb3ee366e4de6ba4365afcdbc3e954088db8c560dcc726cdbdf9e2128a31181beaf8ced6f3f2bba306e324fa7d028102ad791532d8fdb32844932f4d430debc9af10e629154a644138237b5850c0a48c8a6bc923a4efc073f150bc30633b248e82e00f00a91685d7730965fe7417e5082871ae3fd0a99d282dad0f74c7864bb2e2a4a2522a196c258c51c4189f57b012136c8c066b7de552750ecf1676eae3df3e4ba0cefa26d72f5d2e4fc882ef33659946b649d7b6c1b8e8ff12bd3c504d44ee842bd360dc6c6c5676a72f6771244cba741b16176cd43bb8d8710a3c26591f268b5bcb427ef7de1d1c5f3ddd0c593819ed96477432f5265d5b861a8b0eebb478c3e7c01d522a156a3c0b81b3db5484b4cc7cff185b59dc870a411a35b96f086c661a66663d93a80edcf451750f0972fe7d7140e73ad7e45cb613f9aad0adbdb75321afc02af8d2d4ab0cf35cc653d96a031dd955c239a6b0ee334d73591e2605a228a6a28835bacf35cd195b9e73400058aa8647153333661239a673461e19c7da585cbdd8f8d362a5f84fe3b27f70ba78b36a56dd7df3aae10f09d7d75dcfb78b2b9a0154bbfe57d3339a0ec9d54d09f246e4dcb385d0783e9106629f1229307c4fc4c0f46913778f62a812917bf92b50afbda0c7c86a1fb75e9df92c9ab47a7a45cae5c6b6ed51793a7103d787441c883e224220f6611075232e8f053e5d7e0a3f74ef67e908674652c4ee8319609a4849f4255103d797440dc4be245ae0f8989812762e97b5d2f72b5688fa663d07d73fbb90661f52ba371fdb762dfe0d7c45248f15fb861807c09ecd050e6326547e952431451112c40ca22ac21d27cc21ff2f6843886a7042bb8218d140fb6c8bf58ed004f6098586e901b9e3b14a4831ea05c03ca3a65504dff44a885570233292d61926aea505faffbe931a228b44cfcd63d5940f066ee80c09665fab5f0332398f7f3039848c3aeaab5d8d4be86eb5bb9c2b0929f0da52c220fe4e4d408fb4b346f784a46f51585ddd1fb7b149e0cc1c8e460103ce83aac676ac569c54ec725e2898a40117d3cfdff3e0119c7152ba4ece3dbda098bd3b1b6c5a30fbdec1a5659cb8102842d58bcfb00873b76f661f080405070f5ea0e060589a8a46febb21919daf2114e99f6f74a2de338acf7682498fe5cc5edf9a8cc35c2d790e8a9ef4996577b9b5f652b01707e2e740fc18884f548d5f20ab87330d2f20bf9e8331373df263936a878e9becb17c5672738be26bff1eb185ba8b4da27b48f656c4358d321e58a9062d5af64f7d6a0e67a9bb79c7ec53275f58861ad6f4e647dab9a411393403cbfb7a94ac6387027df74e4acebe26a6cc7b1d6a0ecdf400f85a7658237ab32cbb2941d1229fbc84b43f44a73b4a0b2c37b770366a4d63fe35c8be3c27555381c68de9c03ae055749a5ff4206d01931bf9d7bac0ddbee81101246dea28c8a6be258060ccaff1c1d03ac73a423c7b40224d7b65160e56dff87343a50e02e039edc2688863298026a4fe378bba93235e427617c1602094dd31c1d387cf7c7dcdab8780019df656525490da662c640368668cb9601a1434c19ff02e9e2998be1aa21d4e61c0f5919f3000b850b0e938dada51c6cdaf7e49f6cc92b01a3dd4fcef879cf1fe78d048024154cce0e41f6540c151932507dc8ad0eed9f041bae65b0da94902845e0409b391322906dd881b90f0183da3dcde787f203141f905be311e2ab9772b89008da3cac98ba33d4d7a9893eae83457ccee096a2d3c4c1abe4f77a295052d547a54e1229379692df2ba3e39da9f970946f42ca81fa8844b616e00e68d3e309a03e4eced817877c1a0645f701352b28157f0e5b5cc856b6d1342f2776e99378c460b5a95f6809cd93368218823cd426f5d4a5ca3cfe725c60fbddb038280611e242b82224524343c6d9ccdfad8326e3c51a0cd37ad6a238706a72ae40ce5c7942eb01815a428a607948b5a1d650bb2da53090f595327910c8fbe0b7f713df146f44614a7e5f003a48eedd439c483eb9669f07982ff4e406d7b0fb1e2b9035e214c3d8d07c150462478c81ed0c62455e0db71d60dd680f93b446e3a760f4c3ea70df3fb42c2a347c1aee01a7c062c785e750040988e137f94048f9796b545a9a840004a71e7969063f4e54371643e2bbcdb600a44cd8b27bc554275743238efda2f7500acfbcedba8af26a5eea3a0506ee88407dd3cfcfc421ae23da13e628972a14fd0284a3d0afe2c3b42f968256b564ddef8532188e03342f2f4c13d2d0f01541d045ed985c2103c10b0b44907300cc3300cc3300cc330003e8e46e83622d56be4cb94927440c40cb4670843ed4d607d56ec24a59452a688be920c402adac1eeeed608099d13c70fe60fbc92a9e69c676890d87bdb947b9c9ffc6f134533d867cbb532f754bde4b24506ef50332e57aeb2adc49b280a793c316867f6903575df9237b689a20883e5347f712bed55f6d4268a84bc00e653c5d65d5b7f3925c405cc3469fcc6ac7475b94d14851ee4455836d8227bf7c6cdf57fa28888b385cfb17ee9efb5d310c654434ff68749b1e437986a31c1e61842f55a5b415ee05b96ab693f9babe78c0d42bbdc5b2ab6e59c2353b989221e9b10a3b1e22095fc98ab7e6aa929e6d55e827c7cf92d541e555266305bb0dd0cb7f5c66deb54da44d18e1d3b3ca18e4a9016cf478c7e172051b492c181cb63cd319ff33a7cafbf8346146d42ec12454542ea81ae9246b89e73ad39edc6133b51a4d1cca0e3a9a052de7deeded76b49bad4c766c8d6b769eee0b4a6540753dc8d9e94bbd1fcb4fdd762fa72a9d8a2e93c475364470a829ce0070bfcb557983e69cb964d43a0956461e9d362fcd6630917e7268a567bd13ce8c32eb9792ac664abd917730fd5d31c81905755d19d73ef5b6ddf268aa228f4405c544d71f6621c3bba6b7e8ecb4b90fde4ed41c694531146c7cfdf398571356ffae53adbbd3d65ebe56e336708557c199b33e5f5984ab5d1c1eb2b26d89e5854af1f57d0f61f66da08ff5faeb689a22802126916d391eff9532a2363dcaabd0b58402f425ee097a182fd8eb177b106e1b7a6e06126e672ddaff51c45fc11124522400154ea93b5f4dab9a622afe8091ebad61aaf72d1add7760711f7b1f2423a9c4614bd900e7f4660828eafa243d80995ba621f1d25d0650bd953dd92da6d8a87331a5104a48d7d2fbdf7d2ea6cced8d96896d615b3f48da94f6d0df5eac1c7bebe3a26983651548439a9468bae8cb9c3d6d273f5740471d54db9b46c636bd5e018405a9be7ef7beb7d8c6ba388c3f90e238d85aa3a395dc8d8d3f81f204184eb8c256e2b32c7663c56c040a35f53db05f32977cea99ed15cd3d74db57726844ec80b7c3034b0927eb85ec5fe5d542a71747013451a6746a7eaaa6a7ba9c5f6e0268a54ca58bafb0e72f48e2a3de69d070119cdbd1b1fe355ed0ee3268a3acfd11079eff018c183e9526a4d5bbeb56a6da2a8870fef8ddddc8acdbb60fb4d1471f823e4d9858dc15abaeec6cdd5dcbedc4491b368dea548288a7614e9f088a2221d4e11f473c52ba3477fcfb9dd44d18ecf877cacf488227f16174f4711288a3e1f62d1c08aa6c312459f90470cefb00ce9bc687284019fa96330b6b7f92ce5268a567bd1845aa217604005555bb920632cb28b9b2802b51ecab97bfdbaa86c35a78d278abe3b6774c488a22802b978f68b1493fa94ad5cdcb46d63f46878f06097d8a9b5d9ca53841e02a8a02fe85453aa32e3eb0204efef604a09b256ac336e76a87a49618e0b88050c8e4b0bcb4a14b5bc747eec708d5b9d26d5852a5945d18e0ff852ad315b1b977fb7dcac246b667642e5bae2f2268a3ebc690f78c06d3ec7ae25f7be307513459f1048b3830d3652422f2d1a5889a24dec555b2b295ec620db4491e6a363534c6adb5b0932f8f8f5268a2ef062bb94a9d25ace59b5b889a2280ab5c428ca80536ff1bed467ebafbf3751f4ff8961b4a5ccb1a8e9a1bae4dc5aa208a409813c1b4de72302d6712d7e89ff5fadeb6fa26888e72344c74ad0b152be92a7cba77613451aefb0c6e35114453b78a80ce1347e28cdd5fa389b72b94cf5268a583a1f4f73a1aab61db27c6fa556cb3751a489a2952d1e0f8e94fa79e95bdbae8ebddb445114292f5c630ebe27b81a5b6d6be3c60e1dc9d245d7cf76e9367913459fef7491ea552f4ed88d61b76ea208e4ff204de88544d18e34a248d3e2f10e7f36bc025269f17834423e1a0d8e0e68402f1f8de6011cf0d734a61ce062035b3860030fd0000732f0000c4ce0020eb040042ac0d2d2e2d922c5021480c0042c208108b44c0002ff899a8f27c40fb0800362e8a501a9f98d26020c584d020b20e219129a80021ad39404e4d3d4e8bbc11ca811d261d98078938280d464e000dae269cd7f349a74a33175e977395432c0060a10f27808e0fc9f2d06a02200211b0840823800004d5a70818308b7500025351e8e4648874588100fc7012729261f7e4e6b2c50921720d10b8c6c91498d46a30911f90d6004b00a2dfa2086ccb770a7448b3eac210105e802c4e2c202c8e4400001c0e4a112a8e081211919c9cc4216b180c52b5cd18a55a82215a83885294a418a518822138a0c283e91098c011c00064c0e4888111a0400938749a0820706634292294103837906c06430995888c1d90406f4d151e413eabc17988e1a65700a80f9bc8418c47901bd1b1cd270463080c160708c5c00f3f984b1821570b1850b7f86745ea2a8146e080083a102123680c160d81062212c6f701818cc8805349e9221256f94b8b49470ba448d922d1971c02c302320c8684a5c31e43b2621884107052a2a449c658b50fc32a2343e6784e29791929292d241c10b5288388be685f86b242186309848c1f3811df139269d0fac7420a5f31c8dc6391e9229f8005362c6891f42204ff9c00752fa031223a5ec28d1c3c302f3eee96030180e60723c1f309894c83fbac10c32a58b0fa4e87821fe9f1fc0ff27044b10c4470f1e68f0e891b29242c47b747c7c421d35389c17319cbf780ee490e787733c63bc0b5888b019a03050421f8f8be7d351e3d3d8f48b191e4f10d0bf1821cf8f303c9e202efc0992c617eff981c18c58a064103958dac06030a00e0b19403e0f7af9bccb0b90966ec33f0c0ee7e50706339252818e670e9a9ff221960e4b7c303098110a3887858d09c433381c1ece616103831991000883198940e7256230231070160c66e401904548e7458c8ee7876330230ef8d07f9a47c61018cc48031603306f012d15a0aa087f3ed0c3f922dbd036541bab0dd6466bc3b5f1da90840ad680017d74681288e55b5842dce1fe373c29a04f71f17838a0941f5d7c0be787a470e43c6805184c86155c6c91d6c8355a9a882a5f8dc87b27699127c34791274304ce61d9f428c2e99cf179e1a011fa301a45dcf3c5378b670dd0e761cb9bf1112304e22f23c4a3c5d3796ff174d0e8f026c87f3c66b88f22eef922c4d2510383c9cc210c0e374b67d31f84036211f2657098a559fc6504e98d221d1e18ccc801b885412f64b0600e0a484091770383194100063372801ca10fbb6030230628c00801bec503240868a57f8d7c238ad21b3bb888a2cfbbbc8040234841cbb77634cbd37c792f2948bada4b0a54a97a81430e13e4c0803e3a409c126234fef3636030230388a2ccd0e10b203fcef011a4c70f3546a0698387199acc01da9045be017a01a53c063322000c0683632400180c468b932f401f1da19716e8cff20969e00b1d0c40083bc0ecc00b5670821b23c09091630d3ab8274980c1608280c104e1053b867cc7840b99e4746417fd6f7038dc0232830d2291f8c024304c50c219188c1a21c811840e981f48384211309822b0ecc060dc1800660598313e9003c8100ce63910b2743edfe9b0a47840533290d2794e4af94005523acf19e2e9e102ea5f03c4e2c203c4e2c2423a1c9716160c0663860872a4b1f83f219093000e18f77434208c0f0c2604eee9b07c42181317e440030a1f6211c000224db48133b800fae8e0b8b4b0689c8ed445ff1b45f8f3e1337880c160ce70c16030d11eec10ea7c1ac81085ff388765d3992b603e0472e35d3c4130984c252cf12e67787e64ccd0f1f1a868a185165a00a0c35fa4e8083da848e8c3e2fef1f47f98c72b748058f803c615a4d0041d803e3a42ef85bf1600e8783a9e22980c8f1c6ab00183c9106145c06846e0a08f0e1ac000f3021f608438046a4c3d4382bc1bccf9823fcf9f3018638c31b6d65a6badb596524a29a59452aaaaaaaaaa99999999994993264d9a3469d2a44993eeeeeeeeeebef7de7befbde79c73ce39e75c6badb5d65a6b8c31c618638cadb5d65a6bada594524a29a594aaaaaaaa6a666666664a29a594524ab9bbbbbbbbfbde7befbdf79e73ce39e79c73adb5d65a6bad31c618638c31b6d65a6badb596524a29a59452aaaaaaaaaa9999999999729f6b6c294d335a7c603018150c0653821c2020c3e7bd6896fe80d4f07cde0445bef0fc7816309cf3e261638887f35fbc1818cc08ca080030984c22cc48030dcf0f0c66448b77c313048319c1c18341de61000983bf78ce8b7b5a7a803e3f3a3c3e2fdd9e0e0f963758c0e8bca4fc879fc521833aef02cf27865e40de791163c8ffe07c88d379e102f41f21777cfce725f412432f9f97104cd9843e2c3085533a9da223a5c3299c17103f640e0f1da06ff1c008cac8498ec800232551b443488725f4f1401e293a3e25c30a4c06c3f10f171e13401f1d45a00604629750873b2c2d2c9f06b1784acb4be753402d201e92e219632410391c223e65053f5690c246ea503ab48b7ef7741745422c1f7649040883c978a213423a2cfe1fcfe7130687432cc67f5e9c41deef09b914f9a460a580b5140fbc97138038ffc67338fcc687c5b3c67f40210f0714f27080685c5c388a76f8bbb8b07c42a0a805c443563619d30fe869aa7142881cac0918d04787e669be3028f3614186e5055b68c20ede206305c1603a2c2f4258a01b199743b101f4d1e118a67c7c08f41dcde7432c9a96770179d1ff0687c3023f8f0648f3799728d2b8809ee64b4af4603018174c0e5d41bfc1e229d1d3f21fd0474788053e4d0de8f32e9cdf344be85b3621960f7b01e2c4193d3098cc26389f4f18ede1707860480e51018cc919263d72e4103a9f0f85d8c58b4f0804444887050462310383c9cca1488e6c80900406d047c726c42e5e1409251dd9c573b84121d04b1a29421e94b209f188220c26a389c6748c111c242398144d42c1603044121af94614090115e94fd4743c44b845e3d2f2d9685a5e3a1a0d116e21c22d10d07182017d74b0b8b0860520e8e17cc19d0f71773c3d7c441187180ce71fa3870f6ea0821c2a9400793eef028e730a28c4025322cb0684c9b081c1601c93c3072992528116e9700ae85b3edc820606933144cb877c74e00c188c165a6801804f3941ca6f8268a1851600c8d181313829cc2347070480c1e8f01c1c50040683510393830335e0707e088853545838464f0a912f9202fa2f748d0e8f5ce341fc9c4f63c8ffc8c1c52b7270d1050c464708f44284bc80527e134a010a4e80821f499334ba46d2244daed1201633fec500f516ac18c21fd5919d219e0fdc8078f3468f98803e3a4244de13ca50424887c5399e317c1009c3c5e3f9916f68a2a8a589803ecf020261469109402b30a838c991813f60401f1dde79379a618765d3dcd2c50f72900104cca7e361c981013268a1851600d0a185165a00808b2ebcc35d80d41b5e785874e800b5c7bdf02202b984429b2d52003a414a8b27047ae9a185165a002007064c80097598e5c36fa47cc7c3e1708f1d5c6c91b2e303295c88f1c5b7f08f2d5cb8a5871bede11083c12106238705409e1e29511a67a4914618fe92c1c4253098ccc70bd077c7f3a3a58974d105915017a1e770ba48d96030981c40c1122f180c66022a38c8a8605ee1810e64049083029ca4a3a58ed445c8e3f9a44c0015208d900ecb07d3874c8c382211433c900d428ce8c1c3e91422a17f119292e2e2f170d8d002003afc4129292116430b00e888291c66e11cb4304c4600980c0a30993030190a6030aac0602e81c16036981c5b38211621061d180cc60d88c1f8009306346081c1603038820001286030184de1408a0bb7c6399e940f7c20858b2d5cb85f5af0aee97fc30b50c7c3e205735ccf9676196cf65a5350edc6d46edb528a7dd3e772e84587402f1f2f30988c252a4109cc0905305c6cd1798e8ec87950ca0756529ca5a5c5f311c35f488705e4e1f408b97c378f7f69c1a7d17997337a0cf91f2e2d9f3140cff2f91712805cf81384430cc67f3c202e03047a218c46101087c33d40ee205da303981c0e1002c7e3c22d5194c3011e28f26e441f628e0bb778f1f1340008981c0d2003e3fcce8024605e7c88871353a26611e22983486812184ce6e3463f91209ed861e902946301a18e87a59fc3f1f402dac06030200e0b87de35ff31c702c0c0603cb1b300150c06a359800114400a0c06c308cce7ddf878866862f4e450001cb0800169722880071890025c301805b481c160303830391430460e052405340083c1e450000e4cc7930054605ebcf8d105873a6c8617dfece2858b27e406e8c1c891001a603018d7843c1c50028260523c21e72fde007d421ef0a4c096974f835e5c52de3d1d8d27d461d1380683c1603073c0603025c0e4400091a62375e11dfe603680c18c8430180c0b26c70146d18527767cb8f3f831e47f0cf91f390e3006116ec971000c6052720c4208a780dcf870cba63b0f533a2f9f140f8088b01951142465470a4887078a91a223052b20c266ace004ef2c293a405c468a0e2e548a84583a2f2d2d9ede4225e4f9e18387e787bfe747a8f340ba8d50e781387fc15f7058588c966ec3f90bef3c906669e14e1167100cb1f09090c703bb600f7cc79312e214508a0e10538c354f276588e7232405b48215f07f3a0c7acf108f4af4fcc60bf7d1f1748885fc4788104e49d1f1324200cc088e111c19558822870022337ab4d1051a66f468030d307680def37917605a8112000c069323004ed021a4c3c26101a574582211fcf0f1230d1e6cace141c313fafc900f775852369d0244c70a86783a2b5841a6742005f45941ca7fb80b7e1f9202dab091024a093d48041b212c63b873ce28428e9234603098317c6c403c46cb877c14f9843a61986072e0c8430e1c50c0602e9012e21490900e0b833e3a3404c0e44049c3043039508090128558fc3f9d127da046d3443e3a729c7800834989529c4344be0bfebc7088c86bf8f3c22c1fd2841ee41d0fd414e9d06b40ac0975fe0d7e0e069391442430980c243098cc231c81c1643e6ef46f7abc900f6f7aac4146cadb522fa65ae72a7e18dc2be8693165762da6f6e20286a6d64ae989a9c776c547f205b749a3c797cb31f716db449a8f47d383c40b6ddb42a5585ce836e623e9426356f851f152ca960bec5da6a6acb0314b9e245bf8fdf78ddb83fa2eeed8a1c68a27d4f1d148b4b096f98a892d746fc54c9b2822f21b922c744bbb31597ae2f794da4451147948b0c0edf0dfb94fa9edeadb44110948aee0cc2a2995c9713e746f13456e783c1b0dc7597c4062850639ba65497bb9a7eb3751a4f990a7c32455708d8c19ffc34d0f6f4042855fa8fccfab7fb5334d14ed2099c25385cd31b590a9c7cd48a4d04e1f32987a31c5dcaa4d14b9d11e0e3ca3870a88c3e1a1a2864a0f1537dac3f9e2df60a901491420b7f6924aa6a929f97348a0902027c5a0b3dbd5affb09693ddba62da333f5955840e204dd5cf7b496b67dac5913185bb51e3a6f4b29df32412937ffd4bc1c1f8c4eb2846c9c14a7d7b5e2ebc5de2051826b7e8d1d7bd9afc57c9224e4ea2e6c8fc1f4092a1224bc6fd264fed8da4e903b2447889f9afb539adb921383c408ec9ba67b49571384317d488a906ee1530da652cbd4df264988e0985b6c315ba5ceb9c24d14b57cc84714ede0b1b21246147138dc02248a5686900c21be05e1eb6b7ddfe25b0f891062c774ee98e69204012607e13fa8ac9d703d1220bc96ecbd08ffad37d54b0c243f48d86e2556da5ca766ba89a2efb1d2d26d44d14a060a243e60909972ac3742d7da0342d203c5565aed382e639e56084878e0d42a1dabfe559dabd46f9daa0dc90e56c617e3bbe47e13452d9e4f2cf209e221d181ca1c285ba9830407299372e4a4300a21b9c16377b1294cfaed9325890d56eae66ab56bde9aa7a402921ac0dd96ba59dcc62aa5b8898a7c425104848406ed5835f3e69d9a7b7c9a23b360f756c75ed159c204dd268a4664115d6a2eadf598b18ab14762e19bde7152cefe1c3f6da208e4d2e23bc0f0c1082c22d3a64edb5a4b23f76ea2a8c3a2f9107b60e41509b28cfebb38dba7e274c572e65c6b191f1c69c553d5959e133edff6768d11567872b91d99597525f65c85f72f83aa926afedef1074654f176a5fee5a59e55842b152f57a1223166e8ce145b8939669b28dad1d26dc49153c4d58db11893ad1a23a6f05faca9e4f9de29971a34520aed7fab29c74dc5e5cd138c904229a63ac21819857373f28828783fb9b596a6bae57ec7180985ba96de2af698c68d3b4640a1b2a974c51e336d987e13452118f9442696e992c16ece39d366878be7034614813a8d28ea0f18239e7889653bdcf592ba8bbf62c648271e53ecc5d7fa72fd326f767cc7c3e91145dff1705a04239c60ad53e4744d416e96d626dcdbb61c47f57af5addba031a2096fd0a598efcd623b4dde79792399e8dec7d22e983141766b1345239860d0ff57a3637775ad325718b94477aed7ccefb784cae79233fb77c72fc51d51b49249c248255a95a1cad4e75465e338cb8e1dcf711f9d33a208e486c7b3e1225552185bacb88c5082a136ed6c29b61417fa268a402196314626c1ef71b5ba065731f6ddf1b01409b1380b87335e1891847371e3c3fe7f754c45238c44625939f5963676832e1d249cb254ec18abf616ebc5f178e02352375f549dd63f5bb0c35001430505238ed0151ddc662f57b2ddfc9146e433f4758fb369cad518f1ef5d635fea1d919145acdfd8d46b2e2922b76963acbc8ce1a797085fea92bf75ac5f52f61fcfe7830857eb20dc55faacb23d0e877b0061e410aa5563ae53748ac595d210ae25568eb9c698a794520f952f54786cd1c648215427d7d77e459636464688b69e7a9f5ab6b52e45cf34616410aa8ab335fb7bce5525086e093af8986af82f3217884d5dab8db5c377b8acc808201473b9dfba1eebb3656a8cfc81251873c1f49dbdcc5d67c40ffe0f7f717782a991b9151f8cf401aadbd76f312d5b2c230b46f8907c416e75dbfa29d5898d913d3cdb149d39a74a63b60dc2881e9262c91c326e4df5736e240fcbe16a6de1aba78d7d5419c1435a4ba9055bca1eb9434aebbc1042e5f11b6be10fbb00e13162878efd5ea755f6aa7879c8481dd2a9a55a436d9c62b3025109b2c285113aac3aec659bef35662de790ad5f4c4eef8925a72d5f828cc8612d66a69fa233878f691cfa5954d9adadd4dd541c818327f6145f5d6a84ac8a8c91377c7ce6fb8ee5eef6bf1bbe2dafd6bc19d752d1dba0725f54ee793f5fd19f0d0955713ac66cdd29ef35ac772bc6d712c7151fb61adebb76f139c5981d2e4e4374aedfcef8d5c7d61a1a588ade78f537954c257589a21d1a151e513472867feae93a63dc292566668009ba7acfd1fddbd665884c955277ed2d53de16195c7b8eb1772a79e772fa91e28131b08eca1d4b95586af86b440c0b19538dbbdeda59522361d06c29ad8430d9ae3b1bc10818dec17cad998b13b77fc169c7c42b53e13a432f74abfab2b6945b4c9575215737a64a0c7b31c756182018e182b6f2f69bebadc9da6da2288ac2e831b205f6f9d826a7e758af672dace738adf59ebe4ecf75169eb5f8f85dbd79bbb45850cbeebd7ff64c79ea555151c96c61e40a31193b5b711f6c8fcb0abe98aea411f26aaff555e1f98b6dd357af3ad81c15dc2795567ce9dc7dfb3685d5e5a97745f5b912545278cfe45f069d6be2d65846a2c09edf9cb997d4e3ecf869b460040abab07dfbfb8bf1fda9208c3c41a9d475ea6d7b9fbecd0971adf5cb168cfa2d254f47d384a62f9b994afbec12a6c404f6e95fab66dc9437c89610637753ef3a29161d834a50ae1b5c4963cc5da93109fc5099c5e67ca56298c9072348608da9bde2a616dbba3e423ee60b978b6da58fcfc516628c18013a5daf6d7dfeae1857111a84eb1b6b11ba7b5031113c9ba7c5fd38576c0b0e61e9fe2ba76f0f7f3d09a1b7e9db5fcb31848c3d08ef7f35f72a2d7de80a8e00e13d57da2ca1bf7a17dbc80fd2696aceb2f55affef8df8e0b5bd8fafbfe22a5331477aa0d265d28ceba9d59aeb080f62da7df649a3effbf776005d548b757aca3eb9db0c467490188bae35854b73c1dd1c3cd570a98fa9525abd6c93c6080e32db26f8f4a1be4cfe0e22c1c80dd6c674d9e22616b9bf476ce0ef1e736ba776a406bf2da1726ab55eb79a8dd0e0476616ea65ea801a39974be8cf5a4a690324230bd710e6f2a7ef322976201c6462b176c1849f1accc44b6166729081053bf7de7af92f79ca74aff06dc94c3106ddf3d96fa268258ad8c8b8022e759b566b0b426ff1b5c235e7baf41e7cb7dc8d15ab1b7c95ce124c7f0e57c4c8ac226a3fb74becce9e3f5d4d15aa74a58eb8de534de13a7ecb9b3625c8a422954b2fb9f850a96270c1089241054b8a35973cd33fed6d3ec89cc2d599b6e4205b059f9b22adf7b530b9c57159b352ac5dcfeebc637b728d4911232fcec61ca7abe87414eb536bcbed73989f9413857aec9e4a0fb729f60c37666442d1206becc56ea62e41f7c0c8d420030a67cb712eb71d213b969b28ea3c47d3ff868647e6134e61aef69da24675779b77d168b8c878623db6b8aceb99a28beb85135ba6134b313ff306bd25d75edbac0c277ca1b307f57d5b7bfc1cc8423c65a480d853868be7471409f170565e6613dcf15b4cb78a69db8640402b9cd1c47be8dc4b8b19f27212c96462775f5f7dae6dfe7a41194caca8fee9b3c656f2f809662ea1dab12f5dc68c41c89825e06f6bda655e08d9be22994aa4a5d4634f1f3f5dac6993a1446b2b35656b5f57fe8a30c84c02e68aee59aa7a6e3ac6414612ec565faf7c915f834f11c944c239373ba6eaf75abb6da208544606126c3526c64e2d7eed3de86109927984bb6bda959a5dfbf13b027643d5e9b1b7d42d4b4cc834c2bd18e36adba07682f93234c83022ea2ac65e6c8d618bab3db1e323069945b88a09953ba59afba624838c22d8e3278ddc8fa16297a0228cc64b2611d19df733baff95ea590a3288d0750be15a8d957d933b044b713dd45e2bdfda4e9b1d63a480386535229e21415660c610c931f65e8b93a6b6ea856030c664b6dc79a764ac8d15313284f8676a2154fd71e57a998220275819233388d72a2d66af2de378604b1120fe1d353e9f01424610cb31a8f2b1f7cbe1c60f844215137c2c63544f1f02a2594ca92d6af3b8bfd21f98620d9debc6da268a3ca1ee91f143624fac9cc2979cafbd07993ef473edf12f5487ca39f9a0e073644935cde81eb63dbc4dceddfe5f4ba9cc327ad8d48f2d76e6e0ae6fdc4451260fef9c6d99aac5dfd1730d153256a24806193cb4c7942e64bb206c9d3606993ba4d44cd5b72a64f93cfe5019636508193bb8abf758eb56ed554a88854c1db87d4157c562ca7648c8d0614155de606ab9d22d18e7e07a976f6beee3eb5bcd848c1c5454f818a7a6ca55728a4366ae075bcce8567aac75908103b7f532fda556ffab9b83cc1b524a67f51e43b62dd3e120e386183d9ff67a2efc876b134530d38614d56a5e97363d55c9065de7b27de9f3c7d65c436bb3cf6df5bb52fb558352fa4b3153903fc1a4909049c3ae52e8cb62642e7a5b1934e8e6824bd36a69bf5badb02073869770db639e527f674a45423d326678e99c62e8e04b9f9ead0cfbd45a4c19efc295360ac99061419694ebdb5f4e9a1e903c64c690cbcaf1e2d46dbf559a41460c2931d7d754cbadd6341a8f100d0c326178ef39968e79714a71bd4d147186061930386705bf5564abf8a5f405d534b5e8608af14577eb85c45c257e6e172667879b281a41a60b2bb9c42af57d732fe420192ebc42c852f673ee317fdcf8e8cc165673ec768ca95d77ba9b281223a30566adacb104597b6f9a1864b2005535ab6bcfb5c64e45202a6ba890b1e2c266b870cbcb6061ad64de572eb2b752bf28eacc15d8b7ebd3d4d8bb612b1021192b44e7d8c7c62a1df237dcd1992ab8772d296b63e69c2d371de6a0f1eef91145ef9e4e1441cf0c151674cf358fbc5e4c2ca550b34bcb8a1b9929bcedd7b8655cbe18768b9f860e325268b5d0458e1b1d6b9774134563ac7c0106f4301e047a4de606992838676b4e553bd68ad53751b463c71863a80059f9e2593e41a2288a341fe295211928bcbf6fe91327e8ba5a7cc25b6d1df4f4fe5372869b28f29171427c295ddb06dfb5f8e2ca34616582b161b667aa5c7a9b288a1ecdca30e129d5992a5b39cb6df17cc4883cb38487ff363e9812d3a52ec507a348686594e0566154cf184bbb78dd7ddc209304a71e7cfbaab56debd7323ac820a1b5de4dcceb57f3c88f8b2f54786cb146e608b1d3cb0561736bcc45d8988ef1923102738e39a7eba718fadb4d1445d18e28ea48a32941a60830ade69d3425545013dcfc47f31cc84186701a5134843f5114820c11f82d17dd4775ee701bcc0cc1ade2a458594bb956f24d14b9911142741e2373f9e226dea5866482f0a052b9ca1ad9456d2044d50ab607953f2e4be907bb9e52092a276b49b77da0a0b255ca1fb76b756e13452fc8f480b9caed1657e4b85aa7508607ef9aeedab3be5cae0fdac1aad8762d5f0d5f79311d34762e9f5bcd31fbd5ce017b8ff54aca9135be8d9b28cae04099ba947a99bfb41cdd268a5e3237602ab6043f253b6faf6e13459f8c0d126f832e76534ab5e3b68922964c0df67d6201cba4120fbe7bddf69b53daae89bc779a604209b73cdfd5ba52cb37360c4c26d1da6d47ffe79dd1a14611e89948a2b71f73ae1b549ebd361230aaf35cdc3e2e5dcd0412aad3be4fb09b7b0b137a0b4c1ef1bf6fe3b6770cb27f367104afeda6d2d73697ecb99b344295e34a081d2ef556542a61acb49830c2d77a9c9ad37d5cbc6b88c9225c72bcda0c3b723a953e563cb1f3021345acdb4ca5bf1254297626223ea69d8ded33d8bc391344a86becf57bb8ef7cc5eca8981c42bde75e6b53aeac6d63268680c95e57b5b8203029842fd6543ed63457520fa8e3e9b1e3bda8884186192b454c08f1ab5d7cf12d4df90f07c11e5b4dece9a9d460f3268a4c04919c9a04629b023101846b6af207d5d4c40fed60f3c42d39c6d663af0fccbdae56b5e598196c3eac746d0f9cd8dbfb6ff0a5a5e232d1438bdcd8d3d7de521875f3f05eb2a88f537754c86a13450e4df01059f173073f2a4dab5b192677787dcdd4298fadda4abb89221498d8215d35e5a49ebbe4dcd31e98d4a1d54a8bfd3196b2356b3aa8c6b2e1c68dafd3b66732076f90596a4db99ead4c13393c4efd9ca9a65a52eb22194ce2a0a9fede3df37b6c39e6051338bcb7e9ed9a632d9bd21762059337c4a8a2fa660faeef98de8182891b228bc90be383dbe9f6a760d206b59e5b99be7555d97b483061434afb4bf58ad0a55dba225011436505266b58ac10ba773bf3fcd5a905266a782b366da9543f95fba6815f759d293b343463985cfbcd6e77db256c303943c6a6fccafc2d53eb9b19988bdabd2cbf2983bb9b28dac1c5162a2a51447209135769396f649d9b2802699e0919585befd55bf567bd4cc7f09462eef4a9d67befa724066ee7c49d5e77fc96d805266170eb5bb76557dd2cdf7f4cc0e0ea5f74f96ea9f4d63655265f48ee946b4a35b1a8ee1e0c4cbcb0e9e57376beee825b6571f1fbe7a7d21b177835536f77f1725576932de8e255ddf89fca4eb5995af864bc7499694b290bcd1daac82f6a6f83a9392658609f6dbd5d4ab517535711932ba4f596a6e7d8be6bca2c0c95202c30b182caf4307a4aaa9e0abe2a3806d5ea7bced472b8d60b4ca8a0ed5353d09b73524a9bc9145e75a3b315dd27cce82e3091c2ae6faca931c1cf5e8a0726516055f57cfa3cb2f8c96da2de8309141e378cdeaa6a717ac99e109f335edc1eaee811ae89133ad5b5df7fc99a35e7367b306942beb49c3fd89ffffa4b0c13263c4df59e59d92f9576f8305902c3a6b031b53ac557fe4c94f05aedf2b492bad7a76ab3c3a5c57d8c619204a6a9bdd5b6cee6b87a1345f13f9a2f5478ace80c4c90e0fca5fcd41a9dfbc7bf86c91114634dc504d9e14625f4f94d87d80c95153e9818a1b152ec52bb75aa186bfe841145fc79354c8a005f6aeef9f6f341e69a0911d45aed3d2708a127a7351942ba6aa9ad5c63fd26844f50b9ef67e7ee1973932068531320a4be864e9f8ad0933b37f9c172ceabad8dcdb6b1b83630f1415bb0754bbf3a5bdb972830e981bbdbd6079d734bc5e8b84718263c50ebf2638afc8ef5a9ef40b5c4bc2d96ba2c3d5c263a788f9fb9d4e0c37fe6bb127a11445183585a3e263950ace9145c8a6dd2f6d80e4c70001b5cca55b24ccd1e7b931b6cfc57fd2e2a756db96da04cd737db4caddd62a720c809343002931a387b4d29e3ca74aad79bd0601d4bb9d0972964ff340b5f4b5fbd1535b5d7b6b250ca786584ce8fb3a58f0583995ac16eb01d36776ba828192a49060726a10416ceacf562a758e373fe5ee18ae3cb18576aaaa37bdc394325c80a911257a48edd5a3ab66ba3ba7758f8e3542869c5fad432356498ccb6a584151adb7ff15ae87aedef2ada45f6ed234c1d5b7cd18b1255e47bda91bfadee4beda958ec5aead49fca616ba30415eed37bcddba3c6b6bca7e8ee045dbe7566319513c2468929567c19d54bfdee70a9188627767c84401e34362116365250528a7d9f22c3159f6a8fd57d09293af5b77793ad2a6e8988925134e51bfba9cdd79b8c6da2684b44019fab67f12967fd7425a168691f26a7f35ba5d4822259e3b8fae18aa9d57b9b28e270b84b50f209e6ad92bd8d0aaa74aa4e28f184ee8a8ea147c576350d56444927da6e64d85654cfd25aae459e0c15cd224f864a2ea1841390dd6bb91cc20e42c926de6b2e6e0ef3c56cc53651f46b9468221b3e4bb62d1b6370f94a260b2599706efd9363ef33be5bab0413afd54bda4e755bd5cb4a2eb1ae0ed3e37c8e8ad90e21259660758fdbde277dc65eda449146d351830725954898cd537de54bd5c594e07d56ab9b6942d5f1954c22bad4cdf7d6585fe97389241c7bf0a9672baa33542e8a362591788ddb53cfeeddc5579a124844c79e53e374cadd7bed11ea1e4ceab6d99dfab5ef05488923be1ba7dad6fc8c91ed094a1af15873497ddb66eecd200a4a18d19e3fb77fda185bc228839245787cb0ddcbf7a0e3564911c9e5b3ee055d7b2afdb5a024111a797b41c5a93d214c2a284144821b3941951f5f6ddb941ca27fadd5dbf9fa1efc348467c756ebd3abffa55d08e50c9733a5362a7de708a12dc276abd4595b963e88b42fe95affd8337bb95f22087ecfb554cdc5b639b85c4a02111d3eddec9862375c0a1051c5cf85cbdcac35ffa12573d9cb626cbd92323f30c55eadb84f5dafc4928c923ec01437d94a4f8f2d6cca87e60fbacdc76f59622cf7a052ae7a8b616ceeba2d304af4d0e0ba6fa95e6b83aeb7240f104676e955a1376b2fc1c362ed1e7f2f5bb15d331994dc21b6b7364576a6d9dc8e966ec33b0fa48d123b747c9a5873b5fee9eb4aea00d736cf4d6975e1b3de44519110688c123ac4f6fd607b7f6d93addb445119257388d029d4f858dba4cf6594c881d7bfba6db195a17b2a89c32ad70aa6570c5df53043a5874a9015d00b4ae0c0146cf8548acabadc5cc91b767ddcf7fc2d5431260e4adcc09efbda65adffd3ebff4f14ed2869836bef9c6a151b2784ad242861434ccf89e9673e2fb7dc843eff46914f08f4dde1b1f2f928d228a1640d6c1fabdf5fae697c7e0d104ad4c01442f6bfa9dabeadcde8a0240d8ee9fbc6dcbda7da8fa230a2e88c1234b8f7fde59a712de7903751e401a3e40c2fbe8d7071fae5971634437c1b753de7d8297ced32c0a496abdf8df0d7d3e5628b500919182eee5d0e79bde6bb638849e1ba6c4d23b37a312c6c65d98c3d6dbbda0b83b3624b257cd1b9d27660e86da9b8656f3ff8fe0bccf6332d779d9c5f635e48cf14a7e7e3fef70c5d4aba908a25b81dd9632ffd934a2607255c70acbbde35ff2fcea461a8f85809755e3640dc28d9c2828c5f6ba971470b9ba90c7eb2ecc6cef5268ac628c982da4c2ce866ea48404aaec0d20a6b33757c515285e7da99ea55fd1a64ad9b28dad1a3840aa962bb63e9d2e6b37b9a42b3664fd563aaf1fb16bc1452537fc5ad9fa9bfb6a3240a693375b85102857d993a4c50f284dc9574e34b97e9d62a71827b993a5650d2046dae652f3f6596de3f26b497a9a38d9225e8cb2c5102bbc552fc14156e2ec79b280241491238f17a53ebbd3a27f82548482929de4ead524aea6d14698f922324b67eb5f4e5aa29075b192546587115c6df774cd3bfb589a21684814614b9b4741a2545584ef7a382aa5372c9d82821c2a67bfe58db5aaad1c5922124f5db49555ced9c35a1171750084a8490bcc17c1fa1fa7e29b52408eef96a7eaaf97ef4fd122034f71c776aee957a758848185154f203568f652a5bb52daa7658362d253e60f175abf67abde944d10e31547cacb8b0192b9b921ef03aa838c55cafa9d3f30981de79c0204c4efeded3a734c24d147558608ba7b564074c394f769ff6339fb64d14116189af4407ab396f9a988a9129764646490e549b8abdfe9055640571e0dcc5fd94d2fd729e705372035d9beb316d2bb375471b2cb8d652a8cd1764198318fce705e4e1f40b5e505203962f3a7f8ac54ff8ef7d3c9aefb070ce28a1c17a0af6d27eb039c6b091cc02bad878e173fa52fddb46f324b2d06da5acb96aed63afe509694862919c7c6552e93973ddd4192bb088ee1a33bea78f70750559093d900d88c788a22579c5364fcee8dc2f1753bd2b1ae76a56da5464b6526e58c22069c5e2e4059bbf5af5ec37cd1d91b0c2a9f4526a0657eb2ab36607c92afe41e74aff9d52ca5e7c964f902024aa68ef625b06d35bf8963515ec39266e0d9dfbb3ff104f8f28628304159aeb937773b9dca5054fd12dae8d1b332dcd77ba638c9577cf8f151253a427f519795f99717b9b2f484aa1b059bb7543b6207cbc71d1908231de7c2deefb526ae1268a5c5e343b48a052c6ca2319456becbf367e541036e73c21cd06f4e25206892874974bf7dfac39c76ef9200945b3550efabec6d492b9c82754e413e40324a0588e5b959b32e6d8df1d7ec3398a76f470a33904e4a32101c9276263a94e2557a85c5f148156d020f1442afb55f58c75fe7bf241d209e63077991374e5d4b20d18249c70965cba14d341e79eeb26d4e1e635d220d9c4e62ae8bae0c3f64f49a2895e09c2077fa54d6a9f6f4832b1fd2a61f274d6a0f2b589a21d2bef9e1f2820c184bf8cefe983bd6cb1676b905c8225d814ababb204bf1439f97a0a55537a9b7e172090a4124d17bfed8d8ef1c24c9458ed854b694a6590f5834f32897550577cd7369b5a4d37249248c59e94dd7b4ca57208c49c0e0a4822d1d25b46f5ebce1eb7dc4491c63bcc614d14ede85fe347e7430289b4d84bea71c116dd727013453b80fc5801c9233c1732e5de08d966fe4613f93951b463a5df3d3d569ac4111b97f256ab3fe34bca5e5af0608441d208159d8b2f31d6542af5be892296963256422f667c01060f1246fc7bdee02adf969cad902c02aeea5b51197c86ac4907248a68bd315f4bfef129a69f88ff57ecdecc2d86dfda0d4810c118a7862f6e5bed176b8768fe14dbf4c98bd73a67085e6d733fc5b59eecba10ce75d95d5bb19829324228b79cc7cdd6ed1c32e8423288e5d8ab56ec14b7a5f70491167e3a5cc7eb252b0c0454cfa9eaaf860d26b88050c92ebe8def61fc8ef10fed2abed62cbe8bbc3445a0a608c7450c123f6c3a74d8e9e07a50bd8b20c81b247dd0b75247529592fd41959c42a8f8f09c8230ae9670ed01b696625be8528b49a3eaf0737a84402f60a841a28707b93765cbe40c72ea3cbcca8fda6f7f39c522f3a11264c5c7bf81460b8b10123cc4d5a71a3b6b7dc995d314f9106133548a3c192a3d20b98366466e09265cde567c7650dc7e25852f7d72765787c42a294f4e4f3965af48e800f5615bda5e7d658473e0674c3d536b2ebac7e6405e83440e2c97238983eaf55121cb981adbf1362081c3da67ca16bb053751b4a3484751919e03c91ba07b0affc1c49283a97da3f98f9a0fbdb8e1314d9ececedbb7a4e2268afee36202923644a80fdf5ad7ed0ad762832ffcfeb6afc5067ff1268a8abc1b1a176ed1b8b019282059034cce5b53ec1c8bce4c137a21a1174124510353ce56bdccdb6bbe94240dee0c972e842cba171fa3416362bec9d731abfe5d790ee429909c61318f4e5354bdacaa9c8a0a87c33d5456a22803051233b486ca92a6836a47e70c15efb090a1a2b2f22f1c8e22169094e1694b2931d85ac6868a3751c49f1091df90906155cb57199ffe3b0c48c6902ea67708f3f9636e6e13454048c4f001ac093d87c32e32c02186d6eb97aff6dc52b159ce004718a0621f3d39832bb3337180e145a69a5ebfb478791fc717983a77bc12f2a697a0c2e1857f712dd8e925670bb672028e2eb047e6db5c3e97f293e2425aedeb89bdc656c5c89e80630b51597cb9fbdb2bed6b08871652bad318dff97aedf85970ed1753adf5eae64fc68105fd6c6fff98ba1be3d6068e2bbc9494bf6a7197b2c36805c7d499277df95a6471abb09eb2bfd5c935c6342e2af86275a862528b1ba7378557c5e95b74e913ff4329c44d972073ecc595186e14e283cf1cba4eef65f385030a69d9a6b3c8da328b099fb0bef177e9ee7b9d543bc1a9e7f4dfb58eea527c0e90161c4d60fc98a96abd69a5859109fa726953e59141852e2da1612bee860a55ebb45a09cc71b3d818272f4e674978cf5ededafa179d7abe89221c48f0ce4e67aa14b2e6a21f2159bfcf954a3d6dec128711a0c6089d62efd2b5fbab018e22b8bfa6659fee5efafc8c0d7010613daf77ec5dbaa90eba816308716932185957b2f40cd7c02104e7a8dc0b3ee65031a75c6c8123081f3bb16d29a6469598e200827b0ed7257eb5998a2d3670fcc0534c0a2e16db1282c307cac16eeeff17b6b5e0d38081a307cce5dae5adbf9a21f346e1e041c74d2fbac4967e721c3b68e6bd0955d376ed3874c01c3be8feb22d15d9b21c70d475a99a2b6ef5bae1c0716aaf0bdd36d5ea15c70d7cd7be64d689557ea60d5ef98a1ed37ff36a8f3722c05103ff7616972e65b7e91c070d749533866e5ddca5423edfd2019459aca5cab91693638b1b2659acb5ae1be346d7967a79002516ef3d86cede982e747e1a961d2aeec3440a28b050adefb1c654a6dc065d8d1073c488a2ce8742cc8928af6069637e7e4a4771c54a9f71d92a5effda828a3c1928ade85d17d383dcb0a35acc8a5efa31b9eff7a76df52a9ea9fc86ff51bd97dea982c1d67abde7d84b903d15dabffe585733aaa7a282b976173ff3d742c7f114ec3dc75473a5fc6b7544314546dee7cbbd46e5e082a5600c3e4fd8a2b654e6440ae8f99996e256ad97c55130f65683f1c1f41659b6289ac7f8ccbdb73e5de9a9684081120afff8bad33f4e5fbb52115040d14a7d757a9996cb750be513cd6353c54931669bbf9ef8758adffbf7f1c1b81e4a275684d9eaca51b9b2549b28d2688a7c426aa07082fdbd86eede1deabef7036513eb93366dfa324696de6fa2084513eb99bfd489df7a4fb58792097d0db94198ce71629c3f40c184f26351177e84deeb7b89650d17cc8eb039a798b2447a0921b3869bbd3c55255cfaca5cc919d7624e5128e17a1deb822aadbae82268122b694316733f39b6842892502a3dd5a733871209e7b24162b7b98b0bae4d288f70cb5a72c68d2d05b3571b288ec86556c7295b3d638c9b28f2004a23f2a553acfd99a95b454624b8c94abda87ca9a7b808e7fc76ca60abfd983a0c288ae886b141951a73afed59221c3377db5fd0456e0b0511be94fa2b77fb5053bbc1a14334649a60e7ef7fbbae211c3e6b70b115539593ff8d5f03a5101d5d7ac8e2861b2884684ec50e2a8db1a96c6c13621962029441643a4f8957f266aaa85004a1de60335dd8caed226f5002a16af132e7add5530ed90e5000c1365d31e4e4dcb98b9900e50f6b216bdc9e2e061946df441119287e808a2dd6899d99f3adef0367544fb5c60f2a7498368dc287c42d26f7147bce56ebcf7338ec06ca1e78f7a96fca30695abe9b2802a1e8211bab834a415d4d8dbd3c3896ad235bad29e61edb11451e62e14f9055a0e0a125cd3bb0a4764849ebd0960e6be7d0f65b62e939b7a1a69643dbe689ad5a8fd13d8e433f4b085b62f0bdfaa74c38244d08e3aeaa758e23a7f40677be78f313b31bba7bd37ad53c3274e76dd8c8f9ed13dcc49e774361c3ff7aef698c0b3633ef1a74e536e65cb8db6a5b0f1435b06d8939bd8d8a9286cff7ca615c4ed9546c1434fc47550679bd776ca9433943534feee14266a7da7a33a84f5dadeb3cb2f4944229c3a77f9ae042e6aefbd9f311a305286480faba6d7a0cb6179b790cccefbda7726fe3abff4d14251431b4f61c6ca117331c4a186054f571b1d716be6b06eab070a8a50a286048e7b8a1be8dd177b9d6c2b201bdf182178c81f20565ece3aa5587ae2d535e700bbea41474b10baa3197525af1ad3ec88f0beec55febccf5b9b732a16c81a56de95e5bca35d9198a169e52d5624bef8502942cbc4bbfb235e69657db7d41c182ba541de90ac9a5a258a1b554942aac968a42057eccfe2073a9525b0637285388b15d4ac990a556f0b5145edcf4abb2a9a77ace51c8558d358349a1c6c4110ae979f26ab34eea8bad273cc594dbe208d3ca4c0ec5091f593233c8dbe2634d284d804a63775aaa61ba57cf84b7b145d7aabdb7d98e2dc15531a7d4c3f6cc18471425b4f6bc9333e1fff3fc24b0b49ab2b4defc9a3a12329dcb7dab258d9cf408f0a9fd18e353378253ca1c37f83ebd732f42abc5e2720a99b287311181c1f66f9f9abfbe5f7401ca10d81b3e5cedf145d10b5084b01446a5fc9e9ddfa3eab090915280120498ab7c73bdbf810284d7dcb45df27e173dd3517ed0228c2b25f5c7c956e247f181bfb79862fddc3667fc1eacf6c73caea8363f61a3008507ea1db3774155ca5623ca0e544b1d64af5afd2d26fd5fb6283970c59c73c6656b2db6fe050507cfe562f16d52d7675e941ba47dadd95bdb554abd2836d0c5f40b941ae4629a2834d0a5ea2547a63ca66c6e164f77d3fd6bd9565c31819cc862f5bde88a331b47a89ec6492cdac3cf9750f91fdc7eb050ea1836a795c9caa97d45778b2fbdd5cfa1e0c415afc1f4b7d1fb855ecc68e3a4150faea4da27a8d237d81a2b7c53c16fef97c1c92a14b64db8586aa6d6fb18831355b06fab5f64cb99dcc5199ca4421dea2a77de155de373c1092a38f6bad4769f3e98a0efe0e4146e5763af9c7a6d2c76dc68400ce2c1e14f1827a6880c2e4e4b234b30382985822af7d3d33275cbd986c361cd26e4f2de27a470d562abc4985b8aea4c65c50927a3e8edddb78b2957b1936a4e44918ea5624a5b6e4baf1a8aa6d47feeb3c640919c337eea94fe9a463df9846be3e85c6f6783b9aaea09e8aeb5b58f8bd5b76e999dd06fa5eb635391b9671d4f38f1ba1f5ba7daad6982f08b934d747afdeca9e5fc0d576b82f573a64c9d3e25b6f841208ea21d3b404338c904eb7ba9547cd84ef5352678dda1f2e6cb2ee19a39c8f2e952ccb19696786b5ffb5eb6fe5f4c5709f8ebd2ed37a74fade89480eb8e575408336a83f06412af1727e5387daf57ad9d4862d3b6970db26d9f208491680b37216f830e6383be7901693a279070d6dc2dd345752fc1f5884c7053620c534ca5da9e38a2c17d6f355dc89aa14b2acff2093283934634a7bdce153716db9963c4ca66fd2c77d9aac8be89a296e7fc16278b48b5dcdef38f8b416578a288de5e15f5d9a34bbd8d849344fc4667f8cfdc33b7da88800d3bb98ee99d5aeaa94324dca532a66567fbd49d18c2d52ef5d23d6cd696623929046bbdf42597f4f3b1b63651b47242084e9978798cf0d73a558368d1e973dd7afbc55c792208a77e3dc596ec41c88b03b15a2b6331b177862b0182b582aed8fd25dcf7bc04277f586fe99d830c9b268afcb0a0cab79b9af8e36ada44518f933e344c6aadd498d4afcbd6747e13d2f89b71c287e86cf9b7a75141c6fc5d4ef690ec97554a2deedb98dc8d7fd018277af8e757ccd5b32fdda5f210954ab115bff42ed9ca8de6e3d10ce18f26f442f0d01a6c0fc2b58fa97baf9b2872f1b8a871720797e0fbcbe7d7ca729d0c4eecc0a2dbe5d41253856f9f90933a40d7d26eaa64d79cbd2fc1091d16ece8eb357d18d7b30ec1c91c78bba5dee754ae5cbbde8dce891c9e7db5630fbeb6fd7e27718891df376cb0ada7d6ba2027705866ae9273e92df694ae2fc058f9020cff661720459e8c334ede909c6bb55629c8edb1bdcd094edcf0dbee1a8369a9b60bae364487cb693b79ec9558fde0840def297fafbd4ebe1e333520d6147937d6c91ae2ff72ad6ae362cbfa6da248e3e968d6891ad283b0e353f75282ecaa8293343c17d9aad4de636b71af4dc4276860ac2d17fbd7ec38ae6ea2288a769c9c41398fd153636f45666d2e276650dfef79bbe7da538f5d0b2765d004e36be778b11557e41332e85a30797a4fb16f75e90a2763e856cbba3dc58a3da7ed440cde2d31752ee1bf2f8b276180bfcd224bf8ffefcd052760709a9a97abd5c79e7a9e7ce1457ec952d496942e537de285d4b8c5f56036648a251672d205a85c730bc2fee85263cc08275cf8e8daf99c36d82eb16ea2a8d110e3640bb0a9986ddf6a4bed9cf68916946d8a9f9b0e592df72a2b3d38c982464eaa2564cacda9a74eb0a0ac35fa8bafbf593b75054ddadcb5b1d7ca5f4b275668f155fad365bcfdfc9d5441fda9c79cd9d553cc3984d3f0843a3ece38a182be72a6ba19a60c4ea6c09cb3d4b61d5f840bf7440aaab9a4b2533eabc5cd2751e8e58eb1fbbef6b6653b81828b2ded6adbf656c38e4f600dd5d3e5dc52d9fd6cb3438c94d04b8b0678ac845ecce888b13971c2e73bdce4149f53b8dc84e51a2b97cef9fb6364c2e3edc4b0c514e1f7e6c912a07aeebd4cacd9754bea44096ead9324a8b54e90906b9d1c6163cb64ec563de75ea9179c18e17d5bef2516156bebefa408aaee0c9f29089ffa3f1c9c10213e736f9ead39e8a2ae229c0cc135848f65ba4eeeade542e8f55cbdae165d8c8b9b092741484dea187be9a5e5ef7107274048ebedb2a78a318fbd1a3af98167c7d5f7ffcee5ef8f95318470e2035d9fe96362b15f62fe7aa09e8aac8d559d558cca03d8dcae534975b7151317e1cf87c7c90e1c8b0d5564e694bd7c273a780c59b9fbc82beabe9fe400c25c6ef0bdb3b95c2ec8090ea0ab7b3e670ed5b1a70d3cb98162d16952b60deac6b5273620c0490d7497bb67c9e26a50b1714203f8eba96eaab720b3f8c43631a79c89bdd39405cc744dad56fe336d792026b1f8d406e346073bb997d33081854285caff134b878588e78befce195144c403a3e89b3f9e304c5eb158f26b6fd3b953eee166071841d43071c566728f9de37ad738c156b8b55c7673d1a94d8da3092b1e8bdad27ba754fc16d32a1e265d2f5d2a67a28ad50b973dc6570abe4fa970b0213ba77c29d8ad9a092a54a3c25ccadcaff7c44ea114fb9862cbb75ef52a1b98984293d5bde49512ec86ab14fe9aeb5e8cfd47a562220563bf9e3a54d6fe0e320f4c46a1703d25f7a072da965a2e521a2a89042a090d9574864afaa192cc5049656cf11c979790268afa3d23041351b0674e8b6952fa3e266f403cc6e7433e56de24149c9b96b242a8da0d3a1826a0784a35e654a6b43ea9c44c3e91cf5cad5b31a127faf16a176354b7f2552762bae53af9bbad659838919bcb65eb2a7d90bd6d226a545d56d9dc8c136b826d4c6a296cb0b57eb033b14cada752697490f9aa0f26607b7b51658cb03731bf84534f95ac7175db18985882e35275f565ea71359835a864312823692c12a32086610000217bb10601d31100203828208fc7a311997034d70f14800250605e8a482c269546e3a148248883300ac22006001884a1288a410c290aa9ad00c928c0447b7f02abc7853e0e987cb50bd228c998746025f70e5b6783b4acc79a1fa9f95c2915c445e1f2bda394a2bce366f35845a68ffc5a371375bfea6c62c116e298cdbb3bf7cca68ddd7781babebf097f6d939bf353302e2d40db0454830f20f722bac5d5ae0b2c34af18f7df522baa422d5c92150b2f8f5aeae7701a3a6afef689a29c4f2bca72ab88a42367592699f790e2584b342630b193cd3f7af195c1ee51c2969256269217f9e246622241017449ad0c917febd3a1f20a5bf460b1903bc2f409d3c5c1e676c0ff7b7e2c831721e5f45b2f5f789a2d66d996d9861ce77c4b006cc2fd8aed2390afa563ac339f7534eaa6dd0110c8c9463ffc56aa128383808a2a36a672395cf9b144b7acdc5119f50a1023c79389ac43133a5112c8b2434de58d36bfb9debdc41eb1e26e85c7a1200f5afc1346fd6b7c7f449a971428a564440a78566da63435e667b2d3d6da0598c0c5960d27c26e787853ad9df32305fa4b884e68b404a05ffa48ddbd5d160be8bfddea380746800eb18aba60a02aa9b514d42d2f65cddb52b56c190002f499da2464d50c9ab10eacb04235ebe5b335cf239fb378c47a4992bd869e8fa81ea49a50d7c699b9364c53937a278cef575422008dcab62af4d4b604123f77379f955d613d22bd34f82b8928ab96f0a8a9e5949785cf2a0cfb9bbebbd1f23a03fe5f6b3e596067f8db515a86dd003c644f77521bee7c186509dbfc6ef77aba5edd4c37d3c42862d0660c87ee21f44427fb81beb793988a9e99331fb6444f136165b97173b45d497c5efd407205a2472463ff8a6f07b6fb0a1cf922229dd00283d7e8b7e3d2fb6d22e9d105f12f76249d7b0de11a073770d0509c852ed8e14a6cc8574d5d4d2beba14ebddd2f35ff85e36220deb832b339d62699012585261113ea37a7a4901c83df454f5390f164ed84507953becb35c15f659b6561b1cd7c87fb2b85e1bdb970659d9f0ae43348d7066abe7e2cfce65e143dc5c49b128f7be121696eee4d7635e981c902541d0d3f59571049ce4048c28c306891df5e2e8f161c405377c713ab7ea195c7acf0d97813eed50410cdc4480eff73f9c7f17ac21e3968d800845bea0ce08f0a842683847d9981d32463d25a088d737794fce0e8880ce7cb49e17177025fd0a549578bf3ec4515e042a8f0dcc72ef70d0be4c3819e79df6aab010ee003e888c9456aa20af3e8133d718e8f152f8fc2a61b60459e95c57d8e9ff87cb88c462a31465fd09ac391c3c851ef78a75b0294befdcce5059e7db293d83a5fdfa96baac58f479bd99e438cd01ffa159554a204c688903d3f74fad6afd8b2ae4ed50f7e35a0b16b84de27f63410e4e0d57d1bc04a6f2f52e41722c69ea66bc0bc702155073fd031994318d7f16ab891f33533d1f191432c7d61a02cbc2a09993c9e08bb0d53c86ca555222aceca5d5bea86a99944dec260a28aadc4d5bb91cee858636511543f0229206e6ee3d1a526115ed35787932cb4b509fac0246aea3a736c74d6c1ef386ec7b19537dbf6648afef4469cc391256791423a297bdf65b40ae9f0b49199fd07d775658dd3a0ca53c2c859d53892a3afc99da8bc89cee3175b076b57cb15bcef9f9e0cca94c7f5187f31e7f478454ffa762a2584df5eacfaa9e25a326f66f5843ee9a8c87a90c7caefddccaa752eccaf586768502c79f3ab75b3a9a2ea493ab1fb4e9719f888687c6e80f53956147532fb5272d6ec9208a558ae49ba8864aaf79af5df066edbc0f0352db5bb5dae5ff2f21ed2ced8780ee533944f1900085337953fe0d4c9ad332d748be246b4260e0bec2a5633a1da36619c10940b4cc2a16c02d585ee13356cdcd344ecabebfd053f4bb24066c1a2a186a6aff2723769fd2b5215e3694f7fc4981aeb00682f6820ec379321ccd47149cc12c27f5ab396e6bd99d7d42ada38b75fe254195c505b0a4ee5cdd14a365f905ca0370f1e7986e349c766f540cbebe31874b3e358c2b6c2fabcb5b466cb97919fd9cd7986e4c03483531e5af04d46b37a12c4583048c581de5641a6281e50d23583735536e31cf9d5997e8268305cfe4f41be74680eda71bcfbf8817fb5d9be6873ad17d88844efe756bc4011f4298b84f099f58ce379a068e327f1ce5525fbd03e8089abac5f26047964a6420897c89106c19725c0794f0c96170c6b6d0e2156fb30857158a2cb3bddef65ca10461d162e0ff4b4c8152f85397c82d256f221c2f7a24f16d0ffd5f64ef521fe6707812ad92c359ea1bd320c1849219d572880ee5dc8dc01707443aaa144af3e28764f033548e146e68e9df2f8f497dd2124e83e609807a8053590d201bc033963d6f40c29c680049e6138a15612a4a427e8e0f220cc2f44b1be549de0bbd12075a1455ac4e2a1a12b0d4d9c53a311a401e6da38cde37d5e4a073ab44a5dc2a0fb38089c7e9d73332268fdf9976462ca64e31478a50c7cf249f482648800f86db319ff965c1fe8fb86b2982d30d9f830999d186dcb50e27d7ee304c6d65afeda2ec4e42c6219d1cbf055b90078eb78950b7b5d46503874b47dc1554a1f41edff4f567bbc985ae4e35a5783a160bfc6be170bb02421c0ad719b281c536921107d7977c2a8bf62f4606460f4f769b6ba491847e480c3778f1a2124963b39b688a20a73195e4519da700490256ccfd9a52f56104674cbeef2422de0de6e3cd49c42408216ead48a8cf8810909ec403e8595698a5abc2c7a6a3be46e507ce5addd5836d2ee6dd9c50adebb93bba29f3c9da4b3541645e5dcdb4bd857bd59b6f81ba971d533b192394a9a6920f022c88f0c781142d10c8845769fe33a06ec23243f1a3786577d33c4bc3a8889dc47e70a736bb6009cca05465f1764c03c87c2a4cdd2fd1aa153a3d344678b09aac6f727ae147b1b466d443d02833e6a145db3e654af859c072bd457bd94f4ba4727a3c648bce67998feb63c6519200e0120347155a1fb85a00eed713925bafba5523b2f88316c5cc4c9a8c478a8281d97831eb8656a8fd8ac46d4c71cdf4602aa1bc505dfdb9511b1776d69147d5e1101985ceea6247ba815ed301690b6cea0b8212225ffd901f0740642e886a6843aaa8f09e86cf96d5d11298fc6b8709400e0b78800ca37857519ae5a6e93955d5e97a3433df00a33fc6680842bd18d7d49a983498913206b7ac5236d300ad193773acb9b8c327d7d8373ea0e3ee89824b7ebf6e2c5bbc4817ae1a13b9787fc31c8b671092c026d21a58dab744d57b22bc0033ab063e6ef7c9f1a37696b23136b05063a2176c6c63bba055b42d5b6beb91a73855f96cad0ada53eb0e704ac1382011e06051b059c7bd85ee8cad28f8b0eecb12090a5979cc50755d3a8a7a4973fd55036847288397da455c2b3d28582396248a0a695e976d74431439fd7e02537310e397b2ff1eaead895abab42ea9cd96e6166ca44e182333909e81440d739451518b4da23e32b686f58eed25fb94bdac4064603347f09e9acb63d53304890f669bc14c15e3799a4f4298d18466a717d0862ceb131fcf4257832a4dc28e306689848fd3bcb864da14f6b6403ffac371f85d55e4b94ddae921cfeb6c54a35816e5d8fc84430cfc94f1dd586ebabd8d6ac27e2494230ecd3358505f808538795751a35895118f98a22534291a7eb8e616c37b73d7fefa524fa912520951ca909225730e9ecbdc325658c2ea6c9673dc8e23df8eba1e2290b137b4e95fe188aeb3ad4d400cc023f8742b3f44f09a08246c4d3574f6d9175e8b4b1738cf868631ecc91468848c173d26f5a0a7e74b95274a4a920db60396812f4645be381b965608389447435e2c952e4c5e68fee3b153e0b403e4278799aa56e2566c204130e71957bc08fd08111fd247ec65923c185088d5a77ca6f44dc34ae948fbafd187d2ca01605ea9088ee9e0c9caafd6a05d7f6886d4be334eaf12ab11d613034250d3232cead82dc2e99483bced061f4c00f5a6c5b91232608c6e73b059fccd970f45b5f0e4c14646d5211ae498581dfd2181aa3b1c154cefff2a3b0de03bb4612c2a58f9147b57a1dfe9f75e0f34463ac0866ddf8b655ab2ce1200638089d9785bfd323ff4decf4346c10e65dfc4ad09a2b7e89fd2e354f74eaeea0188030845bee60a2bed6e7d332303942dd4b636e0acc18b2592255e7246b1d5564f34e824c8b3aca437edc1054f8c0cb44fd7e22adf68383c4bcc2075d1785112586e287e9b8651ca92020e2c345f31530ac0107e6c48d39afd9a2dbf0718613047a8640301e9a97b9290d5af995eb769eba8d060531f4ac5446b200ebcfb6626685b86cde4a5098395228f6b1ffcb117e9ceab663f1b9af4bb0c41ea4816d60317ac06bfdcd73b7d3b1c9d936ee1e8bcb034ffd950f3661f4b9566b42c85ee1a7e641039e3637f4eb598487721e15325447bf42286354f48bf88bae22eff9185b6c1111fdf40b64c258021ca2b6326096966b0caca0c1fd07b76025945b509ba2957db91465ac563424203519b86a3d36548cb58b0621fbe7165fe8803423c4434550497511b4aeaecdb8d05f882e7421215dd2966f9ffaa75062b5e0dac420a81eb92e262f0e30ad2486e349e4468f2fc750214bc74e599a71851701fcc69ca6e54a0ea07d91580305c8888836a113b49acf1fcf12a091031a8c887736541aa56d21bb2c0f2fdad75dec30b790a09f75b1aafa8456b8f21ac29994831936863384d7a90bd8d8391a72b3b71dbee22c2e72b8accd39a3311b2a074c978dc4922b1ff94ba941aefe60204cf5ce73854f70bc0f9ec20c3268c6b2f33c198b233556644a000b8ab08ab6b7469b44d99cab8eb629a47302b873e50ff78e15561e4ef7ef53fbb324ec986e3abfe1b7e5c88b3e477132b9bddb9083b43b493a66121a758c8c1b8bfdc98b1569e466c16a22ffea35065a6ab400d6640760513a42b10c8a3b5ca3274e9a4e18c67f29ef18eed3d2d41138c5dd2f1f4d0a9827593b65932f7cec09bad92ea84a34a41e68dc119bd47fb07a8741ff750a1f0ab96a0b1b05bd81c72170b721a483bf0e4528d3d2fe5682532437f89aaf057820b618f375ea8908e1baba011167d35081170b2c849fb1484794db7384db48257aa7ffb64e2d5f5dfa45afb4047409d569b9326a16918666879e23455d39e4e874076420de337585036a7f793365b92d063851bf39f847f34318ca11763bc16b8d0b93849d05fdee7c771d9818cfd3cbae7afe99ba469d4be1b461db191b734b9b742b6d32b87ced4402a8615b46488a9f45ba1d11fa9fdb2cd9e8efa559ef4dc7a274cde464e9c29267850b888d443b4430152785bbb200ba70bd7496833ac1251ed8f582c1c6e52cc36fe4b4dce0b08e60b278546b549f7a5af97fe45cd9ba8ef82e60d841eb1e12505d580c17ea9030120e55abc77564dc38be21fc0f16cd936c4e99bd7fdcac1d5195827b002574d4c21514f762b69a053438054ccc2680ce6ec79acc84ed38361bb69ce9bc7cc2460a078ec883a56b420ec34ba1ceef5179a1716c18fbf98ccd2362edeb749a6f6577d474183acb0a6a75886994fad40c1082a4b61d7e775bc6fc26a5cbee76cf7cc1a56fee913d1fd9d355e97b9e411ef092a05883ed54edff15cc1b840510dd75cfde2dbea72e08a4e06668c5ea0556e48229797d192f75e01a07c4d25216c406daba2de8cda4616ab134dc90207b6a67504d5d8fc231000fb90b717e3fb3084ef47074684144489143bb36606db2a9d917439e08d33878aed39a21e5c9b6681643aaf48ff93316f9698787e1cf239c1ff4cda98461b40f90d8d7d986c4d2e9b1c0681417743506644700093f3546297d06461ef24aa2a5ff04483068828cf31a8d2e25b8511b427e952a4c96fdd80fade23141093a77070c8e130cdc48735aaf0206b6c9598cd0b135a98af67c01a1973b18264926109036ab6477d16e0f13f618ee4cb8d19315cc736d82e1823e2cc62ec8aa6a66784d4824ceda1fda67d20125740a7442e2395c65d3eacf3dba1115dea25709c982adf6ffce71c9c30a1d6de6044114b9742dea9fd2435a6fc0cb3c24cdaba2d3f48c636f5b870e8fc4e3d361b393c2162ac009192577d2f051d273a8fafbc547d10552b65581d8c14bcef14313246081c5277b62aa4a158eb65dbb7e6c3e46013e95a9f6d40174810375aa62795534da3c465bf06c2374f16515be19c4d8fc4d85d7c211c5387e152dec8a89824b1e57d5f6d7df539d3c39dcaaea26e227080c45423992512bb85533a288b24ed09ef9588277fbefaad96b0086bf4e8bd18fc74f522b4e24f526d47a07d5e91f9a755d20fad377b1aecfd63c8db3c3ed8b9bc7e052446aa70bd48e3db42dfa6daf430e766d83add96cdb5a7d482e46f8f5386e1f2a7c22469f5cd376074d5151521d27152463d21ce42feacfcbfd1dd8d3933b5fb83a098795af5081aeab32401a490675d7f86c84ebb80f48de239cb9f949fc6ef20013fc91f98ccd046927f8de28a07197ea270b5499f8f277726dd0f1a1a44c988390bc4c9b39e50c58f2f10ffd3ea04b31eec3fced58f2f76d3292012ecbbf0b45120d9e7b468d74ef569ab1ba06ac985694bd45f83cb414df958de2f6e893396cf096c29a3fbeda57d21f1047187b9a23feee9358fecb0f5be75a51ddf158d5b4a7f7dffd061e21234890f66d207364bd07bab43e63fe3a67e4bb3a5234878c12b51dc90980b782d5d6e62bb43c5336d4b97f91c8559a95b432935672ab80f9771b45e08480f0869287aa8bd62a2da6d6e9558502ce536b925bee4d0a944740630d55e148aae3a84b2dbb0268319497a504e746958fc385a6032ad1b9a06a9ca2d155058f3dd7c50ce82989be504db543dacc57415988aeda7432a91ed5085d41d0b6997bdb406ba479e7a969ee21e2f36f417ed09ca1a499020942e3cf092ff3f4b800dac45c3f56d1943c976f851290f19b02daaafb86310056661ebcdc19f42446129f6f06a6fe3db1edb60fc4b14263091016b34d4fa281096ca2006022314ac7486e19e27994396293ea9c61dd230c05707e5fb780b757c2c30395405bc2238eff69397e1d406b70c18c03b66b7c351d0a1c80c4cefe783887cda8e07b9b185f25b41e54286ae813685e7ffbdee71ce8dd490cd11416847b8f3c5601f80363cb3960ec29b28611dbd2e38dbfdcbced8035304307c932bfd879ad7298f94ef52f39c55990c1c093cfe36217fbb03ebd24a95dc99b505806e2ce739754d006ed30a0a0dacd5f8403c70825679a378112a93fddad51c7151aa8dcb8a65bdbee7c651af32711b4a09a0b7e462ebbe6b56abdeb950962cc8f88adfdfb0ad7bf44a48d65046bd9f507d54075f14ddfb89a0d82f357705394fe511b134d71629d33147838e13f2958b216375fc3de4453b6a86e53b4f10cd3bd575992c99b34ec5721a091788372ee84de09687b0e8fe288ce9c33a19ae424f9d69303c0b17865b578ac5a954eb11ff96c2f8e6b1d053350a39c8d7e2fbf0b0950a7a74952cbaa6650d3f55efe6847bf98c113504b5f849c5532e8d588b2e9a37af74ae52d4745a7ca4afd0ef3d939af311a00c7437e229511a35e7b977b77479e34af86b30910922e3edae4f1b0cbd152d43c6e04168edcebf55217c22386f85b083c3f3e17778a42ec5ccb49342e331adff29c7cad57e1dba5ac4159be8f71e895822b8020dbe9a601d9d8106181be97cc68319293f73b37ac25e9cd61463d69840ecbee2a232d0e436674f4d03fcade6a6d036410bf1209dca3845ce0e173245d55589a2de906888066ed4d97f4a2268e241ed35c6acc2054c6cebce039ddb14e661c2a521120bab3468ca7b48c302d21393b912a416d1fef48e0c53e5fa8b850eb08d0c41451cb6550a0dfe6c888598e0d1a65de13aa6caeb819e154215073337290e5bf2bb4019a431238812118b39264ab47589ce7f14fefbaaf25bf40e51080b9a5a120a48f9468839bd9abb1126e495ec60fc5d20bf284e3853fe29a75997a09345cf54da3163f116841c742faa2b812cdde4990f724515001150b0cfa430448df4f60ca7fe81f251de90c6d3187a3bd0c7fd4f77931763d85d943a350e306daa0e195cfa02c8faa283d6c914bfc3128a9e7369296c646a878d1767dbee4bf421a19f2d41d8c7317bc6c51b6f0bb149da4bcb05bd41cbb845286cacd21c5455057a11d158a1f1c5a18d2cc2183b3515580508bcef506b490439b5ad05441a3cf61eacb051c5188552c7c705334ac858e293fb01a290c7805c7f2bf50806acd7d886c5f19a0fba5c9e99f609db239e7a0f4efc44805e486b401526cb356deff77ba34e9b91cc870c0cf30c8bed09b01f45ed5f4f3a0a3936bd9ed63055ad5d69bafb7c95d2b5df92e548940931ecf39e05ce839bea0920a0be016740f8f44635b3c2005867fd096ca2d46746fd3af67c2f85bae8f7cd5e9c24ac5a13cda00ad31e980b991e1829b81071162a7d614c0b96df7cd055188b21e51d5bf4c1102f71264346bedfd6d24510c391b4887052fb04d4e8dab4344a55bcf4d43ae5dbd0bd48b33bab0ae67cb391549d85631fd33e8606925ba12443ff290c67eb4b534740f938e3aedea78a7e88e647bfe9b44e43e6d2d084b0b6ddc101f35e8322d7e7fd1de7b01f0d0719d59316be1f326ad14336a0aa8b96ccf6e43934bb4a5e6f3f5195230427671da21288a24e9d583071eea972c543a30b4a321775f6fe3b644ac12ecb41107b154c28550bc88ea765d63f21fe0a6de6887dc75c5ec74004fcd70085e93166e38f3173c2d7928fd32f06336741b416bd16e8fc3c346b8d8698626b2050bb07d3cdc71aa67734a1c875f5b6436e9be04903d8c13854cae1d3fd53f1bcf1e22856bee83fe7157e74bb89ef278f7224d1d7b0bae9d5031a5c07d89cec731f5ebe03f58ad45d9cccbdb014cea087796e2b6fa2f34ee02a8bed30c053f550e8c5d3be756e1225d6d70c79478544e7aeb436d4d6ce75054c9fb5f501b1336a448ca263c07705b407f423eef6b45e7ca99ff01fe9581d4a9173fe05486fe320ebbf11e53d096dbe6dde8c516bfc398b8f9f9a9b5ba21d81751370a1c3cdc4f9cd3914b8009ed0ee9beee694978089bcce6c2bf3163256f758c75980ced51b2ca9130d3c0bf7588911db81493b84bb50e945ce1acfe26fcd44560aab4aae93a7584065f71cc15205848e603d16ea6a0758c85918a0c06b9b1c290b54ec311d9ee979f1bf05527bb06d8decf22c6224600f989b180546b7728672667fb9fd34472edeb410398577192c12fa793aa8c0860464c42652070d7e2fe5ffbafcca0d1b10810d610658978d317b87702488a9486d8536ab82e8c4b5034257e78b2fa87cbeedbaa21940384dba9e7d5a5b7f4bdfc1888077877d38adad929cff17158a7c72fbb2fd0f57efa61f82889a851e41e19cad9e8732cef8bbc7ac48588083c482f24f72b243638779456398cca423ab69537195c38e067b6865c449f089916bf7d1de89928970dd720b4c1a6c4e6028ce65c73e09304a4b3134be087242f1164c56d59a5da29d2367df334568fac9e13c8edb2c02e721fed3e17f4571af6622961e5226146dccba678ce287684e0c5e9ea1f86238122035b98053f9bcc61fe14e201ddef9fbb6a24bd77967de4f7c4cbe4f7bb6076353e38436b0a94983165661e596f64a3db217590a9d1f399dc64ed7ef25f218dcf52616f8178842383d104176fda2dfafb46bc66a4ca8beb9e1918fbc7807443cc5a21475a3198750370a9a5aa998086197c2a218f206092db586fa57c06037e33fe721c003649e0f0827f9247b5c0616233c16045bd17c3c41a15b8e3b5452a796b753bc27bc467e1e9c21656197346ed5d5970e7f1c444ad1989bfa23cb151647a4acac9c03b14973c375c1422c82eb09aac6088720eee2958700149ad100cb38cb1f8038834fab8a26da6d0a66fffb6b745f99c801d74c52f92f1ddeacbe9553b4aeae6023f86adcdddcbe11c29ce85acaef4424c7b4e3c89d314ad1925e7d202c6ccf77f6754967b34dfc0674907bbdcf61ba28a10a5767569b8eac495cc0e8678ee2f77bcd372b6b278f5eaf734b6a086492c751bcd73b983b348de2d0fd691e50c3ef966c99765a728fae01744b55e81f45f7d79ea8f4843278a1c976634d3785d3ee1cbe3ea53328e1a71508435a86d7859492754a90af42c65da4d11cdb67bc88b1e93cb1d8d1b1b0bca20c260ed45281c6ee48a360f56ce6e66f66be0ab03fb424fc081155ae564b902564109111ef2784d0541501f52176ee25db2e293d91d25e9f46c69d9b0d1431780fa8ea5385bc8f29af1f5c2b1d8bf2ba4308e0a0b1c86254ab6d454223cec7e160d46386633d1d3a1362e45c3dfcaa4cb1471a1178c6b871806bd8cb362a697822c86a6a093aff78418dc4fe7ede42b6a6af12f03f62eb627e7b42f61204d77e7799e3ab21e211cbadd6a1d23cf6334c1ac3530d15ff8f604f73f9c9843bf2d1136cdafacfb11da1de25140b837ed754a44442762173d60ade34b65dafe95cfeeb183f24a4bb8320e6bf8c787772e91029153f7ab92cd77525303486c60acfd0fff14aa942df1d08bfb1501a152bb800d452b227af4f38de28e732b61fe5247b7df2ad9c4d75bda95b85567568bcb6c00b89ca5414b0e201e00f9ff55ff21ccfcec59d44e6731455b5d5ac00ac905e858a3d43df4f712f2984b677ff043b91e78ad51d6b225553b280fe12c0fa540cb01c999120291de429c559a241ba3a7ade822ebd9c594beee5538d45275664e5421401cea231031266acfc50af83bf5a0a5d94e85585a6092be261963fa792ea3e693c96f9346cec4b45522c404801ae05949a17a59df944f18598263256cb746215edc92188fbf70853c4c49e0e1e6361a1bd5b9922ec50d13588b824a5c5e516d7515456193bee6f82001442ab9cf0fbabf645a1025a2bcf2b338db3260c09c48211be443d84782563600ed48e7168fc1d11669c6426126664ef479dd3c7d01b3fe9cad45d426e38a1e4bf85ade9d62865bbcfaf639572c0e356d3cebc83a6e8c47d321bb00e47b07b9081a0f5da95e34bc9e7c8b4e77611777c25190bac69c50ea3fc4987fb4782ccbca96b706b99fa2788b9ed38758abff2c22703df232280bdf0841d377ad5846dee1659d6e3e1f8e07ef1422e70cee0085a65dac0f5f2c41b5dbfcf8144b8b2ffea04530b61eb999f2e9b702d6ba9cc93bdafb9a818b09df51c300823156461f6ce3dd04950dcdd9fd35418925b17987faddae4e89530f341c58288a8a38a00b6474a6f7c27fe106a16427bddf2b4aff5fed4bd1de60e96b1bbd50ac96538e828ca952463d6b1719e259a1fce5f344b1750612b18530d214c85fcc4ef7fd3b308560313e5a367472d54754f17a173b130f320572b17252e17214fc8513d4f20a26af817d49439c19077542299de2d2cdd172dfa3658d37933ea8e876f8172161b44217a52d533af3b3311d9eb825e4145858a3a9a8d588a536abb1434b2bf6b3a8a3a1f814b6782277ec22207b837ffad20e5b9a463acaaf7cf2c634132e5c821c744ddbac1d397234d14c592a58c880917028ccd2a35866d5334350b9c1201017f07c716aec62664f3860fae0ff22bc26e27b5a881e3cf1866380975f07e82b06b41ee0b8a78d0de1a4112507d340cc051464c3699c4d6b8210b41588516b39d9a9205b31ec5d0c82bca7da5e6f458414a2b8bca1c50ae63432b66ea22d68ab9563daa60485ec5459497ece0c5391c9f8297bdf53321feac9bfc980ae83f494241f73eedf75f86be8019edc17bd69ee6adf8b84c559744ab2449a973873653d8efe5cb5adb91691e169ef7cbcf82aa3b91c21835604210b94b41f3476f3e3accbd8c08d2b093ab0bdc9e0998789762c47860e876cc4c065b862f63e76e43eb12e8d77ed67e1cecdbfed21eb46840ea0f6518598d3136d27be23ec2443d74009bea927eeda70e301d921de0817643a3f839b98a19112923680ce3a1839eed0d9d18d9ac87af953a964ad9528c4a52a02d17822d56fbc3dfc57c2d9e74d5dabb5ae6b1575700d1410e54758c2fdc3890626affcfbc0650a67adb92f58b50ea2e8a599d0eb9e7983a11bf73dbb3380f830a15c7b6d25aa3a3b6e3819eb36661aa1caee202573da9d72a8d7be321ca42bb5ba3b6358122969f4690d30d1ba7467a2ea7c172422d57508cc45c7daebb861d67516f6850a544053820a33193ebb49d7c9c80ce13a380f419c4569652062726dae5fadea031915185a880d9997aa34515cec2f4ae78fec8a9ee1b4026b4ae7679854d04c4405c09685452d0649fd3f43d1646c201516ba748bb6e41d8dcb0b61988776ebfec88ea8e6879373f77d52827fd9544ff3a82b04f8f18ceed5bc866371cc9d59ec5d7653c670bf6c759e07f6922b5addb3e6e7e83b55b46ef0f9cab408a435bd74ca33a71911ceb0583bb1aa64471466c7c169551bbe45a01ad0e23b524bdc47ab14f0044005a0d830219114e38fea14e81dc08f992e49f90e1a6c11dd97aab5707449d4b9b1c380d3685e460012df16ca4b2ad129521eb76b11c6814f9f1c8248d4d306c688154f85520e9f4dad595b565705f46c20bbc1385059f719b0a53f769988a1812027694edade3cd875a0537becf17afc3a8b7cb92144d2774d854bdaf0256bcf15e9eb7c6b33d09f7c9d62ffb904fac68e63d7610b88bad5add644afe8420f1f7011af0bdc5b6e2f82b637f0f916210613db1229a5aebf891a9837542be6e485306330613666970812468b2cbee6fdb4cd6a4e0029892f170c2dfca87bc03fd256efd6e48723930e4e1f59d8699daf6cbcc38ef4d1c3e248c1469184a08a2b6b978c32ae8d9f47626ef1be313e9c9ce876852b2187c286d00ba67b4384ee546baa72a222a9204ab4008cd796e382800a2c77d0f8c1cf28704d0f567328c594ecd0224e589afeda1e76ffd5131cbcc58f34438d46874251af14449884cdaf4810222c64f6428352778a215b5a5a0714faa9b88c0c777e4a0cbce933407b12ecc8cfe67d89bc1d7ec6c4b3ced1725e8dc1075efcf2153fd249d1bd8b1658e7dd2141eb49ecf378ff2086303105fa678dc757aa9405092e1e6ea4a5be018860a4b48520bc9db2b6d121851c1438320573bbd4ac3ea8a179879001fc14f9de09a6b5d8d113a7b9f8bd9c23df5a464231564da53b328f7fba2b386cd6ea8c0005cd740d7982e4eec41351b77420bbc7e6e7cb8aa7a02ef758f3dd48b93d9e59a2e72e329c813d1695cd2aea6bbc229eaa6ee054201907d5d06e95ccd3b695fbc9d9d2d90756bdf9686d55d2f89bb6327a3ba23707f54d63d57d27a785c775372678b5780eb3dc091e132bb1cca351668712a89d632a3740b244f5dab10a218bf35081277bf66d444218f46e085909036244f3c91a46b1415c63cbd8dded26c5e79d0da2d707a0a98d637a718e00cca6b690c1f573aa4aaafb6ae285260fa27ee6d022484d6652c3a06b4842a7796bbb8329ff54bfc95c58be10d58bdaf86413c38af0c344d75f2000b1ed28c2e080f65d69062f5116dc23605cace4fbe238612690ed27855a78edb539e4593c78d76b70b6c5b5938aaa34daeab67b3052a253a7c51abb396d16602b34f402f86f8721ab43b740862dfbb5d719fb6798ce13a68de481c0b9c6ccc11c584e686831b544eb76370ff748412a6a462b565c480bc8e1b59c7e004bb385bd21ac8c0d8e8f833facc3a8df3393c7768f858501e76736f702b0e53de13eb11d5f8462a5544f55d957e8352fcdd1edc2a56e8b7b70908c362d41b08b63cca3ebb3becd54aa5470cc20f861a08aafd2b0e422ba3f36d2de1e8f5f7c0739eaae6c6570dea8b62868ed9133c0801799986d1c1fc587c35acc28d0531221d1ab3a4822307f47c072eca9b35733eee79a6452024d6e73b61e034311544df739f6c2bbe253b41249f89332e4d98bbacf5c071b446b53fa03d501fa5c009d055136055810ea7053f6f367c444e1fc01fb3d154506fec682c8b54ce7480fcad3b7abb7249cefa099b36551d3ff65af7c8e5dad5f5263c405ef9e3f1718b97e35628fb2f240769790fbb41173ce1aea12d29875853d1690b39592d53701a09f3d80ac91b656472e15199167865fcbdaf12a780d2b2675097e42bbd428aa2ec288a72229e8da86720708b79116bdfd7b17a3441b500936f5e351575710e95679261cf83231b3fc4a8e791ca086b9371cc7f6025e839bd5e08fdcd95518e1ff37f2978e3f477b1e89000e471d34a3c9337c4da551a0056cd483dbcd418034f0eff6da03cfd8de7e965d7959c29111c4386cd46913c7211f0f8f4cefb47f72549681be377f358bc12e6a66b796767c0ad35ab54f06ec241c5c6c76ec8b29b0aa38615625920590be5711d1f32368493439e34ca32a90de63cf4bd106df0d3f433c13b1d98586aec26c5a5803abe8de27236f8c445888cb5701877abf93220723f960aa026fecb5085fa23d3d0680143022df3a5a6ae1dd82efb4cdb6d86fdb72231602001fd00da20fe81734724c81880820c19fdcaecd089c409e5a3c8c95d7136e86f7de1a45b122f62bcd4cb0bc1f539200ea2ce24dd002916687ca6818ac0268fb46007425f4c32c7c5ed00574c601f05b16103db1a852131471b7fa0cee5e489e5acba1d2a0090a66d3101ef41dc402d846b00a2c59f20590846c87a68574135209ccbf7c3710d116f54d458e494d7e19804e182cfe667188548a2b6308d3fc4a1ff937f7cc463606c76fc90471a987002c4c4e40d0baba1acb6354e181e20371b6505cd78d76809c2f626cc7aed74f5b22589d31dfa3525d0aa50c99c7f1c102f02a846b83dc005c44dad37a87ffa00403697751b7c4548d3de02b05fa669cbdf359fd03a332059b01856227d629f337f137032598fcce0c401a9e98bd79437a9ce15b8db48d7f7c56e49dfd8f7d92d924a1f02aaf09e20bfcea6e1c314555e63024727319c7cc15c5d883455519dfca58ccad2c05a93912cea602063cdf31841c19820051c48a41c4882006123d4607a3c3e8a58cd4feddff3ea7bb0d96f4dbf59232aa172698cfce66ae67e23d799105dde8acecd627fa1b8a30fc082e6bfff8ed97f178495c53664c6fe46dce07caba06600bfbfc61c51aa7bba396a0a10cc1dac003c1692fe508d5188b7c3db1f77c4c4cb69a5d8014c18319ac70c0b32c0d7efbed45f45ee1f1a48d81fe9d58259f53d830d1b3a5fe93a7623e89e1121aa967c1b8489c0a01157e50bd1fc257f4efc9e70d1c8f855c4fe48bcbbced72aec6acfcbe7e12ab0963bbf58afcbca7ad444ab0ae32afb22f5cc24df4747974c7bb11cf2a3f2ed2fdbf8da26bb68cf0cc7066139373090212d67da6a03cb9ca45e6f095189b6956fceeff4826577b2ceb7a1d8ee86f6c6bb254c164adffd59398bdf8950f9edd648a0d2666106c929a20aec17c2ff0a55f45ca7d719ef0c1f0af208a4cd3b7917884abdc1cb42c2a5ef935dc74b7730f9332dc5a92fd9483ad83cb255ee688ecc60e9d8afa09882dc84469cdef243fb7785007f76f021271845c232bdb071bd6e363b155ce91fa064412b28fbcdf12d688cabc3f313a0fe4133b3007f6710df76bdba0d826a2b17cc6f3f898c8c12d22f792e21cf75a41e09da14d67614ba3f25dba04d071f42851e9a89781bd0cef272325b7e23e318d397e7826d01c79ba71b2383563d092984f86a0af7197df867521468d5308ad43bcdb86a2008932a0505dd9d30c6d1289f945b14001ecbb40bcd718b7007cad91646767fef8b2137512e98d20796db39ab00bd35c7a091eba66091cf65864435efeab5f3add023701909dad15edb20aaa9e7e63dd55321641dd91db07cb4008bc70686adb26453ee1a36eb72c10e12bc080cddd4449d597ab4cffc0fcf8d28c9d3c16a3c0e7902c6253cbbf56ef6c76f9cfe9fb9871e9bf11c0af3dba307c634b98ae53af95d7735d6f1dc3a39515f54f07dd0650851d985e1e9c941f3a01b4fec160a9a73909774a27d1717019584d4acd9a39b50d0aa75620980a59ff9f51616f83768803e50ffea064bb7ef13f988607a9f40a641ec095e0d328b5ad07f32b108821ef3d11e12432f5e6041815b5e8566b2388244d6baa89f10aaa8c8ee34aace3c9b351fe16243295eae0f86516e64b61685080d176df899e9db8492572c3c5bc81e6d0b096c95100913b34fa99664b2fcb4a616e99c037dd2390c7e0900e8adf2c91c26a1ee4406d25401bb81085b31b7c6ec6da5e478e8793cf5e197d6d0264542798135b9a54bd6331b1010361ba9a6dbcc9879dd3b14b1af453d0f3c285e8589cbfc12ef629d4c9cd91198f32f95b86feb926775ad3e8f4d98fcd13c81a0a0f969020c3eebfb2449fece80d329f1f4e04dbe9567b2837b1105b71a7d4b56fac3938334c8caef86c469e2e177446aa8cf709d9cd8d7d7eeecb23e135a3c8d33323f1f7c0c643403ac90e9d3b25f564a5dc210737279dd0a854163650fc9963751114a707a650c45d24068f72796ec4caabb64b50dc2f497eedf9a9f5fc7a3c334851bba99b37ea9691a24f6821d33e16e52d2789965c2b4e4500dbb381a013f08a944cc4be0ab0f4f2a5f1552d762faec39fef9039a759ae8cb2c40688b65fc2c078f4e70e6d596126f4aaf9ed2a7a5f25e2a52f9a853415a300edeb33d475e53eecf26b49b71a8dfc359a8de6be3d76ffd5781c2c3663d368276c543fd9a8768ce3057d65f02e8ddb7ccdba95b05cf814027062984e8edaf4d1b1c95bfa0978e7477752c571245133c10fcdf91bd6f4f5d62f0694024ed7fed6ab64803592b3bee719cf46d5b22d2d667ddd8f353580e954aa167b2147d7b4cfa6ce23cb5ca5294134d9c46f6fed7f486e9a1af0e8ac7944aeea181b19a1bfe86b50ce34ccf0be0b194e3ea006cf804f0f6c7fe1a734bca194cc9844c08fc07e7ac0d98c7fce2d0d904a3eb81677c08a6d20c67c9d3ddf7975b59cbd1f1d965f09cde08ef0cf4d999737808d874a44b794a200112644943916c953f72b54367fffabd808be1e6d37db7b2cda1a91d68bcb4c91847ec3ef64521e2adb64adfda1dedb1ec978a597334f0d993e46533f669e0c5c9f8433ab4ebbecef1bd338fa306fad69991662c43ad5cfc9d0fc1748fc8041c3eec495c0e049c0255f6dbb93317427cf0e3fd9cb1770bb506f8afaa52a56d6726fb6cbe70b09dc555e26d24f4171f297426a9d51d2992aea9ca4594bba653d703691a71f2cda93c19d6439a9fbfe6bd3cbc0dde6b6b1866ddaad8d461e9c5823b0441ea72d6dead26ba6d5f33acb1316055e8db322d87a9660d8c7716a036721133160a9c5a8adf736e1483f8ddc87b8bcb7aba3c2a93f864fdea4a28f99449e031a59e2536802c5b456930f58a9f3ebf1ada98eb1dcc90b351cc8d912916a88059f2fcc38df1e5735a8edd46f753c0003f9a5651236d9823ba551d3ac319fccfb62b912e319621502886ba82d1937168007fd694ff08004cf2370b4636174f0a52db3d9caa20ac32c7286875f0dffff817e8eaa4c6a40b33bee11f7fa5cc7369fd622c71a4fd47ecc14385264becafe732dcf4b66967bc15c5fd51c0a793b7b828518eb1a56a5ca94fa3c9054b2599d8a8ecab30588c679e655318a8c3f0aa655e933bfc1b2570865cea8d775e26f5139f0919a31321c3db72f6e64c8732d914e112009c2fa90f20f89b9f80f90034edfba8618b38263c6db77d1c32ba51edf4835e6094527bf4b2a2085aad8853c3285ff07ba0669c21be11beb26e42da70c183320c28a9b33864c991265cb8163064c1811b3e3c82953a64c09b0e6c00923666604d972e5942903c604d870e2cc8cc32975e4aa7159f394f17c85106fa75903258a1408a9d1a49962c58a05abd0a29102252582d469d658b16205425469d0a4449132c1aa356bac408922016a5a3452a658b160d51a3451a44049882a6d1a2b56ac58801a4d1a282951244cb5668d152b5022488596268a942916ac5ab3068ae84ab904bca5b3dc8cdd46afb6f16643171ba0d73cb5666a35baa9cd104d226980a933c938c9e4c9044f297b6609264c30688a99339238c9e4c1a4cf28f36409260c306d8619279238c9e0e964cf50f26409064c316b0613279238c8f4d9649e50f26401a6cc30d30413271238cdec99499e50f2602966cc60d20413cea412699d6833d03ecf4e9c7d9aa530fb2cbb30cc517df7d9730f9f3bf63ab8886f5f00fd545f0034259f9b9a6fe648e4097e8c14929b5bd333b435c431bd850824769ee43e49aca753a0df01a180222f8703d18f77001f101591ba54d1cf37817778463b8983c1f4933f623ca0d4cfc817932b591bf64d8f6d6f77c177f900c690e1cf471819d0b6e74f71971422a83d63c1f01ff4f09b53964a15e9d3473e0d2cdd38249ff414376b735d08b0a3622ac3ed56e9f469c93d3c6cf390d760133db82e034bd7f5b2869994926c5d687cd6a1b3183940aa9ae61efaeb0a6c2f3a97a7637cf3c901606dcb88fd1dc6fe4b43aebde8dbcb4fc995fff6f49071f5b115beffc68d08cd10ebbbf21e046b3838a29cc6324319f0c1b16116d572316dbf0e05f0d129fc9a09c1a0408eedd2712432aab171de14182d40aba31482b2402819b8d0c80c8ba98ffd975dfba8de47801e06726e50d6ed0d39234dd214650b30a09ad111c6f1e4119ac8516578fe599939aeec42e5c8c49254e25ae4ad340cdc2693347e19e0ead8958e8c04461c730735bb8626f3d25cffb18cd3da953c19d3d1c6d02f4aa234b6c0d4603cfaa42fba52e1ec25d5680fe4918e911827cd02bc2951a13120af147917e3261099e8d8630e64d35b31dc31e8d283b63f6071b8a6e7697c159fd2c8f426d214d98724b29b45178845da1828748f78c7a10df368bac03a09d0f3262c837084b2c132c88e6d5e83c69f76e3fabbbdf682ab1934eb01e221143bc5ad862dfae68eb4ce6f74c4cd824ea110ede0ee502da25fe4422864ae622b6bcb8381f499c706041d17ea2f468fab3ccd4a34d51fd2bedee56921ab2dd96b427a4b9e5d540bbd164375f0cc8d984928a3e88b883152fb56823af8da2e1d61f20a11518f530a8b28d7b8d9558a41bd52862e34873437718b74b64c66baaa24febf5003ae6f34efeffaef08a65a9a12c4d292204e16a207848b79f654b107417290646139c9f7b05b9130d124cc40c1430628c3b5bed63c4b758aea4aa2a7471c631fcf3b83f4459fc732ec3d95dfa0f1b5f025ed3346e9efad78ccba9b52bf126cfd6ec49574fb9ac9e15463ca286be3f06cc9e0a570e6fa26cfc80cc132a571da3bd66b85c1cebfa9554c7364c688e6fa3f5ef31d90321ef26466d118e1e0449570e1fb206ea46415eb0d36ac13752b6fb8dc6a6e0bd90141b29f43f1217ca4ae70bb01cb46d637c404dda1103467e9b5f6c577737062e6d1a763f6efd1b46ef5b9f301e7890eeb1b228087bc4b667e7a5afe1ac9e2dbf7e750bc8defd4a1db172e655ae3e359beaaf7966d26712240f666c2e3c4fefd91910eed1d78b9089d5d526db4de3cb981992fa621ca4f2ed79c4dd9d96754ed2e1bb4073ed7af8a8d525132afa1f9ef38b7da7bfb1891694d6c5f9e6593a7b9535117408b7b7a9ed212f20e482ace67e8b890293c63a9ec2b3ede04576a5ef8e5d52bb408c06d0b626bf2396059526198c9ae9db24a6e4a298a3176cf55df682692cba01d6e8835ee00417f034522a24bb277490eb36e05171c11c469623acfbe185b0240492739a9c8cd2a852779b71bbfa522111d56fd0587abfe821797221afac882286556234cf62a4c03abf3bcfe2f50976ffe23ea8ff6f30392a933c8c39f61fafa6ea735a94f6bf3596f285c11d2e2c6c44e9b2e93f8485431d2951b4a471f2a4a5260fd49a206ba1c76ac65ebe8dbe71181c70461c072d93d0e439b37a1c9b0b1f33d7bcd6ecaf6a50898d70154d926c6298011034b3afb6e2de0fc16fbc0af8f52d37db8d75d837ae278ff4dfa00c46060079edc7b3bec3220636d62ea6f8b2bf4d0adff620fb8352f78228820fb207a4a9cad90afe3aa25a60c63c6ec7ef074af9eb86b7d34a4e8d2a7c04cb2d98f7f76d5d83edbce70161cd95b7b53513e90ba641e931e297672fbbc9951f1c4cc846bee2aa413ef176b84f188eb804ee8fda35bf3932f60433dfb381be66543b3937af72a60f70b0c10008f59f80bcd4591f4b469c48a387b20c24d79ec7ddedfece79ccf6938f6d03a517c063720f3d39aaf20630ab8d62f21a035c2e6aab26ab553d5d5eaf4248d09f54d281a6d8b266a9e96768e8d3898469f13c7da9afe299bffa521e0d7017c6bcee37675f3267463d503fc69ccfe9714d4834df715f71d292b5ce30a991a85be923366ea9d48c0059ad1868bb2b9234efe640a3e903f152c0367d6523f4bad7081bdf902a28ba0ee57100e0ca11d75dc999aa0876251c0c74f24b6bd58ae29d25e4482c95918e9735c141d686df433efdaddaa364480bf1b01b9a5990e23cef55e4becf8eb3a4131028a06244aa55a4f8483b3c1cdab093bb3c0d70106c3b1b6f59446b3448ffabdc853102a33a3501899c3cd4405e2256134e429a67b6106afbef3937331895524a9c0a76e13d64373a909e62482ba472e3d131c9f805ae4899e625eb28ed1ca9f415ad0ed213efa775137a9d5cb343782546d4f5a1711b0939c260162e11349ae7e3d6b2de1ac0b925803d0e5964b8ae355d98ca650e1926e3a1365f5e8a52054ac0e528ed62a28ca72c05be4c89e144cd6c9da7eb82c9827d815f555ffa429d291df6fc309ef9bfba5feea8339989ba9951e5a6a4c622fa3432b4ff752dc157476b8df93a30a79f406dc892a33ae598432e0c2b6224129c49e07bfdeff7bdcc818bf69e7948cdfc9abe4548411dd578494d9bc87930baa6969731788c4cc75c3b71e81e1fb2dfcd6c0c0f99b995ec0f520c567ec1b8de6b90c2b9340a95c747d050b12f112c0b5efe2feb381a3c971653a7cee2b7f7db8bffb0632fb4d3ef0970991dcb30adbd8f0749cdbc35d5a5383e251e96b3c6eb10c228ccea70770a2492372d8ebf0a771aac04eeb483d12fc138216399849ef692d2a63ba9c9d554acb107e737603c8c2a5253b3b2c1b66c8e1a1effa1a66ba341450342026f88a501ce7414b79b7e5156ba2d860d8e8b3379954806f4f1f652f099fd4a1f9103433b0214148538ff7b31ef9da1b174447dac98ab58c73fce748d3d11d2e3aad2dfa7275f227729fbda99b8a17d1d22b830a062e4083c182e70f1c7452995b66effed150967155a8491f50228157e512f439cf5598304953c3c49acee4bdc177da7dba585a079907444dffce7cdce2c2f8df04a63630b97c2ad0858f4c21009d96c0e20d5c79286239f8b4f901b4fe0457db7ea090b0fabc13ff19d2d259a4919da195d3eda7e765db8bdc6c6807487be5a2067a72a41d767823422f6e63fb7f015c8873d7c21df8ffca1236cad2bbdd7747bb20aed0773402a3d3a365bca03f33797f3c7a67b90715568823e661e17eb95432d52c0d0d18b3fe37bd0252c8172c705f5cca9041f9df7ac30d6a2797f539f3ca7364b9a9c38580fc25128d2b650b4085b38405d97e060293cc85ae211e8e247065fe1d837f119aee88643f45f88ffde5f22dfe33aaf2d9c6c8874cd767730389a8a7f58f3b7de4675ecf5a3b9de3da1792087cdc1cdff06c4c9efb511cbeffb31cf37186f277aa22bdc62d7304b1c8cc2df53b849322369ea74fe32d8c94e06d576bd3c8dfc312b3cee08c5022e6cfa95d2d896359bd53400882bcd5b698871942af5a3a0886bcb80752e146967eddb3c5667114fd10e2ba7af73b764b2b2309454455315a88f90a23404a4ac937731e780f8fa7c68e75e9596954073035d390b060d3eaba6166adccbcb4b17a271245ff25d84a936535dfd7fafc423b52fb94cedd5dce0edd778255964862107b70627d4c32fab02f0ea542925af17d67f201ba87d8d0c10c8ca4987acfc3ba4a4bb4c78297b44fe7cb8fd62ae8fa781ca6d797d8c6403e80e09559cfc810f2e10adb01ae938f2335c9a6a6f0e801182223b18b123151e859e895d75ccca1f49dfb35bedbcd57e1184438cbdc97d510cf79e37c7e71ad509d253db08f7873a1c4ee258f1fd32fd949320d741ca68cdc29753da43a6e5958005210f34836141b94f11b6037a0e7e562b11a2ad9cf0048f8bcb1017477bfa4151fe0a5e181166da4231c50eea9ef4cbe32d287f73724b948cb26ae7d339711c013e5549ae79212c92ce38efd5e578960d56815e2db104d37c698fbfe71aa3f44a85aee0ff22ca8decd5bf0dc90e055fef38cc6fb20c7885ea8e77da8e22c9fdc944d32747dd3cca6f67914d2913671b8b6f8c9469b023b73f0b130b27d069295be902ae5d03e64d988e19a8ae21eefc232a62810538845d6300f5c0ea5c6e577c19cab1f2b9fe2c94d384c26bea9f62b1c1e357ac3d3e806e62de3bc21e49b4a9a8d316304d7c3a2e0a2ef30ac6de93c0b7d78605a63463b88edd9e7532d8dddc9ef61e67c5f398a3f6ab6cdf6279ac5c4c507288ccee9563476cb9d507626a1de86ac78706af724d2151238e8598a499bd85ea42e1c4b7d9a909f2d9f6d533365d10c43f809976d11c3d0452a0bf706aa777ceff682d0592f686fb4fb813888c3f64f46c908386e7904b82768c25b56173bfc44201e89bf8a6ecb9ddc913bac4feb5095d371dde88284aa7b54b24c940addb0a5e6305cca47bcf906723a0032b7e5f1af2b6893753eb0f3f57e8df3a0399f692c1a245865108efe1f51c4ec42d2ee13fe85fe218b19ed951e064684cb84622e806375a3679ca5584a04e1e39ce687832714a4b7cf62e58952dd12e33ee29db5f4d0fdef108192bac3fb328dbf5a8fa317382b8f3622510c9521491468f0f062a18d9fc21d2b2d76c5e589c83186e62aff22e3d767c815e66ff7a4de6ea475c3e11f43e2356aabcdae01c536bc4777551a532b110a1f646ccb2e19e4382ecd9dbd8ebca291b07853f658d20fddf45abc4baf4521e369cb4b03bc29c9669ce7c738edb53d6a4972034cdffbdd6c6d0bc8879d1be31fffe7a6901deb9cda5744695170a298b42b2e24fa81f2970836f03956e45554430ca711c70a0eec0f32397811a80d321903987e9cbbabe47981502ebc7da09c700566011a69ea653640ee24e9033ccff33ccff33ccf9fd7881c595659b3ef2b6b3fc924a5ecb7978e3a1c24ed94524a49728f88d5e20378fd0c2e21a4a9782e066b0655067d48790ab9add5a7da4f3e985916439aaa733179760fa6bfd9a85b6a848550440f6b101beeb2f3217414c9433a2fd8a9df2e8287a5b719d31cd3e5a0fa3b24a6a10553ea624e272e42c40e7d86f7e7d8cddbfe692152075e965fb2b132917e271ddc509f62461699c3b2cea9aab0ecf112e5706e981733c3dc49b141ceb89146572a618471e3e0d841c69f74021758c00416f084430d323ead20009c88c4412fd9d819e20579410f07d3d429f99f05bb50e2c81bfe51263ebfceec09e589b8a16b497576beadf5f88e481bba1fd92f8cdb550b62072c2046840d7e680959fd3523d326b2867a4d8c69d9d45e994b186b241384f03823b0401a226ab865e9b3f77e0ba7539c0665f4a5cce956349816342c6e3532cb5207adb9e50c9e78588b99e5f7aecd0c967f1663eb6afc4f5f19b671c15c4569e9ea33321cf2f9a1572733ea31e463429b086d492f84c4f086734f97c51c84ee3e0c66566f7f3176a97c1018d6105d7555cdbc258f11f9c2e2a66e39944efe6967c40b4b9e64b66f13c220d2855ab6bf912dc7c99872e19a8f192bf495cc5c85e4e851a99c814ec805225b30b7182ee74d5bded21a828816d2a139c610d2e25dae2c2ce7ceb2c7fa51391f0c83043bd2193b0e1a014842040bd9a99f165c52527bd4904ae40a6559e82c87496deb9015f4f83fea5294bb67971044aaa0e835f9a1f3615f6a2a78fffdc15c1257b2d3c814508f4968da28765679440af8578b9f35c85c42f328a42517d35d0b97e3b21681029f9679735d9946c69f70bfa612969eb3a5d7449cd07fcbb229cf1fc65a4ea409b5aca97772e36a4498d0c78f49ffa5175b521e10224bd05cee0d9deba50ed6a188123019ed9a723e5d3b91241c4dbd8ee83bfd2c6c22482873c40971a55d766ee4088de9ff1ce21d1c34d410314233223798e6d00f2245e8a4e7a0d495df9866112270f27474cf87212b880c2131ad0311212c971609c25e5a04087a6960d8e0e31778f9e10bc534303e7a619706060d3e78c1799c55ddff8717b428f8d885a563e83f74b1a0ee92f25423c73ff9918bebba5ace33276370717aca5c6a9a6ed129dfa037b64fded916b0051eff627ae96b362d8b31b5f832b4dc25ee25eb695ae0a1e4ce957831f5f46316868cf79d646cff98225920ca3f37d39fd2ce391608bb90b5512a1bd505164b23ed6d7ffbbeade515cb5bd2ce73cc0b4d9d2bce1bbddbe974bbd6ad4087e9aff6fb6db73c034cf860c5b26bfe8bf977de51fd588527774d8dd0828e8fe3193e549187174ee677464f3b55a928df54d6e898eaa396a838a98a67bbb660da77d529d09bcf3fe7df9c5993a6b8554c6e0c3bcf38b114dd8bd9d72a5c9e1df5c6072956fb6c156d1a451a369599dc983ec4270a948b3af716f3670c32a1d0f355987acbf26f89a1f0018a4ce76c8ceab731cea3c1c72734d3bcfea42e9ada3d719a0ebb62952ef6ede9a31376aed3d9e745c969c589ec2f46e7dafc7f85373e3671f05227630975e9828e260cadf52bc2bf832c8c313e32e16949c798c53afd5487071f98b85c0ea462f07189bf73acf0357361cffcb044f22ea8f4de6c6e73250af38312e8ff6c6732be3842bf9348866d8b39cbfa2189da5b5e6b41e7f7e637723cc81a3b7adcf88884513cc7a58b633dba461f9078362d5dccd399f9d38f384c9a5e17e46ffc2a19e308bee48f7b07b173ef5735628ffb398678eb30f633428f3b6b9ef375cc153266110877d54ec2ef0f456ca32acecd5fbe3be94722fc1745e97a8bfbd73e10d157cd5b691fd7cdd2c721105a0e3a7a381bf19a6388328d2a17f45645876623870b5ef051083c467e2add593ab54d8e0f422c9e3e3d84f67ca1c1333e0691ce9873a61c1d336ca5c68720d2fe2ca6f092c74720164cdf880da2a3b31cf40188425bc918a6baad832c071f7fd0e7dec5f0331e7e3c7e40c61c4e082f7bd1240b4908071938f8e8435f25426adfdb67791f7c58bdbbb306f92ce819432a951d698d1d950a073ef6a0b6cbd1f3baa6ceb0fd871e12633a5b725cf2907710a636cde51bf1e2a1eb1332ca79da2799bb835d2f4b6faa41daa950103eecf06b6fc807f1a2091775c2471d90a24eb6a44fe76c26a783c1ff34af3ee4e7e8133ee690105fa154439fc6923fe450fbcbe36feb9bf33a4ef888036652736763bad28fc2c17459d2e3eee20be2e2133edeb0e9ca0d59b2fb729b01aac689c74b2617c4757a49096d42392d72428e471d1d4b124dfcfef2e59adab516c32290648237fd24fe4cc91ce408020926b43117cf49e7ccb6b818924bdc26d6277307e1317521954aa5124688c4129a2c71e94945c7a02d211b9054e26c951266ab93285b95849ad54828ab82218184a5e57a41490bf916b44734a293798ad43a65a5c411c614b7b319f4289355cd40d20844f6e2f5bb923002933ffdd9acb3fc352e6277693c8a5695113b269728c22c2fe7cd27a2e5720bc81a9d76e4e851060874f04081054690811e3b00810f248900c9f13848e0010f5440820809480e0162438718297880c4102036748891108e1c0d9014c20112423062c33c4c86cf39f321950a0a2483e0b1463a03021241a8614387182f200302924020dd7314a525fffb2c034205669871585001c91ffcc003e401923e2c40c207100648f630c601247a5080240f0890e08122b943022476c032cefc79862fa13d2990d4e1db531e328f9241ad0ca9544620a103880d1d629c1d6988a100c91c7a494fc8b4f3c28ab812393832ac3b68392f36c8e2e0cb72cf99cd060e66a91d90bc21b5edd0e2f92fe23250c003c70c246e40fdb6dfcdcb92bf98ca40c10e327a2069c3c9c52c099784c57f8b8b40c28637bc4c4cc6d16157f281640d07bd70e93356c9ec6135b09a4f8b297e2d66d7422a9534a45950398d593fcc831234a82e9bb532fc7fcba22192332483dcef7a2466588cb1b42c28159a2ee6cb7016b3e98c97b2bb72e3387048c8909655fb42ffa9194bb52019c3ef711be6929b0ede11033f3a43c3090db25e164918d44bf178f3cf62ff1f220143f5a2d57433a7d10e9241f205777c4d6779ba3097e385ac2539cf317abd45ee023fe7a6cec5181790fd395a7a4109f7544ab6706ecc7bbad924d102b639460fdab46ef69464e11e5db16fb63a42772c20d47df795d8ed4f4d72055b4b8915cc5a4aaac06a29a142aaa5640aa7961229b0418d89a7fe114d199228b022ad4bb3b83145462550f04abe8aa6870efd4d88189227f4f9beb42c853ea452e9815ee284e3fd93c586157919bda409956997940fd5398e7723004c9030e192d1184b6b6a47f19770bce7fc9adde1b6474a409a9c8e9fc1cf73bf49305bed4cf96c96348a1224187f75427965a86a2f447284d3e6d872c2a51351a611ca70a39dacc4a6119aa4086b65cc41e8bbcb625912227ca136b7e8f00ec1e469295b5d1622321221f8ee23ff2b34437d1c04afc26539e969244038fac90d4a370bdb92e7176968b17cb9f7712b457cb124b7beb1e12fd396bdc8424bfffd9aabb11a5e98bfdae37d69f23f8bec22bbf018d674cba59b9f4144178f7ead95fda0d26f8ce402efcd96665c102e36f38e17caba5ba46b327fead96386cb16cfa8cba8d62f1e833e520bc7abc7e3cb862090082dee8ea532e714a562b3592c6bdabfbc9643c8b7b2c0e4d776cbe88a92b10b22b160e433b05890af8cc82b14f95c61c81769852eda84294d6d39285d1811569849863af197f65d2dabd0d3e70f96597d938aaa30e46f4e8fd768901e3b72f088a4c24db2faf3eb88f620838a35e4ff9b85870522889c22df1c62342cc34557a648c7cfddb2fc5a8a3f3cb8a04dc866f1430a5ff0244b4348fdca751468b43b1d713b23358d23220a74da146a759b11444261d6a0d6b1c683500d511001855e2ddf7229e5da9efe046fa14eeee9a08827aa3da951467db34935d209eb459763b76649bf3a4ed4b32e6530e1e126f24de4590a2dbffdb9a4941f5201b971520f1e66e0b0913c070e4da44ad465548d6d882a04e405914c709ae5cd781734ccb321954a0e12261664e9163f474f7679f748638c1da9470e22973895d0728a688ae5d664e048328858828f2f5289f65c6d3d2f31229448be8be1b69e2de6fc1252a93809383289e545ce3ff565d97a1352a9e000e9119144211f189148a0374b9779c3a66c55432a95184420818bf79b36e634a1f612f285c8233471f9d395b147d5c5a488238c316b22eb74e96a810cf0483c8e8d1b62d80d22d288c49c0eaab308cbb47d48a5e22984471a3ac48830a2d29be667e7c5d740381059045a1a4f963eb3b34d432a151e3c34105144fdeee9a3be279b291f4412e16737997b4f62f7544460dbb615d77d995c4ee410bb998b6659b3edc9d0106bf2ea531ee743e9ab1086fd18b273adbbd44184786634b9c9199927cac82050d2f4accf9fa5064b10ec9c89ba14df7975138805d736f3bc172f860a885368d25ea164aff7fcc3ff67a74ee82c39d50f7f6ed0b4a64f29f9525accebc9d12dc93da960428a3ec67cdebddd3a635a3019c5b2e868be6dfa66d116c561e6f3a7535171694f42b19dce720b2a62501c1eeb6467cc9dcbed1386bc6c1b8f655a0e9e154c3ce1c8b88cf226e4a37f397ae0204127d8701b3259e6f1112e27f0b03b97740c1f5ad68480d8f80761810b48108210a0c1e3a8b146572a206a4c36716fc9cee20b97269647da295597d17ca3904926304d7ffad254286d828954f5ff9e0e6a4477588cc925f60e32c84faafbf2969630cec8f738ab2fe78d2a6136595ab2d1d661a587542a2095ca09c4e80019271041a59274e4403c3a30a1441e57343f7e16a4dd3809d7ed2513f3dc4412cd8690f2b2bf8787a384834924bcdee81bcafc63aa0f093554cbae5aff9579f482c923ce31c9963fe564cb2e47f89d54a926ddf2fad3199346f09f2e28a5b1634d2c46ec72d7cbe8913f99fa59047beeef6ba9ebc0867f60a20883101132eed9a9bd6848a572230d34769288358399109964422a951b2d30c346072a951e386ca461868dae4c10f1e67cba49b72cbf79e910b89c83bc50efb289d278a00413432c68acb9a07d2dc45285795889d18c9f1352a9ecc8a143c741e303134220946dcc10b3e15b0c2783405f899bda1f2562c51da98c35ce0b72a8c1824a05031341dc1ab4f88ec6ab51f224108831fd222e523d8f678c0920d2fd252f4bc429c8400f1b37749491011b4cfeb0f8bb8eea74d263f8fdf07a6e78ee28e661e73e387a2f27ef50f2264c3e581f5f94561bf3cf317bb8acf389e88b8ea7417ab043896effb0e972cc2779283e53c94c5a7882075c1615f93b9be7319bdc81ddb2337349133b24f2cbaa63c87effc9983a9cd364fef09a6569b7a70332e9c7cd9bbe183a329339a81b443f94f0519d9ac8a1fd24733766d7240e298f6dd5b376b72f610287f556dbdc5d44dd32933764e3396afd63fd299db8218bd397ebf5c2cc05f160d206e64e793ead3a224f0ca954266c585299b54ebaa5b0ceaf01f531797a31cb3ebbc91da411ec486ae438c14dd4e0e78be3614f77d0f03249832e2f18bdd8b636f362d21b9da0212d968b927999ecfd05470e1e677206a46bcff76817357f9c9881f5a8eb26f73dcfa6caf0dbc98d2da7f8caebc8800b7ba1b355e9bc67eac123f53827988ca1163d6534a56cffd79e88e1a083b896fa64c9325318ea17a47d965a0c72233401031aeee40b67b835f1821a2e181d9874c118ee840b65b860c860b285c5e0de60a28535b8932ca44af989ab0ccbd3a221139860c1340def6e23b6546c3430b9c2a6714e267bf70d3a132b146baa26748dade63a6ca80132a982316b7d1af53d9e6534a1023a75507f1efe4fbcec640a78963a5e8a934ea4d09cba11eb2ce8a9d2a2b05cf92ebcf4d15f93e30632630285d3288b8feb0fc2054d1a9327d8296d2cdc5b8eb1b34c9c90bcb8606a359c9326a4ef726cff474df24c4c78730b5a96d713a5634f9650ccda9fc7ecae8f125eb9bc9dfda4a37c2c059324bc62731f9b3e6d163d21954aea81e398d1638284a39e78efdabd9d4b8d31394299427dcc590ee2bfd31d46b8c393bfe8f08f19ff491196b4b8b984fc52e57234071322183b5b8c2c39d723e343b8e3bbf4663b2a74dd132128ef9dab2bdb5bdeb647e21104fb845cd51c4ea34b758e091032f159b22edb2c8652e290fcc2e8f14ffe8ae9fd7d7188bbca77d3d3f56d2faa3e97c2259d2bf50d1b216a80e4e83104092f1e213c7c698bfb62caac40b28b34b430caab5e947d0d0e358e0e1e125d2c9a4b5f73e2d3e97d925ca44e08ff101ab3a01ee3423b39be2db86a06534b6ed17c78e98ad1623aa14a6ca1de8b293baf85d5beb530b3644276503a787a8a868416a528cb244d93fb0973167bd22f9db7b41d3d20b2d0c73c675fab7f9634749c3102d005492cfa742debb97ad896be904ae50c092cd2e173aac9f5ad6f5487e415b8a0b498f6aee9334f882bce2e07e96f2e09fd57da90b4c2ac652f0b569a4c9d8c072b3c0f67fba24b3742cfc3c68dd4c346881a203d9219abc8d234660b1d3cc7d4174854a1dd78898afca4f3cc541c37f3f9c6ba78eba2a2ffec5eda4564d3f5904a450592539c64b6146e2d8a85a6388f5fcb629e1ab5bd494ab1244a9bbabacf163a92900291dbd15f16e4283d53328aa4bb98d294de2343668644147e7859969763d2de1d762014a98f8b90ffdd19271ed8e001f23972ec481250a8d98221f9449a2d18359078229983fafaa005215bba249d4076b675d98c41161458cc05ca5cc058d90326f080356ef40831c3068e0b14184b826122408000acd117a000a0078f345630800024334e1a66e038373e04c06347a4050038900f8a2dce468f1d213c6e80804428b5d08106a2458fc46316490739d04023a161008a2cd6d081d048681480128bb3d1e346088f038bb3d1430736fc1567a387e740230d109008c515bae872e93bf9e8e66ac862268d4a058db4034407361cc4130f1c367aec3801a515762c65226cf33609252b6a6f3974f2f8f369b3635056a1e69c2531ef96439a1e92ce382ca854785054c1a868c0d041062515d576ef0bdaa346fd90820adb44730ad37fbe7fb88aceb3424cd1062d3a1f5e165b56538a7fc32cadfcdd5254a4306c923df172144d9a1d853b9a774c795c082d2c0aa36993c9eca455de2814c6d0e59210ed529e34a0c8b37edfa72e1df3759fe84363356ccb9b12a5273431731f956fef49a713ca7b6c994fc26b35c589e5789f057517b72d46d9c472ba9e5d8b151b744613a58da9d9ad99095cd069dbe59742c91c5130b1c6b02e517be8a4d6f3bb18afc51288dc9711b9133bcd2ae1f68f0c297fef31cc144a1c7be182501d1db605f1803289859794f8a06492247e17f44beebca7719b12094b7fb416fdf25cabdd418144f3fd72a9d06d07944758ff374a7cf446133ae3028a23bcdb7c5bab17eba5b31ac179f8a0afaf2ce367454061c4519450d31b6fe39b6f02ca222af90c1809a9196ef67d4f8f288a48db4bf6d1d74f043aa61b2d8a8e88f0b478a53ae34f65890e8116c3494f33427e86dc10a9f8ac0b7117d6bd53885fce394edfb78458186bd185939a4194190a428da101c3069440940184293e5306e50ff66ef8923eaaf694ee875c96daf75ecb4ebfa70fe9d9a8e11ba4a7cc173ed452f6bca02632a613ee4177d19d47495137a6d343219429a53a758e332f0f286fdb175e16d3ce48c1c377aad24727d74eb7424440b9839ea53c6942cbdb416f91e185d1e94a455e07fce474cb2132b5a07d3a6cb2e9c3b5c30535e91c1ed362f8bc3aa7498be9b1e3a4400e8be76baef9947a588806250e4b4aaf3b43bf6d76a97450e0e0f7ca89f0a09180f2064ba79059fc20ff6d366e60f37d6fb4a3fcda4e698371ddd23af48ec6fc52d8f0861fd130b616650d4b992e683b21935a09d5d0296bf5301b64850ea721975293d62febd87553d0b078ce6052830e6d992507e50c7b98ed24ebc4e5ec971050cc6032511b3c5b943220434bb2652d974206ce458ddbb26627e36f2863e0b4d42aa351777437e7c6062862c84f99cc6d1963660e92410983979d4b67ae120c8af6173b3776b8efcd17d29e6b555c5a8d598c87542a6f238407080ea67821cd3167fdf44fad2f46e982b14443f5cadbc58f9fc285377e89ef8f5da7370b650ba9fddb6fbafdd17db280a20535e54fae3b88f1d441942cd83e279e57e761740c18142ca46fb3c79910e5b219e50ab82c69f02ca9bd6b3f2956505fd49867a9a937326650aa80b8887e7974ca14f53901850afe8a6b8ced96c59932056c46864ee7b914b25e3199cf4bc9131a1d94282c9bec781d4dadf76e50b0fc655b1d7beda83194272063c8bf243bee6fd08780241d6bb0804700f44071c27921fa6d424c53e64df085dd3855179f44e89860ba182343d5ac65f9b304375696751c61eaf5a20437749241482b2ff15992a06aa8ddbd4d2e2f37a020019b17253ed79e54b12947b07dd65a5337c393538cb094efb288f33764c70c2845f035b6f7c64621958a0ece0009230c1798a0471a6308400d1422645b7d97296d6cd71b024294279dc5746ab4b4108a10d47ff1da653d3d2d55881204e57b5dce127273d08b02044f461333ef9f9fa5fe22a533cb2fcb922ef73bf9c29213ea42eadfd6bcf4821dcbebee1c5e2fa8644c78d16c5a27295a7e41bdf88d3226bb38b7a7be8615332dba21ba585e35559dc34bfa2e9ce422a169330619c7b4742f135cb025ded5938b9dd365b740872c791a843c6cb124d4bb985cf44da7530b6b7fc72e839e16bbfd7d7c7f41e652970726b3e855376367499e78ab27b24066acdd135da7612c4e9a74883a592d86e660e106d1fe9df57ec3d6af30ee32fecabb6475d8158e57eea84bda57e6d20ad4c37f76e8d0a76464455a539beab660d5964d5691d69251befb45bb5251600219a8892afcccefa15baafd94312195ca24158b96328bd67f26737227a8b8e520b33b9aa5ca0e9f423bf3243232c6c3145d8b16b4ef68b9ed454b118685a863e8308ea2308c8110844110040fe71c93114820384c1a8b850312b96436f8031380400903419128100b442181380ea3100a621886611804412012a28841483a8ceb4b76d951561b1793edbb5a0bade15a6cbc93904924efb75dd761f0f148bd62751f6f91c16f3a66513b8d1435b51be019c47e888e4409a52606b5f3550738c18d1cbfa3631f78ae6a3d5b788ea7f9ac73ec542bbcb484044678942daef77ed33bfc5eaa8bf0e8e8b1f2bb2a28ba55a5d648eb6731e114bda69c6b40f71f773c9f99ab5201a411b7eab45e511f75b52f56f2ab222b4484d4ec54a6fa3d62510dca1e8260821fdf0592f0825e97d61f52a2e60fc07835b98727dc664103d0bc03a69a3e09796570482860507402cd8eda34f1a75707ab5574b3d3f771ab4fc00e0c968b1282dd25675213feec69eed61efbdfc60850620040e0313464e4df56ce6e3c292b8df2a27bb19107c66ce0f1f123ce860cb9e8b51cd27162ea7a82c81165988e9c80eea7fb594a98559cf359f3a8584bec9562b0f2b2c7630e26cbfd32ba1bd73d8b4089daf2e12ab68a9d621d73b5eb97de5b26d5b7b3ce50fc9f21a731c0780733a820ef2a783c6fd3a93a2f7d00d9f1dc7064b2255f12d4e986009f312f6fff0b5250552a4fb01c20647c11e77acf410206f6f68ebe6ecd83e07a8a6c1050e71a8836c2cbd63e1d4c9f2a35bfa1ee49c71963370c4516aa5a2422e61bbd9757f242f225af19310754389024729d0ef36545751e02d27f4cbbcc1048409f874fc916d99ccf9650c928dc4bbc574b849718503162bdfdd87d84af3bb783a6aa21af0419ccbf4b786ce99d24f29bb01cdb2bbe6c7029f70f3bd6641b2de1289a59030cc2882deefda4f22a7220c58f48b54b92f13104dadeecee80a3e09612d900255cd5b856b3e34599ce30b58129f2851c48099eac9a4ce1f9ec528865889f3bbccb3ffda7d383addce077be7cfd5df8b1dd86aa91d250b4ada1e33a28d9576f12a502c31ab65bdb1e254dbd8cf561313d41a1f42472ba41eb7356d2b1113fb26e0a3ef56d88019932e2fe87dbefbe85d139095f6a5bc29d7c310443fa6a0295fa5d2eec1f6976a1f17b5096d0557e698e46f2fea527551d09d54304a461ebda6c54f87345f8a5238904a1c29fbca9190e978d04f5551cc254c8e322ddfed6cb37fc23480b726d035392ef9c74b4749348035f7f9c2a326e19e1ee7106c220bd473adb9e0fb76d67fdd90ba992572bcf4acdda7928cf2fd730cdb37ec0afbb29e01b4ffc74e23b43b2f3a6d72b88079f4950ac2920ddb7f1f823dfecb5133467dd4967dfb697ff95f25cbe8cdc3455775b70f206bed89f80fa85c176d489c92465ba20dad001f2259dcd41a6205b6bdc60ba04538210898f9289a52518bd86784c2032b4f83161730dc35fae05b121a0110c5eea1802860f7baaeec50edaec82655fc8c08918bbbc6d055f1b165d82a99ce1cb8f481e6f10f2c73396885fac3c43260711f657117d20a704fb1ce3525cb15dd04d870ce3e21be152e00cbc122ab9216332f21626d51416dd623e02355604d42a94a5eb81be0619fc2d62a808c4fc566e1614c97c99ad9f43cf942a43969e1793ec3eabf58835a87209f9998a1d4571b300e8bfd2e4cb103a735bc34f1ba2611f03e17c31fd51655759dcae9131aab354772d474179a096a259af4cdb8ba0f421f67b035be4a34b5bf8b9c962c149c558a359d25be48815761f3c1ef4607596aa608746016be5f8223f6a95bd1e7e0a7cebfaa467bb185f1dfe5a804fdda1497012456507a253d949cf3f0d929f198249cea164a6b7a0342ce27a1dc458f1ad97e1de563a9b149273eb40713d0f1bce7371fee14fa4b00e31b11c70aea665fd7b0ba4eb1f8206740c6091417802d245b97c2f8d8a943882c573d2946ef9cd4d3ad4e3d201e833e9a7e75533a2af27323ed0c8982d9bca55a7b2a999255240fb8120833cdba26b9729c7c538a756fd404294901d0dbfcc115e22bdf0150f29b0162a516a1a2d9e4f462441e5163ca7afc42e3bbb1328dfbf31071b00de683c75f531f45cc624b0e20bf8b630bdad6b2935b547011ae26efd6b595c35ef57919357072d28109339cdf40009c106e528424c2660851d11fc20401f68086754f7b52c6abe2ba528f1b3db9035e718e2f44707e9ac93eb9c1b7b4e8014eaf75f08d9c30accb3a624e01904d0696e2bc2fed286a4e15c1a66301ccea25af9e8914722784308a49aa26c7f0c18392b04e07577f20123fc4d46b91624d36cf2ad1221c2ac15973a4c9a165799f10da37b4a74ecf99dff77c3a05772808b3ccc7abec21c5a2c6899273f53ddc385e5c27aea2dbd15071addf2e1d004d47cdbb2eda64e55f59c05bd7864502460ae1b0274614ebb52a2b91155d041e55289f012ba55df2ddddabd65558f2546ab2dba04c25a7f98e77ebdfd63f5bf61ce6a7cc5a2bece2048c096abf29f5c46d5759d22c70f53b4023c79b6d3e74d121e524e22efa9c3e31fc2794641bc7f4a1fcb797c7debdfa593d8e8c320490649acf00473d6f234aaf2f8d969ea52a698ecb944b6916f19b609d7fc2b032aa7642be79e1cf7587c37c1ce2ac727e37f39661c4e8e6ccf95e2039975034504bcd26b8a82355c253a933c16bd1087889bc4d1165d6d1df7795a85eca3bc49145840d2be26d9eb05249c062b8681b581069392ee0b9659db1a6066d5b313f74caa6c6183d5bc21aa0f5a3ef801d915aa7e9e4c9f57b56c04b8f8aa8a8e5d7ffb58731874fa6cc1eb8a038f7b84b012311550f7370760558a252ca34e3a87f560cf3ab20163732ea81a728707cd264817e68f856f6d89cfeee0118d36707c41a5e11f24ff357e15c61782c069891bb176bc5ad516744076de9a2baabc64b022ffae1dd50dc5547d25b0e8113667bf38bc8d64f9b86e94fd93681e86a8d6348dc4c2fb2f3b2623f3b8b5b7688989a3058df1bbd2037083600b4ea3e47d27ee9aab258e475c26511518d1f6e4ced208d885619c230c98c89ce27b41e5423732106b56ce54bd73a3fd41f7270f49a78e08c922ab7a51a903d65581cc257c90db608fb191c60cfd58d0c640f46748a2401ad469c1d9649e39b587b71b51e48b5e93d4f84f59af5687a580dc705cfe85abdcc46766af6b90ae3c6f69eb871e9024a7e4f1a32db684e8be20c4ec1e7383406ff019c1a399a635bc9d4576efdd8f9c07ff88bc7c53b6f238e2175c4b9439f0e3441931a08a0dc760501e709351aa0559193294188b6fbfa74972d54f495e113758bebb4ce7d03448cdccd1d6c99237bba5a4f9a79f68fd65e279fad67f60d8c6ffcbca74755da39dda336eddcb16813e41c68ce8e7320a2b29078cc6ae2b3afe59b1f28151341fd4fc7c6a30e6f6ee3fdacfa2f6ba26472e6f34903b865b59df6eb991b35b9559a9634123fbbba4b8c268835c06a914b4a5832bd70f98fb0ebe95cd06a71d070dc21cea56b2609d82d8815bf936c23f9fbf17a428ffe9542d98941ba142aea8f7a189662704900d49abb564e5ac6cc36c5ad30287c0eb9328960635b182c7902cb283fa8b502eb11d6ffffb29fd806d3dcabada6cdd036396082bcbea5164d82061075240287441415fab2943090b2f6063c80d7769a66cb4aeeba3e63a8616d9e33c232fc2210a6d72686519d78dcd14fb2afe9e8bd1a15e6646c942bff13eca5a6c74f17e04a6e28025d356a993af919d90f71fa58150f4323be612802343034655179a626afda11d0870e6f34432649a95cd4e51f28911fd738d4002f739dcf3a0adac636a97413f685de1a731e6dfb86f39665105aca6dd4b7d93a4110bb31f23be92c4ff14ba43e8ce4841a0d00ff2e54a4fc4795350b063ca57ec1290cd14f23fdfe562cc9ed055ae04d2c6dbcbd1ac89940d3ad0e362adde9eb309f727311f32622056288c1363c4137ddffed156d88efc65ce2f73d9d3247c210147fc9924e92a0dde81200065328970cb30c61ad6bde1e2e3e4a9376049cfe3a627b4b71d5e6cbea0b81e8fee4276956918e6f3d4d5bedfd90645b03eefa7df6f7b3a0f82f50fe2f60397c87b0614a8b4209f2694a1cf2cf21bf1cbdb4a78d02901b4149a36c951b56afbd72ccb05bd927f467eff27874bedb921392253f889f16af1eb433ef77b6fd35d8ecaf41ceaa9750c6851dd8176dcc48555f39e9461e66be7e55d91a9a7335fa6490710e61461b51c236dd270feeb59f8822ced1c06dd81c4496b8de40456dd57555c2ff32b2756a83df2adf45351a554f54a39fed7a31f37f38a18e73aeb5b668a8a6549de7e179114fb2745097118f350132aaf24e52d038a00730e4f449188d3ca9c29be505b964624c0859cbc429652448f5bc0ad6a8fb9824248150ca746fd01376b39f31e73684ed20566d002d7ca31696870f30691b29dc66969073e6e7a54dc5283beea0bd21a405b512f0e8f36387a9fe0ed5098bb007b4e65d029ebebaf90307702b11cf234ff48d1a4371dbeccc06dc88b2e5c6fa1c643c9d88ff57ab117cf5ea38794b4eb39a5939a6174ed7f3346ad5ecc7c6a49cd354468cb98bfd0dbcdde9af8c8d4d967baa42902cbde37a37df8592472ada2d4296b86a9824db34de380fa70512f10a059e42c423e8854b8e87ab1b96fedf06559b903ac6adbdbe36946bded634d59e6b12a48fa64446d56fffca0131ee4d3a88edf27a6b2413797b675050e44c48f49a0571ac7c8e2b657817b59e53e4dbb742a326046140a6bef9b37386e9b09d236d7a6f47aaa66aba2ef616c83173ab056b250e3b87df1152017fe5f4f17d8e2a114a11d5621290f54f70157e9d595c8ae6901e27556aaa868d71b1a9fecbe6ddafd60f4653bc7cf2657467de0408c16252db4e2181a2d7f1d37da5681c4f7695057e9e640a3e9159179590d6f39be5966c617449969b9d4be0442bf7d3df744b296b09d38e237c9b45ef2ffcd32f50e32ef6b531c896db7af6852e96345b14ca5e32aa0dad537acd68d94a7929ca0d10a587ae9bce1fc0a07fe7d3d3ba5611aa33634f165ebb15e58b01634921081211d944cefdc5d078606ca387e3c08a4758d1e376b86972ade1da43671d6f5d1dcda5205e69c7a148a5b076d6d0e8e6a3fe606f3f38395d3a97256bbb55f784106d3cc37a7187b5e8dbbd16e261d5889e114881099e75f03f95b991c28c824533f779ba63d83eb64a9c6144285c3fc94a8ed522da9f54b06ebb20a199e96745b658af1eee3466a46c997a8f7f94a936ebb1d8a6fb1bb8959a1bee1ee73ed32b5391d393d26e1efae7ff9a2944ec1b07e3dcefe16e07ee7c963402e4226f209f7c384d0bdcd49058c6ffb6e078ab2911809c545eb059f02caf36e5740c4dc6650f65374aa047899823c143ed8c94acb8350fce2317339e697a8289cc17b0aed88cc63eda09b2b87e65df24aa5f03ec893fe302c3e83d28f67e75bea123a649b55ad077bb9702f87772c963c52a03aed65af93ccf67dbef5e8f0c141f915c8eea385ac015254ee784b5b4558c6a02f1323c8a3518b1903ba56d1934ba12161606b9aba8d7a8cf61784d1e06d9c799df9f2f695cefb7259b57bfe2c8a8c48576ab464645af37a2cfede64ad751055e5a944d385906af6ab033ea9616ad1c1c478d4aee90d013ecf20cb78790966f1d364a068816b9a4c1941174bb7d74f1379a367b510b86c7d40255731e3150644e3c8e9371fab3579a073bf44271734c9e067a97bd4110a9b3ba36d1a5fafe812224450aa35fdbd8b75d87c6fdcfe927984fe8b6474350fd6de9f763fbdc1d012b15fea06a437845a3635071060b5c41abadf5c71704bdda1d198a81f90a4b949d08c4f947c731e88e850096489eb6f0640ebc75215d643675cd82492dc2fc21b11b6762600e09cf9acf75dcbba967c800af1e0868cc918cf390baaaedf64f46db9c672ca234e3e7e73de7256cf860a4467df184565443bee855ddc1064f55500604301a83959cb67a82571f7f96c0fd630beff9cd1c2de596499070bc7975f8fc7ce824298148473a4aa2e9e223840740bb6836e1328605252b98305b99f81cba26c79fc20cb524377663eca64583cd85b939a5b4b485aff49b86588a82c32c4d3ae02612ae911282eac97826c7d92ecc99fe52023ac41109c068f0cbf0d87ade0184604501ca37398115f581e0c151185aa48176f3618b151e3dd658a3d817b00442a2e2a9e425e508f85a762e68b8f5970a8aa71c3793d327c06d55e2c038a39d4a3b1ee44b4a4adb8a818fae32713b9673e9127562e639fc8d9cad15e7864707d0cd650a5f619cc8345cf981d42d1fb4ead5107c393cb468ae28be9bb55deecf8ecbc74a896814090c16f635e87e0cf27fe5c96f8dc6e99aa8dc8f3782e1eb663b8dc8eafe00093b11c2cc299786a2303e069787800a5385e9dba8a68281389a62ee452d62df71930e66b915012d7fdc2e0922d6098336c95716431727bc40706cee246815cf13f35a9d2c15887e0cc5272c943891f4121cbbf978cc96aa9159a522a13d255c2885adfcc49b1f627b53641cb5c0bc5c730e509ea446f2b2b95aae315c3bd734b377eac8caacd63cf0ee98b81d26775a2717db6d2b383cb957f87ef60f96dbff3c092320a0ecbc0f77c33eb7552237bc7421af7c9316e52aff31032a7e6691d514b6a30d337315201e2c0255c162e64acf6ecc954d61045a5a9198591f5b9ec447b67222d3d21f5f61cf1a072ae6cc16065bbb4c3261d06e5408af9eff8e6cc66dfb22c6a8a087b362a3939e6aa3ee9d985d07b89ce42e735171991d768abc88661d8df2895c199b27d7af933152f82ff5ad30b4242dbebd874bb2b4fc14a8d256ef54cb2ac0b1a3f21de34140784006b08079d9283f6e280bae3f55ab55b38618a213376ad7a6311f710e2f964a12b25d8440ea7069b1e4dcd5ecfce34e85a8534239a490a01", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503bda640e19aeba3e6175726180a68feb4fe2ea3f8ff288af4254aad2284e1cd0da67cb9ea61c13632bad57eb40": "0x0027131c176c0d19a2a5cc475ecc657f936085912b846839319249e700f37e79", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x144294b2a716cea91dd008d694d264feeaf9f0baf9c0b8cbe3e107515947ed440dee73f78b7dd29f30902c1a3bd1e4a6fcc2f26be088343d3ee011e2660fd02a66b06e5d852078f64ab74af9b31add10e36d0438b847bc925fbacbf1e14963e3797cd4af9ad51d443740f71ecd5850385e98985224628c5ea08209bb2015523f3c1e58d3c3900c7ce6c6d82152becb45bf7bd3453fb2d267e5f72ca51285bca173b40aa6bd104d0260b60350c2fb30d4882437466d66135130b667799ea6c9f52b8a93e0f756448030dcb3018d25d75c7bf97a2e2ff15d02fd1f55bf3f2104fb5b4a3aa51469e802be6504422cd9dd03be638ac3f6dc3a7c0c85a6ace3e72f00480027131c176c0d19a2a5cc475ecc657f936085912b846839319249e700f37e79a68feb4fe2ea3f8ff288af4254aad2284e1cd0da67cb9ea61c13632bad57eb40", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da941478a5a298debb8675a780d810c9b031e58d3c3900c7ce6c6d82152becb45bf7bd3453fb2d267e5f72ca51285bca173": "0x00000000010000000100000000000000000000e4d20cc8dcd2b7520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xe38f185207498abb5c213d0fb059b3d84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3badc26c8cc5114258a93e0f756448030dcb3018d25d75c7bf97a2e2ff15d02fd1f55bf3f2104fb5b": "0x4a3aa51469e802be6504422cd9dd03be638ac3f6dc3a7c0c85a6ace3e72f0048", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x04ac7fe1675e10c0df9c136f53df912e6ae7d2c21778a293c534226f8a3e6a0c", + "0x3c311d57d4daf52904616cf69648081e5e0621c4869aa60c02be9adcc98a0d1d": "0x14ee73f78b7dd29f30902c1a3bd1e4a6fcc2f26be088343d3ee011e2660fd02a667cd4af9ad51d443740f71ecd5850385e98985224628c5ea08209bb2015523f3cb40aa6bd104d0260b60350c2fb30d4882437466d66135130b667799ea6c9f52b4a3aa51469e802be6504422cd9dd03be638ac3f6dc3a7c0c85a6ace3e72f0048a68feb4fe2ea3f8ff288af4254aad2284e1cd0da67cb9ea61c13632bad57eb40", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507bdc521a6b0caacb61757261804a3aa51469e802be6504422cd9dd03be638ac3f6dc3a7c0c85a6ace3e72f0048": "0x8a93e0f756448030dcb3018d25d75c7bf97a2e2ff15d02fd1f55bf3f2104fb5b", + "0x0d715f2646c8f85767b5d2764bb2782604a74d81251e398fd8a0a4d55023bb3f": "0xdf070000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3e07655bf610d10ee4294b2a716cea91dd008d694d264feeaf9f0baf9c0b8cbe3e107515947ed440d": "0xee73f78b7dd29f30902c1a3bd1e4a6fcc2f26be088343d3ee011e2660fd02a66", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195030e081b8260b973b6175726180ee73f78b7dd29f30902c1a3bd1e4a6fcc2f26be088343d3ee011e2660fd02a66": "0x4294b2a716cea91dd008d694d264feeaf9f0baf9c0b8cbe3e107515947ed440d", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0x15464cac3378d46f113cd5b7a4d71c84579f5a43435b04a98d64da0cefe18505": "0x0000a0dec5adc9353600000000000000", + "0x57f8dc2f5ab09467896f47300f0424385e0621c4869aa60c02be9adcc98a0d1d": "0x14ee73f78b7dd29f30902c1a3bd1e4a6fcc2f26be088343d3ee011e2660fd02a667cd4af9ad51d443740f71ecd5850385e98985224628c5ea08209bb2015523f3cb40aa6bd104d0260b60350c2fb30d4882437466d66135130b667799ea6c9f52b4a3aa51469e802be6504422cd9dd03be638ac3f6dc3a7c0c85a6ace3e72f0048a68feb4fe2ea3f8ff288af4254aad2284e1cd0da67cb9ea61c13632bad57eb40", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90c2d1b5c7d0c42562166ea253f7ce6434294b2a716cea91dd008d694d264feeaf9f0baf9c0b8cbe3e107515947ed440d": "0x00000000010000000100000000000000000000e4d20cc8dcd2b7520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99c9a3b7f06834659de03b535ecd93e2f04ac7fe1675e10c0df9c136f53df912e6ae7d2c21778a293c534226f8a3e6a0c": "0x00000000000000000100000000000000000000883081121f2fe7271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x7b3237373ffdfeb1cab4222e3b520d6b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950b871ef760de854456175726180b40aa6bd104d0260b60350c2fb30d4882437466d66135130b667799ea6c9f52b": "0x1e58d3c3900c7ce6c6d82152becb45bf7bd3453fb2d267e5f72ca51285bca173", + "0x15464cac3378d46f113cd5b7a4d71c845579297f4dfb9609e7e4c2ebab9ce40a": "0x144294b2a716cea91dd008d694d264feeaf9f0baf9c0b8cbe3e107515947ed440db06e5d852078f64ab74af9b31add10e36d0438b847bc925fbacbf1e14963e3791e58d3c3900c7ce6c6d82152becb45bf7bd3453fb2d267e5f72ca51285bca1738a93e0f756448030dcb3018d25d75c7bf97a2e2ff15d02fd1f55bf3f2104fb5b0027131c176c0d19a2a5cc475ecc657f936085912b846839319249e700f37e79", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x144294b2a716cea91dd008d694d264feeaf9f0baf9c0b8cbe3e107515947ed440db06e5d852078f64ab74af9b31add10e36d0438b847bc925fbacbf1e14963e3791e58d3c3900c7ce6c6d82152becb45bf7bd3453fb2d267e5f72ca51285bca1738a93e0f756448030dcb3018d25d75c7bf97a2e2ff15d02fd1f55bf3f2104fb5b0027131c176c0d19a2a5cc475ecc657f936085912b846839319249e700f37e79", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da931af86d373e71486197fc6aa988371d68a93e0f756448030dcb3018d25d75c7bf97a2e2ff15d02fd1f55bf3f2104fb5b": "0x00000000010000000100000000000000000000e4d20cc8dcd2b7520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcd5c1f6df63bc97f4a8ce37f14a50ca74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x4930146d616e7461", + "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3798493b55793e4561e58d3c3900c7ce6c6d82152becb45bf7bd3453fb2d267e5f72ca51285bca173": "0xb40aa6bd104d0260b60350c2fb30d4882437466d66135130b667799ea6c9f52b", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3cb77c25e3ec8de640027131c176c0d19a2a5cc475ecc657f936085912b846839319249e700f37e79": "0xa68feb4fe2ea3f8ff288af4254aad2284e1cd0da67cb9ea61c13632bad57eb40", + "0x15464cac3378d46f113cd5b7a4d71c84476f594316a7dfe49c1f352d95abdaf1": "0x00000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da97a47fa8dd1bda597da4e7a66ad5207780027131c176c0d19a2a5cc475ecc657f936085912b846839319249e700f37e79": "0x00000000010000000100000000000000000000e4d20cc8dcd2b7520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0x45323df7cc47150b3930e2666b0aa3134e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb38c7ff51c56ecbe58b06e5d852078f64ab74af9b31add10e36d0438b847bc925fbacbf1e14963e379": "0x7cd4af9ad51d443740f71ecd5850385e98985224628c5ea08209bb2015523f3c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f44de1c35e145cb761757261807cd4af9ad51d443740f71ecd5850385e98985224628c5ea08209bb2015523f3c": "0xb06e5d852078f64ab74af9b31add10e36d0438b847bc925fbacbf1e14963e379", + "0x3c311d57d4daf52904616cf69648081e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xddd3bc77711a3a434a8e6bc9c0e8596f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000" + }, + "childrenDefault": {} + } + } +} \ No newline at end of file From c0316fd6ad9f85d9a4d66c410bebf46b13aa208a Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 20 Dec 2021 10:52:07 +0200 Subject: [PATCH 21/26] Fix compilation errors --- node/src/chain_specs/manta.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node/src/chain_specs/manta.rs b/node/src/chain_specs/manta.rs index 3ac86ebbe..b72784d56 100644 --- a/node/src/chain_specs/manta.rs +++ b/node/src/chain_specs/manta.rs @@ -193,10 +193,10 @@ pub fn manta_config() -> Result { MantaChainSpec::from_json_bytes(&include_bytes!("../../../genesis/manta-genesis.json")[..]) } -pub fn manta_testnet_ci_config(id: ParaId) -> Result { +pub fn manta_testnet_ci_config() -> Result { let mut spec = MantaChainSpec::from_json_bytes( &include_bytes!("../../../genesis/manta-testnet-ci-genesis.json")[..], )?; - spec.extensions_mut().para_id = id.into(); + spec.extensions_mut().para_id = MANTA_PARACHAIN_ID.into(); Ok(spec) } From a43871491d859d52b7c37c842ce01c853225e1a6 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 20 Dec 2021 15:53:08 +0200 Subject: [PATCH 22/26] Switch check_runtim_version.js exit codes --- .github/workflows/publish-draft-releases.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index 7cb7fab79..a148d05d5 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -447,9 +447,9 @@ jobs: name: check if spec version was successfully incremented run: | cd ${{ github.workspace }}/dev-tools-calamari/runtime-upgrade-test - node check_runtime_version.js --address=ws://127.0.0.1:9921 --compare_to={{ needs.parse-runtimes.outputs.calamari-runtime-base }} + node check_runtime_version.js --address=ws://127.0.0.1:9921 --compare_to=${{ needs.parse-runtimes.outputs.calamari-runtime-base }} echo $? - if [ $? == 0 ]; then echo "Runtime upgrade failed, still using old spec version - ${{ needs.parse-runtimes.outputs.calamari-runtime-base }}"; exit 1; fi + if [ $? == 1 ]; then echo "Runtime upgrade failed, still using old spec version - ${{ needs.parse-runtimes.outputs.calamari-runtime-base }}"; exit 1; fi cd ${{ github.workspace }} - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} From bfb556df399a0215322348f74d0744ffefe522a9 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 20 Dec 2021 15:53:50 +0200 Subject: [PATCH 23/26] Disable manta parachain runtime upgrade test temporarily --- .github/workflows/publish-draft-releases.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index a148d05d5..efe1ef5f2 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -291,9 +291,9 @@ jobs: - name: calamari chain-spec: calamari-testnet-ci - - - name: manta - chain-spec: manta-testnet-ci + # - + # name: manta + # chain-spec: manta-testnet-ci steps: - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} From a6bf4c44460829af35d573d4dde57a4395fbe6eb Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 20 Dec 2021 23:35:04 +0200 Subject: [PATCH 24/26] Use correct ci resource --- .github/workflows/publish-draft-releases.yml | 55 ++++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index efe1ef5f2..586416eae 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -175,6 +175,12 @@ jobs: with: name: config-for-integration-test path: .github/resources/config-for-integration-test.json + - + name: upload + uses: actions/upload-artifact@v2 + with: + name: config-for-runtime-upgrade-test + path: .github/resources/config-for-runtime-upgrade-test.json build-node-base: needs: @@ -267,13 +273,6 @@ jobs: with: name: manta-base path: target/release/manta - - - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} - name: upload - uses: actions/upload-artifact@v2 - with: - name: config-for-runtime-upgrade-test - path: .github/resources/config-for-runtime-upgrade-test.json runtime-upgrade-test: needs: @@ -291,15 +290,15 @@ jobs: - name: calamari chain-spec: calamari-testnet-ci - # - - # name: manta - # chain-spec: manta-testnet-ci + - + name: manta + chain-spec: manta-testnet-ci steps: - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} run: | ls -ahl ${{ github.workspace }}/ - mkdir -p $HOME/.local/share/calamari-pc + mkdir -p $HOME/.local/share/${{ matrix.runtime.name }}-pc mkdir -p $HOME/.local/bin echo "${HOME}/.nvm/versions/node/v16.3.0/bin" >> $GITHUB_PATH echo "${HOME}/.local/bin" >> $GITHUB_PATH @@ -329,10 +328,10 @@ jobs: if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} id: create-chainspec run: | - manta-base build-spec --chain ${{ matrix.runtime.chain-spec }} --disable-default-bootnode --raw > $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-spec.json + manta-base build-spec --chain ${{ matrix.runtime.chain-spec }} --disable-default-bootnode --raw > $HOME/.local/share/${{ matrix.runtime.name }}-pc/${{ matrix.runtime.chain-spec }}-spec.json jq \ --sort-keys \ - --arg name "calamari testnet base" \ + --arg name "${{ matrix.runtime.name }} testnet base" \ --arg id ${{ matrix.runtime.chain-spec }}-base \ --arg relay_chain rococo-local-base \ '. | @@ -340,9 +339,9 @@ jobs: .id = $id | .relay_chain = $relay_chain | .telemetryEndpoints = [["/dns/api.telemetry.manta.systems/tcp/443/x-parity-wss/%2Fsubmit%2F", 0]] - ' $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-spec.json > $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-base-spec.json - ls -ahl $HOME/.local/share/calamari-pc/ - manta-base export-state --chain $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-base-spec.json > $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-state.json || true + ' $HOME/.local/share/${{ matrix.runtime.name }}-pc/${{ matrix.runtime.chain-spec }}-spec.json > $HOME/.local/share/${{ matrix.runtime.name }}-pc/${{ matrix.runtime.chain-spec }}-base-spec.json + ls -ahl $HOME/.local/share/${{ matrix.runtime.name }}-pc/ + manta-base export-state --chain $HOME/.local/share/${{ matrix.runtime.name }}-pc/${{ matrix.runtime.chain-spec }}-base-spec.json > $HOME/.local/share/${{ matrix.runtime.name }}-pc/${{ matrix.runtime.chain-spec }}-state.json || true - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} name: fetch config-for-runtime-upgrade-test @@ -360,16 +359,16 @@ jobs: --arg relaychain_id rococo-local-base \ --arg relaychain_name "rococo local base" \ --arg parachains_bin $HOME/.local/bin/manta-base \ - --arg parachains_spec $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-base-spec.json \ + --arg parachains_spec $HOME/.local/share/${{ matrix.runtime.name }}-pc/${{ matrix.runtime.chain-spec }}-base-spec.json \ '. | .relaychain.bin = $relaychain_bin | .relaychain.mutation.id = $relaychain_id | .relaychain.mutation.name = $relaychain_name | .parachains[].bin = $parachains_bin | .parachains[].chain = $parachains_spec - ' > $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-base-launch-config.json - jq . $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-base-launch-config.json - ls -ahl $HOME/.local/share/calamari-pc/ + ' > $HOME/.local/share/${{ matrix.runtime.name }}-pc/${{ matrix.runtime.chain-spec }}-base-launch-config.json + jq . $HOME/.local/share/${{ matrix.runtime.name }}-pc/${{ matrix.runtime.chain-spec }}-base-launch-config.json + ls -ahl $HOME/.local/share/${{ matrix.runtime.name }}-pc/ - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} uses: actions/checkout@v2 @@ -381,7 +380,7 @@ jobs: uses: actions/checkout@v2 with: repository: Manta-Network/Dev-Tools - path: dev-tools-calamari + path: dev-tools - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} name: launch testnet @@ -394,12 +393,12 @@ jobs: --output ${{ github.workspace }}/manta-pc-launch-for-${{ matrix.runtime.chain-spec }}-stdout.log \ --error ${{ github.workspace }}/manta-pc-launch-for-${{ matrix.runtime.chain-spec }}-stderr.log \ --no-autorestart \ - -- $HOME/.local/share/calamari-pc/${{ matrix.runtime.chain-spec }}-base-launch-config.json + -- $HOME/.local/share/${{ matrix.runtime.name }}-pc/${{ matrix.runtime.chain-spec }}-base-launch-config.json - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} - name: init measure-block-time calamari + name: init measure-block-time ${{ matrix.runtime.name }} run: | - cd ${{ github.workspace }}/dev-tools-calamari/measure-block-time + cd ${{ github.workspace }}/dev-tools/measure-block-time yarn install pm2 start index.js \ --name measure-block-time-${{ matrix.runtime.chain-spec }} \ @@ -410,10 +409,10 @@ jobs: --address=ws://127.0.0.1:9921 - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} - name: fetch new calamari_runtime.compact.compressed.wasm + name: fetch new ${{ matrix.runtime.name }}_runtime.compact.compressed.wasm uses: actions/download-artifact@v2 with: - name: calamari-runtime + name: ${{ matrix.runtime.name }}-runtime - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} name: run test suites @@ -446,7 +445,7 @@ jobs: if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} name: check if spec version was successfully incremented run: | - cd ${{ github.workspace }}/dev-tools-calamari/runtime-upgrade-test + cd ${{ github.workspace }}/dev-tools/runtime-upgrade-test node check_runtime_version.js --address=ws://127.0.0.1:9921 --compare_to=${{ needs.parse-runtimes.outputs.calamari-runtime-base }} echo $? if [ $? == 1 ]; then echo "Runtime upgrade failed, still using old spec version - ${{ needs.parse-runtimes.outputs.calamari-runtime-base }}"; exit 1; fi @@ -473,7 +472,7 @@ jobs: path: ${{ github.workspace }}/test-runtime-upgrade-${{ matrix.runtime.chain-spec }}-stderr.log - if: ${{ needs.check-for-runtime-upgrade.outputs.do-versions-match == 'false' }} - name: parse calamari block times + name: parse ${{ matrix.runtime.name }} block times run: | grep '#.*' ${{ github.workspace }}/measure-block-time-${{ matrix.runtime.chain-spec }}-stdout.log | while read -r line; do words=($line); echo ${words[6]},${words[10]} | tee ${{ github.workspace }}/block-time-${{ matrix.runtime.chain-spec }}.csv; done if [ ! -f ${{ github.workspace }}/block-time-${{ matrix.runtime.chain-spec }}.csv ]; then echo "block times not detected"; exit 1; fi From 1885456bc1f0e88277d6412fb80bd7f35b137e57 Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Mon, 20 Dec 2021 23:59:27 +0200 Subject: [PATCH 25/26] Use correct folder --- .github/workflows/publish-draft-releases.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index 586416eae..871dcf53b 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -419,14 +419,14 @@ jobs: run: | # todo: implement moonbeam-like js test suite triggers here sleep 120 - echo "midnight supply never you faith veteran danger purity tired illness dune token" > ${{ github.workspace }}/dev-tools-calamari/runtime-upgrade-test/root_mnemonics + echo "midnight supply never you faith veteran danger purity tired illness dune token" > ${{ github.workspace }}/dev-tools/runtime-upgrade-test/root_mnemonics curl -vH 'Content-Type: application/json' --data '{ "jsonrpc":"2.0", "method":"author_insertKey", "params":["aura", "inhale connect winner reduce cheese bachelor crucial never metal seat time wage", "0xee73f78b7dd29f30902c1a3bd1e4a6fcc2f26be088343d3ee011e2660fd02a66"],"id":1 }' localhost:9971 curl -vH 'Content-Type: application/json' --data '{ "jsonrpc":"2.0", "method":"author_insertKey", "params":["aura", "timber else work trophy build winner mechanic chunk budget orchard glide extra", "0x7cd4af9ad51d443740f71ecd5850385e98985224628c5ea08209bb2015523f3c"],"id":1 }' localhost:9972 curl -vH 'Content-Type: application/json' --data '{ "jsonrpc":"2.0", "method":"author_insertKey", "params":["aura", "civil cigar remain hybrid glove symptom review what pole lock concert lamp", "0xb40aa6bd104d0260b60350c2fb30d4882437466d66135130b667799ea6c9f52b"],"id":1 }' localhost:9973 curl -vH 'Content-Type: application/json' --data '{ "jsonrpc":"2.0", "method":"author_insertKey", "params":["aura", "output evidence anger invest country opinion girl mouse direct double carbon usage", "0x4a3aa51469e802be6504422cd9dd03be638ac3f6dc3a7c0c85a6ace3e72f0048"],"id":1 }' localhost:9974 curl -vH 'Content-Type: application/json' --data '{ "jsonrpc":"2.0", "method":"author_insertKey", "params":["aura", "series disorder today argue interest pond flight guess asthma guilt road gadget", "0xa68feb4fe2ea3f8ff288af4254aad2284e1cd0da67cb9ea61c13632bad57eb40"],"id":1 }' localhost:9975 - cp calamari_runtime.compact.compressed.wasm ${{ github.workspace }}/dev-tools-calamari/runtime-upgrade-test/calamari.wasm - cd ${{ github.workspace }}/dev-tools-calamari/runtime-upgrade-test + cp calamari_runtime.compact.compressed.wasm ${{ github.workspace }}/dev-tools/runtime-upgrade-test/calamari.wasm + cd ${{ github.workspace }}/dev-tools/runtime-upgrade-test yarn install yarn sleep 120 From 25a056e51a0556dd22152540bae0da514a50216a Mon Sep 17 00:00:00 2001 From: ghzlatarev Date: Tue, 21 Dec 2021 13:23:46 +0200 Subject: [PATCH 26/26] Use variable instead of hard-coded value --- .github/workflows/publish-draft-releases.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-draft-releases.yml b/.github/workflows/publish-draft-releases.yml index 871dcf53b..b41b66016 100644 --- a/.github/workflows/publish-draft-releases.yml +++ b/.github/workflows/publish-draft-releases.yml @@ -425,7 +425,7 @@ jobs: curl -vH 'Content-Type: application/json' --data '{ "jsonrpc":"2.0", "method":"author_insertKey", "params":["aura", "civil cigar remain hybrid glove symptom review what pole lock concert lamp", "0xb40aa6bd104d0260b60350c2fb30d4882437466d66135130b667799ea6c9f52b"],"id":1 }' localhost:9973 curl -vH 'Content-Type: application/json' --data '{ "jsonrpc":"2.0", "method":"author_insertKey", "params":["aura", "output evidence anger invest country opinion girl mouse direct double carbon usage", "0x4a3aa51469e802be6504422cd9dd03be638ac3f6dc3a7c0c85a6ace3e72f0048"],"id":1 }' localhost:9974 curl -vH 'Content-Type: application/json' --data '{ "jsonrpc":"2.0", "method":"author_insertKey", "params":["aura", "series disorder today argue interest pond flight guess asthma guilt road gadget", "0xa68feb4fe2ea3f8ff288af4254aad2284e1cd0da67cb9ea61c13632bad57eb40"],"id":1 }' localhost:9975 - cp calamari_runtime.compact.compressed.wasm ${{ github.workspace }}/dev-tools/runtime-upgrade-test/calamari.wasm + cp ${{ matrix.runtime.name }}_runtime.compact.compressed.wasm ${{ github.workspace }}/dev-tools/runtime-upgrade-test/calamari.wasm cd ${{ github.workspace }}/dev-tools/runtime-upgrade-test yarn install yarn