add tx-remove-reorg, re-run generate.sh

This commit is contained in:
Larry Ruane 2020-05-21 11:56:31 -06:00
parent 669df6aca2
commit 78e154931a
18 changed files with 134 additions and 27 deletions

View File

@ -2,3 +2,7 @@
This tests a transaction getting reorged to a higher height block
Please see `generate.sh` for details.
This transaction belongs to the "developer wallet":
- tx-8f064d23.txt: zcash-cli getrawtransaction 8f064d23c66dc36e32445e5f3b50e0f32ac3ddb78cff21fb521eb6c19c07c99a

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -19,7 +19,7 @@ mkdir blocks
touch blocks/{663151..663200}.txt
# Add two transactions to height 663195, first shielded, then transparent
cat t-shielded-spend.txt t1.txt > blocks/663195.txt
cat tx-8f064d23.txt t1.txt > blocks/663195.txt
# Generate the blockchain
cp 663150.txt before-reorg.txt
@ -27,7 +27,7 @@ genblocks -start-height 663151 >> before-reorg.txt
# now reverse the order of the tx and move to a higher block
: > blocks/663195.txt
cat t1.txt t-shielded-spend.txt > blocks/663198.txt
cat t1.txt tx-8f064d23.txt > blocks/663198.txt
genblocks -start-height 663195 > after-reorg.txt
rm -r blocks

View File

@ -1 +0,0 @@
0400008085202f890001e016cd1d000000001976a91457787bcbe709bf4511a79eb356c1772d7a734d5388ac00000000961e0a00f03dcd1d00000000011e13699687b4f1924c93b31e4441d93e2d4b47e37f9585d4a1f1780ec48021b7b3d75293b1de4a235bffd7eab4b5f5e20c0c7d8ed5f5543a1806187900807634ae3fb5887c13bd92caf45aff098a243ecbfb715c5dbb4da34009e8ebadf68fe84f9e97a3f420fb7a59f98c3646ebf51f5283e81971a2e694b6f2af1dd071972c894b4cd662b6bd8ca36b1663e3098a5f1e0ccc87710902283acd957cd110774b72388470265667a4bcbcdafb0d8d9606b6507e3d6f92e3c0594f5119804670752d968aed73fcbd72b97a849970d4c03f014f9de8f1bef90af584730b4a1a852610a48a9f4a1c3094d5bdecfe6a691010a3a8fcc00a232946c15e725cb3e884c242ac8f98a661eb7d5ae908b21b6bd13c93175699930a6803aeb2a4cf82e419b4a7e2a8f1223ef22f4ddc9cd3d5d4e499da9c59c9503ebacab891a4a7a54bcce08dbde308de890e57120dfbdd1965b373895c630e3be8bbcf471b95dc141f5fc7600eadb58d4db77964ab68347e2c847ad5c385d47195fc952761915674c800010000a6dcc2ecb09365d61abbeb400fc0848689cb2947f1acfca42addb894da0979aa61758c0747735861fe2185a49326ff5ea33ecdd8d7d1a1a182cd93ff35b93b0a

View File

@ -0,0 +1 @@
0400008085202f89000000000000981e0a001027000000000000012beb225f0d8ed3d5e2e3fb03e4fefebc061a5a5e160622777f5d68a6a971229269dd245e9313937383ff8a5c4ba91c20588f942ed25105017d7154cc76e174558073affab03c8b01bd9ccbdd4bdfe1b9d122cdb7e5cbc7b5db630df1ba50653b0cc9a37baad59a82ac2a75c672cddb8b1251c28bdb51fee8f2aac7f9eb9f3a55a4a52a65f4f8f579a88752c2ca05b47a452c62919fe08308def0241ba77858b2178461a6c97e6780aae265c02a910293892ff9894b270c63fbdd8077966a968f46a691f5afe6e1abe0942863a71f678d6b8c402d6eeb7d249e1406ef27d2ed8b037772177fe1e516e013f68fd5a461b43ffe98075bf7dc29a8f65b1debaa3f3d904269f1898e88736255da1b895cae1cb99327d77caa39d6b3c4d61db0b95e28c70480dbd7e7c7fba24491c64817a708d7bed91646bb60254313cf62726d74bf70d179e40ff6115160ac1fb53f8eeb303d678fb087fe73f887f6f0262c74c453806ea9d16a344527ba52dc588a83320c580c4673da2d66f8229b3dcd2d626f04023421baa1cddb2198f3655b78d2b06880e17a04b5a5ce54adc3878ae82aa7dbdf0c1270a60f02e83722677308126ab67488b8fe383037ee6d5b95fbbd2b31eb20b6755236a31e418054256508bd483f600e4d445f757aadba56657197868ad3c22880024ebe5a2a3df86d1baa5a2fa141fcb10e9ef9edfceba686d53227feca6488847bf16ebb95b657120e6691d4bc12e0e536047692b78d10a9bc61f3ec2a4de825226fc109f231b9dd54e596b0e7fb961f44e9142ea2d0009c0fb2820dfeb522e8e5072992d1064997de75015eabb4506e850e945ac77c0c5902e922762f76f8aa6fa5fc08a7e6dfd06783e58d0c73e5c86b98be8d074ebc11ae8de06c0dbd22f4458a1284421847e4e545af138fdc0c8976d45b1866b79c5713db2a4e21060eb39e680a9bd2ebea4ca014e3aca285987c00497d1052c3e2b73a5805af8e87d141962f1d24cb466fe24bed7c7df6f1968bb4816588a9097d37c436124a3515f2187f8cc08fe55f49844266574234bbc4d29a5a679aa80b2e8a3e581b572b237aa64ad911699f27637cbecd14e79332ad4d606f44e552e7675ecd63091a91f495b91da4eaa83644fb02fd494199e69aaf2a1cc186f0bea5ed7184624d4dbfc5f2e6e6c7e6ae07251eb207861ef5d0cbac2cd8e3b764e4c841deb2f5a77be93b283dcf6dc9303b65a1affc355bc9ebece85168cad81c4986bb777eeaf6d9049c912b9a7b38b3a4c64ca9b2737c0668bd2dcc08be889b24978ce4f0029a59eee39a6b52e781409a405c9bad760627bc76a726f7fa1437640a082e1336f13bead640ac54c694993e9896e86aa41e9c5dac89567c50d5ce6b4c262c0d479e5a82c3279557ac9dc4586e785ac8d5550699883c6ff64fa94b4096df92efed8efcf8cefa78f51097e353595362bc80bd6f0ade38a381e04c5f55d65c056197741120e3adecd4e92961d4a703b635a9902f280739d6213464a2e30c65a28d0e1014180487789eb4ac0684fdd54821e8385360eccfd81a6ea3226574fbdfca45c4dff2f10a3aff2fac37856fb49af70d428c03d576151dc28f7da4b3868443f3854b5f371ff48c5c98466282f3d767a5b512eed411f19ac8058402cce1f5bab232076b4b7025cde49987d098c3e8418fb83ccd4f5fa42685e37f8fb79bab520036738fe018fe01cc4cbccd5b6a1a632c8cd62ed042460a43195488e28b94af1d9134f20e777bacac09e7ce7fcff19ff52754271e7bdce5f780f38eb6ddc069910205774082e0ee15a78dcc0ce97e10476bef973a147b75e1c4c2ab28eb401a78e11030a76a1c52d56a828858fb0520b5b1919c4efb91d8f61d05af2ee58388ce0190276b403ad7bafc5bb3b69233e05ea2cd353ea4eabb9374e01ed16995027a4678b7bd4d1dc061fce8b4eba3f3b71a61b03b7e9b6c301f0373baf57c9e4ecc060c279e7c37e7e662a7487de2da18be872a7404953f0913540ffde23ae0eb9f8ab627bd897e7a75de503c277a02742f47c91ca5df8771f2ac59abab4f4f1d176998e4a8f3c30d218214fbf502545d974247077ec3e2687b91dca28723e7a9c5c94ea112f5cc5149896df36204253469b1305a93b3a723917b97ab5547de3f2aca2c8743bb791171a3af9b516997085e4182aac28eb3e91891e92ca6fb2885d741f07cce0a82373caddd1cf4935088edfd7df5d5d372d5d36ed938394c0ebae5c3f26ce52c91e7f30752125a8fe4c8a3e0e2d4a37d790900b8ab4a66bc5240dd724a7cac89a371668681407ab75504e8098947968e4d7c562dd173f36d7a04a470991d1bb83d8614a83d5bec25d7cb7905f407bbe1d323ab8a9ab8573cf841a910787d2e92f8efffd327153689a0fe5dc0b082727bff12802ddc6ab6fced81fc3dd2ac6fd64e32ac71a760f0a52218081c97f1dbb800f1a25965cda92ac03923893ed3713d15ce57d2c56815a8bbb840afbe173c2f30e21333f67bec2aa3420cd7a1baeb8151f05058eff9d27083d2e41770ce3362eb00e65a950fa6960d738841f817b8b0c68e70264ed2d8b6178d7f11dd17492e6604c0921c7b44bc617dbc8df74f81723bf2f1e34cf03dfc3161309b051437c4886cc97505d5bad2b9ec75d2f23e6796ec74ad3be86600cba5b396ed6b4f4c63b98152d0d5dcd72b29b3c73318d1b58867e7561b9784f6e11269e6bcc064be00ccbc92826d3a3cfa17fd2ca3e9e2235165b8de8c79c9a6d8e0f89a02a812ce102f4c5f136df197de1dcb239aaff7691071a705277d8cec186f67c43abb32a516537712aacc1cd39d81958b0fb1197da074184

