Commit eefcea0c authored by Kelvin Fichter's avatar Kelvin Fichter Committed by Kelvin Fichter

maintenance: remove dead code in contracts

parent dfc784e8
......@@ -60,18 +60,13 @@
"@openzeppelin/contracts-upgradeable": "^3.3.0",
"@typechain/ethers-v5": "^7.0.1",
"@typechain/hardhat": "^2.3.0",
"@types/buffer-xor": "^2.0.0",
"@types/chai": "^4.2.18",
"@types/copyfiles": "^2.4.0",
"@types/glob": "^7.1.3",
"@types/lodash": "^4.14.168",
"@types/mkdirp": "^1.0.1",
"@types/mocha": "^8.2.2",
"@types/yargs": "^16.0.1",
"@typescript-eslint/eslint-plugin": "^4.26.0",
"@typescript-eslint/parser": "^4.26.0",
"babel-eslint": "^10.1.0",
"buffer-xor": "^2.0.2",
"chai": "^4.3.4",
"copyfiles": "^2.3.0",
"directory-tree": "^2.2.7",
......
......@@ -4,5 +4,3 @@ export { tests as Lib_Bytes32Utils_TEST_JSON } from './json/libraries/utils/Lib_
export { tests as Lib_BytesUtils_TEST_JSON } from './json/libraries/utils/Lib_BytesUtils.test.json'
export { tests as Lib_MerkleTrie_TEST_JSON } from './json/libraries/trie/Lib_MerkleTrie.test.json'
export { tests as Lib_OVMCodec_TEST_JSON } from './json/libraries/codec/Lib_OVMCodec.test.json'
export { tests as CREATE2_TEST_JSON } from './json/create2.test.json'
export { tests as SAFETY_CHECKER_TEST_JSON } from './json/safety-checker.test.json'
{
"source": "https://eips.ethereum.org/EIPS/eip-1014",
"notes": "added additional tests with more bytecode",
"date": "2020-01-10",
"tests": {
"all zero values": {
"address": "0x0000000000000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"init_code": "0x00",
"result": "0x4D1A2e2bB4F88F0250f26Ffff098B0b30B26BF38"
},
"non-zero address": {
"address": "0xdeadbeef00000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"init_code": "0x00",
"result": "0xB928f69Bb1D91Cd65274e3c79d8986362984fDA3"
},
"non-zero address and salt": {
"address": "0xdeadbeef00000000000000000000000000000000",
"salt": "0x000000000000000000000000feed000000000000000000000000000000000000",
"init_code": "0x00",
"result": "0xD04116cDd17beBE565EB2422F2497E06cC1C9833"
},
"non-zero init code": {
"address": "0x0000000000000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"init_code": "0xdeadbeef",
"result": "0x70f2b2914A2a4b783FaEFb75f459A580616Fcb5e"
},
"non-zero address, salt, and short init code": {
"address": "0x00000000000000000000000000000000deadbeef",
"salt": "0x00000000000000000000000000000000000000000000000000000000cafebabe",
"init_code": "0xdeadbeef",
"result": "0x60f3f640a8508fC6a86d45DF051962668E1e8AC7"
},
"non-zero address, salt, and medium init code": {
"address": "0x00000000000000000000000000000000deadbeef",
"salt": "0x00000000000000000000000000000000000000000000000000000000cafebabe",
"init_code": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"result": "0x1d8bfDC5D46DC4f61D6b6115972536eBE6A8854C"
},
"non-zero address, salt, and long init code": {
"address": "0x00000000000000000000000000000000deadbeef",
"salt": "0x00000000000000000000000000000000000000000000000000000000cafebabe",
"init_code": "0x61309c56600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a0526366d38203600051141561013b57602060046101403734156100b457600080fd5b60043560205181106100c557600080fd5b506000610140511415600654156007541516166100e157600080fd5b33600755610140516006557f556e6973776170205631000000000000000000000000000000000000000000006000557f554e492d563100000000000000000000000000000000000000000000000000006001556012600255005b63422f104360005114156105ab5760606004610140376000341160006101605111164261018051111661016d57600080fd5b6003546101a05260006101a051111561043e576000610140511161019057600080fd5b343031101561019e57600080fd5b343031036103a0526006543b6101b357600080fd5b6006543014156101c257600080fd5b602061046060246370a082316103e05230610400526103fc6006545afa6101e857600080fd5b600050610460516103c0526103a05161020057600080fd5b6103a05134151561021257600061022f565b6103c051346103c0513402041461022857600080fd5b6103c05134025b0460016103a05161023f57600080fd5b6103a05134151561025157600061026e565b6103c051346103c0513402041461026757600080fd5b6103c05134025b0401101561027b57600080fd5b60016103a05161028a57600080fd5b6103a05134151561029c5760006102b9565b6103c051346103c051340204146102b257600080fd5b6103c05134025b0401610480526103a0516102cc57600080fd5b6103a0513415156102de5760006102fb565b6101a051346101a051340204146102f457600080fd5b6101a05134025b046104a052610140516104a0511015610480516101605110151661031e57600080fd5b60043360e05260c052604060c02080546104a051825401101561034057600080fd5b6104a0518154018155506101a0516104a0516101a05101101561036257600080fd5b6104a0516101a051016003556006543b61037b57600080fd5b60065430141561038a57600080fd5b602061058060646323b872dd6104c052336104e052306105005261048051610520526104dc60006006545af16103bf57600080fd5b600050610580516103cf57600080fd5b6104805134337f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca60006000a46104a0516105a0523360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206105a0a36104a05160005260206000f36105a9565b633b9aca003410156000600654141560006007541415161661045f57600080fd5b306007543b61046d57600080fd5b60075430141561047c57600080fd5b602061024060246306f2bf626101c0526006546101e0526101dc6007545afa6104a457600080fd5b60005061024051146104b557600080fd5b6101605161026052303161028052610280516003556102805160043360e05260c052604060c020556006543b6104ea57600080fd5b6006543014156104f957600080fd5b602061036060646323b872dd6102a052336102c052306102e05261026051610300526102bc60006006545af161052e57600080fd5b6000506103605161053e57600080fd5b6102605134337f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca60006000a461028051610380523360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610380a36102805160005260206000f35b005b63f88bf15a600051141561084a57608060046101403734156105cc57600080fd5b600061018051116000610160511116426101a051116000610140511116166105f357600080fd5b6003546101c05260006101c0511161060a57600080fd5b6006543b61061757600080fd5b60065430141561062657600080fd5b602061028060246370a0823161020052306102205261021c6006545afa61064c57600080fd5b600050610280516101e0526101c05161066457600080fd5b6101c051610140511515610679576000610699565b30316101405130316101405102041461069157600080fd5b303161014051025b046102a0526101c0516106ab57600080fd5b6101c0516101405115156106c05760006106e6565b6101e051610140516101e051610140510204146106dc57600080fd5b6101e05161014051025b046102c052610180516102c0511015610160516102a05110151661070957600080fd5b60043360e05260c052604060c020610140518154101561072857600080fd5b61014051815403815550610140516101c051101561074557600080fd5b610140516101c0510360035560006000600060006102a051336000f161076a57600080fd5b6006543b61077757600080fd5b60065430141561078657600080fd5b6020610380604463a9059cbb6102e05233610300526102c051610320526102fc60006006545af16107b657600080fd5b600050610380516107c657600080fd5b6102c0516102a051337f0fbf06c058b90cb038a618f8c2acbf6145f8b3570fd1fa56abb8f0f3f05b36e860006000a4610140516103a0526000337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206103a0a360406103c0526103e06102a05181526102c0518160200152506103c0516103e0f3005b6000156109c6575b6101a05261014052610160526101805260006101805111600061016051111661087a57600080fd5b61014051151561088b5760006108ae565b6103e5610140516103e5610140510204146108a557600080fd5b6103e561014051025b6101c0526101c05115156108c35760006108e9565b610180516101c051610180516101c0510204146108df57600080fd5b610180516101c051025b6101e0526101605115156108fe576000610921565b6103e8610160516103e86101605102041461091857600080fd5b6103e861016051025b6101c051610160511515610936576000610959565b6103e8610160516103e86101605102041461095057600080fd5b6103e861016051025b01101561096557600080fd5b6101c05161016051151561097a57600061099d565b6103e8610160516103e86101605102041461099457600080fd5b6103e861016051025b0161020052610200516109af57600080fd5b610200516101e051046000526000516101a0515650005b600015610bf3575b6101a0526101405261016052610180526000610180511160006101605111166109f657600080fd5b610160511515610a07576000610a2d565b61014051610160516101405161016051020414610a2357600080fd5b6101405161016051025b1515610a3a576000610af6565b6103e8610160511515610a4e576000610a74565b61014051610160516101405161016051020414610a6a57600080fd5b6101405161016051025b6103e8610160511515610a88576000610aae565b61014051610160516101405161016051020414610aa457600080fd5b6101405161016051025b020414610aba57600080fd5b6103e8610160511515610ace576000610af4565b61014051610160516101405161016051020414610aea57600080fd5b6101405161016051025b025b6101c05261014051610180511015610b0d57600080fd5b6101405161018051031515610b23576000610b8e565b6103e561014051610180511015610b3957600080fd5b6101405161018051036103e561014051610180511015610b5857600080fd5b610140516101805103020414610b6d57600080fd5b6103e561014051610180511015610b8357600080fd5b610140516101805103025b6101e0526101e051610b9f57600080fd5b6101e0516101c0510460016101e051610bb757600080fd5b6101e0516101c05104011015610bcc57600080fd5b60016101e051610bdb57600080fd5b6101e0516101c05104016000526000516101a0515650005b600015610df4575b6101e0526101405261016052610180526101a0526101c0526000610160511160006101405111164261018051101516610c3357600080fd5b6006543b610c4057600080fd5b600654301415610c4f57600080fd5b60206102a060246370a0823161022052306102405261023c6006545afa610c7557600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516389f2a8716102e05261014051610300526101405130311015610cd657600080fd5b6101405130310361032052610200516103405261034051610320516103005160065801610852565b6103a0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103a0516102c052610160516102c0511015610d5157600080fd5b6006543b610d5e57600080fd5b600654301415610d6d57600080fd5b6020610460604463a9059cbb6103c0526101c0516103e0526102c051610400526103dc60006006545af1610da057600080fd5b60005061046051610db057600080fd5b6102c051610140516101a0517fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f60006000a46102c0516000526000516101e0515650005b63f39b5b9b6000511415610e715760406004610140376101405161016051638c717a3361018052346101a052610140516101c052610160516101e0523361020052336102205261022051610200516101e0516101c0516101a05160065801610bfb565b6102805261016052610140526102805160005260206000f3005b63ad65d76d6000511415610f245760606004610140376044356020518110610e9857600080fd5b5060006101805114153061018051141516610eb257600080fd5b610140516101605161018051638c717a336101a052346101c052610140516101e0526101605161020052336102205261018051610240526102405161022051610200516101e0516101c05160065801610bfb565b6102a0526101805261016052610140526102a05160005260206000f3005b60001561116c575b6101e0526101405261016052610180526101a0526101c0526000610160511160006101405111164261018051101516610f6457600080fd5b6006543b610f7157600080fd5b600654301415610f8057600080fd5b60206102a060246370a0823161022052306102405261023c6006545afa610fa657600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c05163fd11c2236102e0526101405161030052610160513031101561100757600080fd5b61016051303103610320526102005161034052610340516103205161030051600658016109ce565b6103a0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103a0516102c05260016102c051026103e0526103e05161016051101561108d57600080fd5b6103e05161016051036103c05260006103c05111156110c35760006000600060006103c0516101a0516000f16110c257600080fd5b5b6006543b6110d057600080fd5b6006543014156110df57600080fd5b60206104a0604463a9059cbb610400526101c05161042052610140516104405261041c60006006545af161111257600080fd5b6000506104a05161112257600080fd5b6101405160016102c051026101a0517fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f60006000a460016102c051026000526000516101e0515650005b636b1d4db760005114156111e95760406004610140376101405161016051632dff394e61018052610140516101a052346101c052610160516101e0523361020052336102205261022051610200516101e0516101c0516101a05160065801610f2c565b6102805261016052610140526102805160005260206000f3005b630b573638600051141561129c576060600461014037604435602051811061121057600080fd5b506000610180511415306101805114151661122a57600080fd5b610140516101605161018051632dff394e6101a052610140516101c052346101e0526101605161020052336102205261018051610240526102405161022051610200516101e0516101c05160065801610f2c565b6102a0526101805261016052610140526102a05160005260206000f3005b6000156114b3575b6101e0526101405261016052610180526101a0526101c05260006101605111600061014051111642610180511015166112dc57600080fd5b6006543b6112e957600080fd5b6006543014156112f857600080fd5b60206102a060246370a0823161022052306102405261023c6006545afa61131e57600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516389f2a8716102e0526101405161030052610200516103205230316103405261034051610320516103005160065801610852565b6103a0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103a0516102c05260016102c051026103c052610160516103c05110156113ef57600080fd5b60006000600060006103c0516101c0516000f161140b57600080fd5b6006543b61141857600080fd5b60065430141561142757600080fd5b60206104a060646323b872dd6103e0526101a05161040052306104205261014051610440526103fc60006006545af161145f57600080fd5b6000506104a05161146f57600080fd5b6103c051610140516101a0517f7f4091b46c33e918a0f3aa42307641d17bb67029427a5369e54b35398423870560006000a46103c0516000526000516101e0515650005b6395e3c50b600051141561154657606060046101403734156114d457600080fd5b61014051610160516101805163fa1bb7be6101a052610140516101c052610160516101e0526101805161020052336102205233610240526102405161022051610200516101e0516101c051600658016112a4565b6102a0526101805261016052610140526102a05160005260206000f3005b637237e031600051141561160f576080600461014037341561156757600080fd5b606435602051811061157857600080fd5b5060006101a0511415306101a05114151661159257600080fd5b6101405161016051610180516101a05163fa1bb7be6101c052610140516101e0526101605161020052610180516102205233610240526101a05161026052610260516102405161022051610200516101e051600658016112a4565b6102c0526101a0526101805261016052610140526102c05160005260206000f3005b600015611813575b6101e0526101405261016052610180526101a0526101c05260006101405111426101805110151661164757600080fd5b6006543b61165457600080fd5b60065430141561166357600080fd5b60206102a060246370a0823161022052306102405261023c6006545afa61168957600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c05163fd11c2236102e05261014051610300526102005161032052303161034052610340516103205161030051600658016109ce565b6103a0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103a0516102c0526102c05161016051101561174f57600080fd5b6000600060006000610140516101c0516000f161176b57600080fd5b6006543b61177857600080fd5b60065430141561178757600080fd5b602061048060646323b872dd6103c0526101a0516103e05230610400526102c051610420526103dc60006006545af16117bf57600080fd5b600050610480516117cf57600080fd5b610140516102c0516101a0517f7f4091b46c33e918a0f3aa42307641d17bb67029427a5369e54b35398423870560006000a46102c0516000526000516101e0515650005b63013efd8b60005114156118a6576060600461014037341561183457600080fd5b61014051610160516101805163984fe8f66101a052610140516101c052610160516101e0526101805161020052336102205233610240526102405161022051610200516101e0516101c05160065801611617565b6102a0526101805261016052610140526102a05160005260206000f3005b63d4e4841d600051141561196f57608060046101403734156118c757600080fd5b60643560205181106118d857600080fd5b5060006101a0511415306101a0511415166118f257600080fd5b6101405161016051610180516101a05163984fe8f66101c052610140516101e0526101605161020052610180516102205233610240526101a05161026052610260516102405161022051610200516101e05160065801611617565b6102c0526101a0526101805261016052610140526102c05160005260206000f3005b600015611c0a575b610220526101405261016052610180526101a0526101c0526101e0526102005260006101805111600061016051111660006101405111426101a051101516166119bf57600080fd5b600061020051141530610200511415166119d857600080fd5b6006543b6119e557600080fd5b6006543014156119f457600080fd5b60206102e060246370a0823161026052306102805261027c6006545afa611a1a57600080fd5b6000506102e051610240526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e051610300516389f2a871610320526101405161034052610240516103605230316103805261038051610360516103405160065801610852565b6103e052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103e05161030052600161030051026104005261018051610400511015611afb57600080fd5b6006543b611b0857600080fd5b600654301415611b1757600080fd5b60206104e060646323b872dd610420526101c051610440523061046052610140516104805261043c60006006545af1611b4f57600080fd5b6000506104e051611b5f57600080fd5b610200513b611b6d57600080fd5b61020051301415611b7d57600080fd5b60206105e0606463ad65d76d6105205261016051610540526101a051610560526101e0516105805261053c61040051610200515af1611bbb57600080fd5b6000506105e0516105005261040051610140516101c0517f7f4091b46c33e918a0f3aa42307641d17bb67029427a5369e54b35398423870560006000a461050051600052600051610220515650005b63ddf7e1a76000511415611d575760a06004610140373415611c2b57600080fd5b6084356020518110611c3c57600080fd5b506007543b611c4a57600080fd5b600754301415611c5957600080fd5b602061028060246306f2bf62610200526101c0516102205261021c6007545afa611c8257600080fd5b600050610280516101e0526101405161016051610180516101a0516101c0516101e051610200516102205161024051610260516102805163204ea33b6102a052610140516102c052610160516102e05261018051610300526101a05161032052336103405233610360526101e0516103805261038051610360516103405161032051610300516102e0516102c05160065801611977565b6103e05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103e05160005260206000f3005b63f552d91b6000511415611ec15760c06004610140373415611d7857600080fd5b6084356020518110611d8957600080fd5b5060a4356020518110611d9b57600080fd5b506007543b611da957600080fd5b600754301415611db857600080fd5b60206102a060246306f2bf62610220526101e0516102405261023c6007545afa611de157600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a05163204ea33b6102c052610140516102e052610160516103005261018051610320526101a0516103405233610360526101c05161038052610200516103a0526103a05161038051610360516103405161032051610300516102e05160065801611977565b610400526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526104005160005260206000f3005b6000156121d7575b610220526101405261016052610180526101a0526101c0526101e05261020052600061018051116000610140511116426101a051101516611f0957600080fd5b60006102005114153061020051141516611f2257600080fd5b610200513b611f3057600080fd5b61020051301415611f4057600080fd5b60206102e060246359e9486261026052610140516102805261027c610200515afa611f6a57600080fd5b6000506102e051610240526006543b611f8257600080fd5b600654301415611f9157600080fd5b60206103a060246370a0823161032052306103405261033c6006545afa611fb757600080fd5b6000506103a051610300526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c05163fd11c2236103e05261024051610400526103005161042052303161044052610440516104205161040051600658016109ce565b6104a0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526104a0516103c052610240516101805110156103c051610160511015166120c857600080fd5b6006543b6120d557600080fd5b6006543014156120e457600080fd5b602061058060646323b872dd6104c0526101c0516104e05230610500526103c051610520526104dc60006006545af161211c57600080fd5b6000506105805161212c57600080fd5b610200513b61213a57600080fd5b6102005130141561214a57600080fd5b60206106806064630b5736386105c052610140516105e0526101a051610600526101e051610620526105dc61024051610200515af161218857600080fd5b600050610680516105a052610240516103c0516101c0517f7f4091b46c33e918a0f3aa42307641d17bb67029427a5369e54b35398423870560006000a46103c051600052600051610220515650005b63b040d54560005114156123245760a060046101403734156121f857600080fd5b608435602051811061220957600080fd5b506007543b61221757600080fd5b60075430141561222657600080fd5b602061028060246306f2bf62610200526101c0516102205261021c6007545afa61224f57600080fd5b600050610280516101e0526101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605161028051631a7b28f26102a052610140516102c052610160516102e05261018051610300526101a05161032052336103405233610360526101e0516103805261038051610360516103405161032051610300516102e0516102c05160065801611ec9565b6103e05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103e05160005260206000f3005b63f3c0efe9600051141561248e5760c0600461014037341561234557600080fd5b608435602051811061235657600080fd5b5060a435602051811061236857600080fd5b506007543b61237657600080fd5b60075430141561238557600080fd5b60206102a060246306f2bf62610220526101e0516102405261023c6007545afa6123ae57600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a051631a7b28f26102c052610140516102e052610160516103005261018051610320526101a0516103405233610360526101c05161038052610200516103a0526103a05161038051610360516103405161032051610300516102e05160065801611ec9565b610400526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526104005160005260206000f3005b63b1cb43bf600051141561255b5760a060046101403734156124af57600080fd5b60843560205181106124c057600080fd5b506101405161016051610180516101a0516101c05163204ea33b6101e0526101405161020052610160516102205261018051610240526101a051610260523361028052336102a0526101c0516102c0526102c0516102a051610280516102605161024051610220516102005160065801611977565b610320526101c0526101a0526101805261016052610140526103205160005260206000f3005b63ec384a3e60005114156126555760c0600461014037341561257c57600080fd5b608435602051811061258d57600080fd5b5060a435602051811061259f57600080fd5b50306101c05114156125b057600080fd5b6101405161016051610180516101a0516101c0516101e05163204ea33b610200526101405161022052610160516102405261018051610260526101a05161028052336102a0526101c0516102c0526101e0516102e0526102e0516102c0516102a0516102805161026051610240516102205160065801611977565b610340526101e0526101c0526101a0526101805261016052610140526103405160005260206000f3005b63ea650c7d60005114156127225760a0600461014037341561267657600080fd5b608435602051811061268757600080fd5b506101405161016051610180516101a0516101c051631a7b28f26101e0526101405161020052610160516102205261018051610240526101a051610260523361028052336102a0526101c0516102c0526102c0516102a051610280516102605161024051610220516102005160065801611ec9565b610320526101c0526101a0526101805261016052610140526103205160005260206000f3005b63981a1327600051141561281c5760c0600461014037341561274357600080fd5b608435602051811061275457600080fd5b5060a435602051811061276657600080fd5b50306101c051141561277757600080fd5b6101405161016051610180516101a0516101c0516101e051631a7b28f2610200526101405161022052610160516102405261018051610260526101a05161028052336102a0526101c0516102c0526101e0516102e0526102e0516102c0516102a0516102805161026051610240516102205160065801611ec9565b610340526101e0526101c0526101a0526101805261016052610140526103405160005260206000f3005b63cd7724c36000511415612918576020600461014037341561283d57600080fd5b6000610140511161284d57600080fd5b6006543b61285a57600080fd5b60065430141561286957600080fd5b602061020060246370a0823161018052306101a05261019c6006545afa61288f57600080fd5b60005061020051610160526101405161016051610180516101a0516101c0516101e051610200516389f2a871610220526101405161024052303161026052610160516102805261028051610260516102405160065801610852565b6102e052610200526101e0526101c0526101a0526101805261016052610140526102e05160005260206000f3005b6359e948626000511415612a27576020600461014037341561293957600080fd5b6000610140511161294957600080fd5b6006543b61295657600080fd5b60065430141561296557600080fd5b602061020060246370a0823161018052306101a05261019c6006545afa61298b57600080fd5b60005061020051610160526101405161016051610180516101a0516101c0516101e051610200516102205163fd11c223610240526101405161026052303161028052610160516102a0526102a0516102805161026051600658016109ce565b6103005261022052610200526101e0526101c0526101a05261018052610160526101405261030051610220526001610220510260005260206000f3005b6395b68fe76000511415612b365760206004610140373415612a4857600080fd5b60006101405111612a5857600080fd5b6006543b612a6557600080fd5b600654301415612a7457600080fd5b602061020060246370a0823161018052306101a05261019c6006545afa612a9a57600080fd5b60005061020051610160526101405161016051610180516101a0516101c0516101e05161020051610220516389f2a871610240526101405161026052610160516102805230316102a0526102a051610280516102605160065801610852565b6103005261022052610200526101e0526101c0526101a05261018052610160526101405261030051610220526001610220510260005260206000f3005b632640f62c6000511415612c325760206004610140373415612b5757600080fd5b60006101405111612b6757600080fd5b6006543b612b7457600080fd5b600654301415612b8357600080fd5b602061020060246370a0823161018052306101a05261019c6006545afa612ba957600080fd5b60005061020051610160526101405161016051610180516101a0516101c0516101e0516102005163fd11c2236102205261014051610240526101605161026052303161028052610280516102605161024051600658016109ce565b6102e052610200526101e0526101c0526101a0526101805261016052610140526102e05160005260206000f3005b639d76ea586000511415612c58573415612c4b57600080fd5b60065460005260206000f3005b63966dae0e6000511415612c7e573415612c7157600080fd5b60075460005260206000f3005b6370a082316000511415612ccd5760206004610140373415612c9f57600080fd5b6004356020518110612cb057600080fd5b5060046101405160e05260c052604060c0205460005260206000f3005b63a9059cbb6000511415612d985760406004610140373415612cee57600080fd5b6004356020518110612cff57600080fd5b5060043360e05260c052604060c0206101605181541015612d1f57600080fd5b6101605181540381555060046101405160e05260c052604060c0208054610160518254011015612d4e57600080fd5b61016051815401815550610160516101805261014051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610180a3600160005260206000f3005b6323b872dd6000511415612eb35760606004610140373415612db957600080fd5b6004356020518110612dca57600080fd5b506024356020518110612ddc57600080fd5b5060046101405160e05260c052604060c0206101805181541015612dff57600080fd5b6101805181540381555060046101605160e05260c052604060c0208054610180518254011015612e2e57600080fd5b6101805181540181555060056101405160e05260c052604060c0203360e05260c052604060c0206101805181541015612e6657600080fd5b61018051815403815550610180516101a05261016051610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101a0a3600160005260206000f3005b63095ea7b36000511415612f485760406004610140373415612ed457600080fd5b6004356020518110612ee557600080fd5b506101605160053360e05260c052604060c0206101405160e05260c052604060c02055610160516101805261014051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610180a3600160005260206000f3005b63dd62ed3e6000511415612fb85760406004610140373415612f6957600080fd5b6004356020518110612f7a57600080fd5b506024356020518110612f8c57600080fd5b5060056101405160e05260c052604060c0206101605160e05260c052604060c0205460005260206000f3005b6306fdde036000511415612fde573415612fd157600080fd5b60005460005260206000f3005b6395d89b416000511415613004573415612ff757600080fd5b60015460005260206000f3005b63313ce567600051141561302a57341561301d57600080fd5b60025460005260206000f3005b6318160ddd600051141561305057341561304357600080fd5b60035460005260206000f3005b638c717a33610140523461016052600161018052426101a052336101c052336101e0526101e0516101c0516101a051610180516101605160065801610bfb565b610240526102405b61000461309c0361000460003961000461309c036000f3",
"result": "0x27ff8bbb55a2b5cfd4fb7c350ed6a6a2cdbed5d9"
},
"non-zero address, salt, and very long init code": {
"address": "0x00000000000000000000000000000000deadbeef",
"salt": "0x00000000000000000000000000000000000000000000000000000000cafebabe",
"init_code": "0x60806040526016805460a060020a61ffff02191675010000000000000000000000000000000000000000001790553480156200003a57600080fd5b5060405161016080620062768339810160408181528251602080850151838601516060870151608088015160a089015160c08a015160e08b01516101008c01516101208d0151610140909d01518b8d018c5260178d527f53796e746865746978204e6574776f726b20546f6b656e0000000000000000008a8e01528b51808d01909c5260038c527f534e580000000000000000000000000000000000000000000000000000000000998c0199909952989b969a9599949893979296919590949192918c918c918460128d86818080600160a060020a03811615156200018057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b60008054600160a060020a031916600160a060020a038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150600160a060020a03811615156200025157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f776e6572206d757374206e6f74206265207a65726f00000000000000000000604482015290519081900360640190fd5b60038054600160a060020a038316610100810261010060a860020a03199092169190911790915560408051918252517fd5da63a0b864b315bc04128dedbc93888c8529ee6cf47ce664dc204339228c539181900360200190a15060048054600160a060020a038416600160a060020a0319909116811790915560408051918252517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e9181900360200190a15050600160075560088054600160a060020a031916600160a060020a038816179055845162000333906009906020880190620003f0565b5083516200034990600a906020870190620003f0565b5050600b91909155600c805460ff191660ff909216919091179055505060148054600160a060020a0319908116600160a060020a039d8e16179091556013805482169a8d169a909a179099555050601080548816968a16969096179095556015805487169489169490941790935560128054861692881692909217909155601180548516918716919091179055601680549093169416939093179055506200049592505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200043357805160ff191683800117855562000463565b8280016001018555821562000463579182015b828111156200046357825182559160200191906001019062000446565b506200047192915062000475565b5090565b6200049291905b808211156200047157600081556001016200047c565b90565b615dd180620004a56000396000f30060806040526004361061031e5763ffffffff60e060020a60003504166306fdde03811461032357806309231602146103ad578063095ea7b3146103c75780630b887dae146103ff5780631249c58b14610417578063131b0ae71461042c5780631627540c1461044d57806316b2213f1461046e57806317c70de4146104a157806318160ddd146104b657806319db2228146104cb5780631a5c6095146104ec5780631c8aa5fa1461050757806320714f881461052857806323b872dd14610549578063295da87d14610573578063313ce5671461058b57806332608039146105b65780633278c960146105ea5780633fc6df6e146105ff5780634ffcd9df1461061457806353a47bb71461062957806356e449541461063e578063654a60ac1461065f5780636ac0bf9c1461067d5780636b4dff1f1461069e57806370a08231146106b657806372cb051f146106d757806379ba50971461073c5780638357ce3614610751578063835e119c1461077557806383d625d41461078d578063849cf588146107a55780638a290014146107c65780638da5cb5b146107de57806394524096146107f357806395d89b411461080d578063961a929c1461082257806397107d6d146108375780639cb8a26a146108585780639cbdaeb61461086d5780639f76980714610882578063a311c7c2146108a3578063a430be6c146108c4578063a461fc82146108d9578063a5fdc5de146108ee578063a8913cdb1461090f578063a9059cbb14610933578063ab3e337d14610957578063ab67aa581461098a578063ae2e933b146109f9578063af086c7e14610a0e578063b8225dec14610a23578063bc67f83214610a38578063bd32aa4414610a59578063be45fd6214610a6e578063c40dd66f14610ad7578063c58aaae614610aec578063c9df6df514610b01578063d37c4d8b14610b1b578063d67bdd2514610b3f578063dbd4a42214610b54578063dbf6334014610b69578063dd62ed3e14610b7e578063e2fdcc1714610ba5578063e90dd9e214610bba578063ec55688914610bcf578063ee52a2f314610be4578063f534375214610c02578063fe7f7bc314610c17575b600080fd5b34801561032f57600080fd5b50610338610c2c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561037257818101518382015260200161035a565b50505050905090810190601f16801561039f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b957600080fd5b506103c5600435610cba565b005b3480156103d357600080fd5b506103eb600160a060020a0360043516602435610d79565b604080519115158252519081900360200190f35b34801561040b57600080fd5b506103c5600435610e7f565b34801561042357600080fd5b506103eb61128f565b34801561043857600080fd5b506103c5600160a060020a036004351661179c565b34801561045957600080fd5b506103c5600160a060020a0360043516611822565b34801561047a57600080fd5b5061048f600160a060020a03600435166118da565b60408051918252519081900360200190f35b3480156104ad57600080fd5b5061048f6118ec565b3480156104c257600080fd5b5061048f6118f2565b3480156104d757600080fd5b506103c5600160a060020a03600435166118f8565b3480156104f857600080fd5b5061048f6004356024356119c5565b34801561051357600080fd5b506103c5600160a060020a0360043516611b91565b34801561053457600080fd5b506103c5600160a060020a0360043516611c5e565b34801561055557600080fd5b506103eb600160a060020a0360043581169060243516604435611d8b565b34801561057f57600080fd5b506103c5600435611da4565b34801561059757600080fd5b506105a0611f89565b6040805160ff9092168252519081900360200190f35b3480156105c257600080fd5b506105ce600435611f92565b60408051600160a060020a039092168252519081900360200190f35b3480156105f657600080fd5b506103c5611fad565b34801561060b57600080fd5b506105ce61204b565b34801561062057600080fd5b506105ce61205a565b34801561063557600080fd5b506105ce612069565b34801561064a57600080fd5b506103c5600160a060020a0360043516612078565b34801561066b57600080fd5b5061048f600435602435604435612145565b34801561068957600080fd5b5061048f600160a060020a03600435166121ef565b3480156106aa57600080fd5b506103c5600435612444565b3480156106c257600080fd5b5061048f600160a060020a03600435166124a1565b3480156106e357600080fd5b506106ec612528565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610728578181015183820152602001610710565b505050509050019250505060405180910390f35b34801561074857600080fd5b506103c56125cc565b34801561075d57600080fd5b5061048f600160a060020a03600435166024356126c7565b34801561078157600080fd5b506105ce60043561270b565b34801561079957600080fd5b5061048f600435612733565b3480156107b157600080fd5b506103c5600160a060020a0360043516612a57565b3480156107d257600080fd5b506103c5600435612cc2565b3480156107ea57600080fd5b506105ce612e38565b3480156107ff57600080fd5b506103c56004351515612e47565b34801561081957600080fd5b50610338612f34565b34801561082e57600080fd5b5061048f612f8f565b34801561084357600080fd5b506103c5600160a060020a0360043516612f95565b34801561086457600080fd5b506103c561304d565b34801561087957600080fd5b506105ce6131c6565b34801561088e57600080fd5b506103c5600160a060020a03600435166131d5565b3480156108af57600080fd5b5061048f600160a060020a03600435166132a4565b3480156108d057600080fd5b506105ce6132f3565b3480156108e557600080fd5b5061048f613302565b3480156108fa57600080fd5b5061048f600160a060020a0360043516613309565b34801561091b57600080fd5b5061048f600160a060020a03600435166024356134a0565b34801561093f57600080fd5b506103eb600160a060020a0360043516602435613558565b34801561096357600080fd5b506103eb600160a060020a0360043581169060243590604435906064359060843516613567565b34801561099657600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526103eb94600160a060020a0381358116956024803590921695604435953695608494019181908401838280828437509497506136f99650505050505050565b348015610a0557600080fd5b506105ce6137d6565b348015610a1a57600080fd5b506103c56137e5565b348015610a2f57600080fd5b506103eb6138e4565b348015610a4457600080fd5b506103c5600160a060020a03600435166138ed565b348015610a6557600080fd5b506103c5613988565b348015610a7a57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526103eb948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750613a359650505050505050565b348015610ae357600080fd5b506105ce613b1c565b348015610af857600080fd5b506105ce613b2b565b348015610b0d57600080fd5b506103c56004351515613b3f565b348015610b2757600080fd5b5061048f600160a060020a0360043516602435613c5d565b348015610b4b57600080fd5b506105ce613e89565b348015610b6057600080fd5b506105ce613e98565b348015610b7557600080fd5b5061048f613ea7565b348015610b8a57600080fd5b5061048f600160a060020a0360043581169060243516613eae565b348015610bb157600080fd5b506105ce613f54565b348015610bc657600080fd5b506105ce613f63565b348015610bdb57600080fd5b506105ce613f72565b348015610bf057600080fd5b506103eb600435602435604435613f81565b348015610c0e57600080fd5b506103eb61416e565b348015610c2357600080fd5b506105ce614190565b6009805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cb25780601f10610c8757610100808354040283529160200191610cb2565b820191906000526020600020905b815481529060010190602001808311610c9557829003601f168201915b505050505081565b601854600160a060020a03163314610d1c576040805160e560020a62461bcd02815260206004820152601d60248201527f4f6e6c7920676173206c696d6974206f7261636c6520616c6c6f776564000000604482015290519081900360640190fd5b60008111610d74576040805160e560020a62461bcd02815260206004820152601a60248201527f4e6565647320746f2062652067726561746572207468616e2030000000000000604482015290519081900360640190fd5b601755565b6004546000908190600160a060020a03163314801590610da45750600554600160a060020a03163314155b8015610dbb5750600654600160a060020a03163314155b15610dd35760068054600160a060020a031916331790555b50600654600854604080517fda46098c000000000000000000000000000000000000000000000000000000008152600160a060020a0393841660048201819052878516602483015260448201879052915191939092169163da46098c91606480830192600092919082900301818387803b158015610e5057600080fd5b505af1158015610e64573d6000803e3d6000fd5b50505050610e7381858561419f565b600191505b5092915050565b6004546000908190600160a060020a03163314801590610eaa5750600554600160a060020a03163314155b8015610ec15750600654600160a060020a03163314155b15610ed95760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614610f2f576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b6000838152600e6020526040902054600160a060020a03161515610f9d576040805160e560020a62461bcd02815260206004820152601460248201527f53796e746820646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000838152600e602090815260408083205481517f18160ddd0000000000000000000000000000000000000000000000000000000081529151600160a060020a03909116936318160ddd93600480850194919392918390030190829087803b15801561100857600080fd5b505af115801561101c573d6000803e3d6000fd5b505050506040513d602081101561103257600080fd5b505115611089576040805160e560020a62461bcd02815260206004820152601360248201527f53796e746820737570706c792065786973747300000000000000000000000000604482015290519081900360640190fd5b60e960020a622c2229028314156110ea576040805160e560020a62461bcd02815260206004820152601760248201527f43616e6e6f742072656d6f7665205844522073796e7468000000000000000000604482015290519081900360640190fd5b60e260020a631cd554d10283141561114c576040805160e560020a62461bcd02815260206004820152601860248201527f43616e6e6f742072656d6f766520735553442073796e74680000000000000000604482015290519081900360640190fd5b50506000818152600e6020526040812054600160a060020a0316905b600d5481101561124f5781600160a060020a0316600d8281548110151561118b57fe5b600091825260209091200154600160a060020a0316141561124757600d8054829081106111b457fe5b60009182526020909120018054600160a060020a0319169055600d805460001981019081106111df57fe5b600091825260209091200154600d8054600160a060020a03909216918390811061120557fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600d805490611241906000198301615cfe565b5061124f565b600101611168565b50506000818152600e602081815260408084208054600160a060020a03168552600f83529084208490559390925290528054600160a060020a0319169055565b601654600090819081908190600160a060020a031615156112fa576040805160e560020a62461bcd02815260206004820152601b60248201527f52657761726473446973747269627574696f6e206e6f74207365740000000000604482015290519081900360640190fd5b601560009054906101000a9004600160a060020a0316600160a060020a031663cc5c095c6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561134d57600080fd5b505af1158015611361573d6000803e3d6000fd5b505050506040513d602081101561137757600080fd5b50519250600083116113d3576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f20737570706c79206973206d696e7461626c650000000000000000000000604482015290519081900360640190fd5b601554604080517f7e7961d7000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a0390921691637e7961d7916024808201926020929091908290030181600087803b15801561143a57600080fd5b505af115801561144e573d6000803e3d6000fd5b505050506040513d602081101561146457600080fd5b5050601554604080517f9bdd7ac70000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691639bdd7ac7916004808201926020929091908290030181600087803b1580156114c657600080fd5b505af11580156114da573d6000803e3d6000fd5b505050506040513d60208110156114f057600080fd5b50519150611504838363ffffffff61430716565b6008546016546040805160e060020a6370a08231028152600160a060020a03928316600482018190529151949550919092169263b46310f692916115a691869186916370a08231916024808201926020929091908290030181600087803b15801561156e57600080fd5b505af1158015611582573d6000803e3d6000fd5b505050506040513d602081101561159857600080fd5b50519063ffffffff61431e16565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b1580156115f857600080fd5b505af115801561160c573d6000803e3d6000fd5b50506016546116289250309150600160a060020a031683614330565b601654604080517f59974e38000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916359974e389160248082019260009290919082900301818387803b15801561168e57600080fd5b505af11580156116a2573d6000803e3d6000fd5b50506008546040805160e060020a6370a0823102815233600482018190529151600160a060020a03909316945063b46310f69350909161170791879186916370a082319160248083019260209291908290030181600087803b15801561156e57600080fd5b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561175957600080fd5b505af115801561176d573d6000803e3d6000fd5b5050505061177c303384614330565b600b5461178f908463ffffffff61431e16565b600b556001935050505090565b600054600160a060020a03163314611800576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b600054600160a060020a03163314611886576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b60018054600160a060020a038316600160a060020a0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b600f6020526000908152604090205481565b60025481565b600b5481565b600454600160a060020a0316331480159061191e5750600554600160a060020a03163314155b80156119355750600654600160a060020a03163314155b1561194d5760068054600160a060020a031916331790555b600054600654600160a060020a039081169116146119a3576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b60108054600160a060020a031916600160a060020a0392909216919091179055565b6000806000601060009054906101000a9004600160a060020a0316600160a060020a0316630f9b49556040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611a1d57600080fd5b505af1158015611a31573d6000803e3d6000fd5b505050506040513d6020811015611a4757600080fd5b50519150600190507f7300000000000000000000000000000000000000000000000000000000000000600160f860020a031960f860020a600088901a0216148015611a9c575060e260020a631cd554d1028514155b8015611adb57507f6900000000000000000000000000000000000000000000000000000000000000600160f860020a031960f860020a600087901a0216145b80611b6d57507f6900000000000000000000000000000000000000000000000000000000000000600160f860020a031960f860020a600088901a0216148015611b2e575060e260020a631cd554d1028414155b8015611b6d57507f7300000000000000000000000000000000000000000000000000000000000000600160f860020a031960f860020a600087901a0216145b15611b76575060025b611b86828263ffffffff61443216565b92505b505092915050565b600454600160a060020a03163314801590611bb75750600554600160a060020a03163314155b8015611bce5750600654600160a060020a03163314155b15611be65760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614611c3c576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b60188054600160a060020a031916600160a060020a0392909216919091179055565b600054600160a060020a03163314611cc2576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b600160a060020a0381161515611d22576040805160e560020a62461bcd02815260206004820152601c60248201527f42656e6566696369617279206d757374206e6f74206265207a65726f00000000604482015290519081900360640190fd5b60038054600160a060020a038316610100810274ffffffffffffffffffffffffffffffffffffffff00199092169190911790915560408051918252517fd5da63a0b864b315bc04128dedbc93888c8529ee6cf47ce664dc204339228c539181900360200190a150565b60006060611d9b858585846136f9565b95945050505050565b60045460009081908190819081908190600160a060020a03163314801590611dd75750600554600160a060020a03163314155b8015611dee5750600654600160a060020a03163314155b15611e065760068054600160a060020a031916331790555b60e260020a631cd554d1029550611e27868860e960020a622c222902612145565b600654909550611e4990600160a060020a031660e960020a622c222902613c5d565b600654909450611e6290600160a060020a031687613c5d565b925060008411611ebc576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f206465627420746f20666f72676976650000000000000000000000000000604482015290519081900360640190fd5b848410611ec95784611ecb565b835b9150611ed78285614460565b868310611ee45786611ee6565b825b6000878152600e60205260408082205460065482517f9dc29fac000000000000000000000000000000000000000000000000000000008152600160a060020a0391821660048201526024810186905292519495501692639dc29fac9260448084019391929182900301818387803b158015611f6057600080fd5b505af1158015611f74573d6000803e3d6000fd5b50505050611f806147be565b50505050505050565b600c5460ff1681565b600e60205260009081526040902054600160a060020a031681565b600054600160a060020a03163314612011576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b600060028190556003805460ff191690556040517f6adcc7125002935e0aa31697538ebbd65cfddf20431eb6ecdcfc3e238bfd082c9190a1565b601654600160a060020a031681565b601354600160a060020a031681565b600154600160a060020a031681565b600454600160a060020a0316331480159061209e5750600554600160a060020a03163314155b80156120b55750600654600160a060020a03163314155b156120cd5760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614612123576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b60138054600160a060020a031916600160a060020a0392909216919091179055565b601354604080517f654a60ac0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490529051600092600160a060020a03169163654a60ac91606480830192602092919082900301818787803b1580156121b957600080fd5b505af11580156121cd573d6000803e3d6000fd5b505050506040513d60208110156121e357600080fd5b505190505b9392505050565b601354604080517e9919c000000000000000000000000000000000000000000000000000000000815260eb60020a620a69cb02600482018190529151600093849384939092600160a060020a0390921691629919c09160248082019260209290919082900301818887803b15801561226657600080fd5b505af115801561227a573d6000803e3d6000fd5b505050506040513d602081101561229057600080fd5b5051156122e7576040805160e560020a62461bcd02815260206004820152601960248201527f52617465207374616c65206f72206e6f7420612073796e746800000000000000604482015290519081900360640190fd5b6008546040805160e060020a6370a08231028152600160a060020a038881166004830152915191909216916370a082319160248083019260209291908290030181600087803b15801561233957600080fd5b505af115801561234d573d6000803e3d6000fd5b505050506040513d602081101561236357600080fd5b5051601454604080517fb410a034000000000000000000000000000000000000000000000000000000008152905192955061241792600160a060020a039092169163b410a034916004808201926020929091908290030181600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b505050506040513d60208110156123f657600080fd5b505161240b8760eb60020a620a69cb02613c5d565b9063ffffffff6148f116565b9150828210612429576000935061243c565b612439838363ffffffff61430716565b93505b505050919050565b60175481111561249e576040805160e560020a62461bcd02815260206004820152601560248201527f4761732070726963652061626f7665206c696d69740000000000000000000000604482015290519081900360640190fd5b50565b6008546040805160e060020a6370a08231028152600160a060020a038481166004830152915160009392909216916370a082319160248082019260209290919082900301818787803b1580156124f657600080fd5b505af115801561250a573d6000803e3d6000fd5b505050506040513d602081101561252057600080fd5b505192915050565b6060806000600d8054905060405190808252806020026020018201604052801561255c578160200160208202803883390190505b509150600090505b600d548110156125c657600f6000600d8381548110151561258157fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205482518390839081106125b457fe5b60209081029091010152600101612564565b50919050565b600154600160a060020a03163314612654576040805160e560020a62461bcd02815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015290519081900360840190fd5b60005460015460408051600160a060020a03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60008060006126d68585613c5d565b91506126e285856134a0565b90508082106126f45760009250611b89565b612704818363ffffffff61430716565b9250611b89565b600d80548290811061271957fe5b600091825260209091200154600160a060020a0316905081565b601354604080517fac82f60800000000000000000000000000000000000000000000000000000000815260048101849052905160009283928392606092849283928392600160a060020a03169163ac82f60891602480830192602092919082900301818787803b1580156127a657600080fd5b505af11580156127ba573d6000803e3d6000fd5b505050506040513d60208110156127d057600080fd5b5051601354909550600160a060020a031663babcb4236127ee612528565b6040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019060200280838360005b83811015612840578181015183820152602001612828565b5050505090500192505050600060405180830381600087803b15801561286557600080fd5b505af1158015612879573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156128a257600080fd5b8101908080516401000000008111156128ba57600080fd5b820160208101848111156128cd57600080fd5b81518560208202830111640100000000821117156128ea57600080fd5b505060209091015190965094505083159050612950576040805160e560020a62461bcd02815260206004820152600f60248201527f526174657320617265207374616c650000000000000000000000000000000000604482015290519081900360640190fd5b600091505b600d54821015612a3b57612a1c848381518110151561297057fe5b90602001906020020151600d8481548110151561298957fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156129e457600080fd5b505af11580156129f8573d6000803e3d6000fd5b505050506040513d6020811015612a0e57600080fd5b50519063ffffffff61490616565b9050612a2e868263ffffffff61431e16565b9550600190910190612955565b612a4b868663ffffffff6148f116565b98975050505050505050565b600454600090600160a060020a03163314801590612a805750600554600160a060020a03163314155b8015612a975750600654600160a060020a03163314155b15612aaf5760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614612b05576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b81600160a060020a031663dbd06c856040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015612b4357600080fd5b505af1158015612b57573d6000803e3d6000fd5b505050506040513d6020811015612b6d57600080fd5b50516000818152600e6020526040902054909150600160a060020a031615612bdf576040805160e560020a62461bcd02815260206004820152601460248201527f53796e746820616c726561647920657869737473000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382166000908152600f602052604090205415612c4d576040805160e560020a62461bcd02815260206004820152601c60248201527f53796e7468206164647265737320616c72656164792065786973747300000000604482015290519081900360640190fd5b600d8054600181019091557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5018054600160a060020a03909316600160a060020a031993841681179091556000828152600e6020908152604080832080549096168417909555918152600f9091529190912055565b600454600090600160a060020a03163314801590612ceb5750600554600160a060020a03163314155b8015612d025750600654600160a060020a03163314155b15612d1a5760068054600160a060020a031916331790555b5060065460e260020a631cd554d10290612d3d90600160a060020a0316826126c7565b821115612d94576040805160e560020a62461bcd02815260206004820152601060248201527f416d6f756e7420746f6f206c6172676500000000000000000000000000000000604482015290519081900360640190fd5b612d9e818361491b565b6000818152600e60205260408082205460065482517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260248101879052925191169263867904b4926044808201939182900301818387803b158015612e1457600080fd5b505af1158015612e28573d6000803e3d6000fd5b50505050612e346147be565b5050565b600054600160a060020a031681565b600454600160a060020a03163314801590612e6d5750600554600160a060020a03163314155b8015612e845750600654600160a060020a03163314155b15612e9c5760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614612ef2576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b6016805491151575010000000000000000000000000000000000000000000275ff00000000000000000000000000000000000000000019909216919091179055565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cb25780601f10610c8757610100808354040283529160200191610cb2565b60175481565b600054600160a060020a03163314612ff9576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b60048054600160a060020a038316600160a060020a0319909116811790915560408051918252517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e9181900360200190a150565b60008054600160a060020a031633146130b2576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b60035460ff16151561310e576040805160e560020a62461bcd02815260206004820152601f60248201527f53656c66204465737472756374206e6f742079657420696e6974696174656400604482015290519081900360640190fd5b426224ea006002540110151561316e576040805160e560020a62461bcd02815260206004820152601b60248201527f53656c662064657374727563742064656c6179206e6f74206d65740000000000604482015290519081900360640190fd5b5060035460408051600160a060020a0361010090930492909216808352905190917f8a09e1677ced846cb537dc2b172043bd05a1a81ad7e0033a7ef8ba762df990b7919081900360200190a180600160a060020a0316ff5b600554600160a060020a031681565b600454600160a060020a031633148015906131fb5750600554600160a060020a03163314155b80156132125750600654600160a060020a03163314155b1561322a5760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614613280576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b60088054600160a060020a031916600160a060020a03831617905561249e81614d82565b60008060006132b284613309565b91508115156132c457600092506132ec565b6132d78460eb60020a620a69cb02613c5d565b90506132e9818363ffffffff6148f116565b92505b5050919050565b601254600160a060020a031681565b6224ea0081565b6008546040805160e060020a6370a08231028152600160a060020a0384811660048301529151600093849316916370a0823191602480830192602092919082900301818787803b15801561335c57600080fd5b505af1158015613370573d6000803e3d6000fd5b505050506040513d602081101561338657600080fd5b5051601154909150600160a060020a03161561342f576011546040805160e060020a6370a08231028152600160a060020a038681166004830152915161342c9392909216916370a08231916024808201926020929091908290030181600087803b1580156133f357600080fd5b505af1158015613407573d6000803e3d6000fd5b505050506040513d602081101561341d57600080fd5b5051829063ffffffff61431e16565b90505b601254600160a060020a03161561349a576012546040805160e060020a6370a08231028152600160a060020a03868116600483015291516134979392909216916370a08231916024808201926020929091908290030181600087803b1580156133f357600080fd5b90505b92915050565b6000806134bf60eb60020a620a69cb026134b986613309565b85612145565b9050613550601460009054906101000a9004600160a060020a0316600160a060020a031663b410a0346040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561351757600080fd5b505af115801561352b573d6000803e3d6000fd5b505050506040513d602081101561354157600080fd5b5051829063ffffffff614ec916565b949350505050565b60006060613550848483613a35565b600454600090600160a060020a031633148015906135905750600554600160a060020a03163314155b80156135a75750600654600160a060020a03163314155b156135bf5760068054600160a060020a031916331790555b600654600160a060020a03166000908152600f60205260409020541515613630576040805160e560020a62461bcd02815260206004820152601260248201527f4f6e6c792073796e746820616c6c6f7765640000000000000000000000000000604482015290519081900360640190fd5b84831415613688576040805160e560020a62461bcd02815260206004820152601360248201527f43616e27742062652073616d652073796e746800000000000000000000000000604482015290519081900360640190fd5b600084116136e0576040805160e560020a62461bcd02815260206004820152600b60248201527f5a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6136ef86868686866000614ef5565b9695505050505050565b600454600090600160a060020a031633148015906137225750600554600160a060020a03163314155b80156137395750600654600160a060020a03163314155b156137515760068054600160a060020a031916331790555b61375a856121ef565b8311156137b1576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b6006546137ca90600160a060020a0316868686866154d2565b50600195945050505050565b601054600160a060020a031681565b6004546000908190600160a060020a031633148015906138105750600554600160a060020a03163314155b80156138275750600654600160a060020a03163314155b1561383f5760068054600160a060020a031916331790555b60065460e260020a631cd554d102925061386290600160a060020a0316836126c7565b905061386e828261491b565b6000828152600e60205260408082205460065482517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260248101869052925191169263867904b4926044808201939182900301818387803b158015612e1457600080fd5b60035460ff1681565b600454600160a060020a03163314806139105750600554600160a060020a031633145b1515613966576040805160e560020a62461bcd02815260206004820152601760248201527f4f6e6c79207468652070726f78792063616e2063616c6c000000000000000000604482015290519081900360640190fd5b60068054600160a060020a031916600160a060020a0392909216919091179055565b600054600160a060020a031633146139ec576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b426002556003805460ff19166001179055604080516224ea00815290517fcbd94ca75b8dc45c9d80c77e851670e78843c0d75180cb81db3e2158228fa9a69181900360200190a1565b600454600090600160a060020a03163314801590613a5e5750600554600160a060020a03163314155b8015613a755750600654600160a060020a03163314155b15613a8d5760068054600160a060020a031916331790555b600654613aa290600160a060020a03166121ef565b831115613af9576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b600654613b1190600160a060020a03168585856155e2565b506001949350505050565b601554600160a060020a031681565b6003546101009004600160a060020a031681565b601360009054906101000a9004600160a060020a0316600160a060020a0316637dc0d1d06040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613b9257600080fd5b505af1158015613ba6573d6000803e3d6000fd5b505050506040513d6020811015613bbc57600080fd5b5051600160a060020a03163314613c1d576040805160e560020a62461bcd02815260206004820152601360248201527f4f6e6c79206f7261636c6520616c6c6f77656400000000000000000000000000604482015290519081900360640190fd5b60168054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b601454604080517f8b3f8088000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528251600094859485948594859485949190911692638b3f8088926024808201939182900301818787803b158015613ccd57600080fd5b505af1158015613ce1573d6000803e3d6000fd5b505050506040513d6040811015613cf757600080fd5b5080516020909101519095509350841515613d155760009550613e7e565b601454604080517f08d95cd5000000000000000000000000000000000000000000000000000000008152600481018790529051613e56928892613e4a92600160a060020a03909216916308d95cd5916024808201926020929091908290030181600087803b158015613d8657600080fd5b505af1158015613d9a573d6000803e3d6000fd5b505050506040513d6020811015613db057600080fd5b5051601454604080517f463177120000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216916346317712916004808201926020929091908290030181600087803b158015613e1257600080fd5b505af1158015613e26573d6000803e3d6000fd5b505050506040513d6020811015613e3c57600080fd5b50519063ffffffff6155f016565b9063ffffffff61560916565b9250613e6187612733565b9150613e7083613e4a84615622565b9050613e7b81615638565b95505b505050505092915050565b600654600160a060020a031681565b601454600160a060020a031681565b600d545b90565b600854604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301529151600093929092169163dd62ed3e9160448082019260209290919082900301818787803b158015613f2157600080fd5b505af1158015613f35573d6000803e3d6000fd5b505050506040513d6020811015613f4b57600080fd5b50519392505050565b601154600160a060020a031681565b600854600160a060020a031681565b600454600160a060020a031681565b600454600090600160a060020a03163314801590613faa5750600554600160a060020a03163314155b8015613fc15750600654600160a060020a03163314155b15613fd95760068054600160a060020a031916331790555b83821415614031576040805160e560020a62461bcd02815260206004820152601960248201527f4d7573742075736520646966666572656e742073796e74687300000000000000604482015290519081900360640190fd5b60008311614089576040805160e560020a62461bcd02815260206004820152600b60248201527f5a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6140923a612444565b60165474010000000000000000000000000000000000000000900460ff161561414c576000848152600e60205260408082205460065482517f9dc29fac000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820152602481018890529251911692639dc29fac926044808201939182900301818387803b15801561412b57600080fd5b505af115801561413f573d6000803e3d6000fd5b50505050600190506121e8565b60065461416790600160a060020a0316858585836001614ef5565b90506121e8565b6016547501000000000000000000000000000000000000000000900460ff1681565b601854600160a060020a031681565b600480546040805160208082018690528251808303820181528284018085527f417070726f76616c28616464726573732c616464726573732c75696e7432353690527f29000000000000000000000000000000000000000000000000000000000000006060840152925191829003606101822060e060020a63907dff9702835260036024840181905260448401829052600160a060020a038a8116606486018190528a821660848701819052600060a4880181905260c09a88019a8b52885160c48901528851939099169963907dff97999497959692959194939092839260e40191908a0190808383885b838110156142a257818101518382015260200161428a565b50505050905090810190601f1680156142cf5780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b1580156142f357600080fd5b505af1158015611f80573d6000803e3d6000fd5b6000808383111561431757600080fd5b5050900390565b6000828201838110156121e857600080fd5b600480546040805160208082018690528251808303820181528284018085527f5472616e7366657228616464726573732c616464726573732c75696e7432353690527f29000000000000000000000000000000000000000000000000000000000000006060840152925191829003606101822060e060020a63907dff9702835260036024840181905260448401829052600160a060020a038a8116606486018190528a821660848701819052600060a4880181905260c09a88019a8b52885160c48901528851939099169963907dff97999497959692959194939092839260e40191908a019080838388838110156142a257818101518382015260200161428a565b6000808315156144455760009150610e78565b5082820282848281151561445557fe5b04146121e857600080fd5b816000808080808061447a60e960020a622c222902612733565b955061448c868863ffffffff61430716565b945060009350600085111561450f576144ab878663ffffffff6155f016565b925061450c837384d626b2bb4d0f064067e4bf80fce7055d8f3e7b63d5e5e6e66040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156144f857600080fd5b505af4158015611582573d6000803e3d6000fd5b93505b8787141561460e57601454600654604080517fa764eb45000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526000602482018190529151929093169263a764eb45926044808301939282900301818387803b15801561458657600080fd5b505af115801561459a573d6000803e3d6000fd5b50505050601460009054906101000a9004600160a060020a0316600160a060020a031663ba08f2996040518163ffffffff1660e060020a028152600401600060405180830381600087803b1580156145f157600080fd5b505af1158015614605573d6000803e3d6000fd5b505050506146bc565b61461e888863ffffffff61430716565b9150614630828663ffffffff6155f016565b601454600654604080517fa764eb45000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101859052905193945091169163a764eb459160448082019260009290919082900301818387803b1580156146a357600080fd5b505af11580156146b7573d6000803e3d6000fd5b505050505b601454604080517f463177120000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691633d31e97b9161476291889185916346317712916004808201926020929091908290030181600087803b15801561472a57600080fd5b505af115801561473e573d6000803e3d6000fd5b505050506040513d602081101561475457600080fd5b50519063ffffffff61560916565b6040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b15801561479b57600080fd5b505af11580156147af573d6000803e3d6000fd5b50505050505050505050505050565b601454600654604080517f8b3f8088000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152815160009485941692638b3f8088926024808201939182900301818787803b15801561482657600080fd5b505af115801561483a573d6000803e3d6000fd5b505050506040513d604081101561485057600080fd5b508051602090910151601054600654604080517f86645274000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101869052604481018590529051949650929450169163866452749160648082019260009290919082900301818387803b1580156148d557600080fd5b505af11580156148e9573d6000803e3d6000fd5b505050505050565b60006121e88383670de0b6b3a764000061565a565b60006121e88383670de0b6b3a764000061569e565b600080600080600080614938888860e960020a622c222902612145565b955061494c60e960020a622c222902612733565b945061495e868663ffffffff61431e16565b9350614970868563ffffffff6155f016565b92506149f5837384d626b2bb4d0f064067e4bf80fce7055d8f3e7b63d5e5e6e66040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156149bd57600080fd5b505af41580156149d1573d6000803e3d6000fd5b505050506040513d60208110156149e757600080fd5b50519063ffffffff61430716565b600654909250614a1790600160a060020a031660e960020a622c222902613c5d565b90506000811115614a4557614a4284614a36888463ffffffff61431e16565b9063ffffffff6155f016565b92505b801515614ab857601460009054906101000a9004600160a060020a0316600160a060020a0316631bfba5956040518163ffffffff1660e060020a028152600401600060405180830381600087803b158015614a9f57600080fd5b505af1158015614ab3573d6000803e3d6000fd5b505050505b601454600654604080517fa764eb45000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018790529051919092169163a764eb4591604480830192600092919082900301818387803b158015614b2957600080fd5b505af1158015614b3d573d6000803e3d6000fd5b505050506000601460009054906101000a9004600160a060020a0316600160a060020a031663cd92eba96040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015614b9657600080fd5b505af1158015614baa573d6000803e3d6000fd5b505050506040513d6020811015614bc057600080fd5b50511115614c8c57601454604080517f463177120000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691633d31e97b91614c3691869185916346317712916004808201926020929091908290030181600087803b15801561472a57600080fd5b6040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015614c6f57600080fd5b505af1158015614c83573d6000803e3d6000fd5b50505050614d78565b601460009054906101000a9004600160a060020a0316600160a060020a0316633d31e97b7384d626b2bb4d0f064067e4bf80fce7055d8f3e7b63d5e5e6e66040518163ffffffff1660e060020a02815260040160206040518083038186803b158015614cf757600080fd5b505af4158015614d0b573d6000803e3d6000fd5b505050506040513d6020811015614d2157600080fd5b50516040805160e060020a63ffffffff8516028152600481019290925251602480830192600092919082900301818387803b158015614d5f57600080fd5b505af1158015614d73573d6000803e3d6000fd5b505050505b5050505050505050565b6004805460408051600160a060020a038581166020808401919091528351808403820181528385018086527f546f6b656e5374617465557064617465642861646472657373290000000000009052935192839003605a01832060e060020a63907dff97028452600160248501819052604485018290526000606486018190526084860181905260a4860181905260c0988601988952865160c48701528651949097169763907dff979791959294919384938493839260e4909201918a0190808383885b83811015614e5d578181015183820152602001614e45565b50505050905090810190601f168015614e8a5780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015614eae57600080fd5b505af1158015614ec2573d6000803e3d6000fd5b5050505050565b6000670de0b6b3a7640000614ee4848463ffffffff61443216565b811515614eed57fe5b049392505050565b6000806000806000808b601060009054906101000a9004600160a060020a0316600160a060020a031663eb1edd616040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015614f5257600080fd5b505af1158015614f66573d6000803e3d6000fd5b505050506040513d6020811015614f7c57600080fd5b5051600160a060020a0382811691161415614fe1576040805160e560020a62461bcd02815260206004820152601760248201527f4665652061646472657373206e6f7420616c6c6f776564000000000000000000604482015290519081900360640190fd5b6016547501000000000000000000000000000000000000000000900460ff161515615056576040805160e560020a62461bcd02815260206004820152601660248201527f45786368616e67696e672069732064697361626c656400000000000000000000604482015290519081900360640190fd5b600e60008d6000191660001916815260200190815260200160002060009054906101000a9004600160a060020a0316600160a060020a0316639dc29fac8e8d6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b1580156150e757600080fd5b505af11580156150fb573d6000803e3d6000fd5b5050505061510a8c8c8c612145565b9550859450600093508715615195576151238c8b6119c5565b9250615180615173847384d626b2bb4d0f064067e4bf80fce7055d8f3e7b63907af6c06040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156149bd57600080fd5b879063ffffffff614ec916565b9450615192868663ffffffff61430716565b93505b60008a8152600e60205260408082205481517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a038d81166004830152602482018a90529251929091169263867904b49260448084019382900301818387803b15801561520957600080fd5b505af115801561521d573d6000803e3d6000fd5b5050505060008411156153ee5761523e8a8560e960020a622c222902612145565b60e960020a622c2229026000908152600e60209081527f24466f25c15cd38334941647ac559e67e1ead957cc1be398ef066877266eac9254601054604080517feb1edd610000000000000000000000000000000000000000000000000000000081529051959750600160a060020a039283169563867904b495939092169363eb1edd619360048084019492938390030190829087803b1580156152e057600080fd5b505af11580156152f4573d6000803e3d6000fd5b505050506040513d602081101561530a57600080fd5b50516040805160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820186905251604480830192600092919082900301818387803b15801561535757600080fd5b505af115801561536b573d6000803e3d6000fd5b5050601054604080517f22bf55ef000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921693506322bf55ef925060248082019260009290919082900301818387803b1580156153d557600080fd5b505af11580156153e9573d6000803e3d6000fd5b505050505b600e60008b6000191660001916815260200190815260200160002060009054906101000a9004600160a060020a0316600160a060020a031663eb6ecc038e8b886040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050600060405180830381600087803b15801561549957600080fd5b505af11580156154ad573d6000803e3d6000fd5b505050506154bf8d8d8d8d898e6156cb565b5060019c9b505050505050505050505050565b600854604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483015288811660248301529151600093929092169163da46098c9188918a9161556b918991879163dd62ed3e9160448082019260209290919082900301818d87803b15801561555757600080fd5b505af11580156149d1573d6000803e3d6000fd5b6040805160e060020a63ffffffff8716028152600160a060020a03948516600482015292909316602483015260448201529051606480830192600092919082900301818387803b1580156155be57600080fd5b505af11580156155d2573d6000803e3d6000fd5b505050506136ef8585858561585f565b6000611d9b8585858561585f565b60006121e883836b033b2e3c9fd0803ce800000061565a565b60006121e883836b033b2e3c9fd0803ce800000061569e565b600061349a82633b9aca0063ffffffff61443216565b60006305f5e10082046005600a82061061565057600a015b600a900492915050565b6000806156808461567487600a870263ffffffff61443216565b9063ffffffff615b3916565b90506005600a825b061061569257600a015b600a9004949350505050565b600080600a83046156b5868663ffffffff61443216565b8115156156be57fe5b0490506005600a82615688565b600480546040805160208082018a90528183018990526060820188905260808201879052600160a060020a0386811660a0808501919091528451808503909101815260c08085018087527f53796e746845786368616e676528616464726573732c627974657333322c756990527f6e743235362c627974657333322c75696e743235362c6164647265737329000060e086015294519384900360fe01842060e060020a63907dff97028552600260248601819052604486018290528e84166064870181905260006084880181905260a48801819052998701978852835160c48801528351949098169863907dff9798939791969295939490938493839260e4909101918a0190808383885b838110156157ee5781810151838201526020016157d6565b50505050905090810190601f16801561581b5780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561583f57600080fd5b505af1158015615853573d6000803e3d6000fd5b50505050505050505050565b6000600160a060020a03841615156158c1576040805160e560020a62461bcd02815260206004820181905260248201527f43616e6e6f74207472616e7366657220746f2074686520302061646472657373604482015290519081900360640190fd5b600160a060020a038416301415615922576040805160e560020a62461bcd02815260206004820152601f60248201527f43616e6e6f74207472616e7366657220746f2074686520636f6e747261637400604482015290519081900360640190fd5b600454600160a060020a0385811691161415615988576040805160e560020a62461bcd02815260206004820152601c60248201527f43616e6e6f74207472616e7366657220746f207468652070726f787900000000604482015290519081900360640190fd5b6008546040805160e060020a6370a08231028152600160a060020a0388811660048301529151919092169163b46310f69188916159eb91889186916370a08231916024808201926020929091908290030181600087803b15801561555757600080fd5b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015615a3d57600080fd5b505af1158015615a51573d6000803e3d6000fd5b50506008546040805160e060020a6370a08231028152600160a060020a038981166004830152915191909216935063b46310f692508791615ab891889186916370a08231916024808201926020929091908290030181600087803b15801561156e57600080fd5b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015615b0a57600080fd5b505af1158015615b1e573d6000803e3d6000fd5b50505050615b2d858585614330565b613b1185858585615b5c565b600080808311615b4857600080fd5b8284811515615b5357fe5b04949350505050565b6007805460010190819055833b9060009081831115615cf057620186a05a10615b8857620186a0615b8a565b5a5b915085600160a060020a0316828887876040516024018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015615bf8578181015183820152602001615be0565b50505050905090810190601f168015615c255780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0ee0b8a000000000000000000000000000000000000000000000000000000001781529051825192975095508594509250905080838360005b83811015615cac578181015183820152602001615c94565b50505050905090810190601f168015615cd95780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008787f1505050505b6007548114611f8057600080fd5b815481835581811115615d2257600083815260209020615d22918101908301615d27565b505050565b613eab91905b80821115615d415760008155600101615d2d565b509056004f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e00000000000000000000000000000000004f776e6572206f6e6c792066756e6374696f6e00000000000000000000000000a165627a7a7230582013db7f2ef945de98bb6e1aad7a2961ea3171379aa9c96160599d2cf65d82338f0029000000000000000000000000c011a72400e58ecd99ee497cf89e3775d4bd732f0000000000000000000000005b1b5fea1b99d83ad479df0c222f0492385381dd0000000000000000000000004b9ca5607f1ff8019c1c6a3c2f0cc8de622d5b82000000000000000000000000b64ff7a4a33acdf48d97dab0d764afd0f6176882000000000000000000000000565c9eb432f4ae9633e50e1213ab4f23d8f31f54000000000000000000000000a8cb0b163cefb21f22c72f6a7d243184bd688a5a000000000000000000000000a05e45396703babaa9c276b5e5a9b6e2c175b521000000000000000000000000b671f2210b1f6621a2607ea63e6b2dc3e2464d1f000000000000000000000000971e78e0c92392a4e39099835cf7e6ab535b2227000000000000000000000000ffa72fd80d8a84032d855bfb67036baf45949009000000000000000000000000000000000000000000813f3978f89409843fffea",
"result": "0x4b144999650fdc87b42ed184e73918ac22d70f01"
},
"empty init code": {
"address": "0x0000000000000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"init_code": "0x",
"result": "0xE33C0C7F7df4809055C3ebA6c09CFe4BaF1BD9e0"
}
}
}
{
"tests": {
"single opcode blacklisted: ADDRESS": {
"in": "0x30",
"out": false
},
"single opcode blacklisted: BALANCE": {
"in": "0x31",
"out": false
},
"single opcode blacklisted: BLOCKHASH": {
"in": "0x40",
"out": false
},
"single opcode blacklisted: CALL": {
"in": "0xf1",
"out": false
},
"single opcode blacklisted: CALLCODE": {
"in": "0xf2",
"out": false
},
"single opcode blacklisted: CHAINID": {
"in": "0x46",
"out": false
},
"single opcode blacklisted: COINBASE": {
"in": "0x41",
"out": false
},
"single opcode blacklisted: CREATE": {
"in": "0xf0",
"out": false
},
"single opcode blacklisted: CREATE2": {
"in": "0xf5",
"out": false
},
"single opcode blacklisted: DELEGATECALL": {
"in": "0xf4",
"out": false
},
"single opcode blacklisted: DIFFICULTY": {
"in": "0x44",
"out": false
},
"single opcode blacklisted: EXTCODESIZE": {
"in": "0x3b",
"out": false
},
"single opcode blacklisted: EXTCODECOPY": {
"in": "0x3c",
"out": false
},
"single opcode blacklisted: EXTCODEHASH": {
"in": "0x3f",
"out": false
},
"single opcode blacklisted: GASLIMIT": {
"in": "0x45",
"out": false
},
"single opcode blacklisted: GASPRICE": {
"in": "0x3a",
"out": false
},
"single opcode blacklisted: NUMBER": {
"in": "0x43",
"out": false
},
"single opcode blacklisted: ORIGIN": {
"in": "0x32",
"out": false
},
"single opcode blacklisted: REVERT": {
"in": "0xfd",
"out": false
},
"single opcode blacklisted: SELFBALANCE": {
"in": "0x47",
"out": false
},
"single opcode blacklisted: SELFDESTRUCT": {
"in": "0xff",
"out": false
},
"single opcode blacklisted: SLOAD": {
"in": "0x54",
"out": false
},
"single opcode blacklisted: SSTORE": {
"in": "0x55",
"out": false
},
"single opcode blacklisted: STATICCALL": {
"in": "0xfa",
"out": false
},
"single opcode blacklisted: TIMESTAMP": {
"in": "0x42",
"out": false
},
"single opcode whitelisted: ADD": {
"in": "0x01",
"out": true
},
"single opcode whitelisted: MUL": {
"in": "0x02",
"out": true
},
"single opcode whitelisted: SUB": {
"in": "0x03",
"out": true
},
"single opcode whitelisted: DIV": {
"in": "0x04",
"out": true
},
"single opcode whitelisted: SDIV": {
"in": "0x05",
"out": true
},
"single opcode whitelisted: MOD": {
"in": "0x06",
"out": true
},
"single opcode whitelisted: SMOD": {
"in": "0x07",
"out": true
},
"single opcode whitelisted: ADDMOD": {
"in": "0x08",
"out": true
},
"single opcode whitelisted: MULMOD": {
"in": "0x09",
"out": true
},
"single opcode whitelisted: EXP": {
"in": "0x0a",
"out": true
},
"single opcode whitelisted: SIGNEXTEND": {
"in": "0x0b",
"out": true
},
"single opcode whitelisted: LT": {
"in": "0x10",
"out": true
},
"single opcode whitelisted: GT": {
"in": "0x11",
"out": true
},
"single opcode whitelisted: SLT": {
"in": "0x12",
"out": true
},
"single opcode whitelisted: SGT": {
"in": "0x13",
"out": true
},
"single opcode whitelisted: EQ": {
"in": "0x14",
"out": true
},
"single opcode whitelisted: ISZERO": {
"in": "0x15",
"out": true
},
"single opcode whitelisted: AND": {
"in": "0x16",
"out": true
},
"single opcode whitelisted: OR": {
"in": "0x17",
"out": true
},
"single opcode whitelisted: XOR": {
"in": "0x18",
"out": true
},
"single opcode whitelisted: NOT": {
"in": "0x19",
"out": true
},
"single opcode whitelisted: BYTE": {
"in": "0x1a",
"out": true
},
"single opcode whitelisted: SHL": {
"in": "0x1b",
"out": true
},
"single opcode whitelisted: SHR": {
"in": "0x1c",
"out": true
},
"single opcode whitelisted: SAR": {
"in": "0x1d",
"out": true
},
"single opcode whitelisted: SHA3": {
"in": "0x20",
"out": true
},
"single opcode whitelisted: CALLVALUE": {
"in": "0x34",
"out": true
},
"single opcode whitelisted: CALLDATALOAD": {
"in": "0x35",
"out": true
},
"single opcode whitelisted: CALLDATASIZE": {
"in": "0x36",
"out": true
},
"single opcode whitelisted: CALLDATACOPY": {
"in": "0x37",
"out": true
},
"single opcode whitelisted: CODESIZE": {
"in": "0x38",
"out": true
},
"single opcode whitelisted: CODECOPY": {
"in": "0x39",
"out": true
},
"single opcode whitelisted: RETURNDATASIZE": {
"in": "0x3d",
"out": true
},
"single opcode whitelisted: RETURNDATACOPY": {
"in": "0x3e",
"out": true
},
"single opcode whitelisted: POP": {
"in": "0x50",
"out": true
},
"single opcode whitelisted: MLOAD": {
"in": "0x51",
"out": true
},
"single opcode whitelisted: MSTORE": {
"in": "0x52",
"out": true
},
"single opcode whitelisted: MSTORE8": {
"in": "0x53",
"out": true
},
"single opcode whitelisted: JUMPI": {
"in": "0x57",
"out": true
},
"single opcode whitelisted: PC": {
"in": "0x58",
"out": true
},
"single opcode whitelisted: MSIZE": {
"in": "0x59",
"out": true
},
"single opcode whitelisted: GAS": {
"in": "0x5a",
"out": true
},
"single opcode whitelisted: JUMPDEST": {
"in": "0x5b",
"out": true
},
"single opcode whitelisted: DUP1": {
"in": "0x80",
"out": true
},
"single opcode whitelisted: DUP2": {
"in": "0x81",
"out": true
},
"single opcode whitelisted: DUP3": {
"in": "0x82",
"out": true
},
"single opcode whitelisted: DUP4": {
"in": "0x83",
"out": true
},
"single opcode whitelisted: DUP5": {
"in": "0x84",
"out": true
},
"single opcode whitelisted: DUP6": {
"in": "0x85",
"out": true
},
"single opcode whitelisted: DUP7": {
"in": "0x86",
"out": true
},
"single opcode whitelisted: DUP8": {
"in": "0x87",
"out": true
},
"single opcode whitelisted: DUP9": {
"in": "0x88",
"out": true
},
"single opcode whitelisted: DUP10": {
"in": "0x89",
"out": true
},
"single opcode whitelisted: DUP11": {
"in": "0x8a",
"out": true
},
"single opcode whitelisted: DUP12": {
"in": "0x8b",
"out": true
},
"single opcode whitelisted: DUP13": {
"in": "0x8c",
"out": true
},
"single opcode whitelisted: DUP14": {
"in": "0x8d",
"out": true
},
"single opcode whitelisted: DUP15": {
"in": "0x8e",
"out": true
},
"single opcode whitelisted: DUP16": {
"in": "0x8f",
"out": true
},
"single opcode whitelisted: SWAP1": {
"in": "0x90",
"out": true
},
"single opcode whitelisted: SWAP2": {
"in": "0x91",
"out": true
},
"single opcode whitelisted: SWAP3": {
"in": "0x92",
"out": true
},
"single opcode whitelisted: SWAP4": {
"in": "0x93",
"out": true
},
"single opcode whitelisted: SWAP5": {
"in": "0x94",
"out": true
},
"single opcode whitelisted: SWAP6": {
"in": "0x95",
"out": true
},
"single opcode whitelisted: SWAP7": {
"in": "0x96",
"out": true
},
"single opcode whitelisted: SWAP8": {
"in": "0x97",
"out": true
},
"single opcode whitelisted: SWAP9": {
"in": "0x98",
"out": true
},
"single opcode whitelisted: SWAP10": {
"in": "0x99",
"out": true
},
"single opcode whitelisted: SWAP11": {
"in": "0x9a",
"out": true
},
"single opcode whitelisted: SWAP12": {
"in": "0x9b",
"out": true
},
"single opcode whitelisted: SWAP13": {
"in": "0x9c",
"out": true
},
"single opcode whitelisted: SWAP14": {
"in": "0x9d",
"out": true
},
"single opcode whitelisted: SWAP15": {
"in": "0x9e",
"out": true
},
"single opcode whitelisted: SWAP16": {
"in": "0x9f",
"out": true
},
"single opcode whitelisted: LOG0": {
"in": "0xa0",
"out": true
},
"single opcode whitelisted: LOG1": {
"in": "0xa1",
"out": true
},
"single opcode whitelisted: LOG2": {
"in": "0xa2",
"out": true
},
"single opcode whitelisted: LOG3": {
"in": "0xa3",
"out": true
},
"single opcode whitelisted: LOG4": {
"in": "0xa4",
"out": true
},
"PUSH opcode whitelisted end: PUSH1": {
"in": "0x6030",
"out": true
},
"PUSH opcode whitelisted end: PUSH2": {
"in": "0x613030",
"out": true
},
"PUSH opcode whitelisted end: PUSH3": {
"in": "0x62303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH4": {
"in": "0x6330303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH5": {
"in": "0x643030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH6": {
"in": "0x65303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH7": {
"in": "0x6630303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH8": {
"in": "0x673030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH9": {
"in": "0x68303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH10": {
"in": "0x6930303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH11": {
"in": "0x6a3030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH12": {
"in": "0x6b303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH13": {
"in": "0x6c30303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH14": {
"in": "0x6d3030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH15": {
"in": "0x6e303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH16": {
"in": "0x6f30303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH17": {
"in": "0x703030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH18": {
"in": "0x71303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH19": {
"in": "0x7230303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH20": {
"in": "0x733030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH21": {
"in": "0x74303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH22": {
"in": "0x7530303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH23": {
"in": "0x763030303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH24": {
"in": "0x77303030303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH25": {
"in": "0x7830303030303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH26": {
"in": "0x793030303030303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH27": {
"in": "0x7a303030303030303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH28": {
"in": "0x7b30303030303030303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH29": {
"in": "0x7c3030303030303030303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH30": {
"in": "0x7d303030303030303030303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH31": {
"in": "0x7e30303030303030303030303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode whitelisted end: PUSH32": {
"in": "0x7f3030303030303030303030303030303030303030303030303030303030303030",
"out": true
},
"PUSH opcode blacklisted end: PUSH1": {
"in": "0x603030",
"out": false
},
"PUSH opcode blacklisted end: PUSH2": {
"in": "0x61303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH3": {
"in": "0x6230303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH4": {
"in": "0x633030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH5": {
"in": "0x64303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH6": {
"in": "0x6530303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH7": {
"in": "0x663030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH8": {
"in": "0x67303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH9": {
"in": "0x6830303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH10": {
"in": "0x693030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH11": {
"in": "0x6a303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH12": {
"in": "0x6b30303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH13": {
"in": "0x6c3030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH14": {
"in": "0x6d303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH15": {
"in": "0x6e30303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH16": {
"in": "0x6f3030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH17": {
"in": "0x70303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH18": {
"in": "0x7130303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH19": {
"in": "0x723030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH20": {
"in": "0x73303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH21": {
"in": "0x7430303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH22": {
"in": "0x753030303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH23": {
"in": "0x76303030303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH24": {
"in": "0x7730303030303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH25": {
"in": "0x783030303030303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH26": {
"in": "0x79303030303030303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH27": {
"in": "0x7a30303030303030303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH28": {
"in": "0x7b3030303030303030303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH29": {
"in": "0x7c303030303030303030303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH30": {
"in": "0x7d30303030303030303030303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH31": {
"in": "0x7e3030303030303030303030303030303030303030303030303030303030303030",
"out": false
},
"PUSH opcode blacklisted end: PUSH32": {
"in": "0x7f303030303030303030303030303030303030303030303030303030303030303030",
"out": false
},
"multiple opcodes whitelisted": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4",
"out": true
},
"multiple opcodes blacklisted end: ADDRESS": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a430",
"out": false
},
"multiple opcodes blacklisted end: BALANCE": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a431",
"out": false
},
"multiple opcodes blacklisted end: BLOCKHASH": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a440",
"out": false
},
"multiple opcodes blacklisted end: CALL": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f1",
"out": false
},
"multiple opcodes blacklisted end: CALLCODE": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f2",
"out": false
},
"multiple opcodes blacklisted end: CHAINID": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a446",
"out": false
},
"multiple opcodes blacklisted end: COINBASE": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a441",
"out": false
},
"multiple opcodes blacklisted end: CREATE": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f0",
"out": false
},
"multiple opcodes blacklisted end: CREATE2": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f5",
"out": false
},
"multiple opcodes blacklisted end: DELEGATECALL": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f4",
"out": false
},
"multiple opcodes blacklisted end: DIFFICULTY": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a444",
"out": false
},
"multiple opcodes blacklisted end: EXTCODESIZE": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a43b",
"out": false
},
"multiple opcodes blacklisted end: EXTCODECOPY": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a43c",
"out": false
},
"multiple opcodes blacklisted end: EXTCODEHASH": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a43f",
"out": false
},
"multiple opcodes blacklisted end: GASLIMIT": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a445",
"out": false
},
"multiple opcodes blacklisted end: GASPRICE": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a43a",
"out": false
},
"multiple opcodes blacklisted end: NUMBER": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a443",
"out": false
},
"multiple opcodes blacklisted end: ORIGIN": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a432",
"out": false
},
"multiple opcodes blacklisted end: REVERT": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fd",
"out": false
},
"multiple opcodes blacklisted end: SELFBALANCE": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a447",
"out": false
},
"multiple opcodes blacklisted end: SELFDESTRUCT": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4ff",
"out": false
},
"multiple opcodes blacklisted end: SLOAD": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a454",
"out": false
},
"multiple opcodes blacklisted end: SSTORE": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a455",
"out": false
},
"multiple opcodes blacklisted end: STATICCALL": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fa",
"out": false
},
"multiple opcodes blacklisted end: TIMESTAMP": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a442",
"out": false
},
"blacklisted in unreachable code": {
"in": "0xfe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa42",
"out": true
},
"PUSH1 then 1 JUMPDESTs unreachable": {
"in": "0x00605b30",
"out": true
},
"PUSH2 then 2 JUMPDESTs unreachable": {
"in": "0x00615b5b30",
"out": true
},
"PUSH3 then 3 JUMPDESTs unreachable": {
"in": "0x00625b5b5b30",
"out": true
},
"PUSH4 then 4 JUMPDESTs unreachable": {
"in": "0x00635b5b5b5b30",
"out": true
},
"PUSH5 then 5 JUMPDESTs unreachable": {
"in": "0x00645b5b5b5b5b30",
"out": true
},
"PUSH6 then 6 JUMPDESTs unreachable": {
"in": "0x00655b5b5b5b5b5b30",
"out": true
},
"PUSH7 then 7 JUMPDESTs unreachable": {
"in": "0x00665b5b5b5b5b5b5b30",
"out": true
},
"PUSH8 then 8 JUMPDESTs unreachable": {
"in": "0x00675b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH9 then 9 JUMPDESTs unreachable": {
"in": "0x00685b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH10 then 10 JUMPDESTs unreachable": {
"in": "0x00695b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH11 then 11 JUMPDESTs unreachable": {
"in": "0x006a5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH12 then 12 JUMPDESTs unreachable": {
"in": "0x006b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH13 then 13 JUMPDESTs unreachable": {
"in": "0x006c5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH14 then 14 JUMPDESTs unreachable": {
"in": "0x006d5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH15 then 15 JUMPDESTs unreachable": {
"in": "0x006e5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH16 then 16 JUMPDESTs unreachable": {
"in": "0x006f5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH17 then 17 JUMPDESTs unreachable": {
"in": "0x00705b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH18 then 18 JUMPDESTs unreachable": {
"in": "0x00715b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH19 then 19 JUMPDESTs unreachable": {
"in": "0x00725b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH20 then 20 JUMPDESTs unreachable": {
"in": "0x00735b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH21 then 21 JUMPDESTs unreachable": {
"in": "0x00745b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH22 then 22 JUMPDESTs unreachable": {
"in": "0x00755b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH23 then 23 JUMPDESTs unreachable": {
"in": "0x00765b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH24 then 24 JUMPDESTs unreachable": {
"in": "0x00775b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH25 then 25 JUMPDESTs unreachable": {
"in": "0x00785b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH26 then 26 JUMPDESTs unreachable": {
"in": "0x00795b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH27 then 27 JUMPDESTs unreachable": {
"in": "0x007a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH28 then 28 JUMPDESTs unreachable": {
"in": "0x007b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH29 then 29 JUMPDESTs unreachable": {
"in": "0x007c5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH30 then 30 JUMPDESTs unreachable": {
"in": "0x007d5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH31 then 31 JUMPDESTs unreachable": {
"in": "0x007e5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH32 then 32 JUMPDESTs unreachable": {
"in": "0x007f5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b30",
"out": true
},
"PUSH1 then 1 bytes then JUMPDEST reachable": {
"in": "0x0060305b30",
"out": false
},
"PUSH2 then 2 bytes then JUMPDEST reachable": {
"in": "0x006130305b30",
"out": false
},
"PUSH3 then 3 bytes then JUMPDEST reachable": {
"in": "0x00623030305b30",
"out": false
},
"PUSH4 then 4 bytes then JUMPDEST reachable": {
"in": "0x0063303030305b30",
"out": false
},
"PUSH5 then 5 bytes then JUMPDEST reachable": {
"in": "0x006430303030305b30",
"out": false
},
"PUSH6 then 6 bytes then JUMPDEST reachable": {
"in": "0x00653030303030305b30",
"out": false
},
"PUSH7 then 7 bytes then JUMPDEST reachable": {
"in": "0x0066303030303030305b30",
"out": false
},
"PUSH8 then 8 bytes then JUMPDEST reachable": {
"in": "0x006730303030303030305b30",
"out": false
},
"PUSH9 then 9 bytes then JUMPDEST reachable": {
"in": "0x00683030303030303030305b30",
"out": false
},
"PUSH10 then 10 bytes then JUMPDEST reachable": {
"in": "0x0069303030303030303030305b30",
"out": false
},
"PUSH11 then 11 bytes then JUMPDEST reachable": {
"in": "0x006a30303030303030303030305b30",
"out": false
},
"PUSH12 then 12 bytes then JUMPDEST reachable": {
"in": "0x006b3030303030303030303030305b30",
"out": false
},
"PUSH13 then 13 bytes then JUMPDEST reachable": {
"in": "0x006c303030303030303030303030305b30",
"out": false
},
"PUSH14 then 14 bytes then JUMPDEST reachable": {
"in": "0x006d30303030303030303030303030305b30",
"out": false
},
"PUSH15 then 15 bytes then JUMPDEST reachable": {
"in": "0x006e3030303030303030303030303030305b30",
"out": false
},
"PUSH16 then 16 bytes then JUMPDEST reachable": {
"in": "0x006f303030303030303030303030303030305b30",
"out": false
},
"PUSH17 then 17 bytes then JUMPDEST reachable": {
"in": "0x007030303030303030303030303030303030305b30",
"out": false
},
"PUSH18 then 18 bytes then JUMPDEST reachable": {
"in": "0x00713030303030303030303030303030303030305b30",
"out": false
},
"PUSH19 then 19 bytes then JUMPDEST reachable": {
"in": "0x0072303030303030303030303030303030303030305b30",
"out": false
},
"PUSH20 then 20 bytes then JUMPDEST reachable": {
"in": "0x007330303030303030303030303030303030303030305b30",
"out": false
},
"PUSH21 then 21 bytes then JUMPDEST reachable": {
"in": "0x00743030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH22 then 22 bytes then JUMPDEST reachable": {
"in": "0x0075303030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH23 then 23 bytes then JUMPDEST reachable": {
"in": "0x007630303030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH24 then 24 bytes then JUMPDEST reachable": {
"in": "0x00773030303030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH25 then 25 bytes then JUMPDEST reachable": {
"in": "0x0078303030303030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH26 then 26 bytes then JUMPDEST reachable": {
"in": "0x007930303030303030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH27 then 27 bytes then JUMPDEST reachable": {
"in": "0x007a3030303030303030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH28 then 28 bytes then JUMPDEST reachable": {
"in": "0x007b303030303030303030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH29 then 29 bytes then JUMPDEST reachable": {
"in": "0x007c30303030303030303030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH30 then 30 bytes then JUMPDEST reachable": {
"in": "0x007d3030303030303030303030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH31 then 31 bytes then JUMPDEST reachable": {
"in": "0x007e303030303030303030303030303030303030303030303030303030303030305b30",
"out": false
},
"PUSH32 then 32 bytes then JUMPDEST reachable": {
"in": "0x007f30303030303030303030303030303030303030303030303030303030303030305b30",
"out": false
},
"blacklisted after reachable JUMPDEST": {
"in": "0x565b303140f1f24641f0f5f4443b3c3f453a433247ff5455fa42",
"out": false
},
"blacklisted after JUMPI": {
"in": "0x57303140f1f24641f0f5f4443b3c3f453a433247ff5455fa42",
"out": false
},
"valid alternating reachable/unreachable with STOP": {
"in": "0x565b00303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a400303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a400303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4",
"out": true
},
"valid alternating reachable/unreachable with RETURN": {
"in": "0x565bf3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4",
"out": true
},
"valid alternating reachable/unreachable with INVALID": {
"in": "0x565bfe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4",
"out": true
},
"invalid alternating reachable/unreachable with STOP": {
"in": "0x575b00303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a400303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a400303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a430",
"out": false
},
"invalid alternating reachable/unreachable with RETURN": {
"in": "0x575bf3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a430",
"out": false
},
"invalid alternating reachable/unreachable with INVALID": {
"in": "0x575bfe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a430",
"out": false
},
"valid EM call": {
"in": "0x336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b",
"out": true
},
"valid identity precompile call": {
"in": "0x3350600060045af1",
"out": true
},
"valid EM call, then valid identity precompile call": {
"in": "0x336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b3350600060045af1",
"out": true
},
"valid EM call, then invalid identity precompile call": {
"in": "0x336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b3350600060035af1",
"out": false
},
"valid EM call, then invalid opcode (SLOAD)": {
"in": "0x336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b54",
"out": false
},
"valid identity precompile call, then invalid opcode (SLOAD)": {
"in": "0x3350600060045af154",
"out": false
},
"invalid EM call (missing final byte)": {
"in": "0x336000905af158601d01573d60011458600c01573d6000803e3d6000FD5b60016000f3",
"out": false
},
"invalid identity precompile call (missing final byte)": {
"in": "0x3350600060045a",
"out": false
},
"invalid identity precompile call (First 2 bytes are PUSH2ed)": {
"in": "0x613350600060045af1",
"out": false
}
}
}
\ No newline at end of file
/* Imports: Internal */
import { getContractInterface } from '../../../src/contract-defs'
export const encodeXDomainCalldata = (
......
/* External Imports */
import { ethers } from 'hardhat'
import { constants, Wallet } from 'ethers'
/* Internal Imports */
import { remove0x, fromHexString } from '@eth-optimism/core-utils'
export interface EIP155Transaction {
nonce: number
gasLimit: number
gasPrice: number
to: string
data: string
chainId: number
}
export interface SignatureParameters {
messageHash: string
v: string
r: string
s: string
}
export const DEFAULT_EIP155_TX: EIP155Transaction = {
to: `0x${'12'.repeat(20)}`,
nonce: 100,
gasLimit: 1000000,
gasPrice: 100000000,
data: `0x${'99'.repeat(10)}`,
chainId: 420,
}
export const getRawSignedComponents = (signed: string): any[] => {
return [signed.slice(130, 132), signed.slice(2, 66), signed.slice(66, 130)]
}
export const getSignedComponents = (signed: string): any[] => {
return ethers.utils.RLP.decode(signed).slice(-3)
}
export * from './revert-flags'
export * from './encoding'
export * from './bridge'
/* External Imports */
import { ethers } from 'hardhat'
export const encodeRevertData = (
flag: number,
data: string = '0x',
nuisanceGasLeft: number = 0,
ovmGasRefund: number = 0
): string => {
const abiEncoded: string = ethers.utils.defaultAbiCoder.encode(
['uint256', 'uint256', 'uint256', 'bytes'],
[flag, nuisanceGasLeft, ovmGasRefund, data]
)
return abiEncoded
}
export const decodeRevertData = (revertData: string): any => {
const decoded = ethers.utils.defaultAbiCoder.decode(
['uint256', 'uint256', 'uint256', 'bytes'],
revertData
)
return (
'[revertFlag:' +
Object.keys(REVERT_FLAGS)[decoded[0]] +
', nuisanceGasLeft:' +
decoded[1] +
', ovmGasRefund: ' +
decoded[2] +
', data: ' +
decoded[3] +
']'
)
}
export const REVERT_FLAGS = {
OUT_OF_GAS: 0,
INTENTIONAL_REVERT: 1,
EXCEEDS_NUISANCE_GAS: 2,
INVALID_STATE_ACCESS: 3,
UNSAFE_BYTECODE: 4,
CREATE_COLLISION: 5,
STATIC_VIOLATION: 6,
CREATOR_NOT_ALLOWED: 7,
}
/* External Imports */
import { ethers } from 'ethers'
import { defaultAccounts } from 'ethereum-waffle'
import { fromHexString, toHexString } from '@eth-optimism/core-utils'
import xor from 'buffer-xor'
/* Internal Imports */
import { getContractDefinition } from '../../src/contract-defs'
export const DEFAULT_ACCOUNTS = defaultAccounts
export const DEFAULT_ACCOUNTS_HARDHAT = defaultAccounts.map((account) => {
......@@ -15,7 +9,6 @@ export const DEFAULT_ACCOUNTS_HARDHAT = defaultAccounts.map((account) => {
}
})
export const OVM_TX_GAS_LIMIT = 10_000_000
export const RUN_OVM_TEST_GAS = 20_000_000
export const FORCE_INCLUSION_PERIOD_SECONDS = 600
export const FORCE_INCLUSION_PERIOD_BLOCKS = 600 / 12
......@@ -23,40 +16,3 @@ export const FORCE_INCLUSION_PERIOD_BLOCKS = 600 / 12
export const NON_NULL_BYTES32 =
'0x1111111111111111111111111111111111111111111111111111111111111111'
export const NON_ZERO_ADDRESS = '0x1111111111111111111111111111111111111111'
export const VERIFIED_EMPTY_CONTRACT_HASH =
'0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
export const STORAGE_XOR_VALUE =
'0xFEEDFACECAFEBEEFFEEDFACECAFEBEEFFEEDFACECAFEBEEFFEEDFACECAFEBEEF'
export const NUISANCE_GAS_COSTS = {
NUISANCE_GAS_SLOAD: 20000,
NUISANCE_GAS_SSTORE: 20000,
MIN_NUISANCE_GAS_PER_CONTRACT: 30000,
NUISANCE_GAS_PER_CONTRACT_BYTE: 100,
MIN_GAS_FOR_INVALID_STATE_ACCESS: 30000,
}
let len
// This is hacky, but `hardhat compile` evaluates this file for some reason.
// Feels better to have something hacky then a constant we have to keep re-hardcoding.
try {
len = fromHexString(
getContractDefinition('Helper_TestRunner').deployedBytecode
).byteLength
// eslint-disable-next-line no-empty
} catch {}
export const Helper_TestRunner_BYTELEN = len
export const STORAGE_XOR =
'0xfeedfacecafebeeffeedfacecafebeeffeedfacecafebeeffeedfacecafebeef'
export const getStorageXOR = (key: string): string => {
return toHexString(xor(fromHexString(key), fromHexString(STORAGE_XOR)))
}
export const EMPTY_ACCOUNT_CODE_HASH =
'0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
export const KECCAK_256_NULL =
'0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
/* External Imports */
import { BigNumber, constants } from 'ethers'
/* Internal Imports */
import { DUMMY_BYTES32 } from './bytes32'
import { NON_ZERO_ADDRESS } from '../constants'
import { OVMAccount } from '../types/ovm-types'
export const DUMMY_ACCOUNTS: Array<{
address: string
data: OVMAccount
}> = [
{
address: '0x1212121212121212121212121212121212121212',
data: {
nonce: BigNumber.from(123),
balance: BigNumber.from(456),
storageRoot: DUMMY_BYTES32[0],
codeHash: DUMMY_BYTES32[1],
ethAddress: constants.AddressZero,
},
},
{
address: '0x2121212121212121212121212121212121212121',
data: {
nonce: BigNumber.from(321),
balance: BigNumber.from(654),
storageRoot: DUMMY_BYTES32[2],
codeHash: DUMMY_BYTES32[3],
ethAddress: NON_ZERO_ADDRESS,
},
},
]
/* External Imports */
import { keccak256 } from 'ethers/lib/utils'
export const DUMMY_BYTECODE = '0x123412341234'
export const DUMMY_BYTECODE_BYTELEN = 6
export const UNSAFE_BYTECODE = '0x6069606955'
export const DUMMY_BYTECODE_HASH = keccak256(DUMMY_BYTECODE)
/* External Imports */
import { ethers } from 'ethers'
export const DUMMY_BYTES32: string[] = Array.from(
{
length: 10,
},
(_, i) => {
return ethers.utils.keccak256(`0x0${i}`)
}
)
/* Internal Imports */
import { NON_ZERO_ADDRESS } from '../constants'
export const DUMMY_CONTEXT = {
GLOBAL: {
ovmCHAINID: 11,
},
TRANSACTION: {
ovmORIGIN: NON_ZERO_ADDRESS,
ovmTIMESTAMP: 22,
ovmGASLIMIT: 33,
ovmTXGASLIMIT: 44,
ovmQUEUEORIGIN: 55,
},
MESSAGE: {
ovmCALLER: NON_ZERO_ADDRESS,
ovmADDRESS: NON_ZERO_ADDRESS,
ovmSTATICCTX: true,
},
}
export * from './accounts'
export * from './bytes32'
export * from './context'
export * from './bytecode'
export * from './batches'
export * from './transactions'
import { constants, ethers } from 'ethers'
export interface Transaction {
timestamp: number
blockNumber: number
l1QueueOrigin: number
l1TxOrigin: string
entrypoint: string
gasLimit: number
data: string
}
export const DUMMY_OVM_TRANSACTIONS: Array<Transaction> = [
...Array(10).keys(),
].map((i) => {
return {
timestamp: i,
blockNumber: 0,
l1QueueOrigin: 0,
l1TxOrigin: constants.AddressZero,
entrypoint: constants.AddressZero,
gasLimit: 0,
data: ethers.constants.HashZero,
}
})
export const hashTransaction = ({
timestamp,
blockNumber,
l1QueueOrigin,
l1TxOrigin,
entrypoint,
gasLimit,
data,
}: Transaction): string => {
return ethers.utils.solidityKeccak256(
['uint256', 'uint256', 'uint8', 'address', 'address', 'uint256', 'bytes'],
[
timestamp,
blockNumber,
l1QueueOrigin,
l1TxOrigin,
entrypoint,
gasLimit,
data,
]
)
}
import { ethers } from 'hardhat'
import { Contract, Signer, BigNumber } from 'ethers'
import { expect } from 'chai'
import { Contract, Signer } from 'ethers'
export class GasMeasurement {
GasMeasurementContract: Contract
......
export * from './dummy'
export * from './types'
export * from './constants'
export * from './resolver'
export * from './utils'
......
/* External Imports */
import { BigNumber, constants } from 'ethers'
import { parse, Transaction } from '@ethersproject/transactions'
export interface OVMAccount {
nonce: number | BigNumber
balance: number | BigNumber
storageRoot: string
codeHash: string
ethAddress: string
}
export const LibEIP155TxStruct = (tx: Transaction | string): Array<any> => {
if (typeof tx === 'string') {
tx = parse(tx)
}
const values = [
tx.nonce,
tx.gasPrice,
tx.gasLimit,
tx.to ? tx.to : constants.AddressZero,
tx.value,
tx.data,
tx.v % 256,
tx.r,
tx.s,
tx.chainId,
tx.v === 0 ? 0 : tx.v - 2 * tx.chainId - 35,
tx.to === null,
]
return values
}
/* External Imports */
import { Signer } from 'ethers'
import { toHexString } from '@eth-optimism/core-utils'
export const deployContractCode = async (
code: string,
signer: Signer,
gasLimit: number
): Promise<string> => {
// "Magic" prefix to be prepended to the contract code. Contains a series of opcodes that will
// copy the given code into memory and return it, thereby storing at the contract address.
const prefix = '0x600D380380600D6000396000f3'
const deployCode = prefix + toHexString(code).slice(2)
const response = await signer.sendTransaction({
to: null,
data: deployCode,
gasLimit,
})
const result = await response.wait()
return result.contractAddress
}
export * from './eth-time'
export * from './sol-utils'
export * from './custom-deployer'
import { ethers } from 'ethers'
const errorABI = new ethers.utils.Interface([
{
type: 'function',
inputs: [
{
type: 'string',
},
],
name: 'Error',
stateMutability: 'pure',
},
])
export const decodeSolidityError = (err: string): string => {
return errorABI.decodeFunctionData('Error', err)[0]
}
export const encodeSolidityError = (message: string): string => {
return errorABI.encodeFunctionData('Error', [message])
}
......@@ -2470,14 +2470,7 @@
resolved "https://registry.yarnpkg.com/@types/browser-or-node/-/browser-or-node-1.3.0.tgz#896ec59bcb8109fc858d8e68d3c056c176a19622"
integrity sha512-MVetr65IR7RdJbUxVHsaPFaXAO8fi89zv1g8L/mHygh1Q7xnnK02XZLwfMh57FOpTO6gtnagoPMQ/UOFfctXRQ==
"@types/buffer-xor@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@types/buffer-xor/-/buffer-xor-2.0.0.tgz#15738051e0720b68120cd2cc3f204aa4dc16bab1"
integrity sha512-NEJkIKUE/xboduuIAJmdtUvbXgUOfMkjOo6lWsiBVUIWBC5fVWGT+50yEw9W1Xp4ga76khg57pHELXw5Xm3Y+A==
dependencies:
"@types/node" "*"
"@types/chai-as-promised@^7.1.4":
"@types/chai-as-promised@^7.1.3", "@types/chai-as-promised@^7.1.4":
version "7.1.4"
resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.4.tgz#caf64e76fb056b8c8ced4b761ed499272b737601"
integrity sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA==
......@@ -2503,11 +2496,6 @@
dependencies:
"@types/node" "*"
"@types/copyfiles@^2.4.0":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@types/copyfiles/-/copyfiles-2.4.1.tgz#b0119c781457910115454bacb35f59e91145e7ec"
integrity sha512-v2JLxXeWUeWYWVo3/tlpxqiDCvgewSvf58HHjHYNaCi0lAthhRQ7jz8InxGzJsrMbWmWkYaxBO+BEtKjBU4ebw==
"@types/cors@^2.8.9":
version "2.8.12"
resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080"
......@@ -2539,7 +2527,7 @@
dependencies:
"@types/node" "*"
"@types/glob@*", "@types/glob@^7.1.1", "@types/glob@^7.1.3":
"@types/glob@*", "@types/glob@^7.1.1":
version "7.1.4"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672"
integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==
......@@ -2813,18 +2801,6 @@
dependencies:
"@types/node" "*"
"@types/yargs-parser@*":
version "20.2.1"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129"
integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==
"@types/yargs@^16.0.1":
version "16.0.4"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977"
integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==
dependencies:
"@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@^4.26.0":
version "4.29.3"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.3.tgz#95cb8029a8bd8bd9c7f4ab95074a7cb2115adefa"
......@@ -4332,7 +4308,7 @@ buffer-xor@^1.0.3:
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
buffer-xor@^2.0.1, buffer-xor@^2.0.2:
buffer-xor@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289"
integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment