mirror of
https://github.com/dogecoin/dogecoin.git
synced 2026-01-31 10:30:52 +00:00
Merge pull request #3297 from alamshafil/getblockstats
rpc: Add getblockstats
This commit is contained in:
commit
9bbf8c8363
@ -175,6 +175,7 @@ testScripts = [
|
||||
'wallet_create_tx.py',
|
||||
'liststucktransactions.py',
|
||||
'getblock.py',
|
||||
'getblockstats.py',
|
||||
'addnode.py',
|
||||
'getmocktime.py',
|
||||
]
|
||||
|
||||
353
qa/rpc-tests/data/getblockstats.json
Normal file
353
qa/rpc-tests/data/getblockstats.json
Normal file
@ -0,0 +1,353 @@
|
||||
{
|
||||
"blocks": [
|
||||
"010000000000000000000000000000000000000000000000000000000000000000000000696ad20e2dd4365c7459b4a4a5af743d5e92c6da3229e6532cd605f6533f2a5bdae5494dffff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1004ffff001d0104084e696e746f6e646fffffffff010058850c020000004341040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9ac00000000",
|
||||
"04006200a573e91c1772076c0d40f70e4408c83a31705f296ae6e7629d4adcb5a360213d3c447db0122ce4017bb32df894f060e4529b9122ce12587411c712cfd66ac0aa194ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03510101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620054bd4fc5a852c7fd42ab2ac3c107df6b4012149f0d5cee8843fbdd72265b6294bfdbb99decf1aa592fa6d597c3f8aabcdf7f1b526bc82b350f8b530f599b20ad1a4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03520101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200dbdab22ef5d9c05920ad878c077d25137e226d555fdadde13c6d43e7af24d3411318c7d8e8bf56ae320a5837acb0377a856c60f6818c55ad0ff576aa0105721b1a4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03530101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620063d7188667d802712fb4e372808872659eb322436c00bed39b0b466e4429528bba40c85e302ac83a934036cbfab87f4061edaf535b650b81776496b95d1dc0b41b4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03540101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ec99f3aa1746fbe1fb7476bf6cd1df9a9c8512abf53dcb2eb5420f9b3f069bc0f1560db35eac66bae2972c71b616221a0070e3e84e53a156fde12064eb7e019d1b4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03550101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062002d18cea936ee726ef378ef0e0ec8fa7d855a00f15a2a786364e4db106712e54ea3f7169b2e0f989d8c99ef403b03fb20d243c4729cedd8fcd0da3b37107536d91b4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03560101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620054575ff333c58c6755e717b17682f7aa1692990ed775ec41472aeb5f979406ddd94726c1d03be04fea85b917f36ada8abc91945743cca0766acd10bb0f2337271b4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03570101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200eb80645489b491dd494157be84217c72506dcceee764414a8afb58d382ce948886a02ff85a3c05d36add5dd04c884325158be5de623c6a2129be73ac8c85f1f81c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03580101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c865f6ae7c8561c02a945d8d7be35c13a99757828ad32489299a129afc982e7ebca36fc61dcc82f5558bd30d1a9d84c6e07d9b1fc2e0b8396c7b36c28505b5131c4ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03590101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200fdb2aa42d45ffd30ab98d4797b4e87937ed81f0f17dbc1fef2b4f47000fef10d77e2323ac69b6d5a926a91bf6fcf03fde5c6889a7d621ee26f7e9db426bd41ac1c4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff035a0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f40c1ed72fd80ddad1457359d9beaec0cb8c874c90c0ff7cee177aabcb90012f726aa7c09a30ff696cdee246d8187f45b7bc5814fc6339f588dcf9e56e4be28b1c4ae75affff7f20050000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff035b0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008383af9ca8e83e1f084eb6792c28c14cc0eed726df9fa26898662d759fb034c6dbd4d1c65a1399e5e3e2200765a578db00b32612f6c3ad96b5d0398f23c0fc8b1c4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff035c0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062000a898a6d90294acad9e2718faf87311d500d4aa2d98e9aa5602be24cb4cff17bbe8227648d45b3aa1baf2c2969b57a9b0eb8d31b6006910d7a7ad0943c5e1a4c1c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff035d0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008e98b014104d329500efbb243fcf3266b7d2e572c826ea5522498732587a38be52b036e7e9aa55994c90efdbc3de2ff351f8bfb9cdb845121ea727ff13989d111d4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff035e0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200992bad13d13805729a3cc9770a7136c10b2f9b181c5d6e594067975fa756089896bb2e1685a43a6a3f6e0958f2eb724c0cd513253494cdffe2f1e6a6979ffed11d4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff035f0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062003dfdf0666a27cea5d654d9d713920426ff1f7f3ba47e5d3e9a9c2a7e619d72938bb45cadea304729268fd8fcd99634d413e7ca72c0d6cc867a0e18b9f5c951951d4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03600101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008dda679984517a1d295db3eca85efb74b2a2d0ee92b10e2d3c5168267efb7bf75b84ffb8c727663624e6b4ef0ccee96056fa542a6e1da42e92e32b41fa7664a71d4ae75affff7f20080000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401110101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620019efac36e03a9d87aff5fe9de7807e87da78efaa1a259808c28d48e7555a2ba98eff929d78f9fec01c1a4ea9a7ce6928bf2c96502287bab802bf1ab703a91ecf1d4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401120101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620006f80291b86e17ea36ada3b989f5d9743fff878752094480a232f7a68accbe86fb094ff2e4bef297585e485c70e88eddd3562631508120d52163723160a1d4e01d4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401130101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a4b2f449eff2bb73739aa456656fc63382378ccf3e5cd6c5d3a5cdaf74af7e2af68ec1cbbd467afbe0d245be195ff67c5ac52eb15367e8a0499e5c68164b9dcd1e4ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401140101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062001df72286ed3ad5a6b562382f7c57b0ad167c533dd92470f3913b62c6a06414ec5d63cab506932c8ca49ca2b8a895f6daa61377bf7aa5f9298e3c4c9fc583e7da1e4ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401150101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620073589e97e534a068f1dd2aba3ac9befb51717f2a90917fa393528d78f8ef02b3835265f34b0cfae969f7f8c4ea89dba73650d02c3ada3e7d555b9510779f1bbb1e4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401160101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620086e328e69aaf11cba9bad8e2dd46b5b6980b37e2ada09a94d4886d4fff1309638bc6a8def812b89699e85bf88feede8aa89bfe979fb768cd72f37de9d31057111e4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401170101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062001271ddc5fccf96f30c7c6c4ae53c485413c6c9caba0053c3c43c3180d87cfbd20b7c5d3003d66cabd7660a947c9b7ba252c4732511d4c47517727a8bfe04d5801e4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401180101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200d2a421d7926c7c766b4e38b38a9f2b035864f63a00031039fd54aecb7e49ceeefec8a8e2186596a2313ad772dd2703c4b75b58ba0c5aa8665a781af5ba8faf9a1e4ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401190101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620058ed7046d0cad5fc1bd71e9084b046928fca292b255721946101678a192afc40201660024c4250a137c188e0a3e2bbd8f4c69c1dd8833992d4c33c644e41ae1b1f4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04011a0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006b4a11fafe201fe27928d6d30f5b9eba0f18f99f557f49d518c6761982246d5073c95c6b093dfe50fce55b6ae882e2b09e1689cdeeebf808acfef066e5a36de91f4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04011b0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200cd4bed0f49b1d19160e954cffe67714572b00b5870bb36fa11f848e23de20e4417b9d64ef5843ef98c76d45d018e32f27c2fa31e347ff4f7ab2244e08eadeca61f4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04011c0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062009600538ba108c704660cc9b0ec0d2c09b58a356f93e859f90b3e45a7a9ee2dae8ba9e1f96b51bbc5efcd735599519a63f97d4a4a23d5bdf76110f492cf40ea9a1f4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04011d0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006f64137e883fb11e27dbd2cf9398c91d54fe5eda70644331a570b97819d6626f651fe0fbc633ca3c52413835c2eacfd2dbbe318dc5648386019efea270ab249d1f4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04011e0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200d7bbd7d573bf0926a483d5aad1cda246f84612df18188dde97b1d0b576a5bf53320e9f09941d4b4ba18ee254b28d399c0b498b8b446c2143b70b9f8a943bcbcb1f4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04011f0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e9805e433227de19446cf60657122fc4e8d158ac5297b8603e4bc53ccc066accd0405ba80bd155d2e6fdbd37f279e36671c6ae7d5b4d2b595924dc1b68e8d0ca204ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401200101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f133905220081a440f05fb4752dbdeeeea55fd04c3c0a5a97bb8e8657a68babb75dbba17e6699aa4d3512493aae62014f9477b1a9fe7afebf898e4c256588cb6204ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401210101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620048d5d70ceff0a50f051dd516246881f4939603170918f7d4a6dde2eaf4c7faec84abfc89c7ccc81a62de35721835088d65abd1dfa2fe01ac9f631546351df896204ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401220101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e73d6b483e875e4b998f429daa0387c50eb23939b8159ca8294e14e6d8e6acf152785a98707f8f067a0451089f8955c19dd5caac5c5f49e6ed838ccc9c97cb3d204ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401230101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f420705d04b0c8e9b5a16b72430d3fdb809035b370a7dfc7a2485262b012697a1992d48641ea33e360e3e99181197f712e1e9f863e6366fbde719ba743dbf6ca204ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401240101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c81d811ac161218e4af993f395b99b40f7b34326df9226ff514495c872e5f60fd40284eca03fc7a1a4073133156910ac9eb51d492ab86478a3a2e265ec9046fe204ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401250101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062009904af1278bcdca40a64a742c5182f5ffe0a9c6d413cf5ece51aab4ab020eebe1eaa6dad433b084d53e41cff90d63ea3944896c9ab8bd3094dd38ad840ae0292214ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401260101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620042474af524c2ff6b4e4f91f7d660a816dd19d441389d7874fdeb453a01c36de0b84c37de6ea91afee27fa0c0bbe788600a74bad9647f0ce548966a8abf600050214ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401270101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f929db92a052fa0e62be54a32a8b16e45550021e83bb4a3b87c094862eff3a0375e09401f46e2c9fb658a3153f20124d366d89650b6fa536a6a92e67e6edfbfc214ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401280101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008bdf245823a679185242e71c05942b281b724d8f009801d08aeb54efebe12dad96f9923f7032b8706da0f5c67fcf65f1664ea57937c8a51552ca2715c7ccb452214ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401290101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620009b492f1bf68545fd563ca284af124f29e5529177bd74ab5ba6dd3997f05033c27f87c38596a2f518be983e473e3f07087c6c048afa48a177b91974f81715a60214ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04012a0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a5f269e02a0bcb4267bf99e4ed59cc7ac09e2765007385d125a8c77d8bfc6db150e49a9c79fb91ba0332d20ee3f0418750197640b2f29f5302e50db608e71dba214ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04012b0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ea8002eb21cb813dbcd7072d06f086d1644f20837114c8eb53142c8ed5b9bd71ec645908f3f43ee34c48cf86a6d858a69c43d800f352bf8fe4faa8ea0c4cbdc8224ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04012c0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a0b2b2be348980d807e3c5632fd392ef049f9fea1f0155d423cef6ea5ecbbd074fb29e8afb2e2ed392ad75afba38b13f7d0b39591f945d962475b9aac28c9df1224ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04012d0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620006f7507711b09905d17c38fbf71369f3ffdd723144c6a1bdc93fb17248e3b4202c57a4d9c9625f106cc6ed79b1cd01e6ffdec0b9bede55d3da1703f48ded9cf0224ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04012e0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620018c5347252116e5f4e128c87a6c996960e84d0802e24412aaf9dbd82299e62769a955120f30112d42911b1186002e7c15114d004329abac6ade5a7ef6cd85130224ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04012f0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006f42d7bc4ee20dddb6b587667b9c37e70d5b0cc350750c17b3c49f591186c3f9db2a99719ba07b1be8360d76ab54af208814aaea1b42587aea652d22c4366e04224ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401300101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620054e57bfb4bf61462f28b8cf4d7932c792fc05fbfd5949895df4e9b45abf6543355d1c6c3c9d18bd1c7a4e25138952705e7ef05ce791a184d0e026ed88781b8f8224ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401310101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200b8b76a584c151b4e29d6e66fe43d1feaeec41bd7bafc9c59f572839f21d78747bb8dd029c22dc41dcb03010ecbdf9160b6fbf8da6e93a90759382dc6eae8b60f234ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401320101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200317c24140c100494d9fc0383f9ecfae762c81ab837a873639d2f7dd3efb9c9d6aa702535ec3ee14fbfd01480c407967dcb3ac5314206d87dd1cd70afa3f41e6b234ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401330101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200b2534fbe905ab23c6a70f5fc1103c8ee1b89d602634547022233193a65a6375f3416760c391c009a43f5bde06295ccc66c265f8195f8730e392bd0625829c557234ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401340101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200dd4f171395e4b4d83adc81d5c68097687c69e2976b6f1ecba74ced1cd3cb18feb7d8034f920ebf766eceaf1daf0fb8879dc24507b2b6d3a9845f1db0a5c2cc88234ae75affff7f20050000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401350101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620098f8f07e55226b630e64484fbcdf8e2f77a241ff82581edf4daeab09c1f1a0d5555f1b78583097cf47ca6e243ba872b3b90c2c2c2049e3db04a1641ab74e5407234ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401360101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c84e91b0b48bc20ea334b6f61adbb429af9bf0ee86d288c48a58a9df5fb264c5a3e6b6d405fae82cc3a448622bb3becbc177ba4cf30e28f1fb17e0be13124336234ae75affff7f20040000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401370101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200b917820e083d2a542bac9e5f47bab703fdd0a25569fa37253fc5b4ba526bb14f6a4aae7f75de61e0cb5ea251976d9d887187de6619b2e0313d3a113aee33b71f244ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401380101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062002ebc280445bd0bd09d1e165209c8972bbbd4a02c3c5830382fbdedd0fb4dd50cf8847b858a79c69323a0dc492a339271cd9459a57afa24471c905ceb3b57b02c244ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401390101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006215aa4f385c5e6e3eabb1fdd068f008581a45ec04238652bb2e6c53964fc48e08d8e77baba9243cec738b7d4daca64ee0c395b10ba878ce34dba17f673ff20e244ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04013a0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e79bd34b1362e0efcb18b011d4ad861bca5b6e35340403f05572a9ce44ebf43c1bad2da0d35d2bf7d6507db5a5f87bba69d8c4e59d91f3919d222e3f25205e6b244ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04013b0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062001f75e5fc56c9ba2a32e0f530cef331db8610ab95742c5356eaa37f24c720712c3aaebbe9b2f25029c741540103522179b5febb177ee213722e8fa50d87ca84cf244ae75affff7f20050000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04013c0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a3f89a6ac5bc85556562d734023b836e0a0e1d15b2a0faca87030f249308457b39b6bbd7cbe0323ee22a1b068d7bb8bfb05714114646d548335d38de22cd0305244ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04013d0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062004149dd2780b040244ed36f788c07c9b332fbd7cf7f7e5f799a06ab6a699767e95af993660d150ee6ec8d8a12ef76e2729fa4237c91f36db3452c321f8b7373cb254ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04013e0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200845bd87d619b30ba6e199fddac76a887e507485258162ec6f0e8978ef93fcb0360a3c9ab3bbb0b95a5b0e158116b2ecebcd682ba33b6eb733e0796c2e95bb37b254ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04013f0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200730ecf7754ce74f0ef94d513879ce0f7db1354763501a50d6e484ff4f018025e58f349c6ca59c6e33c69c110df98e911b5771033030875e9d9df70efbc08f012254ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401400101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200b3e211ae9e3c6ba2edc67611e6ecc439c4d9cec4b3e196e3bb68066f8f9e155f4c68be4a2e517377968cf638b149945508890ebac3f3c95cf1df0be95e09b26c254ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401410101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200d7be59eec49ca3b8bde563739dec5f78febf01a335414cd79c3ed21677838f11a0b7bc80b50df54633f0452953701e17fab71c24c94b1c7a22b235f97efbd7b0254ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401420101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620010e778cb411ae4559d484ac6a8c8bd28711d35c91f194f438c001913128c9c11ab75da8fc3ca8b5010896b4d7735e7a5ae4db58e4308f47be294a2b8ba556a4e254ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401430101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006b8ee0f7988ac01e376dad1184c4a13ebff4a1f1aa4b5aeb364be629595e5aea34dfa674c8df495b3d7e200024efb55a868911598d1caa39a45c4009a9973939264ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401440101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a17ae84b68401ebdd76bbd7d2e02b262b6a82499f254b19d646f7dc4208c3d687a9bf27799bba199dbcab892f6e1044c10554e33c819f46c0dc8eb77eea749b5264ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401450101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062009c80dc2d57e8d4428a224b78a1fecbe6738a3b7fe6886221f991e46b99317abea6fb24a66602050955269edc0ab7253f2998e554602b9c3f95217d5d1f14a1b5264ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401460101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ecf55f70ae62c64b0de3c95259f7a01232e5be99367aabeb56f3c8cc0944c115da1dfa050761b8ef9a9b85d4cd5ec7395d97a35e21f46d444d1b1478d7783f7f264ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401470101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e85bbcb0601e54f6c685e53c365a516f58314040daa7dadad24267832257ea7c438e2740c9a7b78a831399bc7a11dbf61d27f93fdb509508d81638ace2442903264ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401480101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062004602a0a0e8af525974966b4fdf8ecc66a3abf9d5eba0715a4d8f2c42b31f31694c2fce829c491925fec623074db50e867a7239161a3349afc77cf7d0c0ea272f264ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401490101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200856630d8701d25220f6a07f180b18d1f6067ff7845756f9af6a2fbecfc3c0a83c5353e751450041d7604a3949760e782847f71416257c02b58678ce90782ca88274ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04014a0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200aadb284a9e04ab2b54592052eac255756433a8d5d65141fc686543a5e42f0086724125accd6cff22ce8e398cae1175f99ac2291b2fab94814dd83df2febbc71b274ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04014b0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a6a77c5c70c37e8871077fe7b12b53d050fc530c3dfc454c1f74363fac5256df2ab4476455a7b93fd9aeceee2ac5430abcaa54397ab8f23d96660a61c12b33aa274ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04014c0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062000377fe7191ef566b93e4429bf04dbcf0c9c79298115b82bd4400850651dcca1a77b7951381a46fcb4b230951f26fee7abab0fb6f0338a1a488a5577e6def318d274ae75affff7f20040000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04014d0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620017ddf8b66e0b9af653dda27d73d62a8f27437e9dcbfec9c97b8a1521012655a804015c8931f1c5f4f5b051654412920a5af79ac71d272098e2005dea44c476a7274ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04014e0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062007df89d8407a4f73cfb5ffe2b1c43144e03a988b174a103549ca6670ac3ad303654c4fc302fee687f1e646d31db1e6d7b990042206d3b484b0e152a6f83286970274ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04014f0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620074b72e5de118fca7c0312b251abcd6be9ae05b5c127682c23e871b1abdacc4f01da4a72088802229a704bb60cc7aa58c6b686e9cc476f6750e147e4ce11a53d3284ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401500101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062005eea82413138e7ac60e35b09857bfaef537793e2a08ed946be02d84e35c954f46f56c042d5a037931a1da3d966aad09ad1123a2e0e1eda8e3e293263e76e95f8284ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401510101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a1660614411c070adc62515cab81c6425dc2b21c12f875b7667ca2f388644dec8baf7fbb4a70d0f4c55554584fbf22332a39b67195f4ef18b1d6dc8ee120426b284ae75affff7f20040000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401520101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200634ee9a9c049b89e5905bd54e9eebf254a4698e367043973e93dbe2325ba06c4b2157c333352eef74d84ec8298dc9acd56abb18b5850a7a7cb0e8d941a389d67284ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401530101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200eaf44af821425e7aedc0864ed81ba69f943694d0db1a483bd86c63e8c04cb8753a3f70087a265faa6c8285f90b9203f6e224961e7d2b2824be33617cf7429f9e284ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401540101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200b1d9163fbbf4f9e0b9189fbe79804d72b89cf04d1ba4b18eac6e9ea401a84bbea8e5ab9be33ea9797c72366236314a050d6f65c10194acaf0f1be65c51634556284ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401550101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e58f87d2f742f1b8a69c5f795a42b020a5727eec73768553a188b6cf37af9931b405d92a8f1ebcdb257c2fef86b6e2dd379b1057e1a566c28d6faebcceee4adc294ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401560101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062001644f2c3182e9ac4e00ed4f9328b0bf286a9dfafd4bc192ac86f41b58b7b5d3a7fc34117bdffe530b57849eac5475448aa26f9fdfec6e2b08d7f99f7442d6509294ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401570101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062001ee6b91ee05a0d8d2119771e01ec122512448956d24b2f9e561b794ca912aa8b643283c86557f674028a02efaa23714671bd1139bdc47b951d1a0e2f09fa90c6294ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401580101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200131ea58d7bafe009aaf6266ae9461c1395c9c48506d21366f293b3f8644f478476eac2c6a9ee9cd6638ac509d96dc54e3c42f6902fe3873a5412dad324ab012a294ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401590101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e7c782f9ce5fd24d01d45483549446a3532c64ce878072ba90ae404d18388537d89aa87e0100f8ff07c8430dc5ff68b8de7a60e5d3ff84a25b062e53020d5a1b294ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04015a0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062000a02dbb3db0295a1839039254bf2e059509b03eecf9e89fe5a80996009b6f1f7d7b073f6648ff6026172f6d2e48c0a9ff828211821a9ea764303afef03d2673e294ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04015b0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062007441ae8b3d9544a43a65f9d0658f02d8e9a63be06fc4046b936413e68ae7b130d1cf9972e68e202c2b871a7b50376357a717da237c122fa462de175af8fa78b62a4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04015c0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620030c11ec541982ea08b221585bf0a5ffed333e88ed5a11ddcb39fac8413fcc5a63d9cd4d01f9914ce8fac886621316e2465219921681d36b9d045538a79cfaf2c2a4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04015d0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620043ab849a620ae48042a7c8ecc0ed1952eabcf84cd1d0ee7617ef11f18a77292ec52038322f2b624f7aec5fd9d6e6233df7116ed153de8360f74430c263eac1f02a4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04015e0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062009eecc3719257544b7cef17bdc8fb12bc122a5a078893849af90675328e4a7bfd2425af4a3d73d4fa0ba8b640e0ce8903bfaecd71585b316d6625227a921cc4c12a4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04015f0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062001c423846d80d5ec3bd14fb5c3d630985e1337d937a63c937e7b2da68814ee6f2d239748fd74b744a55e695a2b122de7f6d2689b3aa59c584b7eae13fe79168ea2a4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401600101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a33a10b1170edb1e8da107cd4f8ef7424e8f56697ae0e2a77d1b3376941bf3d1482ffc18679cc3cb26f4fed298f571661b4317edcd71a813775a8c30ac110dce2a4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401610101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006e50ca811facb515f7a52d978ef41224c8041ba822584ec354c48fe1099ffdf421cf71c80f7a29811601cfe28d08347d3540ce5b8b110914e31c04b5504350192b4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401620101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ef219bf434b1a3d78ca188a34fae9d8ddedb4d9442e5c0e55642aa331a673f3816b2d252e12fa31e40cd395ad4e7d28f4d75bdc1917233a85e85871af274d20e2b4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401630101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620028785a2c9c4e217830aab5abbd67fddaca3cd6cc08a1d1b287df1075ff3eaf94815f31c85e8568ab43747fb493853b60063d1249197bb71e9b6c3ff52728ae402b4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401640101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c8f089d1f1ddb5056d0c8642551a32f98f54750197e3302074dc917c6c823f5b6f9e1b95691e3c680f880b9a78c19d1f377cc38583cc63598fcd96c0f9491d392b4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401650101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e6c4562099c4b091bd3715b5db4b3f8d5457c6bdf2a3ee9a122c38045c9392ec180ff50090cf73b8bb3e8aa9095e79e1c034970e98be64f9d0fba7dd7e3b93042b4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401660101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620030b1429663a18c0e3b9bd71a2f708f4880f43085f60ca5efe72d24d0c5d87f472d314b4dd0727e264706612e3dffe0c0d657b9c514af83c155f30bde5e83a1a42b4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401670101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f9346cb8e28e23f6d56c1926b1ff3544b38ae58fbf0c9bffc8e0056e161553337875a05a6190074b6e10833ac722328a5a2e49136d633c049b06590283f669302c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401680101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f8336bc56a7737be970a6658f67b77997c18f400c8d1df2d2c063e444cfeb4cc549fb3bbf8a434c3254d8e8eb53da96dc5d7e46612b46b87a6273e8e2f8d3fc22c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401690101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062005ab0f52072676e30f4d798ba0d0ce1a3aa6d136ef4cce3cda9eaf803aea54f1efa7dcc70a79ad8fa7fa02244f914bbb539887ccb1a394f14439523cbedc2f1222c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04016a0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a864208a490553c35afd7b2456c6a32ac355793dafcd0348f40e3c911bf7fa9fbb8798d75b0793aa50882a1e4a5617e5cf2b49788a6f7e707c7f0d081d4104022c4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04016b0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200903a5dfc13c6235c2886ae15c59b4bf16878c93bd2e045c7b975b3a0101c16e125b84952beb735df67e0fbbfb7f493535f0330024d28a693b372e6df5132d5e62c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04016c0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200fc12f50773c4b8a878970975adfbf13b6d8a65acf7622550fa5cb1951ec076d12b32a48049ccc38597739d4dfa5273082ba89b6f0107576878eee261a28f38792c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04016d0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a84149004153245854d0056fd6c4fd32c7918068864d1a73e05424ae993f2bc6d1581867575abef80991d13c5b8c39e22bd643ddb3047cc8902e900175a20c2d2d4ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04016e0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008e34141bcc58c5cafbb52b04c831a982c5b42abfcf9dee5f000fdced552a8b7bd6036123fa91e4d3b38a6177275e8b2b49464522759db70d1fa3356b813241d22d4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04016f0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620072caf8926ba14c0aba9682d9527495e2c9f6906b01190368b551f763a27fd1d66263815131e503d43b9a2b60f9699ff3b24c78e3d7c084c0f259c997a0afde3a2d4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401700101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620075cf1eca2ca70ace049823c3c5a4576dca3a70184a0fc2ba700a2fd2eac175c952136245c1d013f20022abc4b466c15824909772abab2dc835ee9a81f6afb8232d4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401710101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200727500efa3df3af7e4efdab9f3f2f8cbfaf31987f7ac9fb5764f05185c53349d2d9b92df7f913edf8c6475530a4346d4bd095959c3089c5025bf90c04aae3a572d4ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401720101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620089099966009c9bf03a92ebce2951495619e0b2ec31e61d705d8a8d47a63caafbe2dde1a64164e69e25b4c37be39299fd30a857be3a619a981d454c10e22b127d2d4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401730101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062000028903f9e4ba3470e56039311ce396df54d375f61a8a0d426a1912204d7f7b2901f7deede5cadd8b8dffa83932657d85d83fd4099e3d07d83a5540704699c1a2e4ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401740101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200757569c094d9b632e3ad4e36658d28d787ccfa9e51630b2f4d6ba70539172de2b0ca33631bfc29a1d8ef54bc31720468b5bc5db7884eb072f50e3fee2de26a312e4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401750101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620098fa0accae317d4b26b3f331aed069103733fc2a5a92a11c6f4a6f714942d2733a1aaaedc5d550a197d668f7d02d384ab47d050376ddff05edeb3fd31c74d26f2e4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401760101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062002266cdc3c063a2424581b22932eab6927a386385329358790bedc2610685510113ecbeda5cacbd74066936b579ca247b7855322df35fc6df5d820c4e302aea0f2e4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401770101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c7dcdafb6ef7789a29fcbac370ae84158112cf7e1b278af6f87c47ff6ffeb5cc1c282ec3f384f301daca55f8c9c6f93a87b103aaa73df7f8cd72b072d42d18632e4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401780101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062001af70c627070505d6f7518e1a5beac831b71a221347ed3ed01a553175be901f3423e338e845e416e2a310b5bd4df1e0fcf5791b3a1e5ffea93cc1487407abe952e4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0401790101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200fab2ad841910c0649048724d67164c91786355218736f36adaf7ec48eb8c9c26bae94772e0d84b3c3f161e5b34fb6bcdb095f158f8ed5e301ac56d25ed1d69092f4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04017a0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200983a25f54f74a6396c9fc5995c5eac5dcbbaf6f14fdf94eb7f7e9e34d62af15acbc61d9ef85541bd8da02a060f2cdcbe0ba840a942516ef92f6cd48d3a70ad662f4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04017b0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620071fa864571ff462b30d3cc98cd460f970d23112d905ef4a0ae53b6aa2d4541e7809174cc3f768fb860827c9c5141cd005292fe2524051d1e5a34129a689742e62f4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04017c0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a79e390b12bffbc0e5734a70f978b4d1fd7225ba19df810584996ddb95742aaef68060ccc106119c0512683ba5173553f33cd72f77a564240510b1c8af3dda382f4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04017d0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e52b220e82f0f05d1c47aef842414367edd20530b3b99744439e7aae0b05e12524900aac0a4905582c812ec371f2e7b0d6d75cf8aac9930e8d6adfbb9f17ec712f4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04017e0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ec952081036a938213e45055b7a3891f0ab3d9af49b95bf309ea935cdf4894f36479211b58e8da2318d178b8e4ccb2e75cb65d8635edef6c4a0d48526bb0f5e92f4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff04017f0101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620045cf7a7241f75fc264639555f0bf91710100c989ac825bc9ae6a4d9be13750fca2284ab27a963f9d1a11f19f5448b693b1f5d7a24525ce43dfa4cdba71355499304ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050280000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062001400613f7a48d0e1226ba02806cc72e6b9d3b32d5d3216842221e4aba089010a863490be1f023ca20c231511171c6aa987202a012f76c00813868087a30bc28e304ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050281000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062005a78faff0e438dafd754008b854396d82795ed5e1f455d6794802897b35203b8ce97ff5d20135050494611c445a185fd599d5626e748978860134757f172f328304ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050282000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200d9aeae6bed7d65afc24e88a08addaacb2c7b6f88c389dadfb73a5e3a34ebeb1dd2a9ee3973ddfe8f56dc8f0f1db01559462e69ff4709cc7be1a48ae90cecd0a7304ae75affff7f20070000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050283000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008be33d0fcbe49b3f5b22743d531be0edf5bf2cba01d8508257c9cc388b6deb7b458711724d5524efa49df269e3ec4ad2d9347030619648ab09e75634480bd306304ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050284000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ecbd3db8ded8296c2b74f2680b8107f392fbf38c4a564c2c3384d17a5a48419182a96bb869f618b541c891fcb082e36e86aa1713c6c200b9c59664fe017d711d304ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050285000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200843ca1d162f913238d099ff923c70209172e29f845cdfde8f5c6535fb91f98e7140e306c6d0cd05e59eeedf06c62f94d63395eaf95aca91b0afaa88c4222620f314ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050286000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008648d14a5f6aa1268b0dcd02af6557738460955e7caaac2eafd3675563258e4971ccd1980d0357c9f14e1b043eef17d94c983f1764adfec5cef263ead610911c314ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050287000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200791322d1a186613ba5f78666c17dac988e5c7feadbb47caabcc12b35e3e625b0553e5106a9b4d48ec861263875fa7704a179fdee0c8a58f68b6b1338c5c47dce314ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050288000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062000d8e7cb21ecb75c404c0af9bc1f12bd8e053450ccf2612d8984005a1c3c695dc9fd2e536e3104b0f80e84c014245d0d7c5737131cf8803df23d421c3518ccc8c314ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050289000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062002ae35f0bf3a998886407cb56130746c9cb51ab2b6ada79548b37b1ed9204fcd3be32524c86f08a705ad810f36f279d2f324cfea128328ef3656764ec59b611c7314ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05028a000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a6c49cc3bd7c087cc6969b2e3ca3db2214b72e31f69d0d553ae43f419d2bb6fa5f1c86d14b48dc21554029292a2be61701fb003530550c66eb6166afe1b39659314ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05028b000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e17b1d6555d8e51155347526b60d2748c758d424c2990dd8e1b49b5d4d7170da13f63b83d7025fc496afab51dbbbb538fb57112b578127b4db9d5c60fb6b2a1e324ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05028c000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620055994b8e0faaeb4a551cd674dffaa6eca750c53eda33f2e722cedf745a5c1b4adf443a8b6accbf436ad3a489cd379d56b623d9587616cc425d050d3749229e76324ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05028d000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c28bcaad0e2f1e997e7cf363364c1a167e9ebf5740e85d714b2673b9328ab18b36e65445e824ec7793085c3bdc919e1228e2da1cfc214dfab150fceef01bb0da324ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05028e000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620008c84bea3f090c1ba06b007e67da748aca18e8e00bbf27729208bed88adc07406a9e1323bc8f0c9ba49ec969ca3f8bc89aca67bafabe0be4d4c78a3e42f6850c324ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05028f000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620088f484a5315c3c87c1b736e67dbc41473991675efba07bc9ed14960f3a2f109edb3fdbdb695d8f09861ab08913a4c0f82deddf508192fbdeef4ba391b4366bff324ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050290000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a78907119398d4f88b96117f53c4a37792d29d816f176b01788724a6e2b22438310d3481aee39ad26385918861f1fdcbe71915591c9e09ea2e45d014b5c41726324ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050291000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c123fff31964fece7d69c1e032c5e37384c6e599785159a0757e2221b1a32e6cdb12117951c8e793718478c1e849438067f837bbc3999666ef40aef32b97e258334ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050292000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200953685d57523efb547969e62ebf9c69f49dbf2bd7cbb9585711027b85c663bee28822e00ca42c7340322f33b063e125649d2d67b9852ca94410d3db34f3a903d334ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050293000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062003adf1dc85ca9f9b076b505184aead0bf79919c668693a13695ce18ae350dcadf2ef058f8075de6ccebf0e7a7c2387bd9b5b17369281bc6207a3c3396b448c061334ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050294000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620091860a76fe0e321cf3de67241d415c4c645eaa6fd9a54d113155b2d3f2185aa6d5f8b454521f07af81af6c25a4b90d58f240230ed6e52ccb7be7c815f17b9655334ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050295000101ffffffff0200203d88792d000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200894a48fca61e52e5e8aea3e5b2b3accb59e60cd6445c0b276212b56d58ba536eb572a5415e1dce27f59afe05c224bab4cb3148eb5bed27b7e6a52a916f84296c334ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050296000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006ee5c204da4fa9089d4fdd908eeeed2e518df9a3ca251f1401c25b953e2059d47db82b7b2e9dda37bf3d061b1d377efb199017854eec44d523fe15a2ee5fcf41334ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050297000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e9d9536691b210462809aa77c3a75df6f9486c750b36828dda14b781ff2361c9d9cf4f8a89b0e8e9aa9249088280e9761e7386609f3566b0997c010ef0ead267344ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050298000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f5256fce8c1cf8a61c581ab808e902a49f476a0bd07bea25da1dd240a86d291a1acfa2b24bc468c4db18134d84cbf8eaab5dc57f644fc1f31c3e43f818ad39c8344ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff050299000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062009c7a195fd99738690dacc2df2950917e334805e8c9621a89b7fe656246a71763f37643e72a9d68faf0acaaaba6f53f4055c6b01396e5ded6a8ed98476fa9ac06344ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05029a000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620082d22c4c8694170bde20365d52df8036b8f976221aa9f0de06b429d02715b81cca9f26830d543570deca23d2198c2870271972ffcfe4477daaa5dd233052dddf344ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05029b000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200de59d222af1592d919032d43b549b3420c68fe84682d1d3902d27528a59b721ce7f1e7c8d4a3adb6ef777190b3d61389c5f3f91139d22f7ef97dc1d9ce28d364344ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05029c000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f6684822585a5f32ec643fe3ddc06cb1ca75f2701d7d9489dacc6427216fe4acd6fd22b0fc2da62125b8cfdf9eb6487b47c162a19d55323173298496c6544cc3344ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05029d000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f5bab4a2bacc5dbd62462fa1352892dd43d4fb010dfcaf5e6f9e15d8f390e26e5394a3d295b1af577bf355b22abc7a11c6f117f660d5d05535f92beb26c113cd354ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05029e000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200da2928af347380552fb37189a473805255c52fc0ba8b202318dbea8fbc352f346a4143b78109cf1b2b69e7db65ef24d3c0b03a34ee3b1e789e652f63ca97e8bb354ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05029f000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006f617068a3c846f4d28af4e3a7fcbafac2e9cdc44586a79471df6487c593c5a2f732354892c4689e280829322acf2e22eb968a39019601f6d87f6cc09b6adcbd354ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a0000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620028245b75be5e47e680d519b8780948de088c0fa0ccfa5aca784845d5ac923c7b03c5d886ccd59bec21d842b43cc6179022b439d32cd66f957c0cb31ef74deeea354ae75affff7f20050000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a1000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200d495e960bc330d0f507e9ce01df8eeff852812498d492d6310e1a6a18e300389c4a0e2c421ebd556a407b463dee898a13578f752d4666b234d8b5407800e8582354ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a2000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620080bc8950cbec5a6e671aa0a69f9978cbab46443167e4310bf42abcd2b80cfae517b6d3d7cb82b2667dfe83e057f1adbec08096d019f94e9f3b8508645012598b354ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a3000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062003e69cb913659fab99c57972a351a7b066a18ac16e4641624406f79b9904ba88d2b6d8e048c01bb681e3423b10752f18c23601f02c63dda215e24b32ae008acc9364ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a4000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006857dd1a2e015022840b1e0f0018fa6d1ae37ba80ca97eb127a27b92afd2c8ae68f6934cb53f2c39be240a0c1a97f450be33fa415e064e702f3b27e013f15c74364ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a5000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ef7048277afade64d35a869bcc877a010e1c34a992383ead6eed58f47b5ae8aaf5d061dc1f14495a48f9d5fc586a01f6fb94282baaad572d99914a3bce8ab0e2364ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a6000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620008d45f40c944af926505581a194b0836872a2ece878b0ebf54926d68b8fc81bf3304550f0eafe8fcd23ec7fca784aceb958de8b2dad3c198f7df3216b8bb18c6364ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a7000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200fdd3c3c7082775f135be5796655bfa9c424ad0bef8870a0f2bb4a31b6c69ac826772a188114996a14e5c5eb5a0af78322437b8587ae34206308d04bbc1e65e2d364ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a8000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200250843a63fd8ea3b6f9d146050054678fb16bc60589e136c20de70818705a2dee7ad7598ea7b53b24be46e485d78c02d4f5afcc1ceec3b9e3a33c42e8c023060364ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a9000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200acda4450b39c8b2e2a33e3742ae5fa677625e37ea3b45ab5069f517f2ded0096a8d466cac54159969eaba9b356e2952e1b975517c5bdc11330a0fb065f97ae8e374ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502aa000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620082c27ab085e99c5f575a31a915e15e39ae718cabb8570eff7d9a4644bf263cff045439368ed1b48a8d8cccb169c1704a81f3562d7ec8e0b87809683c585bfaf2374ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ab000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008ac17d06eec6180dbb776b8a36a7b5ece0d9777a91f67439d43bf2784ce3d9fb3d8eccdfd1d82315fe96032f926bcb462e7380701a331ba6f35b4ecb373ed454374ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ac000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620024e9304e864083ebd51652c2ba93766cf4d68cea434f05f24a959d3e29cb6d7d00c28edcee883b7f53b094b1d889ff5426c3e1fac25d50185e0d4f40cdd5b4f6374ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ad000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620059a5e1a5d0fe17da35c366308a3b9251a553eaeeccf2638df6ab5577afa80d8680ec975147fd777b67882480814b50e3315b8ba92d8b0e4e3fcaaaadec504395374ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ae000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200b257cf48d9ba512197bd04f20da219ecb955cd9d20cd1bcb990b664f5397d173a2c1b1886159244af494ae4c23b50ffe41720551836306b3012de7ca3395074f374ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502af000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006162fa2cda1b927fedcd857a965aaca8d13378bead52c93e9a461f1d4b39d4d97f52d61747ba2531638a0fed5ba64fcf672fb102ea098e616036261cbfe6ece5384ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b0000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062004024809885664102f7e376d71eb95a752fce48cc39213f63936001742af115c2ad80397784dc2fa1dc288ed41ee1ef95ef16516a77262d932c09a15f11ebd529384ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b1000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008a9029df8a3314e9d98010987b23e2bbe2f3b164875fd23684e84173b562ba5a1df1f95cdccd8e516330ecccf6b12bb510ae77955c06bf32a440d7f055f4e50e384ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b2000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620097acb82e0257833d6effaeccd1e3359d6ddaa759baa7055365d68dea640e00d915bd7a6c5763d1531a68a4e63ee7a716eb7cabca5d6968137cf248afa28c2e93384ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b3000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620064ad58e44d4b9d1aa1a4272e3ec37fc88784e57cde5e7b22b520a5401f4ef8f8310deca955af7d3236033ef329a8a48735d0d5b97255aefd70e7ea7b2739c083384ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b4000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ca49e6e12a0b21efe325b1ff2460f9bf9da4da92e2a9f2195c5158d0126c3f7b5a7dc0b9ae4541bae83f4ff792a746aebc4e34b282d5355208e704bd993cf9b4384ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b5000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200cf1a8926e1e75c553a71863978873a35d64d72f83e3887b0918682a5d196878dad6ad393486162c4d2c0cd1867fe9b331ad6f4310f66182a49b5911c496eb4be394ae75affff7f20040000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b6000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620094d56d24003ab744f5123bb7514d886e97e797a616afdfa829d5e71ab7d9deb2f23f9e94761004961598b55c5702152a62407dd65ee5c4d33a38379a3027a19b394ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b7000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200bf466c274ea42d03be31406eebb0f1229077a2bc3ae2dbe499c0911482513a419d1e9c48a7a8c85e248e54ca63a45f1bc355074f2a943174816fd01d990cfc3e394ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b8000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008581a8b8ab93f40943c9bd5cb4d3bfb2960dbaae92463fc9dfeda2575e18b9f3384646852359f1f31da27e26c4f12778e2209462e3b546408b95a7214e78f023394ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b9000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200518b0d006f253037e3a604b806df53226dd4293329580cfe2476cf96bb80b3ee11a3016da392c92c838cdb435d29cf530fcdc771a2933561020fc6c88af4baef394ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ba000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062008c398644203fa9813cd9ba53efe9cdb8f196cb81b7d45dc30f3ba166e5088ab614c90f28c1a42c02e1af07c59bbb4df178252422d947b844feb0323642e2c100394ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502bb000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c84ca05c1df0003eeebad1ddbcaf224ce1edfec242f6f448ad45173bd05c541e50d6f7614cf3813d671128f3db7fb0b7744a3d8c5d84a057c172fe7ef6f5db993a4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502bc000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200130c1185e43f2aa57ba5ca36a7d957799f02d000358227ff9c56a0fd4788ec47ec73d6066227cbd83159720c7316c89d9d0cf07424e342f463ef3416eb2297d13a4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502bd000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200b971d1c919824430a310914f9d88db81ec0e7a1dfb08b2b4df61332134131f3f0000e159090617bc95f212d077b71c5d3c11ea070259740bfdc5b82cf02bd6db3a4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502be000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062009eca582a917d845b7691e9d5c0dc352955849c2d718e516a121722f9d55f3e67dd9b63e287e573ef41ed9ced66e7193bd7503a2ef52b24f1077e6199dccdccd73a4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502bf000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ab1bdf18e9b7ce4cc4aec23c7765eee9b016e5782998364adc75ee8ed9f05162d3ba2a743cbec35f114d71a0e1ba2f06a0c4fcb5ff44355c91982b842164ccbb3a4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c0000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f11fda3aba4ed2ca72e8dbda76a00c0087b4828d9aa9ce0cd23e50fcbf145d16c0555b13653b00ecba27fb12a1be0a2af4375823456c8d23b4e033916be6f1b33a4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c1000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200fb5e13778b0c73042b2b18ceeb66a05c69df0f0b8452a9586d896fbfa95a80e7abde955dd41ef32ae286f8a2695a42ed70fe144326e1129ac3322da51c041baf3b4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c2000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620064c48f94255f1e6ff4fdc6d6795861f010c20fe6061412ab8035a0e60b132ae2315b76a39ba85073ee58e6fc0c8709cab915dc784bc49d47c106a45e5299571e3b4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c3000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062004d2cf9b53aad4a3e9a6d700e5cb10815dd1d0035a0e61d7d5e67321505556807a30195e64216431090ca40a4281d6092cfc7e4677189f73394cf0097e6713c5f3b4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c4000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200dcb4e89485a2ec5db60bcd4d0119c3cefcef1fb0c57a1ea70b5a7ec10a1f34b7649f43dae8971b3e3b10c7ff7a18ac9c642d6ff485bcbb0f99203ed44cd470a03b4ae75affff7f20040000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c5000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200f0d970a26fe9832644cb6b961d1775110ddb72220fa8106595aee21104bf74771c895200bcff8eaeee616d725824425b29e9d66b299df4f55fffaa823a6fa1cb3b4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c6000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c9e94a718ed652afbe934f34c51e58d68b950116b093f4be2bb941d07b258c5ab113321bbda5ebf98a316b855c1af57306015eff3368ec15973f6e5e11aef3a43b4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c7000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200643a2edfccfd69dcc7495f76af0dd704ace8ae0f90c0af4fce99ab9564b6086db86d0b1e313e1215d3a472061641f79393824abb704272bdf70436296490ea663c4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c8000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200db35070e17fe8a4bd4cfd2838aea7b25f6c454150c1e96c32b77733587b7357682a5b734b2e1be8d93aded395f509c756921fe4888b2dcc08ff44e30e25bcadb3c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c9000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200b2abb2d1f549534370504a610f974fab882a13ddc0c84fb5d7b6bce2152a26cce489577f6031e72c8543be2802a28e56f8bad316303f47031c5558604675d73b3c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ca000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200d4eb154bf02eb47d3ab5de3349e27fddb02cf9f1fbb604762ec89c7eaa870792d30367c17a7a99985456a754d844b071d6d55edc6910f3fc69141c787795adce3c4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502cb000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062004cab30a6e031f7e5ce0f54af8d5dec3c83191262b684caa24f8cc0a5c88a8623930b3b7ec2f030302ace6a69493d7aca60667282f8982f75d632c15aefe2a00b3c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502cc000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620024381570aab50025d7d628029e5ed8df8a555e01ce62f4199058979ec7a4ee255120e31ba6d7108f86674aab908d1392d55c3673ea1bed0966fc61f5f341ef0c3c4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502cd000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062007b2767cf8db8b5f0fcafec6a3c66077dab115b21f99699d18222aa079d7bfffb6249ac089e4a136390bc54d0ce68716ca61a05defe324e65c6fb7bc6009f4d4d3d4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ce000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200bf3ebb971bda60cf00dfb94e9a9d34b27d0c324feaddf4b14d92fb632cfc675904a696cc6cb670322064cb2e6d81e9c43eb73e17f630077a052dff7eaf1d3f133d4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502cf000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200d3ac5f6a229c10e7062471b451b7e8802feb10a95cd3be951ebc03aef63320ad7cd94dd4fedbc43d31f3512eacb3bb8af8201ca6f965c36b25226ea0b75fb6ec3d4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d0000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ef61ea91a85b012d0c70bea16c379acfb225534295ef4955cbbef232d3ef9b3ed06af6c7a1331d17c11de4dfe6c870e1476c09750cdc140f5c37c37ddaf4a4243d4ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d1000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200eb4b214e4c07a499c7aaca96558bca2fb627bb0cb954da7d66703f566ff5ad8fcf6188947c6a3efea4f9c1189fe1ac72a1a06a27ca75c11b7bb6cd2e13e4dba13d4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d2000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620099994f047c8315bb6c2bbab22326070d3ac0d2bc327e7af8197f344761614c7075d8fb8f16fe03de5c45aed2ca0eadcdf15a5363c2a2dfd8d73233722d1031613d4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d3000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200411081480a0bb04aaecfe12fcb687ae985b7dbb4ce632fabee529e16ce9ab29cca09ad635aca8e9f492e0a22e0a33448bfacb657ad6f6aa44801b80db9ec88713e4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d4000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200775fdc2e069df5893039fd1a03dd2c62b28e937678861a88e4f50ab0664ad3d356ec824d792484d1daf5260f58cfd749d6f92dee7a0f8d088f9d8b9e2732ea6d3e4ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d5000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620047554272a2312d2f668bba67910a206d1778bdbdd5d6e09f64dd38ad906188af501cf62807cb91a07ead7e14b9f3a195fa78ca201b0c5cee1ba21e2cf68849623e4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d6000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200a97aa28410e3fcbfa00f2b5ce952b8aa769df8a7fdb0ac87bd788665329cecb3281f8fafd2be76bdd29621c94b6ecf36cfe97284ec7d4579aff5f88888d013663e4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d7000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062000bf5affebe3db87cc79eb6bc95f2d36daacfde392ee7e1fa9894653473fe58b69db1289d1e6fdff2c7c340b3266387f0bc27438e9c9378214a25f207bafc464f3e4ae75affff7f20030000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d8000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200feb48c899772e358bfc36065f4dfefdd4d0c56d0cab111335f1b832f8069aa8b42716745c172c7185644d642f8a94e713b302c2980a716ee3f9c9f4714b5e23d3e4ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d9000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062003da4a43e8ea080e3148cd3542a8e2ee9d8ab6c49977ec4b4cdf2c5174d7afa1c2b328068232bdb9b47f86eff6d15446098694dcff64e925e75fa2dad1cf1e3d23f4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502da000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c362fe25d6fcfb0c780f6f5f54e357b64411b35403aae1dae95e20cccdc8b2c6fec76c4698eb2c6971cd44dc639784d739b4f28a522ee0b7977bfc8c63a91a693f4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502db000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062005af6458bf1d571b8441ede13e330107118bad30dba3b6fa3b1d24d763a48dac50d52a056f53e290d6427dc30f26a950d8e01e451210f062fee5f0bc81d0711d63f4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502dc000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c2b105e0ef7c324521355a1589fe19c6c7577e4ed8fc967b2a5b93ca666f3413858b33d29031f3db8cf2181bfaa7dab9169489fd3cd479c6d62211db5023665a3f4ae75affff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502dd000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200b6735861abfbc30b8d8840e2e1c3289815a7a7402f663ebfe11f68633530a7838f5a4ff8bcb7018def564110891ea9ef795e91e69159472648ee3404f04a721b3f4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502de000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062007894fdcb47132eb081019a4484e77e5a12bad5c0f43aaf66b8bc3d0a7c0eb80bd5b98039e34d483dc298355b7504d7eaf5596589d19d5adb46058794b32863d63f4ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502df000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620090e3bed652638b7ac6a71544e05e74ead2bf13b001d3813ff58daa7a9054e837e19749c216bc4705ab1a62f2cec6e19106b4a6906f6b37d7e3fcc0e175a82402404ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e0000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620066c3a94f840d0714296006420a29ce287650a3c4e99ffdf994c6acd54d99943cdb9519fac86786949cdf627a778d077c476e65cdd19bb5b5dd0f4a1d9e201b36404ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e1000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ef2305d0c67c5ae130abac80a166856f91c99d078fb951ecc8eb527d60d20eb461a62c3bed2d2f2b5400837da3c7e11fb6c8e0a07bba2f53a4de23f2ea6df469404ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e2000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620065b96f6414fab2ca4c6950096f8161412d87acf23f8a8380ed68bbe013c3c3b6ef3f1196495b538437eb96497b3dc9f0dc6d5d3e8f328b48c17bc6b51f0d528c404ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e3000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200d8dcdd309916683967f098a9b384a6834e7b7725a8c01ec7a82342002505daa444ce19ed1cc293a92d80d85b263e2942d0d3086aa9197698f0bea158c57a702b404ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e4000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200c217a68d5960a22fbbc92cb782acbd30a5304a896384d341b086d13eaff28e08bf51180f440ce28fac4bf95669f7aa79f04dcca6dd4089bc3f2b87b225736b23404ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e5000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200242a323f90296ba645ebafe2d89d980281f766e7e0730bb9136506a43d018b49ac26789f2b254ee03ba8c5d5ba76547f3f80d691116e92df2d47792f7032b744414ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e6000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062006da1507b6706aede2038a41c85b2555d26da97aaa846a0589dbb307ec17e3bda004d7a89c598912be3110f7659dbeb9f0517a3781708c4ca6286fa5d7dd265e0414ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e7000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062003b1c5f8d41b1bf7ef9d4b4790b1a8baa36fdfda6d611d1541a5fb77a024ef0155dba14bcc4926c6927d34a7c827d6fcfdcc3b1370cf83c1c547da2ca910766d0414ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e8000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200957e6e08fce667be5a3e810a1a5974f78fc91807801fc15710741cc94989f543663c92cd19b1ba59c22aa46642b4cc87646b7a8e1ad92f2d3ef15c04db38e005414ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e9000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062002a8810035d0f1fc89af96023d06ef7c85fec7a8c39637067f84a49d78bae04c118c264bc0c26160612300824ff25c17c89f97041f49d444a2f3e1ccef211898a414ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ea000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200bdbdd7aee7eb9f0130d98598cac4a5cafca39ec475f431028ba7d76ff99826001588cb3567c5d59ebb452672e17f948ccd7f4a3cab5ca11a7919dd08dc7e0e68414ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502eb000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"040062004ff98c0bc6c6dc0598c9e81299d93174b74a27b2ca2d305e5e05cceb124cbb42bc81f0f8477d7911a6862f16e6572c5b30463df6009c76a92f90dabb524fc74b424ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ec000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620045c133912334783571596dd29d891ca2480740f758fed393766f7bc2c518502044fce94952c894af9ca85b5637da867be59936a80fe0d34f4cfa382469d1f596424ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ed000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200e3ea40fc853599f9e7e8235e53bbdc18a28d116c79ed94d0d2f1b4f814553b5d0ba1da93a50c25ac4664644b009562fe17677ce932a1ad24d822db99943a28cf424ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ee000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ab79d6fa81de1b51ebe0a9406e77f344535399c70b4c6edadc2f981d8858abe34ad84b9398ac0c3a6359e4ea99b1f7a7194384a238f600ef7d93762a40c79103424ae75affff7f20000000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ef000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200ba97b69be59a6a7cd9de6f319db6f5b418af5a99938f737b968c5f3c0bb5c43a9e5f461ef0d0baeb9e7bbff00cb03e1ea1afb62ee8e7b29ab04508413755b51a424ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502f0000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"04006200b536231b5df9ec942844cdd2d3f698cfc94819928c91ea7eb6053fbee6a0f36eaf84a8d2a02c2d4dd7aa27bfb629aefb90fa2dddfd5782198e2efddc2e9ef62b424ae75affff7f20010000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502f1000101ffffffff0200901ec4bc16000023210234d09c9afcb1d12aa823308ebf9d1fb8a474263324313a73a8ad6e90368cfb14ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000",
|
||||
"0400620090542dea479dedc73bf39429c4ec2c7465f025812ba623ddd211484ce40b15c87de950f1e02eb53d72b8f06d045b3d852b6cf70e00c860ff8c9b99d180a2a072434ae75affff7f20010000000201000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502f2000101ffffffff02007e21c4bc160000232103c3a4aa8b6ad988cd49a82904a472c4324c5c244dbedba0d0c7c0794abbdb6bd7ac0000000000000000266a24aa21a9edbcad63a682b029af17d5db9d093446d9111815a004f323715545e3b38eb2ca5e000000000100000001ad80397784dc2fa1dc288ed41ee1ef95ef16516a77262d932c09a15f11ebd5290000000049483045022100e85599dfd6f030e43e8f4f800f6b987010c65f8199c8ce1e485809c386c45b940220668dda15bc9c45fc699cdbb69dd17b5a1857463e0d93303243470264b83b7b0d01feffffff0200b26f4e180900001976a914a44547ec73646babf2a91c5f2d1670cc26e4d73e88ac00f0ab75a40d00001976a914077b4eca6ccfc1936362b0c765369baa72327e8e88acf1000000",
|
||||
"04006200aec77b939d580cd16a8a4cef9f562e52dabe523c13e2c684e6ee1c3a373c1538bbe271f1f07befb39c46aa138fd22153f85e22d8e6c3b1522f04f592bc629948434ae75affff7f20010000000401000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502f3000101ffffffff02a06328c4bc160000232102d405ca41a43105ead6d76f9e269ae5008a8ab06ce3b44a123b2d45ea94d8f421ac0000000000000000266a24aa21a9ed36bfc5009a3631b453999f71f9015688d13084e01649529def6fc2bba1b1654600000000010000000180ec975147fd777b67882480814b50e3315b8ba92d8b0e4e3fcaaaadec504395000000004847304402201ec4691c32ccbe75f5f0822a907af34ee45b33ed5b30145d5a76c6a24624791e02205dd9399a4e1a13907ff8636a74c06dff25c95639e42d09400e4eaecd995535df01feffffff020002a975a40d00001976a914f548e7d383d9efcadebb8f4cb381fade18ae29d588ac00a0724e180900001976a914a44547ec73646babf2a91c5f2d1670cc26e4d73e88acf20000000100000001f87f75766fdef51975ec67d6c654082a450dc2a38d4a181ff2a93ad8907ad6fb010000006a47304402203b95768a6b6a08bcc63d98e851532b243ff31efeca360ef926f491ce3b29be8d0220075c6bf3a366fc1da35ecb3305322c0b76b797e0b4e4d6aad15ad61b10acdb5e012102c0c48a1ada569ea35c993c4002da71618306f26802c9d5a6b59d2b56f4556088feffffff02005039278c0400001976a914c8445124cf011ba461ef127937e83ac61301d2d888ac302d6f4e180900001976a914a44547ec73646babf2a91c5f2d1670cc26e4d73e88acf20000000100000001f87f75766fdef51975ec67d6c654082a450dc2a38d4a181ff2a93ad8907ad6fb000000006b483045022100f47d4ea64db92c3f730e9531ae4a6d794ff249b56962442fd810fdd48912b32d02207f52bc1a3ba5c311ae037f55cacaaa60b12e328d4df8bfaf2f475f9cf230721301210242c71d5b209e5db8f9edddeaa9a35a402aec2b3d2f8fee169e9ef775280616acfeffffff02309da1d4e80000001976a914a44547ec73646babf2a91c5f2d1670cc26e4d73e88ac00a2ca792f0800001976a914996c7359dcd36718c096f5587943e004c542e1b388acf2000000"
|
||||
],
|
||||
"mocktime": 1525107225,
|
||||
"stats": [
|
||||
{
|
||||
"avgfee": 0,
|
||||
"avgfeerate": 0,
|
||||
"avgtxsize": 0,
|
||||
"blockhash": "c8150be44c4811d2dd23a62b8125f065742cecc42994f33bc7ed9d47ea2d5490",
|
||||
"feerate_percentiles": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"height": 241,
|
||||
"ins": 0,
|
||||
"maxfee": 0,
|
||||
"maxfeerate": 0,
|
||||
"maxtxsize": 0,
|
||||
"medianfee": 0,
|
||||
"mediantime": 1525107266,
|
||||
"mediantxsize": 0,
|
||||
"minfee": 0,
|
||||
"minfeerate": 0,
|
||||
"mintxsize": 0,
|
||||
"outs": 2,
|
||||
"subsidy": 25000000000000,
|
||||
"time": 1525107266,
|
||||
"total_out": 0,
|
||||
"total_size": 0,
|
||||
"total_weight": 0,
|
||||
"totalfee": 0,
|
||||
"txs": 1,
|
||||
"utxo_increase": 2,
|
||||
"utxo_size_inc": 173
|
||||
},
|
||||
{
|
||||
"avgfee": 192000,
|
||||
"avgfeerate": 1000,
|
||||
"avgtxsize": 192,
|
||||
"blockhash": "38153c373a1ceee684c6e2133c52beda522e569fef4c8a6ad10c589d937bc7ae",
|
||||
"feerate_percentiles": [
|
||||
1000,
|
||||
1000,
|
||||
1000,
|
||||
1000,
|
||||
1000
|
||||
],
|
||||
"height": 242,
|
||||
"ins": 1,
|
||||
"maxfee": 192000,
|
||||
"maxfeerate": 1000,
|
||||
"maxtxsize": 192,
|
||||
"medianfee": 192000,
|
||||
"mediantime": 1525107266,
|
||||
"mediantxsize": 192,
|
||||
"minfee": 192000,
|
||||
"minfeerate": 1000,
|
||||
"mintxsize": 192,
|
||||
"outs": 4,
|
||||
"subsidy": 25000000000000,
|
||||
"time": 1525107267,
|
||||
"total_out": 24999999808000,
|
||||
"total_size": 192,
|
||||
"total_weight": 768,
|
||||
"totalfee": 192000,
|
||||
"txs": 2,
|
||||
"utxo_increase": 3,
|
||||
"utxo_size_inc": 238
|
||||
},
|
||||
{
|
||||
"avgfee": 214666,
|
||||
"avgfeerate": 1003,
|
||||
"avgtxsize": 214,
|
||||
"blockhash": "0bce378bbe2f7b45b62f6f8dc28c995228f5813f4153dbaa8b3b3f6a79f9ab35",
|
||||
"feerate_percentiles": [
|
||||
1000,
|
||||
1000,
|
||||
1004,
|
||||
1005,
|
||||
1005
|
||||
],
|
||||
"height": 243,
|
||||
"ins": 3,
|
||||
"maxfee": 226000,
|
||||
"maxfeerate": 1005,
|
||||
"maxtxsize": 226,
|
||||
"medianfee": 226000,
|
||||
"mediantime": 1525107266,
|
||||
"mediantxsize": 225,
|
||||
"minfee": 192000,
|
||||
"minfeerate": 1000,
|
||||
"mintxsize": 191,
|
||||
"outs": 8,
|
||||
"subsidy": 25000000000000,
|
||||
"time": 1525107267,
|
||||
"total_out": 49999999164000,
|
||||
"total_size": 642,
|
||||
"total_weight": 2568,
|
||||
"totalfee": 644000,
|
||||
"txs": 4,
|
||||
"utxo_increase": 5,
|
||||
"utxo_size_inc": 388
|
||||
}
|
||||
]
|
||||
}
|
||||
177
qa/rpc-tests/getblockstats.py
Normal file
177
qa/rpc-tests/getblockstats.py
Normal file
@ -0,0 +1,177 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (c) 2017-2019 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#
|
||||
# Test getblockstats rpc call
|
||||
#
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import (
|
||||
assert_equal,
|
||||
assert_raises_jsonrpc,
|
||||
start_node
|
||||
)
|
||||
import json
|
||||
import os
|
||||
import logging
|
||||
|
||||
TESTSDIR = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
class GetblockstatsTest(BitcoinTestFramework):
|
||||
|
||||
start_height = 241
|
||||
max_stat_pos = 2
|
||||
|
||||
def add_options(self, parser):
|
||||
parser.add_option('--gen-test-data', dest='gen_test_data',
|
||||
default=False, action='store_true',
|
||||
help='Generate test data')
|
||||
parser.add_option('--test-data', dest='test_data',
|
||||
default='data/getblockstats.json',
|
||||
action='store', metavar='FILE',
|
||||
help='Test data file')
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
self.log = logging.getLogger("GetblockstatsTest")
|
||||
|
||||
def setup_network(self, split=False):
|
||||
self.nodes = []
|
||||
self.nodes.append(start_node(0, self.options.tmpdir, []))
|
||||
self.is_network_split=False
|
||||
self.sync_all()
|
||||
|
||||
def get_stats(self):
|
||||
return [self.get_stats_for_height(self.start_height + i) for i in range(self.max_stat_pos+1)]
|
||||
|
||||
def get_stats_for_height(self, height, stats=None):
|
||||
blockhash = self.nodes[0].getblockhash(height)
|
||||
if stats == None:
|
||||
return self.nodes[0].getblockstats(hash=blockhash)
|
||||
return self.nodes[0].getblockstats(hash=blockhash, stats=stats)
|
||||
|
||||
def generate_test_data(self, filename):
|
||||
mocktime = 1525107225
|
||||
self.nodes[0].setmocktime(mocktime)
|
||||
self.nodes[0].generate(241)
|
||||
|
||||
address = self.nodes[0].getnewaddress()
|
||||
self.nodes[0].sendtoaddress(address=address, amount=100000, subtractfeefromamount=True)
|
||||
self.nodes[0].generate(1)
|
||||
self.sync_all()
|
||||
|
||||
self.nodes[0].sendtoaddress(address=address, amount=100000, subtractfeefromamount=True)
|
||||
self.nodes[0].sendtoaddress(address=address, amount=100000, subtractfeefromamount=False)
|
||||
self.nodes[0].settxfee(amount=0.003)
|
||||
self.nodes[0].sendtoaddress(address=address, amount=10000, subtractfeefromamount=True)
|
||||
self.sync_all()
|
||||
self.nodes[0].generate(1)
|
||||
|
||||
self.expected_stats = self.get_stats()
|
||||
|
||||
blocks = []
|
||||
tip = self.nodes[0].getbestblockhash()
|
||||
blockhash = None
|
||||
height = 0
|
||||
while tip != blockhash:
|
||||
blockhash = self.nodes[0].getblockhash(height)
|
||||
blocks.append(self.nodes[0].getblock(blockhash, False))
|
||||
height += 1
|
||||
|
||||
to_dump = {
|
||||
'blocks': blocks,
|
||||
'mocktime': int(mocktime),
|
||||
'stats': self.expected_stats,
|
||||
}
|
||||
with open(filename, 'w', encoding="utf8") as f:
|
||||
json.dump(to_dump, f, sort_keys=True, indent=2)
|
||||
|
||||
def load_test_data(self, filename):
|
||||
with open(filename, 'r', encoding="utf8") as f:
|
||||
d = json.load(f)
|
||||
blocks = d['blocks']
|
||||
mocktime = d['mocktime']
|
||||
self.expected_stats = d['stats']
|
||||
|
||||
# Set the timestamps from the file so that the nodes can get out of Initial Block Download
|
||||
self.nodes[0].setmocktime(mocktime)
|
||||
self.sync_all()
|
||||
|
||||
for b in blocks:
|
||||
self.nodes[0].submitblock(b)
|
||||
|
||||
|
||||
def run_test(self):
|
||||
test_data = os.path.join(TESTSDIR, self.options.test_data)
|
||||
if self.options.gen_test_data:
|
||||
self.generate_test_data(test_data)
|
||||
else:
|
||||
self.load_test_data(test_data)
|
||||
|
||||
self.sync_all()
|
||||
stats = self.get_stats()
|
||||
|
||||
# Make sure all valid statistics are included but nothing else is
|
||||
expected_keys = self.expected_stats[0].keys()
|
||||
assert_equal(set(stats[0].keys()), set(expected_keys))
|
||||
|
||||
assert_equal(stats[0]['height'], self.start_height)
|
||||
assert_equal(stats[self.max_stat_pos]['height'], self.start_height + self.max_stat_pos)
|
||||
|
||||
for i in range(self.max_stat_pos+1):
|
||||
self.log.info('Checking block %d\n' % (i))
|
||||
assert_equal(stats[i], self.expected_stats[i])
|
||||
|
||||
# Check selecting block by hash too
|
||||
blockhash = self.expected_stats[i]['blockhash']
|
||||
stats_by_hash = self.nodes[0].getblockstats(hash=blockhash)
|
||||
assert_equal(stats_by_hash, self.expected_stats[i])
|
||||
|
||||
# Make sure each stat can be queried on its own
|
||||
for stat in expected_keys:
|
||||
for i in range(self.max_stat_pos+1):
|
||||
result = self.get_stats_for_height(self.start_height + i, [stat])
|
||||
assert_equal(list(result.keys()), [stat])
|
||||
if result[stat] != self.expected_stats[i][stat]:
|
||||
self.log.info('result[%s] (%d) failed, %r != %r' % (
|
||||
stat, i, result[stat], self.expected_stats[i][stat]))
|
||||
assert_equal(result[stat], self.expected_stats[i][stat])
|
||||
|
||||
# Make sure only the selected statistics are included (more than one)
|
||||
some_stats = {'minfee', 'maxfee'}
|
||||
stats = self.get_stats_for_height(1, list(some_stats))
|
||||
assert_equal(set(stats.keys()), some_stats)
|
||||
|
||||
blockhashone = self.nodes[0].getblockhash(1)
|
||||
|
||||
# Make sure not valid stats aren't allowed
|
||||
inv_sel_stat = 'asdfghjkl'
|
||||
inv_stats = [
|
||||
[inv_sel_stat],
|
||||
['minfee' , inv_sel_stat],
|
||||
[inv_sel_stat, 'minfee'],
|
||||
['minfee', inv_sel_stat, 'maxfee'],
|
||||
]
|
||||
for inv_stat in inv_stats:
|
||||
assert_raises_jsonrpc(-8, 'Invalid selected statistic %s' % inv_sel_stat,
|
||||
self.nodes[0].getblockstats, hash=blockhashone, stats=inv_stat)
|
||||
|
||||
# Make sure we aren't always returning inv_sel_stat as the culprit stat
|
||||
assert_raises_jsonrpc(-8, 'Invalid selected statistic aaa%s' % inv_sel_stat,
|
||||
self.nodes[0].getblockstats, hash=blockhashone, stats=['minfee' , 'aaa%s' % inv_sel_stat])
|
||||
# Mainchain's genesis block shouldn't be found on regtest
|
||||
assert_raises_jsonrpc(-5, 'Block not found', self.nodes[0].getblockstats,
|
||||
hash='1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691')
|
||||
|
||||
# Invalid number of args
|
||||
assert_raises_jsonrpc(-1, 'getblockstats hash ( stats )', self.nodes[0].getblockstats)
|
||||
|
||||
# Cannot pass a height
|
||||
assert_raises_jsonrpc(-8, 'hash must be hexadecimal string', self.nodes[0].getblockstats, hash=1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
GetblockstatsTest().main()
|
||||
@ -130,6 +130,7 @@ BITCOIN_CORE_H = \
|
||||
protocol.h \
|
||||
random.h \
|
||||
reverselock.h \
|
||||
rpc/blockchain.h \
|
||||
rpc/client.h \
|
||||
rpc/protocol.h \
|
||||
rpc/server.h \
|
||||
|
||||
@ -4,6 +4,8 @@
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "rpc/blockchain.h"
|
||||
|
||||
#include "amount.h"
|
||||
#include "chain.h"
|
||||
#include "chainparams.h"
|
||||
@ -11,6 +13,7 @@
|
||||
#include "coins.h"
|
||||
#include "consensus/validation.h"
|
||||
#include "core_io.h"
|
||||
#include "dogecoin.h"
|
||||
#include "validation.h"
|
||||
#include "policy/policy.h"
|
||||
#include "primitives/transaction.h"
|
||||
@ -18,6 +21,7 @@
|
||||
#include "streams.h"
|
||||
#include "sync.h"
|
||||
#include "txmempool.h"
|
||||
#include "undo.h"
|
||||
#include "util.h"
|
||||
#include "utilstrencodings.h"
|
||||
#include "hash.h"
|
||||
@ -26,6 +30,7 @@
|
||||
|
||||
#include <univalue.h>
|
||||
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/thread/thread.hpp> // boost::thread::interrupt
|
||||
|
||||
#include <mutex>
|
||||
@ -729,6 +734,43 @@ UniValue getblockheader(const JSONRPCRequest& request)
|
||||
return blockheaderToJSON(pblockindex);
|
||||
}
|
||||
|
||||
static CBlock GetBlockChecked(const CBlockIndex* pblockindex)
|
||||
{
|
||||
CBlock block;
|
||||
if (fHavePruned && !(pblockindex->nStatus & BLOCK_HAVE_DATA) && pblockindex->nTx > 0) {
|
||||
throw JSONRPCError(RPC_MISC_ERROR, "Block not available (pruned data)");
|
||||
}
|
||||
|
||||
if (!ReadBlockFromDisk(block, pblockindex, Params().GetConsensus(pblockindex->nHeight))) {
|
||||
// Block not found on disk. This could be because we have the block
|
||||
// header in our index but don't have the block (for example if a
|
||||
// non-whitelisted node sends us an unrequested long chain of valid
|
||||
// blocks, we add the headers to our index, but don't accept the
|
||||
// block).
|
||||
throw JSONRPCError(RPC_MISC_ERROR, "Block not found on disk");
|
||||
}
|
||||
|
||||
return block;
|
||||
}
|
||||
|
||||
static CBlockUndo GetUndoChecked(const CBlockIndex* pblockindex)
|
||||
{
|
||||
CBlockUndo blockUndo;
|
||||
|
||||
// The Genesis block does not have undo data
|
||||
if (pblockindex->nHeight == 0) return blockUndo;
|
||||
|
||||
if (fHavePruned && !(pblockindex->nStatus & BLOCK_HAVE_DATA) && pblockindex->nTx > 0) {
|
||||
throw JSONRPCError(RPC_MISC_ERROR, "Undo data not available (pruned data)");
|
||||
}
|
||||
|
||||
if (!UndoReadFromDisk(blockUndo, pblockindex->GetUndoPos(), pblockindex->pprev->GetBlockHash())) {
|
||||
throw JSONRPCError(RPC_MISC_ERROR, "Can't read undo data from disk");
|
||||
}
|
||||
|
||||
return blockUndo;
|
||||
}
|
||||
|
||||
UniValue getblock(const JSONRPCRequest& request)
|
||||
{
|
||||
if (request.fHelp || request.params.size() < 1 || request.params.size() > 2)
|
||||
@ -801,16 +843,7 @@ UniValue getblock(const JSONRPCRequest& request)
|
||||
|
||||
pblockindex = mapBlockIndex[hash];
|
||||
|
||||
if (fHavePruned && !(pblockindex->nStatus & BLOCK_HAVE_DATA) && pblockindex->nTx > 0)
|
||||
throw JSONRPCError(RPC_MISC_ERROR, "Block not available (pruned data)");
|
||||
|
||||
if (!ReadBlockFromDisk(block, pblockindex, Params().GetConsensus(pblockindex->nHeight)))
|
||||
// Block not found on disk. This could be because we have the block
|
||||
// header in our index but don't have the block (for example if a
|
||||
// non-whitelisted node sends us an unrequested long chain of valid
|
||||
// blocks, we add the headers to our index, but don't accept the
|
||||
// block).
|
||||
throw JSONRPCError(RPC_MISC_ERROR, "Block not found on disk");
|
||||
block = GetBlockChecked(pblockindex);
|
||||
}
|
||||
|
||||
if (verbosity <= 0)
|
||||
@ -1498,10 +1531,300 @@ UniValue reconsiderblock(const JSONRPCRequest& request)
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static T CalculateTruncatedMedian(std::vector<T>& scores)
|
||||
{
|
||||
size_t size = scores.size();
|
||||
if (size == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::sort(scores.begin(), scores.end());
|
||||
if (size % 2 == 0) {
|
||||
return (scores[size / 2 - 1] + scores[size / 2]) / 2;
|
||||
} else {
|
||||
return scores[size / 2];
|
||||
}
|
||||
}
|
||||
|
||||
void CalculatePercentilesBySize(CAmount result[NUM_GETBLOCKSTATS_PERCENTILES], std::vector<std::pair<CAmount, int64_t>>& scores, int64_t total_size)
|
||||
{
|
||||
if (scores.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::sort(scores.begin(), scores.end());
|
||||
|
||||
// 10th, 25th, 50th, 75th, and 90th percentile weight units.
|
||||
const double weights[NUM_GETBLOCKSTATS_PERCENTILES] = {
|
||||
total_size / 10.0, total_size / 4.0, total_size / 2.0, (total_size * 3.0) / 4.0, (total_size * 9.0) / 10.0
|
||||
};
|
||||
|
||||
int64_t next_percentile_index = 0;
|
||||
int64_t cumulative_weight = 0;
|
||||
for (const auto& element : scores) {
|
||||
cumulative_weight += element.second;
|
||||
while (next_percentile_index < NUM_GETBLOCKSTATS_PERCENTILES && cumulative_weight >= weights[next_percentile_index]) {
|
||||
result[next_percentile_index] = element.first;
|
||||
++next_percentile_index;
|
||||
}
|
||||
}
|
||||
|
||||
// Fill any remaining percentiles with the last value.
|
||||
for (int64_t i = next_percentile_index; i < NUM_GETBLOCKSTATS_PERCENTILES; i++) {
|
||||
result[i] = scores.back().first;
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static inline bool SetHasKeys(const std::set<T>& set) {return false;}
|
||||
template<typename T, typename Tk, typename... Args>
|
||||
static inline bool SetHasKeys(const std::set<T>& set, const Tk& key, const Args&... args)
|
||||
{
|
||||
return (set.count(key) != 0) || SetHasKeys(set, args...);
|
||||
}
|
||||
|
||||
// outpoint (needed for the utxo index) + nHeight + fCoinBase
|
||||
static constexpr size_t PER_UTXO_OVERHEAD = sizeof(COutPoint) + sizeof(uint32_t) + sizeof(bool);
|
||||
|
||||
static UniValue getblockstats(const JSONRPCRequest& request)
|
||||
{
|
||||
if (request.fHelp || request.params.size() < 1 || request.params.size() > 2) {
|
||||
throw std::runtime_error(
|
||||
"getblockstats hash ( stats )\n"
|
||||
"\nCompute per block statistics for a given window. All amounts are in koinus.\n"
|
||||
"It won't work for some heights with pruning.\n"
|
||||
"\nArguments:\n"
|
||||
"1. \"hash\" (string, required) The block hash of the target block\n"
|
||||
"2. \"stats\" (array, optional) Values to plot, by default all values (see result below)\n"
|
||||
" [\n"
|
||||
" \"height\", (string, optional) Selected statistic\n"
|
||||
" \"time\", (string, optional) Selected statistic\n"
|
||||
" ,...\n"
|
||||
" ]\n"
|
||||
"\nResult:\n"
|
||||
"{ (json object)\n"
|
||||
" \"avgfee\": xxxxx, (numeric) Average fee in the block\n"
|
||||
" \"avgfeerate\": xxxxx, (numeric) Average feerate (in koinu per byte)\n"
|
||||
" \"avgtxsize\": xxxxx, (numeric) Average transaction size\n"
|
||||
" \"blockhash\": xxxxx, (string) The block hash (to check for potential reorgs)\n"
|
||||
" \"feerate_percentiles\": [ (array of numeric) Feerates at the 10th, 25th, 50th, 75th, and 90th percentile weight unit (in koinu per byte)\n"
|
||||
" \"10th_percentile_feerate\", (numeric) The 10th percentile feerate\n"
|
||||
" \"25th_percentile_feerate\", (numeric) The 25th percentile feerate\n"
|
||||
" \"50th_percentile_feerate\", (numeric) The 50th percentile feerate\n"
|
||||
" \"75th_percentile_feerate\", (numeric) The 75th percentile feerate\n"
|
||||
" \"90th_percentile_feerate\", (numeric) The 90th percentile feerate\n"
|
||||
" ],\n"
|
||||
" \"height\": xxxxx, (numeric) The height of the block\n"
|
||||
" \"ins\": xxxxx, (numeric) The number of inputs (excluding coinbase)\n"
|
||||
" \"maxfee\": xxxxx, (numeric) Maximum fee in the block\n"
|
||||
" \"maxfeerate\": xxxxx, (numeric) Maximum feerate (in koinu per byte)\n"
|
||||
" \"maxtxsize\": xxxxx, (numeric) Maximum transaction size\n"
|
||||
" \"medianfee\": xxxxx, (numeric) Truncated median fee in the block\n"
|
||||
" \"mediantime\": xxxxx, (numeric) The block median time past\n"
|
||||
" \"mediantxsize\": xxxxx, (numeric) Truncated median transaction size\n"
|
||||
" \"minfee\": xxxxx, (numeric) Minimum fee in the block\n"
|
||||
" \"minfeerate\": xxxxx, (numeric) Minimum feerate (in koinu per byte)\n"
|
||||
" \"mintxsize\": xxxxx, (numeric) Minimum transaction size\n"
|
||||
" \"outs\": xxxxx, (numeric) The number of outputs\n"
|
||||
" \"subsidy\": xxxxx, (numeric) The block subsidy\n"
|
||||
" \"time\": xxxxx, (numeric) The block time\n"
|
||||
" \"total_out\": xxxxx, (numeric) Total amount in all outputs (excluding coinbase and thus reward [ie subsidy + totalfee])\n"
|
||||
" \"total_size\": xxxxx, (numeric) Total size of all non-coinbase transactions\n"
|
||||
" \"total_weight\": xxxxx, (numeric) Total weight of all non-coinbase transactions\n"
|
||||
" \"totalfee\": xxxxx, (numeric) The fee total\n"
|
||||
" \"txs\": xxxxx, (numeric) The number of transactions (including coinbase)\n"
|
||||
" \"utxo_increase\": xxxxx, (numeric) The increase/decrease in the number of unspent outputs\n"
|
||||
" \"utxo_size_inc\": xxxxx, (numeric) The increase/decrease in size for the utxo index (not discounting op_return and similar)\n"
|
||||
"}\n"
|
||||
"\nExamples:\n"
|
||||
+ HelpExampleCli("getblockstats", R"('"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09"' '["minfeerate","avgfeerate"]')")
|
||||
+ HelpExampleRpc("getblockstats", R"("00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09", ["minfeerate","avgfeerate"])")
|
||||
);
|
||||
}
|
||||
|
||||
LOCK(cs_main);
|
||||
|
||||
CBlockIndex* pindex;
|
||||
const uint256 hash = ParseHashV(request.params[0], "hash");
|
||||
|
||||
if (mapBlockIndex.count(hash) == 0)
|
||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Block not found");
|
||||
pindex = mapBlockIndex[hash];
|
||||
|
||||
if (!chainActive.Contains(pindex)) {
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Block is not in chain %s", Params().NetworkIDString()));
|
||||
}
|
||||
|
||||
assert(pindex != nullptr);
|
||||
|
||||
std::set<std::string> stats;
|
||||
if (!request.params[1].isNull()) {
|
||||
const UniValue stats_univalue = request.params[1].get_array();
|
||||
for (unsigned int i = 0; i < stats_univalue.size(); i++) {
|
||||
const std::string stat = stats_univalue[i].get_str();
|
||||
stats.insert(stat);
|
||||
}
|
||||
}
|
||||
|
||||
const CBlock block = GetBlockChecked(pindex);
|
||||
const CBlockUndo blockUndo = GetUndoChecked(pindex);
|
||||
|
||||
const bool do_all = stats.size() == 0; // Calculate everything if nothing selected (default)
|
||||
const bool do_mediantxsize = do_all || stats.count("mediantxsize") != 0;
|
||||
const bool do_medianfee = do_all || stats.count("medianfee") != 0;
|
||||
const bool do_feerate_percentiles = do_all || stats.count("feerate_percentiles") != 0;
|
||||
const bool loop_inputs = do_all || do_medianfee || do_feerate_percentiles ||
|
||||
SetHasKeys(stats, "utxo_size_inc", "totalfee", "avgfee", "avgfeerate", "minfee", "maxfee", "minfeerate", "maxfeerate", "subsidy");
|
||||
const bool loop_outputs = do_all || loop_inputs || stats.count("total_out");
|
||||
const bool do_calculate_size = do_all || do_mediantxsize ||
|
||||
SetHasKeys(stats, "total_size", "avgtxsize", "mintxsize", "maxtxsize", "avgfeerate", "avgfeerate", "feerate_percentiles", "minfeerate", "maxfeerate");
|
||||
const bool do_calculate_weight = do_all || SetHasKeys(stats, "total_weight");
|
||||
|
||||
CAmount maxfee = 0;
|
||||
CAmount maxfeerate = 0;
|
||||
CAmount minfee = MAX_MONEY;
|
||||
CAmount minfeerate = MAX_MONEY;
|
||||
CAmount total_out = 0;
|
||||
CAmount totalfee = 0;
|
||||
int64_t inputs = 0;
|
||||
int64_t maxtxsize = 0;
|
||||
int64_t mintxsize = MAX_BLOCK_SERIALIZED_SIZE;
|
||||
int64_t outputs = 0;
|
||||
int64_t total_size = 0;
|
||||
int64_t total_weight = 0;
|
||||
int64_t utxo_size_inc = 0;
|
||||
std::vector<CAmount> fee_array;
|
||||
std::vector<std::pair<CAmount, int64_t>> feerate_array;
|
||||
std::vector<int64_t> txsize_array;
|
||||
|
||||
for (size_t i = 0; i < block.vtx.size(); ++i) {
|
||||
const auto& tx = block.vtx.at(i);
|
||||
outputs += tx->vout.size();
|
||||
|
||||
CAmount tx_total_out = 0;
|
||||
if (loop_outputs) {
|
||||
for (const CTxOut& out : tx->vout) {
|
||||
tx_total_out += out.nValue;
|
||||
utxo_size_inc += GetSerializeSize(out, SER_NETWORK, PROTOCOL_VERSION) + PER_UTXO_OVERHEAD;
|
||||
}
|
||||
}
|
||||
|
||||
if (tx->IsCoinBase()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
inputs += tx->vin.size(); // Don't count coinbase's fake input
|
||||
total_out += tx_total_out; // Don't count coinbase reward
|
||||
|
||||
int64_t tx_size = 0;
|
||||
if (do_calculate_size) {
|
||||
|
||||
tx_size = tx->GetTotalSize();
|
||||
if (do_mediantxsize) {
|
||||
txsize_array.push_back(tx_size);
|
||||
}
|
||||
maxtxsize = std::max(maxtxsize, tx_size);
|
||||
mintxsize = std::min(mintxsize, tx_size);
|
||||
total_size += tx_size;
|
||||
}
|
||||
|
||||
int64_t weight = 0;
|
||||
if (do_calculate_weight) {
|
||||
weight = GetTransactionWeight(*tx);
|
||||
total_weight += weight;
|
||||
}
|
||||
|
||||
if (loop_inputs) {
|
||||
CAmount tx_total_in = 0;
|
||||
const auto& txundo = blockUndo.vtxundo.at(i - 1);
|
||||
for (const CTxInUndo& coin: txundo.vprevout) {
|
||||
const CTxOut& prevoutput = coin.txout;
|
||||
|
||||
tx_total_in += prevoutput.nValue;
|
||||
utxo_size_inc -= GetSerializeSize(prevoutput, SER_NETWORK, PROTOCOL_VERSION) + PER_UTXO_OVERHEAD;
|
||||
}
|
||||
|
||||
CAmount txfee = tx_total_in - tx_total_out;
|
||||
assert(MoneyRange(txfee));
|
||||
if (do_medianfee) {
|
||||
fee_array.push_back(txfee);
|
||||
}
|
||||
maxfee = std::max(maxfee, txfee);
|
||||
minfee = std::min(minfee, txfee);
|
||||
totalfee += txfee;
|
||||
|
||||
CAmount feerate = tx_size ? txfee / tx_size : 0; // Unit: koinu/byte
|
||||
if (do_feerate_percentiles) {
|
||||
feerate_array.emplace_back(std::make_pair(feerate, tx_size));
|
||||
}
|
||||
maxfeerate = std::max(maxfeerate, feerate);
|
||||
minfeerate = std::min(minfeerate, feerate);
|
||||
}
|
||||
}
|
||||
|
||||
CAmount feerate_percentiles[NUM_GETBLOCKSTATS_PERCENTILES] = { 0 };
|
||||
CalculatePercentilesBySize(feerate_percentiles, feerate_array, total_size);
|
||||
|
||||
UniValue feerates_res(UniValue::VARR);
|
||||
for (int64_t i = 0; i < NUM_GETBLOCKSTATS_PERCENTILES; i++) {
|
||||
feerates_res.push_back(feerate_percentiles[i]);
|
||||
}
|
||||
|
||||
CAmount subsidy = 0;
|
||||
for (const auto& tx: block.vtx[0]->vout) {
|
||||
subsidy += tx.nValue;
|
||||
}
|
||||
subsidy = std::max(subsidy - totalfee, (CAmount)0);
|
||||
|
||||
UniValue ret_all(UniValue::VOBJ);
|
||||
ret_all.pushKV("avgfee", (block.vtx.size() > 1) ? totalfee / (block.vtx.size() - 1) : 0);
|
||||
ret_all.pushKV("avgfeerate", total_size ? totalfee / total_size : 0); // Unit: koinu/byte
|
||||
ret_all.pushKV("avgtxsize", (block.vtx.size() > 1) ? total_size / (block.vtx.size() - 1) : 0);
|
||||
ret_all.pushKV("blockhash", pindex->GetBlockHash().GetHex());
|
||||
ret_all.pushKV("feerate_percentiles", feerates_res);
|
||||
ret_all.pushKV("height", (int64_t)pindex->nHeight);
|
||||
ret_all.pushKV("ins", inputs);
|
||||
ret_all.pushKV("maxfee", maxfee);
|
||||
ret_all.pushKV("maxfeerate", maxfeerate);
|
||||
ret_all.pushKV("maxtxsize", maxtxsize);
|
||||
ret_all.pushKV("medianfee", CalculateTruncatedMedian(fee_array));
|
||||
ret_all.pushKV("mediantime", pindex->GetMedianTimePast());
|
||||
ret_all.pushKV("mediantxsize", CalculateTruncatedMedian(txsize_array));
|
||||
ret_all.pushKV("minfee", (minfee == MAX_MONEY) ? 0 : minfee);
|
||||
ret_all.pushKV("minfeerate", (minfeerate == MAX_MONEY) ? 0 : minfeerate);
|
||||
ret_all.pushKV("mintxsize", mintxsize == MAX_BLOCK_SERIALIZED_SIZE ? 0 : mintxsize);
|
||||
ret_all.pushKV("outs", outputs);
|
||||
ret_all.pushKV("subsidy", subsidy);
|
||||
ret_all.pushKV("time", pindex->GetBlockTime());
|
||||
ret_all.pushKV("total_out", total_out);
|
||||
ret_all.pushKV("total_size", total_size);
|
||||
ret_all.pushKV("total_weight", total_weight);
|
||||
ret_all.pushKV("totalfee", totalfee);
|
||||
ret_all.pushKV("txs", (int64_t)block.vtx.size());
|
||||
ret_all.pushKV("utxo_increase", outputs - inputs);
|
||||
ret_all.pushKV("utxo_size_inc", utxo_size_inc);
|
||||
|
||||
if (do_all) {
|
||||
return ret_all;
|
||||
}
|
||||
|
||||
UniValue ret(UniValue::VOBJ);
|
||||
for (const std::string& stat : stats) {
|
||||
const UniValue& value = ret_all[stat];
|
||||
if (value.isNull()) {
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid selected statistic %s", stat));
|
||||
}
|
||||
ret.pushKV(stat, value);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const CRPCCommand commands[] =
|
||||
{ // category name actor (function) okSafe argNames
|
||||
// --------------------- ------------------------ ----------------------- ------ ----------
|
||||
{ "blockchain", "getblockchaininfo", &getblockchaininfo, true, {} },
|
||||
{ "blockchain", "getblockstats", &getblockstats, true, {"hash", "stats"} },
|
||||
{ "blockchain", "getbestblockhash", &getbestblockhash, true, {} },
|
||||
{ "blockchain", "getblockcount", &getblockcount, true, {} },
|
||||
{ "blockchain", "getblock", &getblock, true, {"blockhash","verbosity"} },
|
||||
|
||||
21
src/rpc/blockchain.h
Normal file
21
src/rpc/blockchain.h
Normal file
@ -0,0 +1,21 @@
|
||||
// Copyright (c) 2017-2018 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_RPC_BLOCKCHAIN_H
|
||||
#define BITCOIN_RPC_BLOCKCHAIN_H
|
||||
|
||||
#include <vector>
|
||||
#include <stdint.h>
|
||||
#include <amount.h>
|
||||
|
||||
class CBlock;
|
||||
class CBlockIndex;
|
||||
class UniValue;
|
||||
|
||||
static constexpr int NUM_GETBLOCKSTATS_PERCENTILES = 5;
|
||||
|
||||
/** Used by getblockstats to get feerates at different percentiles by weight */
|
||||
void CalculatePercentilesBySize(CAmount result[NUM_GETBLOCKSTATS_PERCENTILES], std::vector<std::pair<CAmount, int64_t>>& scores, int64_t total_size);
|
||||
|
||||
#endif
|
||||
@ -113,6 +113,7 @@ static const CRPCConvertParam vRPCConvertParams[] =
|
||||
{ "importmulti", 1, "options" },
|
||||
{ "verifychain", 0, "checklevel" },
|
||||
{ "verifychain", 1, "nblocks" },
|
||||
{ "getblockstats", 1, "stats" },
|
||||
{ "pruneblockchain", 0, "height" },
|
||||
{ "keypoolrefill", 0, "newsize" },
|
||||
{ "getrawmempool", 0, "verbose" },
|
||||
|
||||
@ -17,6 +17,8 @@
|
||||
|
||||
#include <univalue.h>
|
||||
|
||||
#include "rpc/blockchain.h"
|
||||
|
||||
UniValue CallRPC(std::string args)
|
||||
{
|
||||
std::vector<std::string> vArgs;
|
||||
@ -350,4 +352,82 @@ BOOST_AUTO_TEST_CASE(rpc_convert_values_generatetoaddress)
|
||||
BOOST_CHECK_EQUAL(result[3].get_int(), 1);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rpc_getblockstats_calculate_percentiles_by_size)
|
||||
{
|
||||
int64_t total_size = 200;
|
||||
std::vector<std::pair<CAmount, int64_t>> feerates;
|
||||
CAmount result[NUM_GETBLOCKSTATS_PERCENTILES] = { 0 };
|
||||
|
||||
for (int64_t i = 0; i < 100; i++) {
|
||||
feerates.emplace_back(std::make_pair(1 ,1));
|
||||
}
|
||||
|
||||
for (int64_t i = 0; i < 100; i++) {
|
||||
feerates.emplace_back(std::make_pair(2 ,1));
|
||||
}
|
||||
|
||||
CalculatePercentilesBySize(result, feerates, total_size);
|
||||
BOOST_CHECK_EQUAL(result[0], 1);
|
||||
BOOST_CHECK_EQUAL(result[1], 1);
|
||||
BOOST_CHECK_EQUAL(result[2], 1);
|
||||
BOOST_CHECK_EQUAL(result[3], 2);
|
||||
BOOST_CHECK_EQUAL(result[4], 2);
|
||||
|
||||
// Test with more pairs, and two pairs overlapping 2 percentiles.
|
||||
total_size = 100;
|
||||
CAmount result2[NUM_GETBLOCKSTATS_PERCENTILES] = { 0 };
|
||||
feerates.clear();
|
||||
|
||||
feerates.emplace_back(std::make_pair(1, 9));
|
||||
feerates.emplace_back(std::make_pair(2 , 16)); //10th + 25th percentile
|
||||
feerates.emplace_back(std::make_pair(4 ,50)); //50th + 75th percentile
|
||||
feerates.emplace_back(std::make_pair(5 ,10));
|
||||
feerates.emplace_back(std::make_pair(9 ,15)); // 90th percentile
|
||||
|
||||
CalculatePercentilesBySize(result2, feerates, total_size);
|
||||
|
||||
BOOST_CHECK_EQUAL(result2[0], 2);
|
||||
BOOST_CHECK_EQUAL(result2[1], 2);
|
||||
BOOST_CHECK_EQUAL(result2[2], 4);
|
||||
BOOST_CHECK_EQUAL(result2[3], 4);
|
||||
BOOST_CHECK_EQUAL(result2[4], 9);
|
||||
|
||||
// Same test as above, but one of the percentile-overlapping pairs is split in 2.
|
||||
total_size = 100;
|
||||
CAmount result3[NUM_GETBLOCKSTATS_PERCENTILES] = { 0 };
|
||||
feerates.clear();
|
||||
|
||||
feerates.emplace_back(std::make_pair(1, 9));
|
||||
feerates.emplace_back(std::make_pair(2 , 11)); // 10th percentile
|
||||
feerates.emplace_back(std::make_pair(2 , 5)); // 25th percentile
|
||||
feerates.emplace_back(std::make_pair(4 ,50)); //50th + 75th percentile
|
||||
feerates.emplace_back(std::make_pair(5 ,10));
|
||||
feerates.emplace_back(std::make_pair(9 ,15)); // 90th percentile
|
||||
|
||||
CalculatePercentilesBySize(result3, feerates, total_size);
|
||||
|
||||
BOOST_CHECK_EQUAL(result3[0], 2);
|
||||
BOOST_CHECK_EQUAL(result3[1], 2);
|
||||
BOOST_CHECK_EQUAL(result3[2], 4);
|
||||
BOOST_CHECK_EQUAL(result3[3], 4);
|
||||
BOOST_CHECK_EQUAL(result3[4], 9);
|
||||
|
||||
// Test with one transaction spanning all percentiles.
|
||||
total_size = 104;
|
||||
CAmount result4[NUM_GETBLOCKSTATS_PERCENTILES] = { 0 };
|
||||
feerates.clear();
|
||||
|
||||
feerates.emplace_back(std::make_pair(1, 100));
|
||||
feerates.emplace_back(std::make_pair(2, 1));
|
||||
feerates.emplace_back(std::make_pair(3, 1));
|
||||
feerates.emplace_back(std::make_pair(3, 1));
|
||||
feerates.emplace_back(std::make_pair(999999, 1));
|
||||
|
||||
CalculatePercentilesBySize(result4, feerates, total_size);
|
||||
|
||||
for (int64_t i = 0; i < NUM_GETBLOCKSTATS_PERCENTILES; i++) {
|
||||
BOOST_CHECK_EQUAL(result4[i], 1);
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
@ -1518,6 +1518,33 @@ bool CheckInputs(const CTransaction& tx, CValidationState &state, const CCoinsVi
|
||||
return true;
|
||||
}
|
||||
|
||||
bool UndoReadFromDisk(CBlockUndo& blockundo, const CDiskBlockPos& pos, const uint256& hashBlock)
|
||||
{
|
||||
// Open history file to read
|
||||
CAutoFile filein(OpenUndoFile(pos, true), SER_DISK, CLIENT_VERSION);
|
||||
if (filein.IsNull())
|
||||
return error("%s: OpenUndoFile failed", __func__);
|
||||
|
||||
// Read block
|
||||
uint256 hashChecksum;
|
||||
try {
|
||||
filein >> blockundo;
|
||||
filein >> hashChecksum;
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
return error("%s: Deserialize or I/O error - %s", __func__, e.what());
|
||||
}
|
||||
|
||||
// Verify checksum
|
||||
CHashWriter hasher(SER_GETHASH, PROTOCOL_VERSION);
|
||||
hasher << hashBlock;
|
||||
hasher << blockundo;
|
||||
if (hashChecksum != hasher.GetHash())
|
||||
return error("%s: Checksum mismatch", __func__);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
bool UndoWriteToDisk(const CBlockUndo& blockundo, CDiskBlockPos& pos, const uint256& hashBlock, const CMessageHeader::MessageStartChars& messageStart)
|
||||
@ -1547,33 +1574,6 @@ bool UndoWriteToDisk(const CBlockUndo& blockundo, CDiskBlockPos& pos, const uint
|
||||
return true;
|
||||
}
|
||||
|
||||
bool UndoReadFromDisk(CBlockUndo& blockundo, const CDiskBlockPos& pos, const uint256& hashBlock)
|
||||
{
|
||||
// Open history file to read
|
||||
CAutoFile filein(OpenUndoFile(pos, true), SER_DISK, CLIENT_VERSION);
|
||||
if (filein.IsNull())
|
||||
return error("%s: OpenUndoFile failed", __func__);
|
||||
|
||||
// Read block
|
||||
uint256 hashChecksum;
|
||||
try {
|
||||
filein >> blockundo;
|
||||
filein >> hashChecksum;
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
return error("%s: Deserialize or I/O error - %s", __func__, e.what());
|
||||
}
|
||||
|
||||
// Verify checksum
|
||||
CHashWriter hasher(SER_GETHASH, PROTOCOL_VERSION);
|
||||
hasher << hashBlock;
|
||||
hasher << blockundo;
|
||||
if (hashChecksum != hasher.GetHash())
|
||||
return error("%s: Checksum mismatch", __func__);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Abort with a message */
|
||||
bool AbortNode(const std::string& strMessage, const std::string& userMessage="")
|
||||
{
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
class CBlockIndex;
|
||||
class CBlockTreeDB;
|
||||
class CBloomFilter;
|
||||
class CBlockUndo;
|
||||
class CChainParams;
|
||||
class CInv;
|
||||
class CConnman;
|
||||
@ -486,6 +487,8 @@ bool ReadBlockFromDisk(CBlock& block, const CDiskBlockPos& pos, const Consensus:
|
||||
bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex, const Consensus::Params& consensusParams, bool fCheckPOW = true);
|
||||
bool ReadBlockHeaderFromDisk(CBlockHeader& block, const CBlockIndex* pindex, const Consensus::Params& consensusParams, bool fCheckPOW = true);
|
||||
|
||||
bool UndoReadFromDisk(CBlockUndo& blockundo, const CDiskBlockPos& pos, const uint256& hashBlock);
|
||||
|
||||
/** Functions for validating blocks and updating the block tree */
|
||||
|
||||
/** Context-independent validity checks */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user