View File

@ -3,3 +3,7 @@
This test a transaction getting reorged to a different index (within
the block) but where the new version of the block has the same height.
Please see `generate.sh` for details.
This transaction belongs to the "developer wallet":
- tx-8f064d23.txt: zcash-cli getrawtransaction 8f064d23c66dc36e32445e5f3b50e0f32ac3ddb78cff21fb521eb6c19c07c99a

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -19,14 +19,14 @@ mkdir blocks
touch blocks/{663151..663200}.txt
# Add two transactions to height 663195, first shielded, then transparent
cat t-shielded-spend.txt t1.txt > blocks/663195.txt
cat tx-8f064d23.txt t1.txt > blocks/663195.txt
# Generate the blockchain
cp 663150.txt before-reorg.txt
genblocks -start-height 663151 >> before-reorg.txt
# now reverse the order of the tx in the same block
cat t1.txt t-shielded-spend.txt > blocks/663195.txt
cat t1.txt tx-8f064d23.txt > blocks/663195.txt
genblocks -start-height 663195 > after-reorg.txt
rm -r blocks

View File

@ -1 +0,0 @@
0400008085202f890001e016cd1d000000001976a91457787bcbe709bf4511a79eb356c1772d7a734d5388ac00000000961e0a00f03dcd1d00000000011e13699687b4f1924c93b31e4441d93e2d4b47e37f9585d4a1f1780ec48021b7b3d75293b1de4a235bffd7eab4b5f5e20c0c7d8ed5f5543a1806187900807634ae3fb5887c13bd92caf45aff098a243ecbfb715c5dbb4da34009e8ebadf68fe84f9e97a3f420fb7a59f98c3646ebf51f5283e81971a2e694b6f2af1dd071972c894b4cd662b6bd8ca36b1663e3098a5f1e0ccc87710902283acd957cd110774b72388470265667a4bcbcdafb0d8d9606b6507e3d6f92e3c0594f5119804670752d968aed73fcbd72b97a849970d4c03f014f9de8f1bef90af584730b4a1a852610a48a9f4a1c3094d5bdecfe6a691010a3a8fcc00a232946c15e725cb3e884c242ac8f98a661eb7d5ae908b21b6bd13c93175699930a6803aeb2a4cf82e419b4a7e2a8f1223ef22f4ddc9cd3d5d4e499da9c59c9503ebacab891a4a7a54bcce08dbde308de890e57120dfbdd1965b373895c630e3be8bbcf471b95dc141f5fc7600eadb58d4db77964ab68347e2c847ad5c385d47195fc952761915674c800010000a6dcc2ecb09365d61abbeb400fc0848689cb2947f1acfca42addb894da0979aa61758c0747735861fe2185a49326ff5ea33ecdd8d7d1a1a182cd93ff35b93b0a

View File

@ -0,0 +1 @@
0400008085202f89000000000000981e0a001027000000000000012beb225f0d8ed3d5e2e3fb03e4fefebc061a5a5e160622777f5d68a6a971229269dd245e9313937383ff8a5c4ba91c20588f942ed25105017d7154cc76e174558073affab03c8b01bd9ccbdd4bdfe1b9d122cdb7e5cbc7b5db630df1ba50653b0cc9a37baad59a82ac2a75c672cddb8b1251c28bdb51fee8f2aac7f9eb9f3a55a4a52a65f4f8f579a88752c2ca05b47a452c62919fe08308def0241ba77858b2178461a6c97e6780aae265c02a910293892ff9894b270c63fbdd8077966a968f46a691f5afe6e1abe0942863a71f678d6b8c402d6eeb7d249e1406ef27d2ed8b037772177fe1e516e013f68fd5a461b43ffe98075bf7dc29a8f65b1debaa3f3d904269f1898e88736255da1b895cae1cb99327d77caa39d6b3c4d61db0b95e28c70480dbd7e7c7fba24491c64817a708d7bed91646bb60254313cf62726d74bf70d179e40ff6115160ac1fb53f8eeb303d678fb087fe73f887f6f0262c74c453806ea9d16a344527ba52dc588a83320c580c4673da2d66f8229b3dcd2d626f04023421baa1cddb2198f3655b78d2b06880e17a04b5a5ce54adc3878ae82aa7dbdf0c1270a60f02e83722677308126ab67488b8fe383037ee6d5b95fbbd2b31eb20b6755236a31e418054256508bd483f600e4d445f757aadba56657197868ad3c22880024ebe5a2a3df86d1baa5a2fa141fcb10e9ef9edfceba686d53227feca6488847bf16ebb95b657120e6691d4bc12e0e536047692b78d10a9bc61f3ec2a4de825226fc109f231b9dd54e596b0e7fb961f44e9142ea2d0009c0fb2820dfeb522e8e5072992d1064997de75015eabb4506e850e945ac77c0c5902e922762f76f8aa6fa5fc08a7e6dfd06783e58d0c73e5c86b98be8d074ebc11ae8de06c0dbd22f4458a1284421847e4e545af138fdc0c8976d45b1866b79c5713db2a4e21060eb39e680a9bd2ebea4ca014e3aca285987c00497d1052c3e2b73a5805af8e87d141962f1d24cb466fe24bed7c7df6f1968bb4816588a9097d37c436124a3515f2187f8cc08fe55f49844266574234bbc4d29a5a679aa80b2e8a3e581b572b237aa64ad911699f27637cbecd14e79332ad4d606f44e552e7675ecd63091a91f495b91da4eaa83644fb02fd494199e69aaf2a1cc186f0bea5ed7184624d4dbfc5f2e6e6c7e6ae07251eb207861ef5d0cbac2cd8e3b764e4c841deb2f5a77be93b283dcf6dc9303b65a1affc355bc9ebece85168cad81c4986bb777eeaf6d9049c912b9a7b38b3a4c64ca9b2737c0668bd2dcc08be889b24978ce4f0029a59eee39a6b52e781409a405c9bad760627bc76a726f7fa1437640a082e1336f13bead640ac54c694993e9896e86aa41e9c5dac89567c50d5ce6b4c262c0d479e5a82c3279557ac9dc4586e785ac8d5550699883c6ff64fa94b4096df92efed8efcf8cefa78f51097e353595362bc80bd6f0ade38a381e04c5f55d65c056197741120e3adecd4e92961d4a703b635a9902f280739d6213464a2e30c65a28d0e1014180487789eb4ac0684fdd54821e8385360eccfd81a6ea3226574fbdfca45c4dff2f10a3aff2fac37856fb49af70d428c03d576151dc28f7da4b3868443f3854b5f371ff48c5c98466282f3d767a5b512eed411f19ac8058402cce1f5bab232076b4b7025cde49987d098c3e8418fb83ccd4f5fa42685e37f8fb79bab520036738fe018fe01cc4cbccd5b6a1a632c8cd62ed042460a43195488e28b94af1d9134f20e777bacac09e7ce7fcff19ff52754271e7bdce5f780f38eb6ddc069910205774082e0ee15a78dcc0ce97e10476bef973a147b75e1c4c2ab28eb401a78e11030a76a1c52d56a828858fb0520b5b1919c4efb91d8f61d05af2ee58388ce0190276b403ad7bafc5bb3b69233e05ea2cd353ea4eabb9374e01ed16995027a4678b7bd4d1dc061fce8b4eba3f3b71a61b03b7e9b6c301f0373baf57c9e4ecc060c279e7c37e7e662a7487de2da18be872a7404953f0913540ffde23ae0eb9f8ab627bd897e7a75de503c277a02742f47c91ca5df8771f2ac59abab4f4f1d176998e4a8f3c30d218214fbf502545d974247077ec3e2687b91dca28723e7a9c5c94ea112f5cc5149896df36204253469b1305a93b3a723917b97ab5547de3f2aca2c8743bb791171a3af9b516997085e4182aac28eb3e91891e92ca6fb2885d741f07cce0a82373caddd1cf4935088edfd7df5d5d372d5d36ed938394c0ebae5c3f26ce52c91e7f30752125a8fe4c8a3e0e2d4a37d790900b8ab4a66bc5240dd724a7cac89a371668681407ab75504e8098947968e4d7c562dd173f36d7a04a470991d1bb83d8614a83d5bec25d7cb7905f407bbe1d323ab8a9ab8573cf841a910787d2e92f8efffd327153689a0fe5dc0b082727bff12802ddc6ab6fced81fc3dd2ac6fd64e32ac71a760f0a52218081c97f1dbb800f1a25965cda92ac03923893ed3713d15ce57d2c56815a8bbb840afbe173c2f30e21333f67bec2aa3420cd7a1baeb8151f05058eff9d27083d2e41770ce3362eb00e65a950fa6960d738841f817b8b0c68e70264ed2d8b6178d7f11dd17492e6604c0921c7b44bc617dbc8df74f81723bf2f1e34cf03dfc3161309b051437c4886cc97505d5bad2b9ec75d2f23e6796ec74ad3be86600cba5b396ed6b4f4c63b98152d0d5dcd72b29b3c73318d1b58867e7561b9784f6e11269e6bcc064be00ccbc92826d3a3cfa17fd2ca3e9e2235165b8de8c79c9a6d8e0f89a02a812ce102f4c5f136df197de1dcb239aaff7691071a705277d8cec186f67c43abb32a516537712aacc1cd39d81958b0fb1197da074184

View File

@ -0,0 +1 @@
0400000024815fbcaa1605f6b96e3c2e4c386c2ad8d9a71f2d757241ed539f00000000006267524b4fcd20b46ed3342a99c83ca9b77ce075e87418d4919194d4d7d3b1c3b3d75293b1de4a235bffd7eab4b5f5e20c0c7d8ed5f5543a18061879008076344964fc5df549031c2f0e65080009ac5b000000000000000000000c000000000000000000800408a7fd40050055e43ca51db4038520d47143c18c363521fd5b1f18e2a0ecf2b17f13bed621c201e2ac2d557bcc743b05814b05c3094de505a8f2775fa0950d0d497d0d1742b6db47a39d4ecb92dad473aeebc3eb35d77d29a7099d4b11e11eb76d64b482d860cc4db903c4eccb540bd4e789569ca647393c31c6db322254f4337937aa1be035922ed252c2d5503b6e3565a02b83f07e34832630964ad913e6a1e4fe34c79367abf595962ffda401b6fb8b534d91cf6c2d30f0ea74c0385153153dad1b98a6ca31f121c1afe74453f75c014e09ef393fbd1120c0a5d86ace03c7ca3171c09750216608fe454c14b9211a93ece57d7e5402012a230802c692fc63dd0abad25230d391f717d4c2afa87d7475236b4fba611465bf5c9eec7c37ea435632d947f351b91f6e5f0f0afa0fbd2883bd4d356292f4e6e57f48cb93f4a74c0f7171ca0ed02a271c2f934d7ee49cdd416b7f2b17032b1f103e06fcc44ea674023bb28e0de12f7e690f48578e0f499758bdd00c570b0a460695c375504fe50576d704ee43ab127d9401a3e8c79022172093406e19e92ea874e801238d15e30e13ec3bfceb4face59b054b48cdaa217fd1bce4b4ad41721f85feaab348e62bd6ff690c14c30de156d5d06f6270d996126f284b09640b47c3d543618f6346f958c85ca2d5b7be016c0d3df98c1c33e78fbe41b591fd4d8fbd9eaeda29ea0ccd2f7d531c76118a9b011708492e28a74af2664d1915fb08b146d10fd86652f3d5fe858547e42fc2642dbb8a89f44e64e6dd447638e4d2daf6d81b5b59c17f7e8ca15f31ac87af2b6994787aab0aad1a3cb1221afcb2c8826cd06bfcde74f3d355a4d753003d363b31874bf5f15416db3553148faf44de6624885d5bdb382889d3b656e9910e2594b736a67f06b2675a54304ea58b0810dd4e910f3b750a56ab6d79fff05faf6d021c1dba16025cce1550a0c17d662e26479b3e2cef2359675caa960012f82dd260753805056fb3cfef7d06535fc7f5768b45e7905197cfa41e81931b8ee9870dba8dda808873d5bf57067b2cc11c67da60fefa2e04845864a94df74ec691369b0e4629077565bf84200e9dc50a26a64801387093ce44f984a1251c58f3f0059a189cf637a661f960cba5547959630e0d3dc7e514112cf3578b9469a2c071f6695db15117a52bcb9f09da67e75c0aa46544ab5198ade3161de342b26f9342720e8d2bdc12bf6e02771ec575f636d0bc1e5774269381df1f5671f1b4d5d63adc43bc45f9b0bfaa2f2be48aee92e1ae0d5f94654bc9bd322b2f607b09df1d708133def3839fb38949a690e3aeb75f8bde5f9f229c0ea00f55a07d2a9214b3382c9c060c905ac97c344935b88e258313ee44e4a27efbfa2de4b27af9aa62127d5d7e5f76d53cbca7f71448f1ee6c7c9ff19f0350014260dfe461f37be0f24a33701c59b488177c16bf6e680de7e9bdf4ed863417b77efa65ab78d161037c1fe1659296ddbe7155ab77b4b5da67353b8e8406e4e1e6208d5e2ab30c89fad97482a3150edef3a10c49740cb427a0fb4530cab9b9f4e53fb565ffd0752b214508e1dc70d3bf0dc3958f244b28f9a54ae7ea5528de01a066e92b63e6d64687eba49a50a63d71288b078ca0eaa364f962490946adeb1762b675fbcb11087e9b1ed75417f767e503c9fd38b281c407323605175f3952bc4ee8e68f61f1b57ca2e070bccb53f5e81e477c7869542934ce61f29c45c40001834d56241243b78aa66d91d0bff3a4959baee8ec45d931cf97bf0b3b53516ddff973936ef3677f62f59dbd071b76c339f8ec5e8295e0eeed24f819535dface84e89f027c0e432c923f963a8ebf85c4a51bf5436b7e641cf4561119aa410997bb89cd95b2a5512008ecc4f728bad7020400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff08036e1e0a00ecab2f00000000021c67cd1d000000001976a91435978cec6669c24278c72a55d6d646226827d5a788ac405973070000000017a914dddb7433536ad23ef1495d3398da9c70e65935c187000000000000000000000000000000000000000400008085202f8903eae776c5f4b0c4a9e2781017349abadeb82abf3340120dbd5ee0f63d995f29e9000000006b48304502210086f33871008a9bb5e49127d4263db5cabc306da20e02a52be55937f52b4ae9a002206ee01ac9979f6c8597adf34cce32a462a8e97277d19cff3de2b72e7195b2e2bf012103a1a62e9d3800dce814c75061eba3d7658b733aff5faf29a3583e438b6607fb57feffffff26d102ac25f6ca32870c139094a87fb38c90a4b77baa90ffdb2617e91d298a19000000006a47304402203e36938a2563cb21240d027779d33d5acc69d1d05a9f3f83c27ac6471d5fc9fa022042c114c46ad9f33f2b197ad3c7e0ffd1cfa51cd7cf3df9723df5281fb8091d900121032bc53cd71e64b5f34574226f462f998750d0e2d7fe025ab6cf32c838214cd070feffffffdaafc2a599dfcf27871d9a562e402730cb3e575b98f27c0cdd080be33fb402b7000000006a473044022059e1f2129e05f696ccc2c1bb89654938915cd8fdaecb8cee295b9a78d55878c602203baed8040d4e26d380150f750f6049462ca37e7fa445c07ea6e1ba8ca7f9c1e80121032f09a11ee2aedc8cdc9dd4a3d10bbcd859a90a885c57ee95c94e62df7e432a9afeffffff029d92a6923a0000001976a914ee797583435a2329e7b4460e6856f4ebc2cddc0e88ac009f51c84a0100001976a914072ec092c1d3dd472993d2626d0e0a4780e0ce1388ac621e0a00951e0a000000000000000000000000

View File

@ -0,0 +1,8 @@
# transaction height change
This tests a transaction getting reorged to a higher height block
Please see `generate.sh` for details.
This transaction belongs to the "developer wallet":
- tx-8f064d23.txt: zcash-cli getrawtransaction 8f064d23c66dc36e32445e5f3b50e0f32ac3ddb78cff21fb521eb6c19c07c99a

View File

@ -0,0 +1,6 @@
04000000000000000000000000000000000000000000000000000000000000000000000060f41f6f48c542ea501506ad000ae2c76594b563a2f3a2e2dfdad6e5d936420d000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff2a039b1e0a00043855975e464b8896790758f824ceac9783622c17ed38f1669b8a45ce1da857dbbe7950e2ffffffff02a0ebce1d000000001976a9147ed15946ec14ae0cd8fa8991eb6084452eb3f77c88ac405973070000000017a914e445cfa944b6f2bdacefbda904a81d5fdd26d77f8700000000000000000000000000000000000000
04000000f20ac21b3b61196c46244643cb2a1670fbb5ff6f89d2e6b582998cb5d1e9a7800baae7f64647ce979253431935cf8097efa80a081c2d353d13d3b73224b5666c000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff2a039c1e0a00043855975e464b8896790758f824ceac9783622c17ed38f1669b8a45ce1da857dbbe7950e2ffffffff02a0ebce1d000000001976a9147ed15946ec14ae0cd8fa8991eb6084452eb3f77c88ac405973070000000017a914e445cfa944b6f2bdacefbda904a81d5fdd26d77f8700000000000000000000000000000000000000
04000000b32f356b8491564067bf59632ef4266bfc49879e080b349ae73e3840dbb420bd6ef1e4e5fd2c2624b3ff78938ab3ea8a46eec4339f9b52612db70f8524b53b68000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff2a039d1e0a00043855975e464b8896790758f824ceac9783622c17ed38f1669b8a45ce1da857dbbe7950e2ffffffff02a0ebce1d000000001976a9147ed15946ec14ae0cd8fa8991eb6084452eb3f77c88ac405973070000000017a914e445cfa944b6f2bdacefbda904a81d5fdd26d77f8700000000000000000000000000000000000000
0400000064c99adee677fabeeba5e52c35aae7ce20715bb95e9e0900a78b7b29c7ee2c2848f65cc66f9c64793a839b2bdb6fb445999b9e4754cc31714a3f1127a83e45e2000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff2a039e1e0a00043855975e464b8896790758f824ceac9783622c17ed38f1669b8a45ce1da857dbbe7950e2ffffffff02a0ebce1d000000001976a9147ed15946ec14ae0cd8fa8991eb6084452eb3f77c88ac405973070000000017a914e445cfa944b6f2bdacefbda904a81d5fdd26d77f8700000000000000000000000000000000000000
0400000000cd9e81a002e6da04e808f05563331d087ac3cb8a99217ac0e3c14db37c242b93d4e1cd49d8c51a2c0d6c33d653227fb725eb8f64923b2da79bb784ac697317000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff2a039f1e0a00043855975e464b8896790758f824ceac9783622c17ed38f1669b8a45ce1da857dbbe7950e2ffffffff02a0ebce1d000000001976a9147ed15946ec14ae0cd8fa8991eb6084452eb3f77c88ac405973070000000017a914e445cfa944b6f2bdacefbda904a81d5fdd26d77f8700000000000000000000000000000000000000
04000000f9123c44a6cbd891b543275d6cb07e94ebb5a044d7ef45564f2d3f1097528aa95c52de2a87d85396d6fc64a261dc0bf11796bb28fb79b7aa401b5b20db28a0b3000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000fd4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff2a03a01e0a00043855975e464b8896790758f824ceac9783622c17ed38f1669b8a45ce1da857dbbe7950e2ffffffff02a0ebce1d000000001976a9147ed15946ec14ae0cd8fa8991eb6084452eb3f77c88ac405973070000000017a914e445cfa944b6f2bdacefbda904a81d5fdd26d77f8700000000000000000000000000000000000000

File diff suppressed because one or more lines are too long

32
tx-remove-reorg/generate.sh Executable file
View File

@ -0,0 +1,32 @@
#!/bin/bash
set -e
# See https://github.com/zcash/lightwalletd/issues/264
#
# This generates the input to `genblocks` to create block sets for
# this test, which is two transactions mined into a block, then a
# reorg happens and the same two transactions are mined into a new
# version of the same-height block but in reverse order (so their
# index values have changed).
#
# The two transactions used here were copied from ../transactions;
# see that directory for how to reproduce them.
# We need to use the real mainnet version of 663150, so build a
# blockchain based on that block.
rm -rf blocks
mkdir blocks
touch blocks/{663151..663200}.txt
# Add shielded dev-wallet transaction to height 663195
cat tx-8f064d23.txt > blocks/663195.txt
# Generate the blockchain
cp 663150.txt before-reorg.txt
genblocks -start-height 663151 >> before-reorg.txt
# now remove the tx, this triggers a reorg
: > blocks/663195.txt
genblocks -start-height 663195 > after-reorg.txt
rm -r blocks

View File

@ -0,0 +1 @@
0400008085202f89000000000000981e0a001027000000000000012beb225f0d8ed3d5e2e3fb03e4fefebc061a5a5e160622777f5d68a6a971229269dd245e9313937383ff8a5c4ba91c20588f942ed25105017d7154cc76e174558073affab03c8b01bd9ccbdd4bdfe1b9d122cdb7e5cbc7b5db630df1ba50653b0cc9a37baad59a82ac2a75c672cddb8b1251c28bdb51fee8f2aac7f9eb9f3a55a4a52a65f4f8f579a88752c2ca05b47a452c62919fe08308def0241ba77858b2178461a6c97e6780aae265c02a910293892ff9894b270c63fbdd8077966a968f46a691f5afe6e1abe0942863a71f678d6b8c402d6eeb7d249e1406ef27d2ed8b037772177fe1e516e013f68fd5a461b43ffe98075bf7dc29a8f65b1debaa3f3d904269f1898e88736255da1b895cae1cb99327d77caa39d6b3c4d61db0b95e28c70480dbd7e7c7fba24491c64817a708d7bed91646bb60254313cf62726d74bf70d179e40ff6115160ac1fb53f8eeb303d678fb087fe73f887f6f0262c74c453806ea9d16a344527ba52dc588a83320c580c4673da2d66f8229b3dcd2d626f04023421baa1cddb2198f3655b78d2b06880e17a04b5a5ce54adc3878ae82aa7dbdf0c1270a60f02e83722677308126ab67488b8fe383037ee6d5b95fbbd2b31eb20b6755236a31e418054256508bd483f600e4d445f757aadba56657197868ad3c22880024ebe5a2a3df86d1baa5a2fa141fcb10e9ef9edfceba686d53227feca6488847bf16ebb95b657120e6691d4bc12e0e536047692b78d10a9bc61f3ec2a4de825226fc109f231b9dd54e596b0e7fb961f44e9142ea2d0009c0fb2820dfeb522e8e5072992d1064997de75015eabb4506e850e945ac77c0c5902e922762f76f8aa6fa5fc08a7e6dfd06783e58d0c73e5c86b98be8d074ebc11ae8de06c0dbd22f4458a1284421847e4e545af138fdc0c8976d45b1866b79c5713db2a4e21060eb39e680a9bd2ebea4ca014e3aca285987c00497d1052c3e2b73a5805af8e87d141962f1d24cb466fe24bed7c7df6f1968bb4816588a9097d37c436124a3515f2187f8cc08fe55f49844266574234bbc4d29a5a679aa80b2e8a3e581b572b237aa64ad911699f27637cbecd14e79332ad4d606f44e552e7675ecd63091a91f495b91da4eaa83644fb02fd494199e69aaf2a1cc186f0bea5ed7184624d4dbfc5f2e6e6c7e6ae07251eb207861ef5d0cbac2cd8e3b764e4c841deb2f5a77be93b283dcf6dc9303b65a1affc355bc9ebece85168cad81c4986bb777eeaf6d9049c912b9a7b38b3a4c64ca9b2737c0668bd2dcc08be889b24978ce4f0029a59eee39a6b52e781409a405c9bad760627bc76a726f7fa1437640a082e1336f13bead640ac54c694993e9896e86aa41e9c5dac89567c50d5ce6b4c262c0d479e5a82c3279557ac9dc4586e785ac8d5550699883c6ff64fa94b4096df92efed8efcf8cefa78f51097e353595362bc80bd6f0ade38a381e04c5f55d65c056197741120e3adecd4e92961d4a703b635a9902f280739d6213464a2e30c65a28d0e1014180487789eb4ac0684fdd54821e8385360eccfd81a6ea3226574fbdfca45c4dff2f10a3aff2fac37856fb49af70d428c03d576151dc28f7da4b3868443f3854b5f371ff48c5c98466282f3d767a5b512eed411f19ac8058402cce1f5bab232076b4b7025cde49987d098c3e8418fb83ccd4f5fa42685e37f8fb79bab520036738fe018fe01cc4cbccd5b6a1a632c8cd62ed042460a43195488e28b94af1d9134f20e777bacac09e7ce7fcff19ff52754271e7bdce5f780f38eb6ddc069910205774082e0ee15a78dcc0ce97e10476bef973a147b75e1c4c2ab28eb401a78e11030a76a1c52d56a828858fb0520b5b1919c4efb91d8f61d05af2ee58388ce0190276b403ad7bafc5bb3b69233e05ea2cd353ea4eabb9374e01ed16995027a4678b7bd4d1dc061fce8b4eba3f3b71a61b03b7e9b6c301f0373baf57c9e4ecc060c279e7c37e7e662a7487de2da18be872a7404953f0913540ffde23ae0eb9f8ab627bd897e7a75de503c277a02742f47c91ca5df8771f2ac59abab4f4f1d176998e4a8f3c30d218214fbf502545d974247077ec3e2687b91dca28723e7a9c5c94ea112f5cc5149896df36204253469b1305a93b3a723917b97ab5547de3f2aca2c8743bb791171a3af9b516997085e4182aac28eb3e91891e92ca6fb2885d741f07cce0a82373caddd1cf4935088edfd7df5d5d372d5d36ed938394c0ebae5c3f26ce52c91e7f30752125a8fe4c8a3e0e2d4a37d790900b8ab4a66bc5240dd724a7cac89a371668681407ab75504e8098947968e4d7c562dd173f36d7a04a470991d1bb83d8614a83d5bec25d7cb7905f407bbe1d323ab8a9ab8573cf841a910787d2e92f8efffd327153689a0fe5dc0b082727bff12802ddc6ab6fced81fc3dd2ac6fd64e32ac71a760f0a52218081c97f1dbb800f1a25965cda92ac03923893ed3713d15ce57d2c56815a8bbb840afbe173c2f30e21333f67bec2aa3420cd7a1baeb8151f05058eff9d27083d2e41770ce3362eb00e65a950fa6960d738841f817b8b0c68e70264ed2d8b6178d7f11dd17492e6604c0921c7b44bc617dbc8df74f81723bf2f1e34cf03dfc3161309b051437c4886cc97505d5bad2b9ec75d2f23e6796ec74ad3be86600cba5b396ed6b4f4c63b98152d0d5dcd72b29b3c73318d1b58867e7561b9784f6e11269e6bcc064be00ccbc92826d3a3cfa17fd2ca3e9e2235165b8de8c79c9a6d8e0f89a02a812ce102f4c5f136df197de1dcb239aaff7691071a705277d8cec186f67c43abb32a516537712aacc1cd39d81958b0fb1197da074184